/******************************************************************************\ * * * ZIVAGUID.H - . * * * * Copyright (c) C-Cube Microsystems 1996 * * All Rights Reserved. * * * * Use of C-Cube Microsystems code is governed by terms and conditions * * stated in the accompanying licensing statement. * * * \******************************************************************************/ /* ZIVAGUID.H This module contains definitions for the stream types that this mini driver supports. This information is used by the Enumerate Stream types routine. */ #ifndef _ZIVAGUID_H_ #define _ZIVAGUID_H_ #include #include #define IsEqualGUID2(guid1, guid2) \ (!memcmp((guid1), (guid2), sizeof(GUID))) #if defined(ENCORE) #include "AvInt.h" #include "AvKsProp.h" #else KSPIN_MEDIUM VPMedium = { STATIC_KSMEDIUMSETID_VPBus, 0, 0 }; #endif //------------------------------------------------------------------- // ZiVA STREAM TYPE FORMATS //------------------------------------------------------------------- KSDATAFORMAT ZivaFormatDVDVideo = { sizeof (KSDATAFORMAT), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK, STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO, STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO }; KSDATAFORMAT ZivaFormatMpeg2PACKVideo = { sizeof (KSDATAFORMAT), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER, STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO, STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO }; // // define our time event structure // typedef struct _MYTIME { KSEVENT_TIME_INTERVAL tim; LONGLONG LastTime; } MYTIME, *PMYTIME; // // define the events associated with the master clock // KSEVENT_ITEM ClockEventItm[] = { { KSEVENT_CLOCK_POSITION_MARK, // position mark event supported sizeof( KSEVENT_TIME_MARK ), // requires this data as input sizeof( KSEVENT_TIME_MARK ), // allocate space to copy the data NULL, NULL, NULL }, { KSEVENT_CLOCK_INTERVAL_MARK, // interval mark event supported sizeof( KSEVENT_TIME_INTERVAL ), // requires interval data as input sizeof( MYTIME ), // we use an additional workspace of // size longlong for processing this event NULL, NULL, NULL } }; KSEVENT_SET ClockEventSet[] = { { &KSEVENTSETID_Clock, SIZEOF_ARRAY(ClockEventItm), ClockEventItm, } }; #ifndef ENCORE KSEVENT_ITEM VPEventItm[] = { { KSEVENT_VPNOTIFY_FORMATCHANGE, 0, 0, NULL, NULL, NULL } }; GUID MY_KSEVENTSETID_VPNOTIFY = { STATIC_KSEVENTSETID_VPNotify }; KSEVENT_SET VPEventSet[] = { { &MY_KSEVENTSETID_VPNOTIFY, SIZEOF_ARRAY( VPEventItm ), VPEventItm, } }; #endif KSDATAFORMAT ZivaFormatAC3Audio = { sizeof( KSDATAFORMAT ), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK, STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO, STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX }; KSDATAFORMAT ZivaFormatAC3Audio2 = { sizeof (KSDATAFORMAT), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER, STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO, STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX }; KSDATAFORMAT ZivaFormatPCMAudio = { sizeof( KSDATAFORMAT ), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK, STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO, STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX }; KSDATAFORMAT ZivaFormatSubPicture = { sizeof( KSDATAFORMAT ), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK, STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE, STATIC_GUID_NULL }; #ifdef ENCORE #define DefWidth 720 #define DefHeight 480 KS_DATARANGE_VIDEO2 ZivaFormatAnalogOverlayOutDataRange = { // KSDATARANGE { sizeof( KS_DATARANGE_VIDEO2 ), // FormatSize 0, // Flags 0, // SampleSize 0, // Reserved STATIC_KSDATAFORMAT_TYPE_VIDEO, // aka. MEDIATYPE_Video STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY, STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2// aka. FORMAT_VideoInfo2 }, TRUE, // BOOL, bFixedSizeSamples (all samples same size?) TRUE, // BOOL, bTemporalCompression (all I frames?) 0, // Reserved (was StreamDescriptionFlags) 0, // Reserved (was MemoryAllocationFlags (KS_VIDEO_ALLOC_*)) // _KS_VIDEO_STREAM_CONFIG_CAPS { STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2, // GUID KS_AnalogVideo_NTSC_M | KS_AnalogVideo_PAL_B, // AnalogVideoStandard 720,480, // InputSize, (the inherent size of the incoming signal // with every digitized pixel unique) 720,480, // MinCroppingSize, smallest rcSrc cropping rect allowed 720,480, // MaxCroppingSize, largest rcSrc cropping rect allowed 8, // CropGranularityX, granularity of cropping size 1, // CropGranularityY 8, // CropAlignX, alignment of cropping rect 1, // CropAlignY; 720, 480, // MinOutputSize, smallest bitmap stream can produce 720, 480, // MaxOutputSize, largest bitmap stream can produce 8, // OutputGranularityX, granularity of output bitmap size 1, // OutputGranularityY; 0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...) 0, // StretchTapsY 0, // ShrinkTapsX 0, // ShrinkTapsY 333667, // MinFrameInterval, 100 nS units 640000000, // MaxFrameInterval, 100 nS units 8 * 3 * 30 * 160 * 120, // MinBitsPerSecond; 8 * 3 * 30 * 720 * 480 // MaxBitsPerSecond; }, //------- KS_VIDEOINFOHEADER2 { { 0,0,0,0 }, // RECT rcSource; // The bit we really want to use { 0,0,0,0 }, // RECT rcTarget; // Where the video should go DefWidth * DefHeight * 2 * 30L, // DWORD dwBitRate; // Approximate bit data rate 0L, // DWORD dwBitErrorRate; // Bit error rate for this stream 333667, // REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units) 0, // DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 0, // DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 4, // DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display 3, // DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display 0, // DWORD dwReserved1; // must be 0; reject connection otherwise 0, // DWORD dwReserved2; // must be 0; reject connection otherwise //---------- KS_BITMAPINFOHEADER { sizeof( KS_BITMAPINFOHEADER ), // DWORD biSize; DefWidth, // LONG biWidth; DefHeight, // LONG biHeight; 1, // WORD biPlanes; 16, // WORD biBitCount; DDPF_FOURCC, // DWORD biCompression; 0/*DefWidth * DefHeight * 2*/, // DWORD biSizeImage; 0, // LONG biXPelsPerMeter; 0, // LONG biYPelsPerMeter; 0, // DWORD biClrUsed; 0 // DWORD biClrImportant; } } }; KS_DATAFORMAT_VIDEOINFOHEADER2 ZivaFormatAnalogOverlayOut = { //------- KSDATAFORMAT { sizeof( KS_DATAFORMAT_VIDEOINFOHEADER2 ), 0, DefWidth * DefHeight * 2, 0, STATIC_KSDATAFORMAT_TYPE_VIDEO, STATIC_KSDATAFORMAT_SUBTYPE_OVERLAY, STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO2 }, //------- KS_VIDEOINFOHEADER2 { { 0,0,0,0 }, // RECT rcSource; // The bit we really want to use { 0,0,0,0 }, // RECT rcTarget; // Where the video should go DefWidth * DefHeight * 2 * 30L, // DWORD dwBitRate; // Approximate bit data rate 0L, // DWORD dwBitErrorRate; // Bit error rate for this stream 333667, // REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units) 0, // DWORD dwInterlaceFlags; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0 0, // DWORD dwCopyProtectFlags; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0 4, // DWORD dwPictAspectRatioX; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display 3, // DWORD dwPictAspectRatioY; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display 0, // DWORD dwReserved1; // must be 0; reject connection otherwise 0, // DWORD dwReserved2; // must be 0; reject connection otherwise //---------- KS_BITMAPINFOHEADER { sizeof( KS_BITMAPINFOHEADER ), // DWORD biSize; DefWidth, // LONG biWidth; DefHeight, // LONG biHeight; 1, // WORD biPlanes; 16, // WORD biBitCount; DDPF_FOURCC, // DWORD biCompression; 0/*DefWidth * DefHeight * 2*/, // DWORD biSizeImage; 0, // LONG biXPelsPerMeter; 0, // LONG biYPelsPerMeter; 0, // DWORD biClrUsed; 0 // DWORD biClrImportant; } } }; #endif // #ifdef ENCORE KSDATAFORMAT ZivaFormatVPEOut = { sizeof( KSDATAFORMAT ), 0, 0, 0, STATIC_KSDATAFORMAT_TYPE_VIDEO, STATIC_KSDATAFORMAT_SUBTYPE_VPVideo, STATIC_KSDATAFORMAT_SPECIFIER_NONE }; //#endif // #ifdef ENCORE KSDATAFORMAT hwfmtiCCOut = { sizeof(KSDATAFORMAT), 0, 200, 0, STATIC_KSDATAFORMAT_TYPE_AUXLine21Data, STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket, // STATIC_KSDATAFORMAT_SUBTYPE_Line21_BytePair, // STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO STATIC_KSDATAFORMAT_SPECIFIER_NONE }; PKSDATAFORMAT CCInfo[] = { // CC output formats array &hwfmtiCCOut }; #define NUM_CC_OUT_FORMATS (SIZEOF_ARRAY( CCInfo )) //------------------------------------------------------------------- // ZiVA STREAM FORMAT ARRAYS //------------------------------------------------------------------- //------- Video In PKSDATAFORMAT ZivaVideoInFormatArray[] = { &ZivaFormatDVDVideo, &ZivaFormatMpeg2PACKVideo }; #define NUM_VIDEO_IN_FORMATS (SIZEOF_ARRAY( ZivaVideoInFormatArray )) //------- Audio In PKSDATAFORMAT ZivaAudioInFormatArray[] = { &ZivaFormatAC3Audio, &ZivaFormatAC3Audio2, &ZivaFormatPCMAudio //&ZivaFormatMpegAudio }; #define NUM_AUDIO_IN_FORMATS (SIZEOF_ARRAY( ZivaAudioInFormatArray )) //------- Subpicture In PKSDATAFORMAT ZivaSubPictureInFormatArray[] = { &ZivaFormatSubPicture }; #define NUM_SUBPICTURE_IN_FORMATS (SIZEOF_ARRAY( ZivaSubPictureInFormatArray )) //------- Video Out PKSDATAFORMAT ZivaVideoOutFormatArray[] = { #ifdef ENCORE (PKSDATAFORMAT)&ZivaFormatAnalogOverlayOutDataRange #else // #ifdef ENCORE (PKSDATAFORMAT)&ZivaFormatVPEOut #endif // #ifdef ENCORE }; #define NUM_VIDEO_OUT_FORMATS (SIZEOF_ARRAY( ZivaVideoOutFormatArray )) //------------------------------------------------------------------- // ZiVA STREAM PROPERTY ITEMS //------------------------------------------------------------------- static const KSPROPERTY_ITEM mpegVidPropItm[] = { { KSPROPERTY_DVDSUBPIC_PALETTE, // subpicture palette property FALSE, // get palette not supported sizeof( KSPROPERTY ), sizeof( KSPROPERTY_SPPAL ), // minimum size of data requested (PFNKSHANDLER)FALSE, // set palette is not supported NULL, 0, NULL, NULL, 0 } }; // // define the subpicture property items supported // static const KSPROPERTY_ITEM spPropItm[] = { { KSPROPERTY_DVDSUBPIC_PALETTE, // subpicture palette property FALSE, // get palette not supported sizeof( KSPROPERTY ), sizeof( KSPROPERTY_SPPAL ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set palette is supported NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDSUBPIC_HLI, // subpicture highlight property FALSE, // get highlight is not supported sizeof( KSPROPERTY ), sizeof( KSPROPERTY_SPHLI ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set highlight is supported NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDSUBPIC_COMPOSIT_ON, // subpicture enable status property FALSE, // get enable status not supported sizeof( KSPROPERTY ), sizeof( KSPROPERTY_COMPOSIT_ON ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set enable status is supported NULL, 0, NULL, NULL, 0 } }; static const KSPROPERTY_ITEM audPropItm[] = { { KSPROPERTY_AUDDECOUT_MODES, // available audio decoder output formats property (PFNKSHANDLER)TRUE, // get available modes is supported sizeof( KSPROPERTY ), sizeof( ULONG ), // minimum size of data requested (PFNKSHANDLER)FALSE, // set available modes is not supported NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_AUDDECOUT_CUR_MODE, // current audio decoder output format property (PFNKSHANDLER) TRUE, // get current mode is supported sizeof( KSPROPERTY ), sizeof( ULONG ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set current modes is supported NULL, 0, NULL, NULL, 0 } }; // // define the copy protection property support // static const KSPROPERTY_ITEM psMacrovision[] = { { KSPROPERTY_COPY_MACROVISION, // support for setting macrovision level (PFNKSHANDLER)FALSE, // get not supported sizeof( KSPROPERTY ), sizeof( KS_COPY_MACROVISION ), (PFNKSHANDLER)TRUE, // set MACROVISION level supported NULL, 0, NULL, NULL, 0 } }; static const KSPROPERTY_ITEM CopyProtPropItm[] = { { KSPROPERTY_DVDCOPY_CHLG_KEY, // DVD authentication challenge key (PFNKSHANDLER)TRUE, // get property on challenge key requests the // decoder to provide it's challenge key sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_CHLGKEY ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set palette is supported NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_DVD_KEY1, // DVD authentication DVD drive key property FALSE, // get Key not supported sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_BUSKEY ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set key provides the key for the decoder NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_DEC_KEY2, // DVD authentication DVD decoder key property (PFNKSHANDLER)TRUE, // get Key requests the decoder key, in // response to a previous set challenge key sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_BUSKEY ), // minimum size of data requested (PFNKSHANDLER)FALSE, // set key is not valid NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_REGION, // DVD region request the minidriver shall // fit in exactly one region bit, corresponding // to the region that the decoder is currently in (PFNKSHANDLER)TRUE, sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_REGION ), // minimum size of data requested (PFNKSHANDLER)FALSE, // set key is not valid NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_TITLE_KEY, // DVD authentication DVD title key property FALSE, // get Key not supported sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_TITLEKEY ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set key provides the key for the decoder NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_DISC_KEY, // DVD authentication DVD disc key property FALSE, // get Key not supported sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_DISCKEY ), // minimum size of data requested (PFNKSHANDLER)TRUE, // set key provides the key for the decoder NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_DVDCOPY_SET_COPY_STATE, // DVD authentication DVD disc key property (PFNKSHANDLER)TRUE, // get Key not supported sizeof( KSPROPERTY ), sizeof( KS_DVDCOPY_SET_COPY_STATE ),// minimum size of data requested (PFNKSHANDLER)TRUE, // set key provides the key for the decoder NULL, 0, NULL, NULL, 0 } #if 0 #ifdef DECODER_DVDPC , { KSPROPERTY_COPY_MACROVISION, // support for setting macrovision level (PFNKSHANDLER)FALSE, // get not supported sizeof( KSPROPERTY ), sizeof( KS_COPY_MACROVISION ), (PFNKSHANDLER)TRUE, // set MACROVISION level supported NULL, 0, NULL, NULL, 0 } #endif #endif }; // ------------------------------------------------------------------------ // Array of all of the property sets supported by video streams // ------------------------------------------------------------------------ #ifdef ENCORE DEFINE_KSPROPERTY_TABLE( psOverlayUpdate ) { DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS( (PFNKSHANDLER)TRUE ), DEFINE_KSPROPERTY_ITEM ( KSPROPERTY_OVERLAYUPDATE_COLORKEY, (PFNKSHANDLER)TRUE, sizeof( KSPROPERTY ), sizeof( COLORKEY ), (PFNKSHANDLER)TRUE, NULL, 0, NULL, NULL, 0 ), DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION( (PFNKSHANDLER)TRUE ), DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE( (PFNKSHANDLER)TRUE ), DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF( (PFNKSHANDLER)TRUE ) }; DEFINE_KSPROPERTY_SET_TABLE( VideoOutPropSet ) { DEFINE_KSPROPERTY_SET ( &KSPROPSETID_OverlayUpdate, SIZEOF_ARRAY( psOverlayUpdate ), psOverlayUpdate, 0, NULL ) }; #else static const KSPROPERTY_ITEM VideoPortPropItm[] = { { KSPROPERTY_VPCONFIG_NUMCONNECTINFO, (PFNKSHANDLER) TRUE, sizeof(KSPROPERTY), sizeof(ULONG), (PFNKSHANDLER) FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT, (PFNKSHANDLER) TRUE, sizeof(KSPROPERTY), sizeof(ULONG), (PFNKSHANDLER) FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_GETCONNECTINFO, (PFNKSHANDLER) TRUE, sizeof (KSMULTIPLE_DATA_PROP), // minimum property input size sizeof (ULONG), (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_SETCONNECTINFO, (PFNKSHANDLER) FALSE, sizeof (KSPROPERTY), // minimum property input size sizeof (ULONG), // minimum buffer size (PFNKSHANDLER)TRUE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_VPDATAINFO, (PFNKSHANDLER) TRUE, sizeof (KSPROPERTY), sizeof (KS_AMVPDATAINFO), (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_MAXPIXELRATE, (PFNKSHANDLER) TRUE, sizeof (KSVPSIZE_PROP), sizeof (KSVPMAXPIXELRATE), (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_INFORMVPINPUT, (PFNKSHANDLER) TRUE, sizeof (PKSPROPERTY), sizeof (DDPIXELFORMAT), // could be 0 too (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_DDRAWHANDLE, (PFNKSHANDLER)FALSE, sizeof (PKSPROPERTY), sizeof (ULONG), // could be 0 too (PFNKSHANDLER) TRUE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_VIDEOPORTID, (PFNKSHANDLER)FALSE, sizeof (PKSPROPERTY), sizeof (ULONG), // could be 0 too (PFNKSHANDLER) TRUE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE, (PFNKSHANDLER)FALSE, sizeof (PKSPROPERTY), sizeof (ULONG), // could be 0 too (PFNKSHANDLER) TRUE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_GETVIDEOFORMAT, (PFNKSHANDLER) TRUE, sizeof (KSMULTIPLE_DATA_PROP), // for _GET; KSPROPERTY for _SET sizeof (ULONG), // could be 4 or more (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_SETVIDEOFORMAT, (PFNKSHANDLER) FALSE, sizeof (KSPROPERTY), // minimum property input size sizeof (ULONG), // minimum buffer size (PFNKSHANDLER)TRUE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_INVERTPOLARITY, (PFNKSHANDLER)TRUE, sizeof (KSPROPERTY), 0, (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY, (PFNKSHANDLER)TRUE, sizeof(KSPROPERTY), //sizeof (KSVPCONTEXT_PROP), sizeof (BOOL), (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_VPCONFIG_SCALEFACTOR, (PFNKSHANDLER)TRUE, sizeof (KSPROPERTY), sizeof (KS_AMVPSIZE), (PFNKSHANDLER)FALSE, NULL, 0, NULL, NULL, 0 } }; GUID vpePropSetid = {STATIC_KSPROPSETID_VPConfig}; static KSPROPERTY_SET VideoPortPropSet[] = { &vpePropSetid, SIZEOF_ARRAY(VideoPortPropItm), (PKSPROPERTY_ITEM) VideoPortPropItm }; #endif // #ifdef ENCORE #define NUM_VIDEO_OUT_PROPERTY_ITEMS (SIZEOF_ARRAY (VideoOutPropSet)) // Rate Change static const KSPROPERTY_ITEM RateChangePropItm[] = { { KS_AM_RATE_SimpleRateChange, (PFNKSHANDLER) TRUE, sizeof (KSPROPERTY), sizeof (KS_AM_SimpleRateChange), (PFNKSHANDLER) TRUE, NULL, 0, NULL, NULL, 0, }, { KS_AM_RATE_ExactRateChange, (PFNKSHANDLER) FALSE, sizeof (KSPROPERTY), sizeof (KS_AM_ExactRateChange), (PFNKSHANDLER) FALSE, NULL, 0, NULL, NULL, 0, }, { KS_AM_RATE_MaxFullDataRate, (PFNKSHANDLER) TRUE, sizeof (KSPROPERTY), sizeof (KS_AM_MaxFullDataRate), (PFNKSHANDLER) FALSE, NULL, 0, NULL, NULL, 0, }, { KS_AM_RATE_Step, (PFNKSHANDLER) FALSE, sizeof (KSPROPERTY), sizeof (KS_AM_Step), (PFNKSHANDLER) TRUE, NULL, 0, NULL, NULL, 0, } }; // // define the array of video property sets supported // DEFINE_KSPROPERTY_SET_TABLE( mpegVidPropSet ) { DEFINE_KSPROPERTY_SET ( &KSPROPSETID_Mpeg2Vid, SIZEOF_ARRAY(mpegVidPropItm), (PKSPROPERTY_ITEM)mpegVidPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_CopyProt, SIZEOF_ARRAY(CopyProtPropItm), (PKSPROPERTY_ITEM)CopyProtPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_TSRateChange, SIZEOF_ARRAY(RateChangePropItm), (PKSPROPERTY_ITEM)RateChangePropItm, 0, NULL ) }; #define NUM_VIDEO_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (mpegVidPropSet)) // // define the array of audio property sets supported // DEFINE_KSPROPERTY_SET_TABLE( audPropSet ) { DEFINE_KSPROPERTY_SET ( &KSPROPSETID_AudioDecoderOut, SIZEOF_ARRAY(audPropItm), (PKSPROPERTY_ITEM)audPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_CopyProt, SIZEOF_ARRAY(CopyProtPropItm), (PKSPROPERTY_ITEM)CopyProtPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_TSRateChange, SIZEOF_ARRAY(RateChangePropItm), (PKSPROPERTY_ITEM)RateChangePropItm, 0, NULL ), }; #define NUM_AUDIO_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (audPropSet)) // // define the array of subpicture property sets supported // DEFINE_KSPROPERTY_SET_TABLE( SPPropSet ) { DEFINE_KSPROPERTY_SET ( &KSPROPSETID_DvdSubPic, SIZEOF_ARRAY(spPropItm), (PKSPROPERTY_ITEM)spPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_CopyProt, SIZEOF_ARRAY(CopyProtPropItm), (PKSPROPERTY_ITEM)CopyProtPropItm, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_TSRateChange, SIZEOF_ARRAY(RateChangePropItm), (PKSPROPERTY_ITEM)RateChangePropItm, 0, NULL ), }; #define NUM_SUBPICTURE_IN_PROPERTY_ITEMS (SIZEOF_ARRAY (SPPropSet)) #ifdef ENCORE DEFINE_AV_PROPITEM_RANGE_STEP( ColorBrightness, 15, 0, 255, 128 ) DEFINE_AV_PROPITEM_RANGE_STEP( ColorContrast, 1, 0, 31, 15 ) DEFINE_AV_PROPITEM_RANGE_STEP( ColorSaturation, 1, 0, 31, 15 ) DEFINE_AV_PROPITEM_RANGE_STEP( ColorSolarization, 8, 0, 128, 0 ) DEFINE_AV_PROPITEM_RANGE_STEP( ColorSharpness, 1, 0, 1, 0 ) DEFINE_AV_PROPITEM_RANGE_STEP( ColorGamma, 64, 256, 4096, 1024 ) DEFINE_KSPROPERTY_TABLE( psVideoProcAmp ) { ADD_AV_PROPITEM_RANGE_U( ColorBrightness, KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS ), ADD_AV_PROPITEM_RANGE_U( ColorContrast, KSPROPERTY_VIDEOPROCAMP_CONTRAST ), ADD_AV_PROPITEM_RANGE_U( ColorSaturation, KSPROPERTY_VIDEOPROCAMP_SATURATION ), ADD_AV_PROPITEM_RANGE_U( ColorSharpness, KSPROPERTY_VIDEOPROCAMP_SHARPNESS ), ADD_AV_PROPITEM_RANGE_U( ColorGamma, KSPROPERTY_VIDEOPROCAMP_GAMMA ), ADD_AV_PROPITEM_RANGE_U( ColorSolarization, KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION ) }; DEFINE_AV_PROPITEM_RANGE( AlignXPosition, 0, 1023, 170 ) DEFINE_AV_PROPITEM_RANGE( AlignYPosition, 0, 1023, 36 ) DEFINE_AV_PROPITEM_RANGE( AlignInputDelay, -15, 16, 5 ) DEFINE_AV_PROPITEM_RANGE( AlignWidthRatio, 1, 4000, 456 ) DEFINE_AV_PROPITEM_RANGE( AlignClockDelay, 0, 3, 3 ) DEFINE_AV_PROPITEM_RANGE( AlignCropLeft, 0, 1023, 20 ) DEFINE_AV_PROPITEM_RANGE( AlignCropTop, 0, 1023, 100 ) DEFINE_AV_PROPITEM_RANGE( AlignCropRight, 0, 1023, 20 ) DEFINE_AV_PROPITEM_RANGE( AlignCropBottom, 0, 1023, 40 ) DEFINE_AV_KSPROPERTY_TABLE( psAlign ) { ADD_AV_PROPITEM_RANGE_U( AlignXPosition, AVKSPROPERTY_ALIGN_XPOSITION ), ADD_AV_PROPITEM_RANGE_U( AlignYPosition, AVKSPROPERTY_ALIGN_YPOSITION ), ADD_AV_PROPITEM_RANGE_U( AlignInputDelay, AVKSPROPERTY_ALIGN_INPUTDELAY ), ADD_AV_PROPITEM_RANGE_U( AlignWidthRatio, AVKSPROPERTY_ALIGN_WIDTHRATIO ), ADD_AV_PROPITEM_RANGE_U( AlignClockDelay, AVKSPROPERTY_ALIGN_CLOCKDELAY ), ADD_AV_PROPITEM_RANGE_U( AlignCropLeft, AVKSPROPERTY_ALIGN_CROPLEFT ), ADD_AV_PROPITEM_RANGE_U( AlignCropTop, AVKSPROPERTY_ALIGN_CROPTOP ), ADD_AV_PROPITEM_RANGE_U( AlignCropRight, AVKSPROPERTY_ALIGN_CROPRIGHT ), ADD_AV_PROPITEM_RANGE_U( AlignCropBottom, AVKSPROPERTY_ALIGN_CROPBOTTOM ), // ADD_AV_PROPITEM( AVKSPROPERTY_ALIGN_AUTOALIGNENABLED ) }; DEFINE_AV_KSPROPERTY_TABLE( psKey ) { ADD_AV_PROPITEM( AVKSPROPERTY_KEY_MODE ), ADD_AV_PROPITEM_TYPE( AVKSPROPERTY_KEY_KEYCOLORS, AVKSPROPERTY_KEY ) }; DEFINE_AV_PROPITEM_RANGE( DoveAlphaMixing, 0, 63, 0 ) DEFINE_AV_PROPITEM_RANGE( DoveFadingTime, 1, 8, 4 ) DEFINE_AV_KSPROPERTY_TABLE( psDove ) { ADD_AV_PROPITEM_READ( AVKSPROPERTY_DOVE_VERSION ), ADD_AV_PROPITEM( AVKSPROPERTY_DOVE_DAC ), ADD_AV_PROPITEM_RANGE_U( DoveAlphaMixing, AVKSPROPERTY_DOVE_ALPHAMIXING ), ADD_AV_PROPITEM_RANGE_U( DoveFadingTime, AVKSPROPERTY_DOVE_FADINGTIME ), ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_FADEIN ), ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_FADEOUT ), ADD_AV_PROPITEM_WRITE( AVKSPROPERTY_DOVE_AUTO ) }; DEFINE_AV_PROPITEM_RANGE( MiscSkewRise, 0, 15, 2 ) DEFINE_AV_KSPROPERTY_TABLE( psMisc ) { ADD_AV_PROPITEM( AVKSPROPERTY_MISC_NEGATIVE ), ADD_AV_PROPITEM_RANGE_U( MiscSkewRise, AVKSPROPERTY_MISC_SKEWRISE ), ADD_AV_PROPITEM( AVKSPROPERTY_MISC_FILTER ) }; DEFINE_KSPROPERTY_TABLE( psPin ) { DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES( TRUE ) }; DEFINE_KSPROPERTY_SET_TABLE( psEncore ) { DEFINE_KSPROPERTY_SET ( &PROPSETID_VIDCAP_VIDEOPROCAMP, SIZEOF_ARRAY( psVideoProcAmp ), psVideoProcAmp, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_Pin, SIZEOF_ARRAY( psPin ), (PKSPROPERTY_ITEM)psPin, 0, NULL ), DEFINE_KSPROPERTY_SET ( &KSPROPSETID_CopyProt, SIZEOF_ARRAY( psMacrovision ), (PKSPROPERTY_ITEM)psMacrovision, 0, NULL ), DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Align, psAlign ), DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Key, psKey ), DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Dove, psDove ), DEFINE_AV_KSPROPERTY_SET( AVKSPROPSETID_Misc, psMisc ) }; #endif // #ifdef ENCORE // CC static /* const */ KSPROPERTY_ITEM CCPropItm[] = { { KSPROPERTY_CONNECTION_ALLOCATORFRAMING, // support for setting CC buffer size (PFNKSHANDLER) TRUE, // get supported sizeof (KSPROPERTY), sizeof (KSALLOCATOR_FRAMING), (PFNKSHANDLER) FALSE, // we only provide the allocator requirments NULL, 0, NULL, NULL, 0 }, { KSPROPERTY_CONNECTION_STATE, // support for setting CC buffer size (PFNKSHANDLER) TRUE, // get supported sizeof (KSPROPERTY), sizeof (KSSTATE), (PFNKSHANDLER) FALSE, // we only provide the allocator requirments NULL, 0, NULL, NULL, 0 } }; static /* const */ KSPROPERTY_SET CCPropSet[] = { &KSPROPSETID_Connection, SIZEOF_ARRAY(CCPropItm), (PKSPROPERTY_ITEM) CCPropItm }; static const KSTOPOLOGY Topology = { 1, (GUID*)&KSCATEGORY_DATADECOMPRESSOR, 0, NULL, 0, NULL }; typedef struct tagALL_STREAM_INFO { HW_STREAM_INFORMATION hwStreamInfo; HW_STREAM_OBJECT hwStreamObject; } ALL_STREAM_INFO, *PALL_STREAM_INFO; static ALL_STREAM_INFO infoStreams[] = { { // Input MPEG2 video stream { // HW_STREAM_INFORMATION 1, // NumberOfPossibleInstances KSPIN_DATAFLOW_IN, // DataFlow TRUE, // DataAccessible NUM_VIDEO_IN_FORMATS, // NumberOfFormatArrayEntries ZivaVideoInFormatArray, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved NUM_VIDEO_IN_PROPERTY_ITEMS, // NumStreamPropArrayEntries (PKSPROPERTY_SET)mpegVidPropSet,// StreamPropertiesArray 0, // NumStreamEventArrayEntries; 0, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 0, // MediumsCount NULL, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaVideo, // StreamNumber 0, // HwStreamExtension VideoReceiveDataPacket, // HwReceiveDataPacket VideoReceiveCtrlPacket, // HwReceiveControlPacket { NULL, 0 }, // HW_CLOCK_OBJECT #ifndef EZDVD TRUE, // Dma TRUE, // Pio #else FALSE, // Dma TRUE, // Pio #endif 0, // HwDeviceExtension 0, // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator NULL, // HwEventRoutine { 0, 0 } // Reserved[2] } }, { // Input AC3 audio stream { // HW_STREAM_INFORMATION 1, // NumberOfPossibleInstances KSPIN_DATAFLOW_IN, // DataFlow TRUE, // DataAccessible NUM_AUDIO_IN_FORMATS, // NumberOfFormatArrayEntries ZivaAudioInFormatArray, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved NUM_AUDIO_IN_PROPERTY_ITEMS, // NumStreamPropArrayEntries (PKSPROPERTY_SET)audPropSet, // StreamPropertiesArray SIZEOF_ARRAY( ClockEventSet ), // NumStreamEventArrayEntries; ClockEventSet, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 0, // MediumsCount NULL, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaAudio, // StreamNumber 0, // HwStreamExtension AudioReceiveDataPacket, // HwReceiveDataPacket AudioReceiveCtrlPacket, // HwReceiveControlPacket { // HW_CLOCK_OBJECT AudioClockFunction, CLOCK_SUPPORT_CAN_SET_ONBOARD_CLOCK | CLOCK_SUPPORT_CAN_READ_ONBOARD_CLOCK | CLOCK_SUPPORT_CAN_RETURN_STREAM_TIME }, #ifndef EZDVD TRUE, // Dma TRUE, // Pio #else FALSE, // Dma TRUE, // Pio #endif 0, // HwDeviceExtension 0, // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator AudioEventFunction, // HwEventRoutine { 0, 0 } // Reserved[2] } }, { // Input subpicture stream { // HW_STREAM_INFORMATION 1, // NumberOfPossibleInstances KSPIN_DATAFLOW_IN, // DataFlow TRUE, // DataAccessible NUM_SUBPICTURE_IN_FORMATS, // NumberOfFormatArrayEntries ZivaSubPictureInFormatArray, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved NUM_SUBPICTURE_IN_PROPERTY_ITEMS,//NumStreamPropArrayEntries (PKSPROPERTY_SET)SPPropSet, // StreamPropertiesArray 0, // NumStreamEventArrayEntries; NULL, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 0, // MediumsCount NULL, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaSubpicture, // StreamNumber 0, // HwStreamExtension SubpictureReceiveDataPacket, // HwReceiveDataPacket SubpictureReceiveCtrlPacket, // HwReceiveControlPacket { NULL, 0 }, // HW_CLOCK_OBJECT #ifndef EZDVD TRUE, // Dma TRUE, // Pio #else FALSE, // Dma TRUE, // Pio #endif 0, // HwDeviceExtension 0, // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator NULL, // HwEventRoutine { 0, 0 } // Reserved[2] } }, #if defined(ENCORE) { // Output analog video stream { // HW_STREAM_INFORMATION 2, // NumberOfPossibleInstances KSPIN_DATAFLOW_OUT, // DataFlow FALSE, // DataAccessible NUM_VIDEO_OUT_FORMATS, // NumberOfFormatArrayEntries ZivaVideoOutFormatArray, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved NUM_VIDEO_OUT_PROPERTY_ITEMS, // NumStreamPropArrayEntries (PKSPROPERTY_SET)VideoOutPropSet,//StreamPropertiesArray 0, // NumStreamEventArrayEntries; NULL, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 0, // MediumsCount NULL, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaAnalog, // StreamNumber 0, // HwStreamExtension AnalogReceiveDataPacket, // HwReceiveDataPacket AnalogReceiveCtrlPacket, // HwReceiveControlPacket { NULL, 0 }, // HW_CLOCK_OBJECT TRUE, // Dma FALSE, // Pio 0, // HwDeviceExtension sizeof( KS_FRAME_INFO ), // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator NULL, // HwEventRoutine { 0, 0 } // Reserved[2] } } #elif defined(DECODER_DVDPC) || defined(EZDVD) { // Output VPE video stream { // HW_STREAM_INFORMATION 1, // NumberOfPossibleInstances KSPIN_DATAFLOW_OUT, // DataFlow TRUE, // DataAccessible NUM_VIDEO_OUT_FORMATS, // NumberOfFormatArrayEntries ZivaVideoOutFormatArray, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved 1, // NumStreamPropArrayEntries (PKSPROPERTY_SET)VideoPortPropSet,//StreamPropertiesArray SIZEOF_ARRAY( VPEventSet ), // NumStreamEventArrayEntries; VPEventSet, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 1, // MediumsCount &VPMedium, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaYUV, // StreamNumber 0, // HwStreamExtension VpeReceiveDataPacket, // HwReceiveDataPacket VpeReceiveCtrlPacket, // HwReceiveControlPacket { NULL, 0 }, // HW_CLOCK_OBJECT FALSE, // Dma TRUE, // Pio 0, // HwDeviceExtension 0, // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator NULL, // HwEventRoutine { 0, 0 } // Reserved[2] } } #endif #ifndef OVATION , { // Output CC { // HW_STREAM_INFORMATION 1, // NumberOfPossibleInstances KSPIN_DATAFLOW_OUT, // DataFlow TRUE, // DataAccessible NUM_CC_OUT_FORMATS, // NumberOfFormatArrayEntries CCInfo, // StreamFormatsArray 0, 0, 0, 0, // ClassReserved 1, // NumStreamPropArrayEntries (PKSPROPERTY_SET)CCPropSet, // StreamPropertiesArray 0, // NumStreamEventArrayEntries; 0, // StreamEventsArray; (GUID*)&GUID_NULL, // Category (GUID*)&GUID_NULL, // Name 0, // MediumsCount NULL, // Mediums FALSE // BridgeStream }, { // HW_STREAM_OBJECT sizeof( HW_STREAM_OBJECT ), // SizeOfThisPacket ZivaCCOut, // StreamNumber 0, // HwStreamExtension CCReceiveDataPacket, // HwReceiveDataPacket CCReceiveCtrlPacket, // HwReceiveControlPacket { NULL, 0 }, // HW_CLOCK_OBJECT FALSE, // Dma TRUE, // Pio 0, // HwDeviceExtension 0, // StreamHeaderMediaSpecific 0, // StreamHeaderWorkspace FALSE, // Allocator NULL, // HwEventRoutine { 0, 0 } // Reserved[2] } } #endif }; #endif // _ZIVAGUID_H_