私は Android で NV21 イメージをしばらく使用しており、NV21 イメージの不適切なインデックス バイトが原因である可能性があるバグを追跡しています。
この質問の回答の画像には、Y、U、および V バイトが画像バッファーにどのように配置されているかがよくわかります。許可されているかどうかはわかりませんが、以下に埋め込みます。
- 画像の次元が奇数の場合 (パリティなど) はどうなりますか? それはこの形式でも可能ですか?
- この形式の公式仕様はどこかにありますか?
奇数次元の画像 (つまり、WxH 画像の W または H のいずれかが奇数) の場合、Y 平面はいつものように WxH サンプルで完全にサンプリングされ、その後に 2(⌈W/ 2⌉ x ⌈H/2⌉) クロマ サンプル。各画像の次元を 2 で割りますが、切り捨てではなく切り上げます。
そのため、画像の端にある一部のピクセルには、元のピクセルの 4 つではなく、1 つまたは 2 つのみのクロマ サンプルがあります。このリンクで、他のいくつかのライブラリで、以前に YUV 画像の奇数次元の処理に問題があったことがわかります。
2番目の質問については、公式の仕様は見ていませんが、Androidフレームワークでこの形式を処理するコードを見たことがあります。それへのリンクを掘り下げて、この回答に追加できるかどうかを確認します.