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

📄 pindataranges.cpp

📁 完整的基于Conxant平台的USB电视棒的WIN驱动程序。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
VideoInputPinDataRanges[VIDEO_INPUT_PIN_RANGE_COUNT] =
{
    (PKSDATARANGE)&ANALOGVIDEO_FORMAT
};


const 
PKSDATARANGE 
AudioInputPinDataRanges[AUDIO_INPUT_PIN_RANGE_COUNT] =
{
    (PKSDATARANGE)&AUDIO_FORMAT
};


#define FOURCC_UYVY		mmioFOURCC('U', 'Y', 'V', 'Y')

// {59565955-0000-0010-8000-00AA00389B71}
#ifndef STATIC_KSDATAFORMAT_SUBTYPE_UYVY_VIDEO
#define STATIC_KSDATAFORMAT_SUBTYPE_UYVY_VIDEO\
    0x59565955, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
DEFINE_GUIDSTRUCT("59565955-0000-0010-8000-00AA00389B71", KSDATAFORMAT_SUBTYPE_UYVY_VIDEO);
#define KSDATAFORMAT_SUBTYPE_UYVY_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_UYVY_VIDEO)
#endif  // STATIC_KSDATAFORMAT_SUBTYPE_UYVY_VIDEO


#define ROUND_TO_NEAREST_MULTIPLE(A, B) (B*((A-1)/B) + B)

KS_DATARANGE_VIDEO FORMAT_UYVY_NTSC =
{
   // KSDATARANGE
   {
      {
         sizeof( KS_DATARANGE_VIDEO ),
         0,
         NTSC_DEFAULT_WIDTH * NTSC_DEFAULT_HEIGHT * 2,       // SampleSize
         0,                                                  // Reserved
		STATIC_KSDATAFORMAT_TYPE_VIDEO,			             // MEDIATYPE_Video
		STATIC_KSDATAFORMAT_SUBTYPE_UYVY_VIDEO,	             // MEDIASUBTYPE_UYVY
		STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO	             // FORMAT_VideoInfo
      }
   },
   true,
   true,
   KS_VIDEOSTREAM_PREVIEW,                                   // StreamDescriptionFlags 
   0,                                                        // MemoryAllocationFlags   

   // _KS_VIDEO_STREAM_CONFIG_CAPS
   {
      { STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO },           // GUID
      NTSC_ASPECT_VIDEO_STANDARDS,                           // AnalogVideoStandard
      {NTSC_MAX_WIDTH, NTSC_MAX_HEIGHT},                     //InputSize
      {NTSC_MIN_WIDTH, NTSC_MIN_HEIGHT},                     //MinCroppingSize
      {NTSC_MAX_WIDTH, NTSC_MAX_HEIGHT},                     //MaxCroppingSize
      2,                                                     //CropGranularityX
      2,                                                     //CropGranularityY;
      2,                                                     //CropAlignX
      2,                                                     //CropAlignY;
      {
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MIN_WIDTH,  4),      //MinOutputSize
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MIN_HEIGHT, 2)       
      },
      {
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MAX_WIDTH,  4),      //MaxOutputSize
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MAX_HEIGHT, 2)       
      },
      4,                                                     //OutputGranularityX
      2,                                                     //OutputGranularityY;
      0,                                                     // StretchTapsX 
      0,                                                     // StretchTapsY
      2,                                                     // ShrinkTapsX
      2,                                                     // ShrinkTapsY
      NTSC_FRAME_DURATION_60HZ,                                   // MinFrameInterval
      NTSC_FRAME_DURATION_60HZ,                                   // MaxFrameInterval
      NTSC_FRAMES_PER_SEC * NTSC_MIN_WIDTH * NTSC_MIN_HEIGHT * 2,             // MinBitsPerSecond;
      NTSC_FRAMES_PER_SEC * NTSC_MAX_WIDTH * NTSC_MAX_HEIGHT * 2              // MaxBitsPerSecond;
   },

   // KS_VIDEOINFOHEADER (default format)
   {
      {0,0,0,0},                                             // rcSource
      {0,0,0,0},                                             // rcTarget
      NTSC_DEFAULT_WIDTH * NTSC_DEFAULT_HEIGHT * 2 * NTSC_FRAMES_PER_SEC,    // dwBitRate
      0L,                                                    // dwBitErrorRate
      NTSC_FRAME_DURATION_60HZ,                                   // AvgTimePerFrame

      {
         sizeof( KS_BITMAPINFOHEADER ),                      // biSize
         NTSC_DEFAULT_WIDTH,                                 // biWidth;
         NTSC_DEFAULT_HEIGHT,                                // biHeight;
         1,                                                  // biPlanes;
         16,                                                 // biBitCount;
         FOURCC_UYVY,                                        // biCompression;
         NTSC_DEFAULT_WIDTH * NTSC_DEFAULT_HEIGHT * 2,       // biSizeImage;
         0,                                                  // biXPelsPerMeter;
         0,                                                  // biYPelsPerMeter;
         0,                                                  // biClrUsed;
         0                                                   // biClrImportant;
      }
   }
};



KS_DATARANGE_VIDEO FORMAT_UYVY_PAL =
{
   // KSDATARANGE
   {
      {
         sizeof( KS_DATARANGE_VIDEO ),
         0,
         PAL_DEFAULT_WIDTH * PAL_DEFAULT_HEIGHT * 2,         // SampleSize
         0,                                                  // Reserved
		STATIC_KSDATAFORMAT_TYPE_VIDEO,			             // MEDIATYPE_Video
		STATIC_KSDATAFORMAT_SUBTYPE_UYVY_VIDEO,	             // MEDIASUBTYPE_UYVY
		STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO	             // FORMAT_VideoInfo
      }
   },
   true,
   true,
   KS_VIDEOSTREAM_PREVIEW,                                   // StreamDescriptionFlags 
   0,                                                        // MemoryAllocationFlags   

   // _KS_VIDEO_STREAM_CONFIG_CAPS
   {
      { STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO },           // GUID
      PAL_ASPECT_VIDEO_STANDARDS,                            // AnalogVideoStandard
      {PAL_MAX_WIDTH, PAL_MAX_HEIGHT},                       //InputSize
      {PAL_MIN_WIDTH, PAL_MIN_HEIGHT},                       //MinCroppingSize
      {PAL_MAX_WIDTH, PAL_MAX_HEIGHT},                       //MaxCroppingSize
      2,                                                     //CropGranularityX
      2,                                                     //CropGranularityY;
      2,                                                     //CropAlignX
      2,                                                     //CropAlignY;
      {
         ROUND_TO_NEAREST_MULTIPLE(PAL_MIN_WIDTH,  4),       //MinOutputSize
         ROUND_TO_NEAREST_MULTIPLE(PAL_MIN_HEIGHT, 2)       
      },
      {
         ROUND_TO_NEAREST_MULTIPLE(PAL_MAX_WIDTH,  4),       //MaxOutputSize
         ROUND_TO_NEAREST_MULTIPLE(PAL_MAX_HEIGHT, 2)       
      },
      4,                                                     //OutputGranularityX
      2,                                                     //OutputGranularityY;
      0,                                                     // StretchTapsX 
      0,                                                     // StretchTapsY
      2,                                                     // ShrinkTapsX
      2,                                                     // ShrinkTapsY
      PAL_FRAME_DURATION_50HZ,                                    // MinFrameInterval
      PAL_FRAME_DURATION_50HZ,                                    // MaxFrameInterval
      PAL_FRAMES_PER_SEC * PAL_MIN_WIDTH * PAL_MIN_HEIGHT * 2,               // MinBitsPerSecond;
      PAL_FRAMES_PER_SEC * PAL_MAX_WIDTH * PAL_MAX_HEIGHT * 2                // MaxBitsPerSecond;
   },

   // KS_VIDEOINFOHEADER (default format)
   {
      {0,0,0,0},                                             // rcSource
      {0,0,0,0},                                             // rcTarget
      PAL_DEFAULT_WIDTH * PAL_DEFAULT_HEIGHT * 2 * PAL_FRAMES_PER_SEC,      // dwBitRate
      0L,                                                    // dwBitErrorRate
      PAL_FRAME_DURATION_50HZ,                                    // AvgTimePerFrame

      {
         sizeof( KS_BITMAPINFOHEADER ),                      // biSize
         PAL_DEFAULT_WIDTH,                                  // biWidth;
         PAL_DEFAULT_HEIGHT,                                 // biHeight;
         1,                                                  // biPlanes;
         16,                                                 // biBitCount;
         FOURCC_UYVY,                                        // biCompression;
         PAL_DEFAULT_WIDTH * PAL_DEFAULT_HEIGHT * 2,         // biSizeImage;
         0,                                                  // biXPelsPerMeter;
         0,                                                  // biYPelsPerMeter;
         0,                                                  // biClrUsed;
         0                                                   // biClrImportant;
      }
   }
};

///for luma only use
/////////////////////////////////////////////////////////////////////
// {20203859-0000-0010-8000-00AA00389B71}
#define STATIC_KSDATAFORMAT_SUBTYPE_CXY8_VIDEO \
    0x20203859, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
DEFINE_GUIDSTRUCT("{20203859-0000-0010-8000-00AA00389B71}", KSDATAFORMAT_SUBTYPE_CXY8_VIDEO);
#define KSDATAFORMAT_SUBTYPE_CXY8_VIDEO DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_CXY8_VIDEO)

#define FOURCC_CXY8      mmioFOURCC('Y', '8', ' ', ' ')

KS_DATARANGE_VIDEO FORMAT_CXY8_NTSC =
{
   // KSDATARANGE
   {
      {
         sizeof( KS_DATARANGE_VIDEO ),
         0,
         NTSC_DEFAULT_WIDTH * NTSC_DEFAULT_HEIGHT,           // SampleSize
         0,                                                  // Reserved
		STATIC_KSDATAFORMAT_TYPE_VIDEO,			             // MEDIATYPE_Video
		STATIC_KSDATAFORMAT_SUBTYPE_CXY8_VIDEO,	             // MEDIASUBTYPE_UYVY
		STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO	             // FORMAT_VideoInfo
      }
   },
   true,
   true,
   KS_VIDEOSTREAM_PREVIEW,                                   // StreamDescriptionFlags 
   0,                                                        // MemoryAllocationFlags   

   // _KS_VIDEO_STREAM_CONFIG_CAPS
   {
      { STATIC_KSDATAFORMAT_SPECIFIER_VIDEOINFO },           // GUID
      NTSC_ASPECT_VIDEO_STANDARDS,                           // AnalogVideoStandard
      {NTSC_MAX_WIDTH, NTSC_MAX_HEIGHT},                     //InputSize
      {NTSC_MIN_WIDTH, NTSC_MIN_HEIGHT},                     //MinCroppingSize
      {NTSC_MAX_WIDTH, NTSC_MAX_HEIGHT},                     //MaxCroppingSize
      2,                                                     //CropGranularityX
      2,                                                     //CropGranularityY;
      2,                                                     //CropAlignX
      2,                                                     //CropAlignY;
      {
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MIN_WIDTH,  4),      //MinOutputSize
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MIN_HEIGHT, 2)       
      },
      {
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MAX_WIDTH,  4),      //MaxOutputSize
         ROUND_TO_NEAREST_MULTIPLE(NTSC_MAX_HEIGHT, 2)       
      },
      4,                                                     //OutputGranularityX
      2,                                                     //OutputGranularityY;
      0,                                                     // StretchTapsX 
      0,                                                     // StretchTapsY
      2,                                                     // ShrinkTapsX
      2,                                                     // ShrinkTapsY
      NTSC_FRAME_DURATION_60HZ,                                   // MinFrameInterval
      NTSC_FRAME_DURATION_60HZ,                                   // MaxFrameInterval
      NTSC_FRAMES_PER_SEC * NTSC_MIN_WIDTH * NTSC_MIN_HEIGHT,             // MinBitsPerSecond;
      NTSC_FRAMES_PER_SEC * NTSC_MAX_WIDTH * NTSC_MAX_HEIGHT               // MaxBitsPerSecond;
   },

   // KS_VIDEOINFOHEADER (default format)
   {
      {0,0,0,0},                                             // rcSource
      {0,0,0,0},                                             // rcTarget
      NTSC_DEFAULT_WIDTH * NTSC_DEFAULT_HEIGHT * NTSC_FRAMES_PER_SEC,    // dwBitRate

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -