windows-nt/Source/XPSP1/NT/public/internal/drivers/inc/ksmediap.h
2020-09-26 16:20:57 +08:00

128 lines
4 KiB
C

/*++
Copyright (c) 2001 Microsoft Corporation. All rights reserved.
Module Name:
ksmediap.h
Abstract:
Private WDM multimedia definitions used only by Microsoft components.
Moved here from ksmedia.h. Some of these are obsolescent (e.g. ITD).
--*/
#ifndef _KSMEDIAP_H
#define _KSMEDIAP_H
#define CORE_AUDIO_BUFFER_DURATION_PATH L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\AudioSrv"
#define CORE_AUDIO_BUFFER_DURATION_VALUE L"CoreAudioBufferDuration"
#define DEFAULT_CORE_AUDIO_BUFFER_DURATION 10000 // duration in usec.
#define MAX_CORE_AUDIO_BUFFER_DURATION 20000
#define MIN_CORE_AUDIO_BUFFER_DURATION 1000
//===========================================================================
// Definitions intended for hardware acceleration of the HRTF 3D algorithm
//===========================================================================
#define KSDSOUND_BUFFER_CTRL_HRTF_3D 0x40000000
typedef struct {
ULONG Size; // This is the size of the struct in bytes
ULONG Enabled;
BOOL SwapChannels;
BOOL ZeroAzimuth;
BOOL CrossFadeOutput;
ULONG FilterSize; // This is the additional size of the filter coeff in bytes
} KSDS3D_HRTF_PARAMS_MSG, *PKSDS3D_HRTF_PARAMS_MSG;
// HRTF filter quality levels
typedef enum {
FULL_FILTER,
LIGHT_FILTER,
KSDS3D_FILTER_QUALITY_COUNT
} KSDS3D_HRTF_FILTER_QUALITY;
typedef struct {
ULONG Size; // This is the size of the struct in bytes
KSDS3D_HRTF_FILTER_QUALITY Quality;
FLOAT SampleRate;
ULONG MaxFilterSize;
ULONG FilterTransientMuteLength;
ULONG FilterOverlapBufferLength;
ULONG OutputOverlapBufferLength;
ULONG Reserved;
} KSDS3D_HRTF_INIT_MSG, *PKSDS3D_HRTF_INIT_MSG;
// Coefficient formats
typedef enum {
FLOAT_COEFF,
SHORT_COEFF,
KSDS3D_COEFF_COUNT
} KSDS3D_HRTF_COEFF_FORMAT;
// Filter methods
typedef enum {
DIRECT_FORM,
CASCADE_FORM,
KSDS3D_FILTER_METHOD_COUNT
} KSDS3D_HRTF_FILTER_METHOD;
// Filter methods
typedef enum {
DS3D_HRTF_VERSION_1
} KSDS3D_HRTF_FILTER_VERSION;
typedef struct {
KSDS3D_HRTF_FILTER_METHOD FilterMethod;
KSDS3D_HRTF_COEFF_FORMAT CoeffFormat;
KSDS3D_HRTF_FILTER_VERSION Version;
ULONG Reserved;
} KSDS3D_HRTF_FILTER_FORMAT_MSG, *PKSDS3D_HRTF_FILTER_FORMAT_MSG;
#define STATIC_KSPROPSETID_Hrtf3d\
0xb66decb0L, 0xa083, 0x11d0, 0x85, 0x1e, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
DEFINE_GUIDSTRUCT("b66decb0-a083-11d0-851e-00c04fd9baf3", KSPROPSETID_Hrtf3d);
#define KSPROPSETID_Hrtf3d DEFINE_GUIDNAMED(KSPROPSETID_Hrtf3d)
typedef enum {
KSPROPERTY_HRTF3D_PARAMS = 0,
KSPROPERTY_HRTF3D_INITIALIZE,
KSPROPERTY_HRTF3D_FILTER_FORMAT
} KSPROPERTY_HRTF3D;
//===========================================================================
// Definitions related to the obsolete Interaural Time Delay 3D algorithm
//===========================================================================
// DirectSound3D FIR context
typedef struct {
LONG Channel;
FLOAT VolSmoothScale;
FLOAT TotalDryAttenuation;
FLOAT TotalWetAttenuation;
LONG SmoothFrequency;
LONG Delay;
} KSDS3D_ITD_PARAMS, *PKSDS3D_ITD_PARAMS;
typedef struct {
ULONG Enabled;
KSDS3D_ITD_PARAMS LeftParams;
KSDS3D_ITD_PARAMS RightParams;
ULONG Reserved;
} KSDS3D_ITD_PARAMS_MSG, *PKSDS3D_ITD_PARAMS_MSG;
#define STATIC_KSPROPSETID_Itd3d\
0x6429f090L, 0x9fd9, 0x11d0, 0xa7, 0x5b, 0x00, 0xa0, 0xc9, 0x03, 0x65, 0xe3
DEFINE_GUIDSTRUCT("6429f090-9fd9-11d0-a75b-00a0c90365e3", KSPROPSETID_Itd3d);
#define KSPROPSETID_Itd3d DEFINE_GUIDNAMED(KSPROPSETID_Itd3d)
typedef enum {
KSPROPERTY_ITD3D_PARAMS = 0
} KSPROPERTY_ITD3D;
#endif /* _KSMEDIAP_H */