WorkingWithImages

あらゆる画像は、pitchを与えられます。pitchは、基本的に、"1ラインの長さ"として説明されうるものです。おかしいのは、pitchは画像の幅と等しくなくてもよいということです。

たとえば、画像をいくらかクロップ(Crop)する場合、変わるのは画像の幅だけです。pitchとラインの実バイト数は、同じままです。

そのとき、画像は、このようにレイアウトされます:

rrrrrrrrrrrrrrrrpppp
rrrrrrrrrrrrrrrrpppp
rrrrrrrrrrrrrrrrpppp

'r'が使われた画像内の画素であるとすると、'p'は各ラインの後に挿入されたパディング*1です。

簡潔な情報(Fast Information)

Width = ピクセル単位での幅。

Rowsize = 1ラインのバイト数。

Pitch = 1ラインの最初から次までのバイト単位での距離。

vi->BytesFromPixels(n) = バイト単位でのnピクセルのサイズ - pitchを考慮しないので、1ライン以内でのみ使用される。

PlanarImageFormat 用:

Aligned rowsize = バイト単位での幅。つねに8で割り切れる。

VideoInfo vs. PVideoFrame

VideoInfoは、"不変(constant)な"ビデオ情報であると考えられます。これは、どんな方法でも、変わることができません。幅、高さや色空間といった情報は、変わることができません。そのため、あなたがこれから得る情報は、あなたが受け取るすべてのフレームからのものと同じであると信頼されます。あなたが受け取ったVideoInfoを変更するとしても、それが、あなたが受け取るフレームを変えることはないでしょう。しかし、修正された'VideoInfo vi'はenv->NewVideoFrame(vi)に送ることができ、変更されたパラメータを伴う新しいフレームが生成されるでしょう。あなた自身のフィルタだけが、あなたのフィルタに与えられたVideoInfoを修正することができます。

PVideoFrameは、あなたがリクエストした特定のフレームについての情報を含みます。高さ(Height)やRowsizeは変わるべきではありません(これはバグと考えられます)。Pitchは変わります。そのため、あなたが受け取るすべてのフレームに関して、pitchが同じであることを当てにすることはできません。

さらなる情報

DataStorageInAviSynthについて、もっと多くのことを見てください。
ColorSpacesについて、もっと多くのことを見てください。


註: このページは、http://www.avisynth.nl/WorkingWithImagesの日本語訳です。


最終更新日時: 2014-03-12 (水) 23:41:02 (3691d)