インターネット MPEG

(OMWF レポート) 変換 MPEG-1 Video 方式 (1997年7月号インターフェースに掲載)
片山泰男
1997 年 3 月 31 日
目次 戻る∧ 開始=≫
1. はじめに
2. ソフトウェアデコーダの速度
3. 低レートとソフトウェアデコーダ
4. インターネットでの動画像応用
5. MPEG-1 の低レートエンコード (1996 年 9 月 18 日)
6. 画像レートがやはり問題
7. B-picture の有効性実験 (1996 年 10 月 23 日)
8. 標準をどうするのか
9. レートコントロールの低レート用改造 (1996 年 12 月 5 日)
10. SIF から QSIF へのフィルターのチェック (1996 年 12 月 5 日)
11. パラメータ制限と低レート用交換形式の提案
12. トランスコーダの機能
13. MPEG-1 のヘッダのオーバーヘッド
14. MPEG-1 のパラメータの制限
15. MPEG-1 のシンタックスの簡単化
16. さいごに

≪=BACK TOP∧ NEXT=≫

1. はじめに

まずは 5 年前の話からはじめよう。MPEG-1 の IS 化の段階であった、 1992 年 10 月のロンドン会合で、 二つの国の提案があった。 一つはアメリカの提案で、IS の文書からデコーダの精度の記述を part 4 の compliance (適合性試験) に移し、IDCT を含めたデコーダの精度を実質的に緩めることの提案であった。 これはソフトウェアデコーダなどの安価なデコーダの存在を可能にするということで、認められた。 もう一つは、PC 486 で CIF の 12.5Hz のデコードが可能だから現状の 1/2 の画像レートを入れよという、 フランスの提案があった。ところが、低い画像レートを認めると、 ハードウェアデコーダの入力バッファの量が大きくなることが指摘され、フランスの提案は認められなかった。 (脚注参照) 結果的に MPEG-1 の画像レートは、表 1. のようになっている。

           表 1. 画像レート
+--------------+-------------------------+
| picture_rate |    picture per second   |
+--------------+-------------------------+
|      0000    |    forbidden            |
|      0001    |    23.976               |
|      0010    |    24                   |
|      0011    |    25                   |
|      0100    |    29.97                |
|      0101    |    30                   |
|      0110    |    50                   |
|      0111    |    59.94                |
|      1000    |    60                   |
|      ...     |    reserved             |
|      1111    |    reserved             |
+--------------+-------------------------+

≪=BACK TOP∧ NEXT=≫

この時点の事情を若干説明すると、次のようになる。 MPEG-1 の標準化は、主にハードウェアによるエンコード/デコードを念頭においた家電業界と、 LSI メーカーのための標準化としてスタートした。 LSI メーカーは、使われない LSI を作るリスクを避けるために、 動画像符号化の標準化が必要だった。1988 年の MPEG の発足当時は、 だれもソフトウェアデコーダが現実になるとは予想しなかった。 4 年後、MPEG-1 が IS になる段階で初めて、 ソフトウェアデコーダの方向も可能にしようという動きが出てきたのである。

MPEG はハードウェアデコーダがスムーズにデコードできることを最大の課題にして、 さまざまな仕組みをいれた。 その際、ソフトウェアデコーダにとっては単に不利なものであっても、 問題にされなかったという面がある。 例えば、MPEG の VBV バッファは、その基本的考え方自体、 ソフトウェアデコーダにとっては、ほとんど、なにも意味しない。 ソフトウェアデコーダにとっては、低い画像レートはなんら問題ではなかった。 逆に高い画像レートに対応した、高い必要処理量の面では LSI には対抗できなかった。 低い画像レートを標準に入れて、ソフトウェアデコーダにも MPEG の道を開くことを LSI メーカーは防いだのである。

ところがいま、時代は MPEG-1 のデコーダ LSI を陳腐化しようとしている。 ソフトウェアデコーダは、CPU の高速化につれて自然に高速化してきた。

(脚注) インターフェース 1993 年 3 月号" '92年 10月 MPEG 標準化会議とソフトウェアデコーダの話題" では、私は不覚にも、このフランス提案に対する MPEG の結論を、間違って報告した。


≪=BACK TOP∧ NEXT=≫

2. ソフトウェアデコーダの速度

ソフトウェアデコーダでは、30 Hz 以上の画像レートを確保することは、 ソフトウエアの高速化を努力しても難しかった。しかしこれは近年、徐々に現実に可能になってきた。

私は 92 年の会合当時は、70 MIPS といわれた、MIPS の R4000 CPU (内部 clock 100MHz) のワークステーションを使っていた。 そのころより少し前から自身で C 言語で書いた X に表示する MPEG-1 デコーダは、 1.15Mbit/s の SIF (352x240サイズ) の典型的ビットストリームで 7Hz であった。 このデコーダは速度も求めたが、むしろ画質優先のデコーダである。

その後、DEC Alpha 5000 という 200 MHz の 64 bit マシンに移ったとき、14 Hz になった。 現在までの最適化、つまりプログラミングの改良で、同じ機械で通常表示 36 Hz、 拡大表示(縦、横ともに 2 倍の大きさで表示すること)で、24 Hz が出るようになった。 最近、Pentium 150 MHz と Linux でデコーダの性能を比較すると、 Pentium 用には全く最適化していないのに alpha の 70%の性能 (通常表示で 26.5Hz、拡大表示で 20 Hz) を出していた。

当然のことだが、ソフトウェアデコーダの速度は CPU 速度が最も主要な要素である。 プログラミングの技術以外としてはほとんど CPU の速度に依存するのである。 最新の 200 MHz PentiumPro(または MMX) であれば、Pentium 150 MHz の 2 倍(MMX で 1.5 倍、 アセンブラで MMX 対応をすれば 5, 6 倍)程度出ると予測される。もしそうなら、 通常表示で 50 Hz、拡大表示で 40 Hz が出ることになる。 いまや、 MPEG-1 は速度の問題はなくなり、 次の目標は MPEG-2 のソフトウェアデコードだと、業界の巷でいわれるのも、 多少の誇張はあっても、あながち嘘ではない。(嘘であるのは、全画面表示の時の速度と画質だろう。)

ソフトウェアデコーダのすごいところは、場所をとらない、 幾つも同時に動かせることだけでなく、放っておいても高速になることである。 しかも 92 年のソフトウェアは、基本的にいまも現役である。 LSI を作ってしまってはこういうことはない。


≪=BACK TOP∧ NEXT=≫

3. 低レートとソフトウェアデコーダ

低ビットレートは毎秒の符号量が少ないので、それに必要な処理量も、ビットレート比例の部分は 比例的に減少する。VLC (可変長符号)のデコード、逆量子化、IDCT 処理、予測との加算がこれに当たる。 ビットレート比例でない処理は、たいてい画像サイズに比例する部分であり、 それは動き補償(MC)予測と、表示処理(YUV から RGB への変換と ディザ処理)である。 低レートでは、ビットレート比例部分は相対的に無視できる程度の処理に減少する。

例えば、OMWF の Internet MPEG 小委員会で実験に供された Sony の MPEG の低レートのビットストリームでは、 64 kbit/s QSIF(176x112)で、上で説明したデコーダが Pentium 150 MHz で、 通常表示 173 Hz、拡大表示 117 Hz、3 倍拡大表示 65 Hz、4 倍拡大表示で 47Hzを出すのである。

つまり、低レートはソフトウェアデコーダにとって有利であり、ソフトウェアでも高速デコードは難しくはない。 この結果を見るとき、デコーダの速度向上に苦しんだ私は、一体なんだったのかと思ってしまう。 ソフトウェアデコーダにとって低レートは天国である。 低レートではソフトウェアデコーダは、ハードウェアと互角以上に戦える。 ハードウェアはインターフェースのためのソフトウェアを必要とするからである。

QSIF 画像、64 kbit/s 以下では、MPEG-1 であろうとテレビ電話の H.261/H.263 であろうと、 画像符号化の符号化(脚注参照)復号処理は、もはやソフトウェア以外には、選択の余地はないだろう。

*(脚注) 低レート MPEG-1 のソフトウェアエンコーダがリアルタイムで動作するか、という問題はかなり微妙である。 低レート H.261/263 ではデコード、エンコードともにかなりの高速化手法があって解決可能だが、 MPEG-1 は蓄積メディア用だから画質が悪くてはリアルタイムであってもほとんど意味がない。 低レートなら前述の Alpha で、QSIF 64 kbit/s 10Hz 画像が Conjugate サーチでは18.4 Hz 程度である。 再量子化係数ドロップまでして 15.6 Hz であるが、フルサーチでは、 メモリーアクセスを最適化したものでも 5 Hz しかでない。


≪=BACK TOP∧ NEXT=≫

4. インターネットでの動画像応用

インターネットでの動画像の応用
(1)ビデオメール
(2)動画像のブラウジング、動画像リトリーバル
(3)VOD (Video on Demand) 
(4)インターネットフォン
(5)パネルディスカッション
(6)実況中継
インターネット上の動画像応用を考えると、(1)ビデオメール、通常の e-mail の動画像版がある。 (2)動画像のブラウジング(慨覧)、動画像リトリーバルがある。 現在、静止画をダウンロードしてみている応用が動画像に代わるものである。 (3)VOD (Video on Demand) 要求に合わせて、動画像を供給するしくみがある。 映画などの観賞用、個人毎に FF, Rewind などのトリックプレイをサポートする。 (4)インターネットフォン、これはインターネットでの(テレビ)電話である。 ここまでは、ネットワーク上の IP アドレス間の1対1の通信のしくみのまま問題なく使えるだろう。 ところが、(5)パネルディスカッションのように、数人のおしゃべりを他の大勢が聞けるよう にしたものがある。さらには、(6)実況中継が、すでに実験的に行なわれている。 これらは、マルチキャストが使われれなければ、通信用のバスであるインターネットのチャネルの ひどい無駄使いとなる応用である。さらに、(7)放送、はもっとこの問題を先鋭化するだろう。 ネットワークのパイプが太くなれば解決するいう問題ではなく、マルチキャスト処理を各ノードが対応し、 パケットの枝分かれが実現されないと解決しない問題だろう。マルチキャストによって数千人、 数万人という大勢が一ヶ所に同時にアクセスしても、問題のないネットワークにすることができる。

ミニ放送局が大量に生まれるという夢は、そのとき現実化するだろう。 認可、免許などの制度の問題が出ずに、だれもが放送しようと思えばできる仕組みにしなければならない。 すでにインターネットは国際的に結合していて、法律が制御できる範囲はないだろう。 また、すでに視聴者は、このネットワーク上のアドレスを無数に選べるわけだから、 特定のアドレスだけが放送の権利をもつことには、正当化できる理由がなくなっている。 放送は、独占と利権の巣となりやすい。これは、その意味で重要なテーマであり、 マルチキャストは、うまく設計されると、既存の放送システムを陳腐化するぐらいのインパクトをもつだろう。 インターネットという通信の仕組みが放送に利用されようとしている事自体、 すでにマスメディアの終瑙であり、放送はすでに教育にも娯楽にも、役に立たなくなっているのかもしれない。

ソフトウェアデコーダにとってこれらの応用は、本当に低レートだろうか。 ネットワークを流れるビットレートが低レートであると仮定すると、(1)〜(7) について 考えることができる(*脚注参照)。


≪=BACK TOP∧ NEXT=≫

(1)ビデオメール
これはエンコード、デコードともにリアルタイムであることが望ましいが、 対ディスクのリアルタイムであり、対ネットワークのリアルタイムではない。 だから、低レートである必要はないが、個人の伝言程度は低レートでよいとも思われる。

(2)動画像のブラウジング、動画像リトリーバル
ブラウジングでは、エンコードはリアルタイムである必要はなく、 サーバは高級なエンコードをしたビットストリームを用意すればよく、 デコードだけ対ネットワークのリアルタイムであればよい。 リトリーバルのように、ディスクにセーブして後で表示するのなら、 対ディスクのリアルタイムであり、低レートである必要もない。

(3)VOD
エンコードはリアルタイムである必要はない。 デコードは対ネットワークのリアルタイムであるため低レートになる。 ただ、個人毎のトリックプレイをサポートするくせにセーブを許さない仕組みでは、 ユーザとネットワークの両方にとってメリットがないように思える。

(4)インターネットフォン
これは対ネットワークのリアルタイムエンコードとデコードが必要で基本的に低レートだろう。 通信であるからローディレイの要求もあり、画質上はもっとも厳しい条件である。

(5)パネルディスカッション、(6)実況中継も、(7) 放送も、 (4) と同じ対ネットワークのリアルタイムエンコードデコードである。 ただ、放送をしようとすると高級なエンコーダを用意するだろう。 それにしても、インターネットの高度な応用(4)〜(7)がすべて低レート、 リアルタイムエンコード/デコードという特色をもっているとは驚きである。 もちろん放送も、映画を放送したい場合はリアルタイムエンコードである必要はないが、 そのときにはもう、映画を放送局から放映する意味はほとんどないだろう。

*(脚注)ネットワークを流れるビットレートが低レートであるという仮定は正しいのだろうか、 いつまでも低レートでないのかもしれない。CATV のネットワークでのケーブルモデムの普及が進むと 状況は一変するかもしれない。


≪=BACK TOP∧ NEXT=≫

5. MPEG-1 の低レートエンコード (1996 年 9 月 18 日)

さて、今のネットワークの状況をみると、64 kbit/s 以下という低ビットレートで使うことだけを考えたい。 ネットワークは、数 100 バイト/秒や、数 10 バイト/秒にまで混雑することが日常的に起こっている。 64 kbit/s でも今は理想論に聞こえるかもしれないからである。

この低レート符号化では、例えば 30 Hz のような元の画像レートのままで符号化することは現実的でない。 10 Hz 程度に画像を時間方向にサブサンプリングした画像を符号化する。 どうしてかというと、画質がでないからである。 それだけでなく、あまりに低レートすぎて符号化の処理が正常に動作しない。 まず、SIF 画像では、通常に動くような画像で、レートコントロールが 64 kbit/s に入らなくなる。

最初の OMWF の会合(1996年 7 月 31 日)では、次回までに動画像の符号化実験として、64 kbit/s と 20 kbit/s で、符号化してみようということになった。1996 年 9 月 18 日の第 2 回 OMWF Internet MPEG 小委員会用に実験した MPEG-1 の低レートエンコード結果のビットストリームを表 2 に示そう。

シーケンスは MPEG で用いられた標準画像(著作権は ITU-R にある。) Bicycle, Bus, Flower Garden, Football, Mobile and Calendar, Table Tennis を使った。これらは各 5 秒のシーケンスで、 ITU-R 601 フォーマットから SIF に MPEG-1 の SM3 に従ってフィルターでダウンサンプルしている。 MPEG-1 のエンコーダ は SM3 にレートコントロールだけ MPEG-2 の TM0 レートコントロールを入れた ものである(インターフェース 1992 年 8 月号 "MPEG の概要と標準化動向", pp.124-146 参照。)。

表 1.a を見ていただくと 1 Mbit/s ではレートコントロールが正常に機能している (1 Mbit/s * 5s /8bit = 625 kbyte となる) ことが分かるだろう。 ファイル名に "q" の文字がついたものは、QSIF である( QSIF は、次回から 176x112 としたが、 このときは 176x128 としていた。)。 SIF から QSIF へもやはり同じ 7 tap のフィルター ([-29, 0, 88, 138, 88, 0, -29]//256) で、縦横とも 1/2 にダウンサンプルしている。

       表 2. MPEG-1 で符号化したビットストリームファイル長
       表2.a 1 Mbit/sで符号化
-rw-rw----   1 katayama 240       625234 08月11日 1996  bic1000.mpg
-rw-rw----   1 katayama 240       624937 08月11日 1996  bic1000q.mpg
-rw-rw----   1 katayama 240       624916 08月11日 1996  bus1000.mpg
-rw-rw----   1 katayama 240       624807 08月11日 1996  bus1000q.mpg
-rw-rw----   1 katayama 240       625442 08月11日 1996  flr1000.mpg
-rw-rw----   1 katayama 240       625009 08月11日 1996  flr1000q.mpg
-rw-rw----   1 katayama 240       624554 08月11日 1996  ftb1000.mpg
-rw-rw----   1 katayama 240       624978 08月11日 1996  ftb1000q.mpg
-rw-rw----   1 katayama 240       625071 08月11日 1996  mac1000.mpg
-rw-rw----   1 katayama 240       624901 08月11日 1996  mac1000q.mpg
-rw-rw----   1 katayama 240       625573 08月11日 1996  tbl1000.mpg
-rw-rw----   1 katayama 240       624975 08月11日 1996  tbl1000q.mpg


≪=BACK TOP∧ NEXT=≫
表 2.b の 500 kbit/sではすでに SIF の Bicycle がレートが収まっていないことが分かる(脚注参照)。 312.5 kbyte から外れている。Flower Garden の SIF も少しオーバーしている。

*(脚注)この SIF 500 kbit/s 程度の画像が 91 年頃の標準画像の 1.15 Mbit/s のシミュレーションと 画質的に一致している。当時から、エンコーダ事項だけで符号量が 1/2 になったのである。 当時の 8-escape, B-quant の事を知る人は少ないだろうが、SM-3 を読もうと努力してごらんなさい。 どれだけの混乱がこの公式文書に残っているか知ると、標準化の作業の難しさに多少でも触れることができる。

         表2.b 500 kbit/sで符号化
-rw-rw----   1 katayama 240       388391 08月11日 1996  bic500.mpg
-rw-rw----   1 katayama 240       312490 08月11日 1996  bic500q.mpg
-rw-rw----   1 katayama 240       311443 08月11日 1996  bus500.mpg
-rw-rw----   1 katayama 240       312448 08月11日 1996  bus500q.mpg
-rw-rw----   1 katayama 240       331216 08月11日 1996  flr500.mpg
-rw-rw----   1 katayama 240       312540 08月11日 1996  flr500q.mpg
-rw-rw----   1 katayama 240       317271 08月11日 1996  ftb500.mpg
-rw-rw----   1 katayama 240       312319 08月11日 1996  ftb500q.mpg
-rw-rw----   1 katayama 240       313711 08月11日 1996  mac500.mpg
-rw-rw----   1 katayama 240       312465 08月11日 1996  mac500q.mpg
-rw-rw----   1 katayama 240       313085 08月11日 1996  tbl500.mpg
-rw-rw----   1 katayama 240       312529 08月11日 1996  tbl500q.mpg

表 2.c の250 kbit/sでは、SIF はどれもレートがコントロールできていない。 QSIF ではどのシーケンスもまだ問題が出ていない(156 kbyte になっている)。

         表 2.c 250 kbit/sで符号化
-rw-rw----   1 katayama 240       383756 08月11日 1996  bic250.mpg
-rw-rw----   1 katayama 240       156478 08月11日 1996  bic250q.mpg
-rw-rw----   1 katayama 240       271972 08月11日 1996  bus250.mpg
-rw-rw----   1 katayama 240       156260 08月11日 1996  bus250q.mpg
-rw-rw----   1 katayama 240       326590 08月11日 1996  flr250.mpg
-rw-rw----   1 katayama 240       156391 08月11日 1996  flr250q.mpg
-rw-rw----   1 katayama 240       281751 08月11日 1996  ftb250.mpg
-rw-rw----   1 katayama 240       155893 08月11日 1996  ftb250q.mpg
-rw-rw----   1 katayama 240       293243 08月11日 1996  mac250.mpg
-rw-rw----   1 katayama 240       156263 08月11日 1996  mac250q.mpg
-rw-rw----   1 katayama 240       196628 08月11日 1996  tbl250.mpg
-rw-rw----   1 katayama 240       156329 08月11日 1996  tbl250q.mpg


≪=BACK TOP∧ NEXT=≫
表 2.d 125 kbit/sでは QSIF でも Bicycle がレートコントロールできていない。 Flower Garden も怪しくなっている。その他のシーケンスでは問題がでていない ように見えるが Table Tennis 以外は怪しい(78 kbyte)。

         表 2.d 125 kbit/sで符号化
-rw-rw----   1 katayama 240       382209 08月11日 1996  bic125.mpg
-rw-rw----   1 katayama 240       112971 08月11日 1996  bic125q.mpg
-rw-rw----   1 katayama 240       270527 08月11日 1996  bus125.mpg
-rw-rw----   1 katayama 240        81745 08月11日 1996  bus125q.mpg
-rw-rw----   1 katayama 240       325214 08月11日 1996  flr125.mpg
-rw-rw----   1 katayama 240        89405 08月11日 1996  flr125q.mpg
-rw-rw----   1 katayama 240       279786 08月11日 1996  ftb125.mpg
-rw-rw----   1 katayama 240        86746 08月11日 1996  ftb125q.mpg
-rw-rw----   1 katayama 240       291963 08月11日 1996  mac125.mpg
-rw-rw----   1 katayama 240        79644 08月11日 1996  mac125q.mpg
-rw-rw----   1 katayama 240       194354 08月11日 1996  tbl125.mpg
-rw-rw----   1 katayama 240        78176 08月11日 1996  tbl125q.mpg

表 2.e 64 kbit/s では QSIF もすべてだめである。 40 kbyte を大きく超えている。

         表 2.e 64 kbit/s で符号化

-rw-rw----   1 katayama 240       111973 08月11日 1996  bic64q.mpg
-rw-rw----   1 katayama 240        80239 08月11日 1996  bus64q.mpg
-rw-rw----   1 katayama 240        88282 08月11日 1996  flr64q.mpg
-rw-rw----   1 katayama 240        84043 08月11日 1996  ftb64q.mpg
-rw-rw----   1 katayama 240        78898 08月11日 1996  mac64q.mpg
-rw-rw----   1 katayama 240        55041 08月11日 1996  tbl64q.mpg

QSIF にするだけではレートが 64 kbit/s に収まらないことが分かったため、単純に画像レート を下げてみた。それでも、いくつかの画像は 64 kbit/s に収まらないため、量子化マトリックス を数回、倍化(2 倍して 255 を超えると 255 にする)してテストした。


≪=BACK TOP∧ NEXT=≫
表 2.f は、画像レートを 15 Hz、10Hz、5Hz にして、符号化のレートコントロールが成功した 倍化の最小回数のビットストリームを拾ったものである。ファイル名の 64 の後の数字が 画像レートで、次の "q" が QSIF を表す。最後の数字が倍化回数である。 SIF でも画像レートを下げて量子化マトリックスを倍化するとレートが収まることが 分かる。ただ画像を見比べると通常の MPEG の標準画像では QSIF 10 Hz がよい。 なお、mad とは H.263 を作成した ITU-T LBC グループの Mother and Daughter という 標準画像の最初の 5 秒である。テレビ電話用の易しい画像の例として加えたものであるが、 この画像は SIF の方がよいかもしれない。

画質評価に使うリアルタイムデコーダとして私の作成したソフトウェアデコーダが使われた。 拡大表示で 4 つ同時デコード拡大表示(約 30Hz まで可能)で画質の比較ができる。 とくに X のカラーマップの操作によって、デコード画像のウィンドウ以外を 真っ黒にして画像を比較するのは、非常に効果的で的確に画質を評価できる。

この実験で、符号化画像を見て、64 kbit/s 程度では一般的に、QSIF の 10 Hz 位が動きと 画像のぼけとのバランスがよいことが分かった。

         表 2.f 64 kbit/s で符号化
-rw-r--r--   1 10007    240        39887 09月09日 1996  bic_64_15_q_1.mpg
-rw-r--r--   1 10007    240        40025 09月09日 1996  bus_64_15_q_1.mpg
-rw-r--r--   1 10007    240        40029 09月09日 1996  flr_64_15_q_1.mpg
-rw-r--r--   1 10007    240        39990 09月09日 1996  ftb_64_15_q_1.mpg
-rw-r--r--   1 10007    240        40122 09月09日 1996  mac_64_15_q.mpg
-rw-r--r--   1 10007    240        39969 09月09日 1996  mad_64_15_q.mpg
-rw-r--r--   1 10007    240        40192 09月09日 1996  tbl_64_15_q.mpg

-rw-r--r--   1 10007    240        39475 09月12日 1996  bic_64_10_q_1.mpg
-rw-r--r--   1 10007    240        38653 08月29日 1996  bus_64_10_q.mpg
-rw-r--r--   1 10007    240        39613 08月29日 1996  flr_64_10_q.mpg
-rw-r--r--   1 10007    240        39693 08月29日 1996  ftb_64_10_q.mpg
-rw-r--r--   1 10007    240        41081 08月29日 1996  mac_64_10_q.mpg
-rw-r--r--   1 10007    240        41348 08月29日 1996  mad_64_10_q.mpg
-rw-r--r--   1 10007    240        39635 08月29日 1996  tbl_64_10_q.mpg

-rw-r--r--   1 10007    240        37657 08月29日 1996  bic_64_5_q.mpg
-rw-r--r--   1 10007    240        37863 08月29日 1996  bus_64_5_q.mpg
-rw-r--r--   1 10007    240        37992 08月29日 1996  flr_64_5_q.mpg
-rw-r--r--   1 10007    240        38813 08月29日 1996  ftb_64_5_q.mpg
-rw-r--r--   1 10007    240        39095 08月29日 1996  mac_64_5_q.mpg
-rw-r--r--   1 10007    240        39883 08月29日 1996  mad_64_5_q.mpg
-rw-r--r--   1 10007    240        39378 08月29日 1996  tbl_64_5_q.mpg

-rw-r--r--   1 10007    240        38751 09月09日 1996  bic_64_5_3.mpg
-rw-r--r--   1 10007    240        40842 09月09日 1996  bus_64_5_2.mpg
-rw-r--r--   1 10007    240        40895 09月09日 1996  flr_64_5_2.mpg
-rw-r--r--   1 10007    240        40630 09月09日 1996  ftb_64_5_2.mpg
-rw-r--r--   1 10007    240        39527 09月09日 1996  mac_64_5_1.mpg
-rw-r--r--   1 10007    240        39164 09月09日 1996  mad_64_5_0.mpg
-rw-r--r--   1 10007    240        40006 09月09日 1996  tbl_64_5_1.mpg


≪=BACK TOP∧ NEXT=≫
         表 2.g 20 kbit/s で符号化
20 kbit/s では符号化できないわけではないが、画像の質は、かなり落ちる。

-rw-r--r--   1 10007    240        11926 09月09日 1996  bic_20_5_q_2.mpg
-rw-r--r--   1 10007    240        11873 09月09日 1996  bus_20_5_q_2.mpg
-rw-r--r--   1 10007    240        13159 09月09日 1996  flr_20_5_q_1.mpg
-rw-r--r--   1 10007    240        13135 09月09日 1996  ftb_20_5_q_1.mpg
-rw-r--r--   1 10007    240        12372 09月09日 1996  mac_20_5_q_1.mpg
-rw-r--r--   1 10007    240        12354 09月09日 1996  mad_20_5_q_0.mpg
-rw-r--r--   1 10007    240        11386 09月09日 1996  tbl_20_5_q_1.mpg

MPEG-1 は、CD-ROM、Video-CD などの 1.5 Mbit/sの媒体を応用として作成された標準である。 64 kbit/s は、MPEG-1 のシミュレーションに使われた 1.15 M bit/s からいうと 1/16 である。 これには、画像レートを 10 Hz (1/3) に下げ、画像を QSIF (176 x 112) 程度にして面積で 1/4 以下に小さくして、全体の符号量を 1/16 に下げるというのが妥当な戦略である。

この最初の実験時に、NASA の用意した MPEG-1 ビットストリームもデコーダのデモとして表示した。 ネットワークからダウンロードしておいたものをデコード表示したのである。 NASA の MPEG-1 画像は数 100 kbit/s でエンコードされていて画質もよく楽しめる。

Sony の作った QSIF(176x112) 30 Hz 64kbit/s の画像も、 ネットワーク(TCP-IP)を直接通したリアルタイム表示(動画像ブラウジング)として GCL でデモをすることができた。 赤ん坊がシャボン玉と戯れる画像で非常にきれいな画像である。素材の選択がうまいことと、 Sony のエンコーダの性能が期待できることを示していた。デコーダも非常に軽く動作する。 ローカルな表示なら 4x4 拡大表示で 44〜45 Hz (当時)出た。 これは、前述の "低レートは天国" の話題で示したビットストリームである。

ネットワークの動画像リトリーバルとリアルタイム表示は同時にでき、 ネットワークの状態によって時々画像は停止するが、これは有望な応用であると思われる。

このころまでに低レート用の Sony の方式が明確になっていた。 画像構造としては 30 Hz M=3 (M とは I,P の周期)だが、その内の 2/3 の B-picture は 全て空の画像にしていた。名目の画像レートは 30 Hz であるが、実質の画像レートは 10 Hz である。 空の B-picture を作り出すためのオーバーヘッドを小さいとすると、これは通常の 10 Hz M=1 (I,P だけの画像) に相当する。それに対して GCL のシミュレーションは 10 Hz M=3 である。 一方の Sony は MPEG-1 の画像レート規定に従っている。GCL の実験で行なった直接の 10 Hz は MPEG-1 の画像レート規定から外れているが、10Hz 画像に B-picture を使うことができる。 そこで、両者の性能を比較する必要があった。

次回は、この条件(QSIF, 10Hz, 64 kbit/s )で B-picture の有効性の実験をする。 GCL は 10 Hz のままで、M=1 と M= 3 を実験する。 低レートでレートコントロールの Step 3 の有効性が疑問なのでこれも調べる。 Sony はハードウェア製品なので、実質 M=3 にする方法がない。 エンコードのアルゴリズムも SM3 +TM0RC とは違うので、同じシーケンスを使って GCL と画像の比較をする。

シーケンスとしては、典型的なものを選択して、Table Tennis, Bicycle, Flower Garden の三つを使うことに決めた。その他の N (I の周期)と QSIF のサイズなどの条件もできるだけ 合わせてやる。シーケンスヘッダも 5 秒なら 1 つでよいとした。


≪=BACK TOP∧ NEXT=≫

6. 画像レートがやはり問題

画像レートは 10 Hz にしたいが MPEG-1 の画像レートは、前述のように最低が 24 Hz 程度になっているのでどうしようもない。そこで、ひとつの解決方法としては、B-picture を空っぽにするという方法であった。これは実際に Sony のエンコーダ製品が使っている方式である。

原画像順で、BBIBBP...となっているとして BB の画像をすべて後ろの I, P 画像と同じにする。 B-picture の中ではスライスは一つにする。スライスの先頭のマクロブロックと最後のマクロブロックを、 動きベクトル (0,0) の逆方向予測の NotCoded にして、両者の間のマクロブロックは、 すべて skipped マクロブロックにする。つまり、この画像は逆方向予測だけで完全に予測され、 B-picture の符号がほとんど無しですむ。

変化する中身のある画像は I,P だけにして B を使わない。こうすると実質 10 Hz画像を名目 30 Hz にすることができる。 標準に従うかぎり、こうした方法を取らざるを得ない。

ただ、この方法には限界があることもすぐに明らかになる。中身のある 10 Hz の画像には B-picture が使えない。中身のある画像に B-picture を使うと、(中身が後ろの画像と同じ B-picture を b と書く。) bbIbbBbbPbb.. という画像の並びでは、Bの直前のbb の各 b は B と同じだけの符号量を発生してしまい、 符号化効率が悪くなる。空の P-picture でも IppPppPppP... という並びを作ることができ、 B を空にするのと効率は同じである。

B-picture の強力な双方向予測は、MPEG-1 の効率的な符号化の最大の技術的成果である。 これを放棄することは、テレビ電話の符号化 H.261 に逆もどりではないか。悪く言えば、 単に標準の仕様の問題を、ユーザーに押しつけているのではないか。あの 1992 年のロンドン会合で、 空っぽの画像を利用して画像レートが低下できる、といって MPEG Video の議長のLeGal (ルガール)が、 フランスの意見を退けた内容が、こんなものだったとは、その会合の出席者だった私は、当時気が付かなかった。


≪=BACK TOP∧ NEXT=≫

7. B-picture の有効性実験 (1996 年 10 月 23 日)

Sony のエンコードしたビットストリームと、次に示す GCL のエンコードした、M=1、M=3 との 3 者を符号化画像を比較表示してデコード画像で比較した。

シーケンス: Table Tennis, Flower Garden, Bicycle

共通条件:
・QSIF (176x112) 10 Hz
・N= 12
30 Hz 原画像で、N=30 である Sony の条件に合わせた N=10 では M=3 の倍数でないので、 これに近い N=12 とした。符号化画像数は 48 である。 シーケンスヘッダは、シーケンス全体で一つにすることはまだできてなくて、 4 つの I-picture 毎についている。

・量子化マトリックス: Table Tennis は Default 量子化マトリックスを使い、 Flower Garden と Bicycle は、ビットレートを 64 kbit/s に収めるため、 TM の量子化マトリックスを 2 倍して使った。

・動き推定: ダイレクトフルサーチ ( +-7/(10Hz のフレーム間隔) )。

         表 3.  B-picture の有効性(輝度のSNR)
+-------------------+-----------+------------+------------------+
|   シーケンス      |   M=1     |     M=3    |   差 (M=3)-(M=1) |
+-------------------+-----------+------------+------------------+
|   Table Tennis    |   27.48   |    28.20   |   +0.72          |
|   without RCstep3 |   28.37   |    29.17   |   +0.80          |
+-------------------+-----------+------------+------------------+
|   Flower Garden   |   20.28   |    21.20   |   +0.92          |
|   without RCstep3 |   20.84   |    21.69   |   +0.85          |
+-------------------+-----------+------------+------------------+
|   Bicycle         |   20.59   |    20.80   |   +0.21          |
|   without RCstep3 |   21.11   |    21.26   |   +0.15          |
+-------------------+-----------+------------+------------------+

動きの大きい Bicycle では M=3 の効果が小さいが、その他のシーケンスでは M=3 の効果は+1.0 dB 近くあり、 M=1 と M=3 の違いは画像を目で比較した場合に視認できる程度である。 この差は、約 2 dB の差があった MPEG-1 の 30 Hz のB-picture の効果と比べると小さい。


≪=BACK TOP∧ NEXT=≫

MQUANT をマクロブロックのActivity (画像の活動度)で振らせるレートコントロールの Step 3 は SNR を、逆に約 -1.0 dB近く下げるけれども、 とくに Table Tennis の壁の模様の再現などにおいて、 Step 3 はこのような低レートでも効果があることが分かった。

Sony の画像とGCL の画像との比較では 3 つの標準画像のシーケンスでは M= 1 と M= 3 との違いよりも 2 社の画像の差の方が大きいことが分かった。 必要なのは M=1 と M=3 の性能の差を客観的に把握することでであり、 ハードウェアとソフトウェアでは容易なことと困難なことが異なる。 また、Sony のエンコーダは標準画像よりも容易な画像にチューニングしてあるとの Sony のコメントもあった。 M=1 と M=3 の差が会社の差より小さいということは、B-picture を取り立てて望むべきでないのかもしれない。 画像構造の符号化効率の違いが、 エンコーダのアルゴリズムの違いに隠れてしまう程度 (+1dB 以内) であるということである。 しかし、Sony が M=1 にあたる方法でありながら、GCL の M=3 よりも良い画像を出してくれたら、 すぐに私は、M=3 の案を引っ込めていただろう。実際は、その逆であった。 これでは、B-picture の有効性の立証もできなかったし、有効性の否定の立証もできなかったという、 宙ぶらりんの状態になってしまった。

会合では、次回までに(1)量子化マトリックスを修正しなくても符号量が目的の範囲に入るように、 GCL のエンコーダに係数 drop によるレートコントロールを入れようということになった。 MQUANT が 31 にへばり付いてしまうことを DCT 係数の除去で避けるものである。 これは昔から多くの会社でエンコーダをロバストにするため使われる技術であるが、 MPEG-1 の SM, MPEG-2 の TM などには記述されていないものである。

もう一つは努力目標であるが (2)QSIF フィルタのチェックである。601 to SIF は 7 tap の [-29, 0, 88, 138, 88, 0, -29]//256 の フィルタが使われているが、 SIF to QSIF も同じものでサブサンプルしている。 高域強調効果のあるフィルタを 2 回も掛けるのは何かおかしい、 ということで QSIF の原画像をチェックしたいということである。 また、Sony のエンコーダは 601 から独自なフィルターで 1/4 ダウンサンプルして QSIF を作り出しているため、その効果も確かめたい。


≪=BACK TOP∧ NEXT=≫

8. 標準をどうするのか

B-picture は使いたい。しかし、標準は低い画像レートをサポートしていない。そこで、 どうするかについてだれもが考えるだろう。

(1)なにも変えない。完全に従う。
MPEG-1 はすばらしい。完ぺきで欠点がない。非難されるべきものは全くない、という考えであれば (1) である。

(2)なにも変えない。従えない項目は無視する。
現在のほとんどの実用的な速度のソフトウェアデコーダはこの態度であるようにみえる。 画像レートも到達目標でしかなく、VBV は関係なさそうで、IDCT 精度などほっておけという態度である。

(3)全く従わない。
これなら MPEG など気にすることもない。ソフトウェアの M 社、 A 社、 Game のメーカーなどは MPEG みたいな重たいものは使えないという意見をもっているのではと思う。 各社独自方式は技術を盗まれることも少ない。読まれる事も少ない。一般大衆は独自性を買う。

(4)補足または解釈を作成する。
標準を尊重して解釈をする。例えば、(a)スライスに Gap (ギャップ)を許し、 B-picture の Gap は Video output buffer からの forward MV=(0,0) Not Coded とする。 という解釈をすると、bbIbbBbbPbbBbbP のような画像構造が効率的にとれる。 (b)I,P,B,D 以外の画像は空であるという解釈をしてもよい。 (c)Temporal Reference を優先し skipped picture があるものとする。 (a)(b)(c)いずれでも、画像レートを追加せずに低い画像レートになる。 残念なのは、標準の技術的内容を変えない限り、これらの解釈は間違っているということである。 こうしなくとも、つぎの (5) のように画像レートを追加するべきではないだろうか。

(5)真正面から変更を提起する。
画像レート(picture_rate) は ISO がまだ拡張できる "reserved" が 7 つあるので、 15, 12.5, 12, 10, 8.333, 8, 6 (または 92 年の フランス提案のように、 23.976/2= 11.988, 24/2= 12, 25/2= 12.5, 29.97/2= 14.985, 30/2= 15 ) を追加する。その場合、R/P <= 1.856 Mbit/23.976 として、 デコーダの入力バッファの最大値は変えないようにする。(R:bitrate, P:picture rate) これは R が低レートなら、低い画像レートも入力バッファの大きさに影響を与える必要はない。 これを MPEG-1 の改定時期(1998 年)に提案することは可能であろうか。 LSI メーカーはこういう改定を許すだろうか。恐らく否定的だろう。

(6)規定の修正は考えず、それ以外の事を考える。
面倒な改定の標準化作業を避けて、私は低レートの交換形式を作成するのであって、 MPEG 規定には関係有りませんという態度をとること。しかしこれも実質的に MPEG-1 を非難している。 MPEG はもともと交換形式だったのだから。

しかし、Internet の中での動画像伝送には 1 Mbit/s は望めない。 現在は 20〜40 kbit/s 程度であろうし、1〜2 年後に 64 kbit/s 程度を越す程度だろう。 基本的に低レートであることは変わりがないだろう。低レート用交換形式ならあり得るかもしれない。


≪=BACK TOP∧ NEXT=≫

9. レートコントロールの低レート用改造 (1996 年 12 月 5 日)

量子化マトリックスを最初から 2 倍、4 倍しておくというのは 1 パス処理でないので、 レートコントロール自体、すでに破綻しているといえる。そこで何らかの係数ドロップが必要になる。

B-picture の有効性実験で見たように TM0 のレートコントロールでは 10 Hz, 64 kbit/s に適用するとレートコントロールできない画像がある。 Table Tennis, Bicycle, Flower Garden のうち、Bicycle と Flower Garden でレートを制御できない。 これは MQUANT が最大値 31 にへばり付いていると思われる。 そのため、次の (b), (c) の 2 つのレートコントロール方法を作成し、符号化結果を比較した。

(a) 量子化マトリックス倍化 (参照用)
あらかじめ量子化マトリックスを 2 倍する。(値が 255 を超える場合は 255 とする。) 画質が高いが 1 パス処理でないのでレートコントロールできたとはいえない。

(b) 周波数 Drop 法
Buffer からくる、 Mquant (Step 2 の量子化パラメータ $Q_i$)を[1,31]に制限して mq とし、 係数位置のジグザグ順で、66-mq*2 番目以降をすべて 0 にする。

(c) 再量子化 Drop 法 (Level Drop)
TMレートコントロール Step 3 の Activity で変化させ、[1,31] に制限する前の Mquant を使って 量子化し、0 になる係数の原係数値を 0 として、再度 [1,31] に制限した Mquant で通常に量子化する。

     表 4. レートコントロール方法の SNR の比較
+--------------------------+------------------------+
|  シーケンス              |    SNR(Y,Cb,Cr)        |
+--------------------------+------------------------+
|Bicycle        (a)        |  20.97 29.15 28.43     |
|               (b)        |  20.10 29.54 28.72     |
|               (c)        |  20.86 29.05 28.58     |
+--------------------------+------------------------+
|Flower Garden  (a)        |  21.47 26.39 30.19     |
|               (b)        |  20.14 26.63 30.59     |
|               (c)        |  21.41 26.40 30.18     |
+--------------------------+------------------------+
|Table Tennis   (a)        |  28.47 35.36 33.18     |
|               (b)        |  26.89 35.47 33.32     |
|               (c)        |  28.78 35.28 33.16     |
+--------------------------+------------------------+

表 4. に 3 つの符号化結果を示す。結果を説明すると、(a)を基準として、(b)は色差の SNR は 多少向上しているが、輝度 SNR が大きく(0.7〜1.6dB 程度) 低下する。それに比較して、 (c)は色差、輝度とも SNR は -0.1dB 〜 +0.3dB であり、 一般的な係数ドロップによるレートコントロールに付き物の SNR 低下がない。 (c) の方式は低レートのレートコントロール用に有効であり、 レートコントロール能力が上がり、符号化できる画像の範囲が広がる。


≪=BACK TOP∧ NEXT=≫

10. SIF から QSIF へのフィルターのチェック (1996 年 12 月 5 日)

(1) QSIF の原画像を見られるようにし、SIF から QSIF へのフィルターを検討するため 7 tap フィルタ([-29,0,88,138,88,0,-29]//256) と 4 画素平均 を比較した。

(2)十分高いレートとして 1 Mbit/s と 2 Mbit/s で QSIF 64 kbit/s 10 Hz を符号化し、 デコーダで QSIF 画像を確認する。これには Sony も 1 Mbit/s と 2 Mbit/s のビットストリーム を作成した。これは Sony の符号化前処理( 601 から直接、長い tap のフィルタで QSIF を作成している。) の効果を見ることにもなる。

 表 5. フィルターの比較をしたときの SNR (十分高いことを確認するだけ(GCL))
bic_1m.log:total SNR (48 frames)   38.03 38.51 39.32
bic_2m.log:total SNR (48 frames)   43.82 45.72 46.41
flr_1m.log:total SNR (48 frames)   39.81 40.09 40.39
flr_2m.log:total SNR (48 frames)   45.18 46.15 46.46
tbl_1m.log:total SNR (48 frames)   45.27 47.76 47.24
tbl_2m.log:total SNR (48 frames)   45.77 47.90 47.50

これらの目視による確認で、4 画素平均処理では明らかに画質が低下していることを確認した。 GCL の入力処理 (2 段階 7 tap フィルター)と Sony のフィルターの間も明確に違いが分かり、 2 段階 7 tap フィルターは高域強調が、かなり強いことも分かった。


≪=BACK TOP∧ NEXT=≫

11. パラメータ制限と低レート用交換形式の提案

解決方法はパラメータ制限と MPEG の交換形式かもしれない。 MPEG-1 は画像レート以外は低レートにおいて問題になるものがないか、といえばそれだけではないといえる。 画像レートは確かに問題であるが、ほとんどのソフトウェアデコーダによって無視されている。 それなら、それはしばしおいて、こう考えるべきではないだろうか。

インターネット上での AVアクセス, VOD, リアルタイム画像通信を目的として MPEG-1 の シンタックス上のパラメータの範囲の限定を推奨するのである。そしてそれを交換形式と呼ぼう。 交換形式は低レート伝送と MPEG-1 ソフトウエアデコーダでの再生を主に考慮して作成するため、 低レートの効率を最優先する。パラメータ制限を満たすビットストリームは、 そのまま交換形式に変換できる。これを満たさないものは、その幾つかの項目値の値を無視すれば、 交換形式に変換できる。

低レート用交換形式は MPEG-1 のパラメータ制限として作成されるので、Backward Compatibility (逆方向互換性) をもつ。パラメータ制限だけなら、MPEG-1 よりも強い制約であり、 MPEG-1 を壊すことにはならない。交換形式は画像レート以外は MPEG-1 のシンタックスの部分集合である。

交換形式はパラメタを制限するのでシンタックスを単純化できる。 省略時値(default)をもたせた多くの MPEG-1 の項目は、省略して伝送を避けることができ、 客観的な評価基準である符号化効率が向上する。

つまり、交換形式の構文は MPEG-1 の構文と違っていて、より効率的でありうるのである。 MPEG-1 のビットストリームからトランスコーダ(符号変換器)によって変換でき、 トランスデコーダ(符号逆変換器)によって高速に MPEG-1 のシンタックスに戻せることを前提にする。 交換形式から MPEG-1 のシンタックスへの逆変換が可能なら、 MPEG-1 のソフトウェアデコーダには問題なくデコード可能となるだろう。

単純な交換形式を明示する事は、MPEG-1 のどの項目が無視できるかを明確にするためと、 低レートでの効率向上を定量的に評価をするためにも必要である。


≪=BACK TOP∧ NEXT=≫

12. トランスコーダの機能

画像レートについては例外的に、MPEG-1 の規格を外れた低いレートの仕様を追加する。 シンタックス変更もそうだが、これをやってしまうと、 MPEG-1 デコーダが直接デコードすることができなくなる。 しかし、画像レートの制御はトランスデコーダによって可能になる。

ソフトウェアデコーダの直前にトランスデコーダを仲介して、 シンタックスの逆変換と画像レート調整をする。 別シンタックスのビットストリームは、トランスデコーダによって MPEG-1 のシンタックスに戻され、 同時に画像毎の表示時間を調整して遅い画像レートにすることができる。 ソフトウェアデコーダであれば入力するビットストリームが停止して、そのまま画像が停止するだけであり、 なんら問題にはならないだろう。 トランスデコーダは UNIX の標準入力出力でつながったフィルタとして考えると容易であることがわかる。


≪=BACK TOP∧ NEXT=≫

13. MPEG-1 のヘッダのオーバーヘッド

MPEG-1 のシンタックスは、ピクチャヘッダなどのオーバーヘッドが大きく、 低レートでは効率上の疑いがある。それを確認すれば、低レート交換形式の有効性の程度が分かってくる。

表 6. に、MPEG-1 のヘッダのビット数を示す。 表 6.a は、シーケンスヘッダの構文要素のビット数とそれらの合計である。 2 つの量子化マトリックスを含める場合は、それぞれ 512 ビットずつ増える。 含めないとき 96 ビットになる。

        表 6.a  シーケンスヘッダ
--------------------------------+-------------+
構文要素                        | ビット数    |
--------------------------------+-------------+
sequence_header_code            |  32         |
horizontal_size                 |  12         |
vertical_size                   |  12         |
pel_aspect_ratio                |   4         |
picture_rate                    |   4         |
bit_rate                        |  18         |
marker_bit                      |   1         |
vbv_buffer_size                 |  10         |
constaraint_parameter_flag      |   1         |
load_intra_quantizer_matrix     |   1 (+512)  |
load_non_intra_quantizer_matrix |   1 (+512)  |
--------------------------------+-------------+
total				| 96(+512+512)|
--------------------------------+-------------+
括弧()内は量子化マトリックスを付けた場合のビット数。

表 6.b は GOP ヘッダである。合計は 64 ビットになる。

       表 6.b  GOP ヘッダ
--------------------------------+-------------+
構文要素                        | ビット数    |
--------------------------------+-------------+
group_start_code		| 32          |
time_code			| 25          |
closed_gop			|  1          |
broken_link			|  1          |
zero stuff			|  5(*)       |
--------------------------------+-------------+
total				| 64          |
--------------------------------+-------------+
(*)次のスタートコードのバイト配置を保つための stuffing ビット


≪=BACK TOP∧ NEXT=≫
表 6.c は ピクチャーヘッダである。合計のビット数は I,P,B-picture によって変わり、 それぞれ 64,72,72 ビットである。

       表 6.c  ピクチャーヘッダ
--------------------------------+-------------+
構文要素                        | ビット数    |
                                |    (I,P,B)  |
--------------------------------+-------------+
picture_start_code              | 32          |
temporal_reference              | 10          |
picture_coding_type             |  3          |
vbv_delay                       | 16          |
full_pel_forward_vector         |  0, 1, 1    |
forward_f_code                  |  0, 3, 3    |
full_pel_backward_vector        |  0, 0, 1    |
bakcward_f_code                 |  0, 0, 3    |
extra_bit_picture               |  1          |
zero stuff                      |  2, 6, 2(*) |
--------------------------------+-------------+
total                           | 64, 72, 72  |
--------------------------------+-------------+
(*)次のスタートコードのバイト配置を保つための stuffing ビット

表 6.d は スライスヘッダの構文要素とそれらのビット数である。合計は 38 ビットである。

         表 6.d  スライスヘッダ
--------------------------------+-------------+
構文要素                        | ビット数    |
--------------------------------+-------------+
slice_start_code                | 32          |
quantizer_scale                 |  5          |
extra_bit_slice                 |  1          |
--------------------------------+-------------+
total                           | 38          |
--------------------------------+-------------+


≪=BACK TOP∧ NEXT=≫
以上からスライスヘッダは、SIF 画像サイズ(352x240)の場合、各行にスライスを用いると、 ピクチャー当たり 38*(240/16)= 38*15 = 570 ビットのオーバーヘッドであることがわかる。 30 Hz ではこれは 570*30= 17100 bit/s となる。QSIF 画像サイズ (176x112) では、 38* 7*30= 7980 bit/s である。これは低レートでは異常なオーバーヘッドである。

ところがこのスライスヘッダの符号量は、MPEG-1 のシンタックスのままでも、 スライスの長さをピクチャー全体まで拡大して節約できるのである。 この方法は低レートでは、当然利用するべきだろう。 すなわち、最低 1 つのスライスが必要で、これとピクチャーヘッダを合わせたものが MPEG-1 シンタックスに従うときのオーバーヘッドの大半であろう。 シーケンスヘッダとGOB ヘッダの符号量は無視しても大差はない。 これは 30 Hz では (72+38) * 30= 3300 bit/s となる。

これは 64 kbit/s というビットレートでは 5% 程度で大した量ではないが、 それより更に低いビットレートでは、大きな比率を占めるようになるだろう。 例えば 20 kbit/s では 3.3 kbit/s は 16.5%になり、これほどの無駄は避けたいのではないだろうか。 いずれにしてもこれは、そのような低レートにおいてだけ問題になるものである。 それではヘッダ類は、交換形式では、どこまで簡単化できるのだろうか。

方針として、MPEG-1 のシンタックスに戻せるシンタックスを考え、 その中で低レートに最適化したシンタックスは何かを考える。


≪=BACK TOP∧ NEXT=≫

14. MPEG-1 のパラメータの制限

1 ピクチャに 1 スライスに制限する。 量子化マトリックスはデフォールト(省略時値)を使い変更しない。 GOP の機能は使わない。1 シーケンスヘッダに、 1 I-picture とする。

これらは結局 MPEG-1 のパラメータの制限であり、この制限に従って作成したビットストリームは、 MPEG-1 のデコーダによって復号できる。つまり、"逆方向互換性" をもつといえる。 しかし次のシンタックスの簡単化をすると互換性はなくなるのであるが。


≪=BACK TOP∧ NEXT=≫

15. MPEG-1 のシンタックスの簡単化

1 ピクチャに 1 スライスに制限し、そのスライスヘッダをなくす。 スライスの垂直位置は、1 スライスにしたことで不必要である。 スライスの機能であった、量子化パラメータはピクチャーヘッダに移す。

次に、ピクチャーヘッダを簡単化する。MPEG のスタートコードは、23 個の"0"と、それに続く"1"で 始まるため、シーケンスヘッダとスタートコードを区別するには、最低 25 bit 必要である。 ピクチャヘッダにこれを残すと効率は十分改善されない。 ユニークコードを使った同期機能(エラーからの回復機能)はシーケンスヘッダだけにする。 ピクチャースタートコードを完全になくすことは、マクロブロックの位置と個数を管理すれば可能であるが、 画面サイズに依存する処理になるためそれは避ける。 トランスデコードを容易にするため、ピクチャのスタートコードは、マクロブロックアドレス(MBA)の VLC との混同を避け、その余白の VLC "0000 0000 1" 9 bit を使う。

ピクチャヘッダに最低限、必要な f_code は、参照画像の距離を表すもので、 P-pictureでは 1 つ B-picture では順方向と逆方向とで 2 つある。 これと、もともとスライスにあった量子化パラメータをもつ。

上位のレイヤでは GOP ヘッダはなくし、シーケンスヘッダに I-picture を対応させると、 I-picture のヘッダとシーケンスヘッダは一体になる。

表 7.a にシーケンスヘッダ、表 7.b にピクチャーヘッダを示す。これらは MPEG-1 のシンタックスと比べて、 極端に単純化されていることが分かる。 ヘッダは 2 種類であり、I,P,B-picture それぞれに 47, 17, 19 ビットである。 10 Hz の M= 3 では、シンタックスオーバヘッドは、200 bit/s 程度になる。

       表 7.a  シーケンスヘッダ(= I ピクチャヘッダ)
--------------------------------+-------------+
構文要素                        | ビット数    |
--------------------------------+-------------+
sequence_header_code            | 24          |
horizontal_size                 |  7          |
vertical_size                   |  7          |
picture_rate                    |  4          |
quantizer_scale                 |  5          |
--------------------------------+-------------+
total                           | 47          |
--------------------------------+-------------+

       表 7.b  P,B ピクチャヘッダ
--------------------------------+-------------+
構文要素                        | ビット数    |
                                |   (P, B)    |
--------------------------------+-------------+
picture_start_code              | 9           |
picture_coding_type             | 1           |
forward_f_code                  | 2, 2        |
bakcward_f_code                 | 0, 2        |
quantizer_scale                 | 5	      |
--------------------------------+-------------+
total                           | 17,19       |
--------------------------------+-------------+


≪=BACK TOP∧ NEXT=≫

(この項の原文の計算の誤りを修正しました。Mar. 26 2002) Sony の名目 30 Hz 方式では、MPEG-1 のシンタックスのオーバーヘッド(約 3300 bit/s)以外に、 空のスライスは許されないため、スライスの最初と最後のマクロブロックをつける必要がある。

B-picture のヘッダ以外に最初のマクロブロックに 6 bit (MBA 1 bit + MBT 3bit +MV 2 bit)、 最後のマクロブロックに同様な 6 bit (MBA 1 bit + MBT 3bit +MV 2 bit)と、 35 bit (MBA の macroblock_escape 11 * 2 + 8 + 5 bit))必要で、 (QSIF は 11 * 7 の 77 マクロブロックである。 MBA で、76 を表すには 33 の escape を 2 回と残りの 10 を表す MBA の VLC 8 bit がいる。) 合計で 41 bit 必要である。20 Hz の B-picture であるから、 41*20= 820 bit/s、これが名目 30 Hz のオーバーヘッドである。 MPEG-1シンタックスのオーバヘッドと加算して 3300 bit/s + 820 bit/s= 4120 bit/s が無駄と なっている。

これはシンタックスの簡単化によって、(19+41)*20= 1200 bit/s 程度になる。 しかしシンタックス変更までしては、 せっかくMPEG-1の画像レートに完全に合わせた名目 30 Hz 方式の利点が失われる。 しかし、名目 30 Hz 方式もパラメータ制限であると考え、低レート交換形式で縮約すると考えることができる。 そうすると、これらのオーバーヘッドはすべて解消できる。そのときはトランスデコーダは、 空っぽの B-picture を作成する機能をもつ。しかし、10 Hz に B-picture を使えるわけではない。

空の B-picture を複製するだけでなく、空の P-picture をも複製する機能をトランスデコーダがもてば、 10 Hz MPEG-1 は完全に 30 Hz に戻すことができる。こんなトランスデコーダは意味があるだろうか。 これについて議論はあるだろう。


≪=BACK TOP∧

16. さいごに

GCL で用意した実験結果を中心に OMWF Internet MPEG 小委員会で行なわれた議論と、 低レート用の簡単化したシンタックスなどを紹介した。

現状では、TCP/IP でソフトウェアエンコーダ/デコーダを通信に使うときは、 デコーダはフルスピードで動作し、相手側のエンコーダがフレームレートを決めるという動作が普通であろう。 デコーダにとってデータが来なければ画像とデコードをそのまま止めて待つのが最も単純な動作である。

動画像ブラウジングでは送り出し側が制御しなければ、デコード側がフレームレートを制御する必要がある。 しかし一般には、ビットレートが画像レートを決めてしまうだろう。64 kbit/s で符号化すると 40 kbit/s でしか流れないときは、そのまま多少のスローモーションになるだけである。

このような MPEG-1 標準方式の動画像転送は、すでにあるインターネットの応用とどんな関係になるだろうか。 転送レートの保証のないインターネットで、通信の応用としてはそのままは使えない。 動画像リトリーバルでは大いに使われている。

対ネットワークのリアルタイム転送の要求は品質を保証したプロトコル(TCP)さえも使えないとして、 UDP の中にのせる RTP: A Transfer Protocol for Real-Time Applications (IETF の Network Working Group RFC1889, 1890, 2038) が注目されている。 そこでは MPEG-1/-2 の低レートの非効率性には着目していない。 RTP は MPEG の Video にヘッダをつけてさらに非効率にしている。 つまり将来的には対ネットワークリアルタイム応用も低レートではないのかもしれない。 もし本当にそうなら、ここでの議論はかなりの方向修正を必要とする。

これらは現在進行形の会議の中間報告でしかない。会議の結論はまだなく、 有用な結論が作成できるかどうかも見えない。 この領域に興味のある方々のへのレポートとして有益であればまずまずであり、 その方々への参加を促せたら、さらに成功だと思っている。