(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-26
(45)【発行日】2023-11-06
(54)【発明の名称】適応解像度ビデオコーディング
(51)【国際特許分類】
H04N 19/59 20140101AFI20231027BHJP
【FI】
H04N19/59
(21)【出願番号】P 2020572790
(86)(22)【出願日】2019-03-01
(86)【国際出願番号】 CN2019076701
(87)【国際公開番号】W WO2020177015
(87)【国際公開日】2020-09-10
【審査請求日】2022-02-18
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】100188558
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100205785
【氏名又は名称】▲高▼橋 史生
(72)【発明者】
【氏名】ツイシャン・チャン
(72)【発明者】
【氏名】ユチェン・スン
(72)【発明者】
【氏名】リン・ジュ
(72)【発明者】
【氏名】ジアン・ルー
【審査官】鉢呂 健
(56)【参考文献】
【文献】特開2003-179826(JP,A)
【文献】特開2017-220934(JP,A)
【文献】MISRA, Kiran et al.,AHG18/21: Absolute signaling for resolution switching,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 7th Meeting: Geneva, CH, 21-30 November, 2011, [JCTVC-G715],JCTVC-G715 (version 3),ITU-T,2011年11月19日,<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC-G715-v3.zip>: JCTVC-G715-ResolutionSwitching.doc: pp.1-4
【文献】DAVIES, Thomas,Resolution switching for coding efficiency and resilience,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 6th Meeting: Turin, IT, 14-22 July, 2011, [JCTVC-F158],JCTVC-F158 (version 5),ITU-T,2011年07月15日,<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F158-v5.zip>: JCTVC-F158v4.doc: pp.1-11
【文献】HENDRY et al.,On adaptive resolution change (ARC) for VVC,Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 13th Meeting: Marrakech, MA, 9-18 Jan. 2019, [JVET-M0135-v1],JVET-M0135 (version 1),ITU-T,2019年01月02日,<URL:http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/13_Marrakech/wg11/JVET-M0135-v1.zip>: JVET-M0135-v1.docx: pp.1-3
【文献】BORDES, Philippe and ANDRIVON, Pierre,AHG18: Resolution Adaptation Coding (ARC) using single resolution in DPB,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 8th Meeting: San Jose, CA, USA, 1-10 February, 2012, [JCTVC-H0321-r1],JCTVC-H0321 (version 2),ITU-T,2012年01月27日,<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/8_San%20Jose/wg11/JCTVC-H0321-v2.zip>: JCTVC-H0321-r1.docx: pp.1-11
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
1つ以上のコンピューティングデバイスによって実装される方法であって、
第1の解像度の第1のフレームを表す符号化されたデータを受信することと、
前記符号化されたデータを復号化して、前記第1のフレームを取得することと、
前記第1のフレームの第1の解像度と第2のフレームの第2の解像度を比較することと、
前記第1の解像度が前記第2の解像度より低いと判定することに応答して、前記第1のフレームを前記第1の解像度から
前記第2の解像度にサイズ変更することと、
サイズ変更された、前記第2の解像度の前記第1のフレームを、参照フレームバッファに格納することと、を
含み、
前記符号化されたデータを復号化して前記第1のフレームを取得することは、前記参照フレームバッファにローカルに格納された前記第2のフレームに基づき、
前記第2のフレームは、前記第1のフレームより前に受信されるビデオシーケンスのフレームである
方法。
【請求項2】
前記第2のフレームは、前記第1のフレームの直前に受信される
前記ビデオシーケンスの
前記フレームである、請求
項1に記載の方法。
【請求項3】
表示のために前記第1のフレームをサイズ変更することをさらに含む、請求項1に記載の方法。
【請求項4】
前記符号化されたデータを復号化して前記第1のフレームを取得することは、前記第1のフレームの前に受信される第2のフレームに関する1つ以上の動き予測ブロックに基づくことを特徴とする、請求項1に記載の方法。
【請求項5】
前記第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、前記第1のフレームの前記第1の解像度の情報を取得することをさらに含む、請求項1に記載の方法。
【請求項6】
前記第1のフレームの前記第1の解像度の前記情報を取得することは、前記第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づくことを特徴とする、請求
項5に記載の方法。
【請求項7】
1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
第1のフレームを表す符号化されたデータを受信することと、
前記符号化されたデータを復号化して、前記第1のフレームを取得することと、
前記第1のフレームの第1の解像度と第2のフレームの第2の解像度を比較することと、
前記第1の解像度が前記第2の解像度より低いと判定することに応答して、前記第1のフレームを前記第1の解像度から前記第2の解像度にサイズ変更することと、
第1の解像度の前記第1のフレームを参照フレームバッファに格納することと
、
を含む動作を実行させる実行可能な命令を格
納し、
前記符号化されたデータを復号化して前記第1のフレームを取得することは、前記参照フレームバッファにローカルに格納された前記第2のフレームに基づき、
前記第2のフレームは、前記第1のフレームより前に受信されるビデオシーケンスのフレームである
1つ以上のコンピュータ可読媒体。
【請求項8】
前記第2のフレームは、前記第1のフレームの直前に受信される前記ビデオシーケンスの前記フレームである、請求項7に記載の1つ以上のコンピュータ可読媒体。
【請求項9】
前記符号化されたデータを復号化して前記第1のフレームを取得することは、前記第1のフレームの前に受信される第2のフレームに関する1つ以上の動き予測ブロックに基づくことを特徴とする、請求
項7に記載の1つ以上のコンピュータ可読媒体。
【請求項10】
前記動作は、表示のために前記第1のフレームをサイズ変更することをさらに含む、請求
項7に記載の1つ以上のコンピュータ可読媒体。
【請求項11】
前記動作は、
第3の解像度の第3のフレームを表す他の符号化されたデータを受信することと、
前記他の符号化されたデータを復号化して、サイズ変更された、前記第2の解像度の前記第1のフレームまたは前記第1の解像度の前記第1のフレームのうちの1つを使用して、前記第3のフレームを取得することと、
をさらに含む、請求
項7に記載の1つ以上のコンピュータ可読媒体。
【請求項12】
前記動作は、前記第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、前記第1のフレームの前記第1の解像度の情報を取得することをさらに含む、請求
項7に記載の1つ以上のコンピュータ可読媒体。
【請求項13】
前記第1のフレームの前記第1の解像度の前記情報を取得することは、前記第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づくことを特徴とする、請求
項12に記載の1つ以上のコンピュータ可読媒体。
【請求項14】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
第1の解像度の第1のフレームを表す符号化されたデータを受信することと、
前記符号化されたデータを復号化して、前記第1のフレームを取得することと、
前記第1のフレームの第1の解像度と第2のフレームの第2の解像度を比較することと、
サイズ変更することと、
前記第1の解像度が前記第2の解像度より低いと判定することに応答し
て、
前記第1のフレームを前記第1の解像度から前記第2の解像度にサイズ変更することと、
前記第1の解像度の
、前記サイズ変更された前記第1のフレームを、参照フレームバッファに格納することと、
を含む動作を実行させる、実行可能な命令を格納するメモリと、
を備え
、
前記符号化されたデータを復号化して前記第1のフレームを取得することは、前記参照フレームバッファにローカルに格納された前記第2のフレームに基づき、
前記第2のフレームは、前記第1のフレームより前に受信されるビデオシーケンスのフレームである
システム。
【請求項15】
前記第2のフレームは、前記第1のフレームの直前に受信される前記ビデオシーケンスの前記フレームである、請求項14に記載のシステム。
【請求項16】
前記動作は、表示のために前記第1のフレームをサイズ変更することをさらに含む、請求
項14に記載のシステム。
【請求項17】
前記第1のフレームは、ネットワーク上でリモートで受信され、前記第2のフレームは、前記参照フレームバッファにローカルに格納される、請求
項14に記載のシステム。
【請求項18】
前記動作は、
第3の解像度の第3のフレームを表す他の符号化されたデータを受信することと、
前記他の符号化されたデータを復号化して、前記第1のフレームに少なくとも部分的に基づいて、前記第3のフレームを取得することと、をさらに含む、請求
項14に記載のシステム。
【請求項19】
前記動作は、前記第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、前記第1のフレームの前記第1の解像度の情報を取得することをさらに含む、請求
項14に記載のシステム。
【請求項20】
前記第1のフレームの前記第1の解像度の前記情報を取得することは、前記第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づくことを特徴とする、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、適応解像度ビデオコーディングに関する。
【背景技術】
【0002】
インターネットの発達にともない、ビデオストリーミングアプリケーションは、人々の日常生活において非常に人気を博してきた。ユーザは、数分から数十分かかる場合がある、ビデオのファイル全体(サイズが数メガバイトから数ギガバイトになり得る)の完全なダウンロードを待つことなく、ビデオストリーミングアプリケーションを使用してビデオを視聴できるようになっている。現在、H.264/AVC、H.265/HEVCなどの従来のビデオコーデックが、ビデオソースからネットワーク上でビデオを視聴するユーザのクライアントデバイスにビデオをストリーミングするために使用されている。
【0003】
ネットワークの不安定性およびネットワーク内のトラフィック量の変動を考慮して、ビデオ、例えば、ビデオシーケンスのフレーム(例えば、インターコーディングされたフレーム)を、異なる解像度で、リアルタイムで適応的に、ネットワーク帯域幅などの、ネットワークの特定の属性に応じて符号化および送信することが望ましい。ただし、従来のビデオコーデック(H.264/AVCおよびH.265/HEVCなど)では、フレームサイズがビデオシーケンスのシーケンスレベルヘッダに記録され、インターコーディングされたフレームでは変更することができないため、同じビデオシーケンスのフレームが同じフレームサイズまたは解像度を有する必要がある。そこで、フレームサイズまたはフレームの解像度を変更する必要がある場合は、新しいビデオシーケンスを開始し、最初にイントラコーディングされたフレームを符号化、圧縮、および送信する必要がある。しかしながら、イントラコーディングされたフレームを符号化、圧縮および送信することは、必然的に余分な時間、計算量およびネットワーク帯域幅を追加することになり、従来のビデオコーデックを使用するネットワーク状態に従った適応的なビデオ解像度の変更を困難かつ高価にする。
【0004】
新しいフレームタイプ、つまりスイッチフレームは、現在AVIコーデックで提案されており、異なるフレームサイズまたは解像度のビデオシーケンスを切り替えるための遷移フレームとして使用されている。このタイプのスイッチフレームは、イントラコーディングの使用、ひいては完全なイントラコーディングされたフレームのコストを回避する一方で、通常のインターコーディングされたフレームと比較して、追加の計算時間/量およびネットワーク帯域幅を依然として必要とし、よって、ビデオ解像度が変更された場合の計算時間/量およびネットワーク帯域幅に関するオーバーヘッドを導入する。さらに、スイッチフレームを使用するこの提案された手法の下では、現在のフレームの動きベクトルコーディングは、前のフレームの動きベクトルを動きベクトル予測子として使用することができない。
【0005】
次世代のビデオコーデックであるH.266/VVCが現在開発中であり、H.266/VVCでは多くの新しいコーディングツールが提案されている。インターコーディングされたフレームの解像度変更に対応するために、同じビデオシーケンスにおいてフレームサイズまたは解像度が一貫していない状況では、新しいコーディングシステムの設計が必要である。
【発明の概要】
【0006】
本概要では、適応解像度ビデオコーディングの簡略化された概念を紹介するが、以下の発明を実施するための形態でさらに説明する。本概要は、特許請求される主題の不可欠な特徴を特定することを意図しておらず、特許請求される主題の範囲を限定するために使用されることも意図していない。
【0007】
本出願は、適応解像度ビデオコーディングの例示的な実装態様について説明する。実装態様において、第1のコンピューティングデバイスは、同じビデオシーケンス内の異なる解像度のビデオフレーム(例えば、インターコーディングされたフレーム)を適応的に符号化し、ネットワーク上でフレームを第2のコンピューティングデバイスに送信することができる。実装態様において、第1のコンピューティングデバイスはさらに、ビデオシーケンスのシーケンスヘッダ内の最大解像度を信号伝達し、それぞれのフレームのフレームヘッダ内の各フレームの相対解像度を信号伝達することができる。
【0008】
実装態様において、第2のコンピューティングデバイスは、ネットワーク上で第1のコンピューティングデバイスから第1のビデオフレームの符号化されたデータを受信し、符号化されたデータを復号化して、第2のコンピューティングデバイスの参照フレームバッファ内に格納されている第2の解像度の1つ以上の第2のフレームに少なくとも部分的に基づいて、第1のフレームを取得することができる。実装態様において、第1の解像度が第2の解像度よりも低いと判定したことに応答して、第2のコンピューティングデバイスは、第2のコンピューティングデバイスが採用しているコーディング設計に応じて、第1のフレームを第1の解像度から第2の解像度にサイズ変更してもよく、またはしなくてもよく、かつ第1の解像度の第1のフレームおよび/または第2の解像度のサイズ変更された第1のフレームを参照フレームバッファ内に格納してもよく、またはしなくてもよい。
【0009】
発明を実施するための形態は、添付の図面を参照して述べられる。図面では、参照番号の左端の数字(複数可)は、参照番号が最初に現れる図面を示す。異なる図面における同じ参照番号の使用は、類似または同一の項目を示す。
【図面の簡単な説明】
【0010】
【
図1】適応解像度ビデオコーディングシステムを使用することができる例示的な環境を示す。
【発明を実施するための形態】
【0011】
概要
上記のように、既存の技術では、ビデオシーケンス内のビデオフレームの解像度を変更するために、新しいビデオシーケンスを開始するか、新しいフレームタイプを導入する必要がある。これには、追加の時間および計算コストがかかり、ネットワーク状態に基づいてリアルタイムでビデオシーケンスのビデオフレーム(例えば、インターコーディングされたフレーム)の解像度を柔軟に調整できなくなる。
【0012】
本開示は、例示的な適応解像度ビデオコーディングシステムを説明する。適応解像度ビデオコーディングシステムは、適応符号化システムおよび適応復号化システムを含み得る。適応符号化システムおよび適応復号化システムは、ネットワークの2点上で互いに個別におよび/または独立して動作することができ、かつ合意されたコーディングプロトコルまたは基準の下でそれらのシステム間で送信されるビデオシーケンスのために互いに関連している。
【0013】
実装態様において、適応符号化システムは、ネットワーク状態(例えば、ネットワーク帯域幅)に基づいて、ビデオシーケンスの第1のフレームの第1の解像度またはフレームサイズを判定し、第1の解像度の第1のフレームを、例えば、以前にインターコーディングを使用して送信された同じビデオシーケンスの1つ以上の第2のフレームに基づいて、リアルタイムで符号化することができる。ネットワーク状態に応じて、第1の解像度またはフレームサイズは、1つ以上の第2のフレームの第2の解像度またはフレームサイズと同じであってもよく、または同じでなくてもよい。実装態様において、適応符号化システムは、第1のフレームのフレームヘッダ内の第1の解像度の情報を信号伝達することができ、さらに、ビデオシーケンスのシーケンスヘッダ内のビデオシーケンスの最大解像度を信号伝達することができる。第1のフレームの符号化されたデータを取得すると、適応符号化システムは、第1のフレームの符号化されたデータをネットワークを介して適応復号化システムに送信することができる。
【0014】
実装態様において、適応復号化システムは、ネットワークを通じて適応符号化システムから第1のフレームの符号化されたデータを受信することができる。適応復号化システムは、符号化されたデータを復号化して、第1のフレームの符号化されたデータを送信する前に受信され、かつ参照フレームバッファにローカルに格納される1つ以上の第2のフレームに基づいて、第1のフレームを再構築することができる。実装態様において、第1のフレームの第1の解像度またはフレームサイズが1つ以上の第2のフレームの第2の解像度またはフレームサイズと同じでない場合、適応復号化システムは、動き予測子のサイズを変更し、および/または1つ以上の第2のフレームに関連する動きベクトルのスケールを変更し、または1つ以上の第2のフレームのサイズを第1の解像度またはフレームサイズに変更することができる。次いで、適応復号化システムは、符号化されたデータを復号化して、サイズ変更された動き予測子および/またはスケール変更された動きベクトル、または1つ以上のサイズ変更された第2のフレームに基づいて、第1のフレームを再構築することができる。適応復号化システムは、第1の解像度または第2の解像度の第1のフレームを、提示のためにディスプレイに提供することができる。
【0015】
さらに、適応復号化システムが採用する復号化設計に応じて、適応復号化システムは、第1のフレームを第1の解像度から第2の解像度にサイズ変更(例えば、アップサンプリング)し、第1の解像度の第1のフレームおよび/または第2の解像度のサイズ変更された第1のフレームを、ビデオシーケンスの後続のフレームで使用するために、参照フレームバッファに格納することができる。
【0016】
本明細書に記載の例では、上記の適応解像度ビデオコーディングシステムは、新しいビデオシーケンスを開始したり、新しいフレームタイプを使用したりすることなく、ビデオシーケンス内の個々のフレームの解像度またはフレームサイズをいつでもリアルタイムで適応的に変更できるため、新しいビデオシーケンスの開始または新しいフレームタイプの使用によって生じる追加の時間および計算コストの不必要な導入を回避することができる。
【0017】
さらに、適応ビデオ符号化システムおよび/または適応復号化システムによって実行される本明細書に記載の機能は、複数の別個のユニットまたはサービスによって実行され得る。例えば、適応ビデオ符号化システムの場合、判定サービスは、ネットワーク状態に基づいてビデオシーケンスの第1のフレームの第1の解像度またはフレームサイズを判定することができ、一方、符号化サービスは、以前にインターコーディングを使用して送信された同じビデオシーケンスの1つ以上の第2のフレームに基づいて、第1の解像度の第1のフレームをリアルタイムで符号化することができる。信号伝達サービスは、第1のフレームのフレームヘッダ内の第1の解像度の情報を信号伝達し、かつビデオシーケンスのシーケンスヘッダ内のビデオシーケンスの最大解像度を信号伝達することができ、一方、さらに別のサービスは、第1のフレームの符号化されたデータをネットワークを介して適応復号化システムに送信することができる。
【0018】
また、本明細書に記載の例では、適応ビデオ符号化システムおよび適応復号化システムのいずれか一方は、単一のデバイスにインストールされたソフトウェアおよび/もしくはハードウェアとして実装することができ、他の例では、適応ビデオ符号化システムおよび適応復号化システムのいずれか一方は、複数のデバイスに実装および分散することができ、またはネットワーク上の1つ以上のサーバおよび/もしくはクラウドコンピューティングアーキテクチャで提供されるサービスとして実装することができる。
【0019】
本出願は、複数のさまざまな実装および実装について説明する。次の項では、さまざまな実装態様の実施に好適である例示的なフレームワークについて説明する。次に、本出願は、適応解像度ビデオコーディングシステムを実装するための例示的なシステム、デバイス、およびプロセスについて説明する。
【0020】
例示的な環境
図1は、適応解像度ビデオコーディングシステムを実装するために使用可能な例示的な環境100を示す。環境100は、適応解像度ビデオコーディングシステム102を含み得る。この例では、適応解像度ビデオコーディングシステム102は、適応符号化システム104および適応復号化システム106を含むように説明されている。他の場合では、適応解像度ビデオコーディングシステム102は、1つ以上の適応符号化システム104および/または1つ以上の適応復号化システム106を含み得る。適応符号化システム104および適応復号化システム106は、互いに独立して動作することができ、それぞれ、ビデオシーケンスの送信側および受信側であるとして関連付けられている。実装態様において、適応符号化システム104は、ネットワーク108を通じてデータを適応復号化システム106と通信する。
【0021】
実装態様において、適応符号化システム104は、1つ以上のサーバ110を含み得る。いくつかの場合では、適応符号化システム104は、ネットワーク108を介してデータを互いに、および/または適応復号化システム106と通信し得る1つ以上のサーバ110の一部であってもよく、または1つ以上のサーバ110に含まれてもよく、および/または1つ以上のサーバ110の間で分散されてもよい。追加的または代替的に、いくつかの場合では、適応符号化システム104の機能は、1つ以上のサーバ110に含まれてもよく、および/またはそれらの間で分散されてもよい。例えば、1つ以上のサーバ110の第1のサーバは、適応符号化システム104の機能の一部を含んでいてもよく、一方、適応符号化システム104の他の機能は、1つ以上のサーバ110の第2のサーバに含まれてもよい。さらに、いくつかの実施形態では、適応符号化システム104のいくつかまたはすべての機能は、クラウドコンピューティングシステムまたはアーキテクチャに含まれてもよく、適応復号化システム106によって要求され得るサービスとして提供されてもよい。
【0022】
実装態様において、適応復号化システム106は、クライアントデバイス112の一部、例えば、クライアントデバイス112のソフトウェアおよび/またはハードウェア構成要素であり得る。いくつかの場合では、適応復号化システム106は、クライアントデバイス112を含み得る。
【0023】
クライアントデバイス112は、デスクトップコンピュータ、ノートブックもしくはポータブルコンピュータ、ハンドヘルドデバイス、ネットブック、インターネット家電、タブレットもしくはスレートコンピュータ、モバイルデバイス(例えば、携帯電話、電子手帳、スマートフォンなど)など、またはこれらの組み合わせを含むが、これらに限定されない、さまざまなコンピューティングデバイスのいずれかとして実装され得る。
【0024】
ネットワーク108は、無線もしくは有線ネットワーク、またはこれらの組み合わせであり得る。ネットワーク108は、相互に接続され、かつ単一の大規模ネットワーク(例えば、インターネットまたはイントラネット)として機能する個々のネットワークの集合であり得る。このような個々のネットワークの例は、電話ネットワーク、ケーブルネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびメトロポリタンエリアネットワーク(MAN)を含むが、これらに限定されない。さらに、個々のネットワークは、無線もしくは有線ネットワーク、またはこれらの組み合わせであり得る。有線ネットワークは、電気キャリア接続(通信ケーブルなど)および/または光キャリアもしくは接続(光ファイバ接続など)を含み得る。無線ネットワークは、例えば、WiFiネットワーク、他の無線周波数ネットワーク(例えば、Bluetooth(登録商標)、Zigbeeなど)などを含み得る。
【0025】
実装態様において、ユーザは、クライアントデバイス112によって提供されるブラウザまたはビデオストリーミングアプリケーションを使用してビデオを視聴することを望む場合がある。ユーザからのコマンドの受信に応答して、ブラウザまたはビデオストリーミングアプリケーションは、適応符号化システム104に関連付けられた1つ以上のサーバ110にビデオを要求し、1つ以上のサーバ110(または適応符号化システム104)から受信したビデオシーケンスのビデオフレームの符号化されたデータを、クライアントデバイス112のディスプレイに提示するためのビデオフレームを復号化および再構築するための適応復号化システム106へ中継することができる。
【0026】
例示的な適応符号化システム
図2は、適応符号化システム104をより詳細に示している。実装態様において、適応符号化システム104は、1つ以上の処理ユニット202と、メモリ204と、プログラムデータ206とを含み得るが、これらに限定されない。実装態様において、適応符号化システム104は、ネットワークインターフェース208と、入力/出力インターフェース210とをさらに含み得る。追加的または代替的に、適応符号化システム104の機能のいくつかまたはすべては、ASIC(すなわち、特定用途向け集積回路)、FPGA(すなわち、フィールドプログラマブルゲートアレイ)、または適応符号化システム104で提供される他のハードウェアを使用して実装され得る。
【0027】
実装態様において、1つ以上の処理ユニット202は、ネットワークインターフェース208から受信された、入力/出力インターフェース210から受信された、および/またはメモリ204に格納された命令を実行するように構成されている。実装態様において、1つ以上の処理ユニット202は、例えば、マイクロプロセッサ、アプリケーション固有の命令セットプロセッサ、グラフィックス処理ユニット、物理処理ユニット(PPU)、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサなどを含む1つ以上のハードウェアプロセッサとして実装され得る。追加的または代替的に、本明細書に記載の機能は、少なくとも部分的に、1つ以上のハードウェア論理構成要素によって実行することができる。例えば、限定されないが、使用可能なハードウェア論理構成要素の例示的なタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システム・オン・チップシステム(SOC)、コンプレックスプログラマブル論理デバイス(CPLD)などを含む。
【0028】
メモリ204は、ランダムアクセスメモリ(RAM)などの揮発性メモリおよび/または読み取り専用メモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリの形態のコンピュータ可読媒体を含み得る。メモリ204は、コンピュータ可読媒体の一例である。
【0029】
コンピュータ可読媒体は、任意の方法または技術を使用して情報の記憶を達成することができる揮発性または不揮発性タイプ、取り外し可能または取り外し不可能媒体を含むことができる。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを含んでもよい。コンピュータ記憶媒体の例としては、相変化メモリ(phase-change memory、PRAM)、スタティックランダムアクセスメモリ(static random access memory、SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電子的に消去可能なプログラマブル読み取り専用メモリ(electronically erasable programmable read-only memory、EEPROM)、クイックフラッシュメモリまたは他の内部記憶技術、コンパクトディスク読み取り専用メモリ(compact disk read-only memory、CD-ROM)、デジタル多用途ディスク(digital versatile disc、DVD)または他の光記憶装置、磁気カセットテープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは他の非伝送媒体が挙げられ、これらは、コンピューティングデバイスによってアクセスされ得る情報を記憶するために使用されてもよいが、これらに限定されない。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの一時的な媒体を含まない。
【0030】
この例では、適応符号化コーディングシステム104においてハードウェア構成要素のみを説明したが、他の場合では、適応符号化システム104は、符号化、圧縮、ビデオフレームの送信などのさまざまな操作を実行するために、エンコーダ212、符号化対象フレームバッファ214、送信対象フレームバッファ216などの他のハードウェア構成要素、および/またはメモリ204に格納された命令を実行するプログラムユニットなどの他のソフトウェア構成要素をさらに含み得る。
【0031】
例示的な適応復号化システム
図3は、適応復号化コーディングシステム106を含むクライアントデバイス112をより詳細に示している。実装態様において、適応復号化システム106は、1つ以上の処理ユニット302と、メモリ304と、プログラムデータ306とを含み得るが、これらに限定されない。加えて、適応復号化システム106は、受信フレームバッファ308と、デコーダ310と、参照フレームバッファ312と、1つ以上のリサイザ314と、をさらに含み得る。受信フレームバッファ308は、復号化対象であり、かつクライアントデバイス112、1つ以上のサーバ110、および/または適応符号化システム104から受信された1つ以上のビデオフレームを表すビットストリームまたは符号化されたデータを受信および格納するように構成されている。参照フレームバッファ308は、デコーダ310によって再構築されたビデオフレームを格納するように構成され、後続のビデオフレームを復号化するための参照フレームとして使用される。いくつかの実装態様において、適応復号化システム106は、ネットワークインターフェース316と、入力/出力インターフェース318とをさらに含み得る。追加的または代替的に、適応復号化システム106の機能のいくつかまたはすべては、ASIC(すなわち、特定用途向け集積回路)、FPGA(すなわち、フィールドプログラマブルゲートアレイ)、または適応復号化システム106で提供される他のハードウェアを使用して実装され得る。
【0032】
実装態様において、1つ以上の処理ユニット302は、ネットワークインターフェース316から受信された、入力/出力インターフェース318から受信された、および/またはメモリ304に格納された命令を実行するように構成されている。実装態様において、1つ以上の処理ユニット302は、例えば、マイクロプロセッサ、アプリケーション固有の命令セットプロセッサ、グラフィックス処理ユニット、物理処理ユニット(PPU)、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサなどを含む1つ以上のハードウェアプロセッサとして実装され得る。追加的または代替的に、本明細書に記載の機能は、少なくとも部分的に、1つ以上のハードウェア論理構成要素によって実行することができる。例えば、限定されないが、使用可能なハードウェア論理構成要素の例示的なタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システム・オン・チップシステム(SOC)、コンプレックスプログラマブル論理デバイス(CPLD)などを含む。
【0033】
メモリ304は、ランダムアクセスメモリ(RAM)などの揮発性メモリおよび/または読み取り専用メモリ(ROM)もしくはフラッシュRAMなどの不揮発性メモリの形態のコンピュータ可読媒体を含み得る。メモリ304は、前述の説明に記載されているようなコンピュータ可読媒体の一例である。
【0034】
例示的な方法
図4は、適応ビデオ符号化の例示的な方法を描写する概略図である。
図5は、適応ビデオ復号化の例示的な方法を描写する概略図である。
図4および5の方法は、
図1の環境で、
図2および/または
図3のシステムを使用して実装することができるが、必須ではない。説明を容易にするために、方法400および500を、
図4および5を参照して説明する。しかしながら、方法400および500は、代替的に、他の環境で、および/または他のシステムを使用して実装されてもよい。
【0035】
方法400および500を、コンピュータ実行可能な命令との一般的な関連で説明する。概して、コンピュータ実行可能な命令は、特定の機能を実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、手順、モジュール、関数等を含み得る。さらに、例示的な方法の各々は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせで実装することができる一連の操作を表す論理フローグラフ内のブロックの集合として示されている。方法が記載されている順序は、限定として解釈されるものではなく、任意の数の記載されている方法ブロックが、本方法または代替方法を実装する任意の順序で組み合わせることができる。さらに、個々のブロックは、本明細書に記載の主題の精神および範囲から逸脱することなく、本方法から省略され得る。ソフトウェアとの関連では、ブロックは、1つ以上のプロセッサによって実行されると、上記の操作を実行するコンピュータ命令を表す。ハードウェアとの関連では、ブロックのうちのいくつかまたはすべては、特定用途向け集積回路(ASIC)または上記の操作を実行する他の物理的構成要素を表す場合がある。
【0036】
図4に戻って参照すると、ブロック402において、適応符号化システム104は、送信対象のビデオを取得することができる。実装態様において、適応符号化システム104は、クライアントデバイス112から直接ビデオの要求を受信し、1つ以上のサーバ110からのビデオ、例えば、要求されたビデオを含む、1つ以上のサーバ110に関連付けられたビデオ集合体からのビデオを取得し、および要求されたビデオを符号化対象フレームバッファ214内に配置することができる。いくつかの実装態様において、1つ以上のサーバ110は、クライアントデバイス112からビデオの要求を受信し、ビデオ集合体から要求されたビデオを取得し、要求されたビデオを適応符号化システム104の符号化対象フレームバッファ214に配置することができる。実装態様において、要求されたビデオは、1つ以上のビデオシーケンスに分割することができ、各ビデオは、送信のための複数のビデオフレームを含む。
【0037】
ブロック404において、適応符号化システム104は、符号化対象フレームバッファ214からビデオシーケンスを取得し、ビデオシーケンスの解像度を判定し、エンコーダ212を通じてビデオシーケンスのシーケンスヘッダを符号化し、ビデオシーケンスのシーケンスヘッダをクライアントデバイス112または適応復号化システム106に送信することができる。
【0038】
実装態様において、適応符号化システム104は、ネットワーク帯域幅、トラフィック量などのネットワーク状態に基づいてビデオシーケンスの解像度を判定することができる。実装態様において、判定される解像度は、ビデオシーケンス内のすべてのビデオフレームの最大解像度であり得る。実装態様において、シーケンスヘッダは、判定された解像度の情報、サイズ変更が必要な場合には、ビデオシーケンスのフレームのサイズ変更に使用されるサイズ変更(例えば、アップサンプリングまたはダウンサンプリング)フィルタ係数などを含み得るが、これらに限定されない。
【0039】
ブロック406において、適応符号化システム104は、ビデオシーケンスの他のビデオフレームの画像データを使用せずに、ビデオフレームの画像データ(のみ)を使用してビデオフレーム(例えば、イントラコーディングされたフレーム)を符号化し、イントラコーディングされたフレームの符号化されたデータを、例えば、クライアントデバイス112または適応復号化システム106に送信することができる。
【0040】
実装態様において、適応符号化システム104は、例えば、従来のイントラコーディング方法を使用してエンコーダ212を通じてイントラコーディングされたフレームを符号化し、イントラコーディングされたフレームの符号化されたデータを送信対象バッファ216内に配置することができ、符号化されたデータは、クライアントデバイス112または適応復号化システム106に送信される。
【0041】
ブロック408において、適応符号化システム104は、ビデオシーケンスの他のフレームの情報(画像データ、動きベクトルなど)を使用して、ビデオフレーム(例えば、インターコーディングされたフレーム)を符号化することができる。
【0042】
実装態様において、適応符号化システム104は、従来のインターコーディング方法を使用して、エンコーダ212を通じてインターコーディングされたフレームを符号化することができる。
【0043】
ブロック410において、適応符号化システム104は、ネットワーク状態の変化(例えば、ネットワーク帯域幅の変化、またはトラフィック量の変化など)を検出することができる。例えば、適応符号化システム104は、ネットワーク帯域幅が減少もしくは増加したこと、またはトラフィック量が増加もしくは減少したことを検出することができる。
【0044】
ブロック412において、変化の検出に応答して、適応符号化システム104は、符号化および送信対象であるビデオシーケンスの後続のフレーム(例えば、別のインターコーディングされたフレーム)の新しい解像度を判定することができる。
【0045】
実装態様において、ネットワーク帯域幅が低減するか、またはトラフィック量が増加する場合、適応符号化システム104は、符号化および送信対象であるビデオシーケンスの後続のフレームの解像度を低減させる、例えば、複数の事前定義された解像度のうちの1つに低減させる必要があると判定することができる。代替的に、ネットワーク帯域幅が増加するか、またはトラフィック量が減少する場合、適応符号化システム104は、符号化および送信対象であるビデオシーケンスの後続のフレームの解像度を増加させる、例えば、複数の事前定義された解像度の1つであり、かつ後続のフレームを含むビデオシーケンスのシーケンスヘッダに示された最大解像度まで増加させる必要があると判定することができる。
【0046】
ブロック414において、適応符号化システム104は、後続のフレーム(例えば、他のインターコーディングされたフレーム)を符号化することで、従来のインターコーディング方法を使用して、エンコーダ212を通じて1つ以上の前のフレームに基づいて後続のフレームの符号化されたデータを取得することができる。実装態様において、符号化されたデータは、動きベクトル、予測誤差などを含み得るが、これらに限定されない。
【0047】
ブロック416において、適応符号化システム104は、符号化されたデータの情報のスケールを変更して、後続のフレームのサイズを元の解像度から新しい解像度に変更することができる(例えば、解像度を低減させる場合はダウンサンプル、または解像度を増加させる場合はアップサンプル)。
【0048】
実装態様において、適応符号化システム104は、例えば、後続のフレームの元の解像度と新しい解像度との関係に従って、符号化されたデータに含まれる動きベクトルおよび予測子のスケールを変更することができる。実装態様において、適応符号化システム104は、後続のフレームの解像度を後続のフレームのフレームヘッダまたは符号化されたデータのデータヘッダに変更するために使用されるサイズ変更(例えば、アップサンプリングまたはダウンサンプリング)フィルタ係数をさらに含み得る。この場合、以前に符号化されたフレームのサイズ変更またはサンプリングに使用されるフィルタをフィルタ予測子として使用することができ、現在のフレームのフィルタが符号化されるときに予測コーディングを適用することができる。
【0049】
ブロック418において、適応符号化システム104は、サイズ変更された後続フレームの符号化されたデータを送信対象フレームバッファ216内に配置することができ、符号化されたデータは、次にクライアントデバイス112または適応復号化システム106に送信される。
【0050】
ブロック420において、次のビデオフレームがイントラコーディングされたフレームであるかインターコーディングされたフレームであるかに応じて、適応符号化システム106は、上記の方法ブロックのいくつかの動作に従って、符号化対象フレームバッファ214内の次のビデオフレームを処理し続けることができる。
【0051】
上記の方法ブロックは特定の順序で実行されるように説明されているが、いくつかの実装態様において、方法ブロックのいくつかまたはすべてを他の順序で、または並行して実行することができる。例えば、適応符号化システム104は、エンコーダ212を使用して現在のビデオフレームを符号化する一方で、送信対象フレームバッファ216内に配置された前のビデオフレームの符号化されたデータをクライアントデバイス112または適応復号化システム106に送信することができる。
【0052】
図5を参照すると、ブロック502において、適応復号化システム106は、受信フレームバッファ308内の1つ以上のフレームのビットストリームまたは符号化されたデータを受信する。
【0053】
実装態様において、適応復号化システム106は、1つ以上のサーバ110または適応符号化システム104から1つ以上のフレームのビットストリームまたは符号化されたデータを受信し、1つ以上のフレームのビットストリームまたは符号化されたデータを受信フレームバッファ308内に配置することができる。いくつかの実装態様において、クライアントデバイス112は、ユーザのビデオの要求が1つ以上のサーバ110または適応符号化システム104に送信された後、1つ以上のサーバ110または適応符号化システム104から1つ以上のフレームのビットストリームまたは符号化されたデータを受信し、1つ以上のフレームのビットストリームまたは符号化されたデータを、適応復号化システム106の受信フレームバッファ308内に配置することができる。
【0054】
ブロック504において、適応復号化システム106は、受信フレームバッファ308から第1のフレームを表す符号化されたデータを取得またはフェッチし、かつ第1のフレームを復号化して再構築するために第1のフレームを表す符号化されたデータをデコーダ310に送信することができる。
【0055】
第1のフレームのタイプに応じて、第1のフレームを表す符号化されたデータは、符号化された画像データ、動きベクトル、および/または予測誤差を含み得るが、これらに限定されない。実装態様において、第1のフレームを表す符号化されたデータは、ヘッダデータ、フィルタリングデータなどの他の関連データも含み得る。限定ではなく例示として、ビデオフレームのタイプは、ビデオフレーム(例えば、イントラコーディングされたフレーム)の前および/または後の他のいずれのビデオフレームも使用せず、ビデオフレームの画像データ(のみ)を使用して符号化されたビデオフレーム、ビデオフレーム(例えば、インターコーディングされたフレーム)の前および/または後の他のフレームの情報(画像データ、動きベクトルなど)を使用して符号化されたビデオフレームを含み得る。
【0056】
ブロック506において、適応復号化システム106は、第1のフレームのフレームヘッダ(または第1のフレームを表す符号化されたデータのデータヘッダ)に示されるフレームタイプに基づいて、第1のフレームがイントラコーディングフレームであるかインターコーディングフレームであるかを判定することができる。
【0057】
ブロック508において、第1のフレームがイントラコーディングフレームであると判定したことに応答して、適応復号化システム106は、第1のフレームを表す符号化されたデータを復号化することで、ビデオシーケンスに使用されるビデオコーデックのイントラコーディング方法に従って、デコーダ310を使用して第1のフレームを再構築することができる。
【0058】
ブロック510において、適応復号化システム106は、後続のビデオフレームによる参照フレームとして使用するために、再構成された第1のフレームを参照フレームバッファ312内に格納することができる。
【0059】
ブロック512において、適応復号化システム106は、再構築された第1のフレームを、ユーザに提示するためにクライアントデバイス112のディスプレイに提供することができる。
【0060】
ブロック514において、第1のフレームがインターコーディングされたフレームであると判定したことに応答して、適応復号化システム106は、第1のフレームの第1の解像度の情報を取得または判定することができる。
【0061】
実装態様において、適応復号化システム106は、第1のフレームのフレームヘッダ(または第1のフレームを表す符号化されたデータのデータヘッダ)で信号伝達または示された相対解像度(例えば、1/2、1/4、1/2K、またはn/mなどの比率。ここで、k、n、およびmは、正の整数)、ならびに第1のフレームを含むビデオシーケンスのシーケンスヘッダで信号伝達または示された最大解像度に基づいて、第1のフレームの第1の解像度の情報を取得または判定することができる。
【0062】
ブロック516において、適応復号化システム106は、第1のフレームの第1の解像度が第2の解像度(例えば、第1のフレームを再構築するための参照フレームとして使用される1つ以上の第2のフレームの解像度)と同じであるかどうかを判定することができる。
【0063】
実装態様において、1つ以上の第2のフレームは、第1のフレームの前に受信され、現在、参照フレームバッファ312に格納されている。実装態様において、適応復号化システム106が使用するコーディングモードに応じて、参照フレームバッファ312は、第1のフレームの符号化されたデータを受信する前に適応復号化システム106によって受信された異なるタイプまたは解像度の参照フレームを含むか、または格納することができる。
【0064】
実装態様において、適応復号化システム106は、適応解像度の変更に対応するために、3つの異なるコーディングモードのうちの1つ以上で構成され得る。第1のコーディングモードによれば、受信および再構築された現在のビデオフレームが前のビデオフレームの解像度とは異なる解像度(例えば、より低い解像度)を有する場合、現在のビデオフレームは常にサイズ変更(例えば、アップサンプリング)され、それによって、サイズ変更されたビデオフレームが前のビデオフレームと同じ解像度を持ち、参照フレームバッファ312に格納されるようになる。
【0065】
第2のコーディングモードによれば、元の解像度の現在のビデオフレームは、参照フレームバッファ312に直接格納される。さらに、現在のビデオフレームの元の解像度が後続または将来のビデオフレームの解像度と異なり、かつ現在のフレームが後続のビデオフレーム(複数可)のいずれか1つの参照フレームとして使用される場合(例えば、現在のビデオフレームが後続のビデオフレームの解像度よりも低い)、現在のビデオフレームはサイズ変更(例えば、アップサンプリング)され、サイズ変更されたビデオフレームも参照フレームバッファ312に格納される。実装態様において、第2のコーディングモードが使用される場合、適応復号化システム106は、後続のビデオフレームの解像度を判定することができ、かつ現在のビデオフレームの元の解像度が後続のビデオフレームの解像度と異なり(例えば、より低く)、現在のフレームが後続のビデオフレームのいずれか1つの参照フレームとして使用されていると判定したことに応答して、現在のビデオフレームをサイズ変更することができる。
【0066】
第3のコーディングモードによれば、受信および再構築された現在のビデオフレームは、現在のビデオフレームが前のビデオフレームと同じ解像度を有するかどうかに関して、現在のビデオフレームをサイズ変更して参照フレームバッファに格納することなく、参照フレームバッファ312に格納される。
【0067】
ブロック518において、第1のフレームの第1の解像度が第2の解像度(例えば、1つ以上の第2のフレームの解像度)と同じであると判定したことに応答して、適応復号化システム106は、第1のフレームを表す符号化されたデータを、第1のフレームを再構築する1つ以上の第2のフレームの少なくともいくつかのデータに基づいて、デコーダ310を使用して復号化することができる。
【0068】
実装態様において、1つ以上の第2のフレームの少なくともいくつかのデータは、インター予測子(または動き予測子)、動きベクトル、1つ以上の第2のフレームの画像データを含み得るが、これらに限定されない。例えば、適応復号化システム106は、1つ以上の第2のフレームのインター予測で使用されるインター予測子のサイズを変更し、および/または動きベクトルをスケーリングし、かつデコーダ310を使用して、サイズ変更された予測子および/またはスケーリングされた動きベクトルに基づいて、第1のフレームを表す符号化されたデータを復号化することができる。追加的または代替的に、適応復号化システム106は、1つ以上の第2のフレームの画像データに基づいて、第1のフレームを表す符号化されたデータを復号化することができる。いくつかの実装態様において、適応復号化システム106は、1つ以上の第2のフレームの他のデータを使用せずに、サイズ変更された予測子および/またはスケーリングされた動きベクトルに基づいて、符号化されたデータを復号化することができる。
【0069】
ブロック520において、第1の第1の解像度が1つ以上の第2のフレームの第2の解像度と異なる(例えば、より低いまたはより高い)と判定したことに応答して、適応復号化システム106は、1つ以上のリサイザ314のうちの第1のリサイザを使用して、1つ以上の第2のフレームをサイズ変更(例えば、アップサンプルまたはダウンサンプル)して、第2の解像度から第1の解像度に変更し、インター予測子をサイズ変更し、および/または動きベクトルを1つ以上の第2のフレームに関連付けることができる。
【0070】
ブロック522において、適応復号化システム106は、1つ以上のサイズ変更された第2のフレームおよび/またはスケーリングされた動きベクトルに基づいて、デコーダ310を使用して第1のフレームを表す符号化されたデータを復号化することで、第1のフレームを再構築することができる。実装態様において、デコーダ310は、1つ以上のサイズ変更された第2のフレームおよび/またはスケーリングされた動きベクトルに基づいて、第1のフレームを復号化および再構築するための従来の復号化および再構築方法を使用することができる。
【0071】
ブロック524において、適応復号化システム106は、使用されるコーディングモードを判定することができる。
【0072】
前述の説明で記載したように、適応復号化システム106は、適応解像度の変更に対応するために、3つの異なるコーディングモードのうちの1つ以上で構成され得る。次いで、適応復号化システム106は、第1のフレームおよび/または第1のフレームを含むビデオシーケンスに現在使用されているコーディングモードを判定することができる。代替的に、適応復号化システム106は、デフォルトのコーディングモードとして3つの異なるコーディングモードのうちの1つで構成され得る。この場合、適応復号化システム106は、どのコーディングモードが使用されているかの判定を実行する必要はなく、すなわち、ブロック524は省略することができる。
【0073】
ブロック526において、適応復号化システム106が現在採用しているコーディングモードに応じて、適応復号化システム106は、任意選択で、第1の解像度の第1のフレームをサイズ変更することで、1つ以上のリサイザ314のうちの第2のリサイザを使用して、1つ以上の第2のフレームの第1の解像度から第2の解像度に変更することができる。
【0074】
実装態様において、ビデオシーケンスのシーケンスヘッダおよび/または第1のフレームのフレームヘッダは、第1のフレームを元の解像度(例えば、第2の解像度、またはビデオシーケンスのシーケンスヘッダに示されている最大解像度)から第1の解像度にサイズ変更するために使用されるサイズ変更フィルタ係数(例えば、アップサンプリングまたはダウンサンプリングフィルタ係数)を含み得る。この場合、適応復号化システム106は、サイズ変更フィルタ係数に基づいて、第1のフレームを第1の解像度から第2の解像度、またはビデオシーケンスのシーケンスヘッダに示される最大解像度にサイズ変更することができる。
【0075】
ブロック528において、適応復号化システム106は、適応復号化システム106が使用するコーディングモードに基づいて、第1の解像度の第1のフレームおよび第2の解像度のサイズ変更された第1のフレームのうちの1つ以上を参照フレームバッファ312に格納することができる。
【0076】
実装態様において、適応復号化システム106は、第1のコーディングモードが使用される場合、(常に)第2の解像度のサイズ変更された第1のフレームを参照フレームバッファ312に格納する。実装態様において、第2のコーディングモードが使用される場合、適応復号化システム106は、第1の解像度の第1のフレームを参照フレームバッファ312に格納し、第1のフレームの第1の解像度が後続のフレーム(すなわち、第1のフレームの後に受信されたビデオフレーム)の解像度と異なる(例えば、より低い)場合、かつ第1のフレームが後続のビデオフレーム(複数可)のいずれか1つの参照フレームとして使用されている場合、サイズ変更された第1のフレームを格納する。実装態様において、第2のコーディングモードが使用されている場合、適応復号化システム106は、第1のフレームをサイズ変更するかどうか、サイズ変更された第1のフレームを格納するかどうかを判定するときに、第1のフレームの第1の解像度が後続のフレームの解像度と同じであるかどうかを判定することができる。第1のフレームの第1の解像度が後続のフレームの解像度と異なり(例えば、より低く)、かつ第1のフレームが後続のビデオフレーム(複数可)のいずれか1つの参照フレームとして使用されていると判定すると、適応復号化システム106は、第1のフレームをサイズ変更し、サイズ変更された第1のフレームを参照フレームバッファ312に格納することができる。実装態様において、第3のコーディングモードが使用される場合、適応復号化システム106は、第1の解像度の第1のフレーム(のみ)を参照フレームバッファ312に格納する。
【0077】
ブロック530において、適応復号化システム106は、クライアントデバイス112のディスプレイに提示するために、クライアントデバイス112に第1のフレームを提供することができる。
【0078】
実装態様において、第1のフレームの第1の解像度が、ビデオシーケンスのシーケンスヘッダに示される最大解像度よりも小さいか、またはクライアントデバイス112のディスプレイの所望のもしくはデフォルトの解像度よりも小さい場合、適応復号化システム106は、1つ以上のリサイザ314のうちの第3のリサイザを使用して、まず第1のフレームを第1の解像度から最大解像度またはクライアントデバイス112のディスプレイの所望のもしくはデフォルトの解像度にサイズ変更し、次いで、サイズ変更された第1のフレームを、ユーザに提示するためにクライアントデバイス112のディスプレイに提供することができる。
【0079】
実装態様において、第3のリサイザは、第2のリサイザと異なっていてもよく、異なっていなくてもよい。すなわち、第2のリサイザとは異なるサイズ変更またはサンプリング方法を使用してもよく、使用しなくてもよい。例えば、第3のリサイザは、第2のリサイザよりも複雑なサイズ変更またはサンプリング方法を使用してもよい。実装態様において、第2のリサイザは、単純なゼロ位相分離可能ダウンサンプリングおよび/またはアップサンプリングフィルタを使用することができ、第3のリサイザは、二方向以上の複雑なフィルタを使用して、再構成された第1のフレームを、最大解像度またはデフォルトであるか、もしくはクライアントデバイス112のディスプレイによって指定された解像度にサイズ変更(例えば、アップサンプル)することができる。
【0080】
実装態様において、参照フレームバッファ312内の第2のリサイザによって生成されたサイズ変更またはサンプリング結果の少なくともサブセットは、第3のリサイザに関連付けられた表示バッファと共有され得る。具体的には、例えば、第2のリサイザおよび第3のリサイザで使用されるサンプリング方法が類似しているため、第2のリサイザおよび第3のリサイザの結果の一部が同じになり得る。これにより、結果の効率的な格納が容易になり、第2のリサイザおよび第3のリサイザのサンプリングプロセスが高速化される。
【0081】
代替的に、第1のフレームの第1の解像度が、ビデオシーケンスのシーケンスヘッダに示される最大解像度またはクライアントデバイス112のディスプレイの所望の(もしくはデフォルトの)解像度と同じである場合、適応復号化システム106は、ユーザに提示するために、単に、第1のフレームをクライアントデバイス112のディスプレイに提供することができる。
【0082】
ブロック532において、適応復号化システム106は、受信フレームバッファ308から別のフレーム、例えば第3のフレームの符号化されたデータを取得またはフェッチし、それに応じて上記の方法ブロック(例えば、ブロック504~530)の動作を第3のフレームに対して実行することができる。
【0083】
上記の方法ブロックは特定の順序で実行されるように説明されているが、いくつかの実装態様において、方法ブロックのいくつかまたはすべてを他の順序で、または並行して実行することができる。限定ではなく例示として、デコーダ310および1つ以上のリサイザ314は、同時に動作することができる。例えば、適応復号化システム106は、デコーダ310を使用してビデオフレームを復号化しながら、受信フレームバッファ308から別のビデオフレームをフェッチし、その別のビデオフレームのタイプを判定することができる。別の例では、適応復号化システム106は、デコーダ310によって再構築されたビデオフレームの格納を実行しながら、その前に受信された別の再構築されたビデオフレームをユーザに提示するためにクライアントデバイス112に提供することができる。
【0084】
本明細書に記載の方法のいずれかの動作のいずれかは、1つ以上のコンピュータ可読媒体に格納された命令に基づいて、プロセッサまたは他の電子デバイスによって少なくとも部分的に実装され得る。限定ではなく例示として、本明細書に記載の方法のいずれかの動作のいずれかは、1つ以上のコンピュータ可読媒体に格納され得る実行可能な命令で構成された1つ以上のプロセッサの制御下で実装され得る。
【0085】
実装態様は、構造的特徴および/または方法論的動作に特有の文言で説明してきたが、特許請求の範囲は、必ずしも説明してきた特定の特徴または動作に限定されるものではないことを理解されたい。むしろ、特定の特徴および動作は、特許請求された主題を実装する例示的な形態として開示されている。追加的または代替的に、操作のいくつかまたはすべては、1つ以上のASICS、FPGA、または他のハードウェアによって実装され得る。
【0086】
本開示は、以下の条項を用いてさらに理解することができる。
【0087】
条項1:1つ以上のコンピューティングデバイスによって実装される方法であって、第1の解像度の第1のフレームを表す符号化されたデータを受信することと、符号化されたデータを復号化して第1のフレームを取得することと、第1のフレームを第1の解像度から第2の解像度にサイズ変更することと、第2の解像度のサイズ変更された第1のフレームを参照フレームバッファに格納することと、を含む、方法。
【0088】
条項2:符号化されたデータを復号化して第1のフレームを取得することは、参照フレームバッファにローカルに格納されている第2の解像度の第2のフレームに基づく、条項1に記載の方法。
【0089】
条項3:第2のフレームは、第1のフレームの直前に受信されたビデオシーケンスのフレームである、条項2に記載の方法。
【0090】
条項4:表示のために第1のフレームをサイズ変更することをさらに含む、条項1に記載の方法。
【0091】
条項5:符号化されたデータを復号化して第1のフレームを取得することは、第1のフレームの前に受信された第2のフレームに関する1つ以上の動き予測ブロックに基づく、条項1に記載の方法。
【0092】
条項6:第3の解像度の第3のフレームを表す他の符号化されたデータを受信することと、他の符号化されたデータを復号化して、少なくとも第2の解像度のサイズ変更された第1のフレームに基づいて第3のフレームを取得することと、をさらに含む、条項1に記載の方法。
【0093】
条項7:第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、第1のフレームの第1の解像度の情報を取得することをさらに含む、条項1に記載の方法。
【0094】
条項8:第1のフレームの第1の解像度の情報を取得することは、第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づく、条項7に記載の方法。
【0095】
条項9:実行可能な命令を格納する1つ以上のコンピュータ可読媒体であって、実行可能な命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、ネットワーク上で第1のフレームを表す符号化されたデータを受信することと、符号化されたデータを復号化して第1のフレームを取得することと、第1の解像度の第1のフレームを参照フレームバッファに格納することと、第1のフレームの第1の解像度が第2の解像度よりも低いかどうかを判定することと、第1の解像度が第2の解像度と等しくないと判定したことに応答して、第1のフレームを第1の解像度から第2の解像度に適応的にサイズ変更し、第2の解像度のサイズ変更された第1のフレームを参照フレームバッファに格納することと、を含む動作を実行させる、1つ以上のコンピュータ可読媒体。
【0096】
条項10:符号化されたデータを復号化して第1のフレームを取得することは、第1のフレームの前に受信された第2のフレームに関する1つ以上の動き予測ブロックに基づく、条項9に記載の1つ以上のコンピュータ可読媒体。
【0097】
条項11:動作は、表示のために第1のフレームをサイズ変更することをさらに含む、条項9に記載の1つ以上のコンピュータ可読媒体。
【0098】
条項12:動作は、第3の解像度の第3のフレームを表す他の符号化されたデータを受信することと、他の符号化されたデータを復号化して、第2の解像度のサイズ変更された第1のフレームまたは第1の解像度の第1のフレームのうちの1つを使用して、第3のフレームを取得することと、をさらに含む、条項9に記載の1つ以上のコンピュータ可読媒体。
【0099】
条項13:動作は、第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、第1のフレームの第1の解像度の情報を取得することをさらに含む、条項9に記載の1つ以上のコンピュータ可読媒体。
【0100】
条項14:第1のフレームの第1の解像度の情報を取得することは、第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づく、条項13に記載の1つ以上のコンピュータ可読媒体。
【0101】
条項15:システムであって、1つ以上のプロセッサと、実行可能な命令を格納するメモリとを備え、実行可能な命令は、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに、第1の解像度の第1のフレームを表す符号化されたデータを受信することと、第1のフレームの第1の解像度が第2のフレームの第2の解像度と等しいかどうかを判定することと、第1のフレームの第1の解像度は第2のフレームの第2の解像度と等しくないことに応答して、第2のフレームに関連付けられた予測子をサイズ変更および/または動きベクトルをスケール変更することと、符号化されたデータを復号化して、サイズ変更された予測子および/またはスケール変更された動きベクトルに少なくとも部分的に基づいて、第1のフレームを取得することと、第1の解像度の第1のフレームを参照フレームバッファに格納することと、を含む動作を実行させる、システム。
【0102】
条項16:動作は、表示のために第1のフレームをサイズ変更することをさらに含む、条項15に記載のシステム。
【0103】
条項17:第1のフレームは、ネットワーク上でリモートで受信され、第2のフレームは参照フレームバッファにローカルに格納される、条項15に記載のシステム。
【0104】
条項18:動作は、第3の解像度の第3のフレームを表す他の符号化されたデータを受信することと、他の符号化されたデータを復号化して、第1のフレームに少なくとも部分的に基づいて、第3のフレームを取得することと、をさらに含む、条項15に記載のシステム。
【0105】
条項19:動作は、第1のフレームのヘッダ内の特定のフィールドに少なくとも部分的に基づいて、第1のフレームの第1の解像度の情報を取得することをさらに含む、条項15に記載のシステム。
【0106】
条項20:第1のフレームの第1の解像度の情報を取得することは、第1のフレームを含むビデオシーケンスのヘッダ内の別のフィールドにさらに基づく、条項19に記載のシステム。