0

たくさんの情報源を検索して読みましたが、答えが見つからないようです。これらの「タイプ」は等しいと思いましたが、jcodec を使用して h264 をバイトにデコードすると、データ出力は YUV 4:2:O Planar (YUV420P); であると想定しました。これは、私の VPX エンコーダーに期待される入力タイプです。VPX でエンコードされた画像は次のようになります。 ここに画像の説明を入力

したがって、YUVFormat.YUV_420 はおそらく YUV420P ですが、ColorSpace.YUV420 は YUV420 の他の変種であると想定する必要があります。変換ルーチンを見つけることができるように、それがどのバリアントか知っている人はいますか?

4

2 に答える 2

5

1 つの形式は、フル スキャン ラインの u および v データをインターレースします。もう 1 つは U 全体を書き込み、次に v データ全体を書き込みます。これらは Y イメージ全体の後です。yuv420 および yuv420p は、どのレイアウトを指定します。yv420 はすべての u を書き込み、次にすべての v データを書き込みます。yv420p は u と v のデータ スキャン ラインをスキャン ラインごとにインターレースします。データ サイズが小さいため、u ピクセルと v ピクセルの大きなブロックが表示されないため、このイメージは少し誤解を招く可能性があります。

yuv420非P

yuv420p は U1U2U3 V1V2V3 U4U5U6 V4V5V6 をインターレースすると思います

于 2014-10-10T19:49:55.907 に答える
1

yuv420p ではなく yuv420sp を取得していると思います。これにより、画像の水平バーが説明されます。Semi Planar フォーマットは、U プレーンと V プレーンをインターリーブします。

// 420p to 420sp
int frameSize = width * height;
int qFrameSize = frameSize / 4;
for (int i = 0; i < (qFrameSize); i++) {  
    input[frameSize + i*2] = (input[frameSize + qFrameSize + i]);  
    input[frameSize + i*2 + 1] = (input[frameSize + i]);   
} 
于 2014-10-19T01:09:14.203 に答える