📄 pindataranges.cpp
字号:
/*+++ *******************************************************************\
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* This software is provided "AS IS" without warranty of any kind,
* either expressed or implied, including but not limited to the
* implied warranties of noninfringement, merchantability and/or
* fitness for a particular purpose.
* ---------------------------------------------------------------
*
* Copyright (c) 2008 Conexant Systems, Inc.
* All rights reserved.
*
\******************************************************************* ---*/
#include "PinDataRanges.h"
#include <mmsystem.h>
#include "ivideodecoder.h"
#include <bdatypes.h>
#include <bdamedia.h>
const DWORD VBI_STRIDE = 1440;
const DWORD VBI_SAMPLES_PER_LINE = 1440;
const DWORD VBI_SAMPLING_RATE = 27000000;
const DWORD NTSC_VBI_START_LINE = 10; // line 10 - 21
const DWORD NTSC_VBI_END_LINE = 21;
const DWORD NTSC_VBI_LINES = NTSC_VBI_END_LINE - NTSC_VBI_START_LINE + 1;
const DWORD NTSC_FRAME_DURATION_60HZ = 333667;
const DWORD PAL_FRAME_DURATION_50HZ = 400000;
const DWORD NTSC_FRAMES_PER_SEC = 30;
const DWORD PAL_FRAMES_PER_SEC = 25;
const DWORD NTSC_DEFAULT_WIDTH = 720;
const DWORD NTSC_DEFAULT_HEIGHT = 480;
const DWORD NTSC_MAX_WIDTH = 720;
const DWORD NTSC_MAX_HEIGHT = 480;
const DWORD NTSC_MIN_WIDTH = 80;
const DWORD NTSC_MIN_HEIGHT = 60;
const DWORD PAL_DEFAULT_WIDTH = 720;
const DWORD PAL_DEFAULT_HEIGHT = 576;
const DWORD PAL_MAX_WIDTH = 720;
const DWORD PAL_MAX_HEIGHT = 576;
const DWORD PAL_MIN_WIDTH = 88;
const DWORD PAL_MIN_HEIGHT = 72;
const DWORD PAL_VBI_START_LINE = 6;
const DWORD PAL_VBI_END_LINE = 23;
const DWORD PAL_VBI_LINES = PAL_VBI_END_LINE - PAL_VBI_START_LINE + 1;
const INT FIELD_DURATION_60HZ = 166833;
const INT FIELD_DURATION_50HZ = 200000;
const
KS_DATARANGE_ANALOGVIDEO
ANALOGVIDEO_FORMAT =
{
{
sizeof KS_DATARANGE_ANALOGVIDEO, // FormatSize
0, // Flags
0, // SampleSize
0, // Reserved
STATIC_KSDATAFORMAT_TYPE_ANALOGVIDEO, // aka MEDIATYPE_AnalogVideo
STATIC_KSDATAFORMAT_SUBTYPE_NONE, // ie. Wildcard
STATIC_KSDATAFORMAT_SPECIFIER_ANALOGVIDEO, // aka FORMAT_AnalogVideo
}
};
const
KSDATARANGE_AUDIO
AUDIO_FORMAT =
{
{
sizeof(KSDATARANGE), // FormatSize
0, // Flags
0, // SampleSize
0, // Reserved
0x482dee1, 0x7817, 0x11cf, 0x8a, 0x3, 0x0, 0xaa,
0x0, 0x6e, 0xcb, 0x65, // MajorFormat MEDIATYPE_AnalogAudio
STATICGUIDOF(KSDATAFORMAT_SUBTYPE_NONE), // SubFormat MEDIASUBTYPE_None
STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE) // Specifier FORMAT_None
}
};
KS_DATARANGE_VIDEO_VBI g_stream_format_VBI =
{
// KSDATARANGE
{
{
sizeof(KS_DATARANGE_VIDEO_VBI),
0,
VBI_STRIDE * NTSC_VBI_LINES, // SampleSize
0, // Reserved
{STATIC_KSDATAFORMAT_TYPE_VBI},
{STATIC_KSDATAFORMAT_SUBTYPE_RAW8},
{STATIC_KSDATAFORMAT_SPECIFIER_VBI}
}
},
TRUE, //bFixedSizeSamples
TRUE, //bTemporalCompression
KS_VIDEOSTREAM_VBI, //StreamDescriptionFlags
0, //MemoryAllocationFlags
// _KS_VIDEO_STREAM_CONFIG_CAPS
{
{ STATIC_KSDATAFORMAT_SPECIFIER_VBI },
KS_AnalogVideo_NTSC_M, //AnalogVideoStandard
{
VBI_SAMPLES_PER_LINE, NTSC_VBI_LINES //InputSize
},
{
VBI_SAMPLES_PER_LINE, NTSC_VBI_LINES //MinCroppingSize
},
{
VBI_SAMPLES_PER_LINE, NTSC_VBI_LINES //MaxCroppingSize
},
1, //CropGranularityX
1, //CropGranularityY
1, //CropAlignX
1, //CropAlignY
{
VBI_SAMPLES_PER_LINE, NTSC_VBI_LINES //MinOutputSize
},
{
VBI_SAMPLES_PER_LINE, NTSC_VBI_LINES //MaxOutputSize
},
1, //OutputGranularityX
2, //OutputGranularityY
0, //StretchTapsX
0, //StretchTapsY
0, //ShrinkTapsX
0, //ShrinkTapsY
NTSC_FRAME_DURATION_60HZ, //MinFrameInterval
NTSC_FRAME_DURATION_60HZ, //MaxFrameInterval
VBI_STRIDE * NTSC_VBI_LINES * NTSC_FRAMES_PER_SEC * 8 * 2, //MinBitsPerSecond
VBI_STRIDE * NTSC_VBI_LINES * NTSC_FRAMES_PER_SEC * 8 * 2 //MaxBitsPerSecond
},
// KS_VBIINFOHEADER (default format)
{
NTSC_VBI_START_LINE, //StartLine
NTSC_VBI_END_LINE, //EndLine
VBI_SAMPLING_RATE, //SamplingFrequency
255, //MinLineStartTime
900, //MaxLineStartTime
820, //ActualLineStartTime
5942, //ActualLineEndTime;
KS_AnalogVideo_NTSC_M, //VideoStandard;
VBI_SAMPLES_PER_LINE, //SamplesPerLine;
VBI_STRIDE, //StrideInBytes;
VBI_STRIDE * NTSC_VBI_LINES //BufferSize;
}
};
KS_DATARANGE_VIDEO_VBI g_stream_format_VBI_PAL =
{
// KSDATARANGE
{
{
sizeof(KS_DATARANGE_VIDEO_VBI),
0,
VBI_STRIDE * PAL_VBI_LINES, // SampleSize
0, // Reserved
{STATIC_KSDATAFORMAT_TYPE_VBI},
{STATIC_KSDATAFORMAT_SUBTYPE_RAW8},
{STATIC_KSDATAFORMAT_SPECIFIER_VBI}
}
},
TRUE, //bFixedSizeSamples
TRUE, //bTemporalCompression
KS_VIDEOSTREAM_VBI, //StreamDescriptionFlags
0, //MemoryAllocationFlags
// _KS_VIDEO_STREAM_CONFIG_CAPS
{
{ STATIC_KSDATAFORMAT_SPECIFIER_VBI },
KS_AnalogVideo_PAL_B, //AnalogVideoStandard
{
VBI_SAMPLES_PER_LINE, PAL_VBI_LINES //InputSize
},
{
VBI_SAMPLES_PER_LINE, PAL_VBI_LINES //MinCroppingSize
},
{
VBI_SAMPLES_PER_LINE, PAL_VBI_LINES //MaxCroppingSize
},
1, //CropGranularityX
1, //CropGranularityY
1, //CropAlignX
1, //CropAlignY
{
VBI_SAMPLES_PER_LINE, PAL_VBI_LINES //MinOutputSize
},
{
VBI_SAMPLES_PER_LINE, PAL_VBI_LINES //MaxOutputSize
},
1, //OutputGranularityX
2, //OutputGranularityY
0, //StretchTapsX
0, //StretchTapsY
0, //ShrinkTapsX
0, //ShrinkTapsY
PAL_FRAME_DURATION_50HZ, //MinFrameInterval
PAL_FRAME_DURATION_50HZ, //MaxFrameInterval
VBI_STRIDE * PAL_VBI_LINES * PAL_FRAMES_PER_SEC * 8 * 2, //MinBitsPerSecond
VBI_STRIDE * PAL_VBI_LINES * PAL_FRAMES_PER_SEC * 8 * 2 //MaxBitsPerSecond
},
// KS_VBIINFOHEADER (default format)
{
PAL_VBI_START_LINE, //StartLine
PAL_VBI_END_LINE, //EndLine
VBI_SAMPLING_RATE, //SamplingFrequency
255, //MinLineStartTime
900, //MaxLineStartTime
820, //ActualLineStartTime
5942, //ActualLineEndTime;
KS_AnalogVideo_PAL_B, //VideoStandard;
VBI_SAMPLES_PER_LINE, //SamplesPerLine;
VBI_STRIDE, //StrideInBytes;
VBI_STRIDE * PAL_VBI_LINES //BufferSize;
}
};
const
PKSDATARANGE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -