⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pindataranges.cpp

📁 完整的基于Conxant平台的USB电视棒的WIN驱动程序。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/*+++ *******************************************************************\ 
* 
*  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 + -