SMPTE 270M-2002 に近い方式を採用しています。
輝度・色差ともに 8 ビットでサンプリングします。色差成分の水平方向サンプリング周波数は輝度成分の半分です。
◎ | ○ | ◎ | ○ | … |
◎ | ○ | ◎ | ○ | … |
: | : | : | : | … |
◎:輝度と色差 / ○:輝度のみ
水平方向のピクセル数は 16 の倍数、垂直方向のピクセル数は 8 の倍数である必要があります。
インターレースのフィールドオーダーは下表の通りです。
フォーマット | 最上位ラインのフィールド |
---|---|
480i | 2nd |
1080i | 1st |
「16ピクセル×16ピクセル」が基本形です。
Y0 | Y2 |
Y1 | Y3 |
Cr0 |
Cr1 |
Cb0 |
Cb1 |
映像サイズの垂直ピクセル数が16で割り切れない場合は、最下段のみ「32ピクセル×8ピクセル」になります。
Y0 | Y2 | Y1 | Y3 |
Cr0 | Cr1 |
Cb0 | Cb1 |
輝度成分の添え字が SMPTE 270M と異なることに注意してください。
マクロブロックごとに DCT モードを指定することができます。適切な DCT モードの選択はインターレース映像の圧縮率向上に寄与します。
DCT モードには、フィールド間の相違が小さいときに選択するべきフレームモードと、大きいときに選択するべきフィールドモードの2種類があります。
32×8のマクロブロックに対しては必ずフレームモードを適用します。SMPTE 270M と異なり、プログレッシブ映像には DCT モードの概念はありません。
フィールドモードが選択されたマクロブロック内では、上下に隣接する DCT ブロックのデータを下図のように入れ替えます。
A00 | A01 | A02 | A03 | A04 | A05 | A06 | A07 |
A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 |
A20 | A21 | A22 | A23 | A24 | A25 | A26 | A27 |
A30 | A31 | A32 | A33 | A34 | A35 | A36 | A37 |
A40 | A41 | A42 | A43 | A44 | A45 | A46 | A47 |
A50 | A51 | A52 | A53 | A54 | A55 | A56 | A57 |
A60 | A61 | A62 | A63 | A64 | A65 | A66 | A67 |
A70 | A71 | A72 | A73 | A74 | A75 | A76 | A77 |
B00 | B01 | B02 | B03 | B04 | B05 | B06 | B07 |
B10 | B11 | B12 | B13 | B14 | B15 | B16 | B17 |
B20 | B21 | B22 | B23 | B24 | B25 | B26 | B27 |
B30 | B31 | B32 | B33 | B34 | B35 | B36 | B37 |
B40 | B41 | B42 | B43 | B44 | B45 | B46 | B47 |
B50 | B51 | B52 | B53 | B54 | B55 | B56 | B57 |
B60 | B61 | B62 | B63 | B64 | B65 | B66 | B67 |
B70 | B71 | B72 | B73 | B74 | B75 | B76 | B77 |
A00 | A01 | A02 | A03 | A04 | A05 | A06 | A07 |
A20 | A21 | A22 | A23 | A24 | A25 | A26 | A27 |
A40 | A41 | A42 | A43 | A44 | A45 | A46 | A47 |
A60 | A61 | A62 | A63 | A64 | A65 | A66 | A67 |
B00 | B01 | B02 | B03 | B04 | B05 | B06 | B07 |
B20 | B21 | B22 | B23 | B24 | B25 | B26 | B27 |
B40 | B41 | B42 | B43 | B44 | B45 | B46 | B47 |
B60 | B61 | B62 | B63 | B64 | B65 | B66 | B67 |
A10 | A11 | A12 | A13 | A14 | A15 | A16 | A17 |
A30 | A31 | A32 | A33 | A34 | A35 | A36 | A37 |
A50 | A51 | A52 | A53 | A54 | A55 | A56 | A57 |
A70 | A71 | A72 | A73 | A74 | A75 | A76 | A77 |
B10 | B11 | B12 | B13 | B14 | B15 | B16 | B17 |
B30 | B31 | B32 | B33 | B34 | B35 | B36 | B37 |
B50 | B51 | B52 | B53 | B54 | B55 | B56 | B57 |
B70 | B71 | B72 | B73 | B74 | B75 | B76 | B77 |
一般的なものと同じです。
輝度と色差で別々の量子化テーブルを定義できます。SMPTE 270M と異なり、AC の係数はカスタマイズ可能です。
一例としてデフォルトで定義されているテーブルを示します。
32 | 16 | 17 | 18 | 18 | 19 | 42 | 44 |
16 | 17 | 18 | 18 | 19 | 38 | 43 | 45 |
17 | 18 | 19 | 19 | 40 | 41 | 45 | 48 |
18 | 18 | 19 | 40 | 41 | 42 | 46 | 49 |
18 | 19 | 40 | 41 | 42 | 43 | 48 | 101 |
19 | 38 | 41 | 42 | 43 | 44 | 98 | 104 |
42 | 43 | 45 | 46 | 48 | 98 | 109 | 116 |
44 | 45 | 48 | 49 | 101 | 104 | 116 | 123 |
32 | 16 | 17 | 25 | 26 | 26 | 42 | 44 |
16 | 17 | 25 | 25 | 26 | 38 | 43 | 91 |
17 | 25 | 26 | 27 | 40 | 41 | 91 | 96 |
25 | 25 | 27 | 40 | 41 | 84 | 93 | 197 |
26 | 26 | 40 | 41 | 84 | 86 | 191 | 203 |
26 | 38 | 41 | 84 | 86 | 177 | 197 | 209 |
42 | 43 | 91 | 93 | 191 | 197 | 219 | 232 |
44 | 91 | 96 | 197 | 203 | 209 | 232 | 246 |
DC 成分は係数 32 で量子化をして 9 ビットにします。
AC 成分の量子化後の値は SMPTE 270M では 12 ビットまでと定義されていますが、PV4 では家庭用機器に十分な 10 ビットを上限にしています。
このため、AC 成分の最小係数は 16 となります。
量子化テーブルの AC 係数が 32 未満である場合には、量子化後の値が 10 ビットになる可能性があります。
可変長符号は 9 ビット表現までしかないため、このままでは符号化できません。
このため、AC 係数がひとつでも 10 ビットになった DCT ブロックは、量子化テーブルの全 AC 係数を一時的に 2 倍にして、量子化後の絶対値を小さくします。
SMPTE 270M ではビットレートを一定の水準に削減するため、Quantization Number や Class Number を使って、さらなる量子化を行います。
本コーデックにはそのような概念はなく、追加の量子化が行われることはありません。
一般的なものと同じです。
SMPTE 270M と同じです。
マクロブロック内は、以下のデータ順で符号化されます。DCT モード M はインターレース映像のみに存在し、0:フレームモード / 1:フィールドモード です。
一時的な量子化テーブル変更 Q は、0:通常通り / 1:全 AC 係数 2 倍 です。
マクロブロック | M | |
---|---|---|
DCTブロック | Y0 | → DC → Q → AC → EOB |
Y1 | → DC → Q → AC → EOB | |
Y2 | → DC → Q → AC → EOB | |
Y3 | → DC → Q → AC → EOB | |
Cr0 | → DC → Q → AC → EOB | |
Cr1 | → DC → Q → AC → EOB | |
Cb0 | → DC → Q → AC → EOB | |
Cb1 | → DC → Q → AC → EOB |
マルチスレッドで並列処理ができるように、映像領域をインターレースの場合は 4 分割、プログレッシブの場合は 2 分割しています。
どのように領域を分割するかについての説明は省略します。
2ch 16ビットの音声を圧縮なしに扱います。