📄 ksmedia.h
字号:
#define _WAVEFORMATEXTENSIBLE_
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample; /* bits of precision */
WORD wSamplesPerBlock; /* valid if wBitsPerSample==0 */
WORD wReserved; /* If neither applies, set to zero. */
} Samples;
DWORD dwChannelMask; /* which channels are */
/* present in stream */
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
#endif // !_WAVEFORMATEXTENSIBLE_
#if !defined(WAVE_FORMAT_EXTENSIBLE)
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE
#endif // !defined(WAVE_FORMAT_EXTENSIBLE)
// DirectSound buffer description
typedef struct {
ULONG Flags;
ULONG Control;
WAVEFORMATEX WaveFormatEx;
} KSDSOUND_BUFFERDESC, *PKSDSOUND_BUFFERDESC;
// DirectSound format
typedef struct {
KSDATAFORMAT DataFormat;
KSDSOUND_BUFFERDESC BufferDesc;
} KSDATAFORMAT_DSOUND, *PKSDATAFORMAT_DSOUND;
#if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
#include <poppack.h>
#endif
#endif // defined(_INC_MMSYSTEM) || defined(_INC_MMREG)
// DirectSound buffer flags
#define KSDSOUND_BUFFER_PRIMARY 0x00000001
#define KSDSOUND_BUFFER_STATIC 0x00000002
#define KSDSOUND_BUFFER_LOCHARDWARE 0x00000004
#define KSDSOUND_BUFFER_LOCSOFTWARE 0x00000008
// DirectSound buffer control flags
#define KSDSOUND_BUFFER_CTRL_3D 0x00000001
#define KSDSOUND_BUFFER_CTRL_FREQUENCY 0x00000002
#define KSDSOUND_BUFFER_CTRL_PAN 0x00000004
#define KSDSOUND_BUFFER_CTRL_VOLUME 0x00000008
#define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010
#define KSDSOUND_BUFFER_CTRL_HRTF_3D 0x40000000
typedef struct {
#if defined(_NTDDK_)
ULONGLONG PlayOffset;
ULONGLONG WriteOffset;
#else // !_NTDDK_
DWORDLONG PlayOffset;
DWORDLONG WriteOffset;
#endif // !_NTDDK_
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;
// 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;
// DirectSound3D HRTF messages
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;
//===========================================================================
// DirectSound3D HAL
typedef struct _DS3DVECTOR {
union {
FLOAT x;
FLOAT dvX;
};
union {
FLOAT y;
FLOAT dvY;
};
union {
FLOAT z;
FLOAT dvZ;
};
} DS3DVECTOR, *PDS3DVECTOR;
//===========================================================================
//===========================================================================
// KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3}
#define STATIC_KSPROPSETID_DirectSound3DListener\
0x437b3414L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
DEFINE_GUIDSTRUCT("437b3414-d060-11d0-8583-00c04fd9baf3",KSPROPSETID_DirectSound3DListener);
#define KSPROPSETID_DirectSound3DListener DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DListener)
typedef enum {
KSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
} KSPROPERTY_DIRECTSOUND3DLISTENER;
typedef struct {
DS3DVECTOR Position;
DS3DVECTOR Velocity;
DS3DVECTOR OrientFront;
DS3DVECTOR OrientTop;
FLOAT DistanceFactor;
FLOAT RolloffFactor;
FLOAT DopplerFactor;
} KSDS3D_LISTENER_ALL, *PKSDS3D_LISTENER_ALL;
typedef struct {
DS3DVECTOR Front;
DS3DVECTOR Top;
} KSDS3D_LISTENER_ORIENTATION, *PKSDS3D_LISTENER_ORIENTATION;
//===========================================================================
//===========================================================================
// KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3}
#define STATIC_KSPROPSETID_DirectSound3DBuffer\
0x437b3411L, 0xd060, 0x11d0, 0x85, 0x83, 0x00, 0xc0, 0x4f, 0xd9, 0xba, 0xf3
DEFINE_GUIDSTRUCT("437b3411-d060-11d0-8583-00c04fd9baf3", KSPROPSETID_DirectSound3DBuffer);
#define KSPROPSETID_DirectSound3DBuffer DEFINE_GUIDNAMED(KSPROPSETID_DirectSound3DBuffer)
typedef enum {
KSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
} KSPROPERTY_DIRECTSOUND3DBUFFER;
typedef struct {
DS3DVECTOR Position;
DS3DVECTOR Velocity;
ULONG InsideConeAngle;
ULONG OutsideConeAngle;
DS3DVECTOR ConeOrientation;
LONG ConeOutsideVolume;
FLOAT MinDistance;
FLOAT MaxDistance;
ULONG Mode;
} KSDS3D_BUFFER_ALL, *PKSDS3D_BUFFER_ALL;
typedef struct {
ULONG InsideConeAngle;
ULONG OutsideConeAngle;
} KSDS3D_BUFFER_CONE_ANGLES, *PKSDS3D_BUFFER_CONE_ANGLES;
#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE (-1)
#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN 5
#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW 10
#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE 20
#define KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX 180
#define KSDSOUND_3D_MODE_NORMAL 0x00000000
#define KSDSOUND_3D_MODE_HEADRELATIVE 0x00000001
#define KSDSOUND_3D_MODE_DISABLE 0x00000002
typedef struct {
KSDATARANGE DataRange;
ULONG MaximumChannels;
ULONG MinimumBitsPerSample;
ULONG MaximumBitsPerSample;
ULONG MinimumSampleFrequency;
ULONG MaximumSampleFrequency;
} KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO;
//---------------------------------------------------------------------------
#define STATIC_KSDATAFORMAT_SUBTYPE_RIFF\
0x4995DAEEL, 0x9EE6, 0x11D0, 0xA4, 0x0E, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("4995DAEE-9EE6-11D0-A40E-00A0C9223196", KSDATAFORMAT_SUBTYPE_RIFF);
#define KSDATAFORMAT_SUBTYPE_RIFF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFF)
#define STATIC_KSDATAFORMAT_SUBTYPE_RIFFWAVE\
0xe436eb8bL, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70
DEFINE_GUIDSTRUCT("e436eb8b-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_RIFFWAVE);
#define KSDATAFORMAT_SUBTYPE_RIFFWAVE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_RIFFWAVE)
//===========================================================================
//===========================================================================
#define STATIC_KSPROPSETID_Bibliographic \
0x07BA150EL, 0xE2B1, 0x11D0, 0xAC, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96
DEFINE_GUIDSTRUCT("07BA150E-E2B1-11D0-AC17-00A0C9223196", KSPROPSETID_Bibliographic);
#define KSPROPSETID_Bibliographic DEFINE_GUIDNAMED(KSPROPSETID_Bibliographic)
//Repeatable tags contain all entries within the property, each preceeded by length
typedef enum {
KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ',
KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ',
KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ',
KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ',
KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ',
KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ',
KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ',
KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ',
KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ',
KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ',
KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ',
KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ',
KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ',
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -