(57)【要約】  スクリーンコンテンツビデオデータの動きベクトル差分(MVD)コーディングのための方法が開示される。一態様では、本方法は、予測される動きベクトルと現在の動きベクトルとの間のMVDを特定するステップと、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成するステップとを含む。本方法は、MVDの絶対値がしきい値よりも大きいかどうかを判定するステップと、MVDの絶対値がしきい値よりも大きいことに応答して1よりも大きい次数を有する指数ゴロムコードを介してn個のビンのサブセットを符号化するステップとをさらに含む。
2017525262.tif 000002
【特許請求の範囲】
【請求項１】
スクリーンコンテンツを符号化するためのビデオエンコーダによって動作可能な方法であって、
予測される動きベクトルと現在の動きベクトルとの間の動きベクトル(MVD)差分を特定するステップと、
前記MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成するステップと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを符号化するステップと、
前記MVDの絶対値がしきい値よりも大きいかどうかを判定するステップと、
前記MVDの前記絶対値が前記しきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記n個のビンのサブセットを符号化するステップと
を備える、方法。
【請求項２】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項1に記載の方法。
【請求項３】
前記MVDが水平成分MVDであるか、または垂直成分MVDであるかに基づいて前記少なくとも1つのビンの各々のコンテキストを特定するステップをさらに備える、請求項2に記載の方法。
【請求項４】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項1に記載の方法。
【請求項５】
前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示す、請求項4に記載の方法。
【請求項６】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記方法は、前記MVDの前記絶対値が前記しきい値以下であることに応答して固定長コードを使用して前記3番目から(n-1)番目のビンを符号化するステップをさらに備え、前記固定長コードの長さは前記しきい値に等しい、請求項4に記載の方法。
【請求項７】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記3番目から(n-1)番目のビンを符号化する前記ステップは、バイパスモードにおいて前記3番目から(n-1)番目のビンを符号化することを備える、請求項6に記載の方法。
【請求項８】
バイパスモードにおいて前記n個のビンのうちの、前記MVDの符号を示すn番目のビンを符号化するステップをさらに備える、請求項1に記載の方法。
【請求項９】
MVDが、ブロックベクトル差分(BVD)と同じ方法を介して2値化され符号化される、請求項1に記載の方法。
【請求項１０】
前記MVDは、複数の方向性構成要素を備え、前記方法は、前記方向性構成要素を2値化することを介して前記方向性構成要素にそれぞれ対応する複数の方向性構成要素バイナリストリングを生成するステップをさらに備え、前記方向性構成要素バイナリストリングの対応する序数ビンは、同じコンテキストを共有する、請求項1に記載の方法。
【請求項１１】
前記少なくとも1つのビンは、前記n個のビンの前記サブセットが前記第2のエントロピーコーディング動作または固定長コードによって符号化されるかどうかを示す、請求項1に記載の方法。
【請求項１２】
前記MVDの前記絶対値が前記しきい値以下であることに応答して短縮指数ゴロムコーディングを介して前記サブセットの少なくとも一部を符号化するステップをさらに備える、請求項1に記載の方法。
【請求項１３】
スクリーンコンテンツを復号するためのビデオデコーダによって動作可能な方法であって、
n個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取るステップと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを復号するステップであって、前記少なくとも1つのビンは、予測される動きベクトルと現在の動きベクトルとの間の差分である、動きベクトル差分(MVD)の絶対値がしきい値よりも大きいかどうかを示す、ステップと、
前記MVDの前記絶対値が前記しきい値よりも大きいことを示す前記少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記n個のビンのサブセットを復号するステップと、
前記復号されたビンに少なくとも部分的に基づいて前記MVDを生成するステップと
を備える、方法。
【請求項１４】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項13に記載の方法。
【請求項１５】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示し、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項13に記載の方法。
【請求項１６】
前記MVDの前記絶対値が前記しきい値以下であることを示す前記少なくとも1つのビンに応答して固定長コードを使用して前記n個のビンの前記サブセットを復号するステップをさらに備え、前記固定長コードの長さは前記しきい値に等しい、請求項13に記載の方法。
【請求項１７】
前記MVDが、ブロックベクトル差分(BVD)と同じ方法を介して復号される、請求項13に記載の方法。
【請求項１８】
スクリーンコンテンツを符号化するためのデバイスであって、
前記スクリーンコンテンツの少なくとも一部を記憶するように構成されたメモリと、
予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定し、
前記MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成し、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを符号化し、
前記MVDの絶対値がしきい値よりも大きいかどうかを判定し、
前記MVDの前記絶対値が前記しきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記n個のビンのサブセットを符号化する
ように構成された、前記メモリと通信する少なくとも1つのプロセッサと
を備える、デバイス。
【請求項１９】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項18に記載のデバイス。
【請求項２０】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項18に記載のデバイス。
【請求項２１】
前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示す、請求項20に記載のデバイス。
【請求項２２】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記少なくとも1つのプロセッサは、前記MVDの前記絶対値が前記しきい値以下であることに応答して固定長コードを使用して前記3番目から(n-1)番目のビンを符号化するようにさらに構成され、前記固定長コードの長さは前記しきい値に等しい、請求項20に記載のデバイス。
【請求項２３】
前記少なくとも1つのプロセッサは、ブロックベクトル差分(BVD)と同じ方法を介して前記MVDを2値化し符号化するようにさらに構成される、請求項18に記載のデバイス。
【請求項２４】
前記少なくとも1つのビンは、前記n個のビンの前記サブセットが前記第2のエントロピーコーディング動作または固定長コードによって符号化されるかどうかを示す、請求項18に記載のデバイス。
【請求項２５】
前記少なくとも1つのプロセッサは、前記MVDの前記絶対値が前記しきい値以下であることに応答して短縮指数ゴロムコーディングを介して前記サブセットの少なくとも一部を符号化することを介して前記n個のビンの前記サブセットを符号化するようにさらに構成される、請求項18に記載のデバイス。
【請求項２６】
スクリーンコンテンツを復号するためのデバイスであって、
前記スクリーンコンテンツの少なくとも一部を記憶するように構成されたメモリと、
n個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取ることと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを復号することであって、前記少なくとも1つのビンは、予測される動きベクトルと現在の動きベクトルとの間の差分である、動きベクトル差分(MVD)の絶対値がしきい値よりも大きいかどうかを示す、ことと、
前記MVDの前記絶対値が前記しきい値よりも大きいことを示す前記少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記n個のビンのサブセットを復号することと、
前記復号されたビンに少なくとも部分的に基づいて前記MVDを生成することと
を行うように構成された、前記メモリと通信する少なくとも1つのプロセッサと
を備える、デバイス。
【請求項２７】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項26に記載のデバイス。
【請求項２８】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示し、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項26に記載のデバイス。
【請求項２９】
前記少なくとも1つのプロセッサは、前記MVDの前記絶対値が前記しきい値以下であることを示す前記少なくとも1つのビンに応答して固定長コードを使用して前記n個のビンの前記サブセットを復号するようにさらに構成され、前記固定長コードの長さは前記しきい値に等しい、請求項26に記載のデバイス。
【請求項３０】
前記少なくとも1つのプロセッサは、ブロックベクトル差分(BVD)と同じ方法を介して前記MVDを復号するようにさらに構成される、請求項26に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオコーディングおよび圧縮の分野に関し、具体的には、スクリーンコンテンツビデオデータの動きベクトル差分(MVD)およびイントラブロックコピーベクトル差分(BVD)コーディングのための技法に関する。
【背景技術】
【０００２】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップコンピュータまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲にわたるデバイスに組み込まれ得る。デジタルビデオデバイスは、Moving Picture Experts Group-2(MPEG-2)、MPEG-4、International Telegraph Union-Telecommunication Standardization Sector(ITU-T) H.263、ITU-T H.264/MPEG-4, Part 10, Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)規格によって定義された規格、およびそのような規格の拡張に記載されているビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および/または記憶することができる。
【０００３】
動きベクトル差分(MVD)の符号化は、現在の動きベクトルのコーディングよりもコーディング効率を改善し得る。たとえば、予測される動きベクトルは、事前に計算された動きベクトルに基づいて生成されてよく、現在の動きベクトルと予測される動きベクトルとの間の差分、すなわちMVDがコーディングされてよい。同様に、イントラブロックコピーブロックベクトル差分(BVD)のコーディングは、現在のイントラブロックコピーブロックベクトルのコーディングよりもコーディング効率を改善し得る。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】文書JCTVC-L1003、Brossら、「High Efficiency Video Coding (HEVC) Text Specification Draft 10」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜2013年1月23日
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示のシステム、方法、およびデバイスは、いくつかの革新的態様をそれぞれ有し、それらの態様のいずれの1つも、本明細書で開示される望ましい属性を単独では担わない。
【０００６】
一態様では、スクリーンコンテンツを符号化するためのビデオエンコーダによって動作可能な方法は、ビデオエンコーダの動き推定ユニットを介して、スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定するステップと、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成するステップと、ビデオエンコーダのエントロピー符号化ユニットを介して、第1のエントロピーコーディング動作によってn個のビンのうちの少なくとも1つのビンを符号化するステップと、MVDの絶対値がしきい値よりも大きいかどうかを判定するステップと、エントロピー符号化ユニットを介して、MVDの絶対値がしきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってスクリーンコンテンツと関連付けられたn個のビンのサブセットを符号化するステップとを備える。
【０００７】
別の態様では、スクリーンコンテンツを復号するためのビデオデコーダによって動作可能な方法は、ビデオデコーダのエントロピー復号ユニットを介して、スクリーンコンテンツと関連付けられたn個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取るステップと、エントロピー復号ユニットを介して、第1のエントロピーコーディング動作によってn個のビンのうちの、予測される動きベクトルと現在の動きベクトルとの間の差分であるMVDの絶対値がしきい値よりも大きいかどうかを示す、少なくとも1つのビンを復号するステップと、エントロピー復号ユニットを介して、MVDの絶対値がしきい値よりも大きいことを示す少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってn個のビンのサブセットを復号するステップと、ビデオデコーダの予測処理ユニットを介して、復号されたビンに少なくとも部分的に基づいてスクリーンコンテンツのMVDを生成するステップとを備える。
【０００８】
別の態様では、スクリーンコンテンツを符号化するためのデバイスは、スクリーンコンテンツを記憶するように構成されたメモリと、スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間のMVDを特定し、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成し、第1のエントロピーコーディング動作によってn個のビンのうちの少なくとも1つのビンを符号化し、MVDの絶対値がしきい値よりも大きいかどうかを判定し、MVDの絶対値がしきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってスクリーンコンテンツと関連付けられたn個のビンのサブセットを符号化するように構成された、メモリと通信するプロセッサとを備える。
【０００９】
また別の態様では、メモリは、スクリーンコンテンツを記憶するように構成され、プロセッサは、メモリと通信し、スクリーンコンテンツと関連付けられたn個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取り、第1のエントロピーコーディング動作によってn個のビンのうちの、予測される動きベクトルと現在の動きベクトルとの間の差分であるMVDの絶対値がしきい値よりも大きいかどうかを示す、少なくとも1つのビンを復号し、MVDの絶対値がしきい値よりも大きいことを示す少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってn個のビンのサブセットを復号し、復号されたビンに少なくとも部分的に基づいてスクリーンコンテンツのMVDを生成するように構成される。
【図面の簡単な説明】
【００１０】
【図１Ａ】本開示において説明される態様による技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図１Ｂ】本開示において説明される態様による技法を実行し得る別の例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】本開示において説明される態様による技法を実装し得るビデオエンコーダの例を示すブロック図である。
【図３】本開示において説明される態様による技法を実装し得るビデオデコーダの例を示すブロック図である。
【図４】本開示において説明される態様による動きベクトル差分コーディングのための方法を示すブロック図である。
【図５】本開示において説明される態様に従って生成されたバイナリストリングを示す図である。
【図６】本開示の態様による動きベクトル差分コーディングのための方法を示すフローチャートである。
【図７】本開示の態様による動きベクトル差分コーディングのための方法を示すフローチャートである。
【発明を実施するための形態】
【００１１】
一般に、本開示は、スクリーンコンテンツビデオデータの動きベクトル差分(MVD)ビデオコーディングのための方法に関する。カメラでキャプチャされたビデオデータなどの多くのタイプのビデオデータでは、現在の動きベクトルが、予測される動きベクトルと高い相関性がある確率が高い。したがって、これらのタイプのビデオデータのMVDは、一般に、小さい値を有する。したがって、HEVCなどのいくつかのビデオコーディング規格では、MVDは、MVDの小さい平均値を利用するように、次数1を有する指数ゴロムコーディングを使用してコーディングしていることがある。しかしながら、コンピュータ生成されたビデオまたはレンダリングされたビデオなどのスクリーンコンテンツの場合、予測される動きベクトルは、カメラでキャプチャされたビデオの場合ほど正確でないことがあり、より大きいMVDにつながる。指数ゴロムコーディングに必要なビット数がMVDのサイズとともに指数関数的に増加するので、従来のコーディング方法は、スクリーンコンテンツをコーディングする際にコーディングの非効率をもたらすことがある。
【００１２】
加えて、いくつかのコーディングの実装形態では、MVDおよびイントラブロックコピーブロックベクトル差分(BVD)のコーディングは、様々な2値化方法を利用し得る。このことは、従来は、MVDとBVDとの間の様々な統計的特性によって動機付けられてきた。しかしながら、MVDとBVDの両方のコーディングに適用される、より統合されたコーディング技法にとっての利益が存在することがある。
【００１３】
本開示のいくつかの実施形態は、スクリーンコンテンツのMVDおよびBVDをコーディングする際に上記で示した非効率に対処する。たとえば、本開示のいくつかの態様は、より高次の指数ゴロムコーディングを使用した、スクリーンコンテンツのコーディングに関する。このことは、スクリーンコンテンツのMVDのコーディング効率を改善することができる。
【００１４】
下の説明では、ある種の実施形態に関するH.264/Advanced Video Coding(AVC)技法が説明され、HEVC規格および関連する技法も論じられる。いくつかの実施形態が、本明細書においてHEVC規格および/またはH.264規格の文脈で説明されるが、当業者は、本明細書で開示されるシステムおよび方法が、任意の適切なビデオコーディング規格に適用可能であり得ることを了解するであろう。たとえば、本明細書で開示される実施形態は、以下の規格、すなわち、International Telecommunication Union(ITU) Telecommunication Standardization Sector(ITU-T) H.261、International Organization for Standardization/International Electrotechnical Commission(ISO/IEC) MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、および範囲拡張を含むITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られている)のうちの1つまたは複数に適用可能であり得る。
【００１５】
HEVCは一般に、多くの点で、前のビデオコーディング規格のフレームワークに従う。HEVCにおける予測のユニットは、いくつかの前のビデオコーディング規格における予測のユニット(たとえば、マクロブロック)とは異なる。実際に、マクロブロックの概念は、いくつかの前のビデオコーディング規格において理解されているように、HEVCには存在しない。マクロブロックは、考えられる利益の中でも、高い柔軟性を与え得る、四分木方式に基づく階層構造と置き換えられる。たとえば、HEVC方式では、3つのタイプのブロック、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)が定義される。CUは、領域分割の基本単位を指し得る。CUはマクロブロックの概念に類似すると見なされ得るが、HEVCは、CUの最大サイズを制限せず、コンテンツ適応性を改善するために4つの等しいサイズのCUへの再帰的分割を可能にし得る。PUは、インター/イントラ予測の基本単位と見なされてよく、単一のPUは、不規則な画像パターンを効率的にコーディングするために、複数の任意の形状区分を含み得る。TUは、変換の基本単位と見なされてよい。TUは、PUとは無関係に定義され得るが、TUのサイズは、TUが属するCUのサイズに制限され得る。3つの異なる概念へのブロック構造のこの分離は、各ユニットがユニットのそれぞれの役割に従って最適化されることを可能にでき、それによりコーディング効率の改善をもたらし得る。
【００１６】
ビデオコーディング規格
ビデオ画像、TV画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像のような、デジタル画像は、水平方向の線および垂直方向の線で構成されたピクセルまたはサンプルを含み得る。単一の画像中のピクセルの数は、通常、数万である。各ピクセルは、通常、ルミナンス情報とクロミナンス情報とを含む。圧縮がなければ、画像エンコーダから画像デコーダに搬送されるべき大量の情報が、リアルタイム画像送信を実行不可能にするであろう。送信されるべき情報の量を減らすために、JPEG、MPEGおよびH.263規格のような、いくつかの異なる圧縮方法が開発された。
【００１７】
ビデオコーディング規格は、ITU-T H.261と、ISO/IEC MPEG-1 Visualと、ITU-T H.262またはISO/IEC MPEG-2 Visualと、ITU-T H.263と、ISO/IEC MPEG-4 Visualと、(ISO/IEC MPEG-4 AVCとしても知られる)ITU-T H.264と、その範囲拡張を含むHEVCとを含む。
【００１８】
さらに、ビデオコーディング規格、すなわち、HEVCが、ITU-T Video Coding Experts Group(VCEG)とISO/IEC MPEGのJoint Collaboration Team on Video Coding(JCT-VC)によって開発された。HEVCドラフト10の完全な引用は、文書JCTVC-L1003、Brossら、「High Efficiency Video Coding (HEVC) Text Specification Draft 10」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding (JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜2013年1月23日である。HEVCの範囲拡張も、JCT-VCによって開発されている。
【００１９】
ビデオコーディングシステム
添付の図面を参照して、新規のシステム、装置、および方法の様々な態様が、以下でより十分に説明される。しかしながら、本開示は、多くの異なる形態で具現化されてよく、本開示全体にわたって提示される特定の構造または機能に限定されるものと解釈されるべきではない。そうではなく、これらの態様は、本開示が十分なものであり、完全であるように、また本開示の範囲を当業者に十分伝えるように提供される。本明細書の教示に基づいて、本開示の範囲は、本開示の任意の他の態様と無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示される新規のシステム、装置、および方法のいかなる態様をも包含するものであることを、当業者は了解されたい。たとえば、本明細書に記載される任意の数の態様を使用して装置が実装されてよく、または方法が実践されてよい。さらに、本開示の範囲は、本明細書に記載される本開示の様々な態様に加えて、またはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実践されるような装置または方法を包含するものとする。本明細書で開示される任意の態様は、特許請求の範囲の1つまたは複数の要素により具現化され得ることを理解されたい。
【００２０】
特定の態様が本明細書で説明されるが、これらの態様の多数の変形および置換が、本開示の範囲に入る。好適な態様のいくつかの利益および利点に言及するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるものであり、そのうちのいくつかが例として図および好ましい態様についての以下の説明において示される。発明を実施するための形態および各図面は、限定的ではなく、本開示の例示にすぎず、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００２１】
添付の図面は例を示す。添付の図面中の参照番号によって示される要素は、以下の説明における同様の参照番号によって示される要素に対応する。本開示では、序数の単語(たとえば、「第1の」、「第2の」、「第3の」など)で始まる名前を有する要素は、必ずしもそれらの要素が特定の順序を有することを示唆するとは限らない。むしろ、そのような序数の単語は、同じまたは同様のタイプの、異なる要素を指すために使用されるにすぎない。
【００２２】
図1Aは、本開示で説明される態様による技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用され説明される場合、「ビデオコーダ」または「コーダ」という用語は、総称的にビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化とビデオ復号とを総称的に指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本出願で説明される態様は、トランスコーダ(たとえば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス)およびミドルボックス(たとえば、ビットストリームを修正し、変換し、かつ/または場合によっては操作することができるデバイス)のような、他の関連するデバイスに拡張され得る。
【００２３】
図1Aに示されるように、ビデオコーディングシステム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。図1Aの例では、ソースデバイス12および宛先デバイス14は、別個のデバイスを構成する。しかしながら、ソースデバイス12および宛先デバイス14は、図1Bの例に示されるように、同じデバイス上にあるかまたはその一部であり得ることに留意されたい。
【００２４】
もう一度図1Aを参照すると、ソースデバイス12および宛先デバイス14は、それぞれ、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。様々な実施形態では、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
【００２５】
宛先デバイス14は、復号されるべき符号化されたビデオデータを、リンク16を介して受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。図1Aの例では、リンク16は、ソースデバイス12が符号化されたビデオデータをリアルタイムで宛先デバイス14に送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、高周波(RF)スペクトルまたは1つまたは複数の物理伝送線路のような、任意のワイヤレスまたは有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。
【００２６】
代替的に、符号化されたデータは出力インターフェース22から(任意選択で存在する)記憶デバイス31に出力され得る。同様に、符号化されたデータは、たとえば、宛先デバイス14の入力インターフェース28によって、記憶デバイス31からアクセスされ得る。記憶デバイス31は、ハードドライブ、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、種々の分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイス31は、ソースデバイス12によって生成された符号化されたビデオを保持し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、記憶デバイス31からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適しているワイヤレスチャネル(たとえば、ワイヤレスローカルエリアネットワーク(WLAN)接続)、有線接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。記憶デバイス31からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００２７】
本開示の技法は、ワイヤレスの適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信(たとえば、ハイパーテキスト転送プロトコル(HTTP)上での動的適応ストリーミングなど)、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例のような、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話のような適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００２８】
図1Aの例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、またはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、図1Bの例に示されているように、いわゆる「カメラ電話」または「ビデオ電話」を形成し得る。しかしながら、本開示で説明される技法は一般に、ビデオコーディングに適用可能であってよく、ワイヤレスおよび/または有線の適用例に適用され得る。
【００２９】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に送信され得る。符号化されたビデオデータは、さらに(または代替として)、復号および/または再生のための、宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス31上に記憶され得る。図1Aおよび図1Bに示されるビデオエンコーダ20は、図2に示されるビデオエンコーダ20、または本明細書で説明される任意の他のビデオエンコーダを備え得る。
【００３０】
図1Aの例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの場合、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して、および/または記憶デバイス31から、符号化されたビデオデータを受信し得る。リンク16を介して通信され、または記憶デバイス31上に与えられた符号化されたビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダが使用するためのビデオエンコーダ20によって生成される種々のシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、またはファイルサーバに記憶される、符号化されたビデオデータとともに含まれ得る。図1Aおよび図1Bに示されるビデオデコーダ30は、図3に示されるビデオデコーダ30、または本明細書で説明される任意の他のビデオデコーダを備え得る。
【００３１】
ディスプレイデバイス32は、宛先デバイス14と一体化されてよく、または宛先デバイス14の外部にあってよい。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含んでよく、外部ディスプレイデバイスとインターフェースするように構成されてもよい。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、種々のディスプレイデバイスのいずれかを備え得る。
【００３２】
関連する態様では、図1Bは例示的なビデオコーディングシステム10'を示し、ソースデバイス12および宛先デバイス14はデバイス11上にあるかまたはその一部である。デバイス11は、「スマート」フォンなどのような電話ハンドセットであり得る。デバイス11は、ソースデバイス12および宛先デバイス14と動作可能に通信している(任意選択で存在する)コントローラ/プロセッサデバイス13を含み得る。それ以外の点では、図1Bのビデオコーディングシステム10'およびそのコンポーネントは、図1Aのビデオコーディングシステム10およびそのコンポーネントと同様である。
【００３３】
ビデオエンコーダ20およびビデオデコーダ30は、HEVCなどのビデオ圧縮規格に従って動作することができ、HEVC Test Model(HM)に適合し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG-4、Part 10、AVCと呼ばれるITU-T H.264規格のような、他のプロプライエタリ規格または業界規格、またはそのような規格の拡張に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例には、MPEG-2およびITU-T H.263がある。
【００３４】
図1Aおよび図1Bの例には示されていないが、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに適合し得る。
【００３５】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダの一部として統合されてよい。
【００３６】
ビデオコーディング処理
上で簡単に述べられたように、ビデオエンコーダ20はビデオデータを符号化する。ビデオデータは、1つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャはビデオ「フレーム」と呼ばれることがある。ビデオエンコーダ20がビデオデータを符号化するとき、ビデオエンコーダ20はビットストリームを生成し得る。ビットストリームは、ビデオデータのコーディングされた表現を形成する、ビットのシーケンスを含み得る。ビットストリームは、コーディングされたピクチャと関連するデータとを含み得る。コーディングされたピクチャとは、ピクチャのコーディングされた表現である。
【００３７】
ビットストリームを生成するために、ビデオエンコーダ20は、ビデオデータ中の各ピクチャに対して符号化動作を実行し得る。ビデオエンコーダ20がピクチャに対して符号化動作を実行するとき、ビデオエンコーダ20は、一連のコーディングされたピクチャと関連するデータとを生成し得る。関連するデータは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、適合パラメータセット(APS)、および他のシンタックス構造を含み得る。SPSは、ピクチャの0個以上のシーケンスに適用可能なパラメータを含み得る。PPSは、0個以上のピクチャに適用可能なパラメータを含み得る。APSは、0個以上のピクチャに適用可能なパラメータを含み得る。APS中のパラメータは、PPS中のパラメータよりも変化する可能性が高いパラメータであり得る。
【００３８】
コーディングされたピクチャを生成するために、ビデオエンコーダ20は、ピクチャを等しいサイズのビデオブロックに区分し得る。ビデオブロックは、サンプルの2次元アレイであり得る。ビデオブロックの各々が、ツリーブロックと関連付けられる。いくつかの事例では、ツリーブロックは、最大コーディングユニット(LCU)と呼ばれ得る。HEVCのツリーブロックは、H.264/AVCのような、以前の規格のマクロブロックに広い意味で類似し得る。しかしながら、ツリーブロックは、特定のサイズに必ずしも限定されず、1つまたは複数のコーディングユニット(CU)を含み得る。ビデオエンコーダ20は、四分木区分を使用して、ツリーブロックのビデオブロックを、CUと関連付けられたビデオブロックに区分することができ、したがって「ツリーブロック」という名前がある。
【００３９】
いくつかの例では、ビデオエンコーダ20は、ピクチャを複数のスライスに区分し得る。スライスの各々が、整数個のCUを含み得る。いくつかの事例では、スライスは整数個のツリーブロックを備える。他の事例では、スライスの境界はツリーブロック内にあり得る。
【００４０】
ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実行し得る。ビデオエンコーダ20がスライスに対して符号化動作を実行するとき、ビデオエンコーダ20は、スライスと関連付けられた符号化されたデータを生成し得る。スライスと関連付けられた符号化されたデータは、「コーディングされたスライス」と呼ばれ得る。
【００４１】
コーディングされたスライスを生成するために、ビデオエンコーダ20は、スライス中の各ツリーブロックに対して符号化動作を実行し得る。ビデオエンコーダ20がツリーブロックに対して符号化動作を実行するとき、ビデオエンコーダ20はコーディングされたツリーブロックを生成し得る。コーディングされたツリーブロックは、ツリーブロックの符号化されたバージョンを表すデータを備え得る。
【００４２】
ビデオエンコーダ20がコーディングされたスライスを生成するとき、ビデオエンコーダ20は、ラスター走査順序に従って、スライス中のツリーブロックに対して符号化動作を実行し得る(たとえば、そのツリーブロックを符号化し得る)。たとえば、ビデオエンコーダ20は、スライス中のツリーブロックの一番上の行にわたって左から右に進み、次いでツリーブロックの次の下の行にわたって左から右に進み、以下同様に進む順序で、ビデオエンコーダ20がスライス中のツリーブロックの各々を符号化するまで、スライスのツリーブロックを符号化し得る。
【００４３】
ラスター走査順序に従ってツリーブロックを符号化した結果として、所与のツリーブロックの上および左のツリーブロックは符号化されていることがあるが、所与のツリーブロックの下および右のツリーブロックはまだ符号化されていない。したがって、ビデオエンコーダ20は、所与のツリーブロックを符号化するとき、所与のツリーブロックの上および左のツリーブロックを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ20は、所与のツリーブロックを符号化するとき、所与のツリーブロックの下および右のツリーブロックを符号化することによって生成された情報にアクセスすることが可能ではないことがある。
【００４４】
コーディングされたツリーブロックを生成するために、ビデオエンコーダ20は、ツリーブロックのビデオブロックに対して四分木区分を再帰的に実行して、ビデオブロックを徐々により小さいビデオブロックに分割し得る。より小さいビデオブロックの各々が、異なるCUと関連付けられ得る。たとえば、ビデオエンコーダ20は、ツリーブロックのビデオブロックを4つの等しいサイズのサブブロックに区分することができ、サブブロックの1つまたは複数を4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。区分されたCUは、そのビデオブロックが他のCUと関連付けられたビデオブロックに区分される、CUであり得る。区分されていないCUは、そのビデオブロックが他のCUと関連付けられたビデオブロックに区分されていない、CUであり得る。
【００４５】
ビットストリーム中の1つまたは複数のシンタックス要素は、ビデオエンコーダ20がツリーブロックのビデオブロックを区分し得る最大の回数を示し得る。CUのビデオブロックは、形状が正方形であり得る。CUのビデオブロックのサイズ(たとえば、CUのサイズ)は、8×8ピクセルから、最大で64×64以上のピクセルを有するツリーブロックのビデオブロックのサイズ(たとえば、ツリーブロックのサイズ)にまで及び得る。
【００４６】
ビデオエンコーダ20は、z走査順序に従って、ツリーブロックの各CUに対して符号化動作を実行し得る(たとえば、各CUを符号化し得る)。言い換えれば、ビデオエンコーダ20は、左上のCUと、右上のCUと、左下のCUと、次いで右下のCUとを、その順序で符号化し得る。ビデオエンコーダ20が、区分されたCUに対して符号化動作を実行するとき、ビデオエンコーダ20は、z走査順序に従って、区分されたCUのビデオブロックのサブブロックと関連付けられたCUを符号化し得る。言い換えれば、ビデオエンコーダ20は、左上のサブブロックと関連付けられたCUと、右上のサブブロックと関連付けられたCUと、左下のサブブロックと関連付けられたCUと、次いで右下のサブブロックと関連付けられたCUとを、その順序で符号化し得る。
【００４７】
z走査順序に従ってツリーブロックのCUを符号化した結果として、所与のCUの上、左上、右上、左、および左下のCUは符号化されていることがある。所与のCUの下および右のCUはまだ符号化されていない。したがって、ビデオエンコーダ20は、所与のCUを符号化するとき、所与のCUに隣接するいくつかのCUを符号化することによって生成された情報にアクセスすることが可能であり得る。しかしながら、ビデオエンコーダ20は、所与のCUを符号化するとき、所与のCUに隣接する他のCUを符号化することによって生成された情報にアクセスすることが可能ではないことがある。
【００４８】
ビデオエンコーダ20が、区分されていないCUを符号化するとき、ビデオエンコーダ20は、CUのために1つまたは複数の予測ユニット(PU)を生成し得る。CUのPUの各々は、CUのビデオブロック内の異なるビデオブロックと関連付けられ得る。ビデオエンコーダ20は、CUの各PUのための予測されるビデオブロックを生成し得る。PUの予測されるビデオブロックは、サンプルのブロックであり得る。ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測されるビデオブロックを生成し得る。
【００４９】
ビデオエンコーダ20がイントラ予測を使用してPUの予測されるビデオブロックを生成するとき、ビデオエンコーダ20は、PUと関連付けられたピクチャの復号サンプルに基づいて、PUの予測されるビデオブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してCUのPUの予測されるビデオブロックを生成する場合、CUはイントラ予測されたCUである。ビデオエンコーダ20がインター予測を使用してPUの予測されるビデオブロックを生成するとき、ビデオエンコーダ20は、PUと関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測されるビデオブロックを生成し得る。ビデオエンコーダ20がインター予測を使用してCUのPUの予測されるビデオブロックを生成する場合、CUはインター予測されたCUである。
【００５０】
さらに、ビデオエンコーダ20がインター予測を使用してPUのための予測されるビデオブロックを生成するとき、ビデオエンコーダ20はPUの動き情報を生成し得る。PUの動き情報は、PUの1つまたは複数の参照ブロックを示し得る。PUの各参照ブロックは、参照ピクチャ内のビデオブロックであり得る。参照ピクチャは、PUと関連付けられたピクチャ以外のピクチャであり得る。いくつかの事例では、PUの参照ブロックは、PUの「参照サンプル」と呼ばれることもある。ビデオエンコーダ20は、PUの参照ブロックに基づいて、PUのための予測されるビデオブロックを生成し得る。
【００５１】
ビデオエンコーダ20がCUの1つまたは複数のPUのための予測されるビデオブロックを生成した後、ビデオエンコーダ20は、CUのPUのための予測されるビデオブロックに基づいて、CUの残差データを生成し得る。CUの残差データは、CUのPUのための予測されるビデオブロック中のサンプルと、CUの元のビデオブロック中のサンプルとの差分を示し得る。
【００５２】
さらに、区分されていないCUに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、CUの残差データに対して再帰的な四分木区分を実行して、CUの残差データを、CUの変換ユニット(TU)と関連付けられた残差データの1つまたは複数のブロック(たとえば、残差ビデオブロック)に区分し得る。CUの各TUは、異なる残差ビデオブロックと関連付けられ得る。
【００５３】
ビデオエンコーダ20は、TUと関連付けられた変換係数ブロック(たとえば、変換係数のブロック)を生成するために、TUと関連付けられた残差ビデオブロックに1つまたは複数の変換を適用し得る。概念的に、変換係数ブロックは変換係数の2次元(2D)行列であり得る。
【００５４】
変換係数ブロックを生成した後、ビデオエンコーダ20は、変換係数ブロックに対して量子化処理を実行し得る。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行う処理を指す。量子化処理は、変換係数の一部またはすべてと関連付けられたビット深度を低減し得る。たとえば、量子化の間にnビットの変換係数がmビットの変換係数に切り捨てられることがあり、ここで、nはmよりも大きい。
【００５５】
ビデオエンコーダ20は、各CUを量子化パラメータ(QP)値と関連付け得る。CUと関連付けられたQP値は、ビデオエンコーダ20が、CUと関連付けられた変換係数ブロックをどのように量子化するかを決定し得る。ビデオエンコーダ20は、CUと関連付けられたQP値を調整することによって、CUと関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。
【００５６】
ビデオエンコーダ20が変換係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数ブロック中で変換係数を表すシンタックス要素のセットを生成し得る。ビデオエンコーダ20は、これらのシンタックス要素のいくつかに、コンテキスト適応型バイナリ算術コーディング(CABAC)動作のようなエントロピー符号化動作を適用し得る。コンテキスト適応型可変長コーディング(CAVLC)、確率間隔区分エントロピー(PIPE)コーディング、または他のバイナリ算術コーディングのような、他のエントロピーコーディング技法も使用され得る。
【００５７】
ビデオエンコーダ20によって生成されるビットストリームは、一連のネットワーク抽象化レイヤ(NAL)ユニットを含み得る。NALユニットの各々は、NALユニット中のデータのタイプの指示と、データを含むバイトとを含むシンタックス構造であり得る。たとえば、NALユニットは、ビデオパラメータセット、シーケンスパラメータセット、ピクチャパラメータセット、コーディングされたスライス、SEI、アクセスユニットデリミタ、フィラーデータ、または別のタイプのデータを表すデータを含み得る。NALユニット中のデータは、様々なシンタックス構造を含み得る。
【００５８】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。ビットストリームは、ビデオエンコーダ20によって符号化されたビデオデータのコーディングされた表現を含み得る。ビデオデコーダ30がビットストリームを受信するとき、ビデオデコーダ30は、ビットストリームに対して解析動作を実行し得る。ビデオデコーダ30が解析動作を実行するとき、ビデオデコーダ30は、ビットストリームからシンタックス要素を抽出し得る。ビデオデコーダ30は、ビットストリームから抽出されたシンタックス要素に基づいて、ビデオデータのピクチャを再構築し得る。シンタックス要素に基づいてビデオデータを再構築するための処理は、一般に、シンタックス要素を生成するためにビデオエンコーダ20によって実行される処理とは逆であり得る。
【００５９】
ビデオデコーダ30がCUと関連付けられたシンタックス要素を抽出した後、ビデオデコーダ30は、シンタックス要素に基づいて、CUのPUのための予測されるビデオブロックを生成し得る。さらに、ビデオデコーダ30は、CUのTUと関連付けられた変換係数ブロックを逆量子化し得る。ビデオデコーダ30は、変換係数ブロックに対して逆変換を実行して、CUのTUと関連付けられた残差ビデオブロックを再構築し得る。予測されるビデオブロックを生成し、残差ビデオブロックを再構築した後、ビデオデコーダ30は、予測されるビデオブロックと残差ビデオブロックとに基づいて、CUのビデオブロックを再構築し得る。このようにして、ビデオデコーダ30は、ビットストリーム中のシンタックス要素に基づいて、CUのビデオブロックを再構築し得る。
【００６０】
ビデオエンコーダ
図2は、本開示で説明される態様による技法を実装し得るビデオエンコーダ20の例を示すブロック図である。ビデオデコーダ20は、HEVCの場合のように、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオエンコーダ20は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオエンコーダ20の様々なコンポーネント間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示せず)が、本開示で説明される技法のいずれかまたはすべてを実行するように構成され得る。
【００６１】
説明の目的で、本開示は、HEVCコーディングの状況においてビデオエンコーダ20を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図2に示される例は、シングルレイヤコーデックのためのものである。しかしながら、ある種の実施形態では、ビデオエンコーダ20の一部またはすべてが、マルチレイヤコーデックの処理のために複製され得る。
【００６２】
ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオの時間冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)のようなインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指し得る。
【００６３】
図2の例では、ビデオエンコーダ20は複数の機能コンポーネントを含む。ビデオエンコーダ20の機能コンポーネントは、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換ユニット110と、再構築ユニット112と、フィルタユニット113と、復号ピクチャバッファ114と、エントロピー符号化ユニット116とを含む。予測処理ユニット100は、インター予測ユニット121と、動き推定ユニット122と、動き補償ユニット124と、イントラ予測ユニット126と、レイヤ間予測ユニット128とを含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。さらに、動き推定ユニット122および動き補償ユニット124は、高度に統合され得るが、図2の例では、説明の目的で別々に表されている。
【００６４】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、様々なソースからビデオデータを受信し得る。たとえば、ビデオエンコーダ20は、(たとえば、図1Aまたは図1Bに示された)ビデオソース18、または別のソースからビデオデータを受信し得る。ビデオデータは、一連のピクチャを表し得る。ビデオデータを符号化するために、ビデオエンコーダ20は、ピクチャの各々に対して符号化動作を実行し得る。ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実行し得る。スライスに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、スライス中のツリーブロックに対して符号化動作を実行し得る。
【００６５】
ツリーブロックに対して符号化動作を実行することの一部として、予測処理ユニット100は、ツリーブロックのビデオブロックに対して四分木区分を実行して、ビデオブロックを徐々により小さいビデオブロックに分割し得る。より小さいビデオブロックの各々が、異なるCUと関連付けられ得る。たとえば、予測処理ユニット100は、ツリーブロックのビデオブロックを4つの等しいサイズのサブブロックに区分することができ、サブブロックの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【００６６】
CUと関連付けられたビデオブロックのサイズは、8×8のサンプルから、最大で64×64以上のサンプルを有するツリーブロックのサイズにまで及び得る。本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直方向の寸法および水平方向の寸法に関するビデオブロックのサンプルの寸法、たとえば、16×16(16x16)のサンプルまたは16×16(16 by 16)のサンプルを指すために、互換的に使用され得る。一般に、16×16のビデオブロックは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×Nのブロックは、一般に、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負の整数値を表す。
【００６７】
さらに、ツリーブロックに対して符号化動作を実行することの一部として、予測処理ユニット100は、ツリーブロックのための階層的な四分木データ構造を生成し得る。たとえば、ツリーブロックは、四分木データ構造のルートノードに対応し得る。予測処理ユニット100がツリーブロックのビデオブロックを4つのサブブロックに区分する場合、ルートノードは、四分木データ構造中に4つの子ノードを有する。子ノードの各々は、サブブロックの1つと関連付けられたCUに対応する。予測処理ユニット100がサブブロックの1つを4つのサブサブブロックに区分する場合、サブブロックと関連付けられたCUに対応するノードは、サブサブブロックの1つと関連付けられたCUに各々が対応する、4つの子ノードを有し得る。
【００６８】
四分木データ構造の各ノードは、対応するツリーブロックまたはCUのシンタックスデータ(たとえば、シンタックス要素)を含み得る。たとえば、四分木の中のノードは、そのノードに対応するCUのビデオブロックが4つのサブブロックに区分(たとえば、分割)されているかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義されてよく、CUのビデオブロックがサブブロックに分割されているかどうかに依存し得る。ビデオブロックが区分されていないCUは、四分木データ構造におけるリーフノードに対応し得る。コーディングされたツリーブロックは、対応するツリーブロックのための四分木データ構造に基づくデータを含み得る。
【００６９】
ビデオエンコーダ20は、ツリーブロックの区分されていない各CUに対して符号化動作を実行し得る。ビデオエンコーダ20が、区分されていないCUに対して符号化動作を実行するとき、ビデオエンコーダ20は、区分されていないCUの符号化された表現を表すデータを生成する。
【００７０】
CUに対して符号化動作を実行することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUの間で、CUのビデオブロックを区分し得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なPUサイズをサポートし得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、2N×2NまたはN×NのPUサイズと、2N×2N、2N×N、N×2N、N×N、2N×nU、nL×2N、nR×2N、または同様の対称なPUサイズでのインター予測とをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30は、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称区分もサポートし得る。いくつかの例では、予測処理ユニット100は、CUのビデオブロックの辺と直角に交わらない境界に沿ってCUのPUの間でCUのビデオブロックを区分するように、幾何学的な区分を実行し得る。
【００７１】
インター予測ユニット121は、CUの各PUに対してインター予測を実行し得る。インター予測は、時間圧縮を実現し得る。PUに対してインター予測を実行するために、動き推定ユニット122は、PUのための動き情報を生成し得る。動き補償ユニット124は、PUベースの動き情報およびCUと関連付けられたピクチャ以外のピクチャ(たとえば、参照ピクチャ)の復号されたサンプルのための、予測されるビデオブロックを生成し得る。本開示では、動き補償ユニット124によって生成される予測されるビデオブロックは、インター予測されるビデオブロックと呼ばれることがある。
【００７２】
スライスは、Iスライス、Pスライス、またはBスライスであり得る。動き推定ユニット122および動き補償ユニット124は、PUがIスライス中にあるか、Pスライス中にあるか、またはBスライス中にあるかに応じて、CUのPUのために異なる動作を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、動き推定ユニット122および動き補償ユニット124は、PUに対してインター予測を実行しない。
【００７３】
PUがPスライス中にある場合、PUを含むピクチャは、「リスト0」と呼ばれる参照ピクチャのリストと関連付けられる。リスト0中の参照ピクチャの各々は、他のピクチャのインター予測に使用され得るサンプルを含む。動き推定ユニット122が、Pスライス中のPUに関して動き推定動作を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0中の参照ピクチャを探索し得る。PUの参照ブロックは、PUのビデオブロック中のサンプルに最も密接に対応するサンプルのセット、たとえば、サンプルのブロックであり得る。動き推定ユニット122は、参照ピクチャ中のサンプルのセットがどの程度密接にPUのビデオブロック中のサンプルに対応するかを決定するために、種々の尺度を使用し得る。たとえば、動き推定ユニット122は、絶対値差分和(SAD)、2乗差分和(SSD)、または他の差分の尺度によって、参照ピクチャ中のサンプルのセットがどの程度密接にPUのビデオブロック中のサンプルに対応するかを決定し得る。
【００７４】
Pスライス中のPUの参照ブロックを識別した後、動き推定ユニット122は、参照ブロックを含む、リスト0中の参照ピクチャを示す参照インデックスと、PUと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。様々な例において、動き推定ユニット122は、動きベクトルを異なる精度で生成し得る。たとえば、動き推定ユニット122は、1/4サンプル精度、1/8サンプル精度、または他の分数のサンプル精度で動きベクトルを生成し得る。分数のサンプル精度の場合、参照ブロック値は、参照ピクチャ中の整数位置のサンプル値から補間され得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動き情報によって特定された参照ブロックに基づいて、PUの予測されるビデオブロックを生成し得る。
【００７５】
PUがBスライス中にある場合、PUを含むピクチャは、「リスト0」および「リスト1」と呼ばれる参照ピクチャの2つのリストと関連付けられ得る。いくつかの例では、Bスライスを含むピクチャは、リスト0とリスト1の組合せである、リストの組合せと関連付けられ得る。
【００７６】
さらに、PUがBスライス中にある場合、動き推定ユニット122は、PUのための単方向予測または双方向予測を実行し得る。動き推定ユニット122がPUのための単方向予測を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0またはリスト1の参照ピクチャを探索し得る。動き推定ユニット122は、次いで、参照ブロックを含む、リスト0またはリスト1中の参照ピクチャを示す参照インデックスと、PUと参照ブロックとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと、予測方向インジケータと、動きベクトルとを出力し得る。予測方向インジケータは、参照インデックスが、リスト0中の参照ピクチャを示すか、またはリスト1中の参照ピクチャを示すかを示し得る。動き補償ユニット124は、PUの動き情報によって示された参照ブロックに基づいて、PUの予測されるビデオブロックを生成し得る。
【００７７】
動き推定ユニット122がPUのための双方向予測を実行するとき、動き推定ユニット122は、PUのための参照ブロックについて、リスト0中の参照ピクチャを探索することができ、また、PUのための別の参照ブロックについて、リスト1中の参照ピクチャを探索することができる。動き推定ユニット122は、次いで、参照ブロックを含む、リスト0およびリスト1中の参照ピクチャを示す参照インデックスと、参照ブロックとPUとの間の空間変位を示す動きベクトルとを生成し得る。動き推定ユニット122は、PUの動き情報として、PUの参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動き情報によって示された参照ブロックに基づいて、PUの予測されるビデオブロックを生成し得る。
【００７８】
いくつかの事例では、動き推定ユニット122は、PUのための動き情報のフルセットをエントロピー符号化ユニット116に出力しない。そうではなく、動き推定ユニット122は、別のPUの動き情報を参照して、PUの動き情報をシグナリングし得る。たとえば、動き推定ユニット122は、PUの動き情報が、隣接PUの動き情報と十分に類似していると決定し得る。この例では、動き推定ユニット122は、PUと関連付けられたシンタックス構造において、PUが隣接PUと同じ動き情報を有することをビデオデコーダ30に示す値を示し得る。別の例では、動き推定ユニット122は、PUと関連付けられたシンタックス構造において、隣接PUとMVDとを識別し得る。MVDは、PUの動きベクトル(すなわち、現在の動きベクトル)と、示される隣接PUの動きベクトル(すなわち、予測される動きベクトル)との間の差分を示す。ビデオデコーダ30は、示される隣接PUの動きベクトルと、MVDとを使用して、PUの動きベクトルを決定し得る。第2のPUの動き情報をシグナリングするときに第1のPUの動き情報を参照することによって、ビデオエンコーダ20は、より少数のビットを使用して、第2のPUの動き情報をシグナリングすることが可能であり得る。
【００７９】
CUに対して符号化動作を実行することの一部として、イントラ予測ユニット126は、CUのPUに対してイントラ予測を実行し得る。イントラ予測は、空間圧縮を実現し得る。イントラ予測ユニット126がPUに対してイントラ予測を実行するとき、イントラ予測ユニット126は、同じピクチャ中の他のPUの復号されたサンプルに基づいて、PUのための予測データを生成し得る。PUのための予測データは、予測されるビデオブロックと様々なシンタックス要素とを含み得る。イントラ予測ユニット126は、Iスライス、Pスライス、およびBスライス中のPUに対してイントラ予測を実行し得る。
【００８０】
PUに対してイントラ予測を実行するために、イントラ予測ユニット126は、PUのための予測データの複数のセットを生成するために、複数のイントラ予測モードを使用し得る。イントラ予測ユニット126がPUのための予測データのセットを生成するためにイントラ予測モードを使用するとき、イントラ予測ユニット126は、イントラ予測モードと関連付けられる方向および/または勾配で、隣接PUのビデオブロックからPUのビデオブロックにわたってサンプルを延ばし得る。隣接PUは、PU、CU、およびツリーブロックについて、左から右、上から下の符号化順序を仮定すると、PUの上、右上、左上、または左にあり得る。イントラ予測ユニット126は、PUのサイズに応じて、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。
【００８１】
予測処理ユニット100は、PUのための動き補償ユニット124によって生成された予測データ、またはPUのためのイントラ予測ユニット126によって生成された予測データの中から、PUの予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみの尺度に基づいて、PUのための予測データを選択する。
【００８２】
予測処理ユニット100が、イントラ予測ユニット126によって生成された予測データを選択する場合、予測処理ユニット100は、PUのための予測データを生成するために使用されたイントラ予測モード、たとえば、選択されたイントラ予測モードをシグナリングし得る。予測処理ユニット100は、選択されたイントラ予測モードを様々な方法でシグナリングし得る。たとえば、選択されたイントラ予測モードは、隣接PUのイントラ予測モードと同じであることが起こり得る。言い換えれば、隣接PUのイントラ予測モードは、現在のPUに対して最確モードであり得る。したがって、予測処理ユニット100は、選択されたイントラ予測モードが隣接PUのイントラ予測モードと同じであることを示すための、シンタックス要素を生成し得る。
【００８３】
上で論じられたように、ビデオエンコーダ20は、レイヤ間予測ユニット128を含み得る。レイヤ間予測ユニット128は、SHVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して、現在のブロック(たとえば、EL中の現在のブロック)を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれ得る。レイヤ間予測ユニット128は、レイヤ間冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソースの要件を下げる。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測を含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤ中の並置されたブロックの再構築を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。
【００８４】
予測処理ユニット100がCUのPUのための予測データを選択した後、残差生成ユニット102は、CUのビデオブロックからCUのPUの予測されたビデオブロックを差し引くこと(たとえば、マイナス符号によって示される)によって、CUの残差データを生成し得る。CUの残差データは、CUのビデオブロック中のサンプルの異なるサンプル成分に対応する、2D残差ビデオブロックを含み得る。たとえば、残差データは、CUのPUの予測されるビデオブロック中のサンプルのルミナンス成分と、CUの元のビデオブロック中のサンプルのルミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。さらに、CUの残差データは、CUのPUの予測されるビデオブロック中のサンプルのクロミナンス成分と、CUの元のビデオブロック中のサンプルのクロミナンス成分との間の差分に対応する、残差ビデオブロックを含み得る。
【００８５】
予測処理ユニット100は、CUの残差ビデオブロックをサブブロックに区分するために、四分木区分を実行し得る。分割されていない各残差ビデオブロックは、CUの異なるTUと関連付けられ得る。CUのTUと関連付けられる残差ビデオブロックのサイズおよび位置は、CUのPUと関連付けられたビデオブロックのサイズおよび位置に基づいてもよく、または基づかなくてもよい。「残差四分木」(RQT)と呼ばれる四分木構造は、残差ビデオブロックの各々と関連付けられたノードを含み得る。CUのTUは、RQTのリーフノードに対応し得る。
【００８６】
変換処理ユニット104は、TUと関連付けられた残差ビデオブロックに1つまたは複数の変換を適用することによって、CUの各TUのための1つまたは複数の変換係数ブロックを生成し得る。変換係数ブロックの各々は、変換係数の2D行列であり得る。変換処理ユニット104は、TUと関連付けられた残差ビデオブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を、TUと関連付けられた残差ビデオブロックに適用し得る。
【００８７】
変換処理ユニット104が、TUと関連付けられた変換係数ブロックを生成した後、量子化ユニット106は、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット106は、CUと関連付けられたQP値に基づいて、CUのTUと関連付けられた変換係数ブロックを量子化し得る。
【００８８】
ビデオエンコーダ20は、様々な方法でQP値をCUと関連付け得る。たとえば、ビデオエンコーダ20は、CUと関連付けられたツリーブロックに対してレートひずみ分析を実行し得る。レートひずみ分析では、ビデオエンコーダ20は、ツリーブロックに対して符号化動作を複数回実行することによって、ツリーブロックの複数のコーディングされた表現を生成し得る。ビデオエンコーダ20がツリーブロックの異なる符号化された表現を生成するとき、ビデオエンコーダ20は、異なるQP値をCUと関連付け得る。ビデオエンコーダ20は、最小のビットレートおよびひずみの尺度を有するツリーブロックのコーディングされた表現において所与のQP値がCUと関連付けられるとき、所与のQP値がCUと関連付けられることをシグナリングし得る。
【００８９】
逆量子化ユニット108および逆変換ユニット110は、変換係数ブロックから残差ビデオブロックを再構築するために、それぞれ、逆量子化と逆変換とを変換係数ブロックに適用し得る。再構築ユニット112は、TUと関連付けられた再構築されたビデオブロックを生成するために、再構築された残差ビデオブロックを、予測処理ユニット100によって生成された1つまたは複数の予測されるビデオブロックからの対応するサンプルに追加し得る。このようにCUの各TUのためのビデオブロックを再構築することによって、ビデオエンコーダ20は、CUのビデオブロックを再構築し得る。
【００９０】
再構築ユニット112がCUのビデオブロックを再構築した後、フィルタユニット113は、CUと関連付けられたビデオブロックにおけるブロッキングアーティファクトを低減するために、デブロッキング動作を実行し得る。1つまたは複数のデブロッキング動作を実行した後、フィルタユニット113は、CUの再構築されたビデオブロックを復号ピクチャバッファ114に記憶し得る。動き推定ユニット122および動き補償ユニット124は、後続のピクチャのPUに対してインター予測を実行するために、再構築されたビデオブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測ユニット126は、CUと同じピクチャ中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ114の中の再構築されたビデオブロックを使用し得る。
【００９１】
エントロピー符号化ユニット116は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信し得る。たとえば、エントロピー符号化ユニット116は、量子化ユニット106から変換係数ブロックを受信することができ、予測処理ユニット100からシンタックス要素を受信することができる。エントロピー符号化ユニット116がデータを受信するとき、エントロピー符号化ユニット116は、1つまたは複数のエントロピー符号化動作を実行して、エントロピー符号化されたデータを生成し得る。たとえば、ビデオエンコーダ20は、CAVLC動作、CABAC動作、変数間(V2V)レングスコーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、または別のタイプのエントロピー符号化動作をデータに対して実行し得る。エントロピー符号化ユニット116は、エントロピー符号化されたデータを含むビットストリームを出力することができる。
【００９２】
データに対してエントロピー符号化動作を実行することの一部として、エントロピー符号化ユニット116は、コンテキストモデルを選択し得る。エントロピー符号化ユニット116がCABAC動作を実行している場合、コンテキストモデルは、特定の値を有する特定のビンの確率の推定値を示し得る。CABACの文脈では、「ビン」という用語は、シンタックス要素の2値化されたバージョンのビットを指すために使用される。
【００９３】
ビデオデコーダ
図3は、本開示において説明される態様による技法を実装し得るビデオデコーダ30の例を示すブロック図である。ビデオデコーダ30は、HEVCの場合のように、ビデオフレームの単一のレイヤを処理するように構成され得る。さらに、ビデオデコーダ30は、本開示の技法のいずれかまたはすべてを実行するように構成され得る。いくつかの例では、本開示において説明される技法は、ビデオデコーダ30の様々なコンポーネント間で共有され得る。いくつかの例では、追加または代替として、プロセッサ(図示せず)が、本開示で説明される技法のいずれかまたはすべてを実行するように構成され得る。
【００９４】
説明の目的で、本開示は、HEVCコーディングの状況においてビデオデコーダ30を説明する。しかしながら、本開示の技法は他のコーディング規格または方法に適用可能であり得る。図3に示される例は、シングルレイヤコーデックのためのものである。しかしながら、ある種の実装形態では、ビデオデコーダ30の一部またはすべてが、マルチレイヤコーデックの処理のために複製され得る。
【００９５】
図3の例では、ビデオデコーダ30は複数の機能コンポーネントを含む。ビデオデコーダ30の機能コンポーネントは、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換ユニット156と、再構築ユニット158と、フィルタユニット159と、復号ピクチャバッファ160とを含む。予測処理ユニット152は、動き補償ユニット162と、イントラ予測ユニット164と、レイヤ間予測ユニット166とを含む。いくつかの例では、ビデオデコーダ30は、図2のビデオエンコーダ20に関して説明された符号化経路とは全般に逆の復号経路を実行し得る。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能コンポーネントを含み得る。
【００９６】
ビデオデコーダ30は、符号化されたビデオデータを備えるビットストリームを受信し得る。ビットストリームは、複数のシンタックス要素を含み得る。ビデオデコーダ30がビットストリームを受信するとき、エントロピー復号ユニット150は、ビットストリームに対して解析動作を実行し得る。ビットストリームに対して解析動作を実行した結果として、エントロピー復号ユニット150は、ビットストリームからシンタックス要素を抽出し得る。解析動作を実行することの一部として、エントロピー復号ユニット150は、ビットストリーム中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換ユニット156、再構築ユニット158、およびフィルタユニット159は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成する再構築動作を実行し得る。
【００９７】
上で論じられたように、ビットストリームは、一連のNALユニットを備え得る。ビットストリームのNALユニットは、ビデオパラメータセットNALユニット、シーケンスパラメータセットNALユニット、ピクチャパラメータセットNALユニット、SEI NALユニットなどを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号ユニット150は、シーケンスパラメータセットNALユニットからのシーケンスパラメータセット、ピクチャパラメータセットNALユニットからのピクチャパラメータセット、SEI NALユニットからのSEIデータなどを抽出しエントロピー復号する、解析動作を実行し得る。
【００９８】
加えて、ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームに対して解析動作を実行することの一部として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからコーディングされたスライスを抽出しエントロピー復号する、解析動作を実行し得る。コーディングされたスライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたピクチャパラメータセットを識別するシンタックス要素を含み得る。エントロピー復号ユニット150は、スライスヘッダを復元するために、コーディングされたスライスヘッダ中のシンタックス要素に対してCABAC復号動作のようなエントロピー復号動作を実行し得る。
【００９９】
コーディングされたスライスNALユニットからスライスデータを抽出することの一部として、エントロピー復号ユニット150は、スライスデータ中のコーディングされたCUからシンタックス要素を抽出する解析動作を実行し得る。抽出されたシンタックス要素は、変換係数ブロックと関連付けられたシンタックス要素を含み得る。エントロピー復号ユニット150は、次いで、シンタックス要素のいくつかに対してCABAC復号動作を実行し得る。
【０１００】
エントロピー復号ユニット150が区分されていないCUに対して解析動作を実行した後、ビデオデコーダ30は、区分されていないCUに対して再構築動作を実行し得る。区分されていないCUに対して再構築動作を実行するために、ビデオデコーダ30はCUの各TUに対して再構築動作を実行し得る。CUの各TUについて再構築動作を実行することによって、ビデオデコーダ30は、CUと関連付けられた残差ビデオブロックを再構築し得る。
【０１０１】
TUに対して再構築動作を実行することの一部として、逆量子化ユニット154は、TUと関連付けられた変換係数ブロックを逆量子化(inverse quantize)、たとえば、逆量子化(de-quantize)し得る。逆量子化ユニット154は、HEVCのために提案された、またはH.264復号規格によって定義された逆量子化処理と同様の方法で、変換係数ブロックを逆量子化し得る。逆量子化ユニット154は、量子化の程度を決定し、同様に、逆量子化ユニット154が適用すべき逆量子化の程度を決定するために、変換係数ブロックのCUのためにビデオエンコーダ20によって計算される量子化パラメータQPを使用し得る。
【０１０２】
逆量子化ユニット154が変換係数ブロックを逆量子化した後、逆変換ユニット156は、変換係数ブロックと関連付けられたTUのための残差ビデオブロックを生成し得る。逆変換ユニット156は、TUのための残差ビデオブロックを生成するために、変換係数ブロックに逆変換を適用し得る。たとえば、逆変換ユニット156は、変換係数ブロックに、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を適用し得る。いくつかの例では、逆変換ユニット156は、ビデオエンコーダ20からのシグナリングに基づいて、変換係数ブロックに適用すべき逆変換を決定し得る。そのような例では、逆変換ユニット156は、変換係数ブロックと関連付けられたツリーブロックのための四分木のルートノードにおいてシグナリングされた変換に基づいて、逆変換を決定し得る。他の例では、逆変換ユニット156は、ブロックサイズ、コーディングモードなどのような、1つまたは複数のコーディング特性から逆変換を推測し得る。いくつかの例では、逆変換ユニット156はカスケード逆変換を適用し得る。
【０１０３】
いくつかの例では、動き補償ユニット162は、補間フィルタに基づく補間を実行することによって、PUの予測されるビデオブロックを改良し得る。サブサンプル精度を有する動き補償のために使用されるべき補間フィルタ用の識別子は、シンタックス要素に含まれ得る。動き補償ユニット162は、PUの予測されるビデオブロックの生成の間にビデオエンコーダ20によって使用されたのと同じ補間フィルタを使用して、参照ブロックのサブ整数サンプルに対する補間された値を計算し得る。動き補償ユニット162は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測されるビデオブロックを生成し得る。
【０１０４】
PUが、イントラ予測を使用して符号化される場合、イントラ予測ユニット164は、イントラ予測を実行してPUのための予測されるビデオブロックを生成し得る。たとえば、イントラ予測ユニット164は、ビットストリーム中のシンタックス要素に基づいて、PUのためのイントラ予測モードを決定し得る。ビットストリームは、PUのイントラ予測モードを決定するためにイントラ予測ユニット164が使用し得るシンタックス要素を含み得る。
【０１０５】
いくつかの事例では、イントラ予測ユニット164が現在のPUのイントラ予測モードを決定するために別のPUのイントラ予測モードを使用するべきであることを、シンタックス要素が示し得る。たとえば、現在のPUのイントラ予測モードが隣接PUのイントラ予測モードと同じであることが起こり得る。言い換えれば、隣接PUのイントラ予測モードは、現在のPUに対して最確モードであり得る。したがって、この例では、ビットストリームは、PUのイントラ予測モードが隣接PUのイントラ予測モードと同じであることを示す、小さいシンタックス要素を含み得る。イントラ予測ユニット164は次いで、空間的に隣接するPUのビデオブロックに基づいてPUのための予測データ(たとえば、予測されるサンプル)を生成するために、イントラ予測モードを使用し得る。
【０１０６】
上で論じられたように、ビデオデコーダ30はレイヤ間予測ユニット166も含み得る。レイヤ間予測ユニット166は、SHVCにおいて利用可能である1つまたは複数の異なるレイヤ(たとえば、ベースレイヤまたは参照レイヤ)を使用して、現在のブロック(たとえば、エンハンスメントレイヤ中の現在のブロック)を予測するように構成される。そのような予測は、レイヤ間予測と呼ばれ得る。レイヤ間予測ユニット166は、レイヤ間冗長性を低減するための予測方法を利用し、それによって、コーディング効率を改善し、計算リソースの要件を下げる。レイヤ間予測のいくつかの例は、レイヤ間イントラ予測、レイヤ間動き予測、およびレイヤ間残差予測を含む。レイヤ間イントラ予測は、エンハンスメントレイヤ中の現在のブロックを予測するために、ベースレイヤ中の並置されたブロックの再構築を使用する。レイヤ間動き予測は、エンハンスメントレイヤ中の動作を予測するために、ベースレイヤの動き情報を使用する。レイヤ間残差予測は、エンハンスメントレイヤの残差を予測するために、ベースレイヤの残差を使用する。レイヤ間予測方式の各々が、以下でより詳細に論じられる。
【０１０７】
再構築ユニット158は、適用可能なとき、CUのTUと関連付けられた残差ビデオブロックとCUのPUの予測されるビデオブロックとを使用して、たとえば、イントラ予測データまたはインター予測データのいずれかを使用して、CUのビデオブロックを再構築し得る。したがって、ビデオデコーダ30は、ビットストリーム中のシンタックス要素に基づいて、予測されるビデオブロックと残差ビデオブロックとを生成することができ、予測されるビデオブロックと残差ビデオブロックとに基づいて、ビデオブロックを生成することができる。
【０１０８】
再構築ユニット158がCUのビデオブロックを再構築した後、フィルタユニット159は、CUと関連付けられるブロッキングアーティファクトを低減するためにデブロッキング動作を実行し得る。フィルタユニット159が、CUと関連付けられたブロッキングアーティファクトを低減するためにデブロッキング動作を実行した後、ビデオデコーダ30はCUのビデオブロックを復号ピクチャバッファ160に記憶し得る。復号ピクチャバッファ160は、次の動き補償、イントラ予測、および図1Aまたは図1Bのディスプレイデバイス32のようなディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ160中のビデオブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。
【０１０９】
MVD/BVDコーディング
HEVCに対する既存のアプローチでは、MVDは、コンテンツのタイプ(たとえば、スクリーンコンテンツまたはカメラでキャプチャされたコンテンツ)にかかわらず同様の方法でコーディングされる。たとえば、第1のフラグは、MVDの絶対値が0であるかどうかを示すようにコーディングされ得る。MVDの絶対値が0でないとき、第2のフラグは、MVDの絶対値が1よりも大きいかどうかを示すようにコーディングされ得る。MVDの絶対値が1よりも大きいとき、MVDの絶対値マイナス1が、次数1を有するバイパス指数ゴロムコーディングを使用してコーディングされ得る。
【０１１０】
さらに、HEVCおよびその拡張に対する既存のアプローチでは、BVDは、MVDとは異なるアプローチを使用してコーディングされる。たとえば、第1のフラグは、BVDが0であるかどうかを示すようにコーディングされ得る。BVDが0でないとき、BVDの残りの絶対値が、次数3を有するバイパス指数ゴロムコーディングを使用してコーディングされ得る。たとえば、BVDの剰余の絶対値は、BVDの絶対値マイナス1であり得る。
【０１１１】
指数ゴロムコードは、プレフィックス値およびサフィックス値を含む。プレフィックス値は単項コーディングされてよく、サフィックス値は固定長コーディングされてよく、固定長サフィックス値の長さは、対応するプレフィックス値に基づいている。以下のTable 1(表1)は、次数4を有する指数ゴロムコードを使用した、基準値のコーディングの一例を示す。Table 1(表1)では、プレフィックス値とサフィックス値は、ダッシュ記号によって分離される。
【０１１２】
【表１】
2017525262.tif 000003
【０１１３】
上で論じられたように、次数1を有する指数ゴロムコーディングを使用したスクリーンコンテンツのMVDの符号化は、コーディングの非効率につながることがある。具体的には、指数ゴロムコーディングが必要とするビット数は、MVDのサイズとともに指数関数的に増加する。カメラでキャプチャされたビデオデータのMVDは、高値において急速に減衰する確率分布を有する。したがって、次数1を有する指数ゴロムコーディングを使用することは、より小さい値ではより低次の指数ゴロムコードがより効率的なので、カメラでキャプチャされたビデオデータには効率的である。
【０１１４】
対照的に、スクリーンコンテンツのMVDは、ほぼ平坦な確率分布を有する(すなわち、MVDの各値における確率が同様である)。これは、スクリーンコンテンツの動きベクトルが、カメラでキャプチャされたコンテンツの動きベクトルほど確実には予測可能でないからである。たとえば、スクリーンコンテンツは、テキスト文字を含むことがあり、テキスト文字のうちの1つは、次のフレームの画像の任意の位置に配置され得る。したがって、次数1を有する指数ゴロムコーディングを使用して、より高い値のMVDを符号化するとき、コーディング効率が減少する。したがって、本開示の態様によれば、スクリーンコンテンツを符号化するとき、しきい値よりも大きいMVDは、より高次の指数ゴロムコーディングを使用して符号化され得る。より高次の指数ゴロムコーディングは、より低い値の入力に対するコーディング効率を犠牲にして、より高い値の入力(すなわち、MVD)に対する効率を増加させた可能性がある。
【０１１５】
本開示による様々な実装形態が以下で説明される。これらの実施形態は、別々に、または本開示の他の態様と一緒に実装され得る。さらに、本開示の実施形態は、1-Dディクショナリ、パレットなどの他のコーディングツールにも適用可能であり得る。
【０１１６】
図4は、本開示において説明される態様による動きベクトル差分コーディングのための例示的な技法を示すブロック図である。具体的には、図4は、MVDコーディングに使用され得る修正CABAC技法を示す。図4のブロック図は、バイナライザ201、コンテキストモデル203、算術コーダ205、およびバイパスコーダ207を含む。図4に示されるように、シンタックス要素、たとえばMVDは、入力としてバイナライザ201によって受け取られる。バイナライザ201は、MVDから、複数のビンを含むバイナリストリングを生成する。バイナライザ201は、ビンの各々をコンテキストモデル203またはバイパスコーダ207のいずれかに選択的に送る。コンテキストモデル203は、バイナライザ201から受け取った各ビンのコンテキストを特定する。以下でさらに詳細に説明されるように、コンテキストは、ビンがMVDの水平成分または垂直成分の一部であるかどうかに基づいていることがある。算術コーダ205は、算術コーディングを使用してコンテキストモデル203から受け取ったビンをコーディングする。バイパスコーダ207は、コンテキストなしでバイナライザ201から受け取ったビンをコーディングする。算術コーダ205およびバイパスコーダ207の各々は、出力ビットストリームを形成するためにそれぞれのコーディングされたビンを出力する。図4の上記の説明は、CABAC符号化技法の視点から説明されてきたが、ビットストリームを復号するために、逆方向の技法が利用され得る。
【０１１７】
図5は、本開示において説明される態様に従って生成された例示的なバイナリストリング300を示す図である。バイナリストリング300は、複数のビンb0、b1、b2、...、bi、...、bn-1およびbnを含む。図5は、本開示の態様に従ってビンb0からbnの各々に適用することができるコーディングのタイプの記述を含む。図4を参照すると、バイナライザ201は、ビンb0からbnの各々をコンテキストモデル203またはバイパスコーダ207のいずれかに送る。上側の経路を介してコンテキストモデル203に送られるビンは、コンテキストとともにCABACを使用して符号化され得る。下側の経路を介してバイパスコーダ207に送られるビンは、コンテキストなしでコーディングされるようにCABACを回避し得る。
【０１１８】
次に、本開示による、スクリーンコンテンツのMVDを符号化する方法の一実施形態が、図4および図5を参照しながら説明される。第1のビンb0は、MVDの絶対値が0よりも大きいかどうかを示し得る。第1のビンb0は、コンテキストとともにCABACを使用して(すなわち、コンテキストモデル203および算術コーダ205を介して)符号化され得る。いくつかの実装形態では、MVDは、別々に符号化される、水平成分と垂直成分とに分割され得る。したがって、本開示の一態様では、コンテキストモデル203は、ビンがMVDの水平成分または垂直成分に含まれるかどうかに応じて第1のビンb0をコーディングするために異なるコンテキストを使用する。しかしながら、他の態様では、MVDの水平成分のコンテキストと垂直成分のコンテキストは同じである。
【０１１９】
第2のビンb1は、MVDの絶対値がしきい値kよりも大きいかどうかを示し得る。いくつかの実装形態では、たとえば、次数4を有する指数ゴロムコードを使用するとき、しきい値は16(すなわち、24)であり得る。いくつかの実装形態では、所与の指数ゴロム次数(EGOrder)に対するしきい値は、EGOrder(すなわち、1<<EGOrder)によってビットが左にバイナリ値1シフトすることによって決定され得る。第2のビンb1は、コンテキストとともにCABACを使用して(すなわち、コンテキストモデル203および算術コーダ205を介して)符号化され得る。本開示の一態様では、コンテキストモデル203は、MVDがMVDの水平成分または垂直成分であるかどうかに応じて第2のビンb1をコーディングするために異なるコンテキストを使用する。しかしながら、他の態様では、MVDの水平成分のコンテキストと垂直成分のコンテキストは同じである。
【０１２０】
一実装形態では、第2のビンb1は、MVDの絶対値がしきい値よりも小さいとき0に等しく、MVDの絶対値がしきい値よりも大きいとき1に等しい。これらの実装形態では、第2のビンb1が0に等しいとき、ビンb2からbn-1は、固定長コードを使用して符号化され得る。固定長コードは、しきい値kに等しい長さを有し得る。第2のビンb1が1に等しいとき、ビンb2からbn-1は、MVDの絶対値マイナスしきい値kマイナス1を表し得る。ビンb2からbn-1は、1よりも大きい次数を有する指数ゴロムコーディングを使用してバイパスコーダ207によって符号化され得る。さらに、ビンb2からbn-1を符号化するために、ライスゴロムコードなどの修正ゴロムコードを使用することもできる。最後のビンbnは、MVDの符号を示すことがあり、コンテキストなしでバイパスコーダ207によって符号化され得る。
【０１２１】
コンテキストモデル203は、CABACを使用してコーディングにおいて使用されるコンテキストを特定し得る。一実装形態では、MVDの成分間の同じ序数のビンに対して、同じコンテキストが使用され得る(すなわち、MVDの水平成分および垂直成分の各々に関するbiは、同じコンテキストを有し得る)。別の実装形態では、CABACを使用してコーディングされるビンb0からbnの各々に対してコンテキストが共有される。
【０１２２】
上記の開示はMVDをコーディングするコンテキストにおいて説明されてきたが、本開示は、そのことに限定されない。具体的には、本明細書で開示する開示される方法は、BVDにも適用され得る。加えて、ビットストリームの復号は、図4および図5を参照しながら説明される符号化技法の逆順で実行され得る。たとえば、ビットストリームは、ビンが符号化されたのと同じ技法によって各々がそれぞれ復号され得る(すなわち、ビンb0およびb1はCABACコーディングを使用して復号されることがあり、ビンb2からbn-1は固定長コーディングまたは指数ゴロムコーディングを使用して復号されることがあり、ビンbnはバイパスコーディングを使用して復号されることがある)符号化ビンを含み得る。本開示による復号技法のより詳細な説明は、図7とともに以下に与えられる。
【０１２３】
固定長コードおよび指数ゴロムコードを使用したMVD/BVDコーディング
既存のアプローチでは、BVDおよびMVDは、ベクトル差分をコーディングするために様々な2値化技法を使用してコーディングされる。具体的には、MVDは経時的なピクチャからの推定値を使用してインター予測モードに基づいてコーディングされることがあり、BVDは同じピクチャ内の推定値を使用してイントラ予測に基づいてコーディングされることがある。したがって、MVDおよびBVDに関する統計値(すなわち、MVDおよびBVDの値に関する期待分布)は、様々な統計的特性を有し得る。しかしながら、これらの統計的差分を埋め合わせるインターベクトル差分コーディングモードおよびイントラベクトル差分コーディングモードの統合された設計を利用する様々な利益が存在し得る。さらに、既存のアプローチに使用されるMVDおよびBVDの異なる2値化は、そのような統合された設計に対して制限を課す。本開示の態様は、異なる統計的特性を考慮しながらBVDコーディングとMVDコーディングの両方を改善する統合された技法に関する。
【０１２４】
いくつかの実装形態では、BVD/MVDコーディングは、固定長コードと指数ゴロムコードとの組合せを使用して実行され得る。以下に、一例として、MVDコーディングを使用した、これらの実装形態の例が説明されるが、これらの実装形態はBVDにも適用され得る。
【０１２５】
一実装形態では、固定長コードから指数ゴロムコードへの切替えを示すために、n番目のビンbnが使用され得る。たとえば、MVDの値が4よりも大きいとき、n番目のビンbnは1に等しいとしてシグナリングされることがあり、MVDの残りの値(すなわち、MVDの値マイナス4)は、所定の次数を有する指数ゴロムコードを使用してコーディングされることがある。MVDの値が4以下であるとき、MVDは、固定長コードを使用してコーディングされ得る。
【０１２６】
本技法は、MVDがしきい値Nよりも大きいことをシグナリングすることに一般化することができる。たとえば、MVDの値がNよりも大きいとき、n番目のビンbnはNに等しいとしてシグナリングされることがあり、MVDの残りの値(すなわち、MVDの値マイナスN)は、所定の次数を有する指数ゴロムコードを使用してコーディングされることがある。MVDの値がN以下であるとき、MVDは、固定長コードを使用してコーディングされ得る。しきい値Nは、N=0、1、2、3、4....から選択され得る。Nの様々な値は、様々な2値化方式をもたらすことがあり、2値化方式の各々は、MVDの様々な統計的値に対して様々に機能し得る。
【０１２７】
さらに、固定長コードの長さは、Nの値に依存することがあり、たとえば、固定長コードの長さがlog2Nとして計算され得る。他の実装形態では、固定長コードの代わりに、短縮コードが利用されることがあり、たとえば、MVDの値がN以下であるとき、Nは2の累乗ではない。
【０１２８】
固定長コードと指数ゴロムコードとの例示的な組合せを使用したMVD/BVDコーディングのより詳細な例が以下で提供される。
【０１２９】
MVDコーディングの場合、MVDの値が0よりも大きいかどうかを示すために、第1のビンb0が使用され得る。MVDの値が4よりも大きいかどうかを示すために、第2のビンb1が使用され得る。MVDの絶対値が4よりも大きいとき、次数4を有する指数ゴロムコードを使用して、MVDの値マイナス5がコーディングされ得る。MVDの値が4以下であるとき、各々が長さ2を有するバイパス固定長コードを使用して、MVDの値マイナス1がコーディングされ得る。
【０１３０】
同様の技法がBVDに適用され得る。BVDの値が0よりも大きいかどうかを示すために、第1のビンb0が使用され得る。BVDの値が4よりも大きいかどうかを示すために、第2のビンb1が使用され得る。BVDの値が4よりも大きいとき、次数4を有する指数ゴロムコードを使用して、BVDの値マイナス5がコーディングされ得る。BVDの値が4以下であるとき、各々が長さ2を有するバイパス固定長コードを使用して、BVDの値マイナス1がコーディングされ得る。
【０１３１】
上記で説明された技法が、MVD/BVDコーディングに関して別々に使用されるか、またはMVD/BVDコーディングに関する統合された方法として一緒に使用されることがあることに留意されたい。さらに、図5に示されるように、バイパスモードまたはCABACにおいて第1および/または第2のビンb0および/またはb1がコーディングされ得る。CABACにおいて第1および/または第2のビンb0および/またはb1がコーディングされるとき、第1および/または第2のビンb0および/またはb1のコンテキストは、BVDまたはMVDの様々な成分に対して異なるか、または同じであることがある。CABACにおいて第1および第2のビンb0とb1の両方がコーディングされるとき、第1および第2のビンb0およびb1は、別々のコンテキストを使用するか、または同じコンテキストを共有し得る。加えて、BVDおよびMVDに対する第1および/または第2のビンb0および/またはb1のコンテキストは、CABACにおいてコーディングされるとき、別々であるか、または共有され得る。
【０１３２】
上記の技法の一実装形態が以下のTable 2(表2)に示され、Table 2(表2)は、MVDコーディングおよび/またはBVDコーディングにおける対応する2値化コードを示す。
【０１３３】
【表２】
2017525262.tif 000004
【０１３４】
上記のTable 2(表2)では、下付き文字Rは、通常のコーディングビン(すなわち、コンテキストを使用してコーディングされるビン)を表す。
【０１３５】
短縮指数ゴロムコードを使用したMVD/BVDコーディング
本開示のいくつかの実装形態では、BVD/MVDコーディング技法は、短縮指数ゴロムコードを使用することを含み得る。本明細書で開示される短縮指数ゴロムコードと既存の指数ゴロムコードとの間にいくつかの違いが存在する。
【０１３６】
既存の指数ゴロムコードのプレフィックスコードは、指数ゴロムコードに使用される単項コードの代わりに特定の間隔にわたって短縮単項コードとなるように修正され得る。この区間は、シグナリングされることがあるか、または、全体のスライス、ピクチャ、および/もしくはシーケンスが固定され得る。さらに、短縮単項プレフィックスコードから通常の指数ゴロムプレフィックスコードへの遷移を示すビンが含まれ得る。ビットストリームにおける間隔がシグナリングされるとき、その間隔は、スライスヘッダ、PPS、SPS、および/またはVPSの粒度においてシグナリングされ得る。いくつかの実装形態では、その間隔は、しきい値を介して決定されることがあり、たとえば、MVDの絶対値がしきい値以下であるとき、短縮指数ゴロムコードが使用され得る。
【０１３７】
次に、短縮指数ゴロムコードの構文解析をするための一技法が説明される。構文解析プロセスに対する入力は、次数0を有する短縮指数ゴロムを含むシンタックス要素の2値化の要求を示すビットであり得る。構文解析プロセスの出力は、シンタックス要素の2値化の後の、次数0を有する短縮指数ゴロムであり得る。
【０１３８】
短縮指数ゴロムコードを使用してコーディングされるシンタックス要素に関する構文解析プロセスは、ビットストリームの現在の位置において開始するビットを読み取ることで開始し得る。以下の擬似コードは、短縮指数ゴロムコードに対する構文解析プロセスの一実装形態を示す。より高次の短縮指数ゴロムコードの場合、値leadingZeroBitsは、2,3,4などのより高次のコードであり得る。
【０１３９】
第1のビンが0である場合、これらのシンタックス要素に対する構文解析プロセスは、MAX_BITS_TU_GROUPビンの値まで続き、0に等しい先頭ビットの数をカウントする。このプロセスは、次のように指定され得る。
leadingZeroBits=0
while((b==1)&&(leadingZeroBits<MAX_BITS_TU_GROUP)) {
b=read_bits(1);
if(b){
leadingZeroBits++;
codeNum+=b<<leadingZeroBits;
}
}
leadingZeroBits++;
codeNum+=read_bits(leadingZeroBits);
【０１４０】
ここで、read_bits(leadingZeroBits)から返された値は、最初に書き込まれた最上位ビットを含む符号なし整数のバイナリ表現として解釈され得る。
【０１４１】
第1のビンが0でない場合
leadingZeroBits=0;
codeNum_Prefix=0
while(leadingZeroBits<MAX_BITS_TU_GROUP) {
leadingZeroBits++;
codeNum_Prefix+=1<<leadingZeroBits;
}
leadingZeroBits++;
codeNum_Prefix+=1<<leadingZeroBits;
【０１４２】
構文解析プロセスは、上述の実施形態において説明された次数Kを有する指数ゴロムコードと同様の技法に従うことがある。
【０１４３】
変数codeNumは、次のように割り当てられ得る。
codeNum=2leadingZeroBits-1+read_bits(leadingZeroBits)+codeNum_Prefix
【０１４４】
上記のプロセスがプレフィックス部分とサフィックス部分とで反対の意味を有する1と0とを使用し得ることに留意されたい。
【０１４５】
また、上記のプロセスは、一般に、他の次数の短縮指数ゴロムコードに拡張することもできる。
【０１４６】
本開示による、短縮指数ゴロムコードを使用したMVD/BVDコーディングの一例が、以下で説明される。
【０１４７】
MVDコーディングの場合、第1のビンb0は、MVDの値が0よりも大きいかどうかを示し得る。第2のビンb1は、MVDの値がNよりも大きいかどうかを示し得る。MVDの値がNよりも大きいとき、MVDの値マイナスNは、次数Kを有する短縮指数ゴロムコードを使用してコーディングされ得る。MVDの値がN以下であるとき、Nまたは短縮コードに依存し得る長さを有するバイパス固定長コードを使用して、MVDの値マイナス1がコーディングされ得る。
【０１４８】
同様の技法がBVDコーディングに使用され得る。第1のビンb0は、BVDの値が0よりも大きいかどうかを示し得る。第2のビンb1は、BVDの値がNよりも大きいかどうかを示し得る。BVDの値がNよりも大きいとき、BVDの値マイナスNは、次数Kを有する短縮指数ゴロムコードを使用してコーディングされ得る。BVDの値がN以下であるとき、Nまたは短縮コードに依存し得る長さを有するバイパス固定長コードを使用して、BVDの値マイナス1がコーディングされ得る。
【０１４９】
上記で説明された技法は、MVD/BVDコーディングに関して別々に使用されるか、またはMVD/BVDコーディングに関する統合された方法として一緒に使用されることがある。図5に示されるように、バイパスモードまたはCABACにおいて第1および/または第2のビンb0および/またはb1がコーディングされ得る。CABACにおいて第1および/または第2のビンb0および/またはb1がコーディングされるとき、コンテキストは、BVDおよび/もしくはMVDの様々な成分に対して異なるか、または同じであることがある。CABACにおいて第1および第2のビンb0とb1の両方がコーディングされるとき、第1および第2のビンb0およびb1は、別々のコンテキストを使用するか、または同じコンテキストを共有し得る。加えて、BVDおよびMVDに対する第1および/または第2のビンb0および/またはb1のコンテキストは、CABACにおいてコーディングされるとき、別々であるか、または共有され得る。
【０１５０】
短縮指数ゴロムコードの少なくとも1つの実装形態における第1のビンb0では、バイパスモードまたはCABACにおいて、第1のビンb0がコーディングされ得る。CABACにおいて第1のビンb0がコーディングされるとき、コンテキストは、BVDもしくはMVDの様々な成分に対して異なるか、または同じであることがある。CABACにおいて第1のビンb0がコーディングされるとき、コンテキストは、BVDもしくはMVDの様々な成分に対して異なるか、または同じであることがある。第1および/または第2のビンb0および/またはb1を有する同じコンテキストを共有するか、または別々のコンテキストを使用することも可能である。加えて、BVDおよびMVDに対する提案された短縮指数ゴロムコードにおける第1のビンb0のコンテキストは、CABACにおいてコーディングされるとき、別々であるか、または共有され得る。
【０１５１】
スクリーンコンテンツのMVDまたはBVDの符号化のための例示的なフローチャート
図6を参照すると、スクリーンコンテンツビデオデータのMVD(またはBVD)符号化の例示的な手順が説明される。図6は、本開示の態様による、スクリーンコンテンツのMVD符号化のための方法400を示すフローチャートである。図6に示されるステップは、ビデオエンコーダ(たとえば、ビデオエンコーダ20)またはその構成要素によって実行され得る。便宜的に、方法400は、ビデオエンコーダ20、または別の構成要素であり得る、ビデオコーダ(単にコーダとも呼ばれる)によって実行されるものとして説明される。
【０１５２】
方法400は、ブロック401において開始する。ブロック405において、コーダ(たとえば、図2に示されるビデオエンコーダ20の動き推定ユニット122)は、予測される動きベクトルと現在の動きベクトルとの間のMVDを特定する。ブロック410において、コーダは、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成する。ビンの数nは、4以上であり得る。図6の方法において説明されるビンの数nは、図4および図5とともに説明される指数nとは異なることがある。
【０１５３】
ブロック415において、コーダ(たとえば、図2に示されるビデオエンコーダ20のエントロピー符号化ユニット116)は、第1のエントロピーコーディング動作を介してn個のビンのうちの少なくとも1つのビンを符号化する。第1のエントロピー符号化動作は、CABACであり得る。ブロック420では、コーダは、MVDの絶対値がしきい値よりも大きいかどうかを判定する。しきい値は、2kに等しいことがある。ブロック425において、コーダ(たとえば、図2に示されるビデオエンコーダ20のエントロピー符号化ユニット116)は、MVDの絶対値がしきい値よりも大きいことに応答して、第2のエントロピーコーディング動作を介してn個のビンのサブセットを符号化する。第2のエントロピーコーディング動作は、1よりも大きい次数kを有する指数ゴロムコードなどの、1よりも大きい次数を有する指数コーディング動作であり得る。
【０１５４】
コーダは、CABACまたはバイパスコーディングを介して第1、第2、および第nのビンの各々を符号化することもある。第1のビンは、MVDが1よりも大きいかどうかを特定し得る。第2のビンは、MVDが2kよりも大きいかどうかを特定し得る。第nのビンは、MVDの符号を表し得る。本方法は、ブロック430において終了する。
【０１５５】
方法400において、図6に示すブロックのうちの1つもしくは複数は取り除かれて(たとえば、実施されなくて)よく、および/または方法が実施される順序は入れ換えられてよい。いくつかの実施形態では、追加ブロックが方法400に追加されてよい。本開示の実施形態は、図6に示す例にも、その例によっても限定されず、本開示に従って他の変形形態が実装されてよい。
【０１５６】
本開示のいくつかの態様では、スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定するための手段と、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成するための手段と、第1のエントロピーコーディング動作によってn個のビンのうちの少なくとも1つのビンを符号化するための手段と、MVDの絶対値がしきい値よりも大きいかどうかを判定するための手段と、MVDの絶対値がしきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってスクリーンコンテンツと関連付けられたn個のビンのサブセットを符号化するための手段とを備える装置が提供される。
【０１５７】
本開示のさらなる態様では、実行されるとき、デバイスのプロセッサに、スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定させ、MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成させ、第1のエントロピーコーディング動作によってn個のビンのうちの少なくとも1つのビンを符号化させ、MVDの絶対値がしきい値よりも大きいかどうかを判定させ、MVDの絶対値がしきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってスクリーンコンテンツと関連付けられたn個のビンのサブセットを符号化させる命令が記憶されている非一時的コンピュータ可読記憶媒体が提供される。
【０１５８】
スクリーンコンテンツのMVDまたはBVDの復号のための例示的なフローチャート
図7を参照すると、スクリーンコンテンツビデオデータのMVD(またはBVD)復号の例示的な手順が説明される。図7は、本開示の態様による、スクリーンコンテンツのMVD復号のための方法500を示すフローチャートである。図7に示されるステップは、ビデオデコーダ(たとえば、ビデオデコーダ30)またはその構成要素によって実行され得る。便宜的に、方法500は、ビデオエンコーダ30、または別の構成要素であり得る、ビデオコーダ(単にコーダとも呼ばれる)によって実行されるものとして説明される。
【０１５９】
方法500は、ブロック501において開始する。ブロック505において、コーダ(たとえば、図3に示されるビデオデコーダ30のエントロピー復号ユニット150)は、n個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取る。ブロック510において、コーダ(たとえば、図3に示されるビデオデコーダ30のエントロピー復号ユニット150)は、第1のエントロピーコーディング動作を介してn個のビンのうちの少なくとも1つのビンを復号する。第1のエントロピー符号化動作は、CABACであり得る。少なくとも1つのビンは、MVDの絶対値がしきい値よりも大きいかどうかを示し得る。MVDは、予測される動きベクトルと現在の動きベクトルとの間の差分であり得る。ビンの数nは、4以上であり得る。図7の方法において説明されるビンの数nは、図4および図5とともに説明される指数nとは異なることがある。
【０１６０】
ブロック515において、コーダ(たとえば、図3に示されるビデオデコーダ30のエントロピー復号ユニット150)は、MVDの絶対値がしきい値よりも大きいことを示す少なくとも1つのビンに応答して、第2のエントロピーコーディング動作を介してn個のビンのサブセットを復号する。しきい値は、2kに等しいことがある。第2のエントロピーコーディング動作は、1よりも大きい次数を有する指数コーディングを備え得る。第2のエントロピーコーディング動作は、1よりも大きい次数kを有する指数ゴロムコードなどの、1よりも大きい次数を有する指数コーディング動作であり得る。ブロック520において、コーダ(たとえば、図3に示されるビデオデコーダ30の予測処理ユニット152)は、復号されたビンに少なくとも部分的に基づいてMVDを生成する。本方法は、ブロック525において終了する。
【０１６１】
方法500において、図7に示すブロックのうちの1つもしくは複数は取り除かれて(たとえば、実施されなくて)よく、および/または方法が実施される順序は入れ換えられてよい。いくつかの実施形態では、追加ブロックが方法500に追加されてよい。本開示の実施形態は、図7に示す例にも、その例によっても限定されず、本開示に従って他の変形形態が実装されてよい。
【０１６２】
本開示のいくつかの態様では、スクリーンコンテンツと関連付けられたn個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取るための手段と、第1のエントロピーコーディング動作によってn個のビンのうちの、予測される動きベクトルと現在の動きベクトルとの間の差分であるMVDの絶対値がしきい値よりも大きいかどうかを示す、少なくとも1つのビンを復号するための手段と、MVDの絶対値がしきい値よりも大きいことを示す少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってn個のビンのサブセットを復号するための手段と、復号されたビンに少なくとも部分的に基づいてスクリーンコンテンツのMVDを生成するための手段と備える装置が提供される。
【０１６３】
本開示のさらなる態様では、実行されるとき、デバイスのプロセッサに、スクリーンコンテンツと関連付けられたn個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取らせ、第1のエントロピーコーディング動作によってn個のビンのうちの、予測される動きベクトルと現在の動きベクトルとの間の差分であるMVDの絶対値がしきい値よりも大きいかどうかを示す、少なくとも1つのビンを復号させ、MVDの絶対値がしきい値よりも大きいことを示す少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によってn個のビンのサブセットを復号させ、復号されたビンに少なくとも部分的に基づいてスクリーンコンテンツのMVDを生成させる命令が記憶されている非一時的コンピュータ可読記憶媒体が提供される。
【０１６４】
他の考慮事項
本明細書で開示される情報および信号は、種々の異なる技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【０１６５】
本明細書で開示された実施形態に関して説明された様々な例示的な論理ブロックおよびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、およびステップが、上では全般にその機能に関して説明された。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に対して課される設計制限に依存する。当業者は、具体的な適用例ごとに様々な方法で説明される機能を実装し得るが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【０１６６】
本明細書で説明される技法は、ハードウェア、ソフトウェア、ファームウェア、または任意のその組合せで実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスのような、種々のデバイスのいずれかにおいて実装され得る。デバイスまたはコンポーネントとして説明される特徴は、集積論理デバイスに一緒に、またはディスクリートであるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装される場合、技法は、実行されると、上で説明された方法の1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって、少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期型ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などのような、メモリまたはデータ記憶媒体を備え得る。技法は、追加または代替として、伝搬される信号または電波のような、命令またはデータ構造の形態でプログラムコードを搬送または伝達し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって、少なくとも部分的に実現され得る。
【０１６７】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積論理回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。したがって、本明細書で使用される「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明される技法の実装に適した任意の他の構造もしくは装置のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明される機能は、符号化および復号のために構成された専用のソフトウェアまたはハードウェア内で提供されてよく、または複合ビデオエンコーダ/デコーダ(コーデック)に組み込まれてよい。また、本技法は、1つもしくは複数の回路または論理素子において完全に実装され得る。
【０１６８】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々なコンポーネントまたはユニットが説明されたが、それらのコンポーネントまたはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって与えられ得る。
【０１６９】
上記のことは様々な異なる実施形態に関して説明されたが、一実施形態からの特徴または要素は、本開示の教示から逸脱することなく他の実施形態と組み合わされてよい。しかしながら、それぞれの実施形態の間での特徴の組合せは必ずしもそれに限定されない。本開示の様々な実施形態が説明されてきた。これらおよび他の実施形態は、以下の特許請求の範囲に含まれる。
【符号の説明】
【０１７０】
10  ビデオコーディングシステム
10'  ビデオコーディングシステム
11  デバイス
12  ソースデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
31  記憶デバイス
32  ディスプレイデバイス
100  予測処理ユニット
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換ユニット
112  再構築ユニット
113  フィルタユニット
114  復号ピクチャバッファ
116  エントロピー符号化ユニット
121  インター予測ユニット
122  動き推定ユニット
124  動き補償ユニット
126  イントラ予測ユニット
128  レイヤ間予測ユニット
150  エントロピー復号ユニット
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換ユニット
158  再構築ユニット
159  フィルタユニット
160  復号ピクチャバッファ
162  動き補償ユニット
164  イントラ予測ユニット
166  レイヤ間予測ユニット
201  バイナライザ
203  コンテキストモデル
205  算術コーダ
207  バイパスコーダ
300  バイナリストリング
【図１Ａ】
2017525262.tif 000005
【図１Ｂ】
2017525262.tif 000006
【図２】
2017525262.tif 000007
【図３】
2017525262.tif 000008
【図４】
2017525262.tif 000009
【図５】
2017525262.tif 000010
【図６】
2017525262.tif 000011
【図７】
2017525262.tif 000012
【手続補正書】
【提出日】平成29年1月5日(2017.1.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
スクリーンコンテンツを符号化するためのビデオエンコーダによって動作可能な方法であって、
前記スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定するステップと、
前記MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成するステップと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを符号化するステップと、
前記MVDの絶対値がしきい値よりも大きいかどうかを判定するステップと、
前記MVDの前記絶対値が前記しきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記スクリーンコンテンツと関連付けられた前記n個のビンのサブセットを符号化するステップであって、前記n個のビンの前記サブセットは前記少なくとも1つのビン1を除外する、ステップと、
前記MVDの前記絶対値が前記しきい値以下であることに応答して固定長コードを使用して前記n個のビンの前記サブセットを符号化するステップと
を備え、
前記指数コーディングは、i)定義された間隔内のMVD値の短縮単項コードと、ii)前記定義された間隔外のMVD値の単項コードとを備えるプレフィックスを符号化することを備える、
方法。
【請求項２】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項1に記載の方法。
【請求項３】
前記MVDが水平成分MVDであるか、または垂直成分MVDであるかに基づいて前記少なくとも1つのビンの各々のコンテキストを特定するステップをさらに備える、請求項2に記載の方法。
【請求項４】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項1に記載の方法。
【請求項５】
前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示す、請求項4に記載の方法。
【請求項６】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記方法は、前記MVDの前記絶対値が前記しきい値以下であることに応答して前記固定長コードを使用して前記3番目から(n-1)番目のビンを符号化するステップをさらに備え、前記固定長コードの長さは前記しきい値に依存している、請求項4に記載の方法。
【請求項７】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記3番目から(n-1)番目のビンを符号化する前記ステップは、バイパスモードにおいて前記3番目から(n-1)番目のビンを符号化することを備える、請求項6に記載の方法。
【請求項８】
バイパスモードにおいて前記n個のビンのうちの、前記MVDの符号を示すn番目のビンを符号化するステップをさらに備える、請求項1に記載の方法。
【請求項９】
MVDが、ブロックベクトル差分(BVD)と同じ方法を介して2値化され符号化される、請求項1に記載の方法。
【請求項１０】
前記MVDは、複数の方向性構成要素を備え、前記方法は、前記方向性構成要素を2値化することを介して前記方向性構成要素にそれぞれ対応する複数の方向性構成要素バイナリストリングを生成するステップをさらに備え、前記方向性構成要素バイナリストリングの対応する序数ビンは、同じコンテキストを共有する、請求項1に記載の方法。
【請求項１１】
前記少なくとも1つのビンは、前記n個のビンの前記サブセットが前記第2のエントロピーコーディング動作または固定長コードによって符号化されるかどうかを示す、請求項1に記載の方法。
【請求項１２】
スクリーンコンテンツを復号するためのビデオデコーダによって動作可能な方法であって、
n個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取るステップと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを復号するステップであって、前記少なくとも1つのビンは、前記スクリーンコンテンツと関連付けられた予測される動きベクトルと現在の動きベクトルとの間の差分である、動きベクトル差分(MVD)の絶対値がしきい値よりも大きいかどうかを示す、ステップと、
前記MVDの前記絶対値が前記しきい値よりも大きいことを示す前記少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記スクリーンコンテンツと関連付けられた前記n個のビンのサブセットを復号するステップと、
前記MVDの前記絶対値が前記しきい値以下であることを示す前記少なくとも1つのビンに応答して固定長コードを使用して前記n個のビンの前記サブセットを復号するステップと、
前記復号されたビンに少なくとも部分的に基づいて前記MVDを生成するステップと
を備え、
前記指数コーディングは、i)定義された間隔内のMVD値の短縮単項コードと、ii)前記定義された間隔外のMVD値の単項コードとを備えるプレフィックスを復号することを備える、
方法。
【請求項１３】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項12に記載の方法。
【請求項１４】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示し、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項12に記載の方法。
【請求項１５】
前記固定長コードの長さは前記しきい値に依存している、請求項12に記載の方法。
【請求項１６】
前記MVDが、ブロックベクトル差分(BVD)と同じ方法を介して復号される、請求項12に記載の方法。
【請求項１７】
スクリーンコンテンツを符号化するためのデバイスであって、
前記スクリーンコンテンツの少なくとも一部を記憶するように構成されたメモリと、
前記スクリーンコンテンツの予測される動きベクトルと現在の動きベクトルとの間の動きベクトル差分(MVD)を特定し、
前記MVDを2値化することを介してn個のビンを備えるバイナリストリングを生成し、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを符号化し、
前記MVDの絶対値がしきい値よりも大きいかどうかを判定し、
前記MVDの前記絶対値が前記しきい値よりも大きいことに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記スクリーンコンテンツと関連付けられた前記n個のビンのサブセットを符号化し、
前記MVDの前記絶対値が前記しきい値以下であることに応答して固定長コードを使用して前記n個のビンの前記サブセットを符号化する
ように構成された、前記メモリと通信する少なくとも1つのプロセッサと
を備え、
前記指数コーディングは、i)定義された間隔内のMVD値の短縮単項コードと、ii)前記定義された間隔外のMVD値の単項コードとを備えるプレフィックスを符号化することを備える、
デバイス。
【請求項１８】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項17に記載のデバイス。
【請求項１９】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項17に記載のデバイス。
【請求項２０】
前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示す、請求項19に記載のデバイス。
【請求項２１】
前記n個のビンの前記サブセットは、前記n個のビンのうちの3番目から(n-1)番目のビンを備え、前記少なくとも1つのプロセッサは、前記MVDの前記絶対値が前記しきい値以下であることに応答して前記固定長コードを使用して前記3番目から(n-1)番目のビンを符号化するようにさらに構成され、前記固定長コードの長さは前記しきい値に依存している、請求項19に記載のデバイス。
【請求項２２】
前記少なくとも1つのプロセッサは、ブロックベクトル差分(BVD)と同じ方法を介して前記MVDを2値化し符号化するようにさらに構成される、請求項17に記載のデバイス。
【請求項２３】
前記少なくとも1つのビンは、前記n個のビンの前記サブセットが前記第2のエントロピーコーディング動作または固定長コードによって符号化されるかどうかを示す、請求項17に記載のデバイス。
【請求項２４】
前記少なくとも1つのプロセッサは、前記MVDの前記絶対値が前記しきい値以下であることに応答して短縮指数ゴロムコーディングを介して前記サブセットの少なくとも一部を符号化することを介して前記n個のビンの前記サブセットを符号化するようにさらに構成される、請求項17に記載のデバイス。
【請求項２５】
スクリーンコンテンツを復号するためのデバイスであって、
前記スクリーンコンテンツの少なくとも一部を記憶するように構成されたメモリと、
n個のビンを備える、符号化されたバイナリストリングを備えるビットストリームを受け取ることと、
第1のエントロピーコーディング動作によって前記n個のビンのうちの少なくとも1つのビンを復号することであって、前記少なくとも1つのビンは、前記スクリーンコンテンツと関連付けられた予測される動きベクトルと現在の動きベクトルとの間の差分である、動きベクトル差分(MVD)の絶対値がしきい値よりも大きいかどうかを示す、ことと、
前記MVDの前記絶対値が前記しきい値よりも大きいことを示す前記少なくとも1つのビンに応答して、1よりも大きい次数を有する指数コーディングを備える第2のエントロピーコーディング動作によって前記スクリーンコンテンツと関連付けられた前記n個のビンのサブセットを復号することと、
前記MVDの前記絶対値が前記しきい値以下であることを示す前記少なくとも1つのビンに応答して固定長コードを使用して前記n個のビンの前記サブセットを復号することと、
前記復号されたビンに少なくとも部分的に基づいて前記MVDを生成することと
を行うように構成された、前記メモリと通信する少なくとも1つのプロセッサと
を備え、
前記指数コーディングは、i)定義された間隔内のMVD値の短縮単項コードと、ii)前記定義された間隔外のMVD値の単項コードとを備えるプレフィックスを復号することを備える、
デバイス。
【請求項２６】
前記第1のエントロピーコーディング動作は、コンテキスト適応型バイナリ算術コーディング(CABAC)を備え、
前記第2のエントロピーコーディング動作は、指数ゴロムコーディングを備える、
請求項25に記載のデバイス。
【請求項２７】
前記少なくとも1つのビンは第1および第2のビンを備え、前記第2のビンは、前記MVDの前記絶対値が前記しきい値よりも大きいかどうかを示し、前記第1のビンは、前記MVDの前記絶対値が0よりも大きいかどうかを示す、請求項25に記載のデバイス。
【請求項２８】
前記固定長コードの長さは前記しきい値に依存している、請求項25に記載のデバイス。
【請求項２９】
前記少なくとも1つのプロセッサは、ブロックベクトル差分(BVD)と同じ方法を介して前記MVDを復号するようにさらに構成される、請求項25に記載のデバイス。
【国際調査報告】
2017525262.tif 000013
2017525262.tif 000014
2017525262.tif 000015