LoginSignup
0
0

More than 5 years have passed since last update.

AV1 specification を読む (Annex B スーパーフレーム)

Posted at

AV1 specification 日本語訳

具体的な用途は謎ですが。


Annex B: スーパーフレーム

B.1 概要

AV1では、複数の符号化フレームを1つのチャンクにまとめる「スーパーフレーム」をサポートしています。

このスーパーフレームのインデックスは、チャンクの34bytesまでに格納されます。
中に含まれるフレームは、このスーパーフレームインデックスを解釈することで特定できます。

スーパーフレームのシンタックスはを B.2 節で示し、 シンタックス要素の意味を B.3 節で説明します。
スーパーフレームのパース方法を B.4 節で説明します。

B.2 スーパーフレームシンタックス

superframe(sz)
{
    for (i=0; i<NumFrames; i++)
    {
        frame(frame_sizes[i])
    }
    superframe_index(sz)
}

B.2.1 スーパーフレームインデックス

superframe_index(sz)
{
    frameSizeSum = 0
    superframe_header()
    for (i=0; i<NumFrames-1; i++)
    {
        frame_sizes[i]                          f(SzBytes)
        framesSizeSum += frame_size[i]
    }
    frame_size[i] = sz - SzIndex - frameSizeSum
    superframe_header()
}

B.2.2 スーパーフレームヘッダ

superframe_header()
{
    superframe_marker                   f(3)
    bytes_per_framesize_minus_1         f(2)
    frames_in_superframe_minus_1        f(3)
}

B.3 スーパーフレームセマンティクス

sz

スーパーフレームのバイト数を指定します。
外部から与えられます。

frame_sizes[i]

このスーパーフレーム内のフレーム番号 i(0開始)のフレームのバイト数を指定します。

superframe_marker

0b110 の固定ビット列で、スーパーフレームがそんざいするかどうかを検出するためにあります。

bytes_per_framesize_minus_1

フレームサイズを符号化するために必要なバイト数を指定します。

SzBytes = bytes_per_framesize_minus_1 + 1

frames_in_superframe_minus_1

このスーパーフレーム内のフレーム数を指定します。

NumFrames = frames_in_superframe_minus_1 + 1

注意:
スーパーフレームにはNumFrame==1で1フレームだけが含まれてもかまいません。

B.4 スーパーフレームパーシング

スーパーフレームの使用は選択可能で、1つのチャンクには1つのフレームあるいはスーパーフレームが含まれます。

デコーダは、スーパーフレームの存在意を以下のように検出します。

  1. チャンクの最終バイトをパース氏、superframe_marker==0b110 であることをチェックします。
  2. superframe_indexの合計サイズ SzIndex = 2 + (NumFrames-1)*SzBytes
  3. superframe_indexの最初のバイトが、最後のバイトと一致することをチェックします。

1,3 の両方のチェックが成功したら、そのチャンクにはスーパーフレームが含まれると判断され、スーパーフレーム内の各フレームが順番にデコード処理に渡されます。

そうではなければ、そのチャンクにはスーパーフレームが含まれず、チャンク全体をデコード処理に渡します。

注意:
符号化フレームの最終バイトには superframe_marker が含まれてはいけないという規定があるために、この処理はうまく動きます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0