mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
93 lines
3.5 KiB
C
93 lines
3.5 KiB
C
#pragma once
|
|
|
|
// FIXME: Should be moved somewhere else?
|
|
typedef struct _WAVE_DD_VOLUME {
|
|
ULONG Left;
|
|
ULONG Right;
|
|
} WAVE_DD_VOLUME, *PWAVE_DD_VOLUME;
|
|
|
|
// driver
|
|
#define WAVE_DD_STOP 0x0001
|
|
#define WAVE_DD_PLAY 0x0002 // output devices only
|
|
#define WAVE_DD_RECORD 0x0003 // input devices only
|
|
#define WAVE_DD_RESET 0x0004
|
|
|
|
// ioctl
|
|
#define WAVE_DD_IDLE 0x0000
|
|
#define WAVE_DD_STOPPED 0x0001 // stopped
|
|
#define WAVE_DD_PLAYING 0x0002 // output devices only
|
|
#define WAVE_DD_RECORDING 0x0003 // input devices only
|
|
|
|
|
|
|
|
typedef enum {
|
|
WaveThreadInvalid,
|
|
WaveThreadAddBuffer,
|
|
WaveThreadSetState,
|
|
WaveThreadSetData,
|
|
WaveThreadGetData,
|
|
WaveThreadBreakLoop,
|
|
WaveThreadClose,
|
|
WaveThreadTerminate
|
|
} WAVETHREADFUNCTION;
|
|
|
|
// WARNING: MS code below!!
|
|
typedef struct {
|
|
OVERLAPPED Ovl;
|
|
LPWAVEHDR WaveHdr;
|
|
} WAVEOVL, *PWAVEOVL;
|
|
|
|
// WARNING: MS code below!!
|
|
// per allocation structure for wave
|
|
typedef struct tag_WAVEALLOC {
|
|
struct tag_WAVEALLOC *Next; // Chaining
|
|
UINT DeviceNumber; // Which device
|
|
UINT DeviceType; // WaveInput or WaveOutput
|
|
DWORD dwCallback; // client's callback
|
|
DWORD dwInstance; // client's instance data
|
|
DWORD dwFlags; // Open flags
|
|
HWAVE hWave; // handle for stream
|
|
|
|
HANDLE hDev; // Wave device handle
|
|
LPWAVEHDR DeviceQueue; // Buffers queued by application
|
|
LPWAVEHDR NextBuffer; // Next buffer to send to device
|
|
DWORD BufferPosition; // How far we're into a large buffer
|
|
DWORD BytesOutstanding;
|
|
// Bytes being processed by device
|
|
LPWAVEHDR LoopHead; // Start of loop if any
|
|
DWORD LoopCount; // Number more loops to go
|
|
|
|
WAVEOVL DummyWaveOvl; // For break loop
|
|
//
|
|
HANDLE Event; // Event for driver synchronization
|
|
// and notification of auxiliary
|
|
// task operation completion.
|
|
WAVETHREADFUNCTION AuxFunction; // Function for thread to perform
|
|
union {
|
|
LPWAVEHDR pHdr; // Buffer to pass in aux task
|
|
ULONG State; // State to set
|
|
struct {
|
|
ULONG Function; // IOCTL to use
|
|
PBYTE pData; // Data to set or get
|
|
ULONG DataLen; // Length of data
|
|
} GetSetData;
|
|
|
|
} AuxParam;
|
|
// 0 means terminate task.
|
|
HANDLE AuxEvent1; // Aux thread waits on this
|
|
HANDLE AuxEvent2; // Caller of Aux thread waits on this
|
|
HANDLE ThreadHandle; // Handle for thread termination ONLY
|
|
MMRESULT AuxReturnCode; // Return code from Aux task
|
|
}WAVEALLOC, *PWAVEALLOC;
|
|
|
|
/* Misc should move to own header */
|
|
MMRESULT GetDeviceCapabilities(DWORD ID, UINT DeviceType,
|
|
LPBYTE pCaps, DWORD Size);
|
|
|
|
DWORD AuxGetAudio(DWORD dwID, PBYTE pVolume, DWORD sizeVolume);
|
|
DWORD AuxSetAudio(DWORD dwID, PBYTE pVolume, DWORD sizeVolume);
|
|
|
|
typedef struct _AUX_DD_VOLUME {
|
|
ULONG Left;
|
|
ULONG Right;
|
|
} AUX_DD_VOLUME, *PAUX_DD_VOLUME;
|