Block-Level qi Decode

Theora では、1 Frame あたり 3 つまでの量子化行列を持つことができ、 各 Block ごとに量子化行列を選択することが可能となっている。

この機能により、Frame のある領域の品質を向上させたり、ビットレートコントロール の自由度を確保したりすることができる。

使用する量子化行列パラメーターは、Frame Header で最大 3 つ設定できる。 1つのみを使用する場合は、全ての Block で同一の量子化行列を使用するので、 Block ごとの量子化行列選択データはエンコードされない。

Decoding Process

ビットストリームデコード

全ての Block を量子化行列 0 を使用するよう初期化する。

使用する量子化行列が2つ以上の場合、ビット単位のランレングス法 (7.2) を 使用して、Block ごとに 0, 1 のどちらを使用するかを指定する。NOT CODED となって いる Block については、スキップする。

使用する量子化行列が3の場合、同様のランレングス法によって、1 と設定されている Block について、0, 1 をデコードし、ここで 1 と指定された Block を 2 と設定する。

フレーム再構成

Block ごとに、3つまでの量子化行列を選択して、逆量子化を行う。

ただし、DC 係数については、DC 係数予測処理の関係から、インデックス0の量子化行列の係数 を使用する。

Loop Filtering 処理で、量子化パラメーターを参照するが、これには Block ごとの設定は反映されず、 インデックス0のパラメータを使用する。