IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クゥアルコム・インコーポレイテッドの特許一覧

特許7633174変換スキップモードのための係数コーディング
<>
  • 特許-変換スキップモードのための係数コーディング 図1
  • 特許-変換スキップモードのための係数コーディング 図2A
  • 特許-変換スキップモードのための係数コーディング 図2B
  • 特許-変換スキップモードのための係数コーディング 図3
  • 特許-変換スキップモードのための係数コーディング 図4
  • 特許-変換スキップモードのための係数コーディング 図5
  • 特許-変換スキップモードのための係数コーディング 図6A
  • 特許-変換スキップモードのための係数コーディング 図6B
  • 特許-変換スキップモードのための係数コーディング 図7
  • 特許-変換スキップモードのための係数コーディング 図8
  • 特許-変換スキップモードのための係数コーディング 図9
  • 特許-変換スキップモードのための係数コーディング 図10
  • 特許-変換スキップモードのための係数コーディング 図11
  • 特許-変換スキップモードのための係数コーディング 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-10
(45)【発行日】2025-02-19
(54)【発明の名称】変換スキップモードのための係数コーディング
(51)【国際特許分類】
   H04N 19/13 20140101AFI20250212BHJP
   H04N 19/132 20140101ALI20250212BHJP
   H04N 19/14 20140101ALI20250212BHJP
   H04N 19/18 20140101ALI20250212BHJP
【FI】
H04N19/13
H04N19/132
H04N19/14
H04N19/18
【請求項の数】 13
(21)【出願番号】P 2021551924
(86)(22)【出願日】2020-03-11
(65)【公表番号】
(43)【公表日】2022-04-26
(86)【国際出願番号】 US2020022065
(87)【国際公開番号】W WO2020185875
(87)【国際公開日】2020-09-17
【審査請求日】2023-02-15
(31)【優先権主張番号】62/816,745
(32)【優先日】2019-03-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/850,453
(32)【優先日】2019-05-20
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/814,654
(32)【優先日】2020-03-10
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】カルチェビチ、マルタ
(72)【発明者】
【氏名】コバン、ムハンメド・ゼイド
(72)【発明者】
【氏名】ワン、ホンタオ
【審査官】久保 光宏
(56)【参考文献】
【文献】Marta Karczewicz, et al.,"CE7: Sign context, level mapping, and bitplane coding for TS residual coding (CE7-3.7, CE7-3.8, CE7-3.9, CE7-3.10, and CE7-3.11)",Document: JVET-O0122-v3, [online],JVET-O0122 (version 3),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2019年07月04日,Pages 1-22,[令和5年11月28日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=6726> and <URL: https://jvet-experts.org/doc_end_user/documents/15_Gothenburg/wg11/JVET-O0122-v3.zip>.,(See document file "JVET-O0122-v3-clean.docx" in the zip file "JVET-O0122-v3.zip".)
【文献】Benjamin Bross, et al.,"Versatile Video Coding (Draft 5)",Document: JVET-N1001-v10, [online],JVET-N1001 (version 10),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2019年07月02日,Pages 116,124,125,[令和5年11月28日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=6640> and <URL: https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v10.zip>.,(See document file "JVET-N1001-v10.docx" in the zip file "JVET-N1001-v10.zip".)
【文献】村上 篤道(外2名)編,「高効率映像符号化技術 HEVC/H.265とその応用」,第1版,日本,株式会社オーム社,2013年02月25日,第39~43,69~73,145,157,158頁,ISBN: 978-4-274-21329-8.
【文献】Jianle Chen, et al.,"Algorithm description for Versatile Video Coding and Test Model 6 (VTM 6)",Document: JVET-O2002-v2, [online],JVET-O2002 (version 2),Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11,2019年09月10日,Pages 1,6,7,82-84,[令和6年5月10日検索], インターネット, <URL: https://jvet-experts.org/doc_end_user/current_document.php?id=7826> and <URL: https://jvet-experts.org/doc_end_user/documents/15_Gothenburg/wg11/JVET-O2002-v2.zip>.,(See document file "JVET-O2002-v2.docx" in the zip file "JVET-O2002-v2.zip".)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
CSDB(日本国特許庁)
学術文献等データベース(日本国特許庁)
IEEEXplore(IEEE)
(57)【特許請求の範囲】
【請求項1】
ビデオデータをデコードする方法において、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在デコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することと、
ここにおいて、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することは、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有することに応答して第1のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であることに応答して第2のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であることに応答して第3のコンテキストオフセットを選択することと、を備える、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることと、
を備え、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることは、
記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
ンタックス要素を受け取ることと、
前記シンタックス要素が1に等しい値を有することに応答して、前記現在デコードされている係数のレベル値が前記予測されたレベル値に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも大きいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値プラス1に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも小さいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値に等しいことを決定することと、
を備える、方法。
【請求項2】
前記第1の隣接係数は、前記現在デコードされている係数に対する上部隣接係数または左隣接係数のうちの一方を備え、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を備える請求項1記載の方法。
【請求項3】
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることは、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定することと、
データの1つ以上のビンを受け取ることと、
前記決定されたコンテキストに基づいて、前記データの1つ以上のビンをコンテキストデコードして、前記現在デコードされている係数に対する符号を決定することと、
を備える請求項1記載の方法。
【請求項4】
逆変換することなく、前記現在デコードされている係数に対する値を逆量子化して、前記ビデオデータの残差ブロックに対する残差値を決定することをさらに備え、および/または、
前記現在デコードされている係数に対する値に基づいて、デコードされた残差ブロックを決定することと、
前記デコードされた残差ブロックを予測ブロックに加算して、再構築されたブロックを決定することと、
前記再構築されたブロック上で1つ以上のフィルタリング動作を実行して、ビデオデータのデコードされたブロックを決定することと、
前記ビデオデータのデコードされたブロックを含むビデオデータのデコードされたピクチャーを出力することと、
をさらに備える請求項1記載の方法。
【請求項5】
ビデオデータをエンコードする方法において、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在エンコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することと、
ここにおいて、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することは、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有することに応答して第1のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であることに応答して第2のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であることに応答して第3のコンテキストオフセットを選択することと、を備える、
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることと、
を備え、
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることは、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対する予測されたレベル値を決定することと、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値に等しいことに応答して、1に等しい値で、シンタックス要素をエンコードすることと、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値よりも小さいことに応答して、前記現在エンコードされている係数のレベル値に等しい値で、シンタックス要素をエンコードすること、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値よりも大きいことに応答して、前記現在エンコードされている係数のレベル値マイナス1に等しい値で、シンタックス要素をエンコードすること、
を備える、方法。
【請求項6】
前記第1の隣接係数は、上部隣接係数または左隣接係数のうちの一方を備え、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を備える請求項記載の方法。
【請求項7】
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることは、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定することと、
前記現在エンコードされている係数に対する符号を決定することと、
前記決定されたコンテキストに基づいて、データの1つ以上のビンをコンテキストエンコードして、前記現在エンコードされている係数に対する符号を表すことと、
を備える請求項記載の方法。
【請求項8】
前記ビデオデータの残差ブロックに対する残差値を量子化して、前記現在エンコードされている係数に対する値を決定することをさらに備え、および/または、
予測ブロックを決定することと、
前記予測ブロックをビデオデータの元のブロックと比較して、前記ビデオデータの残差ブロックを決定することと、
をさらに備える請求項記載の方法。
【請求項9】
ビデオデータをデコードするデバイスにおいて、
ビデオデータを記憶するように構成されているメモリと、
1つ以上のプロセッサと、を具備し、
前記1つ以上のプロセッサは、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在デコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することと、
ここにおいて、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサは、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有することに応答して第1のコンテキストオフセットを選択すること、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であることに応答して第2のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であることに応答して第3のコンテキストオフセットを選択することと、を行うように構成される、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることと、ここにおいて、前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることは、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
シンタックス要素を受け取ることと、
前記シンタックス要素が1に等しい値を有することに応答して、前記現在デコードされている係数のレベル値が前記予測されたレベル値に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも大きいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値プラス1に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも小さいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値に等しいことを決定することと、
を備える、
を行うように構成されているデバイス。
【請求項10】
前記1つ以上のプロセッサは、請求項2からのいずれか一項に記載の方法を実行するようにさらに構成されている請求項記載のデバイス。
【請求項11】
ビデオデータをエンコードするデバイスにおいて、
ビデオデータを記憶するように構成されているメモリと、
1つ以上のプロセッサと、を備え、
前記1つ以上のプロセッサは、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在エンコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することと、
ここにおいて、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサは、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有することに応答して第1のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であることに応答して第2のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であることに応答して第3のコンテキストオフセットを選択することと、
を行うように構成される、
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることと、ここにおいて、前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることは、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対する予測されたレベル値を決定することと、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値に等しいことに応答して、1に等しい値で、シンタックス要素をエンコードすることと、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値よりも小さいことに応答して、前記現在エンコードされている係数のレベル値に等しい値で、シンタックス要素をエンコードすること、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値よりも大きいことに応答して、前記現在エンコードされている係数のレベル値マイナス1に等しい値で、シンタックス要素をエンコードすること、
を備える、
を行うように構成されているデバイス。
【請求項12】
前記1つ以上のプロセッサは、請求項からのいずれか一項に記載の方法を実行するようにさらに構成されている請求項11記載のデバイス。
【請求項13】
命令を記憶している非一時的コンピュータ読取可能記憶媒体において、
前記命令は、1つ以上のプロセッサにより実行されるとき、前記1つ以上のプロセッサに、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在デコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することと、
ここにおいて、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記命令は、前記1つ以上のプロセッサに、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有することに応答して第1のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であることに応答して第2のコンテキストオフセットを選択することと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であることに応答して第3のコンテキストオフセットを選択することと、を行わせる、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることと、ここにおいて、前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることは、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
シンタックス要素を受け取ることと、
前記シンタックス要素が1に等しい値を有することに応答して、前記現在デコードされている係数のレベル値が前記予測されたレベル値に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも大きいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値プラス1に等しいことを決定することと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも小さいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値に等しいことを決定することと、
を備える、
を行わせる非一時的コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]
本出願は、
2020年3月10日に出願された米国特許出願第16/814654号;
2019年3月11日に出願された米国仮特許出願第62/816745号;
2019年5月20日に出願された米国仮特許出願第62/850453号の利益を主張し、それぞれの内容全体が参照により本明細書に組み込まれている。
【技術分野】
【0002】
[0002]
本開示は、ビデオエンコーディングおよびビデオデコーディングに関連する。
【背景】
【0003】
[0003]
デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、パーソナルデジタルアシスタント(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、e-ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話機、いわゆる「スマートフォン」、ビデオ電話会議デバイス、ビデオストリーミングデバイス、および、これらに類するものを含む、幅広い範囲のデバイスに組み込むことができる。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、高度ビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)、および、このような標準規格の拡張によって規定される標準規格に記述されているもののような、ビデオコーディング技法を実現する。ビデオデバイスは、このようなビデオコーディング技法を実現することによって、より効率的にデジタルビデオ情報を送信、受信、エンコード、デコード、および/または、記憶してもよい。
【0004】
[0004]
ビデオコーディング技法は、ビデオシーケンスに内在する冗長を低減または取り除くために、空間的(イントラピクチャー)予測、および/または、時間的(インターピクチャー)予測を含んでいる。ブロックベースのビデオコーディングに対して、ビデオスライス(例えば、ビデオピクチャーまたはビデオピクチャーの一部分)は、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードとして呼ばれることもあるかもしれないビデオブロックに区分してもよい。ピクチャーのイントラコード化された(I)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測を使用してエンコードされる。ピクチャーのインターコード化された(PまたはB)スライスにおけるビデオブロックは、同じピクチャーにおける隣接ブロック中の参照サンプルに関する空間的予測、または、他の参照ピクチャーにおける参照サンプルに関する時間的予測を使用してもよい。ピクチャーは、フレームとして呼ばれることがあり、参照ピクチャーは参照フレームとして呼ばれることがある。
【概要】
【0005】
[0005]
いくつかのコーディングシナリオにおいて、ビデオエンコーダは、変換プロセスが実行されない、すなわち、変換プロセスがスキップされる、変換スキップモードでビデオデータをエンコードしてもよい。したがって、変換スキップモードでエンコードされたブロックに対して、残差データは変換されない。本開示は、変換スキップモードに対する係数コーディングスキームのための技法を説明している。本開示の技法は、係数のバイナリ表現を一連の非バイナリ値化された量子化係数に変換するエントロピーデコーディングプロセスを含んでいる。一般的に、エントロピーデコーディングの逆プロセスである、対応するエントロピーエンコーディングプロセスも本開示の一部である。
【0006】
[0006]
1つの例では、ビデオデータをデコードする方法が、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定することと、現在デコードされている係数の第2の隣接係数に対する値を決定することと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定することと、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードすることとを含んでいる。
【0007】
[0007]
別の例では、ビデオデータをエンコードする方法が、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定することと、現在エンコードされている係数の第2の隣接係数に対する値を決定することと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定することと、決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードすることとを含んでいる。
【0008】
[0008]
別の例では、ビデオデータをデコードするデバイスが、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上のプロセッサとを含み、1つ以上のプロセッサが、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定するようにと、現在デコードされている係数の第2の隣接係数に対する値を決定するようにと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するようにと、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードするように構成されている。
【0009】
[0009]
別の例では、ビデオデータをエンコードするデバイスが、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上のプロセッサとを含み、1つ以上のプロセッサが、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定するようにと、現在エンコードされている係数の第2の隣接係数に対する値を決定するようにと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するようにと、決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードするように構成されている。
【0010】
[0010]
別の例では、ビデオデータをデコードする装置が、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定する手段と、現在デコードされている係数の第2の隣接係数に対する値を決定する手段と、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定する手段と、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードする手段とを含んでいる。
【0011】
[0011]
別の例では、ビデオデータをエンコードする装置が、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定する手段と、現在エンコードされている係数の第2の隣接係数に対する値を決定する手段と、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定する手段と、決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードする手段とを含んでいる。
【0012】
[0012]
別の例では、コンピュータ読取可能記憶媒体が、命令を記憶し、命令は、1つ以上のプロセッサにより実行されるとき、1つ以上のプロセッサに、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定させ、現在デコードされている係数の第2の隣接係数に対する値を決定させ、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定させ、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードさせる。
【0013】
[0013]
別の例では、コンピュータ読取可能記憶媒体が、命令を記憶し、命令は、1つ以上のプロセッサにより実行されるとき、1つ以上のプロセッサに、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定させ、現在エンコードされている係数の第2の隣接係数に対する値を決定させ、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定させ、決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードさせる。
【0014】
[0014]
1つ以上の例の詳細が、添付の図面および以下の説明に記載されている。他の特徴、目的および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0015】
図1】[0015] 図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステムを図示するブロック図である。
図2A】[0016] 図2Aは、例示的な4分ツリー2分ツリー(QTBT)構造と、対応するコーディングツリーユニット(CTU)とを図示する概念図である。
図2B図2Bは、例示的な4分ツリー2分ツリー(QTBT)構造と、対応するコーディングツリーユニット(CTU)とを図示する概念図である。
図3】[0017] 図3は、現在エンコードまたはデコードされている係数の隣接係数の例を示している。
図4】[0018] 図4は、本開示の技法を実行してもよい、例示的なビデオエンコーダを図示するブロック図である。
図5】[0019] 図5は、本開示の技法を実行してもよい、例示的なビデオデコーダを図示するブロック図である。
図6A】[0020] 図6Aは、バイナリ算術コーディングにおける範囲更新プロセスを図示している概念図である。
図6B図6Bは、バイナリ算術コーディングにおける範囲更新プロセスを図示している概念図である。
図7】[0021] 図7は、バイナリ算術コーディングにおける出力プロセスを図示している概念図である。
図8】[0022] 図8は、ビデオエンコーダ中のコンテキスト適応バイナリ算術コーディング(CABAC)コーダを図示しているブロック図である。
図9】[0023] 図9は、ビデオデコーダ中のCABACコーダを図示しているブロック図である。
図10】[0024] 図10は、ビデオデータをエンコードするためのプロセスを図示しているフローチャートである。
図11】[0025] 図11は、ビデオデータをデコードするためのプロセスを図示しているフローチャートである。
図12】[0026] 図12は、残差ブロックの係数の符号をコード化するためのコンテキストを決定するプロセスを図示しているフローチャートである。
【詳細な説明】
【0016】
[0027]
ビデオコーディング(例えば、ビデオエンコーディングおよび/またはビデオデコーディング)は、典型的には、同じピクチャー中のビデオデータの既にコード化されたブロック(例えば、イントラ予測)、または、異なるピクチャー中のビデオデータの既にコード化されたブロック(例えば、インター予測)のいずれかからビデオデータのブロックを予測することを伴う。いくつかの事例では、ビデオエンコーダはまた、予測ブロックを元のブロックと比較することにより残差データを計算する。したがって、残差データは、予測ブロックと元のブロックとの間の差分を表している。残差データをシグナリングするために必要とされるビット数を低減させるために、ビデオエンコーダは、残差データを変換して量子化し、変換され量子化された残差データを、エンコードされたビットストリーム中でシグナリングしてもよい。変換および量子化プロセスにより達成される圧縮は損失が大きいかもしれず、これは、変換および量子化プロセスがデコードされたビデオデータに歪みをもたらすかもしれないことを意味している。
【0017】
[0028]
ビデオデコーダは、残差データをデコードし、残差データを予測ブロックに加算して、予測ブロック単体よりも元のビデオブロックにより密接に一致する、再構築されたビデオブロックを生成させる。残差データの変換および量子化により導入される損失が原因で、最初の再構築されたブロックは、歪みまたはアーティファクトを有するかもしれない。アーティファクトまたは歪みの1つの一般的なタイプは、ブロックネスと呼ばれ、ビデオデータをコード化するのに使用されるブロックの境界が認識できる。
【0018】
[0029]
デコードされたビデオの品質をさらに改善するために、ビデオデコーダは、再構築されたビデオブロック上で、1つ以上のフィルタリング動作を実行することができる。これらのフィルタリング動作の例は、デブロッキングフィルタリング、サンプル適応オフセット(SAO)フィルタリング、および、適応ループフィルタリング(ALF)を含んでいる。これらのフィルタリング動作のためのパラメータは、ビデオエンコーダにより決定されて、エンコードされたビデオビットストリーム中で明示的にシグナリングされるか、または、パラメータがエンコードされたビデオビットストリーム中で明示的にシグナリングされる必要なく、ビデオデコーダにより暗黙的に決定されるかのいずれであってもよい。
【0019】
[0030]
いくつかのコーディングシナリオでは、ビデオエンコーダは、上記で説明した変換プロセスが実行されない、すなわち、変換プロセスがスキップされる、変換スキップモードでビデオデータをエンコードしてもよい。したがって、変換スキップモードでエンコードされたブロックに対して、残差データは変換されない。変換スキップモードを使用してエンコードされたビデオデータの残差ブロックは、変換されていない残差ブロックと呼ばれることもある。本開示は、変換スキップモードに対する係数コーディングスキームのための技法を説明している。本開示の技法は、バイナリ表現を一連の非バイナリ値化された量子化係数に変換するエントロピーデコーディングプロセスを含んでいる。一般的にエントロピーデコーディングの逆プロセスである、対応するエントロピーエンコーディングプロセスも本開示の一部である。本開示の技法は、高効率ビデオコーディング(HEVC)のような、既存のビデオコーデックのいずれかに、または、バーサタイルビデオコーディング(VVC)のような、現在開発中の標準規格に、そして、他の将来のビデオコーディング標準規格に適用してもよい。
【0020】
[0031]
本開示は、例えば、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定することと、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードすることとを含む技法を提案する。残差ブロック中の隣接係数間の係数値は、変換されたブロックに対してよりも、変換スキップされたブロックに対してより相関する傾向があるので、本開示の技法は、改善されたエントロピーコーディングをもたらし、これは、例えば、デコードされたビデオデータの品質を劣化させることなく、エンコードされたビデオデータを表すのに必要とされるビットオーバーヘッドを低減することにより、全体的なコーディング効率を改善することができる。
【0021】
[0032]
図1は、本開示の技法を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステム100を図示するブロック図である。本開示の技法は、一般的に、ビデオデータをコード化(エンコードおよび/またはデコード)することに向けられている。一般的に、ビデオデータは、ビデオを処理するための何らかのデータを含んでいる。したがって、ビデオデータは、生のコード化されていないビデオ、エンコードされたビデオ、デコードされた(例えば、再構築された)ビデオ、および、シグナリングデータのようなビデオメタデータを含んでいてもよい。
【0022】
[0033]
図1に示すように、システム100は、この例では、宛先デバイス116によってデコードされ、表示されるべき、エンコードされたビデオデータを提供する、発信元デバイス102を含んでいる。特に、発信元デバイス102は、コンピュータ読取可能媒体110を介して、ビデオデータを宛先デバイス116に提供する。発信元デバイス102および宛先デバイス116は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータまたは他の移動体デバイス、セットトップボックス、電話ハンドセット、スマートフォン、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、ブロードキャスト受信機デバイス、または、これらに類するものを含む、広範囲のデバイスのうちのいずれであってもよく、または、いずれかを含んでいてもよい。いくつかのケースでは、発信元デバイス102および宛先デバイス116は、ワイヤレス通信のために備えられてもよく、したがって、ワイヤレス通信デバイスとして呼ばれることがある。
【0023】
[0034]
図1の例では、発信元デバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含んでいる。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含んでいる。本開示によると、発信元デバイス102のビデオエンコーダ200および宛先デバイス116のビデオデコーダ300は、本開示で説明されている係数コーディングのための技法を適用するように構成されていてもよい。したがって、発信元デバイス102はビデオエンコーディングデバイスの例を表す一方で、宛先デバイス116はビデオデコーディングデバイスの例を表している。他の例では、発信元デバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含んでいてもよい。例えば、発信元デバイス102は、外部カメラのような外部ビデオソースからビデオデータを受け取ってもよい。同様に、宛先デバイス116は、統合されたディスプレイデバイスを含むよりもむしろ、外部ディスプレイデバイスとインターフェースしていてもよい。
【0024】
[0035]
図1に示されているシステム100は1つの例にすぎない。一般的に、任意のデジタルビデオエンコーディングおよび/またはデコーディングデバイスが、本開示で説明されている係数コーディングのための技法を実行してもよい。発信元デバイス102および宛先デバイス116は、発信元デバイス102が宛先デバイス116への送信のためにコード化されたビデオデータを発生させる、このようなコーディングデバイスの例にすぎない。本開示は、データのコーディング(エンコーディングおよび/またはデコーディング)を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ200およびビデオデコーダ300は、コーディングデバイスの例を、特に、それぞれビデオエンコーダおよびビデオデコーダを表している。いくつかの例では、デバイス102、116は、デバイス102、116のそれぞれがビデオエンコーディングコンポーネントとビデオデコーディングコンポーネントとを含むように、実質的に対称的な態様で動作してもよい。したがって、システム100は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、または、ビデオ電話に対する、ビデオデバイス102とビデオデバイス116との間の一方向または双方向ビデオ送信をサポートしてもよい。
【0025】
[0036]
一般的に、ビデオソース104は、ビデオデータ(すなわち、生のコード化されていないビデオデータ)のソースを表し、ビデオデータの(「フレーム」としても呼ばれる)シーケンシャルな一連のピクチャーを、ピクチャーに対するデータをエンコードするビデオエンコーダ200に提供する。発信元デバイス102のビデオソース104は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/または、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェースを含んでいてもよい。さらなる代替として、ビデオソース104は、ソースビデオとしてのコンピュータグラフィックスベースのデータを、または、ライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組み合わせを発生させてもよい。各ケースにおいて、ビデオエンコーダ200は、キャプチャされた、事前キャプチャされた、または、コンピュータが発生させたビデオデータをエンコードする。ビデオエンコーダ200は、(ときには「表示順序」として呼ばれる)受け取った順序から、コーディングのためのコーディング順序にピクチャーを再構成してもよい。ビデオエンコーダ200は、エンコードされたビデオデータを含むビットストリームを発生させてもよい。発信元デバイス102は、その後、例えば、宛先デバイス116の入力インターフェース122による受け取りおよび/または取り出しのために、出力インターフェース108を介して、コンピュータ読取可能媒体110上に、エンコードされたビデオデータを出力してもよい。
【0026】
[0037]
発信元デバイス102のメモリ106および宛先デバイス116のメモリ120は、汎用メモリを表している。いくつかの例では、メモリ106、120は、生のビデオデータ、例えば、ビデオソース104からの生ビデオと、ビデオデコーダ300からの生のデコードされたビデオデータとを記憶してもよい。追加的にまたは代替的に、メモリ106、120は、例えば、ビデオエンコーダ200およびビデオデコーダ300それぞれによって実行可能なソフトウェア命令を記憶していてもよい。この例では、メモリ106およびメモリ120は、ビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300はまた、機能的に同様または同等の目的のために内部メモリを含んでいてもよいことを理解すべきである。さらに、メモリ106、120は、例えば、ビデオエンコーダ200から出力され、ビデオデコーダ300に入力される、エンコードされたビデオデータを記憶してもよい。いくつかの例では、メモリ106、120の一部分は、1つ以上のビデオバッファとして割り振られ、例えば、生のデコードされたおよび/またはエンコードされたビデオデータを記憶してもよい。
【0027】
[0038]
コンピュータ読取可能媒体110は、発信元デバイス102から宛先デバイス116へとエンコードされたビデオデータを転送することが可能な任意のタイプの媒体またはデバイスを表していてもよい。1つの例では、コンピュータ読取可能媒体110は、発信元デバイス102が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、エンコードされたビデオデータをリアルタイムで宛先デバイス116に直接送信することを可能にする通信媒体を表している。出力インターフェース108は、ワイヤレス通信標準規格にしたがって、エンコードされたビデオデータを含む送信信号を変調してもよく、入力インターフェース122は、ワイヤレス通信プロトコルのような通信標準規格にしたがって、受け取った送信信号を復調してもよい。通信媒体は、無線周波数(RF)スペクトルまたは1つ以上の物理送信ラインのような、何らかのワイヤレスまたはワイヤード通信媒体を備えていてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または、インターネットのようなグローバルネットワークのような、パケットベースのネットワークの一部を形成していてもよい。通信媒体は、ルータ、スイッチ、基地局、または、発信元デバイス102から宛先デバイス116への通信を容易にするのに役立つかもしれない他の何らかの機器を含んでいてもよい。
【0028】
[0039]
いくつかの例では、コンピュータ読取可能媒体110は、記憶デバイス112を含んでいてもよい。発信元デバイス102は、出力インターフェース108から記憶デバイス112にエンコードされたデータを出力してもよい。同様に、宛先デバイス116は、入力インターフェース122を介して、記憶デバイス112からのエンコードされたデータにアクセスしてもよい。記憶デバイス112は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは、エンコードされたビデオデータを記憶するための他の何らかの適切なデジタル記憶媒体のような、さまざまな分散またはローカルにアクセスされるデータ記憶媒体のいずれかを含んでいてもよい。
【0029】
[0040]
いくつかの例では、コンピュータ読取可能媒体110は、ファイルサーバ114、または、発信元デバイス102により発生されたエンコードされたビデオデータを記憶してもよい別の中間記憶デバイスを含んでいてもよい。発信元デバイス102は、エンコードされたビデオデータを、ファイルサーバ114に、または、発信元デバイス102によって発生されたエンコードされたビデオを記憶してもよい別の中間記憶デバイスに出力してもよい。宛先デバイス116は、ストリーミングまたはダウンロードを介して、ファイルサーバ114からの記憶されているビデオデータにアクセスしてもよい。ファイルサーバ114は、エンコードされたビデオを記憶することと、宛先デバイス116にエンコードされたビデオを送信することとができる、任意のタイプのサーバデバイスであってもよい。ファイルサーバ114は、(例えば、ウェブサイトに対する)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、または、ネットワーク接続記憶(NAS)デバイスを表していてもよい。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通して、ファイルサーバ114からのエンコードされたビデオデータにアクセスしてもよい。これは、ファイルサーバ114上に記憶されている、エンコードされたビデオデータにアクセスするのに適している、ワイヤレスチャネル(例えば、Wi-Fi接続)、ワイヤード接続(例えば、デジタル加入者線(DSL)、ケーブルモデム等)、または、その両方の組み合わせを含んでいてもよい。ファイルサーバ114および入力インターフェース122は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、または、これらの組み合わせにしたがって動作するように構成されていてもよい。
【0030】
[0041]
出力インターフェース108および入力インターフェース122は、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキングコンポーネント(例えば、イーサネット(登録商標)カード)、さまざまなIEEE802.11標準規格のいずれかにしたがって動作するワイヤレス通信コンポーネント、または、他の物理コンポーネントを表していてもよい。出力インターフェース108および入力インターフェース122がワイヤレスコンポーネントを備えている例では、出力インターフェース108および入力インターフェース122は、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5G、または、これらに類するもののようなセルラ通信標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。出力インターフェース108がワイヤレス送信機を備えているいくつかの例では、出力インターフェース108および入力インターフェース122は、IEEE802.11仕様、IEEE802.15仕様(例えば、ZigBee(商標))、Bluetooth(登録商標)(商標)標準規格、または、これらに類するもののような他のワイヤレス標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。いくつかの例では、発信元デバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含んでいてもよい。例えば、発信元デバイス102は、ビデオエンコーダ200および/または出力インターフェース108に備わる機能性を実行するSoCデバイスを含んでいてもよく、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に備わる機能性を実行するSoCデバイスを含んでいてもよい。
【0031】
[0042]
本開示の技法は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、HTTPを通した動的適応ストリーミング(DASH)のようなインターネットストリーミングビデオ送信、データ記憶媒体上にエンコードされたデジタルビデオ、データ記憶媒体上に記憶されているデジタルビデオのデコーディング、または、他のアプリケーションのような、さまざまなマルチメディアアプリケーションのうちのいずれかをサポートするビデオコーディングに適用してもよい。
【0032】
[0043]
宛先デバイス116の入力インターフェース122は、コンピュータ読取可能媒体110(例えば、通信媒体、記憶デバイス112、ファイルサーバ114、または、これらに類するもの)からエンコードされたビデオビットストリームを受け取る。エンコードされたビデオビットストリームは、ビデオブロックまたは他のコード化されたユニット(例えば、スライス、ピクチャー、ピクチャーのグループ、シーケンス、または、これらに類するもの)の特性および/または処理を記述する値を有するシンタックス要素のような、ビデオエンコーダ200によって規定され、ビデオデコーダ300によっても使用されるシグナリング情報を含んでいてもよい。ディスプレイデバイス118は、デコードされたビデオデータのデコードされたピクチャーをユーザに表示する。ディスプレイデバイス118は、ブラウン管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または、別のタイプのディスプレイデバイスのような、さまざまなディスプレイデバイスのうちのいずれかを表していてもよい。
【0033】
[0044]
図1には示されていないが、いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、それぞれオーディオエンコーダおよび/またはオーディオデコーダと統合されていてもよく、適切なMUX-DEMUXユニットあるいは他のハードウェアおよび/またはソフトウェアを含んでいて、共通のデータストリームにおけるオーディオおよびビデオの両方を含む多重化されたストリームを取り扱ってもよい。適用可能である場合には、MUX-DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、または、ユーザデータグラムプロトコル(UDP)のような他のプロトコルにしたがっていてもよい。
【0034】
[0045]
ビデオエンコーダ200およびビデオデコーダ300はそれぞれ、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、または、これらの組み合わせのような、さまざまな適したエンコーダおよび/またはデコーダ回路のいずれかとして実現してもよい。技法が部分的にソフトウェアで実現されるとき、デバイスは、適切な、非一時的コンピュータ読取可能媒体においてソフトウェアに対する命令を記憶していてもよく、1つ以上のプロセッサを使用して、ハードウェアにおいて命令を実行して、本開示の技法を実行してもよい。ビデオエンコーダ200およびビデオデコーダ300のそれぞれは、1つ以上のエンコーダまたはデコーダ中に含まれていてもよく、エンコーダまたはデコーダのどちらかは、それぞれのデバイスにおいて、組み合わされたエンコーダ/デコーダ(CODEC)の一部として統合されていてもよい。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/または、セルラ電話機のようなワイヤレス通信デバイスを備えていてもよい。
【0035】
[0046]
ビデオエンコーダ200およびビデオデコーダ300は、高効率ビデオコーディング(HEVC)としても呼ばれるITU-T H.265のようなビデオコーディング標準規格に、または、マルチビューおよび/またはスケーラブルビデオコーディング拡張のような、ビデオコーディング標準規格に対する拡張にしたがって動作してもよい。代替的に、ビデオエンコーダ200およびビデオデコーダ300は、共同調査テストモデル(JEM)またはバーサタイルビデオコーディング(VVC)としても呼ばれるITU-T H.266のような、他のプロプライエタリまたは業界標準規格にしたがって動作してもよい。VVC標準規格のドラフトは、ブロスらにおける「バーサタイルビデオコーディング(ドラフト4)」、ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第13回ミーティング:マサチューセッツ州マラケシ、2019年1月9日~18日、JVET-M1001-v5(以下「VVCドラフト4」)で説明されている。VVC標準規格の別のドラフトは、ブロスらにおける「バーサタイルビデオコーディング(ドラフト7)」、ITU-T SG16WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第16回ミーティング:ジュネーブ、CH、2019年10月1日~11日、JVET-P2001-v14(以下「VVCドラフト7」)で説明されている。しかしながら、本開示の技術は、何らかの特定のコーディング標準規格には限定されない。
【0036】
[0047]
一般的に、ビデオエンコーダ200およびビデオデコーダ300は、ピクチャーのブロックベースコーディングを実行してもよい。「ブロック」という用語は、一般的に、処理される(例えば、エンコードされる、デコードされる、または、そうでなければ、エンコーディングおよび/またはデコーディングプロセスにおいて使用される)データを含む構造を指している。例えば、ブロックは、ルミナンスデータおよび/またはクロミナンスデータのサンプルの2次元行列を含んでいてもよい。一般的に、ビデオエンコーダ200およびビデオデコーダ300は、YUV(例えば、Y、Cb、Cr)フォーマットで表されるビデオデータをコード化するかもしれない。すなわち、ピクチャーのサンプルに対する赤、緑および青(RGB)データをコード化するよりもむしろ、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分とクロミナンス成分とをコード化するかもしれず、ここで、クロミナンス成分は、赤の色相と青の色相の両方のクロミナンス成分を含んでいてもよい。いくつかの例では、ビデオエンコーダ200は、エンコーディングの前に、受け取ったRGBフォーマットされたデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、(図示されていない)前処理ユニットおよび後処理ユニットがこれらの変換を実行してもよい。
【0037】
[0048]
本開示は、一般的に、ピクチャーのデータをエンコードまたはデコードするプロセスを含むように、ピクチャーのコーディング(例えば、エンコーディングおよびデコーディング)に言及しているかもしれない。同様に、本開示は、ブロックに対するデータをエンコードまたはデコードするプロセス、例えば、予測および/または残差コーディングを含むように、ピクチャーのブロックのコーディングに言及しているかもしれない。エンコードされたビデオビットストリームは、一般的に、コーディング決定(例えば、コーディングモード)とブロックへのピクチャーの区分とを表す、シンタックス要素に対する一連の値を含んでいる。したがって、ピクチャーまたはブロックをコード化することへの言及は、一般的に、ピクチャーまたはブロックを形成するシンタックス要素に対する値をコード化することとして理解すべきである。
【0038】
[0049]
HEVCは、コーディングユニット(CU)、予測ユニット(PU)および変換ユニット(TU)を含む、さまざまなブロックを規定する。HEVCにしたがうと、(ビデオエンコーダ200のような)ビデオコーダは、4分ツリー構造にしたがって、コーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUおよびCUを4つの等しい、オーバーラップしない正方形に区分し、4分ツリーの各ノードは、0または4つの子ノードのいずれかを有する。子ノードのないノードは、「リーフノード」として呼ばれることがあり、このようなリーフノードのCUは、1つ以上のPUおよび/または1つ以上のTUを含んでいてもよい。ビデオコーダは、PUとTUとをさらに区分してもよい。例えば、HEVCでは、残差4分ツリー(RQT)はTUの区分を表している。HEVCでは、PUはインター予測データを表す一方で、TUは残差データを表している。イントラ予測されるCUは、イントラモードインジケーションのようなイントラ予測情報を含んでいる。
【0039】
[0050]
別の例として、ビデオエンコーダ200およびビデオデコーダ300は、JEMまたはVVCにしたがって動作するように構成されていてもよい。JEMまたはVVCによると、(ビデオエンコーダ200のような)ビデオコーダは、ピクチャーを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、4分ツリー-2分ツリー(QTBT)構造またはマルチタイプツリー(MTT)構造のようなツリー構造にしたがって、CTUを区分してもよい。QTBT構造は、HEVCのCUとPUとTUとの間の分離のような、複数の区分タイプの概念を除去する。QTBT構造は、4分ツリー区分にしたがって区分される第1のレベルと、2分ツリー区分にしたがって区分される第2のレベルと、の2つのレベルを含んでいる。QTBT構造のルートノードはCTUに対応する。2分ツリーのリーフノードは、コーディングユニット(CU)に対応する。
【0040】
[0051]
MTT区分構造では、4分ツリー(QT)区分と、2分ツリー(BT)区分と、(ターナリーツリー(TT)とも呼ばれる)3分ツリー(TT)区分の1つ以上のタイプとを使用して、ブロックを区分してもよい。3分またはターナリーツリー区分は、ブロックが3つのサブブロックに分割される区分である。いくつかの例では、3分またはターナリーツリー区分は、中心を通して元のブロックを分けずに、ブロックを3つのサブブロックに分ける。MTTにおける区分タイプ(例えば、QT、BTおよびTT)は、対称または非対称であってもよい。
【0041】
[0052]
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、単一のQTBTまたはMTT構造を使用して、ルミナンス成分とクロミナンス成分のそれぞれを表してもよい一方で、他の例では、ビデオエンコーダ200およびビデオデコーダ300は、ルミナンス成分のために1つのQTBT/MTT構造と、両方のクロミナンス成分のために別のQTBT/MTT構造(または、それぞれのクロミナンス成分のために2つのQTBT/MTT構造)のように、2つ以上のQTBTまたはMTT構造を使用してもよい。
【0042】
[0053]
ビデオエンコーダ200およびビデオデコーダ300は、HEVC毎の4分ツリー区分、QTBT区分、MTT区分、または、他の区分構造を使用するように構成されていてもよい。説明のために、本開示の技法の説明は、QTBT区分に関して提示する。しかしながら、本開示の技法はまた、4分ツリー区分、または、他のタイプの区分も同様に使用するように構成されているビデオコーダに適用してもよいことを理解されたい。
【0043】
[0054]
ブロック(例えば、CTUまたはCU)は、ピクチャー中でさまざまな方法でグループ化されてもよい。1つの例として、ブリックは、ピクチャー中の特定のタイル内のCTU行の長方形領域を指しているかもしれない。タイルは、ピクチャー中の特定のタイル列および特定のタイル行内のCTUの長方形領域であってもよい。タイル列は、ピクチャーの高さに等しい高さと、(例えば、ピクチャーパラメータセット中のような)シンタックス要素により指定された幅とを有するCTUの長方形領域を指している。タイル行は、(例えば、ピクチャーパラメータセット中のような)シンタックス要素により指定された高さと、ピクチャーの幅に等しい幅とを有するCTUの長方形領域を指している。
【0044】
[0055]
いくつかの例では、タイルは複数のブリックに区分されてもよく、そのそれぞれはタイル内に1つ以上のCTU行を含んでいてもよい。複数のブリックに区分されないタイルも、ブリックとしても呼ばれることもある。しかしながら、タイルの真のサブセットであるブリックは、タイルとして呼ばれないかもしれない。
【0045】
[0056]
ピクチャー中のブリックはまた、スライス中に配置されてもよい。スライスは、単一のネットワークアブストラクションレイヤ(NAL)ユニット中に排他的に含まれているかもしれないピクチャーの整数個のブリックであってもよい。いくつかの例では、スライスは、多数の完全なタイル、または、1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含んでいる。
【0046】
[0057]
本開示は、「N×N」および「NバイN」を交換可能に使用して、垂直寸法および水平寸法に関する(CUまたは他のビデオブロックのような)ブロックのサンプル寸法、例えば、16×16サンプルまたは16バイ16サンプルを指すかもしれない。一般的に、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、一般的に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表している。CU中のサンプルは、行および列に配置されていてもよい。さらに、CUは、必ずしも垂直方向と同じ数のサンプルを水平方向に有する必要はない。例えば、CUはN×M個のサンプルを備えていてもよく、ここで、Mは必ずしもNに等しいとは限らない。
【0047】
[0058]
ビデオエンコーダ200は、予測および/または残差情報を、ならびに、他の情報を表す、CUに対するビデオデータをエンコードする。予測情報は、CUに対する予測ブロックを形成するために、CUがどのように予測されるべきかを示している。残差情報は、一般的に、エンコーディング前のCUのサンプルと予測ブロックとの間のサンプル毎の差分を表している。
【0048】
[0059]
CUを予測するために、ビデオエンコーダ200は、一般的に、インター予測またはイントラ予測を通して、CUに対する予測ブロックを形成してもよい。インター予測は、一般的に、以前にコード化されたピクチャーのデータからCUを予測することを指す一方で、イントラ予測は、一般的に、同じピクチャーの以前にコード化されたデータからCUを予測することを指している。インター予測を実行するために、ビデオエンコーダ200は、1つ以上の動きベクトルを使用して、予測ブロックを発生させてもよい。ビデオエンコーダ200は、一般的に、動きサーチを実行して、例えば、CUと参照ブロックとの間の差分に関して、CUに密接に一致する参照ブロックを識別してもよい。ビデオエンコーダ200は、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、他のこのような差分計算を使用して、差分メトリックを計算し、参照ブロックが現在CUに密接に一致するか否かを決定してもよい。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して、現在CUを予測してもよい。
【0049】
[0060]
JEMおよびVVCのいくつかの例はまた、インター予測モードと見なしてもよいアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはズームアウト、回転、透視動き、または、他の不規則な動きタイプのような、並進しない動きを表す2つ以上の動きベクトルを決定してもよい。
【0050】
[0061]
イントラ予測を実行するために、ビデオエンコーダ200は、イントラ予測モードを選択して、予測ブロックを発生させてもよい。JEMおよびVVCのいくつかの例は、さまざまな方向性モードとともに、planarモードおよびDCモードを含む、67個のイントラ予測モードを提供する。一般的に、ビデオエンコーダ200は、現在ブロックのサンプルを予測する、現在ブロック(例えば、CUのブロック)に隣接するサンプルを記述するイントラ予測モードを選択する。ビデオエンコーダ200がラスター走査順序(左から右、上部から下部)でCTUおよびCUをコード化すると仮定すると、このようなサンプルは、一般的に、現在ブロックと同じピクチャー中で、現在ブロックの上、左上または左にあってもよい。
【0051】
[0062]
ビデオエンコーダ200は、現在ブロックに対する予測モードを表すデータをエンコードする。例えば、インター予測モードに対して、ビデオエンコーダ200は、さまざまな利用可能なインター予測モードのうちのどれが使用されるかを表すデータとともに、対応するモードに対する動き情報をエンコードしてもよい。単方向または双方向インター予測に対して、例えば、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して、動きベクトルをエンコードしてもよい。ビデオエンコーダ200は、類似するモードを使用して、アフィン動き補償モードに対する動きベクトルをエンコードしてもよい。
【0052】
[0063]
ブロックのイントラ予測またはインター予測のような予測に続いて、ビデオエンコーダ200は、ブロックに対する残差データを計算してもよい。残差ブロックのような残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックに対する予測ブロックとの間の、サンプル毎の差分を表している。ビデオエンコーダ200は、1つ以上の変換を残差ブロックに適用して、サンプルドメインの代わりに変換ドメインにおいて、変換されたデータを生成させてもよい。例えば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または、概念的に類似する変換を残差ビデオデータに適用してもよい。さらに、ビデオエンコーダ200は、モード依存分離不可能2次変換(MDNSST)、信号依存変換、カルーネンレーベ変換(KLT)、または、これらに類するもののような、第1の変換に続く2次変換を適用してもよい。ビデオエンコーダ200は、1つ以上の変換の適用に続いて、変換係数を生成させる。
【0053】
[0064]
上記では変換が実行される例に対して説明したが、いくつかの例では、変換はスキップしてもよい。例えば、ビデオエンコーダ200は、変換動作がスキップされる変換スキップモードを実現してもよい。変換がスキップされる例では、ビデオエンコーダ200は、変換係数の代わりに、残差値に対応する係数を出力してもよい。以下の説明では、「係数」という用語は、残差値に対応する係数または変換の結果から発生された変換係数のいずれかを含んでいると解釈すべきである。
【0054】
[0065]
上述のように、係数を生成させるための何らかの変換または変換がスキップされることに続いて、ビデオエンコーダ200は、係数の量子化を実行してもよい。いくつかの例では、変換がスキップされるときには、量子化もスキップされるかもしれない。量子化は、一般的に、係数が量子化されて、係数を表すために使用されるデータの量を場合によっては低減させ、さらなる圧縮を提供するプロセスを指している。量子化プロセスを実行することによって、ビデオエンコーダ200は、係数のいくつか、または、すべてに関係するビット深度を低減させてもよい。例えば、ビデオエンコーダ200は、量子化の間にn-ビット値をm-ビット値に切り捨ててもよく、ここで、nはmよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ200は、量子化されるべき値のビット単位の右シフトを実行してもよい。
【0055】
[0066]
量子化に続いて、ビデオエンコーダ200は、(例えば、変換の結果から、または、変換スキップに起因して、発生された)係数を走査し、量子化された係数を含む2次元行列から1次元ベクトルを生成させてもよい。走査は、より高いエネルギー(したがって、より低い周波数)の係数をベクトルの前部に配置し、より低いエネルギー(したがって、より高い周波数)の係数をベクトルの後部に配置するように設計されていてもよい。変換がスキップされる例では、走査の結果は、より高いエネルギー係数がベクトルの前部に配置され、より低いエネルギー係数がベクトルの後部に配置されることにならないかもしれない。いくつかの例では、ビデオエンコーダ200は、予め規定された走査順序を利用して、量子化係数を走査し、シリアル化ベクトルを生成させ、その後、ベクトルの量子化係数をエントロピーエンコードしてもよい。他の例では、ビデオエンコーダ200は、適応走査を実行してもよい。量子化係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ200は、例えば、コンテキスト適応バイナリ算術コーディング(CABAC)にしたがって、1次元ベクトルをエントロピーエンコードしてもよい。ビデオエンコーダ200はまた、ビデオデータをデコードする際に、ビデオデコーダ300によって使用するために、エンコードされたビデオデータに関係するメタデータを記述するシンタックス要素に対する値をエントロピーエンコードしてもよい。
【0056】
[0067]
上記で紹介したように、ビデオエンコーダ200は、残差データをTUにエンコードする。TU中の残差データの予想される特性に依存して、ビデオエンコーダ200は、変換モードまたは変換スキップモードのような異なるモードでTUをエンコードしてもよく、異なるモードは、異なる係数コーディングスキームを利用する。いくつかの係数コーディングスキームは、係数グループを利用して、TUをエンコードする。係数グループは、一般的に、TU中の係数のサブセットである。例えば、ビデオエンコーダ200は、16×16TUを4つの4×4係数グループとしてエンコードしてもよい。
【0057】
[0068]
CABACを実行するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当ててもよい。コンテキストは、例えば、シンボルの隣接する値が0値化されているか否かに関連していてもよい。確率決定は、シンボルに割り当てられているコンテキストに基づいていてもよい。
【0058】
[0069]
ビデオエンコーダ200はさらに、例えば、ピクチャーヘッダ中で、ブロックヘッダ中で、スライスヘッダ中で、あるいは、シーケンスパラメータセット(SPS)、ピクチャーパラメータセット(PPS)、または、ビデオパラメータセット(VPS)のような他のシンタックスデータ中で、ビデオデコーダ300への、ブロックベースのシンタックスデータ、ピクチャーベースのシンタックスデータ、および、シーケンスベースのシンタックスデータのようなシンタックスデータを発生させてもよい。ビデオデコーダ300は、同様に、このようなシンタックスデータをデコードして、対応するビデオデータをどのようにデコードするかを決定してもよい。
【0059】
[0070]
このようにして、ビデオエンコーダ200は、エンコードされたビデオデータを含む、例えば、ブロック(例えば、CU)へのピクチャーの区分と、ブロックに対する予測および/または残差情報とを記述する、シンタックス要素を含む、ビットストリームを発生させてもよい。最終的に、ビデオデコーダ300は、ビットストリームを受け取り、エンコードされたビデオデータをデコードしてもよい。
【0060】
[0071]
一般的に、ビデオデコーダ300は、ビデオエンコーダ200によって実行されるプロセスとは逆のプロセスを実行して、ビットストリームのエンコードされたビデオデータをデコードする。例えば、ビデオデコーダ300は、ビデオエンコーダ200のCABACエンコーディングプロセスと、逆ではあるが、実質的に類似する方法で、CABACを使用して、ビットストリームのシンタックス要素に対する値をデコードしてもよい。シンタックス要素は、CTUへのピクチャーの区分情報と、QTBT構造のような、対応する区分構造にしたがって、各CTUを区分することとを規定して、CTUのCUを規定していてもよい。シンタックス要素は、ビデオデータのブロック(例えば、CU)に対する予測および残差情報をさらに規定していてもよい。
【0061】
[0072]
残差情報は、例えば、残差値または変換係数のいずれかを表している量子化係数によって表されていてもよい。ビデオデコーダ300は、ブロックの量子化された変換係数を逆量子化および逆変換して、ブロックに対する残差ブロックを再生させてもよい。ビデオエンコーダ200が変換動作をスキップした例(例えば、変換スキップモード)では、ビデオコーダ300は、逆変換動作をスキップするかもしれない。ビデオデコーダ300は、シグナリングされた予測モード(イントラ予測またはインター予測)と、関連する予測情報(例えば、インター予測に対する動き情報)とを使用して、ブロックに対する予測ブロック(すなわち、予測的なブロック)を形成する。ビデオデコーダ300は、その後、(サンプル毎のベースで)予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生させてもよい。ビデオデコーダ300は、デブロッキングプロセスを実行することのような、追加の処理を実行して、ブロックの境界に沿った視覚的アーティファクトを低減させてもよい。
【0062】
[0073]
本開示の技法によれば、ビデオエンコーダ200およびビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定し、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードするように構成されていてもよい。残差ブロック中の隣接係数間の係数値は、変換されたブロックよりも変換スキップされたブロックの方がより相関する傾向があるので、本開示の技法は、エントロピーコーディングの改善をもたらすかもしれず、これは、例えば、デコードされたビデオデータの品質を劣化させることなく、エンコードされたビデオデータを表すのに必要とされるビットオーバーヘッドを低減することにより、全体的なコーディング効率を改善することができる。
【0063】
[0074]
本開示は、一般的に、シンタックス要素のような、ある情報を「シグナリングすること」に関連しているかもしれない。「シグナリング」という用語は、一般的に、シンタックス要素に対する値の通信および/またはエンコードされたビデオデータをデコードするのに使用される他のデータの通信に関連しているかもしれない。すなわち、ビデオエンコーダ200は、ビットストリーム中でシンタックス要素に対する値をシグナリングしてもよい。一般的に、シグナリングは、ビットストリーム中で値を発生させることを指している。上述のように、発信元デバイス102は、実質的にリアルタイムで、または、宛先デバイス116による後の取り出しのために、シンタックス要素を記憶デバイス112中に記憶させるときに起こるかもしれないような、リアルタイムではなく、ビットストリームを宛先デバイス116に転送してもよい。
【0064】
[0075]
図2Aおよび図2Bは、例示的な4分2分ツリー(QTBT)構造130と、対応するコーディングツリーユニット(CTU)132とを図示する概念図である。実線は4分ツリー分割を表し、点線は2分ツリー分割を表している。2分ツリーの各分割(すなわち、非リーフ)ノードにおいて、どの分割タイプ(すなわち、水平または垂直)が使用されるかを示すために1つのフラグがシグナリングされる。この例では、0が水平分割を示し、1が垂直分割を示している。4分ツリー分割に対して、4分ツリーノードは、ブロックを等しいサイズを有する4つのサブブロックに水平および垂直に分割するので、分割タイプを示す必要はない。したがって、QTBT構造130の領域ツリーレベル(すなわち、第1のレベル)に対する(分割情報のような)シンタックス要素(すなわち、実線)と、QTBT構造130の予測ツリーレベル(すなわち、第2のレベル)に対する(分割情報のような)シンタックス要素(すなわち、破線)を、ビデオエンコーダ200はエンコードしてもよく、ビデオデコーダ300はデコードしてもよい。QTBT構造130の終端リーフノードにより表されるCUに対する予測データおよび変換データのようなビデオデータを、ビデオエンコーダ200はエンコードしてもよく、ビデオデコーダ300はデコードしてもよい。
【0065】
[0076]
一般的に、図2BのCTU132は、第1および第2のレベルにおけるQTBT構造130のノードに対応するブロックのサイズを規定するパラメータと関係しているかもしれない。これらのパラメータは、(サンプル中のCTU132のサイズを表す)CTUサイズと、(MinQTSize、最小許容4分ツリーリーフノードサイズを表す)最小4分ツリーサイズと、(MaxBTSize、最大許容2分ツリールートノードサイズを表す)最大2分ツリーサイズと、(MaxBTDepth、最大許容2分ツリー深度を表す)最大2分ツリー深度と、(MinBTSize、最小許容2分ツリーリーフノードサイズを表す)最小2分ツリーサイズとを含んでいてもよい。
【0066】
[0077]
CTUに対応するQTBT構造のルートノードは、QTBT構造の第1のレベルにおいて4つの子ノードを有してもよく、それぞれが4分ツリー区分にしたがって、区分されていてもよい。すなわち、第1のレベルのノードは、(子ノードを有さない)リーフノードであるか、または、4つの子ノードを有していてもよい。QTBT構造130の例は、親ノードと、分岐に対する実線を有する子ノードとを含むようなノードを表している。第1のレベルのノードが最大許容2分ツリールートノードサイズ(MaxBTSize)より大きくない場合には、したがって、ノードは、それぞれの2分ツリーによりさらに区分することができる。分割により得られたノードが最小許容2分ツリーリーフノードサイズ(MinBTSize)または最大許容2分ツリー深度(MaxBTDepth)に達するまで、1つのノードの2分ツリー分割を繰り返すことができる。QTBT構造130の例は、分岐に対して破線を有するようなノードを表している。2分ツリーリーフノードは、コーディングユニット(CU)として呼ばれ、これは、何らかのさらなる区分なく、予測(例えば、イントラピクチャーまたはインターピクチャー予測)および変換に対して使用される。上記で説明したように、CUは、「ビデオブロック」または「ブロック」として呼ばれることもある。
【0067】
[0078]
QTBT区分構造の1つの例では、CTUサイズは128×128(ルーマサンプルおよび2つの対応する64×64クロマサンプル)として設定され、MinQTSizeは16×16として設定され、MaxBTSizeは64×64として設定され、(幅および高さの両方に対して)MinBTSizeは4として設定され、MaxBTDepthは4として設定される。まず、CTUに対して4分ツリー区分を適用して、4分ツリーリーフノードを発生させる。4分ツリーリーフノードは、16×16(すなわち、MinQTSize)から128×128(すなわち、CTUサイズ)までのサイズを有していてもよい。4分ツリーリーフノードが128×128である場合には、サイズがMaxBTSize(すなわち、この例では、64×64)を超えることから、4分ツリーリーフノードは、2分ツリーにより、さらに分割されないだろう。そうでなければ、4分ツリーリーフノードは、2分ツリーにより、さらに区分されるであろう。したがって、4分ツリーリーフノードはまた、2分ツリーに対するルートノードであり、0としての2分ツリー深度を有する。2分ツリー深度がMaxBTDepth(この例では、4)に達するときには、それ以上の分割は許されない。MinBTSize(この例では、4)に等しい幅を有する2分ツリーノードは、それ以上の水平分割は許されないことを意味する。同様に、MinBTSizeに等しい高さを有する2分ツリーノードは、その2分ツリーノードに対してそれ以上の垂直分割は許されないことを意味する。上述したように、2分ツリーのリーフノードはCUと呼ばれ、さらなる区分なしで、予測および変換にしたがって、さらに処理される。
【0068】
[0079]
ビデオデータのブロックが変換スキップモードでコード化されるとき、ビデオエンコーダ200は、量子化プロセスを実行する前の残差信号に対する変換プロセスをスキップする。ビデオデコーダ300も、同様に、逆量子化プロセスを実行した後の逆変換プロセスステップをスキップする。変換されていない残差信号の特性は、典型的に、変換された信号の特性とはまったく異なる。例えば、変換スキップされたブロックに対する係数は、変換されたブロックに対する係数と比較したときに、それらの隣接係数とより相関する傾向がある。その結果、残差データの変換スキップされたブロック中の隣接係数に対するレベル値および符号情報は、残差データの変換されたブロックに対するレベル値および符号情報と比較したときに、より相関する傾向がある。
【0069】
[0080]
B.Bross,T.Nguyen,P.Keydel,H.Schwarz,D.Marpe,T.Wiegand,「非CE8:変換スキップに対する統一化変換タイプシグナリングおよび残差コーディング」,JVET文書JVET-M0464,マラケシュ,MA,2019年1月は、変換スキップモードでコード化されたブロックに対して残差コーディングを実行するための提案されたプロセスを説明している。変換スキップモードにおけるレベルおよび符号情報の効率的なコーディングのために、JVET-M0464において提案されている係数コーディングは、より効率的なコーディングのために信号特性を活用するように修正されている。
【0070】
[0081]
図3は、残差データの変換スキップされたブロックからの3つの係数の例を示している。変換スキップされたブロックはまた、図3中に示されていない追加の係数を含むだろう。図3の例では、係数値Xは、現在コード化されている係数を表している、係数140の値を表している。係数値X0は、係数140の左隣接の係数である係数142の値を表している。係数値X1は、係数140の上部隣接の係数である係数144の値を表している。本開示では、上部隣接は、上隣接と呼ばれることもある。
【0071】
[0082]
ビデオエンコーダ200およびビデオデコーダ300は、変換スキップブロック中の係数に対する符号コーディングを実行するように構成されていてもよい。JVET-M0464中で説明されている変換スキップ残差コーディングのための技法では、変換されたブロックに対して行われるように最後から最初の代わりに、係数が最初(すなわち、左上部)から最後(すなわち、右下部)にコード化される。JVET-M0464の技法を実現する場合には、ビデオエンコーダ200およびビデオデコーダ300は、CABACを使用して、残差のチャネルタイプをコンテキストとして使用する符号情報をコンテキストコード化するように構成されていてもよい。すなわち、ビデオエンコーダ200およびビデオデコーダ300は、ルーマ残差に対して1つのコンテキストと、クロマ残差に対して別のコンテキストとを使用してもよい。本開示は、JVET-M0464で説明されている技法の代わりに、または、それに加えて使用してもよい符号コーディング技法を説明する。以下の技法は、上隣接係数(例えば、図3中の係数144)と左隣接係数(例えば、図3中の係数142)との符号情報を利用して、現在コード化されている係数(例えば、図3中の係数140)に対する符号コーディングコンテキストオフセットを導出する。
【0072】
[0083]
図3を参照すると、X0は左隣接係数値であり、X1は上隣接係数値である。両方の隣接係数が0であるか、または、両方が非0であるが反対の符号を有する場合には、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストオフセット0(ctxOffset=0)を使用してもよい。そうでなく、両方が非負である場合には、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストオフセット1(ctxOffset=1)を使用してもよい。他のすべてのケースに対して、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストオフセット2(ctxOffset=2)を使用してもよい。これは、以下の擬似コードにより記述することができる。
if((X0==0&&X1==0)||((X0*X1)<0))

ctxOffset=0;

else if(X0>=0&&X1>=0)

ctxOffset=1;

else

ctxOffset=2;
【0073】
[0084]
いくつかの例では、両方の隣接係数が0であるか、または、両方が非0であるが反対の符号を有する場合には、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストオフセット0を使用してもよい。そうでない場合(両方が正であるか、または、両方が負であるか、または、一方が0であり、他方が非0であるとき)、ビデオエンコーダ200およびビデオデコーダ300は、コンテキスト1を使用してもよい。コンテキスト1が使用される場合には、0または1のシグナリングされる符号値は、規約に依存して、現在コード化されている係数に対する符号が、非0隣接のうちの1つの符号と同じであることを意味することになる。この技法はまた、以前にコード化された非0係数の値のみがコンテキスト導出のために使用されるかもしれないコーディングシナリオに拡張することができ、0または1の符号値は、係数の符号が、単一コンテキストを有する以前にコード化された非0係数符号と同じ符号であることを示している。
【0074】
[0085]
上記で説明したコンテキストオフセット導出と組み合わせて、ルーマ成分およびクロマ成分に対して別個のコンテキストセットを使用することができる。
【0075】
[0086]
ビデオエンコーダ200およびビデオデコーダ300はまた、レベルマッピングを実行するように構成されていてもよい。JVET-M0464の変換スキップ残差コーディングでは、sig_coeff_flag、abs_level_gtX_flags、par_level_flag、および、abs_remainder値を使用して、係数絶対レベルabsCoeffLevelをコード化して、最終的な絶対変換係数値を形成し、Xは1、..、5(または、他の何らかのカットオフ値C)とすることができる。それゆえ、absCoeffLevel=1+abs_level_gt1_flag+par_level_flag+2*(abs_level_gt2_flag+abs_level_gt3_flag+...+abs_level_gtC_flag)+2*abs_remainderにより、absCoeffLevelを構築してもよい。
【0076】
[0087]
JVET-M0464におけるようにabsCoeffLevelを直接的に表す代わりに、ビデオエンコーダ200は、absCoeffLevelを修正されたレベルにマッピングするように構成されていてもよい。ビデオデコーダ300は、逆マッピングを実行するように構成されていてもよい。
【0077】
[0088]
上記で説明した符号コーディングコンテキストオフセット導出技法と同様に、ビデオエンコーダ200およびビデオデコーダ300は、絶対係数レベル値をエンコードおよびデコードするために、左隣接係数および上隣接係数のabsCoeffLevel情報を使用してもよい。この例では、X0が、現在コード化されている係数(例えば、図3中の係数140)に対する左隣接係数(例えば、図3中の係数142)の絶対係数レベルを示し、X1が、現在コード化されている係数(例えば、図3中の係数140)に対する上隣接係数(例えば、図3中の係数144)の絶対係数レベルを示している。絶対係数レベルabsCoeffを有する係数を表すために、マッピングされたabsCoeffModがコード化されてもよい。
【0078】
[0089]
absCoeffModに対する値を導出するためのビデオエンコーダ200の動作は、以下の擬似コードで示すことができる:
pred=max(X0,X1);
if(absCoeff==pred

absCoeffMod=1;

else

absCoeffMod=(absCoeff<pred)?absCoeff+1:absCoeff;
【0079】
[0090]
いくつかの例では、コード化されるべき係数の絶対値(absCoeff)が最大隣接予測子predに等しい場合には、ビデオエンコーダ200は、修正されたレベルabsCoeffModを1に設定する。そうではなく、absCoeffが予測子よりも小さい場合には、ビデオエンコーダ200は、コード化されるべき値を1だけインクリメントする。そうでなければ、ビデオエンコーダ200は、absCoeff値を修正しない。
【0080】
[0091]
ビデオエンコーダ200は、例えば、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対する予測されたレベル値を決定し、現在エンコードされている係数のレベル値が予測されたレベル値に等しいことに応答して、1に等しい値で、シンタックス要素をエンコードしてもよい。他の事例では、ビデオエンコーダ200は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対する予測されたレベル値を決定し、現在エンコードされている係数のレベル値が予測されたレベル値よりも小さいことに応答して、現在エンコードされている係数のレベル値に等しい値で、シンタックス要素をエンコードしてもよい。他の事例では、ビデオエンコーダ200は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対する予測されたレベル値を決定し、現在エンコードされている係数のレベル値が予測されたレベル値よりも大きいことに応答して、現在エンコードされている係数のレベル値マイナス1に等しい値で、シンタックス要素をエンコードしてもよい。
【0081】
[0092]
absCoeffの値を導出するためのビデオデコーダ300の動作は、以下の擬似コードで示すことができる。:
pred=max(X0,X1);
if(absCoeffMod==1&&pred>0)

absCoeff=pred;

else

absCoeff=absCoeffMod-(absCoeffMod<=pred);
【0082】
[0093]
ビデオデコーダ300は、例えば、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対する予測されたレベル値を決定し、示しているシンタックス要素を受け取り、シンタックス要素が1に等しい値を有することに応答して、現在デコードされている係数のレベル値が予測されたレベル値に等しいことを決定してもよい。他の事例では、ビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対する予測されたレベル値を決定し、示しているシンタックス要素を受け取り、シンタックス要素に対する値が予測されたレベル値よりも大きいことに応答して、現在デコードされている係数のレベル値がシンタックス要素に対する値プラス1に等しいことを決定してもよい。他の事例では、ビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対する予測されたレベル値を決定し、示しているシンタックス要素を受け取り、シンタックス要素に対する値が予測されたレベル値よりも小さいことに応答して、現在デコードされている係数のレベル値がシンタックス要素に対する値に等しいことを決定してもよい。
【0083】
[0094]
いくつかの例では、ビデオエンコーダ200およびビデオデコーダ300は、左隣接係数値および上隣接係数値が0であるか否かに基づいて、本明細書でabs_level_gt1_flagとして識別されているシンタックス要素のコンテキストを決定または導出する。シンタックス要素abs_level_gt1_flagは、係数値をコード化するのに使用されるシンタックス要素である。1に等しいabs_level_gt1_flagの値は、例えば、係数の絶対レベルが1よりも大きいことを意味していてもよい。0に等しいabs_level_gt1_flagの値は、例えば、係数の絶対レベルが1よりも大きくないことを意味していてもよい。
【0084】
[0095]
1つの例では、コンテキストは、多数の、例えば、3つの異なるコンテキストのうちの1つであってもよい。左隣接係数と上隣接係数の両方が非0値を有するケースに対して、1つのコンテキストを導出してもよい。左隣接係数または上隣接係数のうちの1つのみが非0である値を有するケースに対して、別のコンテキストを導出してもよい。左隣接係数と上隣接係数の両方が0の値を有するケースに対して、第3のコンテキストを導出してもよい。1つの例では、このコンテキスト導出は、非BDPCM(ブロック差分パルスコード変調)モードのみに適用される。
【0085】
[0096]
いくつかの例では、コード化されている係数がブロックの左境界上にあり、左隣接が存在しないときのような、存在しないまたは利用不可能な隣接値を有するコーディングシナリオに対して、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストを導出するときに、0値を使用するように構成されていてもよい。
【0086】
[0097]
いくつかの例では、コンテキスト導出は、以下のように記述することができる:
ctxOffset=0;
if(Exist(left_neighbor)&&非0(left_neighbor))

ctxOffset+=1;

else if(Exist(above_neighbor)&&非0(above_neighbor))

ctxOffset+=1;

このような例では、存在しない/利用不可能な隣接値(例えば、ブロックの左境界上の値の左隣接)に対して、ビデオエンコーダ200およびビデオデコーダ300は、コンテキストを導出するときに、利用不可能な値に対して0値を使用するように構成されていてもよい。
【0087】
[0098]
図4は、本開示の技法を実行してもよい、例示的なビデオエンコーダ200を図示するブロック図である。図4は、説明の目的のために提供されており、本開示において広く例示し説明しているような技法の限定と見なすべきではない。説明の目的のために、本開示は、開発中のHEVC(H.265)ビデオコーディング標準規格およびVVC(H.266)ビデオコーディング標準規格のような、ビデオコーディング標準規格の状況で、ビデオエンコーダ200を説明している。しかしながら、本開示の技法は、これらのビデオコーディング標準規格には限定されず、一般的に、ビデオエンコーディングおよびデコーディングに適用可能である。
【0088】
[0099]
図4の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差発生ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、デコードピクチャーバッファ(DBP)218と、エントロピーエンコーディングユニット220とを含んでいる。ビデオデータメモリ230と、モード選択ユニット202と、残差発生ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DBP218と、エントロピーエンコーディングユニット220のいずれかまたはすべてを、1つ以上のプロセッサ中で、または、処理回路中で実現してもよい。さらに、ビデオエンコーダ200は、これらまたは他の機能を実行するために、追加または代替のプロセッサまたは処理回路を含んでいてもよい。
【0089】
[0100]
ビデオデータメモリ230は、ビデオエンコーダ200のコンポーネントによってエンコードされるべきビデオデータを記憶していてもよい。ビデオエンコーダ200は、例えば、ビデオソース104(図1)からのビデオデータメモリ230中に記憶されているビデオデータを受け取ってもよい。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャーメモリとして機能してもよい。ビデオデータメモリ230およびDPB218は、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのうちのいずれかによって形成されていてもよい。ビデオデータメモリ230およびDPB218は、同じメモリデバイスまたは別個のメモリデバイスによって提供されていてもよい。さまざまな例では、ビデオデータメモリ230は、図示するように、ビデオエンコーダ200の他のコンポーネントとともにオンチップであってもよく、または、これらのコンポーネントに対してオフチップであってもよい。
【0090】
[0101]
本開示では、ビデオデータメモリ230への参照は、そのように具体的に説明されない限り、ビデオエンコーダ200に対して内部であるメモリに、または、そのように具体的に説明されない限り、ビデオエンコーダ200に対して外部であるメモリに限定されるものとして解釈すべきではない。むしろ、ビデオデータメモリ230への参照は、ビデオエンコーダ200がエンコードするために受け取るビデオデータ(例えば、エンコードされるべき現在ブロックに対するビデオデータ)を記憶する参照メモリとして理解すべきである。図1のメモリ106はまた、ビデオエンコーダ200のさまざまなユニットからの出力の一時記憶装置を提供してもよい。
【0091】
[0102]
図4のさまざまなユニットは、ビデオエンコーダ200によって実行される動作の理解を助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってよく、いくつかの例では、1つ以上のユニットは集積回路であってよい。
【0092】
[0103]
ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/または、プログラマブル回路から形成されているプログラマブルコアを含んでいてもよい。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(図1)は、ビデオエンコーダ200が受け取って実行するソフトウェアのオブジェクトコードを記憶していてもよく、または、ビデオエンコーダ200内の(図示されていない)別のメモリがこのような命令を記憶していてもよい。
【0093】
[0104]
ビデオデータメモリ230は、受け取ったビデオデータを記憶するように構成されている。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャーを取り出し、ビデオデータを残差発生ユニット204およびモード選択ユニット202に提供してもよい。ビデオデータメモリ230中のビデオデータは、エンコードされるべき生のビデオデータであってもよい。
【0094】
[0105]
モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含んでいる。モード選択ユニット202は、他の予測モードにしたがってビデオ予測を実行するための追加の機能ユニットを含んでいてもよい。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であってもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。
【0095】
[0106]
モード選択ユニット202は、一般的に、複数のエンコーディングパスを調整して、エンコーディングパラメータの組み合わせをテストし、結果として、このような組み合わせに対するレート歪み値を得る。エンコーディングパラメータは、CTUのCUへの区分、CUに対する予測モード、CUの残差データに対する変換タイプ、CUの残差データに対する量子化パラメータ等を含んでいてもよい。モード選択ユニット202は、最終的に、他のテストされた組み合わせよりも良好なレート歪み値を有するエンコーディングパラメータの組み合わせを選択してもよい。
【0096】
[0107]
ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャーを一連のCTUに区分し、スライス内に1つ以上のCTUをカプセル化してもよい。モード選択ユニット202は、上記で説明したQTBT構造またはHEVCの4分ツリー構造のようなツリー構造にしたがって、ピクチャーのCTUを区分してもよい。上記で説明したように、ビデオエンコーダ200は、ツリー構造にしたがってCTUを区分することから1つ以上のCUを形成してもよい。このようなCUは、一般的に、「ビデオブロック」または「ブロック」として呼ばれることもある。
【0097】
[0108]
一般的に、モード選択ユニット202はまた、そのコンポーネント(例えば、動き推定ユニット222、動き補償ユニット224、および、イントラ予測ユニット226)を制御して、現在ブロック(例えば、現在CU、または、HEVCでは、PUとTUとのオーバーラップする部分)に対する予測ブロックを発生させる。現在ブロックのインター予測のために、動き推定ユニット222は、動きサーチを実行して、1つ以上の参照ピクチャー(例えば、DPB218中に記憶されている1つ以上の以前にコード化されたピクチャー)中の1つ以上の密接に一致する参照ブロックを識別してもよい。特に、動き推定ユニット222は、例えば、絶対差分の和(SAD)、二乗差分の和(SSD)、平均絶対差分(MAD)、平均二乗差分(MSD)、または、これらに類するものにしたがって、潜在的参照ブロックが現在ブロックにどれだけ類似しているかを表す値を計算してもよい。動き推定ユニット222は、一般的に、現在ブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用して、これらの計算を実行してもよい。動き推定ユニット222は、現在ブロックに最も密接に一致する参照ブロックを示す、これらの計算から結果的に生じる最低値を有する参照ブロックを識別してもよい。
【0098】
[0109]
動き推定ユニット222は、現在ピクチャー中の現在ブロックの位置に対する、参照ピクチャー中の参照ブロックの位置を規定する、1つ以上の動きベクトル(MV)を形成してもよい。動き推定ユニット222は、その後、動きベクトルを動き補償ユニット224に提供してもよい。例えば、単方向インター予測に対して、動き推定ユニット222は単一の動きベクトルを提供するかもしれない一方で、双方向インター予測に対して、動き推定ユニット222は2つの動きベクトルを提供するかもしれない。動き補償ユニット224は、その後、動きベクトルを使用して、予測ブロックを発生させてもよい。例えば、動き補償ユニット224は、動きベクトルを使用して、参照ブロックのデータを取り出してもよい。別の例として、動きベクトルが小数サンプル精度を有する場合には、動き補償ユニット224は、1つ以上の補間フィルタにしたがって、予測ブロックに対する値を補間してもよい。さらに、双方向インター予測に対して、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックに対するデータを取り出し、例えば、サンプル毎の平均化または重み付き平均化を通して、取り出されたデータを組み合わせてもよい。
【0099】
[0110]
別の例として、イントラ予測またはイントラ予測コーディングに対して、イントラ予測ユニット226は、現在ブロックに隣接するサンプルから予測ブロックを発生させてもよい。例えば、方向モードに対して、イントラ予測ユニット226は、一般的に、隣接サンプルの値を数学的に組み合わせ、現在ブロックに渡って規定された方向でこれらの計算された値を格納して、予測ブロックを生成させてもよい。別の例として、DCモードに対して、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックの各サンプルに対するこの結果として得られる平均を含むように予測ブロックを発生させてもよい。
【0100】
[0111]
モード選択ユニット202は、予測ブロックを残差発生ユニット204に提供する。残差発生ユニット204は、ビデオデータメモリ230から現在ブロックの生のコード化されていないバージョンを受け取り、モード選択ユニット202から予測ブロックを受け取る。残差発生ユニット204は、現在ブロックと予測ブロックとの間のサンプル毎の差分を計算する。結果として得られるサンプル毎の差分は、現在ブロックに対する残差ブロックを規定する。いくつかの例では、残差発生ユニット204はまた、残差ブロック中のサンプル値間の差分を決定して、残差差分パルスコード変調(RDPCM)を使用して、残差ブロックを発生させてもよい。いくつかの例では、残差発生ユニット204は、バイナリ減算を実行する1つ以上の減算器回路を使用して形成されていてもよい。
【0101】
[0112]
モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関係していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、さまざまなサイズを有するPUをサポートしていてもよい。上記で示したように、CUのサイズは、CUのルーマコーディングブロックのサイズを指していてもよく、PUのサイズは、PUのルーマ予測ユニットのサイズを指していてもよい。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測に対する2N×2NまたはN×NのPUサイズと、インター予測に対する2N×2N、2N×N、N×2N、N×N、または、これらに類する対称PUサイズとをサポートしていてもよい。ビデオエンコーダ200およびビデオデコーダ300はまた、インター予測のための、2N×nU、2N×nD、nL×2N、および、nR×2NのPUサイズに対する非対称区分をサポートしていてもよい。
【0102】
[0113]
モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関係していてもよい。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指していてもよい。ビデオエンコーダ200およびビデオデコーダ300は、2N×2N、2N×N、または、N×2NのCUサイズをサポートしていてもよい。
【0103】
[0114]
イントラブロックコピーモードコーディング、アフィンモードコーディング、および、線形モデル(LM)モードコーディングのような、他のビデオコーディング技法に対して、いくつかの例として、モード選択ユニット202は、コーディング技法に関係するそれぞれのユニットを介して、エンコードされている現在ブロックに対する予測ブロックを発生させる。パレットモードコーディングのようないくつかの例では、モード選択ユニット202は、予測ブロックを発生させず、代わりに、選択されたパレットに基づいて、ブロックを再構築する方法を示すシンタックス要素を発生させてもよい。このようなモードでは、モード選択ユニット202は、これらのシンタックス要素を、エンコードされるようにエントロピーエンコーディングユニット220に提供してもよい。
【0104】
[0115]
上記で説明したように、残差発生ユニット204は、現在ブロックおよび対応する予測ブロックに対するビデオデータを受け取る。残差発生ユニット204は、その後、現在ブロックに対する残差ブロックを発生させる。残差ブロックを発生させるために、残差発生ユニット204は、予測ブロックと現在ブロックとの間のサンプル毎の差分を計算する。
【0105】
[0116]
変換処理ユニット206は、残差ブロックに1つ以上の変換を適用して、(ここでは「変換係数ブロック」として呼ばれる)変換係数のブロックを発生させる。変換処理ユニット206は、残差ブロックにさまざまな変換を適用して、変換係数ブロックを形成してもよい。例えば、変換処理ユニット206は、離散コサイン変換(DCT)、方向変換、カルーネンレーベ変換(KLT)、または、概念的に類似する変換を、残差ブロックに適用してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに対して複数の変換、例えば、回転変換のような、1次変換と2次変換とを実行してもよい。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。このような事例では、変換処理ユニット206は、係数のブロックを出力してもよく、係数は、変換係数の代わりに、残差値に対応する。
【0106】
[0117]
量子化ユニット208は、変換係数ブロック中の変換係数を量子化して、量子化された変換係数ブロックを生成させてもよい。変換スキップモードでコード化されたブロックに対して、量子化ユニット208は、係数ブロック中の係数を量子化して、量子化された係数ブロックを生成させてもよい。量子化ユニット208は、現在ブロックに関係する量子化パラメータ(QP)値にしたがって、係数または変換係数を量子化してもよい。ビデオエンコーダ200は(例えば、モード選択ユニット202を介して)、CUに関係するQP値を調節することによって、適用される量子化の程度を調節してもよい。量子化は、情報の損失をもたらすかもしれず、したがって、量子化された変換係数または変換係数は、変換処理ユニット206によって生成された元の係数または変換係数よりも低い精度を有するかもしれない。
【0107】
[0118]
逆量子化ユニット210および逆変換処理ユニット212は、逆量子化および逆変換をそれぞれ量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構築してもよい。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって発生させた予測ブロックとに基づいて、(潜在的にある程度の歪みを有するが)現在ブロックに対応する再構築されたブロックを生成させてもよい。例えば、再構築ユニット214は、再構築された残差ブロックのサンプルを、モード選択ユニット202によって発生させた予測ブロックからの対応するサンプルに加算して、再構築されたブロックを生成させてもよい。
【0108】
[0119]
フィルタユニット216は、再構築されたブロック上で1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット216は、デブロッキング動作を実行して、CUのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。いくつかの例では、フィルタユニット216の動作はスキップしてもよい。
【0109】
[0120]
ビデオエンコーダ200は、再構築されたブロックをDPB218中に記憶させる。例えば、フィルタユニット216の動作が実行されない例では、再構築ユニット214は、再構築されたブロックをDPB218中に記憶させてもよい。フィルタユニット216の動作が実行される例では、フィルタユニット216は、再構築されフィルタされたブロックをDPB218中に記憶させてもよい。動き推定ユニット222および動き補償ユニット224は、再構築された(そして、潜在的にフィルタ処理された)ブロックから形成された参照ピクチャーをDPB218から取り出して、後にエンコードされるピクチャーのブロックをインター予測してもよい。加えて、イントラ予測ユニット226は、現在ピクチャーのDPB218中の再構築されたブロックを使用して、現在ピクチャー中の他のブロックをイントラ予測してもよい。
【0110】
[0121]
一般的に、エントロピーエンコーディングユニット220は、ビデオエンコーダ200の他の機能的なコンポーネントから受け取ったシンタックス要素をエントロピーエンコードしてもよい。例えば、エントロピーエンコーディングユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピーエンコードしてもよい。別の例として、エントロピーエンコーディングユニット220は、モード選択ユニット202からの予測シンタックス要素(例えば、インター予測に対する動き情報またはイントラ予測に対するイントラモード情報)をエントロピーエンコードしてもよい。エントロピーエンコーディングユニット220は、ビデオデータの別の例であるシンタックス要素に関して、1つ以上のエントロピーエンコーディング動作を実行して、エントロピーエンコードされたデータを発生させてもよい。例えば、エントロピーエンコーディングユニット220は、データに、コンテキスト適応可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースのコンテキスト適応バイナリ算術コードディング(SBAC)動作、確率区間区分化エントロピー(PIPE)コーディング動作、指数ゴロムエンコーディング動作、または、別のタイプのエントロピーエンコーディング動作を実行してもよい。いくつかの例では、エントロピーエンコーディングユニット220は、シンタックス要素がエントロピーエンコードされないバイパスモードで動作してもよい。
【0111】
[0122]
ビデオエンコーダ200は、スライスまたはピクチャーのブロックを再構築するのに必要とされるエントロピーエンコードされたシンタックス要素を含むビットストリームを出力してもよい。特に、エントロピーエンコーディングユニット220が、ビットストリームを出力してもよい。
【0112】
[0123]
上記で説明している動作は、ブロックに関して説明している。このような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックに対する動作として理解すべきである。上述したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
【0113】
[0124]
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返す必要はない。1つの例として、ルーマコーディングブロックに対する動きベクトル(MV)および参照ピクチャーを識別する動作は、クロマブロックに対するMVおよび参照ピクチャーを識別するために繰り返す必要はない。むしろ、ルーマコーディングブロックに対するMVをスケーリングして、クロマブロックに対するMVを決定してもよく、参照ピクチャーは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックに対して同じであってもよい。
【0114】
[0125]
ビデオエンコーダ200は、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上の処理ユニットとを含むビデオデータをエンコードするデバイスの例を表しており、1つ以上の処理ユニットは、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定するようにと、現在エンコードされている係数の第2の隣接係数に対する値を決定するようにと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するようにと、決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードするように構成されている。第1の隣接係数は、例えば、上部隣接係数または左隣接係数のうちの一方であってもよく、第2の隣接係数は、上部隣接係数または左隣接係数のうちの他方であってもよい。
【0115】
[0126]
決定されたコンテキストオフセットに基づいて、現在エンコードされている係数に対する値をエンコードするために、ビデオエンコーダ200は、決定されたコンテキストオフセットに基づいて、コンテキストを決定するようにと、現在エンコードされている係数に対する符号を決定するようにと、決定されたコンテキストに基づいて、データの1つ以上のビンをコンテキストエンコードして、現在エンコードされている係数に対する符号を表すように構成されていてもよい。ビデオエンコーダ200は、ビデオデータの残差ブロックに対する残差値を量子化して、現在エンコードされている係数に対する値を決定するように構成されていてもよい。ビデオエンコーダ200は、予測ブロックを決定するようにと、予測ブロックをビデオデータの元のブロックと比較して、ビデオデータの残差ブロックを決定するように構成されていてもよい。
【0116】
[0127]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットからコンテキストオフセットを選択するように構成されていてもよい。3つの利用可能なコンテキストオフセットは、第1の隣接係数と第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、第1の隣接係数と第2の隣接係数との両方が正であるか、または、第1の隣接係数と第2の隣接係数とのうちの一方が0に等しく、第1の隣接係数と第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、第1の隣接係数と第2の隣接係数との両方が負であるか、または、第1の隣接係数と第2の隣接係数とのうちの一方が0に等しく、第1の隣接係数と第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含んでいてもよい。
【0117】
[0128]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値が0に等しく、第2の隣接係数に対する値が0に等しいことに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。
【0118】
[0129]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値と第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値が0以上であり、第2の隣接係数に対する値が0以上であり、第1の隣接係数に対する値または第2の隣接係数に対する値のうちの少なくとも1つが1以上であることに応答して、コンテキストオフセット値を第2のオフセット値に設定するように構成されていてもよい。
【0119】
[0130]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値と第2の隣接係数に対する値との両方が非負値であることに応答して、コンテキストオフセット値を第2のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在エンコードされている係数に対するコンテキストオフセットを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する値が0以下であり、第2の隣接係数に対する値が0以下であり、第1の隣接係数に対する値または第2の隣接係数に対する値が-1以下であることに応答して、コンテキストオフセット値を第3のオフセット値に設定するように構成されていてもよい。第1、第2および第3のオフセット値は、例えば、異なるオフセット値であってもよい。コンテキストオフセットは、コンテキストを決定するための値である。したがって、第1、第2および第3のオフセット値は、3つの異なるコンテキストを識別または参照すると見なしてもよい。
【0120】
[0131]
ビデオエンコーダ200はまた、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上の処理ユニットとを含むビデオデータをエンコードするように構成されているデバイスの例を表しており、1つ以上の処理ユニットは、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する絶対係数レベルを決定するようにと、現在エンコードされている係数の第2の隣接係数に対する絶対係数レベルを決定するようにと、現在エンコードされている係数に対する絶対係数レベルを決定するようにと、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、現在エンコードされている係数に対する絶対係数レベルを示している1つ以上のシンタックス要素をエンコードするように構成されている。ビデオエンコーダ200は、例えば、ビデオデータの残差ブロックに対する残差値を量子化して、現在エンコードされている係数に対する値を決定してもよい。
【0121】
[0132]
いくつかの例では、ビデオエンコーダ200は、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、予測子レベルを決定するようにと、予測子レベルが現在エンコードされている係数に対する絶対係数レベルに等しいことを示しているシンタックス要素に対する第1の値と、予測子レベルが現在エンコードされている係数に対する絶対係数レベルに等しくないことを示しているシンタックス要素に対する第2の値とで、シンタックス要素をエンコードするように構成されていてもよい。いくつかの例では、ビデオエンコーダ200は、例えば、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、予測子レベルを決定するようにと、予測子レベルと現在エンコードされている係数に対する絶対係数レベルとに基づいて、シンタックス要素に対する値を決定するようにと、シンタックス要素をエンコードするように構成されていてもよい。予測子レベルを決定するために、ビデオエンコーダ200は、第1の隣接係数に対する絶対係数レベルまたは第2の隣接係数に対する絶対係数レベルの大きい方に等しいように予測子レベルを設定するように構成されていてもよい。
【0122】
[0133]
図5は、本開示の技法を利用してもよい、例示的なビデオデコーダ300を図示するブロック図である。図5は、説明の目的のために提供されており、本開示で広く例示し説明しているような技法には限定されない。説明の目的で、本開示は、JEM、VVCおよびHEVCの技法にしたがうビデオデコーダ300を説明している。しかしながら、本開示の技法は、他のビデオコーディング標準規格に構成されているビデオコーディングデバイスによって実行してもよい。
【0123】
[0134]
図5の例では、ビデオデコーダ300は、コード化ピクチャーバッファ(CPB)メモリ320と、エントロピーデコーディングユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、デコードピクチャーバッファ(DPB)314とを含んでいる。CPBメモリ320と、エントロピーデコーディングユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314のいずれかまたはすべてを、1つ以上のプロセッサ中で、または、処理回路中で実現してもよい。さらに、ビデオデコーダ300は、これらまたは他の機能を実行するために、追加または代替のプロセッサまたは処理回路を含んでいてもよい。
【0124】
[0135]
予測処理ユニット304は、動き補償ユニット316とイントラ予測ユニット318とを含んでいる。予測処理ユニット304は、他の予測モードにしたがって予測を実行するための追加ユニットを含んでいてもよい。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成していてもよい)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニット、または、これらに類するものを含んでいてもよい。他の例では、ビデオデコーダ300は、より多い、より少ない、または、異なる機能的コンポーネントを含んでいてもよい。
【0125】
[0136]
CPBメモリ320は、ビデオデコーダ300のコンポーネントによってデコードされるべき、エンコードされたビデオビットストリームのようなビデオデータを記憶してもよい。CPBメモリ320中に記憶されるビデオデータは、例えば、コンピュータ読取可能媒体110(図1)から取得されてもよい。CPBメモリ320は、エンコードされたビデオビットストリームからのエンコードされたビデオデータ(例えば、シンタックス要素)を記憶するCPBを含んでいてもよい。また、CPBメモリ320は、ビデオデコーダ300のさまざまなユニットからの出力を表す一時データのような、コード化されたピクチャーのシンタックス要素以外のビデオデータを記憶してもよい。DPB314は、一般的に、デコードされたピクチャーを記憶し、エンコードされたビデオビットストリームの後続のデータまたはピクチャーをデコードするときに、ビデオデコーダ300が、このデコードされたピクチャーを、参照ビデオデータとして出力および/または使用してもよい。CPBメモリ320およびDPB314は、DRAM、SDRAM、MRAM、RRAM(登録商標)、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのいずれかによって形成されていてもよい。CPBメモリ320およびDPB314は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。さまざまな例では、CPBメモリ320は、ビデオデコーダ300の他のコンポーネントとともにオンチップであるか、または、これらのコンポーネントに対してオフチップであってもよい。
【0126】
[0137]
追加的にまたは代替的に、いくつかの例では、ビデオデコーダ300は、メモリ120(図1)からコード化されたビデオデータを取り出してもよい。すなわち、メモリ120は、CPBメモリ320を用いて上記で説明したようなデータを記憶していてもよい。同様に、ビデオデコーダ300の機能性のいくつかまたはすべてが、ビデオデコーダ300の処理回路によって実行されるソフトウェアで実現されるとき、メモリ120は、ビデオデコーダ300によって実行されるべき命令を記憶していてもよい。
【0127】
[0138]
図5中に示されているさまざまなユニットは、ビデオデコーダ300によって実行される動作の理解を助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。図4と同様に、固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、(例えば、パラメータを受け取るまたはパラメータを出力するために)ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの1つ以上は、別個の回路ブロック(固定機能またはプログラマブル)であってもよく、いくつかの例では、1つ以上のユニットは集積回路であってもよい。
【0128】
[0139]
ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/または、プログラマブル回路から形成されているプログラマブルコアを含んでいてもよい。ビデオデコーダ300の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップまたはオフチップメモリが、ビデオデコーダ300が受け取って実行するソフトウェアの命令(例えば、オブジェクトコード)を記憶していてもよい。
【0129】
[0140]
エントロピーデコーディングユニット302は、CPBからエンコードされたビデオデータを受け取り、ビデオデータをエントロピーデコードして、シンタックス要素を再生させてもよい。予測処理ユニット304、逆量子化ユニット306、逆変換処理ユニット308、再構築ユニット310、および、フィルタユニット312は、ビットストリームから抽出されたシンタックス要素に基づいて、デコードされたビデオデータを発生させてもよい。
【0130】
[0141]
一般的に、ビデオデコーダ300は、ブロック毎のベースでピクチャーを再構築する。ビデオデコーダ300は、各ブロックに対して個別に再構築動作を実行してもよい(現在再構築されている、すなわち、デコードされているブロックは、「現在ブロック」として呼ばれることがある)。
【0131】
[0142]
エントロピーデコーディングユニット302は、量子化された係数ブロックの量子化された係数を規定するシンタックス要素とともに、量子化パラメータ(QP)および/または変換モードインジケーションのような変換情報をエントロピーデコードしてもよい。逆量子化ユニット306は、量子化係数ブロックに関係するQPを使用して、量子化の程度を、そして、同様に、逆量子化ユニット306が適用する逆量子化の程度を決定してもよい。逆量子化ユニット306は、例えば、ビット単位の左シフト演算を実行して、変換係数を逆量子化してもよい。それによって、逆量子化ユニット306は、係数を含む係数ブロックを形成してもよい。
【0132】
[0143]
逆量子化ユニット306が、変換されたブロックに対する係数ブロックを形成した後、逆変換処理ユニット308は、変換係数ブロックに1つ以上の逆変換を適用して、現在ブロックに関係する残差ブロックを発生させてもよい。例えば、逆変換処理ユニット308は、変換係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または、別の逆変換を適用してもよい。変換スキップモードでコード化されたブロックに対して、逆変換処理ユニット308は、逆変換を実行しないかもしれず、これらのコーディングシナリオでは、係数のブロックを処理しないまたは変更しないパススルーユニットとして見られるかもしれない。
【0133】
[0144]
さらに、予測処理ユニット304は、エントロピーデコーディングユニット302によってエントロピーデコードされた予測情報シンタックス要素にしたがって、予測ブロックを発生させる。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合には、動き補償ユニット316が予測ブロックを発生させてもよい。このケースでは、予測情報シンタックス要素は、参照ブロックを取り出すべきDPB314中の参照ピクチャーとともに、現在ピクチャー中の現在ブロックのロケーションに対する、参照ピクチャー中の参照ブロックのロケーションを識別する動きベクトルを示していてもよい。動き補償ユニット316は、一般的に、動き補償ユニット224(図4)に関して説明した方法と実質的に類似する方法で、インター予測プロセスを実行してもよい。
【0134】
[0145]
別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示している場合には、イントラ予測ユニット318は、予測情報シンタックス要素によって示されているイントラ予測モードにしたがって、予測ブロックを発生させてもよい。再度説明すると、イントラ予測ユニット318は、一般的に、イントラ予測ユニット226(図4)に関して説明した方法と実質的に類似する方法で、イントラ予測プロセスを実行してもよい。イントラ予測ユニット318は、現在ブロックに対する隣接するサンプルのデータをDPB314から取り出してもよい。
【0135】
[0146]
再構築ユニット310は、予測ブロックと残差ブロックとを使用して、現在ブロックを再構築してもよい。例えば、再構築ユニット310は、残差ブロックのサンプルを予測ブロックの対応するサンプルに加算して、現在ブロックを再構築してもよい。
【0136】
[0147]
フィルタユニット312は、再構築されたブロック上で1つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット312は、デブロッキング動作を実行して、再構築されたブロックのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。フィルタユニット312の動作は、必ずしもすべての例において実行する必要はない。
【0137】
[0148]
ビデオデコーダ300は、再構築されたブロックをDPB314中に記憶させてもよい。例えば、フィルタユニット312の動作が実行されない例では、再構築ユニット310が、再構築されたブロックをDPB314に記憶させてもよい。フィルタユニット312の動作が実行される例では、フィルタユニット312が、再構築されフィルタされたブロックをDPB314に記憶させてもよい。上記で説明したように、DPB314は、イントラ予測に対する現在ピクチャーと、後続の動き補償のための以前にデコードされたピクチャーとのサンプルのような参照情報を、予測処理ユニット304に提供してもよい。さらに、ビデオデコーダ300は、図1のディスプレイデバイス118のようなディスプレイデバイス上での後続の提示のために、DPB314からデコードされたピクチャーを出力してもよい。
【0138】
[0149]
ビデオデコーダ300は、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上の処理ユニットとを含む、ビデオデコーディングデバイスの例を表しており、1つ以上の処理ユニットは、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定するようにと、現在デコードされている係数の第2の隣接係数に対する値を決定するようにと、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するようにと、決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードするように構成されている。第1の隣接係数は、例えば、上部隣接係数または左隣接係数のうちの一方であってもよく、第2の隣接係数は、上部隣接係数または左隣接係数のうちの他方であってもよい。上記で説明したように、変換スキップモードでコード化された残差ブロックに対して、係数値は、量子化された残差値または非量子化された残差値のような、残差値に対応していてもよい。
【0139】
[0150]
決定されたコンテキストオフセットに基づいて、現在デコードされている係数に対する値をデコードするために、ビデオデコーダ300は、決定されたコンテキストオフセットに基づいて、コンテキストを決定するようにと、データの1つ以上のビンを受け取るようにと、決定されたコンテキストに基づいて、データの1つ以上のビンをコンテキストデコードして、現在デコードされている係数に対する符号を決定するように構成されていてもよい。ビデオデコーダ300は、現在デコードされている係数に対する値を逆量子化して、ビデオデータの残差ブロックに対する残差値を決定するように構成されていてもよい。ビデオデコーダ300は、現在デコードされている係数に対する値に基づいて、デコードされた残差ブロックを決定するようにと、デコードされた残差ブロックを予測ブロックに加算して、再構築されたブロックを決定するようにと、再構築されたブロック上で1つ以上のフィルタリング動作を実行して、ビデオデータのデコードされたブロックを決定するようにと、ビデオデータのデコードされたブロックを含むビデオデータのデコードされたピクチャーを出力するように構成されていてもよい。
【0140】
[0151]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットからコンテキストオフセットを選択するように構成されていてもよい。3つの利用可能なコンテキストオフセットは、第1の隣接係数と第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、第1の隣接係数と第2の隣接係数との両方が正であるか、または、第1の隣接係数と第2の隣接係数とのうちの一方が0に等しく、第1の隣接係数と第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、第1の隣接係数と第2の隣接係数との両方が負であるか、または、第1の隣接係数と第2の隣接係数とのうちの一方が0に等しく、第1の隣接係数と第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含んでいてもよい。
【0141】
[0152]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値が0に等しく、第2の隣接係数に対する値が0に等しいことに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、コンテキストオフセット値を第1のオフセット値に設定するように構成されていてもよい。
【0142】
[0153]
第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値が0以上であり、第2の隣接係数に対する値が0以上であり、第1の隣接係数に対する値または第2の隣接係数に対する値のうちの少なくとも1つは1つ以上であることに応答して、コンテキストオフセット値を第2のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値と第2の隣接係数に対する値との両方が非負値であることに応答して、コンテキストオフセット値を第2のオフセット値に設定するように構成されていてもよい。第1の隣接係数に対する値と第2の隣接係数に対する値とに基づいて、現在デコードされている係数に対するコンテキストオフセットを決定するために、ビデオデコーダ300は、第1の隣接係数に対する値が0以下であり、第2の隣接係数に対する値が0以下であり、第1の隣接係数に対する値または第2の隣接係数に対する値が-1以下であることに応答して、コンテキストオフセット値を第3のオフセット値に設定するように構成されていてもよい。
【0143】
[0154]
ビデオデコーダ300はまた、ビデオデータを記憶するように構成されているメモリと、回路中で実現されている1つ以上の処理ユニットとを含む、ビデオデコーディングデバイスの例を表しており、1つ以上の処理ユニットは、変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する絶対係数レベルを決定するようにと、現在デコードされている係数の第2の隣接係数に対する絶対係数レベルを決定するようにと、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、現在デコードされている係数に対する絶対係数レベルを決定するように構成されている。ビデオデコーダ300は、例えば、現在デコードされている係数を逆量子化して、ビデオデータの残差ブロックに対する残差値を決定してもよい。
【0144】
[0155]
現在デコードされている係数に対する絶対係数レベルを決定するために、ビデオデコーダ300は、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、予測子レベルを決定するようにと、シンタックス要素を受け取るように構成されていてもよく、シンタックス要素に対する第1の値は、予測子レベルが現在デコードされている係数に対する絶対係数レベルに等しいことを示し、シンタックス要素に対する第2の値は、予測子レベルが現在デコードされている係数に対する絶対係数レベルに等しくないことを示している。現在デコードされている係数に対する絶対係数レベルを決定するために、ビデオデコーダ300は、第1の隣接係数に対する絶対係数レベルと第2の隣接係数に対する絶対係数レベルとに基づいて、予測子レベルを決定するようにと、シンタックス要素を受け取るようにと、予測レベル子とシンタックス要素とに基づいて、現在デコードされている係数に対する絶対係数レベルを決定するように構成されていてもよい。予測子レベルを決定するために、ビデオデコーダ300は、第1の隣接係数に対する絶対係数または第2の隣接係数に対する絶対係数の大きい方に等しいように予測子レベルを設定してもよい。
【0145】
[0156]
図6Aおよび図6Bは、ビンnにおけるCABACプロセスの例を示している。図6Aの例400では、ビンnにおける範囲は、あるコンテキスト状態(σ)が与えられた最小確率シンボル(LPS)の確率(pσ)により与えられるRangeMPSとRangeLPSとを含んでいる。例400は、ビンnの値が最大確率シンボル(MPS)に等しいときのビンn+1における範囲の更新を示している。この例では、範囲の低い値は同じままであるが、ビンn+1における範囲の値は、ビンnにおけるRangeMPSの値に減少する。図6Bの例402は、ビンnの値がMPSに等しくない(すなわち、LPSに等しい)ときのビンn+1における範囲の更新を示している。この例では、範囲の低い値はビンnにおけるRangeLPSの低い方の範囲値に移動する。加えて、ビンn+1における範囲の値は、ビンnにおけるRangeLPSの値に減少する。
【0146】
[0157]
HEVCビデオコーディングプロセスの1つの例では、範囲は9ビットで表され、低い値は10ビットで表される。十分な精度で範囲および低い値を維持するために、再正規化プロセスがある。範囲が256より小さいときはいつでも再正規化が生じる。したがって、再正規化後には、範囲は常に256以上である。範囲の値と低い値とに依存して、バイナリ算術コーダ(BAC)はビットストリームに、「0」または「1」を出力し、あるいは、将来の出力を保持するために(ビットアウトスタンディングBOと呼ばれる)内部変数を更新する。図7は、範囲に依存するBAC出力の例を示している。例えば、範囲および低い値があるしきい値(例えば、512)を上回るときには、「1」がビットストリームに出力される。範囲および低い値があるしきい値(例えば、512)を下回るときには、「0」がビットストリームに出力される。範囲および低い値があるしきい値間にあるときには、何もビットストリームに出力されない。代わりに、BO値がインクリメントされ、次のビンがエンコードされる。
【0147】
[0158]
H.264/AVCのCABACコンテキストモデルでは、HEVCのいくつかの例では、128の状態がある。(状態σにより示される)0~63とすることができる64の可能性あるLPS確率がある。各MPSは0または1とすることができる。したがって、128の状態は、64の状態確率の、MPS(0または1)に対する2つの可能性ある値倍である。したがって、状態は7ビットでインデックス付けすることができる。
【0148】
[0159]
LPS範囲(rangeLPSσ)を導出する計算を低減させるために、すべてのケースに対する結果を事前計算して、ルックアップ表中に近似値として記憶させてもよい。したがって、簡単な表ルックアップを使用することにより、何らの乗算なく、LPS範囲を取得することができる。乗算を回避することは、いくつかのデバイスまたはアプリケーションにとって重要であることがある。なぜなら、この演算は、多くのハードウェアアーキテクチャにおいて、かなりのレイテンシを引き起こすかもしれないからである。
【0149】
[0160]
乗算の代わりに、4列の事前計算されたLPS範囲表を使用してもよい。範囲は4つのセグメントに分割される。セグメントインデックスは、質問(range>>6)&3により導出することができる。実際には、セグメントインデックスは、実際の範囲からのビットをシフトおよびドロップすることにより導出される。以下の表1は、可能性ある範囲とそれらの対応するインデックスとを示している。
【0150】
【表1】
【0151】
[0161]
したがって、LPS範囲表は、64のエントリ(各確率状態に対して1つ)の4倍(各範囲インデックスに対して1つ)を有する。各エントリはRangeLPSであり、すなわち、範囲をLPS確率倍乗算した値である。この表の一部の例が、以下の表2中に示されている。表2は、確率状態9~12を示している。HEVCに対する1つの提案では、確率状態は、0~63の範囲であってもよい。
【0152】
【表2】
【0153】
[0162]
各セグメント(すなわち、範囲値)において、各確率状態σのLPS範囲は予め規定されている。言い換えれば、確率状態σのLPS範囲は、4つの値(すなわち、各範囲インデックスに対して1つの値)に量子化される。所定のポイントにおいて使用される特定のLPS範囲は、セグメントが属している範囲に依存している。表で使用されている可能性あるLPS範囲の数は、表の列の数(すなわち、可能性あるLPS範囲値の数)とLPS範囲精度との間のトレードオフである。一般的に言えば、列が多いほどLPS範囲値の量子化誤差が小さくなるが、表を記憶するために必要なメモリも多くなる。列が少ないほど量子化誤差が大きくなるが、表を記憶するために必要なメモリも少なくなる。
【0154】
[0163]
上記で説明したように、各LPS確率状態は対応する確率を有する。各状態に対する確率pは以下のように導出される:
σ=αpσ-1
ここで、状態σは0~63である。定数αは各コンテキスト状態間の確率変化量を表している。1つの例では、α=0.9493、すなわち、より正確にはα=(0.01875/0.5)1/63である。状態σ=0における確率は0.5(すなわち、p=1/2)である。すなわち、コンテキスト状態0において、LPSとMPSの確率は等しい確率である。以前の状態にαを乗算することにより、各連続状態における確率が導出される。このようなことから、コンテキスト状態α=1において生じるLPSの確率は、p*0.9493(0.5*0.9493=0.47465)である。このようなことから、状態αのインデックスが増加すると、生じるLPSの確率は減少する。
【0155】
[0164]
信号統計(すなわち、以前にコード化されたビンの値)にしたがうために確率状態が更新されることから、CABACは適応的である。更新プロセスは、以下の通りである。所定の確率状態に対して、更新は、状態インデックスと、LPSまたはMPSのいずれかとして識別されたエンコードされたシンボルの値とに依存する。更新プロセスの結果として、潜在的に修正されたLPS確率推定値と、必要であれば、修正されたMPS値とからなる新しい確率状態が導出される。
【0156】
[0165]
ビン値がMPSに等しい場合には、所定の状態インデックスは1だけインクリメントされてもよい。これは、LPS確率が既にその最小である(すなわち、同様な意味合いでは、最大MPS確率に達する)状態インデックス62においてMPSが生じるときを除いて、すべての状態に対するものである。このケースでは、LPSが見られるまで、または、最後のビン値がエンコードされるまで、状態インデックス62は固定されたままである(最後のビン値の特殊なケースに対して、状態63が使用される)。LPSが生じるとき、以下の式に示されているように、ある量だけ状態インデックスをデクリメントすることにより、状態インデックスが変更される。このルールは、一般的に、以下の例外を除いて、LPSの各発生に適用される。等確率ケースに対応するインデックスσ=0を有する状態においてLPSがエンコードされていると仮定すると、状態インデックスは固定されたままであるが、MPS値は、LPSおよびMPSの値が交換されるようにトグルされる。他のすべてのケースでは、どのシンボルがエンコードされているかにかかわらず、MPS値は変更されない。LPS確率に対する遷移ルールの導出は、所定のLPS確率poldとその更新された対応pnewとの間の以下の関係に基づいている:
MPSが生じている場合には、pnew=max(αpold,p62
LPSが生じている場合には、pnew=(1-α)+αpold
【0157】
[0166]
CABACにおける確率推定プロセスの実際的なインプリメンテーションに関して、すべての遷移ルールは、それぞれが6ビット符号なし整数値の63のエントリを有する、多くても2つの表により実現されるかもしれないことに留意することが重要である。いくつかの例では、状態遷移は、単一の表TransIdxLPSにより決定されてもよく、これは、所定の状態インデックスσに対して、LPSが観測されているケースにおいて、新しい更新された状態インデックスTransIdxLPS[σ]を決定する。MPS駆動遷移は、1の固定値だけ状態インデックスの単純な(飽和された)インクリメントをすることにより取得することができ、更新された状態インデックスmin(σ+1,62)をもたらす。以下の表3は、部分TransIdxLPS表の例である。
【0158】
【表3】
【0159】
[0167]
図6A図6Bおよび図7に関して上記で説明した技法は、CABACの1つの例示的なインプリメンテーションを表しているにすぎない。本開示の技法はCABACのこの説明されているインプリメンテーションのみに限定されるものでないことを理解すべきである。例えば、より古いBACアプローチ(例えば、H.264/AVCにおいて使用されるBACアプローチ)において、表RangeLPSおよびTransIdxLPSは、低解像度ビデオ(すなわち、共通中間フォーマット(CIF)およびクォータCIF(QCIF)ビデオ)に対してチューニングされた。HEVCとVVCのような将来のコーデックとでは、大量のビデオコンテンツは、高精細度(HD)であり、いくつかのケースでは、HDよりも精細である。HDまたはHD解像度より精細なものであるビデオコンテンツは、H.264/AVCを開発するために使用された10歳のQCIFシーケンスとは異なる統計を有する傾向がある。このようなことから、H.264/AVCからの表RangeLPSおよびTransIdxLPSは、余りにも速い様で状態間の適応を生じさせるかもしれない。すなわち、特にLPSが生じるときの確率状態間の遷移は、HDビデオのより滑らかでより高い解像度のコンテンツに対しては大きすぎる可能性がある。したがって、従来の技法にしたがって使用される確率モデルは、HDおよびエキストラHDコンテンツに対しては正確ではないかもしれない。加えて、HDビデオコンテンツがより大きい範囲のピクセル値を含むので、H.264/AVC表は、HDコンテンツに存在しているかもしれないより極端な値に対処するのに十分なエントリを含んでいない。
【0160】
[0168]
このようなことから、HEVCに対して、そして、VVCのような将来のコーディング標準規格に対して、RangeLPSおよびTransIdxLPS表は、この新しいコンテンツの特性に対処するように修正してもよい。特に、HEVCおよび将来のコーディング標準規格に対するBACプロセスはよりゆっくりとした適応プロセスを許容する表を使用してもよく、より極端なケース(すなわち、歪んだ確率)に対処してもよい。したがって、1つの例として、H.264/AVCまたはHEVCによるBACにおいて使用されるよりも多くの確率状態および範囲を含むことにより、これらの目標を達成するように、RangeLPSおよびTransIdxLPS表を修正してもよい。
【0161】
[0169]
図8は、本開示の技法にしたがってCABACを実行するように構成されていてもよい、例えば、図4に示されているビデオエンコーダ200の一部を形成する、例示的なエントロピーエンコードユニット220のブロック図である。シンタックス要素418が、エントロピーエンコーディングユニット220に入力される。シンタックス要素が既にバイナリ値シンタックス要素(すなわち、0および1の値のみを有するシンタックス要素)である場合には、バイナリ化のステップはスキップしてもよい。シンタックス要素が非バイナリ値化シンタックス要素(例えば、係数レベルのような複数のビットにより表されるシンタックス要素)である場合には、非バイナリ値化シンタックス要素は、バイナライザ420によりバイナリ化される。バイナライザ420は、バイナリ決定のシーケンスへの非バイナリ値化シンタックス要素のマッピングを実行する。これらのバイナリ決定は、「ビン」と呼ばれることが多い。例えば、係数レベルに対して、レベルの値は連続するビンに分解されてもよく、各ビンは係数レベルの絶対値が何らかの値よりも大きいか否かを示している。例えば、(有意性フラグと呼ばれることもある)ビン0は、係数レベルの絶対値が0よりも大きいか否かを示している。ビン1は、係数レベルの絶対値が1よりも大きいか否かを示している等である。各非バイナリ値シンタックス要素に対して、一意的なマッピングを開発してもよい。
【0162】
[0170]
バイナライザ420により生成される各ビンは、エントロピーエンコーディングユニット220のバイナリ算術コーディング側に供給される。すなわち、非バイナリ値化シンタックス要素の予め定められているセットに対して、各ビンタイプ(例えば、ビン0)は、次のビンタイプ(例えば、ビン1)の前にコード化される。コーディングは、通常モードまたはバイパスモードのいずれかで実行してもよい。バイパスモードでは、バイパスエンコーディングエンジン426が、固定確率モデルを使用して、例えば、ゴロムライスまたは指数ゴロムコーディングを使用して、算術コーディングを実行する。バイパスモードは、一般的に、より予測可能なシンタックス要素に対して使用される。
【0163】
[0171]
通常モードにおけるコーディングは、CABACを実行することを伴う。通常モードCABACは、以前にコード化されたビンの値が与えられた場合に、ビンの値の確率が予測可能であるビン値をコーディングするためのものである。ビンの確率がLPSであることは、コンテキストモデラ422により決定される。コンテキストモデラ422は、ビン値とコンテキストモデル(例えば、確率状態σ)とを出力する。コンテキストモデルは、一連のビンに対する初期コンテキストモデルであってもよく、または、以前にコード化されたビンのコード化された値に基づいて決定されてもよい。上述したように、コンテキストモデラは、以前にコード化されたビンがMPSまたはLPSであったか否かに基づいて、状態を更新してもよい。
【0164】
[0172]
コンテキストモデルおよび確率状態σがコンテキストモデラ422により決定された後、通常エンコーディングエンジン424は、ビン値上でBACを実行する。本開示の技法によれば、通常エンコーディングエンジン424は、64よりも多い確率状態σを含んでいるTransIdxLPS表430を使用してBACを実行する。1つの例では、確率状態の数は128である。TransIdxLPSを使用して、以前のビン(ビンn)がLPSであるときに、次のビン(ビンn+1)に対して、どの確率状態が使用されるかを決定する。通常エンコーディングエンジン424はまた、RangeLPS表428を使用して、特定の確率状態σが与えられたLPSに対する範囲値を決定してもよい。しかしながら、本開示の技法によれば、TransIdxLPS表430のすべての可能性ある確率状態σを使用するのではなく、確率状態インデックスσを、TransIdxLPS表中で使用するためのグループ化インデックスにマッピングする。すなわち、RangeLPS表428への各インデックスは、確率状態の総数のうちの2つ以上を表していてもよい。グループ化されたインデックスへの確率状態インデックスσのマッピングは、(例えば、2で割ることにより)線形であってもよく、または、非線形(例えば、対数関数またはマッピング表)であってもよい。
【0165】
[0173]
本開示の他の例では、パラメータαを0.9493よりも大きくなるように設定することにより、連続する確率状態間の差分をより小さくしてもよい。1つの例では、α=0.9689である。本開示の別の例では、生じるLPSの最高確率(p)は0.5よりも低く設定してもよい。1つの例では、pは0.493に等しくてもよい。
【0166】
[0174]
本開示の1つ以上の技法によれば、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の同じ値(例えば、ウィンドウサイズ、スケーリングファクタ(α)、および、確率更新速度のうちの1つ以上)を使用することとは対照的に、エントロピーエンコーディングユニット220は、異なるコンテキストモデルおよび/または異なるシンタックス要素に対して、変数の異なる値を使用してもよい。例えば、エントロピーエンコーディングユニット220は、複数のコンテキストモデルのうちのコンテキストモデルに対して、バイナリ算術コーディングプロセスにおいて確率状態を更新するために使用される変数の値を決定し、決定された値に基づいて、確率状態を更新してもよい。
【0167】
[0175]
図9は、本開示の技法にしたがってCABACを実行するように構成されていてもよい、例えば、図5中に示されているビデオデコーダ300の一部を形成する、例示的なエントロピーデコーディングユニット302のブロック図である。図9のエントロピーデコーディングユニット302は、図8中で説明されているエントロピーエンコーディングユニット220のものとは逆の方法でCABACを実行する。ビットストリーム448からのコード化されたビットは、エントロピーデコーディングユニット302に入力される。コード化されたビットがバイパスモードまたは通常モードを使用してエントロピーコード化されたかに基づいて、コード化されたビットが、コンテキストモデラ450またはバイパスデコーディングエンジン452のいずれかに供給される。コード化されたビットがバイパスモードでコード化されていた場合には、バイパスデコーディングエンジン452は、例えば、ゴロムライスデコードまたは指数ゴロムデコードを使用して、バイナリ値化シンタックス要素または非バイナリシンタックス要素のビンを取り出してもよい。
【0168】
[0176]
コード化されたビットが通常モードでコード化されていた場合には、コンテキストモデラ450は、コード化されたビットに対する確率モデルを決定してもよく、通常デコーディングエンジン454は、コード化されたビットをデコードして、非バイナリ値化シンタックス要素のビン(または、バイナリ値化されている場合には、シンタックス要素自体)を生成させてもよい。コンテキストモデルおよび確率状態σがコンテキストモデラ450により決定された後、通常デコーディングエンジン454は、ビン値上でBACを実行する。本開示の技法によれば、通常デコーディングエンジン454は、64よりも多い確率状態σを含んでいるTransIdxLPS表458を使用してBACを実行する。本開示の技法と矛盾なく、他の数の確率状態を規定することができるが、1つの例では、確率状態の数は128である。TransIdxLPS表458を使用して、以前のビン(ビンn)がLPSであるときに、次のビン(ビンn+1)に対して、どの確率状態が使用されるかを決定する。通常デコーディングエンジン454はまた、RangeLPS表456を使用して、特定の確率状態σが与えられたLPSに対する範囲値を決定してもよい。しかしながら、本開示の技法によれば、TransIdxLPS表458のすべての可能性ある確率状態σを使用するのではなく、確率状態インデックスσを、RangeLPS表456中で使用するためのグループ化インデックスにマッピングする。すなわち、RangeLPS表456への各インデックスは、確率状態の総数のうちの2つ以上を表していてもよい。グループ化されたインデックスへの確率状態インデックスσのマッピングは、(例えば、2で割ることにより)線形であってもよく、または、非線形(例えば、対数関数またはマッピング表)であってもよい。
【0169】
[0177]
本開示の他の例では、パラメータαを0.9493よりも大きくなるように設定することにより、連続する確率状態間の差分をより小さくしてもよい。1つの例では、α=0.9689である。本開示の別の例では、生じるLPSの最高確率(p)は0.5よりも低く設定してもよい。1つの例では、pは0.493に等しくてもよい。
【0170】
[0178]
ビンが通常デコーディングエンジン454によりデコードされた後、逆バイナライザ460は、逆マッピングを実行して、ビンを変換して非バイナリ値化シンタックス要素の値に戻してもよい。
【0171】
[0179]
図10は、現在ブロックをエンコードするための例示的な方法の例を図示するフローチャートである。現在ブロックは、現在CUを含んでいてもよい。ビデオエンコーダ200(図1および図4)に関して説明したが、図10の方法と類似する方法を実行するように他のデバイスが構成されてもよいことを理解されたい。
【0172】
[0180]
この例では、ビデオエンコーダ200は、最初に現在ブロックを予測する(550)。例えば、ビデオエンコーダ200は、現在ブロックに対する予測ブロックを形成してもよい。ビデオエンコーダ200は、その後、現在ブロックに対する残差ブロックを計算してもよい。(552)。残差ブロックを計算するために、ビデオエンコーダ200は、現在ブロックに対する元のコード化されていないブロックと予測ブロックとの間の差分を計算してもよい。ビデオエンコーダ200は、その後、残差ブロックの係数を変換および量子化してもよい(554)。変換スキップモードのような、いくつかのコーディングモードでは、ビデオエンコーダ200は、変換をスキップし、残差データを量子化するだけかもしれない。次に、ビデオエンコーダ200は、残差ブロックの量子化された係数を走査してもよい(556)。走査の間、または、走査に続いて、ビデオエンコーダ200は、係数をエントロピーエンコードしてもよい(558)。例えば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して、係数をエンコードしてもよい。ビデオエンコーダ200は、その後、係数のエントロピーコード化されたデータを出力してもよい(560)。
【0173】
[0181]
図11は、ビデオデータの現在ブロックをデコードするための例示的な方法を図示するフローチャートである。現在ブロックは、現在CUを含んでいてもよい。ビデオデコーダ300(図1および図5)に関して説明したが、図11の方法と類似する方法を実行するように他のデバイスが構成されてもよいことを理解されたい。
【0174】
[0182]
ビデオデコーダ300は、現在ブロックに対応する残差ブロックの変換係数に対する、エントロピーコード化予測情報およびエントロピーコード化データのような、現在ブロックに対するエントロピーコード化データを受け取ってもよい(570)。ビデオデコーダ300は、エントロピーコード化データをエントロピーデコードして、現在ブロックに対する予測情報を決定し、残差ブロックの係数を再生させてもよい(572)。ビデオデコーダ300は、例えば、現在ブロックに対する予測情報により示されているイントラ予測モードまたはインター予測モードを使用して現在ブロックを予測して、現在ブロックに対する予測ブロックを計算してもよい(574)。ビデオデコーダ300は、その後、再生された係数を逆走査して、量子化された係数のブロックを生成させてもよい(576)。ビデオデコーダ300は、その後、係数を逆量子化および逆変換して、残差ブロックを生成させてもよい(578)。変換スキップモードのような、いくつかのコーディングモードでは、ビデオデコーダ300は、逆変換をスキップし、係数を量子化するだけかもしれない。ビデオデコーダ300は、最終的に、予測ブロックと残差ブロックとを組み合わせることにより、現在ブロックをデコードしてもよい(580)。
【0175】
[0183]
図12は、残差ブロックの係数の符号をコード化(例えば、エンコードまたはデコード)するためのコンテキストを決定するための例示的な方法を図示しているフローチャートである。残差ブロックは、例えば、変換スキップされた残差ブロックであってもよい。図12の技法は、ビデオエンコーダ200のようなビデオエンコーダまたはビデオデコーダ300のようなビデオデコーダのいずれかに対応していてもよい、一般的なビデオコーダに関して説明する。しかしながら、図12の方法と同様の方法を実行するように、他のデバイスを構成してもよいことを理解すべきである。
【0176】
[0184]
ビデオコーダは、現在コード化されている係数の第1の隣接係数に対する値(X0)を決定する(600)。ビデオコーダは、現在コード化されている係数の第2の隣接係数に対する値(X1)を決定する(602)。X0とX1の両方が0に等しいこと(604、はい)に応答して、ビデオコーダは、現在コード化されている係数の符号をコード化するためのコンテキストを第1のコンテキストに設定する(606)。X0またはX1のうちの少なくとも1つが0に等しくない(604、いいえ)が、X0およびX1が反対の符号を有すること(608、はい)に応答して、ビデオコーダはまた、現在コード化されている係数の符号をコード化するためのコンテキストを第1のコンテキストに設定する(610)。
【0177】
[0185]
X0またはX1のうちの少なくとも1つが0に等しくなく(604、いいえ)、X0およびX1が反対の符号を有しておらず(608、いいえ)、X0またはX1のうちの1つが0よりも大きいこと(612、はい)に応答して、ビデオコーダは、現在コード化されている係数の符号をコード化するためのコンテキストを、第1のコンテキストとは異なる第2のコンテキストに設定する(614)。X0またはX1のうちの少なくとも1つが0に等しくなく(604、いいえ)、X0およびX1が反対の符号を有しておらず(608、いいえ)、X0またはX1のいずれも0よりも大きくない(612、いいえ)ことに応答して、ビデオコーダは、現在コード化されている係数の符号をコード化するためのコンテキストを、第1または第2のコンテキストとは異なる第3のコンテキストに設定する(616)。
【0178】
[0186]
例に依存して、ここで説明した技法のうちのいずれかのある動作またはイベントは、異なるシーケンスで実行でき、追加してもよく、マージしてもよく、または、完全に省略してもよい(例えば、説明した動作またはイベントのすべてが本技法の実施のために必要であるとは限らない)ことを認識されたい。さらに、ある例では、動作またはイベントは、シーケンシャルによりもむしろ、例えば、マルチスレッド処理、割り込み処理、または、複数のプロセッサを通して、同時に実行してもよい。
【0179】
[0187]
1つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現してもよい。ソフトウェアで実現される場合には、機能は、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上に記憶されていてもよく、あるいは、1つ以上の命令またはコードとしてコンピュータ読取可能媒体上で送信されてもよく、ハードウェアベースの処理ユニットによって実行してもよい。コンピュータ読取可能媒体はまた、例えば、通信プロトコルにしたがって、コンピュータプログラムの1つの場所から別の場所への転送を容易にする何らかの媒体を含む通信媒体、または、データ記憶媒体のような有形の媒体に対応するコンピュータ読取可能記憶媒体を含んでいてもよい。このように、コンピュータ読取可能媒体は、一般的に、(1)有形コンピュータ読取可能記憶媒体、または、(2)信号または搬送波のような通信媒体に対応していてもよい。データ記憶媒体は、本開示で説明した技法を実現するための命令、コードおよび/またはデータ構造を取り出すために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能媒体を含んでいてもよい。
【0180】
[0188]
限定ではなく例として、このようなコンピュータ読取可能記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態で望ましいプログラムコードを記憶するために使用され、コンピュータによってアクセスすることができる他の何らかの媒体を備えることができる。また、任意の接続は、コンピュータ読取可能媒体と適切に呼ばれる。例えば、命令が、ウェブサイトから、サーバから、あるいは、同軸ケーブル、光ファイバケーブル、撚り対、デジタル加入者線(DSL)、または、赤外線、無線、マイクロ波のようなワイヤレステクノロジーを使用している他の遠隔ソースから送信される場合には、同軸ケーブル、光ファイバケーブル、撚り対、DSL、または、赤外線、無線およびマイクロ波のようなワイヤレステクノロジーは、媒体の定義に含まれる。しかしながら、コンピュータ読取可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または、他の一時的な媒体を含まないが、代わりに、非一時的な、有形の記憶媒体に向けられていることを理解すべきである。ここで使用するようなディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル汎用ディスク(DVD)、フロッピー(登録商標)ディスク、および、ブルーレイ(登録商標)ディスクを含むが、通常、ディスク(disk)はデータを磁気的に再生する一方で、ディスク(disc)はデータをレーザにより光学的に再生する。上記の組み合わせも、コンピュータ読取可能媒体の範囲内に含むべきである。
【0181】
[0189]
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または、他の同等な集積またはディスクリート論理回路のような1つ以上のプロセッサによって実行してもよい。したがって、ここで使用されるように、用語「プロセッサ」および「処理回路」は、前述の構造、または、ここで説明した技術のインプリメンテーションに適した他の何らかの構造のいずれかを指していてもよい。加えて、いくつかの態様では、ここで説明した機能性は、エンコードおよびデコードするように構成されている専用のハードウェアおよび/またはソフトウェアモジュール内に提供してもよく、あるいは、組み合わされたコーデック中に組み込んでもよい。また、技法は、1つ以上の回路または論理エレメントにおいて、完全に実現することができる。
【0182】
[0190]
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置において実施してもよい。さまざまなコンポーネント、モジュール、または、ユニットは、開示した技法を実行するように構成されているデバイスの機能的な態様を強調するためにここ説明しているが、それらは、異なるハードウェアユニットによる実現を必ずしも要求するわけではない。むしろ、上記で説明したように、さまざまなユニットは、コーデックハードウェアユニットにおいて組み合わされるか、または、適切なソフトウェアおよび/またはファームウェアとともに、上記で説明したような1つ以上のプロセッサを含む、相互動作可能ハードウェアユニットの集合によって提供されてもよい。
【0183】
[0191]
さまざまな例を説明してきた。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1] ビデオデータをデコードする方法において、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在デコードされている係数の第2の隣接係数に対する値を決定することと、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することと、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることとを含む方法。
[2] 前記第1の隣接係数は、前記現在デコードされている係数に対する上部隣接係数または左隣接係数のうちの一方を含み、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を含む[1]記載の方法。
[3] 前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることが、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定することと、 データの1つ以上のビンを受け取ることと、
前記決定されたコンテキストに基づいて、前記データの1つ以上のビンをコンテキストデコードして、前記現在デコードされている係数に対する符号を決定することとを含む[1]記載の方法。
[4] 前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
示しているシンタックス要素を受け取ることと、
前記シンタックス要素が1に等しい値を有することに応答して、前記現在デコードされている係数のレベル値が前記予測されたレベル値に等しいことを決定することとを含む[3]記載の方法。
[5] 前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
示しているシンタックス要素を受け取ることと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも大きいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値プラス1に等しいことを決定することとを含む[3]記載の方法。
[6] 前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対する予測されたレベル値を決定することと、
示しているシンタックス要素を受け取ることと、
前記シンタックス要素に対する値が前記予測されたレベル値よりも小さいことに応答して、前記現在デコードされている係数のレベル値が、前記シンタックス要素に対する値に等しいことを決定することとを含む[3]記載の方法。
[7] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットから前記コンテキストオフセットを選択することを含み、
前記3つの利用可能なコンテキストオフセットが、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含む[1]記載の方法。
[8] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0に等しく、前記第2の隣接係数に対する値が0に等しいことに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[9] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、前記第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[10] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[11] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0以上であり、前記第2の隣接係数に対する値が0以上であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値のうちの少なくとも1つが1以上であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[12] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非負値であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[13] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0以下であり、前記第2の隣接係数に対する値が0以下であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値が-1以下であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[1]記載の方法。
[14] 逆変換することなく、前記現在デコードされている係数に対する値を逆量子化して、前記ビデオデータの残差ブロックに対する残差値を決定することをさらに含む[1]記載の方法。
[15] 前記現在デコードされている係数に対する値に基づいて、デコードされた残差ブロックを決定することと、
前記デコードされた残差ブロックを予測ブロックに加算して、再構築されたブロックを決定することと、
前記再構築されたブロック上で1つ以上のフィルタリング動作を実行して、ビデオデータのデコードされたブロックを決定することと、
前記ビデオデータのデコードされたブロックを含むビデオデータのデコードされたピクチャーを出力することとをさらに含む[1]記載の方法。
[16] ビデオデータをエンコードする方法において、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定することと、
前記現在エンコードされている係数の第2の隣接係数に対する値を決定することと、 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することと、
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることとを含む方法。
[17] 前記第1の隣接係数は、上部隣接係数または左隣接係数のうちの一方を含み、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を含む[16]記載の方法。
[18] 前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることが、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定することと、 前記現在エンコードされている係数に対する符号を決定することと、
前記決定されたコンテキストに基づいて、データの1つ以上のビンをコンテキストエンコードして、前記現在エンコードされている係数に対する符号を表すこととを含む[16]記載の方法。
[19] 前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対する予測されたレベル値を決定することと、
前記現在エンコードされている係数のレベル値が前記予測されたレベル値に等しいことに応答して、1に等しい値で、シンタックス要素をエンコードすることとを含む[18]記載の方法。
[20] 前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対する予測されたレベル値を決定することと、
前記現在エンコードされている係数のレベル値が、前記予測されたレベル値よりも小さいことに応答して、前記現在エンコードされている係数のレベル値に等しい値で、シンタックス要素をエンコードすることとをさらに含む[18]記載の方法。
[21] 前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードすることが、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対する予測されたレベル値を決定することと、
前記現在エンコードされている係数のレベル値が前記予測されたレベル値よりも大きいことに応答して、前記現在エンコードされている係数のレベル値マイナス1に等しい値で、シンタックス要素をエンコードすることをさらに含む[18]記載の方法。
[22] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットから前記コンテキストオフセットを選択することを含み、
前記3つの利用可能なコンテキストオフセットが、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含む[16]記載の方法。
[23] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0に等しく、前記第2の隣接係数に対する値が0に等しいことに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[24] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、前記第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[25] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[26] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0以上であり、前記第2の隣接係数に対する値が0以上であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値のうちの少なくとも1つが1以上であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[27] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非負値であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[28] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定することが、前記第1の隣接係数に対する値が0以下であり、前記第2の隣接係数に対する値が0以下であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値が-1以下であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定することを含む[16]記載の方法。
[29] 前記ビデオデータの残差ブロックに対する残差値を量子化して、前記現在エンコードされている係数に対する値を決定することをさらに含む[16]記載の方法。
[30] 予測ブロックを決定することと、
前記予測ブロックをビデオデータの元のブロックと比較して、前記ビデオデータの残差ブロックを決定することとをさらに含む[16]記載の方法。
[31] ビデオデータをデコードするデバイスにおいて、
ビデオデータを記憶するように構成されているメモリと、
回路中で実現されている1つ以上のプロセッサとを具備し、
前記1つ以上のプロセッサが、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定するようにと、
前記現在デコードされている係数の第2の隣接係数に対する値を決定するようにと、 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するようにと、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードするように構成されているデバイス。
[32] 前記第1の隣接係数は、上部隣接係数または左隣接係数のうちの一方を含み、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を含む[31]記載のデバイス。
[33] 前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードするために、前記1つ以上のプロセッサが、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定するようにと、
データの1つ以上のビンを受け取るようにと、
前記決定されたコンテキストに基づいて、前記データの1つ以上のビンをコンテキストデコードして、前記現在デコードされている係数に対する符号を決定するようにさらに構成されている[31]記載のデバイス。
[34] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットから前記コンテキストオフセットを選択するようにさらに構成され、
前記3つの利用可能なコンテキストオフセットが、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含む[31]記載のデバイス。
[35] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0に等しく、前記第2の隣接係数に対する値が0に等しいことに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[36] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、前記第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[37] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[38] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0以上であり、前記第2の隣接係数に対する値が0以上であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値のうちの少なくとも1つが1以上であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[39] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非負値であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[40] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0以下であり、前記第2の隣接係数に対する値が0以下であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値が-1以下であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[31]記載のデバイス。
[41] 前記1つ以上のプロセッサが、
前記現在デコードされている係数に対する値を逆量子化して、前記ビデオデータの残差ブロックに対する残差値を決定するようにさらに構成されている[31]記載のデバイス。
[42] 前記1つ以上のプロセッサが、
前記現在デコードされている係数に対する値に基づいて、デコードされた残差ブロックを決定するようにと、
前記デコードされた残差ブロックを予測ブロックに加算して、再構築されたブロックを決定するようにと、
前記再構築されたブロック上で1つ以上のフィルタリング動作を実行して、ビデオデータのデコードされたブロックを決定するようにと、
前記ビデオデータのデコードされたブロックを含むビデオデータのデコードされたピクチャーを出力するようにさらに構成されている[31]記載のデバイス。
[43] 前記デバイスが、ワイヤレス通信デバイスを備え、前記ワイヤレス通信デバイスが、エンコードされたビデオデータを受信するように構成されている受信機を含む[31]記載のデバイス。
[44] 前記ワイヤレス通信デバイスが、電話ハンドセットを備え、前記受信機が、ワイヤレス通信標準規格にしたがって、前記エンコードされたビデオデータを含む信号を復調するように構成されている[43]記載のデバイス。
[45] デコードされたビデオデータを表示するように構成されているディスプレイをさらに具備する[31]記載のデバイス。
[46] 前記デバイスが、カメラ、コンピュータ、移動体デバイス、ブロードキャスト受信機デバイス、または、セットトップボックスのうちの1つ以上を備える[31]記載のデバイス。
[47] ビデオデータをエンコードするデバイスにおいて、
ビデオデータを記憶するように構成されているメモリと、
回路中で実現されている1つ以上のプロセッサとを具備し、
前記1つ以上のプロセッサが、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在エンコードされている係数の第1の隣接係数に対する値を決定するようにと、
前記現在エンコードされている係数の第2の隣接係数に対する値を決定するようにと、 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するようにと、
前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードするように構成されているデバイス。
[48] 前記第1の隣接係数は、上部隣接係数または左隣接係数のうちの一方を含み、前記第2の隣接係数は、前記上部隣接係数または前記左隣接係数のうちの他方を含む[47]記載のデバイス。
[49] 前記決定されたコンテキストオフセットに基づいて、前記現在エンコードされている係数に対する値をエンコードするために、前記1つ以上のプロセッサが、
前記決定されたコンテキストオフセットに基づいて、コンテキストを決定するようにと、
前記現在エンコードされている係数に対する符号を決定するようにと、
前記決定されたコンテキストに基づいて、データの1つ以上のビンをコンテキストエンコードして、前記現在エンコードされている係数に対する符号を表すようにさらに構成されている[47]記載のデバイス。
[50] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、3つの利用可能なコンテキストオフセットから前記コンテキストオフセットを選択するようにさらに構成され、
前記3つの利用可能なコンテキストオフセットが、
前記第1の隣接係数と前記第2の隣接係数との両方が、0に等しいか、または、反対の符号を有するときのための第1のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が正であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が正であるときのための第2のコンテキストオフセットと、
前記第1の隣接係数と前記第2の隣接係数との両方が負であるか、または、前記第1の隣接係数と前記第2の隣接係数とのうちの一方が0に等しく、前記第1の隣接係数と前記第2の隣接係数とのうちの他方が負であるときのための第3のコンテキストオフセットとを含む[47]記載のデバイス。
[51] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0に等しく、前記第2の隣接係数に対する値が0に等しいことに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[52] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの一方であり、前記第2の隣接係数に対する値が0よりも大きいかまたは0よりも小さいかの他方であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[53] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非0値であり、反対の符号を有することに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[54] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0以上であり、前記第2の隣接係数に対する値が0以上であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値のうちの少なくとも1つが1以上であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[55] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値と前記第2の隣接係数に対する値との両方が非負値であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[56] 前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在エンコードされている係数に対するコンテキストオフセットを決定するために、前記1つ以上のプロセッサが、前記第1の隣接係数に対する値が0以下であり、前記第2の隣接係数に対する値が0以下であり、前記第1の隣接係数に対する値または前記第2の隣接係数に対する値が-1以下であることに応答して、前記コンテキストオフセット値を特定のオフセット値に設定するようにさらに構成されている[47]記載のデバイス。
[57] 前記1つ以上のプロセッサが、
前記ビデオデータの残差ブロックに対する残差値を量子化して、前記現在エンコードされている係数に対する値を決定するようにさらに構成されている[47]記載のデバイス。
[58] 前記1つ以上のプロセッサが、
予測ブロックを決定するようにと、
前記予測ブロックをビデオデータの元のブロックと比較して、前記ビデオデータの残差ブロックを決定するようにさらに構成されている[47]記載のデバイス。
[59] ビデオデータをデコードする装置において、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定する手段と、
前記現在デコードされている係数の第2の隣接係数に対する値を決定する手段と、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定する手段と、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードする手段とを具備する装置。
[60] 命令を記憶しているコンピュータ読取可能記憶媒体において、
前記命令は、1つ以上のプロセッサにより実行されるとき、前記1つ以上のプロセッサに、
変換スキップモードを使用してエンコードされたビデオデータの残差ブロックに対して、現在デコードされている係数の第1の隣接係数に対する値を決定させ、
前記現在デコードされている係数の第2の隣接係数に対する値を決定させ、
前記第1の隣接係数に対する値と前記第2の隣接係数に対する値とに基づいて、前記現在デコードされている係数に対するコンテキストオフセットを決定させ、
前記決定されたコンテキストオフセットに基づいて、前記現在デコードされている係数に対する値をデコードさせるコンピュータ読取可能記憶媒体。
図1
図2A
図2B
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11
図12