📄 strminfo.cpp
字号:
0L, // DWORD dwBitErrorRate; // Bit error rate for this stream
// 30 fps
NTSCFieldDuration * 2, // REFERENCE_TIME AvgTimePerFrame; // Average time per frame (100ns units)
sizeof KS_BITMAPINFOHEADER, // DWORD biSize;
QCIFWidth, // LONG biWidth;
QCIFHeight, // LONG biHeight;
1, // WORD biPlanes;
16, // WORD biBitCount;
FOURCC_UYVY, // DWORD biCompression;
QCIFWidth * QCIFHeight * 2, // DWORD biSizeImage;
0, // LONG biXPelsPerMeter;
0, // LONG biYPelsPerMeter;
0, // DWORD biClrUsed;
0 // DWORD biClrImportant;
}
};
KSDATAFORMAT StreamFormatVideoPort =
{
{
sizeof(KSDATAFORMAT),
0,
0,
0,
STATIC_KSDATAFORMAT_TYPE_VIDEO,
STATIC_KSDATAFORMAT_SUBTYPE_VPVideo,
STATIC_KSDATAFORMAT_SPECIFIER_NONE
}
};
KS_DATARANGE_VIDEO_VBI StreamFormatVBI_NTSC =
{
// KSDATARANGE
{
{
sizeof(KS_DATARANGE_VIDEO_VBI),
0,
VBISamples * NTSCVBILines, // SampleSize
0, // Reserved
{ STATIC_KSDATAFORMAT_TYPE_VBI },
{ STATIC_KSDATAFORMAT_SUBTYPE_RAW8 },
{ STATIC_KSDATAFORMAT_SPECIFIER_VBI }
}
},
TRUE, // BOOL, bFixedSizeSamples (all samples same size?)
TRUE, // BOOL, bTemporalCompression (all I frames?)
KS_VIDEOSTREAM_VBI, // StreamDescriptionFlags (KS_VIDEO_DESC_*)
0, // MemoryAllocationFlags (KS_VIDEO_ALLOC_*)
// _KS_VIDEO_STREAM_CONFIG_CAPS
{
{ STATIC_KSDATAFORMAT_SPECIFIER_VBI },
KS_AnalogVideo_NTSC_M, // AnalogVideoStandard
{
VBISamples, NTSCVBILines // SIZE InputSize
},
{
VBISamples, NTSCVBILines // SIZE MinCroppingSize; smallest rcSrc cropping rect allowed
},
{
VBISamples, NTSCVBILines // SIZE MaxCroppingSize; largest rcSrc cropping rect allowed
},
1, // int CropGranularityX; // granularity of cropping size
1, // int CropGranularityY;
1, // int CropAlignX; // alignment of cropping rect
1, // int CropAlignY;
{
VBISamples, NTSCVBILines // SIZE MinOutputSize; // smallest bitmap stream can produce
},
{
VBISamples, NTSCVBILines // SIZE MaxOutputSize; // largest bitmap stream can produce
},
1, // int OutputGranularityX; // granularity of output bitmap size
2, // int OutputGranularityY;
0, // StretchTapsX (0 no stretch, 1 pix dup, 2 interp...)
0, // StretchTapsY
0, // ShrinkTapsX
0, // ShrinkTapsY
NTSCFieldDuration, // LONGLONG MinFrameInterval; // 100 nS units
NTSCFieldDuration, // LONGLONG MaxFrameInterval;
VBISamples * 30 * NTSCVBILines * 2 * 8, // LONG MinBitsPerSecond;
VBISamples * 30 * NTSCVBILines * 2 * 8 // LONG MaxBitsPerSecond;
},
// KS_VBIINFOHEADER (default format)
{
NTSCVBIStart, // StartLine -- inclusive
NTSCVBIEnd, // EndLine -- inclusive
SamplingFrequency, // SamplingFrequency
454, // MinLineStartTime; // (uS past HR LE) * 100
900, // MaxLineStartTime; // (uS past HR LE) * 100
// empirically discovered
780, // ActualLineStartTime // (uS past HR LE) * 100
5902, // ActualLineEndTime; // (uS past HR LE) * 100
KS_AnalogVideo_NTSC_M, // VideoStandard;
VBISamples, // SamplesPerLine;
VBISamples, // StrideInBytes;
VBISamples * NTSCVBILines // BufferSize;
}
};
KSDATAFORMAT StreamFormatVideoPortVBI =
{
{
sizeof(KSDATAFORMAT),
0,
0,
0,
STATIC_KSDATAFORMAT_TYPE_VIDEO,
STATIC_KSDATAFORMAT_SUBTYPE_VPVBI,
STATIC_KSDATAFORMAT_SPECIFIER_NONE
}
};
static KS_DATARANGE_ANALOGVIDEO StreamFormatAnalogVideo =
{
// KS_DATARANGE_ANALOGVIDEO
{
sizeof (KS_DATARANGE_ANALOGVIDEO), // FormatSize
0, // Flags
sizeof (KS_TVTUNER_CHANGE_INFO), // SampleSize
0, // Reserved
STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO, // aka MEDIATYPE_AnalogVideo
STATIC_KSDATAFORMAT_SUBTYPE_NONE, // ie. Wildcard
STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO, // aka FORMAT_AnalogVideo
},
// KS_ANALOGVIDEOINFO
{
0, 0, 720, 480, // rcSource;
0, 0, 720, 480, // rcTarget;
720, // dwActiveWidth;
480, // dwActiveHeight;
NTSCFrameDuration, // REFERENCE_TIME AvgTimePerFrame;
}
};
//---------------------------------------------------------------------------
// Capture Stream Formats, Mediums, and PinNames
//---------------------------------------------------------------------------
static PKSDATAFORMAT CaptureStreamFormats[] =
{
(PKSDATAFORMAT) &StreamFormatUYVY_Capture_NTSC,
(PKSDATAFORMAT) &StreamFormatUYVY_Capture_NTSC_QCIF,
(PKSDATAFORMAT) &StreamFormatUYVY_Capture_PAL,
};
#define NUM_CAPTURE_STREAM_FORMATS (SIZEOF_ARRAY (CaptureStreamFormats))
static GUID CaptureStreamPinName = {STATIC_PINNAME_VIDEO_CAPTURE};
//---------------------------------------------------------------------------
// Video Port Stream Formats, Mediums, and PinNames
//---------------------------------------------------------------------------
static PKSDATAFORMAT VPStreamFormats[] =
{
(PKSDATAFORMAT) &StreamFormatVideoPort,
};
#define NUM_VP_STREAM_FORMATS (SIZEOF_ARRAY (VPStreamFormats))
static GUID VideoPortPinName = {STATIC_PINNAME_VIDEO_VIDEOPORT};
//---------------------------------------------------------------------------
// VBI Stream Formats, Mediums, and PinNames
//---------------------------------------------------------------------------
static PKSDATAFORMAT VBIStreamFormats[] =
{
(PKSDATAFORMAT) &StreamFormatVBI_NTSC,
};
#define NUM_VBI_STREAM_FORMATS (SIZEOF_ARRAY (VBIStreamFormats))
static GUID VBIStreamPinName = {STATIC_PINNAME_VIDEO_VBI};
//---------------------------------------------------------------------------
// Video Port VBI Stream Formats, Mediums, and PinNames
//---------------------------------------------------------------------------
static PKSDATAFORMAT VPVBIStreamFormats[] =
{
(PKSDATAFORMAT) &StreamFormatVideoPortVBI,
};
#define NUM_VPVBI_STREAM_FORMATS (SIZEOF_ARRAY (VPVBIStreamFormats))
static GUID VPVBIPinName = {STATIC_PINNAME_VIDEO_VIDEOPORT_VBI};
//---------------------------------------------------------------------------
// Analog Video Stream Formats, Mediums, and PinNames
//---------------------------------------------------------------------------
static PKSDATAFORMAT AnalogVideoFormats[] =
{
(PKSDATAFORMAT) &StreamFormatAnalogVideo,
};
#define NUM_ANALOG_VIDEO_FORMATS (SIZEOF_ARRAY (AnalogVideoFormats))
static GUID AnalogVideoStreamPinName = {STATIC_PINNAME_VIDEO_ANALOGVIDEOIN};
ALL_STREAM_INFO Streams [] =
{
// -----------------------------------------------------------------
// The Video Capture output stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_OUT, // DataFlow
TRUE, // DataAccessible
NUM_CAPTURE_STREAM_FORMATS, // NumberOfFormatArrayEntries
CaptureStreamFormats, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
NumVideoStreamProperties, // NumStreamPropArrayEntries
(PKSPROPERTY_SET)VideoStreamProperties, // StreamPropertiesArray
0, // NumStreamEventArrayEntries;
0, // StreamEventsArray;
&CaptureStreamPinName, // Category
&CaptureStreamPinName, // Name
0, // MediumsCount
NULL, // Mediums
},
// STREAM_OBJECT_INFO ------------------------------------------------
{
FALSE, // Dma
TRUE, // Pio
sizeof (KS_FRAME_INFO), // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
TRUE, // Allocator
NULL, // HwEventRoutine
}
},
// -----------------------------------------------------------------
// The Video Port output stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_OUT, // DataFlow
TRUE, // DataAccessible.
NUM_VP_STREAM_FORMATS, // NumberOfFormatArrayEntries
VPStreamFormats, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
NumVideoPortProperties, // NumStreamPropArrayEntries
(PKSPROPERTY_SET)VideoPortProperties, // StreamPropertiesArray
SIZEOF_ARRAY(VPEventSet), // NumStreamEventArrayEntries
VPEventSet, // StreamEventsArray
&VideoPortPinName, // Category
&VideoPortPinName, // Name
0, // MediumsCount
NULL, // Mediums
},
// STREAM_OBJECT_INFO ------------------------------------------------
{
FALSE, // Dma
FALSE, // Pio
0, // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
FALSE, // Allocator
VPStreamEventProc, // HwEventRoutine;
}
},
// -----------------------------------------------------------------
// The VBI Capture output stream
// -----------------------------------------------------------------
{
// HW_STREAM_INFORMATION -------------------------------------------
{
1, // NumberOfPossibleInstances
KSPIN_DATAFLOW_OUT, // DataFlow
TRUE, // DataAccessible
NUM_VBI_STREAM_FORMATS, // NumberOfFormatArrayEntries
VBIStreamFormats, // StreamFormatsArray
0, // ClassReserved[0]
0, // ClassReserved[1]
0, // ClassReserved[2]
0, // ClassReserved[3]
NumVideoStreamProperties, // NumStreamPropArrayEntries
(PKSPROPERTY_SET)VideoStreamProperties, // StreamPropertiesArray
0, // NumStreamEventArrayEntries;
0, // StreamEventsArray;
&VBIStreamPinName, // Category
&VBIStreamPinName, // Name
0, // MediumsCount
NULL, // Mediums
},
// STREAM_OBJECT_INFO ------------------------------------------------
{
FALSE, // Dma
TRUE, // Pio
sizeof (KS_VBI_FRAME_INFO), // StreamHeaderMediaSpecific
0, // StreamHeaderWorkspace
TRUE, // Allocator
NULL, // HwEventRoutine
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -