3678 lines
125 KiB
C
3678 lines
125 KiB
C
|
/*
|
||
|
* ksmedia.h Kernel streaming media definitions
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*
|
||
|
* Open Watcom Project
|
||
|
*
|
||
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
||
|
*
|
||
|
* This file is automatically generated. Do not edit directly.
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*/
|
||
|
|
||
|
#ifndef _KSMEDIA_
|
||
|
#define _KSMEDIA_
|
||
|
|
||
|
#ifndef _ENABLE_AUTODEPEND
|
||
|
#pragma read_only_file;
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming primitive data types */
|
||
|
typedef BOOL KSPROPERTY_COMPOSIT_ON;
|
||
|
typedef BOOL *PKSPROPERTY_COMPOSIT_ON;
|
||
|
typedef LONGLONG REFERENCE_TIME;
|
||
|
typedef LONG KS_AM_MaxFullDataRate;
|
||
|
typedef DWORD KS_AM_Step;
|
||
|
|
||
|
/* Wave format special value */
|
||
|
#if defined( _INC_MMSYSTEM ) && !defined( _INC_MMREG )
|
||
|
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming DirectSound buffer flags */
|
||
|
#define KSDSOUND_BUFFER_PRIMARY 0x00000001L
|
||
|
#define KSDSOUND_BUFFER_STATIC 0x00000002L
|
||
|
#define KSDSOUND_BUFFER_LOCHARDWARE 0x00000004L
|
||
|
#define KSDSOUND_BUFFER_LOCSOFTWARE 0x00000008L
|
||
|
|
||
|
/* Kernel streaming DirectSound buffer control flags */
|
||
|
#define KSDSOUND_BUFFER_CTRL_3D 0x00000001L
|
||
|
#define KSDSOUND_BUFFER_CTRL_FREQUENCY 0x00000002L
|
||
|
#define KSDSOUND_BUFFER_CTRL_PAN 0x00000004L
|
||
|
#define KSDSOUND_BUFFER_CTRL_VOLUME 0x00000008L
|
||
|
#define KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY 0x00000010L
|
||
|
|
||
|
/* Kernel streaming audio stereo speaker geometry values */
|
||
|
#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
|
||
|
|
||
|
/* Kernel streaming DirectSound3D modes */
|
||
|
#define KSDSOUND_3D_MODE_NORMAL 0x00000000L
|
||
|
#define KSDSOUND_3D_MODE_HEADRELATIVE 0x00000001L
|
||
|
#define KSDSOUND_3D_MODE_DISABLE 0x00000002L
|
||
|
|
||
|
/* Kernel streaming DirectSound control flags */
|
||
|
#define KSDSOUND_BUFFER_CTRL_HRTF_3D 0x40000000L
|
||
|
|
||
|
/* Kernel streaming audio qualities */
|
||
|
#define KSAUDIO_QUALITY_WORST 0x00000000L
|
||
|
#define KSAUDIO_QUALITY_PC 0x00000001L
|
||
|
#define KSAUDIO_QUALITY_BASIC 0x00000002L
|
||
|
#define KSAUDIO_QUALITY_ADVANCED 0x00000003L
|
||
|
|
||
|
/* Kernel streaming audio CPU resource constants */
|
||
|
#define KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU 0x00000000L
|
||
|
#define KSAUDIO_CPU_RESOURCES_HOST_CPU 0x7FFFFFFFL
|
||
|
|
||
|
/* Speaker position flags */
|
||
|
#define SPEAKER_FRONT_LEFT 0x00000001L
|
||
|
#define SPEAKER_FRONT_RIGHT 0x00000002L
|
||
|
#define SPEAKER_FRONT_CENTER 0x00000004L
|
||
|
#define SPEAKER_LOW_FREQUENCY 0x00000008L
|
||
|
#define SPEAKER_BACK_LEFT 0x00000010L
|
||
|
#define SPEAKER_BACK_RIGHT 0x00000020L
|
||
|
#define SPEAKER_FRONT_LEFT_OF_CENTER 0x00000040L
|
||
|
#define SPEAKER_FRONT_RIGHT_OF_CENTER 0x00000080L
|
||
|
#define SPEAKER_BACK_CENTER 0x00000100L
|
||
|
#define SPEAKER_SIDE_LEFT 0x00000200L
|
||
|
#define SPEAKER_SIDE_RIGHT 0x00000400L
|
||
|
#define SPEAKER_TOP_CENTER 0x00000800L
|
||
|
#define SPEAKER_TOP_FRONT_LEFT 0x00001000L
|
||
|
#define SPEAKER_TOP_FRONT_CENTER 0x00002000L
|
||
|
#define SPEAKER_TOP_FRONT_RIGHT 0x00004000L
|
||
|
#define SPEAKER_TOP_BACK_LEFT 0x00008000L
|
||
|
#define SPEAKER_TOP_BACK_CENTER 0x00010000L
|
||
|
#define SPEAKER_TOP_BACK_RIGHT 0x00020000L
|
||
|
#define SPEAKER_ALL 0x80000000L
|
||
|
|
||
|
/* Kernel streaming audio speaker flags */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KSAUDIO_SPEAKER_DIRECTOUT 0L
|
||
|
#endif
|
||
|
#define KSAUDIO_SPEAKER_MONO SPEAKER_FRONT_CENTER
|
||
|
#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
|
||
|
#define KSAUDIO_SPEAKER_QUAD \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
|
||
|
#define KSAUDIO_SPEAKER_SURROUND \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
|
||
|
SPEAKER_BACK_CENTER)
|
||
|
#define KSAUDIO_SPEAKER_5POINT1 \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
|
||
|
SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
|
||
|
#define KSAUDIO_SPEAKER_7POINT1 \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
|
||
|
SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
|
||
|
SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION > 0x05020100)
|
||
|
#define KSAUDIO_SPEAKER_5POINT1_SURROUND \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
|
||
|
SPEAKER_LOW_FREQUENCY | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
|
||
|
#define KSAUDIO_SPEAKER_7POINT1_SURROUND \
|
||
|
(SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
|
||
|
SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | \
|
||
|
SPEAKER_BACK_RIGHT | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
|
||
|
#define KSAUDIO_SPEAKER_5POINT1_BACK KSAUDIO_SPEAKER_5POINT1
|
||
|
#define KSAUDIO_SPEAKER_7POINT1_WIDE KSAUDIO_SPEAKER_7POINT1
|
||
|
#endif
|
||
|
#define KSAUDIO_SPEAKER_GROUND_FRONT_LEFT SPEAKER_FRONT_LEFT
|
||
|
#define KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER
|
||
|
#define KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT SPEAKER_FRONT_RIGHT
|
||
|
#define KSAUDIO_SPEAKER_GROUND_REAR_LEFT SPEAKER_BACK_LEFT
|
||
|
#define KSAUDIO_SPEAKER_GROUND_REAR_RIGHT SPEAKER_BACK_RIGHT
|
||
|
#define KSAUDIO_SPEAKER_TOP_MIDDLE SPEAKER_TOP_CENTER
|
||
|
#define KSAUDIO_SPEAKER_SUPER_WOOFER SPEAKER_LOW_FREQUENCY
|
||
|
|
||
|
/* Kernel streaming node pin constants */
|
||
|
#define KSNODEPIN_STANDARD_IN 1
|
||
|
#define KSNODEPIN_STANDARD_OUT 0
|
||
|
#define KSNODEPIN_SUM_MUX_IN 1
|
||
|
#define KSNODEPIN_SUM_MUX_OUT 0
|
||
|
#define KSNODEPIN_DEMUX_IN 0
|
||
|
#define KSNODEPIN_DEMUX_OUT 1
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
#define KSNODEPIN_AEC_RENDER_IN 1
|
||
|
#define KSNODEPIN_AEC_RENDER_OUT 0
|
||
|
#define KSNODEPIN_AEC_CAPTURE_IN 2
|
||
|
#define KSNODEPIN_AEC_CAPTURE_OUT 3
|
||
|
#endif
|
||
|
|
||
|
/* Acoustic echo cancel status flags */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
#define AEC_STATUS_FD_HISTORY_UNINITIALIZED 0x00000000L
|
||
|
#define AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED 0x00000001L
|
||
|
#define AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED 0x00000002L
|
||
|
#define AEC_STATUS_FD_CURRENTLY_CONVERGED 0x00000008L
|
||
|
#endif
|
||
|
|
||
|
/* Acoustic echo cancel modes */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
#define AEC_MODE_PASS_THROUGH 0x00000000L
|
||
|
#define AEC_MODE_HALF_DUPLEX 0x00000001L
|
||
|
#define AEC_MODE_FULL_DUPLEX 0x00000002L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming wave queued property and method identifiers */
|
||
|
#if (NTDDI_VERSION < 0x05020000)
|
||
|
#define KSPROPERTY_WAVE_QUEUED_POSITION 0x00000001L
|
||
|
#define KSMETHOD_WAVE_QUEUED_BREAKLOOP 0x00000001L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming compatibility capabilities device types */
|
||
|
#define KSWAVE_COMPATCAPS_INPUT 0x00000000L
|
||
|
#define KSWAVE_COMPATCAPS_OUTPUT 0x00000001L
|
||
|
|
||
|
/* Kernel streaming wave buffer attribute flags */
|
||
|
#define KSWAVE_BUFFER_ATTRIBUTEF_LOOPING 0x00000001L
|
||
|
#define KSWAVE_BUFFER_ATTRIBUTEF_STATIC 0x00000002L
|
||
|
|
||
|
/* System audio flags */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
#define SYSAUDIO_FLAGS_DONT_COMBINE_PINS 0x00000001L
|
||
|
#endif
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
#define SYSAUDIO_FLAGS_CLEAR_PREFERRED 0x00000002L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming MPEG video modes */
|
||
|
#define KSMPEGVIDMODE_PANSCAN 0x00000001L
|
||
|
#define KSMPEGVIDMODE_LTRBOX 0x00000002L
|
||
|
#define KSMPEGVIDMODE_SCALE 0x00000004L
|
||
|
|
||
|
/* Kernel streaming AC3 alternate audio dual modes */
|
||
|
#define KSAC3_ALTERNATE_AUDIO_1 1L
|
||
|
#define KSAC3_ALTERNATE_AUDIO_2 2L
|
||
|
#define KSAC3_ALTERNATE_AUDIO_BOTH 3L
|
||
|
|
||
|
/* Kernel streaming AC3 bit stream modes */
|
||
|
#define KSAC3_SERVICE_MAIN_AUDIO 0L
|
||
|
#define KSAC3_SERVICE_NO_DIALOG 1L
|
||
|
#define KSAC3_SERVICE_VISUALLY_IMPAIRED 2L
|
||
|
#define KSAC3_SERVICE_HAIRING_IMPAIRED 3L
|
||
|
#define KSAC3_SERVICE_DIALOG_ONLY 4L
|
||
|
#define KSAC3_SERVICE_COMMENTARY 5L
|
||
|
#define KSAC3_SERVICE_EMERGENCY_FLASH 6L
|
||
|
#define KSAC3_SERVICE_VOICE_OVER 7L
|
||
|
|
||
|
/* Kernel streaming audio decoder output modes */
|
||
|
#define KSAUDDECOUTMODE_STEREO_ANALOG 0x00000001L
|
||
|
#define KSAUDDECOUTMODE_PCM_51 0x00000002L
|
||
|
#define KSAUDDECOUTMODE_SPDIFF 0x00000004L
|
||
|
|
||
|
/* Kernel streaming DVD CGMS copy protection flags */
|
||
|
#define KS_DVD_CGMS_COPY_PROTECT_MASK 0x00000018L
|
||
|
#define KS_DVD_CGMS_COPY_PERMITTED 0x00000000L
|
||
|
#define KS_DVD_CGMS_COPY_ONCE 0x00000010L
|
||
|
#define KS_DVD_CGMS_NO_COPY 0x00000018L
|
||
|
#define KS_DVD_COPYRIGHT_MASK 0x00000040L
|
||
|
#define KS_DVD_NOT_COPYRIGHTED 0x00000000L
|
||
|
#define KS_DVD_COPYRIGHTED 0x00000040L
|
||
|
#define KS_DVD_SECTOR_PROTECT_MASK 0x00000020L
|
||
|
#define KS_DVD_SECTOR_NOT_PROTECTED 0x00000000L
|
||
|
#define KS_DVD_SECTOR_PROTECTED 0x00000020L
|
||
|
|
||
|
/* Kernel streaming bitmap compression types */
|
||
|
#define KS_BI_RGB 0L
|
||
|
#define KS_BI_RLE8 1L
|
||
|
#define KS_BI_RLE4 2L
|
||
|
#define KS_BI_BITFIELDS 3L
|
||
|
|
||
|
/* Kernel streaming palette constants */
|
||
|
#define KS_iPALETTE_COLORS 256
|
||
|
#define KS_iEGA_COLORS 16
|
||
|
#define KS_iMASK_COLORS 3
|
||
|
#define KS_iTRUECOLOR 16
|
||
|
#define KS_iRED 0
|
||
|
#define KS_iGREEN 1
|
||
|
#define KS_iBLUE 2
|
||
|
#define KS_iPALETTE 8
|
||
|
#define KS_iMAXBITS 8
|
||
|
|
||
|
/* Kernel streaming VBI data and sampling rates */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_VBIDATARATE_NABTS 5727272L
|
||
|
#define KS_VBIDATARATE_CC 503493L
|
||
|
#define KS_VBISAMPLINGRATE_4X_NABTS (4 * KS_VBIDATARATE_NABTS)
|
||
|
#define KS_VBISAMPLINGRATE_47X_NABTS 27000000L
|
||
|
#define KS_VBISAMPLINGRATE_5X_NABTS (5 * KS_VBIDATARATE_NABTS)
|
||
|
#define KS_47NABTS_SCALER \
|
||
|
(KS_VBISAMPLINGRATE_47X_NABTS / (double)KS_VBIDATARATE_NABTS)
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming TV tuner flags */
|
||
|
#define KS_TVTUNER_CHANGE_BEGIN_TUNE 0x00000001L
|
||
|
#define KS_TVTUNER_CHANGE_END_TUNE 0x00000002L
|
||
|
|
||
|
/* Kernel streaming interlace flags */
|
||
|
#define KS_INTERLACE_IsInterlaced 0x00000001L
|
||
|
#define KS_INTERLACE_1FieldPerSample 0x00000002L
|
||
|
#define KS_INTERLACE_Field1First 0x00000004L
|
||
|
#define KS_INTERLACE_FieldPatternMask 0x00000030L
|
||
|
#define KS_INTERLACE_FieldPatField1Only 0x00000000L
|
||
|
#define KS_INTERLACE_FieldPatField2Only 0x00000010L
|
||
|
#define KS_INTERLACE_FieldPatBothRegular 0x00000020L
|
||
|
#define KS_INTERLACE_FieldPatBothIrregular 0x00000030L
|
||
|
#define KS_INTERLACE_DisplayModeMask 0x000000C0L
|
||
|
#define KS_INTERLACE_DisplayModeBobOnly 0x00000000L
|
||
|
#define KS_INTERLACE_DisplayModeWeaveOnly 0x00000040L
|
||
|
#define KS_INTERLACE_DisplayModeBobOrWeave 0x00000080L
|
||
|
|
||
|
/* Kernel streaming copy protection flags */
|
||
|
#define KS_COPYPROTECT_RestrictDuplication 0x00000001L
|
||
|
|
||
|
/* Kernel streaming MPEG-2 flags */
|
||
|
#define KS_MPEG2_DoPanScan 0x00000001L
|
||
|
#define KS_MPEG2_DVDLine21Field1 0x00000002L
|
||
|
#define KS_MPEG2_DVDLine21Field2 0x00000004L
|
||
|
#define KS_MPEG2_SourceIsLetterboxed 0x00000008L
|
||
|
#define KS_MPEG2_FilmCameraMode 0x00000010L
|
||
|
#define KS_MPEG2_LetterboxAnalogOut 0x00000020L
|
||
|
#define KS_MPEG2_DSS_UserData 0x00000040L
|
||
|
#define KS_MPEG2_DVB_UserData 0x00000080L
|
||
|
#define KS_MPEG2_27MhzTimebase 0x00000100L
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_MPEG2_WidescreenAnalogOut 0x00000200L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming AM control flags */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_AMCONTROL_USED 0x00000001L
|
||
|
#define KS_AMCONTROL_PAD_TO_4x3 0x00000002L
|
||
|
#define KS_AMCONTROL_PAD_TO_16x9 0x00000004L
|
||
|
#define KS_AMCONTROL_COLORINFO_PRESENT 0x00000080L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming MPEG audio information flags */
|
||
|
#define KS_MPEGAUDIOINFO_27MhzTimebase 0x00000001L
|
||
|
|
||
|
/* Kernel streaming video stream description flags */
|
||
|
#define KS_VIDEOSTREAM_PREVIEW 0x00000001L
|
||
|
#define KS_VIDEOSTREAM_CAPTURE 0x00000002L
|
||
|
#define KS_VIDEOSTREAM_VBI 0x00000010L
|
||
|
#define KS_VIDEOSTREAM_NABTS 0x00000020L
|
||
|
#define KS_VIDEOSTREAM_CC 0x00000100L
|
||
|
#define KS_VIDEOSTREAM_EDS 0x00000200L
|
||
|
#define KS_VIDEOSTREAM_TELETEXT 0x00000400L
|
||
|
#define KS_VIDEOSTREAM_STILL 0x00001000L
|
||
|
#define KS_VIDEOSTREAM_IS_VPE 0x00008000L
|
||
|
|
||
|
/* Kernel streaming video memory allocation flags */
|
||
|
#define KS_VIDEO_ALLOC_VPE_SYSTEM 0x00000001L
|
||
|
#define KS_VIDEO_ALLOC_VPE_DISPLAY 0x00000002L
|
||
|
#define KS_VIDEO_ALLOC_VPE_AGP 0x00000004L
|
||
|
|
||
|
/* Kernel streaming VBI capture protection flags */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_VBICAP_PROTECTION_MV_PRESENT 0x00000001L
|
||
|
#define KS_VBICAP_PROTECTION_MV_HARDWARE 0x00000002L
|
||
|
#define KS_VBICAP_PROTECTION_MV_DETECTED 0x00000004L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming NABTS group identifiers */
|
||
|
#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE 0x0800
|
||
|
#define KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE 0x0810
|
||
|
#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE 0x0820
|
||
|
#define KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE 0x0830
|
||
|
#define KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE 0x0840
|
||
|
#define KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE 0x0850
|
||
|
#define KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE 0x0860
|
||
|
#define KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE 0x0870
|
||
|
#define KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE 0x0880
|
||
|
#define KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE 0x0890
|
||
|
#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE 0x08A0
|
||
|
#define KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE 0x08B0
|
||
|
|
||
|
/* NABTS constants */
|
||
|
#define MAX_NABTS_VBI_LINES_PER_FIELD 11
|
||
|
#define NABTS_LINES_PER_BUNDLE 16
|
||
|
#define NABTS_PAYLOAD_PER_LINE 28
|
||
|
#define NABTS_BYTES_PER_LINE 36
|
||
|
|
||
|
/* Kernel streaming CC substream masks */
|
||
|
#define KS_CC_SUBSTREAM_ODD 0x00000001L
|
||
|
#define KS_CC_SUBSTREAM_EVEN 0x00000002L
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_CC_SUBSTREAM_FIELD1_MASK 0x000000F0L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_CC1 0x00000010L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_CC2 0x00000020L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_T1 0x00000040L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_T2 0x00000080L
|
||
|
#define KS_CC_SUBSTREAM_FIELD2_MASK 0x00001F00L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_CC3 0x00000100L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_CC4 0x00000200L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_T3 0x00000400L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_T4 0x00000800L
|
||
|
#define KS_CC_SUBSTREAM_SERVICE_XDS 0x00001000L
|
||
|
#endif
|
||
|
|
||
|
/* Maximum number of CC hardward decode lines */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define CC_MAX_HW_DECODE_LINES 12
|
||
|
#endif
|
||
|
|
||
|
/* NABTS buffer picture number support */
|
||
|
#define NABTS_BUFFER_PICTURENUMBER_SUPPORT 1
|
||
|
|
||
|
/* WST TV tuner change flags */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define WST_TVTUNER_CHANGE_BEGIN_TUNE 0x00001000L
|
||
|
#define WST_TVTUNER_CHANGE_END_TUNE 0x00002000L
|
||
|
#endif
|
||
|
|
||
|
/* WST constants */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define MAX_WST_VBI_LINES_PER_FIELD 17
|
||
|
#define WST_BYTES_PER_LINE 42
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video flags */
|
||
|
#define KS_VIDEO_FLAG_FIELD_MASK 0x00000003L
|
||
|
#define KS_VIDEO_FLAG_FRAME 0x00000000L
|
||
|
#define KS_VIDEO_FLAG_FIELD1 0x00000001L
|
||
|
#define KS_VIDEO_FLAG_FIELD2 0x00000002L
|
||
|
#define KS_VIDEO_FLAG_FIELD1FIRST 0x00000004L
|
||
|
#define KS_VIDEO_FLAG_WEAVE 0x00000008L
|
||
|
#define KS_VIDEO_FLAG_IPB_MASK 0x00000030L
|
||
|
#define KS_VIDEO_FLAG_I_FRAME 0x00000000L
|
||
|
#define KS_VIDEO_FLAG_P_FRAME 0x00000010L
|
||
|
#define KS_VIDEO_FLAG_B_FRAME 0x00000020L
|
||
|
#define KS_VIDEO_FLAG_REPEAT_FIELD 0x00000040L
|
||
|
|
||
|
/* Kernel streaming VBI flags */
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
#define KS_VBI_FLAG_FRAME 0x00000000L
|
||
|
#endif
|
||
|
#define KS_VBI_FLAG_FIELD1 0x00000001L
|
||
|
#define KS_VBI_FLAG_FIELD2 0x00000002L
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_VBI_FLAG_MV_PRESENT 0x00000100L
|
||
|
#define KS_VBI_FLAG_MV_HARDWARE 0x00000200L
|
||
|
#define KS_VBI_FLAG_MV_DETECTED 0x00000400L
|
||
|
#endif
|
||
|
#define KS_VBI_FLAG_TVTUNER_CHANGE 0x00000010L
|
||
|
#define KS_VBI_FLAG_VBIINFOHEADER_CHANGE 0x00000020L
|
||
|
|
||
|
/* Kernel streaming analog video standard masks */
|
||
|
#define KS_AnalogVideo_NTSC_Mask 0x00000007L
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
#define KS_AnalogVideo_PAL_Mask 0x00100FF0L
|
||
|
#else
|
||
|
#define KS_AnalogVideo_PAL_Mask 0x00000FF0L
|
||
|
#endif
|
||
|
#define KS_AnalogVideo_SECAM_Mask 0x000FF000L
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier property flags */
|
||
|
#define KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO 0x00000001L
|
||
|
#define KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL 0x00000002L
|
||
|
|
||
|
/* Kernel streaming camera control property flags */
|
||
|
#define KSPROPERTY_CAMERACONTROL_FLAGS_AUTO 0x00000001L
|
||
|
#define KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL 0x00000002L
|
||
|
#define KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE 0x00000000L
|
||
|
#define KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0x00000010L
|
||
|
|
||
|
/* Kernel streaming TV audio modes */
|
||
|
#define KS_TVAUDIO_MODE_MONO 0x00000001L
|
||
|
#define KS_TVAUDIO_MODE_STEREO 0x00000002L
|
||
|
#define KS_TVAUDIO_MODE_LANG_A 0x00000010L
|
||
|
#define KS_TVAUDIO_MODE_LANG_B 0x00000020L
|
||
|
#define KS_TVAUDIO_MODE_LANG_C 0x00000040L
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
#define KS_TVAUDIO_PRESET_STEREO 0x00000200L
|
||
|
#define KS_TVAUDIO_PRESET_LANG_A 0x00001000L
|
||
|
#define KS_TVAUDIO_PRESET_LANG_B 0x00002000L
|
||
|
#define KS_TVAUDIO_PRESET_LANG_C 0x00004000L
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming ActiveMovie flags */
|
||
|
#define KS_AM_UseNewCSSKey 0x00000001L
|
||
|
|
||
|
/* Maximum sink description name length */
|
||
|
#define MAX_SINK_DESCRIPTION_NAME_LENGTH 32
|
||
|
|
||
|
/* Jack capabilities */
|
||
|
#define JACKDESC2_PRESENCE_DETECT_CAPABILITY 0x00000001L
|
||
|
#define JACKDESC2_DYNAMIC_FORMAT_CHANGE_CAPABILITY 0x00000002L
|
||
|
|
||
|
/* Kernel streaming multiple data property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
KSMULTIPLE_ITEM MultipleItem;
|
||
|
} KSMULTIPLE_DATA_PROP;
|
||
|
typedef KSMULTIPLE_DATA_PROP *PKSMULTIPLE_DATA_PROP;
|
||
|
|
||
|
/* Kernel streaming interface media values */
|
||
|
typedef enum {
|
||
|
KSINTERFACE_MEDIA_MUSIC = 0,
|
||
|
KSINTERFACE_MEDIA_WAVE_BUFFERED = 1,
|
||
|
KSINTERFACE_MEDIA_WAVE_QUEUED = 2
|
||
|
} KSINTERFACE_MEDIA;
|
||
|
|
||
|
/* Kernel streaming wave format data format */
|
||
|
#if defined( _INC_MMSYSTEM ) || defined( _INC_MMREG )
|
||
|
typedef struct {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
WAVEFORMATEX WaveFormatEx;
|
||
|
} KSDATAFORMAT_WAVEFORMATEX;
|
||
|
typedef KSDATAFORMAT_WAVEFORMATEX *PKSDATAFORMAT_WAVEFORMATEX;
|
||
|
#endif
|
||
|
|
||
|
/* Extensible wave format */
|
||
|
#if defined( _INC_MMSYSTEM ) && !defined( _INC_MMREG )
|
||
|
typedef struct {
|
||
|
WAVEFORMATEX Format;
|
||
|
union {
|
||
|
WORD wValidBitsPerSample;
|
||
|
WORD wSamplesPerBlock;
|
||
|
WORD wReserved;
|
||
|
} Samples;
|
||
|
DWORD dwChannelMask;
|
||
|
GUID SubFormat;
|
||
|
} WAVEFORMATEXTENSIBLE;
|
||
|
typedef WAVEFORMATEXTENSIBLE *PWAVEFORMATEXTENSIBLE;
|
||
|
#endif
|
||
|
|
||
|
/* IEC61937 extensible wave format */
|
||
|
#if defined( _INC_MMSYSTEM ) && !defined( _INC_MMREG )
|
||
|
typedef struct {
|
||
|
WAVEFORMATEXTENSIBLE FormatExt;
|
||
|
DWORD dwEncodedSamplesPerSec;
|
||
|
DWORD dwEncodedChannelCount;
|
||
|
DWORD dwAverageBytesPerSec;
|
||
|
} WAVEFORMATEXTENSIBLE_IEC61937;
|
||
|
typedef WAVEFORMATEXTENSIBLE_IEC61937 *PWAVEFORMATEXTENSIBLE_IEC61937;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming DirectSound buffer description */
|
||
|
#if defined( _INC_MMSYSTEM ) || defined( _INC_MMREG )
|
||
|
typedef struct {
|
||
|
ULONG Flags;
|
||
|
ULONG Control;
|
||
|
WAVEFORMATEX WaveFormatEx;
|
||
|
} KSDSOUND_BUFFERDESC;
|
||
|
typedef KSDSOUND_BUFFERDESC *PKSDSOUND_BUFFERDESC;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming DirectSound data format */
|
||
|
#if defined( _INC_MMSYSTEM ) || defined( _INC_MMREG )
|
||
|
typedef struct {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KSDSOUND_BUFFERDESC BufferDesc;
|
||
|
} KSDATAFORMAT_DSOUND;
|
||
|
typedef KSDATAFORMAT_DSOUND *PKSDATAFORMAT_DSOUND;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio position */
|
||
|
typedef struct {
|
||
|
#ifdef _NTDDK_
|
||
|
ULONGLONG PlayOffset;
|
||
|
ULONGLONG WriteOffset;
|
||
|
#else
|
||
|
DWORDLONG PlayOffset;
|
||
|
DWORDLONG WriteOffset;
|
||
|
#endif
|
||
|
} KSAUDIO_POSITION;
|
||
|
typedef KSAUDIO_POSITION *PKSAUDIO_POSITION;
|
||
|
|
||
|
/* Kernel streaming microphone types */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef enum {
|
||
|
KSMICARRAY_MICTYPE_OMNIDIRECTIONAL = 0,
|
||
|
KSMICARRAY_MICTYPE_SUBCARDIOID = 1,
|
||
|
KSMICARRAY_MICTYPE_CARDIOID = 2,
|
||
|
KSMICARRAY_MICTYPE_SUPERCARDIOID = 3,
|
||
|
KSMICARRAY_MICTYPE_HYPERCARDIOID = 4,
|
||
|
KSMICARRAY_MICTYPE_8SHAPED = 8,
|
||
|
KSMICARRAY_MICTYPE_VENDORDEFINED = 0x0F
|
||
|
} KSMICARRAY_MICTYPE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio microphone coordinates */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
USHORT usType;
|
||
|
SHORT wXCoord;
|
||
|
SHORT wYCoord;
|
||
|
SHORT wZCoord;
|
||
|
SHORT wVerticalAngle;
|
||
|
SHORT wHorizontalAngle;
|
||
|
} KSAUDIO_MICROPHONE_COORDINATES;
|
||
|
typedef KSAUDIO_MICROPHONE_COORDINATES *PKSAUDIO_MICROPHONE_COORDINATES;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming microphone array types */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef enum {
|
||
|
KSMICARRAY_MICARRAYTYPE_LINEAR = 0,
|
||
|
KSMICARRAY_MICARRAYTYPE_PLANAR = 1,
|
||
|
KSMICARRAY_MICARRAYTYPE_3D = 2
|
||
|
} KSMICARRAY_MICARRAYTYPE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio microphone array geometry */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
USHORT usVersion;
|
||
|
USHORT usMicArrayType;
|
||
|
SHORT wVerticalAngleBegin;
|
||
|
SHORT wVerticalAngleEnd;
|
||
|
SHORT wHorizontalAngleBegin;
|
||
|
SHORT wHorizontalAngleEnd;
|
||
|
USHORT usFrequencyBandLo;
|
||
|
USHORT usFrequencyBandHi;
|
||
|
USHORT usNumberOfMicrophones;
|
||
|
KSAUDIO_MICROPHONE_COORDINATES KsMicCoord[1];
|
||
|
} KSAUDIO_MIC_ARRAY_GEOMETRY;
|
||
|
typedef KSAUDIO_MIC_ARRAY_GEOMETRY *PKSAUDIO_MIC_ARRAY_GEOMETRY;
|
||
|
#endif
|
||
|
|
||
|
/* DirectSound3D vector */
|
||
|
typedef struct _DS3DVECTOR {
|
||
|
union {
|
||
|
FLOAT x;
|
||
|
FLOAT dvX;
|
||
|
};
|
||
|
union {
|
||
|
FLOAT y;
|
||
|
FLOAT dvY;
|
||
|
};
|
||
|
union {
|
||
|
FLOAT z;
|
||
|
FLOAT dvZ;
|
||
|
};
|
||
|
} DS3DVECTOR;
|
||
|
typedef DS3DVECTOR *PDS3DVECTOR;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D listener properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_ALL = 0,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION = 1,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY = 2,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION = 3,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR = 4,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR = 5,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR = 6,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH = 7,
|
||
|
KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION = 8
|
||
|
} KSPROPERTY_DIRECTSOUND3DLISTENER;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D listener properties data structure */
|
||
|
typedef struct {
|
||
|
DS3DVECTOR Position;
|
||
|
DS3DVECTOR Velocity;
|
||
|
DS3DVECTOR OrientFront;
|
||
|
DS3DVECTOR OrientTop;
|
||
|
FLOAT DistanceFactor;
|
||
|
FLOAT RolloffFactor;
|
||
|
FLOAT DopplerFactor;
|
||
|
} KSDS3D_LISTENER_ALL;
|
||
|
typedef KSDS3D_LISTENER_ALL *PKSDS3D_LISTENER_ALL;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D listen orientation */
|
||
|
typedef struct {
|
||
|
DS3DVECTOR Front;
|
||
|
DS3DVECTOR Top;
|
||
|
} KSDS3D_LISTENER_ORIENTATION;
|
||
|
typedef KSDS3D_LISTENER_ORIENTATION *PKSDS3D_LISTENER_ORIENTATION;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D buffer properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_ALL = 0,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION = 1,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY = 2,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES = 3,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION = 4,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME = 5,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE = 6,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE = 7,
|
||
|
KSPROPERTY_DIRECTSOUND3DBUFFER_MODE = 8
|
||
|
} KSPROPERTY_DIRECTSOUND3DBUFFER;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D buffer properties data structure */
|
||
|
typedef struct {
|
||
|
DS3DVECTOR Position;
|
||
|
DS3DVECTOR Velocity;
|
||
|
ULONG InsideConeAngle;
|
||
|
ULONG OutsideConeAngle;
|
||
|
DS3DVECTOR ConeOrientation;
|
||
|
LONG ConeOutsideVolume;
|
||
|
FLOAT MinDistance;
|
||
|
FLOAT MaxDistance;
|
||
|
ULONG Mode;
|
||
|
} KSDS3D_BUFFER_ALL;
|
||
|
typedef KSDS3D_BUFFER_ALL *PKSDS3D_BUFFER_ALL;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D buffer cone angles */
|
||
|
typedef struct {
|
||
|
ULONG InsideConeAngle;
|
||
|
ULONG OutsideConeAngle;
|
||
|
} KSDS3D_BUFFER_CONE_ANGLES;
|
||
|
typedef KSDS3D_BUFFER_CONE_ANGLES *PKSDS3D_BUFFER_CONE_ANGLES;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF parameters */
|
||
|
typedef struct {
|
||
|
ULONG Size;
|
||
|
ULONG Enabled;
|
||
|
BOOL SwapChannels;
|
||
|
BOOL ZeroAzimuth;
|
||
|
BOOL CrossFadeOutput;
|
||
|
ULONG FilterSize;
|
||
|
} KSDS3D_HRTF_PARAMS_MSG;
|
||
|
typedef KSDS3D_HRTF_PARAMS_MSG *PKSDS3D_HRTF_PARAMS_MSG;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF filter qualities */
|
||
|
typedef enum {
|
||
|
FULL_FILTER = 0,
|
||
|
LIGHT_FILTER = 1,
|
||
|
KSDS3D_FILTER_QUALITY_COUNT = 2
|
||
|
} KSDS3D_HRTF_FILTER_QUALITY;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF initialize message */
|
||
|
typedef struct {
|
||
|
ULONG Size;
|
||
|
KSDS3D_HRTF_FILTER_QUALITY Quality;
|
||
|
FLOAT SampleRate;
|
||
|
ULONG MaxFilterSize;
|
||
|
ULONG FilterTransientMuteLength;
|
||
|
ULONG FilterOverlapBufferLength;
|
||
|
ULONG OutputOverlapBufferLength;
|
||
|
ULONG Reserved;
|
||
|
} KSDS3D_HRTF_INIT_MSG;
|
||
|
typedef KSDS3D_HRTF_INIT_MSG *PKSDS3D_HRTF_INIT_MSG;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF coefficient formats */
|
||
|
typedef enum {
|
||
|
FLOAT_COEFF = 0,
|
||
|
SHORT_COEFF = 1,
|
||
|
KSDS3D_COEFF_COUNT = 2
|
||
|
} KSDS3D_HRTF_COEFF_FORMAT;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF filter methods */
|
||
|
typedef enum {
|
||
|
DIRECT_FORM = 0,
|
||
|
CASCADE_FORM = 1,
|
||
|
KSDS3D_FILTER_METHOD_COUNT = 2
|
||
|
} KSDS3D_HRTF_FILTER_METHOD;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF filter versions */
|
||
|
typedef enum {
|
||
|
DS3D_HRTF_VERSION_1 = 0,
|
||
|
} KSDS3D_HRTF_FILTER_VERSION;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D HRTF filter format message */
|
||
|
typedef struct {
|
||
|
KSDS3D_HRTF_FILTER_METHOD FilterMethod;
|
||
|
KSDS3D_HRTF_COEFF_FORMAT CoeffFormat;
|
||
|
KSDS3D_HRTF_FILTER_VERSION Version;
|
||
|
ULONG Reserved;
|
||
|
} KSDS3D_HRTF_FILTER_FORMAT_MSG;
|
||
|
typedef KSDS3D_HRTF_FILTER_FORMAT_MSG *PKSDS3D_HRTF_FILTER_FORMAT_MSG;
|
||
|
|
||
|
/* Kernel streaming HRTF3D properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_HRTF3D_PARAMS = 0,
|
||
|
KSPROPERTY_HRTF3D_INITIALIZE = 1,
|
||
|
KSPROPERTY_HRTF3D_FILTER_FORMAT = 2
|
||
|
} KSPROPERTY_HRTF3D;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D ITD parameters */
|
||
|
typedef struct {
|
||
|
LONG Channel;
|
||
|
FLOAT VolSmoothScale;
|
||
|
FLOAT TotalDryAttenuation;
|
||
|
FLOAT TotalWetAttenuation;
|
||
|
LONG SmoothFrequency;
|
||
|
LONG Delay;
|
||
|
} KSDS3D_ITD_PARAMS;
|
||
|
typedef KSDS3D_ITD_PARAMS *PKSDS3D_ITD_PARAMS;
|
||
|
|
||
|
/* Kernel streaming DirectSound3D ITD parameters message */
|
||
|
typedef struct {
|
||
|
ULONG Enabled;
|
||
|
KSDS3D_ITD_PARAMS LeftParams;
|
||
|
KSDS3D_ITD_PARAMS RightParams;
|
||
|
ULONG Reserved;
|
||
|
} KSDS3D_ITD_PARAMS_MSG;
|
||
|
typedef KSDS3D_ITD_PARAMS_MSG *PKSDS3D_ITD_PARAMS_MSG;
|
||
|
|
||
|
/* Kernel streaming ITD3D properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_ITD3D_PARAMS = 0
|
||
|
} KSPROPERTY_ITD3D;
|
||
|
|
||
|
/* Kernel streaming audio data range */
|
||
|
typedef struct {
|
||
|
KSDATARANGE DataRange;
|
||
|
ULONG MaximumChannels;
|
||
|
ULONG MinimumBitsPerSample;
|
||
|
ULONG MaximumBitsPerSample;
|
||
|
ULONG MinimumSampleFrequency;
|
||
|
ULONG MaximumSampleFrequency;
|
||
|
} KSDATARANGE_AUDIO;
|
||
|
typedef KSDATARANGE_AUDIO *PKSDATARANGE_AUDIO;
|
||
|
|
||
|
/* Kernel streaming bibliographic properties */
|
||
|
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 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ',
|
||
|
KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 '
|
||
|
} KSPROPERTY_BIBLIOGRAPHIC;
|
||
|
|
||
|
/* Kernel streaming topology node properties */
|
||
|
typedef enum {
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_TOPOLOGYNODE_ENABLE = 1,
|
||
|
KSPROPERTY_TOPOLOGYNODE_RESET = 2
|
||
|
#else
|
||
|
KSPROPERTY_TOPOLOGYNODE_ENABLE = 1
|
||
|
#endif
|
||
|
} KSPROPERTY_TOPOLOGYNODE;
|
||
|
|
||
|
/* RT audio callback */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && defined( _NTDDK_ )
|
||
|
typedef NTSTATUS (CALLBACK *PRTAUDIOGETPOSITION)( PFILE_OBJECT, PUCHAR *, PLONG );
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef enum {
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION = 0,
|
||
|
KSPROPERTY_RTAUDIO_BUFFER = 1,
|
||
|
KSPROPERTY_RTAUDIO_HWLATENCY = 2,
|
||
|
KSPROPERTY_RTAUDIO_POSITIONREGISTER = 3,
|
||
|
KSPROPERTY_RTAUDIO_CLOCKREGISTER = 4,
|
||
|
KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION = 5,
|
||
|
KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT = 6,
|
||
|
#if (NTDDI_VERSION >= 0x06010000)
|
||
|
KSPROPERTY_RTAUDIO_UNREGISTER_NOTIFICATION_EVENT = 7,
|
||
|
KSPROPERTY_RTAUDIO_QUERY_NOTIFICATION_SUPPORT = 8
|
||
|
#else
|
||
|
KSPROPERTY_RTAUDIO_UNREGISTER_NOTIFICATION_EVENT = 7
|
||
|
#endif
|
||
|
#else
|
||
|
KSPROPERTY_RTAUDIO_GETPOSITIONFUNCTION = 0
|
||
|
#endif
|
||
|
} KSPROPERTY_RTAUDIO;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer property */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
PVOID BaseAddress;
|
||
|
ULONG RequestedBufferSize;
|
||
|
} KSRTAUDIO_BUFFER_PROPERTY;
|
||
|
typedef KSRTAUDIO_BUFFER_PROPERTY *PKSRTAUDIO_BUFFER_PROPERTY;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer property (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG BaseAddress;
|
||
|
ULONG RequestedBufferSize;
|
||
|
} KSRTAUDIO_BUFFER_PROPERTY32;
|
||
|
typedef KSRTAUDIO_BUFFER_PROPERTY32 *PKSRTAUDIO_BUFFER_PROPERTY32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer property with notification */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
PVOID BaseAddress;
|
||
|
ULONG RequestedBufferSize;
|
||
|
ULONG NotificationCount;
|
||
|
} KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION;
|
||
|
typedef KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION *PKSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer property with notification (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG BaseAddress;
|
||
|
ULONG RequestedBufferSize;
|
||
|
ULONG NotificationCount;
|
||
|
} KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION32;
|
||
|
typedef KSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION32 *PKSRTAUDIO_BUFFER_PROPERTY_WITH_NOTIFICATION32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
PVOID BufferAddress;
|
||
|
ULONG ActualBufferSize;
|
||
|
BOOL CallMemoryBarrier;
|
||
|
} KSRTAUDIO_BUFFER;
|
||
|
typedef KSRTAUDIO_BUFFER *PKSRTAUDIO_BUFFER;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio buffer (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
ULONG BufferAddress;
|
||
|
ULONG ActualBufferSize;
|
||
|
BOOL CallMemoryBarrier;
|
||
|
} KSRTAUDIO_BUFFER32;
|
||
|
typedef KSRTAUDIO_BUFFER32 *PKSRTAUDIO_BUFFER32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio hardware latency */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
ULONG FifoSize;
|
||
|
ULONG ChipsetDelay;
|
||
|
ULONG CodecDelay;
|
||
|
} KSRTAUDIO_HWLATENCY;
|
||
|
typedef KSRTAUDIO_HWLATENCY *PKSRTAUDIO_HWLATENCY;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio hardware register property */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
PVOID BaseAddress;
|
||
|
} KSRTAUDIO_HWREGISTER_PROPERTY;
|
||
|
typedef KSRTAUDIO_HWREGISTER_PROPERTY *PKSRTAUDIO_HWREGISTER_PROPERTY;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio hardware register property (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG BaseAddress;
|
||
|
} KSRTAUDIO_HWREGISTER_PROPERTY32;
|
||
|
typedef KSRTAUDIO_HWREGISTER_PROPERTY32 *PKSRTAUDIO_HWREGISTER_PROPERTY32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio hardware register */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
PVOID Register;
|
||
|
ULONG Width;
|
||
|
ULONGLONG Numerator;
|
||
|
ULONGLONG Denominator;
|
||
|
ULONG Accuracy;
|
||
|
} KSRTAUDIO_HWREGISTER;
|
||
|
typedef KSRTAUDIO_HWREGISTER *PKSRTAUDIO_HWREGISTER;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio hardware register (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
ULONG Register;
|
||
|
ULONG Width;
|
||
|
ULONGLONG Numerator;
|
||
|
ULONGLONG Denominator;
|
||
|
ULONG Accuracy;
|
||
|
} KSRTAUDIO_HWREGISTER32;
|
||
|
typedef KSRTAUDIO_HWREGISTER32 *PKSRTAUDIO_HWREGISTER32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio notification event property */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
HANDLE NotificationEvent;
|
||
|
} KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY;
|
||
|
typedef KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY *PKSRTAUDIO_NOTIFICATION_EVENT_PROPERTY;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming RT audio notification event property (32-bit version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG NotificationEvent;
|
||
|
} KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY32;
|
||
|
typedef KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY32 *PKSRTAUDIO_NOTIFICATION_EVENT_PROPERTY32;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming one-shot properties */
|
||
|
#if (NTDDI_VERSION >= 0x06010000)
|
||
|
enum {
|
||
|
KSPROPERTY_ONESHOT_RECONNECT = 0
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming DRM audio stream properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DRMAUDIOSTREAM_CONTENTID = 0
|
||
|
} KSPROPERTY_DRMAUDIOSTREAM;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_AUDIO_LATENCY = 1,
|
||
|
KSPROPERTY_AUDIO_COPY_PROTECTION = 2,
|
||
|
KSPROPERTY_AUDIO_CHANNEL_CONFIG = 3,
|
||
|
KSPROPERTY_AUDIO_VOLUMELEVEL = 4,
|
||
|
KSPROPERTY_AUDIO_POSITION = 5,
|
||
|
KSPROPERTY_AUDIO_DYNAMIC_RANGE = 6,
|
||
|
KSPROPERTY_AUDIO_QUALITY = 7,
|
||
|
KSPROPERTY_AUDIO_SAMPLING_RATE = 8,
|
||
|
KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE = 9,
|
||
|
KSPROPERTY_AUDIO_MIX_LEVEL_TABLE = 10,
|
||
|
KSPROPERTY_AUDIO_MIX_LEVEL_CAPS = 11,
|
||
|
KSPROPERTY_AUDIO_MUX_SOURCE = 12,
|
||
|
KSPROPERTY_AUDIO_MUTE = 13,
|
||
|
KSPROPERTY_AUDIO_BASS = 14,
|
||
|
KSPROPERTY_AUDIO_MID = 15,
|
||
|
KSPROPERTY_AUDIO_TREBLE = 16,
|
||
|
KSPROPERTY_AUDIO_BASS_BOOST = 17,
|
||
|
KSPROPERTY_AUDIO_EQ_LEVEL = 18,
|
||
|
KSPROPERTY_AUDIO_NUM_EQ_BANDS = 19,
|
||
|
KSPROPERTY_AUDIO_EQ_BANDS = 20,
|
||
|
KSPROPERTY_AUDIO_AGC = 21,
|
||
|
KSPROPERTY_AUDIO_DELAY = 22,
|
||
|
KSPROPERTY_AUDIO_LOUDNESS = 23,
|
||
|
KSPROPERTY_AUDIO_WIDE_MODE = 24,
|
||
|
KSPROPERTY_AUDIO_WIDENESS = 25,
|
||
|
KSPROPERTY_AUDIO_REVERB_LEVEL = 26,
|
||
|
KSPROPERTY_AUDIO_CHORUS_LEVEL = 27,
|
||
|
KSPROPERTY_AUDIO_DEV_SPECIFIC = 28,
|
||
|
KSPROPERTY_AUDIO_DEMUX_DEST = 29,
|
||
|
KSPROPERTY_AUDIO_STEREO_ENHANCE = 30,
|
||
|
KSPROPERTY_AUDIO_MANUFACTURE_GUID = 31,
|
||
|
KSPROPERTY_AUDIO_PRODUCT_GUID = 32,
|
||
|
KSPROPERTY_AUDIO_CPU_RESOURCES = 33,
|
||
|
KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY = 34,
|
||
|
KSPROPERTY_AUDIO_SURROUND_ENCODE = 35,
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_AUDIO_3D_INTERFACE = 36,
|
||
|
KSPROPERTY_AUDIO_PEAKMETER = 37,
|
||
|
KSPROPERTY_AUDIO_ALGORITHM_INSTANCE = 38,
|
||
|
KSPROPERTY_AUDIO_FILTER_STATE = 39,
|
||
|
#endif
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
KSPROPERTY_AUDIO_PREFERRED_STATUS = 40,
|
||
|
KSPROPERTY_AUDIO_PEQ_MAX_BANDS = 41,
|
||
|
KSPROPERTY_AUDIO_PEQ_NUM_BANDS = 42,
|
||
|
KSPROPERTY_AUDIO_PEQ_BAND_CENTER_FREQ = 43,
|
||
|
KSPROPERTY_AUDIO_PEQ_BAND_Q_FACTOR = 44,
|
||
|
KSPROPERTY_AUDIO_PEQ_BAND_LEVEL = 45,
|
||
|
KSPROPERTY_AUDIO_CHORUS_MODULATION_RATE = 46,
|
||
|
KSPROPERTY_AUDIO_CHORUS_MODULATION_DEPTH = 47,
|
||
|
KSPROPERTY_AUDIO_REVERB_TIME = 48,
|
||
|
KSPROPERTY_AUDIO_REVERB_DELAY_FEEDBACK = 49,
|
||
|
KSPROPERTY_AUDIO_POSITIONEX = 50,
|
||
|
KSPROPERTY_AUDIO_MIC_ARRAY_GEOMETRY = 51
|
||
|
#elif (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_AUDIO_PREFERRED_STATUS = 40
|
||
|
#else
|
||
|
KSPROPERTY_AUDIO_3D_INTERFACE = 36
|
||
|
#endif
|
||
|
} KSPROPERTY_AUDIO;
|
||
|
|
||
|
/* Kernel streaming audio copy protection */
|
||
|
typedef struct {
|
||
|
BOOL fCopyrighted;
|
||
|
BOOL fOriginal;
|
||
|
} KSAUDIO_COPY_PROTECTION;
|
||
|
typedef KSAUDIO_COPY_PROTECTION *PKSAUDIO_COPY_PROTECTION;
|
||
|
|
||
|
/* Kernel streaming audio channel configuration */
|
||
|
typedef struct {
|
||
|
LONG ActiveSpeakerPositions;
|
||
|
} KSAUDIO_CHANNEL_CONFIG;
|
||
|
typedef KSAUDIO_CHANNEL_CONFIG *PKSAUDIO_CHANNEL_CONFIG;
|
||
|
|
||
|
/* Kernel streaming audio dynamic range */
|
||
|
typedef struct {
|
||
|
ULONG QuietCompression;
|
||
|
ULONG LoudCompression;
|
||
|
} KSAUDIO_DYNAMIC_RANGE;
|
||
|
typedef KSAUDIO_DYNAMIC_RANGE *PKSAUDIO_DYNAMIC_RANGE;
|
||
|
|
||
|
/* Kernel streaming audio mix level */
|
||
|
typedef struct {
|
||
|
BOOL Mute;
|
||
|
LONG Level;
|
||
|
} KSAUDIO_MIXLEVEL;
|
||
|
typedef KSAUDIO_MIXLEVEL *PKSAUDIO_MIXLEVEL;
|
||
|
|
||
|
/* Kernel streaming audio mix capabilities */
|
||
|
typedef struct {
|
||
|
BOOL Mute;
|
||
|
LONG Minimum;
|
||
|
LONG Maximum;
|
||
|
union {
|
||
|
LONG Reset;
|
||
|
LONG Resolution;
|
||
|
};
|
||
|
} KSAUDIO_MIX_CAPS;
|
||
|
typedef KSAUDIO_MIX_CAPS *PKSAUDIO_MIX_CAPS;
|
||
|
|
||
|
/* Kernel streaming audio mix capability table */
|
||
|
typedef struct {
|
||
|
ULONG InputChannels;
|
||
|
ULONG OutputChannels;
|
||
|
KSAUDIO_MIX_CAPS Capabilities[1];
|
||
|
} KSAUDIO_MIXCAP_TABLE;
|
||
|
typedef KSAUDIO_MIXCAP_TABLE *PKSAUDIO_MIXCAP_TABLE;
|
||
|
|
||
|
/* Stereo enhancement techniques */
|
||
|
typedef enum {
|
||
|
SE_TECH_NONE = 0,
|
||
|
SE_TECH_ANALOG_DEVICES_PHAT = 1,
|
||
|
SE_TECH_CREATIVE = 2,
|
||
|
SE_TECH_NATIONAL_SEMI = 3,
|
||
|
SE_TECH_YAMAHA_YMERSION = 4,
|
||
|
SE_TECH_BBE = 5,
|
||
|
SE_TECH_CRYSTAL_SEMI = 6,
|
||
|
SE_TECH_QSOUND_QXPANDER = 7,
|
||
|
SE_TECH_SPATIALIZER = 8,
|
||
|
SE_TECH_SRS = 9,
|
||
|
SE_TECH_PLATFORM_TECH = 10,
|
||
|
SE_TECH_AKM = 11,
|
||
|
SE_TECH_AUREAL = 12,
|
||
|
SE_TECH_AZTECH = 13,
|
||
|
SE_TECH_BINAURA = 14,
|
||
|
SE_TECH_ESS_TECH = 15,
|
||
|
SE_TECH_HARMAN_VMAX = 16,
|
||
|
SE_TECH_NVIDEA = 17,
|
||
|
SE_TECH_PHILIPS_INCREDIBLE = 18,
|
||
|
SE_TECH_TEXAS_INST = 19,
|
||
|
SE_TECH_VLSI_TECH = 20
|
||
|
} SE_TECHNIQUE;
|
||
|
|
||
|
/* Kernel streaming audio stereo enhancement information */
|
||
|
typedef struct {
|
||
|
SE_TECHNIQUE Technique;
|
||
|
ULONG Center;
|
||
|
ULONG Depth;
|
||
|
ULONG Reserved;
|
||
|
} KSAUDIO_STEREO_ENHANCE;
|
||
|
typedef KSAUDIO_STEREO_ENHANCE *PKSAUDIO_STEREO_ENHANCE;
|
||
|
|
||
|
/* Kernel streaming system audio default type properties */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT = 0,
|
||
|
KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT = 1,
|
||
|
KSPROPERTY_SYSAUDIO_RECORD_DEFAULT = 2,
|
||
|
KSPROPERTY_SYSAUDIO_MIDI_DEFAULT = 3,
|
||
|
KSPROPERTY_SYSAUDIO_MIXER_DEFAULT = 4
|
||
|
} KSPROPERTY_SYSAUDIO_DEFAULT_TYPE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming audio preferred status */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
typedef struct {
|
||
|
BOOL Enable;
|
||
|
KSPROPERTY_SYSAUDIO_DEFAULT_TYPE DeviceType;
|
||
|
ULONG Flags;
|
||
|
ULONG Reserved;
|
||
|
} KSAUDIO_PREFERRED_STATUS;
|
||
|
typedef KSAUDIO_PREFERRED_STATUS *PKSAUDIO_PREFERRED_STATUS;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel stream audio position (extended version) */
|
||
|
#if (NTDDI_VERSION >= 0x06000000)
|
||
|
typedef struct {
|
||
|
LARGE_INTEGER TimerFrequency;
|
||
|
LARGE_INTEGER TimeStamp1;
|
||
|
KSAUDIO_POSITION Position;
|
||
|
LARGE_INTEGER TimeStamp2;
|
||
|
} KSAUDIO_POSITIONEX;
|
||
|
typedef KSAUDIO_POSITIONEX *PKSAUDIO_POSITIONEX;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming wave table methods */
|
||
|
typedef enum {
|
||
|
KSMETHOD_WAVETABLE_WAVE_ALLOC = 0,
|
||
|
KSMETHOD_WAVETABLE_WAVE_FREE = 1,
|
||
|
KSMETHOD_WAVETABLE_WAVE_FIND = 2,
|
||
|
KSMETHOD_WAVETABLE_WAVE_WRITE = 3
|
||
|
} KSMETHOD_WAVETABLE;
|
||
|
|
||
|
/* Kernel streaming wave table wave description */
|
||
|
typedef struct {
|
||
|
KSIDENTIFIER Identifier;
|
||
|
ULONG Size;
|
||
|
BOOL Looped;
|
||
|
ULONG LoopPoint;
|
||
|
BOOL InROM;
|
||
|
KSDATAFORMAT Format;
|
||
|
} KSWAVETABLE_WAVE_DESC;
|
||
|
typedef KSWAVETABLE_WAVE_DESC *PKSWAVETABLE_WAVE_DESC;
|
||
|
|
||
|
/* Kernel streaming acoutstic echo cancel properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_AEC_NOISE_FILL_ENABLE = 0,
|
||
|
KSPROPERTY_AEC_STATUS = 1,
|
||
|
KSPROPERTY_AEC_MODE = 2
|
||
|
} KSPROPERTY_AEC;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming wave properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES = 0,
|
||
|
KSPROPERTY_WAVE_INPUT_CAPABILITIES = 1,
|
||
|
KSPROPERTY_WAVE_OUTPUT_CAPABILITIES = 2,
|
||
|
KSPROPERTY_WAVE_BUFFER = 3,
|
||
|
KSPROPERTY_WAVE_FREQUENCY = 4,
|
||
|
KSPROPERTY_WAVE_VOLUME = 5,
|
||
|
KSPROPERTY_WAVE_PAN = 6
|
||
|
} KSPROPERTY_WAVE;
|
||
|
|
||
|
/* Kernel streaming wave compatibility capabilities */
|
||
|
typedef struct {
|
||
|
ULONG ulDeviceType;
|
||
|
} KSWAVE_COMPATCAPS;
|
||
|
typedef KSWAVE_COMPATCAPS *PKSWAVE_COMPATCAPS;
|
||
|
|
||
|
/* Kernel streaming wave input capabilities */
|
||
|
typedef struct {
|
||
|
ULONG MaximumChannelsPerConnection;
|
||
|
ULONG MinimumBitsPerSample;
|
||
|
ULONG MaximumBitsPerSample;
|
||
|
ULONG MinimumSampleFrequency;
|
||
|
ULONG MaximumSampleFrequency;
|
||
|
ULONG TotalConnections;
|
||
|
ULONG ActiveConnections;
|
||
|
} KSWAVE_INPUT_CAPABILITIES;
|
||
|
typedef KSWAVE_INPUT_CAPABILITIES *PKSWAVE_INPUT_CAPABILITIES;
|
||
|
|
||
|
/* Kernel streaming wave output capabilities */
|
||
|
typedef struct {
|
||
|
ULONG MaximumChannelsPerConnection;
|
||
|
ULONG MinimumBitsPerSample;
|
||
|
ULONG MaximumBitsPerSample;
|
||
|
ULONG MinimumSampleFrequency;
|
||
|
ULONG MaximumSampleFrequency;
|
||
|
ULONG TotalConnections;
|
||
|
ULONG StaticConnections;
|
||
|
ULONG StreamingConnections;
|
||
|
ULONG ActiveConnections;
|
||
|
ULONG ActiveStaticConnections;
|
||
|
ULONG ActiveStreamingConnections;
|
||
|
ULONG Total3DConnections;
|
||
|
ULONG Static3DConnections;
|
||
|
ULONG Streaming3DConnections;
|
||
|
ULONG Active3DConnections;
|
||
|
ULONG ActiveStatic3DConnections;
|
||
|
ULONG ActiveStreaming3DConnections;
|
||
|
ULONG TotalSampleMemory;
|
||
|
ULONG FreeSampleMemory;
|
||
|
ULONG LargestFreeContiguousSampleMemory;
|
||
|
} KSWAVE_OUTPUT_CAPABILITIES;
|
||
|
typedef KSWAVE_OUTPUT_CAPABILITIES *PKSWAVE_OUTPUT_CAPABILITIES;
|
||
|
|
||
|
/* Kernel streaming wave volume */
|
||
|
typedef struct {
|
||
|
LONG LeftAttenuation;
|
||
|
LONG RightAttenuation;
|
||
|
} KSWAVE_VOLUME;
|
||
|
typedef KSWAVE_VOLUME *PKSWAVE_VOLUME;
|
||
|
|
||
|
/* Kernel streaming wave buffer */
|
||
|
typedef struct {
|
||
|
ULONG Attributes;
|
||
|
ULONG BufferSize;
|
||
|
PVOID BufferAddress;
|
||
|
} KSWAVE_BUFFER;
|
||
|
typedef KSWAVE_BUFFER *PKSWAVE_BUFFER;
|
||
|
|
||
|
/* Kernel streaming wave table properties */
|
||
|
#if (NTDDI_VERSION < 0x05020000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_WAVETABLE_LOAD_SAMPLE = 0,
|
||
|
KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE = 1,
|
||
|
KSPROPERTY_WAVETABLE_MEMORY = 2,
|
||
|
KSPROPERTY_WAVETABLE_VERSION = 3
|
||
|
} KSPROPERTY_WAVETABLE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming music data range */
|
||
|
typedef struct {
|
||
|
KSDATARANGE DataRange;
|
||
|
GUID Technology;
|
||
|
ULONG Channels;
|
||
|
ULONG Notes;
|
||
|
ULONG ChannelMask;
|
||
|
} KSDATARANGE_MUSIC;
|
||
|
typedef KSDATARANGE_MUSIC *PKSDATARANGE_MUSIC;
|
||
|
|
||
|
/* Kernel streaming cyclic time event */
|
||
|
#if (NTDDI_VERSION < 0x05020000)
|
||
|
typedef enum {
|
||
|
KSEVENT_CYCLIC_TIME_INTERVAL = 0
|
||
|
} KSEVENT_CYCLIC_TIME;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming cyclic position properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_CYCLIC_POSITION = 0
|
||
|
} KSPROPERTY_CYCLIC;
|
||
|
|
||
|
/* Kernel streaming audio control change constants */
|
||
|
typedef enum {
|
||
|
KSEVENT_CONTROL_CHANGE = 0
|
||
|
} KSEVENT_AUDIO_CONTROL_CHANGE;
|
||
|
|
||
|
/* Kernel streaming looped streaming event */
|
||
|
typedef enum {
|
||
|
KSEVENT_LOOPEDSTREAMING_POSITION = 0
|
||
|
} KSEVENT_LOOPEDSTREAMING;
|
||
|
|
||
|
/* Looped streaming position event data */
|
||
|
typedef struct {
|
||
|
KSEVENTDATA KsEventData;
|
||
|
#ifdef _NTDDK_
|
||
|
ULONGLONG Position;
|
||
|
#else
|
||
|
DWORDLONG Position;
|
||
|
#endif
|
||
|
} LOOPEDSTREAMING_POSITION_EVENT_DATA;
|
||
|
typedef LOOPEDSTREAMING_POSITION_EVENT_DATA *PLOOPEDSTREAMING_POSITION_EVENT_DATA;
|
||
|
|
||
|
/* Kernel streaming system audio events */
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
typedef enum {
|
||
|
#if (NTDDI_VERSION == 0x05010000)
|
||
|
KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE = 0,
|
||
|
KSEVENT_SYSAUDIO_CHANGE_DEVICE = 1
|
||
|
#else
|
||
|
KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE = 0
|
||
|
#endif
|
||
|
} KSEVENT_SYSAUDIO;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming system audio properties */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_SYSAUDIO_DEVICE_COUNT = 1,
|
||
|
KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME = 2,
|
||
|
KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE = 3,
|
||
|
KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME = 4,
|
||
|
KSPROPERTY_SYSAUDIO_SELECT_GRAPH = 5,
|
||
|
KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE = 6,
|
||
|
KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT = 7,
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE = 8,
|
||
|
KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK = 9,
|
||
|
KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK = 10,
|
||
|
KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES = 11,
|
||
|
KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX = 12,
|
||
|
KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY = 13,
|
||
|
#endif
|
||
|
KSPROPERTY_SYSAUDIO_INSTANCE_INFO = 14,
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE = 15
|
||
|
#else
|
||
|
KSPROPERTY_SYSAUDIO_COMPONENT_ID = 16
|
||
|
#endif
|
||
|
} KSPROPERTY_SYSAUDIO;
|
||
|
#endif
|
||
|
|
||
|
/* System audio create virtual source property */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
GUID PinCategory;
|
||
|
GUID PinName;
|
||
|
} SYSAUDIO_CREATE_VIRTUAL_SOURCE;
|
||
|
typedef SYSAUDIO_CREATE_VIRTUAL_SOURCE *PSYSAUDIO_CREATE_VIRTUAL_SOURCE;
|
||
|
#endif
|
||
|
|
||
|
/* System audio select graph property */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG PinId;
|
||
|
ULONG NodeId;
|
||
|
ULONG Flags;
|
||
|
ULONG Reserved;
|
||
|
} SYSAUDIO_SELECT_GRAPH;
|
||
|
typedef SYSAUDIO_SELECT_GRAPH *PSYSAUDIO_SELECT_GRAPH;
|
||
|
#endif
|
||
|
|
||
|
/* System audio instance information */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Flags;
|
||
|
ULONG DeviceNumber;
|
||
|
} SYSAUDIO_INSTANCE_INFO;
|
||
|
typedef SYSAUDIO_INSTANCE_INFO *PSYSAUDIO_INSTANCE_INFO;
|
||
|
#endif
|
||
|
|
||
|
/* System audio preferred device */
|
||
|
#if (NTDDI_VERSION < 0x05010000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Flags;
|
||
|
ULONG Index;
|
||
|
} SYSAUDIO_PREFERRED_DEVICE;
|
||
|
typedef SYSAUDIO_PREFERRED_DEVICE *PSYSAUDIO_PREFERRED_DEVICE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming system audio pin properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
typedef enum {
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1
|
||
|
#else
|
||
|
KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX = 0,
|
||
|
KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE = 1,
|
||
|
KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE = 2
|
||
|
#endif
|
||
|
} KSPROPERTY_SYSAUDIO_PIN;
|
||
|
#endif
|
||
|
|
||
|
/* System audio attach virtual source property */
|
||
|
#if (NTDDI_VERSION < 0x06000000)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG MixerPinId;
|
||
|
ULONG Reserved;
|
||
|
} SYSAUDIO_ATTACH_VIRTUAL_SOURCE;
|
||
|
typedef SYSAUDIO_ATTACH_VIRTUAL_SOURCE *PSYSAUDIO_ATTACH_VIRTUAL_SOURCE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming node property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG NodeId;
|
||
|
ULONG Reserved;
|
||
|
} KSNODEPROPERTY;
|
||
|
typedef KSNODEPROPERTY *PKSNODEPROPERTY;
|
||
|
|
||
|
/* Kernel streaming audio channel node property */
|
||
|
typedef struct {
|
||
|
KSNODEPROPERTY NodeProperty;
|
||
|
LONG Channel;
|
||
|
ULONG Reserved;
|
||
|
} KSNODEPROPERTY_AUDIO_CHANNEL;
|
||
|
typedef KSNODEPROPERTY_AUDIO_CHANNEL *PKSNODEPROPERTY_AUDIO_CHANNEL;
|
||
|
|
||
|
/* Kernel streaming audio device specific node channel */
|
||
|
typedef struct {
|
||
|
KSNODEPROPERTY NodeProperty;
|
||
|
ULONG DevSpecificId;
|
||
|
ULONG DeviceInfo;
|
||
|
ULONG Length;
|
||
|
} KSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
|
||
|
typedef KSNODEPROPERTY_AUDIO_DEV_SPECIFIC *PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
|
||
|
|
||
|
/* Kernel streaming audio 3D listener node property */
|
||
|
typedef struct {
|
||
|
KSNODEPROPERTY NodeProperty;
|
||
|
PVOID ListenerId;
|
||
|
ULONG Reserved;
|
||
|
} KSNODEPROPERTY_AUDIO_3D_LISTENER;
|
||
|
typedef KSNODEPROPERTY_AUDIO_3D_LISTENER *PKSNODEPROPERTY_AUDIO_3D_LISTENER;
|
||
|
|
||
|
/* Kernel streaming audio node property */
|
||
|
typedef struct {
|
||
|
KSNODEPROPERTY NodeProperty;
|
||
|
PVOID AppContext;
|
||
|
ULONG Length;
|
||
|
ULONG Reserved;
|
||
|
} KSNODEPROPERTY_AUDIO_PROPERTY;
|
||
|
typedef KSNODEPROPERTY_AUDIO_PROPERTY *PKSNODEPROPERTY_AUDIO_PROPERTY;
|
||
|
|
||
|
/* Kernel streaming audio graphics properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000) && (NTDDI_VERSION < 0x06000000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_AUDIOGFX_RENDERTARGETDEVICEID = 0,
|
||
|
KSPROPERTY_AUDIOGFX_CAPTURETARGETDEVICEID = 1
|
||
|
} KSPROPERTY_AUDIOGFX;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming linear properties */
|
||
|
#if (NTDDI_VERSION < 0x05020000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_LINEAR_POSITION = 0
|
||
|
} KSPROPERTY_LINEAR;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming music format */
|
||
|
typedef struct {
|
||
|
ULONG TimeDeltaMs;
|
||
|
ULONG ByteCount;
|
||
|
} KSMUSICFORMAT;
|
||
|
typedef KSMUSICFORMAT *PKSMUSICFORMAT;
|
||
|
|
||
|
/* Kernel streaming MPEG-2 video properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_MPEG2VID_MODES = 0,
|
||
|
KSPROPERTY_MPEG2VID_CUR_MODE = 1,
|
||
|
KSPROPERTY_MPEG2VID_4_3_RECT = 2,
|
||
|
KSPROPERTY_MPEG2VID_16_9_RECT = 3,
|
||
|
KSPROPERTY_MPEG2VID_16_9_PANSCAN = 4
|
||
|
} KSPROPERTY_MPEG2VID;
|
||
|
|
||
|
/* Kernel streaming MPEG video rectangle */
|
||
|
typedef struct _KSMPEGVID_RECT {
|
||
|
ULONG StartX;
|
||
|
ULONG StartY;
|
||
|
ULONG EndX;
|
||
|
ULONG EndY;
|
||
|
} KSMPEGVID_RECT;
|
||
|
typedef KSMPEGVID_RECT *PKSMPEGVID_RECT;
|
||
|
|
||
|
/* Kernel streaming AC3 properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_AC3_ERROR_CONCEALMENT = 1,
|
||
|
KSPROPERTY_AC3_ALTERNATE_AUDIO = 2,
|
||
|
KSPROPERTY_AC3_DOWNMIX = 3,
|
||
|
KSPROPERTY_AC3_BIT_STREAM_MODE = 4,
|
||
|
KSPROPERTY_AC3_DIALOGUE_LEVEL = 5,
|
||
|
KSPROPERTY_AC3_LANGUAGE_CODE = 6,
|
||
|
KSPROPERTY_AC3_ROOM_TYPE = 7
|
||
|
} KSPROPERTY_AC3;
|
||
|
|
||
|
/* Kernel streaming AC3 error concealment */
|
||
|
typedef struct {
|
||
|
BOOL fRepeatPreviousBlock;
|
||
|
BOOL fErrorInCurrentBlock;
|
||
|
} KSAC3_ERROR_CONCEALMENT;
|
||
|
typedef KSAC3_ERROR_CONCEALMENT *PKSAC3_ERROR_CONCEALMENT;
|
||
|
|
||
|
/* Kernel streaming AC3 alternate audio */
|
||
|
typedef struct {
|
||
|
BOOL fStereo;
|
||
|
ULONG DualMode;
|
||
|
} KSAC3_ALTERNATE_AUDIO;
|
||
|
typedef KSAC3_ALTERNATE_AUDIO *PKSAC3_ALTERNATE_AUDIO;
|
||
|
|
||
|
/* Kernel streaming AC3 down mix */
|
||
|
typedef struct {
|
||
|
BOOL fDownMix;
|
||
|
BOOL fDolbySurround;
|
||
|
} KSAC3_DOWNMIX;
|
||
|
typedef KSAC3_DOWNMIX *PKSAC3_DOWNMIX;
|
||
|
|
||
|
/* Kernel streaming AC3 bit stream mode */
|
||
|
typedef struct {
|
||
|
LONG BitStreamMode;
|
||
|
} KSAC3_BIT_STREAM_MODE;
|
||
|
typedef KSAC3_BIT_STREAM_MODE *PKSAC3_BIT_STREAM_MODE;
|
||
|
|
||
|
/* Kernel streaming AC3 dialogue level */
|
||
|
typedef struct {
|
||
|
ULONG DialogueLevel;
|
||
|
} KSAC3_DIALOGUE_LEVEL;
|
||
|
typedef KSAC3_DIALOGUE_LEVEL *PKSAC3_DIALOGUE_LEVEL;
|
||
|
|
||
|
/* Kernel streaming AC3 room type */
|
||
|
typedef struct {
|
||
|
BOOL fLargeRoom;
|
||
|
} KSAC3_ROOM_TYPE;
|
||
|
typedef KSAC3_ROOM_TYPE *PKSAC3_ROOM_TYPE;
|
||
|
|
||
|
/* Kernel streaming audio decoder output properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_AUDDECOUT_MODES = 0,
|
||
|
KSPROPERTY_AUDDECOUT_CUR_MODE = 1
|
||
|
} KSPROPERTY_AUDDECOUT;
|
||
|
|
||
|
/* Kernel streaming DVD subpicture properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DVDSUBPIC_PALETTE = 0,
|
||
|
KSPROPERTY_DVDSUBPIC_HLI = 1,
|
||
|
KSPROPERTY_DVDSUBPIC_COMPOSIT_ON = 2
|
||
|
} KSPROPERTY_DVDSUBPIC;
|
||
|
|
||
|
/* Kernel streaming DVD YCrCb color information */
|
||
|
typedef struct _KS_DVD_YCrCb {
|
||
|
UCHAR Reserved;
|
||
|
UCHAR Y;
|
||
|
UCHAR Cr;
|
||
|
UCHAR Cb;
|
||
|
} KS_DVD_YCrCb;
|
||
|
typedef KS_DVD_YCrCb *PKS_DVD_YCrCb;
|
||
|
|
||
|
/* Kernel streaming DVD YUV color information */
|
||
|
typedef struct _KS_DVD_YUV {
|
||
|
UCHAR Reserved;
|
||
|
UCHAR Y;
|
||
|
UCHAR V;
|
||
|
UCHAR U;
|
||
|
} KS_DVD_YUV;
|
||
|
typedef KS_DVD_YUV *PKS_DVD_YUV;
|
||
|
|
||
|
/* Kernel streaming palette property */
|
||
|
typedef struct _KSPROPERTY_SPPAL {
|
||
|
KS_DVD_YUV sppal[16];
|
||
|
} KSPROPERTY_SPPAL;
|
||
|
typedef KSPROPERTY_SPPAL *PKSPROPERTY_SPPAL;
|
||
|
|
||
|
/* Kernel streaming color contrast */
|
||
|
typedef struct _KS_COLCON {
|
||
|
UCHAR emph1col : 4;
|
||
|
UCHAR emph2col : 4;
|
||
|
UCHAR backcol : 4;
|
||
|
UCHAR patcol : 4;
|
||
|
UCHAR emph1con : 4;
|
||
|
UCHAR emph2con : 4;
|
||
|
UCHAR backcon : 4;
|
||
|
UCHAR patcon : 4;
|
||
|
} KS_COLCON;
|
||
|
typedef KS_COLCON *PKS_COLCON;
|
||
|
|
||
|
/* Kernel streaming HLI property */
|
||
|
typedef struct _KSPROPERTY_SPHLI {
|
||
|
USHORT HLISS;
|
||
|
USHORT Reserved;
|
||
|
ULONG StartPTM;
|
||
|
ULONG EndPTM;
|
||
|
USHORT StartX;
|
||
|
USHORT StartY;
|
||
|
USHORT StopX;
|
||
|
USHORT StopY;
|
||
|
KS_COLCON ColCon;
|
||
|
} KSPROPERTY_SPHLI;
|
||
|
typedef KSPROPERTY_SPHLI *PKSPROPERTY_SPHLI;
|
||
|
|
||
|
/* Kernel streaming copy protection properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DVDCOPY_CHLG_KEY = 1,
|
||
|
KSPROPERTY_DVDCOPY_DVD_KEY1 = 2,
|
||
|
KSPROPERTY_DVDCOPY_DEC_KEY2 = 3,
|
||
|
KSPROPERTY_DVDCOPY_TITLE_KEY = 4,
|
||
|
KSPROPERTY_COPY_MACROVISION = 5,
|
||
|
KSPROPERTY_DVDCOPY_REGION = 6,
|
||
|
KSPROPERTY_DVDCOPY_SET_COPY_STATE = 7,
|
||
|
KSPROPERTY_DVDCOPY_DISC_KEY = 0x80
|
||
|
} KSPROPERTY_COPYPROT;
|
||
|
|
||
|
/* Kernel streaming challenge key property */
|
||
|
typedef struct _KS_DVDCOPY_CHLGKEY {
|
||
|
BYTE ChlgKey[10];
|
||
|
BYTE Reserved[2];
|
||
|
} KS_DVDCOPY_CHLGKEY;
|
||
|
typedef KS_DVDCOPY_CHLGKEY *PKS_DVDCOPY_CHLGKEY;
|
||
|
|
||
|
/* Kernel streaming bus key property */
|
||
|
typedef struct _KS_DVDCOPY_BUSKEY {
|
||
|
BYTE BusKey[5];
|
||
|
BYTE Reserved[1];
|
||
|
} KS_DVDCOPY_BUSKEY;
|
||
|
typedef KS_DVDCOPY_BUSKEY *PKS_DVDCOPY_BUSKEY;
|
||
|
|
||
|
/* Kernel streaming disc key property */
|
||
|
typedef struct _KS_DVDCOPY_DISCKEY {
|
||
|
BYTE DiscKey[2048];
|
||
|
} KS_DVDCOPY_DISCKEY;
|
||
|
typedef KS_DVDCOPY_DISCKEY *PKS_DVDCOPY_DISCKEY;
|
||
|
|
||
|
/* Kernel streaming region property */
|
||
|
typedef struct _KS_DVDCOPY_REGION {
|
||
|
UCHAR Reserved;
|
||
|
UCHAR RegionData;
|
||
|
UCHAR Reserved2[2];
|
||
|
} KS_DVDCOPY_REGION;
|
||
|
typedef KS_DVDCOPY_REGION *PKS_DVDCOPY_REGION;
|
||
|
|
||
|
/* Kernel streaming title key property */
|
||
|
typedef struct _KS_DVDCOPY_TITLEKEY {
|
||
|
ULONG KeyFlags;
|
||
|
ULONG ReservedNT[2];
|
||
|
UCHAR TitleKey[6];
|
||
|
UCHAR Reserved[2];
|
||
|
} KS_DVDCOPY_TITLEKEY;
|
||
|
typedef KS_DVDCOPY_TITLEKEY *PKS_DVDCOPY_TITLEKEY;
|
||
|
|
||
|
/* Kernel streaming MACROVISION property */
|
||
|
typedef struct _KS_COPY_MACROVISION {
|
||
|
ULONG MACROVISIONLevel;
|
||
|
} KS_COPY_MACROVISION;
|
||
|
typedef KS_COPY_MACROVISION *PKS_COPY_MACROVISION;
|
||
|
|
||
|
/* Kernel streaming set copy state property */
|
||
|
typedef struct _KS_DVDCOPY_SET_COPY_STATE {
|
||
|
ULONG DVDCopyState;
|
||
|
} KS_DVDCOPY_SET_COPY_STATE;
|
||
|
typedef KS_DVDCOPY_SET_COPY_STATE *PKS_DVDCOPY_SET_COPY_STATE;
|
||
|
|
||
|
/* Kernel streaming DVD copy states */
|
||
|
typedef enum {
|
||
|
KS_DVDCOPYSTATE_INITIALIZE = 0,
|
||
|
KS_DVDCOPYSTATE_INITIALIZE_TITLE = 1,
|
||
|
KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED = 2,
|
||
|
KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED = 3,
|
||
|
KS_DVDCOPYSTATE_DONE = 4
|
||
|
} KS_DVDCOPYSTATE;
|
||
|
|
||
|
/* Kernel streaming copy MACROVISION level */
|
||
|
typedef enum {
|
||
|
KS_MACROVISION_DISABLED = 0,
|
||
|
KS_MACROVISION_LEVEL1 = 1,
|
||
|
KS_MACROVISION_LEVEL2 = 2,
|
||
|
KS_MACROVISION_LEVEL3 = 3
|
||
|
} KS_COPY_MACROVISION_LEVEL;
|
||
|
typedef KS_COPY_MACROVISION_LEVEL *PKS_COPY_MACROVISION_LEVEL;
|
||
|
|
||
|
/* Kernel streaming RGB quadruple */
|
||
|
typedef struct tagKS_RGBQUAD {
|
||
|
BYTE rgbBlue;
|
||
|
BYTE rgbGreen;
|
||
|
BYTE rgbRed;
|
||
|
BYTE rgbReserved;
|
||
|
} KS_RGBQUAD;
|
||
|
typedef KS_RGBQUAD *PKS_RGBQUAD;
|
||
|
#define KS_SIZE_EGA_PALETTE (KS_iEGA_COLORS * sizeof( KS_RGBQUAD ))
|
||
|
#define KS_SIZE_PALETTE (KS_iPALETTE_COLORS * sizeof( KS_RGBQUAD))
|
||
|
|
||
|
/* Kernel streaming bitmap information header */
|
||
|
typedef struct tagKS_BITMAPINFOHEADER {
|
||
|
DWORD bSize;
|
||
|
LONG biWidth;
|
||
|
LONG biHeight;
|
||
|
WORD biPlanes;
|
||
|
WORD biBitCount;
|
||
|
DWORD biCompression;
|
||
|
DWORD biSizeImage;
|
||
|
LONG biXPelsPerMeter;
|
||
|
LONG biYPelsPerMeter;
|
||
|
DWORD biClrUsed;
|
||
|
DWORD biClrImportant;
|
||
|
} KS_BITMAPINFOHEADER;
|
||
|
typedef KS_BITMAPINFOHEADER *PKS_BITMAPINFOHEADER;
|
||
|
|
||
|
/* Kernel streaming true color information */
|
||
|
typedef struct tag_KS_TRUECOLORINFO {
|
||
|
DWORD dwBitMasks[KS_iMASK_COLORS];
|
||
|
KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS];
|
||
|
} KS_TRUECOLORINFO;
|
||
|
typedef KS_TRUECOLORINFO *PKS_TRUECOLORINFO;
|
||
|
|
||
|
/* Kernel streaming DIB size macros */
|
||
|
#define KS_WIDTHBYTES( x ) ((DWORD)(((x) + 31) & ~31) / 8)
|
||
|
#define KS_DIBWIDTHBYTES( x ) \
|
||
|
KS_WIDTHBYTES( (DWORD)(x).biWidth * (DWORD)(x).biBitCount )
|
||
|
#define KS__DIBSIZE( x ) (KS_DIBWIDTHBYTES( x ) * (DWORD)(x).biHeight)
|
||
|
#define KS_DIBSIZE( x ) \
|
||
|
((x).biHeight < 0 ? (-1) * KS__DIBSIZE( x ) : KS__DIBSIZE( x ))
|
||
|
|
||
|
/* Kernel streaming video information header */
|
||
|
typedef struct tagKS_VIDEOINFOHEADER {
|
||
|
RECT rcSource;
|
||
|
RECT rcTarget;
|
||
|
DWORD dwBitRate;
|
||
|
DWORD dwBitErrorRate;
|
||
|
REFERENCE_TIME AvgTimePerFrame;
|
||
|
KS_BITMAPINFOHEADER bmiHeader;
|
||
|
} KS_VIDEOINFOHEADER;
|
||
|
typedef KS_VIDEOINFOHEADER *PKS_VIDEOINFOHEADER;
|
||
|
|
||
|
/* Kernel streaming video information */
|
||
|
typedef struct tagKS_VIDEOINFO {
|
||
|
RECT rcSource;
|
||
|
RECT rcTarget;
|
||
|
DWORD dwBitRate;
|
||
|
DWORD dwBitErrorRate;
|
||
|
REFERENCE_TIME AvgTimePerFrame;
|
||
|
KS_BITMAPINFOHEADER bmiHeader;
|
||
|
union {
|
||
|
KS_RGBQUAD bmiColors[KS_iPALETTE_COLORS];
|
||
|
DWORD dwBitMasks[KS_iMASK_COLORS];
|
||
|
KS_TRUECOLORINFO TrueColorInfo;
|
||
|
};
|
||
|
} KS_VIDEOINFO;
|
||
|
typedef KS_VIDEOINFO *PKS_VIDEOINFO;
|
||
|
|
||
|
/* Macros to manipulat video information */
|
||
|
#define KS_SIZE_MASKS (KS_iMASK_COLORS * sizeof( DWORD ))
|
||
|
#define KS_SIZE_PREHEADER ((DWORD)&((KS_VIDEOINFOHEADER *)0)->bmiHeader)
|
||
|
#define KS_SIZE_VIDEOHEADER( x ) ((x)->bmiHeader.biSize + KS_SIZE_PREHEADER)
|
||
|
|
||
|
/* Kernel streaming VBI information header */
|
||
|
typedef struct tagKS_VBIINFOHEADER {
|
||
|
ULONG StartLine;
|
||
|
ULONG EndLine;
|
||
|
ULONG SamplingFrequency;
|
||
|
ULONG MinLineStartTime;
|
||
|
ULONG MaxLineStartTime;
|
||
|
ULONG ActualLineStartTime;
|
||
|
ULONG ActualLineEndTime;
|
||
|
ULONG VideoStandard;
|
||
|
ULONG SamplesPerLine;
|
||
|
ULONG StrideInBytes;
|
||
|
ULONG BufferSize;
|
||
|
} KS_VBIINFOHEADER;
|
||
|
typedef KS_VBIINFOHEADER *PKS_VBIINFOHEADER;
|
||
|
|
||
|
/* Kernel streaming analog video information */
|
||
|
typedef struct tagKS_AnalogVideoInfo {
|
||
|
RECT rcSource;
|
||
|
RECT rcTarget;
|
||
|
DWORD dwActiveWidth;
|
||
|
DWORD dwActiveHeight;
|
||
|
REFERENCE_TIME AvgTimePerFrame;
|
||
|
} KS_ANALOGVIDEOINFO;
|
||
|
typedef KS_ANALOGVIDEOINFO *PKS_ANALOGVIDEOINFO;
|
||
|
|
||
|
/* Kernel streaming TV tuner change information */
|
||
|
typedef struct tagKS_TVTUNER_CHANGE_INFO {
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwCountryCode;
|
||
|
DWORD dwAnalogVideoStandard;
|
||
|
DWORD dwChannel;
|
||
|
} KS_TVTUNER_CHANGE_INFO;
|
||
|
typedef KS_TVTUNER_CHANGE_INFO *PKS_TVTUNER_CHANGE_INFO;
|
||
|
|
||
|
/* Kernel streaming MPEG-2 levels */
|
||
|
typedef enum {
|
||
|
KS_MPEG2Level_Low = 0,
|
||
|
KS_MPEG2Level_Main = 1,
|
||
|
KS_MPEG2Level_High1440 = 2,
|
||
|
KS_MPEG2Level_High = 3
|
||
|
} KS_MPEG2Level;
|
||
|
|
||
|
/* Kernel streaming MPEG-2 profiles */
|
||
|
typedef enum {
|
||
|
KS_MPEG2Profile_Simple = 0,
|
||
|
KS_MPEG2Profile_Main = 1,
|
||
|
KS_MPEG2Profile_SNRScalable = 2,
|
||
|
KS_MPEG2Profile_SpatiallyScalable = 3,
|
||
|
KS_MPEG2Profile_High = 4
|
||
|
} KS_MPEG2Profile;
|
||
|
|
||
|
/* Kernel streaming video information header (version 2) */
|
||
|
typedef struct tagKS_VIDEOINFOHEADER2 {
|
||
|
RECT rcSource;
|
||
|
RECT rcTarget;
|
||
|
DWORD dwBitRate;
|
||
|
DWORD dwBitErrorRate;
|
||
|
REFERENCE_TIME AvgTimePerFrame;
|
||
|
DWORD dwInterlaceFlags;
|
||
|
DWORD dwCopyProtectFlags;
|
||
|
DWORD dwPictAspectRatioX;
|
||
|
DWORD dwPictAspectRatioY;
|
||
|
union {
|
||
|
DWORD dwControlFlags;
|
||
|
DWORD dwReserved1;
|
||
|
};
|
||
|
DWORD dwReserved2;
|
||
|
KS_BITMAPINFOHEADER bmiHeader;
|
||
|
} KS_VIDEOINFOHEADER2;
|
||
|
typedef KS_VIDEOINFOHEADER2 *PKS_VIDEOINFOHEADER2;
|
||
|
|
||
|
/* Kernel streaming MPEG-1 video information */
|
||
|
typedef struct tagKS_MPEG1VIDEOINFO {
|
||
|
KS_VIDEOINFOHEADER hdr;
|
||
|
DWORD dwStartTimeCode;
|
||
|
DWORD cbSequenceHeader;
|
||
|
BYTE bSequenceHeader[1];
|
||
|
} KS_MPEG1VIDEOINFO;
|
||
|
typedef KS_MPEG1VIDEOINFO *PKS_MPEG1VIDEOINFO;
|
||
|
#define KS_MAX_SIZE_MPEG1_SEQUENCE_INFO 140
|
||
|
#define KS_SIZE_MPEG1VIDEOINFO( x ) \
|
||
|
((DWORD)&((KS_MPEG1VIDEOINFO *)0)->bSequenceHeader[0] + (x)->cbSequenceHeader)
|
||
|
#define KS_MPEG1_SEQUENCE_INFO( x ) \
|
||
|
((const BYTE *)(x)->bSequenceHeader)
|
||
|
|
||
|
/* Kernel streaming MPEG video information (version 2) */
|
||
|
typedef struct tagKS_MPEGVIDEOINFO2 {
|
||
|
KS_VIDEOINFOHEADER2 hdr;
|
||
|
DWORD dwStartTimeCode;
|
||
|
DWORD cbSequenceHeader;
|
||
|
DWORD dwProfile;
|
||
|
DWORD dwLevel;
|
||
|
DWORD dwFlags;
|
||
|
DWORD bSequenceHeader[1];
|
||
|
} KS_MPEGVIDEOINFO2;
|
||
|
typedef KS_MPEGVIDEOINFO2 *PKS_MPEGVIDEOINFO2;
|
||
|
#define KS_SIZE_MPEGVIDEOINFO2( x ) \
|
||
|
((DWORD)&((KS_MPEGVIDEOINFO2 *)0)->bSequenceHeader[0]) + (x)->cbSequenceHeader)
|
||
|
#define KS_MPEG1_SEQUENCE_INFO( x ) \
|
||
|
((const BYTE *)(x)->bSequenceHeader)
|
||
|
|
||
|
/* Kernel streaming MPEG audio information */
|
||
|
typedef struct tagKS_MPEGAUDIOINFO {
|
||
|
DWORD dwFlags;
|
||
|
DWORD dwReserved1;
|
||
|
DWORD dwReserved2;
|
||
|
DWORD dwReserved3;
|
||
|
} KS_MPEGAUDIOINFO;
|
||
|
typedef KS_MPEGAUDIOINFO *PKS_MPEGAUDIOINFO;
|
||
|
|
||
|
/* Kernel streaming video information header data format */
|
||
|
typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KS_VIDEOINFOHEADER VideoInfoHeader;
|
||
|
} KS_DATAFORMAT_VIDEOINFOHEADER;
|
||
|
typedef KS_DATAFORMAT_VIDEOINFOHEADER *PKS_DATAFORMAT_VIDEOINFOHEADER;
|
||
|
|
||
|
/* Kernel streaming video information header data format (version 2) */
|
||
|
typedef struct tagKS_DATAFORMAT_VIDEOINFOHEADER2 {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KS_VIDEOINFOHEADER2 VideoInfoHeader2;
|
||
|
} KS_DATAFORMAT_VIDEOINFOHEADER2;
|
||
|
typedef KS_DATAFORMAT_VIDEOINFOHEADER2 *PKS_DATAFORMAT_VIDEOINFOHEADER2;
|
||
|
|
||
|
/* Kernel streaming MPEG video information data format (version 2) */
|
||
|
typedef struct tagKS_DATAFORMAT_MPEGVIDEOINFO2 {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KS_MPEGVIDEOINFO2 MpegVideoInfoHeader2;
|
||
|
} KS_DATAFORMAT_MPEGVIDEOINFO2;
|
||
|
typedef KS_DATAFORMAT_MPEGVIDEOINFO2 *PKS_DATAFORMAT_MPEGVIDEOINFO2;
|
||
|
|
||
|
/* Kernel streaming video information palette data format */
|
||
|
typedef struct tagKS_DATAFORMAT_VIDEOINFO_PALETTE {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KS_VIDEOINFO VideoInfo;
|
||
|
} KS_DATAFORMAT_VIDEOINFO_PALETTE;
|
||
|
typedef KS_DATAFORMAT_VIDEOINFO_PALETTE *PKS_DATAFORMAT_VIDEOINFO_PALETTE;
|
||
|
|
||
|
/* Kernel streaming VBI information header data format */
|
||
|
typedef struct tagKS_DATAFORMAT_VBIINFOHEADER {
|
||
|
KSDATAFORMAT DataFormat;
|
||
|
KS_VBIINFOHEADER VBIInfoHeader;
|
||
|
} KS_DATAFORMAT_VBIINFOHEADER;
|
||
|
typedef KS_DATAFORMAT_VBIINFOHEADER *PKS_DATAFORMAT_VBIINFOHEADER;
|
||
|
|
||
|
/* Kernel streaming video stream configuration capabilities */
|
||
|
typedef struct _KS_VIDEO_STREAM_CONFIG_CAPS {
|
||
|
GUID guid;
|
||
|
ULONG VideoStandard;
|
||
|
SIZE InputSize;
|
||
|
SIZE MinCroppingSize;
|
||
|
SIZE MaxCroppingSize;
|
||
|
int CropGranularityX;
|
||
|
int CropGranularityY;
|
||
|
int CropAlignX;
|
||
|
int CropAlignY;
|
||
|
SIZE MinOutputSize;
|
||
|
SIZE MaxOutputSize;
|
||
|
int OutputGranularityX;
|
||
|
int OutputGranularityY;
|
||
|
int StretchTapsX;
|
||
|
int StretchTapsY;
|
||
|
int ShrinkTapsX;
|
||
|
int ShrinkTapsY;
|
||
|
LONGLONG MinFrameInterval;
|
||
|
LONGLONG MaxFrameInterval;
|
||
|
LONG MinBitsPerSecond;
|
||
|
LONG MaxBitsPerSecond;
|
||
|
} KS_VIDEO_STREAM_CONFIG_CAPS;
|
||
|
typedef KS_VIDEO_STREAM_CONFIG_CAPS *PKS_VIDEO_STREAM_CONFIG_CAPS;
|
||
|
|
||
|
/* Kernel streaming video data range */
|
||
|
typedef struct tagKS_DATARANGE_VIDEO {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_VIDEOINFOHEADER VideoInfoHeader;
|
||
|
} KS_DATARANGE_VIDEO;
|
||
|
typedef KS_DATARANGE_VIDEO *PKS_DATARANGE_VIDEO;
|
||
|
|
||
|
/* Kernel streaming video data range (version 2) */
|
||
|
typedef struct tagKS_DATARANGE_VIDEO2 {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_VIDEOINFOHEADER2 VideoInfoHeader;
|
||
|
} KS_DATARANGE_VIDEO2;
|
||
|
typedef KS_DATARANGE_VIDEO2 *PKS_DATARANGE_VIDEO2;
|
||
|
|
||
|
/* Kernel streaming MPEG-1 video data range */
|
||
|
typedef struct tagKS_DATARANGE_MPEG1_VIDEO {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_MPEG1VIDEOINFO VideoInfoHeader;
|
||
|
} KS_DATARANGE_MPEG1_VIDEO;
|
||
|
typedef KS_DATARANGE_MPEG1_VIDEO *PKS_DATARANGE_MPEG1_VIDEO;
|
||
|
|
||
|
/* Kernel streaming MPEG-2 video data range */
|
||
|
typedef struct tagKS_DATARANGE_MPEG2_VIDEO {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_MPEGVIDEOINFO2 VideoInfoHeader;
|
||
|
} KS_DATARANGE_MPEG2_VIDEO;
|
||
|
typedef KS_DATARANGE_MPEG2_VIDEO *PKS_DATARANGE_MPEG2_VIDEO;
|
||
|
|
||
|
/* Kernel streaming video palette data range */
|
||
|
typedef struct tagKS_DATARANGE_VIDEO_PALETTE {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_VIDEOINFO VideoInfo;
|
||
|
} KS_DATARANGE_VIDEO_PALETTE;
|
||
|
typedef KS_DATARANGE_VIDEO_PALETTE *PKS_DATARANGE_VIDEO_PALETTE;
|
||
|
|
||
|
/* Kernel streaming VBI video data range */
|
||
|
typedef struct tagKS_DATARANGE_VIDEO_VBI {
|
||
|
KSDATARANGE DataRange;
|
||
|
BOOL bFixedSizeSamples;
|
||
|
BOOL bTemporalCompression;
|
||
|
DWORD StreamDescriptionFlags;
|
||
|
DWORD MemoryAllocationFlags;
|
||
|
KS_VIDEO_STREAM_CONFIG_CAPS ConfigCaps;
|
||
|
KS_VBIINFOHEADER VBIInfoHeader;
|
||
|
} KS_DATARANGE_VIDEO_VBI;
|
||
|
typedef KS_DATARANGE_VIDEO_VBI *PKS_DATARANGE_VIDEO_VBI;
|
||
|
|
||
|
/* Kernel streaming analog video data range */
|
||
|
typedef struct tagKS_DATARANGE_ANALOGVIDEO {
|
||
|
KSDATARANGE DataRange;
|
||
|
KS_ANALOGVIDEOINFO AnalogVideoInfo;
|
||
|
} KS_DATARANGE_ANALOGVIDEO;
|
||
|
typedef KS_DATARANGE_ANALOGVIDEO *PKS_DATARANGE_ANALOGVIDEO;
|
||
|
|
||
|
/* Kernel streaming VBI capture properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 1,
|
||
|
} KSPROPERTY_VBICAP;
|
||
|
#endif
|
||
|
|
||
|
/* VBI capture protection properties */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _VBICAP_PROPERTIES_PROTECTION_S {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
ULONG Status;
|
||
|
} VBICAP_PROPERTIES_PROTECTION_S;
|
||
|
typedef VBICAP_PROPERTIES_PROTECTION_S *PVBICAP_PROPERTIES_PROTECTION_S;
|
||
|
#endif
|
||
|
|
||
|
/* NABTSFEC buffer */
|
||
|
typedef struct _NABTSFEC_BUFFER {
|
||
|
ULONG dataSize;
|
||
|
USHORT groupID;
|
||
|
USHORT Reserved;
|
||
|
UCHAR data[NABTS_LINES_PER_BUNDLE * NABTS_PAYLOAD_PER_LINE];
|
||
|
} NABTSFEC_BUFFER;
|
||
|
typedef NABTSFEC_BUFFER *PNABTSFEC_BUFFER;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 1,
|
||
|
KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY = 2,
|
||
|
KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY = 3,
|
||
|
KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY = 4,
|
||
|
KSPROPERTY_VBICODECFILTERING_STATISTICS = 5
|
||
|
} KSPROPERTY_VBICODECFILTERING;
|
||
|
|
||
|
/* VBI codec filtering scan lines */
|
||
|
typedef struct _VBICODECFILTERING_SCANLINES {
|
||
|
DWORD DwordBitArray[32];
|
||
|
} VBICODECFILTERING_SCANLINES;
|
||
|
typedef VBICODECFILTERING_SCANLINES *PVBICODECFILTERING_SCANLINES;
|
||
|
|
||
|
/* VBI codec filtering NABTS substreams */
|
||
|
typedef struct _VBICODECFILTERING_NABTS_SUBSTREAMS {
|
||
|
DWORD SubstreamMask[128];
|
||
|
} VBICODECFILTERING_NABTS_SUBSTREAMS;
|
||
|
typedef VBICODECFILTERING_NABTS_SUBSTREAMS *PVBICODECFILTERING_NABTS_SUBSTREAMS;
|
||
|
|
||
|
/* VBI codec filtering closed caption substreams */
|
||
|
typedef struct _VBICODECFILTERING_CC_SUBSTREAMS {
|
||
|
DWORD SubstreamMask;
|
||
|
} VBICODECFILTERING_CC_SUBSTREAMS;
|
||
|
typedef VBICODECFILTERING_CC_SUBSTREAMS *PVBICODECFILTERING_CC_SUBSTREAMS;
|
||
|
|
||
|
/* Closed caption byte pair */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _CC_BYTE_PAIR {
|
||
|
BYTE Decoded[2];
|
||
|
USHORT Reserved;
|
||
|
} CC_BYTE_PAIR;
|
||
|
typedef CC_BYTE_PAIR *PCC_BYTE_PAIR;
|
||
|
#endif
|
||
|
|
||
|
/* Closed caption hardware field */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _CC_HW_FIELD {
|
||
|
VBICODECFILTERING_SCANLINES ScanlinesRequested;
|
||
|
ULONG fieldFlags;
|
||
|
LONGLONG PictureNumber;
|
||
|
CC_BYTE_PAIR Lines[CC_MAX_HW_DECODE_LINES];
|
||
|
} CC_HW_FIELD;
|
||
|
typedef CC_HW_FIELD *PCC_HW_FIELD;
|
||
|
#endif
|
||
|
|
||
|
/* NABTS buffer line */
|
||
|
#include <pshpack1.h>
|
||
|
typedef struct _NABTS_BUFFER_LINE {
|
||
|
BYTE Confidence;
|
||
|
BYTE Bytes[NABTS_BYTES_PER_LINE];
|
||
|
} NABTS_BUFFER_LINE;
|
||
|
typedef NABTS_BUFFER_LINE *PNABTS_BUFFER_LINE;
|
||
|
#include <poppack.h>
|
||
|
|
||
|
/* NABTS buffer */
|
||
|
#include <pshpack1.h>
|
||
|
typedef struct _NABTS_BUFFER {
|
||
|
VBICODECFILTERING_SCANLINES ScanlinesRequested;
|
||
|
LONGLONG PictureNumber;
|
||
|
NABTS_BUFFER_LINE NabtsLines[MAX_NABTS_VBI_LINES_PER_FIELD];
|
||
|
} NABTS_BUFFER;
|
||
|
typedef NABTS_BUFFER *PNABTS_BUFFER;
|
||
|
#include <poppack.h>
|
||
|
|
||
|
/* WST buffer line */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _WST_BUFFER_LINE {
|
||
|
BYTE Confidence;
|
||
|
BYTE Bytes[WST_BYTES_PER_LINE];
|
||
|
} WST_BUFFER_LINE;
|
||
|
typedef WST_BUFFER_LINE *PWST_BUFFER_LINE;
|
||
|
#endif
|
||
|
|
||
|
/* WST buffer */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _WST_BUFFER {
|
||
|
VBICODECFILTERING_SCANLINES ScanlinesRequested;
|
||
|
WST_BUFFER_LINE WstLines[MAX_WST_VBI_LINES_PER_FIELD];
|
||
|
} WST_BUFFER;
|
||
|
typedef WST_BUFFER *PWST_BUFFER;
|
||
|
#endif
|
||
|
|
||
|
/* VBI codec filtering common statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_COMMON {
|
||
|
DWORD InputSRBsProcessed;
|
||
|
DWORD OutputSRBsProcessed;
|
||
|
DWORD SRBsIgnored;
|
||
|
DWORD InputSRBsMissing;
|
||
|
DWORD OutputSRBsMissing;
|
||
|
DWORD OutputFailures;
|
||
|
DWORD InternalErrors;
|
||
|
DWORD ExternalErrors;
|
||
|
DWORD InputDiscontinuities;
|
||
|
DWORD DSPFailures;
|
||
|
DWORD TvTunerChanges;
|
||
|
DWORD VBIHeaderChanges;
|
||
|
DWORD LineConfidenceAvg;
|
||
|
DWORD BytesOutput;
|
||
|
} VBICODECFILTERING_STATISTICS_COMMON;
|
||
|
typedef VBICODECFILTERING_STATISTICS_COMMON *PVBICODECFILTERING_STATISTICS_COMMON;
|
||
|
|
||
|
/* VBI codec filtering common pin statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_COMMON_PIN {
|
||
|
DWORD SRBsProcessed;
|
||
|
DWORD SRBsIgnored;
|
||
|
DWORD SRBsMissing;
|
||
|
DWORD InternalErrors;
|
||
|
DWORD ExternalErrors;
|
||
|
DWORD Discontinuities;
|
||
|
DWORD LineConfidenceAvg;
|
||
|
DWORD BytesOutput;
|
||
|
} VBICODECFILTERING_STATISTICS_COMMON_PIN;
|
||
|
typedef VBICODECFILTERING_STATISTICS_COMMON_PIN *PVBICODECFILTERING_STATISTICS_COMMON_PIN;
|
||
|
|
||
|
/* VBI codec filtering NABTS statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_NABTS {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON Common;
|
||
|
DWORD FECBundleBadLines;
|
||
|
DWORD FECQueueOverflows;
|
||
|
DWORD FECCorrectedLines;
|
||
|
DWORD FECUncorrectableLines;
|
||
|
DWORD BundlesProcessed;
|
||
|
DWORD BundlesSent2IP;
|
||
|
DWORD FilteredLines;
|
||
|
} VBICODECFILTERING_STATISTICS_NABTS;
|
||
|
typedef VBICODECFILTERING_STATISTICS_NABTS *PVBICODECFILTERING_STATISTICS_NABTS;
|
||
|
|
||
|
/* VBI codec filtering NABTS pin statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_NABTS_PIN {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
|
||
|
} VBICODECFILTERING_STATISTICS_NABTS_PIN;
|
||
|
typedef VBICODECFILTERING_STATISTICS_NABTS_PIN *PVBICODECFILTERING_STATISTICS_NABTS_PIN;
|
||
|
|
||
|
/* VBI codec filtering closed caption statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_CC {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON Common;
|
||
|
} VBICODECFILTERING_STATISTICS_CC;
|
||
|
typedef VBICODECFILTERING_STATISTICS_CC *PVBICODECFILTERING_STATISTICS_CC;
|
||
|
|
||
|
/* VBI codec filtering closed caption pin statistics */
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_CC_PIN {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
|
||
|
} VBICODECFILTERING_STATISTICS_CC_PIN;
|
||
|
typedef VBICODECFILTERING_STATISTICS_CC_PIN *PVBICODECFILTERING_STATISTICS_CC_PIN;
|
||
|
|
||
|
/* VBI codec filtering Teletext statistics */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON Common;
|
||
|
} VBICODECFILTERING_STATISTICS_TELETEXT;
|
||
|
typedef VBICODECFILTERING_STATISTICS_TELETEXT *PVBICODECFILTERING_STATISTICS_TELETEXT;
|
||
|
#endif
|
||
|
|
||
|
/* VBI codec filtering Teletext pin statistics */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct _VBICODECFILTERING_STATISTICS_TELETEXT_PIN {
|
||
|
VBICODECFILTERING_STATISTICS_COMMON_PIN Common;
|
||
|
} VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
|
||
|
typedef VBICODECFILTERING_STATISTICS_TELETEXT_PIN *PVBICODECFILTERING_STATISTICS_TELETEXT_PIN;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering scanlines property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_SCANLINES Scanlines;
|
||
|
} KSPROPERTY_VBICODECFILTERING_SCANLINES_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_SCANLINES_S *PKSPROPERTY_VBICODECFILTERING_SCANLINES_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering NABTS substreams property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_NABTS_SUBSTREAMS Substreams;
|
||
|
} KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S *PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering closed caption substreams property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_CC_SUBSTREAMS Substreams;
|
||
|
} KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S *PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering common statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_COMMON Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering common pin statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_COMMON_PIN Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering NABTS statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_NABTS Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering NABTS pin statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_NABTS_PIN Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering closed caption statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_CC Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
|
||
|
|
||
|
/* Kernel streaming VBI codec filtering closed caption pin statistics property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
VBICODECFILTERING_STATISTICS_CC_PIN Statistics;
|
||
|
} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
|
||
|
typedef KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S *PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
|
||
|
|
||
|
/* Kernel streaming capture memory allocation flags */
|
||
|
typedef enum {
|
||
|
KS_CAPTURE_ALLOC_INVALID = 0x00000000,
|
||
|
KS_CAPTURE_ALLOC_SYSTEM = 0x00000001,
|
||
|
KS_CAPTURE_ALLOC_VRAM = 0x00000002,
|
||
|
KS_CAPTURE_ALLOC_SYSTEM_AGP = 0x00000004,
|
||
|
KS_CAPTURE_ALLOC_VRAM_MAPPED = 0x00000008,
|
||
|
} CAPTURE_MEMORY_ALLOCATION_FLAGS;
|
||
|
typedef CAPTURE_MEMORY_ALLOCATION_FLAGS *PCAPTURE_MEMORY_ALLOCATION_FLAGS;
|
||
|
|
||
|
/* Kernel streaming video memory transport properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DISPLAY_ADAPTER_GUID = 1,
|
||
|
KSPROPERTY_PREFERRED_CAPTURE_SURFACE = 2,
|
||
|
KSPROPERTY_CURRENT_CAPTURE_SURFACE = 3,
|
||
|
KSPROPERTY_MAP_CAPTURE_HANDLE_TO_RAM_ADDRESS = 4
|
||
|
} KSPROPERTY_VIDMEM_TRANSPORT;
|
||
|
|
||
|
/* VRAM surface information */
|
||
|
typedef struct {
|
||
|
UINT_PTR hSurface;
|
||
|
LONGLONG VramPhysicalAddress;
|
||
|
DWORD cbCaptured;
|
||
|
DWORD dwWidth;
|
||
|
DWORD dwHeight;
|
||
|
DWORD dwLinearSize;
|
||
|
LONG lPitch;
|
||
|
ULONGLONG ullReserved[16];
|
||
|
} VRAM_SURFACE_INFO;
|
||
|
typedef VRAM_SURFACE_INFO *PVRAM_SURFACE_INFO;
|
||
|
|
||
|
/* VRAM surface information property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
PVRAM_SURFACE_INFO pVramSurfaceInfo;
|
||
|
} VRAM_SURFACE_INFO_PROPERTY_S;
|
||
|
typedef VRAM_SURFACE_INFO_PROPERTY_S *PVRAM_SURFACE_INFO_PROPERTY_S;
|
||
|
|
||
|
/* Kernel streaming property MPEG4 media type attributes */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_MPEG4_MEDIATYPE_SD_BOX = 1
|
||
|
} KSPROPERTY_MPEG4_MEDIATYPE_ATTRIBUTES;
|
||
|
|
||
|
/* Kernel streaming dynamic format change events */
|
||
|
enum {
|
||
|
KSEVENT_DYNAMIC_FORMAT_CHANGE = 0
|
||
|
};
|
||
|
|
||
|
/* Kernel streaming frame information */
|
||
|
typedef struct tagKS_FRAME_INFO {
|
||
|
ULONG ExtendedHeaderSize;
|
||
|
DWORD dwFrameFlags;
|
||
|
LONGLONG PictureNumber;
|
||
|
LONGLONG DropCount;
|
||
|
HANDLE hDirectDraw;
|
||
|
HANDLE hSurfaceHandle;
|
||
|
RECT DirectDrawRect;
|
||
|
union {
|
||
|
LONG lSurfacePitch;
|
||
|
DWORD Reserved1;
|
||
|
};
|
||
|
DWORD Reserved2;
|
||
|
DWORD Reserved3;
|
||
|
DWORD Reserved4;
|
||
|
} KS_FRAME_INFO;
|
||
|
typedef KS_FRAME_INFO *PKS_FRAME_INFO;
|
||
|
|
||
|
/* Kernel streaming VBI frame information */
|
||
|
typedef struct tagKS_VBI_FRAME_INFO {
|
||
|
ULONG ExtendedHeaderSize;
|
||
|
DWORD dwFrameFlags;
|
||
|
LONGLONG PictureNumber;
|
||
|
LONGLONG DropCount;
|
||
|
DWORD dwSamplingFrequency;
|
||
|
KS_TVTUNER_CHANGE_INFO TvTunerChangeInfo;
|
||
|
KS_VBIINFOHEADER VBIInfoHeader;
|
||
|
} KS_VBI_FRAME_INFO;
|
||
|
typedef KS_VBI_FRAME_INFO *PKS_VBI_FRAME_INFO;
|
||
|
|
||
|
/* Kernel streaming analog video standards */
|
||
|
typedef enum {
|
||
|
KS_AnalogVideo_None = 0x00000000,
|
||
|
KS_AnalogVideo_NTSC_M = 0x00000001,
|
||
|
KS_AnalogVideo_NTSC_M_J = 0x00000002,
|
||
|
KS_AnalogVideo_NTSC_433 = 0x00000004,
|
||
|
KS_AnalogVideo_PAL_B = 0x00000010,
|
||
|
KS_AnalogVideo_PAL_D = 0x00000020,
|
||
|
KS_AnalogVideo_PAL_G = 0x00000040,
|
||
|
KS_AnalogVideo_PAL_H = 0x00000080,
|
||
|
KS_AnalogVideo_PAL_I = 0x00000100,
|
||
|
KS_AnalogVideo_PAL_M = 0x00000200,
|
||
|
KS_AnalogVideo_PAL_N = 0x00000400,
|
||
|
KS_AnalogVideo_PAL_60 = 0x00000800,
|
||
|
KS_AnalogVideo_SECAM_B = 0x00001000,
|
||
|
KS_AnalogVideo_SECAM_D = 0x00002000,
|
||
|
KS_AnalogVideo_SECAM_G = 0x00004000,
|
||
|
KS_AnalogVideo_SECAM_H = 0x00008000,
|
||
|
KS_AnalogVideo_SECAM_K = 0x00010000,
|
||
|
KS_AnalogVideo_SECAM_K1 = 0x00020000,
|
||
|
KS_AnalogVideo_SECAM_L = 0x00040000,
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KS_AnalogVideo_SECAM_L1 = 0x00080000,
|
||
|
KS_AnalogVideo_PAL_N_COMBO = 0x00100000
|
||
|
#else
|
||
|
KS_AnalogVideo_SECAM_L1 = 0x00080000
|
||
|
#endif
|
||
|
} KS_AnalogVideoStandard;
|
||
|
|
||
|
/* Kernel streaming allocator control properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT = 0,
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE = 1,
|
||
|
KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS = 2,
|
||
|
KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE = 3
|
||
|
#else
|
||
|
KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE = 1
|
||
|
#endif
|
||
|
} KSPROPERTY_ALLOCATOR_CONTROL;
|
||
|
|
||
|
/* Kernel streaming allocator control surface size property */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct {
|
||
|
ULONG CX;
|
||
|
ULONG CY;
|
||
|
} KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S;
|
||
|
typedef KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S *PKSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming allocator control capture capabilities property */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct {
|
||
|
ULONG InterleavedCapSupported;
|
||
|
} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S;
|
||
|
typedef KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming allocator control capture interleave property */
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
typedef struct {
|
||
|
ULONG InterleavedCapPossible;
|
||
|
} KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S;
|
||
|
typedef KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S *PKSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS = 0,
|
||
|
KSPROPERTY_VIDEOPROCAMP_CONTRAST = 1,
|
||
|
KSPROPERTY_VIDEOPROCAMP_HUE = 2,
|
||
|
KSPROPERTY_VIDEOPROCAMP_SATURATION = 3,
|
||
|
KSPROPERTY_VIDEOPROCAMP_SHARPNESS = 4,
|
||
|
KSPROPERTY_VIDEOPROCAMP_GAMMA = 5,
|
||
|
KSPROPERTY_VIDEOPROCAMP_COLORENABLE = 6,
|
||
|
KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE = 7,
|
||
|
#if (NTDDI_VERSION >= 0x05010000)
|
||
|
KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION = 8,
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
KSPROPERTY_VIDEOPROCAMP_GAIN = 9,
|
||
|
KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER = 10,
|
||
|
KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT = 11,
|
||
|
KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT = 12,
|
||
|
KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY = 13
|
||
|
#else
|
||
|
KSPROPERTY_VIDEOPROCAMP_GAIN = 9
|
||
|
#endif
|
||
|
#else
|
||
|
KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION = 8
|
||
|
#endif
|
||
|
} KSPROPERTY_VIDCAP_VIDEOPROCAMP;
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_VIDEOPROCAMP_S;
|
||
|
typedef KSPROPERTY_VIDEOPROCAMP_S *PKSPROPERTY_VIDEOPROCAMP_S;
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier node property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_VIDEOPROCAMP_NODE_S;
|
||
|
typedef KSPROPERTY_VIDEOPROCAMP_NODE_S *PKSPROPERTY_VIDEOPROCAMP_NODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier property (version 2) */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value1;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
LONG Value2;
|
||
|
} KSPROPERTY_VIDEOPROCAMP_S2;
|
||
|
typedef KSPROPERTY_VIDEOPROCAMP_S2 *PKSPROPERTY_VIDEOPROCAMP_S2;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video procedure amplifier node property (version 2) */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
LONG Value1;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
LONG Value2;
|
||
|
} KSPROPERTY_VIDEOPROCAMP_NODE_S2;
|
||
|
typedef KSPROPERTY_VIDEOPROCAMP_NODE_S2 *PKSPROPERTY_VIDEOPROCAMP_NODE_S2;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video capture selector properties */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_SELECTOR_SOURCE_NODE_ID = 0,
|
||
|
KSPROPERTY_SELECTOR_NUM_SOURCES = 1
|
||
|
} KSPROPERTY_VIDCAP_SELECTOR;
|
||
|
typedef KSPROPERTY_VIDCAP_SELECTOR *PKSPROPERTY_VIDCAP_SELECTOR;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming selector property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_SELECTOR_S;
|
||
|
typedef KSPROPERTY_SELECTOR_S *PKSPROPERTY_SELECTOR_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming selector node property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_SELECTOR_NODE_S;
|
||
|
typedef KSPROPERTY_SELECTOR_NODE_S *PKSPROPERTY_SELECTOR_NODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming tuner properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_TUNER_CAPS = 0,
|
||
|
KSPROPERTY_TUNER_MODE_CAPS = 1,
|
||
|
KSPROPERTY_TUNER_MODE = 2,
|
||
|
KSPROPERTY_TUNER_STANDARD = 3,
|
||
|
KSPROPERTY_TUNER_FREQUENCY = 4,
|
||
|
KSPROPERTY_TUNER_INPUT = 5,
|
||
|
KSPROPERTY_TUNER_STATUS = 6,
|
||
|
KSPROPERTY_TUNER_IF_MEDIUM = 7,
|
||
|
KSPROPERTY_TUNER_SCAN_CAPS = 8,
|
||
|
KSPROPERTY_TUNER_SCAN_STATUS = 9,
|
||
|
KSPROPERTY_TUNER_STANDARD_MODE = 10,
|
||
|
KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS = 11
|
||
|
} KSPROPERTY_TUNER;
|
||
|
|
||
|
/* Kernel streaming tuner modes */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_TUNER_MODE_TV = 0x00000001,
|
||
|
KSPROPERTY_TUNER_MODE_FM_RADIO = 0x00000002,
|
||
|
KSPROPERTY_TUNER_MODE_AM_RADIO = 0x00000004,
|
||
|
KSPROPERTY_TUNER_MODE_DSS = 0x00000008,
|
||
|
KSPROPERTY_TUNER_MODE_ATSC = 0x00000010
|
||
|
} KSPROPERTY_TUNER_MODES;
|
||
|
|
||
|
/* Kernel streaming tuner tuning flags */
|
||
|
typedef enum {
|
||
|
KS_TUNER_TUNING_EXACT = 1,
|
||
|
KS_TUNER_TUNING_FINE = 2,
|
||
|
KS_TUNER_TUNING_COARSE = 3
|
||
|
} KS_TUNER_TUNING_FLAGS;
|
||
|
|
||
|
/* Kernel streaming tuner strategies */
|
||
|
typedef enum {
|
||
|
KS_TUNER_STRATEGY_PLL = 0x00000001,
|
||
|
KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0x00000002,
|
||
|
KS_TUNER_STRATEGY_DRIVER_TUNES = 0x00000004
|
||
|
} KS_TUNER_STRATEGY;
|
||
|
|
||
|
/* Kernel streaming tuner capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG ModesSupported;
|
||
|
KSPIN_MEDIUM VideoMedium;
|
||
|
KSPIN_MEDIUM TVAudioMedium;
|
||
|
KSPIN_MEDIUM RadioAudioMedium;
|
||
|
} KSPROPERTY_TUNER_CAPS_S;
|
||
|
typedef KSPROPERTY_TUNER_CAPS_S *PKSPROPERTY_TUNER_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming tuner interface medium property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
KSPIN_MEDIUM IFMedium;
|
||
|
} KSPROPERTY_TUNER_IF_MEDIUM_S;
|
||
|
typedef KSPROPERTY_TUNER_IF_MEDIUM_S *PKSPROPERTY_TUNER_IF_MEDIUM_S;
|
||
|
|
||
|
/* Kernel streaming tuner mode capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Mode;
|
||
|
ULONG StandardsSupported;
|
||
|
ULONG MinFrequency;
|
||
|
ULONG MaxFrequency;
|
||
|
ULONG TuningGranularity;
|
||
|
ULONG NumberOfInputs;
|
||
|
ULONG SettlingTime;
|
||
|
ULONG Strategy;
|
||
|
} KSPROPERTY_TUNER_MODE_CAPS_S;
|
||
|
typedef KSPROPERTY_TUNER_MODE_CAPS_S *PKSPROPERTY_TUNER_MODE_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming tuner mode property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Mode;
|
||
|
} KSPROPERTY_TUNER_MODE_S;
|
||
|
typedef KSPROPERTY_TUNER_MODE_S *PKSPROPERTY_TUNER_MODE_S;
|
||
|
|
||
|
/* Kernel streaming tuner frequency property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Frequency;
|
||
|
ULONG LastFrequency;
|
||
|
ULONG TuningFlags;
|
||
|
ULONG VideoSubChannel;
|
||
|
ULONG AudioSubChannel;
|
||
|
ULONG Channel;
|
||
|
ULONG Country;
|
||
|
} KSPROPERTY_TUNER_FREQUENCY_S;
|
||
|
typedef KSPROPERTY_TUNER_FREQUENCY_S *PKSPROPERTY_TUNER_FREQUENCY_S;
|
||
|
|
||
|
/* Kernel streaming tuner standard property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Standard;
|
||
|
} KSPROPERTY_TUNER_STANDARD_S;
|
||
|
typedef KSPROPERTY_TUNER_STANDARD_S *PKSPROPERTY_TUNER_STANDARD_S;
|
||
|
|
||
|
/* Kernel streaming tuner standard mode property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
BOOL AutoDetect;
|
||
|
} KSPROPERTY_TUNER_STANDARD_MODE_S;
|
||
|
typedef KSPROPERTY_TUNER_STANDARD_MODE_S *PKSPROPERTY_TUNER_STANDARD_MODE_S;
|
||
|
|
||
|
/* Kernel streaming tuner input property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG InputIndex;
|
||
|
} KSPROPERTY_TUNER_INPUT_S;
|
||
|
typedef KSPROPERTY_TUNER_INPUT_S *PKSPROPERTY_TUNER_INPUT_S;
|
||
|
|
||
|
/* Kernel streaming tuner status property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG CurrentFrequency;
|
||
|
ULONG PLLOffset;
|
||
|
ULONG SignalStrength;
|
||
|
ULONG Busy;
|
||
|
} KSPROPERTY_TUNER_STATUS_S;
|
||
|
typedef KSPROPERTY_TUNER_STATUS_S *PKSPROPERTY_TUNER_STATUS_S;
|
||
|
|
||
|
/* Tuner decoder lock types */
|
||
|
typedef enum _TunerDecoderLockType {
|
||
|
Tuner_LockType_None = 0x00000000,
|
||
|
Tuner_LockType_Within_Scan_Sensing_Range = 0x00000001,
|
||
|
Tuner_LockType_Locked = 0x00000002
|
||
|
} TunerLockType;
|
||
|
|
||
|
/* Tuner analog capabilities */
|
||
|
typedef struct {
|
||
|
ULONG Mode;
|
||
|
ULONG StandardsSupported;
|
||
|
ULONG MinFrequency;
|
||
|
ULONG MaxFrequency;
|
||
|
ULONG TuningGranularity;
|
||
|
ULONG SettlingTime;
|
||
|
ULONG ScanSensingRange;
|
||
|
ULONG FineTuneSensingRange;
|
||
|
} TUNER_ANALOG_CAPS_S;
|
||
|
typedef TUNER_ANALOG_CAPS_S *PTUNER_ANALOG_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming tuner events */
|
||
|
typedef enum {
|
||
|
KSEVENT_TUNER_CHANGED = 0,
|
||
|
KSEVENT_TUNER_INITIATE_SCAN = 1
|
||
|
} KSEVENT_TUNER;
|
||
|
|
||
|
/* Kernel streaming tuner scan capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
BOOL fSupportsHardwareAssistedScanning;
|
||
|
ULONG SupportedBroadcastStandards;
|
||
|
PVOID GUIDBucket;
|
||
|
ULONG lengthofBucket;
|
||
|
} KSPROPERTY_TUNER_SCAN_CAPS_S;
|
||
|
typedef KSPROPERTY_TUNER_SCAN_CAPS_S *PKSPROPERTY_TUNER_SCAN_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming network type scan capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
GUID NetworkType;
|
||
|
ULONG BufferSize;
|
||
|
PVOID NetworkTunerCapabilities;
|
||
|
} KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS_S;
|
||
|
typedef KSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS_S *PKSPROPERTY_TUNER_NETWORKTYPE_SCAN_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming tuner scan status property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
TunerLockType LockStatus;
|
||
|
ULONG CurrentFrequency;
|
||
|
} KSPROPERTY_TUNER_SCAN_STATUS_S;
|
||
|
typedef KSPROPERTY_TUNER_SCAN_STATUS_S *PKSPROPERTY_TUNER_SCAN_STATUS_S;
|
||
|
|
||
|
/* Kernel streaming tuner initiate scan event */
|
||
|
typedef struct {
|
||
|
KSEVENTDATA EventData;
|
||
|
ULONG StartFrequency;
|
||
|
ULONG EndFrequency;
|
||
|
} KSEVENT_TUNER_INITIATE_SCAN_S;
|
||
|
typedef KSEVENT_TUNER_INITIATE_SCAN_S *PKSEVENT_TUNER_INITIATE_SCAN_S;
|
||
|
|
||
|
/* Kernel streaming video encoder properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VIDEOENCODER_CAPS = 0,
|
||
|
KSPROPERTY_VIDEOENCODER_STANDARD = 1,
|
||
|
KSPROPERTY_VIDEOENCODER_COPYPROTECTION = 2,
|
||
|
KSPROPERTY_VIDEOENCODER_CC_ENABLE = 3
|
||
|
} KSPROPERTY_VIDCAP_VIDEOENCODER;
|
||
|
|
||
|
/* Kernel streaming video encoder property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_VIDEOENCODER_S;
|
||
|
typedef KSPROPERTY_VIDEOENCODER_S *PKSPROPERTY_VIDEOENCODER_S;
|
||
|
|
||
|
/* Kernel streaming video decoder properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VIDEODECODER_CAPS = 0,
|
||
|
KSPROPERTY_VIDEODECODER_STANDARD = 1,
|
||
|
KSPROPERTY_VIDEODECODER_STATUS = 2,
|
||
|
KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE = 3,
|
||
|
KSPROPERTY_VIDEODECODER_VCR_TIMING = 4,
|
||
|
KSPROPERTY_VIDEODECODER_STATUS2 = 5
|
||
|
} KSPROPERTY_VIDCAP_VIDEODECODER;
|
||
|
|
||
|
/* Kernel streaming video decoder flags */
|
||
|
typedef enum {
|
||
|
KS_VIDEOENCODER_FLAGS_CAN_DISABLE_OUTPUT = 0x00000001,
|
||
|
KS_VIDEOENCODER_FLAGS_CAN_USE_VCR_LOCKING = 0x00000002,
|
||
|
KS_VIDEOENCODER_FLAGS_CAN_INDICATE_LOCKED = 0x00000004
|
||
|
} KS_VIDEOENCODER_FLAGS;
|
||
|
|
||
|
/* Kernel streaming video decoder capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StandardsSupported;
|
||
|
ULONG Capabilities;
|
||
|
ULONG SettlingTime;
|
||
|
ULONG HSyncPerVSync;
|
||
|
} KSPROPERTY_VIDEODECODER_CAPS_S;
|
||
|
typedef KSPROPERTY_VIDEODECODER_CAPS_S *PKSPROPERTY_VIDEODECODER_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming video decoder status property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG NumberOfLines;
|
||
|
ULONG SignalLocked;
|
||
|
} KSPROPERTY_VIDEODECODER_STATUS_S;
|
||
|
typedef KSPROPERTY_VIDEODECODER_STATUS_S *PKSPROPERTY_VIDEODECODER_STATUS_S;
|
||
|
|
||
|
/* Kernel streaming video decoder status property (version 2) */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG NumberOfLines;
|
||
|
ULONG SignalLocked;
|
||
|
ULONG ChromaLock;
|
||
|
} KSPROPERTY_VIDEODECODER_STATUS2_S;
|
||
|
typedef KSPROPERTY_VIDEODECODER_STATUS2_S *PKSPROPERTY_VIDEODECODER_STATUS2_S;
|
||
|
|
||
|
/* Kernel streaming video decoder property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Value;
|
||
|
} KSPROPERTY_VIDEODECODER_S;
|
||
|
typedef KSPROPERTY_VIDEODECODER_S *PKSPROPERTY_VIDEODECODER_S;
|
||
|
|
||
|
/* Kernel streaming video decoder events */
|
||
|
typedef enum {
|
||
|
KSEVENT_VIDEODECODER_CHANGED = 0
|
||
|
} KSEVENT_VIDEODECODER;
|
||
|
|
||
|
/* Kernel streaming camera control properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_CAMERACONTROL_PAN = 0,
|
||
|
KSPROPERTY_CAMERACONTROL_TILT = 1,
|
||
|
KSPROPERTY_CAMERACONTROL_ROLL = 2,
|
||
|
KSPROPERTY_CAMERACONTROL_ZOOM = 3,
|
||
|
KSPROPERTY_CAMERACONTROL_EXPOSURE = 4,
|
||
|
KSPROPERTY_CAMERACONTROL_IRIS = 5,
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
KSPROPERTY_CAMERACONTROL_FOCUS = 6,
|
||
|
KSPROPERTY_CAMERACONTROL_SCANMODE = 7,
|
||
|
KSPROPERTY_CAMERACONTROL_PRIVACY = 8,
|
||
|
KSPROPERTY_CAMERACONTROL_PANTILT = 9,
|
||
|
KSPROPERTY_CAMERACONTROL_PAN_RELATIVE = 10,
|
||
|
KSPROPERTY_CAMERACONTROL_TILT_RELATIVE = 11,
|
||
|
KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE = 12,
|
||
|
KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE = 13,
|
||
|
KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE = 14,
|
||
|
KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE = 15,
|
||
|
KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE = 16,
|
||
|
KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE = 17,
|
||
|
KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH = 18,
|
||
|
KSPROPERTY_CAMERACONTROL_AUTO_EXPOSURE_PRIORITY = 19
|
||
|
#else
|
||
|
KSPROPERTY_CAMERACONTROL_FOCUS = 6
|
||
|
#endif
|
||
|
} KSPROPERTY_VIDCAP_CAMERACONTROL;
|
||
|
|
||
|
/* Kernel streaming camera control property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_CAMERACONTROL_S;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_S *PKSPROPERTY_CAMERACONTROL_S;
|
||
|
|
||
|
/* Kernel streaming camera control node property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
} KSPROPERTY_CAMERACONTROL_NODE_S;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_NODE_S *PKSPROPERTY_CAMERACONTROL_NODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming camera control property (version 2) */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG Value1;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
LONG Value2;
|
||
|
} KSPROPERTY_CAMERACONTROL_S2;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_S2 *PKSPROPERTY_CAMERACONTROL_S2;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming camera control node property (version 2) */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
LONG Value1;
|
||
|
ULONG Flags;
|
||
|
ULONG Capabilities;
|
||
|
LONG Value2;
|
||
|
} KSPROPERTY_CAMERACONTROL_NODE_S2;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_NODE_S2 *PKSPROPERTY_CAMERACONTROL_NODE_S2;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming camera control focal length property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONG lOcularFocalLength;
|
||
|
LONG lObjectiveFocalLengthMin;
|
||
|
LONG lObjectiveFoaclLengthMax;
|
||
|
} KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S *PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming camera control node focal length property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSNODEPROPERTY NodeProperty;
|
||
|
LONG lOcularFocalLength;
|
||
|
LONG lObjectiveFocalLengthMin;
|
||
|
LONG lObjectiveFocalLengthMax;
|
||
|
} KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S;
|
||
|
typedef KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S *PKSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended device properties */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_EXTDEVICE_ID = 0,
|
||
|
KSPROPERTY_EXTDEVICE_VERSION = 1,
|
||
|
KSPROPERTY_EXTDEVICE_POWER_STATE = 2,
|
||
|
KSPROPERTY_EXTDEVICE_PORT = 3,
|
||
|
KSPROPERTY_EXTDEVICE_CAPABILITIES = 4
|
||
|
} KSPROPERTY_EXTDEVICE;
|
||
|
#endif
|
||
|
|
||
|
/* Device capabilities */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct tagDEVCAPS {
|
||
|
LONG CanRecord;
|
||
|
LONG CanRecordStrobe;
|
||
|
LONG HasAudio;
|
||
|
LONG HasVideo;
|
||
|
LONG UsesFiles;
|
||
|
LONG CanSave;
|
||
|
LONG DeviceType;
|
||
|
LONG TCRead;
|
||
|
LONG TCWrite;
|
||
|
LONG CTLRead;
|
||
|
LONG IndexRead;
|
||
|
LONG Preroll;
|
||
|
LONG Postroll;
|
||
|
LONG SyncAcc;
|
||
|
LONG NormRate;
|
||
|
LONG CanPreview;
|
||
|
LONG CanMonitorSrc;
|
||
|
LONG CanTest;
|
||
|
LONG VideoIn;
|
||
|
LONG AudioIn;
|
||
|
LONG Calibrate;
|
||
|
LONG SeekType;
|
||
|
LONG SimulatedHardware;
|
||
|
} DEVCAPS;
|
||
|
typedef DEVCAPS *PDEVCAPS;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended device property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
union {
|
||
|
DEVCAPS Capabilities;
|
||
|
ULONG DevPort;
|
||
|
ULONG PowerState;
|
||
|
WCHAR pawchString[MAX_PATH];
|
||
|
DWORD NodeUniqueID[2];
|
||
|
} u;
|
||
|
} KSPROPERTY_EXTDEVICE_S;
|
||
|
typedef KSPROPERTY_EXTDEVICE_S *PKSPROPERTY_EXTDEVICE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended transport properties */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_EXTXPORT_CAPABILITIES = 0,
|
||
|
KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE = 1,
|
||
|
KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE = 2,
|
||
|
KSPROPERTY_EXTXPORT_LOAD_MEDIUM = 3,
|
||
|
KSPROPERTY_EXTXPORT_MEDIUM_INFO = 4,
|
||
|
KSPROPERTY_EXTXPORT_STATE = 5,
|
||
|
KSPROPERTY_EXTXPORT_STATE_NOTIFY = 6,
|
||
|
KSPROPERTY_EXTXPORT_TIMECODE_SEARCH = 7,
|
||
|
KSPROPERTY_EXTXPORT_ATN_SEARCH = 8,
|
||
|
KSPROPERTY_EXTXPORT_RTC_SEARCH = 9,
|
||
|
KSPROPERTY_RAW_AVC_CMD = 10
|
||
|
} KSPROPERTY_EXTXPORT;
|
||
|
#endif
|
||
|
|
||
|
/* Transport status */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct tagTRANSPORTSTATUS {
|
||
|
LONG Mode;
|
||
|
LONG LastError;
|
||
|
LONG RecordInhibit;
|
||
|
LONG ServoLock;
|
||
|
LONG MediaPresent;
|
||
|
LONG MediaLength;
|
||
|
LONG MediaSize;
|
||
|
LONG MediaTrackCount;
|
||
|
LONG MediaTrackLength;
|
||
|
LONG MediaTrackSide;
|
||
|
LONG MediaType;
|
||
|
LONG LinkMode;
|
||
|
LONG NotifyOn;
|
||
|
} TRANSPORTSTATUS;
|
||
|
typedef TRANSPORTSTATUS *PTRANSPORTSTATUS;
|
||
|
#endif
|
||
|
|
||
|
/* Transport basic parameters */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct tagTRANSPORTBASICPARMS {
|
||
|
LONG TimeFormat;
|
||
|
LONG TimeReference;
|
||
|
LONG Superimpose;
|
||
|
LONG EndStopAction;
|
||
|
LONG RecordFormat;
|
||
|
LONG StepFrames;
|
||
|
LONG SetpField;
|
||
|
LONG Preroll;
|
||
|
LONG RecPreroll;
|
||
|
LONG Postroll;
|
||
|
LONG EditDelay;
|
||
|
LONG PlayTCDelay;
|
||
|
LONG RecTCDelay;
|
||
|
LONG EditField;
|
||
|
LONG FrameServo;
|
||
|
LONG ColorFrameServo;
|
||
|
LONG ServoRef;
|
||
|
LONG WarnGenlock;
|
||
|
LONG SetTracking;
|
||
|
TCHAR VolumeName[40];
|
||
|
LONG Ballistic[20];
|
||
|
LONG Speed;
|
||
|
LONG CounterFormat;
|
||
|
LONG TunerChannel;
|
||
|
LONG TunerNumber;
|
||
|
LONG TimerEvent;
|
||
|
LONG TimerStartDay;
|
||
|
LONG TimerStartTime;
|
||
|
LONG TimerStopDay;
|
||
|
LONG TimerStopTime;
|
||
|
} TRANSPORTBASICPARMS;
|
||
|
typedef TRANSPORTBASICPARMS *PTRANSPORTBASICPARMS;
|
||
|
#endif
|
||
|
|
||
|
/* Transport video parameters */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct tagTRANSPORTVIDEOPARMS {
|
||
|
LONG OutputMode;
|
||
|
LONG Input;
|
||
|
} TRANSPORTVIDEOPARMS;
|
||
|
typedef TRANSPORTVIDEOPARMS *PTRANSPORTVIDEOPARMS;
|
||
|
#endif
|
||
|
|
||
|
/* Transport audio parameters */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct tagTRANSPORTAUDIOPARMS {
|
||
|
LONG EnableOutput;
|
||
|
LONG EnableRecord;
|
||
|
LONG EnableSelSync;
|
||
|
LONG Input;
|
||
|
LONG MonitorSource;
|
||
|
} TRANSPORTAUDIOPARMS;
|
||
|
typedef TRANSPORTAUDIOPARMS *PTRANSPORTAUDIOPARMS;
|
||
|
#endif
|
||
|
|
||
|
/* Medium information */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
BOOL MediaPresent;
|
||
|
ULONG MediaType;
|
||
|
BOOL RecordInhibit;
|
||
|
} MEDIUM_INFO;
|
||
|
typedef MEDIUM_INFO *PMEDIUM_INFO;
|
||
|
#endif
|
||
|
|
||
|
/* Transport state */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
ULONG Mode;
|
||
|
ULONG State;
|
||
|
} TRANSPORT_STATE;
|
||
|
typedef TRANSPORT_STATE *PTRANSPORT_STATE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended transport property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
union {
|
||
|
ULONG Capabilities;
|
||
|
ULONG SignalMode;
|
||
|
ULONG LoadMedium;
|
||
|
MEDIUM_INFO MediumInfo;
|
||
|
TRANSPORT_STATE XPrtState;
|
||
|
struct {
|
||
|
BYTE frame;
|
||
|
BYTE second;
|
||
|
BYTE minute;
|
||
|
BYTE hour;
|
||
|
} Timecode;
|
||
|
DWORD dwTimecode;
|
||
|
DWORD dwAbsTrackNumber;
|
||
|
struct {
|
||
|
ULONG PayloadSize;
|
||
|
BYTE Payload[512];
|
||
|
} RawAVC;
|
||
|
} u;
|
||
|
} KSPROPERTY_EXTXPORT_S;
|
||
|
typedef KSPROPERTY_EXTXPORT_S *PKSPROPERTY_EXTXPORT_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended transport node property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
union {
|
||
|
ULONG Capabilities;
|
||
|
ULONG SignalMode;
|
||
|
ULONG LoadMedium;
|
||
|
MEDIUM_INFO MediumInfo;
|
||
|
TRANSPORT_STATE XPrtState;
|
||
|
struct {
|
||
|
BYTE frame;
|
||
|
BYTE second;
|
||
|
BYTE minute;
|
||
|
BYTE hour;
|
||
|
} Timecode;
|
||
|
DWORD dwTimecode;
|
||
|
DWORD dwAbsTrackNumber;
|
||
|
struct {
|
||
|
ULONG PayloadSize;
|
||
|
BYTE Payload[512];
|
||
|
} RawAVC;
|
||
|
} u;
|
||
|
} KSPROPERTY_EXTXPORT_NODE_S;
|
||
|
typedef KSPROPERTY_EXTXPORT_NODE_S *PKSPROPERTY_EXTXPORT_NODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming timecode properties */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_TIMECODE_READER = 0,
|
||
|
KSPROPERTY_ATN_READER = 1,
|
||
|
KSPROPERTY_RTC_READER = 2
|
||
|
} KSPROPERTY_TIMECODE;
|
||
|
#endif
|
||
|
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
#ifndef TIMECODE_DEFINED
|
||
|
#define TIMECODE_DEFINED
|
||
|
|
||
|
/* Time code */
|
||
|
typedef union _timecode {
|
||
|
struct {
|
||
|
WORD wFrameRate;
|
||
|
WORD wFrameFract;
|
||
|
DWORD dwFrames;
|
||
|
};
|
||
|
DWORDLONG qw;
|
||
|
} TIMECODE;
|
||
|
typedef TIMECODE *PTIMECODE;
|
||
|
|
||
|
/* Time code sample */
|
||
|
typedef struct tagTIMECODE_SAMPLE {
|
||
|
LONGLONG qwTick;
|
||
|
TIMECODE timecode;
|
||
|
DWORD dwUser;
|
||
|
DWORD dwFlags;
|
||
|
} TIMECODE_SAMPLE;
|
||
|
typedef TIMECODE_SAMPLE *PTIMECODE_SAMPLE;
|
||
|
|
||
|
#endif /* TIMECODE_DEFINED */
|
||
|
#endif /* (NTDDI_VERSION >= 0x05010200) */
|
||
|
|
||
|
/* Kernel streaming timecode property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
TIMECODE_SAMPLE TimecodeSamp;
|
||
|
} KSPROPERTY_TIMECODE_S;
|
||
|
typedef KSPROPERTY_TIMECODE_S *PKSPROPERTY_TIMECODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming timecode node property */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSP_NODE NodeProperty;
|
||
|
TIMECODE_SAMPLE TimecodeSamp;
|
||
|
} KSPROPERTY_TIMECODE_NODE_S;
|
||
|
typedef KSPROPERTY_TIMECODE_NODE_S *PKSPROPERTY_TIMECODE_NODE_S;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming extended device command events */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY = 0,
|
||
|
KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY = 1,
|
||
|
KSEVENT_EXTDEV_COMMAND_BUSRESET = 2,
|
||
|
KSEVENT_EXTDEV_TIMECODE_UPDATE = 3,
|
||
|
KSEVENT_EXTDEV_OPERATION_MODE_UPDATE = 4,
|
||
|
KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE = 5,
|
||
|
KSEVENT_EXTDEV_NOTIFY_REMOVAL = 6,
|
||
|
KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE = 7
|
||
|
} KSEVENT_DEVCMD;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming crossbar properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_CROSSBAR_CAPS = 0,
|
||
|
KSPROPERTY_CROSSBAR_PININFO = 1,
|
||
|
KSPROPERTY_CROSSBAR_CAN_ROUTE = 2,
|
||
|
KSPROPERTY_CROSSBAR_ROUTE = 3,
|
||
|
KSPROPERTY_CROSSBAR_INPUT_ACTIVE = 4
|
||
|
} KSPROPERTY_VIDCAP_CROSSBAR;
|
||
|
|
||
|
/* Kernel streaming crossbar capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG NumberOfInputs;
|
||
|
ULONG NumberOfOutputs;
|
||
|
} KSPROPERTY_CROSSBAR_CAPS_S;
|
||
|
typedef KSPROPERTY_CROSSBAR_CAPS_S *PKSPROPERTY_CROSSBAR_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming crossbar pin information property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
KSPIN_DATAFLOW Direction;
|
||
|
ULONG Index;
|
||
|
ULONG PinType;
|
||
|
ULONG RelatedPinType;
|
||
|
KSPIN_MEDIUM Medium;
|
||
|
} KSPROPERTY_CROSSBAR_PININFO_S;
|
||
|
typedef KSPROPERTY_CROSSBAR_PININFO_S *PKSPROPERTY_CROSSBAR_PININFO_S;
|
||
|
|
||
|
/* Kernel streaming crossbar route property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG IndexInputPin;
|
||
|
ULONG IndexOutputPin;
|
||
|
ULONG CanRoute;
|
||
|
} KSPROPERTY_CROSSBAR_ROUTE_S;
|
||
|
typedef KSPROPERTY_CROSSBAR_ROUTE_S *PKSPROPERTY_CROSSBAR_ROUTE_S;
|
||
|
|
||
|
/* Kernel streaming crossbar active property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG IndexInputPin;
|
||
|
ULONG Active;
|
||
|
} KSPROPERTY_CROSSBAR_ACTIVE_S;
|
||
|
typedef KSPROPERTY_CROSSBAR_ACTIVE_S *PKSPROPERTY_CROSSBAR_ACTIVE_S;
|
||
|
|
||
|
/* Kernel streaming crossbar events */
|
||
|
typedef enum {
|
||
|
KSEVENT_CROSSBAR_CHANGED = 0
|
||
|
} KSEVENT_CROSSBAR;
|
||
|
|
||
|
/* Kernel streaming physical connector types */
|
||
|
typedef enum {
|
||
|
KS_PhysConn_Video_Tuner = 1,
|
||
|
KS_PhysConn_Video_Composite = 2,
|
||
|
KS_PhysConn_Video_SVideo = 3,
|
||
|
KS_PhysConn_Video_RGB = 4,
|
||
|
KS_PhysConn_Video_YRYBY = 5,
|
||
|
KS_PhysConn_Video_SerialDigital = 6,
|
||
|
KS_PhysConn_Video_ParallelDigital = 7,
|
||
|
KS_PhysConn_Video_SCSI = 8,
|
||
|
KS_PhysConn_Video_AUX = 9,
|
||
|
KS_PhysConn_Video_1394 = 10,
|
||
|
KS_PhysConn_Video_USB = 11,
|
||
|
KS_PhysConn_Video_VideoDecoder = 12,
|
||
|
KS_PhysConn_Video_VideoEncoder = 13,
|
||
|
KS_PhysConn_Video_SCART = 14,
|
||
|
KS_PhysConn_Audio_Tuner = 4096,
|
||
|
KS_PhysConn_Audio_Line = 4097,
|
||
|
KS_PhysConn_Audio_Mic = 4098,
|
||
|
KS_PhysConn_Audio_AESDigital = 4099,
|
||
|
KS_PhysConn_Audio_SPDIFDigital = 4100,
|
||
|
KS_PhysConn_Audio_SCSI = 4101,
|
||
|
KS_PhysConn_Audio_AUX = 4102,
|
||
|
KS_PhysConn_Audio_1394 = 4103,
|
||
|
KS_PhysConn_Audio_USB = 4104,
|
||
|
KS_PhysConn_Audio_AudioDecoder = 4105
|
||
|
} KS_PhysicalConnectorType;
|
||
|
|
||
|
/* Kernel streaming TV audio properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_TVAUDIO_CAPS = 0,
|
||
|
KSPROPERTY_TVAUDIO_MODE = 1,
|
||
|
KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES = 2
|
||
|
} KSPROPERTY_VIDCAP_TVAUDIO;
|
||
|
|
||
|
/* Kernel streaming TV audio capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Capabilities;
|
||
|
KSPIN_MEDIUM InputMedium;
|
||
|
KSPIN_MEDIUM OutputMedium;
|
||
|
} KSPROPERTY_TVAUDIO_CAPS_S;
|
||
|
typedef KSPROPERTY_TVAUDIO_CAPS_S *PKSPROPERTY_TVAUDIO_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming TV audio property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG Mode;
|
||
|
} KSPROPERTY_TVAUDIO_S;
|
||
|
typedef KSPROPERTY_TVAUDIO_S *PKSPROPERTY_TVAUDIO_S;
|
||
|
|
||
|
/* Kernel streaming TV audio events */
|
||
|
typedef enum {
|
||
|
KSEVENT_TVAUDIO_CHANGED = 0
|
||
|
} KSEVENT_TVAUDIO;
|
||
|
|
||
|
/* Kernel streaming video compression properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_GETINFO = 0,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE = 1,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME = 2,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_QUALITY = 3,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME = 4,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE = 5,
|
||
|
KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE = 6
|
||
|
} KSPROPERTY_VIDCAP_VIDEOCOMPRESSION;
|
||
|
|
||
|
/* Kernel streaming compression capabilities */
|
||
|
typedef enum {
|
||
|
KS_CompressionCaps_CanQuality = 0x00000001,
|
||
|
KS_CompressionCaps_CanCrunch = 0x00000002,
|
||
|
KS_CompressionCaps_CanKeyFrame = 0x00000004,
|
||
|
KS_CompressionCaps_CanBFrame = 0x00000008,
|
||
|
KS_CompressionCaps_CanWindow = 0x00000010
|
||
|
} KS_CompressionCaps;
|
||
|
|
||
|
/* Kernel streaming video streaming hints */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KS_StreamingHint_FrameInterval = 0x00000100,
|
||
|
KS_StreamingHint_KeyFrameRate = 0x00000200,
|
||
|
KS_StreamingHint_PFrameRate = 0x00000400,
|
||
|
KS_StreamingHint_CompQuality = 0x00000800,
|
||
|
KS_StreamingHint_CompWindowSize = 0x00001000
|
||
|
} KS_VideoStreamingHints;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming video compression get information property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
LONG DefaultKeyFrameRate;
|
||
|
LONG DefaultPFrameRate;
|
||
|
LONG DefaultQuality;
|
||
|
LONG NumberOfQualitySettings;
|
||
|
LONG Capabilities;
|
||
|
} KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S;
|
||
|
typedef KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S *PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S;
|
||
|
|
||
|
/* Kernel streaming video compression property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
LONG Value;
|
||
|
} KSPROPERTY_VIDEOCOMPRESSION_S;
|
||
|
typedef KSPROPERTY_VIDEOCOMPRESSION_S *PKSPROPERTY_VIDEOCOMPRESSION_S;
|
||
|
|
||
|
/* Kernel streaming video compression property (version 1) */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
LONG Value;
|
||
|
ULONG Flags;
|
||
|
} KSPROPERTY_VIDEOCOMPRESSION_S1;
|
||
|
typedef KSPROPERTY_VIDEOCOMPRESSION_S1 *PKSPROPERTY_VIDEOCOMPRESSION_S1;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming overlay update properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_OVERLAYUPDATE_INTERESTS = 0x00000000,
|
||
|
KSPROPERTY_OVERLAYUPDATE_CLIPLIST = 0x00000001,
|
||
|
KSPROPERTY_OVERLAYUPDATE_PALETTE = 0x00000002,
|
||
|
KSPROPERTY_OVERLAYUPDATE_COLORKEY = 0x00000004,
|
||
|
KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = 0x00000008,
|
||
|
KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = 0x00000010,
|
||
|
KSPROPERTY_OVERLAYUPDATE_COLORREF = 0x10000000
|
||
|
} KSPROPERTY_OVERLAYUPDATE;
|
||
|
|
||
|
/* Kernel streaming display change */
|
||
|
typedef struct {
|
||
|
ULONG PelsWidth;
|
||
|
ULONG PelsHeight;
|
||
|
ULONG BitsPerPel;
|
||
|
WCHAR DeviceID[1];
|
||
|
} KSDISPLAYCHANGE;
|
||
|
typedef KSDISPLAYCHANGE *PKSDISPLAYCHANGE;
|
||
|
|
||
|
/* Kernel streaming video control properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VIDEOCONTROL_CAPS = 0,
|
||
|
KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE = 1,
|
||
|
KSPROPERTY_VIDEOCONTROL_FRAME_RATES = 2,
|
||
|
KSPROPERTY_VIDEOCONTROL_MODE = 3
|
||
|
} KSPROPERTY_VIDCAP_VIDEOCONTROL;
|
||
|
|
||
|
/* Kernel streaming video control flags */
|
||
|
typedef enum {
|
||
|
KS_VideoControlFlag_FlipHorizontal = 0x00000001,
|
||
|
KS_VideoControlFlag_FlipVertical = 0x00000002,
|
||
|
KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = 0x00000010,
|
||
|
KS_Obsolete_VideoControlFlag_Trigger = 0x00000020,
|
||
|
KS_VideoControlFlag_ExternalTriggerEnable = 0x00000004,
|
||
|
KS_VideoControlFlag_Trigger = 0x00000008
|
||
|
} KS_VideoControlFlags;
|
||
|
|
||
|
/* Kernel streaming video control capabilities property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
ULONG VideoControlCaps;
|
||
|
} KSPROPERTY_VIDEOCONTROL_CAPS_S;
|
||
|
typedef KSPROPERTY_VIDEOCONTROL_CAPS_S *PKSPROPERTY_VIDEOCONTROL_CAPS_S;
|
||
|
|
||
|
/* Kernel streaming video control mode property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
LONG Mode;
|
||
|
} KSPROPERTY_VIDEOCONTROL_MODE_S;
|
||
|
typedef KSPROPERTY_VIDEOCONTROL_MODE_S *PKSPROPERTY_VIDEOCONTROL_MODE_S;
|
||
|
|
||
|
/* Kernel streaming video control actual frame rate property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
ULONG RangeIndex;
|
||
|
SIZE Dimensions;
|
||
|
LONGLONG CurrentActualFrameRate;
|
||
|
LONGLONG CurrentMaxAvailableFrameRate;
|
||
|
} KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S;
|
||
|
typedef KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S *PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S;
|
||
|
|
||
|
/* Kernel streaming video control frame rate property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
ULONG StreamIndex;
|
||
|
ULONG RangeIndex;
|
||
|
SIZE Dimensions;
|
||
|
} KSPROPERTY_VIDEOCONTROL_FRAME_RATE_S;
|
||
|
typedef KSPROPERTY_VIDEOCONTROL_FRAME_RATE_S *PKSPROPERTY_VIDEOCONTROL_FRAME_RATE_S;
|
||
|
|
||
|
/* Kernel streaming dropped frames properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_DROPPEDFRAMES_CURRENT = 0
|
||
|
} KSPROPERTY_VIDCAP_DROPPEDFRAMES;
|
||
|
|
||
|
/* Kernel streaming dropped frames current property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
LONGLONG PictureNumber;
|
||
|
LONGLONG DropCount;
|
||
|
ULONG AverageFrameSize;
|
||
|
} KSPROPERTY_DROPPEDFRAMES_CURRENT_S;
|
||
|
typedef KSPROPERTY_DROPPEDFRAMES_CURRENT_S *PKSPROPERTY_DROPPEDFRAMES_CURRENT_S;
|
||
|
|
||
|
/* Kernel streaming videoport configuration properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_VPCONFIG_NUMCONNECTINFO = 0,
|
||
|
KSPROPERTY_VPCONFIG_GETCONNECTINFO = 1,
|
||
|
KSPROPERTY_VPCONFIG_SETCONNECTINFO = 2,
|
||
|
KSPROPERTY_VPCONFIG_VPDATAINFO = 3,
|
||
|
KSPROPERTY_VPCONFIG_MAXPIXELRATE = 4,
|
||
|
KSPROPERTY_VPCONFIG_INFORMVPINPUT = 5,
|
||
|
KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT = 6,
|
||
|
KSPROPERTY_VPCONFIG_GETVIDEOFORMAT = 7,
|
||
|
KSPROPERTY_VPCONFIG_SETVIDEOFORMAT = 8,
|
||
|
KSPROPERTY_VPCONFIG_INVERTPOLARITY = 9,
|
||
|
KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY = 10,
|
||
|
KSPROPERTY_VPCONFIG_SCALEFACTOR = 11,
|
||
|
KSPROPERTY_VPCONFIG_DDRAWHANDLE = 12,
|
||
|
KSPROPERTY_VPCONFIG_VIDEOPORTID = 13,
|
||
|
KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE = 14,
|
||
|
KSPROPERTY_VPCONFIG_SURFACEPARAMS = 15
|
||
|
} KSPROPERTY_VPCONFIG;
|
||
|
|
||
|
/* Kernel streaming ActiveMovie videoport size */
|
||
|
#ifndef __IVPType__
|
||
|
typedef struct tagKS_AMVPSIZE {
|
||
|
DWORD dwWidth;
|
||
|
DWORD dwHeight;
|
||
|
} KS_AMVPSIZE;
|
||
|
typedef KS_AMVPSIZE *PKS_AMVPSIZE;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming videoport maximum pixel rate */
|
||
|
typedef struct {
|
||
|
#ifdef __IVPType__
|
||
|
AMVPSIZE Size;
|
||
|
#else
|
||
|
KS_AMVPSIZE Size;
|
||
|
#endif
|
||
|
DWORD MaxPixelsPerSecond;
|
||
|
DWORD Reserved;
|
||
|
} KSVPMAXPIXELRATE;
|
||
|
typedef KSVPMAXPIXELRATE *PKSVPMAXPIXELRATE;
|
||
|
|
||
|
/* Kernel streaming videoport size property */
|
||
|
typedef struct {
|
||
|
KSPROPERTY Property;
|
||
|
#ifdef __IVPType__
|
||
|
AMVPSIZE Size;
|
||
|
#else
|
||
|
KS_AMVPSIZE Size;
|
||
|
#endif
|
||
|
} KSVPSIZE_PROP;
|
||
|
typedef KSVPSIZE_PROP *PKSVPSIZE_PROP;
|
||
|
|
||
|
/* Kernel streaming videoport surface parameters */
|
||
|
typedef struct {
|
||
|
DWORD dwPitch;
|
||
|
DWORD dwXOrigin;
|
||
|
DWORD dwYOrigin;
|
||
|
} KSVPSURFACEPARAMS;
|
||
|
typedef KSVPSURFACEPARAMS *PKSVPSURFACEPARAMS;
|
||
|
|
||
|
/* Kernel streaming videoport notify events */
|
||
|
typedef enum {
|
||
|
KSEVENT_VPNOTIFY_FORMATCHANGE = 0
|
||
|
} KSEVENT_VPNOTIFY;
|
||
|
|
||
|
/* Kernel streaming video capture to STI events */
|
||
|
typedef enum {
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
KSEVENT_VIDCAPTOSTI_EXT_TRIGGER = 0,
|
||
|
KSEVENT_VIDCAP_AUTO_UPDATE = 1,
|
||
|
KSEVENT_VIDCAP_SEARCH = 2
|
||
|
#else
|
||
|
KSEVENT_VIDCAPTOSTI_EXT_TRIGGER = 0
|
||
|
#endif
|
||
|
} KSEVENT_VIDCAPTOSTI;
|
||
|
|
||
|
/* Kernel streaming extension unit properties */
|
||
|
#if ((NTDDI_VERSION >= 0x05010200) && (NTDDI_VERSION < 0x05020000)) || \
|
||
|
(NTDDI_VERSION >= 0x05020100)
|
||
|
typedef enum {
|
||
|
KSPROPERTY_EXTENSION_UNIT_INFO = 0,
|
||
|
KSPROPERTY_EXTENSION_UNIT_CONTROL = 1,
|
||
|
KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = 0xFFFF
|
||
|
} KSPROPERTY_EXTENSION_UNIT;
|
||
|
typedef KSPROPERTY_EXTENSION_UNIT *PKSPROPERTY_EXTENSION_UNIT;
|
||
|
#endif
|
||
|
|
||
|
/* Kernel streaming videoport VBI notify events */
|
||
|
typedef enum {
|
||
|
KSEVENT_VPVBINOTIFY_FORMATCHANGE = 0
|
||
|
} KSEVENT_VPVBINOTIFY;
|
||
|
|
||
|
/* Kernel streaming GOP user data */
|
||
|
typedef struct _KSGOP_USERDATA {
|
||
|
ULONG sc;
|
||
|
ULONG reserved1;
|
||
|
BYTE cFields;
|
||
|
CHAR l21Data[3];
|
||
|
} KSGOP_USERDATA;
|
||
|
typedef KSGOP_USERDATA *PKSGOP_USERDATA;
|
||
|
|
||
|
/* Kernel streaming ActiveMovie TS rate change property */
|
||
|
typedef enum {
|
||
|
KS_AM_RATE_SimpleRateChange = 1,
|
||
|
KS_AM_RATE_ExactRateChange = 2,
|
||
|
KS_AM_RATE_MaxFullDataRate = 3,
|
||
|
KS_AM_RATE_Step = 4
|
||
|
} KS_AM_PROPERTY_TS_RATE_CHANGE;
|
||
|
|
||
|
/* Kernel streaming ActiveMovie simple rate change */
|
||
|
typedef struct {
|
||
|
REFERENCE_TIME StartTime;
|
||
|
LONG Rate;
|
||
|
} KS_AM_SimpleRateChange;
|
||
|
typedef KS_AM_SimpleRateChange *PKS_AM_SimpleRateChange;
|
||
|
|
||
|
/* Kernel streaming ActiveMovie exact rate change */
|
||
|
typedef struct {
|
||
|
REFERENCE_TIME OutputZeroTime;
|
||
|
LONG Rate;
|
||
|
} KS_AM_ExactRateChange;
|
||
|
typedef KS_AM_ExactRateChange *PKS_AM_ExactRateChange;
|
||
|
|
||
|
/* Video encoder bit rate modes */
|
||
|
typedef enum {
|
||
|
ConstantBitRate = 0,
|
||
|
VariableBitRateAverage = 1,
|
||
|
VariableBitRatePeak = 2
|
||
|
} VIDEOENCODER_BITRATE_MODE;
|
||
|
|
||
|
/* Kernel streaming jack properties */
|
||
|
typedef enum {
|
||
|
KSPROPERTY_JACK_DESCRIPTION = 1,
|
||
|
KSPROPERTY_JACK_DESCRIPTION2 = 2,
|
||
|
KSPROPERTY_JACK_SINK_INFO = 3
|
||
|
} KSPROPERTY_JACK;
|
||
|
|
||
|
/* Connection types */
|
||
|
typedef enum {
|
||
|
eConnTypeUnknown = 0,
|
||
|
eConnType3Point5mm = 1,
|
||
|
eConnTypeQuarter = 2,
|
||
|
eConnTypeAtapiInternal = 3,
|
||
|
eConnTypeRCA = 4,
|
||
|
eConnTypeOptical = 5,
|
||
|
eConnTypeOtherDigital = 6,
|
||
|
eConnTypeOtherAnalog = 7,
|
||
|
eConnTypeMultichannelAnalogDIN = 8,
|
||
|
eConnTypeXlrProfessional = 9,
|
||
|
eConnTypeRJ11Modem = 10,
|
||
|
eConnTypeCombination = 11,
|
||
|
} EPcxConnectionType;
|
||
|
|
||
|
/* Geographic locations */
|
||
|
typedef enum {
|
||
|
eGeoLocRear = 1,
|
||
|
eGeoLocFront = 2,
|
||
|
eGeoLocLeft = 3,
|
||
|
eGeoLocRight = 4,
|
||
|
eGeoLocTop = 5,
|
||
|
eGeoLocBottom = 6,
|
||
|
eGeoLocRearPanel = 7,
|
||
|
eGeoLocRiser = 8,
|
||
|
eGeoLocInsideMobileLid = 9,
|
||
|
eGeoLocDrivebay = 10,
|
||
|
eGeoLocHDMI = 11,
|
||
|
eGeoLocOutsideMobileLid = 12,
|
||
|
eGeoLocATAPI = 13,
|
||
|
EPcxGeoLocation_enum_count = 16
|
||
|
} EPcxGeoLocation;
|
||
|
|
||
|
/* General locations */
|
||
|
typedef enum {
|
||
|
eGenLocPrimaryBox = 0,
|
||
|
eGenLocInternal = 1,
|
||
|
eGenLocSeparate = 2,
|
||
|
eGenLocOther = 3,
|
||
|
EPcxGenLocation_enum_count = 4
|
||
|
} EPcxGenLocation;
|
||
|
|
||
|
/* Port connections */
|
||
|
typedef enum {
|
||
|
ePortConnJack = 0,
|
||
|
ePortConnIntegratedDevice = 1,
|
||
|
ePortConnBothIntegratedAndJack = 2,
|
||
|
ePortConnUnknown = 3
|
||
|
} EPxcPortConnection;
|
||
|
|
||
|
/* Kernel streaming jack description */
|
||
|
typedef struct {
|
||
|
DWORD ChannelMapping;
|
||
|
COLORREF Color;
|
||
|
EPcxConnectionType ConnectionType;
|
||
|
EPcxGeoLocation GeoLocation;
|
||
|
EPcxGenLocation GenLocation;
|
||
|
EPxcPortConnection PortConnection;
|
||
|
BOOL IsConnected;
|
||
|
} KSJACK_DESCRIPTION;
|
||
|
typedef KSJACK_DESCRIPTION *PKSJACK_DESCRIPTION;
|
||
|
|
||
|
/* Kernel streaming jack sink connection types */
|
||
|
typedef enum {
|
||
|
KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
|
||
|
KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1
|
||
|
} KSJACK_SINK_CONNECTIONTYPE;
|
||
|
|
||
|
/* Kernel streaming jack sink information */
|
||
|
typedef struct _tagKSJACK_SINK_INFORMATION {
|
||
|
KSJACK_SINK_CONNECTIONTYPE ConnType;
|
||
|
WORD ManufacturerId;
|
||
|
WORD ProductId;
|
||
|
WORD AudioLatency;
|
||
|
BOOL HDCPCapable;
|
||
|
BOOL AICapable;
|
||
|
UCHAR SinkDescriptionLength;
|
||
|
WCHAR SinkDescription[MAX_SINK_DESCRIPTION_NAME_LENGTH];
|
||
|
LUID PortId;
|
||
|
} KSJACK_SINK_INFORMATION;
|
||
|
typedef KSJACK_SINK_INFORMATION *PKSJACK_SINK_INFORMATION;
|
||
|
|
||
|
/* Kernel streaming jack description (version 2) */
|
||
|
typedef struct _tagKSJACK_DESCRIPTION2 {
|
||
|
DWORD DeviceStateInfo;
|
||
|
DWORD JackCapabilities;
|
||
|
} KSJACK_DESCRIPTION2;
|
||
|
typedef KSJACK_DESCRIPTION2 *PKSJACK_DESCRIPTION2;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* extern "C" */
|
||
|
#endif
|
||
|
|
||
|
#endif /* _KSMEDIA_ */
|