Index: ks.h =================================================================== --- sdk/include/psdk/ks.h (revision 72961) +++ sdk/include/psdk/ks.h (working copy) @@ -115,6 +115,11 @@ DEFINE_GUIDSTRUCT("d833f8f8-7894-11d1-b069-00a0c9062802", KSMEMORY_TYPE_KERNEL_PAGED); #define KSMEMORY_TYPE_KERNEL_PAGED DEFINE_GUIDNAMED(KSMEMORY_TYPE_KERNEL_PAGED) +#define STATIC_KSDATAFORMAT_SUBTYPE_NONE \ + 0xe436eb8eL, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} +DEFINE_GUIDSTRUCT("e436eb8e-524f-11ce-9f53-0020af0ba770", KSDATAFORMAT_SUBTYPE_NONE); +#define KSDATAFORMAT_SUBTYPE_NONE DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_NONE) + /* =============================================================== I/O Control Codes */ Index: ksmedia.h =================================================================== --- sdk/include/psdk/ksmedia.h (revision 72961) +++ sdk/include/psdk/ksmedia.h (working copy) @@ -235,6 +235,21 @@ #define STATIC_KSCATEGORY_DRM_DESCRAMBLE STATIC_KSNODETYPE_DRM_DESCRAMBLE #define KSCATEGORY_DRM_DESCRAMBLE KSNODETYPE_DRM_DESCRAMBLE +#define STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO \ + 0x0482DDE0L, 0x7817, 0x11CF, {0x8A, 0x03, 0x00, 0xAA, 0x00, 0x6E, 0xCB, 0x65} +DEFINE_GUIDSTRUCT("0482DDE0-7817-11CF-8A03-00AA006ECB65", KSDATAFORMAT_SPECIFIER_ANALOGVIDEO); +#define KSDATAFORMAT_SPECIFIER_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SPECIFIER_ANALOGVIDEO) + +#define STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO \ + 0x0482DDE1L, 0x7817, 0x11CF, {0x8A, 0x03, 0x00, 0xAA, 0x00, 0x6E, 0xCB, 0x65} +DEFINE_GUIDSTRUCT("0482DDE1-7817-11CF-8A03-00AA006ECB65", KSDATAFORMAT_TYPE_ANALOGVIDEO); +#define KSDATAFORMAT_TYPE_ANALOGVIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_TYPE_ANALOGVIDEO) + +#define STATIC_PINNAME_VIDEO_ANALOGVIDEOIN \ + 0xFB6C4283L, 0x0353, 0x11D1, {0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA} +DEFINE_GUIDSTRUCT("FB6C4283-0353-11D1-905F-0000C0CC16BA", PINNAME_VIDEO_ANALOGVIDEOIN); +#define PINNAME_VIDEO_ANALOGVIDEOIN DEFINE_GUIDNAMED(PINNAME_VIDEO_ANALOGVIDEOIN) + /* Nodes */ @@ -551,6 +566,13 @@ //#endif +typedef enum { + KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, + KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE, + KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_CAPS, + KSPROPERTY_ALLOCATOR_CONTROL_CAPTURE_INTERLEAVE +} KSPROPERTY_ALLOCATOR_CONTROL; + typedef struct { KSDATARANGE DataRange; ULONG MaximumChannels; @@ -560,6 +582,276 @@ ULONG MaximumSampleFrequency; } KSDATARANGE_AUDIO, *PKSDATARANGE_AUDIO; +typedef struct tagKS_AnalogVideoInfo { + RECT rcSource; + RECT rcTarget; + DWORD dwActiveWidth; + DWORD dwActiveHeight; + REFERENCE_TIME AvgTimePerFrame; +} KS_ANALOGVIDEOINFO, *PKS_ANALOGVIDEOINFO; + +typedef struct tagKS_DATARANGE_ANALOGVIDEO { + KSDATARANGE DataRange; + KS_ANALOGVIDEOINFO AnalogVideoInfo; +} KS_DATARANGE_ANALOGVIDEO, *PKS_DATARANGE_ANALOGVIDEO; + +typedef enum { + KS_TUNER_TUNING_EXACT = 1, + KS_TUNER_TUNING_FINE, + KS_TUNER_TUNING_COARSE, +} KS_TUNER_TUNING_FLAGS; + +typedef enum { + KS_TUNER_STRATEGY_PLL = 0x01, + KS_TUNER_STRATEGY_SIGNAL_STRENGTH = 0x02, + KS_TUNER_STRATEGY_DRIVER_TUNES = 0x04, +} KS_TUNER_STRATEGY; + +typedef struct { + KSPROPERTY Property; + ULONG ModesSupported; + KSPIN_MEDIUM VideoMedium; + KSPIN_MEDIUM TVAudioMedium; + KSPIN_MEDIUM RadioAudioMedium; +} KSPROPERTY_TUNER_CAPS_S, *PKSPROPERTY_TUNER_CAPS_S; + +typedef struct { + KSPROPERTY Property; + KSPIN_MEDIUM IFMedium; +} KSPROPERTY_TUNER_IF_MEDIUM_S, *PKSPROPERTY_TUNER_IF_MEDIUM_S; + +typedef struct { + KSPROPERTY Property; + ULONG Mode; +} KSPROPERTY_TUNER_MODE_S, *PKSPROPERTY_TUNER_MODE_S; + +typedef struct { + KSPROPERTY Property; + ULONG Frequency; + ULONG LastFrequency; + ULONG TuningFlags; + ULONG VideoSubChannel; + ULONG AudioSubChannel; + ULONG Channel; + ULONG Country; +} KSPROPERTY_TUNER_FREQUENCY_S, *PKSPROPERTY_TUNER_FREQUENCY_S; + +typedef struct { + KSPROPERTY Property; + ULONG Standard; +} KSPROPERTY_TUNER_STANDARD_S, *PKSPROPERTY_TUNER_STANDARD_S; + +typedef struct { + KSPROPERTY Property; + ULONG InputIndex; +} KSPROPERTY_TUNER_INPUT_S, *PKSPROPERTY_TUNER_INPUT_S; + +typedef struct { + KSPROPERTY Property; + ULONG CurrentFrequency; + ULONG PLLOffset; + ULONG SignalStrength; + ULONG Busy; +} KSPROPERTY_TUNER_STATUS_S, *PKSPROPERTY_TUNER_STATUS_S; + +typedef enum { + KSEVENT_TUNER_CHANGED, + KSEVENT_TUNER_INITIATE_SCAN +} KSEVENT_TUNER; + +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, + KS_AnalogVideo_SECAM_L1 = 0x00080000, + KS_AnalogVideo_PAL_N_COMBO = 0x00100000 +} KS_AnalogVideoStandard; + +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, *PKSPROPERTY_TUNER_MODE_CAPS_S; + +typedef struct tagKS_BITMAPINFOHEADER { + DWORD biSize; + LONG biWidth; + LONG biHeight; + WORD biPlanes; + WORD biBitCount; + DWORD biCompression; + DWORD biSizeImage; + LONG biXPelsPerMeter; + LONG biYPelsPerMeter; + DWORD biClrUsed; + DWORD biClrImportant; +} KS_BITMAPINFOHEADER, *PKS_BITMAPINFOHEADER; + +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, *PKS_VIDEO_STREAM_CONFIG_CAPS; + +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; + union { + struct { + DWORD Reserved3; + DWORD Reserved4; + }; + ULONGLONG FrameCompletionNumber; + }; +} KS_FRAME_INFO, *PKS_FRAME_INFO; + +typedef struct tagKS_VIDEOINFOHEADER { + RECT rcSource; + RECT rcTarget; + DWORD dwBitRate; + DWORD dwBitErrorRate; + REFERENCE_TIME AvgTimePerFrame; + KS_BITMAPINFOHEADER bmiHeader; +} KS_VIDEOINFOHEADER, *PKS_VIDEOINFOHEADER; + +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, *PKS_VIDEOINFOHEADER2; + +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, *PKS_DATARANGE_VIDEO; + +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, *PKS_DATARANGE_VIDEO2; + +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, *PKS_VBIINFOHEADER; + +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, *PKS_DATARANGE_VIDEO_VBI; + +typedef struct tagKS_TVTUNER_CHANGE_INFO { + DWORD dwFlags; + DWORD dwCountryCode; + DWORD dwAnalogVideoStandard; + DWORD dwChannel; +} KS_TVTUNER_CHANGE_INFO, *PKS_TVTUNER_CHANGE_INFO; + +typedef struct { + KSPROPERTY Property; + ULONG IndexInputPin; + ULONG IndexOutputPin; + ULONG CanRoute; +} KSPROPERTY_CROSSBAR_ROUTE_S, *PKSPROPERTY_CROSSBAR_ROUTE_S; + +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, *PKS_VBI_FRAME_INFO; + +#define KS_SIZE_PREHEADER (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader)) + #if !defined( DEFINE_WAVEFORMATEX_GUID ) #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} #endif