イメージのストライド

グラフィックス ハードウェアや GDI がビットマップ用のメモリ バッファを割り当てる場合、何らかの境界に整列させるために余分なバイトで行をパディングすることがある。バイト単位のイメージの幅に、追加したパディングの幅を加えたものを、"ストライド" と呼ぶ。ストライドは、イメージの最初の行の先頭から次の行の先頭に進むために必要なバイト数であると考えてもよい。

RGB DIB の場合、ストライドは常に、少なくとも DWORD 境界に整列される。このことは、ビット深度が 2 の偶数乗である YUV フォーマットにも該当する。デコーダおよびビデオ ソースは、BITMAPINFOHEADERbiWidth メンバがイメージの幅であるフォーマットを提示するべきである。ビデオ レンダラは、biWidth がサーフェイスのストライドに等しくなり、VIDEOINFOHEADER または IDEOINFOHEADER2 構造体の rcTarget メンバがイメージの幅を指定するように、このフォーマットを変更する場合がある。ビデオ レンダラは、出力ピンで IPin::QueryAccept を呼び出して、新しいフォーマットを次のメディア サンプルに接続して、変更したフォーマットを提示する。詳細については、「動的フォーマット変更」を参照すること。ビデオ レンダラがストライドを指定するためにフォーマットを変更しない場合は、biWidth の値を最も近い DWORD 境界に丸めるべきである。ただし、2 の累乗ではない YUV フォーマットは除く。

32 ビット ピクセル フォーマットであっても、ストライドがイメージの幅と等しいと仮定してはならない。多くのグラフィックス カードでは 64 ビット以上のアラインメントが必要になるからである。