IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

特表2024-514934算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム
<>
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図1
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図2A
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図2B
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図3
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図4
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図5
  • 特表-算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-03
(54)【発明の名称】算術コーディング向けの除算なしの確率正則化のための方法、コンピューティングシステム及びコンピュータプログラム
(51)【国際特許分類】
   H04N 19/91 20140101AFI20240327BHJP
【FI】
H04N19/91
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023564408
(86)(22)【出願日】2023-03-08
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 US2023014800
(87)【国際公開番号】W WO2023172616
(87)【国際公開日】2023-09-14
(31)【優先権主張番号】63/319,218
(32)【優先日】2022-03-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/117,221
(32)【優先日】2023-03-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ペリンガッセリー クリシュナン,マドゥ
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リウ,シャン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME11
5C159RC12
5C159UA02
5C159UA05
5C159UA16
(57)【要約】
ここに記載される様々な実施形態は、ビデオをコーディングするための方法及びシステムを含む。一態様において、方法は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含むビデオデータを取得することと、M個の要素についてのそれぞれの生起確率を取得することとを含む。当該方法は更に、上記それぞれの生起確率を用いてビデオデータの第1部分をエントロピーコーディングすることと、エントロピーコーディングしている間に第1のシンタックス要素に遭遇することとを含む。当該方法はまた、第1のシンタックス要素に基づいて生起確率を更新することと、更新された確率のうちの少なくとも1つが閾確率値未満であることに従って、更新された生起確率に確率正則化を適用することによって、正則化された生起確率を決定することとを含み、上記確率正則化は除算演算を含まない。
【特許請求の範囲】
【請求項1】
メモリと制御回路とを有するコンピューティングシステムが実行するビデオコーディングの方法であって、
複数のシンタックス要素を有するビデオデータを取得するステップであり、前記複数のシンタックス要素は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含む、ステップと、
前記第1のシンタックス要素の前記M個の要素についてのそれぞれの生起確率を取得するステップと、
前記それぞれの生起確率に従って前記ビデオデータの第1部分をエントロピーコーディングするステップと、
前記ビデオデータの前記第1部分をエントロピーコーディングしている間に、前記第1のシンタックス要素に遭遇するステップと、
前記第1のシンタックス要素に従って前記M個の要素についての生起確率を更新するステップと、
前記M個の要素についての前記更新された確率のうちの少なくとも1つが閾確率値未満であることに従って、
前記更新された生起確率に確率正則化を適用することによって、前記M個の要素についての正則化された生起確率を決定するステップであり、前記確率正則化は除算演算を含まない、ステップと、
前記正則化された生起確率に従って前記ビデオデータの第2部分をエントロピーコーディングするステップと、
前記M個の要素についての前記更新された確率の各々が前記閾確率値以上であることに従って、前記更新された生起確率に従って前記ビデオデータの前記第2部分をエントロピーコーディングするステップと、
を有する方法。
【請求項2】
前記閾確率値は、前記第1のシンタックス要素の1つ以上のプロパティに基づいて一組の閾確率値から選択される、請求項1に記載の方法。
【請求項3】
前記M個の要素についての前記正則化された生起確率を決定することは、逆確率更新レートを決定することを含む、請求項1に記載の方法。
【請求項4】
前記逆確率更新レートは、第1の所定値に関数の出力を乗算することによって決定され、
前記第1の所定値は、前記第1のシンタックス要素のためのシンボル値の数に基づき、
前記関数は、前記閾確率値と、前記M個の要素についての前記更新された確率のうちの前記閾確率値未満である更新された確率の値とに基づく、
請求項3に記載の方法。
【請求項5】
前記関数は、ルックアップテーブルにアクセスすることを有し、前記閾確率値と、前記閾確率値未満である前記更新された確率の前記値とが、前記ルックアップテーブルをインデックス付けるために使用される、請求項4に記載の方法。
【請求項6】
前記第1の所定値に前記関数の前記出力を乗算することは、右シフト演算を実行することを有する、請求項4に記載の方法。
【請求項7】
前記M個の要素についての前記正則化された生起確率を決定することは、正則化された累積分布関数(CDF)についての値を決定することを含む、請求項1に記載の方法。
【請求項8】
前記正則化されたCDFについての前記値は、逆確率更新レートに、第2の所定値と、前記M個の要素についての前記それぞれの生起確率のCDFとを乗算することによって決定される、請求項7に記載の方法。
【請求項9】
前記更新された生起確率に前記確率正則化を適用することは、前記M個の要素についての前記それぞれの生起確率のCDFのエントリを所定の順序でスキャンすることを含む、請求項1に記載の方法。
【請求項10】
前記所定の順序は、前記CDFの最初のエントリから前記CDFの最後のエントリに向かってである、又は前記CDFの前記最後のエントリから前記CDFの前記最初のエントリに向かってである、請求項9に記載の方法。
【請求項11】
前記所定の順序は、前記閾確率値未満の生起確率を持つ前記CDFのエントリで開始する、請求項9に記載の方法。
【請求項12】
前記更新された生起確率に前記確率正則化を適用することは、前記M個の要素についての前記更新された確率のうちの前記閾確率値未満の更新された確率の値にオフセットを適用することを含む、請求項1に記載の方法。
【請求項13】
制御回路と、
1つ以上の命令セットを格納したメモリと、
を含み、
前記1つ以上の命令セットは、前記制御回路によって実行されるときに、前記制御回路に請求項1乃至12のいずれか一項に記載の方法を実行させる、
コンピューティングシステム。
【請求項14】
コンピュータに請求項1乃至12のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、“Division-free Probability Regularization for Arithmetic Coding”と題して2022年3月11日に出願された米国仮特許出願第63/319,218号の優先権を主張するとともに、“Systems and Methods for Division-Free Probability Regularization for Arithmetic Coding”と題して2023年3月3日に出願された米国特許出願第18/117,221号の継続出願であって、その優先権を主張するものであり、それらの全てをその全体にてここに援用する。
【0002】
開示される実施形態は、概してビデオコーディングに関し、以下に限定されないが、算術コーディング向けの確率正則化のためのシステム及び方法を含む。
【背景技術】
【0003】
デジタル映像は、例えばデジタルテレビ、ラップトップ若しくはデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録機器、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、ビデオ遠隔会議機器、ビデオストリーミング機器などの様々な電子機器によってサポートされている。それらの電子機器は、通信ネットワークを横切ってデジタルビデオデータを送受信したり、その他の方法で通信したりして、デジタルビデオデータをストレージデバイスに格納する。通信ネットワークの限られた帯域幅容量及びストレージデバイスの限られたメモリリソースに起因して、ビデオデータが通信又は格納される前に、1つ以上のビデオコーディング標準に従ってビデオデータを圧縮するために、ビデオコーディングが使用され得る。
【0004】
複数のビデオコーデック標準が開発されてきた。例えば、ビデオコーディング標準は、AOMediaビデオ1(AV1)、バーサタイルビデオコーディング(VVC)、共同探索モデル(JEM)、ハイエフィシェンシービデオコーディング(HEVC/H.265)、アドバンストビデオコーディング(AVC/H.264)、及びムービングピクチャエキスパートグループ(MPEG)コーディングを含む。ビデオコーディングは、一般に、ビデオデータに生来的に備わる冗長性を活用する予測法(例えば、インター予測、イントラ予測、又はこれらに類するもの)を利用する。ビデオコーディングは、ビデオ品質への劣化を回避又は最小限に抑えながら、より低いビットレートを使用する形態へとビデオデータを圧縮することを狙いとする。
【0005】
H.265としても知られるHEVCは、MPEG-Hプロジェクトの一部として設計されたビデオ圧縮標準である。ITU-T及びISO/IECは、HEVC/H.265標準を2013年(バージョン1)、2014年(バージョン2)、2015年(バージョン3)、及び2016年(バージョン4)に公開した。H.266としても知られるバーサタイルビデオコーディング(VVC)は、HEVCの後継として意図されたビデオ圧縮標準である。ITU-T及びISO/IECは、VVC/H.266標準を2020年(バージョン1)及び2022年(バージョン2)に公開した。AV1は、HEVCの代替として設計されたオープンビデオコーディングフォーマットである。2019年1月8日に、仕様の正誤表付きの認証バージョン1.0.0がリリースされた。
【発明の概要】
【0006】
上述のように、符号化(圧縮)は、帯域幅及び/又はストレージ空間の要求を低減させる。詳細に後述するように、可逆圧縮及び非可逆圧縮の両方が使用され得る。可逆圧縮は、原信号の正確な複製を圧縮された原信号から再構成することができる技術を指す。非可逆圧縮は、元のビデオ情報が符号化中に完全には保持されず、復号中に完全には復元可能でない符号化/復号プロセスを指す。非可逆圧縮を使用する場合、再構成された信号は、原信号と同じにならないことがあるが、原信号と再構成信号との間の歪みは、再構成信号を意図した用途に有用にするのに十分な小ささとなる。許容される歪みの量は用途に依存する。例えば、特定の消費者ビデオストリーミングアプリケーションのユーザは、映画又はテレビ放送アプリケーションのユーザよりも高い歪みを許容し得る。特定のコーディングアルゴリズムによって達成可能な圧縮比は、様々な歪み許容度を反映するように選択又は調整されることができ、より高い許容歪みは、一般に、より高い損失及びより高い圧縮比をもたらすコーディングアルゴリズムを可能にする。
【0007】
ビデオエンコーダ及び/又はデコーダは、例えば、動き補償、フーリエ変換、量子化、及びエントロピーコーディングを含め、幾つかの広範なカテゴリ及びステップからの技術を利用することができる。エントロピー符号化時に、処理に関するデータがエントロピーエンコーダに送られ得る。エントロピーエンコーダは、ビットストリーム(符号化ビデオシーケンス)を出力することができ、それが、伝送チャネルを介して別の機器に伝送され得る。ビデオ復号プロセスにおいて、ビットストリームがエントロピーデコーダに送られ得る。エントロピーデコーダは、ビットストリームに基づいて、イントラ予測情報及び残差情報などを含み得るものである処理に関するデータを出力することができる。一部の実施形態において、エントロピー符号化/復号は、算術コーディングの基礎としてシンボル(又は文字)の生起確率に基づく算術コーディングアルゴリズムを利用する。一部の実施形態において、シンボル(又は文字)の生起確率は、符号化/復号プロセスの間に動的に更新される。例えば、2つの可能な文字(“a”及び“b”)のみが存在し、“a”生起の確率をp_aと表記し、“b”生起の確率をp_bと表記すると、p_a+p_b=1(又は任意の他の一定値)となる。従って、符号化/復号プロセスにおいて“a”に遭遇したとき、p_aをより大きい値に更新することができ、それらの合計は一定とし得るので、p_bをより小さい値に更新することができる。この確率更新プロセスは、“確率遷移プロセス”又は“確率状態インデックス更新プロセス”として参照されてもよい。
【0008】
一部の実施形態によれば、ビデオコーディングの方法が提供される。当該方法は、(i)複数のシンタックス要素を有するビデオデータを取得するステップであり、前記複数のシンタックス要素は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含む、ステップと、(ii)前記第1のシンタックス要素の前記M個の要素についてのそれぞれの生起確率を取得するステップと、(iii)前記それぞれの生起確率に従って前記ビデオデータの第1部分をエントロピーコーディングするステップと、(iv)前記ビデオデータの前記第1部分をエントロピーコーディングしている間に、前記第1のシンタックス要素に遭遇するステップと、(v)前記第1のシンタックス要素に従って前記M個の要素についての生起確率を更新するステップと、(vi)前記M個の要素についての前記更新された確率のうちの少なくとも1つが閾確率値未満であることに従って、(a)前記更新された生起確率に確率正則化を適用することによって、前記M個の要素についての正則化された生起確率を決定するステップであり、前記確率正則化は除算演算を含まない、ステップと、(b)前記正則化された生起確率に従って前記ビデオデータの第2部分をエントロピーコーディングするステップと、(vii)前記M個の要素についての前記更新された確率の各々が前記閾確率値以上であることに従って、前記更新された生起確率に従って前記ビデオデータの前記第2部分をエントロピーコーディングするステップと、を含む。
【0009】
一部の実施形態によれば、例えばストリーミングシステム、サーバシステム、パーソナルコンピュータシステム、又は他の電子機器などのコンピューティングシステムが提供される。当該コンピューティングシステムは、制御回路と、1つ以上の命令セットを格納したメモリとを含む。該1つ以上の命令セットは、ここに記載される方法のうちのいずれかを実行するための命令を含む。一部の実施形態において、当該コンピューティングシステムは、エンコーダコンポーネント及び/又はデコーダコンポーネントを含む。
【0010】
一部の実施形態によれば、非一時的コンピュータ読み取り可能記憶媒体が提供される。当該非一時的コンピュータ読み取り可能記憶媒体は、コンピューティングシステムによる実行のための1つ以上の命令セットを格納する。該1つ以上の命令セットは、ここに記載される方法のうちのいずれかを実行するための命令を含む。
【0011】
従って、ビデオをコーディングするための方法とともに機器及びシステムが開示される。そのような方法、機器、及びシステムは、ビデオコーディングのための従来の方法、機器、及びシステムを補完したり置き換えたりすることができる。
【0012】
本明細書に記載される特徴及び利点は必ずしも包括的なわけではなく、特に、この開示にて提供される図面、明細書、及び特許請求の範囲に鑑みて当業者には幾つかの追加の特徴及び利点が明らかになる。また、留意されたいことには、本明細書で使用される言葉は、主に読みやすさ及び教示目的のために選択されており、必ずしもここで説明される主題を線引きしたり境界付けたりするために選択されているわけではない。
【図面の簡単な説明】
【0013】
より詳細に本開示が理解され得るように、様々な実施形態の特徴を参照することによって、より具体的な説明が行われ、それら実施形態のうちの一部が添付の図面に示される。しかしながら、添付の図面は、本開示の関連する特徴を単に例示するものであり、従って、必ずしも限定するものと見なされるべきではなく、説明のために、当業者がこの開示を読んで理解することになるような他の有効な特徴を認めることがある。
図1】一部の実施形態に従った通信システムの一例を示すブロック図である。
図2A】一部の実施形態に従ったエンコーダコンポーネントの要素例を示すブロック図である。
図2B】一部の実施形態に従ったデコーダコンポーネントの要素例を示すブロック図である。
図3】一部の実施形態に従ったサーバシステムの一例を示すブロック図である。
図4】二分決定を復号するためのフローの一例を示すフロー図である。
図5】FIG.5A-FIG.5Bは、一部の実施形態に従った最小確率を強制するアプローチ例を示す図である。
図6】一部の実施形態に従ったビデオをコーディングする方法の一例を示すフロー図である。
【0014】
一般的なやり方に従って、図面に示される様々なフィーチャは必ずしも縮尺通りに描かれているわけではなく、明細書及び図面全体を通して同様のフィーチャを示すために同様の参照符号を使用することがある。
【発明を実施するための形態】
【0015】
本開示は、エントロピー符号化/復号への除算なし(除算フリー)アプローチを記述する。例えば、最小確率が定められ、各シンタックス要素確率が更新されるときに、更新された確率が最小確率と比較される。この例において、更新された確率が最小確率未満である場合、(例えば、1つ以上のルックアップテーブル及び/又はシフト演算を用いて)除算フリー正則化が実行される。斯くして、各シンタックス要素確率がゼロに近づくことが防止され、それが、符号化の非効率さを低減させ、Bjontegaardデルタ(BD)レート損失を防止し、及び/又はモデリング誤差を低減させる。さらに、ここで説明される除算フリーアプローチは、正則化プロセス中に除算演算を実行することに伴う計算コストを削減/排除する。
【0016】
システム及び機器の例
図1は、一部の実施形態に従った通信システム100を示すブロック図である。通信システム100は、ソース機器102と、1つ以上のネットワークを介して互いに通信可能に結合された複数の電子機器120(例えば、電子機器120-1から電子機器120-m)とを含んでいる。一部の実施形態において、通信システム100は、例えば、ビデオ会議アプリケーション、デジタルTVアプリケーション、並びにメディアストレージ及び/又は配信アプリケーションなどのビデオ対応アプリケーションとともに使用するための、ストリーミングシステムである。
【0017】
ソース機器102は、ビデオソース104(例えば、カメラコンポーネント又はメディアストレージ)と、エンコーダコンポーネント106とを含んでいる。一部の実施形態において、ビデオソース104はデジタルカメラ(例えば、未圧縮ビデオサンプルストリームを作成するように構成される)である。エンコーダコンポーネント106は、ビデオストリームから1つ以上の符号化ビデオビットストリームを生成する。ビデオソース104からのビデオストリームは、エンコーダコンポーネント106によって生成された符号化ビデオビットストリーム108と比較して大きいデータ量であるとし得る。符号化ビデオビットストリーム108は、ビデオソースからのビデオストリームと比較してより小さいデータ量(より少ないデータ)であるので、符号化ビデオビットストリーム108は、ビデオソース104からのビデオストリームと比較して、伝送するために少ない帯域幅を必要とし、格納するために少ないストレージ空間を必要とする。一部の実施形態において、ソース機器102はエンコーダコンポーネント106を含まない(例えば、未圧縮ビデオデータを(1つ以上の)ネットワーク110に送信するように構成される)。
【0018】
1つ以上のネットワーク110は、ソース機器102、サーバシステム112、及び/又は電子機器120の間で情報を搬送する任意の数のネットワークを表し、例えば、ワイヤライン(有線)及び/又は無線通信ネットワークを含む。1つ以上のネットワーク110は、回線交換チャネル及び/又はパケット交換チャネルにおいてデータを交換することができる。代表的なネットワークは、遠距離通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、及び/又はインターネットを含む。
【0019】
1つ以上のネットワーク110は、サーバシステム112(例えば、分散/クラウドコンピューティングシステム)を含む。一部の実施形態において、サーバシステム112はストリーミングサーバ(例えば、ソース機器102からの符号化ビデオストリームなどのビデオコンテンツを格納及び/又は配信するように構成される)であるか、それを含むかである。サーバシステム112はコーダコンポーネント114(例えば、ビデオデータを符号化及び/又は復号するように構成される)を含む。一部の実施形態において、コーダコンポーネント114は、エンコーダコンポーネント及び/又はデコーダコンポーネントを含む。様々な実施形態において、コーダコンポーネント114は、ハードウェア、ソフトウェア、又はそれらの組み合わせとしてインスタンス化される。一部の実施形態において、コーダコンポーネント114は、符号化ビデオビットストリーム108を復号し、異なる符号化標準及び/又は方法を使用してビデオデータを再符号化して、符号化ビデオデータ116を生成するように構成される。一部の実施形態において、サーバシステム112は、符号化ビデオビットストリーム108から複数のビデオフォーマット及び/又は符号化を生成するように構成される。
【0020】
一部の実施形態において、サーバシステム112は、メディアアウェアネットワーク要素(Media-Aware Network Element;MANE)として機能する。例えば、サーバシステム112は、電子機器120のうちの1つ以上に対して潜在的に異なるビットストリームを仕立てるように、符号化ビデオビットストリーム108をプルーニングするように構成され得る。一部の実施形態では、サーバシステム112とは別個にMANEが設けられる。
【0021】
電子機器120-1は、デコーダコンポーネント122及びディスプレイ124を含んでいる。一部の実施形態において、デコーダコンポーネント122は、符号化ビデオデータ116を復号して、ディスプレイ又は他のタイプのレンダリングデバイス上でレンダリングされることができる出力ビデオストリームを生成するように構成される。一部の実施形態において、電子機器120のうちの1つ以上はディスプレイコンポーネントを含まない(例えば、外付けのディスプレイ機器に通信可能に結合され、及び/又はメディアストレージを含む)。一部の実施形態において、電子機器120はストリーミングクライアントである。一部の実施形態において、電子機器120は、サーバシステム112にアクセスして符号化ビデオデータ116を取得するように構成される。
【0022】
ソース機器及び/又は複数の電子機器120は、“端末機器”又は“ユーザ機器”と呼ばれることがある。一部の実施形態において、ソース機器102、及び/又は電子機器120のうちの1つ以上は、サーバシステム、パーソナルコンピュータ、ポータブル機器(例えば、スマートフォン、タブレット、又はラップトップ)、ウェアラブル機器、ビデオ会議機器、及び/又は他のタイプの電子機器のインスタンスである。
【0023】
通信システム100の動作例において、ソース機器102は符号化ビデオビットストリーム108をサーバシステム112に送信する。例えば、ソース機器102は、当該ソース機器によってキャプチャされたピクチャのストリームをコーディングし得る。サーバシステム112は、符号化ビデオビットストリーム108を受信し、コーダコンポーネント114を用いて符号化ビデオビットストリーム108を復号及び/又は符号化し得る。例えば、サーバシステム112は、ネットワーク伝送及び/又はストレージのためにいっそう最適な符号化をビデオデータに適用し得る。サーバシステム112は、符号化ビデオデータ116(例えば、1つ以上の符号化ビデオビットストリーム)を電子機器120のうちの1つ以上に送信し得る。各電子機器120は、符号化ビデオデータ116を復号してビデオピクチャを復元し、オプションでそれを表示し得る。
【0024】
一部の実施形態において、上述の送信は、単方向データ送信である。単方向データ送信は、メディアサービングアプリケーション及びそれに類するもので利用されることがある。一部の実施形態において、上述の送信は双方向データ送信である。双方向データ送信は、ビデオ会議アプリケーション及びそれに類するもので利用されることがある。一部の実施形態において、符号化ビデオビットストリーム108及び/又は符号化ビデオデータ116は、例えばHEVC、VVC、及び/又はAV1などの、ここに記載されるビデオコーディング/圧縮標準のうちのいずれかに従って符号化及び/又は復号される。
【0025】
図2Aは、一部の実施形態に従ったエンコーダコンポーネント106の要素例を示すブロック図である。エンコーダコンポーネント106は、ビデオソース104からソースビデオシーケンスを受信する。一部の実施形態において、エンコーダコンポーネントは、ソースビデオシーケンスを受信するように構成された受信器(例えば、トランシーバ)コンポーネントを含む。一部の実施形態において、エンコーダコンポーネント106は、リモートビデオソース(例えば、エンコーダコンポーネント106とは異なる機器のコンポーネントであるビデオソース)からビデオシーケンスを受信する。ビデオソース104は、ソースビデオシーケンスを、任意の好適なビット深さ(例えば、8ビット、10ビット、又は12ビット)、任意の色空間(例えば、BT.601 Y CrCB、又はRGB)、及び任意の好適なサンプリング構造(例えば、Y CrCb 4:2:0、又はY CrCb 4:4:4)のものとし得るデジタルビデオサンプルストリームの形態で提供し得る。一部の実施形態において、ビデオソース104は、事前にキャプチャ/準備されたビデオを格納したストレージデバイスである。一部の実施形態において、ビデオソース104は、ローカルな画像情報をビデオシーケンスとしてキャプチャするカメラである。ビデオデータは、順に見たときに動きを伝える複数の個々のピクチャとして提供され得る。それらピクチャ自体は、ピクセルの空間アレイとして編成されることができ、各ピクセルが、使用されるサンプリング構造、色空間などに応じて、1つ以上のサンプルを含むことができる。当業者は、ピクセルとサンプルとの関係を直ちに理解することができる。以下の説明は、サンプルに焦点を当てている。
【0026】
エンコーダコンポーネント106は、ソースビデオシーケンスのピクチャを、リアルタイムで、又はアプリケーションによって要求される他の時間制約下で、符号化ビデオシーケンス(643)へと符号化及び/又は圧縮するように構成される。適切な符号化速度を強制することが、コントローラ204の1つの機能である。一部の実施形態において、コントローラ204は、後述するような他の機能ユニットを制御し、それら他の機能ユニットに帰納的に結合される。コントローラ204によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、及び/又はレート歪み最適化技術のラムダ値、ピクチャサイズ、グループ・オブ・ピクチャ(GOP)レイアウト、最大動きベクトル探索範囲などを含み得る。当業者はコントローラ204の他の機能を直ちに特定することができ、何故なら、それらは、エンコーダコンポーネント106が特定のシステム設計に対して最適化されることに関係し得るからである。
【0027】
一部の実施形態において、エンコーダコンポーネント106は、コーディングループにて動作するように構成される。単純化した一例において、コーディングループは、ソースコーダ202(例えば、コーディングされる入力ピクチャ及び(1つ以上の)参照ピクチャに基づいて例えばシンボルストリームなどのシンボルを作成することを担う)と、(ローカル)デコーダ210とを含む。デコーダ210は、(シンボルと符号化ビデオビットストリームとの間での圧縮が可逆であるときに)(リモート)デコーダと同様にしてシンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)が、参照ピクチャメモリ208に入力される。シンボルストリームの復号は、デコーダ位置(ローカル又はリモート)に依存しないビット正確な結果をもたらすので、参照ピクチャメモリ208内のコンテンツもローカルエンコーダとリモートエンコーダとの間でビット正確である。斯くして、エンコーダの予測部分は、デコーダが復号中に予測を使用するときに解釈するのと同じサンプル値を参照ピクチャサンプルとして解釈する。この参照ピクチャ同期性の原理(及び、例えばチャネルエラーのために、同期性を維持することができない場合に結果として生じるドリフト)は、当業者に知られている。
【0028】
デコーダ210の動作は、例えば図2Bに関連して詳細に後述するものであるデコーダコンポーネント122などの、リモートデコーダのものと同じであるとすることができる。しかしながら、図2Bを手短に参照するに、シンボルが利用可能であり、且つエントロピーコーダ214及びパーサ254によるシンボルの符号化ビデオシーケンスへの符号化/復号は可逆であるとし得るので、バッファメモリ252及びパーサ254を含むデコーダコンポーネント122のエントロピー復号部分は、ローカルデコーダ210には完全に実装されなくてよい。
【0029】
この時点で気付くことができることには、デコーダ内に存在する構文解析/エントロピー復号を除くデコーダ技術が、必ず、対応するエンコーダ内にも実質的に同じ機能的形態で存在する必要がある。この理由から、開示に係る事項はデコーダ動作に焦点を当てる。エンコーダ技術の説明は、徹底して説明されるデコーダ技術の逆であるので、省略することができる。ある特定の領域においてのみ、更なる詳細な説明が必要であり、以下にて提供される。
【0030】
その動作の一部として、ソースコーダ202は、ビデオシーケンスからの、参照フレームとして指定された1つ以上の先にコーディングされたフレームを参照して、入力フレームを予測的にコーディングするものである動き補償予測コーディングを実行し得る。斯くして、コーディングエンジン212は、入力フレームのピクセルブロックと、入力フレームに対する(1つ以上の)予測参照として選択され得る(1つ以上の)参照フレームのピクセルブロックとの間の差分をコーディングする。コントローラ204が、例えば、ビデオデータを符号化するのに使用されるパラメータ及びサブグループパラメータの設定を含め、ソースコーダ202のコーディング動作を管理し得る。
【0031】
デコーダ210は、参照フレームとして指定され得るフレームの符号化ビデオデータを、ソースコーダ202によって作成されたシンボルに基づいて復号する。コーディングエンジン212の動作は、有利には、非可逆プロセスとし得る。符号化ビデオデータがビデオデコーダ(図2Aには示されていない)で復号されるとき、再構成されたビデオシーケンスは、幾分の誤差を伴うソースビデオシーケンスのレプリカであり得る。デコーダ210は、参照フレーム上でリモートビデオデコーダによって実行され得る復号プロセスを複製し、再構成された参照フレームを参照ピクチャメモリ208に格納させるようにし得る。斯くして、エンコーダコンポーネント106は、リモートビデオデコーダによって得られることになる再構成参照フレームと共通のコンテンツを持つ再構成参照フレームのコピーをローカルに格納する。
【0032】
予測器206は、コーディングエンジン212のために予測探索を実行し得る。すなわち、コーディングすべき新たなフレームに関して、予測器206は、新たなピクチャ用の適切な予測参照としての役割を果たし得るサンプルデータ(候補参照ピクセルブロックとして)又は例えば参照ピクチャ動きベクトルやブロック形状などの特定のメタデータについて、参照ピクチャメモリ208を検索し得る。予測器206は、適切な予測参照を見出すために、ピクセルブロック毎に動作し得る。一部のケースにおいて、予測器206によって得られた探索結果により決定されるように、入力ピクチャは、参照ピクチャメモリ208に格納された複数の参照ピクチャから引き出された予測参照を有し得る。
【0033】
前述の全ての機能ユニットの出力が、エントロピーコーダ214におけるエントロピーコーディングに掛けられ得る。エントロピーコーダ214は、当業者に知られる技術(例えばハフマンコーディング、可変長コーディング、及び/又は算術コーディング)に従ってシンボルを可逆圧縮するによって、様々な機能ユニットによって生成されたシンボルを符号化ビデオシーケンスへと変換する。
【0034】
一部の実施形態において、エントロピーコーダ214の出力は送信器に結合される。送信器は、エントロピーコーダ214によって生成された(1つ以上の)符号化ビデオシーケンスをバッファリングして、それらを、通信チャネル218を介した伝送のために準備するように構成され得る。通信チャネル218は、符号化されたビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクとし得る。送信器は、ソースコーダ202からの符号化ビデオデータを、例えば符号化オーディオデータ及び/又は補助データストリーム(ソースは図示していない)といった、送信される他のデータとマージするように構成され得る。一部の実施形態において、送信器は、符号化されたビデオとともに追加のデータを送信し得る。ソースコーダ202は、そのようなデータを符号化ビデオシーケンスの一部として含み得る。追加のデータは、時間/空間/SNRエンハンスメントレイヤ、例えば冗長ピクチャ及びスライスなどの他の形態の冗長データ、補足強化情報(SEI)メッセージ、ビジュアルユーザビリティ情報(VUI)パラメータセットフラグメント、及びこれらに類するものを有し得る。
【0035】
コントローラ204は、エンコーダコンポーネント106の動作を管理し得る。コーディングにおいて、コントローラ204は、各符号化ピクチャに、それぞれのピクチャに適用されるコーディング技術に影響を及ぼし得るものである特定の符号化ピクチャタイプを割り当て得る。例えば、ピクチャは、イントラピクチャ(Iピクチャ)、予測ピクチャ(Pピクチャ)、又は双方向予測ピクチャ(Bピクチャ)として割り当てられ得る。イントラピクチャは、シーケンス内の如何なる他のフレームも予測のソースとして使用することなく符号化及び復号され得る。一部のビデオコーデックは、例えば独立デコーダリフレッシュ(Independent Decoder Refresh;IDR)ピクチャを含め、複数の異なるタイプのイントラピクチャを許している。当業者は、Iピクチャのそれら異形、並びにそれらそれぞれの用途及び特徴を知っており、故に、それらをここで繰り返すことはしない。予測ピクチャは、各ブロックのサンプル値を予測するために、多くて1つの動きベクトルと参照インデックスとを使用して、イントラ予測又はインター予測を用いて符号化及び復号され得る。双方向予測ピクチャは、各ブロックのサンプル値を予測するために、多くて2つの動きベクトルと参照インデックスとを使用して、イントラ予測又はインター予測を用いて符号化及び復号され得る。同様に、多重予測ピクチャは、単一のブロックの再構成のために3つ以上の参照ピクチャと関連メタデータとを使用することができる。
【0036】
ソースピクチャは、一般に、空間的に複数のサンプルブロック(例えば、各々4×4、8×8、4×8、又は16×16サンプルのブロック)に細分化され、ブロック毎に符号化され得る。ブロックは、それらブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定される他の(既にコーディングされた)ブロックを参照して予測的にコーディングされ得る。例えば、Iピクチャのブロックは非予測的にコーディングされることができ、あるいは、それらは同じピクチャの既にコーディングされたブロックを参照して予測的にコーディングされることができる(空間予測又はイントラ予測)。Pピクチャのピクセルブロックは、非予測的に、又は空間予測を介して、又は1つの先にコーディングされた参照ピクチャを参照する時間予測を介してコーディングされることができる。Bピクチャのブロックは、非予測的に、又は空間予測を介して、又は1つ若しくは2つの先にコーディングされた参照ピクチャを参照する時間予測を介してコーディングされることができる。
【0037】
ビデオは、時間シーケンスにて複数のソースピクチャ(ビデオピクチャ)としてキャプチャされ得る。イントラピクチャ予測(しばしば、イントラ予測と略される)は、所与のピクチャ内の空間的な相関を使用し、インターピクチャ予測は、ピクチャ間の(時間的又は他の)相関を使用する。一例において、現在ピクチャと称される符号化/復号中の特定のピクチャが、複数のブロックへと分割される。現在ピクチャ内のあるブロックが、ビデオ内の先にコーディングされ且つ依然としてバッファリングされている参照ピクチャ内の参照ブロックに類似しているとき、現在ピクチャ内の該ブロックは、動きベクトルと称されるベクトルによってコーディングされ得る。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合には、参照ピクチャを特定する第3の次元を持つことができる。
【0038】
エンコーダコンポーネント106は、例えばここに記載されるいずれかなどの、所定のビデオコーディング技術又は標準に従ってコーディング動作を実行し得る。その動作において、エンコーダコンポーネント106は、入力ビデオシーケンスにおける時間的及び空間的な冗長性を活用する予測コーディング動作を含め、様々な圧縮動作を実行することができる。従って、符号化ビデオデータは、使用されるビデオコーディング技術又は標準によって規定されるシンタックスに準拠し得る。
【0039】
図2Bは、一部の実施形態に従ったデコーダコンポーネント122の要素例を示すブロック図である。図2Bのデコーダコンポーネント122は、チャネル218及びディスプレイ124に結合されている。一部の実施形態において、デコーダコンポーネント122は、ループフィルタユニット256に結合されてデータをディスプレイ124に送信する(例えば、有線又は無線接続を介して)ように構成された送信器を含む。
【0040】
一部の実施形態において、デコーダコンポーネント122は、チャネル218に結合されてデータをチャネル218から受信する(例えば、有線又は無線接続を介して)ように構成された受信器を含む。受信器は、デコーダコンポーネント122によって復号される1つ以上の符号化ビデオシーケンスを受信するように構成され得る。一部の実施形態において、各符号化ビデオシーケンスの復号は、他の符号化ビデオシーケンスとは独立である。各符号化ビデオシーケンスは、符号化ビデオデータを格納するストレージデバイスへのハードウェア/ソフトウェアリンクとし得るものであるチャネル218から受信され得る。受信器は、符号化ビデオデータを、例えば符号化オーディオデータ及び/又は補助データストリームといった他のデータとともに受信してもよく。それら他のデータはそれらそれぞれの使用エンティティ(図示せず)に転送され得る。受信器は、符号化ビデオシーケンスを他のデータから分離することができる。一部の実施形態において、受信器は、符号化ビデオとともに追加の(冗長)データを受信する。追加のデータは、(1つ以上の)符号化ビデオシーケンスの一部として含められ得る。追加のデータは、データを復号するために、及び/又は元のビデオデータをいっそう正確に再構成するために、デコーダコンポーネント122によって使用され得る。追加のデータは、例えば、時間的、空間的、若しくはSNRエンハンスメントレイヤ、冗長スライス、冗長ピクチャ、順方向誤り訂正符号などの形態とし得る。
【0041】
一部の実施形態によれば、デコーダコンポーネント122は、バッファメモリ252、パーサ254(エントロピーデコーダと称されることもある)、スケーラ/逆変換ユニット258、イントラピクチャ予測ユニット262、動き補償予測ユニット260、アグリゲータ268、ループフィルタユニット256、参照ピクチャメモリ266、及び現在ピクチャメモリ264を含む。一部の実施形態において、デコーダコンポーネント122は、集積回路、一連の集積回路、及び/又は他の電子回路として実装される。一部の実施形態において、デコーダコンポーネント122は、少なくとも部分的にソフトウェアで実装される。
【0042】
バッファメモリ252は、(例えば、ネットワークジッタに対処するために)チャネル218とパーサ254との間に結合される。一部の実施形態において、バッファメモリ252はデコーダコンポーネント122とは別個である。一部の実施形態において、チャネル218の出力とデコーダコンポーネント122との間に別個のバッファメモリが設けられる。一部の実施形態では、デコーダコンポーネント122の内部のバッファメモリ252(例えば、これは再生タイミングを取り扱うように構成される)に加えて、(例えば、ネットワークジッタに対処するために)別個のバッファメモリがデコーダコンポーネント122の外部に設けられる。十分な帯域幅及び可制御性の格納/転送デバイスから又は等同期(isosynchronous)ネットワークからデータを受信するとき、バッファメモリ252は、必要とされなくてもよく、又は小さくされることができる。例えばインターネットなどのベストエフォート型パケットネットワーク上での使用では、バッファメモリ252が必要とされ得るとともに、比較的大きくされることができ、有利には適応可能なサイズのものとされることができ、また、少なくとも部分的に、デコーダコンポーネント122の外部のオペレーティングシステム又は同様の要素(図示せず)にて実装され得る。
【0043】
パーサ254は、符号化ビデオシーケンスからシンボル270を再構成するように構成される。シンボルは、例えば、デコーダコンポーネント122の動作を管理するために使用される情報、及び/又は例えばディスプレイ124などのレンダリングデバイスを制御する情報を含み得る。(1つ以上の)レンダリング装置用の制御情報は、例えば、補足強化情報(SEI)メッセージ又はビデオユーザビリティ情報(VUI)パラメータセットフラグメント(図示せず)の形態とし得る。パーサ254は符号化ビデオシーケンスを解析(エントロピー復号)する。符号化ビデオシーケンスのコーディングは、ビデオコーディング技術又は標準によることができ、可変長コーディング、ハフマンコーディング、コンテキスト依存性を持つ又は持たない算術コーディングなどを含め、当業者によく知られた原理に従うことができる。パーサ254は、符号化ビデオシーケンスから、グループに対応する少なくとも1つのパラメータに基づいて、ビデオデコーダにおけるピクセルのサブグループのうちの少なくとも1つに関する一組のサブグループパラメータを抽出し得る。サブグループは、グループ・オブ・ピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ254はまた、符号化ビデオシーケンス情報から、例えば変換係数、量子化パラメータ値、動きベクトルなどの情報を抽出し得る。
【0044】
シンボル270の再構成には、コーディングされたビデオピクチャ又はその部分のタイプ及び他の要因(例えば、インターピクチャ及びイントラピクチャ、インターブロック及びイントラブロックなど)に応じて、複数の異なるユニットが関与し得る。どのユニットが関与するのか、及びそれらがどのように関与するかは、パーサ254によって符号化ビデオシーケンスから解析されたサブグループ制御情報によって制御されることができる。パーサ254と以下の複数のユニットとの間でのこのようなサブグループ制御情報の流れは、明瞭さのために図示していない。
【0045】
既述の機能ブロックを超えて、デコーダコンポーネント122は概念的に、後述のような多数の機能ユニットに細分化されることができる。商業上の制約の下で稼働する実用的な実装において、これらのユニットのうちの多くが互いに密接にインタラクトし、少なくとも部分的に互いに統合され得る。しかしながら、開示される主題を説明するという目的のために、以下の機能ユニットへの概念的な細分化を維持することとする。
【0046】
スケーラ/逆変換ユニット258は、パーサ254からの(1つ以上の)シンボル270として、量子化された変換係数と制御情報(例えば、どの変換を使用すべきか、ブロックサイズ、量子化係数、及び/又は量子化スケーリング行列)とを受け取る。スケーラ/逆変換ユニット258は、アグリゲータ268に入力されることが可能なサンプル値を含むブロックを出力することができる。
【0047】
一部のケースにおいて、スケーラ/逆変換ユニット258の出力サンプルは、イントラコーディングされたブロック、すなわち、先行して再構成されたピクチャからの予測情報を使用していないが、現在ピクチャのうち先行して再構成された部分からの予測情報を使用することができるブロック、に関係する。このような予測情報は、イントラピクチャ予測ユニット262によって提供されることができる。イントラピクチャ予測ユニット262は、現在ピクチャメモリ264からの現在の(部分的に再構成された)ピクチャからフェッチされた周囲の既に再構成された情報を用いて、再構成中のブロックと同じサイズ及び形状のブロックを生成し得る。アグリゲータ268は、サンプル毎に、イントラピクチャ予測ユニット262が生成した予測情報を、スケーラ/逆変換ユニット258によって提供される出力サンプル情報に付加し得る。
【0048】
他のケースにおいて、スケーラ/逆変換ユニット258の出力サンプルは、インターコーディングされた、動き補償された可能性のあるブロックに関係する。このような場合、動き補償予測ユニット260が、参照ピクチャメモリ266にアクセスして、予測に使用されるサンプルをフェッチすることができる。フェッチされたサンプルを、ブロックに関係するシンボル270に従って動き補償した後、これらのサンプルが、アグリゲータ268によって、スケーラ/逆変換ユニット258の出力(この場合、残差サンプル又は残差信号と称される)に付加されて、出力サンプル情報を生成することができる。そこから動き補償予測ユニット260が予測サンプルをフェッチする参照ピクチャメモリ266内のアドレスが、動きベクトルによって制御され得る。動きベクトルは、例えばX、Y、及び参照ピクチャ成分を有し得るシンボル270の形態で動き補償予測ユニット260に利用可能であり得る。動き補償はまた、サブサンプルの正確な動きベクトルが使用されるときの、参照ピクチャメモリ266からフェッチされたサンプル値の補間、及び動きベクトル予測メカニズムなどを含むことができる。
【0049】
アグリゲータ268の出力サンプルは、ループフィルタユニット256にて様々なループフィルタリング技術に掛けられ得る。ビデオ圧縮技術は、インループ(in-loop)フィルタ技術を含むことができ、これは、符号化ビデオビットストリームに含められてパーサ254からのシンボル270としてループフィルタユニット256に利用可能にされるパラメータによって制御されるが、符号化ピクチャ又は符号化ビデオシーケンスのうちの(復号順で)先行部分の復号中に得られたメタ情報にも応答することができるとともに、先行して再構成されてループフィルタリングされたサンプル値にも応答することができる。
【0050】
ループフィルタユニット256の出力は、例えばディスプレイ124などのレンダリングデバイスに出力されることが可能なサンプルストリームとすることができ、これはまた、将来のインターピクチャ予測での使用のために参照ピクチャメモリ266に格納されることができる。
【0051】
ある特定の符号化ピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用されることができる。符号化ピクチャが完全に再構成され、その符号化ピクチャが参照ピクチャとして(例えば、パーサ254によって)特定されると、現在の参照ピクチャが参照ピクチャメモリ266の一部となり得るとともに、次の符号化ピクチャの再構成を開始する前に新しい現在ピクチャメモリを割り当て直すことができる。
【0052】
デコーダコンポーネント122は、例えばここに記載された標準のうちのいずれかなど、標準において文書化され得る所定のビデオ圧縮技術に従って復号動作を実行し得る。符号化ビデオシーケンスは、ビデオ圧縮技術文書又は標準、そして具体的にはその中のプロファイル文書に規定されるビデオ圧縮技術又は標準のシンタックスを忠実に守るという意味で、使用されるビデオ圧縮技術又は標準によって規定されるシンタックスに従い得る。また、一部のビデオ圧縮技術又は標準との準拠のために、符号化ビデオシーケンスの複雑さが、ビデオ圧縮技術又は標準のレベルによって規定される範囲内にされ得る。一部のケースにおいて、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば、毎秒メガサンプルで測定される)、最大参照ピクチャサイズなどを制約する。レベルによって設定される制限は、一部のケースで、仮説的リファレンスデコーダ(Hypothetical Reference Decoder;HRD)仕様、及び符号化ビデオシーケンス内でシグナリングされるHRDバッファ管理用のメタデータを通して更に制約され得る。
【0053】
図3は、一部の実施形態に従ったサーバシステム112を示すブロック図である。サーバシステム112は、制御回路302、1つ以上のネットワークインタフェース304、メモリ314、ユーザインタフェース306、及びこれらのコンポーネントを相互接続するための1つ以上の通信バス312を含んでいる。一部の実施形態において、制御回路302は、1つ以上のプロセッサ(例えば、CPU、GPU、及び/又はDPU)を含む。一部の実施形態において、制御回路は、1つ以上のフィールドプログラマブルゲートアレイ(FPGA)、ハードウェアアクセラレータ、及び/又は1つ以上の集積回路(例えば、特定用途向け集積回路)を含む。
【0054】
(1つ以上の)ネットワークインタフェース304は、1つ以上の通信ネットワーク(例えば、無線、有線、及び/又は光ネットワーク)とインタフェースするように構成され得る。通信ネットワークは、ローカル、広域、大都市、車両及び産業、リアルタイム、耐遅延などとすることができる。通信ネットワークの例は、例えばイーサネット(登録商標)などのローカルエリアネットワークや、無線LANや、GSM、3G、4G、5G、LTE及びこれらに類するものを含むセルラネットワークや、ケーブルTV、衛星TV、及び地上波放送TVを含むTV有線又は無線広域デジタルネットワークや、CANbusを含む車両及び産業などを含む。そのような通信は、単方向の受信のみ(例えば、放送TV)、単方向の送信のみ(例えば、特定のCANbusデバイスに対するCANbus)、又は双方向(例えば、ローカル又はワイドエリアデジタルネットワークを用いた、他のコンピュータシステムに対する)とし得る。そのような通信は、1つ以上のクラウドコンピューティングネットワークへの通信を含むことができる。
【0055】
ユーザインタフェース306は、1つ以上の出力デバイス308及び/又は1つ以上の入力デバイス310を含む。(1つ以上の)入力デバイス310は、キーボード、マウス、トラックパッド、タッチスクリーン、データグローブ、ジョイスティック、マイクロフォン、スキャナ、カメラ、又はこれらに類するもののうちの1つ以上を含み得る。(1つ以上の)出力デバイス308は、オーディオ出力デバイス(例えば、スピーカ)、ビジュアル出力デバイス(例えば、ディスプレイ若しくはモニタ)、又はこれらに類するもののうちの1つ以上を含み得る。
【0056】
メモリ314は、高速ランダムアクセスメモリ(例えば、DRAM、SRAM、DDR RAM、及び/又は他のランダムアクセスソリッドステートメモリデバイスなど)及び/又は不揮発性メモリ(例えば、1つ以上の磁気ディスクストレージデバイス、光ディスクストレージデバイス、フラッシュメモリデバイス、及び/又は他の不揮発性ソリッドステートストレージデバイスなど)を含み得る。メモリ314は、オプションで、制御回路302からリモートに位置する1つ以上のストレージデバイスを含む。メモリ314、又は代わりにメモリ314内の不揮発性ソリッドステートメモリデバイスは、非一時的コンピュータ読み取り可能記憶媒体を含む。一部の実施形態において、メモリ314、又はメモリ314の非一時的コンピュータ読み取り可能記憶媒体は、以下のプログラム、モジュール、命令、及びデータ構造を格納し、あるいは、これらのサブセット又はスーパーセットを格納する:
・様々な基本システムサービスを取り扱うための及びハードウェア依存タスクを実行するためのプロシージャを含むオペレーティングシステム316;
・1つ以上のネットワークインタフェース304を介して(例えば、有線及び/又は無線接続を介して)サーバシステム112を他のコンピューティング機器に接続するのに使用されるネットワーク通信モジュール318;
・例えばビデオデータなどのデータを符号化及び/又は復号することに関して様々な機能を実行するコーディングモジュール320。一部の実施形態において、コーディングモジュール320は、コーダコンポーネント114のインスタンスである。コーディングモジュール320は、以下に限られないが、以下のうちの1つ以上を含む:
・例えばデコーダコンポーネント122に関して前述したものなどの、符号化データを復号することに関して様々な機能を実行する復号モジュール322;及び
・例えばエンコーダコンポーネント106に関して前述したものなどの、データを符号化することに関する様々な機能を実行する符号化モジュール340;並びに
・例えばコーディングモジュール320と共に使用するための、ピクチャ及びピクチャデータを格納するピクチャメモリ352。一部の実施形態において、ピクチャメモリ352は、参照ピクチャメモリ208、バッファメモリ252、現在ピクチャメモリ264、及び参照ピクチャメモリ266のうちの1つ以上を含む。
【0057】
一部の実施形態において、復号モジュール322は、解析モジュール324(例えば、パーサ254に関して前述した様々な機能を実行するように構成される)、変換モジュール326(例えば、スケーラ/逆変換ユニット258に関して前述した様々な機能を実行するように構成される)、予測モジュール328(例えば、動き補償予測ユニット260及び/又はイントラピクチャ予測ユニット262に関して前述した様々な機能を実行するように構成される)、及びフィルタモジュール330(例えば、ループフィルタユニット256に関して前述した様々な機能を実行するように構成される)を含む。
【0058】
一部の実施形態において、符号化モジュール340は、コードモジュール342(例えば、ソースコーダ202、コーディングエンジン212、及び/又はエントロピーコーダ214に関して前に説明した様々な機能を実行するように構成される)、及び予測モジュール344(例えば、予測器206に関して前述した様々な機能を実行するように構成される)を含む。一部の実施形態において、復号モジュール322及び/又は符号化モジュール340は、図3に示されるモジュールのうちのサブセットを含む。例えば、共有の予測モジュールが、復号モジュール322及び符号化モジュール340の両方によって使用される。
【0059】
メモリ314に格納された、上で特定したモジュールの各々は、ここで説明される機能を実行するための命令セットに対応する。上で特定したモジュール(例えば、命令セット)は、別々のソフトウェアプログラム、プロシージャ、又はモジュールとして実装される必要はなく、従って、様々な実施形態において、これらのモジュールの様々なサブセットが組み合わされたり、それ以外で再編成されたりし得る。例えば、コーディングモジュール320は、オプションで、別々の復号モジュール及び符号化モジュールを含まずに、両方の機能セットを実行するのに同じモジュールセットを使用する。一部の実施形態において、メモリ314は、上で特定したモジュール及びデータ構造のうちのサブセットを格納する。一部の実施形態において、メモリ314は、例えばオーディオ処理モジュールなどの、上述されていない追加のモジュール及びデータ構造を格納する。
【0060】
一部の実施形態において、サーバシステム112は、ウェブ若しくはハイパーテキスト転送プロトコル(HTTP)サーバ、ファイル転送プロトコル(FTP)サーバ、並びに、共通ゲートウェイインタフェース(CGI)スクリプト、PHPハイパーテキストプリプロセッサ(PHP)、アクティブサーバページ(ASP)、ハイパーティストマークアップ言語(HTML)、拡張マークアップ言語(XML)、Java(登録商標)、JavaScript(登録商標)、非同期JavaScript+XML(AJAX)、XHP、Javelin、ワイヤレスユニバーサルリソースファイル(WURFL)、及びこれらに類するものを用いて実装されるウェブページ及びアプリケーションを含む。
【0061】
図3は、一部の実施形態に従ったサーバシステム112を示しているが、図3は、ここで説明される実施形態の構造的概略図というよりも、1つ以上のサーバシステムに存在し得る様々なフィーチャの機能的説明として意図されている。実際には、当業者によって認識されるように、別々に示されたアイテムが組み合わされてもよく、一部のアイテムが分離されてもよい。例えば、図3に別々に示された一部のアイテムが単一のサーバ上で実装されてもよく、単一のアイテムが1つ以上のサーバによって実装されてもよい。サーバシステム112を実装するのに使用されるサーバの実際の数、及びそれらの間でどのようにフィーチャが割り当てられるかは、実装ごとに異なることになり、オプションで、ピーク使用期間中及び平均的使用期間中にサーバシステムが取り扱うデータトラフィックの量に部分的に依存する。
【0062】
エントロピー符号化
前述のように、エントロピーコーディング時に、処理に関するデータがエントロピーエンコーダ(例えば、エントロピーコーダ214)に送られ得る。エントロピーエンコーダはビットストリームを出力することができ、それが、伝送チャネルを介して別の機器に伝送され得る。ビデオ復号プロセスにおいて、ビットストリームがエントロピーデコーダに送られ得る。エントロピーデコーダは、符号化ピクチャから、符号化ピクチャを構成するシンタックス要素を表す特定のシンボルを再構築するように構成されることができる。そのようなシンボルは、例えば、ブロックがコーディングされるモード(例えば、イントラモード、インターモード、双予測モード、マージサブモード又は他のサブモード)、イントラデコーダ又はインターデコーダによる予測のために使用される特定のサンプル又はメタデータを特定することができる予測情報(例えば、イントラ予測情報又はインター予測情報)、例えば量子化された変換係数の形態をした残差情報、及びこれらに類するものを含むことができる。
【0063】
例えば、HEVCにおいて、エントロピーコーダ/デコーダはコンテキスト適応バイナリ(2値)算術コーディング(CABAC)アルゴリズムを使用し得る。HEVCにおけるCABACエンジンは、64個の異なる代表的な確率状態の間でのテーブルベースの確率遷移プロセスを使用する。
【0064】
ビデオフレームコンテンツを記述するシンタックス要素をバイナリ算術コーディングに掛けることで、符号化ストリームをバイナリビンストリームとして得ることができる。CABAC時に、初期区間[0,1)が、整数乗数(例えば、512)によって引き伸ばされ、低確率(least probable)シンボルの確率(pLPS)が、それらの商を四捨五入することによって整数除数として提示され得る。そして、典型的な算術コーディングによる区間(インターバル)分割演算が、指定された分解能での整数演算を用いた近似計算として行われ得る。LPSに対応する更新された区間長(rLPS)を、rLPS=R*pLPSとして計算することができ、ここで、Rは、現在の区間長の値である。時間を節減して効率を高めるために、上の計算集約的な乗算演算を、事前計算された乗算結果が投入されたルックアップテーブル(LUT)によって置き換えることができ、従って、LPSに対応する更新された区間長(ivLpsRange)を、例えば、ivlLpsRange=rangeTabLps[pStateIdx][qRangeIdx]として、2つのインデックスpStateIdx及びqRangeIdxによって得ることができる。
【0065】
符号化/復号中に、確率値pLPSは、符号化/復号すべきビンの新しい値(binVal)が取得されるたびに再帰的に更新され得る。例えば、k番目のステップにおいて(すなわち、k番目のビンの符号化又は復号中に)、binValがLPSの値である場合に、より大きい値になるようにpLPSの新しい値を計算することができ、あるいは、binValが高確率(most probable;最確)シンボル(MPS)の値である場合に、より小さい値になるようにpLPSの新しい値を計算することができる。
【0066】
一部の実施形態において、pLPSは、6ビットpStateIdx変数によってインデックス付けられる64個の取り得る値のうちの1つとし得る。確率値を更新することは、インデックスpStateIdxを更新することによって達成されることができ、それは、計算能力を節減するため及び/又は効率を改善するために、事前計算されたテーブルから値をルックアップすることによって実行され得る。
【0067】
一部の実施形態において、コーディングエンジンの状態を表す範囲ivlCurrRangeが、新しい区間範囲の計算に先立って、4つの値のセットに量子化され得る。状態遷移は、64×4個の8ビット事前計算値の全てを含むテーブルを用いてivlCurrRange*pLPS(pStateIdx)の値を近似することで実施され得る。また、デコード決定も、事前計算されたLUTを用いて実施され得る。先ず、LUTを用いてivlLpsRangeが得られ、次いで、ivlLpsRangeを用いて、ivlCurrRangeが更新され、出力binValが計算される。
【0068】
一例として、VVCにおいて、確率は、確率インデックスpStateIdxによって線形に表され得る。従って、全ての計算が、LUT演算なしで、式を用いて行われ得る。確率推定の精度を改善するために、図4に示すように、多重仮説確率更新モデルを使用し得る。この例において、バイナリ算術コーダにおける区間細分割に使用されるpStateIdxは、2つの確率pStateIdx0及びpStateIdx1の組み合わせである。これら2つの確率が、各コンテキストモデルと関連付けられ、異なる適応レートで独立に更新される。各コンテキストモデルについてのpStateIdx0及びpStateIdx1の適応レートは、関連付けられたビンの統計に基づいて事前トレーニングされることができる。確率推定値pStateIdxは、2つの仮説からの推定値の平均とすることができる。
【0069】
図4は、算術復号エンジンにおける再正規化プロセス(RenomD)を含んだ、単一の決定を復号するためのフロー(DecodeDecision)の一例を示すフロー図である。一部の実施形態において、DecodeDecisionへの入力は、コンテキストテーブル(ctxTable)及びコンテキストインデックス(ctxIdx)である。変数ivlLpsRangeの値が、402に示すように導出される。ivlCurrRangeの現在の値が与えられて、変数qRangeIdxが、qRangeIdx=ivlCurrRange>>5として導出される。qRangeIdxと、ctxTable及びctxIdxに関連付けられたpStateIdx0及びpStateIdx1が与えられて、valMps及びivlLpsRangeが、pState=pStateIdx1+16*pStateIdx0、valMps=pState>>14、及びivlLpsRange=(qRangeIdx*((valMps?32767-pState:pState)>>9)>>1)+4として導出される。変数ivlCurrRangeが、ivlCurrRange-ivlLpsRangeに設定される。
【0070】
ivlOffsetがivlCurrRange以上である場合、変数binValが、1-valMpsに等しく設定され、ivlOffsetがivlCurrRangeだけデクリメントされ、そして、ivlCurrRangeがivlLpsRangeに等しく設定され、そうでない場合には、変数binValがvalMpsに等しく設定される。
【0071】
状態遷移プロセスにおいて、確率を更新するために、このプロセスへの入力は、現在のpStateIdx0及びpStateIdx1、並びに復号された値binValであり、このプロセスの出力は、ctxTable及びctxIdxに関連付けられたコンテキスト変数の更新されたpStateIdx0及びpStateIdx1である。404にて、変数shift0及びshift1が、ctxTable及びctxIdxと関連付けられたshiftIdx値から、shift0=(shiftIdx>>2)+2、shift1=(shiftIdx&3)+3+shift0として導出され、復号された値binValに応じて、ctxTable及びctxIdxと関連付けられた2つの変数pStateIdx0及びpStateIdx1の更新が、pStateIdx0=pStateIdx0-(pStateIdx0>>shift0)+(1023*binVal>>shift0)及びpStateIdx1=pStateIdx1-(pStateIdx1>>shift1)+(16383*binVal>>shift1)として導出される。
【0072】
一例として、VVC CABACは、各スライスの始めに呼び出される量子化パラメータ(QP)依存の初期化プロセスを有し得る。該スライスについてのルマQPの初期値を所与として、preCtxStateと表記されるコンテキストモデルの初期確率状態が、m=slopeIdx×5-45、n=(offsetIdx<<3)+7、及びpreCtxState=Clip3(1,127,((m×(QP-32))>>4)+n)によって導出され得る。
【0073】
一部の実施形態において、slopeIdx及びoffsetIdxは3ビットに制限され、トータルの初期化値は6ビット精度で表される。確率状態preCtxStateは、直接的に線形ドメインにて確率を表すことができる。従って、preCtxStateは、算術コーディングエンジンへの入力前に適切なシフト動作を必要とするのみであることができ、対数ドメインから線形ドメインへのマッピング及び256バイトテーブルが、事前定義されてメモリに格納/保存され得る。pStateIdx0及びpStateIdx1は、pStateIdx0=preCtxState<<3及びpStateIdx1=preCtxState<<7によって取得され得る。
【0074】
一部の実施形態において、CABACアルゴリズムは、2つの取り得る文字/シンボル(例えば、“0”及び“1”)を含むものであるバイナリ(2値)基底を用い得る。バイナリベースの算術コーディングアルゴリズムでは、2つの取り得る文字/シンボルは、低確率シンボル(least probable;LPS)及び高確率(最確)シンボル(most probable;MPS)とも表記され得る。
【0075】
一部の実施形態において、エントロピーエンコーダ又はデコーダは、M個の取り得る文字/シンボルを含むものであるM値基底の算術アルゴリズムを使用してもよい。例えば、Mは、2と16との間の任意の整数値とし得る。例えば、Mが5に等しい場合、M値基底は、“0”、“1”、“2”、“3”、及び“4”として表され得る5つの取り得る文字/シンボルを含む。
【0076】
M値算術コーディングエンジンは、シンタックス要素をエントロピーコーディングするために使用される。各シンタックス要素は、M個の要素のアルファベットと関連付けられる。エンコーダ又はデコーダへの入力として、コーディングコンテキストは、M個の確率のセットを有するM値シンボルのシーケンスを含み得る。M個の確率の各々が、M値シンボルの各々に対応することができ、累積分布関数(CDF)によって表され得る。
【0077】
M値シンボルの累積分布関数は、C=[c,c,…,c(M-2),c(M-1)]と表記されることができる。M値シンボルの累積分布関数は、M個の15ビット整数の配列によって表されてもよく、ここで、c(M-1)=215であり、c/32768は、nは0からM-1までの整数であるとして、シンボルがn以下である確率である。
【0078】
一部の実施形態において、M個の確率(例えば、累積分布関数の配列)は、各シンタックス要素をコーディング/解析した後に更新される。一部の実施形態において、M個の確率は、各M値シンボルを符号化/復号した後に更新される。例えば、M=4であるの場合、累積分布関数の配列は[c,c,c,c]を含む。
【0079】
一部の実施形態において、M個の確率の更新は、次式:
【数1】
に従って実行され、ここで、symbolは、現在符号化/復号されているM値シンボルであり、αは、そのシンボルが符号化又は復号された回数(例えば、32の最大値まで)に基づいて適応する確率更新レートであり、mは、CDFにおける要素のインデックスである。αのこの適応は、シンタックス要素をコーディング/解析することの始めにおいて、より高速な確率更新を可能にし得る。例えば、M=5であり、現在復号されているM値シンボルが“3”である場合、m∈[0,symbol)はm∈[0,3)となることができ、mは、0を含んで0と、3を除いて3との間の任意の整数を含み、m∈[symbol,M-1)はm∈[3,4)となることができ、mは、3を含んで3と、4を除いて4との間の任意の整数を含む。
【0080】
一部の実施形態において、M値算術コーディングプロセスは、従来の算術コーディングエンジン設計に従い得るが、15ビット確率値の最上位9ビットのみが算術エンコーダ/デコーダに入力される。シンボルに関連付けられた確率更新レートαは、ビットストリームを解析するときに、関連付けられたシンボルの出現数に基づいて計算され、αの値は、フレーム又はタイルの開始時に、以下の式を用いてリセットされる。
【0081】
一例として、
【数2】
であり、ここで、countは、ビットストリームをコーディング/解析するときの、関連付けられたシンボルの出現の数である。上の式によって示されるように、確率更新レートは、初期(カウントが比較的小さいとき、例えば、16)に、より大きい値を持ち、その後(カウントが比較的大きいとき、例えば、32出現後、又は40出現後)に飽和する。
【0082】
レートαを更新することは、特定のシンボル確率が0近くに減少された、強くバイアスされた分布につながり得る。0に近い確率は、BDレート損失を生じさせ得る。この影響に対抗するために、正則化アプローチを使用することができ、確率(p)が閾値(Pthr)より小さい場合の各確率更新の最後に、pがPthrまで動かされるように、全ての確率に正則化項が適用される。正則化項は、均一分布から取ることができ、シンタックス要素のサンプル空間に依存し得る。
【0083】
図5のFIG.5A-FIG.5Bは、一部の実施形態に従った、最小確率を強制するアプローチ例を示す図である。一例として、AV1において、最小確率Pminは、FIG.5Aに示すように、算術コーディングに供給される確率をガードするために適用される(“最小ガード”アプローチと称されることもある)。FIG.5Aに示す最小ガードアプローチでは、後続のモデル更新がステージnでpを増加させ、それがpを0の方に更に押しのけており、これは潜在的に、モデル誤差の存在下でコーディング効率の損失を招き得る。
【0084】
最小ガードアプローチの代わりとして正則化を使用することができ、それをFIG.5Bに示す。例えば、更新の最後に、Pminを下回る確率、例えばpとして、がある場合、全ての確率を同時に調整するための正則化項として均一分布を適用することができる。
【0085】
M値均一分布のCDFは、
【数3】
として定義されることができる。斯くして、正則化はpを、
【数4】
を通じて、Pminへと動かし、これは、
【数5】
をもたらす。Pmin≪1/Mであり、且つ
【数6】
がPminより僅かに上であることを許し得るので、更新レートαをMPminとして近似することができる。これは、
【数7】
というCDF正則化となる。明らかなことには、これらの式を用いてα又は
【数8】
のいずれかを計算することは除算演算を伴う。
【0086】
図6は、一部の実施形態に従ったビデオをコーディングする方法600を示すフロー図である。方法600は、制御回路と、該制御回路による実行のための命令を格納したメモリと、を有するコンピューティングシステム(例えば、サーバシステム112、ソース機器102、又は電子機器120)にて実行され得る。一部の実施形態において、方法600は、コンピューティングシステムのメモリ(例えば、メモリ314)に格納された命令を実行することによって実行される。
【0087】
システムは、複数のシンタックス要素を有するビデオデータを取得し(602)、該複数のシンタックス要素は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含む。例えば、システムは、例えばチャネル218などの通信チャネルからビデオデータを取得する。システムは、第1のシンタックス要素のM個の要素についてのそれぞれの生起確率を取得する(604)。例えば、システムは、ピクチャメモリ352からそれぞれの確率を取得し、あるいは、それぞれの確率を生成し、あるいは、リモートデバイスから(例えば、チャネル218を介して)それぞれの確率を取得する。システムは、上記それぞれの生起確率に従ってビデオデータの第1部分をエントロピーコーディングする(606)。例えば、システムは、エントロピーコーダ214を用いて第1部分を符号化し、及び/又はパーサ254を用いて第1部分を復号する。ビデオデータの第1部分をエントロピーコーディングしている間に、システムは第1のシンタックス要素に遭遇する(608)(例えば、コーディングモジュール320が第1のシンタックス要素に遭遇する)。例えば、第1のシンタックス要素は、M個の要素からの特定の要素を有する。システムは、(例えば、コーディングモジュール320を用いて)第1のシンタックス要素に従ってM個の要素についての生起確率を更新する(610)。例えば、システムは、インスタンスの特定の要素についての生起確率を増加させ、他の要素についての生起確率を減少させる。M個の要素についての更新された確率のうちの少なくとも1つが閾確率値未満であることに従って(612)、システムは、(例えば、コーディングモジュール320を用いて)更新された生起確率に確率正則化を適用することによって、M個の要素についての正則化された生起確率を決定し(614)、該確率正則化は除算演算を含まない。M個の要素についての更新された確率のうちの少なくとも1つが閾確率値未満であることに従って(612)、システムは、(例えば、コーディングモジュール320を用いて)正則化された生起確率に従ってビデオデータの後続部分をエントロピーコーディングする(616)。M個の要素についての更新された確率の各々が上記閾確率値以上であることに従って、システムは、(例えば、コーディングモジュール320を用いて)更新された生起確率に従ってビデオデータの第2部分をエントロピーコーディングする(618)。
【0088】
一部の実施形態において、最小確率値Pthrは予め定められており、エントロピーコーディング中に確率を更新するとき、シンタックスRを符号化又は復号した後に、候補確率更新がテストされ、そして、候補確率更新が、少なくとも1つの
【数9】
がPthrより低いものである[s,s,…,s,…,s]内のシンボルについての確率値:
【数10】
を生じさせた場合に、正則化後に確率がPthr以上の値になるように更に調整されるように、現在のシンタックスRに関連付けられた
【数11】
に対する除算フリーの正則化が適用される。一部の実施形態において、Rは、シンボル空間ε[s,s,…,s,…,s]、確率ε[p,p,…,p,…,p]を有するM値シンタックス要素に対応する。Mは、以下に限られないが、2から16の範囲を含む値をとることができ、k≦Mである。
【0089】
逆確率更新レートβが、下の式1に示すように計算され得る:
【数12】
一部の実施形態において、βを計算する代わりに、下の式2に示すように、βを近似するβ’を計算するために代わりの除算フリー演算が使用される:
【数13】
式2において、Sは、nsymbols(現在のシンタックスRのシンボル値の数)に依存する所定の値であり、
【数14】
は、Pthr及び
【数15】
の関数であり、nは所定の値である。一部の実施形態において、関数
【数16】
の出力は、正の整数(例えば、1、2、3、…、N)を含む(又は、からなる)。一部の実施形態において、関数
【数17】
の出力は、2の累乗である正の整数を含み(又は、からなり)、それ故に、
【数18】
との乗算を右シフト演算として実装することができる。一部の実施形態において、関数
【数19】
は、テーブルルックアッププロセスであり、ルックアップテーブルのインデックスが、
【数20】
及びPthrであり、出力は、インデックスによって特定されるルックアップテーブル内の値である。
【0090】
CDFエントリは、下の式3に示すように調整されることができる:
【数21】
一部の実施形態において、
【数22】
を計算する代わりに、下の式4に示すように、それを近似する
【数23】
を計算するために代わりの除算フリー演算が適用される:
【数24】
式4において、Kは、nsymbols(現在のシンタックスRのシンボル値の数)に依存する所定の値であり、mは所定の値である。
【0091】
一部の実施形態において、Pthrより低い確率が特定された場合、CDF内のエントリが所定の順序でスキャンされ、Pthrより低い確率と関連付けられたエントリが、オフセットによって更に調整される。一部の実施形態において、該オフセットは、該オフセットによってCDF内のエントリを調整することを適用した後に、関連する確率がPthrに近くなる又は等しくなる値である。
【0092】
一例において、Pthrは128/32768として定められ、4つのシンボル値をもつシンタックスについて、確率更新後、CDFは{100,10000,20000,32768}であり、ここで、4つのシンボルの確率は{100/32768,(10000-100})/32768,(20000-10000)/32768,(32768-20000)/32768}である。この例において、システムは、第1のシンボルの確率(100/32768)がPthrより低いことを特定し、確率を{128,10000,20000,32768}に調整する。調整後、1より低い関連確率を持つシンボルはなく、調整プロセスが終了される。
【0093】
一部の実施形態において、所定のスキャンは、CDF内の最初のエントリから開始し、CDF内の最後のエントリに向かって進む。一部の実施形態において、所定のスキャンは、CDF内の最後のエントリから開始し、CDF内の最初のエントリに向かって進む。一部の実施形態において、所定のスキャンは、Pthrより低い確率に関連付けられた最初のCDFエントリから開始し、最後のエントリに向かって進む。一部の実施形態において、所定のスキャンは、Pthrより低い確率に関連付けられた最初のCDFエントリから開始し、最初のエントリに向かって進む。
【0094】
図6は、幾つかの論理ステージを特定の順序で示しているが、順序依存ではないステージは並べ替えられてもよく、また、他のステージが組み合わされたり分解されたりしてもよい。特に言及されていない何らかの並べ替え又は他のグループ化が当業者には明らかになるのであり、ここで提示された順序付け及びグループ化は網羅的ではない。また、認識されるべきことには、様々なステージが、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせで実装され得る。
【0095】
次に、一部の実施形態例を参照する。以下において、Rは、シンボル空間ε[s,s,…,s,…,s]、確率ε[p,p,…,p,…,p]を有するM値シンタックス要素に対応する。Mは、以下に限られないが、2から16の範囲を含む値をとることができ、k≦Mである。
【0096】
(A1)一態様において、一部の実施形態はビデオコーディングの方法(例えば、方法600)を含む。一部の実施形態において、当該方法は、メモリと制御回路とを有するコンピューティングシステム(例えば、サーバシステム112)にて実行される。一部の実施形態において、当該方法はコーディングモジュール(例えば、コーディングモジュール320)にて実行される。一部の実施形態において、当該方法は、エントロピーコーダ(例えば、エントロピーコーダ214)にて実行される。一部の実施形態において、当該方法はパーサ(例えば、パーサ254)にて実行される。当該方法は、(i)複数のシンタックス要素を有するビデオデータを取得し、該複数のシンタックス要素は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含み、(ii)第1のシンタックス要素のM個の要素についてのそれぞれの生起確率を取得し、(iii)それぞれの生起確率に従ってビデオデータの第1部分をエントロピーコーディングし、(iv)ビデオデータの第1部分をエントロピーコーディングしている間に、第1のシンタックス要素に遭遇し、(v)第1のシンタックス要素に従ってM個の要素についての生起確率を更新し、(vi)M個の要素についての更新された確率のうちの少なくとも1つが閾確率値(例えば、Pthr)未満であることに従って、(a)更新された生起確率に確率正則化を適用することによって、M個の要素についての正則化された生起確率を決定し、該確率正則化は除算演算を含まず、(b)正則化された生起確率に従ってビデオデータの第2部分をエントロピーコーディングし、(vii)M個の要素についての更新された確率の各々が上記閾確率値以上であることに従って、更新された生起確率に従ってビデオデータの第2部分をエントロピーコーディングする、ことを含む。
【0097】
例えば、エントロピーコーダは、シンタックス要素の各インスタンスが遭遇/コーディングされた後に確率を更新する適応算術コーダであり、又はそれを含む。例えば、コーディングプロセス中にシンタックス要素の第1のインスタンスに遭遇する。シンタックス要素の第1のインスタンスがsである場合、sに関連付けられた確率(p)が増加され、他の要素(例えば、s及びs)に関連付けられた確率は減少される。コーディングプロセスが続くときに、シンタックス要素の第2のインスタンスに遭遇する。シンタックス要素の第2のインスタンスがsである場合、それに従って、sに関連付けられた確率が増加される。一部の実施形態において、確率は、アルファベットサイズに基づく更新係数を用いて、再帰的スケーリングによって適応される。
【0098】
(A2)A1の一部の実施形態において、M個の要素の数は2から16の範囲内である。一部の実施形態において、M個の要素の数は16より大きい。一部の実施形態において、該範囲は、コーディングプロトコル、標準、及び/又は構成に基づいて予め定められる。
【0099】
(A3)A1又はA2の一部の実施形態において、M個の要素のそれぞれの生起確率は、累積分布関数によって表される。例えば、図5のFIG.5B及び図6に関して前述したCDFである。
【0100】
(A4)A1乃至A3のいずれかの一部の実施形態において、M個の要素についての正則化された生起確率における各確率は閾確率値以上である。一部の実施形態において、正則化プロセスは、各生起確率が閾確率値以上である(例えば、各確率がPthr以上である)ことを確保するように構成される。
【0101】
(A5)A1乃至A4のいずれかの一部の実施形態において、閾確率値は、第1のシンタックス要素の1つ以上のプロパティに基づいて一組の閾確率値から選択される。例えば、閾確率値は、M個の要素の数に基づき得る。
【0102】
(A6)A1乃至A5のいずれかの一部の実施形態において、M個の要素についての正則化された生起確率を決定することは、逆確率更新レートを決定することを含む。例えば、上の式2に示した逆確率更新レートである。
【0103】
(A7)A6の一部の実施形態において、(i)逆確率更新レートは、第1の所定値に関数の出力を乗算することによって決定され、(ii)第1の所定値は、第1のシンタックス要素のためのシンボル値の数に基づき、(iii)関数は、閾確率値と、M個の要素についての更新された確率のうちの閾確率値未満である更新された確率の値とに基づく。
【0104】
(A8)A7の一部の実施形態において、関数はルックアップテーブルにアクセスし、閾確率値と、閾確率値未満である更新された確率の値とが、ルックアップテーブルをインデックス付けるために使用される。
【0105】
(A9)A7又はA8の一部の実施形態において、関数の出力は、正の整数(例えば、1、2、…、N)である。
【0106】
(A10)A7乃至A9のいずれかの一部の実施形態において、第1の所定値に関数の出力を乗算することは、(例えば、式2に関して前述したように)右シフト演算を実行することを有する。
【0107】
(A11)A1乃至A10のいずれかの一部の実施形態において、M個の要素についての正則化された生起確率を決定することは、正則化された累積分布関数(CDF)についての値を決定することを含む。例えば、正則化されたCDFの値は、上の式4に従って更新される。
【0108】
(A12)A11の一部の実施形態において、正則化されたCDFについての値は、逆確率更新レートに第2の所定値を乗算することによって決定され、第2の所定値は、第1のシンタックス要素のためのシンボル値の数に基づく。
【0109】
(A13)A11の一部の実施形態において、正則化されたCDFについての値は、逆確率更新レートに、第2の所定値と、M個の要素についてのそれぞれの生起確率のCDFとを乗算することによって決定される。
【0110】
(A14)A1乃至A13のいずれかの一部の実施形態において、更新された生起確率に確率正則化を適用することは、M個の要素についてのそれぞれの生起確率のCDFのエントリを所定の順序でスキャンすることを含む。一部の実施形態において、CDFは、更新されてから、更新されたCDFのエントリを所定の順序でスキャンすることによってテストされる。
【0111】
(A15)A14の一部の実施形態において、スキャンすることは、スキャンされた更新された生起確率が閾確率値以上であることに従って終了される。
【0112】
(A16)A14又はA15の一部の実施形態において、所定の順序は、CDFの最初のエントリからCDFの最後のエントリに向かってである、又はCDFの最後のエントリからCDFの最初のエントリに向かってである。
【0113】
(A17)A14の一部の実施形態において、所定の順序は、閾確率値未満の生起確率を持つCDFのエントリで開始する。
【0114】
(A18)A1乃至A17のいずれかの一部の実施形態において、更新された生起確率に確率正則化を適用することは、M個の要素についての更新された確率のうちの閾確率値未満の更新された確率の値にオフセットを適用することを含む。
【0115】
(A19)A18の一部の実施形態において、更新された確率の値にオフセットを適用した後、更新された確率の値は、閾確率値以上である。
【0116】
(A20)A18又はA19の一部の実施形態において、オフセットは、更新された確率値が、M個の要素のうちの2番目の要素の確率値より低くなるように選択される。例えば、シンタックスRのエントロピーコーディング中に個々の仮説の確率を更新するとき、確率更新が、少なくとも1つの
【数25】
が所定の最小確率値Pthrより低いものである[s,s,…,s,…,s]内のシンボルについての確率値:
【数26】
及びCDF値[c,c,…,c,…,cM-1,1]
を生じさせる場合に、条件:ck-1<ck+1-Pthrが満たされることに基づいて、
【数27】
をPthrに向けて動かし戻すようにオフセットが付加される。
【0117】
(A21)A1乃至A20のいずれかの一部の実施形態において、第2部分は、Mが閾値数未満であるという決定に従って、正則化された生起確率に従ってエントロピーコーディングされる。例えば、確率正則化は、予め設定された閾値数未満(例えば、12、10、8、6、4、又は2未満)の要素を持つシンタックス要素に対してのみ実行される。この例において、システムは、予め設定された閾値数より多い要素を持つシンタックス要素に対して正則化演算を適用することを見送る。
【0118】
(B1)他の一態様において、一部の実施形態はビデオコーディングの方法を含む。一部の実施形態において、当該方法は、メモリと制御回路とを有するコンピューティングシステム(例えば、サーバシステム112)にて実行される。一部の実施形態において、当該方法はコーディングモジュール(例えば、コーディングモジュール320)にて実行される。一部の実施形態において、当該方法は、エントロピーコーダ(例えば、エントロピーコーダ214)にて実行される。一部の実施形態において、当該方法はパーサ(例えば、パーサ254)にて実行される。当該方法は、(i)複数のシンタックス要素を有するビデオデータを取得し、該複数のシンタックス要素は、M個の要素の対応するアルファベットを有する第1のシンタックス要素を含み、(ii)第1のシンタックス要素のM個の要素についてのそれぞれの生起確率を取得し、(iii)それぞれの生起確率に従ってビデオデータの第1部分をエントロピーコーディングし、(iv)ビデオデータの第1部分をエントロピーコーディングしている間に、第1のシンタックス要素に遭遇し、(v)第1のシンタックス要素に従ってM個の要素についての生起確率を更新し、(vi)M個の要素についての更新された確率のうちの少なくとも1つが閾確率値未満であることに従って、上記それぞれの生起確率に従ってビデオデータの第2部分をエントロピーコーディングし、(vii)M個の要素についての更新された確率の各々が上記閾確率値以上であることに従って、更新された生起確率に従ってビデオデータの第2部分をエントロピーコーディングする、ことを含む。
【0119】
一部の実施形態において、最小確率値Pthrは予め定められており、エントロピーコーディング中に確率を更新するとき、シンタックスRを符号化又は復号した後に、候補確率更新がテストされ、そして、候補確率更新が、少なくとも1つの
【数28】
がPthrより低いものである[s,s,…,s,…,s]内のシンボルについての確率値:
【数29】
を生じさせた場合、候補確率更新は適用されず、このシンタックスを符号化又は復号した後に[p,p,…,p,…,p]は更新されず、そうでない場合、このシンタックスを符号化又は復号した後に確率が、
【数30】
に更新される。
【0120】
(B2)B1の一部の実施形態において、M個の要素の数は2から16の範囲内である。一部の実施形態において、M個の要素の数は16より大きい。一部の実施形態において、該範囲は、コーディングプロトコル、標準、及び/又は構成に基づいて予め定められる。
【0121】
(B3)B1又はB2の一部の実施形態において、M個の要素のそれぞれの生起確率は、累積分布関数によって表される。例えば、図5のFIG.5B及び図6に関して前述したCDFである。
【0122】
(B4)B1乃至B3のいずれかの一部の実施形態において、閾確率値は、第1のシンタックス要素の1つ以上のプロパティに基づいて一組の閾確率値から選択される。例えば、閾確率値は、M個の要素の数に基づき得る。
【0123】
(B5)A1乃至B4のいずれかの一部の実施形態において、第2部分は、Mが閾値数未満であるという決定に従って、上記それぞれの生起確率に従ってエントロピーコーディングされる。例えば、更新された確率を使用すべきかを決定することは、予め設定された閾値数未満(例えば、12、10、8、6、4、又は2未満)の要素を第1のシンタックス要素が持つかに基づく。
【0124】
ここで説明された方法は、別々に使用されてもよいし、何らかの順序で組み合わされてもよい。これらの方法は各々、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実装され得る。一部の実施形態において、処理回路は、非一時的コンピュータ読み取り可能媒体に格納されたプログラムを実行する。
【0125】
一部の実施形態において、用語“ブロック”は、予測ブロック、コーディングブロック、又はコーディングユニット(CU)として解釈され得る。一部の実施形態において、用語“ブロック”は、変換ブロックを指して使用される。一部の実施形態において、用語“ブロックサイズ”は、ブロック幅若しくは高さ、幅及び高さの最大値、幅及び高さの最小値、面積サイズ(幅×高さ)、及び/又はブロックのアスペクト比(幅:高さ又は高さ:幅)のいずれかを指す。一部の実施形態において、より速い更新レートは、更新レートのより大きい値、及び/又はより小さい確率更新ウィンドウサイズを指す。一部の実施形態において、より遅い更新レートは、更新レートのより小さい値、及び/又はより大きい確率更新ウィンドウサイズを指す。
【0126】
他の一態様において、一部の実施形態は、制御回路(例えば、制御回路302)と、該制御回路に結合されたメモリ(例えば、メモリ314)とを含むコンピューティングシステム(例えば、サーバシステム112)を含み、メモリは、制御回路によって実行されるように構成された1つ以上の命令セットを格納し、該1つ以上の命令セットは、ここで説明された方法(例えば、上のA1-A21及びB1-B5)のうちのいずれかを実行するための命令を含む。
【0127】
更なる他の一態様において、一部の実施形態は、コンピューティングシステムの制御回路による実行のための1つ以上の命令セットを格納した非一時的コンピュータ読み取り可能記憶媒体を含み、該1つ以上の命令セットは、ここで説明された方法(例えば、上のA1-A21及びB1-B5)のうちのいずれかを実行するための命令を含む。
【0128】
理解されることには、様々な要素を説明するためにここでは用語“第1”、“第2”などが使用されていることがあるが、それらの要素はこれらの用語によって限定されるべきでない。これらの用語は、1つの要素を別の要素から区別するためにのみ使用されている。
【0129】
ここで使用される用語は、特定の実施形態を説明することのみを目的としており、請求項を限定することは意図していない。実施形態の説明及び添付の請求項において使用されるとき、単数形の“a”、“an”、及び“the”は、文脈が別のことを明確に示していない限り、複数形も同様に含むことを意図している。これまた理解されることには、ここで使用される用語“及び/又は”は、関連して列挙されるアイテムのうちの1つ以上のありとあらゆる可能な組み合わせを指し、それらを包含する。更に理解されることには、用語“含む”及び/又は“含んでいる”は、この明細書中で使用されるとき、述べられるフィーチャ、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ以上の他のフィーチャ、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループの存在又は追加を排除しない。
【0130】
ここで使用されるとき、用語“場合”は、文脈に応じて、述べられる先行条件が真である“ときに”、又は“それを受けて”、又は“そう決定することに応答して”、又は“その決定に従って”、又は“そう検出したことに応答して”を意味するように解釈されることができる。同様に、“[述べられる先行条件が真である]と決定された場合”、又は“[述べられる先行条件が真である]場合”、又は“[述べられる先行条件が真である]とき”という句は、文脈に応じて、述べられる先行条件が真であることを“決定したことを受けて”、又は“決定したことに応答して”、又は“決定に従って”又は“検出したことを受けて”、又は“検出したことに応答して”を意味するように解釈されることができる。
【0131】
以上の記載は、説明の目的で、特定の実施形態を参照して記述されている。しかしながら、上での例示的な説明は、網羅的であることや、開示されたままの形態に請求項を限定することを意図していない。上の教示に鑑みて数多くの変更及び変形が可能である。これらの実施形態は、動作の原理及び実用的な用途を最もうまく説明し、それによって他の当業者ができるようにするために選択されて説明されたものである。
図1
図2A
図2B
図3
図4
図5
図6
【国際調査報告】