メインコンテンツまでスキップ

5.5. Decoding Order Number (DON) (デコード順序番号)

5.5. Decoding Order Number (DON) (デコード順序番号)

インターリーブパケット化モードでは, NAL ユニットの送信順序はデコード順序と異なってよい。デコード順序番号 (Decoding Order Number, DON) はペイロード構造内のフィールドまたは派生変数で, NAL ユニットデコード順序を示す。デコード順序外送信および DON 使用の理由と用例はセクション 13 に示す。

送信順序とデコード順序の結合は, 任意の sprop-interleaving-depth メディアタイプパラメータにより次のように制御される。当該任意パラメータの値が 0 (明示的またはデフォルト) のとき, NAL ユニットの送信順序は NAL ユニットデコード順序に適合しなければならない (MUST)。値が 0 より大きいとき:

  • MTAP16 および MTAP24 内の NAL ユニットの順序は NAL ユニットデコード順序である必要はなく,
  • 2 つの連続パケットに対して STAP-B, MTAP, FU をデパケット化して生成される NAL ユニットの順序も NAL ユニットデコード順序である必要はない。

単一 NAL ユニットパケット, STAP-A, FU-A の RTP ペイロード構造には DON を含まない。STAP-B と FU-B 構造には DON を含み, MTAP の構造はセクション 5.7.2 で規定されるとおり DON の導出を可能にする。

参考注: インターリーブモードで FU-A が現れる場合, 常に DON を設定する FU-B が先行する。

参考注: 送信者が 1 パケットに 1 NAL ユニットをカプセル化しデコード順序外でパケットを送りたい場合, STAP-B パケットタイプを用いることができる。

単一 NAL ユニットパケット化モードでは, RTP シーケンス番号で決まる NAL ユニットの送信順序は NAL ユニットデコード順序と同一でなければならない (MUST)。非インターリーブパケット化モードでは, 単一 NAL ユニットパケット, STAP-A, FU-A 内の NAL ユニットの送信順序はデコード順序と同一でなければならない (MUST)。STAP 内の NAL ユニットは NAL ユニットデコード順で現れなければならない。したがって, デコード順序はまず STAP 内の暗黙の順序で与えられ, 次に STAP, FU, 単一 NAL ユニットパケット間の順序が RTP シーケンス番号で与えられる。

STAP-B, MTAP, および FU-B で始まる一連のフラグメント化ユニットに運ばれる NAL ユニットの DON 値の通知は, それぞれセクション 5.7.1, 5.7.2, 5.8 で規定する。送信順序で最初の NAL ユニットの DON 値は任意に設定してよい (MAY)。DON の値は 0 から 65535 まで (両端含む)。最大値に達した後, DON は 0 に折り返す。

STAP-B, MTAP, または FU-B で始まる一連のフラグメント化ユニットに含まれる任意の 2 つの NAL ユニットのデコード順序は次のように決まる。DON(i) を送信順序でインデックス i を持つ NAL ユニットのデコード順序番号とする。関数 don_diff(m,n) は次のとおり規定する。

DON(m) == DON(n) なら don_diff(m,n) = 0

(DON(m) < DON(n) かつ DON(n) - DON(m) < 32768) なら don_diff(m,n) = DON(n) - DON(m)

(DON(m) > DON(n) かつ DON(m) - DON(n) >= 32768) なら don_diff(m,n) = 65536 - DON(m) + DON(n)

(DON(m) < DON(n) かつ DON(n) - DON(m) >= 32768) なら don_diff(m,n) = - (DON(m) + 65536 - DON(n))

(DON(m) > DON(n) かつ DON(m) - DON(n) < 32768) なら don_diff(m,n) = - (DON(m) - DON(n))

don_diff(m,n) が正なら, 送信順序インデックス n の NAL ユニットが, デコード順序ではインデックス m のものに続く。don_diff(m,n) が 0 なら, 2 つの NAL ユニットのデコード順序はいずれでもよい。負なら, インデックス n のユニットがデコード順序で m より前である。

DON 関連フィールド (DON, DONB, DOND; セクション 5.7 参照) の値は, 上記のとおり DON の値で決まるデコード順序が NAL ユニットデコード順序に適合するようにしなければならない (MUST)。

NAL ユニットデコード順序で 2 つの NAL ユニットの順序を入れ替え, 新しい順序がデコード順序に適合しない場合, それらは同一の DON 値を持ってはならない (MUST NOT)。NAL ユニットストリームで 2 つの連続する NAL ユニットの順序を入れ替え, 新しい順序がなおデコード順序に適合する場合, 同一の DON 値を持ってもよい (MAY)。例えば, 使用するビデオコーディングプロファイルが任意のスライス順序を許す場合, 1 つのコーディングピクチャのすべてのコーディングスライス NAL ユニットは同一の DON 値を持ってよい。したがって, 同一 DON 値の NAL ユニットは任意の順序でデコードでき, 異なる DON 値を持つ 2 つの NAL ユニットは上記の順序でデコーダに渡すべきである。デコード順序で連続する 2 つの NAL ユニットが異なる DON 値を持つ場合, 2 番目の DON 値は 1 番目の値に 1 を加えたものであるべきである (SHOULD)。

NAL ユニットデコード順序を復元するデパケット化の例はセクション 7 に示す。

参考注: 受信者は, デコード順序で連続する 2 つの NAL ユニットの DON 値の絶対差が 1 であると期待すべきではない。エラーなし転送でもそうとは限らない。DON を NAL ユニットに関連付ける時点ではすべてが受信者に届くか不明な場合があり, 1 ずつ増加する必要はない。例えば, ゲートウェイは転送先ネットワークのビットレート不足時に非参照ピクチャのコーディングスライスや SEI を転送しないことがある。別の例として, ライブ放送が商業広告などの事前エンコードコンテンツで中断される場合, 事前エンコードクリップの最初のイントラピクチャは受信器で即利用できるよう事前送信される。最初のイントラを送る時点で, 事前エンコードクリップの最初のイントラのデコード順より前に何個 NAL がエンコードされるか正確には分からない。したがって事前エンコードクリップ最初のイントラの NAL ユニットの DON は送信時に推定され, DON の値にギャップが生じ得る。