(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】IBCマージ・リストのために使用する符号化器、復号器、及び対応する方法
(51)【国際特許分類】
H04N 19/52 20140101AFI20231219BHJP
H04N 19/593 20140101ALI20231219BHJP
【FI】
H04N19/52
H04N19/593
(21)【出願番号】P 2021569933
(86)(22)【出願日】2020-05-20
(86)【国際出願番号】 CN2020091136
(87)【国際公開番号】W WO2020238706
(87)【国際公開日】2020-12-03
【審査請求日】2021-11-24
(31)【優先権主張番号】PCT/CN2019/088335
(32)【優先日】2019-05-24
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,ホアンバン
(72)【発明者】
【氏名】ガオ,ハン
(72)【発明者】
【氏名】ヤン,ハイタオ
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】欧州特許出願公開第2728882(EP,A1)
【文献】特表2019-526988(JP,A)
【文献】米国特許出願公開第2016/0100189(US,A1)
【文献】CHEN, Huanbang et al.,Non-CE8: On IBC Motion Vector List Construction,JVET-O0162 (version 2),ITU,2019年07月05日,pp.1-6,[online],[retrieved on 2023-07-25],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/15_Gothenburg/wg11/JVET-O0162-v2.zip>,JVET-O0162-v1.docx
【文献】BROSS, Benjamin et al.,Versatile Video Coding (Draft 5),JVET-N1001 (version 6),ITU,2019年05月23日,pp.40-43, 53-58, 87-94, 107-114, 231-240,[online],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/14_Geneva/wg11/JVET-N1001-v6.zip>,JVET-N1001-v6.docx
【文献】JANG, Hyeongmun et al.,AhG2 : Editorial Suggestion on the Text Specification for Inter and IBC Mode,JVET-N0468 (version 1),ITU,2019年03月13日,pp.1-12,JVET-N0468.docx
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00-19/98
(57)【特許請求の範囲】
【請求項1】
復号デバイスによって実装されるコーディングの方法であって、
現在のブロックのモーション・ベクトル予測候補をマージする最大数の値を得ることであって、前記現在のブロックは、ブロック内コピー(IBC)モードを使用して予測される、ことと、
前記現在のブロックのモーション・ベクトル予測器(MVP)候補の最大数の前記値が1に等しい場合に、mvp_l0_flag[x0][y0]の値をゼロに設定することとであって、前記mvp_l0_flag[x0][y0]は、リスト0のモーション・ベクトル予測器インデックスを指定し、x0、y0は、ピクチャの左上のルマ・サンプルに対する考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定し、前記mvp_l0_flag[x0][y0]の前記値は、ビットストリームから解析されない、設定することと、
前記mvp_l0_flag[x0][y0]及び候補リストにしたがって前記現在のブロックのモーション・ベクトルを得ることと、
前記現在のブロックの前記モーション・ベクトルにしたがって前記現在のブロックの予測サンプル値を得ることと、
前記現在のブロックの前記MVP候補の最大数の前記値が1より大きい場合に、前記ビットストリームから前記mvp_l0_flag[x0][y0]の前記値を解析すること、を含む、方法。
【請求項2】
前記mvp_l0_flag[x0][y0]の前記値は、コーディングユニットレベルから解析される、請求項1に記載の方法。
【請求項3】
前記現在のブロックの前記MVP候補の最大数の前記値は、ビットストリームからのシーケンス・パラメータ・セットspsレベルを解析することによって得られる、請求項1又は2に記載の方法。
【請求項4】
前記現在のブロックの前記MVP候補の最大数の前記値は、ビットストリームからスライス・レベル、タイル・グループ・レベル又はppsレベルで構文要素を解析することによって得られる、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記候補リストは、前記現在のブロックに隣接する少なくとも1つの隣接ブロック、及び履歴ベースのモーション・ベクトル予測子(HMVP)リストに基づいて得られ、前記少なくとも1つの隣接ブロックは、IBCモードを使用して予測される、請求項1~4のいずれか一項に記載の方法。
【請求項6】
請求項1~5のいずれか一項に記載の方法を実施するための処理回路を含む、復号器。
【請求項7】
前記復号デバイスによって実行されるときに、前記復号デバイスに、請求項1~5のいずれか一項に記載の方法を実行
させる、コンピュータ・プログラム。
【請求項8】
復号器であって、
1つ以上のプロセッサと、
前記プロセッサに結合され、前記プロセッサによる実行のためのプログラミングを記憶する非一時的なコンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行される場合に、請求項1~5のいずれか一項に記載の方法を実施するように前記復号器を設定する、非一時的なコンピュータ可読記憶媒体と、を含む、復号器。
【発明の詳細な説明】
【技術分野】
【0001】
本出願(開示)の実施形態は、一般に、ピクチャ処理の分野に関し、より詳細には、IBC予測のために使用されるマージ・リストに関係する。
【背景技術】
【0002】
ビデオ・コーディング(ビデオ符号化及び復号)は、広範囲のデジタル・ビデオ・アプリケーション、例えば、放送デジタルTV、インターネット及びモバイル・ネットワークを介したビデオ伝送、ビデオチャット、ビデオ会議などのリアルタイムの会話アプリケーション、DVD及びブルーレイ・ディスク、ビデオ・コンテンツの収集及び編集システム、並びにセキュリティ・アプリケーションのカムコーダに使用される。
【0003】
比較的短いビデオでさえ描写するために必要とされるビデオ・データの量は、相当なものであり、これは、データがストリーム化されるか、又は他の方法で限定された帯域幅容量を有する通信ネットワークを介して通信される場合に、困難を生じることがある。したがって、ビデオ・データは、一般に、現代の電気通信ネットワークを介して通信される前に圧縮される。また、メモリリソースが制限されることがあるため、ビデオが記憶デバイスに記憶される場合に、ビデオのサイズも問題となる可能性がある。ビデオ圧縮デバイスは、しばしば、伝送又は記憶の前にビデオ・データをコーディングするためにソースにおいてソフトウェア及び/又はハードウェアを使用し、それによってデジタル・ビデオ画像を表すのに必要なデータ量を減少させる。次いで、圧縮されたデータは、ビデオ・データを復号するビデオ解凍デバイスによって宛先で受信される。ネットワークリソースが限られており、より高いビデオ品質の要求が絶えず増加しているため、ピクチャ品質にほとんど犠牲を払わずに圧縮比を改善する改善された圧縮及び解凍技術が望ましい。
【発明の概要】
【0004】
本出願の実施形態は、独立請求項にしたがって符号化及び復号するための装置及び方法を提供する。
前述の目的及び他の目的は、独立請求項の主題事項によって達成される。
さらなる実装は、従属請求項、明細書及び図面から明らかである。
【0005】
本発明の第1の態様は、復号デバイスによって実装されるコーディング方法を提供し、その方法は、現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、ことと、現在のブロックのMVP候補の最大数の値が1に等しい場合に、MVPインデックスの値をゼロに設定することと、MVPインデックス及び候補リストにしたがって現在のブロックのモーション・ベクトルを得ることと、現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
【0006】
本発明の実施形態によれば、IBCブロックのモーション・ベクトル(又はブロック・ベクトルとも呼ばれる)は、1つのMVP候補のみが存在する状況において、リスト内の第1のインデックスにしたがって得られる。したがって、MVPインデックスの値は復号器側に送信する必要がなく、IBCブロックのモーション・ベクトルが定義され、ビットストリームが低減される。
【0007】
図10に示すように、復号デバイスによって実施されるコーディング方法が開示されており、その方法は、
S101:現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、得ることを含む。
【0008】
いくつかの実施形態では、モーション・ベクトル予測MVP候補をマージする最大数の値は、six_minus_max_num_ibc_merge_candにしたがって表される。
【0009】
sps_ibc_enabled_flagが1に等しい場合に、six_minus_max_num_ibc_merge_candは、SPSでサポートされているIBCマージング・ブロック・ベクトル予測(BVP)候補の最大数を6から差し引いた値を指定する。six_minus_max_num_ibc_merge_candの値は、0~5の範囲とする。
IBCマージングBVP候補の最大数MaxNumIbcMergeCandは、以下のように導出される。
【0010】
【数1】
1に等しいsps_ibc_enabled_flagは、IBC予測モードがコーディングされたレイヤ・ビデオ・シーケンスCLVSにおけるピクチャの復号に使用されてもよいことを指定する。0に等しいsps_ibc_enabled_flagは、IBC予測モードがCLVSに使用されないことを指定する。sps_ibc_enabled_flagが存在しない場合に、それは0に等しいと推定される。
【0011】
別の例では、ブロックのIBCモードは、フラグpred_mode_ibc_flagでシグナリングされ、1に等しいvalue of pred_mode_ibc_flagは、現在のコーディング・ユニット(コーディング・ブロック)がIBC予測モードでコーディングされることを指定する。0に等しいpred_mode_ibc_flagの値は、現在のコーディング・ユニット(コーディング・ブロック)がIBC予測モードでコーディングされないことを指定する。
一例では、pred_mode_ibc_flagが1に等しい場合に、変数CuPredMode[chType][x][y]は、x=x0..x0+cbWidth-1及びy=y0..y0+cbHeight-1に対して、MODE_IBCに等しく設定される。例えば、CuPredMode[0][xCb][yCb]がMODE_IBCに等しいことは、現在のブロックがブロック内コピーIBCモードを使用して予測されることを表し、(xCb,yCb)は、現在のピクチャの左上のルマ・サンプルに対する現在のルマ・コーディング・ブロックの左上のサンプルを指定する。
【0012】
本発明の実施形態又は実装において、IBCモードの場合、ブロック・ベクトルは、モーション・ベクトルと同じ技術的手段を有する。
【0013】
S102:現在のブロックのMVP候補の最大数の値が1に等しい場合に、MVPインデックスの値をゼロに設定する。
一実施形態では、MVPインデックス構文mvp_l0_flagは、以下のように定義される。
mvp_l0_flag[x0][y0]は、リスト0のモーション・ベクトル予測器インデックスを指定し、x0、y0は、ピクチャの左上のルマ・サンプルに対する考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定する。
mvp_l0_flag[x0][y0]が存在しない場合に、それは0に等しいと推定される。
一例では、
コーディング・ユニット構文:
【0014】
【0015】
S103:MVPインデックス及び候補リストにしたがって現在のブロックのモーション・ベクトルを得る。
例えば、モーション・ベクトルを得るために、
このプロセスへの入力は、
現在のピクチャの左上のルマ・サンプルに対する現在のルマ・コーディング・ブロックの左上のサンプルのルマ位置(xCb,yCb)、
ルマ・サンプルにおける現在のコーディング・ブロックの幅を指定する変数cbWidth、
ルマ・サンプルにおける現在のコーディング・ブロックの高さを指定する変数cbHeightである。
このプロセスの出力は、
ルマ・ブロック・ベクトル1/16サンプル精度bvLである。
【0016】
ルマ・ブロック・ベクトルbvLは、以下のステップによって導出される。
1. IsGt4by4がTRUEに等しい場合(例では、変数IsGt4by4はIsGt4by4=(cbWidth*cbHeight)>16のように導出される)に、隣接するコーディング・ユニットからの空間ブロック・ベクトル候補の導出プロセスは、ルマ・コーディング・ブロック位置(xCb,yCb)、ルマ・コーディング・ブロック幅cbWidth及び高さcbHeightを入力として呼び出され、出力は、可用性フラグavailableFlagA1、可用性フラグavailableFlagB1、ブロック・ベクトルbvA1及びbvB1である。
2. IsGt4by4がTRUEに等しい場合に、ブロック・ベクトル候補リストbvCandListは、以下のように構成される。
【0017】
【数2】
3. 変数numCurrCandは、次のように導出される
- IsGt4by4はTRUEに等しく、numCurrCandはbvCandList内のマージする候補の数に等しく設定される。
- それ以外の場合(IsGt4by4がFALSEに等しい)、numCurrCandは0に等しく設定される。
4. numCurrCandがMaxNumIbcMergeCandより小さく、NumHmvpIbcCandが0より大きい場合に、IBC履歴ベースのブロック・ベクトル候補の導出プロセスは、bvCandList及びnumCurrCandを入力として呼び出され、修正されたbvCandList及びnumCurrCandを出力とする。
5. numCurrCandがMaxNumIbcMergeCandより小さい場合に、numCurrCandがMaxNumIbcMergeCandに等しくなるまで次が適用される。
- bvCandList[numCurrCand][0]が0に設定される。
- bvCandList[numCurrCand][1]が0に設定される。
- numCurrCandが1だけ増加する。
6. 変数bvIdxは、次のように導出される
【0018】
【数3】
general_merge_flag[x0][y0]は、現在のコーディング・ユニットのフレーム間予測パラメータが隣接するフレーム間予測パーティションから推測されるかどうかを指定する。
配列インデックスx0、y0は、ピクチャの左上のルマ・サンプルに対する、考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定します。
merge_idx[x0][y0]は、マージ候補リストのマージ候補インデックスを指定し、x0,y0は、ピクチャの左上のルマ・サンプルに対する、考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定する。
7. 以下の割り当てが行われる。
【0019】
【数4】
いくつかの実施形態では、符号化器側では、モーション・ベクトルは、水平コンポーネント(x)及び垂直コンポーネント(y)に関して、モーション・ベクトル予測器(MVP)に対する差分としてコーディングされる。
両方のモーション・ベクトル差(MVD)コンポーネントの計算は、MVDx=MVx-MVPx、MVDy=MVy-MVPyとして示される。
したがって、復号器側では、MVx=MVPx+MVDx、MVy=MVPy+MVDyである。
【0020】
S104:現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得る。
一例では、このプロセスへの入力は、
- 現在のピクチャの左上のルマ・サンプルに対する現在のルマ・コーディング・ブロックの左上のサンプルのルマ位置(xCb,yCb)、
- ルマ・サンプルにおける現在のコーディング・ブロックの幅を指定する変数cbWidth、
- ルマ・サンプルにおける現在のコーディング・ブロックの高さを指定する変数cbHeight
- ブロック・ベクトルbv、
- 現在のブロックの色コンポーネント・インデックスを指定する変数cIdxである。
このプロセスの出力は、
- 予測サンプルの配列predSamplesである。
cIdxが0に等しい場合に、x=xCb..xCb+cbWidth-1、及びy=yCb..yCb+cbHeight-1に対して、以下が適用される。
【0021】
【0022】
cIdxが0に等しくない場合、x=xCb/subWidthC..xCb/subWidthC+cbWidth/subWidthC-1、及び=yCb/subHeightC..yCb/subHeightC+cbHeight/subHeightC-1に対して、以下が適用される。
【0023】
【数6】
一例では、
サンプルはCTB単位で処理される。幅と高さにおいて各ルマCTBの配列サイズは、サンプル単位でCtbSizeYである。各クロマCTBの配列の幅と高さは、それぞれサンプル単位でCtbWidthC及びCtbHeightCである。
【0024】
【数7】
IbcVirBufは、IBCモード・プロセス専用のバッファを表す。
変数SubWidthCとSubHeightCは、クロマ・フォーマットのサンプリング構造に応じて、表2で指定され、クロマ・フォーマットのサンプリング構造は、croma_format_idc及びseparate_colour_plane_flagで指定される。
croma_format_idc、SubWidthC及びSubHeightCの他の値は、将来ITU-T ISO/IECにおいて指定されてもよい。
【0025】
【0026】
一実装では、その方法は、現在のブロックのMVP候補の最大数の値が1より大きい場合に、ビットストリームからMVPインデックスの値を解析することをさらに含む。
一実装では、MVPインデックスの値は、コーディングユニットレベルから解析される。
一実装では、MVPインデックスの値は、リスト0のモーション・ベクトル予測器インデックスを指定する。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからのシーケンス・パラメータ・セットspsレベルを解析することによって得られる。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル又はppsレベルで構文要素を解析することによって得られる。
一実装では、候補リストは、現在のブロックに隣接する少なくとも1つの隣接ブロック、及び履歴ベースのモーション・ベクトル予測子HMVPリストに基づいて得られ、少なくとも1つの隣接ブロックは、IBCモードを使用して予測される。
一実装では、復号デバイスによって実装されるコーディング方法が開示され、その方法は、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、ことと、
現在のブロックの前記MVP候補の最大数の値が1より大きいかどうかを判定することと、
現在のブロックの前記MVP候補の最大数の値が1より大きいと判定された場合に、ビットストリームからMVPインデックスの値を解析することと、
MVPインデックス及び候補リストにしたがって現在のブロックのモーション・ベクトルを得ることと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
一実装では、その方法は、
現在のブロックのMVP候補の最大数の値が1より大きいと判定された場合に、MVPインデックスの値をゼロに設定することをさらに含む。
一実装では、MVPインデックスの値は、コーディングユニットレベルから解析される。
一実装では、MVPインデックスの値は、リスト0のモーション・ベクトル予測器インデックスを指定する。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからのシーケンス・パラメータ・セットspsレベルを解析することによって得られる。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル又はppsレベルで構文要素を解析することによって得られる。
一実装では、候補リストは、現在のブロックに隣接する少なくとも1つの隣接ブロック、及び履歴ベースのモーション・ベクトル予測子HMVPリストに基づいて得られ、少なくとも1つの隣接ブロックは、IBCモードを使用して予測される。
一実施形態では、復号デバイスによって実装されるコーディング方法が開示され、その方法は、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、ことと、
現在のブロックのMVPインデックスの値が1で、現在のブロックのMVP候補の最大数の値が1に等しい場合に、現在のブロックのモーション・ベクトルをデフォルト値に設定することと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル、spsレベル又はppsレベルで構文要素を解析することによって得られる。
一実装では、デフォルト値は、ゼロである。
一実施形態では、復号デバイスによって実装されるコーディング方法が開示され、その方法は、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、ことと、
現在のブロックのMVP候補の最大数の値が1に等しい場合に、現在のブロックに隣接する少なくとも1つの隣接するブロック及び履歴ベースのモーション・ベクトル予測子HMVPリストにしたがって、現在のブロックの候補リストを得ることであって、現在のブロックの候補リストは、2つの候補を含み、少なくとも1つの隣接するブロックは、IBCモードを使用して予測される、取得することと、
現在のブロックのMVPインデックス及び候補リストにしたがって、現在のブロックのモーション・ベクトルを得ることと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
一実装では、現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル、spsレベル又はppsレベルで構文要素を解析することによって得られる。
【0027】
図11に示すように、本発明の第2の態様は、復号デバイス1100を提供し、復号デバイスは、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得るように構成されているMVPモジュール1101であって、現在のブロックは、ブロック内コピーIBCモードを使用して予測される、MVPモジュール1101と、
現在のブロックのMVP候補の最大数の値が1より大きい場合に、MVPインデックスの値をゼロに設定するように構成されている設定モジュール1102と、
MVPインデックス及び候補リストにしたがって現在のブロックのモーション・ベクトルを得るように構成されているモーション・ベクトル・モジュール1103と、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得るように構成されている予測モジュール1104と、を含む。
本発明の第1の態様による方法は、本発明の第2の態様によるデバイスによって実行され得る。
上記方法のさらなる特徴及び実装形式は、本発明の第2の態様による装置の特徴及び実装形式に対応する。
【0028】
一実施形態では、上記の実施形態及び実装のいずれかに1つよる方法を実施するための処理回路を含む復号器(30)が開示される。
一実施形態では、上記の実施形態及び実装のいずれかに1つよる方法を実行するためのプログラムコードを含むコンピュータ・プログラム製品が開示される。
一実施形態では、復号器であって、
1つ以上のプロセッサと、
プロセッサに結合され、プロセッサによる実行のためのプログラミングを記憶する非一時的なコンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行される場合に、上記の実施形態及び実装のいずれか1つによる方法を実施するように復号器を設定する、非一時的なコンピュータ可読記憶媒体と、を含む、復号器が開示される。
一実施形態では、画像復号デバイスによって復号される符号化されたビットストリームを含む非一時的な記憶媒体であって、ビットストリームは、ビデオ信号又は画像信号のフレームを複数のブロックに分割することによって生成され、複数の構文要素を含み、複数の構文要素は、上記の実施形態及び実装のいずれか1つによるMVPインデックスmvp_l0_flagを含む、非一時的な記憶媒体が開示される。
1つ以上の実施形態の詳細は、添付の図面及び以下の説明に記載されている。
他の特徴、目的、及び利点は、明細書、図面、及び特許請求の範囲から明らかであろう。
【図面の簡単な説明】
【0029】
以下、本発明の実施形態が、添付の図および図面を参照して、より詳細に説明されている。
【
図1A】本発明の実施形態を実装するように構成されているビデオ・コーディング・システムの一例を示すブロック図である。
【
図1B】本発明の実施形態を実装するように構成されているビデオ・コーディング・システムの一例を示すブロック図である。
【
図2】本発明の実施形態を実装するように構成されているビデオ符号化器の一例を示すブロック図である。
【
図3】本発明の実施形態を実装するように構成されているビデオ復号器の例示的な構造を示すブロック図である。
【
図4】符号化装置又は復号装置の一例を示すブロック図である。
【
図5】符号化装置又は復号装置の別例を示すブロック図である。
【
図6】現在のブロックの隣接ブロックの一例を示すブロック図である。
【
図7】現在のブロックの5つの空間的に隣接する候補の一例を示すブロック図である。
【
図8】コンテンツ配信サービスを実現するコンテンツ供給システム3100の例示的な構造を示すブロック図である。
【
図9】端末デバイスの一例の構造を示すブロック図である。
【
図10】方法の実施形態を示すフローチャートである。
【0030】
以下、同一の参照符号は、他に明示的に指定されていない場合は、同一の又は少なくとも機能的に同等の特徴を指す。
【発明を実施するための形態】
【0031】
以下の説明では、本開示の一部を形成し、本発明の実施形態の特定の態様または本発明の実施形態が使用され得る特定の態様を例示するために、添付の図面を参照する。本発明の実施形態は、他の態様で使用することができ、図に示されていない構造的または論理的変化を含むことが理解される。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって定義される。
【0032】
例えば、説明された方法に関連する開示は、当該方法を実行するように構成された対応するデバイスまたはシステムについても真であり、その逆もまた真であり得ることが理解される。例えば、1つまたは複数の特定の方法ステップが説明される場合、対応するデバイスは、説明された1つまたは複数の方法ステップを実行する(例えば、1つのユニットが1つまたは複数のステップを実行するか、または複数のユニットの各々が複数のステップのうちの1つ以上を実行する)ために、1つまたは複数のユニット、例えば、機能ユニットを、たとえそのような1つ以上のユニットが明示的に説明されるか、図に示されていなくても、含んでもよい。一方、例えば、1つ又は複数のユニット、例えば、機能ユニットに基づいて特定の装置が説明される場合、対応する方法は、1つ又は複数のユニットの機能性を実行する(例えば、1つのステップが1つ又は複数のユニットの機能性を実行するか、又は複数のユニットのうちの各々が複数のユニットのうちの1つ以上の機能性を実行する複数のステップ)ために、1つのステップを、たとえそのような1つ又は複数のステップが明示的に説明されるか、図に示されていなくても、含んでもよい。さらに、本明細書で説明された種々の例示的な実施形態および/または態様の特徴は、特に断らない限り、互いに組み合わせてもよいことが理解される。
【0033】
ビデオ・コーディングは、典型的には、ビデオまたはビデオ・シーケンスを形成する一連のピクチャの処理を指す。用語「ピクチャ」の代わりに、用語「フレーム」または「画像」が、ビデオ・コーディングの分野では同義語として使用されてもよい。ビデオ・コーディング(または、一般に、コーディング)は、ビデオ符号化およびビデオ復号の2つの部分を含む。ビデオ符号化は、ソース側で実行され、典型的には、元のビデオ・ピクチャを(より効率的な記憶および/または伝送のために)表するのに必要なデータ量を低減するために、元のビデオ・ピクチャの(例えば、圧縮による)処理を含む。ビデオ復号は、宛先側で実行され、典型的には、ビデオ・ピクチャを再構成するために符号化器と比較して、逆方向の処理を含む。ビデオ・ピクチャ(または、一般に、ピクチャ)の「コーディング」を参照する実施形態は、ビデオ・ピクチャまたはそれぞれのビデオ・シーケンスの「符号化」または「復号」に関係するものと理解されたい。符号化ユニットと復号ユニットの組み合わせは、CODEC(Coding and Decoding)とも呼ばれる。
【0034】
可逆ビデオ・コーディングの場合、元のビデオ・ピクチャを再構成することができる。すなわち、再構成されたビデオ・ピクチャは、元のビデオ・ピクチャと同じ品質を有する(記憶または伝送の間に伝送損失または他のデータ損失がないと仮定する)。非可逆ビデオ・コーディングの場合、ビデオ・ピクチャを表すデータの量を低減するために、例えば量子化によるさらなる圧縮が実行されるが、復号器で完全には再構成することができない。すなわち、再構成されたビデオ・ピクチャの品質は、元のビデオ・ピクチャの品質よりも低いかまたは悪い。
【0035】
いくつかのビデオ・コーディング標準は、「非可逆ハイブリッド・ビデオ・コーデック」のグループに属する(すなわち、サンプル・ドメインにおける空間的および時間的予測と、変換ドメインにおける量子化を適用するための2D変換コーディングを組み合わせる)。ビデオ・シーケンスの各ピクチャは、典型的には、重複しないブロックのセットにパーティショニングされ、コーディングは、典型的には、ブロックレベルで実行される。換言すれば、符号化器では、ビデオは、典型的には、ブロック(ビデオ・ブロック)レベルで、例えば、空間的(ピクチャ内)予測および/または時間的(ピクチャ間)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されるブロック)から予測ブロックを減算して残差ブロックを得て、残差ブロックを変換し、変換ドメイン内の残差ブロックを量子化して、送信されるデータ量を低減(圧縮)することによって、処理、すなわち符号化される一方、復号器では、符号化器と比較した逆処理が符号化されたか、または圧縮されたブロックに適用されて、提示のための現在のブロックを再構成する。さらに、符号化器は復号器処理ループを複製し、両者が同一の予測(例えば、イントラ予測およびインター予測)を生成し、および/または処理、すなわち、後続のブロックをコーディングするための再構成を生成する。ビデオ・コーディング・システム10の以下の実施形態では、
図1~
図3に基づいて、ビデオ符号化器20及びビデオ復号器30が説明される。
【0036】
図1Aは、例示的なコーディング・システム10、例えば、本出願の技術を利用することができるビデオ・コーディング・システム10(または省略してコーディング・システム10)を示す概略ブロック図である。ビデオ・コーディング・システム10のビデオ符号化器20(または省略して符号化器20)及びビデオ復号器30(又は省略して復号器30)は、本出願で説明される種々の例にしたがって技術を実行するように構成され得るデバイスの例を表す。
図1Aに示すように、コーディング・システム10は、例えば、符号化されたピクチャ・データ13を復号するための宛先デバイス14に、符号化されたピクチャ・データ21を提供するように構成されているソース・デバイス12を含む。
【0037】
ソース・デバイス12は、符号化器20を含み、追加的に、ピクチャ・ソース16、プリプロセッサ(または前処理ユニット)18、例えばピクチャ・プリプロセッサ18、および通信インターフェースまたは通信ユニット22を含んでもよい。ピクチャ・ソース16は、任意の種類のピクチャ捕捉デバイス、例えば、実世界ピクチャを捕捉するためのカメラ、及び/又は任意の種類のピクチャ生成デバイス、例えば、コンピュータ・アニメーション・ピクチャを生成するためのコンピュータ・グラフィック・プロセッサ、又は、実世界ピクチャ、コンピュータ生成ピクチャ(例えば、スクリーン・コンテンツ、バーチャル・リアリティ(VR)ピクチャ)、及び/又はそれらの任意の組み合わせ(例えば、拡張現実(AR)ピクチャ)を得る、及び/又は提供するための任意の種類の他のデバイスを含んでもよい。ピクチャ・ソースは、上述のピクチャのいずれかを記憶する任意の種類のメモリまたはストレージであってもよい。プリプロセッサ18と、前処理ユニット18によって実行される処理とを区別して、ピクチャまたはピクチャ・データ17もまた、生のピクチャまたは生のピクチャ・データ17と呼ばれてもよい。
【0038】
プリプロセッサ18は、(生の)ピクチャ・データ17を受信し、ピクチャ・データ17に前処理を実行して、前処理されたピクチャ・データ19または前処理されたピクチャ・データ19を得るように構成されている。プリプロセッサ18によって実行される前処理は、例えば、トリミング、色フォーマット変換(例えば、RGBからYCbCrへ)、色補正、またはノイズ除去を含んでもよい。前処理ユニット18は、任意のコンポーネントであってもよいと理解され得る。ビデオ符号化器20は、前処理されたピクチャ・データ19を受信し、符号化されたピクチャ・データ21を提供するように構成されている(例えば、
図2に基づいて、さらなる詳細を以下に説明する)。ソース・デバイス12の通信インターフェース22は、符号化されたピクチャ・データ21を受信し、記憶または直接再構成のために、通信チャネル13を介して、符号化されたピクチャ・データ21(またはその任意のさらなる処理されたバージョン)を他のデバイス、例えば宛先デバイス14または任意の他のデバイスに送信するように構成されてもよい。
【0039】
宛先デバイス14は、復号器30(例えば、ビデオ復号器30)を含み、追加的、すなわち任意選択的に、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示デバイス34を含んでもよい。
【0040】
宛先デバイス14の通信インターフェース28は、符号化されたピクチャ・データ21(又はそのさらなる処理されたバージョン)を、例えばソース・デバイス12から直接、又は任意の他のソース、例えば記憶デバイス、例えば符号化されたピクチャ・データ記憶デバイスから受信し、符号化されたピクチャ・データ21を復号器30に提供するように構成されている。
【0041】
通信インターフェース22及び通信インターフェース28は、ソース・デバイス12と宛先デバイス14との間の直接通信リンク、例えば直接有線若しくは無線接続、又は任意の種類のネットワーク、例えば有線若しくは無線ネットワーク若しくはそれらの任意の組み合わせ、若しくは任意の種類のプライベート及びパブリック・ネットワーク、又はそれらの任意の種類の組み合わせを介して、符号化されたピクチャ・データ21又は符号化されたデータ13を送信又は受信するように構成されてもよい。
【0042】
通信インターフェース22は、例えば、符号化されたピクチャ・データ21を適切なフォーマット、例えば、パケットにパッケージングし、および/または通信リンクまたは通信ネットワークを介した伝送のための任意の種類の伝送符号化または処理を使用して符号化されたピクチャ・データを処理するように構成されてもよい。
【0043】
通信インターフェース22のカウンタパートを形成する通信インターフェース28は、例えば、送信されたデータを受信し、任意の種類の対応する伝送復号または処理および/またはパッケージング解除を使用して伝送データを処理して、符号化されたピクチャ・データ21を得るように構成されてもよい。
【0044】
通信インターフェース22および通信インターフェース28は両方とも、ソース・デバイス12から宛先デバイス14へ指し示す
図1Aの通信チャネル13の矢印によって示されるように、一方向通信インターフェース、または双方向通信インターフェースとして構成されてもよく、例えば、通信リンクおよび/またはデータ伝送例えば、符号化されたピクチャ・データ伝送に関係する任意の他の情報を確認応答および交換するために、メッセージを送信および受信する、例えばコネクションをセット・アップするように構成されてもよい。
【0045】
復号器30は、符号化されたピクチャ・データ21を受信し、復号されたピクチャ・データ31または復号されたピクチャ31を提供するように構成されている(例えば、
図3または
図5に基づいて、さらなる詳細を以下に説明する)。
【0046】
宛先デバイス14のポストプロセッサ32は、復号されたピクチャ・データ31、例えば復号されたピクチャ31を後処理して、後処理されたピクチャ・データ33、例えば後処理されたピクチャ33を得るように構成されている。後処理ユニット32によって実行される後処理は、例えば、色フォーマット変換(例えば、YCbCrからRGBへ)、色補正、トリミング、又は再サンプリング、又は、例えば、表示デバイス34による表示のために、復号されたピクチャ・データ31を準備するための任意の他の処理を含むことができる。宛先デバイス14の表示デバイス34は、例えばユーザまたはビューアに、ピクチャを表示するために後処理されたピクチャ・データ33を受信するように構成されている。表示デバイス34は、再構成されたピクチャを表すための任意の種類のディスプレイ、例えば、統合されたディスプレイまたは外部ディスプレイ若しくはモニタであってもよく、またはそれらを含んでもよい。ディスプレイは、例えば、液晶ディスプレイLCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマ・ディスプレイ、プロジェクタ、マイクロLEDディスプレイ、液晶オン・シリコン(LCoS)、デジタル光プロセッサ(DLP)、または任意の種類の他のディスプレイを含むことができる。
【0047】
図1Aは、ソース・デバイス12及び宛先デバイス14を別個のデバイスとして描いているのであるが、デバイスの実施形態は、両方又は両方の機能、ソース・デバイス12又は対応する機能性、及び宛先デバイス14又は対応する機能性を含んでもよい。そのような実施形態では、ソース・デバイス12または対応する機能性と宛先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェア、別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実装されてもよい。
【0048】
説明に基づいて当業者には明らかなように、
図1Aに示すように、ソース・デバイス12および/または宛先デバイス14内の異なるユニットまたは機能性の存在および機能性の正確な分裂は、実際のデバイスおよび用途に依存して変動し得る。
【0049】
符号化器20(例えば、ビデオ符号化器20)、復号器30(例えば、ビデオ復号器30)、または符号化器20と復号器30の両方は、
図1Bに示すような処理回路、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブル・ゲート・アレイ(FPGA)、ディスクリート論理、ハードウェア、専用のビデオ・コーディング、またはそれらの任意の組み合わせによって実装されてもよい。符号化器20は、
図2の符号化器20および/または本明細書で説明される任意の他の符号化器システムまたはサブシステムに関して説明したように、種々のモジュールを具体化するために、処理回路46を介して実装されてもよい。復号器30は、
図3の復号器30および/または本明細書で説明される任意の他の復号器システムまたはサブシステムに関して説明されるように、種々のモジュールを具体化するために、処理回路46を介して実装されてもよい。処理回路は、後述するように、種々の演算を実行するように構成されてもよい。
図5に示すように、技術が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的なコンピュータ可読記憶媒体にソフトウェアのための命令を記憶し、本開示の技術を実行するために1つ以上のプロセッサを使用してハードウェアで命令を実行することができる。ビデオ符号化器20とビデオ復号器30のいずれかは、例えば
図1Bに示すように、単一のデバイス内の組み合わされた符号化器/復号器(CODED)の一部として一体化されてもよい。ソース・デバイス12および宛先デバイス14は、ノートブックまたはラップトップ・コンピュータ、携帯電話、スマートフォン、タブレットまたはタブレット・コンピュータ、カメラ、デスクトップ・コンピュータ、セット・トップ・ボックス、テレビ、表示デバイス、デジタル・メディア・プレーヤ、ビデオゲーム機、ビデオ・ストリーミング装置(コンテンツ・サービス・サーバまたはコンテンツ配信サーバなど)、放送受信機デバイス、放送送信機装置など、任意の種類のハンドヘルド・デバイスまたは固定デバイスを含む広範囲のデバイスのいずれも含んでもよく、オペレーティング・システムを全く使用しないか、または任意の種類のものを使用してもよい。場合によっては、ソース・デバイス12および宛先デバイス14は、無線通信用に装備されてもよい。したがって、ソース・デバイス12及び宛先デバイス14は、無線通信デバイスであってもよい。
【0050】
場合によっては、
図1Aに示されたビデオ・コーディング・システム10は、単なる一例に過ぎず、本出願の技術は、必ずしも符号化デバイスと復号デバイスとの間の任意のデータ通信を含まないビデオ・コーディング設定(例えば、ビデオ符号化またはビデオ復号)に適用されてもよい。他の例では、データはローカルメモリから検索され、ネットワークを介してストリーミングされるなどである。ビデオ符号化デバイスは、データを符号化し、メモリに記憶してもよく、および/またはビデオ復号デバイスは、メモリからデータを検索し、復号してもよい。いくつかの例では、符号化および復号は、互いに通信せず、単にデータをメモリに符号化し、および/またはメモリからデータを検索および復号するデバイスによって実行される。説明の便宜上、本発明の実施形態は、例えば、高効率ビデオ・コーディング(HEVC)または多用途ビデオ・コーディング(VVC)の参照ソフトウェア、ITU-Tビデオ・コーディング・エキスパーツ・グループ(VCEG)及びISO/IECモーション・ピクチャ・コーディング・エキスパーツ・グループ(MPEG)のジョイント・コラボレーション・チーム・オン・ビデオ・コーディング(JCT-VC)によって開発された次世代ビデオ符号化規格を参照して、本明細書に説明される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
【0051】
符号化器及び符号化方法
図2は、本出願の技術を実装するように構成されている例示的なビデオ符号化器20の概略ブロック図を示す。
図2の例では、ビデオ符号化器20は、入力201(又は入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ・ユニット220、復号ピクチャ・バッファ(DPB)230、モード選択ユニット260、エントロピー符号化ユニット270、出力272(又は出力インターフェース272)を含む。モード選択ユニット260は、インター予測ユニット244と、イントラ予測ユニット254と、パーティショニング・ユニット262とを含んでもよい。インター予測ユニット244は、モーション推定ユニットと、モーション補償ユニット(図示せず)とを含んでもよい。
図2に示すビデオ符号化器20は、ハイブリッド・ビデオ符号化器またはハイブリッド・ビデオ・コーデックにしたがったビデオ符号化器とも呼ばれることがある。
【0052】
残差演算ユニット204、変換処理ユニット206、量子化ユニット208、モード選択ユニット260は符号化器20の順方向信号経路を形成するものとして呼ばれることがあるが、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、バッファ216、ループ・フィルタ220、復号ピクチャ・バッファ(DPB)230、インター予測ユニット244、及びイントラ予測ユニット254は、ビデオ符号化器20の逆方向信号経路を形成するものして呼ばれることがあり、ビデオ符号化器20の逆方向信号経路は復号器の信号経路に対応する(
図3のビデオ復号器30を参照)。また、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ220、復号ピクチャ・バッファ(DRB)230、インター予測ユニット244、及びイントラ予測ユニット254も、ビデオ符号化器20の「内蔵復号器」を形成すると呼ばれる。
【0053】
ピクチャ&ピクチャのパーティショニング(ピクチャ&ブロック)
符号化器20は、例えば入力201を介してピクチャ17(又はピクチャ・データ17)、例えばビデオ又はビデオ・シーケンスを形成する一連のピクチャを受信するように構成されてもよい。受信されたピクチャまたはピクチャ・データは、前処理されたピクチャ19(または前処理されたピクチャ・データ19)でもよい。簡単のために、以下の説明は、ピクチャ17を指す。また、ピクチャ17は、現在のピクチャまたは(特に、現在のピクチャを他のピクチャ、例えば、同じビデオ・シーケンス、すなわち、現在のピクチャも含むビデオ・シーケンスの前に符号化および/または復号されたピクチャから区別するためのビデオ・コーディングにおいて)符号化されるピクチャ呼ばれることがある。
【0054】
(デジタル)ピクチャは、強度値を有するサンプルの二次元配列またはマトリックスであるか、またはこれとみなされることができる。アレイ中のサンプルは、画素(画素要素の省略した形式)またはペルとも呼ばれることがある。アレイまたはピクチャの水平方向および垂直方向(または軸)のサンプル数は、ピクチャのサイズおよび/または解像度を定義する。色の表現には、典型的には、3つの色コンポーネントが使用される。すなわち、ピクチャは、3つのサンプル・アレイを表現するか、または含んでもよい。RBGフォーマットまたは色空間において、ピクチャは、対応する赤、緑および青のサンプル・アレイを含む。しかしながら、ビデオ・コーディングにおいては、各画素は、典型的には、輝度及び色度フォーマット又は色空間、例えば、Yで示される輝度コンポーネント、及びCb及びCrで示される2つの色度コンポーネントを含むYCbCrで表わされる。輝度(または省略してルマ)コンポーネントYは、輝度またはグレーレベル強度(例えば、グレースケール・ピクチャなど)を表し、2つのクロミナンス(または省略してクロマ)成分CbおよびCrは、色度または色情報コンポーネントを表す。したがって、YCbCrフォーマットのピクチャは、輝度サンプル値(Y)の輝度サンプル・アレイと、色度値(CbおよびCr)の2つのクロミナンス・サンプル・アレイとを含む。RGB形式のピクチャはYCbCr形式に転換または変換されてもよく、その逆も可能であり、プロセスは色変換または転換としても知られている。ピクチャがモノクロである場合、ピクチャは、輝度サンプル・アレイのみを含んでもよい。したがって、ピクチャは、例えば、モノクロフォーマットのルマ・サンプルのアレイ、またはルマ・サンプルのアレイ、および4:2:0、4:2:2、および4:4:4色フォーマットのクロマ・サンプルの2つの対応するアレイであり得る。
【0055】
ビデオ符号化器20の実施形態は、ピクチャ17を複数の(典型的には重複しない)ピクチャ・ブロック203にパーティショニングするように構成されているピクチャ・パーティショニング・ユニット(
図2には示さず)を含んでもよい。これらのブロックは、ルート・ブロック、マクロ・ブロック(H.264/AVC)またはコーディング・ツリー・ブロック(CTB)もしくはコーディング・ツリー・ユニット(CTU)(H.265/HEVCおよびVVC)とも呼ばれることがある。ピクチャ・パーティショニング・ユニットは、ビデオ・シーケンスのすべてのピクチャに対して同じブロックサイズと、ブロックサイズを定義する対応するグリッドを使用するか、またはピクチャ間、ピクチャのサブセット又はグループ間でブロックサイズを変更し、各ピクチャを対応するブロックに分割するように構成されてもよい。
【0056】
さらなる実施形態では、ビデオ符号化器は、ピクチャ17のブロック203、例えば、ピクチャ17を形成する1つ、複数の、またはすべてのブロックを直接受信するように構成されてもよい。ピクチャ・ブロック203は、現在のピクチャ・ブロックまたは符号化されるピクチャ・ブロックとも呼ばれることがある。
【0057】
ピクチャ17と同様に、ピクチャ・ブロック203は、再度ピクチャ17よりも小さい寸法ではあるが、強度値(サンプル値)を有するサンプルの2次元アレイまたはマトリックスであるか、またはそのように見なされる。換言すれば、ブロック203は、例えば、1つのサンプル・アレイ(例えば、モノクロ・ピクチャ17の場合はルマ・アレイ、色ピクチャの場合はルマ又はクロマ・アレイ)又は3つのサンプル・アレイ(例えば、色ピクチャ17の場合はルマ及び2つのクロマ・アレイ)又は適用される色フォーマットに応じた任意の他の数及び/又は種類のアレイを含んでもよい。ブロック203の方向および垂直方向(または軸)のサンプル数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのMxN(M列×N行)アレイ、または変換係数のMxNアレイであってもよい。
【0058】
図2に示すビデオ符号化器20の実施形態は、ブロック毎にピクチャ17を符号化するように構成されてもよく、例えば、符号化および予測はブロック203毎に実行される。
図2に示すビデオ符号化器20の実施形態は、スライス(ビデオ・スライスとも呼ばれる)を使用することによってピクチャをパーティショニングおよび/または符号化するようにさらに構成されてもよく、ピクチャは、1つ以上のスライス(典型的には、重複しない)を使用してパーティショニングまたは符号化されてもよく、各スライスは1つ以上のブロック(例えば、CTU)を含んでもよい。
【0059】
図2に示すビデオ符号化器20の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)および/またはタイル(ビデオタイルとも呼ばれる)を用いて、ピクチャをパーティショニングおよび/または符号化するようにさらに構成されてもよく、ピクチャは、1つ以上のタイル・グループ(典型的には、重複しない)を使用してパーティショニングまたは符号化されてもよく、各タイル・グループは、例えば、1つ以上のブロック(例えば、CTU)または1つ以上のタイルを含んでもよく、各タイルは、例えば、矩形形状であってもよく、1つ以上のブロック(例えば、CTU)、例えば、完全ブロックまたは部分ブロックを含んでもよい。
【0060】
残差計算
残差計算ユニット204は、サンプル毎(画素毎)に、例えば、ピクチャ・ブロック203のサンプル値から予測ブロック265のサンプル値を減算することにより、ピクチャ・ブロック203及び予測ブロック265(予測ブロック265についてのさらなる詳細は後述する)に基づいて残差ブロック205(残差205とも呼ばれる)を計算して、サンプル・ドメインにおける残差ブロック205を得るように構成されてもよい。
【0061】
変換
変換処理ユニット206は、残差ブロック205のサンプル値に変換、例えば離散コサイン変換(DCT)または離散サイン変換(DST)を適用して、変換ドメインにおける変換係数207を得るように構成されてもよい。変換係数207は、変換残差係数とも呼ばれ、変換ドメインにおける残差ブロック205を表してもよい。
【0062】
変換処理ユニット206は、H.265/HEVCに対して指定された変換など、DCT/DSTの整数近似を適用するように構成されてもよい。直交DCT変換と比較して、そのような整数近似は、典型的には、特定のファクタによってスケーリングされる。順変換と逆変換によって処理される残差ブロックのノルムを保存するために、変換プロセスの一部として付加的なスケーリング・ファクタが適用される。スケーリング・ファクタは、典型的には、シフト演算のための2のべき乗であるスケーリング・ファクタ、変換係数のビット深度、精度と実装コストの間のトレードオフなどのような特定の制約に基づいて選択される。特定のスケーリング・ファクタは、例えば、逆変換処理ユニット212(及び、例えばビデオ復号器30における逆変換処理ユニット312による対応する逆変換)によって、逆変換に対して指定され、符号化器20において、例えば、変換処理ユニット206によって、順変換に対する対応するスケーリング係数が、それに応じて指定されてもよい。
【0063】
ビデオ符号化器20(それぞれ、変換処理ユニット206)の実施形態は、例えば、エントロピー符号化ユニット270を介して直接または符号化もしくは圧縮された変換パラメータ、例えば、変換パラメータを出力するように構成されてもよく、これにより、例えば、ビデオ復号器30は、復号のために変換パラメータを受信および使用してもよい。
【0064】
量子化
量子化ユニット208は、例えばスカラ量子化またはベクトル量子化を適用することによって、変換係数207を量子化して量子化係数209を得るように構成されてもよい。量子化係数209は、量子化変換係数209または量子化残差係数209とも呼ばれることがある。
【0065】
量子化プロセスは、変換係数207の一部または全部に関連するビット深度を低減してもよい。例えば、nビット変換係数は、量子化の間、mビット変換係数に丸められてもよく、nは、mよりも大きい。量子化の程度は、量子化パラメータ(QP)を調整することによって修正されてもよい。例えば、スカラ量子化では、異なるスケーリングを適用して、より微細またはより粗大な量子化を達成してもよい。より小さい量子化ステップサイズはより微細な量子化に対応し、より大きい量子化ステップサイズはより粗大な量子化に対応する。適用可能な量子化ステップサイズは、量子化パラメータ(QP)によって示されてもよい。量子化パラメータは、例えば、適用可能な量子化ステップサイズの事前定義されたセットに対するインデックスであってもよい。例えば、小さな量子化パラメータは、微細な量子化(小さな量子化ステップサイズ)に対応してもよく、大きな量子化パラメータは、粗大な量子化(大きな量子化ステップサイズ)に対応してもよく、またはその逆に対応してもよい。量子化は、量子化ステップサイズによる除算を含んでもよく、例えば、逆量子化ユニット210による、対応するおよび/または逆の量子化解除は、量子化ステップサイズによる乗算を含んでもよい。いくつかの規格、例えばHEVCによる実施形態は、量子化ステップサイズを判定するために量子化パラメータを使用するように構成されてもよい。一般に、量子化ステップサイズは、除算を含む式の固定点近似を使用して量子化パラメータに基づいて計算されてもよい。量子化ステップサイズおよび量子化パラメータの方程式の固定点近似に使用されるスケーリングのために修正され得る残差ブロックのノルムを復元するために、量子化および量子化解除のために追加のスケーリング・ファクタを導入してもよい。一実施例では、逆変換および脱量子化のスケーリングが組み合わせられてもよい。代替的には、カスタマイズされた量子化テーブルが使用され、符号化器から復号器へ、例えばビットストリームでシグナリングされてもよい。量子化は、損失が量子化ステップサイズの増加に伴って増加する不可逆演算である。ビデオ符号化器20(それぞれ、量子化ユニット208)の実施形態は、例えば、直接またはエントロピー符号化ユニット270を介して符号化された量子化パラメータを出力するように構成されてもよく、これにより、例えば、ビデオ復号器30は、復号のために量子化パラメータを受信および適用してもよい。
【0066】
逆量子化
逆量子化ユニット210は、例えば、量子化ユニット208と同じ量子化ステップサイズに基づいて、または同じ量子化ステップサイズを使用して、量子化ユニット208によって適用される量子化方式の逆を適用することによって、量子化ユニット208の逆量子化を量子化係数に適用して、量子化解除係数211を得るように構成される。また、量子化解除係数211は、量子化解除残差係数211と呼ばれ、典型的には、量子化による損失のために変換係数と同一ではないが、変換係数207に対応する。
【0067】
逆変換
逆変換処理ユニット212は、変換処理ユニット206によって適用された変換の逆変換、例えば逆離散余弦変換(DCT)、逆離散正弦変換、または他の逆変換を適用して、サンプル・ドメイン内の再構成された残差ブロック213(または対応する量子化解除係数213)を得るように構成されている。再構成された残差ブロック213は、変換ブロック213とも呼ばれる。
【0068】
再構成
再構成ユニット214(例えば、加算器または合計器214)は、変換ブロック213(すなわち、再構成された残差ブロック213)を予測ブロック365に加算し、例えば、再構成された残差ブロック213のサンプル値および予測ブロック265のサンプル値をサンプル毎に加算することによって、サンプル・ドメイン内の再構成されたブロック215を得るように構成されている。
【0069】
フィルタリング
ループ・フィルタ・ユニット220(または略して「ループ・フィルタ」220)は、再構成されたブロック215をフィルタリングしてフィルタリングされたブロック221を得るか、または一般に、再構成されたサンプルをフィルタリングしてフィルタリングされたサンプルを得るように構成されている。ループ・フィルタ・ユニットは、例えば、画素遷移を平滑化するように、または、そうでなければ、ビデオ品質を改善するように構成されている。ループ・フィルタ・ユニット220は、ブロッキング解除フィルタ、サンプル・アダプティブ・オフセット(SAO)フィルタ、若しくは1つ以上の他のフィルタ、例えばバイラテラル・フィルタ、アダプティブ・ループ・フィルタ(ALF)、鮮鋭化フィルタ、平滑化フィルタ、若しくは共同フィルタ、またはそれらの任意の組み合わせなどの1つ以上のループ・フィルタを含んでもよい。ループ・フィルタ・ユニット220は、
図2ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット220は、ポスト・ループ・フィルタとして実装されてもよい。フィルタリングされたブロック221はまた、フィルタリングされた再構成されたブロック221と呼ばれることがある。
【0070】
ビデオ符号化器20(それぞれ、ループ・フィルタ・ユニット220)の実施形態は、例えば、直接またはエントロピー符号化ユニット270を介して符号化されたループ・フィルタ・パラメータを出力するように構成されてもよく、これにより、例えば、復号器30は、復号のために同じループ・フィルタ・パラメータ又はそれぞれのループ・フィルタを受信及び適用してもよい。
【0071】
復号ピクチャ・バッファ
復号ピクチャ・バッファ(DRB)230は、ビデオ符号化器20によってビデオ・データを符号化するために、参照ピクチャまたは一般に、参照ピクチャ・データを記憶するメモリであってもよい。DPB230は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリ・デバイスを含む、ダイナミック・ランダム・アクセス・メモリなどの種々のメモリ・デバイスのいずれかによって形成されてもよい。復号ピクチャ・バッファ230は、1つ以上のフィルタリングされたブロック221を記憶するように構成されてもよい。復号ピクチャ・バッファ230は、同じ現在のピクチャまたは異なるピクチャ、例えば以前に再構成されたピクチャの、他の以前にフィルタリングされたブロック、例えば以前に再構成され、フィルタリングされたブロック221を記憶するようにさらに構成されてもよく、例えば、インター予測のために、完全に以前に再構成された、すなわち復号されたピクチャ(並びに対応する参照ブロックおよびサンプル))および/または部分的に再構成された現在のピクチャ(並びに対応する参照ブロックおよびサンプル)を提供してもよい。復号ピクチャ・バッファ(DRB)230はまた、例えば、再構成されたブロック215がループ・フィルタ・ユニット220によってフィルタリングされたものではないか、又は再構成されたブロック又はサンプルの任意の他のさらなる処理バージョンではない場合、1つ以上のフィルタリングされていない構成されたブロック215、又は一般に、フィルタリングされていない再構成されたサンプルを記憶するように構成されてもよい。
【0072】
モード選択(パーティショニング&予測)
モード選択ユニット260は、パーティショニング・ユニット262と、インター予測ユニット244と、イントラ予測ユニット254を含み、元のピクチャ・データ、例えば元のブロック203(現在のピクチャ17の現在のブロック203)と、再構成されたピクチャ・データ、例えば、フィルタリングされた、またはフィルタリングされていない、同じ(現在の)ピクチャ、および/または、1つまたは複数の以前に復号されたピクチャ、例えば、復号ピクチャ・バッファ230または他のバッファ(例えば、ラインバッファ、図示せず)からの再構成されたサンプルまたはブロックと、を受信し得るように構成されている。再構成されたピクチャ・データは、予測、例えば、インター予測またはイントラ予測のための参照ピクチャ・データとして使用されて、予測ブロック265または予測子265を得る。
【0073】
モード選択ユニット260は、現在のブロック予測モード(パーティショニングなしを含む)及び予測モード(例えば、イントラ又はインター予測モード)に対するパーティショニングを判定又は選択し、残差ブロック205の計算及び再構成されるブロック215の再構成のために使用される対応する予測ブロック265を生成するように構成されてもよい。
【0074】
モード選択ユニット260の実施形態は、(例えば、モード選択ユニット260によってサポートされる、または利用可能なものから)パーティショニングおよび予測モードを選択するように構成されてもよく、これは、最良の一致、換言すれば、最小の残差(最小の残差は、伝送または記憶のためのより良い圧縮を意味する)、または最小のシグナリング・オーバヘッド(最小のシグナリングは、伝送または記憶のためのより良いの圧縮を意味する)、または両方を考慮若しくはバランスをとったものを提供する。モード選択ユニット260は、レート歪み最適化(RDO)に基づいて、パーティショニングおよび予測モードを判定する、つまり、最小レート歪みを提供する予測モードを選択するように構成されてもよい。この文脈における「最良」、「最低」、「最適」などの用語は、必ずしも全体的な「最良」、「最低」、「最適」などを指すのではなく、終了基準若しくは例えば、閾値を超えるか、または下回る値のような選択基準、または「準最適の選択」につながる可能性があるが複雑性および処理時間を短縮する他の制約条件の達成を指してもよい。
【0075】
換言すれば、パーティショニング・ユニット262は、ブロック203を、例えば、クワッド・ツリー・パーティショニング(QT)、バイナリ・パーティショニング(BT)、トリプル・ツリー・パーティショニング(TT)またはそれらの任意の組み合わせを反復的に使用して、より小さなブロック・パーティションまたはサブブロック(再度ブロックを形成する)にパーティショニングし、例えば、ブロック・パーティションまたはサブブロックごとに予測を実行するように構成されてもよく、モード選択は、パーティショニングされたブロック203のツリー構造の選択を含み、予測モードは、ブロック・パーティションンまたはサブブロックの各々に適用される。
【0076】
以下、例示的なビデオ符号化器20によって実行されるパーティショニング(例えば、パーティショニング・ユニット260による)及び予測処理(インター予測ユニット244及びイントラ予測ユニット254による)をより詳細に説明する。
【0077】
パーティショニング
パーティショニング・ユニット262は、現在のブロック203を、例えば正方形または長方形のサイズのより小さいブロックのような、より小さなパーティションにパーティショニング(または分裂)することができる。これらのより小さなブロック(サブブロックとも呼ばれる)は、さらに小さなパーティションにパーティショニングされてもよい。これは、ツリー・パーティショニングまたは階層ツリー・パーティショニングとも呼ばれ、ルート・ブロック、例えば、ルート・ツリー・レベル0(階層レベル0、深度0)では、再帰的にパーティショニングされてもよく、例えば、ツリー・レベル1(階層レベル1、深度1)でのノードのような次の下位ツリー・レベルの2つ以上のブロックにパーティショニングされてもよく、これらのブロックは、例えば、最大ツリー深度または最小ブロックサイズに達するなど、例えば、終了基準が満たされるために、パーティショニングが終了するまで、例えば、ツリー・レベル2(階層レベル2、深度2)のような次の下位レベルの2つ以上のブロックに再度パーティショニングされてもよい。それ以上パーティショニングされないブロックは、ツリーのリーフ・ブロックまたはリーフ・ノードとも呼ばれる。2つのパーティションへのパーティショニングを使用するツリーはバイナリ・ツリー(BT)、3つのパーティションへのパーティショニングを使用するツリーはターナリー・ツリー(TT)、4つのパーティションへのパーティショニングを使用するツリーはクワッド・ツリー(QT)と呼ばれる。前述のように、本明細書で使用される場合、用語「ブロック」は、ピクチャの一部分、特に正方形または長方形の部分であってもよい。例えば、HEVCおよびVVCを参照すると、ブロックは、コーディング・ツリー・ユニット(CTU)、コーディング・ユニット(CU)、予測ユニット(PU)、および変換ユニットに対応してもよく、および/または対応するブロック、例えば、コーディング・ツリー・ブロック(CTB)、コーディング・ブロック(CB)、変換ブロック(TB)、または予測ブロック(PB)に対応してもよい。例えば、コーディング・ツリー・ユニット(CTU)は、ルマ・サンプルのCTB、3つのサンプル・アレイを有するピクチャのクロマ・サンプルの2つの対応するCTB、またはモノクロ・ピクチャ若しくはサンプルをコーディングするために使用される3つの別々の色プレーンおよび構文構造を使用してコーディングされるピクチャのサンプルのCTBであってもよく、または、これらを含んでもよい。これに対応して、コーディング・ツリー・ブロック(CTB)は、あるコンポーネントのCTBへの分割がパーティショニングであるように、ある値のNのサンプルのNxNブロックであってもよい。コーディング・ユニット(CU)は、ルマ・サンプルのCTB、3つのサンプル・アレイを有するピクチャのクロマ・サンプルの2つの対応するコーディング・ブロック、またはモノクロ・ピクチャ若しくはサンプルをコーディングするために使用される3つの別々の色プレーンおよび構文構造を使用してコーディングされるピクチャのサンプルのコーディング・ブロックであってもよく、または、これらを含んでもよい。これに対応して、コーディング・ブロック(CB)は、あるCTBのコーディング・ブロックへの分割がパーティショニングであるように、ある値のMおよびNのサンプル値のサンプルのNxNブロックであってもよい。
【0078】
実施形態において、例えば、HEVCにしたがって、コーディング・ツリー・ユニット(CTU)は、コーディング・ツリーとして示されるクワッド・ツリー構造を使用することによって、CUに分裂されてもよい。ピクチャ間(時間的)またはピクチャ内(空間的)予測を使用してピクチャ・エリアをコーディングするかどうかの判定は、CUレベルで行われる。各CUはさらに、PU分裂タイプに応じて、1つ、2つ、または4つのPUに分裂させることができる。1つのPU内では、同じ予測プロセスが適用され、関連情報がPUベースで復号器に送信される。PU分裂タイプに基づく予測プロセスを適用することによって残差ブロックを得た後、CUを、CUのコーディング・ツリーに類似した別のクワッド・ツリー構造に従って変換ユニット(TU)にパーティショニングすることができる。実施形態では、例えば、現在開発中の最新のビデオ・コーディング規格、汎用ビデオ・コーディング(VVC)と呼ばれるものにしたがって、クワッド・ツリーとバイナリ・ツリーの組み合わせ(QTBT)パーティショニングが、例えば、コーディング・ブロックをパーティショニングするために使用される。QTBTブロック構造では、CUは正方形または長方形のいずれかの形状を有することができる。例えば、コーディング・ツリー・ユニット(CTU)は、最初にクワッド・ツリー構造によってパーティショニングされる。クワッド・ツリー・リーフ・ノードは、バイナリ・ツリーまたはターナリー(若しくはトリプル)ツリー構造によってさらにパーティショニングされる。パーティショニング・ツリー・リーフ・ノードは、コーディング・ユニット(CU)と呼ばれ、セグメントは、それ以上のパーティショニングなしで予測および変換処理のために使用される。これは、CU、PU、TUがQTBTコーディング・ブロック構造において同じブロックサイズを有することを意味する。並列では、複数のパーティション、例えば、トリプル・ツリー・パーティションが、QTBTブロック構造と共に使用されてもよい。一例では、ビデオ符号化器20のモード選択ユニット260は、本明細書で説明されるパーティショニング技術の任意の組み合わせを実行するように構成されてもよい。
【0079】
上述のように、ビデオ符号化器20は、(例えば、予め判定された)予測モードのセットから最良又は最適な予測モードを判定又は選択するように構成されている。予測モードのセットは、例えば、イントラ予測モードおよび/またはインター予測モードを含んでもよい。
【0080】
イントラ予測
イントラ予測モードのセットは、35の異なるイントラ予測モード、例えば、DC(又は平均)モード及び平面モードのような非方向モード、又は、例えば、HEVCで定義されているような方向モードを含むことができ、又は、67の異なるイントラ予測モード、例えば、DC(又は平均)モード及び平面モードのような非方向モード、又は、例えば、VVCに対して定義されているような方向モードを含むことができる。
【0081】
イントラ予測ユニット254は、イントラ予測モードのセットのイントラ予測モードに従って、同じの現在のピクチャの隣接ブロックの再構成されたサンプルを使用して、イントラ予測ブロック265を生成するように構成されている。
【0082】
イントラ予測ユニット254(または、一般に、モード選択ユニット260)は、符号化されたピクチャ・データ21に含めるための構文要素266の形式で、エントロピー符号化ユニット270にイントラ予測パラメータ(又は、一般に、ブロックに対して選択されたイントラ予測モードを示す情報)を出力するようにさらに構成されており、これにより、例えば、ビデオ復号器30は、復号のために予測パラメータを受信し、使用することができる。
【0083】
インター予測
インター予測のセット(または可能なインター予測モード)は、利用可能な参照ピクチャ(すなわち、例えば、DBP230に記憶された少なくとも部分的に復号されたピクチャ)および他のインター予測パラメータ、例えば、参照ピクチャの全体または参照ピクチャの一部のみ、例えば、現在のブロックのエリアの周囲のサーチ・ウィンドウ・エリアが、最良一致の参照ブロックをサーチするために使用されるかどうか、および/または、例えば、画素補間、例えば、半分/セミペルおよび/またはクォータ・ペル補間が適用されるかどうかに依存する。
【0084】
上記の予測モードに加えて、スキップ・モードおよび/または直接モードが適用されてもよい。インター予測ユニット244は、モーション推定(ME)ユニットと、モーション補償(MC)ユニット(両方とも
図2には示さず)とを含んでもよい。モーション推定ユニットは、モーション推定のために、ピクチャ・ブロック203(現在のピクチャ17の現在のピクチャ・ブロック203)および復号されたピクチャ231、または少なくとも1つ若しくは複数の以前に再構成されたブロック、例えば、1つまたは複数の他の/異なる以前に復号されたピクチャ231の再構成されたブロックを受信または取得するように構成されてもよい。例えば、ビデオ・シーケンスは、現在のピクチャと以前に復号されたピクチャ231とを含んでもよく、換言すれば、現在のピクチャと以前に復号されたピクチャ231は、ビデオ・シーケンスを形成するピクチャの一部であってもよく、または、ピクチャのシーケンスを形成してもよい。符号化器20は、例えば、複数の他のピクチャの同じまたは異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ブロックの位置(x、y座標)と現在のブロックの位置との間の参照ピクチャ(または参照ピクチャ・インデックス)および/またはオフセット(空間オフセット)を、モーション推定ユニットへのインター予測パラメータとして提供するように構成されてもよい。このオフセットはモーション・ベクトル(MV)とも呼ばれる。モーション補償ユニットは、インター予測パラメータを取得、例えば、受信し、インター予測パラメータに基づいて、またはこれを使用して、インター予測を実行して、インター予測ブロック265を取得するように構成されている。モーション補償ユニットによって実行されるモーション補償は、モーション推定によって判定されたモーション/ブロック・ベクトルに基づいて予測ブロックをフェッチまたは生成することを伴ってもよく、おそらくサブピクセル精度までの補間を実行する。補間フィルタリングは、既知の画素サンプルから追加の画素サンプルを生成することができ、したがって、ピクチャ・ブロックをコーディングするために使用され得る候補予測ブロックの数を潜在的に増加させる。現在のピクチャ・ブロックのPUに対するモーション・ベクトルを受信すると、モーション補償ユニットは、参照ピクチャ・リストのうちの1つにおいてモーション・ベクトルがポイントする予測ブロックを位置付けてもよい。モーション補償ユニットはまた、ビデオ・スライスのピクチャ・ブロックを復号する際にビデオ復号器30によって使用するために、ブロック及びビデオ・スライスに関連する構文要素を生成してもよい。スライスおよびそれぞれの構文要素に追加して、またはそれらの代替として、タイル・グループおよび/またはタイルおよびそれぞれの構文要素が生成または使用されてもよい。
【0085】
エントロピー・コーディング
エントロピー符号化ユニット270は、例えば、エントロピー符号化アルゴリズムまたは方式(例えば、可変長符号化(VLC)方式、コンテキスト適応VLC方式(CAVLC)、算術コーディング方式、バイナリ化、コンテキスト適応バイナリ算術コーディング(CABAC)、構文ベースのコンテキスト適応バイナリ算術コーディング(SBAC)、確率間隔パーティショニング・エントロピー(PIPE)コーディング、若しくは別のエントロピー・コーディング方法論または技法)またはバイパス(非圧縮)を、量子化係数209、インター予測パラメータ、イントラ予測パラメータ、ループ・フィルタ・パラメータおよび/または他の構文要素に適用して、例えば、符号化ビットストリーム21の形式で出力272を介して出力され得る符号化されたピクチャ・データ21を取得して、これにより、例えば、ビデオ復号器30は、復号のためのパラメータを受信および使用することができる。符号化されたビットストリーム21は、ビデオ復号器30に送信されてもよいし、後の伝送又はビデオ復号器30による検索のためにメモリに記憶されてもよい。ビデオ符号化器20の他の構造的変形が、ビデオ・ストリームを符号化するために使用することができる。例えば、非変換ベースの符号化器20は、特定のブロックまたはフレームに対して変換処理ユニット206なしで残差信号を直接量子化することができる。別の実装では、符号化器20は、単一ユニットに組み合わされた量子化ユニット208および逆量子化ユニット210を有することができる。
【0086】
復号器および復号方法
図3は、本出願の技術を実装するように構成されたビデオ復号器30の例を示す。ビデオ復号器30は、例えば、符号化器20によって符号化されたピクチャ・データ21(例えば、符号化されたビットストリーム21)を受信して、復号されたピクチャ331を取得するように構成されている。符号化されたピクチャ・データまたはビットストリームは、符号化されたピクチャ・データを復号するための情報、例えば、符号化されたビデオ・スライスのピクチャ・ブロック(および/またはタイル・グループまたはタイル)および関連する構文要素を表すデータを含む。
【0087】
図3の例では、復号器30は、エントロピー復号ユニット304と、逆量子化ユニット310と、逆変換処理ユニット312と、再構成ユニット314(例えば、合計器314)と、ループ・フィルタ320と、復号ピクチャ・バッファ330と、モード適用ユニット360と、インター予測ユニット344と、イントラ予測ユニット354とを含む。インター予測ユニット344は、モーション補償ユニットであってもよいし、またはこれを含んでもよい。ビデオ復号器30は、いくつかの例において、
図2からのビデオ符号化器100に関して説明された符号化パスと概ね逆の復号パスを実行してもよい。符号化器20に関して説明したように、逆量子化ユニット210、逆変換処理ユニット212、再構成ユニット214、ループ・フィルタ220、復号ピクチャ・バッファ(DRB)230、インター予測ユニット344、及びイントラ予測ユニット354も、ビデオ符号化器20の「内蔵復号器」を形成すると呼ばれる。したがって、逆量子化ユニット310は、逆量子化ユニット110と機能的に同一であってもよく、逆変換処理ユニット312は、逆変換処理ユニット212と機能的に同一であってもよく、再構成ユニット314は、再構成ユニット214と機能的に同一であってもよく、ループ・フィルタ320は、ループ・フィルタ220と機能的に同一であってもよく、復号されたピクチャ・バッファ330は、復号されたピクチャ・バッファ230と機能的に同一であってもよい。したがって、ビデオ復号器30のそれぞれのユニット及び機能には、ビデ
オ符号化器
20のそれぞれのユニット及び機能に対して提供された説明が適用される。
【0088】
エントロピー復号
エントロピー復号ユニット304は、ビットストリーム21(又は一般には、符号化されたピクチャ・データ21)を解析し、例えば、符号化されたピクチャ・データ21へのエントロピー復号を実行して、例えば、量子化係数309及び/又は復号されたコーディング・パラメータ(
図3には示さず)、例えば、インター予測パラメータ(例えば、参照ピクチャ・インデックス及びモーション・ベクトル)、イントラ予測パラメータ(例えば、イントラ予測モード又はインデックス)、変換パラメータ、量子化パラメータ、ループ・フィルタ・パラメータ、及び/又は他の構文要素のいずれか又は全てを取得するように構成されている。エントロピー復号ユニット304は、符号化器20のエントロピー符号化ユニット270に関して説明したように、符号化方式に対応する復号アルゴリズムまたは方式を適用するように構成されてもよい。エントロピー復号ユニット304は、インター予測パラメータ、イントラ予測パラメータおよび/または他の構文要素をモード適用ユニット360に提供し、他のパラメータを復号器30の他のユニットに提供するようにさらに構成されてもよい。ビデオ復号器30は、ビデオ・スライス・レベルおよび/またはビデオ・ブロックレベルで構文要素を受信することができる。スライスおよびそれぞれの構文要素に追加して、またはそれらの代替として、タイル・グループおよび/またはタイルおよびそれぞれの構文要素が受信または使用されてもよい。
【0089】
逆量子化
逆量子化ユニット310は、(例えば、エントロピー復号ユニット304による、例えば、解析および/または復号による)符号化されたピクチャ・データ21からの量子化パラメータ(QP)(または、一般には、逆量子化に関係する情報)および量子化係数を受信し、量子化パラメータに基づいて逆量子化を復号された量子化係数309に適用して、変換係数311とも呼ばれることがある量子化解除係数311を取得するように構成されてもよい。逆量子化プロセスは、量子化の程度、および同様に適用されるべき逆量子化の程度を判定するために、ビデオ・スライス(またはタイル若しくはタイル・グループ)におけるビデオ・ブロックごとにビデオ符号化器20によって判定された量子化パラメータを使用することを含んでもよい。
【0090】
逆変換
逆変換処理ユニット312は、変換係数311とも呼ばれる量子化解除係数311を受信し、サンプル・ドメインにおいて再構成された残差ブロック213を取得するために、量子化解除係数311に変換を適用するように構成されてもよい。再構成された残差ブロック213は、変換ブロック213とも呼ばれることがある。変換は、逆変換、例えば、逆DCT、逆DST、逆整数変換、または概念的に類似した逆変換プロセスであってもよい。逆変換処理ユニット312は、変換パラメータまたは対応する情報を符号化されたピクチャ・データ21から受信して(例えば、エントロピー復号ユニット304による、例えば、解析および/または復号によって)、量子化解除係数311に適用される変換を判定するようにさらに構成されてもよい。
【0091】
再構成
再構成ユニット314(例えば、加算器または合計器314)は、再構成された残差ブロック313を予測ブロック365に加算し、例えば、再構成された残差ブロック313のサンプル値および予測ブロック365のサンプル値を追加することによって、サンプル・ドメインにおける再構成されたブロック315を取得するように構成されてもよい。
【0092】
フィルタリング
ループ・フィルタ・ユニット320(コーディング・ループ内またはコーディング・ループ後のいずれか)は、再構成されたブロック315をフィルタリングして、フィルタリングされたブロック321を取得して、例えば、画素遷移を平滑化するか、または、そうでなければ、ビデオ品質を改善するように構成されている。ループ・フィルタ・ユニット320は、ブロッキング解除フィルタ、サンプル・アダプティブ・オフセット(SAO)フィルタ、若しくは1つ以上の他のフィルタ、例えばバイラテラル・フィルタ、アダプティブ・ループ・フィルタ(ALF)、鮮鋭化フィルタ、平滑化フィルタ、若しくは共同フィルタ、またはそれらの任意の組み合わせなどの1つ以上のループ・フィルタを含んでもよい。ループ・フィルタ・ユニット320は、
図3ではループ内フィルタとして示されているが、他の構成では、ループ・フィルタ・ユニット320は、ポスト・ループ・フィルタとして実装されてもよい。
【0093】
復号ピクチャ・バッファ
次いで、ピクチャの復号されたビデオ・ブロック321は、復号ピクチャ・バッファ330に記憶され、復号ピクチャ・バッファ330は、他のピクチャおよび/またはそれぞれ出力表示するためのその後のモーション補償のための参照ピクチャとして記憶される。復号器30は、ユーザへの提示または視認のために、例えば出力312を介して復号されたピクチャ311を出力するように構成されている。
【0094】
予測
インター予測ユニット344は、インター予測ユニット244(特に、モーション補償ユニット)と同一であってもよく、イントラ予測ユニット354は、機能において、インター予測ユニット254と同一であってもよく、(例えば、エントロピー復号ユニット304による、例えば、解析および/または復号による)復号されたピクチャ・データ21から受信されたパーティショニングおよび/または予測パラメータまたはそれぞれの情報に基づいて、分裂またはパーティショニング決定および予測を実行する。モード適用ユニット360は、再構成されたピクチャ、ブロックまたはそれぞれのサンプル(フィルタリングされたまたはフィルタリングされていない)に基づいてブロックごとに予測(イントラ予測またはインター予測)を実行して、予測ブロック365を取得するように構成されてもよい。
【0095】
ビデオ・スライスがイントラ・コーディング(I)されたスライスとしてコーディングされるときに、モード適用ユニット360のイントラ予測ユニット354は、シグナリングされたイントラ予測モードと、現在のピクチャの以前に復号されたブロックからのデータとに基づいて、現在のビデオ・スライスのピクチャ・ブロックのための予測ブロック365を生成するように構成されている。ビデオ・ピクチャがインターコーディング(すなわち、BまたはP)されたスライスとしてコーディングされるときに、モード適用ユニット360のインター予測ユニット344(例えば、モーション補償ユニット)は、エントロピー復号ユニット304から受信されたモーション・ベクトルおよび他の構文要素に基づいて、現在のビデオ・スライスのビデオ・ブロックのための予測ブロック365を生成するように構成されている。インター予測のために、予測ブロックは、参照ピクチャ・リストのうちの1つ内の参照ピクチャのうちの1つから生成されてもよい。ビデオ復号器30は、DPB 330に記憶された参照ピクチャに基づくデフォルトの構成技術を使用して、参照フレームリスト、リスト0およびリスト1を構成してもよい。同じまたは類似のことが、タイル・グループ(例えば、ビデオ・タイル・グループ)および/またはタイル(例えば、ビデオタイル)をスライス(例えば、ビデオ・スライス)に加えて、または代替的に使用する実施形態に適用されるか、又はその実施形態によって適用することができ、例えば、ビデオは、I、PまたはBタイル・グループおよび/またはタイルを用いてコーディングされてもよい。
【0096】
モード適用ユニット360は、モーション・ベクトルまたは関係情報および他の構文要素を解析することによって、現在のビデオ・スライスのビデオ・ブロックのための予測情報を判定するように構成されており、予測情報を使用して、復号される現在のビデオ・ブロックの予測ブロックを生成する。例えば、モード適用ユニット360は、受信された構文要素のいくつかを使用して、ビデオ・スライスのビデオ・ブロックをコーディングするために使用される予測モード(例えば、イントラまたはインター予測)、インター予測スライス・タイプ(例えば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャ・リストのうちの1つ以上の構成情報、スライスの各インター符号化されたビデオ・ブロックのためのモーション・ベクトル、スライスの各インターコーディングされたビデオ・ブロックのためのインター予測ステータス、および現在のビデオ・スライスにおけるビデオ・ブロックを復号するための他の情報を判定する。同じまたは類似のことが、タイル・グループ(例えば、ビデオ・タイル・グループ)および/またはタイル(例えば、ビデオタイル)をスライス(例えば、ビデオ・スライス)に加えて、または代替的に使用する実施形態に適用されるか、又はその実施形態によって適用することができ、例えば、ビデオは、I、PまたはBタイル・グループおよび/またはタイルを用いてコーディングされてもよい。
【0097】
図3に示すビデオ復号器30の実施形態は、スライス(ビデオ・スライスとも呼ばれる)を使用することによってピクチャをパーティショニングおよび/または符号化するようにさらに構成されてもよく、ピクチャは、1つ以上のスライス(典型的には、重複しない)を使用してパーティショニングまたは復号されてもよく、各スライスは1つ以上のブロック(例えば、CTU)を含んでもよい。
【0098】
図3に示すビデオ復号器30の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)および/またはタイル(ビデオタイルとも呼ばれる)を用いて、ピクチャをパーティショニングおよび/または復号するように構成されてもよく、ピクチャは、1つ以上のタイル・グループ(典型的には、重複しない)を使用してパーティショニングまたは復号されてもよく、各タイル・グループは、例えば、1つ以上のブロック(例えば、CTU)または1つ以上のタイルを含んでもよく、各タイルは、例えば、矩形形状であってもよく、1つ以上のブロック(例えば、CTU)、例えば、完全ブロックまたは部分ブロックを含んでもよい。ビデオ復号器30の他の変形を使用して、符号化されたピクチャ・データ21を復号することができる。例えば、復号器30は、ループ・フィルタリング・ユニット320なしで出力ビデオ・ストリームを生成することができる。例えば、非変換ベースの復号器30は、特定のブロックまたはフレームに対して、逆変換処理ユニット312なしで残差信号を直接逆量子化することができる。別の実装では、ビデオ復号器30は、単一のユニットに組み合わせられた逆量子化ユニット310および逆変換処理ユニット312を有することができる。符号化器20及び復号器30では、現在のステップの処理結果をさらに処理し、次のステップに出力してもよいと理解されたい。例えば、補間フィルタリング、モーション・ベクトル導出、またはループ・フィルタリングの後に、クリップまたはシフトなどのさらなる演算を、補間フィルタリング、モーション・ベクトル導出、またはループ・フィルタリングの処理結果に対して実行してもよい。
【0099】
さらなる演算は、現在のブロックの導出されたモーション・ベクトル(アフィン・モードの制御点モーション・ベクトル、アフィン、平面、ATMVPモードのサブブロック・モーション・ベクトル、時間的モーション・ベクトルなどを含むが、これらに限定されない)に適用され得ると留意されたい。例えば、モーション・ベクトルの値は、その表現ビットにしたがって予め定義された範囲に制約される。モーション・ベクトルの表現ビットがbitDepthである場合、範囲は、-2^(bitDepth-1)~2^(bitDepth-1)-1であり、ここで、「^」はべき乗を意味する。例えば、bitDepthが16に設定される場合、範囲は-32768~32767であり、bitDepthが18に設定される場合、-131072~131071である。例えば、導出されたモーション・ベクトルの値(例えば、1つの8×8ブロック内の4×4サブブロックのMV)は、4つの4×4サブブロックのMVの整数部の間の最大差が、1ピクセル以下などNピクセル以下になるように制約される。
ここでは、bitDepthにしたがってモーション・ベクトルを制約するための2つの方法を提供する。
【0100】
方法1:フロー演算によりオーバフローMSB(最上位ビット)を除去する。
【0101】
【数8】
ここで、mvxは、画像ブロックまたはサブブロックのモーション・ベクトルの水平コンポーネントであり、mvyは、画像ブロックまたはサブブロックのモーション・ベクトルの垂直コンポーネントであり、uxおよびuyは、中間値を示す。
【0102】
たとえば、mvxの値が-32769である場合、式(1)および(2)を適用した後、結果の値は32767である。
コンピュータ・システムでは、10進数は2の補数として記憶される。
-32769の2の補数は1,0111,1111,1111(17ビット)であり、MSBが破棄されるため、結果として得られる2つの補数は0111,1111,1111,1111(10進数は32767)となり、これは、式(1)と(2)を適用した出力と同じである。
【0103】
【数9】
演算は、式(5)~(8)に示すように、mvpとmvdの和の間に適用されてもよい。
【0104】
方法2:値をクリッピングすることによりオーバフローMSBを除去する。
【0105】
【数10】
ここで、vxは、画像ブロックまたはサブブロックのモーション・ベクトルの水平コンポーネントであり、vyは、画像ブロックまたはサブブロックのモーション・ベクトルの垂直コンポーネントであり、x、yおよびzはそれぞれMVクリッピング・プロセスの3つの入力値に対応し、関数Clip3の定義は以下の通りである。
【0106】
【0107】
図4は、本開示の一実施形態によるビデオ・コーディング・デバイス400の概略図である。ビデオ・コーディング・デバイス400は、本明細書で説明される開示される実施形態を実装するのに好適である。一実施形態では、ビデオ・コーディング・デバイス400は、
図1Aのビデオ復号器30のような復号器、又は
図1Aのビデオ符号化器20のような符号化器であってもよい。
【0108】
ビデオ・コーディング・デバイス400は、データを受信するための入口ポート410(または入力ポート410)および受信機ユニット(Rx)420と、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)430と、データを送信するための送信機ユニット(Tx)440および出口ポート450(または出力ポート450)と、データを記憶するためのメモリ460を含む。ビデオ・コーディング・デバイス400はまた、光信号または電気信号の出入りのために、入口ポート410、受信機ユニット420、送信機ユニット440、および出口ポート450に結合された光から電気(OE)コンポーネントおよび電気から光(EO)コンポーネントを含んでもよい。
【0109】
プロセッサ430は、ハードウェアおよびソフトウェアによって実装される。プロセッサ430は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサ)、FPGA、ASIC、およびDSPとして実装されてもよい。プロセッサ430は、入口ポート410、受信機ユニット420、送信機ユニット440、出口ポート450、およびメモリ460と通信している。プロセッサ430は、コーディング・モジュール470を含む。コーディング・モジュール470は、上述の開示された実施形態を実装する。例えば、コーディング・モジュール470は、種々のコーディング演算を実装、処理、準備、または提供する。したがって、符号化モジュール470を含めることは、ビデオ・コーディング・デバイス400の機能性への実質的な改善を提供し、ビデオ・コーディング・デバイス400の異なる状態への変換をもたらす。代替的には、符号化モジュール470は、メモリ460に格納された命令として実装され、プロセッサ430によって実行される。
【0110】
メモリ460は、1つまたは複数のディスク、テープ・ドライブ、およびソリッドステート・ドライブを含んでもよく、オーバ・フロー・データ記憶デバイスとして使用され、そのようなプログラムが実行のために選択されたときにプログラムを記憶し、プログラム実行中に読み出された命令およびデータを記憶してもよい。メモリ460は、例えば、揮発性および/または不揮発性であってもよく、リード・オンリー・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、ターナリー・コンテンツ・アドレス指定可能メモリ(TCAM)、および/またはスタティック・ランダム・アクセス・メモリ(RSAM)であってもよい。
【0111】
図5は、例示的な実施形態による
図1からのソース・デバイス12および宛先デバイス14のいずれかまたは両方として使用されてもよい装置500の簡略ブロック図である。
【0112】
装置500内のプロセッサ502は、中央処理ユニットとすることができる。
代替的には、プロセッサ502は、現在存在する、または今後開発される情報を操作または処理することが可能な、任意の他のタイプのデバイスまたは複数のデバイスとすることができる。開示された実装は、示すように単一のプロセッサ、例えば、プロセッサ502を用いて実施することができるが、複数のプロセッサを使用して、速度および効率における利点を達成することができる。
【0113】
装置500内のメモリ504は、実装におけるリード・オンリー・メモリ(ROM)デバイスまたはランダム・アクセス・メモリ(RAM)デバイスとすることができる。メモリ504として、任意の他の好適なタイプの記憶デバイスを使用することができる。メモリ504は、バス512を使用して、プロセッサ502によってアクセスされるコード及びデータ506を含むことができる。メモリ504は、オペレーティング・システム508およびアプリケーション・プログラム510をさらに含むことができ、アプリケーション・プログラム510は、プロセッサ502が本明細書で説明される方法を実行することを許可する少なくとも1つのプログラムを含む。例えば、アプリケーション・プログラム510は、アプリケーション1~Nを含むことができ、これは、本明細書で説明される方法を実行するビデオ・コーディング・アプリケーションをさらに含む。装置500はまた、ディスプレイ518などの1つ以上の出力デバイスをさらに含むことができる。ディスプレイ518は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチ・センシティブ要素と組み合わせるタッチ・センシティブ・ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に接続することができる。
【0114】
ここでは、単一のバスとして示されているが、装置500のバス512は、複数のバスから構成することができる。さらに、二次ストレージ514は、装置500の他のコンポーネントに直接結合することができ、またはネットワークを介してアクセスすることができ、メモリカードなどの単一の一体化ユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。したがって、装置500は、広範な構成で実装することができる。
【0115】
インター予測ユニット244は、モーション推定(ME)ユニットおよびモーション補償(MC)ユニット(
図2には示さず)を含んでもよい。モーション推定ユニットは、モーション推定のために、ピクチャ・ブロック203(現在のピクチャ201の現在のピクチャ・ブロック203)および復号されたピクチャ331、または少なくとも1つ若しくは複数の以前に再構成されたブロック、例えば、1つまたは複数の他の/異なる以前に復号されたピクチャ331の再構成されたブロックを受信または取得するように構成されてもよい。例えば、ビデオ・シーケンスは、現在のピクチャと以前に復号されたピクチャ331とを含んでもよく、換言すれば、現在のピクチャと以前に復号されたピクチャ331は、ビデオ・シーケンスを形成するピクチャの一部であってもよく、または、ピクチャのシーケンスを形成してもよい。符号化器200は、例えば、複数の他のピクチャの同じまたは異なるピクチャの複数の参照ブロックから参照ブロックを選択し、参照ブロックの位置(x、y座標)と現在のブロックの位置との間の参照ピクチャ(または参照ピクチャ・インデックス、...)および/またはオフセット(空間オフセット)を、モーション推定ユニット(
図2には示さず)へのインター予測パラメータとして提供するように構成されてもよい。このオフセットはモーション・ベクトル(MV)とも呼ばれる。
【0116】
マージは、HEVCで使用され、VVCに継承される重要なモーション推定ツールである。マージ推定を実行するためには、最初にすべきことは、マージ候補リストを構成することであり、候補の各々は、1つまたは2つの参照ピクチャ・リストが使用されるかどうかの情報を含むモーション・データを含み、モーション・デートは、各リストに対する参照インデックスおよびモーション・ベクトルの情報も含む。マージ候補リストは、以下の候補に基づいて構成される。すなわち、a.5つの空間的隣接ブロックから導出される最大4つの空間的マージ候補、b.2つの時間的な共位置ブロックから導出される1つの時間的マージ候補;c.組み合わせられた双予測候補とゼロ・モーション・ベクトル候補を含む追加的なマージ候補である。
【0117】
マージ候補リストで最初に追加された候補は、空間的隣接である。
図6の右側に示される例により、A1、B1、B0、A0、B2を順次この順番でチェックすることにより、マージ・リストに最大4つの候補が挿入される。
【0118】
コーディング・ブロックが利用可能であり、モーション情報を含むかどうかを単にチェックするだけでなく、コーディング・ブロックのすべてのモーション・データをマージ候補として取る前に、いくつかの追加の冗長性チェックが実行される。これらの冗長性チェックは、2つの異なる目的のために2つのカテゴリに分割することができる。a. リスト内に冗長なモーション・データを有する候補を有することを避ける。b. 冗長な構文を生成する他の手段によって表現される2つのパーティションをマージすることを防止する。
【0119】
Nが空間マージ候補の数である場合に、完全な冗長性チェックは(N・(N-1))/2モーション・データの比較からなる。5つの潜在的な空間的マージ候補の場合、マージ・リスト内のすべての候補が異なるモーション・データを有することを保証するために、10のモーション・データ比較が必要となる。HEVCの開発中に、冗長なモーション・データに対するチェックは、コーディング効率が維持される方法でサブセットに低減されたが、比較論理は著しく低減された。最終的な設計では、候補ごとに2回以下の比較が実行され、結果として5回の全体的な比較をもたらす。{A1、B1、B0、A0、B2}の順序で、B0のみB1をチェックし、A0のみA1をチェックし、B2のみA1、B1をチェックする。パーティショニング冗長性チェックの実施形態では、2N×Nパーティショニングの下部PUは、候補B1を選択することによって上部のものとマージされる。これは、2N×2NのCUとして等しくシグナリングされることが可能な同じのモーション・データを有する2つのPUを有する1つのCUをもたらす。全体として、このチェックは、矩形および非対称パーティション2N×N、2N×nU、2N×nD、N×2N、nR×2N、およびnL×2Nの全ての第2のPUに適用される。空間マージ候補については、冗長性チェックのみが実行され、モーション・データは候補ブロックからそのままコピーされることに留意する。したがって、ここではモーション・ベクトル・スケーリングは必要とされない。
【0120】
時間的マージ候補のためのモーション・ベクトルの導出は、時間的モーション・ベクトル予測子TMVPの場合と同じである。マージ候補はすべてのモーション・データを含み、TMVPは1つのモーション・ベクトルのみを含むため、全体のモーション・データの導出はスライス・タイプに依存する。双予測スライスについて、各参照ピクチャ・リストに対してTMVPが導出される。各リストのTMVPの可用性に依存して、予測タイプは双予測またはTMVPが利用可能なリストに設定される。関連する参照ピクチャ・インデックスはすべてゼロに等しくなるように設定される。従って、単一予測スライスについては、リスト0のTMVPのみが、ゼロに等しい参照ピクチャ・インデックスと共に導出される。
【0121】
少なくとも1つのTMVPが利用可能で、時間的マージ候補がリストに追加された場合、冗長性チェックは実行されない。これにより、マージ・リストの構成は、エラーの弾力性を改善する共位置にあるピクチャとは無関係になる。時間的マージ候補が冗長であるため、マージ候補リストに含まれない場合を考える。失われた共位置にあるピクチャの場合、復号器は、時間的な候補を導出することができず、したがって、それが冗長かどうかをチェックすることができなかった。後続の候補すべてのインデックス化は、この影響を受ける。
【0122】
堅牢性理由を解析する場合、マージ候補リストの長さは固定される。空間的および時間的マージ候補が追加された後、リストはまだ固定長に達しない可能性がある。非長適応リスト・インデックス・シグナリングに伴って生じるコーディング効率損失を補償するために、追加の候補が生成される。スライス・タイプに依存して、リストを完全に生成するために最大2種類の候補が使用される。a.組み合わされた双予測候補。b.ゼロ・モーション・ベクトル候補。
【0123】
双予測スライスでは、ある候補の参照ピクチャ・リスト0のモーション・データと、別の候補のリスト1のモーション・データを組み合わせることにより、既存のものに基づいて追加候補を生成することができる。これは、1つの候補、例えば、第1のものからΔx0、Δy0、Δt0をコピーし、他の候補、例えば、第2のものからΔx1、Δy1、Δt1をコピーすることによって行われる。異なる組み合わせが事前に定義されており、表1に与えられる。
【0124】
【0125】
組み合わされた双予測候補、または単一予測スライスについて、リストがまだ満杯でないときに、ゼロ・モーション・ベクトル候補がリストを完成するために計算される。すべてのゼロ・モーション・ベクトル候補は、単一予測スライスに対して1つのゼロ変位モーション・ベクトルと双予測スライスに対して2つのゼロ変位モーション・ベクトルを有する。参照インデックスはゼロに等しく設定され、参照インデックスの最大数に達するまで、追加候補ごとに1ずつインクリメントされる。さらに候補が欠落している場合、ゼロに等しい参照インデックスを使用してこれらを作成する。全ての追加候補に対して、これらのチェックを省略することはコーディング効率の損失をもたらさないことが分かったので、冗長性チェックは実行されない。
【0126】
インター・ピクチャ予測モードでコーディングされた各PUに対して、merge_flagは、ブロック・マージがモーション・データを導出するために使用されることを示す。merge_idxは、さらに、モーション・データを提供するマージ・リスト内の候補を判定するために使用される。このPUレベルのシグナリングの他に、マージ・リスト内の複数の候補がスライスヘッダ内でシグナリングされる。デフォルト値は5で、マージ・リスト内の候補の数は5との差として表される(5_minus_max_num_merge_cand)。このようにして、5は0番目に対する短い符号語でシグナリングされるが、1つの候補のみを使用すると4番目に対する長い符号語でシグナリングされる。マージ候補リスト構成プロセスへの影響に関しては、リストがマージ候補の最大数が含まれた後で終了するが、全体のプロセスは同じままである。1つの設計では、マージ・インデックス・コーディングの最大値は、リスト内の利用可能な空間的および時間的候補の数によって与えられた。例えば、2つの候補のみが利用可能である場合に、インデックスはフラグとして効率的にコーディングすることができる。しかし、マージ・インデックスを解析するためには、実際の候補数を取得するために、全体のマージ候補リストを構成しなければならない。転送エラーのために利用できない隣接ブロックを仮定すると、マージ・インデックスを解析することはもはや不可能である。
【0127】
HEVCにおけるブロック・マージ概念の適用は、スキップ・モードとの組み合わせである。以前のビデオ・コーディング標準では、スキップ・モードは、明示的にシグナリングされるのではなく、モーション・データが推測されること、および予測残差がゼロであること、すなわち、変換係数が送信されないことをブロックに対して示すために使用された。HEVCでは、インター・ピクチャ予測スライスにおける各CUの先頭に、a. CUが1つのPU(2N×2Nパーティション・タイプ)のみを含む、b. マージモードがモーション・データ(1に等しいmerge_flagの値)を導出するために使用される、c. ビットストリームに残差データが存在しないことを意味する、skip_flagがシグナリングされる。HEVCで導入され、VVC固有の別のモーション推定ツールは、高度モーション・ベクトル予測、AMVPと呼ばれる。AMVPモードでは、モーション・ベクトルは、水平コンポーネント(x)及び垂直コンポーネント(y)に関して、モーション・ベクトル予測器(MVP)に対する差分としてコーディングされる。両方のモーション・ベクトル差(MVD)コンポーネントの計算は、MVDx=MVx-MVPx、MVDy=MVy-MVPyとして示されている。
【0128】
現在のブロックのモーション・ベクトルは、通常、現在のピクチャまたは前のコーディングされたピクチャにおける隣接するブロックのモーション・ベクトルと相関される。隣接するブロックは、同様のモーションを有する同じ移動物体に対応する可能性が高く、物体のモーションは、経時的に突然変化する可能性が低い。したがって、予測子として隣接ブロックにおけるモーション・ベクトルを使用すると、シグナリングされたモーション・ベクトル差のサイズが減少する。MVPは、通常、空間的隣接ブロックの既に復号されたモーション・ベクトルから、または共位置のピクチャにおける時間的隣接ブロックから導出される。HEVCでは、MVPを暗黙的に導出するアプローチは、MVPのリストからどのMVPがモーション・ベクトル導出のために使用されるかを明示的にシグナリングする、モーション・ベクトル競合として知られる技術に置き換えられた。HEVCにおける可変コーディング・クワッドツリー・ブロック構造は、1つのブロックをもたらし、このブロックは、潜在的なMVP候補として、モーション・ベクトルを有するいくつかの隣接ブロックを有する。左隣接を例にとると、最悪の場合、64×64ルマ・コーディング・ツリー・ブロックがそれ以上分裂されず、左隣接のものが最大深度に分裂された場合に、64×64ルマ予測ブロックは16の8×4ルマ予測ブロックを左側に有することができる。高度モーション・ベクトル予測(AMVP)は、柔軟なブロック構造を説明するためにモーション・ベクトル競合を修正するために導入された。HEVCの開発中に、最初のAMVP設計は、コーディング効率と実装に優しい設計との間の良好なトレードオフを提供するために、著しく単純化された。
【0129】
AMVPの最初の設計には、3つの異なるクラスの予測子からの5つのMVPを含んだ。すなわち、空間的隣接からの3つのモーション・ベクトル、3つの空間的予測子の中央、および共位置の時間的隣接ブロックからのスケーリングされたモーション・ベクトルである。さらに、予測子のリストは、最も可能性の高いモーション予測子を第1の位置に配置するように再順序付けし、最小のシグナリング・オーバヘッドを保証するために冗長な候補を除去することによって修正された。これにより、AMVPの設計が大幅に単純化された。例えば、中央予測子を除去し、リスト内の候補の数を5から2に減らし、リスト内の候補の順序を修正し、冗長性チェックの数を減らした。AMVP候補リスト構成の最終設計は、以下の2つのMVP候補を含む。
・5つの空間的隣接ブロックから導出される最大2つの空間的候補MVP
・両方の空間的候補MVPが利用できないか、またはそれらが同一である場合に、2つの時間的な共位置ブロックから導出される1つの時間的候補MVP
・空間的、時間的、または両方の候補が利用できない場合のゼロ・モーション・ベクトル。
【0130】
空間的候補記述において、2つの空間的候補AとBの導出プロセスフローを
図6に示す。候補Aについては、左下隅の2つのブロックA0およびA1からのモーション・データが2パスアプローチで考慮される。第1のパスでは、候補ブロックのいずれかが現在のブロックの参照インデックスに等しい参照インデックスを含むかどうかがチェックされる。発見された第1のモーション・ベクトルは候補Aとしてとられる。A0とA1からのすべての参照インデックスが現在のブロックの参照インデックスとは異なる参照ピクチャを指しているときに、関連するモーション・ベクトルは直接使用することができない。したがって、第2のパスでは、モーション・ベクトルは、候補参照ピクチャと現在の参照ピクチャとの間の時間的距離にしたがってスケーリングされる必要がある。時間的距離は、ピクチャの表示順序を定義するピクチャ・オーダ・カウント(POC)値間の差として表される。
【0131】
候補Bについては、A0およびA1が第1のパスでチェックされるのと同様に、候補B0~B2が順次チェックされる。しかしながら、第2のパスは、ブロックA0およびA1がいかなるモーション情報も含まない場合、すなわちブロックA0およびA1が利用可能でない場合、またはイントラ・ピクチャ予測を使用してコーディングされている場合にのみ実行される。次いで、候補Aは、スケーリングされていない候補Bが見つかった場合、スケーリングされていない候補Bに等しく設定され、候補Bは、候補Bの第2のスケーリングされていない、またはスケーリングされた変形に等しく設定される。潜在的なスケーリングされていない候補がまだ存在する可能性がある場合、第2のパスは終了され、第2のパスは、候補B0からB2から導出されたスケーリングされていないMVおよびスケーリングされたMVをサーチする。
この設計は、B0、B1、およびB2から独立してA0およびA1を処理することを可能にする。
Bの導出は、B0からB2から導出されるスケーリングされた、または追加のスケーリングされていないMVをサーチするために、A0とA1の両方の可用性にのみ認識すべきである。
この依存性は、これが候補Bのための複雑なモーション・ベクトル・スケーリング演算を減少させることを考慮すると許容可能である。モーション・ベクトル・スケーリングの数を減少させることは、モーション・ベクトル予測子導出プロセスにおける顕著な複雑性の減少を表す。
【0132】
時間的候補選択プロセス
図6から、現在のブロックの左上の空間的隣接ブロックのモーション・ベクトルのみが空間的MVP候補として考慮されることが分かる。これは、現在のブロックの右下のブロックがまだ復号されておらず、したがって、それらのモーション・データが利用できないという事実によって説明することができる。共位置のピクチャはすでに復号されている参照ピクチャであるため、同じ位置のブロックから、共位置のブロック右のブロックから、または下のブロックからのモーション・データを考慮することもできる。HEVCでは、現在のブロックの右下と中心のブロックが、良好な時間的モーション・ベクトル予測子(TMVP)を提供するのに最も好適であると判定された。これらの候補が
図6に示されており、ここで、C0は右下の隣接を表し、C1は中央ブロックを表す。C0のモーション・データが先に考慮され、C0の動きデータが利用可能ではない場合、中央の共位置の候補ブロックのモーション・データを用いて時間的MVP候補Cを導出する。C0のモーション・データは、関連するPUが現在のCTU行を越えてCTUに属する場合には利用できないとみなされる。これにより、共位置にあるモーション・データを記憶するためのメモリ帯域幅要件が最小限に抑えられる。空間的MVP候補とは対照的に、モーション・ベクトルは同じ参照ピクチャを参照することができるが、モーション・ベクトル・スケーリングはTMVPには必須である。
【0133】
マージ・リスト構成とAMVPリスト構成の両方に対して、履歴ベースのモーション・ベクトル予測子(HMVP)が使用される。履歴ベースのMVP(HMVP)マージ候補は、空間MVPとTMVPの後にマージ/AMVPリストに追加される。この方法では、以前にコーディングされたブロックのモーション情報をテーブルに記憶し、現在のCUのMVPとして使用する。複数のHMVP候補を持つテーブルは、符号化/復号処理中に維持される。新しいCTU行がエンカウントされる場合に、テーブルはリセット(空)される。サブブロックのインターコーディングされていないCUがある場合はいつでも、関連するモーション情報が新しいHMVP候補としてテーブルの最後のエントリに追加される。
【0134】
一例では、HMVPテーブル・サイズSは5に設定され、これは、最大5つの履歴ベースのMVP(HMVP)候補がテーブルに追加されてもよいことを示す。新しいモーション候補をテーブルに挿入する場合に、制約付き先入れ先出し(FIFO)規則が利用され、ここでは、テーブルに同一のHMVPがあるかどうかを見つけるために、冗長性チェックが最初に適用される。テーブル内に同一のHMVPが存在する場合、同一のHMVPがテーブルから除去され、その後すべてのHMVP候補が前方に移動される。
【0135】
HMVP候補は、マージ候補リスト/AMVPリスト構成プロセスで使用することができる。テーブル内の最新の複数のHMVP候補が順番にチェックされ、TMVP候補の後に候補リストに挿入される。冗長性チェックは、空間的または時間的マージ候補へのHMVP候補に適用される。
冗長性チェック演算の回数を減らすために、以下の簡略化を導入した。
マージ・リスト生成に使用するHMVP候補の数が(N<=4)に設定されているか?M:(8-N)、ここで、Nは、マージ・リスト内の既存候補の数を示し、Mは、テーブル内の利用可能なHMVP候補の数を示す。使用可能なマージ候補の総数が最大許容マージ候補から1を引いた値に達する場合に、HMVPからのマージ候補リスト構成プロセスが終了する。
【0136】
VVCドラフトのインターモード並列化では、IBCモードが導入される。イントラ・ブロック・コピー(IBC)は、SCCのHEVC拡張で採用されているツールである。それは、スクリーン・コンテンツ素材のコーディング効率を改善する。IBCモードはブロック・レベル・コーディング・モードとして実装されるので、各CUに対して最適なブロック・ベクトル(またはモーション・ベクトル)を見つけるために、ブロック・マッチング(BM)が符号化器で実行される。ここで、モーション・ベクトルは、現在のブロックから参照ブロックへの変位を示すために使用され、これは、現在のピクチャ内で既に再構成されている。IBCコーディングされたCUのルマ・モーション・ベクトルは整数精度である。クロマ。モーション・ベクトルも同様に整数精度にクリッピングされる。AMVRと組み合わせる場合、IBCモードは1ペルと4ペルのモーション・ベクトル精度を切り替えることができる。IBCコーディングされたCUは、イントラまたはインター予測モード以外の第3の予測モードとして扱われる。メモリ消費と復号器の複雑性を減らすために、VTM5のIBCは、現在のCTUを含む所定の領域の再構成部分のみを使用することを可能にする。この制限は、ハードウェア実装のためのローカル・オンチップ・メモリを使用して、IBCモードを実装することを可能にする。
【0137】
符号化器側では、IBCに対してハッシュベースのモーション推定が実行される。符号化器は、16ルマ・サンプル以下の幅または高さのブロックに対してRDチェックを実行する。非マージモードでは、ブロック・ベクトル・サーチがまずハッシュベースのサーチを用いて実行される。ハッシュ・サーチが有効な候補を返さない場合、ブロック・マッチングベースのローカル・サーチが実行される。
【0138】
ハッシュベースのサーチでは、現在のブロックと参照ブロックの間のハッシュ・キー・マッチング(32ビットCRC)は、許容されるすべてのブロックサイズに拡張される。現在のピクチャにおけるすべての位置に対するハッシュ・キーの計算は、4×4のサブブロックに基づく。より大きなサイズの現在のブロックでは、すべての4×4サブブロックのすべてのハッシュ・キーが対応する参照位置のハッシュ・キーと一致する場合に、ハッシュ・キーが参照ブロックのハッシュ・キーと一致するように判定される。複数の参照ブロックのハッシュ・キーが現在のブロックのものと一致することが分かった場合、一致した各参照のブロック・ベクトル・コストが計算され、最小コストのものが選択される。ブロック・マッチング・サーチでは、サーチ範囲は現在のCTU内の現在のブロックの左上にあるN個のサンプルに設定される。CTUの開始時に、Nの値は、時間的参照ピクチャがない場合、128に初期化され、少なくとも1つの時間的参照ピクチャがある場合、64に初期化される。ハッシュヒット比は、ハッシュベースのサーチを使用して一致を見つけたCTU内のサンプルのパーセンテージとして定義される。現在のCTUを符号化しながら、ハッシュヒット比が5%未満である場合、Nは、半分に減少する。
【0139】
CUレベルでは、IBCモードがフラグ付きでシグナリングされ、IBC AMVPモードまたはIBCスキップ/マージモードとして以下のようにシグナリングすることができる。
IBCスキップ/マージモード:マージ候補インデックスは、リスト内のブロック・ベクトルのうち、隣接する候補IBCコーディングされたブロックのどれが現在のブロックを予測するために使用されるかを示すために使用される。
IBC AMVPモード:ブロック・ベクトル差は、モーション・ベクトル差と同様にコーディングされる。
ブロック・ベクトル予測法は、予測子として2つの候補を使用する。
ブロック・ベクトル予測子インデックスを示すためにフラグがシグナリングされる。
IBCはIBCマージ/スキップ・モードおよびIBC AMVPモードを導入したため、追加のIBCマージ・リストおよびAMVPリストを構成する必要がある。
VVC Draft 5.0では、マージモードとAMVPモードのBV予測子は、共通の予測子リストを共有しており、以下の要素を含む。
・ 2つの空間的隣接位置(A1、B1)
・ 5つのHMVPエントリ
・ デフォルトでゼロベクトル
マージモードでは、このリストの最大6つのエントリが使用され、AMVPモードでは、このリストの最初の2エントリが使用される。また、このリストは、共有マージ・リスト領域要件(SMR内で同じリストを共有)に準拠する。
上記のBV予測子候補リストに加えて、HMVP候補と既存のマージ候補(A1,B1)との間のプルーニング演算を単純化するために、別の方法が使用される。
簡略化では、最大2回のプルーニング演算が存在する。
・ 最後のHMVP候補HkとA1の間のプルーニング
・ 最後のHMVP候補HkとB1の間のプルーニング
プルーニング処理は、2つのIBCマージ候補が同じであるかどうかを比較することを意味する。より具体的には、プルーニング処理は、2つのIBCマージ候補間のブロック・ベクトルが同じであるかどうかを比較する。
【0140】
以下のように、JVET-N1001-v5(VVC Draft 5.0)の8.6.2.2従属節においてIBCルマ・モーション・ベクトル予測が説明される。
[外1]
【0141】
別の例では、以下のように、IBCルマ・モーション・ベクトル予測が説明される。
[外2]
MaxNumMergeCandは、以下のように導出される。
six_minus_max_num_merge_candは、スライスでサポートされるマージング・モーション・ベクトル予測(MVP)候補の最大数を6から差し引いた値を指定する。マージングMVP候補の最大数MaxNumMergeCandは、以下のように導出される。
MaxNumMergeCand=6-six_minus_num_merge_cand
six_minus_max_num_ibc_merge_candの値は、1~6の範囲とする。
six_minus_max_num_merge_candは、SPSでサポートされるマージング・モーション・ベクトル予測(MVP)候補の最大数を6から差し引いた値を指定する。six_minus_max_num_ibc_merge_candの値は、0~5の範囲とする。
マージングMVP候補の最大数MaxNumMergeCandは、以下のように導出される。
MaxNumMergeCand=6-six_minus_num_merge_cand
いくつかの実施形態では、IBCモードの場合、この構文はMaxNumIbcMergeCandとしても名付けられ得る。この場合、MaxNumMergeCandは、インタープロセスのために使用されてもよい。
sps_ibc_enabled_flagが1に等しい場合に、six_minus_max_num_ibc_merge_candは、SPSでサポートされているIBCマージング・ブロック・ベクトル予測(BVP)候補の最大数を6から差し引いた値を指定する。six_minus_max_num_ibc_merge_candの値は、0~5の範囲とする。
IBCマージングBVP候補の最大数MaxNumIbcMergeCandは、以下のように導出される。
if(sps_ibc_enabled_flag)
MaxNumIbcMergeCand=6-6_minus_max_num_ibc_merge_cand
else
MaxNumIbcMergeCand=0
1に等しいsps_ibc_enabled_flagは、IBC予測モードがコーディングされたレイヤ・ビデオ・シーケンスCLVSにおけるピクチャの復号に使用されてもよいことを指定する。0に等しいsps_ibc_enabled_flagは、IBC予測モードがCLVSに使用されないことを指定する。sps_ibc_enabled_flagが存在しない場合に、それは0に等しいと推定される。
general_merge_flagは、以下のように定義される。
general_merge_flag[x0][y0]は、現在のコーディング・ユニットのフレーム間予測パラメータが隣接するフレーム間予測パーティションから推測されるかどうかを指定する。アレイ・インデックスx0、y0は、ピクチャの左上のルマ・サンプルに対する、考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定する。
general_merge_flag[x0][y0]が存在しない場合に、それは0に等しいと推定される。
- cu_skip_flag[x0][y0]が1に等しい場合、general_merge_flag[x0][y0]は、1に等しいと推定される。
- そうでなければ、general_merge_flag[x0][y0]は、0に等しいと推定される。
1に等しいcu_skip_flag[x0][y0]は、現在のコーディング・ユニットに対して、PまたはBスライスを復号する場合に、IBCモードフラグpred_mode_ibc_flag[x0][y0]およびmerge_data()構文構造のうちの1つ以上のものを除いて、cu_skip_flag[x0][y0]の後に構文要素が解析されないことを指定し、Iスライスを復号する場合に、merge_idx[x0][y0]を除いて、cu_skip_flag[x0][y0]の後に構文要素が解析されないことを指定する。0に等しいcu_skip_flag[x0][y0]は、コーディング・ユニットがスキップされないことを指定する。アレイ・インデックスx0、y0は、ピクチャの左上のルマ・サンプルに対する、考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定する。
cu_skip_flag[x0][y0]が存在しない場合に、それは0に等しいと推定される。
mvp_l0_flagは以下のように定義される。
mvp_l0_flag[x0][y0]は、リスト0のモーション・ベクトル予測器インデックスを指定し、x0、y0は、ピクチャの左上の
ルマ・サンプルに対する考慮されるコーディング・ブロックの左上のルマ・サンプルの位置(x0,y0)を指定する。
mvp_l0_flag[x0][y0]が存在しない場合に、それは0に等しいと推定される。
MaxNumMergeCandまたはMaxNumIbcMergeCandが1に等しくセットされる場合に、構成されたマージ候補リストの長さは、利用可能な空間的モーション・ベクトル候補の数に依存して、1または2に等しくてもよい。復号されたIBCブロックのmvp_l0_flagが1に等しい場合、IBCブロックのモーション・ベクトルは定義されないことがある。この問題を解決するために,以下の解決策が導入される。
テーブル2は、様々なステータスのavailableFlagA
1およびavailableFlagB
1を有する候補リスト内のモーション・ベクトルを示す。
【表4】
【0142】
実施形態1:
MaxNumMergeCandまたはMaxNumIbcMergeCandの値が1にセットされる場合に、復号器側はビットストリームからmvp_l0_flagの値を解析する必要はなく、mvp_l0_flagの値は0と推定される。
一例では、修正された構文テーブルを以下のように示す。
【表5】
別の例では、
コーディング・ユニット構文:
【表6】
この実施形態では、
IBC予測モードでコーディングされたコーディング・ユニットの一般的な復号処理
このプロセスへの入力は、
- 現在のピクチャの左上のルマ・サンプルに対する現在のルマ・コーディング・ブロックの左上のサンプルを指定するルマ位置(xCb,yCb)、
- ルマ・サンプルにおける現在のコーディング・ブロックの幅を指定する変数cbWidth、
- ルマ・サンプルにおける現在のコーディング・ブロックの高さを指定する変数cbHeight、
― 単一ツリーを使用するか、デュアルツリーを使用するかを指定する変数treeTypeであって、デュアルツリーが使用される場合、それは、現在のツリーが、ルマ・コンポーネントに対応するか、クロマ・コンポーネントに対応するかを指定する。
このプロセスの出力は、ループ内フィルタリング前の修正された再構成されたピクチャである。
量子化パラメータの導出プロセスは、ルマ位置(xCb,yCb)、ルマ・サンプルにおける現在のコーディング・ブロックの幅cbWidth、ルマ・サンプルにおける現在のコーディング・ブロックの高さcbHeight、およびの変数treeTypeを入力として呼び出される。
変数IsGt4by4は、以下のように導出される。
IsGt4by4=(cbWidth*cbHeight)>16
IBC予測モードでコーディングされたコーディング・ユニットの復号プロセスは、以下の順序のステップを含む。
1. 現在のコーディング・ユニットのブロック・ベクトル・コンポーネントは、以下のように導出される。
- ブロック・ベクトル・コンポーネントの導出プロセスは、ルマ・コーディング・ブロック位置(xCb,yCb)、ルマ・コーディング・ブロック幅cbWidth、ルマ・コーディング・ブロック高さcbHeight、およびルマ・ブロック・ベクトルbvLを出力として呼び出される。
- treeTypeがSINGLE_TREEに等しい場合に、クロマ・ブロック・ベクトルの派生プロセスは、ルマ・ブロック・ベクトルbvLを入力とし、クロマ・ブロック・ベクトルbvCを出力として呼び出される。
2. 現在のコーディング・ユニットの予測サンプルは、以下のように導出される。
- IBCブロックの復号プロセスは、ルマ・コーディング・ブロック位置(xCb,yCb)、ルマ・コーディング・ブロック幅cbWidth、ルマ・コーディング・ブロック高さcbHeight、ルマ・ブロック・ベクトルbvL、0に等しくセットされた変数cIdxを入力とし、予測ルマ・サンプルの(cbWidth)x(cbHeight)アレイpredSamples
LであるIBC予測サンプル(predSamples)を出力として呼び出される。
- treeTypeがSINGLE_TREEに等しい場合に、現在のコーディング・ユニットの予測サンプルは、以下のように導出される。
- IBCブロックの復号プロセスは、ルマ・コーディング・ブロック位置(xCb,yCb)、ルマ・コーディング・ブロック幅cbWidth、ルマ・コーディング・ブロック高さcbHeight、クロマ・ブロック・ベクトルbvC、および1に等しくセットされた変数cIdxを入力とし、クロマ・コンポーネントCbのための予測クロマ・サンプルの(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイpredSamples
CbであるIBC予測サンプル(predSamples)を出力として呼び出される。
- IBCブロックの復号プロセスは、ルマ・コーディング・ブロック位置(xCb,yCb)、ルマ・コーディング・ブロック幅cbWidth、ルマ・コーディング・ブロック高さcbHeight、クロマ・ブロック・ベクトルbvC、および2に等しくセットされた変数cIdxを入力とし、クロマ・コンポーネントCrのための予測クロマ・サンプルの(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイpredSamples
CrであるIBC予測サンプル(predSamples)を出力として呼び出される。
3. 現在のコーディング・ユニットの残差サンプルは、以下のように導出される。
- インター予測モードでコーディングされたコーディング・ブロックの残差信号の復号プロセスは、ルマ位置(xCb,yCb)に等しくセットされた位置(xTb0,yTb0)、ルマ・コーディング・ブロック幅cbWidthに等しくセットされた幅nTbW、ルマ・コーディング・ブロック高さcbHeightに等しくセットされた高さnTbH、および0に等しくセットされた変数cIdxを入力とし、アレイresSamples
Lを出力として呼び出される。
- treeTypeがSINGLE_TREEに等しい場合に、インター予測モードでコーディングされたコーディング・ブロックの残差信号の復号プロセスは、クロマ位置(xCb/SubWidthC,yCb/SubHeightC)に等しくセットされた位置(xTb0,yTb0)、クロマ・コーディング・ブロック幅cbWidth/SubWidthCに等しくセットされた幅nTbW、クロマ・コーディング・ブロック高さcbHeight/SubHeightCに等しくセットされた高さnTbH、および1に等しくセットされた変数cIdxを入力とし、アレイresSamples
Cbを出力として呼び出される。
- treeTypeがSINGLE_TREEに等しい場合に、インター予測モードでコーディングされたコーディング・ブロックの残差信号の復号プロセスは、クロマ位置(xCb/SubWidthC,yCb/SubHeightC)に等しくセットされた位置(xTb0,yTb0)、クロマ・コーディング・ブロック幅cbWidth/SubWidthCに等しくセットされた幅nTbW、クロマ・コーディング・ブロック高さcbHeight/SubHeightCに等しくセットされた高さnTbH、および2に等しくセットされた変数cIdxを入力とし、アレイresSamples
Crを出力として呼び出される。
4. 現在のコーディング・ユニットの再構成されたサンプルは、以下のように導出される。
- 色コンポーネントのピクチャ再構成プロセスは、(xCb,yCb)に等しくセットされたブロック位置(xCurr,yCurr)、cbWidthに等しくセットされたブロック幅nCurrSw、cbHeightに等しくセットされたブロック高さnCurrSh、0に等しくセットされた変数cIdx、predSamples
Lに等しくセットされた(cbWidth)x(cbHeight)アレイpredSamples、およびresSamplesLに等しくセットされた(cbWidth)x(cbHeight)アレイresSamplesを入力として呼び出され、出力はループ内フィルタリング前の修正された再構成された画像である。
- treeTypeがSNGLE_TREEに等しい場合に、色コンポーネントのピクチャ再構成プロセスは、xCb/SubWidthC,yCb/SubHeightC)に等しくセットされたブロック位置(xCurr,yCurr)、cbWidth/SubWidthCに等しくセットされたブロック幅nCurrSw、cbHeight/SubHeightCに等しくセットされたブロック高さnCurrSh、1に等しくセットされた変数cIdx、predSamples
Cbに等しくセットされた(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイpredSamples、およびresSamples
Cbに等しくセットされた(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイresSamplesを入力として呼び出され、出力はループ内フィルタリング前の修正された再構成されたピクチャである。
- treeTypeがSNGLE_TREEに等しい場合に、色コンポーネントのピクチャ再構成プロセスは、xCb/SubWidthC,yCb/SubHeightC)に等しくセットされたブロック位置(xCurr,yCurr)、cbWidth/SubWidthCに等しくセットされたブロック幅nCurrSw、cbHeight/SubHeightCに等しくセットされたブロック高さnCurrSh、2に等しくセットされた変数cIdx、predSamples
Crに等しくセットされた(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイpredSamples、およびresSamplesCrに等しくセットされた(cbWidth/SubWidthC)x(cbHeight/SubHeightC)アレイresSamplesを入力として呼び出され、出力はループ内フィルタリング前の修正された再構成されたピクチャである。
[外3]
【0143】
実施形態2:
MaxNumMergeCandまたはMaxNumIbcMergeCandの値が1にセットされる場合に、モーション・ベクトル候補リスト内の第2の候補がデフォルト値、例えばゼロ・モーション・ベクトルに等しくセットされる。
[外4]
【0144】
実施形態3:
モーション・ベクトル候補リストがIBC AMVPモードに対して少なくとも2つのエントリを有することを保証する。
この解決策では、モーション・ベクトル候補リストは、general_merge_flagに依存して構成される。general_merge_flagがtrue(例えば、general_merge_flagの値が1)である場合に、変数maxNumListCandが、MaxNumMergeCandまたはMaxNumIbcMergeCandに等しくセットされ、general_merge_flagがfalse(例えば、general_merge_flagの値が0)である場合に、、maxNumListCandまたはMaxNumIbcMergeCandが、2に等しくセットされる。次いで、モーション・ベクトル候補リストの構成では、リスト内の候補の数がmaxNumListCandに等しくなるまで、HMVP候補およびゼロ候補がリストに追加される。
[外5]
【0145】
実施形態4:
モーション・ベクトル候補リストがIBC AMVPモードに対して少なくとも2つのエントリを有することを保証する。
この解決策では、少なくとも2つのエントリを有するモーション・ベクトル候補リストが構成される。
モーション・ベクトル候補リスト構成では、リスト内の候補の数がMaxNumMergeCandまたはMaxNumIbcMergeCandと2の間の最大数に等しくなるまで、HMVP候補およびゼロ候補がリストに追加される。
[外6]
【0146】
実施形態5:
モーション・ベクトル候補リストがIBC AMVPモードに対して少なくとも2つのエントリを有することを保証する。
この解決策では、モーション・ベクトル候補リスト構成がMaxNumMergeCandまたはMaxNumIbcMergeCandでデカップルされ、6つのエントリを有する動きベクトル候補リストが常に構成される。リスト内の候補の数が6になるまで、HMVP候補およびゼロ候補がリストに追加される。
[外7]
【0147】
実施形態6:
MaxNumMergeCandまたはMaxNumIbcMergeCandが1より大きいことを保証する。
[外8]
【0148】
例1. 復号デバイスによって実装されるコーディングの方法であって、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBC MVPモードを使用して予測される、ことと、
現在のブロックのMVP候補の最大数の値が1より大きい場合に、MVPインデックスの値をゼロに設定することと、
MVPインデックス及び候補リストにしたがって現在のブロックのモーション・ベクトルを得ることと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
例2. 現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル、spsレベル又はppsレベルで構文要素を解析することによって得られる、例1に記載の方法。
例3. 候補リストは、現在のブロックに隣接する少なくとも1つの隣接ブロック、及び履歴ベースのモーション・ベクトル予測子HMVPリストに基づいて得られ、少なくとも1つの隣接ブロックは、IBCモードを使用して予測される、例1又は2に記載の方法。
例4. 復号デバイスによって実装されるコーディングの方法であって、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBC MVPモードを使用して予測される、ことと、
現在のブロックのMVPインデックスの値が1で、現在のブロックのMVP候補の最大数の値が1に等しい場合に、現在のブロックのモーション・ベクトルをデフォルト値に設定することと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
例5. 現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル、spsレベル又はppsレベルで構文要素を解析することによって得られる、例4に記載の方法。
例6. デフォルト値は、ゼロである、例4又は5に記載の方法。
例7. 復号デバイスによって実装されるコーディングの方法であって、
現在のブロックのモーション・ベクトル予測MVP候補をマージする最大数の値を得ることであって、現在のブロックは、ブロック内コピーIBC MVPモードを使用して予測される、ことと、
現在のブロックのMVP候補の最大数の値が1に等しい場合に、現在のブロックに隣接する少なくとも1つの隣接するブロック及び履歴ベースのモーション・ベクトル予測子HMVPリストにしたがって、現在のブロックの候補リストを得ることであって、現在のブロックの候補リストは、2つの候補を含み、少なくとも1つの隣接するブロックは、IBCモードを使用して予測される、取得することと、
現在のブロックのMVPインデックス及び候補リストにしたがって、現在のブロックのモーション・ベクトルを得ることと、
現在のブロックのモーション・ベクトルにしたがって現在のブロックの予測サンプル値を得ることと、を含む。
例8. 現在のブロックのMVP候補の最大数の値は、ビットストリームからスライス・レベル、タイル・グループ・レベル、spsレベル又はppsレベルで構文要素を解析することによって得られる、例7に記載の方法。
例9. 例1~8のいずれか1つに記載の方法を実施するための処理回路を含む、復号器(30)。
例10. 例1~8のいずれか1つに記載の方法を実施するためのプログラムコードを含むコンピュータ・プログラム製品。
例11. 1つ以上のプロセッサと、
プロセッサに結合され、プロセッサによる実行のためのプログラミングを記憶する非一時的なコンピュータ可読記憶媒体であって、プログラミングは、プロセッサによって実行される場合に、例1~8のいずれか一項に記載の方法を実施するように復号器を設定する、非一時的なコンピュータ可読記憶媒体と、を含む、復号器。
【0149】
以下、上記の実施形態に示す符号化方式及び復号方式の適用とそれらを用いたシステムの説明である。
図8は、コンテンツ配信サービスを実現するためのコンテンツ供給システム3100を示すブロック図である。このコンテンツ供給システム3100は、捕捉デバイス3102、端末デバイス3106を含み、任意選択で、ディスプレイ3126を含む。捕捉デバイス3102は、通信リンク3104を介して端末デバイス3106と通信する。通信リンクは、上述の通信チャネル13を含んでもよい。通信リンク3104は、WIFI、イーサネット、ケーブル、無線(3G/4G/5G)、USB、又はそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。
【0150】
捕捉デバイス3102は、データを生成し、上記の実施形態に示す符号化方法によってデータを符号化してもよい。代替的には、捕捉デバイス3102は、ストリーミングサーバ(図示せず)にデータを配信することができ、サーバは、データを符号化し、符号化されたデータを端末デバイス3106に送信する。捕捉デバイス3102は、カメラ、スマートフォン又はパッド、コンピュータ若しくはラップトップ、ビデオ会議システム、PDA、車載デバイス、又はそれらのいずれかの組み合わせなどを含むが、これらに限定されない。例えば、捕捉デバイス3102は、上述のようにソース・デバイス12を含んでもよい。データがビデオを含む場合に、捕捉デバイス3102に含まれるビデオ符号化器20は、実際にビデオ符号化処理を実行することができる。データがオーディオ(すなわち、音声)を含む場合、捕捉デバイス3102に含まれるオーディオ符号化器は、実際にオーディオ符号化処理を実行することができる。いくつかの実際的なシナリオでは、捕捉デバイス3102は、符号化されたビデオ及びオーディオ・データを、それらを一緒に多重化することによって配布する。他の実際的なシナリオ、例えば、ビデオ会議システムにおいては、符号化されたオーディオ・データ及び符号化されたビデオ・データは多重化されない。捕捉デバイス3102は、符号化されたオーディオ・データ及び符号化されたビデオ・データを、端末デバイス3106に別々に配信する。
【0151】
コンテンツ供給システム3100では、端末デバイス310は、符号化されたデータを受信及び再生する。端末デバイス3106は、スマートフォン又はPad3108、コンピュータ若しくはラップトップ3110、ネットワーク・ビデオ・レコーダ(NVR)/デジタル・ビデオ・レコーダ(DVR)3112、TV3114、セット・トップ・ボックス3116、ビデオ会議システム3118、ビデオ監視システム3120、パーソナル・デジタル・アシスタント(PDA)3122、車載デバイス3124、又はこれらのいずれかの組み合わせなどの、データ受信及び復元能力を有し、前述の符号化されたデータを復号することが可能なデバイスとすることができる。例えば、捕捉デバイス3106は、上述のようにソース・デバイス14を含んでもよい。符号化されたデータがビデオを含む場合に、端末デバイスに含まれるビデオ復号器30は、ビデオ復号を実行するように優先される。符号化されたデータがオーディオを含む場合に、端末デバイスに含まれるオーディオ復号器は、オーディオ復号処理を実行するように優先される。
【0152】
ディスプレイを有する端末デバイス、例えば、スマートフォン又はパッド3108、コンピュータ又はラップトップ3110、ネットワーク・ビデオ・レコーダ/デジタル・ビデオ・レコーダ3112、TV3114、パーソナル・デジタル・アシスタント3122、又は車両搭載デバイス3124では、端末デバイスは、復号されたデータをそのディスプレイに供給することができる。ディスプレイを搭載しないデバイス、例えば、STB3116、ビデオ会議システム3118、又はビデオ監視システム3120では、外部ディスプレイ3126がそこに接触されて、復号されたデータを受信し、示す。このシステムの各デバイスが符号化又は復号を行う場合に、前述の実施形態に示すように、ピクチャ符号化デバイス又はピクチャ復号デバイスを使用することができる。
図9は、端末デバイス3106の一例の構成を示す図である。端末デバイス3106が、捕捉デバイス3102からストリームを受信した後、プロトコル進行ユニット3202は、ストリームの伝送プロトコルを分析する。このプロトコルは、リアルタイム・ストリーミング・プロトコル(RTSP)、ハイパー・テキスト・トランスファー・プロトコル(HTTP)、HTTPライブ・ストリーミング・プロトコル(HLS)、MPEG-DASH、リアルタイム・トランスポート・プロトコル(RTP)、リアルタイム・メッセージング・プロトコル(RTMP)、又はそれらの任意の種類の組み合わせなどを含むが、これらに限定されない。プロトコル進行ユニット3202がストリームを処理した後に、ストリームファイルは、生成される。ファイルは、逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータを符号化されたオーディオ・データと符号化されたビデオ・データとに分離することができる。上述したように、いくつかの実際的なシナリオ、例えば、ビデオ会議システムにおいては、符号化されたオーディオ・データ及び符号化されたビデオ・データは多重化されない。この状況では、符号化データは、逆多重化部3204を介することなく、ビデオ復号器3206及び音声復号器3208に送信される。
【0153】
逆多重化処理を介して、ビデオ・エレメントリー・ストリーム(ES)、オーディオES、及び任意選択で字幕が生成される。前述の実施形態で説明されたビデオ復号器30を含むビデオ復号器3206は、上述の実施形態に示す復号方法によってビデオESを復号して、ビデオ・フレームを生成し、このデータを同期ユニット3212に送信する。オーディオ復号器3208は、オーディオESを復号して、オーディオ・フレームを生成し、このデータを同期ユニット3212に送信する。代替的には、ビデオ・フレームは、同期ユニット3212に供給する前に、バッファ(
図9には示さず)に記憶させてもよい。代替的には、オーディオ・フレームは、同期ユニット3212に供給する前に、バッファ(
図9には示さず)に記憶させてもよい。同期ユニット3212は、ビデオ・フレームとオーディオ・フレームを同期させ、ビデオ/オーディオ・ディスプレイ3214にビデオ/オーディオを供給する。例えば、同期ユニット3212は、ビデオ情報及びオーディオ情報の提示を同期させる。情報は、符号化されたオーディオ及びビジュアル・データの提示に関するタイム・スタンプ及びデータストリーム自体の送達に関するタイム・スタンプを使用して、構文でコーディングすることができる。字幕がストリームに含まれる場合、字幕復号器3210は、字幕を復号し、それをビデオ・フレーム及びオーディオ・フレームと同期させ、ビデオ/オーディオ/字幕をビデオ/オーディオ/字幕ディスプレイ3216に供給する。本発明は、前述のシステムに限定されるものではなく、前述の実施形態におけるピクチャ符号化デバイス又はピクチャ復号デバイスのいずれかを、他のシステム、例えば、自動車システムに組み込むことができる。
【0154】
数学演算子
この出願で使用される数学演算子は、Cプログラミング言語で使用されるものに類似する。しかし、整数除算演算と算術シフト演算の結果は、より正確に定義され、べき乗や実数値除算などの追加演算が定義される。番号付けとカウントの規則は一般に0から開始する。例えば、「第1」は、0番に等価であり、「第2」は、1番に等価であるなどである。
【0155】
算術演算子
次の算術演算子は、次のように定義される。
+ 加算
- 減算(2引数演算子として)又は否定(単項接頭演算子として)
* 行列乗算を含む乗算
xy べき乗。xの指数yのべき乗を指定する。他の文脈では、そのような表記は、べき乗として解釈することを意図しない上付き文字として使用される。
/ 結果がゼロに向かって切り捨てられる整数除算。たとえば、7/4と-7/-4は1に切り捨てられ、-7/4と7/-4は-1に切り捨てられる。
÷ 切り捨てや丸めが意図されていない数式の除算を示すために使用される。
【0156】
【数12】
切り捨てや丸めが意図されていない数式の除算を示すために使用される。
【0157】
【数13】
xからyまでのすべての整数値をとるiのf(i)の和である。
x % y 剰余。xの残りをyで割った余りであり、x>=0及びy>0の整数x及びyに対してのみ定義される。
【0158】
論理演算子
次の論理演算子は、次のように定義される。
x&&y xとyのブール論理「and」
x||y xとyのブール論理「or」
! ブール論理「否定」
x?y:z xがTRUE又は0でない場合、yの値、そうでない場合はzの値で評価される。
【0159】
関係演算子
次の関係演算子は、次のように定義される。
> より大きい
>= 以上
< より小さい
<= 以下
== 等しい
!= 等しくない
値「na」 (適用不可)が割り当てられた構文要素又は変数に関係演算子が適用される場合に、値「na」はその構文要素又は変数の重複しない値として扱われる。値「na」は他の値と等しくないとみなされる。
【0160】
ビット単位演算子
次のビット単位演算子は、次のように定義される。
& ビット単位の「and」である。整数引数について操作する場合に、整数値の2の補数表現について操作する。別の引数よりも少ないビットを含むバイナリ引数について操作する場合に、より短い引数は、0に等しいより大きなビットを加えることによって拡張される。
| ビット単位の「or」である。整数引数について操作する場合に、整数値の2の補数表現について操作する。別の引数よりも少ないビットを含むバイナリ引数について操作する場合に、より短い引数は、0に等しいより大きなビットを加えることによって拡張される。
^ ビット単位の「exclusive or」である。整数引数について操作する場合に、整数値の2の補数表現について操作する。別の引数よりも少ないビットを含むバイナリ引数について操作する場合に、より短い引数は、0に等しいより大きなビットを加えることによって拡張される。
x>>y xをyバイナリ・ディジットの2の補数整数表現の算術右シフトである。この関数は、yの負でない整数値に対してのみ定義される。右シフトの結果として最上位ビット(MSB)にシフトされたビットは、シフト演算の前にxのMSBに等しい値を持つ。
x<<y xをyバイナリ・ディジットの2の補数整数表現の算術左シフトである。この関数は、yの負でない整数値に対してのみ定義される。左シフトの結果として最下位ビット(LSB)にシフトされたビットは、0に等しい値を持つ。
【0161】
割り当て演算子
次の代入演算子は、次のように定義される。
= 代入演算子
++ インクリメント、すなわちx++はx=x+1と等価であり、配列インデックスで使用される場合に、インクリメント演算の前に変数の値で評価される。
-- デクリメント、すなわちx++はx=x+1と等価であり、配列インデックスで使用される場合に、デクリメント演算の前に変数の値で評価される。
+= 指定された量だけインクリメントする、すなわちx+=3はx=x+3と等価であり、x+=(-3)はx=x+(-3)と等価である。
-= 指定された量だけデクリメントする、すなわちx-=3はx=x-3と等価であり、x-=(-3)はx=x-(-3)と等価である。
【0162】
範囲表記
値の範囲を指定するには、次の表記が使用される。
x=y..z xは、yからzまでの整数値をとり、x、y及びzは、整数であり、zは、yより大きい。
【0163】
数学関数
次の数学関数が定義される。
【0164】
【数14】
Asin(x) 正弦の逆三角関数であって、-1.0~1.0の範囲の引数xについて操作し、
-π÷2~π÷2(ラジアンの単位)の範囲の出力値である。
Atan(x) 正接の逆三角関数であって、引数xについて操作し、-π÷2~π÷2(ラジアンの単位)の範囲の出力値である。
【0165】
【数15】
Ceil(x) x以上の最小整数である。
【0166】
【数16】
Cos(x) ラジアン単位の引数xについて操作する余弦の三角関数である。
Floor(x) x以下の最大整数である。
【0167】
【数17】
Ln(x) xの自然対数(底e対数、eは自然基本定数2.718281828....)。
log2(x) xの底2の対数
Log10(x) xの底10の対数
【0168】
【数18】
Sin(x) ラジアン単位の引数xについて操作する正弦の三角関数である。
【0169】
【数19】
Tan(x) ラジアン単位の引数xについて操作する正接の三角関数である。
【0170】
演算優先度順位
式の優先順位が丸かっこを使用して明示的に示されない場合、次の規則が適用される。
- より高い優先度の演算は、より低い優先度の演算の前に評価される。
- 同じ優先度の演算は、左から右へ順次評価される。
以下の表は、最高から最低までの演算の優先度を指定しており、表中のより高い位置は、より高い優先度を示す。
Cプログラミング言語でも使用されるこれらの演算子については、本明細書で使用される優先順位は、Cプログラミング言語で使用される優先順位と同じである。
【0171】
【表7】
表:(表の上部)最高から(表の下部)最低までの演算優先度
【0172】
論理演算のテキスト記載
本テキストにおいて、次の形式で数学的に記載される論理演算の記述
【0173】
【0174】
【数21】
本テキストにおいて、各「If ... Otherwise, if ... Otherwise, ...」文は、直後に「If ... 」が続く、「... as follows」又は「... the following applies」で導入される。「If ... Otherwise, if ... Otherwise, ...」 の最後の条件は、常に「Otherwise, ...」である。「If ... Otherwise, if ... Otherwise, ...」 文は、「... as follows」又は「... the following applies」を終わりの「Otherwise, ...」と一致させることによって識別することができる。
本テキストにおいて、次の形式で数学的に記載される論理演算の記述
【0175】
【0176】
【数23】
本テキストにおいて、次の形式で数学的に記載される論理演算の記述
【0177】
【0178】
【数25】
本発明の実施形態は、主にビデオ・コーディングに基づいて説明されてきたが、コーディング・システム10、符号化器20及び復号器30(並びに対応するシステム10)の実施形態と、本明細書に説明される他の実施形態もまた、静止ピクチャ処理又はコーディング、すなわち、ビデオ・コーディングにおけるように、任意の先行又は連続するピクチャから独立した個々のピクチャの処理又はコーディングのために構成されてもよいことに留意されたい。一般に、ピクチャ処理コーディングが単一のピクチャ17に限定される場合、フレーム間予測ユニット244(符号化器)及び344(復号器)のみが利用可能ではないことがある。ビデオ符号化器20及びビデオ復号器30の他の全ての機能(ツール又は技術とも呼ばれる)は、例えば、残留計算204/304、変換206、量子化208、逆量子化210/310、(逆)変換212/312、パーティショニング262/362、フレーム内予測254/354、及び/又はループ・フィルタリング220、320、及びエントロピー符号化270及びエントロピー復号304は、静止ピクチャ処理のために等しく使用されてもよい。例えば、符号化器20及び復号器30の実施形態、並びに、例えば、符号化器20及び復号器30を参照して、本明細書で説明される機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実装されてもよい。ソフトウェアで実装される場合、機能は、コンピュータ可読媒体に記憶されるか、又は1つ以上の命令又はコードとして通信媒体を介して送信され、ハードウェアベースの処理ユニットによって実行される。コンピュータ可読媒体は、データ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、又は、例えば通信プロトコルにしたがって、ある場所から他の場所へのコンピュータ・プログラムの転送を容易にする任意の媒体を含む通信媒体を含んでもよい。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、又は(2)信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技術の実装のための命令、コード及び/又はデータ構造を検索するために、1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセス可能な任意の利用可能な媒体であり得る。コンピュータ・プログラム製品は、コンピュータ可読記憶媒体を含んでもよい。
【0179】
一例として、限定するものではないが、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスク記憶デバイス、磁気ディスクストレージ、又は他の磁気記憶デバイス、フラッシュメモリ、又は命令又はデータ構造の形式で所望のプログラムコードを記憶するために使用することができ、コンピュータによってアクセスすることができる他の任意の媒体を含むことができる。また、任意の接続は、適切にコンピュータ可読媒体とも称される。例えば、同軸ケーブル、光ファイバケーブル、ツイスト・ペア、デジタル加入者線(DSL)、又は赤外線、無線、及びマイクロ波などの無線技術を用いて、ウェブサイト、サーバ、又は他のリモート・ソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイスト・ペア、DSL、又は赤外線、無線、及びマイクロ波のような無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的な媒体を含まず、代わりに非一時的で有形の記憶媒体に向けられると理解されたい。ディスクは、本明細書で使用する場合、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー・ディスク及びブルーレイ・ディスクを含み、ディスクは、通常、磁気的にデータを再生し、ディスクは光学的にレーザでデータを再生する。上記の組み合せはまた、コンピュータ可読媒体の範囲に含まれるべきである。
【0180】
命令は、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル論理アレイ(FPGA)、又は他の同等の集積又は個別論理回路などの1つ以上のプロセッサによって実行されてもよい。したがって、本明細書で使用する用語「プロセッサ」は、前述の構造のいずれか、又は本明細書で説明される技術の実装に好適な他の構造を指してもよい。追加的に、いくつかの態様において、本明細書で説明される機能は、符号化及び復号のために構成される専用ハードウェア及び/又はソフトウェア・モジュール内に提供されてもよく、又は組み合わされたコーデックに組み込まれてもよい。また、この技術は、1つ以上の回路又は論理素子で完全に実装することができる。
【0181】
本開示の技術は、無線ハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、広範な種類のデバイス又は装置で実装されてもよい。本開示では、開示された技術を実行するように構成されているデバイスの機能的態様を強調するために、種々のコンポーネント、モジュール、又はユニットが説明されるが、必ずしも異なるハードウェアユニットによる実現を必要としない。むしろ、上述のように、種々のユニットは、コーデック・ハードウェア・ユニット内で組み合わされてもよく、又は、適切なソフトウェア及び/又はファームウェアと共に、上述の1つ以上のプロセッサを含む、相互動作可能なハードウェアユニットの集合によって提供されてもよい。