MPEG-2の規格には、Iピクチャー、Pピクチャー、Bピクチャーが存在する。このI, P, BのピクチャーのグループをGOP(Group Of Picture)と呼ぶ。例えばDVDのGOP構造はIBBPBBPBBPBBPBBとなっている。
Iピクチャーはフレーム内圧縮しか行わないJPEG画像のようなもの。Pピクチャーは順方向(過去の画像に対して)の参照を行うことができる。Bピクチャーは両方向(過去と未来の画像に対して)参照を行うことができる。
実はこの時点で、「Pピクチャーは必ず順方向の参照を行う」「Bピクチャーは必ず両方向の参照を行う(だからBピクチャーを利用する符号化は重い)」と私は考えていた。が、講義を受ける辺り、そうではないらしい。
あくまでもI,P,Bピクチャーの時点では”参照を行うことが可能である”だけであり、実際に参照するかどうかを決めるのはmacroblockのようだ。Pピクチャー、Bピクチャーにてそれぞれ指定することのできるmacroblock_typeが異なり、このmacroblock_typeによって参照を行うかどうかが決定される。
よって、Iピクチャーは全てIntraのmacroblockだが、Pピクチャーで全てがIntraのmacroblockであっても良い。Bピクチャーの中身が全てIntraのmacroblockであっても良い。
実際にBピクチャーの前後にシーンチェンジが存在する場合、両方向の参照ではなく片方向への参照のみになるケースがあり、シーンチェンジの検出に利用できるという話であった(既に特許申請済みだという)。この点については確かにそうで、Bの前後でシーンチェンジがあった場合に両方向の差分を活用するよりは片方よりの予測の方がコストが少ない。
P,Bピクチャー内でどのタイプのmacroblockを選択するかについては、全部やってみる、らしいことを聞いた。BピクチャーではIntra,Forward Pre, Backword Pre,Bi Preと、4種の参照を検証しなければならないことになる。だから重いんだ、という説明で合点がいった。
不思議だったのは、PピクチャーにてIntraのmacroblockが微小だが存在していた点だ。順方向参照を行うよりもIntraで処理した方がコストが良くなることはあるのだろうか。それとも画質優先のためにIntraを選択したのだろうか。
このmacroblockに対する知見をネットワーク伝送に生かせないだろうか考えているが、いい案が浮かばない。残念だ。