windows-nt/Source/XPSP1/NT/enduser/netmeeting/ui/conf/audioctl.h

80 lines
1.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#ifndef _AUDIOCTL_H_
#define _AUDIOCTL_H_
#include "SDKInternal.h"
#include "mixer.h"
interface IAudioEvent
{
public:
virtual void OnLevelChange(BOOL fSpeaker, DWORD dwVolume) = 0;
virtual void OnMuteChange(BOOL fSpeaker, BOOL fMute) = 0;
};
class CMixerDevice;
class CAudioControl
{
private:
CMixerDevice* m_pRecMixer;
CMixerDevice* m_pSpkMixer;
MIXVOLUME m_dwMicVolume;
MIXVOLUME m_dwSpkVolume;
BOOL m_fMicMuted;
BOOL m_fSpkMuted;
DWORD m_dwRecordDevice;
DWORD m_dwPlaybackDevice;
DWORD m_dwSilenceLevel;
BOOL m_fAutoMix;
INmChannelAudio * m_pChannelMic;
INmChannelAudio * m_pChannelSpk;
IAudioEvent * m_pAudioEvent;
HWND m_hwndParent;
MIXVOLUME m_dwSpkVolumeOld;
protected:
BOOL LoadSettings();
BOOL SaveSettings();
public:
CAudioControl(HWND hwnd);
~CAudioControl();
void OnChannelChanged(NM_CHANNEL_NOTIFY uNotify, INmChannel *pChannel);
void RefreshMixer();
VOID OnDeviceChanged();
VOID OnAGC_Changed();
VOID OnSilenceLevelChanged();
void RegisterAudioEventHandler(IAudioEvent *pEvent)
{ m_pAudioEvent = pEvent; }
BOOL CanSetRecorderVolume();
BOOL CanSetSpeakerVolume();
void SetRecorderVolume(MIXVOLUME *pdwVolume);
void SetSpeakerVolume(MIXVOLUME *pdwVolume);
void SetRecorderVolume(DWORD dwVolume);
void SetSpeakerVolume(DWORD dwVolume);
void GetRecorderVolume(MIXVOLUME *pdwVolume);
void GetSpeakerVolume(MIXVOLUME *pdwVolume);
DWORD GetRecorderVolume() { return max(m_dwMicVolume.leftVolume , m_dwMicVolume.rightVolume); }
DWORD GetSpeakerVolume() { return max(m_dwSpkVolume.leftVolume , m_dwSpkVolume.rightVolume); }
void MuteAudio(BOOL fSpeaker, BOOL fMute);
DWORD GetAudioSignalLevel(BOOL fSpeaker);
BOOL IsSpkMuted() { return m_fSpkMuted;}
BOOL IsRecMuted() { return m_fMicMuted;}
HRESULT SetProperty(BOOL fSpeaker, NM_AUDPROP uID, ULONG_PTR uValue);
HRESULT GetProperty(BOOL fSpeaker, NM_AUDPROP uID, ULONG_PTR *puValue);
};
#endif // _AUDIOCTL_H_