1428 lines
36 KiB
C
1428 lines
36 KiB
C
/******************************************************************************\
|
|
* *
|
|
* 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 <ksmedia.h>
|
|
#include <wingdi.h>
|
|
|
|
#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_
|