(58)【調査した分野】(Int.Cl.,DB名)
前記第2の動きベクトルの動きベクトル精度の前記指示は、1つまたは複数のシンタックス要素を備え、前記1つまたは複数のシンタックス要素は、前記第2のブロックのブロックレベルシンタックスを備える、請求項1に記載の方法。
前記ワイヤレス通信デバイスは、電話ハンドセットを備え、前記ワイヤレス通信デバイスの前記受信機において前記ビデオデータを受信することは、ワイヤレス通信規格に従って、前記ビデオデータを備える信号を復調することを備える、請求項6に記載の方法。
前記デバイスは、ワイヤレス通信デバイスを備え、符号化されたビデオデータを受信するように構成された受信機をさらに備え、および/または、前記ワイヤレス通信デバイスは、電話ハンドセットを備え、前記受信機は、ワイヤレス通信規格に従って、前記符号化されたビデオデータを備える信号を復調するように構成される、請求項8に記載のデバイス。
【発明を実施するための形態】
【0013】
[0029]概して、本開示では、ビデオデータのブロックを符号化するために使用される動きベクトルの動きベクトル精度を適応的に選択するため、およびビデオエンコーダによって選択された動きベクトル精度と同じ動きベクトル精度をビデオデコーダによって決定するための技法について説明する。いくつかの技法によれば、ビデオデコーダは、符号化されたビデオビットストリームにおける明示的なシグナリングなしに、ビデオエンコーダによって選択された動きベクトル精度を導出し得る。他の技法によれば、ビデオエンコーダは、符号化されたビデオビットストリームにおいて、選択された動きベクトル精度をシグナリングし得る。本開示の技法は、分数ピクセル精度と呼ばれることがある、整数ピクセル精度と種々のレベルのサブ整数ピクセル精度との間で適応的に選択することを含み得る。たとえば、本技法は、整数ピクセル精度と、ビデオデータのブロックを符号化するために使用される動きベクトルのための1/4ピクセル精度または1/8ピクセル精度との間で適応的に選択することを含み得る。本開示中の「1/8ピクセル」精度という用語は、1ピクセルの1/8の精度、たとえば、フルピクセル位置(0/8)、1ピクセルの1/8、1ピクセルの2/8(すなわち1ピクセルの1/4)、1ピクセルの3/8、1ピクセルの4/8(すなわち1ピクセルの1/2および1ピクセルの2/4)、1ピクセルの5/8、1ピクセルの6/8(すなわち1ピクセルの3/4)、または1ピクセルの7/8のうちの1つを指すことを意図するものである。
【0014】
[0030]従来のH.264およびH.265エンコーダおよびデコーダは、1/4ピクセル精度を有する動きベクトルをサポートする。そのようなピクセル精度はしかしながら、シグナリングも導出もされないが、その代わりに固定される。いくつかの事例では、1/8ピクセル精度は、1/4ピクセル精度または整数ピクセル精度に勝るいくつかの利点をもたらし得る。ただし、あらゆる動きベクトルを1/8ピクセル精度に符号化することは、非常に多くのコーディングビットを必要とし得、それは、さもなければ1/8ピクセル精度動きベクトルによってもたらされる利益を上回り得る。いくつかのタイプのビデオコンテンツに対しては、補間をまったく用いずに、言い換えれば整数ピクセル精度のみを使用して動きベクトルをコーディングすることが好ましくなり得る。
【0015】
[0031]コンピュータによって生成されるコンテンツなどのスクリーンコンテンツは一般に、ピクセル値の鋭い変化が後に続く、すべてがまったく同じピクセル値を有する一連のピクセルを含む。たとえば、白色の背景上に青色のテキストを含んだスクリーンコンテンツでは、白色の背景がすべて同じピクセル値を有する一方で、青色の文字を形成するピクセルもまた、すべて同じピクセル値を有し得るが、白色のピクセル値は青色のピクセル値とは相当に異なり得る。カメラ収集コンテンツは対照的に、一般には、動き、シャドー、照度変化、および他の自然現象を原因とするピクセル値の緩慢な変化を含んでいる。スクリーンコンテンツおよびカメラ収集コンテンツは一般に、異なる特性を有しているので、一方に効果的なコーディングツールが必ずしも、もう一方に効果的となり得るとは限らない。一例として、インター予測符号化のためのサブピクセル補間は、カメラコンテンツのコーディングを改善し得るが、それに関連した複雑さおよびシグナリングオーバーヘッドが、スクリーンコンテンツに対して実際にコーディング品質および/または帯域幅効率を低下させ得る。
【0016】
[0032]本開示の技法は、たとえばコーディングされているビデオのコンテンツに基づいて、動きベクトル精度を適応的に決定することを含む。いくつかの例では、本開示の技法は、エンコーダによって、コーディングされているビデオコンテンツに対して適切な動きベクトル精度を導出することを含む。同じ導出技法を使用して、ビデオデコーダもまた、動きベクトル精度を示しているシンタックス要素を受信することなく、いかなる動きベクトル精度がビデオデータを符号化するために使用されたかを決定し得る。他の例では、ビデオエンコーダは、符号化されたビデオビットストリームにおいて、ビデオエンコーダによって選択された動きベクトル精度をシグナリングし得る。
【0017】
[0033]動きベクトル精度を適応的に選択することは、より高精度の動きベクトル(たとえば、1/4または1/8の精度の動きベクトル)の使用が、たとえばより良好なレートひずみのトレードオフを生じさせることによってビデオコーディング品質を改善させるビデオコンテンツに対して、そのようなより高精度の動きベクトルを使用できるようにすることによって、全体的なビデオコーディング品質を改善し得る。動きベクトル精度を適応的に選択することはまた、より高精度の動きベクトルの使用がビデオコーディング品質を改善せず、さらには悪化させるビデオコンテンツに対して、より低精度の動きベクトル(たとえば整数精度)の使用を可能にすることによって、全体的なビデオコーディング品質を改善し得る。
【0018】
[0034]本開示での様々な技法については、ビデオコーダを参照しながら説明され得るが、このビデオコーダとは、ビデオエンコーダまたはビデオデコーダのどちらかを指し得る総称となることを意図するものである。別段に明記されていない限り、ビデオエンコーダまたはビデオデコーダに関して説明される技法が、ビデオエンコーダまたはビデオデコーダの他方によって実施され得ないことは想定されるべきではない。たとえば、多くの場合、ビデオデコーダは、符号化されたビデオデータを復号するために、ビデオエンコーダと同じ、または場合によっては逆のコーディング技法を実施する。多くの場合、ビデオエンコーダはまたビデオ復号ループを含み、したがって、ビデオエンコーダは、ビデオデータを符号化することの一部として、ビデオ復号を実施する。したがって、別段に記載されていない限り、本開示においてビデオデコーダに関して説明される技法はまたビデオエンコーダによっても実施され得、その逆も同様である。
【0019】
[0035]本開示はまた、現在レイヤー、現在ブロック、現在ピクチャ、現在スライスなどの用語を使用することがある。本開示の文脈において、現在という用語は、たとえば、前にコーディングされたレイヤー、ブロック、ピクチャ、およびスライス、またはまだコーディングされていないブロック、ピクチャ、およびスライスとは対照的に、現在コーディングされているレイヤー、ブロック、ピクチャ、スライスなどを識別することを意図するものである。
【0020】
[0036]
図1は、適応動きベクトル解像度をサポートするための本開示の技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図1に示されるように、システム10は、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレスハンドセット、いわゆるセルラー無線電話または衛星無線電話などのワイヤレス通信デバイス、あるいは通信チャネル16を介してビデオ情報を通信することができる任意のワイヤレスデバイスを備え得、その場合、通信チャネル16はワイヤレスである。ただし、概して、動きベクトルの適応サブピクセル精度をサポートするための技法に関する本開示の技法は、必ずしもワイヤレスアプリケーションまたは設定に限定されるとは限らない。たとえば、これらの技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、インターネットビデオ送信、記憶媒体上に符号化される符号化デジタルビデオ、または他のシナリオに適用され得る。したがって、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレス媒体またはワイヤード媒体の任意の組合せを備え得る。
【0021】
[0037]
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含む。宛先デバイス14は、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、動きベクトルの適応サブピクセル精度をサポートするための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他のコンポーネントまたは配置を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信することができる。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースしてもよい。
【0022】
[0038]
図1の例示されたシステム10は、一例にすぎない。動きベクトルの適応サブピクセル精度をサポートするための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法は、ビデオ符号化デバイスによって実行されるが、これらの技法は、通常は「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が、宛先デバイス14に送信するためのコード化ビデオデータを生成するコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、もしくはビデオ電話のためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
【0023】
[0039]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからのビデオフィードを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ付き電話を形成し得る。しかしながら、上記で述べたように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/またはワイヤードの応用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【0024】
[0040]宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28は情報を復調する。この場合も、ビデオ符号化プロセスは、動きベクトルの適応サブピクセル精度をサポートするための本明細書で説明する技法のうちの1つまたは複数を実装し得る。チャネル16を介して通信される情報は、マクロブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
【0025】
[0041]
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するための任意の好適な通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【0026】
[0042]ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4、Part10、Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格など、ビデオ圧縮規格に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例にはMPEG−2およびITU−T H.263がある。
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP:user datagram protocol)などの他のプロトコルに準拠し得る。
【0027】
[0043]ITU−T H.264/MPEG−4(AVC)規格は、共同ビデオ部会(JVT)として知られる共同パートナーシップの成果としてISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)によって策定された。いくつかの態様では、本開示で説明される技法は、H.264規格に概ね準拠するデバイスに適用され得る。H.264規格は、ITU−T研究委員会(Study Group)による2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ばれることがある。Joint Video Team(JVT)は、H.264/AVCへの拡張に取り組み続けており、また、たとえばHEVCのための新しい規格を開発し続けている。
【0028】
[0044]ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのカメラ、コンピュータ、モバイルデバイス、加入者デバイス、ブロードキャストデバイス、セットトップボックス、サーバなどに統合され得る。
【0029】
[0045]ビデオシーケンスは、一般に一連のビデオフレームを含む。ピクチャのグループ(GOP)は、概して、一連の1つまたは複数のビデオフレームを備える。GOPは、GOPに含まれるフレームの数を記述するシンタックスデータを、GOPのヘッダ、GOPの1つもしくは複数のフレームのヘッダ、または他の場所に含む場合がある。各フレームは、それぞれのフレームの符号化モードを記述するフレームシンタックスデータを含む場合がある。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。ビデオブロックは、マクロブロックまたはマクロブロックのパーティションに対応し得る。ビデオブロックは、サイズを固定することも変更することもでき、指定のコーディング規格に応じてサイズが異なることがある。各ビデオフレームは複数のスライスを含み得る。各スライスは複数のマクロブロックを含み得、それらのマクロブロックは、サブブロックとも呼ばれるパーティションに構成され得る。
【0030】
[0046]一例として、ITU−T H.264規格は、ルーマ成分については16×16、8×8、または4×4、およびクロマ成分については8×8などの様々なブロックサイズでのイントラ予測をサポートし、ならびにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8および4×4、ならびにクロマ成分については対応するスケーリングされたサイズなどの様々なブロックサイズでのインター予測をサポートする。本開示では、「N×(x)N」と「N×(by)N」は、垂直寸法および水平寸法に関するブロックのピクセル寸法(たとえば、16×(x)16ピクセルまたは16×(by)16ピクセル)を指すために互換的に使用され得る。一般に、16x16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にNピクセル、水平方向にNピクセルを有し、Nが非負の整数値を表す。ブロック中のピクセルは、行および列に配置され得る。さらに、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有するとは限らない。たとえば、ブロックはN×Mピクセルを備え得、この場合、Mは必ずしもNに等しいとは限らない。
【0031】
[0047]16×16よりも小さいブロックサイズは、16×16マクロブロックのパーティションと呼ばれる場合がある。ビデオブロックは、ピクセル領域中のピクセルデータのブロックを備え得、あるいは、たとえば、コード化ビデオブロックと予測ビデオブロックとの間のピクセル差分を表す残差ビデオブロックデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換の適用後の、変換領域中の変換係数のブロックを備え得る。場合によっては、ビデオブロックは、変換領域中の量子化変換係数のブロックを備え得る。
【0032】
[0048]小さいビデオブロックほど、より良い解像度が得られ、高い詳細レベルを含むビデオフレームのロケーションのために使用され得る。概して、マクロブロック、およびサブブロックと呼ばれることがある様々なパーティションは、ビデオブロックとみなされ得る。さらに、スライスは、マクロブロックおよび/またはサブブロックなど、複数のビデオブロックであるとみなされ得る。各スライスは、ビデオフレームの単独で復号可能なユニットであってよい。代替的に、フレーム自体が復号可能なユニットであってよく、またはフレームの他の部分が復号可能なユニットとして定義され得る。「コード化ユニット」という用語は、フレーム全体、フレームのスライス、シーケンスとも呼ばれるピクチャグループ(GOP)など、ビデオフレームの単独で復号可能な任意のユニット、または適用可能なコーディング技法に従って定義される別の単独で復号可能なユニットを指すことがある。
【0033】
[0049]高効率ビデオコーディング(HEVC)と呼ばれる新しいビデオコーディング規格が最近に確定されている。スクリーンコンテンツコーディング拡張と呼ばれる拡張を含めて、HEVCに対する様々な拡張を開発するための取り組みが現在、進行中である。HEVCの規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスのモデルに基づいていた。HMは、たとえば、ITU−T H.264/AVCによるデバイスに勝るビデオコーディングデバイスのいくつかの能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供する。
【0034】
[0050]HMは、ビデオデータのブロックをコーディングユニット(CU)と呼ぶ。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットである最大コーディングユニット(LCU)を定義し得る。概して、CUは、CUがサイズの差異を有しないことを除いて、H.264のマクロブロックと同様の目的を有する。したがって、CUはサブCUに分割され得る。概して、本開示におけるCUへの言及は、ピクチャの最大コーディングユニットまたはLCUのサブCUを指すことがある。LCUはサブCUに分割され得るし、各サブCUはサブCUに分割され得る。ビットストリームのためのシンタックスデータは、CU深度と呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU)をも定義し得る。本開示はまた、「ブロック」という用語を使用して、CU、PU、またはTUのいずれをも指す。その上、本開示において、コーディングユニットまたはCUに関与する例に言及する場合、コーディングユニットの代わりにマクロブロックに関する他の例が与えられ得ることを理解されたい。
【0035】
[0051]LCUは、4分木データ構造に関連付けられ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはLCUに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、その各々は、サブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのためのシンタックスデータを与え得る。たとえば、4分木中のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示すスプリットフラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。
【0036】
[0052](たとえば、4分木データ構造中のリーフノードに対応する)分割されないCUは、1つまたは複数の予測ユニット(PU)を含み得る。一般に、PUは、対応するCUの全部または一部を表し、そのPU用の参照サンプルを取り出すためのデータを含む。たとえば、PUがイントラモード符号化されるとき、PUは、PUに関するイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUに関する動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、整数ピクセル精度、1/4ピクセル精度、1/8ピクセル精度)、動きベクトルが指し示す参照フレーム、および/または動きベクトルの参照リスト(たとえば、リスト0もしくはリスト1)を記述し得る。PUを定義するCU用のデータはまた、たとえば、CUを1つまたは複数のPUに区分化することを記述し得る。区分化モードは、CUがコーディングされていないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかの間で異なる場合がある。
【0037】
[0053]1つまたは複数のPUを有するCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。PUを使用した予測の後に、ビデオエンコーダは、PUに対応するCUの部分の残差値を計算し得る。残差値は変換され、量子化され、走査され得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、同じCU用の対応するPUよりも大きくてもまたは小さくてもよい。いくつかの例では、TUの最大サイズは、TUを含むCUのサイズに対応し得る。
【0038】
[0054]本開示の技法によれば、ビデオエンコーダ20は、異なるサブ整数ピクセル精度の動きベクトルを有する1つまたは複数のPUを使用してCUをインターモード符号化し得る。たとえば、ビデオエンコーダ20は、符号化されているビデオデータのコンテンツに基づいて、PUに対して、整数ピクセル精度または分数(たとえば1/4または1/8)ピクセル精度を有する動きベクトルを使用することの間で選択し得る。本開示のいくつかの技法によれば、ビデオエンコーダ20は、符号化されたビデオデータのビットストリームに含めるために、PUの動きベクトルに対するサブピクセル精度の指示(indication)を生成することを必要としない場合がある。代わりに、ビデオデコーダ30は、ビデオエンコーダ20によって使用されるものと同じ導出技法を使用して、動きベクトル精度を導出し得る。本開示の他の技法によれば、ビデオエンコーダ20は、符号化されたビデオデータのビットストリーム内に、選択された動きベクトル精度を決定するためにビデオデコーダ30が使用し得る1つまたは複数のシンタックス要素を含め得る。
【0039】
[0055]サブ整数ピクセル位置の値を計算するために、ビデオエンコーダ20は様々な補間フィルタを含み得る。たとえば、サブ整数ピクセル位置の値を計算するために双一次補間が使用され得る。ビデオエンコーダ20は、PUのルミナンスデータに関して動き探索を実行して、PUのルミナンスデータを使用して動きベクトルを計算するように構成され得る。ビデオエンコーダ20は、次いで、PUのクロミナンスデータを符号化するために動きベクトルを再利用し得る。一般に、クロミナンスデータは、対応するルミナンスデータよりも低い解像度、たとえば、ルミナンスデータの1/4の解像度を有する。したがって、クロミナンスデータの動きベクトルは、ルミナンスデータの動きベクトルよりも高い精度を有し得る。たとえば、ルミナンスデータの1/4ピクセル精度動きベクトルは、クロミナンスデータに対して1/8ピクセル精度を有し得る。同様に、ルミナンスデータの1/8ピクセル精度動きベクトルは、クロミナンスデータに対して1/16ピクセル精度を有し得る。
【0040】
[0056]予測データと残差データとを生成するためのイントラ予測コーディングまたはインター予測コーディングの後に、および変換係数を生成するための(H.264/AVCにおいて使用される4×4または8×8整数変換、あるいは離散コサイン変換DCTなどの)任意の変換の後に、変換係数の量子化が実行され得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化されるプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減し得る。たとえば、nビットの値は、量子化の間にmビットの値に端数を丸められてよく、ここで、nはmよりも大きい。
【0041】
[0057]量子化の後に、たとえば、コンテンツ適応型可変長コーディング(CAVLC:content adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、または別のエントロピーコーディング方法に従って、量子化データのエントロピーコーディングが実行され得る。エントロピーコーディング用に構成された処理ユニット、または別の処理ユニットは、量子化係数のゼロランレングスコーディング、および/またはコード化ブロックパターン(CBP:coded block pattern)値、マクロブロックタイプ、コーディングモード、LCUサイズなどのシンタックス情報の生成など、他の処理機能を実行し得る。
【0042】
[0058]宛先デバイス14のビデオデコーダ30は、本開示のビデオエンコーダ20の技法のいずれかまたはすべてと同様の、概して対称的な技法を実行するように構成され得る。たとえば、ビデオデコーダ30は、CUのPUの動きベクトルのサブピクセル精度の指示が符号化されたコンテキストを定義する情報を受信するように構成され得る。ビデオエンコーダ20は、CUとPUとを含むLCUのための4分木におけるコンテキスト情報を与え得、ビデオデコーダ30は、そのコンテキスト情報を受信し得る。コンテキスト情報は、CUおよび/またはPUについてのサイズ情報、たとえば、CUの深さ、PUのサイズ、および/またはPUのタイプに対応し得る。ビデオデコーダ30は、たとえば、動きベクトルが1/4ピクセル精度を有するのか1/8ピクセル精度を有するのかを決定するために、コンテキスト情報を使用して、動きベクトルのサブピクセル精度の指示を復号し得る。たとえば、ビデオデコーダ30は、動きベクトルのサブピクセル精度の指示をエントロピー復号するために、コンテキスト情報を使用して逆エントロピーコーディングプロセスを実行し得る。
【0043】
[0059]ビデオエンコーダ20およびビデオデコーダ30は各々、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せのような、種々の好適なエンコーダまたはデコーダ回路のいずれかとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが複合ビデオエンコーダ/デコーダ(コーデック)の一部として組み込まれ得る。ビデオエンコーダ20および/またはビデオデコーダ30を含む装置は、集積回路、マイクロプロセッサ、および/または携帯電話などのワイヤレス通信デバイスを備える場合がある。
【0044】
[0060]
図2は、適応動きベクトル解像度をサポートするための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、LCUとCUとPUとを含むビデオフレーム内のブロックのイントラ予測およびインター予測を実行し、TUとして符号化され得る残差値を計算し得る。イントラコーディングは、空間的予測に依拠して、所与のビデオフレーム内のビデオにおける空間的冗長性を低減または除去する。インターコーディングは、時間的予測に依拠して、ビデオシーケンスの隣接するフレーム内のビデオにおける時間的冗長性を低減または除去する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指す場合があり、単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指す場合がある。動き推定ユニット42および動き補償ユニット44はインター予測コーディングを実行し得、イントラ予測ユニット46はイントラ予測コーディングを実行し得る。
【0045】
[0061]
図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在ビデオブロックを受信する。
図2の例では、ビデオエンコーダ20は、ビデオデータメモリ38と、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、復号ピクチャバッファ64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。ビデオブロック再構築のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構築されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするための、デブロッキングフィルタ(
図2に示されず)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタ処理することになる。
【0046】
[0062]ビデオデータメモリ38は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ38内に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ64は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ38および復号ピクチャバッファ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ38および復号ピクチャバッファ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ38は、ビデオエンコーダ20の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【0047】
[0063]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受け取る。フレームまたはスライスは、複数のビデオブロック(たとえば、LCU)に分割され得る。動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレーム内の1つまたは複数のブロックに対して、受信されたビデオブロックのインター予測コーディングを実行して、時間圧縮を実現する。イントラ予測ユニット46は、空間圧縮を行うためにコード化されるブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。
【0048】
[0064]モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモードのうちの1つ、すなわち、イントラまたはインターを選択し、得られたイントラコーディングまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に与え、参照フレームとして使用するための符号化されたブロックを再構成するために加算器62に与え得る。モード選択ユニット40がブロックのためにインターモード符号化を選択すると、解像度選択ユニット48はそのブロックの動きベクトルの解像度を選択し得る。たとえば、解像度選択ユニット48は、そのブロックの動きベクトルのために1/8ピクセル精度または1/4ピクセル精度を選択し得る。
【0049】
[0065]一例として、解像度選択ユニット48は、ブロックを符号化するために1/4ピクセル精度動きベクトルを使用することと、ブロックを符号化するために1/8ピクセル精度動きベクトルを使用することとの間の誤差差分を比較するように構成され得る。動き推定ユニット42は、第1のコーディングパスにおいて1つまたは複数の1/4ピクセル精度動きベクトルを使用してブロックを符号化することと、第2のコーディングパスにおいて1つまたは複数の1/8ピクセル精度動きベクトルを使用してブロックを符号化することとを行うように構成され得る。動き推定ユニット42は、さらに、第3の符号化パスにおいてブロックに対して1つまたは複数の1/4ピクセル精度動きベクトルと1つまたは複数の1/8ピクセル精度動きベクトルとの様々な組合せを使用し得る。解像度選択ユニット48は、ブロックの各符号化パスのレートひずみ値を計算し、レートひずみ値間の差分を計算し得る。
【0050】
[0066]差分がしきい値を超えると、解像度選択ユニット48は、ブロックを符号化するために1/8ピクセル精度動きベクトルを選択し得る。解像度選択ユニット48はまた、インターモード予測プロセス中にブロックを符号化するとき、動きベクトルに対して1/8ピクセル精度を使用すべきかまたは1/4ピクセル精度を使用すべきかを決定するために、レートひずみ情報を評価し、ビットバジェット(bit budget)を分析し、および/または他のファクタを分析し得る。インターモード符号化されるべきブロックに対して1/8ピクセル精度または1/4ピクセル精度を選択した後、モード選択ユニット40または動き推定は、動きベクトルの選択された精度を示しているメッセージ(たとえば、信号)を動き推定ユニット42に送り得る。
【0051】
[0067]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念上の目的から別々に示されている。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成する処理である。動きベクトルは、たとえば、現在のフレーム(または、他のコード化ユニット)内のコード化されている現在ブロックに対する予測参照フレーム(または、他のコード化ユニット)内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コード化されるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。
【0052】
[0068]動き推定ユニット42は、復号ピクチャバッファ64においてビデオブロックを参照フレームのビデオブロックと比較することによって、インターコード化フレームのビデオブロックについての動きベクトルを計算する。動き補償ユニット44はまた、参照フレーム、たとえば、IフレームまたはPフレームのサブ整数ピクセルを補間し得る。例として、ITU H.264規格は、2つのリスト、すなわち、符号化されている現在のフレームよりも前の表示順序を有する参照フレームを含むリスト0と、符号化されている現在のフレームよりも後の表示順序を有する参照フレームを含むリスト1とを記述する。したがって、復号ピクチャバッファ64に記憶されるデータは、これらのリストに従って編成され得る。
【0053】
[0069]本開示の技法によれば、動き補償ユニット44は、CUのルミナンスデータの動きベクトルが1/8ピクセル精度を有するときに、CUのクロミナンスデータの1/16ピクセル位置の値を補間するように構成され得る。クロミナンスデータの1/16ピクセル位置の値を補間するために、動き補償ユニット44は双一次補間を利用し得る。したがって、加算器50は、参照ブロックの1/16ピクセル位置の双一次補間値に対するCUのクロミナンスデータの残差を計算し得る。このようにして、ビデオエンコーダ20は、コーディングユニットのルミナンスデータが、ルミナンスデータに対して1/8ピクセル精度を有する動きベクトルを使用して符号化されたとき、双一次補間を使用して、動きベクトルによって識別される参照ブロックのクロミナンスデータの1/16ピクセル位置の値を計算し、参照ブロックの双一次補間値に基づいてコーディングユニットのクロミナンスデータを符号化し得る。
【0054】
[0070]動き推定ユニット42は、復号ピクチャバッファ64からの1つまたは複数の参照フレームのブロックを現在のフレーム、たとえば、PフレームまたはBフレームの符号化されるべきブロックと比較する。復号ピクチャバッファ64内の参照フレームがサブ整数ピクセルの値を含むとき、動き推定ユニット42によって計算される動きベクトルは参照フレームのサブ整数ピクセルロケーションを参照し得る。動き推定ユニット42および/または動き補償ユニット44はまた、サブ整数ピクセル位置の値が復号ピクチャバッファ64に記憶されていない場合、復号ピクチャバッファ64に記憶された参照フレームのサブ整数ピクセル位置の値を計算するように構成され得る。動き推定ユニット42は、計算された動きベクトルを、エントロピー符号化ユニット56および動き補償ユニット44に送る。動きベクトルによって識別される参照フレームブロックは予測ブロックと呼ばれることがある。
【0055】
[0071]ビデオエンコーダ20の動き推定ユニット42、動き補償ユニット44、モード選択ユニット40、または別のユニットはまた、ブロックを符号化するために使用される動きベクトルについての1/4ピクセル精度の使用かまたは1/8ピクセル精度の使用かをシグナリングし得る。たとえば、動き推定ユニット42は、動きベクトルのサブ整数ピクセル精度の指示をエントロピー符号化ユニット56に送り得る。動き推定ユニット42はまた、動きベクトルに対応するPUについてのサイズ情報に関係するコンテキスト情報をエントロピー符号化ユニット56に与え得、サイズ情報は、PUを含むCUの深さ、PUのサイズ、および/またはPUのタイプのいずれかまたはすべてを含み得る。
【0056】
[0072]動き補償ユニット44は、予測ブロックに基づいて予測データを計算し得る。ビデオエンコーダ20は、コーディングされている元のビデオブロックから、動き補償ユニット44からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。
【0057】
[0073]変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義される変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化処理は、係数の一部またはすべてに関連するビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって、変更され得る。
【0058】
[0074]量子化の後、エントロピー符号化ユニット56は、量子化変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、CAVLC、CABAC、または別のエントロピー符号化技法を実行することができる。エントロピー符号化ユニット56によるエントロピーコーディングの後に、符号化ビデオは、別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。コンテキスト適応型バイナリ算術コーディングの場合、コンテキストは隣接マクロブロックに基づく場合がある。
【0059】
[0075]場合によっては、エントロピー符号化ユニット56またはビデオエンコーダ20の別のユニットは、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット56は、マクロブロックおよびパーティションのCBP値を決定するように構成され得る。また、場合によっては、エントロピー符号化ユニット56は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。特に、エントロピー符号化ユニット56は、マクロブロックまたはパーティション中の変換係数を走査するためにジグザグ走査または他の走査パターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピー符号化ユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。
【0060】
[0076]本開示の技法によれば、サブピクセル精度が導出されるのではなくシグナリングされる場合では、エントロピー符号化ユニット56は、たとえば、動きベクトルが整数ピクセル精度を有するのか、1/4ピクセル精度もしくは1/8ピクセル精度(または、様々な例において他のサブピクセル精度)などのサブピクセル精度を有するのかを示すための、動きベクトルのサブピクセル精度の指示を符号化するように構成され得る。エントロピー符号化ユニット56は、CABACを使用して指示を符号化し得る。さらに、エントロピー符号化ユニット56は、動きベクトルに対応するPUについてのサイズ情報を示す、CABACを実行するためのコンテキスト情報を使用して指示を符号化し得、サイズ情報は、PUを含むCUの深さ、PUのサイズ、および/またはPUのタイプのいずれかまたはすべてを含み得る。
【0061】
[0077]ビデオエンコーダ20は、次いで、動きベクトルを予測的にシグナリングし得る。ビデオエンコーダ20によって実装され得る予測的なシグナリング技法の2つの例が、高度動きベクトル予測(AMVP)とマージモードシグナリングとを含む。AMVPでは、ビデオエンコーダ20とビデオデコーダ30の両方が、すでにコード化されたブロックから決定された動きベクトルに基づいて、候補リストを収集する。ビデオエンコーダ20は次いで、動きベクトル予測子(MVP)を識別するためにインデックスを候補リストの中にシグナリングし、動きベクトル差分(MVD)をシグナリングする。ビデオデコーダ30は、MVDによって修正されたMVPを使用して、たとえばMVP+MVDに等しい動きベクトルを使用して、ブロックをインター予測する。
【0062】
[0078]マージモードでは、ビデオエンコーダ20とビデオデコーダ30の両方が、すでにコード化されたブロックに基づいて候補リストを収集し、ビデオエンコーダ20は、候補リスト内の候補のうちの1つに対してインデックスをシグナリングする。マージモードでは、ビデオデコーダ30は、シグナリングされた参照ピクチャインデックスおよび候補の動きベクトルを使用して、現在ブロックをインター予測する。AMVPおよびマージモードでは、ビデオエンコーダ20とビデオデコーダ30は、ブロックを符号化する方法を決定するときにビデオエンコーダ20によって使用されるリストが、ブロックを復号する方法を決定するときにビデオデコーダ30によって使用されるリストと一致するように、同じリスト構築技法を利用する。
【0063】
[0079]逆量子化ユニット58および逆変換ユニット60は、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成するために、それぞれ逆量子化と逆変換とを適用する。動き補償ユニット44は、復号ピクチャバッファ64のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定での使用のためにサブ整数ピクセル値を計算するために、1つまたは複数の補間フィルタを再構築された残差ブロックに適用し得る。加算器62は、復号ピクチャバッファ64内に記憶するための再構成されたビデオブロックを生成するために、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償された予測ブロックに加算する。再構成されたビデオブロックは、後続ビデオフレーム中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42と動き補償ユニット44とによって使用され得る。
【0064】
[0080]
図3は、符号化ビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、復号ピクチャバッファ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(
図2)に関して説明した符号化パスとは概して逆の復号パスを実施し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得る。
【0065】
[0081]ビデオデータメモリ68は、ビデオデコーダ30の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ68に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータの有線もしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ68は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ82は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ68および復号ピクチャバッファ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ68および復号ピクチャバッファ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ68は、ビデオデコーダ30の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【0066】
[0082]エントロピー復号ユニット70は、たとえばビデオデータメモリ68から、符号化されたビットストリームを取り出し得る。符号化されたビットストリームはエントロピーコード化ビデオデータを含み得る。エントロピー復号ユニット70は、エントロピーコーディングされたビデオデータを復号し得、そのエントロピー復号されたビデオデータから、動き補償ユニット72は、動きベクトル、動きベクトル精度、参照ピクチャリストインデックス、および他の動き情報を含めて、動き情報を決定し得る。動き補償ユニット72は、たとえば、上で説明したAMVPおよびマージモード技法を実施することによって、そのような情報を決定し得る。
【0067】
[0083]動き補償ユニット72は、ビットストリーム中で受信した動きベクトルを使用して、参照ピクチャメモリ82中の参照フレーム中の予測ブロックを識別し得る。イントラ予測ユニット74は、ビットストリーム内で受信されたイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成することができる。逆量子化ユニット76は、ビットストリーム内で与えられ、エントロピー復号ユニット70によって復号された量子化ブロック係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、たとえば、H.264復号規格によって定義された従来のプロセスを含み得る。逆量子化プロセスはまた、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、マクロブロックごとにエンコーダ20によって計算される量子化パラメータQP
Yの使用を含み得る。
【0068】
[0084]逆変換ユニット58は、ピクセル領域で残差ブロックを作るために、変換係数に逆変換、たとえば逆DCT、逆整数変換、または概念的に類似する逆変換プロセスを適用する。動き補償ユニット72は、動き補償されたブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度を有する動き推定に使用されるべき補間フィルタ用の識別子は、シンタックス要素に含まれ得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。本開示の技法によれば、動き補償ユニット72は、動きベクトルがルミナンスデータに対して1/8ピクセル精度を有するときに、参照ブロックのクロミナンスデータの1/16ピクセル位置の値を補間し得る。たとえば、動き補償ユニット72は、双一次補間を使用して、参照ブロックの1/16ピクセル位置の値を補間し得る。
【0069】
[0085]動き補償ユニット72は、シンタックス情報のいくつかを使用して、符号化されたビデオシーケンスの(1つまたは複数の)フレームおよび/または(1つまたは複数の)スライスを符号化するために使用されたLCUおよびCUのサイズと、符号化されたビデオシーケンスのフレームの各マクロブロックがどのように区分されるかを記述するパーティション情報と、各パーティションがどのように符号化されるかを示すモードと、各インター符号化CUのための1つまたは複数の参照フレーム(および参照フレームリスト)と、符号化されたビデオシーケンスを復号するための他の情報とを決定する。
【0070】
[0086]加算器80は、残差ブロックを、動き補償ユニット72またはイントラ予測ユニットによって生成された対応する予測ブロックと加算して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタ処理するためのデブロッキングフィルタも適用され得る。復号されたビデオブロックは、次いで、復号ピクチャバッファ82に記憶され、復号ピクチャバッファ82は、参照ブロックを後続の動き補償のために与え、また、(
図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号されたビデオを生成する。
【0071】
[0087]
図4は、フルピクセル位置に対する分数ピクセル位置を示す概念図である。特に、
図4は、フルピクセル(ペル)100に対する分数ピクセル位置を示している。フルピクセル100は、1/2ピクセル位置102A〜102C(1/2ペル102)と、1/4ピクセル位置104A〜104L(1/4ペル104)と、1/8ピクセル位置106A〜106AV(1/8ペル106)とに対応する。
【0072】
[0088]
図4は、ブロックの1/8ピクセル位置106が随意に含まれ得ることを示すために、破線の輪郭を使用してこれらの位置を示している。すなわち、動きベクトルが1/8ピクセル精度を有する場合、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、1/4ピクセル位置104、または1/8ピクセル位置106のいずれかをポイントし得る。しかしながら、動きベクトルが1/4ピクセル精度を有する場合、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、または1/4ピクセル位置104のいずれかをポイントし得るが、1/8ピクセル位置106はポイントしないであろう。さらに、他の例では、他の精度、たとえば、1/16ピクセル精度、1/32ピクセル精度などが使用され得ることを理解されたい。
【0073】
[0089]フルピクセル位置100におけるピクセルの値は、対応する参照フレーム中に含まれ得る。すなわち、フルピクセル位置100におけるピクセルの値は、概して、たとえば、参照フレームが表示されるときに最終的にレンダリングされ、表示される参照フレーム中のピクセルの実効値に対応する。(分数ピクセル位置と総称される)1/2ピクセル位置102、1/4ピクセル位置104、および1/8ピクセル位置106の値は、適応補間フィルタまたは固定補間フィルタ、たとえば、様々なウィーナーフィルタ(Wiener filter)、双一次フィルタ、または他のフィルタなど、様々な数の「タップ」(係数)のフィルタを使用して補間され得る。概して、分数ピクセル位置の値は、隣接するフルピクセル位置または前に決定された分数ピクセル位置の値に対応する1つまたは複数の隣接ピクセルから補間され得る。
【0074】
[0090]本開示の技法によれば、ビデオエンコーダ20などのビデオエンコーダは、たとえば、整数ピクセル精度または1/8ピクセル精度および1/4ピクセル精度などの分数ピクセル精度の間で、動きベクトルの精度を適応的に選択し得る。ビデオエンコーダ20は、各動きベクトル、各CU、各LCU、各スライス、各フレーム、各GOP、またはビデオデータの他のコード化ユニットについてこの選択を行い得る。ビデオエンコーダ20が動きベクトルに対して1/4ピクセル精度を選択するとき、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、または1/4ピクセル位置104のいずれかを参照し得る。ビデオエンコーダ20が動きベクトルに対して1/8ピクセル精度を選択するとき、動きベクトルは、フルピクセル位置100、1/2ピクセル位置102、1/4ピクセル位置104、または1/8ピクセル位置106のいずれかを参照し得る。
【0075】
[0091]
図5A〜
図5Cは、対応するクロミナンスピクセル位置およびルミナンスピクセル位置を示す概念図である。
図5A〜
図5Cはまた、ルミナンスデータについて計算された動きベクトルがどのようにクロミナンスデータのために再利用され得るかを示している。前置きとして、
図5A〜
図5Cはピクセル位置の部分行を示している。実際には、フルピクセル位置は、
図4に示したものなど、関連する分数ピクセル位置の矩形格子を有し得ることを理解されたい。
図5A〜
図5Cの例は、本開示において説明する概念を示すものであり、分数クロミナンスピクセル位置と分数ルミナンスピクセル位置との間の対応の網羅的なリストとして意図されていない。
【0076】
[0092]
図5A〜
図5Cは、フルルミナンスピクセル位置110と、1/2ルミナンスピクセル位置116と、1/4ピクセル位置112と、1/8ルミナンスピクセル位置114A、114Bとを含む、ルミナンスブロックのピクセル位置を示している。
図5A〜
図5Cはまた、フルクロミナンスピクセル位置120と、1/4クロミナンスピクセル位置122と、1/8クロミナンスピクセル位置124と、1/16クロミナンスピクセル位置126A、126Bとを含む、クロミナンスブロックの対応するピクセル位置を示している。この例では、フルクロミナンスピクセル120はフルルミナンスピクセル110に対応する。さらに、この例では、クロミナンスブロックは、ルミナンスブロックに対して、水平および垂直に2分の1にダウンサンプリングされる。したがって、1/4クロミナンスピクセル122は1/2ルミナンスピクセル116に対応する。同様に、1/8クロミナンスピクセル124は1/4ルミナンスピクセル112に対応し、1/16クロミナンスピクセル126Aは1/8ルミナンスピクセル114Aに対応し、1/16クロミナンスピクセル126Bは1/8ルミナンスピクセル114Bに対応する。
【0077】
[0093]H.264/AVC、HEVC、ならびに潜在的にはH.264およびHEVCに対する後継コードなど、高度なビデオコードでは、動きベクトルをシグナリングするビットコストが増加し得る。このビットコストを低下させるために、デコーダサイドMV導出(DMVD)が使用され得る。S.Kamp And M.Wien、「Decoder−side motion vector derivation for block−based video coding」、IEEE Transactions on Circuits and Systems for Video Technology、vol.22、pp.1732−1745、Dec.2012には、L字形状のテンプレートマッチングに基づいたDMVDが提案されている。
【0078】
[0094]
図6は、DMVDのための例示的なL字形状テンプレートマッチングの図である。
図6の例では、現在ピクチャ134の現在ブロック132は、テンプレートマッチングを使用してインター予測されている。テンプレート136は、現在ブロック132のうちの復号済みの隣接ブロックをカバーする形状を規定する。ビデオデコーダ(たとえばビデオデコーダ30)は、たとえば、まず、テンプレート136によってカバーされる復号済みの隣接ブロックに含まれるピクセル値を、参照ピクチャ140の参照ピクチャに位置するブロックをカバーする、コロケートされたテンプレート138によってカバーされる復号済みの隣接ブロックに含まれるピクセル値と、比較し得る。ビデオデコーダは次いで、参照ピクチャ内の他のロケーションへテンプレートを移動させ、テンプレートによってカバーされるピクセル値を、テンプレート136によってカバーされる復号済みの隣接ブロックに含まれるピクセル値と、比較し得る。
【0079】
[0095]これらの多重比較に基づいて、ビデオデコーダは、
図6の例に示される最良マッチ142などの最良マッチを決定し得る。ビデオデコーダは次いで、最良マッチとコロケートされたテンプレートとの間の変位を決定し得る。この変位(たとえば、
図6の変位144)は、現在ブロック132を予測するために使用される動きベクトルに対応する。
【0080】
[0096]
図6に示すように、ブロックがDMVDモードでコーディングされるとき、ブロックのMVは、ビデオデコーダ30へ直接シグナリングされるのとは対照的に、ビデオデコーダ30によって探索される。テンプレートマッチングによる最小のひずみにつながるMVは、ブロックの最終MVとして選択される。高いコーディング効率を保つためには、デコーダ30が候補動きベクトルを、現在ブロックを復号するためのMVとして選択するために一定数のテンプレートマッチが必要となり得、それによって復号の複雑さが増大し得る。
【0081】
[0097]DMVDにおける復号の複雑さを低減するために、ミラーベースの双方向性MV導出法が、Y.−J.Chiu、L.Xu、W.Zhang、H.Jiang、「DECODER−SIDE MOTION ESTIMATION AND WIENER FILTER FOR HEVC」、VCIP workshop 2013、Malaysia、17−20 Nov.、2013において提案されていた。
【0082】
[0098]
図7は、例示的なミラーベースの双方向MV導出を示す概念図である。
図7に示すように、ミラーベースの双方向性MV導出は、デコーダサイドで分数サンプル確度にて、探索中心の周りの中心対称動き推定によって適用され得る。探索ウィンドウのサイズ/ロケーションは、あらかじめ規定され、ビットストリームにおいてシグナリングされ得る。
図7では、dMVは、MVペア、つまりMV0とMV1を生成するために、PMV0に加算され、PMV1から減算されるオフセットである。探索ウィンドウ内部のdMVの値はすべてチェックされ得、L0参照とL1参照ブロックとの間の絶対差分和(SAD)が、中心対称動き推定の測定値として使用され得る。最小のSADを有するMVペアが、ブロックの最終MVとして選択され得る。
【0083】
[0099]適応動きベクトル解像度に対し、サブピクセル動き補償は通常、整数ピクセル動き補償よりもはるかに効率的となり得る。超高周波を有するテクスチャまたはスクリーンコンテンツなど、いくつかのコンテンツに対しては、しかしながら、サブピクセル動き補償は、より優れたパフォーマンスを有し得ず、または場合によっては、さらに悪いパフォーマンスを有し得る。そのような場合、整数ピクセル精度を有するMVのみを有することが、より良好となり得る。
【0084】
[0100]L.Guo、P.Yin、Y.Zheng、X.Lu、Q.Xu、J. Sole「Adaptive motion vector resolution with implicit signaling」CIP 2010:2057−2060に記載されているように、適応MV解像度が、再構成された残差に基づいて提案されている。再構成された残差ブロックの変動がしきい値を超えたとき、1/4ピクセル動きベクトル精度が使用される。他の場合、1/2ピクセル動きベクトル精度が適用される。J.An、X.Li、X.Guo、S.Lei、「Progressive MV Resolution」、JCTVC−F125、Torino、Italy、Jul. 2011に記載されているように、MV解像度は、シグナリングされたMV差分の大きさに基づいて適応的に決定される。Y.Zhou、B.Li、J.Xu、G.J.Sullivan、B.Lin、「Motion Vector Resolution Control for Screen Content Coding」、JCTVC−P0277、San Jose、US、Jan. 2014に記載されているように、動きベクトル予測情報がスライスレベルでシグナリングされる。
【0085】
[0101]これまで、デコーダサイド動きベクトル精度導出法は、特にスクリーンコンテンツコーディングに対して、非常に効率的であるとは証明されていない。加えて、カメラ収集コンテンツ、スクリーンコンテンツ、および他のタイプのコンテンツを含めて、すべてのタイプのコンテンツに対して効率的であると証明されたデコーダサイド動きベクトル精度導出法は1つもない。加えて、適応的動きベクトル精度法はこれまで、スクリーンコンテンツコーディングには効率的ではないと証明されてきた。
【0086】
[0102]本開示で説明する技法を実装するいくつかの例では、デコーダサイド動きベクトル精度導出法がスクリーンコンテンツに対して提案される。この例では、動きベクトル精度は、デコーダサイドでのテンプレートマッチングの結果に依存し得る。整数ピクセル位置のテンプレートマッチングの結果とその隣接サブピクセル位置のテンプレートマッチングの結果とが大いに異なるとき、関連する領域はスクリーンコンテンツとみなされ得、整数ピクセル精度を有するMVが使用されるべきである。他の場合、サブピクセル動きベクトル精度が使用される。「大いに異なる」を定義するために、1つまたは複数の固定型または適応型のしきい値が使用され得る。
【0087】
[0103]ビデオデコーダ30は、たとえば、テンプレートマッチングに基づいて動きベクトル精度を決定することによって、ビデオデータを復号し得る。そのような例では、ビデオデコーダ30は、コーディングされている現在ブロックに対し、すでにコード化された隣接ブロックの整数ピクセル位置を識別し、その整数ピクセル位置のロケーションに基づいて、複数の整数ピクセル位置を決定するためにテンプレートを適用し得る。ビデオデコーダ30はまた、複数のサブピクセル位置を決定するために、複数のサブピクセル位置にテンプレートを適用し得る。テンプレートは、たとえば形状を規定し得、ビデオデコーダ30は、現在ブロックに対する形状のロケーションに基づいて、複数の整数ピクセル位置を位置特定することによって、複数の整数ピクセル位置を決定するためにテンプレートをビデオデータに適用し得る。同様に、ビデオデコーダ30は、現在ブロックに対する形状のロケーションに基づいて、複数のサブピクセルピクセル位置を位置特定することによって、複数のサブピクセル位置を決定するためにテンプレートをビデオデータに適用し得る。
【0088】
[0104]ビデオデコーダ30は、複数の整数ピクセル位置の1つまたは複数のピクセル値を、複数のサブピクセル位置の1つまたは複数のピクセル値と比較し、その比較に基づいて、動きベクトルの動きベクトル精度を決定し得る。ビデオデコーダ30は、動きベクトルを使用して現在ブロックを復号し得る。ビデオデコーダ30は、たとえば、マージモード、AMVPモード、または他のそのようなモードを使用して、動きベクトルを決定し得る。
【0089】
[0105]ビデオデコーダ30は、複数の整数ピクセル位置の1つまたは複数のピクセル値と複数のサブピクセル位置の1つまたは複数のピクセル値との間のピクセル値の差の大きさに対応する差分値を決定するために、複数の整数ピクセル位置の1つまたは複数のピクセル値を複数のサブピクセル位置の1つまたは複数のピクセル値と比較することによって、動きベクトルの動きベクトル精度を決定し得る。差分値がしきい値よりも大きいことに応答して、ビデオデコーダ30は、動きベクトル精度が整数ピクセル精度であると決定する。差分値がしきい値よりも低いことに応答して、ビデオデコーダ30は、動きベクトル精度がサブピクセル精度であると決定し得る。しきい値は、固定値、適応値、または何らかの他のタイプの値であり得る。複数の整数ピクセル位置の1つまたは複数のピクセル値を複数のサブピクセル位置の1つまたは複数のピクセル値と比較するために、ビデオデコーダ30は、たとえば、複数の整数ピクセル位置の1つまたは複数のピクセル値と複数のサブピクセル位置の1つまたは複数のピクセル値との間の絶対差分和を決定し得る。
【0090】
[0106]本開示の他の技法によれば、動きベクトル精度は、空間的に隣接するブロック、時間的に隣接するブロック、またはその両方のプロパティ(先鋭度、階調度、または変換がスキップされるかどうかなど)に依存し得る。動きベクトル精度情報は、デコーダサイドで導出され得る。代替または追加として、動きベクトル精度は、空間的に隣接するブロック、時間的に隣接するブロック、またはその両方の動きベクトル精度に依存し得る。
【0091】
[0107]ビデオデコーダ30は、たとえば、隣接ブロックのプロパティに基づいて動きベクトル精度を決定し得る。隣接ブロックは、たとえば、少なくとも1つの空間的に隣接するブロックおよび/または少なくとも1つの時間的に隣接するブロックを含み得る。コード化されている現在ブロックに対し、ビデオデコーダ30は、1つまたは複数の隣接ブロックの位置を特定し、その1つまたは複数の隣接ブロックのプロパティを決定し得る。そのプロパティは、たとえば、1つまたは複数の隣接ブロックがスキップモードでコーディングされた場合、1つもしくは複数の隣接ブロックの先鋭度、1つもしくは複数の隣接ブロックの階調度、および/または1つもしくは複数の隣接ブロックの動きベクトル精度のうちの1つまたは複数であり得る。1つまたは複数の隣接ブロックのプロパティに基づいて、ビデオデコーダ30は、動きベクトルに対して動きベクトル精度を決定し、その動きベクトルを使用して現在ブロックを復号し得る。ビデオデコーダ30は、たとえば、どのプロパティを決定すべきかをシグナリングなしに(たとえばコンテキストに基づいて)決定し得るか、固定されたプロパティを常に決定し得るか、または、どのプロパティを決定すべきかの指示を受信し得る。
【0092】
[0108]本開示の別の例示的な技法では、どのデコーダサイド動きベクトル精度法が使用されるかに関するインジケータが、ビットストリームにてシグナリングされ得る。たとえば、インジケータは、直接的にビットストリームにてシグナリングされるか、または、スライスタイプおよび時間レベルなど、ビットストリーム中にコード化された他の情報から導出され得る。
【0093】
[0109]ビデオデコーダ30は、たとえば、符号化されたビデオビットストリームにて、動きベクトル精度シグナリングタイプの指示を受信し、その動きベクトル精度シグナリングタイプに基づいて、ビデオデータのブロックに対する動きベクトル精度を決定し得る。ビデオデコーダ30は、ビデオデータのブロックに対する参照ブロックの位置を特定するために、決定された動きベクトル精度の動きベクトルを使用し得る。動きベクトル精度シグナリングタイプは、たとえば、(1)上記で説明したテンプレートマッチングタイプ、(2)上記で説明した隣接ブロックプロパティベースタイプ、または(3)以下でより詳細に説明するようなダイレクトシグナリングタイプのうちの1つであり得る。
【0094】
[0110]ビデオデコーダ30は、たとえば、スライスヘッダ、SPS、PPS、または何らかの他のレベルでその指示を受信し得る。その指示は、たとえばスライスタイプであり得る。言い換えれば、ビデオデコーダ30は、特定のスライスに対してスライスタイプを決定し得、また、そのスライスタイプに基づいて、そのスライスのブロックを復号するために使用する動きベクトル精度を決定し得る。その指示は、たとえばスライスの時間レベルであり得る。言い換えれば、ビデオデコーダ30は、スライスに対して時間レベルを決定し得、また、そのスライスの時間レベルに基づいて、そのスライスのブロックを復号するために使用する動きベクトル精度を決定し得る。
【0095】
[0111]別の例では、動きベクトル精度情報は、最大コーディングユニットLCUレベル、CUレベルまたはPUレベルなどで、ビットストリームにてシグナリングされ得る。言い換えれば、ビデオエンコーダ20は、符号化されたビデオデータのビットストリームに含めるための1つまたは複数のシンタックス要素を生成し得、ビデオデコーダ30は、ビデオデータの特定のブロックに対して動きベクトル精度を決定するためにそれらのシンタックス要素を構文解析し得る。あるCUが、整数精度MVを有することを指示されるとき、このCU内部のすべてのPUが整数動きベクトル精度を有する。
【0096】
[0112]一例では、マージ/スキップモードに対し、ビデオデコーダ30は、動き補償を実施するときのみ、動きベクトルを整数精度に丸め得る。丸められていないMVは、後のブロックのMV予測のために保存され得る。たとえば、ビデオデコーダ30は、第1のブロックのコーディングモードがマージモードまたはスキップモードであると決定し得、また第1のブロックの動きベクトル精度が整数ピクセル精度であると決定し得る。ビデオデコーダ30は、少なくとも1つの分数精度動きベクトル候補を含む、第1のブロックのマージ候補リストを構築し得る。ビデオデコーダ30は、第1のブロックを復号するために分数精度動きベクトル候補を選択し、整数ピクセル精度動きベクトルを決定するために分数精度動きベクトル候補を丸め得る。ビデオデコーダ30は、整数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定し得る。
【0097】
[0113]第2のブロック(たとえば、第1のブロックの情報に基づいてコード化されたブロック)に対し、ビデオデコーダ30は、第2のブロックの候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)に整数精度動きベクトル候補を加え得る。他の例では、しかしながら、ビデオデコーダ30は、第2のブロックの候補リストに分数精度動きベクトル候補を加え得る。
【0098】
[0114]非マージ/スキップインターモードに対し、MV予測子は整数精度に丸められ得、MVDは、丸められたMVが後のブロックのMV予測のために保存され得るように、整数精度でシグナリングされ得る。代替的にまたは追加として、丸め前のMVは、後のブロックのMV予測に保存され得る。一例では、この場合、丸めは動き補償のためにのみ実施され得る。代替的にまたは追加として、丸められたMVは、動き補償で使用され得、後のブロックのMV予測のために保存され得る。
【0099】
[0115]たとえば、ビデオデコーダ30は、第1のブロックのコーディングモードがマージモード以外のものであると決定し得、また第1のブロックの動きベクトル精度が整数ピクセル精度であると決定し得る。ビデオデコーダ30は、第1のブロックの分数精度MVPを決定し、第1のブロックの整数ピクセル精度MVPを決定するためにその分数精度MVPを丸め得る。ビデオデコーダ30は、整数ピクセル精度である、第1のブロックのMVDを決定し得る。ビデオデコーダ30は、整数ピクセル精度MVPおよび分数精度MVDに基づいて、整数ピクセル精度動きベクトルを決定し得る。ビデオデコーダ30は、整数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定し得る。
【0100】
[0116]ビデオデコーダ30は、たとえば、第1のブロックのAMVP候補リストを構築することによって、第1のブロックの分数精度MVPを決定し得る。AMVP候補リストは、分数精度動きベクトル候補を含み得る。ビデオデコーダ30は、第1のブロックの分数精度MVPとして、分数精度動きベクトル候補を選択し得る。ビデオデコーダ30は、第1のブロックの情報を使用して予測されることになる、第2のブロックの候補リストに、分数精度動きベクトル候補を加え得る。
【0101】
[0117]代替または追加として、一例では、MVD精度情報がシグナリングされ得、サブピクセル精度MVが、いくつかの例では常に使用され得る。MVD精度は、LCUレベルで、CUレベルで、またはPUレベルでシグナリングされ得る。一例では、あるPU(またはCU)が、整数精度MVDを有することを指示されるとき、PU(またはこのCU内部のすべてのPU)が整数MVD精度を有し得る。AMVPコード化PUに対し、PUのMVDは整数ピクセル精度を有し得るが、予測されたMVおよびPUのMVはサブピクセル精度を有し得る。したがって、整数精度MVDをサブピクセル精度MVPに加えることにより、結果として、サブピクセル動きベクトルが得られる。
【0102】
[0118]たとえば、ビデオデコーダ30は、第1のブロックのMVD精度が整数ピクセル精度であると決定し得る。ビデオデコーダ30は、少なくとも1つの分数精度動きベクトル候補を含む、第1のブロックのMVPのマージ候補リスト(たとえば、AMVP候補リスト)を構築し得る。ビデオデコーダ30は、その候補リストから分数精度動きベクトル候補を選択し、分数精度動きベクトル候補および整数ピクセル精度MVDに基づいて分数ピクセル精度動きベクトルを決定し得る。ビデオデコーダ30は、分数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定し得る。
【0103】
[0119]別の例では、動きベクトル精度フラグが、LCUまたはCUに部分的に適用され得る。たとえば、CUの整数精度フラグは、マージおよびスキップなどの既定のコーディングモードを用いて、または非2N×2N区分などの既定の区分を用いて、またはトランスフォームスキップまたは無残差などの特殊なコーディングツールを用いてコーディングされたPUには適用されない。
【0104】
[0120]たとえば、ビデオデコーダ30は、ビデオデータに対してデフォルト動きベクトル精度を決定し、ビデオデータのPUが特殊モードでコーディングされていることに応答して、デフォルト動きベクトル精度の動きベクトルを使用してPUの参照ブロックの位置を特定し得る。特殊モードは、たとえば、スキップモード、2N×2Nマージモード、マージモード、トランスフォームスキップモード、または非対称区分化モードのうちの1つまたは複数であり得る。ビデオデータの第2のPUが特殊モード以外のモードを使用してコーディングされていることに応答して、ビデオデコーダ30は、ビデオデータの第2のPUに対し、シグナリングされた動きベクトル精度を決定し、そのシグナリングされた動きベクトル精度の動きベクトルを使用して第2のPUの参照ブロックの位置を特定し得る。ビデオデコーダ30は、ビデオデータのCUに対し、デフォルト動きベクトル精度とは異なる、シグナリングされた動きベクトル精度を決定し得る。CUは、たとえば、PUおよび/または第2のPUを含み得る。一例では、デフォルト動きベクトル精度は分数動きベクトル精度であるが、シグナリングされた動きベクトル精度は整数ピクセル精度であり得る。他の例では、デフォルト動きベクトル精度は分数動きベクトル精度であり得る。
【0105】
[0121]一例では、MV/MVD精度情報は、非ゼロのMVDを有するPUまたはCUに対してのみシグナリングされ得る。MV/MVD精度情報がシグナリングされていないとき、サブピクセルMVがPUまたはCUに対して使用され得る。MV/MVD精度情報は、PUまたはCUのMVDの後にシグナリングされ得る。ゼロに等しいMVDは、MVDの垂直成分とMVDの水平成分の両方が0に等しいことを意味するために使用され得る。
【0106】
[0122]たとえば、ビデオデータの現在ブロックに対し、ビデオデコーダ30は、あるMVD値を受信し、そのMVD値がゼロに等しいことに応答して、現在ブロックの動きベクトルがサブピクセル動きベクトル精度を有すると決定し得る。MVD値がゼロに等しいことは、MVD値のx成分とMVD値のy成分の両方がゼロに等しいことを指示し得る。ビデオデータの第2の現在ブロックに対し、ビデオデコーダ30は、第2のMVD値を受信し、その第2のMVD値が非ゼロ値であることに応答して、第2の現在ブロックに対する第2の動きベクトルの動きベクトル精度の指示を受信し得る。ビデオデコーダ30は、参照ピクチャにおいて、第2の動きベクトルを使用して第2の現在ブロックの参照ブロックの位置を特定し得る。第2の現在ブロックに対し、ビデオデコーダ30は、第2のMVD値を受信した後に、動きベクトル精度の指示を受信し得る。
【0107】
[0123]MV/MVD精度情報がPUレベルでシグナリングされるとき、以下の条件、つまり、(1)PUがマージ/スキップモードを用いてコーディングされていること、(2)PUがAMVPモードを用いてコーディングされており、PUの各予測方向におけるMVDがゼロに等しいこと、または(3)代替もしくは追加として、1つのCUがイントラコーディングされたPUとインターコーディングされたPUとをともに含み得る(これはHEVCでは認められない)場合、またPUがイントラコーディングされているとき、PUレベルでのMV/MVD精度情報のシグナリングがスキップされること、のうちの1つまたは複数(たとえばいずれか)が真である場合、MV/MVD精度情報はシグナリングされないことがある。
【0108】
[0124]ビデオデコーダ30は、たとえば、ビデオデータの第1のブロック(たとえば第1のPU)に対し、第1の動きベクトル精度情報を受信し得る。ビデオデータの第2のブロックがある条件を満たすことに応答して、ビデオデコーダ30は、デフォルト精度に対応するように第2の動きベクトル情報を決定し得る。一例では、その条件は、第2のブロックがマージモードまたはスキップモードを使用してコーディングされることであり得る。別の例では、その条件は、第2のブロックがAMVPモードを使用してコーディングされており、第2のブロックの各予測方向のMVDがゼロに等しいことであり得る。デフォルト精度は、たとえば、いくつかの例では分数精度、他の例では整数精度であり得る。第1および第2の動きベクトル精度情報は、たとえば、動きベクトル精度またはMVD精度の一方または両方であり得る。
【0109】
[0125]MV/MVD精度情報がCUレベルでシグナリングされるとき、CU内のすべてのPUに対して、以下の条件、つまり、(1)PUがイントラコーディングされていること、(2)PUがマージ/スキップモードを用いてコーディングされていること、または(3)PUがAMVPモードを用いてコーディングされており、PUの各予測方向におけるMVDがゼロに等しいこと、のうちの1つ(場合によっては1つまたは複数)が真である場合、MV/MVD精度情報はシグナリングされないことがある。代替または追加として、動きベクトル精度情報がシグナリングされないとき、整数動きベクトル精度などのデフォルト動きベクトル精度が、PUまたはCUに対して使用され得る。
【0110】
[0126]ビデオデコーダ30は、たとえば、ビデオデータの第1のCUに対し、第1の動きベクトル精度情報を受信し、またビデオデータの第2のCUがある条件を満たすことに応答して、デフォルト精度に対応するように第2の動きベクトル情報を決定し得る。その条件は、たとえば、CU内のすべてのPUがイントラコーディングされること、CU内のすべてのPUがマージモードまたはスキップモードを使用してコーディングされること、CU内のすべてのPUが、ゼロに等しいすべてのPUの各方向に、AMVPおよびMVDを使用してコーディングされることであり得る。デフォルト精度は、たとえば分数精度であってもよく、または精度なしであってもよい。たとえば、あるブロックがイントラ予測される場合、そのブロックは、関連付けられる動きベクトルを有さず、したがって関連付けられる動きベクトル精度を有さない。第1および第2の動きベクトル精度情報は、たとえば、動きベクトル精度またはMVD精度の一方または両方を含み得る。
【0111】
[0127]現在のAMVPコード化PUが、整数ピクセル動きベクトル精度と同様にシグナリング/導出されるとき、空間的な隣接ブロック、時間的な隣接ブロック、またはそれら両方からの1つまたは複数の(いくつかの例ではすべての)MV候補が、AMVPリストの生成プロセスにおける刈り込みの前に、整数ピクセル精度に丸められ得る。整数ピクセルMVが、現在のマージ、スキップコーディングされたCU/PU、またはそれら両方に使用されるようにシグナリング/導出されるとき、空間的な隣接ブロック、時間的な隣接ブロック、またはそれら両方からの1つまたは複数の(いくつかの例ではすべての)MV候補が、マージリストの生成プロセスにおける刈り込みの前に、整数ピクセル精度に丸められ得る。
【0112】
[0128]たとえば、ビデオデコーダ30は、ブロックの候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)に含めるための1つまたは複数の動きベクトル候補を識別し得る。1つまたは複数の動きベクトル候補は、たとえば、1つもしくは複数の空間的な隣接候補および/または1つもしくは複数の時間的な隣接候補を含み得る。1つまたは複数の動きベクトル候補は、少なくとも1つの分数精度動きベクトル候補を含み得る。ブロックの動きベクトル精度が整数ピクセル精度であることに応答して、ビデオデコーダ30は、1つまたは複数の整数精度動きベクトル候補を決定するために、その1つまたは動きベクトル候補を丸め得る。ビデオデコーダ30は、1つまたは複数の整数精度動きベクトル候補に対して、刈り込み操作を実施し得る。
【0113】
[0129]一例では、動きベクトル精度フラグが、他のシンタックス要素のCABACコンテキストとして使用され得るか、または条件付きで使用され得る。すなわち、動きベクトル精度フラグに応じた異なるコンテキストモデルが、特定のシンタックス要素をコーディングするために使用され得る。一例では、PUなどのブロックのAMVP候補インデックスをコーディングするとき、PUもしくは関連するCUまたは空間的に隣接するブロックもしくは時間的に隣接するブロックの動きベクトル精度フラグが、CABACコーディングコンテキストとして使用される。代替または追加として、いくつかの例では、AMVP候補インデックスが0に等しくなる初期化された可能性は、動きベクトル精度フラグが整数ピクセル動きベクトル精度を指示するとき、1の付近に設定され得る。代替または追加として、Bスライスにおいてのみ、または、スライスが一定の時間レベルにあるとき、もしくは量子化パラメータが、あらかじめ定義されたしきい値よりも大きいときのみなど、いくつかの場合には、動きベクトル精度フラグは、AMVP候補インデックスなど、他のシンタックス要素のCABACコンテキストとして使用され得る。
【0114】
[0130]これらの例のうちの1つまたは複数が組み合わされ得る。たとえば、実際には、例の任意の部分の任意の組合せが新たな例として使用され得る。加えて、上記の例の2次的な例が以下で説明されている。
【0115】
[0131]いくつかの例は、スクリーンコンテンツのデコーダサイド動きベクトル精度導出に関する。一例では、再構築されたサンプルに対するL字形状または他の形状のテンプレートマッチングが使用され得る。動きベクトル精度は、SADなどの整数ピクセル位置のテンプレートマッチング結果と、その隣接サブピクセル位置のマッチング結果との差に基づき得る。たとえば、整数ピクセル位置のマッチング結果がはるかに小さいとき、整数ピクセル精度が適用される。他の場合、サブピクセル精度が適用される。「はるかに小さい」を定義するために、しきい値が使用され得る。実際には、固定されたしきい値、適応的なしきい値、またはそれら両方が使用され得る。適応的なしきい値について言えば、適応的なしきい値は、ビットストリームにおいてシグナリングされるか、または、ビットストリームにおいてシグナリングされた、ブロックタイプもしくはQPなどの他の情報に基づいて導出され得る。加えて、「はるかに大きい」場合のしきい値もまた定義され得る。したがって、整数位置から隣接するサブピクセル位置のものを減じたマッチング結果が、「はるかに大きい」しきい値よりも大きいとき、1/4ピクセル精度が使用され得る。マッチングの差が、「はるかに小さい」のしきい値と「はるかに大きい」のしきい値との間にあるとき、1/2ピクセル精度が使用され得る。代替的にまたは追加として、ミラーベースの双方向性テンプレートマッチングなど、他のテンプレートマッチング法が、代わりに、上記の例で使用され得る。
【0116】
[0132]別の例では、動きベクトル精度情報は、階調度、先鋭度、または変換がブロックに対してスキップされるかどうかなど、空間的にまたは時間的に隣接するブロックのプロパティに基づいてデコーダサイドで導出され得る。しきい値情報は、ビットストリームにおいてシグナリングされるか、ビットストリームから導出されるか、またはそれら両方がなされ得る。
【0117】
[0133]いくつかの例はインジケータシグナリングに関係する。種々のコンテンツに適応的に適合するために、デコーダサイド動きベクトル精度導出(DMPD)の種々の方法の組合せが使用され得る。どの方法が使用されているかを指示するために、インジケータがビットストリームにおいてシグナリングされ得る。一例では、インジケータは、どのDMPD法が使用されるかをデコーダに明示的に知らせるために、スライスレベル以上でシグナリングされ得る。別の例では、いくつかのDMPD法の使用がビットストリームにおいてシグナリングされる一方で、他のDMPD法の使用は、ビットストリームにおいて、スライスタイプおよびスライスの時間レベルなどの他の情報に基づいて導出される。
【0118】
[0134]いくつかの例は、シグナリングされる適応型動きベクトル精度に関する。そのような例では、動きベクトル精度は、ビットストリームにおいて、LCU、CUまたはPUレベルなどでシグナリングされ得る。整数精度、1/2ピクセル精度、1/4ピクセル精度、または他の精度など、動きベクトル精度を指示するために、フラグ/値が使用され得る。動きベクトル精度が、1つのブロックまたは1つのリージョン/スライスに対してシグナリングされるとき、このブロック/リージョン/スライス内のすべてのより小さなブロックは、同じ動きベクトル精度を共有し得る。さらに、MVD情報がまた、シグナリングされた精度でシグナリングされ得る。動き補償の前に、MV(MV予測子+MVD)は、シグナリングされた精度に丸められ得る。その丸めは、正の無限大、負の無限大、ゼロ、または無限大(負値は負の無限大に丸められ、正値は正の無限大に丸められる)に向かい得る。代替的にまたは追加として、MV予測子は、最初は上述のように丸められ、次いでブロックのMVを形成し得る。動き補償の後、ブロックのMVは、後のブロックのMV予測のために保存される。MVを保存するとき、丸められたMVは、たとえば、その後に復号されるブロックのマージ候補またはAMVP候補として後に使用されるように保存され得る。代替的にまたは追加として、丸められていないMVが、丸められた動きベクトルの代わりに保存され得、これにより、場合によっては動きフィールドがより正確に保たれ得る。
【0119】
[0135]別の例では、動きベクトル精度情報は、スキップモード、2N×2Nマージモード、またはそれら両方に対してシグナリングされない。そのような例では、動きベクトル精度情報はまた、マージされたPUに対してシグナリングされないこともある。代替または追加として、マージモードおよびスキップモードなどの特殊なコーディングモードで、または非対称パーティションなどの特殊なパーティションを用いて、または特殊なトランスフォーム深さを用いてもしくはトランスフォームスキップを用いてコーディングされているPUは、整数精度MVがそれらのCUレベルでシグナリングされるときでも、1/4ペルなど、デフォルトの動きベクトル精度を保ち得る。代替または追加として、時間レベル、QP、CU深さなど、他のコーディングされた情報がまた、特殊なコーディングモードまたは特殊なコーディングツールとみなされ得る。
【0120】
[0136]CABACを用いて動きベクトル精度情報をエントロピーコーディングするとき、空間的に隣接するブロック/CU内にある動きベクトル精度情報以外のコンテキストは、CU深さ、PU区分化、ブロックサイズ、時間レベルなど、ラインバッファを保存するために使用され得る。
【0121】
[0137]
図8は、本開示に記載される技法に従ってビデオデータを符号化するための例示的な方法を示すフローチャートである。
図8の技法について、ビデオエンコーダ20などのビデオエンコーダを参照しながら説明する。ビデオエンコーダ20は、第1のブロックの動きベクトル精度が整数ピクセル精度であると決定する(202)。ビデオエンコーダ20は、第1のブロックのマージ候補リストを構築する(204)。マージ候補リストを構築することの一部として、ビデオエンコーダ20は、分数精度動きベクトル候補をマージ候補リストに追加し得る。したがって、マージ候補リストは、分数精度動きベクトル候補を含み得る。ビデオエンコーダ20は、第1のブロックを符号化するために分数精度動きベクトル候補を選択する(206)。マージモードを使用して第1のブロックをコーディングするため、ビデオエンコーダ20は、第1のブロックの整数ピクセル精度動きベクトルを決定するために分数精度動きベクトル候補を丸める(208)。ビデオデコーダ20は、整数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定する(210)。ビデオエンコーダ20は、参照ブロックに基づいて第1のブロックを符号化する(212)。
【0122】
[0138]
図9は、本開示に記載される技法に従ってビデオデータを復号するための例示的な方法を示すフローチャートである。
図9の技法について、ビデオデコーダ30などのビデオデコーダを参照しながら説明する。ビデオデコーダ30は、第1のブロックのコーディングモードがマージモードであると決定する(220)。ビデオデコーダ30は、第1のブロックの動きベクトル精度が整数ピクセル精度であると決定する(222)。ビデオデコーダ30は、第1のブロックのマージ候補リストを構築する(224)。ビデオデコーダ30は、分数精度動きベクトル候補をマージ候補リストに追加することによって、マージ候補リストを構築する。ビデオデコーダ30は、第1のブロックを復号するために分数精度動きベクトル候補を選択する(226)。分数精度動きベクトルを選択することに応答して、ビデオデコーダ30は、第1のブロックの整数ピクセル精度動きベクトルを決定するために分数精度動きベクトル候補を丸める(228)。ビデオデコーダ30は、整数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定する(230)。ビデオデコーダ30は、参照ブロックに基づいて第1のブロックを復号する(232)。
【0123】
[0139]
図10は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図10の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。現在ピクチャでコーディングされている現在ブロックに対し、ビデオデコーダ30は、すでにコーディングされている隣接ブロックの整数ピクセル位置を識別する(234)。整数ピクセル位置のロケーションに基づいて、ビデオデコーダ30は、ピクチャにおける複数の整数ピクセル位置を決定するためにテンプレートを適用する(236)。ビデオデコーダ30は、ピクチャにおける複数のサブピクセル位置を決定するために、複数のサブピクセル位置にテンプレートを適用する(238)。ビデオデコーダ30は、複数の整数ピクセル位置の1つまたは複数のピクセル値を、複数のサブピクセル位置の1つまたは複数のピクセル値と比較する(240)。この比較に基づいて、ビデオデコーダ30は、動きベクトルの動きベクトル精度を決定する(242)。ビデオデコーダ30は、決定された動きベクトル精度を有する動きベクトルを使用して、現在ブロックをコーディングする(242)。
【0124】
[0140]
図11は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図11の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。コーディングされている現在ブロックに対し、ビデオデコーダ30は、1つまたは複数の隣接ブロックの位置を特定する(246)。ビデオデコーダ30は、1つまたは複数の隣接ブロックのプロパティを決定する(248)。この1つまたは複数の隣接ブロックのプロパティに基づいて、ビデオデコーダ30は、動きベクトルの動きベクトル精度を決定する(250)。ビデオデコーダ30は、決定された動きベクトル精度を有する動きベクトルを使用して、現在ブロックをコーディングする。
【0125】
[0141]
図12は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図12の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデコーダ30は、第1のブロックのコーディングモードがマージモードであると決定する(254)。ビデオデコーダ30は、第1のブロックの動きベクトル精度が整数ピクセル精度であると決定する(256)。ビデオデコーダ30は第1のブロックのマージ候補リストを構築し、ここにおいて、マージ候補リストは分数精度動きベクトル候補を備える(258)。ビデオデコーダ30は、第1のブロックを復号するために分数精度動きベクトル候補を選択する(260)。ビデオデコーダ30は、整数ピクセル精度動きベクトルを決定するために分数精度動きベクトル候補を丸める(262)。ビデオデコーダ30は、整数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定する。
【0126】
[0142]
図13は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図13の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデータの現在ブロックに対し、ビデオデコーダ30は動きベクトル差分値を決定する(266)。動きベクトル差分値がゼロに等しいことに応答して、ビデオデコーダ30は、現在ブロックの動きベクトルがサブピクセル動きベクトル精度を有すると決定する(268)。
【0127】
[0143]
図14は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図14の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデコーダ30は、ビデオデータに対し、デフォルト動きベクトル精度を決定する(270)。ビデオデータのPUが特殊モードでコーディングされていることに応答して、ビデオデコーダ30は、デフォルト動きベクトル精度の動きベクトルを使用してPUの参照ブロックの位置を特定する(272)。
【0128】
[0144]
図15は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図15の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデコーダ30は、ブロックの候補リストに含めるための1つまたは複数の動きベクトル候補を識別し、ここにおいて、1つまたは複数の動きベクトル候補は、少なくとも1つの分数精度動きベクトル候補を備える(274)。ブロックの動きベクトル精度が整数ピクセル精度であることに応答して、ビデオデコーダ30は、1つまたは複数の整数精度動きベクトル候補を決定するために、その1つまたは動きベクトル候補を丸める(276)。1つまたは複数の動きベクトル候補を丸めた後、ビデオデコーダ30は、1つまたは複数の整数精度動きベクトル候補に対して刈り込み操作を実施する(278)。
【0129】
[0145]
図16は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図16の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデコーダ30は、ビデオデータの第1のブロックおよびビデオデータの第2のブロックに対し、デフォルト精度を決定する(280)。ビデオデコーダ30は、ビデオデータの第1のブロックに対し、第1の動きベクトル精度情報を決定する(282)。ビデオデータの第2のブロックがある条件を満たすことに応答して、デフォルト精度に対応するように第2の動きベクトル情報を決定すること(284)。第1および第2のブロックは、たとえば、第1および第2のPUまたは第1および第2のCUであり得る。
【0130】
[0146]
図17は、本開示に記載される技法に従ってビデオデータをコーディングするための例示的な方法を示すフローチャートである。
図17の技法について、ビデオデコーダ30を参照しながら説明するが、これらの技法の多くはまた、ビデオエンコーダ20などのビデオエンコーダによっても実施され得る。ビデオデコーダ30は、第1のブロックの動きベクトル差分精度が整数ピクセル精度であると決定する(286)。ビデオデコーダ30は第1のブロックの動きベクトル予測子の候補リストを構築し、ここにおいて、候補リストは分数精度動きベクトル候補を備える(288)。ビデオデコーダ30は、候補リストから分数精度動きベクトル候補を選択する(290)。ビデオデコーダ30は、分数精度動きベクトル候補および整数ピクセル精度動きベクトル差分に基づいて、分数ピクセル精度動きベクトルを決定する(292)。ビデオデコーダ30は、分数ピクセル精度動きベクトルを使用して、第1のブロックの参照ブロックの位置を特定する(294)。
【0131】
[0147]説明を容易にするため、
図8〜17の技法は別々に提示されているが、説明された技法が互いに組み合わせて使用され得ることが企図される。加えて、いくつかの技法の一部分が、他の技法の一部分と組み合わせて使用され得ることが企図される。
【0132】
[0148]1つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実施され得る。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体上の1つもしくは複数の命令またはコード上に記憶され、あるいはこれを介して伝送され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従う、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実施のための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0133】
[0149]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびblu−ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
【0134】
[0150]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路またはディスクリート論理回路のような、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造のいずれかまたは本明細書で説明された技法の実装に適切な任意の他の構造を指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理素子において完全に実装され得る。
【0135】
[0151]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。様々なコンポーネント、モジュール、またはユニットは、開示されている技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。そうではなく、上で説明されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わせられるか、または上で説明された1つまたは複数のプロセッサを含む、適切なソフトウェアおよび/またはファームウェアとともに相互動作可能なハードウェアユニットの集合体によって提供され得る。
【0136】
[0152]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲に含まれる。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]符号化されたビデオデータを復号する方法であって、
第1のブロックのコーディングモードがマージモードであると決定することと、
前記第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第1のブロックのマージ候補リストを構築することと、ここにおいて、前記マージ候補リストを構築することは、分数精度動きベクトル候補を前記マージ候補リストに加えることを備える、
前記第1のブロックを復号するために前記分数精度動きベクトル候補を選択することと、
前記分数精度動きベクトルを選択することに応答して、前記第1のブロックの整数ピクセル精度動きベクトルを決定するために前記分数精度動きベクトル候補を丸めることと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと、
前記参照ブロックに基づいて前記第1のブロックを復号することとを備える方法。
[C2]前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であると決定することは、前記符号化されたビデオデータにおいて、前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であるという指示を受信することを備える、C1に記載の方法。
[C3]前記マージモードはスキップモードを備える、C1に記載の方法。
[C4]第2のブロックのコーディングモードがマージモード以外であると決定することと、
前記第2のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第2のブロックの分数精度動きベクトル予測子を決定することと、
前記第2のブロックの整数ピクセル精度動きベクトル予測子を決定するために、前記分数精度動きベクトル予測子を丸めることと、
前記第2のブロックの動きベクトル差分を決定することと、ここにおいて、前記動きベクトル差分は整数ピクセル精度差分を備える、
前記整数ピクセル精度動きベクトル予測子および前記動きベクトル差分に基づいて、前記第2のブロックの整数ピクセル精度動きベクトルを決定することと、
前記整数ピクセル精度動きベクトルを使用して前記第2のブロックの参照ブロックの位置を特定することとをさらに備える、C1に記載の方法。
[C5]前記第2のブロックの前記分数精度動きベクトル予測子を決定することは、
前記第2のブロックのAMVP候補リストを構築することと、ここにおいて、前記AMVP候補リストは第2の分数精度動きベクトル候補を備える、
前記第2のブロックの前記分数精度動きベクトル予測子として、前記第2の分数精度動きベクトル候補を選択することとを備える、C4に記載の方法。
[C6]前記整数精度動きベクトルを第2のブロックの候補リストに追加することをさらに備える、C5に記載の方法。
[C7]前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することをさらに備える、C1に記載の方法。
[C8]前記第2のブロックの前記候補リストはAMVP候補リストを備える、C7に記載の方法。
[C9]ビデオデータを符号化する方法であって、
第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第1のブロックのマージ候補リストを構築することと、ここにおいて、前記マージ候補リストは分数精度動きベクトル候補を備える、
前記第1のブロックを符号化するために前記分数精度動きベクトル候補を選択することと、
マージモードを使用して前記第1のブロックをコーディングするため、前記第1のブロックの整数ピクセル精度動きベクトルを決定するために前記分数精度動きベクトル候補を丸めることと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することとを備える方法。
[C10]前記符号化されたビデオデータに含めるために、前記第1のブロックの動きベクトル精度が整数ピクセル精度であるという指示を生成することをさらに備える、C9に記載の方法。
[C11]前記マージモードはスキップモードを備える、C9に記載の方法。
[C12]第2のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第2のブロックを前記マージモード以外のモードでコーディングするために、前記第2のブロックの分数精度動きベクトル予測子を決定することと、
前記第2のブロックの整数ピクセル精度動きベクトル予測子を決定するために、前記分数精度動きベクトル予測子を丸めることと、
前記第2のブロックの動きベクトル差分を決定することと、ここにおいて、前記動きベクトル差分は整数ピクセル精度差分を備える、
前記整数ピクセル精度動きベクトル予測子および前記動きベクトル差分に基づいて、前記第2のブロックの整数ピクセル精度動きベクトルを決定することと、
前記整数ピクセル精度動きベクトルを使用して前記第2のブロックの参照ブロックの位置を特定することとをさらに備え、
前記参照ブロックに基づいて前記第1のブロックを符号化する、C9に記載の方法。
[C13]前記第2のブロックの前記分数精度動きベクトル予測子を決定することは、
前記第2のブロックのAMVP候補リストを構築することと、ここにおいて、前記AMVP候補リストは第2の分数精度動きベクトル候補を備える、
前記第2のブロックの前記分数精度動きベクトル予測子として、前記第2の分数精度動きベクトル候補を選択することとを備える、C12に記載の方法。
[C14]前記整数精度動きベクトルを第2のブロックの候補リストに追加することをさらに備える、C12に記載の方法。
[C15]前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することをさらに備える、C9に記載の方法。
[C16]前記第2のブロックの前記候補リストはAMVP候補リストを備える、C15に記載の方法。
[C17]ビデオ復号のためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
第1のブロックのコーディングモードがマージモードであると決定することと、
前記第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記メモリに記憶されたビデオデータに基づいて、前記第1のブロックのマージ候補リストを構築することと、ここにおいて、前記マージ候補リストは分数精度動きベクトル候補を備える、
前記第1のブロックを復号するために前記分数精度動きベクトル候補を選択することと、
前記第1のブロックの整数ピクセル精度動きベクトルを決定するために、前記分数精度動きベクトル候補を丸めることと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと、
を行うように構成された1つまたは複数のプロセッサを備えるビデオデコーダとを備えるデバイス。
[C18]前記1つまたは複数のプロセッサは、前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であると決定するようにさらに構成され、前記1つまたは複数のプロセッサは、前記符号化されたビデオデータにおいて、前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であるという指示を受信するようにさらに構成される、C17に記載のデバイス。
[C19]前記マージモードはスキップモードを備える、C17に記載のデバイス。
[C20]前記1つまたは複数のプロセッサは、
第2のブロックのコーディングモードがマージモード以外であると決定することと、
前記第2のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第2のブロックの分数精度動きベクトル予測子を決定することと、
前記第2のブロックの整数ピクセル精度動きベクトル予測子を決定するために、前記分数精度動きベクトル予測子を丸めることと、
前記第2のブロックの動きベクトル差分を決定することと、ここにおいて、前記動きベクトル差分は整数ピクセル精度差分を備える、
前記整数ピクセル精度動きベクトル予測子および前記動きベクトル差分に基づいて、前記第2のブロックの整数ピクセル精度動きベクトルを決定することと、
前記整数ピクセル精度動きベクトルを使用して前記第2のブロックの参照ブロックの位置を特定することとを行うようにさらに構成される、C17に記載のデバイス。
[C21]前記第2のブロックの前記分数精度動きベクトル予測子を決定するために、前記1つまたは複数のプロセッサは、
前記第2のブロックのAMVP候補リストを構築することと、ここにおいて、前記AMVP候補リストは第2の分数精度動きベクトル候補を備える、
前記第2のブロックの前記分数精度動きベクトル予測子として、前記第2の分数精度動きベクトル候補を選択することとを行うようにさらに構成される、C20に記載のデバイス。
[C22]前記1つまたは複数のプロセッサは、
前記整数精度動きベクトルを第2のブロックの候補リストに追加することを行うようにさらに構成される、C21に記載のデバイス。
[C23]前記1つまたは複数のプロセッサは、
前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することを行うようにさらに構成される、C17に記載のデバイス。
[C24]前記第2のブロックの前記候補リストはAMVP候補リストを備える、C23に記載のデバイス。
[C25]1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
第1のブロックのコーディングモードがマージモードであると決定することと、
前記第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第1のブロックのマージ候補リストを構築することと、ここにおいて、前記マージ候補リストは分数精度動きベクトル候補を備える、
前記第1のブロックを復号するために前記分数精度動きベクトル候補を選択することと、
前記第1のブロックの整数ピクセル精度動きベクトルを決定するために、前記分数精度動きベクトル候補を丸めることと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
[C26]前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であると決定するために、前記1つまたは複数のプロセッサは、前記符号化されたビデオデータにおいて、前記第1のブロックの前記動きベクトル精度が整数ピクセル精度であるという指示を受信する、C25に記載のコンピュータ可読記憶媒体。
[C27]前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
第2のブロックのコーディングモードがマージモード以外であると決定することと、
前記第2のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第2のブロックの分数精度動きベクトル予測子を決定することと、
前記第2のブロックの整数ピクセル精度動きベクトル予測子を決定するために、前記分数精度動きベクトル予測子を丸めることと、
前記第2のブロックの動きベクトル差分を決定することと、ここにおいて、前記動きベクトル差分は整数ピクセル精度差分を備える、
前記整数ピクセル精度動きベクトル予測子および前記動きベクトル差分に基づいて、前記第2のブロックの整数ピクセル精度動きベクトルを決定することと、
前記整数ピクセル精度動きベクトルを使用して前記第2のブロックの参照ブロックの位置を特定することと
を行わせるさらなる命令を記憶する、C25に記載のコンピュータ可読記憶媒体。
[C28]前記第2のブロックの前記分数精度動きベクトル予測子を決定するために、前記1つまたは複数のプロセッサは、
前記第2のブロックのAMVP候補リストを構築することと、ここにおいて、前記AMVP候補リストは第2の分数精度動きベクトル候補を備える、
前記第2のブロックの前記分数精度動きベクトル予測子として、前記第2の分数精度動きベクトル候補を選択することと
を行う、C27に記載のコンピュータ可読記憶媒体。
[C29]前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
前記整数精度動きベクトルを第2のブロックの候補リストに追加することを行わせるさらなる命令を記憶する、C28に記載のコンピュータ可読記憶媒体。
[C30]前記1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することを行わせるさらなる命令を記憶する、C25に記載のコンピュータ可読記憶媒体。
[C31]ビデオデータをコーディングする方法であって、
現在ピクチャでコーディングされている現在ブロックに対し、すでにコーディングされている隣接ブロックの整数ピクセル位置を識別することと、
前記整数ピクセル位置のロケーションに基づいて、前記ピクチャにおける複数の整数ピクセル位置を決定するためにテンプレートを適用することと、
前記ピクチャにおける複数のサブピクセル位置を決定するために、複数のサブピクセル位置にテンプレートを適用することと、
前記複数の整数ピクセル位置の1つまたは複数のピクセル値を、前記複数のサブピクセル位置の1つまたは複数のピクセル値と比較することと、
前記比較に基づいて、動きベクトルの動きベクトル精度を決定することと、
前記決定された動きベクトル精度を有する前記動きベクトルを使用して、前記現在ブロックをコーディングすることと
を備える方法。
[C32]前記動きベクトルの前記動きベクトル精度を決定することは、
差分値を決定するために、前記複数の整数ピクセル位置の1つまたは複数のピクセル値を、前記複数のサブピクセル位置の1つまたは複数のピクセル値と比較することと、ここにおいて、前記差分値は、前記複数の整数ピクセル位置の前記1つまたは複数のピクセル値と前記複数のサブピクセル位置の前記1つまたは複数のピクセル値との間におけるピクセル値の差の量に対応する、
前記差分値がしきい値よりも大きいことに応答して、整数ピクセル精度を備えるように前記動きベクトル精度を決定することと
を備える、C31に記載の方法。
[C33]前記動きベクトルの前記動きベクトル精度を決定することは、
差分値を決定するために、前記複数の整数ピクセル位置の1つまたは複数のピクセル値を、前記複数のサブピクセル位置の1つまたは複数のピクセル値と比較することと、ここにおいて、前記差分値は、前記複数の整数ピクセル位置の前記1つまたは複数のピクセル値と前記複数のサブピクセル位置の前記1つまたは複数のピクセル値との間におけるピクセル値の差の量に対応する、
前記差分値がしきい値よりも小さいことに応答して、サブピクセル精度を備えるように前記動きベクトル精度を決定することと
を備える、C31に記載の方法。
[C34]前記しきい値は固定値である、C31に記載の方法。
[C35]前記しきい値は適応値である、C31に記載の方法。
[C36]前記テンプレートはある形状を規定し、ここにおいて、前記複数の整数ピクセル位置を決定するために前記テンプレートを適用することは、現在ブロックに対する前記形状のロケーションに基づいて、前記複数の整数ピクセル位置を特定することを備える、C31に記載の方法。
[C37]前記テンプレートはある形状を規定し、ここにおいて、前記複数のサブピクセル位置を決定するために前記テンプレートを適用することは、現在ブロックに対する前記形状のロケーションに基づいて、前記複数のサブピクセルのピクセル位置を特定することを備える、C31に記載の方法。
[C38]前記複数の整数ピクセル位置の前記1つまたは複数のピクセル値を前記複数のサブピクセル位置の前記1つまたは複数のピクセル値と比較することは、前記複数の整数ピクセル位置の前記1つまたは複数のピクセル値と前記複数のサブピクセル位置の前記1つまたは複数のピクセル値との間の絶対差分和を決定することを備える、C31に記載の方法。
[C39]候補動きベクトルの候補リストを収集することと、
前記候補リストにおいて候補動きベクトルを識別するインデックス値を受信することと、
前記識別された候補動きベクトルに基づいて、前記動きベクトルを決定することと、をさらに備える、C31に記載の方法。
[C40]前記候補リストはAMVP候補リストを備える、C39に記載の方法。
[C41]前記候補リストはマージモード候補リストを備える、C39に記載の方法。
[C42]ビデオデータをコーディングする方法であって、
コーディングされている現在ブロックに対し、1つまたは複数の隣接ブロックの位置を特定することと、
前記1つまたは複数の隣接ブロックのプロパティを決定することと、
前記1つまたは複数の隣接ブロックの前記プロパティに基づいて、動きベクトルの動きベクトル精度を決定することと、
前記決定された動きベクトル精度を有する前記動きベクトルを使用して、前記現在ブロックをコーディングすることと、
を備える方法。
[C43]前記プロパティは、前記1つまたは複数の隣接ブロックの先鋭度を備える、C42に記載の方法。
[C44]前記プロパティは、前記1つまたは複数の隣接ブロックの階調度を備える、C42に記載の方法。
[C45]前記プロパティは、スキップモードでコーディングされている前記1つまたは複数の隣接ブロックを備える、C42に記載の方法。
[C46]前記プロパティは、前記1つまたは複数の隣接ブロックの動きベクトル精度を備える、C42に記載の方法。
[C47]どのプロパティが決定されるかの指示を受信することをさらに備える、C42に記載の方法。
[C48]前記1つまたは複数の隣接ブロックは、少なくとも1つの空間的に隣接するブロックを備える、C42に記載の方法。
[C49]前記1つまたは複数の隣接ブロックは、少なくとも1つの時間的に隣接するブロックを備える、C42に記載の方法。
[C50]ビデオデータをコーディングする方法であって、
第1のブロックのコーディングモードがマージモードであると決定することと、
前記第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第1のブロックのマージ候補リストを構築することと、ここにおいて、前記マージ候補リストは分数精度動きベクトル候補を備える、
前記第1のブロックを復号するために前記分数精度動きベクトル候補を選択することと、
整数ピクセル精度動きベクトルを決定するために、前記分数精度動きベクトル候補を丸めることと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと、
前記参照ブロックを使用して前記第1のブロックをコーディングすることと、
を備える方法。
[C51]前記マージモードはスキップモードを備える、C50に記載の方法。
[C52]前記整数精度動きベクトル候補を第2のブロックの候補リストに追加することをさらに備える、C50に記載の方法。
[C53]前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することをさらに備える、C50に記載の方法。
[C54]前記第2のブロックの前記候補リストはAMVP候補リストを備える、C52または53に記載の方法。
[C55]ビデオデータをコーディングする方法であって、
第1のブロックのコーディングモードがマージモード以外であると決定することと、
前記第1のブロックの動きベクトル精度が整数ピクセル精度であると決定することと、
前記第1のブロックの分数精度動きベクトル予測子を決定することと、
前記第1のブロックの整数ピクセル精度動きベクトル予測子を決定するために、前記分数精度動きベクトル予測子を丸めることと、
前記第1のブロックの動きベクトル差分を決定することと、ここにおいて、前記動きベクトル差分は整数ピクセル精度差分を備える、
前記整数ピクセル精度動きベクトル予測子および前記動きベクトル差分に基づいて、整数ピクセル精度動きベクトルを決定することと、
前記整数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと、
前記参照ブロックを使用して前記第1のブロックをコーディングすることと、
を備える方法。
[C56]前記第1のブロックの前記分数精度動きベクトル予測子を決定することは、
前記第1のブロックのAMVP候補リストを構築することと、ここにおいて、前記AMVP候補リストは分数精度動きベクトル候補を備える、
前記第1のブロックの前記分数精度動きベクトル予測子として、前記分数精度動きベクトル候補を選択することと、
を備える、C55に記載の方法。
[C57]前記分数精度動きベクトル候補を第2のブロックの候補リストに追加することをさらに備える、C55に記載の方法。
[C58]ビデオデータをコーディングする方法であって、
符号化されたビデオビットストリームにおいて、動きベクトル精度シグナリングタイプの指示を受信することと、
前記動きベクトル精度シグナリングタイプに基づいて、ビデオデータのブロックの動きベクトル精度を決定することと、
前記決定された動きベクトル精度の動きベクトルを使用して、ビデオデータの前記ブロックの参照ブロックの位置を特定することと、
備える方法。
[C59]前記動きベクトル精度シグナリングタイプは、(1)テンプレートマッチングタイプ、(2)隣接ブロックプロパティベースタイプ、または(3)ダイレクトシグナリングタイプのうちの1つを備える、C58に記載の方法。
[C60]前記指示は、スライスヘッダ、シーケンスパラメータセット(SPS)、またはピクチャパラメータセット(PPS)のうちの1つにおいてシグナリングされる、C58に記載の方法。
[C61]前記指示はスライスタイプを備える、C58に記載の方法。
[C62]前記指示は、ビデオデータの前記ブロックを備えるスライスの時間レベルを備える、C58に記載の方法。
[C63]ビデオデータをコーディングする方法であって、
ビデオデータの現在ブロックに対し、動きベクトル差分値を決定することと、
前記動きベクトル差分値がゼロに等しいことに応答して、前記現在ブロックの動きベクトルがサブピクセル動きベクトル精度を有すると決定することと、
を備える方法。
[C64]ビデオデータの第2の現在ブロックに対し、第2の動きベクトル差分値を受信することと、
前記第2の動きベクトル差分値が非ゼロ値であることに基づいて、前記第2の現在ブロックに対し、第2の動きベクトルの動きベクトル精度の指示を受信することと、
参照ピクチャにおいて、前記第2の動きベクトルを使用して前記第2の現在ブロックの参照ブロックの位置を特定することと、
をさらに備える、C63に記載の方法。
[C65]前記第2の動きベクトル差分値を受信した後に、前記動きベクトル精度の前記指示を受信することをさらに備える、C64に記載の方法。
[C66]前記動きベクトル差分値がゼロに等しいことは、前記動きベクトル差分値のx成分がゼロに等しいことと、前記動きベクトル差分値のy成分がゼロに等しいこととを備える、C63に記載の方法。
[C67]ビデオデータをコーディングする方法であって、
前記ビデオデータに対し、デフォルト動きベクトル精度を決定することと、
前記ビデオデータの予測ユニット(PU)が特殊モードでコーディングされていることに応答して、前記デフォルト動きベクトル精度の動きベクトルを使用して前記PUの参照ブロックの位置を特定することと、
を備える方法。
[C68]前記ビデオデータの第2のPUが前記特殊モード以外のモードを使用してコーディングされていることに応答して、前記ビデオデータの前記PUに対し、シグナリングされた動きベクトル精度を決定することと、
前記シグナリングされた動きベクトル精度の動きベクトルを使用して、前記第2のPUの参照ブロックの位置を特定することと、
をさらに備える、C67に記載の方法。
[C69]前記特殊モードは、
スキップモード、
2N×2Nマージモード、
マージモード、
トランスフォームスキップモード、または
非対称区分化モード
のうちの1つまたは複数を備える、C67に記載の方法。
[C70]前記ビデオデータのコーディングユニット(CU)に対し、シグナリングされた動きベクトル精度を決定すること、ここにおいて、前記シグナリングされた動きベクトル精度は、前記デフォルト動きベクトル精度とは異なるものであり、ここにおいて、前記CUは前記PUを備える、
をさらに備える、C67に記載の方法。
[C71]前記シグナリングされた動きベクトル精度は整数ピクセル精度を備え、ここにおいて、前記デフォルト動きベクトル精度は分数動きベクトル精度を備える、C70に記載の方法。
[C72]ビデオデータをコーディングする方法であって、
第1のブロックの動きベクトル差分精度が整数ピクセル精度であると決定することと、
前記第1のブロックの動きベクトル予測子の候補リストを構築することと、ここにおいて、前記候補リストは分数精度動きベクトル候補を備える、
前記候補リストから前記分数精度動きベクトル候補を選択することと、
前記分数精度動きベクトル候補および前記整数ピクセル精度動きベクトル差分に基づいて、分数ピクセル精度動きを決定することと、
前記分数ピクセル精度動きベクトルを使用して前記第1のブロックの参照ブロックの位置を特定することと、
を備える方法。
[C73]前記候補リストは備え、AMVP候補リスト、C72に記載の方法。
[C74]ビデオデータをコーディングする方法であって、
ブロックの候補リストに含めるための1つまたは複数の動きベクトル候補を識別することと、ここにおいて、前記1つまたは複数の動きベクトル候補は、少なくとも1つの分数精度動きベクトル候補を備える、
前記ブロックの動きベクトル精度が整数ピクセル精度であることに応答して、1つまたは複数の整数精度動きベクトル候補を決定するために、前記1つまたは動きベクトル候補を丸めることと、
前記1つまたは複数の動きベクトル候補を丸めた後、前記1つまたは複数の整数精度動きベクトル候補に対して刈り込み操作を実施することと、
を備える方法。
[C75]前記候補リストはマージモード候補リストを備える、C74に記載の方法。
[C76]前記候補リストはAMVP候補リストを備える、C74に記載の方法。
[C77]前記1つまたは複数の動きベクトル候補は空間隣接候補を備える、C74に記載の方法。
[C78]前記1つまたは複数の動きベクトルは時間隣接候補を備える、C74に記載の方法。
[C79]ビデオデータをコーディングする方法であって、
ビデオデータの第1のブロックおよびビデオデータの第2のブロックに対し、デフォルト精度を決定することと、
ビデオデータの前記第1のブロックに対し、第1の動きベクトル精度情報を決定することと、
ビデオデータの前記第2のブロックがある条件を満たすことに応答して、前記デフォルト精度に対応するように第2の動きベクトル情報を決定することと、
を備える方法。
[C80]前記デフォルト精度は分数精度を備える、C79に記載の方法。
[C81]ビデオデータの前記第1のブロックは第1のPUを備える、C79に記載の方法。
[C82]前記第1の動きベクトル精度情報は動きベクトル精度を備える、C79に記載の方法。
[C83]前記第1の動きベクトル精度情報は動きベクトル差分精度情報を備える、C79に記載の方法。
[C84]前記条件は、前記第2のブロックがマージモードまたはスキップモードを使用してコーディングされていることを備える、C79に記載の方法。
[C85]前記条件は、前記第2のブロックがAMVPモードを使用してコーディングされていることと、前記第2のブロックの各予測方向の動きベクトル差分がゼロに等しいこととを備える、C79に記載の方法。
[C86]ビデオデータをコーディングする方法であって、
ビデオデータの第1のコーディングユニットおよびビデオデータの第2のコーディングユニットに対し、デフォルト精度を決定することと、
ビデオデータの前記第1のコーディングユニットに対し、第1の動きベクトル精度情報を決定することと、
ビデオデータの第2のコーディングユニットがある条件を満たすことに応答してデフォルト精度に対応するように第2の動きベクトル情報を決定することと、
を備える方法。
[C87]前記デフォルト精度は分数精度を備える、C86に記載の方法。
[C88]前記デフォルト精度は精度を備えない、C86に記載の方法。
[C89]前記第1の動きベクトル精度情報は動きベクトル精度を備える、C86に記載の方法。
[C90]前記第1の動きベクトル精度情報は動きベクトル差分精度情報を備える、C86に記載の方法。
[C91]前記条件は、前記CU内のすべてのPUがイントラコーディングされることを備える、C86に記載の方法。
[C92]前記条件は、前記CU内のすべてのPUがマージモードまたはスキップモードを使用してコーディングされることを備える、C86に記載の方法。
[C93]前記条件は、前記CU内のすべてのPUがAMVPを使用してコーディングされていることと、すべてのPUの各予測方向の動きベクトル差分がゼロに等しいこととを備える、C86に記載の方法。
[C94]C31から93の任意の組合せを備える方法。
[C95]1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、C31から93の任意の組合せの方法を実施させる命令を記憶するコンピュータ可読記憶媒体。
[C96]ビデオコーディングデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
C31から93の任意の組合せの方法を実施するように構成された1つまたは複数のプロセッサを備えるビデオコーダと、
を備えるビデオコーディングデバイス。
[C97]前記ビデオコーダはビデオエンコーダを備える、C96に記載のビデオコーディングデバイス。
[C98]前記ビデオコーダはビデオデコーダを備える、C96に記載のビデオコーディングデバイス。