Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

146 lines
5.1 KiB

/*****************************************************************************
*
* 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);