📄 strmid.h
字号:
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
strmid.h
Abstract:
sream descriptors and other definitions for DVDTS
Environment:
Kernel mode only
Notes:
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.
Copyright (c) 1998 Microsoft Corporation. All Rights Reserved.
Some portions adapted with permission from code Copyright (c) 1997-1998 Toshiba Corporation
Revision History:
5/1/98: created
--*/
#include "ksmedia.h" // Definition ?
GUID g_S3Guid = {DDVPTYPE_E_HREFL_VREFL};
GUID g_ATIGuid = {0x1352A560L,0xDA61,0x11CF,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8}; // DDVPTYPE_BROOKTREE
// define this macro to facilitate giving the pixel format
#define MKFOURCC(ch0, ch1, ch2, ch3) ((DWORD)(BYTE)(ch0) | \
((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | \
((DWORD)(BYTE)(ch3) << 24 ))
/*****************************************************************************
define the data formats used by the pins in this minidriver
*****************************************************************************/
/*
Define the Mpeg2Video format that the minidriver supports
*/
KSDATAFORMAT hwfmtiMpeg2Vid
= {
sizeof (KSDATAFORMAT),
0,
0,
0,
//
// specify media type, subtype, and format from mpeg2 video
//
STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
STATIC_KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO,
STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
};
/*
Define the supported AC3 audio format
*/
KSDATAFORMAT_WAVEFORMATEX Mpeg2AudioFormat = {
{
sizeof (KSDATAFORMAT_WAVEFORMATEX),
0,
1,
0,
STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
STATIC_KSDATAFORMAT_SUBTYPE_AC3_AUDIO,
STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
},
{
0, // WAVE_FORMAT_UNKNOWN
6, // channels
48000, // sampling rate
0, // byte rate
768, // align
0, // resolution
0 // extra
}
};
/*
Define the supported LPCM audio format.
*/
KSDATAFORMAT_WAVEFORMATEX LPCMAudioFormat = {
{
sizeof (KSDATAFORMAT_WAVEFORMATEX),
0,
1,
0,
STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
STATIC_KSDATAFORMAT_SUBTYPE_LPCM_AUDIO,
STATIC_KSDATAFORMAT_SPECIFIER_WAVEFORMATEX
},
{
WAVE_FORMAT_PCM,
2, // channels
48000, // sampling rate
192000, // byte rate
4, // alignment
16, // bit resolution
0 // extra
}
};
/*
Define the supported Sub picture format
*/
KSDATAFORMAT hwfmtiMpeg2Subpic = {
sizeof (KSDATAFORMAT),
0,
0,
0,
//
// specify media type, subtype
//
STATIC_KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK,
// STATIC_KSDATAFORMAT_TYPE_MPEG2_PES,
STATIC_KSDATAFORMAT_SUBTYPE_SUBPICTURE,
// STATIC_KSDATAFORMAT_FORMAT_NONE
// STATIC_KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
// STATIC_KSDATAFORMAT_FORMAT_MPEG2_VIDEO
STATIC_GUID_NULL
};
KSDATAFORMAT hwfmtiVPEOut
= {
sizeof (KSDATAFORMAT),
0,
0,
0,
STATIC_KSDATAFORMAT_TYPE_VIDEO,
STATIC_KSDATAFORMAT_SUBTYPE_VPVideo,
// STATIC_KSDATAFORMAT_TYPE_VIDEO,
STATIC_KSDATAFORMAT_SPECIFIER_NONE
// STATIC_KSDATAFORMAT_TYPE_VIDEO
};
KSDATAFORMAT hwfmtiCCOut
= {
sizeof(KSDATAFORMAT),
0,
200,
0,
STATIC_KSDATAFORMAT_TYPE_AUXLine21Data,
STATIC_KSDATAFORMAT_SUBTYPE_Line21_GOPPacket,
// STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO
STATIC_KSDATAFORMAT_SPECIFIER_NONE
};
//
// this array indicates that stream 0 (as constructed in sscmd.c) supports
// the MPEG 2 video format. If stream zero supported more formats, the
// addresses of these formats would be additional elements in this array.
//
PKSDATAFORMAT Mpeg2VidInfo[] = {
&hwfmtiMpeg2Vid // pointer to the MPEG 2 video format block
};
//
// this structure indicates that the audio stream supports two
// formats: AC3 (Mpeg2) and Linear PCM, as constructed above.
//
PKSDATAFORMAT AudioFormatBlocks[] = {
(PKSDATAFORMAT) &Mpeg2AudioFormat, // pointer to the Mpeg2 format
(PKSDATAFORMAT) &LPCMAudioFormat // pointer to the LPCM format
};
// Sub-pic
PKSDATAFORMAT Mpeg2SubpicInfo[] = {
&hwfmtiMpeg2Subpic // pointer to the MPEG 2 subpic format block
};
PKSDATAFORMAT VPEInfo[] = {
&hwfmtiVPEOut
};
PKSDATAFORMAT CCInfo[] = { // CC output formats array
&hwfmtiCCOut
};
/*****************************************************************************
define the Individual property items for the video property sets
*****************************************************************************/
// Video
static const KSPROPERTY_ITEM mpegVidPropItm[]={
{KSPROPERTY_DVDSUBPIC_PALETTE,
FALSE,
sizeof(KSPROPERTY),
sizeof(KSPROPERTY_SPPAL),
(PFNKSHANDLER) FALSE,
NULL,
0,
NULL,
NULL,
0
}};
// Audio
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
}
};
// Sub-pic
static const KSPROPERTY_ITEM spPropItm[]={
{KSPROPERTY_DVDSUBPIC_PALETTE,
FALSE,
sizeof (KSPROPERTY),
sizeof (KSPROPERTY_SPPAL),
(PFNKSHANDLER) TRUE,
NULL,
0,
NULL,
NULL,
0
},
{KSPROPERTY_DVDSUBPIC_HLI,
FALSE,
sizeof (KSPROPERTY),
sizeof (KSPROPERTY_SPHLI),
(PFNKSHANDLER)TRUE,
NULL,
0,
NULL,
NULL,
0
},
{KSPROPERTY_DVDSUBPIC_COMPOSIT_ON,
FALSE,
sizeof (KSPROPERTY),
sizeof (KSPROPERTY_COMPOSIT_ON),
(PFNKSHANDLER)TRUE,
NULL,
0,
NULL,
NULL,
0
}
};
// NTSC
static const KSPROPERTY_ITEM MacroVisionPropItm[] = {
{
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
}
};
// VPE
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -