次の方法で共有


VIDEO_STREAM_CONFIG_CAPS 構造体

VIDEO_STREAM_CONFIG_CAPS 構造体は、一定の範囲内のビデオ フォーマットを記述する。ビデオ圧縮フィルタやビデオ キャプチャ フィルタはこの構造体を使って、生成できるフォーマットを記述する。

構文

typedef struct _VIDEO_STREAM_CONFIG_CAPS {
    GUID guid;
    ULONG VideoStandard;
    SIZE InputSize;
    SIZE MinCroppingSize;
    SIZE MaxCroppingSize;
    int CropGranularityX;
    int CropGranularityY;
    int CropAlignX;
    int CropAlignY;
    SIZE MinOutputSize;
    SIZE MaxOutputSize;
    int OutputGranularityX;
    int OutputGranularityY;
    int StretchTapsX;
    int StretchTapsY;
    int ShrinkTapsX;
    int ShrinkTapsY;
    LONGLONG MinFrameInterval;
    LONGLONG MaxFrameInterval;
    LONG MinBitsPerSecond;
    LONG MaxBitsPerSecond;
} VIDEO_STREAM_CONFIG_CAPS;

メンバ

guid

フォーマット タイプを識別する GUID。FORMAT_VideoInfo、FORMAT_VideoInfo2 など。詳細については、「AM_MEDIA_TYPE 構造体」の「formattypeメンバ」を参照すること。

VideoStandard

サポートされるアナログ ビデオ規格。値は、AnalogVideoStandard 列挙型のフラグのビットごとの組み合わせ。または 0。

InputSize

受信するビデオ信号の元のサイズ。コンプレッサの場合、サイズは入力ピンから取得する。キャプチャ フィルタの場合、このサイズは全ピクセルが一意なまま、フィルタがデジタル化できる最大の信号サイズである。

MinCroppingSize

使用可能な最小の転送元矩形。この転送元矩形は、VIDEOINFOHEADER 構造体または VIDEOINFOHEADER2 構造体の rcSource メンバで定義されている。

MaxCroppingSize

使用可能な最大の転送元矩形。

CropGranularityX

転送元矩形の水平方向の細分度。この値には、MinCroppingSizeMaxCroppingSize の間で有効な増分を指定する。

CropGranularityY

転送元矩形の垂直方向の細分度。この値には、MinCroppingSizeMaxCroppingSize の間で有効な増分を指定する。

CropAlignX

転送元矩形に必要な水平方向のアラインメント。

CropAlignY

転送元矩形に必要な垂直方向のアラインメント。

MinOutputSize

最小出力サイズ。

MaxOutputSize

最大出力サイズ。

OutputGranularityX

出力の幅の細分度。この値には、MinOutputSizeMaxOutputSize の間で有効な増分を指定する。

OutputGranularityY

出力の高さの細分度。この値には、MinOutputSizeMaxOutputSize の間で有効な増分を指定する。

StretchTapsX

フィルタがイメージを水平方向に伸長できる長さを示す。

StretchTapsY

フィルタがイメージを垂直方向に伸長できる長さを示す。

ShrinkTapsX

フィルタがイメージを水平方向に縮小できる長さを示す。

ShrinkTapsY

フィルタがイメージを垂直方向に縮小できる長さを示す。

上の 4 つの構造体メンバは、次の値を使う。

説明
0 伸長/縮小をサポートしていない。
1 ピクセル ダブリング (伸長) を使うか、またはピクセルを除去 (縮小) する。
2 補間 (タップ数 2) を使う。
3 以上 補間 (タップ数 2 より大きい) を使う。

MinFrameInterval

最小のフレーム時間幅 (100 ナノ秒単位)。この値は、キャプチャ フィルタにのみ適用される。

MaxFrameInterval

最大のフレーム時間幅 (100 ナノ秒単位)。この値は、キャプチャ フィルタにのみ適用される。

MinBitsPerSecond

このピンが生成できる最小のデータ レート。

MaxBitsPerSecond

このピンが生成できる最大のデータ レート。

注意

IAMStreamConfig::GetStreamCaps メソッドはこの構造体を返す。アプリケーションはこの情報を使って、ビデオ圧縮フィルタまたはビデオ キャプチャ フィルタの出力フォーマットを修正できる。

たとえば、フィルタが転送元矩形について次の値を返してくるとする。

  • MinCroppingSize = (160, 120)
  • MaxCroppingSize = (320, 240)
  • CropGranularityX = 4
  • CropGranularityY = 8
  • CropAlignX = 2
  • CropAlignY = 4

これらの数値によって、VIDEOINFOHEADER 構造体または VIDEOINFOHEADER2 構造体の rcSource メンバとして有効な一連の矩形が定義される。この例では、最小の転送元矩形は幅 160 ピクセル × 高さ 120 ピクセルである。幅は 4 ピクセル間隔で最大 320 ピクセルまで伸長できる。高さは 8 ピクセル間隔で最大 240 ピクセルまで伸長できる。すなわち、有効な幅とは 160、164、168 ... 320 であり、有効な高さとは、120、128、136 ... 240 である。

CropAlignX メンバおよび CropAlignY メンバによって、転送元矩形の左上角の位置が定義される。たとえば、前の値を前提とすると、次の矩形が有効である。

  • (0, 0, 160, 120)
  • (2, 0, 162, 120)
  • (2, 8, 162, 128)

同じように、MinOutputSize メンバ、MaxOutputSize メンバ、OutputGranularityX メンバ、OutputGranularityY メンバによって、BITMAPINFOHEADER 構造体の biWidth メンバおよび biHeight メンバについてサポートされている有効な値が定義される。

キャプチャ フィルタの場合、VIDEOINFOHEADER 構造体または VIDEOINFOHEADER2 構造体の AvgTimePerFrame メンバで値が指定されていると仮定して、MinFrameInterval メンバおよび MaxFrameInterval メンバによって各フレームの最小時間幅および最大時間幅が定義される。フィルタがこれら 2 つの値の間に収まるフレーム レートをすべてサポートしているとは限らない。IAMStreamConfig::SetFormat メソッドは、フレーム レートにフィルタがサポートする値に最も近い値を設定する。SetFormat が成功した場合は、IAMStreamConfig::GetFormat を呼び出して実際のフレーム レートを特定する。

参照