📄 strmid.h
字号:
},
{
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 (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
}
};
// 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
}
};
// Copy Protect
static const KSPROPERTY_ITEM cppPropItm[]={
{
KSPROPERTY_DVDCOPY_CHLG_KEY,
(PFNKSHANDLER) TRUE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_CHLGKEY ),
(PFNKSHANDLER) TRUE,
NULL,
0,
NULL,
NULL,
0
},
{
KSPROPERTY_DVDCOPY_DVD_KEY1,
FALSE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_BUSKEY ),
(PFNKSHANDLER) TRUE,
NULL,
0,
NULL,
NULL,
0
},
{
KSPROPERTY_DVDCOPY_DEC_KEY2,
(PFNKSHANDLER) TRUE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_BUSKEY ),
(PFNKSHANDLER) FALSE,
NULL,
0,
NULL,
NULL,
0
},
{
KSPROPERTY_DVDCOPY_TITLE_KEY,
FALSE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_TITLEKEY ),
(PFNKSHANDLER) TRUE,
NULL,
0,
NULL,
NULL,
0
},
{
KSPROPERTY_DVDCOPY_DISC_KEY,
FALSE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_DISCKEY ),
(PFNKSHANDLER) TRUE,
NULL,
0,
NULL,
NULL,
0
},
{
KSPROPERTY_DVDCOPY_SET_COPY_STATE,
(PFNKSHANDLER)TRUE,
sizeof( KSPROPERTY ),
sizeof( KS_DVDCOPY_SET_COPY_STATE ),
(PFNKSHANDLER) TRUE,
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
// },
};
// 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
*****************************************************************************/
//GUID Mpeg2Vid = {STATIC_KSPROPSETID_Mpeg2Vid};
// original is const
// modify for except warning
static /* const*/ KSPROPERTY_SET mpegVidPropSet[] = {
{
&KSPROPSETID_Mpeg2Vid,
SIZEOF_ARRAY(mpegVidPropItm),
(PKSPROPERTY_ITEM)mpegVidPropItm
},
{
&KSPROPSETID_CopyProt,
SIZEOF_ARRAY(cppPropItm),
(PKSPROPERTY_ITEM)cppPropItm
},
{
&KSPROPSETID_TSRateChange,
SIZEOF_ARRAY(RateChangePropItm),
(PKSPROPERTY_ITEM)RateChangePropItm
},
// {
// &KSPROPSETID_CopyProt,
// SIZEOF_ARRAY(MacroVisionPropItm),
// (PKSPROPERTY_ITEM) MacroVisionPropItm
// }
};
static /* const*/ KSPROPERTY_SET mpegAudioPropSet[] = {
{
&KSPROPSETID_AudioDecoderOut,
SIZEOF_ARRAY(audPropItm),
(PKSPROPERTY_ITEM) audPropItm
},
{
&KSPROPSETID_CopyProt,
SIZEOF_ARRAY(cppPropItm),
(PKSPROPERTY_ITEM)cppPropItm
},
{
&KSPROPSETID_TSRateChange,
SIZEOF_ARRAY(RateChangePropItm),
(PKSPROPERTY_ITEM)RateChangePropItm
}
};
static KSPROPERTY_SET SPPropSet[] = {
{
&KSPROPSETID_DvdSubPic,
SIZEOF_ARRAY(spPropItm),
(PKSPROPERTY_ITEM)spPropItm
},
{
&KSPROPSETID_CopyProt,
SIZEOF_ARRAY(cppPropItm),
(PKSPROPERTY_ITEM)cppPropItm
},
{
&KSPROPSETID_TSRateChange,
SIZEOF_ARRAY(RateChangePropItm),
(PKSPROPERTY_ITEM)RateChangePropItm
}
};
GUID vpePropSetid = {STATIC_KSPROPSETID_VPConfig};
static /* const */ KSPROPERTY_SET VideoPortPropSet[] = {
&vpePropSetid,
SIZEOF_ARRAY(VideoPortPropItm),
(PKSPROPERTY_ITEM)VideoPortPropItm
};
static /* const */ KSPROPERTY_SET CCPropSet[] = {
&KSPROPSETID_Connection,
SIZEOF_ARRAY(CCPropItm),
(PKSPROPERTY_ITEM) CCPropItm
};
/*****************************************************************************
other
*****************************************************************************/
static const KSTOPOLOGY_CONNECTION Connections[] = {
/* FromNode FromPin ToNode ToPin */
{(ULONG)-1, strmVideo, (ULONG)-1, strmCCOut},
{(ULONG)-1, strmVideo, (ULONG)-1, strmYUVVideo},
{(ULONG)-1, strmSubpicture, (ULONG)-1, strmYUVVideo}
};
static const KSTOPOLOGY Topology = {
1,
(GUID *) & KSCATEGORY_DATADECOMPRESSOR,
0,
NULL,
SIZEOF_ARRAY (Connections),
Connections
};
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,
}
};
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,
}
};
// device property
typedef struct _DevPropData {
DWORD data;
} DEVPROPDATA, *PDEVPROPDATA;
static const KSPROPERTY_ITEM devicePropItm[]={
{0,
(PFNKSHANDLER)TRUE,
sizeof(KSPROPERTY),
sizeof(DEVPROPDATA),
(PFNKSHANDLER)TRUE,
NULL,
0,
NULL,
NULL,
0
}};
static /* const*/ KSPROPERTY_SET devicePropSet[] = {
&GUID_NULL,
SIZEOF_ARRAY(devicePropItm),
(PKSPROPERTY_ITEM)devicePropItm
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -