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
転送元矩形の水平方向の細分度。この値には、MinCroppingSize と MaxCroppingSize の間で有効な増分を指定する。
CropGranularityY
転送元矩形の垂直方向の細分度。この値には、MinCroppingSize と MaxCroppingSize の間で有効な増分を指定する。
CropAlignX
転送元矩形に必要な水平方向のアラインメント。
CropAlignY
転送元矩形に必要な垂直方向のアラインメント。
MinOutputSize
最小出力サイズ。
MaxOutputSize
最大出力サイズ。
OutputGranularityX
出力の幅の細分度。この値には、MinOutputSize と MaxOutputSize の間で有効な増分を指定する。
OutputGranularityY
出力の高さの細分度。この値には、MinOutputSize と MaxOutputSize の間で有効な増分を指定する。
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 を呼び出して実際のフレーム レートを特定する。
参照