mirror of https://github.com/tongzx/nt5src
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
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);
|