(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-06
(45)【発行日】2024-03-14
(54)【発明の名称】異なる圧縮レベルでのビデオコーディングのためのサイド情報
(51)【国際特許分類】
H04N 19/126 20140101AFI20240307BHJP
H04N 19/167 20140101ALI20240307BHJP
H04N 19/17 20140101ALI20240307BHJP
【FI】
H04N19/126
H04N19/167
H04N19/17
(21)【出願番号】P 2021537923
(86)(22)【出願日】2020-04-01
(86)【国際出願番号】 US2020026215
(87)【国際公開番号】W WO2020198756
(87)【国際公開日】2020-10-01
【審査請求日】2021-09-21
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アダム エイチ. リー
(72)【発明者】
【氏名】ナサニエル デイビッド ネーグル
【審査官】富樫 明
(56)【参考文献】
【文献】特開2002-300581(JP,A)
【文献】特開2018-082407(JP,A)
【文献】特開2004-134939(JP,A)
【文献】国際公開第00/048090(WO,A1)
【文献】特開平11-215498(JP,A)
【文献】米国特許出願公開第2018/0220134(US,A1)
【文献】特開2011-114493(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
システムであって、
データを受信するように構成されたインタフェース回路と、
前記インタフェース回路に結合されたエンコーダと、を備え、
前記エンコーダは、
ビデオフレームの複数の画素のブロックと、前記ビデオフレームの前記複数の画素のブロックとは別のサイド情報と、を受信することと、
前記サイド情報に基づいて、所定の領域が、前記所定の領域の外側の直接隣接するブロックの第2の圧縮レベルとは異なる、絶対値又は相対値として特定される第1の圧縮レベルを用いて符号化されると予測される、前記ビデオフレームの前記複数のブロックのうち1つ以上のブロックを含むと判別したことに応じて、前記第2の圧縮レベルとは異なる圧縮レベルを用いて前記所定の領域の前記1つ以上のブロックを圧縮することと、
を行うように構成されている、
システム。
【請求項2】
前記サイド情報に基づいて、前記ビデオフレームの前記複数のブロックの各ブロックが、前記サイド情報によって示される、予測された第3の圧縮レベルを有すると判別したことに応じて、前記第3の圧縮レベルを用いて前記ビデオフレームを圧縮する、
請求項1のシステム。
【請求項3】
前記所定の領域の前記1つ以上のブロックを圧縮するために、前記エンコーダは、前記受信したサイド情報において特定された、予測された第1の圧縮レベルに基づいて1つ以上の符号化パラメータを更新するようにさらに構成されている、
請求項1のシステム。
【請求項4】
前記1つ以上の符号化パラメータを更新するために、前記エンコーダは、
前記エンコーダが前記サイド情報を受信しなかったかのように、所定の符号化パラメータを生成することと、
前記所定の符号化パラメータを、前記サイド情報に基づく前記所定の符号化パラメータの値に置き換えることと、
を行うようにさらに構成されている、
請求項3のシステム。
【請求項5】
プロセッサをさらに備え、前記プロセッサは、前記所定の領域が前記ビデオフレームに存在することを示すソフトウェアのヒントまたはハードウェアのヒントを受信したことに応じて、前記サイド情報を生成し、
前記サイド情報は、
前記ビデオフレームの前記所定の領域の位置と、
前記所定の領域と前記直接隣接するブロックとの間で異なる圧縮レベルを発生させる、前記所定の領域のコンテンツのタイプと、を含む、
請求項3のシステム。
【請求項6】
前記所定の領域が前記ビデオフレーム内の予測される焦点を含むと判別したことに応じて、前記プロセッサは、
前記所定の領域の前記圧縮レベルが、前記直接隣接するブロックの前記圧縮レベルよりも小さいと予測することと、
前記コンテンツのタイプが前記ビデオフレーム内の前記予測される焦点であることを示す指標を前記サイド情報に挿入することと、
を行うように構成されている、
請求項5のシステム。
【請求項7】
前記サイド情報から、前記所定の領域の前記複数のブロックが、前記直接隣接するブロックの前記圧縮レベルよりも小さい圧縮レベルを有すると判別したことに応じて、前記エンコーダは、量子化パラメータを減少させるようにさらに構成されている、
請求項3のシステム。
【請求項8】
前記サイド情報は、
前記ビデオフレームに先行するN(Nは、正の0以外の整数)個のビデオフレームにおける前記所定の領域の各々の位置と、
前記N個のビデオフレーム内の前記所定の領域に先行する第1のブロックの1つ以上の符号化パラメータと、を含む、
請求項1のシステム。
【請求項9】
前記エンコーダは、前記N個の先行ビデオフレームにおける前記第1のブロックの前記1つ以上の符号化パラメータの加重合計に基づいて、前記第1のブロックの1つ以上の符号化パラメータを更新することによって、前記第1のブロックを圧縮するようにさらに構成されている、
請求項
8のシステム。
【請求項10】
ビデオフレームの複数の画素のブロックと、前記ビデオフレームの前記複数の画素のブロックとは別のサイド情報と、を受信することと、
前記サイド情報に基づいて、所定の領域が、前記所定の領域の外側の直接隣接するブロックの第2の圧縮レベルとは異なる、絶対値又は相対値として特定される第1の圧縮レベルを用いて符号化されると予測される、前記ビデオフレームの前記複数のブロックのうち1つ以上のブロックを含むと判別したことに応じて、前記第2の圧縮レベルとは異なる圧縮レベルを用いて前記所定の領域の前記1つ以上のブロックを圧縮することと、を含む、
方法。
【請求項11】
前記所定の領域の前記複数のブロックを圧縮するために、前記受信したサイド情報において特定された、予測された第1の圧縮レベルに基づいて1つ以上の符号化パラメータを更新することをさらに含む、
請求項10の方法。
【請求項12】
前記所定の領域が前記ビデオフレームに存在することを示すソフトウェアのヒントまたはハードウェアのヒントを受信したことに応じて、前記方法は、プロセッサが前記サイド情報を生成することをさらに含み、
前記サイド情報は、
前記ビデオフレームの前記所定の領域の位置と、
前記所定の領域と前記直接隣接するブロックとの間で異なる圧縮レベルを発生させる、前記所定の領域のコンテンツのタイプと、を含む、
請求項11の方法。
【請求項13】
前記所定の領域が前記ビデオフレーム内の予測される焦点を含むオブジェクトのタイプを含むと判別したことに応じて、前記方法は、
前記所定の領域の前記圧縮レベルが、前記直接隣接するブロックの前記圧縮レベルよりも小さいと予測することと、
前記コンテンツのタイプが前記ビデオフレーム内の前記予測される焦点であることを示す指標を前記サイド情報に挿入することと、を含む、
請求項12の方法。
【請求項14】
前記サイド情報から、前記所定の領域の前記複数のブロックが、前記直接隣接するブロックの前記圧縮レベルよりも小さい圧縮レベルを有すると判別したことに応じて、動きの推定中に、検索領域の前記複数のブロックの高速探索ではなく完全検索を実行することをさらに含む、
請求項10の方法。
【請求項15】
前記サイド情報から、前記所定の領域の前記複数のブロックが、前記直接隣接するブロックの圧縮レベルよりも小さい圧縮レベルを有すると判別したことに応じて、算術エントロピーコーディングアルゴリズムによって生成された端数の精度を高めることをさらに含む、
請求項11の方法。
【請求項16】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、
前記プログラム命令は、
ビデオフレームの複数の画素のブロックと、前記ビデオフレームの前記複数の画素のブロックとは別のサイド情報と、を受信することと、
前記サイド情報に基づいて、所定の領域が、前記所定の領域の外側の直接隣接するブロックの第2の圧縮レベルとは異なる、絶対値又は相対値として特定される第1の圧縮レベルを用いて符号化されると予測される、前記ビデオフレームの前記複数のブロックのうち1つ以上のブロックを含むと判別したことに応じて、前記第2の圧縮レベルとは異なる圧縮レベルを用いて前記所定の領域の前記1つ以上のブロックを圧縮することと、
をプロセッサに実行させる、
コンピュータ可読記憶媒体。
【請求項17】
前記所定の領域が前記ビデオフレームに存在することを示すソフトウェアのヒントまたはハードウェアのヒントを受信したことに応じて、前記プログラム命令は、前記受信したサイド情報において特定された、予測された第1の圧縮レベルに基づいて、1つ以上の符号化パラメータを更新することを前記プロセッサに実行させる、
請求項16のコンピュータ可読記憶媒体。
【請求項18】
前記所定の領域が前記ビデオフレームに存在することを示すソフトウェアのヒントまたはハードウェアのヒントを受信したことに応じて、前記プログラム命令は、前記サイド情報を生成することを前記プロセッサに実行させ、
前記サイド情報は、
前記ビデオフレームの前記所定の領域の位置と、
前記所定の領域と前記直接隣接するブロックとの間で異なる圧縮レベルを発生させる、前記所定の領域のコンテンツのタイプと、を含む、
請求項17のコンピュータ可読記憶媒体。
【請求項19】
前記所定の領域が前記ビデオフレーム内の予測される焦点を含むと判別したことに応じて、前記プログラム命令は、
前記所定の領域の前記圧縮レベルが、前記直接隣接するブロックの前記圧縮レベルよりも小さいと予測することと、
前記コンテンツのタイプが前記ビデオフレーム内の前記予測される焦点であることを示す指標を前記サイド情報に挿入することと、
を前記プロセッサに実行させる、
請求項18のコンピュータ可読記憶媒体。
【請求項20】
前記サイド情報から、前記所定の領域の前記複数のブロックが、前記直接隣接するブロックの前記圧縮レベルよりも小さい圧縮レベルを有すると判別したことに応じて、前記プログラム命令は、量子化パラメータを減少させることを前記プロセッサに実行させる、
請求項17のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
ビデオ処理アルゴリズムは複雑であり、多くの異なる機能を含んでいる。高い計算要求を満たすために、高度なプロセッサが使用されている。ディスプレイの解像度が高くなると、ビデオ処理の複雑さが増す。さらに、高解像度ビデオ符号化アプリケーションが、消費者市場空間で急速に成長している。さらに、利用可能なデータ帯域幅が減少し、処理がリアルタイムで行われるため、ビデオ処理はより複雑になっている。例えば、仮想現実(VR)ゲームアプリケーション等のVRアプリケーションが、いっそう一般的になってきている。
【0002】
VRアプリケーションの場合、無線通信リンクは、ビデオストリームをコンピュータ(または他のデバイス)からバーチャルリアリティ(VR)ヘッドセット(またはヘッドマウントディスプレイ(HMD))に送信する。VRビデオストリームを無線送信することは、コンピュータとHMDを装着しているユーザとの間のケーブル接続を必要性とせず、よって、ユーザによる自由な移動を可能にする。VRビデオコンテンツは、通常、高い視野を確保し、ユーザに対して没入型の環境を生成するために、レンズを通して表示される。ビデオ圧縮は既に複雑なプロセスであるが、低帯域幅の無線リンクを介したVRビデオ伝送では、エンドユーザが知覚するビデオの品質の低下を最小限に抑えるビデオ圧縮がより困難になる。
【0003】
上記を考慮して、効率的なビデオ圧縮を実行するための効率的な方法及びシステムが望まれている。
【0004】
添付の図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0005】
【
図1】ビデオ処理システムの一実施形態のブロック図である。
【
図2】ビデオ処理システムの別の実施形態のブロック図である。
【
図3】ビデオフレームにおける同心領域(concentric regions)の一実施形態のブロック図である
【
図4】ビデオエンコーダの一実施形態のブロック図である。
【
図5】ビデオ符号化ロジックの一実施形態のブロック図である。
【
図6】効率的なビデオレンダリングを実行する方法の一実施形態のフロー図である。
【
図7】効率的なビデオ圧縮を実行する方法の一実施形態のフロー図である。
【
図8】ビデオフレーム内のブロックのフレーム間依存性の一実施形態のブロック図である。
【
図9】ビデオフレーム内のブロックのフレーム間依存性の一実施形態のブロック図である。
【
図10】効率的なビデオ圧縮を実行する方法の一実施形態のフロー図である。
【
図11】ビデオフレーム内のブロックのフレーム間依存性の一実施形態のブロック図である。
【
図12】ビデオフレーム内のブロックのフレーム間依存性の一実施形態のブロック図である。
【
図13】効率的なビデオ圧縮を実行する方法の一実施形態のフロー図である。
【発明を実施するための形態】
【0006】
本発明は、様々な修正及び代替形態を受け入れるが、特定の実施形態を図面の例として示し、本明細書で詳細に説明する。しかし、図面及びその詳細な説明は、本発明を、開示された特定の形態に限定することを意図しているのではなく、反対に、本発明は、添付の特許請求の範囲によって定義される本発明の範囲内に収まる全ての変形、均等物、及び、代替物を包含することを理解されたい。
【0007】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の具体的な詳細が示される。しかし、当業者は、様々な実施形態がこれらの具体的な詳細なしに実施され得ることを認識するべきである。いくつかの例では、本明細書で説明するアプローチを不明瞭にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令、及び、技術を詳細に示していない。説明を簡単且つ明確にするために、図面に示す要素は必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0008】
様々な実施形態において、ビデオ処理システムは、ビデオストリームを、ワイヤレスリンクを介して受信機に送信する送信機を含む。送信機には、プロセッサとビデオエンコーダ(またはエンコーダ)とが含まれている。いくつかの実装態様では、プロセッサはGPUであり、プロセッサはビデオフレームの画素の複数のブロックを生成する。生成された画素のブロックは、ビデオフレームのレンダリングされた画素のブロックに対応する。様々な実施形態では、プロセッサは、ビデオフレームの1つ以上のブロックを含む所定の領域の圧縮レベルが、所定の領域の外側にあるビデオフレームの直接隣接するブロックの圧縮レベルと異なることを示すソフトウェアのヒント及びハードウェアのヒントの1つ以上を受信する。このようなヒントを受信したことに応じて、プロセッサは、所定の領域のサイド情報を生成する。いくつかの実施形態では、直接隣接するブロックは、別個の対応するサイド情報を有する別個の領域に含まれる。他の実施形態では、直接隣接するブロックは、別個の対応するサイド情報を有する別個の領域に含まれない。例えば、シーンの背景に、直接隣接するブロックが含まれる場合がある。
【0009】
サイド情報は、ビデオフレーム内の所定の領域の位置を識別し、所定の領域の幾何学的記述を含む。さらに、サイド情報は、所定の領域内のコンテンツのタイプを識別する。コンテンツのタイプの例としては、移動するオブジェクトを有する領域、中心窩領域(foveated region)、焦点、エッジのコントラストが高い領域等がある。いくつかの実施形態において、コンテンツのタイプは、所定の領域の圧縮レベルを示す。他の実施形態では、サイド情報は、所定の領域の圧縮レベルを指定する別個の指標を含む。さらに、他の実施形態では、サイド情報は、特定の符号化パラメータの絶対値を示す指標を含み、この指標は、後に、所定の領域内のブロックの符号化中に特定の符号化パラメータの値を設定またはオーバーライドするために使用される。ビデオエンコーダのロジックは、ビデオエンコーダの1つ以上のブロックによって生成された特定の符号化パラメータの値を、サイド情報で指定された絶対値に置き換える。特定の符号化パラメータの例は、ビデオエンコーダ内の量子化ブロックによって使用される量子化パラメータ(QP)と、ビデオエンコーダ内のエントロピー符号化ブロックによって符号化されるシンボルの長さである。
【0010】
さらに、他の実施形態では、サイド情報は、特定の符号化パラメータの相対値を示す指標を含み、この指標は、後に、所定の領域内のブロックの符号化中に特定の符号化パラメータの値を更新するために使用される。ビデオエンコーダのロジックは、ビデオエンコーダの1つ以上のブロックによって生成された特定の符号化パラメータの値を、サイド情報で指定された相対値によって更新する。様々な設計において、相対量は、パーセンテージ量または差分の量である。いくつかの例では、相対量は正の量(例えば、25%の増加)であり、他の例では、相対量は負の量である(例えば、QPが5減少するか、シンボルの長さが3ビット減少する)。
【0011】
実施形態では、サイド情報は、ビデオフレームのレンダリングされた画素のブロックと共にメタデータとして記憶される。一部の設計では、プロセッサは、HDMI(登録商標)(High Definition Multimedia Interface)仕様、DisplayPort(登録商標)(DP)仕様、またはその他の仕様に従って、ビデオフレームのサイド情報を送信する。他の実施形態では、プロセッサは、レンダリングされたビデオ情報とは別に、サイド情報をメタデータとしてエンコーダに送信する。一部の設計では、プロセッサはUSB(ユニバーサルシリアルバス)インタフェース、PCIe(Peripheral Component Interconnect Express)インタフェース、またはその他のインタフェースを使用してサイド情報を送信する。様々な実施形態において、エンコーダは、上述したように、受信したサイド情報に基づいて、1つ以上の符号化パラメータを置換または更新する。
【0012】
いくつかの実施形態では、エンコーダは、受信したサイド情報から、直接隣接するブロックの圧縮レベルよりも小さい圧縮レベルの領域があると判別した場合、直接隣接するブロックの量子化パラメータの値と、サイド情報を受信しなかった場合に生成される量子化パラメータの値との各々から、量子化パラメータを減少させる。上述したように、実施形態では、この減少は、受信したサイド情報の領域に対して指定された絶対値または相対値に基づく。エンコーダが、受信したサイド情報から、領域の圧縮レベルが、直接隣接するブロックの圧縮レベルよりも小さいと判別した場合、いくつかの実施形態では、エンコーダは、サイド情報を受信しなかった場合に使用される高速検索ではなく、動き推定中に検索エリア内の領域の完全な検索を実行する。さらに、いくつかの実施形態では、エンコーダは、サイド情報を受信することにより、算術エントロピー符号化アルゴリズムによって生成される端数(fractions)の精度を高める。受信したサイド情報に基づいて符号化パラメータを更新する他の例も可能であり、企図されている。
【0013】
様々な例において、ビデオエンコーダは、N個の先行フレームを考慮し、及び、M個の後続フレームを考慮することにより、フレームXの1つ以上の符号化パラメータを置換または更新する。ここで、N及びMの各々は、正の非ゼロ整数である。言い換えれば、いくつかの実施形態では、フレームX等の所定のフレームのサイド情報は、1つ以上の他のフレームのサイド情報からの情報を含み、ここで、Xは、正の非ゼロ整数である。例えば、フレームXのサイド情報は、フレームX-NからフレームX+Mまでのサイド情報の一部を含み、ここで、Nは、Xより小さい。一例では、シーンは、空を飛んでいる飛行機を含む。ソフトウェアのヒントまたはハードウェアのヒントは、飛行機をシーンの焦点、つまり領域として識別する。例えば、フレームX-1のブロック14は青空であるが、フレームXのブロック14は飛行機の機首である。
【0014】
フレームX-1のサイド情報は、フレームX-1の領域(飛行機)の位置情報と幾何学的な寸法とを含む。実施形態では、フレームX-1のサイド情報は、フレームXの領域(飛行機)の位置情報及び幾何学的な寸法も含む。したがって、ビデオエンコーダは、ブロック14がフレームX-1の背景の青空からフレームXの飛行機の機首(領域の左端)に移行することを認識する。ビデオエンコーダは、量子化パラメータ(QP)等の符号化パラメータを、不連続な突然の更新を除外するように更新する。例えば、単一フレームのサイド情報を使用する場合、青空の背景であるブロック14、フレームX-1のQPは20であり、飛行機の機首であるブロック14、フレームXのQPは8である。QPが20から8に急激に変化する。QPの急激な変化により、見る者によっては画面のちらつきが見える可能性がある。
【0015】
2つの連続するフレーム間のQPの急激な変化を含むのではなく、一実施形態において、ビデオエンコーダは、複数のフレームにわたるブロック14のQPを決定するために、平均化式として使用される加重合計(weighed sum)を生成する。一例では、ビデオエンコーダは、4つの先行するフレームにわたってブロック14のQPを更新し、(20-8)/4が3であるため、QPを3のステップで20から8に減らす。この場合、X-NからXの各フレームの重みは、同じ1である。この例では、ビデオエンコーダは、フレームX-4からXのQPを20、17、14、11、8になるように生成する。換言すると、ビデオエンコーダは、ブロック14、フレームX-4のQPを20、ブロック14、フレームX-3のQPを17、ブロック14、フレームX-2のQPを14、ブロック14、フレームX-1のQPを11、ブロック14、フレームXのQPを8と生成する。2つのフレーム間のブロックのQPに急激な変化はない。ブロック14のフレームXが飛行機の尾翼(領域の右端)であり、ブロック14のフレームX+1が青空の背景である場合の例について、同様のアプローチが後続のフレームに使用される。
【0016】
以下の説明において、
図1~
図2は、符号化パラメータが更新されたフレーム内の領域をその領域の識別に基づいて識別する、サイド情報を使用するビデオ処理システムについて説明する。
図3は、フレーム内の同心領域等の領域の例を示している。
図4~
図5は、符号化パラメータを更新するためのサイド情報を使用するビデオエンコーダとビデオ符号化ロジックを説明している。
図6~
図7は、符号化パラメータを更新するためにサイド情報を使用する方法を説明している。
図1~
図7は、所定のフレームの符号化パラメータを更新するためのサイド情報を使用するビデオ符号化ロジックを説明しているが、説明する回路及びロジックは、他のフレームの情報に基づいて符号化パラメータを更新することもできる。
図8~
図9及び
図11~
図12は、所定のビデオフレーム内のブロックのフレーム間依存性を説明している。
図10及び
図13は、符号化パラメータを更新するために周囲のフレームのサイド情報を使用する方法を説明している。
【0017】
図1を参照すると、システム100のビデオ処理システムの1つの実施形態のブロック図が示されている。ビデオ処理システム100(または、システム100)は、少なくとも第1の通信デバイス(例えば、送信機110)及び第2の通信デバイス(例えば、受信機160)を備え、これらのデバイスは、制限された帯域幅接続で互いに通信するように動作可能である。いくつかの実施形態では、制限された帯域幅接続は有線接続である。図示した実施形態等の他の実施形態では、制限された帯域幅接続はワイヤレス接続である。送信機110及び受信機160は、トランシーバと呼ばれる場合もあることに留意されたい。送信機110及び受信機160は、任意のタイプの通信デバイス及び/又はコンピューティングデバイスを表す。例えば、様々な実施形態では、送信機110及び/又は受信機160は、携帯電話、タブレット、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ヘッドマウントディスプレイ(HMD)、テレビ、別のタイプのディスプレイ、ルータ、または、他のタイプのコンピューティングデバイスもしくは通信デバイスのうち何れかである。
【0018】
様々な設計において、送信機110は、フレーム140に対応するレンダリングされた情報等のビデオ情報を受信機160に送信する。フレーム140は、水上の帆船の画像を示しているが、他の例では、フレーム140は、スポーツイベントのシーンやビデオゲームのシーン等の様々な視覚情報に対する情報を含む。送信機110は、処理ユニット120及びメモリ150を実装するための任意の数及びタイプのプロセッサ及びメモリデバイスを含む。例えば、処理ユニット120は、様々なプロセッサを使用する。プロセッサの例は、汎用中央処理装置(CPU)122、グラフィックス処理装置(GPU)124、アクセラレーテッドプロセッシングユニット(APU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルアレイ(FGPA)、ビデオエンコーダ(126)等である。メモリ150は、様々なタイプの同期ランダムアクセスメモリ(SRAM)、様々なタイプのダイナミックランダムアクセスメモリ(DRAM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等のうち1つ以上を使用する。
【0019】
様々な実装態様において、送信機110は、高レベル相互接続及びチップの通信のために、通信ファブリック(またはファブリック)を使用する。説明を簡単にするために、ファブリックを示していない。様々な実施形態では、異なるタイプのトラフィックがファブリックを独立して流れる。ファブリックは、単一の物理的ファブリックバスに、それぞれ異なるタイプのトラフィックを伝送する複数のオーバーレイ仮想チャネル、または、専用のソース及び宛先バッファを含めることで、独立したフローをサポートする。各チャネルは独立にフロー制御され、異なるチャネルのトランザクション間に依存性はない。
【0020】
CPU122は、事前定義された様々な汎用命令セットの1つに従って命令を実行するための回路を備えた1つ以上のプロセッサコアを使用する。一部の設計では、プロセッサコアは、アウトオブオーダ(out-of-order)スケジューリングと命令の実行を組み合わせた同時マルチスレッド技術を使用する。GPU124は、単一命令複数データワード(SIMD)マイクロアーキテクチャにおいて複数の並列実行レーンを使用する。複数の並列実行レーンは、SIMDユニットまたはSIMDレーンとも呼ばれる。SIMDレーンはロックステップで動作する。各SIMDレーンは、他のデータユニットから独立してデータユニットを独立して処理するが、他のSIMDレーンで使用されるのと同じオペレーションまたはコマンドのシーケンスを使用する。一例では、GPUのオペレーティングシステムスケジューラ及びコマンドプロセッサのうち1つ以上が、SIMDレーン上でコマンドをスケジュールする。
【0021】
いくつかの実装態様では、GPU124は、画素処理パイプラインを含む。他の実装態様では、画素処理パイプラインは、GPU124の外部に配置される。SIMDレーンと画素処理パイプラインの1つ以上は、画素の値の計算、頂点の変換、色の管理、環境適応画素(AAP)変更、動的バックグラウンド制御(DPB)、パネルガンマ補正、ディザー等の他のグラフィックス操作を実行する。様々な実装態様では、処理ユニット120は、ビデオストリームを受信機160に送信する前にビデオストリームを符号化(つまり、圧縮)するビデオエンコーダ126を含む。様々な実装態様では、ビデオエンコーダ126(またはエンコーダ126)は、ファームウェア等のハードウェア及び/又はソフトウェアの任意の適切な組み合わせを使用して実装される。エンコーダ126は、ビットストリームのビットを生成し、それらをバッファに記憶する。
【0022】
エンコーダ126は、非圧縮のレンダリングされたビデオ情報を受信し、標準のビデオ圧縮仕様に準拠する圧縮フォーマットのビットストリームの形式でビットを生成する。圧縮仕様または標準の例は、様々な独自のカスタム設計コーデック、MPEG-2Part2、MPEG-4 Part2、H.264(MPEG-4 Part10)、H.265(4Kのビデオの圧縮をサポートするHigh Efficiency Video Coding)、Theora、RealVideo RV40、VP9、AV1である。エンコーダ126によって提供される圧縮は、通常、非可逆的(lossy)であるため、出力される圧縮ビデオ情報は、元のレンダリングされた非圧縮ビデオ情報に存在する情報の一部を欠いている。ビデオ情報は、通常、フレームに分割され、フレームは、マクロブロックまたはブロックに分割される場合がある。圧縮の非可逆的な特性により、エンコーダ126は、ユーザが見るように表示装置に描かれたシーンの視覚的な質の劣化を最小限に抑えながら、元のレンダリングされた非圧縮ビデオ情報の何れの情報を削除するかを決定する。例えば、エンコーダ126は、ブロックまたはフレームビデオ情報の何れの領域をより高い圧縮率で圧縮し、何れの領域をより低い圧縮率で圧縮するかを決定する。さらに、圧縮アルゴリズムは、ビットレートによって決定される、ビデオを表現するために使用されるデータの量を追跡すると同時に、アンダーフロー及びオーバーフローの状態を回避するために、圧縮されたビデオ情報を記憶するバッファのストレージレベルも追跡する。したがって、エンコーダ126は、目標圧縮率を達成しながら、受信されレンダリングされたビデオ情報の圧縮をサポートし、ビデオ伝送のレイテンシを最小化し、出力データを記憶するバッファのオーバーフロー及びアンダーフローの状態を防止し、表示装置上のユーザの主観的な画質を最大化する多くの課題に直面する。
【0023】
様々な実施形態において、CPU122及びGPU124のうち1つ以上は、エンコーダ126によって受信されたビデオ情報の圧縮をサポートするために、サイド情報130をエンコーダ126に送信する。いくつかの実施形態では、CPU122及びGPU124のうち1つ以上は、サイド情報130の内容をエンコーダ126に直接送信する。他の実施形態では、CPU122及びGPU124のうち1つ以上は、サイド情報130の内容を記憶するメモリの位置を指すアドレス情報を送信する。したがって、エンコーダ126は、レンダリングされた非圧縮ビデオ情報(またはビデオ情報を記憶するメモリの位置を指すアドレス)を受信する。さらに、エンコーダ126は、サイド情報130(またはサイド情報130を記憶するメモリの位置を指すアドレス)を受信する。いくつかの実施形態では、エンコーダ126は、特定のフレーム(またはフレームの複数のブロックのうち何れかのブロック)のレンダリングされた非圧縮ビデオ情報とサイド情報130を同時に受信する。例えば、エンコーダ126は、特定のフレームの非圧縮レンダリング画素情報を受信し、特定のフレームのサイド情報130は、フレームの画素情報のメタデータセクションに記憶される。したがって、特定のフレームに関連するサイド情報130は、特定のフレームの画素情報と共に送信される。
【0024】
サイド情報130は、エンコーダ126が、受信されレンダリングされた画素データから導出し、システム100のタイミング要件を満たすことが困難な情報を含む。場合によっては、エンコーダ126は、サイド情報130のいくつかのコンポーネントを導出することが不可能である。したがって、エンコーダ126によって実行される圧縮は、エンコーダ126がサイド情報130を生成しようと試みなくとも、サイド情報130を用いてより効率的になる。エンコーダ126は、サイド情報130を使用して、圧縮する領域を決定し、圧縮率を適切に設定する。本明細書において使用する場合、「圧縮量」は、「圧縮レベル」または「圧縮率」とも呼ばれる。圧縮レベルまたは圧縮率が大きいほど、圧縮量が大きくなる。同様に、圧縮レベルまたは圧縮率が小さいほど、圧縮量は小さくなる。様々な実施形態において、フレーム140等の特定のフレームのサイド情報130は、中心窩領域(foveated region)、高いコントラストのエッジを含む領域、及び、焦点の指示(point of focus)を含む。
【0025】
本明細書で使用される場合、「焦点(point of focus)」という用語は、ユーザがフレームを見ているときに各々の目が焦点を合わせていると予想されるフレームの部分として定義される。場合によっては、「焦点」は、目が向いている位置を検出するアイトラッキングセンサに少なくとも部分的に基づいて決定される。それ以外の場合は、フレームデータの内容に基づいて「焦点」が決定される。例えば、ビデオゲームのシーンでは、画面上の焦点は、ユーザのゲーム制御下にあるユーザのオブジェクト(レースカー、兵士、サッカー選手等)である。一実装態様では、エンコーダ126は、サイド情報130を使用して、背景及び他のオブジェクト(同様に焦点ではない)に対してより高い圧縮率を使用することを決定する。さらに、エンコーダ126は、サイド情報130を使用して、フレーム140内の焦点142等の焦点である領域のオブジェクトに対してより低い圧縮率を使用することを決定する。
【0026】
いくつかの実施形態では、エンコーダ126は、焦点の範囲に対して圧縮率の範囲を選択する。実施形態では、サイド情報130は、一次焦点(primary point of focus)に関する情報だけでなく、二次焦点(secondary point of focus)、三次焦点(tertiary point of focus)等の非一次焦点に関する情報を含む。一例では、一次焦点は、ビデオゲームでのユーザのオブジェクト(例えば、レースカー、兵士、サッカー選手)である。二次焦点は、相手プレイヤーのオブジェクトの1つであり、画面の下部に統計データを表示するスクロールバー等である。一次焦点については、エンコーダ126は、最も低い圧縮率を選択する。二次焦点については、エンコーダ126は、中間の範囲の圧縮率を選択する。三次焦点がある場合には、エンコーダ126は、二次焦点の圧縮率と最高の圧縮率との間の圧縮率を選択する。背景等のように何れの焦点にも位置しないオブジェクトの場合には、エンコーダ126は、最高の圧縮率を選択する。
【0027】
いくつかの実装態様では、送信機110及び受信機160は、ライセンス不要の60ギガヘルツ(GHz)の周波数帯を介して無線通信する。60GHzの周波数帯等のミリ波(EHF)帯域内で動作する無線通信デバイスは、比較的小さなアンテナを用いて、信号を送受信することができる。例えば、一実施形態では、送信機110及び受信機160は、IEEE(Institute of Electrical and Electronics Engineers)802.11ad規格(すなわち、WiGig)に従って通信する。他の実施形態では、送信機110及び受信機160は、規格に準拠しているか否かにかかわらず他の周波数帯域を介して、及び/又は、他の無線通信プロトコルに準拠することによって、無線通信する。例えば、使用可能な他の無線通信プロトコルには、これらに限定されないが、Bluetooth(登録商標)、様々な無線ローカルエリアネットワーク(WLAN)で利用されるプロトコル、IEEE(Institute of Electrical and Electronics Engineers)802.11規格に基づくWLAN(すなわち、WiFi(登録商標))、モバイル通信規格(例えば、CDMA、LTE、GSM、WiMAX)等が含まれる。
【0028】
一実装態様では、ビデオ処理システム100は、レンダリングされた仮想環境のフレームを送信機110から受信機160に無線伝送するためのバーチャルリアリティ(VR)アプリケーションを実行する。他の実装態様では、ビデオ処理システム100は、本明細書に記載の方法及びメカニズムを利用する他のタイプのアプリケーションを含む。一実装態様では、送信機110は、少なくとも無線周波数(RF)トランシーバモジュール114と、処理ユニット120と、メモリ150と、アンテナ112と、を含む。RFトランシーバモジュール114は、RF信号を送受信する。一実装態様では、RFトランシーバモジュール114は、60GHz帯域の1つ以上のチャネルを介して信号を無線で送受信するように動作可能なミリメータ波トランシーバモジュールである。RFトランシーバモジュール114は、ベースバンド信号をワイヤレス送信用のRF信号に変換し、RFトランシーバモジュール114は、送信機110によるデータの抽出のために、RF信号をベースバンド信号に変換する。
【0029】
RFトランシーバモジュール114は、説明する目的で単一のユニットとして示されていることに留意されたい。他の実装態様では、送信機110は、RFトランシーバモジュール114の実装態様に応じて、任意の数の異なるユニット(例えば、チップ)を含むことを理解されたい。送信機110は、RF信号を送受信するためのアンテナ112も含む。アンテナ112は、無線信号の送受信の指向性を変更するように構成可能なフェーズドアレイ、単一素子アンテナ、スイッチビームアンテナのセット等のように、1つ以上のアンテナを表す。一例として、アンテナ112は、1つ以上のアンテナアレイを含み、アンテナアレイ内の各アンテナの振幅又は位相は、アレイ内の他のアンテナから独立して構成することができる。アンテナ112は、送信機110の外部にあるものとして示されているが、他の実装態様では、アンテナ112は、送信機110の内部に含まれている。さらに、他の実施形態では、送信機110は、図を不明瞭にするのを避けるために示されていない、任意の数の他のコンポーネントを含む。送信機110と同様に、受信機160内に実装されるコンポーネントは、少なくともRFトランシーバモジュール164と、プロセッサ170と、デコーダ172と、メモリ180と、アンテナ162と、を含み、これらは、送信機110について上述したコンポーネントと同様である。受信機160が他のコンポーネント(例えば、ディスプレイ)も含むか、これらの他のコンポーネントに結合され得ることを理解されたい。
【0030】
図2を参照すると、ビデオ処理システム200の一実施形態のブロック図が示されている。上述した回路及びロジックには、同じ符号が付されている。図示した実施形態では、ビデオ処理システム200は、無線仮想現実(VR)システム200である。ビデオ処理システム200(またはシステム200)は、少なくともコンピュータ210及びヘッドマウントディスプレイ(HMD)220を含む。コンピュータ210は、任意のタイプのコンピューティングデバイスを表している。コンピュータデバイスの例は、1つ以上のプロセッサ、メモリデバイス、入出力(I/O)デバイス、RFコンポーネント、アンテナ、及び、パーソナルコンピュータ又は他のコンピューティングデバイスを示す他のコンポーネントである。他の実装態様では、パーソナルコンピュータ以外の他のコンピューティングデバイスを利用して、ビデオデータをヘッドマウントディスプレイ(HMD)220に無線で送信する。例えば、コンピュータ210は、ゲーム機、スマートフォン、セットトップボックス、テレビ、ビデオストリーミングデバイス、ウェアラブルデバイス、テーマパークの娯楽用乗り物のコンポーネント、又は、他のものとすることができる。さらに、他の実装態様では、HMD220は、HMDまたは他のタイプのディスプレイに接続された受信機として使用されるコンピュータ、デスクトップ、テレビまたは他のデバイスであってもよい。
【0031】
コンピュータ210及びHMD220の各々は、無線で通信する回路及び/又はコンポーネントを含む。コンピュータ210は、外部アンテナを有するものとして示されているが、これは単にビデオデータが無線で送信されていることを示すために示されていることに留意されたい。他の実施形態では、コンピュータ210は、コンピュータ210の外側のケースに内蔵されたアンテナを有することを理解されたい。さらに、コンピュータ210は、有線電源接続を使用して電力を供給することができるが、HMD220は、典型的には、バッテリ駆動である。あるいは、コンピュータ210は、バッテリ駆動のラップトップコンピュータ(または別のタイプのデバイス)であってもよい。
【0032】
一実装態様では、コンピュータ210は、HMD220を装着しているユーザに提示されるVR環境の表現を動的にレンダリングするCPU122及びGPU124のうち1つ以上等の回路を含む。例えば、CPU122は、VR環境をレンダリングするための命令を有するソフトウェアアプリケーションを実行し、CPU122は、レンダリングのコマンドをGPU124に送信し、符号化(圧縮)コマンドをエンコーダ126に送信する。他の実装態様において、コンピュータ210は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)または他のプロセッサのタイプを含む、他のタイプのプロセッサを含む。
【0033】
様々な実施形態において、エンコーダ126は、1つ以上の様々なプロセッサのタイプからサイド情報130を受信する。エンコーダ126は、サイド情報130を使用して、レンダリングされたビデオ情報を効率的にフレームに圧縮する。例えば、エンコーダ126は、サイド情報130を使用して、フレームのビデオ情報の何れの領域をより高い圧縮率で圧縮し、何れの領域をより低い圧縮率で圧縮するかを決定する。いくつかの実施形態では、情報130は、フレームについての関連するレンダリングされた情報(レンダリングされた画素のブロック)と共に記憶され、フレームのレンダリングされた情報(レンダリングされた画素のブロック)と共にエンコーダ126に送信される、メタデータである。
【0034】
いくつかの実施形態では、サイド情報130は、特定の符号化を記憶するレンダリングされた画素のブロックのメタデータ内の1つ以上のフィールドを含み、エンコーダ126のロジックは、これらのフィールドを復号化する。CPU122は、CPU122上で実行されているソフトウェアアプリケーションまたはHMD220等の外部ハードウェアから、焦点を示す指標を受信する。いくつかの実施形態では、この指標は、焦点として指定された領域の幾何学的寸法も含む。他の実施形態では、GPU124は、焦点として指定された領域の幾何学的寸法を決定する。一例では、CPU122は、HMD220から中心窩領域の指標を受信し、HMD220は、中心窩領域が画面の左側から2200画素、画面の下部から1300画素上に位置する等の位置情報を送る。領域は、水平方向に測定された半径700画素の円である。他の例では、距離は、画面の幅のパーセンテージまたは様々な他の単位として測定される。いくつかの実施形態では、特定の識別子を使用して、情報が中心窩領域に対応することを示す。識別子は、提供される次元(dimensions)のタイプも示す。他の実施形態では、値の配置または順序付けは、次のデータが中心窩領域に対応するかどうか、または領域の何れの次元が設定されているかを示す。
【0035】
別の例では、CPU122は、ビデオゲーム等のソフトウェアアプリケーションを実行し、ソフトウェアアプリケーションは、焦点の指標をもたらす。この指標は、画面左端から800画素、画面下端から上に900画素を中心とした領域を指定している。この領域は、水平方向に計測された長軸が600画素、垂直方向に計測された短軸が200画素の楕円形である。エンコーダ126がこの領域に対応するサイド情報130を受信すると、エンコーダ126は、この領域のレンダリングされた画素の圧縮率を下げる。いくつかの実施形態では、サイド情報130は、高いコントラストの領域を特定する。高いコントラストの領域の一例は、特に領域間の境界が非水平方向に向けられている場合に、シーンの1つの領域からシーンの隣接領域への平均色の急激な変化である。実施形態では、ソフトウェアアプリケーションは、高いコントラストの領域の指標をCPU122に提供する。別の実施形態では、GPU124は、高いコントラストの領域を決定する。一例として、高いコントラストの領域は、画面左端から2100画素、画面下端から上に1500画素の位置に存在する。この領域は、垂直方向に計測された長軸が300画素、水平方向に計測された短軸が100画素の楕円形である。この高いコントラストの領域の場合、エンコーダ126は、レンダリングされた画素データの圧縮率を下げる。
【0036】
円及び楕円の形状は、情報130の例として使用されているが、情報130は、様々な他の形状及び対応する寸法を使用することが可能であり、企図されている。例えば、いくつかの実施形態では、情報130は、中心窩領域を示す3次元(3D)方向ベクトルを含む。他の実施形態では、情報130は値のペアを含み、第1の値がサイド情報のタイプを示すタイプの値であり、第2の値が第1の値によって示されるサイド情報の所定の単位の値を示す。さらに他の実施形態では、値のリスト内の位置は、サイド情報のタイプを示す。
【0037】
実施形態では、エンコーダ126は、現在処理されている画素がサイド情報130によって識別される領域内に位置するかどうかに基づいて、符号化パラメータを動的に調整する。いくつかの実施形態では、エンコーダ126は、サイド情報130によって識別される領域の何れとも交差しない水平なビデオラインの部分の圧縮率を増加させる。対照的に、エンコーダ126は、サイド情報130によって識別される領域の何れかと交差する水平なビデオラインの部分の圧縮率を低減する。実施形態では、エンコーダ126は、特定された領域を使用して、圧縮率をどれだけ下げるかを決定する。上述したように、一実施形態では、エンコーダ126は、一次焦点の領域のレンダリングされた画素データをより多く受信機に送信するのを可能にするために、一次焦点の領域の圧縮率を二次焦点及び三次焦点の領域よりも低減する。
【0038】
いくつかの実施形態では、サイド情報130は、特定の符号化パラメータの絶対値を示す指標を含み、これは、後に、所定の領域内のブロックの符号化中に特定の符号化パラメータの値を設定またはオーバーライドするために使用される。ビデオエンコーダ126のロジックは、ビデオエンコーダ126の1つ以上のブロックによって生成された特定の符号化パラメータの値を、サイド情報で指定された絶対値に置き換える。特定の符号化パラメータの例は、ビデオエンコーダの量子化ブロックによって使用される量子化パラメータ(QP)と、ビデオエンコーダのエントロピー符号化ブロックによって符号化されるシンボルの長さである。
【0039】
他の実施形態では、サイド情報130は、特定の符号化パラメータの相対値を示す指標を含み、これは、後に、所定の領域内のブロックの符号化中に特定の符号化パラメータの値を設定またはオーバーライドするために使用される。ビデオエンコーダ126のロジックは、ビデオエンコーダ126の1つ以上のブロックによって生成された特定の符号化パラメータの値を、サイド情報で指定された相対値に更新する。様々な設計において、相対量は、パーセンテージ量または差分量である。いくつかの例では、相対量は正の量(例えば、25%の増加)であり、他の例では、相対量は負の量である(例えば、QPが5減少するか、シンボルの長さが3ビット減少する)。
【0040】
上述したように、いくつかの実施形態では、サイド情報は、ビデオフレームのレンダリングされた画素のブロックと共にメタデータとして記憶される。一部の設計では、プロセッサ122~124のうち1つ以上は、HDMI(登録商標)(High Definition Multimedia Interface)仕様、DisplayPort(DP)仕様、または他の仕様に従って、ビデオフレームのサイド情報130をエンコーダ126に送信する。他の実施形態では、プロセッサ122~124のうち1つ以上は、レンダリングされたビデオ情報とは別に、メタデータとしてサイド情報130をエンコーダ126に送信する。一部の設計では、プロセッサ122~124のうち1つ以上は、USB(ユニバーサルシリアルバス)インタフェース、PCIe(Peripheral Component Interconnect Express)インタフェース、または他のインタフェースを使用して、サイド情報130を送信する。
【0041】
受信機デバイスに戻ると、HMD220は、コンピュータ210によって送信される圧縮ビットストリームを受信して復号化し、レンダリングされたVR環境のフレームを生成する回路を含む。次いで、HMD220は、生成されたフレームを、HMD220内に統合されるディスプレイに送る。HMD220に表示される各画像において、HMD220の右側225Rに表示されるシーン225Rは焦点領域230Rを含み、HMD220の左側に表示されるシーン225Lは焦点領域230Lを含む。これらの焦点領域230R,230Lは、HMD220の拡張された右側225R及び左側225Lの各々の内部の円によって示される。
【0042】
一実装態様では、左右半分のフレーム内の焦点領域230R,230Lの位置が、HMD220内のアイトラッキングセンサに基づいてそれぞれ決定される。別の実装態様では、焦点領域230R,230Lの位置は、ユーザが見ていると予想される場所に基づいて、VRアプリケーションによって決定される。焦点領域230R,230Lのサイズは、実装態様に従って変化し得ることに留意されたい。例えば、一実装態様では、ユーザの各々の目の視線が向く場所に基づいて焦点領域内を追跡するアイトラッキングセンサをHMD220が含む場合、焦点領域230R,230Lは、比較的小さくてもよい。そうでなければ、HMD220がアイトラッキングセンサを含まず、ユーザが見ている可能性が最も高い場所に基づいて焦点領域230R,230Lが決定される場合、焦点領域230R,230Lは、比較的大きくてもよい。他の実装態様では、他の要因によって、焦点領域230R,230Lのサイズを調整することができる。
【0043】
一実装態様では、エンコーダ126は、最高の主観的な視覚の品質及び最高レベルの焦点領域230R,230L内の画素に対するディテールを維持するために、これらの領域内のブロックの最小量の圧縮を使用する。本明細書では、「ブロック」を「スライス」と呼ぶことに留意されたい。本明細書で使用される場合、「ブロック」は、連続する画素のグループとして定義される。例えば、一実装態様では、ブロックは、表示されている画像内で正方形を形成する8×8の連続する画素のグループである。他の実装態様では、他の形状及び/又は他のサイズのブロックが使用される。焦点領域230R,230Lの外側では、エンコーダ126は、より高い圧縮量を使用する。このアプローチでは、各々の目は広い視野を有するが、目は広い視野内の小さいエリアのみに焦点を合わせている、という人間の視覚システムを利用する。目及び脳が視覚データを認識する仕組みに基づいて、人間は通常、焦点領域の外側のエリアにおける質の低さに気付かない。
【0044】
一実装態様では、エンコーダ126は、ブロックが焦点領域から遠ざかるほど、画像内のブロックを符号化するのに使用される圧縮量を増加させる。例えば、第1のブロックが焦点領域からの第1の距離であり、第2のブロックが焦点領域からの第2の距離であり、第2の距離が第1の距離よりも長い場合、エンコーダは、第1のブロックよりも高い圧縮率を使用して第2のブロックを符号化する。これは、第2のブロックが復元されて、ユーザに表示される場合に、第1のブロックと比較してディテールの少ない第2のブロックを結果としてもたらす。一実装態様では、エンコーダ126は、所定のブロックを符号化するときに使用される量子化強度レベルを増加させることによって、使用される圧縮量を増加させる。例えば、一実装態様では、量子化強度レベルは、量子化パラメータ(QP)設定を使用して指定される。他の実装態様では、エンコーダ126は、他の符号化の設定値を変化させることによって、ブロックを符号化するのに使用される圧縮量を増加させる。例えば、エンコーダ126がサイド情報130から、特定の画素が一次焦点における草の葉または高いコントラストのエッジの他の例に対応していると判断した場合、エンコーダ126は、これらの特定の画素の圧縮量を減らす。
【0045】
図3を参照すると、ハーフフレームの焦点領域の外側にある、異なる圧縮レベルに対応する同心領域300の図の一実施形態が示されている。いくつかの実施形態では、領域305は焦点領域である。例えば、実施形態では、領域305は、ヘッドマウントディスプレイ(HMD)のアイトラッキングセンサによって決定される中心窩領域である。別の実施形態では、領域305は、GPUまたは他のタイプのプロセッサによって、高いコントラストのエッジを含むように決定された領域である。別の実施形態では、領域305は、GPUまたは他のタイプのプロセッサによって、焦点を含むように決定された領域である。何れの場合も、GPUまたは他のタイプのプロセッサは、領域305に使用する圧縮レベルが、直接隣接する領域310等の周辺領域に使用する圧縮レベルと異なると判断する。
【0046】
図の各ボックスは、ハーフフレームのスライスを表し、スライスは、実装態様に応じて変化する数の画素を含む。画面の各半分において、
図3の下部にある式335を使用して、目の注視点からの各スライスの距離が決定される。式335において、s
bは、スライスのサイズである。一実装態様では、s
bは、8または16の何れかである。他の実装態様では、s
bは、他のサイズであってもよい。変数x
offset及びy
offsetは、スライス(x,y)が画像の左上を基準にしており、x
eye及びy
eyeが画面の各半分の中心を基準にしているという事実に対して調整する。また、slice_sizeを2で割った値は、(s
b*x
i,s
b*y
i)が各スライスの左上であるという事実を説明するためにx
offset及びy
offsetの各々に加えられ、目的は、各スライスの中心が各半径の内側にあるか外側にあるかを判断することである。
【0047】
次いで、式335を使用してd
i
2を計算した後、d
i
2は、スライスが何れの圧縮領域に属するかを決定するために、半径「N」の各々(r
0、r
1、r
2、…r
N)の2乗と比較され、ここで、Nは正の整数である。
図3に示す実装態様では、Nは5に等しいが、これは単に説明目的で示されていることを理解されたい。例えば、この実装態様では、領域305は、矢印r5によって示される半径を有する焦点領域である。領域310は、矢印r4で示される半径を有する焦点領域に隣接する領域である。領域315は、矢印r3で示される半径を有する次に大きい領域である。領域320は、矢印r2で示される半径を有する次に大きい領域である。領域325は、矢印r1で示される半径を有する次に大きい領域であり、領域330は、矢印r0で示される半径を有する、
図300に示される最大の領域である。別の実装態様では、Nは64に等しいが、他の実装態様では、Nは、様々な他の適切な整数値の何れかであってもよい。
【0048】
焦点領域305の中心から所定のスライスまでの距離に基づいて(または、所定のスライスまでの距離の2乗に基づいて)、エンコーダは、所定のスライスが何れの圧縮領域に属するかを決定する。一実装態様では、スライスが属する領域が識別されると、領域識別子(ID)を使用してルックアップテーブルにインデックスを付ける。N個の半径がルックアップテーブルに記憶される。一実装態様では、ハードウェアの乗算器の必要性を排除するために、半径の2乗の値がルックアップテーブルに記憶される。一実装態様では、半径の2乗の値は、エントリ0が最大の円を指定し、エントリ1が2番目に大きい円を指定する等のように、単調減少の順序(monotonically decreasing order)でプログラムされる。
【0049】
一実装態様では、ルックアップテーブルからの出力は、スライスの完全な目標圧縮サイズである。「領域ID」は、本明細書で「ゾーンID」とも呼ばれ得る。目標サイズは、ウェーブレットスライスが処理されるときに後で使用するためにFIFOに書き込まれる前に、圧縮率(または、c_ratio)の値によりスケーリングされる。c_ratioのいくつかの関数によりスケーリングすることは、無線周波数(RF)リンク容量を小さくする場合に適切な、より小さい目標スライスサイズを生じさせる。様々な実施形態において、(
図1及び
図2の)サイド情報130等のサイド情報は、所定のスライスまでの距離を含む。
【0050】
図4を参照すると、インタフェース(複数可)412を介して受信したサイド情報410を使用して圧縮を動的に調整するビデオエンコーダ400の一実施形態の一般化されたブロック図が示されている。様々な実施形態において、ビデオエンコーダ400は、(
図1及び
図2の)エンコーダ126と同等である。ビデオエンコーダ400(またはエンコーダ400)は、インタフェース(複数可)412を介して入力ビデオデータ402を受信し、入力ビデオデータ402の圧縮バージョンである出力ビデオデータ440を生成する。様々な実施形態では、インタフェース(複数可)412は、1つ以上のバス等のように、サイド情報410及びビデオデータ402を受信するための任意の適切な回路等を含む。いくつかの実施形態では、サイド情報410及びビデオデータ402を受信するために別個のインタフェース回路412が使用される。いくつかの実施形態では、サイド情報410及びビデオデータ402の双方を受信するために、組み合わせたインタフェース回路が使用される。様々なこのような実施形態が可能であり、企図される。様々な実装態様では、エンコーダ400は、様々なビデオ圧縮規格の1つ及び受信したサイド情報410に基づいて、入力ビデオデータ402を圧縮する。エンコーダ400は、符号化ステージ420及びビットレートコントローラ450を含む。特定の論理ブロックが説明されているが、他の実施形態では、論理ブロック422~458の1つ以上が使用されず、1つ以上の追加の論理ブロックが追加される。
【0051】
様々な設計において、エンコーダ400は、入力ビデオデータ402を、レンダリングされたデータとして受信する。例えば、外部GPUは、CPUから受信したレンダリングコマンドに基づいて、フレームの画素の複数のブロックを生成する。様々な設計において、エンコーダ400は、出力ビデオデータ440をビットストリームとして生成する。本明細書で使用される場合、「ビットストリーム」は、ビットのシーケンスである。場合によっては、エンコーダの出力ビットストリームは、単位時間当たりに生成または処理されるビット数である「ビットレート」として測定される。例えば、一部の設計では、ビットレートは、キロビット/秒(kbps)またはメガビット/秒(mbps)の単位で表される。符号化ステージ420内、及び、ビットレートコントローラ450と符号化ステージ420の間の両方に位置するフィードバックループは、出力ビデオデータ440のビットレートを設定する。フィードバックループは、このビットレートが、ディスプレイのユーザにとって低い主観的な画質の画像を生成する下限を下回らないことを確実にする。また、フィードバックループは、出力ビットレートが外部要因によって設定された上限を超えないようにする。外部要因の一例は、利用可能なリンク帯域幅である。外部要因の別の例は、外部バッファ(図示省略)のストレージ使用量である。エンコーダ400は、外部バッファにアンダーフローやオーバーフローが発生しないように出力ビデオデータ440を生成する。
【0052】
符号化ステージ420は、複数の論理ブロックを含む。ビデオ圧縮中に、エンコーダ400は、フレーム内の空間的冗長性を決定し、フレーム間の時間的冗長性を決定する。論理ブロック422は、フレーム内で検出された動きを推定するためのロジックを含み、任意の推定された動きを補償する。一部の設計では、ユーザ定義のストレージ制限が設定されており、現在のフレームの処理のために記憶する、先行するフレームの数が決定される。論理ブロック422は、動き推定アルゴリズムに基づいて、入力ビデオデータ402内の現在のフレームのデータを、1つ以上の先行するフレームのデータと比較する。ユーザまたはソフトウェアアプリケーションのアルゴリズムは、1つ、2つまたは他の数の先行するフレームを記憶するために使用するフレームバッファのサイズを定義する。多くの設計では、このストレージパラメータは、ビデオコンテンツを符号化する前に設定されるパラメータである。このストレージパラメータの設定が大きいほど、フレームバッファに記憶される先行するフレームの数が多くなり、ビデオ圧縮中にフレームバッファで消費されるストレージのスペースの量が多くなる。
【0053】
論理ブロック422は、様々な動き推定アルゴリズムのうち1つを使用して、現在のフレームと1つ以上の先行するフレームとの間の時間的冗長性を決定する。モーション推定アルゴリズムは、フレームをブロックに分割し、場合によってはブロックをサブブロックに分割する。ブロックまたはサブブロックは、16画素×16画素、8画素×8画素、4画素×4画素等の様々なサイズのうち何れかを有する。サブブロックが小さく、動きの推定に使用されるサブブロックが多いほど、動き推定アルゴリズムは、複雑な動きをより良好に表現する。ただし、処理時間(レイテンシ)、データストレージのスペース、及び、アルゴリズムの複雑さの全ては、さらに増加する。
【0054】
入力ビデオデータ402に提供されるフレームの領域が共通の背景または他の滑らかなエリアとして識別される場合、動き推定アルゴリズムは16画素×16画素のブロックを使用することが多い。入力ビデオデータ402に提供されるフレームの領域が、ディスプレイの視聴者に高いディテールを提供するものとして識別される場合、動き推定アルゴリズムは、4画素×4画素のサブブロックを使用する。いくつかの実施形態では、論理ブロック422の動き推定アルゴリズムは、サイド情報410を使用して、ディスプレイの視聴者に対して高い視覚的ディテールを提供する領域を決定する。したがって、動き推定アルゴリズムは、受信したサイド情報410に基づいて、このような領域においてより小さく、より多くのサブブロックを使用することを選択する。いくつかの実施形態では、動きの推定のための複数の先行するフレームを使用することは、仮想現実(VR)アプリケーション等のような符号化プロセスにおいて、許容されないレイテンシを生じさせる。したがって、動きベクトルを使用した一時的なレイテンシの識別が除外される。
【0055】
動き推定アルゴリズムは、検索ウィンドウとも呼ばれる参照フレーム内の検索領域を決定する。一例では、参照フレームは、入力ビデオデータ402のデータを現在のフレームと比較した直前のフレームである。参照フレームの検索領域は、水平なビデオライン、及び、垂直な列に位置する複数のブロックまたはサブブロックを含む。動き推定アルゴリズムは、現在のフレームのブロックまたはサブブロックを選択し、参照フレームの検索領域で最も一致するブロックまたはサブブロックを検索する。最も一致するブロックまたはサブブロックを決定するために、動き推定アルゴリズムは、ブロックまたはサブブロック毎に動きベクトルを計算する。動き推定アルゴリズムは、4画素×4画素のサブブロックに対して16個の動きベクトルを計算する。
【0056】
動き推定アルゴリズムが検索領域内の全てのブロックまたはサブブロックを検索する場合、完全または網羅的検索動き推定アルゴリズムと呼ばれる。動き推定アルゴリズムがブロックまたはサブブロックの一部をスキップする場合、高速検索動き推定アルゴリズムと呼ばれる。いくつかの実施形態では、論理ブロック422は、受信したサイド情報410を使用して、受信したサイド情報410に基づいて、動き推定アルゴリズムにおいて網羅的検索または高速検索を使用するかどうかを決定する。例えば、サイド情報410が、コントラストの高いエッジの領域、中心窩領域である領域を識別し、圧縮レベルがその領域に直接隣接するブロックの圧縮レベルよりも小さいと識別した場合、論理ブロック422は、検索領域の多数の小さなサブブロックについて網羅的な動き推定アルゴリズムを使用する。
【0057】
論理ブロック422に関する上記のステップは、参照フレーム内の何れのブロックまたはサブブロックが、現在のフレーム内の選択されたブロックまたはサブブロックに最も類似した外観(または動きベクトルに基づく最小の計算誤差)を有するかを予測する。現在のフレーム内の隣接ブロックまたはサブブロックについても同様の予測が行われる。いくつかの実施形態では、エンコーダ400は、動きの推定の代わりに、または動きの推定に加えて、予測モードスキーム(図示省略)を使用する。予測スキームは、先行するフレームと現在のフレームのブロックまたはサブブロック間の空間的冗長性を減らすが、動き推定アルゴリズムは時間的冗長性を減らす。空間的冗長性を減らす予測スキームでは、各ブロックまたはサブブロックは、イントラモード予測方式またはインターモード予測方式で処理される。どちらの方式でも、再構成されたフレームに基づいて予測ブロックまたはサブブロックが生成される。符号化ステージ420は、論理ブロック422から論理ブロック424,426,428への順方向経路を含む。符号化ステージ420は、論理ブロック422から論理ブロック424,426,430へ、及び、論理ブロック422へ戻る再構成経路も含む。
【0058】
含まれる場合、エンコーダ400の再構成経路は、論理ブロック430を含む。論理ブロック430は、受信側での動作を模倣するための逆変換、逆量子化、ループフィルタ、及び、動きの補償のための論理を含む。空間的及び時間的冗長性の1つ以上が削減された後、予測及び/又は動きの推定からの出力ブロックまたはサブブロックが、現在のフレームのブロックまたはサブブロックから減算される。さらに、現在のフレーム内の隣接するブロックまたはサブブロックと、現在のフレーム内のブロックまたはサブブロックとの間の差が決定される。これらの減算により差分ブロックまたはサブブロックが生成され、これは論理ブロック424によって変換され、論理ブロック426によって量子化されて、変換及び量子化された係数のセットが生成される。これらの係数は、論理ブロック428によって再配列され、エントロピー符号化される。いくつかの設計では、論理ブロック424は、動き補償予測差分ブロック及びサブブロックに対して離散コサイン変換(DCT)を実行する。
【0059】
論理ブロック426は、ステップサイズとして使用される量子化パラメータ460に従って、ブロックごと(またはサブブロックごと)をベースにして、圧縮されたDCT係数を量子化する。一例では、特定のブロック(またはサブブロック)を表すDCT係数行列は、量子化スケールコードによって乗算され、量子化行列によって要素ごとに分割され、その後、最も近い整数に丸める等の丸めが行われる。いくつかの実施形態では、符号化ステージ420は、複数のタイプの利用可能な量子化ブロックを含む。利用可能な量子化器の例は、H.263量子化器及びMPEG-4量子化器である。何れの量子化ブロック及び結果として得られる量子化スケールコードを使用するかの選択は、ソフトウェアアプリケーション及び/又はサイド情報410で行われたユーザ定義の選択に基づいている。いくつかの実施形態では、選択は、最初にソフトウェアアプリケーションで行われたユーザ定義の選択に基づいているが、選択は、サイド情報410に基づいて動的に更新される。
【0060】
ビットレートコントローラ450は、量子化パラメータ460を決定する。量子化パラメータ460は、スケーリングマトリクスを生成するために使用され、画素の所定のブロック(またはサブブロック)から除去する情報量を決定する。通常、量子化パラメータ460及びデフォルト値の値の範囲がある。量子化パラメータ460が一定値の場合、各フレームから同じ量の情報が除去される。一例では、量子化パラメータ460の範囲は0から50であり、デフォルト値は23である。量子化パラメータ460が20に選択され、ビデオの複雑さの変化にもかかわらず、量子化パラメータ460が20を維持する場合、ディスプレイ上でユーザに提供される主観的な視覚の質が低下する。サイド情報410内の情報は、フレーム内の動きの指標、高いコントラストのエッジの指標等を含む。また、出力ビデオデータ440のビットレートは大きく変動する。したがって、ビットレートコントローラ450は、フィードバック情報462、利用可能なビットレートコントローラ452~458のうち何れかを選択する動作モードを含むサイド情報410、目標ブロックのビットストリームの長さ等に基づいて、量子化パラメータ460を変えるロジックを含む。
【0061】
上記の例を続けると、いくつかの実施形態では、ビットレートコントローラ450は、動きが大きいと識別されたフレーム内の領域に対して、量子化パラメータ460を20から22に増加させる。量子化パラメータ460を増加すると、これらの領域に対してより多くの圧縮を引き起こす。同様に、符号化ステージ420は、高いコントラストのエッジ、中心窩領域等を備えていないものとして識別されたフレーム内の領域に対して、増加した量子化パラメータ460を使用する。この例では、ビットレートコントローラ450は、動きがない、高いコントラストのエッジ、中心窩領域等を備えていないものとして識別されたフレーム内の領域に対して、量子化パラメータ460を20から16に減少させる。量子化パラメータ460を小さくすると、これらの領域に対してより少ない圧縮をもたらす。
【0062】
いくつかの設計では、量子化ブロック426によって使用される等価量子化ステップサイズは、量子化パラメータ460と対数関係を有する。他の設計では、等価量子化ステップサイズは、線形関係であるか、量子化パラメータ460と別の関係を有する。量子化パラメータ460が増加すると、量子化器のステップサイズが増加する。量子化パラメータ460が増加するにつれて、ディスプレイで見られる出力ビデオデータ440の主観的な視覚の質は低下し、出力ビデオデータ440のサイズも低下する。量子化パラメータ460が減少すると、ディスプレイで見られる出力ビデオデータ440の主観的な視覚の質が改善され、出力ビデオデータ440のサイズが大きくなる。
【0063】
量子化パラメータ460を設定するために、ビットレートコントローラ450は、ビデオビットレートを推定する。出力ビデオデータ440のビデオビットレートは、単位時間当たりの達成されたブロックビットストリームの長さ442のビット数である。ビットレートコントローラ450は、出力ビデオデータ440の達成されたブロックビットストリームの長さ442におけるビット数(ビットストリームのサイズ)を調整するために、ネットワークで利用可能な帯域幅及び受信した入力ビデオデータ402のビデオの複雑さに基づいて、ビデオビットレートを推定する。フィードバック情報462は、符号化ステージ420からのビデオの複雑さを、ビットレートコントローラ450に関連付けるために使用される。ビットレートコントローラ450は、ユーザに対して外部ディスプレイに高い視覚的な画質を生成するために、量子化パラメータ460を調整することによって、出力ビデオデータ440の達成されたブロックビットストリームの長さ442を調整しようと試みる。いくつかの設計では、ビットレートコントローラ450は、出力ビデオデータ440を送信する外部ネットワーク帯域幅を維持し、出力ビデオデータ440を記憶する外部ビデオバッファのオーバーフローまたはアンダーフローの状態を防止しながら、この調整を行う。
【0064】
ビットレートコントローラ450は、量子化パラメータ460を選択する。これは、所定のビデオ画像の複雑さに対して、出力ビデオデータ440の達成されたブロックビットストリームの長さ442を決定する。ここでも、出力ビデオデータ440のビットレートは、単位時間当たりの達成されたブロックビットストリームの長さ442のビット数で決定される。ビットレートコントローラ450は、出力ビデオデータ440の出力ビットレートを調整するために、ビットレートコントローラ452~458に実装される様々なビットレート制御アルゴリズムの1つを使用する。ビットレート制御アルゴリズムの例は、一定ビットレート(CBR)コントローラ456、可変ビットレート(VBR)コントローラ454、インテリジェント質一定(ICQ)コントローラ458、及び、質定義(または質ベース)可変ビットレート(QVBR)コントローラ452である。
【0065】
CBRコントローラ456は、フレーム全体について、達成されたブロックビットストリームの長さ442におけるセット(または目標)数のビットを維持する。一部の設計では、ビット数のばらつきが20%以下に制限されている。CBRコントローラ456は、閾値未満のビデオの複雑さを有するビデオ情報を使用すると推定されるシステムにビデオフレームデータを記憶するために、小さな外部ビデオバッファを有するシステムで使用されることがある。ICQコントローラ458は、主観的な視覚の質が高いままであるが、ファイルサイズが可能な限り小さくされるビデオ情報をアーカイブするシステムで使用される。ICQコントローラ458は、ICQ品質係数とも呼ばれる一定比率係数(CRF)を受信する。この入力パラメータには値の範囲がある。例えば、一部の設計では、範囲は1から51であり、値が低いほど量子化パラメータ460が低くなり、したがって、ビデオ情報から削除される情報が少なくなる。ビデオ情報は圧縮率が低くなる。対照的に、入力パラメータCRFの値が大きいほど、ビデオ情報が圧縮される。達成されたブロックビットストリームの長さ442は、ICQコントローラ458の入力パラメータCRFを調整することによって上下に調整される。
【0066】
CBRコントローラ456とは対照的に、VBRコントローラ454は、フレーム全体について、達成されたブロックビットストリームの長さ442内のビット数を変化させる。特定のブロックの場合、ビット数の分散は、CBRコントローラ456によって達成される分散を超える。いくつかの設計では、VBRコントローラ454は、CRBコントローラ456の20パーセント以下と比較して、300パーセントの分散を許容する。VBRコントローラ454は、達成されたブロックビットストリームの長さ442の大きな分散を許容し、時間の経過と共に、VBRコントローラ454は、CBRコントローラ456で達成されたものと同等の平均達成ブロックビットストリームの長さ442をもたらす。
【0067】
VBRコントローラ454は、ビデオの複雑さが高いフレームの領域、中心窩領域、コントラストの高いエッジ等に高いビットレートをもたらす一方で、これらの特性を持たないフレームの領域にはより低いビットレートをもたらす。達成されたブロックビットストリームの長さ442を経時的に合計し、時間で除算すると、通常、目標ビットレートに近い平均ビットレートがもたらされる。CBRコントローラ456とは異なり、VBRコントローラ454は、復号化される前にビデオコンテンツを記憶するための大きな外部ビデオバッファをサポートする。ICQコントローラ458とは異なり、VBRコントローラ454は、外部ビデオバッファの利用等のフィードバック情報462に基づいて、達成されたブロックビットストリームの長さ442の目標値の調整をサポートする。
【0068】
VBRコントローラ454と同様に、QVBRコントローラ452は、高いコントラストのエッジを有する領域、中心窩領域等について、必要に応じて、達成されたブロックビットストリームの長さ442を変化させる。しかし、VBRコントローラ454とは異なり、QVBRコントローラ452は、ICQコントローラ458と同様に特定の質係数を維持しようとする。ICQコントローラ458と同様に、QVBRコントローラ452は質係数(QF)を受信する。この入力パラメータには値の範囲がある。例えば、QFの値の範囲は、一部の設計では0~63であり、他の設計では1~100等である。QFのより低い値は、より低い量子化パラメータ460に関連付けられ、したがって、より少ない情報がビデオ情報から除去される。ビデオ情報は、QFが低いほど圧縮されない。通常、QVBRコントローラ452は、ゲーム及びストリーミングシステムで使用される。
【0069】
符号化ステージ420の論理ブロック及びビットレートコントローラ450の他の論理と同様に、ビットレートコントローラ452~458は、回路等のハードウェア、ファームウェア等のソフトウェアまたはユーザ定義ソフトウェアアプリケーション、及び、ハードウェアとソフトウェアの組み合わせのうち1つ以上で実装される。ビットレートコントローラ450には、4つのタイプのビットレートコントローラ452~458が示されているが、他の実施形態では、ビットレートコントローラ450は、別の数のビットレート制御アルゴリズム及び他のタイプのビットレート制御アルゴリズムを使用する。ビットレートコントローラの数及び選択されたタイプに関係なく、ビデオ圧縮のために実際に選択されたビットレートコントローラのタイプ及び品質係数(QF)等の入力パラメータの設定は、サイド情報410に基づいて行われる。
【0070】
エントロピーコーディング428は、量子化ブロック426から受信した出力ビットストリームのエントロピー符号化を並べ替えて実行する。エントロピーコーディングブロック428は、受信ビットストリームの特定のビットシーケンスを識別する。これらの特定のビットシーケンスの各々は、シンボルと呼ばれる。エントロピーコーディングブロック428は、シンボルをコードワードまたは端数等の他の値に置き換える。エントロピーコーディングアルゴリズムのタイプの2つの例は、ハフマンコーディングと算術コーディングである。ハフマンベースのコーディングアルゴリズムは、テーブルルックアップに基づいてシンボルをコードワードに置き換える。算術ベースのコーディングアルゴリズムは、シンボルを0~1の範囲の端数に置き換える。ハイブリッドアプローチでは、テーブルルックアップと算術演算のステップを組み合わせて使用するか、テーブルルックアップまたは算術演算を使用するかどうかを動作条件に基づいて選択する。
【0071】
ハフマンベースのコーディングアルゴリズムは、シンボルをコードワードにマッピングするために、コードワードを記憶するテーブルにアクセスする。一部の設計では、コードワードは固定の長さであり、長さはコードワードで使用されるビット数である。他の設計では、コードワードは可変の長さのコードワードである。エントロピーコーディングブロック428は、シンボルを表すために使用される平均ビット数を制限することによって、ビットストリームをさらに圧縮する。より頻繁に発生するシンボルは、より小さいサイズのコードワードを使用することでより圧縮される。発生頻度の低いシンボルは、サイズの大きいコードワードを使用することで圧縮率が低くなる。
【0072】
算術ベースのコーディングアルゴリズムは、ビットストリームのシンボルまたは他の部分(シーケンス)を、0と1の間の範囲または間隔の端数等の数に符号化する点で、ハフマンベースのコーディングアルゴリズムと異なる。生成された端数によって精度が異なる。より多くのシンボルがコード化されると、アルゴリズムはシーケンス識別子を表すためにより高い精度を使用する。より頻繁に発生するシンボルは、0から1までのより大きな間隔(範囲)を使用して圧縮される。例えば、頻繁に発生するシンボルの場合、アルゴリズムは間隔0.3~0.6を選択する。発生頻度の低いシンボルは、0から1までの短い間隔(範囲)を使用して圧縮される。例えば、発生頻度の低いシンボルの場合、アルゴリズムは間隔0.1~0.2を選択する。
【0073】
いくつかの設計では、エントロピーコーディングブロック428のパラメータは、テーブルに記憶されたコードワードでシンボルを符号化するか、算術演算でシンボルを符号化するかを決定するための第1のパラメータを含む。第2のパラメータは、使用される算術演算のタイプや、生成された端数に使用される精度の量の制限等のように、算術演算の計算の複雑さを決定する。いくつかの実施形態では、エントロピー符号化ブロック428は、サイド情報410を使用して、ディスプレイの視聴者に高い視覚的ディテールをもたらす領域を決定する。したがって、エントロピー符号化アルゴリズム(複数可)は、受信したサイド情報410に基づいて、そのような領域におけるより高い精度でより複雑な計算を選択する。
【0074】
図5を参照すると、ビデオ符号化ロジック500の一実施形態のブロック図が示されている。上述した回路及びロジックには、同じ符号が付されている。ロジック520は、組み合わせロジック及びシーケンシャル要素用の回路等のハードウェア、ファームウェア等のソフトウェア、またはハードウェアとソフトウェアの組み合わせで実装される。ロジック520は、受信したビデオ符号化パラメータ510(または入力パラメータ510)の更新または修正に基づいて、更新されたビデオ符号化パラメータ530(または出力パラメータ530)を生成する。変更は、サイド情報130に基づいて行われる。入力パラメータ510は、様々なビデオ符号化パラメータを含む。ビデオエンコーダ400の上記の説明は、これらの入力パラメータ510を説明しており、例えば、複数の利用可能な量子化器の1つの選択、カスタム量子化器行列の量子化器スケールコードの選択、量子化パラメータ(ステップサイズ)の選択、エントロピーコーディングアルゴリズムの選択、選択されたエントロピーコーディングアルゴリズムの計算の複雑さの制限の選択、及び、算術エントロピーコーディング中の端数の表現に使用される精度の選択等が挙げられる。
【0075】
ビデオエンコーダ400の上記の説明は、ビデオエンコーダ400全体に分散される入力パラメータ510を更新するためのロジックを説明している。ここで、ビデオ符号化ロジック500において、ロジック520が集中化されている。様々な実施形態において、入力パラメータ510を更新するためのロジックが集中化されるが、他の実施形態において、ロジックは分散される。さらに他の実施形態では、入力パラメータ510を更新するためのロジックは、入力パラメータ510の第1の部分を更新するための集中型ロジックと、入力パラメータ510の第2の部分を更新するための分散型ロジックと、の両方を含む。
【0076】
図6を参照すると、効率的なビデオレンダリングを実行するための方法600の一実施形態が示されている。説明のために、本実施形態の(及び、
図7の)ステップも順番に示されている。しかし、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。また、他の追加の要素も、必要に応じて実行される。本明細書に記載されている様々なシステムまたは装置の何れも、方法600,700を実施するように構成されている。
【0077】
プロセッサは、ビデオフレームの画素の複数のブロックをレンダリングするために使用する命令を受信する(ブロック602)。様々な実装態様では、プロセッサはGPUであり、レンダリングのための命令と複数の画素のブロックを受信する。プロセッサは、レンダリングのために、ビデオフレームの複数のブロックのうち1つ以上のブロックを含む領域を選択する(ブロック604)。例えば、CPUは、レンダリングするオブジェクトにマークを付けるか、特定のオブジェクト及び/又は複数のオブジェクトを含む領域が視覚的に重要なプロパティを持っていることを通知する。一部の設計では、CPUがこれらの領域にタグを付ける。これらの領域は、中心窩領域、予測された焦点の領域等を含む。
【0078】
領域をレンダリングした後、プロセッサは、選択された領域の圧縮レベルを予測する(ブロック606)。上述したように、CPUは、視覚的に重要であると予測されるオブジェクトにタグを付けるが、CPUは、タグ付けされたオブジェクトがフレームに描かれたシーンで十分に大きいかどうか、または、焦点に配置されているかどうかを認識していない。場合によっては、レンダリング後にGPUがこれらの決定を実行する。一例では、GPUは、タグ付けされた領域が高いコントラストのエッジを含むかどうかを決定する。別の例では、GPUは、タグ付けされたオブジェクトを先行するフレームでの位置と比較して、位置が閾値を超えて変化したかどうかを判断する。このような場合、GPUは、タグ付けされたオブジェクトが、移動しているオブジェクトであると判断する。さらに別の例では、GPUは、タグ付けされた1つ以上のオブジェクトに対して事前のレンダリングのパス(pre-rendering pass)を実行し、深層学習の技術または他の技術を介して、領域が焦点であると予測されると判断する。様々な実施形態において、GPUは、高いコントラストのエッジ、予測された焦点、中心窩領域等を有する領域に対して低い圧縮レベルを予測する。さらに、GPUは、移動しているオブジェクトを含む領域の高い圧縮レベルを予測する。
【0079】
選択された領域の予測圧縮レベルが、選択された領域の外側に位置する直接隣接するブロックの圧縮レベルと同じである場合(条件付きブロック608:「いいえ」)、最後の領域が選択されたかどうかを判断するために確認が実行される。場合によっては、圧縮レベルを比較するときに閾値が使用される。圧縮レベルの差が閾値内にある場合、選択された領域の圧縮レベルと、選択された領域の外側にある直接隣接するブロックの圧縮レベルとは同じであると見なされる。最後の領域に到達していない場合(条件付きブロック610:「いいえ」)、方法600の制御フローはブロック604に戻り、プロセッサは、レンダリングのために、ビデオフレームの複数のブロックのうち1つ以上のブロックを含む領域を選択する。
【0080】
選択された領域の予測圧縮レベルが、選択された領域の外側に位置する直接隣接するブロックの圧縮レベルと異なる場合(条件付きブロック608:「はい」)、プロセッサは、サイド情報等のメタデータに、ビデオフレーム内の領域の位置を挿入する(ブロック612)。様々な実施形態において、サイド情報は、ビデオフレームのレンダリングされた画素のブロックと共に記憶されたメタデータである。上述したように、サイド情報は、直接隣接する画素とは異なる圧縮レベルでフレーム内の領域を示すための様々なフォーマットの1つを有する。
【0081】
プロセッサは、領域と直接隣接するブロックとの間で異なる圧縮レベルを引き起こす領域内のコンテンツのタイプを、サイド情報に挿入する(ブロック614)。コンテンツのタイプの例としては、高いコントラストのエッジ、移動するオブジェクト、予測された焦点、中心窩領域等がある。その後、方法600の制御フローは条件付きブロック610に移動し、プロセッサは、異なる圧縮レベルを有する最後の領域がレンダリングされたかどうかを判別する。最後の領域に達した場合(条件付きブロック610:「はい」)、プロセッサは、ビデオフレームのレンダリングを完了する(ブロック616)。例えば、プロセッサは、直接隣接する画素と同じ圧縮レベルで領域をレンダリングする。その後、プロセッサは、ビデオフレームのレンダリングされた画素のブロック及びサイド情報をビデオエンコーダに送る(ブロック618)。上述したように、方法600(及び方法700)について説明した要素のうち1つ以上は、同時に、または、図示されている順序と異なる順序で実行される。したがって、いくつかの実施形態では、プロセッサは、領域のレンダリングの完了時に、レンダリングされた画素のブロック及び対応するサイド情報をビデオエンコーダに伝達する。このような実施形態では、プロセッサは、全ての領域のレンダリングが完了するのを待たずに、データをビデオエンコーダに送る。このような場合、プロセッサは、データをパイプライン方式でビデオエンコーダに転送する。
【0082】
図7を参照すると、効率的なビデオの圧縮を実行するための方法700の一実施形態が示されている。エンコーダは、ビデオフレームのレンダリングされた画素の複数のブロックを受信する(ブロック702)。また、エンコーダは、隣接する画素のブロックの圧縮レベルとは異なる予測圧縮レベルを有するビデオフレームの領域に関する情報を記憶するサイド情報を受信する(ブロック704)。いくつかの実施形態では、サイド情報は、ビデオフレームのレンダリングされた画素と共に記憶されるメタデータである。エンコーダは、圧縮するビデオフレームのレンダリングされた画素の複数のブロックのうち何れかのブロックを選択する(ブロック706)。
【0083】
選択されたブロックが、サイド情報によって識別される領域に位置しない場合(条件付きブロック708:「いいえ」)、エンコーダは、目標圧縮レベルに基づいて、選択されたブロックの符号化パラメータを更新する(ブロック710)。しかし、選択されたブロックがサイド情報によって識別される領域に位置する場合(条件付きブロック708:「はい」)、エンコーダは、受信したサイド情報に基づいて、選択された領域の符号化パラメータを更新する(ブロック712)。例えば、エンコーダは、受信したサイド情報から、領域が直接隣接するブロックの圧縮レベルよりも大きい圧縮レベルを有すると判別した場合、いくつかの実施形態では、量子化パラメータを増加させる。
【0084】
他の例では、エンコーダは、受信したサイド情報から、領域の圧縮レベルが直接隣接するブロックの圧縮レベルよりも小さいと判別した場合、いくつかの実施形態では、動きの推定中に検索エリア内の領域の高速検索ではなく、完全な検索(full search)を実行する。さらに、いくつかの実施形態では、エンコーダは、算術エントロピー符号化アルゴリズムによって生成される端数の精度を高める。さらに、実施形態では、エンコーダは、動きの推定に使用するブロックのサイズ及び数を減らす。他の実施形態では、エンコーダは、(
図4の)エンコーダ400及び(
図5の)符号化パラメータ510に記述された符号化パラメータ等の様々な他の符号化パラメータを更新する。
【0085】
1つ以上の符号化パラメータを更新した後、エンコーダは、更新された符号化パラメータに基づいて、選択された領域を圧縮する(ブロック714)。フレームの画素の最後のブロックに達していない場合(条件付きブロック716:「いいえ」)、方法700の制御フローはブロック706に戻り、フレームの複数のブロックの別のブロックが選択される。そうではなく、フレームの画素の最後のブロックに達した場合(条件付きブロック716:「はい」)、エンコーダはフレームの圧縮を完了する(ブロック718)。その後、エンコーダは、ビデオフレームの圧縮された画素を送信機に送信し、送信機は、圧縮されたビデオ情報を受信機に送信して、ビデオ情報を復号化し、ディスプレイに表示する。
【0086】
図8を参照すると、ビデオフレーム800内のブロックのフレーム間依存性の一実施形態のブロック図が示されている。様々な実施形態において、送信機は、フレーム840に対応するレンダリングされた情報等のビデオ情報を、受信機に送信する。フレーム840は、空を飛ぶ飛行機の画像を表しているが、他の例では、フレーム840は、スポーツイベントのシーンやビデオゲームのシーン等の様々な視覚情報についての情報を含む。ソフトウェアのヒントまたはハードウェアのヒントは、飛行機をシーンの焦点842、したがって領域として識別する。いくつかの実施形態では、フレーム840のサイド情報は、飛行機である焦点842の指標を含む。フレーム840の下には、フレーム840に示されているシーンの様々なフレームの符号化パラメータの複数の例が示されている。量子化パラメータ(QP)が符号化パラメータの例として示されているが、フレーム間で変化する1つ以上の他の符号化パラメータも可能であり、企図されている。
【0087】
背景の空、雲、下の陸地等のように、何れの焦点にも位置しないオブジェクトの場合、エンコーダは、焦点842の圧縮率よりも高い圧縮率を選択する。図示するように、フレーム840はフレームXであり、Xは0以外の正の整数である。様々な実施形態において、ビデオエンコーダは、N個の先行フレーム及びM個の後続フレーム(N及びMの各々が正の0以外の整数である)を考慮することにより、フレーム840(フレームX)内の所定のブロックのQPを置換または更新する。言い換えれば、いくつかの実施形態では、フレーム842(フレームX)のサイド情報は、フレームX-NからフレームX+Mまでの各フレームからのサイド情報の一部を含み、Nは、X未満である。
【0088】
フレーム840(フレームX)の場合、ブロック13(ブロック844)は青空であり、ブロック14(ブロック846)は焦点842の飛行機の機首であり、ブロック45(ブロック848)は焦点842の飛行機の尾翼である。ただし、フレームX-1の場合、飛行機は未だブロック14に到着していないため、ブロック14は青空である。同様に、フレームX-NからフレームX-1までの場合、ブロック14は青空である。例では、青空のQPは20であるが、焦点領域842(飛行機)のQPは8である。QPの急激な変化により、画面上にちらつきが生じる可能性がある。
【0089】
2つの連続するフレーム間の圧縮レベルの急激な変化を避けるために、ビデオエンコーダは、より連続的な方法で、フレーム間でQPを変化させる。例えば、ビデオエンコーダは、加重合計を生成する。この加重合計は、複数のフレームにわたるブロック14のQPを決定するために、平均化の式として使用される。図示した例では、Nが4でありMが4であるため、ビデオエンコーダは、4つの先行するフレームにわたってブロック14のQPを更新し、QPを、(20-8)/4が3であることから、3つのステップで20から8に減らす。この場合、X-NからXの各フレームの重みは、同じ1である。この例では、ビデオエンコーダは、フレームX-4からXのQPを20、17、14、11、8になるように生成する。換言すると、ビデオエンコーダは、ブロック14、フレームX-4のQPを20、ブロック14、フレームX-3のQPを17、ブロック14、フレームX-2のQPを14、ブロック14、フレームX-1のQPを11、ブロック14、フレームXのQPを8に生成する。2つのフレーム間のブロック14のQPに急激な変化はない。フレーム840(フレームX)の直後のフレームのブロック14が焦点842(飛行機)を含むので、フレームXからフレームX+4までのブロック14のQPは8のままである。
【0090】
図9を参照すると、ビデオフレーム900内のブロックのフレーム間依存性の一実施形態のブロック図が示されている。上記のビデオ情報には、同じ符号が付けられている。図示した例では、Nが4でありMが4であるため、ビデオエンコーダは、4つの後続のフレームにわたってブロック45(ブロック848)のQPを更新し、QPを、(20-8)/4が3であることから、3つのステップで8から20に増加させる。この場合、フレームX-NからXの各フレームの重みは、同じ1である。この例では、ビデオエンコーダは、フレームXからX+4のQPを8、11、14、17、20になるように生成する。つまり、ビデオエンコーダは、ブロック45、フレームXのQPを8、ブロック14、フレームX+1のQPを11、ブロック45、フレームX+2のQPを14、ブロック45、フレームX+3のQPを17、ブロック45、フレームX+4のQPを20に生成する。2つのフレーム間でブロック14のQPに急激な変化はない。フレーム840(フレームX)の直前のフレームのブロック45が焦点842(飛行機)を含むので、フレームX-4からフレームXまでのブロック45のQPは8のままである。
【0091】
図10を参照すると、効率的なビデオの圧縮を実行するための方法1000の一実施形態が示されている。エンコーダは、ビデオフレームの複数のブロックのレンダリングされた画素のブロックAを受信する(ブロック1002)。エンコーダは、複数のフレームに対し、隣接する画素のブロックの圧縮レベルとは異なる予測圧縮レベルを有するビデオフレームの領域に関する情報を記憶するサイド情報を受信する(ブロック1004)。ブロックAがフレームXの領域の前の最後の先行ブロックである場合(条件付きブロック1006:「はい」)、ビデオエンコーダは、フレームX-NからX+Mまでのサイド情報に基づいて、ブロックAの符号化パラメータを更新する。様々な実施形態において、ビデオエンコーダは、
図8及び
図9において上述したステップを実行する。
【0092】
ブロックAがフレームX内の領域の前の最後の先行ブロックではなく(条件付きブロック1006:「いいえ」)、選択されたブロックがサイド情報によって識別される領域に位置しない場合(条件付きブロック1010:「いいえ」)、エンコーダは、目標圧縮レベルに基づいて、選択されたブロックの符号化パラメータを更新する(ブロック1014)。しかし、選択されたブロックがサイド情報によって識別される領域に位置する場合(条件付きブロック1010:「はい」)、エンコーダは、受信したサイド情報に基づいて、選択された領域の符号化パラメータを更新する(ブロック1012)。例えば、エンコーダは、受信したサイド情報から、領域が直接隣接するブロックの圧縮レベルよりも大きい圧縮レベルを有すると判別した場合、いくつかの実施形態では、量子化パラメータを増加させる。ブロック1008,1012,1014の何れかにおいて1つ以上の符号化パラメータを更新した後、エンコーダは、更新された符号化パラメータに基づいて、選択された領域を圧縮する(ブロック1016)。
【0093】
図11を参照すると、ビデオフレーム1100内のブロックのフレーム間依存性の一実施形態のブロック図が示されている。上述したビデオフレーム情報には、同じ符号が付けられている。ソフトウェアのヒントまたはハードウェアのヒントは、帆船をシーンの焦点142、したがって領域として識別する。いくつかの実施形態では、フレーム140のサイド情報は、帆船である焦点142の指標を含む。フレーム140は、水上の帆船を示しているが、他の例では、フレーム140は、スポーツのイベントのシーンやビデオゲームのシーン等のように、様々な視覚情報に関する情報を含む。フレーム140は、図示した例ではフレームXとも呼ばれ、フレーム1140(フレームX+1)は、フレーム140(フレームX)のビデオ情報と重複しない新しい情報を含む。したがって、フレームXとフレームX+1との間でシーンのカットが発生する。
【0094】
フレーム140(フレームX)及びフレーム1140(フレームX+1)の下には、フレーム140,1140に示されるシーンの様々なフレームに対する符号化パラメータの複数の例がある。量子化パラメータ(QP)が符号化パラメータの例として示されているが、フレーム間で変化する1つ以上の他の符号化パラメータも可能であり、企図されている。背景の空、水、陸等のように、何れの焦点にも位置しないオブジェクトの場合、エンコーダは、焦点142(帆船)の圧縮率よりも高い圧縮率を選択する。例では、焦点142のQPは8であり、フレーム140の背景のオブジェクトのQPは16である。フレーム1140の各ブロックのQPは22である。フレーム1140のシーンは、様々なビデオ設定を説明するテキストを有するビデオ設定ページである。例えば、1920×1080のビデオ解像度が選択され、60ヘルツ(Hz)のビデオリフレッシュレート等が選択される。
【0095】
フレーム1140は、ビデオ設定ページのテキスト及び無地の背景を含むので、ビデオエンコーダは、より高い圧縮レベルを選択することができ、したがって、見る者にとってより低い視覚的な質、及び、より高いQPを選択することができる。一例では、ビデオエンコーダは、フレーム1140(フレームX+1)全体のQPを22に更新する。これは、フレーム140(フレームX)で使用されるQPの値8及び16よりも高い。ただし、フレーム1140のサイド情報がないと、ビデオエンコーダは、フレーム1140の最初のブロックを符号化する前に、フレーム1140のコンテンツを認識しない。フレーム140(フレームX)及びフレーム1140(フレームX+1)のサイド情報を使用して、ビデオエンコーダは、フレームの下のテキストボックスに示すように、フレーム140(フレームX)及びフレーム1140(フレームX+1)の各々のブロックのQPを更新できる。
【0096】
図示した例では、Nが4であり、Mが4であるため、ビデオエンコーダは、4つの先行するフレームにわたって焦点142によって定義される領域内のブロック23(ブロック190)のQPを維持する。ビデオエンコーダは、フレームXでQPを8から10に増やす。シーンのカットはフレームX+1に到達するが、見る者がQPの急激な変化によるちらつきを目にすることを避けるために、エンコーダは、引き続きM=4を使用して、シーンのカットが到達するまでQPを調整する。シーンのカットがフレームX+1に到達すると、フレーム全体の数ブロックではなく、フレームX+1の各ブロックに、急激な変化がある。したがって、フレームXの場合、(16-8)/4が2であるため、エンコーダは、ブロック23のQPを2つのステップで更新する。ここで、フレームX-4からXの各々は、1の同じ重みを備えている。この例では、ビデオエンコーダは、フレームX-4からXのQPを8、8、8、8、10になるように生成する。2つのステップでの10から16までのQPの増分は使用されない。シーンのカットがフレームX+1に到達するからである。フレームX+1からX+4の場合、ブロック23のQPは22である。これは、フレームX+1からX+4の各ブロックのQPである。
【0097】
図12を参照すると、ビデオフレーム1200内のブロックのフレーム間依存性の一実施形態のブロック図が示されている。上記のビデオ情報には、同じ符号が付けられている。いくつかの実施形態では、フレーム1240のサイド情報は、帆船である焦点1242の指標を含む。フレーム1240は、水上の帆船を示しているが、他の例では、フレーム1240は、スポーツのイベントのシーンやビデオゲームのシーン等のように、様々な視覚情報についての情報を含む。フレーム1240は、図示した例ではフレームX-2とも呼ばれ、フレーム1140(フレームX+1)は、フレームX(図示省略)のビデオ情報と重複しない新しい情報を含む。したがって、フレームXとフレームX+1との間でシーンのカットが発生するが、焦点1242(帆船)は、
図11に示す前の例よりも早い時間に、シーンのカットの前にブロック23を通過する。この場合、
図12では、焦点1242(帆船)は、
図11に示すようにフレームXではなく、フレームX-2でブロック23を通過する。
【0098】
図12に示す例では、Nが4であり、Mが4であるため、ビデオエンコーダは、シーンのカットの前の3フレームにわたってブロック23(ブロック1290)のQPを更新し、(16-8)/4が2であるため、2つのステップでQPを8から14に増加させる。この場合、フレームX-4からXの各々の重みは1である。この例では、ビデオエンコーダは、フレームX-4からXにわたるQPを、8、8、10、12、14になるように生成する。この場合、フレームX-4からXの各々は、同じ重み1を備えている。シーンのカットがフレームX+1に到達するが、見る者がブロック23のQPの急激な変化によるちらつきを見ることを避けるために、エンコーダは、引き続きM=4を使用して、シーンのカットが到達するまでブロック23のQPを調整する。シーンのカットがフレームX+1に到達すると、フレーム全体の少数のブロックではなく、QP=22を用いるフレームX+1の各ブロックに急激な変化がある。
【0099】
図13を参照すると、効率的なビデオの圧縮を実行するための方法1300の一実施形態が示されている。エンコーダは、ビデオフレームXのレンダリングされた画素の複数のブロックを受信する(ブロック1302)。エンコーダは、複数のフレームについて、隣接する画素のブロックの圧縮レベルとは異なる予測圧縮レベルを有する領域のサイド情報を受信する(ブロック1304)。様々な実施形態では、受信したサイド情報は、フレームX、フレームXの前の0からNのフレーム、及び、フレームXの後の0からMのフレームについての情報を提供する。変数X、N、Mは、上述したように、0以外の正の整数である。フレームXがシーンのカットの前のMフレーム内にない場合(条件付きブロック1306:「いいえ」)、次のシーンのカットは、もしある場合には、フレームXの後のMフレームよりも多くなる。このような場合、エンコーダは、フレームXのサイド情報、他のフレームからのサイド情報、及び、目標圧縮レベルのうち1つ以上に基づいて、フレームXのブロックAの符号化パラメータを更新する(ブロック1308)。エンコーダは、フレームXで識別された領域の数、利用可能なサイド情報を有するフレームXに先行するフレームの数、及び、利用可能なサイド情報を有するフレームXの後のフレームの数に基づいて、フレームXのブロックAの符号化パラメータを更新するために使用する情報を選択する。様々な実施形態において、ビデオエンコーダは、(
図7及び
図10の)方法700,1000等の上記の方法に示されたステップの1つ以上を実行する。
【0100】
フレームXがシーンのカット前のMフレーム内にあり(条件付きブロック1306:「はい」)、フレームXがシーンのカットに関連する新しいシーンの最初のフレームである(条件付きブロック1310:「はい」)場合、フレームXは、シーンのカットの前の0フレーム内にある。このような場合、エンコーダは、シーンのカットに関連する新しいシーンの少なくともサイド情報に基づいて、フレームXのブロックAの符号化パラメータを更新する(ブロック1312)。フレームXがシーンのカットに関連する新しいシーンの2番目のフレームまたはそれ以降のフレームである場合、方法1300の制御フローは、以前の条件付きブロック1306及び他の次のシーンのカットに基づいて移動する。フレームXがシーンのカットに関連する新しいシーンの最初のフレームでない場合(条件付きブロック1310:「いいえ」)、フレームXは、シーンのカットに関連する新しいシーンの前の1からMフレーム以内にある。このような場合、エンコーダは、フレームXとシーンのカットの最初のフレームとの間のフレームの少なくともサイド情報に基づいて、フレームXのブロックAの符号化パラメータを更新する(ブロック1314)。様々な実施形態において、ビデオエンコーダは、
図11及び
図12において上述したステップを実行する。
【0101】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C言語等の高水準プログラミング言語でハードウェアの動作を記述している。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。様々なタイプの記憶媒体が利用可能である。記憶媒体は、プログラム命令及び付随するデータをプログラム実行のためにコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行する1つ以上のプロセッサと、を含む。
【0102】
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されると、当業者には、多くの変形及び修正が明らかになる。以下の特許請求の範囲は、このような変形及び修正を全て包含するように解釈されることが意図される。