(57)【要約】現在ブロックに対する動き情報を決定するためのビデオコーディングにおける履歴ベースの候補リスト動作のための技術を説明する。一例では、ビデオデータをデコードするデバイスは、履歴ベースの候補リストを記憶するように構成されているメモリと、ビデオデコーダとを含んでいる。ビデオデコーダは、メモリ中で、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築し、履歴ベース候補リストの候補のサブセットを識別し、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させ、発生させた候補リストに基づいて、現在ブロックを再構築するように構成されている。【選択図】図１０
2021534627.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータをデコードする方法において、
前記方法は、
履歴ベース候補リストの候補として、再構築されたブロックの動き情報を前記履歴ベース候補リスト中に記憶させることにより、前記履歴ベース候補リストを構築することと、
前記履歴ベース候補リストの候補のサブセットを識別することと、
前記履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させることと、
前記発生させた候補リストに基づいて、現在ブロックを再構築することとを含む方法。
【請求項２】
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別することと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することとをさらに含み、
前記履歴ベース候補リストの候補のサブセットを識別することは、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することを含む請求項１記載の方法。
【請求項３】
前記１つ以上の候補の第１のサブセットを識別することは、２つの最も最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの２つの候補を識別することを含む請求項２記載の方法。
【請求項４】
前記候補のサブセットを識別することは、前記履歴ベース候補リストをサブサンプリングして、前記候補のサブセットを識別することを含む請求項１記載の方法。
【請求項５】
前記履歴ベース候補リストをサブサンプリングすることは、前記履歴ベース候補リスト中の４番目毎の候補を識別することを含む請求項４記載の方法。
【請求項６】
前記履歴ベース候補リストをサブサンプリングすることは、前記履歴ベース候補リスト中で最も早く追加された候補から開始して、サブサンプリングすることを含む請求項４記載の方法。
【請求項７】
前記履歴ベース候補リストを構築することは、前記履歴ベース候補リストの余分な部分を取り除くことなく、前記履歴ベース候補リストを構築することを含む請求項１記載の方法。
【請求項８】
前記候補リストは、マージリストまたは高度動きベクトル予測（ＡＭＶＰ）リストのうちの１つを含む請求項１記載の方法。
【請求項９】
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別することと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することとをさらに含み、
前記履歴ベース候補リストの候補のサブセットを識別することは、前記第２のサブセットをサブサンプリングすることを含む請求項１記載の方法。
【請求項１０】
前記発生させた候補リストに基づいて、現在ブロックを再構築することは、
前記発生させた候補リストに対するインデックスを示す情報を受け取ることと、
前記発生させた候補リストに対するインデックスにより識別される、前記発生させた候補リスト中に記憶されている動き情報に基づいて、前記現在ブロックに対する動き情報を決定することと、
前記決定された動き情報に基づいて、予測ブロックを決定することと、
前記予測ブロックと前記現在ブロックとの間の残差を示す情報を受け取ることと、
前記残差と前記予測ブロックとに基づいて、前記現在ブロックを再構築することとを含む請求項１記載の方法。
【請求項１１】
ビデオデータをデコードするデバイスにおいて、
前記デバイスは、
履歴ベース候補リストを記憶するように構成されているメモリと、
前記メモリ中で、前記履歴ベース候補リストの候補として、再構築されたブロックの動き情報を前記履歴ベース候補リスト中に記憶させることにより、前記履歴ベース候補リストを構築するようにと、
前記履歴ベース候補リストの候補のサブセットを識別するようにと、
前記履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させるようにと、
前記発生させた候補リストに基づいて、現在ブロックを再構築するように構成されているプロセッサとを具備するデバイス。
【請求項１２】
前記プロセッサは、
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別するようにと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成され、
前記履歴ベース候補リストの候補のサブセットを識別するために、前記プロセッサは、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成されている請求項１１記載のデバイス。
【請求項１３】
前記１つ以上の候補の第１のサブセットを識別するために、前記プロセッサは、２つの最も最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの２つの候補を識別するように構成されている請求項１２記載のデバイス。
【請求項１４】
前記候補のサブセットを識別するために、前記プロセッサは、前記履歴ベース候補リストをサブサンプリングして、前記候補のサブセットを識別するように構成されている請求項１２記載のデバイス。
【請求項１５】
前記履歴ベース候補リストをサブサンプリングするために、前記プロセッサは、前記履歴ベース候補リスト中の４番目毎の候補を識別するように構成されている請求項１４記載のデバイス。
【請求項１６】
前記履歴ベース候補リストをサブサンプリングするために、前記プロセッサは、前記履歴ベース候補リスト中で最も早く追加された候補から開始して、サブサンプリングするように構成されている請求項１４記載のデバイス。
【請求項１７】
前記履歴ベース候補リストを構築するために、前記プロセッサは、前記履歴ベース候補リストの余分な部分を取り除くことなく、前記履歴ベース候補リストを構築するように構成されている請求項１４記載のデバイス。
【請求項１８】
前記候補リストは、マージリストまたは高度動きベクトル予測（ＡＭＶＰ）リストのうちの１つを含む請求項１４記載のデバイス。
【請求項１９】
前記プロセッサは、
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別するようにと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成され、
前記履歴ベース候補リストの候補のサブセットを識別するために、前記プロセッサは、前記第２のサブセットをサブサンプリングするように構成されている請求項１１記載のデバイス。
【請求項２０】
前記発生させた候補リストに基づいて、現在ブロックを再構築するために、前記プロセッサは、
前記発生させた候補リストに対するインデックスを示す情報を受け取るようにと、
前記発生させた候補リストに対するインデックスにより識別される、前記発生させた候補リスト中に記憶されている動き情報に基づいて、前記現在ブロックに対する動き情報を決定するようにと、
前記決定された動き情報に基づいて、予測ブロックを決定するようにと、
前記予測ブロックと前記現在ブロックとの間の残差を示す情報を受け取るようにと、
前記残差と前記予測ブロックとに基づいて、前記現在ブロックを再構築するように構成されている請求項１１記載のデバイス。
【請求項２１】
前記プロセッサは、固定された機能のまたはプログラム可能な回路のうちの少なくとも１つを含むビデオデコーダを備える請求項１１記載のデバイス。
【請求項２２】
ビデオデータをエンコードする方法において、
前記方法は、
履歴ベース候補リストの候補として、再構築されたブロックの動き情報を前記履歴ベース候補リスト中に記憶させることにより、前記履歴ベース候補リストを構築することと、
前記履歴ベース候補リストの候補のサブセットを識別することと、
前記履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させることと、
現在ブロックを再構築するのに使用される動き情報を識別するための、前記発生させた候補リストに対するインデックスを示す情報をシグナリングすることとを含む方法。
【請求項２３】
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別することと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することとをさらに含み、
前記履歴ベース候補リストの候補のサブセットを識別することは、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することを含む請求項２２記載の方法。
【請求項２４】
前記候補のサブセットを識別することは、前記履歴ベース候補リストをサブサンプリングして、前記候補のサブセットを識別することを含む請求項２２記載の方法。
【請求項２５】
前記履歴ベース候補リストを構築することは、前記履歴ベース候補リストの余分な部分を取り除くことなく、前記履歴ベース候補リストを構築することを含む請求項２２記載の方法。
【請求項２６】
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別することと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別することとをさらに含み、
前記履歴ベース候補リストの候補のサブセットを識別することは、前記第２のサブセットをサブサンプリングすることを含む請求項２２記載の方法。
【請求項２７】
前記現在ブロックを再構築するのに使用される動き情報に基づいて識別される予測ブロックとの間の残差を示す情報をシグナリングすることをさらに含む請求項２２記載の方法。
【請求項２８】
ビデオデータをエンコードするデバイスにおいて、
前記デバイスは、
履歴ベース候補リストを記憶するように構成されているメモリと、
前記メモリ中で、前記履歴ベース候補リストの候補として、再構築されたブロックの動き情報を前記履歴ベース候補リスト中に記憶させることにより、前記履歴ベース候補リストを構築するようにと、
前記履歴ベース候補リストの候補のサブセットを識別するようにと、
前記履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させるようにと、
現在ブロックを再構築するのに使用される動き情報を識別するための、前記発生させた候補リストに対するインデックスを示す情報をシグナリングするように構成されているプロセッサとを具備するデバイス。
【請求項２９】
前記プロセッサは、
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別するようにと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成され、
前記履歴ベース候補リストの候補のサブセットを識別するために、前記プロセッサは、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成されている請求項２８記載のデバイス。
【請求項３０】
前記候補のサブセットを識別するために、前記プロセッサは、前記履歴ベース候補リストをサブサンプリングして、前記候補のサブセットを識別するように構成されている請求項２８記載のデバイス。
【請求項３１】
前記履歴ベース候補リストを構築するために、前記プロセッサは、前記履歴ベース候補リストの余分な部分を取り除くことなく、前記履歴ベース候補リストを構築するように構成されている請求項２８記載のデバイス。
【請求項３２】
前記プロセッサは、
最近再構築されたブロックの動き情報に対応する、前記履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別するようにと、
前記第１のサブセットを除外する、前記履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成され、
前記履歴ベース候補リストの候補のサブセットを識別するために、前記プロセッサは、前記第２のサブセットをサブサンプリングするように構成されている請求項２８記載のデバイス。
【請求項３３】
前記プロセッサは、前記現在ブロックを再構築するのに使用される動き情報に基づいて識別される予測ブロックとの間の残差を示す情報をシグナリングするように構成されている請求項２８記載のデバイス。
【請求項３４】
前記プロセッサは、固定された機能のまたはプログラム可能な回路のうちの少なくとも１つを含むビデオエンコーダを備える請求項２８記載のデバイス。
【発明の詳細な説明】
【優先権の主張】
【０００１】
［０００１］
本出願は、２０１８年８月１６日に出願された米国仮特許出願番号第６２／７６４，８５１号の利益を主張する、２０１９年８月１４日に出願された米国出願番号第１６／５４０，８９３号の優先権を主張するものであり、その両方の全内容が参照によりここに組み込まれている。
【技術分野】
【０００２】
［０００２］
本開示は、ビデオエンコーディングおよびビデオデコーディングに関連する。
【背景】
【０００３】
［０００３］
デジタルビデオ能力は、デジタルテレビ、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、パーソナルデジタルアシスタント（ＰＤＡ）、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、ｅ−ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話機、いわゆる「スマートフォン」、ビデオテレビ会議デバイス、ビデオストリーミングデバイス、および、これらに類するものを含む、幅広い範囲のデバイスに組み込むことができる。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４、Ｐａｒｔ  １０、高度ビデオコーディング（ＡＶＣ）、高効率ビデオコーディング（ＨＥＶＣ）標準規格、ＩＴＵ−Ｔ  Ｈ．２６５／高効率ビデオコーディング（ＨＥＶＣ）、および、このような標準規格の拡張によって規定される標準規格に記述されているもののような、ビデオコーディング技術を実現する。ビデオデバイスは、このようなビデオコーディング技術を実現することによって、より効率的にデジタルビデオ情報を送信、受信、エンコード、デコード、および／または、記憶してもよい。
【０００４】
［０００４］
ビデオコーディング技術は、ビデオシーケンスに内在する冗長を低減または取り除くために、空間的（イントラピクチャー）予測、および／または、時間的（インターピクチャー）予測を含んでいる。ブロックベースのビデオコーディングに対して、ビデオスライス（例えば、ビデオピクチャーまたはビデオピクチャーの一部分）は、コーディングツリーユニット（ＣＴＵ）、コーディングユニット（ＣＵ）および／またはコーディングノードとして呼ばれることもあるかもしれないビデオブロックに区分してもよい。ピクチャーのイントラコード化された（Ｉ）スライスにおけるビデオブロックは、同じピクチャーにおける隣接するブロック中の参照サンプルに関する空間的予測を使用してエンコードされる。ピクチャーのインターコード化された（ＰまたはＢ）スライスにおけるビデオブロックは、同じピクチャーにおける隣接するブロック中の参照サンプルに関する空間的予測、または、他の参照ピクチャーにおける参照サンプルに関する時間的予測を使用してもよい。ピクチャーは、フレームとして呼ばれることがあり、参照ピクチャーは参照フレームとして呼ばれることがある。
【概要】
【０００５】
［０００５］
一般的に、本開示は、候補リスト（例えば、マージリストまたは高度動きベクトル予測（ＡＭＶＰ）リスト）を発生させる際の、履歴ベース候補リストの使用に関連する技術を説明する。履歴ベース候補リスト構築において、ビデオコーダ（例えば、ビデオエンコーダまたはビデオデコーダ）は、再構築されたブロック（例えば、ビデオデコーダにより再構築されたブロック、または、ビデオエンコーダにおけるデコーディングループの一部として再構築された、再構築されたブロック）の動き情報を記憶する。再構築されたブロックは、必ずしも空間的または時間的に隣接するブロックである必要はない。ビデオコーダはその後、履歴ベース候補リストを使用して、候補リストを発生させる。
【０００６】
［０００６］
本開示は、履歴ベース候補リストからの候補のサブセットを、最終候補リスト（例えば、最終のマージまたはＡＭＶＰの候補リスト）中に選択的に含めるための例示的な技術を説明し、これは、候補リスト中の冗長な候補の可能性を低減させる。この手法では、現在ブロックの動きベクトルを決定するために使用することができる動き情報において多様性があり、これは帯域幅効率を促進し、ビデオコーディングプロセス全体を改善する。例示的な技術は、ＨＥＶＣ（高効率ビデオコーディング）、ＶＶＣ（汎用ビデオコーディング）のような、既存のおよび開発中のビデオコーデックのいずれに適用してもよく、または、他の何らかのビデオコーディング標準規格に対応するコーディングツールであってもよい。
【０００７】
［０００７］
一例では、本開示は、ビデオデータをデコードする方法を説明し、方法は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築することと、履歴ベース候補リストの候補のサブセットを識別することと、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させることと、発生させた候補リストに基づいて、現在ブロックを再構築することとを含んでいる。
【０００８】
［０００８］
一例では、本開示は、ビデオデータをデコードするデバイスを説明し、デバイスは、履歴ベース候補リストを記憶するように構成されているメモリと、プロセッサとを具備する。プロセッサは、メモリ中で、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築するようにと、履歴ベース候補リストの候補のサブセットを識別するようにと、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させるようにと、発生させた候補リストに基づいて、現在ブロックを再構築するように構成されている。
【０００９】
［０００９］
一例では、本開示は、ビデオデータをエンコードする方法を説明し、方法は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築することと、履歴ベース候補リストの候補のサブセットを識別することと、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させることと、現在ブロックを再構築するのに使用される動き情報を識別するための、発生させた候補リストに対するインデックスを示す情報をシグナリングすることとを含んでいる。
【００１０】
［００１０］
一例では、本開示は、ビデオデータをエンコードするデバイスを説明し、デバイスは、履歴ベース候補リストを記憶するように構成されているメモリと、メモリ中で、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築するようにと、履歴ベース候補リストの候補のサブセットを識別するようにと、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させるようにと、現在ブロックを再構築するのに使用される動き情報を識別するための、発生させた候補リストに対するインデックスを示す情報をシグナリングするように構成されているプロセッサとを具備する。
【００１１】
［００１１］
１つ以上の例の詳細を、添付図面および以下の説明において述べる。他の特徴、目的、および、利点は、説明および図面から明らかになるだろう。
【図面の簡単な説明】
【００１２】
【図１】［００１２］  図１は、本開示の技術を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステムを図示するブロック図である。
【図２Ａ】［００１３］  図２Ａは、マージモードに対する空間的に隣接する動きベクトル候補の例を図示する概念図である。
【図２Ｂ】図２Ｂは、高度動きベクトル予測（ＡＭＶＰ）モードに対する空間的に隣接する動きベクトル候補の例を図示する概念図である。
【図３Ａ】［００１４］  図３Ａは、時間動きベクトル予測子（ＴＭＶＰ）候補の例を図示する概念図である。
【図３Ｂ】図３Ｂは、ＴＭＶＰに対する動きベクトルスケーリングの例を図示する概念図である。
【図４】［００１５］  図４は、非近接空間マージ候補をフェッチする例を図示する概念図である。
【図５】［００１６］  図５は、コーディング順序がＡ→Ｂ→Ｃ→Ｄである、コーディングツリーユニット（ＣＴＵ）におけるコーディングユニット（ＣＵ）区分の例を図示する概念図である。
【図６】［００１７］  図６は、リストを、独立した先入れ先出し（ＦＩＦＯ）リストに分ける例を図示する概念図である。
【図７】［００１８］  図７は、本開示の技術を実現してもよい例示的なビデオエンコーダを図示するブロック図である。
【図８】［００１９］  図８は、本開示の技術を実行してもよい例示的なビデオデコーダを図示するブロック図である。
【図９】［００２０］  図９は、ビデオデータをエンコードする例示的な方法を図示するフローチャートである。
【図１０】［００２１］  図１０は、ビデオデータをデコードする例示的な方法を図示するフローチャートである。
【詳細な説明】
【００１３】
［００２２］
ビデオコーディング標準規格は、ＩＴＵ−Ｔ  Ｈ．２６１、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−１  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６２またはＩＳＯ／ＩＥＣ  ＭＰＥＧ−２  Ｖｉｓｕａｌ、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  Ｖｉｓｕａｌおよび（ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４  ＡＶＣとしても知られる）ＩＴＵ−Ｔ  Ｈ．２６４を含み、そのスケーラブルビデオコーディング（ＳＶＣ）およびマルチビュービデオコーディング（ＭＶＣ）拡張を含んでいる。
【００１４】
［００２３］
さらに、ビデオコーディング標準規格、すなわち、その範囲拡張、マルチビュー拡張（ＭＶ−ＨＥＶＣ）、および、スケーラブル拡張（ＳＨＶＣ）を含む、高効率ビデオコーディング（ＨＥＶＣ）またはＩＴＵ−Ｔ  Ｈ．２６５は、ビデオコーディングに関する共同研究チーム（ＪＣＴ−ＶＣ）とともに、ＩＴＵ−Ｔビデオコーディングエキスパートグループ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣモーションピクチャーエキスパートグループ（ＭＰＥＧ）の３Ｄビデオコーディング拡張開発に関する共同研究チーム（ＪＣＴ−３Ｖ）によって開発されている。
【００１５】
［００２４］
以下でＨＥＶＣ  ＷＤとして呼ばれるＨＥＶＣドラフト仕様は、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１４＿Ｖｉｅｎｎａ／ｗｇ１１／ＪＣＴＶＣ−Ｎ１００３−ｖ１．ｚｉｐから入手可能である。ＨＥＶＣ標準規格に対する引用は以下の通りである：ＴＵ−ＴＨ．２６５、シリーズＨ：オーディオビジュアルおよびマルチメディアシステム、オーディオビジュアルサービスのインフラストラクチャ−動画ビデオのコーディング、一般的オーディオビジュアルサービスに対する高度ビデオコーディング、国際電気通信連合、２０１５年４月、６３４ｐｐ．。
【００１６】
［００２５］
ＩＴＵ−Ｔ  ＶＣＥＧ（Ｑ６／１６）およびＩＳＯ／ＩＥＣ  ＭＰＥＧ（ＪＴＣ  １／ＳＣ  ２９／ＷＧ  １１）は、現在のＨＥＶＣ標準規格（スクリーンコンテンツコーディングおよび高ダイナミックレンジコーディングのためのその現在の拡張および短期拡張を含む）の圧縮能力を著しく超える圧縮能力を持つ将来のビデオコーディングテクノロジーの標準化に対する潜在的必要性を現在研究している。グループは、この分野のエキスパートによって提案された圧縮テクノロジー設計を評価するために、ジョイントビデオエキスパートチーム（ＪＶＥＴ）として知られている共同作業の取り組みにおいて、この調査活動に関して共に取り組んでいる。ＪＶＥＴは、２０１５年１０月１９〜２１日の間に最初に会い、基準ソフトウェアの最新版、すなわち、共同調査モデル７（ＪＥＭ７）は、アクセスが必要とされるが、以下から入手可能である：ｈｔｔｐｓ：／／ｊｖｅｔ．ｈｈｉ．ｆｒａｕｎｈｏｆｅｒ．ｄｅ／ｓｖｎ／ｓｖｎ＿ＨＭＪＥＭＳｏｆｔｗａｒｅ／ｔａｇｓ／ＨＭ−１６．６−ＪＥＭ−７．０／。ＪＥＭ７のアルゴリズム解説は、ＪＶＥＴ−Ｇ１００１として呼ばれることがある。
【００１７】
［００２６］
ＪＥＭ７は、ＩＴＵ−Ｔ  Ｈ．２６６または汎用ビデオコーディング（ＶＶＣ）とも呼ばれる。ＶＶＣ標準規格の最近のドラフトは、Ｂｒｏｓｓ他、「汎用ビデオコーディング（ドラフト５）」、ＩＴＵ−Ｔ  ＳＧ１６ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のジョイントビデオエキスパートチーム（ＪＶＥＴ）、第１４回会議：２０１９年３月１９〜２７日スイス、ジュネーブ、ＪＶＥＴ−Ｎ１００１−ｖ５（以下、「ＶＶＣドラフト５」）において説明されている。しかしながら、本開示の技術は、何らかの特定のコーディング標準規格には限定されない。
【００１８】
［００２７］
以下でより詳細に説明するように、ビデオコーディング（例えば、エンコーディングまたはデコーディング）では、現在ブロックは、予測ブロックに基づいてインター予測される。例えば、ビデオエンコーダは、現在ブロックと予測ブロックとの間の残差（例えば、差分）を決定し、差分をシグナリングする。ビデオデコーダは、残差を受け取り、残差を予測ブロックに追加して、現在ブロックを再構築する。
【００１９】
［００２８］
ビデオコーダ（例えば、ビデオエンコーダまたはビデオデコーダ）は、動きベクトルで予測ブロックを識別する。いくつかの例では、ビデオエンコーダは、動きベクトルの情報（例えば、ｘ値およびｙ値）をビデオデコーダにシグナリングしてもよい。しかしながら、シグナリングされる情報の量を低減させるために、ビデオデコーダが、再構築されたブロックの動き情報に基づいて、現在ブロックに対する動きベクトルを決定することが可能であってもよい。例えば、マージモードまたは高度動きベクトル予測（ＡＭＶＰ）モードでは、ビデオコーダは、現在ブロックに空間的および／または時間的に隣接するブロックの動き情報に基づいて、動き情報の候補リストを構築してもよい。ビデオエンコーダは、候補リストに対するインデックスを示す情報をシグナリングし、ビデオデコーダは、インデックスに基づいて、候補リストから動き情報を取り出し、取り出された動き情報に基づいて、現在ブロックに対する動きベクトルを決定する。
【００２０】
［００２９］
本開示で説明する１つ以上の例によれば、ビデオコーダは、履歴ベース候補リストを構築することができる。履歴ベース候補リストは、再構築されたブロックの動き情報を含むが、現在ブロックの空間的および時間的に隣接するブロックに限定されない。いくつかの例では、最終候補リスト（例えば、最終のマージまたはＡＭＶＰの候補リスト）を構築するために、ビデオコーダは、履歴ベース候補リストを初期のマージまたはＡＭＶＰの候補リストに追加する。
【００２１】
［００３０］
しかしながら、履歴ベース候補リストを初期のマージまたはＡＭＶＰの候補リストに単に追加しないことによって、より良好なビデオコーディング性能を達成することが可能であるかもしれない。例えば、候補リスト（例えば、マージまたはＡＭＶＰの候補リスト）のサイズは固定されているかもしれない。したがって、これらの候補の追加が候補リストのサイズをその固定サイズよりも大きくさせる場合、履歴ベースのリストからのある候補が、ドロップされるかもしれない。
【００２２】
［００３１］
しかしながら、ドロップされる候補のうちのいくつかは、現在ブロックに対する動きベクトルを決定するためのよりロバストな候補選択を実際に提供する可能性がある。例えば、空間的に近いブロックの動き情報は類似しているかもしれない（非限定的な例として、例えば、隣接するような、空間的に近い第１のブロックおよび第２のブロックは、２０％未満の差異がある動きベクトルを有しているかもしれず、または、同じ参照ピクチャーを識別するかもしれない）。履歴ベースのリストが２つの空間的に近いブロックからの動き情報を含んでいた場合、２つの空間的に近いブロックに対する動き情報が類似している可能性がより高い。これらの空間的に近いブロックの両方からの動き情報が最終候補リストに含まれる場合、特に履歴ベース候補リストから他の候補のうちのいくつかがドロップされる場合、最適な候補が確実に選択されるようにするには、動き情報に十分な多様性がないかもしれない。言い換えれば、特に履歴ベース候補リストからの他の候補が最終候補リストからドロップされる場合、これらの空間的に近いブロックのうちの１つのみからの動き情報を含むことと比較して、最終候補リスト中のこれらの空間的に近いブロックの両方からの動き情報を含むことによるビデオコーディング利得は、もしあるならば、あまり大きくないかもしれない。
【００２３】
［００３２］
別の例として、最も最近再構築されたブロックの動き情報が初期候補リスト中に（例えば、履歴ベース候補リストを含める前の初期のマージまたはＡＭＶＰの候補リスト中に）既に存在する確率が高い。したがって、最も最近再構築されたブロックのうちの１つ以上から動き情報を追加して、候補リストを発生させる（例えば、最終候補リストを発生させる）ことは、いかなる追加のビデオコーディング利得も提供しないかもしれず、他のおそらくより良好な候補が最終候補リストからドロップされることから、ビデオコーディング利得に悪影響を及ぼすかもしれない。
【００２４】
［００３３］
本開示は、履歴ベース候補リスト中に候補のサブセットを含めることによって、候補リスト（例えば、最終のマージまたはＡＭＶＰの候補リスト）を発生させるための１つ以上の例示的な技術を説明する。いくつかの例では、履歴ベース候補リスト中の候補のサブセットは、最近再構築されたブロックに対応する１つ以上の候補を除く、１つ以上の候補を含んでいる。最近再構築されたブロックは、現在ブロックがエンコードまたはデコードされる直前に再構築された１つ以上のブロックを指している。いくつかの例では、最近再構築されたブロックは、現在ブロックの直前に再構築された２つのブロックである。最も最近に再構築されたブロックは、現在ブロックの直前に再構築されたブロックである。このようにして、本技術は、初期候補リスト中に既にある可能性が高い１つ以上の候補を除外できる。
【００２５】
［００３４］
いくつかの例では、履歴ベース候補リスト中の候補のサブセットは、履歴ベース候補リストをサブサンプリングすることから結果として生じる１つ以上の候補を含んでいる。例えば、履歴ベース候補リストから４番目毎の候補が選択される。履歴ベース候補リストをサブサンプリングすることによって、空間的に近い再構築されたブロック（例えば、４番目毎の候補が選択される例では、それぞれ３つのブロック内の再構築されたブロック）の動き情報は、最終候補リストに含まれないかもしれない。例として、この順序で再構築される、５つの再構築されたブロック（例えば、第１、第２、第３、第４、および、第５の再構築ブロック）がある。ブロックコーディングはラスター走査順序で実行されるので、第１および第２の再構築されたブロックは、第１および第５の再構築されたブロックよりも互いにより近接しているかもしれない。第１および第２の再構築されたブロックが近接しているので、第１および第２の再構築されたブロックに対する動き情報は、近接していない第１および第５の再構築されたブロックに対する動き情報よりも類似している可能性がより高い。
【００２６】
［００３５］
１つ以上の例では、ビデオコーダは、候補リストに含めるために、第１および第２の再構築されたブロックよりもむしろ、第１および第５の再構築されたブロックに対する動き情報を選択（例えば、履歴ベース候補リストから４番目毎の候補を選択）するかもしれない。これは、動き情報が類似しないかもしれないことから、第１および第５の再構築されたブロックに対する動き情報が確実に存在することと比較して、動き情報が類似することから、第１および第２の再構築されたブロックの両方に対する動き情報を有することによって、ビデオコーディング利得がほとんどないためであるかもしれない。このようにして、予測ブロックを識別するのに使用することができる動き情報の多様性が存在する。
【００２７】
［００３６］
図１は、本開示の技術を実行してもよい、例示的なビデオエンコーディングおよびデコーディングシステム１００を図示するブロック図である。本開示の技術は、一般的に、ビデオデータをコーディング（エンコーディングおよび／またはデコーディング）することに向けられている。一般的に、ビデオデータは、ビデオを処理するための任意のデータを含んでいる。したがって、ビデオデータは、生の、エンコードされていないビデオ、エンコードされたビデオ、デコードされた（例えば、再構築された）ビデオ、および、シグナリングデータのようなビデオメタデータを含んでいてもよい。
【００２８】
［００３７］
図１に示すように、システム１００は、この例では、宛先デバイス１１６によってデコードされ、表示されるべきエンコードされたビデオデータを提供する、発信元デバイス１０２を含んでいる。特に、発信元デバイス１０２は、コンピュータ読取可能媒体１１０を介してビデオデータを宛先デバイス１１６に提供する。発信元デバイス１０２および宛先デバイス１１６は、デスクトップコンピュータ、ノートブック（すなわち、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、スマートフォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、ヘッドマウントディスプレイ（ＨＭＤ）デバイス、ＸＲデバイス（例えば、仮想現実デバイス、拡張現実デバイス、および、混合現実デバイス）、または、これらに類するものを含む、広範囲のデバイスのうちのいずれであってもよい。いくつかのケースでは、発信元デバイス１０２および宛先デバイス１１６は、ワイヤレス通信のために備えられてもよく、したがって、ワイヤレス通信デバイスとして呼ばれることがある。
【００２９】
［００３８］
図１の例では、発信元デバイス１０２は、ビデオソース１０４と、メモリ１０６と、ビデオエンコーダ２００と、出力インターフェース１０８とを含んでいる。宛先デバイス１１６は、入力インターフェース１２２と、ビデオデコーダ３００と、メモリ１２０と、ディスプレイデバイス１１８とを含んでいる。本開示によれば、発信元デバイス１０２のビデオエンコーダ２００および宛先デバイス１１６のビデオデコーダ３００は、履歴ベースのマージまたは高度動きベクトル予測（ＡＭＶＰ）リストを構築するための技術を適用するように構成されていてもよい。したがって、発信元デバイス１０２はビデオエンコーディングデバイスの例を表す一方で、宛先デバイス１１６はビデオデコーディングデバイスの例を表している。他の例では、発信元デバイスおよび宛先デバイスは、他のコンポーネントまたは構成を含んでいてもよい。例えば、発信元デバイス１０２は、外部カメラのような外部ビデオソースからビデオデータを受け取ってもよい。同様に、宛先デバイス１１６は、統合されたディスプレイデバイスを含むよりもむしろ、外部ディスプレイデバイスとインターフェースしていてもよい。
【００３０】
［００３９］
図１に示されるシステム１００は一例にすぎない。一般的に、任意のデジタルビデオエンコーディングおよび／またはデコーディングデバイスが、履歴ベースのマージリストまたはＡＭＶＰリストを構築するための技術を実行してもよい。発信元デバイス１０２および宛先デバイス１１６は、発信元デバイス１０２が宛先デバイス１１６への送信のためにコード化されたビデオデータを発生させる、このようなコーディングデバイスの例にすぎない。本開示は、データのコーディング（エンコーディングおよび／またはデコーディング）を実行するデバイスとして「コーディング」デバイスに言及する。したがって、ビデオエンコーダ２００およびビデオデコーダ３００は、コーディングデバイスの例を、特に、それぞれビデオエンコーダおよびビデオデコーダを表している。いくつかの例では、デバイス１０２、１１６は、デバイス１０２、１１６のそれぞれがビデオエンコーディングコンポーネントとビデオデコーディングコンポーネントとを含むように、実質的に対称的に動作してもよい。したがって、システム１００は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、または、ビデオ電話のための、デバイス１０２とデバイス１１６との間の一方向または双方向ビデオ送信をサポートしてもよい。
【００３１】
［００４０］
一般的に、ビデオソース１０４は、ビデオデータ（すなわち、生の、エンコードされていないビデオデータ）のソースを表し、ビデオデータのシーケンシャルな一連のピクチャー（「フレーム」としても呼ばれる）を、ピクチャーに対するデータをエンコードするビデオエンコーダ２００に提供する。発信元デバイス１０２のビデオソース１０４は、ビデオカメラのようなビデオキャプチャデバイス、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および／または、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェースを含んでいてもよい。さらなる代替として、ビデオソース１０４は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、または、ライブビデオとアーカイブビデオとコンピュータ発生ビデオとの組み合わせを発生させてもよい。各ケースにおいて、ビデオエンコーダ２００は、キャプチャされた、事前キャプチャされた、または、コンピュータが発生させたビデオデータをエンコードする。ビデオエンコーダ２００は、（ときには「表示順序」として呼ばれる）受け取った順序から、コーディングのためのコーディング順序にピクチャーを再構成してもよい。ビデオエンコーダ２００は、エンコードされたビデオデータを含むビットストリームを発生させてもよい。発信元デバイス１０２は、その後、例えば、宛先デバイス１１６の入力インターフェース１２２による受け取りおよび／または取り出しのために、出力インターフェース１０８を介して、コンピュータ読取可能媒体１１０上にエンコードされたビデオデータを出力してもよい。
【００３２】
［００４１］
発信元デバイス１０２のメモリ１０６および宛先デバイス１１６のメモリ１２０は、汎用メモリを表している。いくつかの例では、メモリ１０６、１２０は、生のビデオデータ、例えば、ビデオソース１０４からの生ビデオと、ビデオデコーダ３００からの生の、デコードされたビデオデータとを記憶してもよい。追加的にまたは代替的に、メモリ１０６、１２０は、例えば、ビデオエンコーダ２００およびビデオデコーダ３００それぞれによって実行可能なソフトウェア命令を記憶していてもよい。この例では、ビデオエンコーダ２００およびビデオデコーダ３００とは別個に示されているが、ビデオエンコーダ２００およびビデオデコーダ３００はまた、機能的に同様または同等の目的のために内部メモリを含んでいてもよいことを理解すべきである。さらに、メモリ１０６、１２０は、例えば、ビデオエンコーダ２００から出力され、ビデオデコーダ３００に入力される、エンコードされたビデオデータを記憶してもよい。いくつかの例では、メモリ１０６、１２０の一部分は、１つ以上のビデオバッファとして割り振られ、例えば、生の、デコードされた、および／または、エンコードされたビデオデータを記憶してもよい。
【００３３】
［００４２］
コンピュータ読取可能媒体１１０は、発信元デバイス１０２から宛先デバイス１１６へとエンコードされたビデオデータを転送することが可能な任意のタイプの媒体またはデバイスを表していてもよい。一例では、コンピュータ読取可能媒体１１０は、発信元デバイス１０２が、例えば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、エンコードされたビデオデータをリアルタイムで宛先デバイス１１６に直接送信することを可能にする通信媒体を表している。ワイヤレス通信プロトコルのような通信標準規格にしたがって、出力インターフェース１０８は、エンコードされたビデオデータを含む送信信号を変調してもよく、入力インターフェース１２２は、受け取った送信信号を変調してもよい。通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つ以上の物理送信ラインのような、ワイヤレスおよび／またはワイヤード通信媒体のうちの１つまたは両方を含んでいてもよい。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または、インターネットのようなグローバルネットワーク等の、パケットベースのネットワークの一部を形成していてもよい。通信媒体は、ルータ、スイッチ、基地局、または、発信元デバイス１０２から宛先デバイス１１６への通信を容易にするのに役立つかもしれない他の何らかの機器を含んでいてもよい。
【００３４】
［００４３］
いくつかの例では、発信元デバイス１０２は、出力インターフェース１０８から記憶デバイス１１２にエンコードされたデータを出力してもよい。同様に、宛先デバイス１１６は、入力インターフェース１２２を介して、記憶デバイス１１２からのエンコードされたデータにアクセスしてもよい。記憶デバイス１１２は、ハードドライブ、ブルーレイ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、揮発性または不揮発性メモリ、または、エンコードされたビデオデータを記憶するための他の何らかの適切なデジタル記憶媒体のような、さまざまな分散またはローカルにアクセスされるデータ記憶媒体のいずれかを含んでいてもよい。
【００３５】
［００４４］
いくつかの例では、発信元デバイス１０２は、エンコードされたビデオデータを、ファイルサーバ１１４に、または、発信元デバイス１０２によって発生させたエンコードされたビデオを記憶してもよい別の中間記憶デバイスに出力してもよい。宛先デバイス１１６は、ストリーミングまたはダウンロードを介して、ファイルサーバ１１４からの記憶されているビデオデータにアクセスしてもよい。ファイルサーバ１１４は、エンコードされたビデオを記憶すること、宛先デバイス１１６にエンコードされたビデオを送信することとができる、任意のタイプのサーバデバイスであってもよい。ファイルサーバ１１４は、（例えば、ウェブサイトのための）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、コンテンツ配信ネットワークデバイス、または、ネットワーク接続記憶（ＮＡＳ）デバイスを表していてもよい。宛先デバイス１１６は、インターネット接続を含む任意の標準的なデータ接続を通して、ファイルサーバ１１４からのエンコードされたビデオデータにアクセスしてもよい。これは、ファイルサーバ１１４に記憶されている、エンコードされたビデオデータにアクセスするのに適している、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ接続）、ワイヤード接続（例えば、ＤＳＬ、ケーブルモデム等）、または、その両方の組み合わせを含んでいてもよい。ファイルサーバ１１４および入力インターフェース１２２は、ストリーミング送信プロトコル、ダウンロード送信プロトコル、または、これらの組み合わせにしたがって動作するように構成されていてもよい。
【００３６】
［００４５］
出力インターフェース１０８および入力インターフェース１２２は、ワイヤレス送信機／受信機、モデム、ワイヤードネットワーキングコンポーネント（例えば、イーサネット（登録商標）カード）、さまざまなＩＥＥＥ８０２．１１標準規格のいずれかにしたがって動作するワイヤレス通信コンポーネント、または、他の物理コンポーネントを表していてもよい。出力インターフェース１０８および入力インターフェース１２２がワイヤレスコンポーネントを含む例では、出力インターフェース１０８および入力インターフェース１２２は、４Ｇ、４Ｇ−ＬＴＥ（登録商標）（ロングタームエボリューション）、ＬＴＥアドバンスト、５Ｇ、または、これらに類するもののようなセルラ通信標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。出力インターフェース１０８がワイヤレス送信機を含むいくつかの例では、出力インターフェース１０８および入力インターフェース１２２は、ＩＥＥＥ８０２．１１仕様、ＩＥＥＥ８０２．１５仕様（例えば、ＺｉｇＢｅｅ（商標））、Ｂｌｕｅｔｏｏｔｈ（登録商標）（商標）標準規格、または、これらに類するもののような他のワイヤレス標準規格にしたがって、エンコードされたビデオデータのようなデータを転送するように構成されていてもよい。いくつかの例では、発信元デバイス１０２および／または宛先デバイス１１６は、それぞれのシステムオンチップ（ＳｏＣ）デバイスを含んでいてもよい。例えば、発信元デバイス１０２は、ビデオエンコーダ２００および／または出力インターフェース１０８に備わる機能性を実行するためのＳｏＣデバイスを含んでいてもよく、宛先デバイス１１６は、ビデオデコーダ３００および／または入力インターフェース１２２に備わる機能性を実行するためのＳｏＣデバイスを含んでいてもよい。
【００３７】
［００４６］
本開示の技術は、無線テレビ放送、ケーブルテレビ送信、衛星テレビ送信、ＨＴＴＰを通した動的アダプティブストリーミング（ＤＡＳＨ）のようなインターネットストリーミングビデオ送信、データ記憶媒体上にエンコードされたデジタルビデオ、データ記憶媒体上に記憶されているビデオデータのデコーディング、または、他のアプリケーションのような、さまざまなマルチメディアアプリケーションのうちのいずれかをサポートするビデオコーディングに適用してもよい。
【００３８】
［００４７］
宛先デバイス１１６の入力インターフェース１２２は、コンピュータ読取可能媒体１１０（例えば、記憶デバイス１１２、ファイルサーバ１１４、または、これらに類するもの）からエンコードされたビデオビットストリームを受け取る。コンピュータ読取可能媒体１１０からのエンコードされたビデオビットストリームは、ビデオブロックまたは他のコード化されたユニット（例えば、スライス、ピクチャー、ピクチャーのグループ、シーケンス、または、これらに類するもの）の特性および／または処理を記述する値を有するシンタックス要素のような、ビデオエンコーダ２００によって規定され、ビデオデコーダ３００によっても使用されるシグナリング情報を含んでいてもよい。ディスプレイデバイス１１８は、デコードされたビデオデータのデコードされたピクチャーをユーザに表示する。ディスプレイデバイス１１８は、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または、別のタイプのディスプレイデバイスのような、さまざまなディスプレイデバイスのうちのいずれかを表していてもよい。
【００３９】
［００４８］
図１には示されていないが、いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、それぞれオーディオエンコーダおよび／またはオーディオデコーダと統合されていてもよく、適切なＭＵＸ−ＤＥＭＵＸユニットあるいは他のハードウェアおよび／またはソフトウェアを含んでいて、共通のデータストリームにおけるオーディオおよびビデオの両方を含む多重化されたストリームを取り扱ってもよい。適用可能である場合、ＭＵＸ−ＤＥＭＵＸユニットは、ＩＴＵ．Ｈ．２２３マルチプレクサプロトコル、または、ユーザデータグラムプロトコル（ＵＤＰ）のような他のプロトコルにしたがっていてもよい。
【００４０】
［００４９］
ビデオエンコーダ２００およびビデオデコーダ３００はそれぞれ、１つ以上のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、または、これらの組み合わせのような、さまざまな適したエンコーダおよび／またはデコーダ回路のいずれかとして実現してもよい。技術が部分的にソフトウェアで実現されるとき、デバイスは、適切な、非一時的コンピュータ読取可能媒体においてソフトウェアのための命令を記憶していてもよく、１つ以上のプロセッサを使用して、ハードウェアにおいて命令を実行して、本開示の技術を実行してもよい。ビデオエンコーダ２００およびビデオデコーダ３００のそれぞれは、１つ以上のエンコーダまたはデコーダに含まれてもよく、エンコーダまたはデコーダのどちらかは、それぞれのデバイスにおいて、組み合わされたエンコーダ／デコーダ（ＣＯＤＥＣ）の一部として統合されていてもよい。ビデオエンコーダ２００および／またはビデオデコーダ３００を含むデバイスは、集積回路、マイクロプロセッサ、および／または、セルラ電話機のようなワイヤレス通信デバイスを含んでいてもよい。
【００４１】
［００５０］
ビデオエンコーダ２００およびビデオデコーダ３００は、高効率ビデオコーディング（ＨＥＶＣ）としても呼ばれるＩＴＵ−Ｔ  Ｈ．２６５のようなビデオコーディング標準規格に、または、マルチビューおよび／またはスケーラブルビデオコーディング拡張のような、高効率ビデオコーディング（ＨＥＶＣ）に対する拡張にしたがって動作してもよい。代替的に、ビデオエンコーダ２００およびビデオデコーダ３００は、共同調査テストモデル（ＪＥＭ）のような、他のプロプライエタリまたは業界標準規格にしたがって動作してもよい。しかしながら、本開示の技術は、何らかの特定のコーディング標準規格に限定されない。
【００４２】
［００５１］
一般的に、ビデオエンコーダ２００およびビデオデコーダ３００は、ピクチャーのブロックベースコーディングを実行してもよい。「ブロック」という用語は、一般的に、処理される（例えば、エンコードされる、デコードされる、または、そうでなければ、エンコーディングおよび／またはデコーディングプロセスにおいて使用される）データを含む構造を指している。例えば、ブロックは、ルミナンスデータおよび／またはクロミナンスデータのサンプルの２次元行列を含んでいてもよい。一般的に、ビデオエンコーダ２００およびビデオデコーダ３００は、ＹＵＶ（例えば、Ｙ、Ｃｂ、Ｃｒ）フォーマットで表されるビデオデータをコード化してもよい。すなわち、ピクチャーのサンプルに対する赤、緑、および、青（ＲＧＢ）データをコーディングするよりもむしろ、ビデオエンコーダ２００およびビデオデコーダ３００は、ルミナンス成分とクロミナンス成分とをコード化してもよく、ここで、クロミナンス成分は、赤の色相と青の色相の両方のクロミナンス成分を含んでいてもよい。いくつかの例では、ビデオエンコーダ２００は、エンコーディングの前に、受け取ったＲＧＢフォーマットされたＲＧＢフォーマットデータをＹＵＶ表現に変換し、ビデオデコーダ３００は、ＹＵＶ表現をＲＧＢフォーマットに変換する。代替的に、前処理ユニットおよび後処理ユニット（図示せず）がこれらの変換を実行してもよい。
【００４３】
［００５２］
本開示は、一般的に、ピクチャーのデータをエンコードまたはデコードするプロセスを含むように、ピクチャーのコーディング（例えば、エンコーディングおよびデコーディング）に関連しているかもしれない。同様に、本開示は、ブロックに対するデータをエンコーディングまたはデコーディングするプロセス、例えば、予測および／または残差コーディングを含むように、ピクチャーのブロックのコーディングに関連しているかもしれない。エンコードされたビデオビットストリームは、一般的に、コーディング決定（例えば、コーディングモード）とブロックへのピクチャーの区分とを表すシンタックス要素に対する一連の値を含んでいる。したがって、ピクチャーまたはブロックをコーディングすることへの言及は、一般的に、ピクチャーまたはブロックを形成するシンタックス要素に対するコーディング値として理解すべきである。
【００４４】
［００５３］
例として、ビデオエンコーダ２００およびビデオデコーダ３００は、ＨＥＶＣにしたがって動作するように構成されていてもよい。ＨＥＶＣは、コーディングユニット（ＣＵ）、予測ユニット（ＰＵ）、および、変換ユニット（ＴＵ）を含む、さまざまなブロックを規定する。ＨＥＶＣにしたがうと、（ビデオエンコーダ２００のような）ビデオコーダは、４分ツリー構造にしたがって、コーディングツリーユニット（ＣＴＵ）をＣＵに区分する。すなわち、ビデオコーダは、ＣＴＵおよびＣＵを４つの等しい、オーバーラップしない正方形に区分し、４分ツリーの各ノードは、ゼロまたは４つの子ノードのいずれかを有する。子ノードのないノードは、「リーフノード」として呼ばれることがあり、このようなリーフノードのＣＵは、１つ以上のＰＵおよび／または１つ以上のＴＵを含んでいてもよい。ビデオコーダは、ＰＵとＴＵとをさらに区分してもよい。例えば、ＨＥＶＣでは、残差４分ツリー（ＲＱＴ）はＴＵの区分を表している。ＨＥＶＣでは、ＰＵはインター予測データを表す一方で、ＴＵは残差データを表している。イントラ予測されるＣＵは、イントラモード表示のようなイントラ予測情報を含んでいる。
【００４５】
［００５４］
別の例として、ビデオエンコーダ２００およびビデオデコーダ３００は、ＪＥＭにしたがって動作するように構成されていてもよい。ＪＥＭによれば、（ビデオエンコーダ２００のような）ビデオコーダは、ピクチャーを複数のＣＴＵに区分する。ビデオエンコーダ２００は、４分ツリー−２分ツリー（ＱＴＢＴ）構造のようなツリー構造にしたがって、ＣＴＵを区分してもよい。ＪＥＭのＱＴＢＴ構造は、ＨＥＶＣのＣＵとＰＵとＴＵとの間の分離のような、複数の区分タイプの概念を除去する。ＪＥＭのＱＴＢＴ構造は、４分ツリー区分にしたがって区分される第１のレベルと、２分ツリー区分にしたがって区分される第２のレベルと、の２つのレベルを含んでいる。ＱＴＢＴ構造のルートノードはＣＴＵに対応する。バイナリツリーのリーフノードは、コーディングユニット（ＣＵ）に対応する。さらなる例では、ビデオエンコーダ２００およびビデオデコーダ３００は、ここで説明する例と一致する、他の何らかのコーディング標準規格にしたがって動作するように構成されていてもよい。
【００４６】
［００５５］
いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、単一のＱＴＢＴ構造を使用して、ルミナンス成分とクロミナンス成分のそれぞれを表してもよい一方で、他の例では、ビデオエンコーダ２００およびビデオデコーダ３００は、ルミナンス成分のために１つのＱＴＢＴ構造と、両方のクロミナンス成分のために別のＱＴＢＴ構造（または、それぞれのクロミナンス成分のために２つのＱＴＢＴ構造）のように、２つ以上のＱＴＢＴ構造を使用してもよい。
【００４７】
［００５６］
ビデオエンコーダ２００およびビデオデコーダ３００は、ＨＥＶＣ毎の４分ツリー区分、ＪＥＭにしたがうＱＴＢＴ区分、または、他の区分構造を使用するように構成されていてもよい。説明のために、本開示の技術の説明は、ＱＴＢＴ区分に関して提示する。しかしながら、本開示の技術はまた、４分ツリー区分、または、他のタイプの区分も同様に使用するように構成されているビデオコーダに適用してもよいことを理解されたい。
【００４８】
［００５７］
本開示は、「Ｎ×Ｎ」および「ＮバイＮ」を交換可能に使用して、垂直寸法および水平寸法に関する（ＣＵまたは他のビデオブロックのような）ブロックのサンプル寸法、例えば、１６×１６サンプルまたは１６バイ１６サンプルを指すかもしれない。一般的に、１６×１６のＣＵは、垂直方向に１６個のサンプルを有し（ｙ＝１６）、水平方向に１６個のサンプルを有する（ｘ＝１６）。同様に、Ｎ×ＮのＣＵは、一般的に、垂直方向にＮ個のサンプルを有し、水平方向にＮ個のサンプルを有し、ここで、Ｎは非負整数値を表している。ＣＵ中のサンプルは、行および列に配置されていてもよい。さらに、ＣＵは、必ずしも水平方向に垂直方向と同じ数のサンプルを有する必要はない。例えば、ＣＵはＮ×Ｍのサンプルを含んでいてもよく、ここで、Ｍは必ずしもＮに等しいとは限らない。
【００４９】
［００５８］
ビデオエンコーダ２００は、予測および／または残差情報を、ならびに、他の情報を表す、ＣＵに対するビデオデータをエンコードする。予測情報は、ＣＵに対する予測ブロックを形成するために、ＣＵがどのように予測されるべきかを示している。残差情報は、一般的に、エンコーディング前のＣＵのサンプルと予測ブロックとの間のサンプル毎の差分を表している。
【００５０】
［００５９］
ＣＵを予測するために、ビデオエンコーダ２００は、一般的に、インター予測またはイントラ予測を通して、ＣＵに対する予測ブロックを形成してもよい。インター予測は、一般的に、以前にコード化されたピクチャーのデータからＣＵを予測することを指す一方で、イントラ予測は、一般的に、同じピクチャーの以前にコード化されたデータからＣＵを予測することを指している。インター予測を実行するために、ビデオエンコーダ２００は、１つ以上の動きベクトルを使用して、予測ブロックを発生させてもよい。ビデオエンコーダ２００は、一般的に、動きサーチを実行して、例えば、ＣＵと参照ブロックとの間の差分に関して、ＣＵに密接に一致する参照ブロックを識別してもよい。ビデオエンコーダ２００は、絶対差分の和（ＳＡＤ）、二乗差分の和（ＳＳＤ）、平均絶対差分（ＭＡＤ）、平均二乗差分（ＭＳＤ）、または、他のこのような差分計算を使用して、差分メトリックを計算し、参照ブロックが現在ＣＵに密接に一致するか否かを決定してもよい。いくつかの例では、ビデオエンコーダ２００は、単方向予測または双方向予測を使用して、現在ＣＵを予測してもよい。
【００５１】
［００６０］
ＪＥＭはまた、インター予測モードと見なしてもよいアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ２００は、ズームインまたはズームアウト、回転、透視動き、または、他の不規則な動きタイプのような、並進しない動きを表す２つ以上の動きベクトルを決定してもよい。
【００５２】
［００６１］
イントラ予測を実行するために、ビデオエンコーダ２００は、イントラ予測モードを選択して、予測ブロックを発生させてもよい。ＪＥＭは、さまざまな方向性モードとともに、平面モードおよびＤＣモードを含む、６７個のイントラ予測モードを提供する。一般的に、ビデオエンコーダ２００は、現在ブロックのサンプルを予測する、現在ブロック（例えば、ＣＵのブロック）に隣接するサンプルを記述するイントラ予測モードを選択する。ビデオエンコーダ２００がラスター走査順序（左から右、上から下）でＣＴＵおよびＣＵをコード化すると仮定すると、このようなサンプルは、一般的に、現在ブロックと同じピクチャー中で、現在ブロックの上、左上、または、左にあってもよい。
【００５３】
［００６２］
ビデオエンコーダ２００は、現在ブロックに対する予測モードを表すデータをエンコードする。例えば、インター予測モードに対して、ビデオエンコーダ２００は、さまざまな利用可能なインター予測モードのうちのどれが使用されるかを表すデータとともに、対応するモードに対する動き情報をエンコードしてもよい。単方向または双方向インター予測に対して、例えば、ビデオエンコーダ２００は、高度動きベクトル予測（ＡＭＶＰ）またはマージモードを使用して、動きベクトルをエンコードしてもよい。ビデオエンコーダ２００は、類似するモードを使用して、アフィン動き補償モードに対する動きベクトルをエンコードしてもよい。
【００５４】
［００６３］
ブロックのイントラ予測またはインター予測のような予測に続いて、ビデオエンコーダ２００は、ブロックに対する残差データを計算してもよい。残差ブロックのような残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックに対する予測ブロックとの間の、サンプル毎の差分を表している。ビデオエンコーダ２００は、１つ以上の変換を残差ブロックに適用して、サンプルドメインの代わりに変換ドメインにおいて、変換されたデータを生成させてもよい。例えば、ビデオエンコーダ２００は、離散コサイン変換（ＤＣＴ）、整数変換、ウェーブレット変換、または、概念的に類似する変換を残差ビデオデータに適用してもよい。さらに、ビデオエンコーダ２００は、モード依存分離不可能２次変換（ＭＤＮＳＳＴ）、信号依存変換、カルーネンレーベ変換（ＫＬＴ）、または、これらに類するもののような、第１の変換に続く２次変換を適用してもよい。ビデオエンコーダ２００は、１つ以上の変換の適用に続いて、変換係数を生成させる。
【００５５】
［００６４］
上述のように、変換係数を生成させるための任意の変換に続いて、ビデオエンコーダ２００は、変換係数の量子化を実行してもよい。量子化は、一般的に、変換係数が量子化されて、係数を表すために使用されるデータの量を場合によっては低減させ、さらなる圧縮を提供するプロセスを指している。量子化プロセスを実行することによって、ビデオエンコーダ２００は、係数のいくつか、または、すべてに関係するビット深度を低減させてもよい。例えば、ビデオエンコーダ２００は、量子化の間にｎ−ビット値をｍ−ビット値に切り捨ててもよく、ここで、ｎはｍよりも大きい。いくつかの例では、量子化を実行するために、ビデオエンコーダ２００は、量子化されるべき値のビット単位の右シフトを実行してもよい。
【００５６】
［００６５］
量子化に続いて、ビデオエンコーダ２００は、変換係数を走査し、量子化された変換係数を含む２次元行列から１次元ベクトルを生成させてもよい。走査は、より高いエネルギー（したがって、より低い周波数）の係数をベクトルの前部に配置し、より低いエネルギー（したがって、より高い周波数）の変換係数をベクトルの後部に配置するように設計されていてもよい。いくつかの例では、ビデオエンコーダ２００は、予め規定された走査順序を利用して、量子化変換係数を走査し、シリアル化ベクトルを生成させ、その後、ベクトルの量子化変換係数をエントロピーエンコードしてもよい。他の例では、ビデオエンコーダ２００は、適応走査を実行してもよい。量子化変換係数を走査して１次元ベクトルを形成した後、ビデオエンコーダ２００は、例えば、コンテキスト適応２値算術コーディング（ＣＡＢＡＣ）にしたがって、１次元ベクトルをエントロピーエンコードしてもよい。ビデオエンコーダ２００はまた、ビデオデータをデコードする際に、ビデオデコーダ３００によって使用するために、エンコードされたビデオデータに関係するメタデータを記述するシンタックス要素に対する値をエントロピーエンコードしてもよい。
【００５７】
［００６６］
ＣＡＢＡＣを実行するために、ビデオエンコーダ２００は、コンテキストモデル内のコンテキストを送信されるべきシンボルに割り当ててもよい。コンテキストは、例えば、シンボルの隣接する値がゼロ値にされているか否かに関連していてもよい。確率決定は、シンボルに割り当てられているコンテキストに基づいていてもよい。
【００５８】
［００６７］
ビデオエンコーダ２００はさらに、例えば、ピクチャーヘッダ中で、ブロックヘッダ中で、スライスヘッダ中で、あるいは、シーケンスパラメータセット（ＳＰＳ）、ピクチャーパラメータセット（ＰＰＳ）、または、ビデオパラメータセット（ＶＰＳ）のような他のシンタックスデータ中で、ビデオデコーダ３００への、ブロックベースのシンタックスデータ、ピクチャーベースのシンタックスデータ、および、シーケンスベースのシンタックスデータのようなシンタックスデータを発生させてもよい。ビデオデコーダ３００は、同様に、このようなシンタックスデータをデコードして、対応するビデオデータをどのようにデコードするかを決定してもよい。
【００５９】
［００６８］
このようにして、ビデオエンコーダ２００は、エンコードされたビデオデータを含む、例えば、ブロック（例えば、ＣＵ）へのピクチャーの区分と、ブロックに対する予測および／または残差情報とを記述するシンタックス要素を含むビットストリームを発生させてもよい。ビデオデコーダ３００は、ビットストリームを受け取り、エンコードされたビデオデータをデコードしてもよい。
【００６０】
［００６９］
一般的に、ビデオデコーダ３００は、ビデオエンコーダ２００によって実行されたプロセスとは逆のプロセスを実行して、ビットストリームのエンコードされたビデオデータをデコードする。例えば、ビデオデコーダ３００は、ビデオエンコーダ２００のＣＡＢＡＣエンコーディングプロセスと、逆ではあるが、実質的に類似する方法で、ＣＡＢＡＣを使用して、ビットストリームのシンタックス要素に対する値をデコードしてもよい。シンタックス要素は、ＣＴＵへのピクチャーの区分情報と、ＱＴＢＴ構造のような、対応する区分構造にしたがって、各ＣＴＵを区分することとを規定して、ＣＴＵのＣＵを規定していてもよい。シンタックス要素は、ビデオデータのブロック（例えば、ＣＵ）に対する予測および残差情報をさらに規定していてもよい。
【００６１】
［００７０］
残差情報は、例えば、量子化変換係数によって表されていてもよい。ビデオデコーダ３００は、ブロックの量子化された変換係数を逆量子化および逆変換して、ブロックに対する残差ブロックを再生させてもよい。ビデオデコーダ３００は、シグナリングされた予測モード（イントラ予測またはインター予測）と、関連する予測情報（例えば、インター予測に対する動き情報）とを使用して、ブロックに対する予測ブロックを形成する。ビデオデコーダ３００は、その後、（サンプル毎のベースで）予測ブロックと残差ブロックとを組み合わせて、元のブロックを再生させてもよい。ビデオデコーダ３００は、デブロッキングプロセスを実行することのような、追加の処理を実行して、ブロックの境界に沿った視覚的アーティファクトを低減させてもよい。
【００６２】
［００７１］
本開示は、一般的に、シンタックス要素のような、ある情報を「シグナリングすること」に関連しているかもしれない。「シグナリング」という用語は、一般的に、シンタックス要素に対する値のおよび／またはエンコードされたビデオデータをデコードするのに使用される他のデータの通信に関連しているかもしれない。すなわち、ビデオエンコーダ２００は、ビットストリーム中でシンタックス要素に対する値をシグナリングしてもよい。一般的に、シグナリングは、ビットストリーム中で値を発生させることを指している。上述のように、発信元デバイス１０２は、実質的にリアルタイムで、または、宛先デバイス１１６による後の取り出しのために、シンタックス要素を記憶デバイス１１２に記憶させるときに起こるかもしれないような、リアルタイムではなく、ビットストリームを宛先デバイス１１６に転送してもよい。
【００６３】
［００７２］
上記で説明したように、ビデオエンコーダ２００およびビデオデコーダ３００がそれぞれエンコードまたはデコードするかもしれない１つの例示的な方法は、マージモードまたはＡＭＶＰモードを使用している。マージモードとＡＭＶＰモードの両方において、ビデオエンコーダ２００およびビデオデコーダ３００は、候補リスト（例えば、マージリストまたはＡＭＶＰリストは、候補リストのうちの２つの例である）を構築する動作を実行する。候補リストは、空間的または時間的に隣接するブロックの動き情報を含んでいる。例えば、マージリストは、隣接するブロックに対する、動きベクトルおよび参照ピクチャーリスト情報（例えば、ＲｅｆＰｉｃＬｉｓｔ０が使用されるかＲｅｆＰｉｃＬｉｓｔ１が使用されるか）を含んでいる。ＡＭＶＰリストは、動きベクトルおよび参照ピクチャーリスト情報を含み、動きベクトル差分（ＭＶＤ）がシグナリングされる。
【００６４】
［００７３］
ビデオエンコーダ２００およびビデオデコーダ３００は同じ動作を実行するので、候補リストは、ビデオエンコーダ２００およびビデオデコーダ３００に対して同じである。ビデオエンコーダ２００は、候補リストから候補を識別し、候補リストに対するインデックスを示す情報をシグナリングしてもよい。ビデオデコーダ３００は、候補リストに対するインデックスを決定し、インデックスによって識別された候補に基づいて、現在ブロックに対する動き情報を決定してもよい。動き情報は、動きベクトル予測子を含んでいる。マージモードに対して、現在ブロックに対する動きベクトルは、動きベクトル予測子に等しく設定される。ＡＭＶＰモードに対して、ビデオエンコーダ２００は、現在ブロックに対する動きベクトルと動きベクトル予測子との間のＭＶＤをシグナリングすることができる。ビデオデコーダ３００は、ＭＶＤを動きベクトル予測子に追加して、現在ブロックに対する動きベクトルを決定する。
【００６５】
［００７４］
以下でより詳細に説明するように、履歴ベースの動きベクトル予測（ＨＭＶＰ）は、ここではＶＶＣの一部である。ＨＭＶＰでは、ビデオエンコーダ２００およびビデオデコーダ３００は、再構築されたブロックの動き情報を含む履歴ベース候補リストを維持する。再構築されたブロックの一例は、ビデオデコーダ３００によって再構築されたブロックである。ビデオエンコーダ２００は、ビデオエンコーダ２００がエンコードされたブロックを再構築する再構築ループを含んでいる。再構築されたブロックの別の例は、再構築（デコーディングとも呼ばれる）ループの一部として、ビデオエンコーダ２００によって再構築されたブロックである。最近再構築されたブロックは、現在ブロックに空間的または時間的に隣接するブロックに限定される必要はない。
【００６６】
［００７５］
ＨＭＶＰの一部として、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストを追加して、候補リストを発生させてもよい。例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、初期候補リスト（例えば、マージまたはＡＭＶＰのリスト）を発生させてもよい。その後、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストを初期候補リストに追加して、２つの例として、マージモードまたはＡＭＶＰモードのために使用される最終候補リストを発生させてもよい。
【００６７】
［００７６］
しかしながら、履歴ベース候補リストが初期候補リストに単に追加される場合には、技術的な問題があるかもしれない。候補リストの最大サイズが設定されているかもしれない。したがって、いくつかのケースでは、履歴ベース候補リストを初期候補リストに追加することは、最終候補リストを最大サイズよりも大きくさせることになる。このようなケースでは、ビデオエンコーダ２００およびビデオデコーダ３００は、最終候補リストを最大サイズよりも大きくさせる候補を、履歴ベース候補リストからドロップするかもしれない。
【００６８】
［００７７］
履歴ベース候補リストから候補をドロップすることは望ましくないかもしれない。例えば、空間的に隣接するブロックは類似する動き情報を有するので、履歴ベース候補リスト中の２つのブロックが空間的に隣接している場合には、最終候補リスト中に両方のブロックに対する動き情報を含めることは、動き情報の多様性を提供しないことになる。しかしながら、最終候補リスト中に両方のブロックに対する動き情報を含めることは、動き情報の多様性を提供する、履歴ベース候補リストのいくつかの候補をドロップさせるかもしれない。
【００６９】
［００７８］
また、いくつかの例では、履歴ベース候補リスト中の最も最近の候補のうちのいくつかは、初期候補リスト中に既に存在しているかもしれない。したがって、履歴ベース候補リスト中にこれらの最も最近の候補を追加することは、いかなる追加の利益も提供しないかもしれない。
【００７０】
［００７９］
本開示で説明する１つ以上の例によると、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築するようにと、履歴ベース候補リストの候補のサブセットを識別するようにと、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させるように構成されていてもよい。ビデオエンコーダ２００は、現在ブロックを再構築するのに使用される動き情報を識別するための、発生させた候補リストに対するインデックスを示す情報をシグナリングするようにさらに構成されていてもよい。ビデオデコーダ３００は、発生させた候補リストに基づいて、現在ブロックを再構築するように構成されていてもよい。
【００７１】
［００８０］
このようにして、履歴ベース候補リストの全体を含めるよりもむしろ、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストのサブセットを含めてもよい。いくつかの例では、履歴ベース候補リスト中の空間的に隣接するブロックの動き情報が、発生させた候補リストに含まれないように、サブセットは、履歴ベース候補リストをサブサンプリングした結果であってもよい。いくつかの例では、サブセットは、Ｎ個の最も最近再構築されたブロックの動き情報を除外した結果であってもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、Ｎ個の最も最近再構築されたブロックの動き情報をサブサンプリングするおよび除外することのうちの１つ以上を使用して、候補のサブセットを識別するように構成されていてもよい。
【００７２】
［００８１］
上記の例では、ビデオエンコーダ２００およびビデオデコーダ３００が発生させる候補リストは、最終のマージリストまたはＡＭＶＰリストであってもよい（例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補の識別されたサブセットを初期のマージリストまたはＡＭＶＰリストに追加する）。いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００が発生させる候補リストは、候補の識別されたサブセットであってもよい（例えば、候補の識別されたサブセットは、初期のマージリストまたはＡＭＶＰリストに追加されないが、それ自体がスタンドアローンリストである）。いくつかの例では、本開示で説明する技術は、他のタイプの候補リストに拡張され、マージリストおよびＡＭＶＰリストに限定されない。
【００７３】
［００８２］
以下で、ＨＥＶＣにおけるＣＵ構造および動きベクトル予測をレビューする。ＨＥＶＣでは、スライス中の最大コーディングユニットが、コーディングツリーブロック（ＣＴＢ）またはコーディングツリーユニット（ＣＴＵ）と呼ばれる。ＣＴＢは、ノードがコーディングユニットである、４分ツリーを含んでいる。
【００７４】
［００８３］
ＣＴＢのサイズは、（技術的には８×８ＣＴＢサイズをサポートすることができるが）ＨＥＶＣメインプロファイルにおいて１６×１６から６４×６４の範囲とすることができる。コーディングユニット（ＣＵ）は、ＣＴＢと同じサイズから８×８までの小ささであってもよい。各コーディングユニットは、１つのモード、すなわち、インターモードまたはイントラモードでコード化される。ＣＵがインターコード化されるとき、それは、２つまたは４つの予測ユニット（ＰＵ）にさらに区分されてもよく、または、さらなる区分が適用されないときには、ただ１つのＰＵとなってもよい。２つのＰＵが１つのＣＵ中に存在するときには、それらは、半分のサイズの長方形、あるいは、ＣＵの１／４または３／４のサイズを有する２つの長方形サイズとすることができる。ＣＵがインターコード化されるとき、各ＰＵは、一意的なインター予測モードで導出される、１つのセットの動き情報を有する。
【００７５】
［００８４］
以下で、動きベクトル予測をレビューする。ＨＥＶＣ標準規格では、予測ユニット（ＰＵ）に対して、それぞれマージ（スキップはマージの特別なケースと見なされる）モードおよび高度動きベクトル予測（ＡＭＶＰ）モードという名の、２つのインター予測モードがある。ＡＭＶＰモードまたはマージモードのいずれかにおいて、複数の動きベクトル予測子に対して、動きベクトル（ＭＶ）候補リストが維持される。ＭＶ候補リストから１つの候補を取り出すことによって、現在ＰＵの、動きベクトルとともに、マージモードにおける参照インデックスが発生される。ＭＶ候補リストは、マージモードに対する５つまでの候補と、ＡＭＶＰモードに対する２つだけの候補とを含んでいる。マージ候補は、動き情報のセット、例えば、両参照ピクチャーリスト（リスト０およびリスト１）に対応する動きベクトルと参照インデックスとを含んでいてもよい。マージ候補がマージインデックスによって識別される場合には、現在ブロックの予測のために使用される参照ピクチャーとともに、関係する動きベクトルが決定される。一方、リスト０またはリスト１のいずれかからの各潜在的予測方向に対するＡＭＶＰモード下では、ＡＭＶＰ候補が動きベクトルのみを含むことから、ＭＶ候補リストへのＭＶ予測子（ＭＶＰ）インデックスとともに、参照インデックスが、明示的にシグナリングされる必要がある。ＡＭＶＰモードでは、予測された動きベクトルはさらに改良することができる。両方のモードの候補は、同じ空間的および時間的に隣接するブロックから同様に導出される。
【００７６】
［００８５］
以下で、空間的に隣接する候補をレビューする。いくつかの例では、空間ＭＶ候補は、特定のＰＵ（ＰＵ０）１３４に対して、図２Ａおよび図２Ｂに示されている隣接するブロックから導出されるが、ブロックから候補を発生させるための方法は、マージモードとＡＭＶＰモードとで異なる。マージモードでは、いくつかの例では、４つまでの空間ＭＶ候補が、数字とともに図２Ａに示されている順序で導出でき、順序は図２Ａに示すように、以下の通りである：左（０、Ａ１）、上（１、Ｂ１）、右上（２、Ｂ０）、左下（３、Ａ０）、および、左上（４、Ｂ２）。例えば、ＰＵ０  １３４に対して、ブロックＡ１は０として識別され、ＰＵ０  １３４の左にあり、ブロックＢ１は１として識別され、ＰＵ０  １３４の上にあり、ブロックＢ０は２として識別され、ＰＵ０  １３４の右上にあり、ＰＵ１  １３６の上にあり、ブロックＡ０は３として識別され、ＰＵ０  １３４の左下にあり、ブロックＢ２は４として識別され、ＰＵ０  １３４の左上にある。
【００７７】
［００８６］
ＡＭＶＰモードでは、いくつかの例では、隣接するブロックは、図２Ｂに示されるように、それぞれＰＵ０  １３８の左下および左にあるブロック０および１を含む左グループと、ＰＵ０  １３８の右上、上、および、左上にあるブロック２、３、および、４を含む上グループとの、２つのグループに分割される。ブロック２は、ＰＵ１  １４０の上にある。各グループに対して、シグナリングされた参照インデックスによって示されるものと同じ参照ピクチャーを参照する隣接するブロック中の潜在的候補は、グループの最終候補を形成するために選択されるべき最高の優先度を有する。すべての隣接するブロックが、同じ参照ピクチャーを指す動きベクトルを含まないかもしれない。したがって、このような候補を見つけることができない場合には、最初の利用可能な候補は、最終候補を形成するためにスケーリングされ、したがって、時間的距離差を補償できる。
【００７８】
［００８７］
以下で、時間動きベクトル予測をレビューする。いくつかの例では、時間動きベクトル予測子（ＴＭＶＰ）候補は、有効にされて利用可能である場合、空間動きベクトル候補の後にＭＶ候補リストに追加される。ＴＭＶＰ候補に対する動きベクトル導出のプロセスは、マージモードとＡＭＶＰモードの両方に対して同じであるが、マージモードにおけるＴＭＶＰ候補に対するターゲット参照インデックスは常に０に設定される。
【００７９】
［００８８］
いくつかの例では、ＴＭＶＰ候補導出のための１次ブロックロケーションは、空間的に隣接する候補を発生させるのに使用される上および左のブロックへのバイアスを補償するために、ブロックＴ１４０として図３Ａに示されるように、コロケートされたＰＵの外側の右下のブロックである。しかしながら、そのブロックが現在ＣＴＢ行の外側に位置付けられる、または、動き情報が利用可能でない場合には、ブロックはＰＵの中央ブロックで置換される。
【００８０】
［００８９］
現在ピクチャー１５０中のＴＭＶＰ候補に対する動きベクトル１４８は、スライスレベルにおいて示される、コロケートされたピクチャー１４６のコロケートされたＰＵから導出される。コロケートされたＰＵに対する動きベクトルは、コロケートされたＭＶ１４２と呼ばれる。ＡＶＣにおける時間ダイレクトモードと同様に、ＴＭＶＰ候補動きベクトルを導出するために、コロケートされたＭＶ１４２は、図３Ｂに示されるように、時間距離差を補償するようにスケーリングされてもよい。例えば、コロケートされたピクチャー１４６とコロケートされた参照ピクチャー１４４との間の時間差、および、現在ピクチャー１５０と現在参照ピクチャー１５２との間の時間差を使用して、コロケートされたＭＶ１４２をスケーリングして、動きベクトル１４８を発生させる。
【００８１】
［００９０］
以下で、ＨＥＶＣにおける動き予測のいくつかの他の態様をレビューする。マージモードおよびＡＭＶＰモードのいくつかの態様は、以下のように言及する価値がある。
【００８２】
［００９１］
動きベクトルスケーリング：動きベクトルの値は、プレゼンテーション時間におけるピクチャーの距離に比例すると仮定する。動きベクトルは、２つのピクチャー、参照ピクチャーと、動きベクトルを含むピクチャー（すなわち、包含ピクチャー）とを関係付ける。動きベクトルを利用して、他の動きベクトルを予測するとき、ピクチャー順序カウント（ＰＯＣ）値に基づいて、包含ピクチャーと参照ピクチャーとの距離が計算される。
【００８３】
［００９２］
予測されるべき動きベクトルに対して、その関係付けられた包含ピクチャーと参照ピクチャーの両方が異なるかもしれない。したがって、（ＰＯＣに基づく）新しい距離が計算される。そして、動きベクトルは、これら２つのＰＯＣ距離に基づいてスケーリングされる。空間的に隣接する候補に対して、２つの動きベクトルに対する包含ピクチャーは同じである一方で、参照ピクチャーは異なる。ＨＥＶＣにおいて、動きベクトルスケーリングは、空間的におよび時間的に隣接する候補に対して、ＴＭＶＰとＡＭＶＰの両方に適用される。
【００８４】
［００９３］
人工動きベクトル候補発生：動きベクトル候補リストが完全でない（例えば、予め定められた数よりも少ない候補）場合、人工的な動きベクトル候補を発生させ、すべての候補を有するまで、リストの最後に挿入される。マージモードでは、２つのタイプの人工ＭＶ候補：Ｂスライスのみに対して導出される組み合わされた候補と、Ｂスライスのみに対して導出される組み合わされた候補が十分な人工候補を提供しない場合には、ＡＭＶＰのみに対して使用されるゼロ候補とがある。
【００８５】
［００９４］
候補リスト中に既にあり、必要な動き情報を有する候補の各ペアに対して、リスト０中のピクチャーを参照する第１の候補の動きベクトルと、リスト１中のピクチャーを参照する第２の候補の動きベクトルとの組み合わせによって、双方向に組み合わされた動きベクトル候補が導出される。
【００８６】
［００９５］
候補挿入のための、余分な部分を取り除くプロセス：異なるブロックからの候補が、たまたま同じであるかもしれず、これはマージ／ＡＭＶＰの候補リストの効率を低下させる。この問題に対処するために、余分な部分を取り除くプロセスを適用する。これは、同一の候補を挿入することを回避するために、現在の候補リスト中の１つの候補を他の候補と比較する。複雑さを低減させるために、各潜在的候補をリスト中の他のすべての既存の候補と比較する代わりに、限られた回数だけ、余分な部分を取り除くプロセスを適用する。
【００８７】
［００９６］
以下では、履歴ベースの動きベクトル予測を説明する。ＪＶＥＴ−Ｋ０１０４として呼ばれる、「ＣＥ−４関連：履歴ベースの動きベクトル予測」ＩＴＵ−Ｔ  ＳＧ１６ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＶＥＴ、第１１回会議：２０１８年７月１０〜１８日スロベニア、リュブリャナにおいて説明されている履歴ベースの動きベクトル予測（ＨＭＶＰ）は、直近の原因となる隣接する動きフィールド中のものに加えて、過去からのデコードされたＭＶのリストから、そのＭＶ予測子を各ブロックが見つけることを可能にする履歴ベースの方法である。複数のＨＭＶＰ候補を有するテーブルが、エンコーディング／デコーディングプロセス中に維持される。新しいスライスに遭遇するとき、テーブルは空にされる。インターコード化されたブロックがあるときにはいつでも、関係する動き情報は、新たなＨＭＶＰ候補として、先入れ先出し（ＦＩＦＯ）方式でテーブルに挿入される。次に、制約ＦＩＦＯ規則を適用することができる。ＨＭＶＰをテーブルに挿入するとき、冗長検査を適用して、テーブル中に同一のＨＭＶＰがあるか否かを見つける。見つかった場合、その特定のＨＭＶＰがテーブルから除去され、その後、すべてのＨＭＶＰ候補が移動される。より詳細に説明すると、いくつかの例では、冗長検査は実行されないかもしれない。
【００８８】
［００９７］
マージリスト構築プロセスにおいて、ＨＭＶＰ候補を使用することができる。ＴＭＶＰ候補の後に、テーブル中の最後のエントリから最初のエントリまでのすべてのＨＭＶＰ候補が挿入されるかもしれない。余分な部分を取り除くことは、ＨＭＶＰ候補に適用される。いったん利用可能なマージ候補の総数が、シグナリングされた最大許容マージ候補に達すると、マージリスト構築プロセスが終了する。
【００８９】
［００９８］
同様に、ＡＭＶＰ候補リスト構築プロセスにおいても、ＨＭＶＰ候補を使用することができる。ＴＭＶＰ候補の後に、テーブル中の最後のＫ個のＨＭＶＰ候補の動きベクトルが挿入される。いくつかの例では、ＡＭＶＰターゲット参照ピクチャーと同じ参照ピクチャーを持つＨＭＶＰ候補のみを使用して、ＡＭＶＰ候補リストを構築する。余分な部分を取り除くことは、ＨＭＶＰ候補に適用される。
【００９０】
［００９９］
以下では、非近接空間マージ候補を説明する。「ＣＥ４−２．１：非近接空間マージ候補の追加」ＩＴＵ−Ｔ  ＳＧ１６ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＶＥＴ、第１１回会議：２０１８年７月１０〜１８日スロベニア、リュブリャナにおいて説明されている非近接空間マージ候補の構築は、２つの非近接隣接位置からの（すなわち、図４に示すように、最も近い非近接ブロックから左／上に）新たな空間候補の導出を含んでいる。例えば、図４は、隣接するブロックＡ０、Ａ１、Ｂ２、Ｂ１、および、Ｂ０を有する現在ブロック１５４を図示している。いくつかの例では、非近接空間マージ候補は、現在ブロック１５４に空間的に隣接しない、図４のブロックＨＮおよびブロックＶＮの動き情報を含んでいる。
【００９１】
［０１００］
ブロックは、現在ブロックまで１ＣＴＵの最大距離内にあるように制限できる。非近接候補（例えば、ブロックＨＮおよびＶＮ）のフェッチプロセスは、垂直方向に、以前にデコードされたブロックをトレースすることで開始する。垂直逆トレースは、インターブロックに遭遇したときに、または、トレースバック距離が１ＣＴＵサイズに達したときに停止する。その後、フェッチプロセスは、水平方向に、以前にデコードされたブロックをトレースする。水平フェッチプロセスを停止するための基準は、垂直非近接候補のフェッチに成功したか否かに依存する。垂直非近接候補がフェッチされない場合には、水平フェッチプロセスは、インターコード化されたブロックに遭遇したときに、または、トレースバック距離が１ＣＴＵサイズしきい値を超えるときに停止する。フェッチされた垂直非近接候補がある場合には、水平フェッチプロセスは、垂直非近接候補とは異なるＭＶを含むインターコード化されたブロックに遭遇したときに、または、トレースバック距離がＣＴＵサイズしきい値を超えるときに停止する。フェッチされた非近接隣接候補は、マージ候補中のＴＭＶＰ候補の前に追加される。
【００９２】
［０１０１］
いくつかの技術は、以下の問題を有するかもしれず、１つ以上の例示的な技術は、その問題に対処し、克服するかもしれない。しかしながら、すべての例示的な技術が、この開示で説明する利点のすべてを必ずしも常に提供する必要はない。
【００９３】
［０１０２］
非近接マージ候補にアクセスするために、デコーダ（例えば、ビデオデコーダ３００）は、ラインバッファサイズを増加させて、近接する動き候補に加えて、これらの余分の動き候補を記憶させるかもしれない。他のアプローチは、過去からデコードされたＭＶを記憶する履歴ベースのルックアップテーブルを使用することによって、バッファ問題を軽減する。より短いシンタックスを最も可能性の高い候補に割り当てる、以前のマージ候補アプローチとは異なり、これらの履歴ベースのアプローチは、適切な分類なしに、すべてをルックアップテーブルに混合するだけである。したがって、本開示は、上記の問題を克服するかもしれない、履歴ベースのマージリストまたはＡＭＶＰリストのための例示的な構築方法を説明する。エンコーダ／デコーダ（例えば、ビデオエンコーダ２００またはビデオデコーダ３００）は、（分類方法に基づいて構築された）ある候補リストを使用すべきか否かを選ぶ自由を有する。
【００９４】
［０１０３］
以下では、履歴ベースのリストの構築プロセス、余分な部分を取り除くプロセス、および、合成候補の構築のような、本開示の例示的な技術を説明する。例示的な技術は、一緒にまたは別々に使用してもよい。
【００９５】
［０１０４］
履歴ベース候補リストの構築のために、短期（および、長期）メモリを有する履歴ベース候補リストを一例として説明する。短期メモリおよび長期メモリの使用は、一例にすぎない。例示的な技術は、短期メモリまたは長期メモリの使用を必要とせず、１つのタイプのメモリを利用してもよい。
【００９６】
［０１０５］
初期リストは、ＣＴＵ行、スライス、タイル、ピクチャー等がエンコード／デコードされる開始時に構築され、ゼロ動き（例えば、デフォルト値）で埋められる。ＣＴＵ行、スライス、タイルまたはピクチャーのうちのどれが選ばれるかは、ビデオエンコーダ２００およびビデオデコーダ３００のコンフィギュレーションに依存してもよい。エンコーディング／デコーディングプロセスにおいて、ブロックが再構築を終了した後、再構築されたブロック動き情報（もしあれば）が、先入れ先出し（ＦＩＦＯ）方式で、短期候補リスト（すなわち、短期リストとして呼ばれる）に挿入される。短期リストが一杯になり、新しい候補が来ると、最も古い候補が引き出され、最新の候補が短期リストに押し込まれる。そして、短期リストから引き出されたものが、ＦＩＦＯベースの長期候補リスト（すなわち、長期リストとして呼ばれる）に挿入される。
【００９７】
［０１０６］
上記の例では、短期リストおよび長期リストを説明した。しかしながら、いくつかの例では、単一の候補リスト（例えば、単一の履歴ベース候補リスト）があってもよく、再構築されたブロックの動き情報が、ＦＩＦＯ方式で、履歴ベース候補リストに追加される。
【００９８】
［０１０７］
両方のリストのサイズは構成可能であり、短期リストおよび長期リストに対してそれぞれＮＳおよびＮＬである。いくつかの例では、単一の履歴ベース候補リストのサイズは構成可能である。コーデック（例えば、ビデオエンコーダ２００および／またはビデオデコーダ３００）は、元のマージリストに追加して、または、元のマージリストの代わりに、最終のマージリストを形成するために、２つのリストのうちのいずれか１つ（または、これらの組み合わせ）を選ぶ柔軟性を有する。例えば、短期リストおよび長期リストのいずれか１つまたは両方における候補を最終のマージリストに挿入することができる。短期リストと長期リストの両方が使用されるが、一方のみが格納されるいくつかの例では、格納されるリストは、単一の履歴ベース候補リストと見なしてもよい。言い換えれば、いくつかの例では、短期リストが履歴ベース候補リストの一例と見なされるかもしれず、長期リストが履歴ベース候補リストの一例と見なされるかもしれない。いくつかの例では、短期リストと長期リストの両方がある必要はないかもしれず、そのケースでは、短期リストまたは長期リストのうちの１つが、単一の履歴ベース候補リストになる。
【００９９】
［０１０８］
以下は、４つの挿入順序の例である：
・短期候補のみが最終のマージリストに挿入される（例えば、短期候補が履歴ベース候補リストである）；
・長期候補のみが最終のマージリストに挿入される（例えば、短期候補が履歴ベース候補リストである）；
・長期候補がシーケンシャルに挿入される前に、短期候補が、最終のマージリストに最初に挿入される；
・短期候補および長期候補が、インターリーブ方式で、最終のマージリストに挿入され、挿入順序は、１番目の短期候補、１番目の長期候補、２番目の短期候補、２番目の長期候補等である。
【０１００】
［０１０９］
以下では、時間遅延される短期リスト技術を説明する。例示的な技術は、一般的に、履歴ベース候補リスト（例えば、短期リスト、長期リスト、あるいは、短期リストまたは長期リストのうちの１つのみがある場合のような、短期と長期とに分離されない単一のリスト）がある場合に適用してもよい。可変履歴ベース候補リスト（例えば、短期リスト）を時間遅延機能とともに提案する。上記の例では、インターブロックがエンコーディング／デコーディングを終了するたびに、履歴ベース候補リストが更新される。一例では、本開示は、（例えば、短期リスト、単一履歴ベース候補リスト、または、長期リストであってもよい）履歴ベース候補リスト中の第１のＴＳ候補が一時的に利用不可に設定される、時間遅延係数ＴＳ（ここで、ＴＳ＜ＮＳ）を導入する例示的な技術を説明する。遅延は、すぐ隣接する動きフィールドからの動き情報をマージ候補とする、空間ＭＶ予測（もしあれば）との競合を回避するかもしれない。例えば、図５中のブロックＤ１６２をエンコード／デコードするとき、短期リスト中のブロックＣ１６０の動き情報が一時的に利用不可としてマークされるように、ＴＳは１とすることができ、したがって、それ（例えば、ブロックＣ１６０）は最終のマージリストに挿入されない。同様に、ＴＳ＝２（または、ＴＳ＝３）のような他の例では、短期リスト中のブロックＢ１５８とブロックＣ１６０の両方の動き情報（または、ブロックＡ１５６、ブロックＢ１５８、および、ブロックＣ１６０のすべての動き情報）は、最終のマージリストに挿入されない。
【０１０１】
［０１１０］
例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別するように構成されていてもよい。例として、履歴ベース候補リストは、ブロックＡ１５６、Ｂ１５８、および、Ｃ１６０に対する動き情報を含んでいてもよい。図５の例では、ブロックＣ１６０は、最も最近再構築されたブロック（例えば、ブロックＤ１６２の直前に再構築されたブロック）であり、ブロックＢ１５８はブロックＣ１６０の前に再構築されたブロックであり、ブロックＡ１５６はブロックＢ１５８の前に再構築されたブロックである。この例では、ビデオエンコーダ２００およびビデオデコーダ３００は、ブロックＡ１５６、Ｂ１５８、および、Ｃ１６０のうちの１つ以上を含む第１のサブセットを識別してもよい。ブロックＤ１６２が、コード化されているブロックであってもよい。
【０１０２】
［０１１１］
一例として、ビデオエンコーダ２００およびビデオデコーダ３００は、２つの最も最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの２つの候補を識別してもよい。例えば、履歴ベース候補リストは、ブロックＡ１５６、Ｂ１５８、および、Ｃ１６０の動き情報を含み、そのうちのブロックＢ１５８およびＣ１６０は、２つの最も最近再構築されたブロックである。この例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの１つ以上の候補の第１のサブセットとして、ブロックＢ１５８およびＣ１６０を識別してもよい。
【０１０３】
［０１１２］
ビデオエンコーダ２００およびビデオデコーダ３００は、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。一例として、履歴ベース候補リストの１つ以上の候補の第２のサブセットは、ブロックＢ１５８およびＣ１６０を含む第１のサブセットが除外されるので、ブロックＡ１５６を含んでいる。
【０１０４】
［０１１３］
上記で説明したように、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補のサブセットを識別してもよい。上記の例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、ブロックＡ１５６の動き情報を識別してもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、ブロックＡ１５６の動き情報に基づいて、候補リストを発生させてもよい（例えば、ブロックＡ１５６の動き情報を初期のマージまたはＡＭＶＰのリストに追加する）。
【０１０５】
［０１１４］
最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別することの潜在的な利益の一例は、最近再構築されたブロックの動き情報が、既に初期のマージまたはＡＭＶＰのリストの一部であるかもしれないことである。したがって、履歴ベース候補リストの１つ以上の候補の第１のサブセットを第２のサブセットから除外することによって、第２のサブセット中の候補が、マージまたはＡＭＶＰのリスト中に既にある候補の複製ではない可能性がより高くなる。
【０１０６】
［０１１５］
以下では、サブサンプリングされた候補リストを説明する。履歴ベース候補リストは、原因となる動きフィールドに対して、より低いサンプリングレートで形成することができる。３つの例示的な技術：リストサブサンプリングアプローチ、ブロックサブサンプリングアプローチ、および、領域サブサンプリングアプローチを説明する。空間的に互いに近いＭＶは類似しているかもしれない（または、同一でさえあるかもしれない）ので、エンコーダ／デコーダが、ビットストリームからのすべてのコード化／デコードされた動き情報をサンプリングして最終候補リスト（例えば、最終のマージまたはＡＭＶＰのリスト）を形成するのを防ぐために、両方またはすべてが、共通グランドを共有してもよい。サブサンプリングレートＲは、例のうちの１つ以上に対して指定されていてもよい。
【０１０７】
［０１１６］
上記と同様に、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リストに記憶させることによって、履歴ベース候補リストを構築し、履歴ベース候補リストの候補のサブセットを識別してもよい。１つ以上の例では、履歴ベース候補リストの候補のサブセットを識別するために、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別してもよい。
【０１０８】
［０１１７］
一例として、ビデオエンコーダ２００およびビデオデコーダ３００は、リストサブサンプリングアプローチを実行してもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、それぞれ新たにデコード／エンコードされた動き情報を履歴ベース候補リストに挿入することによって、履歴ベース候補リスト（例えば、短期リスト、長期リスト、または、単一履歴ベース候補リスト）を更新してもよい。しかしながら、いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リスト中のＲ個毎の候補から最初または最後の１つのみを周期的にサブサンプリングし、サブサンプリングされた候補を、候補リスト（例えば、最終のマージまたはＡＭＶＰのリスト）に挿入させるために利用可能であるとしてマークしてもよい。
【０１０９】
［０１１８］
これらの利用可能な候補は、履歴ベース候補リスト中のこれらのインデックス位置｛０，Ｒ，２Ｒ，．．．｝（｛１，Ｒ＋１，２Ｒ＋１，．．．｝｛２，Ｒ＋２，２Ｒ＋３，．．．｝または｛Ｒ−１，２Ｒ−１，３Ｒ−１．．．｝）から識別できる。例えば、ＮＳ＝１６およびＲ＝４のとき、これらのインデックス位置は、｛０、４、８、１２｝（または、｛３、７、１１、１５｝）であってもよい。
【０１１０】
［０１１９］
例えば、履歴ベース候補リストは、１６個の候補を含んでいてもよい。１６個の候補のそれぞれは、１６個の最も最近再構築されたブロックを表し、１６個の最も最近再構築されたブロックに対するそれぞれの動き情報（もしあれば）を含んでいる。履歴ベース候補リスト中の候補は、インデックス値によって識別してもよい（例えば、インデックス０は、履歴ベース候補リスト中の最初のエントリに対するものであり、インデックス１５は、履歴ベース候補リスト中の最後のエントリに対するものである）。いくつかの例では、インデックス０は、最も最近再構築されたブロックに対するものであり、インデックス１５は、最も早くに再構築されたブロック（例えば、最も以前に再構築されたブロック）に対するものである。言い換えれば、インデックス０は、履歴ベース候補リスト中の最も最近追加された候補に対するものであり、インデックス１５は、履歴ベース候補リスト中の最も早くに追加された候補に対するものである。
【０１１１】
［０１２０］
いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別する方法として、履歴ベース候補リスト中のＮ番目毎の候補を識別してもよい。一例として、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リスト中の４番目毎の候補を識別してもよい。
【０１１２】
［０１２１］
また、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの始めから開始して、または、履歴ベース候補リストの終わりから開始して、Ｎ番目毎の候補を識別してもよい。例えば、Ｎが４に等しいと仮定すると、履歴ベース候補リストの始めから開始する場合、ビデオエンコーダ２００およびビデオデコーダ３００は、インデックス値０、４、８、１２によってインデックス付けされている履歴ベース候補リスト中の候補を識別してもよい。例えば、Ｎが４に等しいとき、履歴ベース候補リストの終わりから開始する場合、ビデオエンコーダ２００およびビデオデコーダ３００は、インデックス値１５、１１、７、３によってインデックス付けされている履歴ベース候補リスト中の候補を識別してもよい。
【０１１３】
［０１２２］
ビデオエンコーダ２００およびビデオデコーダ３００が履歴ベース候補リストの終わりで開始する例では、インデックス値１５は、履歴ベース候補リスト中の最も早く追加された候補を指している。したがって、いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リスト中の最も早く追加された候補から開始して、履歴ベース候補リストをサブサンプリングしてもよい。しかしながら、例示的な技術はこのように限定されない。いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リスト中の最新に追加された候補から開始して、履歴ベース候補リストをサブサンプリングしてもよい。
【０１１４】
［０１２３］
上記で説明したようなリストサブサンプルアプローチは、履歴ベース候補リストをサブサンプルするための１つの例示的な方法である。別の例として、ビデオエンコーダ２００およびビデオデコーダ３００は、ブロックサブサンプリングアプローチを利用してもよい。ブロックサブサンプリングアプローチでは、新たにデコード／エンコードされた動き情報のＲ個毎に、最初（または、最後）の動き情報を履歴ベース候補リストに挿入することによって、履歴ベース候補リスト（例えば、短期リスト）が１回更新される。別の例として、ビデオエンコーダ２００およびビデオデコーダ３００は、領域サブサンプリングアプローチを利用してもよい。領域サブサンプリングアプローチでは、履歴ベース候補リストの以前の更新後に、エンコード／デコードされたピクセルの累積数がＲを超えた後にのみ、履歴ベース候補リスト（例えば、短期リスト）が１回更新される。更新プロセスが呼び出されると、累積ピクセル数はＲだけ引かれる。
【０１１５】
［０１２４］
上記で説明したように、ビデオエンコーダ２００およびビデオデコーダ３００は、少なくとも２つの技術を用いて、履歴ベース候補リストの候補のサブセットを識別してもよい。第１の技術では、ビデオエンコーダ２００およびビデオデコーダ３００は、最近再構築されたブロックの動き情報に対応する候補を除外してもよい。第２の技術では、ビデオエンコーダ２００およびビデオデコーダ３００は、（例えば、リストベースのアプローチ、ブロックベースのアプローチ、または、領域ベースのアプローチを使用して）履歴ベース候補リストをサブサンプリングしてもよい。
【０１１６】
［０１２５］
いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、第１の技術と第２の技術とを組み合わせてもよい。例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別してもよい。一例として、第１のサブセットを識別するために、ビデオエンコーダ２００およびビデオデコーダ３００は、２つの最も最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの２つの候補（例えば、インデックス値０および１によって識別される候補）を識別してもよい。
【０１１７】
［０１２６］
ビデオエンコーダ２００およびビデオデコーダ３００は、その後、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセット（例えば、インデックス値２〜１５によって識別される候補）を識別してもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、第２のサブセットをサブサンプリングすることによって、履歴ベース候補リストから候補のサブセットを識別してもよい。一例として、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストをサブサンプリングする（例えば、履歴ベース候補リスト中の４番目毎の候補を識別する）が、第１のサブセットからの候補（例えば、インデックス値０および１によって識別される候補）を含めなくてもよい。
【０１１８】
［０１２７］
上記の例示的な技術（例えば、最近再構築されたブロックの動き情報に対応する候補を除外する第１の技術、サブサンプリングの第２の技術、または、これらの組み合わせ）を使用して、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補のサブセットを識別してもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リスト（例えば、最終のマージリストまたはＡＭＶＰのリスト）を発生させてもよい。例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、候補の識別されたサブセットからの１つ以上の候補を初期のマージまたはＡＭＶＰのリストに追加して、最終のマージまたはＡＭＶＰのリストを発生させてもよい。
【０１１９】
［０１２８］
このようにして、候補リスト（例えば、最終のマージまたはＡＭＶＰのリスト）は、動き情報の多様な選択（例えば、候補リスト中の他の動き情報と類似しない動き情報）を提供する候補を含んでいる。再度説明すると、上述したように、空間的に隣接するブロックは、類似する動き情報を有する傾向がある。あるブロックに対する動き情報をサブサンプリングし、除外することによって、履歴ベース候補リストの候補のサブセットは、空間的に隣接しないブロックからの動き情報を含むかもしれず、これは、動き情報における多様性（例えば、別のブロックに対する動き情報と同じでない、１つのブロックに対する動き情報）を増加させる。
【０１２０】
［０１２９］
動き情報に多様性を有することは、ビデオエンコーダ２００が、候補リスト中の動き情報にあまり多様性がない状況に対して、シグナリング帯域幅を低減させる可能性がある、候補リスト中のインデックスを選択することを可能にする。例えば、マージモードに対して、ビデオエンコーダ２００は、動き情報によって識別される予測ブロックが、確実に予測ブロックと現在ブロックとの間の残差を最小化する、現在ブロックに対する動き情報を選択することができるかもしれない。動き情報にこのような多様性がないと、候補リストは、残差を最小化する動き情報を含まないかもしれない。
【０１２１】
［０１３０］
以下では、制約付き候補リストを説明する。制約セット中で予め限定された予測モードによってコード化されたブロックからの動き情報を使用することによって、履歴ベース候補リストを更新することができる。ビデオシーケンスにおける動き特性が原因で、動きフィールドを表すには、あるインター予測モードは、ときには、他のインター予測モードよりも効率的である。例えば、オブジェクト遮蔽が発生するとき、空間ＭＶ候補は、時間ＭＶ候補よりも信頼性が低いであろう。したがって、挿入された動き情報が、予め規定された予測モードのうちの１つを使用することによってコード化されたブロックからのものであるとき、エンコーダ／デコーダが履歴ベース候補リスト（例えば、短期リストまたは長期リスト）を更新するための柔軟性を提供するかもしれない技術を、本開示は説明する。例えば、制約セットが空間−時間動きベクトル予測（ＳＴＭＶＰ）モードおよびＴＭＶＰモードで指定される場合、ＳＴＭＶＰおよびＴＭＶＰから導出された動き情報のみを使用して、履歴ベース候補リスト（例えば、短期リストまたは長期リスト）を更新してもよい。
【０１２２】
［０１３１］
以下では、インターリーブされた候補の記憶を説明する。それぞれの到来する新しい候補は、インターリーブ方式で、履歴ベース候補リストに押し込むことができる。３つの例示的な技術を以下で説明する。エンコーダ（例えば、ビデオエンコーダ２００）は、以下の方法のうちのどれを適用すべきかを選ぶ自由を有し、デコーダ（例えば、ビデオデコーダ３００）は、エンコーダが行うのと同じ方法にしたがうだけでよい。
【０１２３】
［０１３２］
Ａ．）マージモードベースのアプローチ：コーデックにおけるマージモードのサポートされるタイプの最大数に依存して、上述の履歴ベース候補リストを、複数のサブリストに分けることができる。例えば、ＪＥＭソフトウェアは、空間ＡＭＶＰ、時間ＡＭＶＰ、代替時間動きベクトル予測（ＡＴＭＶＰ）、および、ＳＴＭＶＰをサポートする。したがって、短期リストおよび長期リストは両方とも、図６に図示すように４つのグループに分けることができる。例えば、先入れ先出し（ＦＩＦＯ）１は、参照番号１６４によって表される［０、ＮＳ１）のインデックス範囲を含んでいる。ＦＩＦＯ２は、参照番号１６６によって表される［ＮＳ１、ＮＳ２）のインデックス範囲を含んでいる。ＦＩＦＯ３は、参照番号１６８によって表される［ＮＳ２、ＮＳ３）のインデックス範囲を含んでいる。ＦＩＦＯ４は、参照番号１７０によって表される［ＮＳ３、ＮＳ）のインデックス範囲を含んでいる。インデックス範囲１６４〜１７０を含むＦＩＦＯ１〜ＦＩＦＯ４は、短期リストを形成し、それぞれ４つのモードに割り当てられる。同様に、長期リスト中の［０、ＮＬ１）、［ＮＬ１、ＮＬ２）、［ＮＬ２、ＮＬ３）、［ＮＬ３、ＮＬ）は、それぞれ４つのモードに割り当てられる。図示するように、各サブリストは独立したＦＩＦＯリストである（例えば、第１のサブリストがインデックス範囲１６４を含み、第２のサブリストがインデックス範囲１６６を含み、第３のサブリストがインデックス範囲１６８を含み、第４のサブリストがインデックス範囲１７０を含む、短期リストに対するＦＩＦＯ１からＦＩＦＯ４）。いずれのサブリストが更新されても、他のリストに影響を及ぼさない。インターブロックがエンコード／デコードされた後、その動き情報は、その動き予測モード（例えば、空間ＡＭＶＰ、時間ＡＭＶＰ、ＡＴＭＶＰ、および、ＳＴＭＶＰ）に依存して、ＦＩＦＯリストのうちの１つに押し込まれる。
【０１２４】
［０１３３］
短期リストのサブリスト中の候補が引き出されると、その候補は、長期リストの対応するサブリストに押し込まれる。例えば、候補が短期リスト中のＦＩＦＯ１から引き出される場合、それはＦＩＦＯ１で長期リストに押し込まれる。
【０１２５】
［０１３４］
Ｂ．）ブロックサイズベースのアプローチ：方法Ａの代わりに、または、方法Ａに加えて：マージモードベースのアプローチでは、この例は、ブロック中のピクセル数ＮＰに基づいて、履歴ベース候補リストをいくつかのＦＩＦＯサブリストに分けることを可能にする。この例は、昇順で一連のＮＰを予め規定して、各ブロックがどのようにＦＩＦＯサブリストに関係するかを決定する。例えば、この例は、履歴ベース候補リストを４つのＦＩＦＯサブリスト（図６）に分割することができ、ＮＰシリーズの値は、｛６４、１２８、２５６｝のように予め規定することができ、｛ＮＳ１、ＮＳ２、ＮＳ３｝および｛ＮＬ１、ＮＬ２、ＮＬ３｝も予め規定する必要があることがある。この例では、ブロック中のピクセルの数が６４、１２８、または、２５６ピクセルを超えない場合には、デコード／エンコードされたブロックの動き情報がＦＩＦＯ１、２または３に押し込まれ、残りがＦＩＦＯ４に挿入される。
【０１２６】
［０１３５］
Ｃ．）ＭＶベースのアプローチ：方法Ｂと同様に：ブロックサイズベースのアプローチでは、サブリストマッピングは、ブロックピクセルカウントの代わりに、ブロックＭＶに基づくことができる。例えば、この例は、ブロック動き情報をＦＩＦＯサブリストにマッピングするための参照として、エンコード／デコードされたブロックＭＶのｘおよびｙ成分の符号ビットをとることができる。図６と同様に、この例は、履歴ベース候補リストを４つのサブリストに分けることができ、マッピング関数は、単予測に対しては（ＭＶｘ＜０？１：２）＊（ＭＶｙ＜０？１：２）であり、または、双予測に対しては（ＭＶｘ（Ｌ０）＊ＭＶｘ（Ｌ１）＜０？１：２）＊（ＭＶｙ（Ｌ０）＊ＭＶｙ（Ｌ１）＜０？１：２）である。関数出力が１、２、３、または、４のとき、ＦＩＦＯ１、２、３、または、４が、ブロックに割り当てられる。
【０１２７】
［０１３６］
このマッピング関数は、サブリストの数と同じ数の出力を生成させることができる任意のものによって予め規定できる。例えば、履歴ベース候補リスト（例えば、短期リストおよび長期リスト、または、単一の履歴ベース候補リスト）は、２つのサブリスト（例えば、０からＮＳ１−１までの範囲のＦＩＦＯ１、および、ＮＳ１からＮＳまでの範囲のＦＩＦＯ２）に分けることができ、マッピング関数は、単予測に対しては（ＭＶｘ＋ＭＶｙ＜０？１：２）または双予測に対しては（ＭＶｘ（Ｌ０）＋ＭＶｘ（Ｌ１）＋ＭＶｙ（Ｌ０）＋ＭＶｙ（Ｌ１）＜０？１：２）として規定することができる。
【０１２８】
［０１３７］
以下では、応答する余分な部分を取り除くプロセスで開始する、候補の余分な部分を取り除くプロセスを説明する。新たな動き情報が短期リストに挿入される前に、余分な部分を取り除くプロセスが始まり、短期リスト中に記憶されている何らかの動き情報が、新たな動き情報と同一であるか否かをチェックする。同一ではない場合、この新しい動き情報は、上述したのと同じ先入れ先出し方式で、短期リストに挿入される。そうでなければ、短期リスト中の繰り返される動き情報が最初に除去され、その後、新しい動き情報を短期リストに追加できる。例示的な技術はまた、同じ余分な部分を取り除くプロセスを長期リストに適用してもよいことに留意されたい。
【０１２９】
［０１３８］
以下では、時間遅延される余分な部分を取り除くプロセスを説明する。履歴ベース候補リスト（例えば、短期リスト、長期リスト、または、単一の履歴ベース候補リスト）に対する低複雑度の余分な部分を取り除くプロセスを、時間遅延機能とともに説明する。時間遅延機能により、新たな動き情報が履歴ベース候補リストに追加されるたびに、余分な部分を取り除くプロセスが呼び出されることはない。代わりに、余分な部分を取り除くプロセスは、履歴ベース候補リストに挿入される、新たにデコード／エンコードされた動き情報のＲ個毎に１回呼び出され、ここで、Ｒは正の整数である。したがって、このアプローチは、履歴ベース候補リストのコンパクトさを失うことを犠牲にして、余分な部分を取り除くプロセスの複雑さをある程度まで効果的に低減させるかもしれない。極端なケースは、Ｒが無限大に近づくとき、エンコーディングおよびデコーディングプロセスの間に余分な部分を取り除くプロセスは決して呼び出されないことである。エンコーダ／デコーダは、この時間遅延アプローチを履歴ベース候補リストに適用することができるか否かを選ぶ柔軟性を有することに留意されたい。
【０１３０】
［０１３９］
例えば、ビデオエンコーダ２００およびビデオデコーダ３００が履歴ベース候補リストを構築しているとき、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リスト中の候補のいずれかの動き情報が重複するか否かを決定しないかもしれず、重複する候補を除去しないかもしれない。言い換えれば、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの余分な部分を取り除くことなく、履歴ベース候補リストを構築してもよい。
【０１３１】
［０１４０］
ビデオエンコーダ２００およびビデオデコーダ３００が、履歴ベース候補リストの余分な部分を取り除かないかもしれない１つの例示的な理由は、ある候補（例えば、２つの最も最近に再構築されたブロック）のサブサンプリングおよび除外が理由である。上述したように、ある候補のサブサンプリングおよび除外は、重複または類似する動き情報が履歴ベース候補リストから除去される比較的高い可能性を提供する。したがって、特に、ある候補のサブサンプリングおよび除外がなされれば、履歴ベース候補リストに対して余分な部分を取り除く動作を実行することは、多くの利益を提供しないかもしれないが、処理時間がかかるかもしれない。
【０１３２】
［０１４１］
いくつかの例では、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストに対して余分な部分を取り除くことを実行しないかもしれないが、ビデオエンコーダ２００およびビデオデコーダ３００は、最終候補リストに対して余分な部分を取り除く動作を実行してもよい。例えば、ビデオエンコーダ２００およびビデオデコーダ３００は、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させてもよい。その後、ビデオエンコーダ２００およびビデオデコーダ３００は、候補リストの余分な部分を取り除いてもよい。
【０１３３】
［０１４２］
以下に合成候補の構築を説明する。ＣＴＵ行、スライス、タイル、または、ピクチャーがエンコード／デコードされているとき、履歴ベース候補リストは、始めのサイクルにおいて、実際の動きフィールドからサンプリングされる動きで常に満たされているとは限らない。上述したように、すべての空の候補位置は、デフォルト値、すなわちゼロの動きを使用することによって満たされる。代わりに、Ｂスライスに対して、双予測動きペアの合成セットが導入される。各動きペアは、履歴ベース候補リスト中の２つの利用可能な候補からの参照をとることによって形成され、それぞれ、動きペア中のＬ０およびＬ１動きベクトルは、第１の利用可能な候補のＬ０動きベクトルからのものであり、Ｌ１動きベクトルは、第２の利用可能な候補のＬ１動きベクトルからのものである。履歴ベース候補リスト中の利用可能な候補の数がＭであると仮定すると、履歴ベース候補リストからの候補インデックスの順序付けられたシーケンスは、動きペアを形成するために以下のように規定される。  
∪０＜ｍ＜Ｍ｛（０，ｍ），（ｍ，０），（１，ｍ），（ｍ，１）,（２，ｍ），（ｍ，２）, ．．．（ｍ−１，ｍ），（ｍ，ｍ−１）｝
【０１３４】
［０１４３］
例えば、Ｍ＝４のとき、順序付けられたインデックスシーケンスは、｛（０，１），（１，０）｝∪｛（０，２），（２，０），（１，２），（２，１）｝∪｛（０，３），（３，０）（１，３），（３，１），（２，３），（３，２）｝である。これらの動きペアは、最終マージリストが満たされるまで、履歴ベース候補リスト中の満たされたゼロ動きに対する置換として、最終マージリストにシーケンシャルに挿入される。次に、最終マージリスト中の残りの空の候補位置が、ゼロ動きと、各参照リスト中の第１の参照ピクチャーとを使用することによって満たされる。
【０１３５】
［０１４４］
図７は、本開示の技術を実行してもよい例示的なビデオエンコーダ２００を図示するブロック図である。図７は、説明の目的のために提供されており、本開示において広く例示および説明されているような技術の限定と見なすべきではない。説明の目的のために、本開示は、開発中のＨＥＶＣビデオコーディング標準規格およびＨ．２６６ビデオコーディング標準規格（例えば、ＶＶＣ）のような、ビデオコーディング標準規格のコンテキストで、ビデオエンコーダ２００を説明する。しかしながら、本開示の技術は、これらのビデオコーディング標準規格に限定されず、一般的に、ビデオエンコーディングおよびデコーディングに適用可能である。
【０１３６】
［０１４５］
図７の例では、ビデオエンコーダ２００は、ビデオデータメモリ２３０と、モード選択ユニット２０２と、残差発生ユニット２０４と、変換処理ユニット２０６と、量子化ユニット２０８と、逆量子化ユニット２１０と、逆変換処理ユニット２１２と、再構築ユニット２１４と、フィルタユニット２１６と、デコードされたピクチャーバッファ（ＤＢＰ）２１８と、エントロピーエンコーディングユニット２２０とを含んでいる。
【０１３７】
［０１４６］
ビデオデータメモリ２３０は、ビデオエンコーダ２００のコンポーネントによってエンコードされるべきビデオデータを記憶していてもよい。ビデオエンコーダ２００は、例えば、ビデオソース１０４（図１）からのビデオデータメモリ２３０に記憶されているビデオデータを受け取ってもよい。ＤＰＢ２１８は、ビデオエンコーダ２００による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャーメモリとして機能してもよい。ビデオデータメモリ２３０およびＤＰＢ２１８は、同期ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（ＳＤＲＡＭ）を含むＤＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのうちのいずれかによって形成されていてもよい。ビデオデータメモリ２３０およびＤＰＢ２１８は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。さまざまな例では、ビデオデータメモリ２３０は、図示するようにビデオエンコーダ２００の他のコンポーネントとともにオンチップであってもよく、または、これらのコンポーネントに対してオフチップであってもよい。
【０１３８】
［０１４７］
本開示では、ビデオデータメモリ２３０への参照は、そのように具体的に説明されない限り、ビデオエンコーダ２００の内部のメモリ、または、そのように具体的に説明されない限り、ビデオエンコーダ２００の外部のメモリに限定されるものとして解釈すべきではない。むしろ、ビデオデータメモリ２３０への参照は、ビデオエンコーダ２００がエンコードするために受け取るビデオデータ（例えば、エンコードされるべき現在ブロックに対するビデオデータ）を記憶する参照メモリとして理解すべきである。図１のメモリ１０６はまた、ビデオエンコーダ２００のさまざまなユニットからの出力の一時記憶装置を提供してもよい。
【０１３９】
［０１４８］
図７のさまざまなユニットは、ビデオエンコーダ２００によって実行される動作の理解を助けるために示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、（例えば、パラメータを受け取るまたはパラメータを出力するために）ソフトウェア命令を実行するかもしれないが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの１つ以上は、別個の回路ブロック（固定機能またはプログラマブル）であってよく、いくつかの例では、１つ以上のユニットは集積回路であってよい。
【０１４０】
［０１４９］
ビデオエンコーダ２００は、プログラマブル回路から形成される、算術論理ユニット（ＡＬＵ）、基本機能ユニット（ＥＦＵ）、デジタル回路、アナログ回路、および／または、プログラマブルコアを含んでいてもよい。ビデオエンコーダ２００の動作がプログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ１０６（図１）は、ビデオエンコーダ２００が受け取って実行するソフトウェアのオブジェクトコードを記憶していてもよく、または、ビデオエンコーダ２００内の別のメモリ（図示せず）がこのような命令を記憶していてもよい。
【０１４１】
［０１５０］
ビデオデータメモリ２３０は、受け取ったビデオデータを記憶するように構成されている。ビデオエンコーダ２００は、ビデオデータメモリ２３０からビデオデータのピクチャーを取り出し、ビデオデータを残差発生ユニット２０４およびモード選択ユニット２０２に提供してもよい。ビデオデータメモリ２３０中のビデオデータは、エンコードされるべき生のビデオデータであってもよい。
【０１４２】
［０１５１］
モード選択ユニット２０２は、動き推定ユニット２２２と、動き補償ユニット２２４と、イントラ予測ユニット２２６とを含んでいる。モード選択ユニット２０２は、他の予測モードにしたがってビデオ予測を実行するための追加の機能ユニットを含んでいてもよい。例として、モード選択ユニット２０２は、パレットユニット、（動き推定ユニット２２２および／または動き補償ユニット２２４の一部であってもよい）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、または、これらに類するものを含んでいてもよい。
【０１４３】
［０１５２］
モード選択ユニット２０２は、一般的に、複数のエンコーディングパスを調整して、エンコーディングパラメータの組み合わせをテストし、結果として、このような組み合わせに対するレートひずみ値を得る。エンコーディングパラメータは、ＣＴＵのＣＵへの区分、ＣＵに対する予測モード、ＣＵの残差データに対する変換タイプ、ＣＵの残差データに対する量子化パラメータ等を含んでいてもよい。モード選択ユニット２０２は、最終的に、他のテストされた組み合わせよりも良好なレートひずみ値を有するエンコーディングパラメータの組み合わせを選択してもよい。
【０１４４】
［０１５３］
ビデオエンコーダ２００は、ビデオデータメモリ２３０から取り出されたピクチャーを一連のＣＴＵに区分し、スライス内に１つ以上のＣＴＵをカプセル化してもよい。モード選択ユニット２０２は、上記で説明したＱＴＢＴ構造またはＨＥＶＣの４分ツリー構造のようなツリー構造にしたがって、ピクチャーのＣＴＵを区分してもよい。上記で説明したように、ビデオエンコーダ２００は、ツリー構造にしたがってＣＴＵを区分することから１つ以上のＣＵを形成してもよい。このようなＣＵは、一般的に、「ビデオブロック」または「ブロック」として呼ばれることもある。
【０１４５】
［０１５４］
一般的に、モード選択ユニット２０２はまた、そのコンポーネント（例えば、動き推定ユニット２２２、動き補償ユニット２２４、および、イントラ予測ユニット２２６）を制御して、現在ブロック（例えば、現在ＣＵ、または、ＨＥＶＣでは、ＰＵとＴＵとのオーバーラップする部分）に対する予測ブロックを発生させる。現在ブロックのインター予測のために、動き推定ユニット２２２は、動きサーチを実行して、１つ以上の参照ピクチャー（例えば、ＤＰＢ２１８に記憶されている１つ以上の以前にコード化されたピクチャー）中の１つ以上の密接に一致する参照ブロックを識別してもよい。特に、動き推定ユニット２２２は、例えば、絶対差分の和（ＳＡＤ）、二乗差分の和（ＳＳＤ）、平均絶対差分（ＭＡＤ）、平均二乗差分（ＭＳＤ）、または、これらに類するものにしたがって、潜在的参照ブロックが現在ブロックにどれだけ類似しているかを表す値を計算してもよい。動き推定ユニット２２２は、一般的に、現在ブロックと考慮されている参照ブロックとの間のサンプル毎の差分を使用して、これらの計算を実行してもよい。動き推定ユニット２２２は、現在ブロックに最も密接に一致する参照ブロックを示す、これらの計算から結果的に生じる最低値を有する参照ブロックを識別してもよい。
【０１４６】
［０１５５］
動き推定ユニット２２２は、現在ピクチャー中の現在ブロックの位置に対する、参照ピクチャー中の参照ブロックの位置を規定する、１つ以上の動きベクトル（ＭＶ）を形成してもよい。動き推定ユニット２２２は、その後、動きベクトルを動き補償ユニット２２４に提供してもよい。例えば、単方向インター予測に対して、動き推定ユニット２２２は単一の動きベクトルを提供するかもしれない一方で、双方向インター予測に対して、動き推定ユニット２２２は２つの動きベクトルを提供するかもしれない。動き補償ユニット２２４は、その後、動きベクトルを使用して、予測ブロックを発生させてもよい。例えば、動き補償ユニット２２４は、動きベクトルを使用して、参照ブロックのデータを取り出してもよい。別の例として、動きベクトルがわずかなサンプル精度を有する場合、動き補償ユニット２２４は、１つ以上の補間フィルタにしたがって、予測ブロックに対する値を補間してもよい。さらに、双方向インター予測に対して、動き補償ユニット２２４は、それぞれの動きベクトルによって識別された２つの参照ブロックに対するデータを取り出し、例えば、サンプル毎の平均化または重み付き平均化を通して、取り出されたデータを組み合わせてもよい。
【０１４７】
［０１５６］
別の例として、イントラ予測、または、イントラ予測コーディングに対して、イントラ予測ユニット２２６は、現在ブロックに隣接するサンプルから予測ブロックを発生させてもよい。例えば、方向性モードに対して、イントラ予測ユニット２２６は、一般的に、現在ブロックに渡る規定された方向で、隣接するサンプルの値を数学的に組み合わせ、これらの計算された値を格納して、予測ブロックを生成させてもよい。別の例として、ＤＣモードに対して、イントラ予測ユニット２２６は、現在ブロックに対する隣接するサンプルの平均を計算し、予測ブロックの各サンプルに対して、この結果として生じた平均を含むように予測ブロックを発生させてもよい。
【０１４８】
［０１５７］
モード選択ユニット２０２は、予測ブロックを残差発生ユニット２０４に提供する。残差発生ユニット２０４は、ビデオデータメモリ２３０から現在ブロックの生のエンコードされていないバージョンを受け取り、モード選択ユニット２０２から予測ブロックを受け取る。残差発生ユニット２０４は、現在ブロックと予測ブロックとの間のサンプル毎の差分を計算する。結果として生じるサンプル毎の差分は、現在ブロックに対する残差ブロックを規定する。いくつかの例では、残差発生ユニット２０４はまた、残差ブロック中のサンプル値間の差分を決定し、残差差分パルスコード変調（ＲＤＰＣＭ）を使用して、残差ブロックを発生させてもよい。いくつかの例では、残差発生ユニット２０４は、バイナリ減算を実行する１つ以上の減算器回路を使用して形成されていてもよい。
【０１４９】
［０１５８］
モード選択ユニット２０２がＣＵをＰＵに区分する例では、各ＰＵは、ルーマ予測ユニットおよび対応するクロマ予測ユニットに関係していてもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、さまざまなサイズを有するＰＵをサポートしていてもよい。上で示されているように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指してもよく、ＰＵのサイズは、ＰＵのルーマ予測ユニットのサイズを指していてもよい。特定のＣＵのサイズが２Ｎ×２Ｎであると仮定すると、ビデオエンコーダ２００は、イントラ予測のための２Ｎ×２ＮまたはＮ×ＮのＰＵサイズと、インター予測のための２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または、これらに類する対称ＰＵサイズとをサポートしていてもよい。ビデオエンコーダ２００およびビデオデコーダ３００はまた、インター予測のための２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、および、ｎＲ×２ＮのＰＵサイズに対する非対称区分をサポートしていてもよい。
【０１５０】
［０１５９］
モード選択ユニット２０２がＣＵをＰＵにさらに区分しない例では、各ＣＵは、ルーマコーディングブロックおよび対応するクロマコーディングブロックに関係しているかもしれない。上記のように、ＣＵのサイズは、ＣＵのルーマコーディングブロックのサイズを指していてもよい。ビデオエンコーダ２００およびビデオデコーダ３００は、２Ｎ×２Ｎ、２Ｎ×Ｎ、または、Ｎ×２ＮのＣＵサイズをサポートしていてもよい。
【０１５１】
［０１６０］
イントラブロックコピーモードコーディング、アフィンモードコーディング、および、線形モデル（ＬＭ）モードコーディングのような、他のビデオコーディング技術に対して、いくつかの例として、モード選択ユニット２０２は、コーディング技術に関係するそれぞれのユニットを介して、エンコードされている現在ブロックに対する予測ブロックを発生させる。パレットモードコーディングのようないくつかの例では、モード選択ユニット２０２は、予測ブロックを発生させず、代わりに、選択されたパレットに基づいてブロックを再構築する方法を示すシンタックス要素を発生させてもよい。このようなモードでは、モード選択ユニット２０２は、これらのシンタックス要素を、エンコードされるようにエントロピーエンコーディングユニット２２０に提供してもよい。
【０１５２】
［０１６１］
上記で説明したように、残差発生ユニット２０４は、現在ブロックと対応する予測ブロックとに対するビデオデータを受け取る。残差発生ユニット２０４は、その後、現在ブロックに対する残差ブロックを発生させる。残差ブロックを発生させるために、残差発生ユニット２０４は、予測ブロックと現在ブロックとの間のサンプル毎の差分を計算する。
【０１５３】
［０１６２］
変換処理ユニット２０６は、残差ブロックに１つ以上の変換を適用して、変換係数のブロック（ここでは「変換係数ブロック」として呼ばれる）を発生させる。変換処理ユニット２０６は、残差ブロックにさまざまな変換を適用して、変換係数ブロックを形成してもよい。例えば、変換処理ユニット２０６は、離散コサイン変換（ＤＣＴ）、方向変換、カルーネンレーベ変換（ＫＬＴ）、または、概念的に類似する変換を、残差ブロックに適用してもよい。いくつかの例では、変換処理ユニット２０６は、残差ブロックに対して複数の変換、例えば、回転変換のような、１次変換と２次変換とを実行してもよい。いくつかの例では、変換処理ユニット２０６は、残差ブロックに変換を適用しない。
【０１５４】
［０１６３］
量子化ユニット２０８は、変換係数ブロック中の変換係数を量子化して、量子化された変換係数ブロックを生成させてもよい。量子化ユニット２０８は、現在ブロックに関係する量子化パラメータ（ＱＰ）値にしたがって、変換係数ブロックの変換係数を量子化してもよい。ビデオエンコーダ２００は（例えば、モード選択ユニット２０２を介して）、ＣＵに関係するＱＰ値を調節することによって、現在ブロックに関係する係数ブロックに適用される量子化の程度を調節してもよい。量子化は、情報の損失をもたらすかもしれず、したがって、量子化された変換係数は、変換処理ユニット２０６によって生成された元の変換係数よりも低い精度を有するかもしれない。
【０１５５】
［０１６４］
逆量子化ユニット２１０および逆変換処理ユニット２１２は、逆量子化および逆変換をそれぞれ量子化された変換係数ブロックに適用して、変換係数ブロックから残差ブロックを再構築してもよい。再構築ユニット２１４は、再構築された残差ブロックと、モード選択ユニット２０２によって発生させた予測ブロックとに基づいて、（潜在的なある程度のひずみを有するが）現在ブロックに対応する再構築されたブロックを生成させてもよい。例えば、再構築ユニット２１４は、再構築された残差ブロックのサンプルを、モード選択ユニット２０２によって発生させた予測ブロックからの対応するサンプルに追加して、再構築されたブロックを生成させてもよい。
【０１５６】
［０１６５］
フィルタユニット２１６は、再構築されたブロックに対して１つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット２１６は、デブロッキング動作を実行して、ＣＵのエッジに沿ったブロッキネスアーティファクトを低減させてもよい。いくつかの例では、フィルタユニット２１６の動作はスキップしてもよい。
【０１５７】
［０１６６］
ビデオエンコーダ２００は、再構築されたブロックをＤＰＢ２１８に記憶させる。例えば、フィルタユニット２１６の動作が必要とされない例では、再構築ユニット２１４は、再構築されたブロックをＤＰＢ２１８に記憶させてもよい。フィルタユニット２１６の動作が必要とされる例では、フィルタユニット２１６は、再構築されフィルタされたブロックをＤＰＢ２１８に記憶させてもよい。動き推定ユニット２２２および動き補償ユニット２２４は、再構築された（および、潜在的にフィルタ処理された）ブロックから形成された参照ピクチャーをＤＰＢ２１８から取り出して、後にエンコードされるピクチャーのブロックをインター予測してもよい。加えて、イントラ予測ユニット２２６は、現在ピクチャーのＤＰＢ２１８中の再構築されたブロックを使用して、現在ピクチャー中の他のブロックをイントラ予測してもよい。
【０１５８】
［０１６７］
一般的に、エントロピーエンコーディングユニット２２０は、ビデオエンコーダ２００の他の機能的なコンポーネントから受け取ったシンタックス要素をエントロピーエンコードしてもよい。例えば、エントロピーエンコーディングユニット２２０は、量子化ユニット２０８からの量子化された変換係数ブロックをエントロピーエンコードしてもよい。別の例として、エントロピーエンコーディングユニット２２０は、モード選択ユニット２０２からの予測シンタックス要素（例えば、インター予測に対する動き情報またはイントラ予測に対するイントラモード情報）をエントロピーエンコードしてもよい。エントロピーエンコーディングユニット２２０は、ビデオデータの別の例であるシンタックス要素に関して、１つ以上のエントロピーエンコーディング動作を実行して、エントロピーエンコードされたデータを発生させてもよい。例えば、エントロピーエンコーディングユニット２２０は、データに、コンテキスト適応可変長コーディング（ＣＡＶＬＣ）動作、ＣＡＢＡＣ動作、可変対可変（Ｖ２Ｖ）長コーディング動作、シンタックスベースのコンテキスト適応２値算術コードディング（ＳＢＡＣ）動作、確率区間区分化エントロピー（ＰＩＰＥ）コーディング動作、指数ゴロムエンコーディング動作、または、別のタイプのエントロピーエンコーディング動作を実行してもよい。いくつかの例では、エントロピーエンコーディングユニット２２０は、シンタックス要素がエントロピーエンコードされないバイパスモードで動作してもよい。
【０１５９】
［０１６８］
ビデオエンコーダ２００は、スライスまたはピクチャーのブロックを再構築するために必要とされるエントロピーエンコードされたシンタックス要素を含むビットストリームを出力してもよい。特に、エントロピーエンコーディングユニット２２０は、ビットストリームを出力してもよい。
【０１６０】
［０１６９］
上記で説明した動作は、ブロックに関して説明した。このような説明は、ルーマコーディングブロックおよび／またはクロマコーディングブロックに対する動作として理解すべきである。上記で説明したように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、ＣＵのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、ＰＵのルーマ成分およびクロマ成分である。
【０１６１】
［０１７０］
いくつかの例では、ルーマコーディングブロックに関して実行される動作は、クロマコーディングブロックに対して繰り返す必要はない。一例として、ルーマコーディングブロックに対する動きベクトル（ＭＶ）および参照ピクチャーを識別する動作は、クロマブロックに対するＭＶおよび参照ピクチャーを識別するために繰り返す必要はない。むしろ、ルーマコーディングブロックに対するＭＶをスケーリングして、クロマブロックに対するＭＶを決定してもよく、参照ピクチャーは同じであってもよい。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックに対して同じであってもよい。
【０１６２】
［０１７１］
ビデオエンコーダ２００は、ビデオデータを記憶するように構成されているメモリと、固定機能および／またはプログラマブル回路中で実現され、本開示で説明する例示的な技術を実行するように構成されている１つ以上の処理ユニットとを含む、ビデオデータをエンコードするように構成されているデバイスの例を表している。例えば、モード選択ユニット２０２は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報（例えば、ＡＭＶＰに対する動きベクトル情報、ならびに、マージモードに対する、動きベクトル情報および動きベクトルが指す参照ピクチャー）を履歴ベース候補リストに記憶させることによって、履歴ベース候補リストを構築してもよい。ビデオデータメモリ２３０は、履歴ベース候補リストを記憶してもよく、モード選択ユニット２０２は、ＤＰＢ２１８中に記憶されている再構築されたブロックの動き情報を履歴ベース候補リスト中に追加してもよい。いくつかの例では、モード選択ユニット２０２は、履歴ベース候補リストの余分な部分を取り除くことなく、履歴ベース候補リストを構築してもよい。
【０１６３】
［０１７２］
モード選択ユニット２０２は、履歴ベース候補リストの候補のサブセットを識別するように構成されていてもよい。モード選択ユニット２０２が履歴ベース候補リストの候補のサブセットを識別するさまざまな方法があってもよい。履歴ベース候補リストの候補のサブセットを識別するための第１の例示的な技術として、モード選択ユニット２０２は、最近再構築されたブロック（例えば、２つの最も最近再構築されたブロック）の動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別する。モード選択ユニット２０２は、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。例えば、第２のサブセットは、２つの最も最近再構築されたブロックの動き情報を除く、履歴ベース候補リスト中の残りの再構築されたブロックの動き情報を含んでいる。この例では、モード選択ユニット２０２は、履歴ベース候補リストのサブセットとして、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。
【０１６４】
［０１７３］
履歴ベース候補リストの候補のサブセットを識別するための第２の例示的な技術として、モード選択ユニット２０２は、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別する。一例として、モード選択ユニット２０２は、履歴ベース候補リスト中の４番目毎の候補を識別する。一例として、モード選択ユニット２０２は、履歴ベース候補リスト中の最も早く追加された候補から開始して、サブサンプリングする。
【０１６５】
［０１７４］
履歴ベース候補リストの候補のサブセットを識別するための第３の例示的な技術として、モード選択ユニット２０２は、第１の例示的な技術と第２の例示的な技術との組み合わせを実行してもよい。例えば、モード選択ユニット２０２は、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。履歴ベース候補リストの候補のサブセットを識別するために、モード選択ユニット２０２は、第２のサブセットをサブサンプリングする。一例として、モード選択ユニット２０２は、履歴候補リストをサブサンプリングするが、第１のサブセットを除外する。別の例として、モード選択ユニット２０２は、第２のサブセットのみをサブサンプリングする。
【０１６６】
［０１７５］
モード選択ユニット２０２は、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させてもよい。例えば、モード選択ユニット２０２は、候補の識別されたサブセットを初期のマージリストまたはＡＭＶＰリストに追加して、最終のマージまたはＡＭＶＰのリストを発生させてもよい。別の例として、候補の識別されたサブセットは、それ自体の独立したインデックス可能リストとして形成してもよい（例えば、マージまたはＡＭＶＰのリストに追加される必要がない）。
【０１６７】
［０１７６］
モード選択ユニット２０２は、現在ブロックを再構築するために動き情報を識別するための、発生させた候補リストに対するインデックスを示す情報をシグナリングしてもよい。例えば、ビデオデコーダ３００は、類似する動作を実行して、候補リストを発生させてもよい。ビデオデコーダ３００は、シグナリングされた情報からインデックスを決定し、インデックスによって識別される動き情報を決定してもよい。ビデオデコーダ３００は、動き情報を利用して、現在ブロックに対する動きベクトルを決定し、決定された動きベクトルを使用して、現在ブロックを再構築してもよい。例えば、ビデオデコーダ３００は、決定された動きベクトルに基づいて、予測ブロックを決定してもよい。
【０１６８】
［０１７７］
ビデオエンコーダ２００はまた、現在ブロックを再構築するのに使用される動き情報に基づいて識別される予測ブロックとの間の残差を示す情報をシグナリングしてもよい。ビデオデコーダ３００は、残差を予測ブロックに追加して、現在ブロックを再構築してもよい。
【０１６９】
［０１７８］
図８は、本開示の技術を利用してもよい例示的なビデオデコーダ３００を図示するブロック図である。図８は、説明の目的のために提供されており、本開示で広く実証され、説明されているような技術に限定されない。説明の目的で、ビデオデコーダ３００が、ＶＶＣおよびＨＥＶＣを含むＪＥＭの技術にしたがって説明されることを、本開示は説明する。しかしながら、本開示の技術は、他のビデオコーディング標準規格に構成されているビデオコーディングデバイスによって実行してもよい。
【０１７０】
［０１７９］
図８の例では、ビデオデコーダ３００は、コード化されたピクチャーバッファ（ＣＰＢ）メモリ３２０と、エントロピーデコーディングユニット３０２と、予測処理ユニット３０４と、逆量子化ユニット３０６と、逆変換処理ユニット３０８と、再構築ユニット３１０と、フィルタユニット３１２と、デコードされたピクチャーバッファ（ＤＰＢ）３１４とを含んでいる。予測処理ユニット３０４は、動き補償ユニット３１６とイントラ予測処理ユニット３１８とを含んでいる。予測処理ユニット３０４は、他の予測モードにしたがって予測を実行するための追加ユニットを含んでいてもよい。例として、予測処理ユニット３０４は、パレットユニット、（動き補償ユニット３１６の一部を形成していてもよい）イントラブロックコピーユニット、アフィンユニット、線形モデル（ＬＭ）ユニット、または、これらに類するものを含んでいてもよい。他の例では、ビデオデコーダ３００は、より多い、より少ない、または、異なる機能的コンポーネントを含んでいてもよい。
【０１７１】
［０１８０］
ＣＰＢメモリ３２０は、ビデオデコーダ３００のコンポーネントによってデコードされるべき、エンコードされたビデオビットストリームのようなビデオデータを記憶してもよい。ＣＰＢメモリ３２０に記憶されているビデオデータは、例えば、コンピュータ読取可能媒体１１０（図１）から取得されてもよい。ＣＰＢメモリ３２０は、エンコードされたビデオビットストリームからのエンコードされたビデオデータ（例えば、シンタックス要素）を記憶するＣＰＢを含んでいてもよい。また、ＣＰＢメモリ３２０は、ビデオデコーダ３００のさまざまなユニットからの出力を表す一時データのような、コード化されたピクチャーのシンタックス要素以外のビデオデータを記憶してもよい。ＤＰＢ３１４は、一般的に、デコードされたピクチャーを記憶し、エンコードされたビデオビットストリームの後続のデータまたはピクチャーをデコードするときに、ビデオデコーダ３００が、このデコードされたピクチャーを、参照ビデオデータとして出力および／または使用してもよい。ＣＰＢメモリ３２０およびＤＰＢ３１４は、同期ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（ＳＤＲＡＭ）を含むＤＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または、他のタイプのメモリデバイスのような、さまざまなメモリデバイスのいずれかによって形成されていてもよい。ＣＰＢメモリ３２０およびＤＰＢ３１４は、同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよい。さまざまな例では、ＣＰＢメモリ３２０は、ビデオデコーダ３００の他のコンポーネントとともにオンチップであるか、または、これらのコンポーネントに対してオフチップであってもよい。
【０１７２】
［０１８１］
追加的にまたは代替的に、いくつかの例では、ビデオデコーダ３００は、メモリ１２０（図１）からコード化されたビデオデータを取り出してもよい。すなわち、メモリ１２０は、ＣＰＢメモリ３２０を用いて上記で説明したようにデータを記憶していてもよい。同様に、ビデオデコーダ３００の機能の一部またはすべてが、ビデオデコーダ３００の処理回路によって実行されるソフトウェアで実現されるとき、メモリ１２０は、ビデオデコーダ３００によって実行されるべき命令を記憶していてもよい。
【０１７３】
［０１８２］
図８に示されているさまざまなユニットは、ビデオデコーダ３００によって実行される動作の理解を助けるために図示されている。ユニットは、固定機能回路、プログラマブル回路、または、これらの組み合わせとして実現してもよい。図７と同様に、固定機能回路は、特定の機能性を提供する回路を指し、実行できる動作に対して予め設定される。プログラマブル回路は、さまざまなタスクを実行するようにプログラムでき、実行できる動作において柔軟な機能性を提供できる回路を指している。例えば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって規定される方法でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行してもよい。固定機能回路は、（例えば、パラメータを受け取るまたはパラメータを出力するために）ソフトウェア命令を実行してもよいが、固定機能回路が実行する動作のタイプは一般的に不変である。いくつかの例では、ユニットのうちの１つ以上は、別個の回路ブロック（固定機能またはプログラマブル）であってもよく、いくつかの例では、１つ以上のユニットは集積回路であってもよい。
【０１７４】
［０１８３］
ビデオデコーダ３００は、ＡＬＵ、ＥＦＵ、デジタル回路、アナログ回路、および／または、プログラマブル回路から形成されているプログラマブルコアを含んでいてもよい。ビデオデコーダ３００の動作がプログラマブル回路上で実行するソフトウェアによって実行される例では、オンチップまたはオフチップメモリは、ビデオデコーダ３００が受け取って実行するソフトウェアの命令（例えば、オブジェクトコード）を記憶していてもよい。
【０１７５】
［０１８４］
エントロピーデコーディングユニット３０２は、ＣＰＢからエンコードされたビデオデータを受け取り、ビデオデータをエントロピーデコードして、シンタックス要素を再生させてもよい。予測処理ユニット３０４、逆量子化ユニット３０６、逆変換処理ユニット３０８、再構築ユニット３１０、および、フィルタユニット３１２は、ビットストリームから抽出されたシンタックス要素に基づいて、デコードされたビデオデータを発生させてもよい。
【０１７６】
［０１８５］
一般的に、ビデオデコーダ３００は、ブロック毎のベースでピクチャーを再構築する。ビデオデコーダ３００は、各ブロックに対して個別に再構築動作を実行してもよい（現在再構築されている、すなわち、デコードされているブロックは、「現在ブロック」として呼ばれることがある）。
【０１７７】
［０１８６］
エントロピーデコーディングユニット３０２は、量子化された変換係数ブロックの量子化された変換係数を規定するシンタックス要素とともに、量子化パラメータ（ＱＰ）および／または変換モード表示のような変換情報をエントロピーデコードしてもよい。逆量子化ユニット３０６は、量子化変換係数ブロックに関係するＱＰを使用して、量子化の程度を、そして、同様に逆量子化ユニット３０６が適用する逆量子化の程度を決定してもよい。逆量子化ユニット３０６は、例えば、ビット単位の左シフト演算を実行して、量子化変換係数を逆量子化してもよい。それによって、逆量子化ユニット３０６は、変換係数を含む変換係数ブロックを形成してもよい。
【０１７８】
［０１８７］
逆量子化ユニット３０６が係数ブロックを形成した後、逆変換処理ユニット３０８は、変換係数ブロックに１つ以上の逆変換を適用して、現在ブロックに関係する残差サンプルブロックを発生させてもよい。例えば、逆変換処理ユニット３０８は、係数ブロックに、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または、別の逆変換を適用してもよい。
【０１７９】
［０１８８］
さらに、予測処理ユニット３０４は、エントロピーデコーディングユニット３０２によってエントロピーデコードされた予測情報シンタックス要素にしたがって、予測ブロックを発生させる。例えば、現在ブロックがインター予測されることを予測情報シンタックス要素が示す場合、動き補償ユニット３１６は予測ブロックを発生させてもよい。このケースでは、予測情報シンタックス要素は、参照ブロックを取り出すべきＤＰＢ３１４中の参照ピクチャーとともに、現在ピクチャー中の現在ブロックのロケーションに対する、参照ピクチャー中の参照ブロックのロケーションを識別する動きベクトルを示してもよい。動き補償ユニット３１６は、一般的に、動き補償ユニット２２４（図７）に関して説明した方法と実質的に類似する方法で、インター予測プロセスを実行してもよい。
【０１８０】
［０１８９］
別の例として、現在ブロックがイントラ予測されることを予測情報シンタックス要素が示している場合、イントラ予測ユニット３１８は、予測情報シンタックス要素によって示されるイントラ予測モードにしたがって、予測ブロックを発生させてもよい。再度説明すると、イントラ予測ユニット３１８は、一般的に、イントラ予測ユニット２２６（図７）に関して説明した方法と実質的に類似する方法で、イントラ予測プロセスを実行してもよい。イントラ予測ユニット３１８は、現在ブロックに対する隣接するサンプルのデータをＤＰＢ３１４から取り出してもよい。
【０１８１】
［０１９０］
再構築ユニット３１０は、予測ブロックと残差ブロックとを使用して、現在ブロックを再構築してもよい。例えば、再構築ユニット３１０は、残差ブロックのサンプルを予測ブロックの対応するサンプルに追加して、現在ブロックを再構築してもよい。
【０１８２】
［０１９１］
フィルタユニット３１２は、再構築されたブロックに対して１つ以上のフィルタ動作を実行してもよい。例えば、フィルタユニット３１２は、デブロッキング動作を実行して、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減させてもよい。フィルタユニット３１２の動作は、必ずしもすべての例において実行される必要はない。
【０１８３】
［０１９２］
ビデオデコーダ３００は、再構築されたブロックをＤＰＢ３１４中に記憶させてもよい。上記で説明したように、ＤＰＢ３１４は、イントラ予測のための現在のピクチャーと、後続の動き補償のための以前にデコードされたピクチャーとのサンプルのような参照情報を、予測処理ユニット３０４に提供してもよい。さらに、ビデオデコーダ３００は、図１のディスプレイデバイス１１８のようなディスプレイデバイス上での後続の提示のために、ＤＰＢからデコードされたピクチャーを出力してもよい。
【０１８４】
［０１９３］
このようにして、ビデオデコーダ３００は、ビデオデータを記憶するように構成されているメモリと、固定機能および／またはプログラマブル回路中で実現され、本開示で説明する例示的な技術を実行するように構成されている１つ以上の処理ユニットとを含むビデオデコーディングデバイスの例を表している。例えば、予測処理ユニット３０４は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報（例えば、ＡＭＶＰに対する動きベクトル情報、ならびに、マージモードに対する、動きベクトル情報および動きベクトルが指す参照ピクチャー）を履歴ベース候補リストに記憶させることによって、履歴ベース候補リストを構築してもよい。ＤＰＢ３１４（または、場合によっては他の何らかのメモリ）は、履歴ベース候補リストを記憶してもよく、予測処理ユニット３０４は、ＤＰＢ３１４中に記憶されている再構築されたブロックの動き情報を履歴ベース候補リスト中に追加してもよい。いくつかの例では、予測処理ユニット３０４は、履歴ベース候補リストの余分な部分を取り除くことなく、履歴ベース候補リストを構築してもよい。
【０１８５】
［０１９４］
予測処理ユニット３０４は、履歴ベース候補リストの候補のサブセットを識別するように構成されていてもよい。予測処理ユニット３０４が履歴ベース候補リストの候補のサブセットを識別するさまざまな方法があってもよい。履歴ベース候補リストの候補のサブセットを識別するための第１の例示的な技術として、予測処理ユニット３０４は、最近再構築されたブロック（例えば、２つの最も最近再構築されたブロック）の動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別する。予測処理ユニット３０４は、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。例えば、第２のサブセットは、２つの最も最近再構築されたブロックの動き情報を除く、履歴ベース候補リスト中の残りの再構築されたブロックの動き情報を含んでいる。この例では、予測処理ユニット３０４は、履歴ベース候補リストのサブセットとして、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。
【０１８６】
［０１９５］
履歴ベース候補リストの候補のサブセットを識別するための第２の例示的な技術として、予測処理ユニット３０４は、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別する。一例として、予測処理ユニット３０４は、履歴ベース候補リスト中の４番目毎の候補を識別する。一例として、予測処理ユニット３０４は、履歴ベース候補リスト中の最も早く追加された候補から開始して、サブサンプリングする。
【０１８７】
［０１９６］
履歴ベース候補リストの候補のサブセットを識別するための第３の例示的な技術として、予測処理ユニット３０４は、第１の例示的な技術と第２の例示的な技術との組み合わせを実行してもよい。例えば、予測処理ユニット３０４は、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別する。履歴ベース候補リストの候補のサブセットを識別するために、予測処理ユニット３０４は、第２のサブセットをサブサンプリングする。一例として、予測処理ユニット３０４は、履歴候補リストをサブサンプリングするが、第１のサブセットを除外する。別の例として、予測処理ユニット３０４は、第２のサブセットのみをサブサンプリングする。
【０１８８】
［０１９７］
予測処理ユニット３０４は、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させてもよい。例えば、予測処理ユニット３０４は、候補の識別されたサブセットを初期のマージリストまたはＡＭＶＰリストに追加して、最終のマージまたはＡＭＶＰのリストを発生させてもよい。別の例として、候補の識別されたサブセットは、それ自体の独立したインデックス可能リストとして形成してもよい（例えば、マージまたはＡＭＶＰのリストに追加される必要がない）。
【０１８９】
［０１９８］
予測処理ユニット３０４は、発生させた候補リストに基づいて、現在ブロックを再構築してもよい。例えば、予測処理ユニット３０４は、発生させた候補リストに対するインデックスを示す情報を受け取り、発生させた候補リストに対するインデックスによって識別される、発生させた候補リスト中に記憶されている動き情報に基づいて、現在ブロックに対する動き情報を決定してもよい。例えば、マージモードでは、予測処理ユニット３０４は、現在ブロックに対する動きベクトルとして、発生させた候補リスト中に記憶されている動き情報の動きベクトルを設定してもよい。ＡＭＶＰモードでは、予測処理ユニット３０４は、動きベクトル差分（ＭＶＤ）を受け取り、発生させた候補リスト中に記憶されている動き情報の動きベクトルにＭＶＤを追加して、現在ブロックに対する動きベクトルを決定してもよい。予測処理ユニット３０４は、決定された動き情報に基づいて、予測ブロックを決定してもよい。
【０１９０】
［０１９９］
さらに、予測処理ユニット３０４は、予測ブロックと現在ブロックとの間の残差を示す情報を受け取ってもよい。再構築ユニット３１０は、残差と予測ブロックとに基づいて、現在ブロックを再構築してもよい（例えば、残差を予測ブロックに追加する）。
【０１９１】
［０２００］
図９は、ビデオデータをエンコードする例示的な方法を図示したフローチャートである。例示的な技術は、ビデオエンコーダ２００のようなプロセッサに関して説明する。例えば、メモリ（例えば、ビデオデータメモリ２３０またはＤＰＢ２１８）が、履歴ベース候補リストを記憶してもよい。
【０１９２】
［０２０１］
プロセッサ（例えば、ビデオエンコーダ２００）は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築するように構成されていてもよい（４００）。いくつかの例では、プロセッサは、履歴ベース候補リストの余分な部分を取り除くことなく、履歴ベース候補リストを構築してもよい。
【０１９３】
［０２０２］
プロセッサは、履歴ベース候補リストの候補のサブセットを識別してもよい（４０２）。一例として、プロセッサは、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。この例では、履歴ベース候補リストの候補のサブセットを識別するために、プロセッサは、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成されていてもよい。いくつかの例では、１つ以上の候補の第１のサブセットを識別するために、プロセッサは、２つの最も最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの２つの候補を識別するように構成されていてもよい。
【０１９４】
［０２０３］
別の例として、候補のサブセットを識別するために、プロセッサは、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別するように構成されていてもよい。例えば、履歴ベース候補リストをサブサンプリングするために、プロセッサは、履歴ベース候補リスト中で４番目毎の候補を識別するように構成されていてもよい。また、履歴ベース候補リストをサブサンプリングするために、プロセッサは、履歴ベース候補リスト中で最も早く追加された候補から開始して、サブサンプリングするように構成されていてもよい。
【０１９５】
［０２０４］
別の例として、プロセッサは、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。この例では、履歴ベース候補リストの候補のサブセットを識別するために、プロセッサは、第２のサブセットをサブサンプリングしてもよい。
【０１９６】
［０２０５］
プロセッサは、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させてもよい（４０４）。候補リストは、マージリストまたは高度動きベクトル予測（ＡＭＶＰ）リストのうちの１つであってもよい。例えば、プロセッサは、候補のサブセットを初期のマージまたはＡＭＶＰのリストに追加して、最終のマージまたはＡＭＶＰのリストを発生させてもよい。
【０１９７】
［０２０６］
プロセッサは、現在ブロックを再構築するのに使用される動き情報を識別するための、発生させた候補リストに対するインデックスを示す情報をシグナリングしてもよい（４０６）。例えば、発生させた候補リストに対するインデックスを用いて、ビデオデコーダ３００は、現在ブロックに対する動き情報を決定してもよい。現在ブロックに対する動き情報に基づいて、ビデオデコーダ３００は予測ブロックを決定してもよい。プロセッサはまた、現在ブロックを再構築するのに使用される動き情報に基づいて識別される予測ブロックとの間の残差を示す情報をシグナリングしてもよい。ビデオデコーダ３００は、残差を予測ブロックに追加して、現在ブロックを再構築してもよい。
【０１９８】
［０２０７］
図１０は、ビデオデータをデコードする例示的な方法を図示するフローチャートである。例示的な技術は、プロセッサ（例えば、ビデオデコーダ３００）に関して説明する。例えば、メモリ（例えば、ＤＰＢ３１４または他の何らかのメモリ）が、履歴ベース候補リストを記憶していてもよい。
【０１９９】
［０２０８］
プロセッサ（例えば、ビデオデコーダ３００）は、履歴ベース候補リストの候補として、再構築されたブロックの動き情報を履歴ベース候補リスト中に記憶させることにより、履歴ベース候補リストを構築するように構成されていてもよい（５００）。いくつかの例では、プロセッサは、履歴ベース候補リストの余分な部分を取り除くことなく、履歴ベース候補リストを構築してもよい。
【０２００】
［０２０９］
プロセッサは、履歴ベース候補リストの候補のサブセットを識別してもよい（５０２）。一例として、プロセッサは、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。この例では、履歴ベース候補リストの候補のサブセットを識別するために、プロセッサは、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別するように構成されていてもよい。いくつかの例では、１つ以上の候補の第１のサブセットを識別するために、プロセッサは、２つの最も最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの２つの候補を識別するように構成されていてもよい。
【０２０１】
［０２１０］
別の例として、候補のサブセットを識別するために、プロセッサは、履歴ベース候補リストをサブサンプリングして、候補のサブセットを識別するように構成されていてもよい。例えば、履歴ベース候補リストをサブサンプリングするために、プロセッサは、履歴ベース候補リスト中で４番目毎の候補を識別するように構成されていてもよい。また、履歴ベース候補リストをサブサンプリングするために、プロセッサは、履歴ベース候補リスト中で最も早く追加された候補から開始して、サブサンプリングするように構成されていてもよい。
【０２０２】
［０２１１］
別の例として、プロセッサは、最近再構築されたブロックの動き情報に対応する、履歴ベース候補リストの１つ以上の候補の第１のサブセットを識別し、第１のサブセットを除外する、履歴ベース候補リストの１つ以上の候補の第２のサブセットを識別してもよい。この例では、履歴ベース候補リストの候補のサブセットを識別するために、プロセッサは、第２のサブセットをサブサンプリングしてもよい。
【０２０３】
［０２１２］
プロセッサは、履歴ベース候補リストの候補の識別されたサブセットに基づいて、候補リストを発生させてもよい（５０４）。候補リストは、マージリストまたは高度動きベクトル予測（ＡＭＶＰ）リストのうちの１つであってもよい。例えば、プロセッサは、候補のサブセットを初期のマージまたはＡＭＶＰのリストに追加して、最終のマージまたはＡＭＶＰのリストを発生させてもよい。
【０２０４】
［０２１３］
プロセッサは、発生させた候補リストに基づいて、現在ブロックを再構築してもよい（５０６）。例えば、プロセッサは、発生させた候補リストに対するインデックスを示す情報を受け取り、発生させた候補リストに対するインデックスによって識別される、発生させた候補リストに記憶されている動き情報に基づいて、現在ブロックに対する動き情報を決定してもよい。プロセッサは、決定された動き情報に基づいて、予測ブロックを決定し、予測ブロックと現在ブロックとの間の残差を示す情報を受け取り、残差と予測ブロックとに基づいて、現在ブロックを再構築してもよい。
【０２０５】
［０２１４］
例に依存して、ここで説明した技術のうちのいずれかのある動作またはイベントは、異なるシーケンスで実行でき、追加してもよく、マージしてもよく、または、完全に省略してもよい（例えば、説明した動作またはイベントのすべてが本技術の実施のために必要であるとは限らない）ことを認識されたい。さらに、ある例では、行為またはイベントは、シーケンシャルによりもむしろ、例えば、マルチスレッド処理、割り込み処理、または、複数のプロセッサを通して、同時に実行してもよい。
【０２０６】
［０２１５］
１つ以上の例において、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせで実現してもよい。ソフトウェアで実現される場合には、機能は、１つ以上の命令またはコードとしてコンピュータ読取可能媒体上に記憶されていてもよく、あるいは、１つ以上の命令またはコードとしてコンピュータ読取可能媒体上で送信されてもよく、ハードウェアベースの処理ユニットによって実行してもよい。コンピュータ読取可能媒体はまた、例えば、通信プロトコルにしたがって、コンピュータプログラムの１つの場所から別の場所への転送を容易にする何らかの媒体を含む通信媒体、または、データ記憶媒体のような有形の媒体に対応するコンピュータ読取可能記憶媒体を含んでいてもよい。このように、コンピュータ読取可能媒体は、一般的に、（１）有形コンピュータ読取可能記憶媒体、または、（２）信号または搬送波のような通信媒体に対応していてもよい。データ記憶媒体は、本開示で説明した技術を実現するための命令、コード、および／または、データ構造を取り出すために、１つ以上のコンピュータまたは１つ以上のプロセッサによってアクセスすることができる任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ読取可能媒体を含んでいてもよい。
【０２０７】
［０２１６］
限定ではなく例として、このようなコンピュータ読取可能記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光学ディスク記憶媒体、磁気ディスク記憶媒体または他の磁気記憶デバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態で望ましいプログラムコードを記憶するために使用され、コンピュータによってアクセスすることができる他の何らかの媒体を含むことができる。また、任意の接続は、コンピュータ読取可能媒体と適切に呼ばれる。例えば、命令が、ウェブサイトから、サーバから、あるいは、同軸ケーブル、光ファイバケーブル、撚り対、デジタル加入者線（ＤＳＬ）、または、赤外線、無線、マイクロ波のようなワイヤレステクノロジーを使用している他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバケーブル、撚り対、ＤＳＬ、または、赤外線、無線およびマイクロ波のようなワイヤレステクノロジーは、媒体の定義に含まれる。しかしながら、コンピュータ読取可能記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または、他の一時的な媒体を含まないが、代わりに、非一時的な、有形の記憶媒体に向けられていることを理解すべきである。ここで使用するようなディスク（ｄｉｓｋおよびｄｉｓｃ）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル汎用ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、および、ブルーレイ（登録商標）ディスクを含むが、通常、ディスク（ｄｉｓｋ）はデータを磁気的に再生する一方で、ディスク（ｄｉｓｃ）はデータをレーザにより光学的に再生する。上記の組み合わせも、コンピュータ読取可能媒体の範囲内に含むべきである。
【０２０８】
［０２１７］
複数の命令は、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、または、他の同等な集積またはディスクリート論理回路のような１つ以上のプロセッサによって実行してもよい。したがって、ここで使用されるように、用語「プロセッサ」は、前述の構造、または、ここで説明した技術のインプリメンテーションに適した他の何らかの構造のいずれかを指していてもよい。加えて、いくつかの態様では、ここで説明した機能性は、エンコードおよびデコードするように構成されている専用のハードウェアおよび／またはソフトウェアモジュール内に提供してもよく、あるいは、組み合わされたコーデック中に組み込んでもよい。また、技術は、１つ以上の回路または論理エレメントにおいて、完全に実現することができる。
【０２０９】
［０２１８］
本開示の技術は、ワイヤレスハンドセット、集積回路（ＩＣ）またはＩＣのセット（例えば、チップセット）を含む、幅広い種類のデバイスまたは装置において実施してもよい。さまざまなコンポーネント、モジュール、または、ユニットは、開示した技術を実行するように構成されているデバイスの機能的な態様を強調するためにここ説明されているが、それらは、異なるハードウェアユニットによる実現を必ずしも要求するわけではない。むしろ、上記で説明したように、さまざまなユニットは、コーデックハードウェアユニットにおいて組み合わされるか、または、適切なソフトウェアおよび／またはファームウェアとともに、上記で説明したような１つ以上のプロセッサを含む、相互動作可能ハードウェアユニットの集合によって提供されてもよい。
【０２１０】
［０２１９］
さまざまな例を説明してきた。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
【図１】
2021534627.tif 000003
【図２Ａ】
2021534627.tif 000004
【図２Ｂ】
2021534627.tif 000005
【図３Ａ】
2021534627.tif 000006
【図３Ｂ】
2021534627.tif 000007
【図４】
2021534627.tif 000008
【図５】
2021534627.tif 000009
【図６】
2021534627.tif 000010
【図７】
2021534627.tif 000011
【図８】
2021534627.tif 000012
【図９】
2021534627.tif 000013
【図１０】
2021534627.tif 000014
【国際調査報告】
2021534627.tif 000015
2021534627.tif 000016
2021534627.tif 000017