/***************************************************************************** * * Component: sndvol32.exe * File: pvcd.h * Purpose: Volume Control Descriptor * * Copyright (c) 1985-1995 Microsoft Corporation * *****************************************************************************/ #define VCD_TYPE_MIXER 0 #define VCD_TYPE_AUX 1 #define VCD_TYPE_WAVEOUT 2 #define VCD_TYPE_MIDIOUT 3 #define VCD_SUPPORTF_STEREO 0x00000000 #define VCD_SUPPORTF_MONO 0x00000001 #define VCD_SUPPORTF_DISABLED 0x00000002 #define VCD_SUPPORTF_HIDDEN 0x00000004 // hidden by choice #define VCD_SUPPORTF_BADDRIVER 0x00000008 #define VCD_SUPPORTF_VISIBLE 0x00000010 // not visible (i.e. no controls) #define VCD_SUPPORTF_DEFAULT 0x00000020 // default type #define VCD_SUPPORTF_MIXER_MUTE 0x00010000 #define VCD_SUPPORTF_MIXER_METER 0x00020000 #define VCD_SUPPORTF_MIXER_MUX 0x00040000 #define VCD_SUPPORTF_MIXER_MIXER 0x00080000 #define VCD_SUPPORTF_MIXER_VOLUME 0x00100000 #define VCD_SUPPORTF_MIXER_ADVANCED 0x80000000 #define VCD_VISIBLEF_MIXER_MUTE 0x00000001 #define VCD_VISIBLEF_MIXER_METER 0x00000002 #define VCD_VISIBLEF_MIXER_MUX 0x00000004 #define VCD_VISIBLEF_MIXER_MIXER 0x00000008 #define VCD_VISIBLEF_MIXER_VOLUME 0x00000010 #define VCD_VISIBLEF_MIXER_ADVANCED 0x00008000 // // The generic volume control descriptor // typedef struct t_VOLCTRLDESC { // // for all // int iVCD; // descriptor index UINT iDeviceID; // device identifier DWORD dwType; // type bits DWORD dwSupport; // support bits DWORD dwVisible; // control visibility flags TCHAR szShortName[MIXER_SHORT_NAME_CHARS]; // short name TCHAR szName[MIXER_LONG_NAME_CHARS]; // line label struct t_MIXUILINE * pmxul; // back pointer to a ui union { struct { // // for mixer // HMIXER hmx; // open device handle BOOL fIsSource; // is source line DWORD dwDest; // destination index DWORD dwSrc; // source index DWORD dwLineID; // mixer line id DWORD dwVolumeID; // VOLUME control id DWORD fdwVolumeControl; // Control flags for Volume control // // For mixers and mux // DWORD dwMuteID; // MUTE control id DWORD fdwMuteControl; // Control flags for Mute control DWORD dwMeterID; // PEAKMETER control id DWORD dwMixerID; // MUX/MIXER control id DWORD iMixer; // mixer index DWORD cMixer; // mixer controls PMIXERCONTROLDETAILS_BOOLEAN amcd_bMixer;// mixer array DWORD dwMuxID; // MUX/MIXER control id DWORD iMux; // mux index DWORD cMux; // mux controls PMIXERCONTROLDETAILS_BOOLEAN amcd_bMux;// mux array double* pdblCacheMix; // Volume Channel mix cache }; struct { // // for wave // HWAVEOUT hwo; // open device handle }; struct { // // for midi // HMIDIOUT hmo; // open device handle }; struct { // // for aux // DWORD dwParam; // nothing }; }; } VOLCTRLDESC, *PVOLCTRLDESC; extern PVOLCTRLDESC Mixer_CreateVolumeDescription(HMIXEROBJ hmx, int iDest, DWORD *pcvcd); extern void Mixer_CleanupVolumeDescription(PVOLCTRLDESC avcd, DWORD cvcd); extern int Mixer_GetNumDevs(void); extern BOOL Mixer_Init(PMIXUIDIALOG pmxud); extern void Mixer_GetControlFromID(PMIXUIDIALOG pmxud, DWORD dwControlID); extern void Mixer_GetControl(PMIXUIDIALOG pmxud, HWND hctl, int imxul, int ictl); extern void Mixer_SetControl(PMIXUIDIALOG pmxud, HWND hctl, int imxul, int ictl); extern void Mixer_PollingUpdate(PMIXUIDIALOG pmxud); extern void Mixer_Shutdown(PMIXUIDIALOG pmxud); extern BOOL Mixer_GetDeviceName(PMIXUIDIALOG pmxud); extern BOOL Mixer_IsValidRecordingDestination (HMIXEROBJ hmx, MIXERLINE* pmlDst); extern PVOLCTRLDESC Nonmixer_CreateVolumeDescription(int iDest, DWORD *pcvcd); extern int Nonmixer_GetNumDevs(void); extern BOOL Nonmixer_Init(PMIXUIDIALOG pmxud); extern void Nonmixer_GetControl(PMIXUIDIALOG pmxud, HWND hctl, int imxul, int ictl); extern void Nonmixer_SetControl(PMIXUIDIALOG pmxud, HWND hctl, int imxul, int ictl); extern void Nonmixer_PollingUpdate(PMIXUIDIALOG pmxud); extern void Nonmixer_Shutdown(PMIXUIDIALOG pmxud); extern BOOL Nonmixer_GetDeviceName(PMIXUIDIALOG pmxud); extern PVOLCTRLDESC PVCD_AddLine(PVOLCTRLDESC pvcd, int iDev, DWORD dwType, LPTSTR szProduct, LPTSTR szLabel, DWORD dwSupport, DWORD *cLines);