JP2023509296A - 複数のイントラブロックコピーモードを備えるビデオコーディング - Google Patents
複数のイントラブロックコピーモードを備えるビデオコーディング Download PDFInfo
- Publication number
- JP2023509296A JP2023509296A JP2022532616A JP2022532616A JP2023509296A JP 2023509296 A JP2023509296 A JP 2023509296A JP 2022532616 A JP2022532616 A JP 2022532616A JP 2022532616 A JP2022532616 A JP 2022532616A JP 2023509296 A JP2023509296 A JP 2023509296A
- Authority
- JP
- Japan
- Prior art keywords
- block
- coding
- ibc
- coding block
- intra
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 64
- 239000013598 vector Substances 0.000 claims description 51
- 238000006073 displacement reaction Methods 0.000 claims description 46
- 230000033001 locomotion Effects 0.000 claims description 44
- 230000009466 transformation Effects 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 abstract description 25
- 238000004519 manufacturing process Methods 0.000 abstract description 6
- 238000005192 partition Methods 0.000 description 36
- 230000006872 improvement Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 230000006835 compression Effects 0.000 description 11
- 238000007906 compression Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000002474 experimental method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000001413 cellular effect Effects 0.000 description 6
- 238000012856 packing Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 229910052799 carbon Inorganic materials 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000001815 facial effect Effects 0.000 description 2
- 230000008921 facial expression Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/88—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
複数のイントラブロックモードでビデオコーディングを実装するための例示的な方法、装置、システム及び製造物品(例えば、物理的な記憶媒体)が開示されている。本明細書に開示する例示的なビデオエンコーダ装置は、画像フレームのコーディングブロックに対して変換動作を実行して、コーディングブロックの変換されたバージョンを決定する、コーディングブロック変換器を含む。開示する例示的なビデオエンコーダ装置は、コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックサーチ及びコーディングブロックの変換されたバージョンに基づく第2のイントラブロックサーチを実行して、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定する、探索器も含み、候補予測器ブロックは、コーディングブロックのイントラブロック予測器に対応する。
Description
(関連出願の参照)
この特許は、2020年1月3日に出願された「ENHANCED INTRA BLOCK COPY MODES FOR IMPROVED SCREEN CONTENT COMPRESSION」という名称の米国仮出願第62/956,813号の利益を主張する。米国仮出願第62/956,813号の優先権が主張される。米国仮出願第62/956,813号は、その全文が参照により本明細書に援用される。
この特許は、2020年1月3日に出願された「ENHANCED INTRA BLOCK COPY MODES FOR IMPROVED SCREEN CONTENT COMPRESSION」という名称の米国仮出願第62/956,813号の利益を主張する。米国仮出願第62/956,813号の優先権が主張される。米国仮出願第62/956,813号は、その全文が参照により本明細書に援用される。
(技術分野)
この開示は、一般的には、ビデオコーディングに関し、より具体的には、複数のイントラブロック(intra block)コピーモードを有するビデオコーディング(video coding)に関する。
この開示は、一般的には、ビデオコーディングに関し、より具体的には、複数のイントラブロック(intra block)コピーモードを有するビデオコーディング(video coding)に関する。
ビデオストリームは、ビデオストリームに含まれる画像フレームのシーケンスの冗長性を低減及び/又は除去するために、空間的(イントラピクチャ)(ピクチャ内)予測及び/又は時間的(インターピクチャ)(ピクチャ間)予測を実行することによって圧縮されることがある。ビデオ圧縮は、1つ以上のビデオコーディング業界標準、並びにメディアデバイスによって生成されるスクリーンコンテンツのような特定のタイプのビデオコンテンツをサポートするように調整されたそのような標準の拡張に従って実行されることがある。メディアデバイスは、そのようなビデオ圧縮を実装することによって、デジタルビデオ情報を効率的に送信(transmit)、受信(receive)、符号化(encode)、復号化(decode)及び/又は格納(store)することがある。
図面は、縮尺通りではない。代わりに、層又は領域の厚さは、図面において拡大されることがある。一般に、同じ参照番号は、同じ又は類似の部分、要素などを参照するために、図面及び添付の記述を通じて使用される。接続参照(例えば、取り付けられる、結合される、接続される、接合されるなど)は、広く解釈されるべきであり、他のことが示されていない限り、要素の集まりの間の中間部材及び/又は要素の間の相対的な移動を含むことがある。よって、接続参照は、2つの要素が互いに固定された関係において直接的に接続されることを必ずしも暗示しない。
「第1」、「第2」、「第3」などの記述子は、本明細書において、別々に言及されることがある複数の要素又はコンポーネント(構成要素)を特定するときに使用される。それらの使用の文脈に基づいてその他に特定又は理解されない限り、そのような記述子は、リスト内の優先順位、物理的順序もしくは配列、又は時間的順序の如何なる意味にも帰すること意図せず、開示の例を理解するのを容易にするために、複数の要素又はコンポーネントを別々に参照するためのラベルとして使用されるにすぎない。幾つかの例において、「第1の」という記述子は、詳細な記述中の要素を参照するために使用される一方で、同じ要素は、「第2の」又は「第3の」のような異なる記述子を有する請求項において参照されることがある。そのような場合、そのような記述子は、複数の要素又はコンポーネントを参照することを容易にするために使用されるにすぎない。
複数のイントラブロックコピーモード(ブロック内コピーモード)でビデオコーディングを実装するための例示的な方法、装置、システム及び製造物品(例えば、物理的記憶媒体)が、本明細書に開示される。ビデオストリームが、ビデオストリームに関連するサイズ及び/又は帯域幅を低減させるために、1つ以上のビデオコーディング(video coding))業界標準に従って圧縮されることがあり、且つ/或いはストリームの特性が変更されることがある。変更されることがあるビデオストリームの特性は、ビデオストリームの解像度(resolution)及びビットレート(bit rate)を含むが、これらに限定されない。ビデオ符号化(video encoding)は、コンピューティングデバイス及び/又はコンピューティングデバイスのコンポーネント間の伝送のためにビデオストリームを準備するときに使用されることもある。ビデオ符号化業界標準は、アドバンストビデオコーディング(AVC:Advanced Video Coding)標準、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)ビデオ符号化標準などを含む。
例えば、高効率ビデオコーディング(HEVC/H.265)は、H.264/AVCに亘るビットレート低減を達成するために、ISO/IEC Moving Picture Experts Group及びITU-T Video Coding Experts Groupによって最近確立された。続いて、HEVCのScreen Content Coding(SCC)拡張が、スクリーンコンテンツ(screen content)とも呼ぶ静止画像、テキスト及びアニメーションを含む、ビデオについての改善された圧縮性能を可能にするために作成された。スクリーンコンテンツは、一般に、ビデオ中に存在するデジタル的に生成されたピクセル(画素)を指す。デジタル的に生成されたピクセルは、イメージャ又はカメラによって取り込まれるピクセルとは対照的に、より早期のAVC及びHEVC標準では考慮されなかった異なる特性を有することがある。2017年3月に公表されたSCC拡張を追加したHEVC標準のITU-Tバージョンが、より早期の標準におけるそれらのギャップの少なくとも一部に対処する。SCC拡張の1つの構成は、イントラブロックコピー(IBC:Intra Block Copy)構成である。
本明細書に開示する例示的な解決策は、スクリーンコンテンツコーディング性能を改良することを目的として、1つ以上の追加的なIBC予測モードを実装することによって、既存の標準化されたIBC構成を改良する。イントラブロックコピー(IBC)は、従来のイントラ予測(intra prediction)及びインター予測(inter predication)モードに加えて、コーディングモードとしてHEVCのSCC拡張に導入された、コーディングツールである。IBCは、インター予測に類似しているが、異なる点は、(コーディングユニットとも呼ぶ)コーディングブロックがIBCモードにおいてコーディングされるときに、コーディングブロックの(予測器ユニットとも呼ぶ)候補予測器ブロックが、同じ画像フレーム(同じピクチャ)内の再構成されたブロックから選択されることである。その結果、IBCは、現在のフレーム/ピクチャ内で「運動補償(motion compensation)」と考えられることができる。
本明細書に開示する複数のイントラブロックコピーモードを有するビデオコーディングのための例示的な解決策は、従来のIBCモードに加えて、他のIBC予測モードを提供することによって、スクリーンコンテンツの圧縮を改良する。従来のIBCモードは、候補予測器ブロックと、現在のフレーム内の従前に符号化されたブロックの空間的近傍における、現在のコーディングブロックに対する予測器ブロックの位置を識別する関連する変位ベクトル(例えば、運動ベクトル)とを識別する。本明細書に開示する例において、IBCは、以下に更に詳細に開示する、4つの異なるミラー変換モード(mirror translation modes)及び3つの異なる回転変換モード(rotation translation modes)のような、追加のIBCモードを含むように拡張される。幾つかの例において、このような変換モードは、正方形ブロックのための幾つかの又は全てのサポートコーディングブロックサイズ(例えば、4×4から128×128ピクセルまで)、及び幾つかの又は全てのコーディングブロック形状(例えば、正方形、長方形など)について実行されることができる。幾つかの例において、本明細書に開示するような、複数のIBCモードを有するスクリーンコンテンツクリップ(例えば、ウェブページ/テキストコンテンツ、ゲームコンテンツなど)のビデオコーディングは、スクリーンコンテンツのタイプに依存して、従来のIBCコーディングに対して(Bjontegaardレートピーク信号対ノイズ比、BD-PSNRを使用して測定される)0.8%~2.63%の平均性能向上を示す。
よって、本明細書に開示する例示的なビデオコーディング技術は、他の既存の技術に対してスクリーンコンテンツコーディングの効率を改良することができる。また、幾つかの従来の業界標準は、「マクロブロック(macroblocks)」を静的サイズの要素として扱う一方で、より新しいツリー再帰コーデックにおいて、エンコーダは、例えば、最大の視覚品質で最低のビットコストをもたらすために、ピクセルコーディングブロックがいつより精細なコーディングブロックに分割されるべきか或いはより大きなコーディングブロックにされるべきかを評価することができる。また、幾つかの従来の標準は、各マクロブロックを(インター予測又はイントラ予測タイプのような)均一な予測タイプ及び(8×8又は4×4のような)均一な変換サイズで処理する一方で、高効率標準は、予測タイプの混合及び変換サイズの混合を可能にし、両方ともエンコーダ決定プロセスに基づく。対照的に、本明細書に開示するビデオコーディング技術によって処理されることができるコーディングブロックは、動的にサイズ決定されることができ、ミラーモード及び/又は回転モードのような、異なるIBCモードタイプの任意の組み合わせを含むことがあり、それらは、以下に更に詳細に開示される。そのような柔軟性は、他の既存のビデオコーディング技術に対して、スクリーンコンテンツコーディングの効率を更に向上させることができる。
複数のイントラブロックコピーモードでビデオコーディングを実装するためのこれらの及び他の例示的な方法、装置、システム及び製造物品(例えば、物理的記憶媒体)は、以下に更に詳細に開示される。
図を参照すると、本開示の教示に従った複数のイントラブロックコピーモードでビデオコーディングを実装するための例示的なビデオエンコーダ100のブロック図が、図1に示されている。図示する例のビデオエンコーダ100は、例示的なビデオインターフェース105と、例示的なイントラブロックコピーエンコーダ110と、1つ以上の例示的な予測エンコーダ115と、例示的なモードセレクタ120と、例示的なストリームエンコーダ125とを含む。ビデオインターフェース105は、例示的な非圧縮入力ビデオストリーム130を受け入れるように構成される。例えば、非圧縮入力ビデオストリーム130は、カメラ及び/又は他の撮像デバイスの出力ビデオストリーム、(例えば、メディアデバイス、ビデオゲームコンソール、コンピュータ、サーバ、携帯電話などのような)コンピューティングデバイスによって生成される(例えば、ビデオゲームに対応するビデオストリーム、コンピュータ生成グラフィックスストリームなどのような)コンピュータ生成ビデオストリーム、及び/又はそれらの任意の組み合わせに対応することができる。図示において、ビデオインターフェース105は、入力ビデオストリーム130を、イントラブロックコピーエンコーダ110及び/又は予測エンコーダ115によって符号化されるべき画像フレーム(例えば、ピクチャ)のシーケンスにセグメント化する。
図示する例のイントラブロックコピーエンコーダ110は、この開示の教示に従った複数のイントラブロックコピーモードでビデオ符号化を実装する。幾つかの例において、予測エンコーダ115は、イントラ予測エンコーダ及びインター予測エンコーダのうちの1つ以上に対応する。インター予測は、ビデオの連続した画像フレームに亘る冗長性を利用するビデオ符号化の形態である。そのようなインターフレーム(フレーム間)冗長性は、連続する画像フレームに亘る物体の動きと関連付けられることができる。インター予測符号化では、符号化されている現在のフレームの現在のコーディングブロック(例えば、ピクセルの現在のコーディングブロック)について、インター予測エンコーダは、ビデオ内の現在のフレームに先行する従前に符号化されたフレームの中から現在のコーディングブロックを予測するために使用されることができる予測器ブロック(例えば、ピクセルの予測器ブロック)をサーチ(探索)する。(例えば、1つ以上の選択基準を満たす)候補インター予測器ブロックとも呼ぶ、候補予測器ブロックがひとたび発見されると、インター予測エンコーダは、候補インター予測器ブロックの場所を表す運動ベクトルを決定する。インター予測エンコーダは、現在のコーディングブロックと候補インター予測器ブロックとの間の残差(例えば、差)も決定する。運動ベクトル及び残差は、コーディングブロックを符号化するために使用される。例えば、運動ベクトル及び残差は、コーディングブロックを表すために、符号化されたビデオビットストリームに符号化されることができる。符号化されたブロックを復号化するために、インター予測デコーダは、運動ベクトルに基づいて従前に復号化された画像フレームから適切な予測ブロックを選択し、予測器ブロックを残差と組み合わせて(例えば、予測器ブロックを追加して)復号化されたコーディングブロックを得る。
インター予測とは対照的に、イントラ予測は、ビデオの所与の画像フレーム内の冗長性を利用するビデオ符号化の形態である。そのようなイントラフレーム冗長性は、オブジェクト、バックグラウンドなどの領域に亘って示される類似のテクスチャ特性と関連付けられることができる。イントラ予測符号化では、符号化されている現在のフレームの現在のコーディングブロック(例えば、ピクセルの現在のコーディングブロック)について、イントラ予測エンコーダは、現在のフレームの従前に符号化されたコーディングブロックのピクセルの中から現在のコーディングブロックを予測するために使用されることができる予測器ブロック(例えば、ピクセルの予測器ブロック)をサーチする。幾つかの例において、サーチされる従前に符号化されたコーディングブロックの画素は、符号化されているコーディングブロックから指定されたセットの方向に限定される。異なる受け入れ可能な方向を異なるイントラ予測モードと呼ぶことができる。幾つかの例では、所与のイントラ予測モードと関連付けられる予測器ブロックは、その特定のイントラ予測モードに基づいて選択されるピクセルの組み合わせ(例えば、線形組み合わせ)として形成される。(例えば、1つ以上の選択基準を満たす)候補イントラ予測器ブロックとも呼ぶ候補予測器ブロックがひとたび発見されると、現在のコーディングブロックとイントラ候補予測器ブロックとの間の残差(例えば、差)が、コーディングブロックを符号化するために決定される。選択された予測器ブロックをもたらした残差及び関連するイントラ予測モードは、コーディングブロックを表すために符号化されたビデオビットストリームに符号化されることができる。符号化されたブロックを復号化するために、イントラ予測デコーダは、イントラ予測モードに基づいて、復号化されている現在のフレームの従前に復号化されたピクセルから適切な予測器ブロックを選択し、復号化されたコーディングブロックを得るために、予測器ブロックを残差と組み合わせる(例えば、予測器ブロックを追加する)。
イントラブロックコピーは、コーディングユニット、パーティションユニットなどのような、コーディングブロックを符号化するために使用される、イントラ予測の形態にある。イントラブロックコピーは、スクリーンコンテンツコーディングに標的付けられており、コンピュータで生成されたスクリーンコンテンツを含むビデオの画像フレームの所与の部分について、画像フレームのその所与の部分の近くに、ピクセルテクスチャに関して全てではないにしても殆ど異ならない類似の画像コンテンツを含むその画像の別の従前に符号化された部分が存在する高い可能性があるという概念を利用する。よって、画像の所与の部分(例えば、コーディングブロック)についての情報を送信するためには、所与の部分(例えば、コーディングブロック)と従前に符号化された類似の部分(例えば、予測器ブロック)との間の差(例えば、残差)のみを送信すれば十分であり得る。従前に符号化された画像及び/又は同じ画像のコンテンツの中から類似の領域を見出すプロセスをIBCサーチ又はIBC予測と呼ぶことがある。符号化されている所与の画像部分(例えば、コーディングブロック)と従前に符号化されたコンテンツの予測器領域(例えば、予測器ブロック)との間の差を表す差分値のセットを余り(remainder)又は残差(residual)と呼ぶ。
イントラブロックコピーを使用する画像の現在のコーディングブロックを符号化するために、IBCエンコーダ110は、画像の従前に符号化されたピクセルのサーチ領域をサーチして、予測器ブロックを識別する。幾つかの例において、IBCエンコーダ110は、予測器ブロックについてのそのサーチを、符号化されている現在のコーディングブロックを含む画像フレームの同じタイル又は同じスライスに限定する。幾つかの例において、予測器ブロックは、現在のコーディングブロックに含まれるピクセルのブロック(例えば、アレイ)に(例えば、コーディングコストなどのような、1つ以上の基準に基づいて)一致する、ピクセルのブロック(例えば、アレイ)であってよい。図示する例において、IBCエンコーダ110は、1つ以上の基準に基づいて、IBCサーチの間に見出される予測器ブロックのグループから候補予測器ブロック(例えば、最良の予測器ブロック)を選択する。次に、IBCエンコーダ110は、現在のビデオブロックと候補予測器ブロックとの間の変位を表す変位ベクトルを生成し、それは現在のコーディングブロックに対する候補予測器ブロックの場所を識別する。よって、上述のように、IBCは、インター予測に類似するが、異なる点は、コーディングブロックがIBCモードにおいてコーディングされるときに、コーディングブロックの候補予測器ブロックが、同じ画像フレーム(同じピクチャ)内の従前に符号化されて再構成されたブロックから選択されることである。その結果、IBCは、現在のフレーム/ピクチャ内で「運動補償」と考えられることができる。
幾つかの例において、IBCエンコーダ110は、(例えば、現在のコーディングブロックから候補予測器ブロックを差し引くことによって)現在のコーディングブロックと候補予測器ブロックとの間の差として(IBC残差とも呼ぶ)残差を生成する。次に、変位ベクトル及び残差を符号化されたビデオビットストリームに含めて、それによって、現在のコーディングブロックを符号化することができる。以下に更に詳細に開示するように、次に、IBCデコーダは、符号化されたビデオビットストリームから変位ベクトル及び関連する残差データを抽出し、変位ベクトルを使用して予測器ブロックを識別して、符号化するコーディングブロックを復号化してよい。IBCデコーダは、残差及び予測ブロックの対応するサンプル(例えば、ピクセル)を合計して、予測器ブロックからコーディングブロックを再構成し、それによって、復号化してよい。
従来のIBC実装は、現在のコーディングブロックのための候補予測器ブロックと、現在のフレーム内の従前に符号化されたブロックの空間的近傍における現在のコーディングブロックに対する予測器ブロックの場所を識別する関連する変位ベクトルとを識別する。図示する例のIBCエンコーダ110は、IBCを拡張して、追加のIBCモードをサポートし、その場合、従来のIBCをIBCモード0と呼ぶ。以下に更に詳細に開示するように、IBCエンコーダ110によって実装される追加のIBCモードは、予測器ブロックに対するコーディングブロックの(変換とも呼ぶ)異なる変換に対応する。例えば、図示する例のIBCエンコーダ110は、最大4つの異なるミラー変換モードを含む第1のセットの変換モードと最大3つの異なる回転変換モードを含む第2のセットの変換モードとに対応する、IBMモード1~7と呼ぶ最大7つの追加のIBCモードを実装する。そのような変換モードに関する更なる詳細が以下に提供される。幾つかの例において、IBCエンコーダは、正方形コーディングブロックのための一部又は全部の(例えば、4×4から128×128ピクセルまでの)サポートコーディングブロックサイズ、及び一部又は全部のコーディングブロック形状(例えば、正方形、長方形など)のために、異なるIBCモード(又はIBC変換モード)を実装する。
例えば、図2は、処理のためのコーディングブロック(coding blocks)及び/又は予測器ブロック(predictor blocks)を選択するためにIBCエンコーダ110によって使用されることがある例示的なパーティションユニット200を示している。図示する例のパーティションユニット200は、4×4の形状を有し、よって、ピクセルの正方形の4×4ブロックに対応する。数学的には、パーティションユニット200のピクセルは、p(i,j)によって表されることができ、ここで、iは、0~3の範囲にあり、jは、0~3の範囲にある。よって、p(i,j)は、パーティションユニット200のi番目の行(row)位置及びj番目の列(column)位置にあるピクセルを表す。
IBCエンコーダ110によって実装することができる例示的なIBC変換モード300の第1のセットが図3に示されている。IBC変換モード300の第1のセットは、例示的なミラー変換モード305、310、315及び320を含む。図示の例において、ミラー変換モード305、310、315及び320は、原点(X=Y=0)がパーティションユニット200の中心にあるように、パーティションユニット200上に重ねられているX軸及びY軸に対して示されている。図3に示すように、ミラー変換モード305は、パーティションユニット200の0度ミラーリング(mirroring)とも呼ぶ、X軸(又は、換言すれば、Y=0軸)を横切るパーティションユニット200のミラーリングに対応する。図示の例において、ミラー変換モード310は、パーティションユニット200の45度ミラーリングとも呼ぶ、Y/X=1に対応する線を横切るパーティションユニット200のミラーリングに対応する。図示の例において、ミラー並進モード315は、パーティションユニット200の90度ミラーリングとも呼ぶ、Y軸(又は、換言すれば、X=0軸)を横切るパーティションユニット200のミラーリングに対応する。図示の例において、ミラー変換モード305は、パーティションユニット200の135度ミラーリングとも呼ぶ、Y/X=-1に対応する線を横切るパーティションユニット200のミラーリングに対応する。
IBCエンコーダ110によって実装されることができる例示的なIBC変換モード400の第2のセットが図4に示されている。IBC変換モード400の第2のセットは、例示的な回転変換モード405、410及び415を含む。図示の例において、回転変換モード405、410及び415は、原点(X=Y=0)が分割ユニット200の中心にあるように、パーティションユニット200上に重ねられているX軸及びY軸に対して示されている。図4に示すように、回転変換モード405は、パーティションユニット200の90度回転に対応する。図示の例において、回転変換モード410は、パーティションユニット200の180度回転に対応する。図示の例において、回転変換モード415は、パーティションユニット200の270度回転に対応する。
図5~図11は、上記に開示した例示的なIBC変換モード305~320及び405~415に従って例示的なコーディングブロックを変換した例示的な結果を示している。図示の例において、コーディングブロックは、図2のパーティションユニット200に従って選択されたピクセルを有する。また、後続の例において、ソース、変換されていないコーディングブロックが処理される、従来のIBCコーディングは、IBC変換モード0、IBCモード0、又はデフォルトIBCモードと互換可能に呼ばれ、変換が符号化されているコーディングブロック上で実行されないことに対応する。
上述のことを念頭に置いて、図5は、パーティションユニット200に対応するコーディングブロックが上述のIBCモード1に従って変換される例示的な変換されたコーディングブロック500を示している。よって、変換されたコーディングブロック500は、上述のように、0度ミラーリング動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック500に含まれるIBCモード1ピクセルpIBC1(i,j)は、式1に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図6は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード2に従って変換される例示的な変換されたコーディングブロック600を示している。よって、変換されるコーディングブロック600は、上述のように、45度ミラーリング動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック600に含まれるIBCモード2ピクセルpIBC2(i,j)は、式2に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図7は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード3に従って変換される例示的な変換されたコーディングブロック700を示している。よって、変換されたコーディングブロック700は、上述のように、90度ミラーリング動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック700に含まれるIBCモード3ピクセルpIBC3(i,j)は、式3に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図8は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード4に従って変換される例示的な変換されたコーディングブロック800を示している。よって、変換されたコーディングブロック800は、上述のように、270度ミラーリング動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック800に含まれるIBCモード4ピクセルpIBC4(i,j)は、式4に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図9は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード5に従って変換される例示的な変換されたコーディングブロック900を示している。よって、変換されたコーディングブロック900は、上述のように、90度回転動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック900に含まれるIBCモード5ピクセルpIBC5(i,j)は、式5に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図10は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード6に従って変換される例示的な変換されたコーディングブロック1000を示している。よって、変換されたコーディングブロック1000は、上述のように、180度回転動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック1000に含まれるIBCモード6ピクセルpIBC6(i,j)は、式6に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図11は、パーティションユニット200に対応する例示的なコーディングブロックが上述のIBCモード7に従って変換される例示的な変換されたコーディングブロック1100を示している。よって、変換されたコーディングブロック1100は、上述のように、270度回転動作を受けたパーティションユニット200に対応するコーディングブロックの変換されたバージョンである。図2のコンテキストにおいて上述した数学的表記法を使用すると、変換されたコーディングブロック1100に含まれるIBCモード7ピクセルpIBC7(i,j)は、式7に従ったソースコーディングブロックの変換されていないピクセルp(i,j)に関連する。
図5~図11の例は、4×4コーディングブロック上でIBCエンコーダ110によって実行されるIBC変換モード1~7(それらを従来のIBCモードから区別するためにIBC+モード1~7とも呼ぶ)を示している。しかしながら、IBCエンコーダ110は、4×4ピクセルから128×128ピクセルまでの正方形コーディングブロックのような他のコーディングブロックサイズでIBC変換モード1~7を実行することができる。また、IBCエンコーダ110は、長方形ブロック形状のような他のブロック形状を有するコーディングブロック上でIBC変換モード1~7を実行することができる。しかしながら、幾つかのIBC変換モードは、IBCエンコーダ110が以下のように説明することができる、ソースコーディングブロックに対する変換されたコーディングブロックの形状の変化をもたらすことがある。
例えば、IBC+モード1~7変換に従って実行されるブロック変換は、正方形コーディングブロックについて形状不変であり、よって、ソースコーディングブロックの元の形状を維持する。故に、正方形コーディングブロックには追加の取扱いが必要とされない。IBC+モードの一部は、非正方形コーディングブロック形状についても形状不変である。例えば、IBC+モード1(0度ミラーリング)変換、IBC+モード3(90度ミラーリング)変換及びIBC+モード6(180度回転)変換は、ソースコーディングブロックの元の形状を変更しない。例示の目的のために、図12は、例示的な長方形8×4ソースコーディングブロック1200を示している。図13は、IBC+モード1と関連付けられた0度ミラーリング動作を受けたコーディングブロック1200の変換バージョンに対応する、例示的な変換コーディングブロック1300を示している。よって、IBC+モード1と関連付けられた0度ミラーリング動作は、ソースコーディングブロック1200のように形状不変であり、結果として得られる変換されたコーディングブロック1300は、同じ形状を有する。別の例として、図14は、例示的な長方形4×8ソースコーディングブロック1400を示している。図15は、IBC+モード3と関連付けられた90度ミラーリング動作を受けたコーディングブロック1400の変換されたバージョンに対応する、例示的な変換されたコーディングブロック1500を示している。よって、IBC+モード3と関連付けられた90度ミラーリング動作は、ソースコーディングブロック1400のように形状不変であり、結果として得られる変換されたコーディングブロック1500は、同じ形状を有する。
上述のように、IBC+モードの一部は、形状不変でないブロック変換と関連付けられる。例えば、IBC+モード2(45度ミラーリング)変換、IBC+モード4(135度ミラーリング)変換、IBC+モード5(90度回転)変換及びIBC+モード7(270度回転)変換は、幅及び高さがソースコーディングブロックと変換されたコーディングブロックとの間で交換されるように、ソースコーディングブロックの元の形状を変更することができる。例示の目的のために、図16は、例示的な長方形8×4ソースコーディングブロック1600を示している。図17は、IBC+モード2と関連付けられた45度ミラーリング動作を受けたコーディングブロック1600の変換されたバージョンに対応する、例示的な変換されたコーディングブロック1700を示している。よって、IBC+モード2と関連付けられた45度ミラーリング動作は、ソースコーディングブロック1600のように形状不変でなく、結果として得られる変換されたコーディングブロック1700は、(例えば、幅及び高さが図示の例において交換された)異なる形状を有する。別の例として、図18は、例示的な長方形4×8ソースコーディングブロック1800を示している。図19は、IBC+モード5と関連付けられた90度の回転動作を受けたコーディングブロック1800の変換されたバージョンに対応する、例示的な変換されたコーディングブロック1900を示している。よって、IBC+モード5と関連付けられた90度回転動作は、ソースコーディングブロック1800のように形状不変でなく、結果として得られる変換されたコーディングブロック1900は、(例えば、幅及び高さが図示の例において交換された)異なる形状を有する。
図2に戻ると、図示の例のIBCエンコーダ110は、IBCモード0及びIBC+モード1~7のうちの1つ以上をサポートするように構成される。以下に更に詳細に記載するように、画像フレームのソースコーディングブロックを符号化するために、IBCエンコーダ110は、ソースブロックに基づいて従来のIBCモード0に従ってIBCサーチを実行する。IBCエンコーダ110は、サポートされているIBC+モードに従ってコーディングブロックの変換されたバージョンに基づいて1つ以上のIBCサーチも実行する。IBCエンコーダ110は、IBCモードサーチ及びサポートされるIBC+モードサーチのために識別されたそれぞれの予測器ブロックを評価して、最終的な候補予測器ブロックを選択する。例えば、IBCエンコーダ110は、利用可能な識別された予測器ブロックの中から最良の/最適な予測器ブロックを選択するように定義される任意の1つ以上の基準に基づいて候補予測器ブロックを選択することができる。
候補予測器ブロックがひとたび識別されると、IBCエンコーダ110は、変位ベクトル(例えば、運動ベクトル)を生成して、画像フレーム内のソースコーディングブロックに対する候補予測器ブロックの場所を表す。例えば、IBCエンコーダ110は、変位ベクトルを候補予測器ブロックの左上ピクセルとソースコーディングブロックの左上ピクセルとの間の差として生成することができる。従って、候補予測器ブロックがコーディングブロックの変換されたバージョンに対応するとしても、IBCエンコーダ110は、依然として、変位ベクトルを候補予測器ブロックの左上ピクセルとソース(変換されていない)コーディングブロックの左上ピクセルとの間の差として計算することができる。IBCエンコーダ110は、IBCモード(例えば、IBCモード0又はサポートされているIBC+モード1~7のうちのいずれか)のうちのどれが候補予測器ブロックをもたらしたかを示す値も出力する。以下に更に詳細に開示するように、変位ベクトル及び勝ちIBCモードは、符号化されたビデオビットストリームにコーディングされて、符号化されたコーディングブロックを表す。
上述のように、IBCエンコーダ110は、(IBCモード0に対応する)ソースコーディングブロックに基づいてIBCサーチを行い、(IBC+モード1~7のうちの1つ以上に対応する)コーディングブロックの変換されたバージョンに基づいて1つ以上のIBCサーチを行う。IBCコーディングを受けている例示的な画像フレーム2005においてIBCエンコーダ110によって実行される例示的なIBCサーチ2000が、図20に示されている。図示する例のIBCサーチ2000において、IBCエンコーダ110は、既に符号化された(例えば、画像フレーム2005の従前に符号化されたピクセルを含む)ピクセルと関連付けられる画像フレーム2005の例示的サーチ領域2010内の予測器ブロックをサーチする。サーチ領域2010は、ピクセルブロックがラスタオーダで符号化されると仮定する。図20の例示的な例において、IBCエンコーダ110は、符号化されている例示的なコーディングブロック2015を、サーチ領域2010において選択される例示的な予測器ブロック2020のような予測器ブロックと比較する。IBCモード0に従ってコーディングを実行するときに、IBCエンコーダ110は、変換されていないコーディングブロック2015を予測器ブロック2020と比較する。IBC+モードのうちの1つに従ってコーディングを実行するときに、IBCエンコーダ110は、(所与のIBC+モードに従って変換される)コーディングブロック2015の変換されたバージョンを予測器ブロック2020と比較する。幾つかの例において、IBC+モードのうちの1つに従ってコーディングを実行するときに、IBCエンコーダ110は、代替的に、コーディングブロック2015の代わりに、予測器ブロック2020を変換することができる。しかしながら、そのような実装は、実質的な性能ペナルティを招き得る。何故ならば、サーチ領域2010内で選択されるあらゆる予測器ブロックは、そのIBC+モードに従って変換される必要があるからである。対照的に、IBC+モードのうちの1つに従ってコーディングを実行するときに、IBCエンコーダ110は、そのIBC+モードに従ってコーディングブロックを一度だけ変換し、その変換されたコーディングブロックをサーチ領域2010において選択される変換されていない予測器ブロックと比較することができる。
図20の例示的な例において、実行される各IBCサーチ2000(例えば、IBCモード0についてのIBCサーチ及びIBC+モード1~7のうちの1つ以上についてのIBCサーチ)について、IBCエンコーダ110は、そのIBCサーチに対応する中間予測器ブロックを(例えば、1つ以上の基準に基づいて)選択する。次に、IBCエンコーダ110は、異なるサポートされるIBC/IBC+モードと関連付けられる中間予測器ブロックの中から最終的な候補予測器ブロックを(例えば、1つ以上の基準に基づいて)選択する。図20の例示的な例において、予測器ブロック2020がコーディングブロック2015のために最終的に選択された候補予測器ブロックであると仮定すると、IBCエンコーダ110は、例示的な変位ベクトル2025を決定して、画像フレーム2005におけるソースコーディングブロック2015に対する候補予測器ブロック2020の場所を表す。例えば、IBCエンコーダ110は、変位ベクトル2025を候補予測器ブロック2020の左上ピクセルとソースコーディングブロック2015の左上ピクセルとの間の差として計算することができる。上述のように、候補予測器ブロック2020がコーディングブロック2015の変換されたバージョンに対応するとしても、IBCエンコーダ110は、依然として、変位ベクトル2025を候補予測器ブロック2020の上左ピクセルとソース(変換されていない)コーディングブロック2015の上左ピクセルとの間の差として計算する。IBCエンコーダ110は、IBCモード(例えば、IBCモード0又はサポートされているIBC+モード1~7のうちのいずれか)のうちのどれが候補予測器ブロック2020をもたらしたかを示す値も出力する。以下に更に詳細に開示するように、変位ベクトル2025及び勝ちIBCモードは、符号化されたビデオビットストリームにコーディングされて、コーディングブロック2015の符号化されたバージョンを表す。
幾つかの例において、IBCエンコーダ110は、予測器ブロック2020が現在のコーディングブロック2015と重なることがないように、サーチ領域2010のサーチを制限する。追加的に又は代替的に、幾つかの例において、IBCエンコーダ110は、予測器ブロック2020がコーディングブロック2015と同じ画像フレーム2005のスライス及び/又はタイル内にあるように、サーチ領域2010のサーチを制限する。幾つかの例において、IBCエンコーダ110は、画像フレーム2005内の上及び左の隣接するスーパーブロックをカバーする従前に符号化されたブロックであるようにサーチ窓(サーチウインドウ)を制限して、波面(ウェーブフロント)によって提供される並列処理能力に影響を与えることを回避する。幾つかの例において、IBCエンコーダ110は、IBCサーチから、符号化されている現在のコーディングブロック2015の直前の256ピクセル幅領域を除外する。これは、現在のブロックから(ラスタ走査順序において)少なくとも256ピクセル離れている既に符号化され且つ再構成されたブロックに制限される有効サーチ領域2010をもたらす。幾つかの例において、IBCエンコーダ110によって実装されるIBCサーチ2000は、クラシックダイヤモンドサーチとその後のハッシュサーチの組み合わせであり、ここでは、周期的冗長性チェック(CRC:cyclic redundancy check)が、ハッシュメトリックとして使用される。幾つかの例において、IBCエンコーダ110は、フルペル解像度でIBCサーチ2000を実行する。何故ならば、サブピクセル変位は許可されないからである。前述の制限は、上記に開示した提案されたミラーモード及び回転モードにも有効である。
図2に戻ると、符号化を受けている所与のコーディングブロックについて、例示的なIBCエンコーダ110は、その現在のコーディングブロックについて選択された候補予測器ブロックについての変位ベクトルと、IBCモード(例えば、IBCモード0又はサポートされているIBC+モード1~7のうちの1つ)のうちのどれがその現在のコーディングブロックについての候補予測器ブロックをもたらしたかを示すIBCモード値とを出力する。従って、候補予測器ブロックを、コーディングブロックのイントラブロックコピー予測器(intra block copy predictor)とも呼ぶ。図示の例において、IBCエンコーダ110は、変位値及びIBCモード値をモードセレクタ120に出力する。幾つかの例において、IBCエンコーダ110は、候補予測器ブロック、及び/又は候補予測器ブロックを使用して決定された残差も、モードセレクタ120に出力する。追加的に又は代替的に、幾つかの例において、IBCエンコーダ110は、選択された候補予測器ブロックを使用してIBCコーディングを実行するための1つ以上のコーディングメトリック(coding metrics)(例えば、コーディングコスト、コーディングスコアなど)も出力し、それらのメトリックをモードセレクタ120に提供する。
図示の例では、他の予測エンコーダ115も、現在のコーディングブロックをコーディングするためにそれぞれの結果を出力する。幾つかの例において、IBCエンコーダ110及び他の予測エンコーダ115は、それぞれ、それらのそれぞれのコーディングモードに従って所与のコーディングブロックを符号化するためのレート歪み(RD:rate distortion)性能値を計算する。例えば、IBCエンコーダ110は、所与のコーディングブロックのIBC符号化を実行してよく、次に、出力ビットストリームに含めるための準備において、符号化されたコーディングブロックを更に変換及び量子化してよく、結果についてのRD性能値を生成してよく、それは、その結果として得られる符号化されたブロックを出力ビットストリームに含めるためのコスト/ペナルティを組み込む。同様に、他の予測エンコーダ115は、それらのそれぞれのモード(例えば、インターモード、イントラモードなど)に従ってコーディングブロックを符号化するためのそれぞれのRD性能値を計算することができる。モードセレクタ120は、現在のコーディングブロックについてIBCエンコーダ110及び他の予測エンコーダ115によって提供される結果を比較して、現在のコーディングブロックを符号化するためにどの符号化モードが使用されるべきかを決定する。例えば、モードセレクタ120は、現在のコーディングブロックについて最も低いRD値を有する符号化モードを選択してよい。IBCが勝ち符号化モードであると仮定すると、モードセレクタは、変位ベクトル、勝ち候補予測器ブロックをもたらしたIBCモード値、及び(IBCエンコーダ110によって提供される場合の)残差をストリームエンコーダ125に提供する。次に、ストリームエンコーダ125は、変位ベクトル、IBCモード値、及び(提供される場合の)残差を、例示的な出力符号化されたビデオビットストリーム135にコーディングすることによって、現在のコーディングブロックを符号化する。
IBCエンコーダ110は、複数のIBCモード(例えば、IBCモード0及び最大7つのIBC+モード1~7)をサポートすることができるので、ストリームエンコーダ125は、IBCエンコーダ110によって出力される勝ちIBCモード値を表す構文(syntax)を利用する。幾つかの例において、ストリームエンコーダ125は、IBCモード値を表すためにビットフィールド(bit field)を利用し、1ビットは、IBCがモードセレクタ120によって選択された勝ち符号化モードであったかどうかを示すために使用される(例えば、IBC符号化がモードセレクタ120によって選択されるならば1に設定され、他の予測符号化モードのうちの1つが現在のコーディングブロックについてモードセレクタ120によって選択されるならば0に設定される)。IBC符号化が選択されたならば、ビットフィールドは、現在のコーディングブロックについての勝ちIBC/IBC+モードに対応するIBCモード値を表すために、最大3つのIBCモード値ビットの可変グループも含む。例えば、IBCモード値ビットのグループは、従来のIBCモード0について000に設定されてよく、IBC+モード1~7についてそれぞれ001~111に設定されてよい。幾つかの例において、ビットフィールドは、符号化されたビデオビットストリームにおいて変位ベクトルの後に符号化される。従って、ストリームエンコーダ125は、イントラブロックコピーモードを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化する手段の例である。
図1のIBCエンコーダ110の例示的な実装のブロック図は、図21に示されている。図21の例示的なIBCエンコーダ110は、例示的なコーディングブロックセレクタ2105、例示的なコーディングブロック変換器2110、例示的な予測ブロック探索器2115を含む。図示の例において、コーディングブロックセレクタ2105は、1つ以上の例示的なコーディングブロックパラメータ2120に基づいて、符号化のために現在のコーディングブロックを選択する。例えば、コーディングブロックパラメータ2120は、サイズ及び/又は形状、又はIBCエンコーダ110によって処理されるべきコーディングブロックを指定してよい。幾つかの例において、サイズは、正方形コーディングブロックについて4×4~128×128の範囲であってよく、形状は、正方形、長方形などであってよい。例えば、コーディングブロックパラメータ2120は、IBCエンコーダ110によって処理されるべきコーディングブロックが、図2及び図5~図11の例と一致する正方形4×4コーディングブロック、図12、図13、図16及び図17の例と一致する長方形8×4コーディングブロック、図14、図15、図18及び図19の例と一致する長方形4×8コーディングブロックなどであるべきことを指定してよい。コーディングブロックパラメータ2120は、事前に決定されてよく、構成入力として指定されてよく、その他であってよい。
例示的なコーディングブロック変換器2110は、上述のように、画像フレームのコーディングブロックに対して1つ以上の変換動作を実行して、コーディングブロックの変換されるバージョンを決定する。例えば、コーディングブロック変換器2110によって実装される変換動作は、従来のIBCモード0に対応する変換動作なし、第1のセットのミラー動作のうちの1つ以上、及び/又は上述の強化されたセットのIBC+モード1~7に対応する第2のセットの回転動作のうちの1つ以上などを含んでよい。図示の例において、コーディングブロック変換器2110は、1つ以上の例示的なIBCモード構成パラメータ2125を受け入れて、どのIBCモード(例えば、従来のIBCモード0及び/又は強化されたIBC+モード1~7のうちの1つ以上)がコーディングブロック変換器2110によって実装されるべきかを指定し、よって、IBCエンコーダ110によってサポートされる。IBCモード構成パラメータ2125は、予め決定されてよく、構成入力として指定されてよく、その他であってよい。従って、コーディングブロック変換器2110は、画像フレームのコーディングブロックに対して変換動作を実行してコーディングブロックの変換されたバージョンを決定する手段の例である。
幾つかの例において、IBCモード構成パラメータ2125は、コーディングブロック変換器2110が、よって、IBCエンコーダ110が、従来のIBCモード0及び全ての強化されたIBC+モード1~7を含む、全てのIBC/IBC+モードをサポートすることを指定する。幾つかの例では、構成0について、勝ちIBCモード値を表すビットフィールドは、上述のように、4ビットを含み、ビットフィールドの1ビットは、IBCがモードセレクタ120によって選択された勝ち符号化モードであるかどうかを示すために使用される(例えば、IBC符号化がモードセレクタ120によって選択されたならば1に設定され、他の予測符号化モードのうちの1つが現在のコーディングブロックについてモードセレクタ120によって選択されたならば0に設定される)。他の3ビットは、現在のコーディングブロックについて勝ちIBC/IBC+モードに対応するIBCモード値を表すように設定される。例えば、IBCモード値ビットのグループは、従来のIBCモード0について000に設定されてよく、IBC+モード1~7についてそれぞれ001~111に設定されてよい。以下の表1は、IBCモード値ビットについての例示的なビットパターンを示している。
しかしながら、幾つかの例において、勝ちIBCモード値を符号化するために使用されるビットフィールドは、コーディング性能を改良するために可変長ビットフィールドである。例えば、勝ちIBCモード値は、より多い頻度で生じる値がより少ないビット(例えば、1又は2ビット)で表され、より少ない頻度で生じる値がより多くのビット(例えば、3又はそれよりも多くのビット)で表されるように、符号化されることができる。勝ちIBCモード値を符号化するために使用されることができる例示的な可変長符号化技術は、ハフマンコーディング(Huffman coding)であるが、他のタイプの可変長符号化も使用されることができる。
幾つかの例において、IBCモード構成パラメータ2125は、コーディングブロック変換器2110が、よって、IBCエンコーダ110がIBC/IBC+モードのサブセットをサポートするべきことを指定する。例えば、IBCモード構成パラメータ2125は、コーディングブロック変換器2110が、よって、IBCエンコーダ110が、従来のIBCモード0と、IBC+モード1(0度ミラーリング)、IBC+モード3(90度ミラーリング)、IBC+モード5(90度回転)、IBC+モード6(180度の回転)、及びIBC+モード7(270度回転)を含む強化されたIBC+モードのサブセットとをサポートするべきことを指定してよい。本明細書では、そのような構成を構成1と呼ぶ。幾つかの例では、構成1について、勝ちIBCモード値を表すビットフィールドは、上述のように、4ビットを含み、ビットフィールドの1ビットは、IBCがモードセレクタ120によって選択された勝ち符号化モードであったかどうかを示すために使用される(例えば、IBC符号化がモードセレクタ120によって選択されたならば1に設定されs、他の予測符号化モードのうちの1つが現在のコーディングブロックについてモードセレクタ120によって選択されたならば0に設定される)。残りの3ビットは、現在のコーディングブロックについて勝ちIBC/IBC+モードに対応するIBCモード値を表すように設定される。例えば、IBCモード値ビットのグループは、勝ちIBCモードを表すよう、表1に従って設定されてよい。しかしながら、幾つかの例では、可変長符号化を使用して、上述のように、勝ちIBCモード値を表すために使用されるビットフィールドを符号化することができる。構成1は、より少ないサポートされるIBCモードを含むので、構成0に対して減少させられた性能を示すことがあるが、構成1は、構成0よりも少ない変換動作がコーディングブロック毎に実行されることを含み、よって、より高速なコーディング性能を示すことがある。
別の例として、IBCモード構成パラメータ2125は、コーディングブロック変換器2110が、よって、IBCエンコーダ110が、従来のIBCモード0と、IBC+モード1(0度ミラーリング)、IBC+モード3(90度ミラーリング)、IBC+モード5(90度回転)、及びIBC+モード6(180度回転)を含む強化されたIBC+モードのサブセットとをサポートすることを指定してよい。本明細書では、そのような構成を構成2と呼ぶ。幾つかの例では、構成2において、勝ちIBCモード値を表すビットフィールドは、上述のように、4ビットを含み、ビットフィールドの1ビットは、IBCがモードセレクタ120によって選択された勝ち符号化モードであったかどうかを示すために使用される(例えば、IBC符号化がモードセレクタ120によって選択されたならば1に設定され、他の予測符号化モードのうちの1つが現在のコーディングブロックについてモードセレクタ120によって選択されたならば0に設定される)。他の3ビットは、現在のコーディングブロックについて勝ちIBC/IBC+モードに対応するIBCモード値を表すように設定される。例えば、IBCモード値ビットのグループは、勝ちIBCモードを表すよう、表1に従って設定されてよい。別の例として、3つのビットのうちの最初のビットは、IBCモード0又はIBC+モードのうちの1つが勝者であるかどうかを示すように設定することができる(例えば、IBCモード0が勝者であったならばビットは0に設定され、他のIBC+モードのうちの1つが勝者であったならばビットは1に設定される)。そのような例において、残りの2ビットは、構成2内の4つの可能なIBC+モード(例えば、00=IBC+モード1、01=IBC+モード3、10=IBC+モード5、及び11=IBC+モード6)を表すために使用される。しかしながら、幾つかの例では、可変長符号化を使用して、上述のように、勝ちIBCモード値を表すために使用されるビットフィールドを符号化することができる。構成2は、より少ないサポートされるIBCモードを含むので、構成0及び構成1に対して減少させられた性能を示すことがあるが、構成2は、構成0及び構成1よりも少ない変換動作がコーディングブロック毎に実行されることを含み、よって、より高速な符号化性能を示すことがある。
更なる例として、IBCモード構成パラメータ2125は、コーディングブロック変換器2110が、よって、IBCエンコーダ110が、従来のIBCモード0と、IBC+モード1(0度ミラーリング)、IBC+モード3(90度ミラーリング)、及びIBC+モード6(180度回転)を含む強化されたIBC+モードのサブセットをサポートすることを指定してよい。本明細書では、そのような構成を構成3と呼ぶ。幾つかの例では、構成3について、勝ちIBCモード値を表すビットフィールドは、3ビットを含み、ビットフィールドの1ビットは、IBCがモードセレクタ120によって選択された勝ち符号化モードであったかどうかを示すために使用される(例えば、IBCコーディングがモードセレクタ120によって選択されたならば1に設定され、他の予測符号化モードのうちの1つが現在のコーディングブロックについてモードセレクタ120によって選択されたならば0にセットされる)。他の2つのビットは、構成3において4つの可能なIBCモード(例えば、00=IBCモード0、01=IBC+モード1、10=IBC+モード3、及び11=IBC+モード6)を表すように設定される。しかしながら、幾つかの例では、可変長符号化を使用して、上述のように、勝ちIBCモード値を表すために使用されるビットフィールドを符号化することができる。構成3は、より少ないサポートされるIBCモードを含むので、構成0、構成1及び構成2に対して減少させられた性能を示すことがあるが、構成3は、構成0、構成1及び構成2よりも少ないコーディングブロック毎に実行される変換動作を含み、よって、より高速なコーディング性能を示すことがある。
図21の例示的な予測器ブロック探索器2115(predictor block searcher)は、(例えば、構成パラメータ2125によって構成されるような)コーディングブロック変換器2110によって実装される異なるIBCモードについて、図20に関連して上述したように、IBCサーチを行う。図示の例において、予測器ブロック探索器2115は、コーディングブロックについての候補予測器ブロックを決定するために符号化された所与のコーディングブロックについて複数のIBCサーチを実行し、IBCサーチの各々は、コーディングブロック変換器2110によって実装されるIBCモードのうちの異なるものに対応する。例えば、コーディングブロックについての候補予測器ブロックを決定するために、予測器ブロック探索器2115は、IBCモード0についてのコーディングブロックの変換されていないバージョンに基づいて第1のIBCサーチを実行し、他のIBC+モードのうちの1つについてのコーディングブロックの変換されたバージョンに基づいて第2のIBCサーチを実行してよい。複数のIBC+モードが構成されるならば、予測器ブロック探索器2115は、他のIBC+モードについてのコーディングブロックの他の異なる変換されたバージョンに基づいて追加のIBCサーチを実行し、そのコーディングブロックについて実行された全てのIBCサーチの結果に基づいて候補予測器ブロックを決定してよい。例えば、コーディングブロック変換器2110が、従来のIBCモード(例えば、IBCモード0)、IBCミラーリングモードのうちの1つ以上(例えば、IBC+モード1~4のうちの1つ以上)、及びIBC回転モードのうちの1つ以上(例えば、IBC+モード5~7のうちの1つ以上)をサポートするように構成されるならば、予測器ブロック探索器2115は、(i)(IBCモード0に対応する)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ、(ii)(構成されたIBCミラーリングモードに対応する)コーディングブロックのミラーリングされたバージョンに基づく第2のグループの1つ以上のIBCサーチ、及び(iii)(構成されたIBC回転モードに対応する)コーディングブロックの回転されたバージョンに基づく第3のグループの1つ以上のIBCサーチを実行することによって、符号化されているコーディングブロックについての候補予測器ブロックを決定してよい。従って、予測器ブロック探索器2115は、イントラブロックコピーサーチを実行する手段の例であり、イントラブロックコピーサーチは、コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチと、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定するためのコーディングブロックの変換されたバージョンに基づく第2のイントラブロックサーチとを含み、候補予測器ブロックは、コーディングブロックのイントラブロックコピー予測器に対応する。
所与のコーディングブロックについて、構成されたIBCモードについてのIBCサーチを実行した後、図示の例の予測器ブロック探索器2115は、上述のように、そのコーディングブロックに対する勝ち候補予測器ブロックの場所を表す例示的な変位ベクトル2130と、候補予測器ブロックと関連付けられるIBCモードのうちの勝ちモードを識別する例示的なIBCモード値2135とを出力する。図示の例において、予測器ブロック探索器2115は、所与のコーディングブロックについて、上述のように、選択された候補予測器ブロック及びIBCモードを使用してIBCコーディングを実行するための1つ以上の例のコーディングメトリック2140(例えば、コーディングコスト、コーディングスコアなど)を出力する。図示の例において、予測器ブロック探索器2115は、上述のように、所与のコーディングブロックについて、候補予測器ブロックとコーディングブロックとの間の差を表す例示的な残差2145を更に出力する。
この開示の教示に従ってIBC符号化されたビデオビットストリームを復号化するために使用されることがある例示的なIBCビデオデコーダ2200のブロック図が、図22に示されている。図22の例示的なIBCデコーダ2200は、例示的なストリームデコーダ2205と、例示的な予測器ブロックセレクタ2210と、例示的な予測器ブロック変換器2215と、例示的なフレームデコーダ2220とを含む。図示する例のストリームデコーダ2205は、例示的な符号化されたビデオビットストリームを復号化して、復号化されるべき所与のフレーム内の所与の符号化されたコーディングブロックについて、そのコーディングブロックについてのフレーム内の候補予測器ブロックの場所を表す変位ベクトルを得る。ストリームデコーダ2205は、符号化されたビデオビットストリームを復号化して、IBCモードのうちのどの1つがその予測器ブロックと関連付けられているかを表すIBCモード値も得る。幾つかの例において、ストリームデコーダ2205は、符号化されたビデオビットストリームを更に復号化して、符号化されたコーディングブロックと関連付けられる残差を得る。
予測器ブロックセレクタ2210は、復号化されている所与の画像フレームの従前に復号化されたピクセルの予測器ブロックを選択する。図示の例において、予測器ブロックセレクタ2210は、復号化された変位ベクトルに基づいて予測器ブロックを選択する。従って、予測器ブロックセレクタ2210は、復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択する手段の例であり、予測器ブロックは、変位ベクトルに基づいて選択される。
図示する例の予測器ブロック変換器2215は、選択された予測器ブロックに対して変換動作を実行して、予測器ブロックの変換されたバージョンを決定する。図示の例において、変換動作は、復号化されたIBCモード値に基づいて選択され、(例えば、IBCモード0についての)変換なし、(例えば、IBC+モード1~4についての)第1のセットのミラー変換動作のうちの1つ、(例えば、IBC+モード5~7についての)回転変換動作のセットのうちの1つに対応することができる。図示の例において、予測器ブロック変換器2215は、(予測器ブロックではなくコーディングブロックが符号化中に変換されたので)復号化されたIBCモード値に関連付けられた変換の逆を実行する。従って、予測器ブロック変換器2215は、予測器ブロックの変換されたバージョンを決定するために予測器ブロックに対して変換動作を実行する手段の例である。
図示する例のフレームデコーダ2220は、予測器ブロック変換器2215からの選択された予測器ブロック出力の変換されたバージョンに基づいて、画像フレームの符号化されたコーディングブロックを復号化する。例えば、フレームデコーダ2220は、復号化された残差と予測器ブロックの変換されたバージョンとを組み合わせて、復号化されたコーディングブロックをもたらす。従って、フレームデコーダ2220は、予測器ブロックの変換されたバージョンに基づいて画像フレームのコーディングブロックを復号化する手段の例である。
ビデオエンコーダ100、IBCエンコーダ110、及びIBCデコーダ2200を実装する例示的な方法が、図1~図22に示されているが、図1~図22に示す要素、プロセス及び/又はデバイスのうちの1つ以上は、組み合わされてよく、分割されてよく、再配置されてよく、省略されてよく、除去されてよく、且つ/或いは任意の他の方法で実装されてよい。更に、例示的なビデオインターフェース105、例示的な予測器エンコーダ115、例示的なモードセレクタ120、例示的なストリームエンコーダ125、例示的なコーディングブロックセレクタ2105、例示的なコーディングブロック変換器2110、例示的な予測器ブロック探索器2115、例示的な予測器ブロックセレクタ2210、例示的な予測器ブロック変換器2215、例示的なフレームデコーダ2220、及び/又は、より一般的には、例示的なビデオエンコーダ100、例示的なIBCエンコーダ110及び/又は例示的なIBCデコーダ2200は、ハードウェア、ソフトウェア、ファームウェア、及び/又は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の組み合わせによって実装されてよい。よって、例えば、例示的なビデオインターフェース105、例示的な予測器エンコーダ115、例示的なモードセレクタ120、例示的なストリームエンコーダ125、例示的なコーディングブロックセレクタ2105、例示的なコーディングブロック変換器2110、例示的な予測器ブロック探索器2115、例示的な予測器ブロックセレクタ2210、例示的な予測器ブロック変換器2215、例示的なフレームデコーダ2220、及び/又は、より一般的には、例示的なビデオエンコーダ100、例示的なIBCエンコーダ110及び/又は例示的なIBCデコーダ2200のうちのいずれかは、1つ以上のアナログ又はデジタル回路、論理回路、プログラマブルプロセッサ、プログラマブルコントローラ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)及び/又はフィールドプログラマブル論理デバイス(FPLD)によって実装されることができる。純粋にソフトウェア及び/又はファームウェア実装をカバーするために、この特許の装置請求項又はシステム請求項のいずれかを読み取るときに、例示的なビデオエンコーダ100、例示的なIBCエンコーダ110、例示的なIBCデコーダ2200、例示的なビデオインターフェース105、例示的な予測器エンコーダ115、例示的なモードセレクタ120、例示的なストリームエンコーダ125、例示的なコーディングブロックセレクタ2105、例示的なコーディングブロック変換器2110、例示的な予測ブロック探索器2115、例示的な予測ブロックセレクタ2210、例示的な予測ブロック変換器2215、及び/又は例示的なフレームデコーダ2220のうちの少なくとも1つは、ソフトウェア及び/又はファームウェアを含む、メモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、ブルーレイディスクなどのような、非一時的コンピュータ読取可能な記憶デバイス又は記憶ディスクを含むように、ここに明確に定義される。更に、例示的なビデオエンコーダ100、例示的なIBCエンコーダ110及び/又は例示的なIBCデコーダ2200は、図1~図22に示すものに加えて或いはそれらの代わりに、1つ以上の要素、プロセス及び/又はデバイスを含んでよく、且つ/或いは、例示する要素、プロセス及びデバイスの一部又は全部のうちの1つ以上を含んでよい。本明細書で使用するとき、「通信して(in communication)」という語句は、その変形を含めて、1つ以上の中間コンポーネント(構成要素)を通じた直接的な通信及び/又は間接的な通信を包含し、直接的な物理的(例えば、有線)通信及び/又は常時通信を必要とせず、むしろ周期的な間隔、スケジュールされた間隔、非周期的な間隔、及び/又は1回限りの事象における選択的通信を追加的に含む。
例示的なビデオエンコーダ100及び/又は例示的なIBCエンコーダ110を実装するための、例示的なハードウェア論理、機械読取可能命令、ハードウェア実装状態マシン、及び/又はそれらの任意の組み合わせを表すフローチャートが、図23及び図25に示されている。これらの実施例において、機械読取可能命令は、図26に関連して以下に議論する例示的プロセッサプラットフォーム2600に示されるプロセッサ2612のような、コンピュータプロセッサによる実行のための1つ以上の実行可能プログラム又は実行可能プログラムの一部分であってよい。1つ以上のプログラム又はその一部分は、CD-ROM、フロッピーディスク、ハードドライブ、DVD、ブルーレイディスク(TM)、又はプロセッサ2612と関連付けられたメモリのような、非一時的コンピュータ読取可能記憶媒体に格納されるソフトウェアにおいて具現されてよいが、プログラム全体又は複数のプログラム全体及び/又はそれらの一部分は、代替的に、プロセッサ2612以外のデバイスによって実行されることができ、且つ/或いはファームウェア又は専用ハードウェアで具現されることができる。更に、例示的なプログラムは、図23及び図25に示すフローチャートを参照して記載されるが、例示的なビデオエンコーダ100及び/又は例示的なIBCエンコーダ110を実装する多くの他の方法が代替的に使用されてよい。例えば、図23及び図25に示すフローチャートを参照すると、ブロックの実行順序は変更されてよく、且つ/或いは記載のブロックの一部は、変更されてよく、除去されてよく、組み合わされてよく、且つ/或いは複数のブロックに細分されてよい。追加的に又は代替的に、ブロックの一部又は全部は、ソフトウェア又はファームウェアを実行することなく対応する動作を実行するように構成された1つ以上のハードウェア回路(例えば、離散及び/又は集積アナログ及び/又はデジタル回路、FPGA、ASIC、比較器、演算増幅器(演算アンプ)、論理回路など)によって実装されてよい。
例示的なIBCデコーダ2200を実装するための、例示的なハードウェア論理、機械読取可能命令、ハードウェア実装状態マシン、及び/又はそれらの任意の組み合わせを表すフローチャートが、図24に示されている。この例において、機械読取可能命令は、図27に関連して以下に議論する例示的なプロセッサプラットフォーム2700に示すプロセッサ2712のような、コンピュータプロセッサによる実行のための実行可能プログラムの1つ以上の実行可能プログラム又は一部分であってよい。1つ以上のプログラム又はそれらの一部分は、CD-ROM、フロッピーディスク、ハードドライブ、DVD、ブルーレイディスク(TM)、又はプロセッサ2712と関連付けられたメモリのような非一時的コンピュータ読取可能記憶媒体に格納されるソフトウェアにおいて具現されてよいが、プログラム全体又は複数のプログラム全体及び/又はそれらの一部分は、代替的に、プロセッサ2712以外のデバイスによって実行されることができ、且つ/或いはファームウェア又は専用ハードウェアにおいて具現されることができる。更に、例示的なプログラムは、図24に示すフローチャートを参照して記載されるが、例示的なIBCデコーダ2200を実装する多くの他の方法が代替的に使用されてよい。例えば、図24に示すフローチャートを参照すると、ブロックの実行順序は変更されてよく、且つ/或いは記載のブロックの一部は、変更されてよく、除去されてよく、組み合わされてよく、且つ/或いは複数のブロックに細分されてよい。追加的に又は代替的に、ブロックの一部又は全部は、ソフトウェア又はファームウェアを実行することなく対応する動作を実行するように構成された、1つ以上のハードウェア回路(例えば、離散及び/又は集積アナログ及び/又はデジタル回路、FPGA、ASIC、比較器、演算増幅器(演算アンプ)、論理回路など)によって実装されてよい。
本明細書に記載する機械読取可能命令は、圧縮フォーマット、暗号化フォーマット、断片化されたフォーマット、コンパイルされたフォーマット、実行可能フォーマット、パッケージ化されたフォーマットなどのうちの1つ以上に格納されてよい。本明細書に記載するような機械可読命令は、機械実行可能命令を作成、製造、及び/又は生成するために利用されることがあるデータ(例えば、命令の部分、コード、コードの表現など)として格納されてよい。例えば、機械読取可能命令は、1つ以上の記憶デバイス及び/又はコンピューティングデバイス(例えば、サーバ)に断片化されて格納されてよい。機械読取可能命令は、それらをコンピューティングデバイス及び/又は他の機械によって直接的に読取可能、解釈可能、及び/又は実行可能にするために、インストール(installation)、修正(modification)、適応(adaptation)、更新(updating)、組み合わせ(combining)、補足(supplementing)、構成(configuring)、解読(decryption)、解凍(decompression)、アンパック(unpacking)、配信(distribution)、再割当て(reassignment)、編集(compilation)などのうちの1つ以上を必要とすることがある。例えば、機械可読命令は、個別に圧縮され(compressed)、暗号化され(encrypted)、且つ別個のコンピューティングデバイスに格納される(stored)、複数の部分において格納されてよく、これらの部分は、解読され、解凍され、且つ組み合わされるときに、本明細書に記載するようなプログラムを実装する実行可能命令のセットを形成する。
別の例において、機械読取可能命令は、それらがコンピュータによって読み取られることがあるが、特定のコンピューティングデバイス又は他のデバイスで命令を実行するために、ライブラリ(例えば、動的リンクライブラリ(DLL))、ソフトウェア開発キット(SDK)、アプリケーションプログラミングインターフェース(API)などの追加を必要とする、状態で格納されてよい。別の例において、機械読取可能命令は、機械読取可能命令及び/又は対応するプログラムを全体的に又は部分的に実行し得る前に、構成されること(例えば、設定記憶される、データ入力される、ネットワークアドレス記録されることなど)が必要な場合がある。従って、開示の機械読取可能命令及び/又は対応するプログラムは、格納されるときに或いはさもなければ休止時に或いは輸送中に、機械読取可能な命令及び/又はプログラムの特定のフォーマット又は状態にかかわらず、そのような機械読取可能命令及び/又はプログラムを包含することが意図されている。
本明細書に記載する機械読取可能命令は、過去、現在、又は将来の命令言語、スクリプト言語、プログラミング言語などによって表わされることができる。例えば、機械読取可能命令は、以下の言語、すなわち、C、C++、Java、C#、Perl、Python、JavaScript、HyperText Markup Language(HTML)、構造化照会言語(SQL)、Swiftなどのいずれかの言語を使用して表わされてよい。
上述のように、図23~図25の例示的なプロセスは、ハードディスクドライブ、フラッシュメモリ、読出し専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は情報が任意の持続時間に亘って(例えば、長い時間期間に亘って、永久的に、短い瞬間に亘って、一時的なバッファリングに亘って及び/又は情報のキャッシュ化に亘って)格納される任意の他の記憶デバイス又は記憶ディスクのような、非一時的コンピュータ及び/又は機械読取可能媒体に格納される、実行可能な命令(例えば、コンピュータ及び/又は機械読取可能命令)を使用して実装されてよい。本明細書で使用されるとき、「非一時的コンピュータ読取可能媒体(non-transitory computer readable medium)」という用語は、あらゆるタイプのコンピュータ読取可能記憶デバイス及び/又は記憶ディスクを含むように、伝搬信号を排除するように、並びに伝送媒体を排除するように明示的に定義される。また、本明細書において使用されるとき、「コンピュータ読取可能(computer readable)」及び「機械読取可能(machine readable)」という用語は、他のことが示されない限り、均等であると考えられる。
「含む(including)」及び「含む(comprising)」(並びにそれらの全ての形態及び時制)は、本明細書では、オープンエンド(開放端)の用語(open-ended terms)として使用される。よって、請求項が任意の形態の「含む(include)」又は「含む(comprise)」(例えば、含む(comprises)、含む(includes)、含む(comprising)、含む(including)、有する(having)など)を前提部分として又は任意の種類の請求項の引用において利用するときにはいつでも、追加の要素、用語などが、対応する請求項又は引用の範囲外に入ることなく、存在する場合があることが理解されるべきである。本明細書において使用されるとき、「少なくとも」という語句が、例えば、請求項の前提部分において、移行用語として使用されるとき、それは「含む」及び「含む」という語句がオープンエンドであるのと同様にオープンエンドである。「及び/又は」という用語は、例えば、A、B、及び/又はCのような形態で使用されるとき、(1)Aのみ、(2)Bのみ、(3)Cのみ、(4)AとB、(5)AとC、(6)BとC、及び(7)AとB及びAとCのような、A、B、Cの任意の組み合わせ又はサブセットを指す。構造、コンポーネント、品目(アイテム)、物体(オブジェクト)及び/又は物を記載するコンテキスト(文脈)において本明細書中で使用されるとき、「A及びBのうちの少なくとも1つ」という語句は、(1)少なくとも1つのA、(2)少なくとも1つのB、及び(3)少なくとも1つのA及び少なくとも1つのBのうちのいずれかを含む実装を指すことが意図されている。同様に、構造、コンポーネント、品目、物体ト及び/又は物を記載するコンテキストにおいて本明細書中で使用されるとき、「A又はBのうちの少なくとも1つ」という語句は、(1)少なくとも1つのA、(2)少なくとも1つのB、及び(3)少なくとも1つのA及び少なくとも1つのBのうちのいずれかを含む実装を指すことが意図されている。プロセス、命令、アクション、アクティビティ、及び/又はステップの遂行性能又は実行を記載するコンテキストにおいて本明細書中で使用されるとき、「A及びBのうちの少なくとも1つ」という語句は、(1)少なくとも1つのA、(2)少なくとも1つのB、及び(3)少なくとも1つのA及び少なくとも1つのBのうちのいずれかを含む実装を指すことが意図されている。同様に、プロセス、命令、行為(アクション)、活動(アクティビティ)、及び/又はステップの遂行又は実行を記載するコンテキストにおいて本明細書中で使用されるとき、「A又はBのうちの少なくとも1つ」という用語は、(1)少なくとも1つのA、(2)少なくとも1つのB、及び(3)少なくとも1つのA及び少なくとも1つのBのうちのいずれかを含む実装を指すことが意図されている。
本明細書において使用されるとき、単数形の参照(例えば、「1つ(a)」、「1つ(an)」、「第1」、「第2」など)は、複数を除外しない。「1つ(a)」又は「1つ(an)」のエンティティ(実体)という用語は、本明細書において使用されるとき、そのエンティティの1つ以上を指す。「1つ(a)」(又は「1つ(an)」)、「1つ以上」、及び「少なくとも1つ」という用語は、本明細書中で互換的に使用されることができる。更に、個々に列挙されるが、複数の手段、要素、又は方法行為は、例えば、単一のユニット又はプロセッサによって実装されてよい。追加的に、個々の構成は、異なる例又は請求項に含まれることがあるが、これらは、場合によっては組み合わされてよく、異なる例又は請求項に含まれることは、構成の組み合わせが実現可能でない或いは有利でないことを暗示しない。
図1及び/又は図21のIBCエンコーダ110を実装するように実行されることがある例示的なプログラム2300が、図23に示すフローチャートによって表されている。前述の図及び関連する記述を参照すると、例示的なプログラム2300は、ブロック2305で実行を開始し、ブロック2305で、IBCエンコーダ110のコーディングブロックセレクタ2105は、上述のように、(例えば、構成パラメータ2120に基づいて)符号化されるべき画像のコーディングブロックを選択する。ブロック2310で、コーディングブロック変換器2110は、上述のように、(例えば、構成パラメータ2125に基づいて)評価されるべきIBCモードを取得する。ブロック2315で、コーディングブロック変換器2110は、上述のように、異なる強化されたIBC+モードに従ってコーディングブロックを変換して、ブロック2310で構成される異なる強化されたIBC+モードにそれぞれ対応するコーディングブロックの変換されたバージョンを決定する。
ブロック2320で、IBCエンコーダ110の予測器ブロック探索器2115は、上述のように、従来のIBCモード0に対応するコーディングブロックの変換されたいないバージョンに基づいてIBCサーチを実行する。ブロック2325で、予測器ブロック探索器2115は、上述のように、ブロック2310で構成される強化されたIBC+モードについて決定されるコーディングブロックのそれぞれの変換されたバージョンに基づいて1つ以上のIBCサーチを実行する。ブロック2330で、予測器ブロック探索器2115は、上記のように、ブロック2320及びブロック2325で実行されるIBCサーチに基づいて、コーディングブロックについての候補予測器ブロックを決定する。ブロック2335で、予測器ブロック探索器2115は、上述のように、候補予測器ブロックと関連付けられる勝ちIBCモード及び変位ベクトルを出力する。ブロック2340で、予測器ブロック探索器2115は、上述のように、予測器ブロックと関連付けられる残差ブロックデータ及びコーディングメトリックを出力する。
ブロック2345で、モードセレクタ120は、上述のように、IBCコーディングが(例えば、予測エンコーダ115によって実装される他の予測コーディング技術に対して)現在のコーディングブロックについて選択されるかどうかを決定する。IBCコーディングが選択されないならば(ブロック2345)、ブロック2350で、ストリームエンコーダ125は、上述のように、IBCビットフィールドを符号化して、IBCが選択されなかったことを示す。しかしながら、IBCコーディングが選択されると(ブロック2345)、次に、ブロック2355で、ストリームエンコーダ125は、IBCビットフィールドを符号化して、IBCが選択されたことを示し、勝ちIBCモードも符号化し、上述のように、出力符号化されたビデオビットストリーム内の変位ベクトルも符号化する。
図22のIBCデコーダ2200を実装するために実行されることがある例示的なプログラム2400が、図24に示すフローチャートによって表されている。前述の図及び関連する記述を参照すると、例示的なプログラム2400は、ブロック2405で実行を開始し、ブロック2405で、上述のように、図22のIBCデコーダ2200のストリームデコーダ2205は、上述のように、符号化されたビデオビットストリームからの現在のコーディングブロックについてのIBCモード及び変位ベクトルを復号化する。ブロック2410で、IBCデコーダ2200の予測器ブロックセレクタ2210は、上述のように、変位ベクトルに基づいて、現在のブロックを復号化するための予測器ブロックを選択する。ブロック2415で、予測器ブロック変換器2215は、上述のように、IBCモードに基づいて予測器ブロックを変換して、予測器ブロックの変換されたバージョンを決定する。ブロック2420で、IBCデコーダ2200のフレームデコーダ2220は、上述のように、予測器ブロックの変換されたバージョンに基づいて、現在のコーディングブロックを復号化する。
図1のビデオエンコーダ100を実装するために実行されることがある例示的なプログラム2500が、図25に示すフローチャートによって表されている。図25は、イントラブロックコピーを実行するための例示的なプロセスを示しており、プロセスは、幾つかの例において、以下の例示的な電子デバイス2800において実装されることができる。ブロック2502で、ピクセルの領域が、現在のブロックの上方で選択され、選択された領域は、ソースブロックと共にダウンスケールされる。異なる形状構成における最良のブロックベクトル候補を識別するために、網羅的なサーチが行われる。例えば、形状構成は、他の形状構成の中でも、正方形、長方形のペア、4個で1セットの正方形を含むことができる。最良のブロックベクトル候補は、完全解像度(full resolution)で整数運動推定(IME:Integer Motion Estimation)に含められる。
ブロック2504で、完全解像度一次元サーチが、選択されるミラーモード又は回転モードに従って軸に沿って実行される。例えば、従前に符号化されたピクセルは、図2~図20に記載するようなものであってよい。
ブロック2506で、候補イントラブロックコピー候補が、選択されるミラーモード又は回転モードに従って選択される。例えば、候補イントラブロックコピー候補を、品質及びビットコストに基づいて他の候補と比較することができる。従って、ブロック2502及び2504の技術を、性能制約付き符号化内での高精度サーチのために組み合わせることができる。
図26は、図23及び/又は図25の命令を実行して、図1及び図21の例示的なビデオエンコーダ100及び/又は例示的なIBCエンコーダ110を実装するように構成された、例示的なプロセッサプラットフォーム2600のブロック図である。プロセッサプラットフォーム2600は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習マシン(例えば、ニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(登録商標)のようなタブレット)、携帯情報端末(PDA)、インターネットアプライアンス、DVDプレーヤ、CDプレーヤ、デジタルビデオレコーダ、ブルーレイプレーヤ、ゲームコンソール、パーソナルビデオレコーダ、セットトップボックス、デジタルカメラ、ヘッドセット、又は他のウェアラブルデバイス、又は任意の他のタイプのコンピューティングデバイスであることができる。
図示する例のプロセッサプラットフォーム2600は、プロセッサ2612を含む。図示する例のプロセッサ2612は、ハードウェアである。例えば、プロセッサ2612は、1つ以上の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、又は任意の所望のファミリ又は製造業者からのコントローラによって実装されることができる。ハードウェアプロセッサ2612は、半導体ベース(例えば、シリコンベース)デバイスであってよい。この例において、プロセッサ2612は、例示的なビデオエンコーダ100、例示的なIBCエンコーダ110、例示的なビデオインターフェース105、例示的な予測エンコーダ115、例示的なモードセレクタ120、例示的なストリームエンコーダ125、例示的なコーディングブロックセレクタ2105、例示的なコーディングブロック変換器2110、及び/又は例示的な予測ブロック探索器2115を実装する。
図示する例のプロセッサ2612は、ローカルメモリ2613(例えば、キャッシュ)を含む。図示する例のプロセッサ2612は、リンク2618を介して、揮発性メモリ2614と不揮発性メモリ2616とを含むメインメモリと通信する。リンク2618は、バス、1つ以上のポイントツーポイント接続など、又はそれらの組み合わせによって実装されてよい。揮発性メモリ2614は、シンクロナスランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、RAMBUS(登録商標)Dynamic Random Access Memory(RDRAM(登録商標))、及び/又は任意の他のタイプのランダムアクセスメモリデバイスによって実装されてよい。不揮発性メモリ2616は、フラッシュメモリ及び/又は任意の他の所望のタイプのメモリデバイスによって実装されてよい。メインメモリ2614、2616へのアクセスは、メモリコントローラによって制御される。
図示する例のプロセッサプラットフォーム2600は、インターフェース回路2620も含む。インターフェース回路2620は、イーサネット(登録商標)インターフェース、ユニバーサルシリアルバス、ブルートゥース(登録商標)インターフェース、近接場通信インターフェース、及び/又はPCIエクスプレスインターフェースのような、任意のタイプのインターフェース標準によって実装されてよい。
図示する例では、1つ以上の入力デバイス2622が、インターフェース回路2620に接続されている。入力デバイス2622は、ユーザがデータ及び/又はコマンドをプロセッサ2612に入力することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロホン、(静止又はビデオ)カメラ、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、(アイソポイントのような)トラックバー、音声認識システム、及び/又は任意の他の人間機械インターフェースによって実装されることができる。また、プロセッサプラットフォーム2600のような多くのシステムは、ユーザがコンピュータシステムを制御し、限定されるわけではないが、手又は身体の動き、顔の表情、及び顔認識のような、物理的ジェスチャを使用して、コンピュータにデータを提供することを可能にする。
1つ以上の出力デバイス2624が、図示の例のインターフェース回路2620に接続されている。出力デバイス2624は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ(LCD)、陰極線管ディスプレイ(CRT)、現場スイッチング(IPS)ディスプレイ、タッチスクリーンなど)、触覚出力デバイス、プリンタ及び/又はスピーカによって実装されることができる。よって、図示する例のインターフェース回路2620は、典型的には、グラフィックスドライバカード、グラフィックスドライバチップ、及び/又はグラフィックスドライバプロセッサを含む。
図示する例のインターフェース回路2620は、ネットワーク2626を介した外部マシン(例えば、任意の種類のコンピューティングデバイス)とのデータの交換を容易にするために、送信機、受信機、送受信機、モデム、住宅ゲートウェイ、無線アクセスポイント、及び/又はネットワークインターフェースのような、通信デバイスも含む。通信は、例えば、イーサネット接続、デジタル加入者回線(DSL)接続、電話回線接続、同軸ケーブルシステム、衛星システム、ラインオブサイト無線システム、セルラ電話システムなどを介することができる。
図示する例のプロセッサプラットフォーム2600は、ソフトウェア及び/又はデータを格納するための1つ以上の大容量記憶デバイス2628も含む。そのような大容量記憶デバイス2628の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、独立ディスクの冗長アレイ(RAID)システム、及びデジタル多用途ディスク(DVD)ドライブを含む。
図23及び/又は図25の命令に対応するマシン実行可能命令2632は、大容量記憶デバイス2628内に、揮発性メモリ2614内に、不揮発性メモリ2616内に、ローカルメモリ2613内に、及び/又はCD又はDVD2636のような取り外し可能な非一時的コンピュータ読取可能記憶媒体上に格納されてよい。
図27は、図22の例示的なIBCデコーダ2200を実装するために、図24の命令を実行するように構成された、例示的なプロセッサプラットフォーム2700のブロック図である。プロセッサプラットフォーム2700は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習マシン(例えば、ニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(登録商標)のようなタブレット)、PDA、インターネットアプライアンス、DVDプレーヤ、CDプレーヤ、デジタルビデオレコーダ、ブルーレイプレーヤ、ゲームコンソール、パーソナルビデオレコーダ、セットトップボックス、デジタルカメラ、ヘッドセット、又は他のウェアラブルデバイス、又は任意の他のタイプのコンピュータデバイスであることができる。
図示する例のプロセッサプラットフォーム2700は、プロセッサ2712を含む。図示する例のプロセッサ2712は、ハードウェアである。例えば、プロセッサ2712は、1つ以上の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、又は任意の所望のファミリ又は製造業者からのコントローラによって実装されることができる。ハードウェアプロセッサ2712は、半導体ベース(例えば、シリコンベース)デバイスであってよい。この例において、プロセッサ2712は、例示的なIBCデコーダ2200、例示的な予測器ブロックセレクタ2210、例示的な予測器ブロック変換器2215、及び/又は例示的なフレームデコーダ2220を実装する。
図示する例のプロセッサ2712は、ローカルメモリ2713(例えば、キャッシュ)を含む。図示する例のプロセッサ2712は、リンク2718を介して、揮発性メモリ2714と不揮発性メモリ2716とを含むメインメモリと通信する。リンク2718は、バス、1つ以上のポイントツーポイント接続など、又はそれらの組み合わせによって実装されてよい。揮発性メモリ2714は、SDRAM、DRAM、RDRAM(登録商標)及び/又は任意の他のタイプのランダムアクセスメモリデバイスによって実装されてよい。不揮発性メモリ2716は、フラッシュメモリ及び/又は任意の他の所望のタイプのメモリデバイスによって実装されてよい。メインメモリ2714、2716へのアクセスは、メモリコントローラによって制御される。
図示する例のプロセッサプラットフォーム2700は、インターフェース回路2720も含む。インターフェース回路2720は、イーサネットインターフェース、USB、ブルートゥース(登録商標)インターフェース、NFCインターフェース、及び/又はPCIエクスプレスインターフェースのような、任意のタイプのインターフェース標準によって実装されてよい。
図示する例では、1つ以上の入力デバイス2722が、インターフェース回路2720に接続されている。入力デバイス2722は、ユーザがプロセッサ2712にデータ及び/又はコマンドを入力することを可能にする。入力デバイスは、例えば、オーディオセンサ、マイクロホン、(静止又はビデオ)カメラ、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、(アイソポイントのような)トラックバー、音声認識システム、及び/又は他の人間-機械インターフェースによって実装されることができる。また、プロセッサプラットフォーム2700のような多くのシステムは、ユーザがコンピュータシステムを制御し、限定されるわけではないが、手又は身体の動き、顔の表情、及び顔認識のような、物理的ジェスチャを使用して、コンピュータにデータを提供することを可能にする。
1つ以上の出力デバイス2724は、図示する例のインターフェース回路2720にも接続される。出力デバイス2724は、例えば、ディスプレイデバイス(例えば、LED、OLED、LCD、CRTディスプレイ、IPSディスプレイ、タッチスクリーンなど)、触覚出力デバイス、プリンタ及び/又はスピーカによって実装されることができる。よって、図示する例のインターフェース回路2720は、典型的には、グラフィックスドライバカード、グラフィックスドライバチップ、及び/又はグラフィックスドライバプロセッサを含む。
図示する例のインターフェース回路2720は、ネットワーク2726を介した外部マシン(例えば、任意の種類のコンピューティングデバイス)とのデータの交換を容易にするために、送信機、受信機、送受信機、モデム、住宅ゲートウェイ、無線アクセスポイント、及び/又はネットワークインターフェースのような、通信デバイスも含む。通信は、例えば、イーサネット接続、デジタル加入者回線(DSL)接続、電話回線接続、同軸ケーブルシステム、衛星システム、ラインオブサイト無線システム、セルラ電話システムなどを介することができる。
図示する例のプロセッサプラットフォーム2700は、ソフトウェア及び/又はデータを格納するための1つ以上の大容量記憶デバイス2728も含む。そのような大容量記憶デバイス2728の例は、フロッピーディスクドライブ、ハードドライブディスク、コンパクトディスクドライブ、ブルーレイディスクドライブ、RAIDシステム、及びDVDドライブを含む。
図24の命令に対応するマシン実行可能命令2732は、大容量記憶デバイス2728内に、揮発性メモリ2714内に、不揮発性メモリ2716内に、ローカルメモリ2713内に、及び/又はCD又はDVD2736のような取り外し可能な非一時的コンピュータ読取可能記憶媒体上に記憶されてよい。
図28は、改良されたスクリーンコンテンツ圧縮のための強化されたイントラブロックコピーモードを可能にする例示的な電子デバイス2800のブロック図である。電子デバイス2800は、とりわけ、サーバ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話、スマートフォン、又はウェアラブルデバイス、ドローンであってよい。電子デバイス2800は、格納される命令を実行するように構成される中央処理装置(CPU)2802、並びにCPU2802によって実行可能である命令を格納するメモリデバイス2804を含んでよい。CPUは、バス2806によってメモリデバイス2804に結合されてよい。加えて、CPU2802は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、又は任意の数の他の構成であることができる。更に、電子デバイス2800は、1つよりも多くのCPU2802を含んでよい。メモリデバイス2804は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、フラッシュメモリ、又は任意の他の適切なメモリシステムを含むことができる。例えば、メモリデバイス2804は、ダイナミックランダムアクセスメモリ(DRAM)を含んでよい。
電子デバイス2800は、グラフィックス処理ユニット(GPU)2808も含む。図示のように、CPU2802は、バス2806を通じてGPU2808に結合されることができる。GPU280は、電子デバイス2800内で任意の数のグラフィックス動作を実行するように構成されることができる。例えば、GPU280は、電子デバイス2800のユーザに表示されるべきグラフィックス画像、グラフィックスフレーム、ビデオ、又は同等物をレンダリング又は操作するように構成されることができる。幾つかの例において、GPU2808は、多数のグラフィックスエンジンを含み、各グラフィックスエンジンは、特定のグラフィックスタスクを実行するか或いは特定のタイプのワークロードを実行するように構成される。例えば、GPU2808は、ロスレスピクセル圧縮を介してビデオデータを処理するエンジンを含んでよい。
CPU2802は、バス280を通じて、電子デバイス2800を複数のディスプレイデバイス2812に接続するように構成されたディスプレイインターフェース2810にリンクされることができる。ディスプレイデバイス2812は、電子デバイス2800の内蔵コンポーネントであるディスプレイスクリーンを含むこともできる。ディスプレイデバイス2812は、とりわけ、電子デバイス2800に外部的に接続される、コンピュータモニタ、テレビ、又はプロジェクタを含んでもよい。
CPU2802は、バス2806を通じて、電子デバイス2800を1つ以上の入出力(I/O)デバイス2816に接続するように構成されたI/Oデバイスインターフェース2814に接続されることもできる。I/Oデバイス2816は、例えば、キーボード及びポインティングデバイスを含むことができ、ポインティングデバイスは、とりわけ、タッチパッド又はタッチスクリーンを含むことができる。I/Oデバイス2816は、電子デバイス2800の内蔵コンポーネントであることができ、或いは電子デバイス2800に外部的に接続されるデバイスであることができる。
電子デバイス2800は、記憶デバイス2818を含んでよい。記憶デバイス2818は、ハードドライブ、光学ドライブ、フラッシュドライブ、駆動装置のアレイ、又はそれらの任意の組み合わせのような、物理メモリである。記憶デバイス2818は、とりわけ、オーディオファイル、ビデオファイル、オーディオ/ビデオファイル、及びピクチャファイルのような、ユーザデータを格納することができる。記憶デバイス2818は、デバイスドライバ、ソフトウェアアプリケーション、オペレーティングシステム、及び同等物のような、プログラミングコードを格納することもできる。記憶デバイス2818に格納されるプログラミングコードは、CPU2802、GPU280、又は電子デバイス2800に含まれることがある任意の他のプロセッサによって実行されてよい。
CPU2802は、バス2806を通じて、セルラハードウェア2820にリンクされてよい。セルラハードウェア2820は、任意のセルラ技術、例えば、国際電気通信連合-無線通信セクタ(ITU-R)によって公布された4G標準(IMT-Advanced:International Mobile Telecommunications-Advanced)であってよい。このようにして、電子デバイス2800は、ネットワーク2822がセルラネットワークである場合に、他のデバイスにテザリングされたり或いはペアリングされたりすることなく、任意のネットワーク2822にアクセスすることができる。
CPU2802は、バス2806を通じて、WiFiハードウェア2824にリンクされてもよい。WiFiハードウェアは、WiFi標準(IEEE:Institute of Electrical and Electronics Engineers)802.11標準として公布された標準)に従ったハードウェアである。WiFiハードウェア2824は、電子デバイス2800が、ネットワーク2822がインターネットである場合に、伝送制御プロトコル及びインターネットプロトコル(TCP/IP:Transmission Control Protocol and Internet Protocol)を使用して、インターネットに接続することを可能にする。従って、電子デバイス2800は、他のデバイスを使用することなく、TCP/IPプロトコルに従ってデータをアドレス指定、経路指定、送信、及び受信することによって、インターネットとのエンドツーエンド接続を可能にすることができる。加えて、ブルートゥースインターフェース2826は、バス2806を通じてCPU2802に結合されてよい。ブルートゥースインターフェース2826は、(ブルートゥース特別利益団体(Bluetooth Special Interest Group)によって公布されたブルートゥース標準に基づく)ブルートゥースネットワークに従ったインターフェースである。ブルートゥースインターフェース2826は、電子デバイス2800を、パーソナルエリアネットワーク(PAN)をつうjいて他のブルートゥース対応デバイスとペアリングされることを可能にする。従って、ネットワーク2822は、PANであってよい。ブルートゥース対応デバイスの例は、とりわけ、ラップトップコンピュータ、デスクトップコンピュータ、ウルトラブック、タブレットコンピュータ、モバイルデバイス、又はサーバを含む。
電子デバイス2800は、エンコーダ2828を含んでよい。幾つかの例において、エンコーダ2828は、エンコーダアルゴリズムのメインループ内で実行されるプログラマブルエンジンを伴わないハードウェアエンコーダであってよい。これは固定関数符号化(fixed function encoding)と呼ばれることがある。一般に、ビデオデータをコーディングすることは、記録及び再生のための適切なフォーマット及び仕様を満たすようにビデオを符号化することを含む。運動推定2830(motion estimation)は、エンコーダ2828の固定関数ハードウェアを介してアルゴリズムを実行してよい。運動推定は、ビデオコーディング及びビデオ圧縮において重要で計算集中的なタスクである。幾つかの例において、運動推定2830は、HME、AVC IME、及びHEVC IMEを含んでよい。例えば、HMEは、粗粒(coarse-grained)運動推定サーチを実行することがある。マルチパスパッキング(PAK:multi-pass packing)パラメータのようなパラメータが、PAKモジュールによって標的サイズ又はビットレートに基づいて計算されてよい。幾つかの例において、エンコーダは、条件付きマルチパス符号化を可能にするために反復的に使用されることができる。例えば、エンコーダは、タイル又はフレームベースの反復を使用してよい。電子デバイス2800は、イントラブロックコピーユニット2832も含む。イントラブロックコピーユニット2832は、完全解像度一次元サーチが、選択されるミラーモード又は回転モードに従って軸に沿って実行されることを可能にすることがある。例えば、従前に符号化されたピクセルは、図2~図20に記載するようなものであってよい。候補イントラブロックコピー候補は、選択されるミラーモード又は回転モードに従って選択されてよい。例えば、候補イントラブロックコピー候補を、品質及びビットコストに基づいて他の候補と比較することができる。
図28のブロック図は、電子デバイス2800が、図28に示すコンポーネントの全てを含むものであることを示すことを意図していない。むしろ、コンピューティングシステム2800は、より少ない又は図28に示されていない追加のコンポーネント(例えば、センサ、電力管理集積回路、追加のネットワークインターフェースなど)を含むことができる。電子デバイス2800は、特定の実装の詳細に依存して、図28に示されない任意の数の追加のコンポーネントを含んでよい。更に、CPU2802の機能のいずれかは、部分的に又は全体的に、ハードウェア及び/又はプロセッサ内に実装されてよい。例えば、機能性は、特定用途向け集積回路、プロセッサに実装された論理、特殊化されたグラフィックス処理ユニットに実装された論理、又は任意の他のデバイス内に実装されてよい。
図29は、改良されたスクリーンコンテンツ圧縮のための強化されたイントラブロックコピーモードのためのロジックを含む媒体2900を示すブロック図である。媒体2900は、コンピュータバス2904を通じてプロセッサ2902によってアクセスされることができるコードを格納する非一時的コンピュータ読取可能媒体を含む、コンピュータ読取可能媒体であってよい。例えば、コンピュータ読取可能媒体2900は、揮発性又は不揮発性データ記憶デバイスであることができる。媒体2900はまた、例えば、特定用途向け集積回路、フィールドプログラマブルゲートアレイ、又は1つ以上の集積回路に実装される論理ゲートの配置のような、論理ユニットであることもできる。
媒体2900は、本明細書に記載する技術を実行するように構成されたモジュール2906~2908を含んでよい。例えば、動作推定モジュール2906が、HME、AVC IME、及びHEVC IMEを含んでよい。例えば、HMEは、粗粒運動推定サーチを実行することがある。マルチパスパッキング(PAK)パラメータのようなパラメータが、PAKモジュールによって標的サイズ又はビットレートに基づいて計算されてよい。幾つかの例において、エンコーダは、条件付きマルチパス符号化を可能にするために反復的に使用されることができる。例えば、エンコーダは、タイル又はフレームベースの反復を使用してよい。イントラブロックコピーモジュール2908は、完全解像度一次元サーチが、選択されるミラーモード又は回転モードに従って軸に沿って実行されることを可能にするように構成されてよい。例えば、従前に符号化されたピクセルは、図2~図20に記載されているようなものであってよい。候補イントラブロックコピー候補は、選択されるミラーモード又は回転モードに従って選択されてよい。例えば、候補イントラブロックコピー候補を、品質及びビットコストに基づいて他の候補と比較することができる。
図29のブロック図は、媒体2900が図29に示すコンポーネントの全てを含むものであることを示すことを意図していない。更に、媒体2900は、特定の実装の詳細に依存して、図29に示されていない任意の数の追加のコンポーネントを含んでよい。
図26及び図27の例示的なコンピュータ読取可能命令2632及び/又は2732のようなソフトウェアを第三者に配信するための例示的なソフトウェア配信プラットフォーム3005を示すブロック図が、図30に示されている。例示的なソフトウェア配信プラットフォーム3005は、ソフトウェアを格納して他のコンピューティングデバイスに送信することができる任意のコンピュータサーバ、データ設備、クラウドサービスなどによって実装されてよい。第三者は、ソフトウェア配信プラットフォームを所有及び/又は運用するエンティティの顧客であることがある。例えば、ソフトウェア配信プラットフォームを所有及び/又は運用するエンティティは、図26及び図27の例示的なコンピュータ読取可能命令2632及び/又は2732のようなソフトウェアの開発者、販売者、及び/又はライセンサであることがある。第三者は、使用及び/又は再販売及び/又はサブライセンスのためにソフトウェアを購入及び/又はライセンスする、消費者、ユーザ、小売業者、OEMなどであることがある。図示の例において、ソフトウェア配信プラットフォーム3005は、1つ以上のサーバ及び1つ以上の記憶デバイスを含む。記憶デバイスは、上述のような、図23~図25の例示のコンピュータ読取可能命令2300、2400及び/又は2500に対応することがある、コンピュータ読取可能命令2632及び/又は2732を格納する。例示的なソフトウェア配信プラットフォーム3005の1つ以上のサーバは、インターネット及び/又は上述の例示的なネットワーク2600及び/又は2700のうちのいずれかの1つ以上に対応することがあるネットワーク3010と通信する。幾つかの例において、1つ以上のサーバは、商取引の一部としてソフトウェアを要求者に送信する要求に応答する。ソフトウェアの配信、販売、及び/又はライセンスに対する支払いは、ソフトウェア配信プラットフォームの1つ以上のサーバ及び/又は第三者支払いエンティティによって取り扱われてよい。サーバは、購入者及び/又はライセンス許諾者がソフトウェア配信プラットフォーム3005からコンピュータ読取可能命令2632及び/又は2732をダウンロードすることを可能にする。例えば、図23及び図25の例示的なコンピュータ読取可能命令2300及び/又は2500に対応することがあるソフトウェアは、例示的なプロセッサプラットフォーム2600にダウンロードされてよく、プロセッサプラットフォーム2600は、ビデオエンコーダ100及び/又はIBCエンコーダ110を実装するためにコンピュータ読取可能命令2632を実行する。別の例として、図24の例示的なコンピュータ読取可能命令2400に対応することがあるソフトウェアは、例示的なプロセッサプラットフォーム2700にダウンロードされてよく、プロセッサプラットフォーム2700は、コンピュータ読取可能命令2732を実行して、IBCデコーダ2200を実装するものである。幾つかの例において、ソフトウェア配信プラットフォーム3005の1つ以上のサーバは、改良、パッチ、更新などが配信されて、エンドユーザデバイスにあるソフトウェアに適用されることを確実にするために、ソフトウェアに対する更新(例えば、図26及び図27の例示的なコンピュータ読取可能命令2632及び/又は2732)を定期的に提供、送信、及び/又は強制する。
この開示の教示に従って実装された複数のイントラブロックモードを有するビデオコーディングのための例示的な性能結果及び潜在的強化が図31に示されており、以下に記載される。性能結果は、エンコーダ及びデコーダの変更が上述の7つのIBC+モードの一部又は全部のための複数のPU形状について実装された、例示的な実装に基づいている。第1の例示的な実装において、ソースコーディングブロックへの変換は、イントラブロックサーチの前に適用された。IBC及びIBC+モードで予測を行うときには、提案されるIBC+モードのうちの1つが勝つならば/勝つときに、この例示的な実装のエンコーダは、勝ちモード(上記7つのIBC+モードによって指定されるようなミラー又は回転)を定義するために表示ビットと共に変位ベクトル(ブロックの左上位置のDV)をコーディングした。デコーダ側で、この情報は復号化され、適切な逆変換が適用された。この例示的な実装では、エンコーダがソースコーディングブロックを変換するので、再構成の間に、デコーダは、予されるブロック/勝ちブロックに対して逆変換を実行して、エンコーダ側で実行される変換と同じ効果を達成する。この第1の例示的な実装は、上述の構成0をサポートし、よって、全ての7つのIBC+モードが、この例においてサポートされた。この第1の例示的な実装は、可変長コーディング(最大3ビットフィールド)を使用して、勝ちIBCモードを示した。
また、第2の例示的な実装を構築して試験した。第2の例示的な実装は、品質トレードオフを複雑性のオーバーヘッド並びに勝ちIBCモードを表すのに必要とされるビットと比較/対比するために、IBC+モードのサブ構成をサポートした。複数の実験からの統計は、最も一般的に勝つIBC+モードが、(上述のIBC+モード1及び3にそれぞれ対応する)ミラー角度0及び90並びに(上述のIBC+モード5、6及び7にそれぞれ対応する)回転角度90、180及び270であることを示した。よって、この第2の例示的な実装は、上述の構成サポートされた構成1をサポートし、それは上位5つ(top 5)のIBC+モード(ミラー0及び90、回転90、180及び270)に制限される。この第2の例示的な実装は、可変長符号化(最大3ビットフィールド)も使用して、勝ちIBCモードを示した。45度ミラー変換及び135度ミラー変換に対応するIBC+モード1及び4は、実験的に非常に少ない割合の勝者に寄与するので、構成1のサブ構成は、複雑性及びビットレートのオーバーヘッドに対する品質の良好なトレードオフを提供する。
これらの例示的な実装は新しいIBC+モードを追加するので、7つの新しいIBC+モードを持つ構成0、及び5つの新しいIBC+モードを持つ構成1の両方は、エンコーダに複雑性を加えることがある。何故ならば、各入力コーディングブロックは、コーディングブロックの全セット(例えば、4×4~128×128)に亘って、あらゆるサポートされているIBC+モードのために、潜在的な勝者についてサーチされるからである。表2は、(強化されたIBC+モードを持たない)以前のIBC実装と、上述の例示的な強化されたIBC+構成0実装の例との間の比較を提供している。表2は、考慮されるシーケンスについて例示的な以前の強化されていないIBC実装例と比較された、例示的な強化されたIBC+構成0実装について、エンコーダ時間の~5.36倍の増加を示している。この複雑性を潜在的に減少させる意図で、IBC+モードを有効にするためにブロックサイズを制限する選択肢も探究された。これを達成するために、IBC形状バケット(128/64/32/16/8/4)を用いて実験を実行し、各IBC形状バケットは、最も一般的に勝っているIBC形状を示す統計を抽出するために含められた、それらの変形形状(variant shapes)を備えた。実験は、(22、27、32、37)の4つの異なる量子化パラメータ(QP:quantization parameters)における5フレームについてのAll‐Intra構成でそれぞれ符号化された、両方とも420及び440フォーマットにある、HEVCスクリーンコンテンツコーディング(HEVC‐SCC)拡張及び一般試験条件(CTC:common test conditions)からの、3つのクリップの小さなサンプルセット、すなわち、Console 1080p、 Fling Graphics 1080p及びMap 720pに対して行われた。これらのクリップが選択されたのは、それらが試験されたSCCクリップ(HEVC及びAV1(The Alliance for Open Media Video 1))に亘って最大のBDレートの改良をもたらしたからである。
表2の統計は、全てのIBC勝者の~99.75%が形状4×4~32×32からのものであることを示している。32×32よりも大きなブロック形状からの寄与は無視できるので、IBC+モードを2×32以下のブロック形状に制限することは、品質の如何なる有意な損失ももたらさない実行可能な制限である。また、表3は、エンコーダのランタイムアップ速度上昇が、この制限で、例えば、以前の強化されていないIBC実装に対して、上述の構成0実装と関連付けられる~5.3倍の増加から~3.5倍までのランタイム低下を示す結果をもたらす。
全体的に、品質の損失が殆どないか或いは全くないこと、32×32よりも大きなコーディングブロックについてIBC+モードを無効にすることによって強化されたIBC+構成0実装について33%の速度上昇を達成し得ることがわかる。
次に、例示的な一般試験条件(CTC)性能結果を議論する。本明細書に開示するような、複数のイントラブロックモードを有するビデオコーディングは、IBCの拡張であり、よって、スクリーンコンテンツ改良に標的付けられている。ベンチマーキング品質結果について相当な大きさのサンプル空間を有するよう、AV1 CTC (420、4クリップ、各60フレーム)及びHEVC CTC(444及び420、12クリップ、各120フレーム)の両方からのスクリーンコンテンツクリップに対して実験を行った。選択したコンテンツのカテゴリは、「テキストと動きのあるグラフィックス(TGM:text and graphics with motion)」、「混合コンテンツ(M:mixed content)」、「アニメーション(A:animation)」である。実験は、CODEC試験に一般的な標準的な4つのQP構成、すなわち、QP[22,27,32,37]を使用した。AV1は、IBCがイントラフレームでのみ有効にされることを可能にする。よって、クリップ内の各フレームがイントラフレームとしてコーディングされる「全イントラ(All-Intra)」構成で試験を実行した。
表5~表8の例示的な性能結果は、上述の例示的な強化されたIBC+構成0の実装が、試験した全てのスクリーンコンテンツに亘って最良かつ一貫した結果を示したことを示している。以下の表9及び表10は、例示的な強化されたIBC+構成0実装についての更なる例示的な性能結果を提供するが、IBC+モードを上記のような32×32以下の形状に制限するブロックサイズ制限を組み込むように修正されている。
試験した444及び420スクリーンコンテンツの例の両方について、例示的な強化されたIBC+構成0実装は最良の結果を示し、444フォーマットは、クリップの一部について~5%の高さを伴う、BD-PSNRにおける~2%の平均的な改良を示し、420フォーマットは、~0.8%の平均的な改良を示し、幾つかのクリップについて~1.9%程度の改良を示した。異なるコンテンツカテゴリ(テキスト及びグラフィクス運動、アニメーション及び混合コンテンツ)に亘って結果を分析すると、試験された全ての3つの例示的な強化されたIBC+構成は、特にテキスト及びグラフィクス運動(TGM)について、実質的な改良を示すように思われる。例示的な強化されたIBC+構成0実装は、再び、444フォーマットコンテンツについてBD-PSNRにおける~2.63%及び420フォーマットコンテンツについて~1.1%の平均で、最大限の改良を示す。
図31は、HEVC SCC CTCからのシーケンスコンソール(1080p、444)について提案された強化されたIBCモードについてのPSNR-Y対バイトレートについてのBDレート改良曲線を示す例示的なグラフ3100を含む。
試験した例示的な実装のうち、例示的な強化されたIBC+構成0実装は、エンコーダサーチに最も複雑さを加える。何故ならば、それは各コーディングブロックについて7つの異なる変換を含むからである。エンコーダの複雑さを低減するために、上述の例示的な強化されたIBC+構成1を含む、IBC+モードが適用されたコーディング形状に対する制限を有する他の例示的な実装も試験した。表11及び表12は、上述のような、上位5つの最も一般的に発生するIBC+モードを含む、低減モードの例示的な強化されたIBC+構成1についての例示的な性能結果を提供する。
表11及び表12に示すように、(上位5つのIBC+モードを有する)例示的な強化されたIBC+構成1実装は、幾つかのクリップに対して~4.8%の高さで、全ての試験したクリップに亘って444フォーマットコンテンツについて~1.8%の平均BD-PSNR改良を示し、それは(全てのIBC+モードをサポートした)例示的な強化されたIBC+構成0実装についての結果と比較して僅かな低減である。テキスト及びグラフィクス運動(TGM)クリップは、444フォーマットについて~2.46%及び420フォーマットについて1.1%の平均BD-PSNR改良を示した、例示的な強化されたIBC+構成0実装と比較して、例示的な強化されたIBC+構成1実装についての性能改良における僅かな減少も示す。
混合コンテンツ(M)についての結果は、444フォーマットについて~0.75%及び420フォーマットについて~0.40%の平均的なBD-PSNR改良を伴って、両方の例示的な強化されたIBC+構成に亘って実質的に均一であるように思われる。アニメーションコンテンツは、~1.1%の性能改良を示した1つの420クリップ(StarCraft-1080p,60f)を除いて、あまり改良を示さなかった。全体的に、複雑さがブロッキング問題であるエンコーダ設計について、例示的な強化されたIBC+構成1実装は、エンコーダ及びハードウェア設計の複雑さに対する品質改良についての良好なトレードオフを提供する。
上述のエンコーダランタイム実験に加えて、デコーダ実行時間を分析する実験も実行した。HEVC SCCスイートからの4つのクリップ、すなわち、(22、27、32、37)の4つの異なるQPにおける各クリップの120フレームの復号化することを含む、420フォーマット及び444フォーマットの両方におけるConsole/Flyng Graphics(1080p)及びMap/WebBrowsing(720p)を使用した実験を行った。表13は、前述のように、32×32よりも大きな形状が無効にされた強化されたIBC+構成0実装に対する、以前のIBCデコーダ実装についての例示的なデコーダランタイムの比較を提供する。表13は、より多くのIBC勝者が強化されたIBC+構成0実装において浮上することの故に、デコーダランタイムが、従来のIBCデコーダ実装と比較して、僅かな改良(~3%)を示すことを実証している。
全体的に、本明細書に開示する強化されたIBC+構成についてのエンコーダランタイムは、従来の強化されていないIBC実装に対して~250%の増加を示すのに対し、デコーダランタイムは、従来の強化されていないIBC実装と比較して3%の速度上昇であることがわかる。これらの結果は、「全イントラ(All-Intra)」モードについてのものであり、よって、実世界のシナリオでは、組み合わされたエンコーダ及びデコーダシーケンスについての全体的なランタイム増加は、本明細書に開示する強化されたIBC+構成よりもずっと小さいはずであることに留意されたい。
前述の開示は、複数のイントラブロックモードを有するビデオコーディングを実装するための例示的な解決策を提供する。ビデオエンコーダ装置、実行されるときに少なくとも1つのプロセッサにビデオエンコーダを実装させる命令を含む非一時的コンピュータ読取可能媒体、ビデオデコーダ装置、実行されるときに少なくとも1つのプロセッサにビデオデコーダを実装させる命令を含む非一時的コンピュータ読取可能媒体、及び関連する方法のような主題を含む、以下の更なる例を、本明細書に開示する。開示する例は、個々に及び/又は1つ以上の組み合わせにおいて実装されることができる。
例1は、ビデオエンコーダを含む。例1のビデオエンコーダは、画像フレームのコーディングブロックに対して変換動作を実行して、コーディングブロックの変換されたバージョンを決定する、コーディングブロック変換器を含む。例1のビデオエンコーダは、コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ及びコーディングブロックの前記変換されたバージョンに基づく第2のイントラブロックコピーサーチを実行して、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定する、探索器も含み、候補予測器ブロックは、画像フレームのイントラブロックコピー予測器に対応する。
例2は、例1のビデオエンコーダを含み、変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである。
例3は、例2のビデオエンコーダを含み、変換動作は、ミラー動作であり、コーディングブロックの変換されたバージョンは、コーディングブロックのミラーリングされた(mirrored)バージョンであり、コーディングブロック変換器は、コーディングブロックに対して回転動作を実行して、コーディングブロックの回転されたバージョンを決定し、探索器は、(i)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ、(ii)コーディングブロックのミラーリングされたバージョンに基づく第2のイントラブロックコピーサーチ、及び(iii)コーディングブロックの回転されたバージョンに基づく第3のイントラブロックコピーサーチを実行して、候補予測器ブロックを決定する。
例4は、例1~3のうちのいずれかのビデオエンコーダを含み、変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む。
例5は、例4のビデオエンコーダを含み、コーディングブロックの変換されたバージョンは、コーディングブロックの第1の変換されたバージョンであり、コーディングブロック変換器は、コーディングブロックに対して複数の変換動作のそれぞれの1つを実行して、コーディングブロックの対応する異なる変換されたバージョンを決定し、コーディングブロックの異なる変換されたバージョンは、コーディングブロックの第1の変換されたバージョンを含み、探索器は、コーディングブロックの変換されていないバージョン及びコーディングブロックの異なる変換されたバーションの対応するものに基づいてそれぞれのイントラブロックコピーサーチを実行して、候補予測器ブロックを決定する。
例6は、例1~3のうちのいずれかのビデオエンコーダを含み、変換動作は、コーディングブロック変換器によって実行されるべき複数の変換動作のうちの1つに対応し、複数のイントラブロックコピーモードのそれぞれ1つが、変換動作の対応する1つを表し、探索器は、(i)コーディングブロックに対する候補予測器ブロックの場所を表す変位ベクトル及び(ii)候補予測器ブロックと関連付けられるイントラブロックコピーモードの第1のものを出力する。
例7は、例6のビデオエンコーダを含み、イントラブロックコピーモードの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化するストリームエンコーダを更に含む。
例8は、コンピュータ読取可能命令を含む、少なくとも1つの非一時的コンピュータ読取可能媒体を含み、コンピュータ読取可能命令は、実行されるときに、1つ以上のプロセッサに、(i)画像フレームのコーディングブロックに対して変換動作を実行させて、コーディングブロックの変換されたバージョンを決定させ、(ii)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ及びコーディングブロックの変換されたバージョンに基づく第2のイントラブロックコピーサーチを実行させて、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定させ、候補予測器ブロックは、コーディングブロックのイントラブロックコピー予測器に対応する。
例9は、例8の非一時的コンピュータ読取可能媒体を含み、変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである。
例10は、例9の非一時的コンピュータ読取可能媒体を含み、変換動作は、ミラー動作であり、コーディングブロックの変換されたバージョンは、コーディングブロックのミラーリングされたバージョンであり、コンピュータ読取可能命令は、1つ以上のプロセッサに、コーディングブロックに対して回転動作を実行させ、コーディングブロックの回転されたバージョンを決定させ、(i)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ、(ii)コーディングブロックのミラーリングされたバージョンに基づく第2のイントラブロックコピーサーチ、及び(iii)コーディングブロックの回転されたバージョンに基づく第3のイントラブロックコピーサーチを実行させて、候補予測器ブロックを決定させる。
例11は、例8~10のうちのいずれかの非一時的コンピュータ読取可能媒体を含み、変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、複数の変換動作のうちの1つである。
例12は、例11の非一時的コンピュータ読取可能媒体を含み、コーディングブロックの変換されたバージョンは、コーディングブロックの第1の変換されたバージョンであり、コンピュータ読取可能命令は、1つ以上のプロセッサに、コーディングブロックに対して複数の変換動作のそれぞれの1つを実行させて、コーディングブロックの対応する異なる変換されたバージョンを決定させ、コーディングブロックの異なる変換されたバージョンは、コーディングブロックの第1の変換されたバージョンを含み、コーディングブロックの変換されていないバージョン及びコーディングブロックの異なる変換されたバーションの対応する1つに基づいてそれぞれのイントラブロックコピーサーチを実行させて、候補予測器ブロックを決定させる。
例13は、例8~10のうちのいずれかの非一時的コンピュータ読取可能媒体を含み、変換動作は、コーディングブロック変換器によって実行されるべき複数の変換動作のうちの1つに対応し、複数のイントラブロックコピーモードのそれぞれ1つは、変換動作の対応するものを表し、コンピュータ読取可能命令は、1つ以上のプロセッサに、(i)コーディングブロックに対する候補予測器ブロックの場所を表す変位ベクトル及び(ii)候補予測器ブロックと関連付けられるイントラブロックコピーモードのうちの第1のものを出力することを更に含む。
例14は、例13の非一時的コンピュータ読取可能媒体を含み、コンピュータ読取可能命令は、1つ以上のプロセッサに、イントラブロックコピーモードのうちの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化させる。
例15は、ビデオデコーダを含む。例15のビデオデコーダは、復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択する予測器ブロックセレクタを含み、予測器ブロックセレクタは、変位ベクトルに基づいて予測器ブロックを選択する。例15のビデオでコーダは、予測器ブロックに対して変換動作を実行して、予測器ブロックの変換されたバージョンを決定する、予測器ブロック変換器も含む。例15のビデオでコーダは、予測器ブロックの変換されたバージョンに基づいて画像フレームのコーディングブロックを復号化する、フレームデコーダを更に含む。
例16は、例15のビデオでコーダを含み、変換動作は、複数の変換動作のうちの1つであり、予測器ブロック変換器は、コーディングブロックと関連付けられるイントラブロックコピーモードに基づいて変換動作を選択する。
例17は、例16のビデオでコーダを含み、複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む。
例18は、例16又は例17のビデオでコーダを含み、イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、複数のイントラブロックコピーモードのそれぞれ1つは、複数の変換動作の対応する1つを表す。
例19は、例16~18のビデオでコーダを含み、画像フレームは、符号化されたビデオビットストリームと関連付けられ、符号化されたビデオビットストリームからのイントラブロックコピーモード及び変位ベクトルを復号化するストリームデコーダを更に含む。
例20は、例19のビデオでコーダを含み、イントラブロックコピーモードは、符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化される。
例21は、コンピュータ読取可能命令を含む、少なくとも1つの非一時的コンピュータ読取可能媒体を含み、コンピュータ読取可能命令は、実行されるときに、1つ以上のプロセッサに、少なくとも、(i)復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択させ、予測器ブロックは、変位ベクトルに基づいて選択され、(ii)予測器ブロックに対して変換動作を実行させて、予測器ブロックの変換されたバージョンを決定させ、(iii)予測器ブロックの変換されたバージョンに基づいて画像フレームのコーディングブロックを復号化させる。
例22は、例21の非一時的コンピュータ読取可能媒体を含み、変換動作は、複数の変換動作のうちの1つであり、コンピュータ読取可能命令は、1つ以上のプロセッサに、コーディングブロックと関連付けられるイントラブロックコピーモードに基づいて変換動作を選択させる。
例23は、例22の非一時的コンピュータ読取可能媒体を含み、複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む。
例24は、例22又は例23の非一時的コンピュータ読取可能媒体を含み、イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、複数のイントラブロックコピーモードのそれぞれ1つは、複数の変換動作の対応する1つを表す。
例25は、例22~24のうちのいずれか1つの非一時的コンピュータ読取可能媒体を含み、画像フレームは、符号化されたビデオビットストリームと関連付けられ、コンピュータ読取可能命令は、1つ以上のプロセッサに、符号化されたビデオビットストリームからのイントラブロックコピーモード及び変位ベクトルを復号化させ、イントラブロックコピーモードは、符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化される。
例26は、ビデオ符号化方法を含む。例26のビデオ符号化方法は、少なくとも1つのプロセッサで命令を実行することによって、画像フレームのコーディングブロックに対して変換動作を実行して、コーディングブロックの変換されたバージョンを決定する。例26の方法は、少なくとも1つのプロセッサで命令を実行することによって、コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックサーチ及びコーディングブロックの変換されたバージョンに基づく第2のイントラブロックサーチを実行して、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定することも含み、候補予測器ブロックは、コーディングブロックのイントラブロック予測器に対応する。
例27は、例26の方法を含み、変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである。
例28は、例27の方法を含み、変換動作は、ミラー動作であり、コーディングブロックの変換されたバージョンは、コーディングブロックのミラーリングされたバージョンであり、当該方法は、コーディングブロックに対して回転動作を実行して、コーディングブロックの回転されたバージョンを決定することと、(i)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックサーチ、(ii)コーディングブロックのミラーリングされたバージョンに基づく第2のイントラブロックサーチ、及び(iii)コーディングブロックの回転されたバージョンに基づくコーディングブロックの第3のイントラブロックサーチを実行して、候補予測器ブロックを決定することと、を更に含む。
例29は、例26~28のうちのいずれか1つの方法を含み、変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、複数の変換動作のうちの1つである。
例30は、例29の方法を含み、コーディングブロックの変換されたバージョンは、コーディングブロックの第1の変換されたバージョンであり、当該方法は、コーディングブロックに対して複数の変換動作のそれぞれの1つを実行して、コーディングブロックの対応する異なる変換されたバージョンを決定することを含み、コーディングブロックの異なる変換されたバージョンは、コーディングブロックの第1の変換されたバージョンを含み、コーディングブロックの変換されていないバージョン及びコーディングブロックの異なる変換されたバージョンの対応するものに基づいてそれぞれのイントラブロックサーチを実行して、候補予測器ブロックを決定することを更に含む。
例31は、例26~28のうちのいずれか1つの方法を含み、変換動作は、コーディングブロック変換器によって実行されるべき複数の変換動作のうちの1つに対応し、複数のイントラブロックモードのそれぞれの1つは、変換動作の対応するものを表し、当該方法は、(i)コーディングブロックに対する候補予測器ブロックの場所を表す変位ベクトルと(ii)候補予測器ブロックと関連付けられるイントラブロックモードの第1のものとを出力することを含む。
例32は、例31の方法を含み、当該方法は、イントラブロックモードの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化することを含む。
例33は、ビデオ符号化装置を含む。例33のビデオ符号化装置は、画像フレームのコーディングブロックに対して変換動作を実行してコーディングブロックの変換されたバージョンを決定する手段を含む。例33のビデオ符号化装置は、イントラブロックサーチを実行する手段も含み、イントラブロックサーチは、画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定するために、コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックサーチと、コーディングブロックの変換されたバージョンに基づく第2のイントラブロックサーチとを含み、候補予測器ブロックは、コーディングブロックのイントラブロックコピー予測器に対応する。
例34は、例1のビデオ符号化装置を含み、変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである。
例35は、例2のビデオ符号化装置を含み、変換動作はミラー動作であり、コーディングブロックの変換されたバージョンは,コーディングブロックのミラーリングされたバージョンであり、変換動作を実行する手段は、コーディングブロックに対して回転動作を実行して、コーディングブロックの回転されたバージョンを決定し、イントラブロックサーチを実行する手段は、(i)コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックサーチ、(ii)コーディングブロックのミラーリングされたバージョンに基づく第2のイントラブロックサーチ、及び(iii)コーディングブロックの回転されたバージョンに基づく第3のイントラブロックサーチを実行して、候補予測器ブロックを決定する。
例36は、例33~35のうちのいずれか1つのビデオ符号化装置を含み、変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、複数の変換動作のうちの1つである。
例37は、例36のビデオ符号化装置を含み、コーディングブロックの変換されたバージョンは、コーディングブロックの第1の変換されたバージョンであり、変換動作を実行する手段は、コーディングブロックに対して複数の変換動作のそれぞれの1つを実行して、コーディングブロックの対応する異なる変換されたバージョンを決定し、コーディングブロックの異なる変換されたバージョンは、コーディングブロックの第1の変換されたバージョンを含み、イントラブロックサーチを実行する手段は、コーディングブロックの変換されていないバージョン及びコーディングブロックの異なる変換されたバージョンのうちの対応するものに基づいて、それぞれのイントラブロックサーチを実行して、候補予測器ブロックを決定する。
例38は、例33~35のうちのいずれか1つのビデオ符号化装置を含み、変換動作は、複数の変換動作のうちの1つに対応し、複数のイントラブロックモードのそれぞれ1つは、変換動作のうちの対応するものを表し、イントラブロックサーチを実行する手段は、(i)コーディングブロックに対する候補予測器ブロックの場所を表す変位ベクトルと(ii)候補予測器ブロックと関連付けられるイントラブロックモードのうちの第1のものとを出力する。
例39は、例38のビデオ符号化装置を含み、イントラブロックモードのうちの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化する手段を更に含む。
例40は、ビデオ復号化方法を含む。例40のビデオ復号化方法は、少なくとも1つのプロセッサで命令を実行することによって、復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択することを含み、予測器ブロックは、変位ベクトルに基づいて選択される。例40の方法は、少なくとも1つのプロセッサで命令を実行することによって、予測器ブロックに対して変換動作を実行して、予測器ブロックの変換されたバージョンを決定することを含む。例40の方法は、少なくとも1つのプロセッサで命令を実行することによって、予測器ブロックの変換されたバージョンに基づいて画像フレームのコーディングブロックを復号化することを更に含む。
例41は、例40の方法を含み、変換動作は、複数の変換動作のうちの1つであり、当該方法は、コーディングブロックと関連付けられるイントラブロックコピーモードに基づいて変換動作を選択することを含む。
例42は、例41の方法を含み、複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む。
例43は、例41又は例42の方法を含み、イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、複数のイントラブロックコピーモードのうちのそれぞれの1つは、複数の変換動作のうちの対応するものを表す。
例44は、例41~43のうちのいずれか1つの方法を含み、画像フレームは、符号化ビデオビットストリームと関連付けられ、当該方法は、符号化されたビデオビットストリームからのイントラブロックコピーモード及び変位ベクトルを復号化することを更に含み、イントラブロックコピーモードは、符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化される。
例45は、ビデオ復号化装置を含む。例45のビデオ復号化装置は、復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択する手段を含み、予測器ブロックセレクタは、変位ベクトルに基づいて予測器ブロックを選択する。例45のビデオ復号化装置は、予測器ブロックに対して変換動作を実行して予測器ブロックの変換されたバージョンを決定する手段も含む。例45のビデオ復号化装置は、予測器ブロックの変換されたバージョンに基づいて画像フレームのコーディングブロックを復号化する手段を更に含む。
例46は、例45のビデオ復号化装置を含み、変換動作は、複数の変換動作のうちの1つであり、予測器ブロック変換器は、コーディングブロックと関連付けられるイントラブロックモードに基づいて前記変換操作を選択する。
例47は、例46のビデオ復号化装置を含み、複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む。
例48は、例46又は例47のビデオ復号化装置を含み、イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、複数のイントラブロックコピーモードのうちのそれぞれ1つは、複数の変換動作のうちの対応するものを表す。
例49は、例46~48のうちのいずれか1つのビデオ復号化装置を含み、画像フレームは、符号化ビデオビットストリームに関連付けられ、符号化されたビデオビットストリームからのイントラブロックコピーモード及び変位ベクトルを復号化する手段を更に含む。
例50は、例19のビデオ復号化装置を含み、イントラブロックコピーモードは、符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化される。
特定の例示的な方法、装置及び製造物品が本明細書に開示されているが、この特許の範囲はそれらに限定されない。反対に、この特許は、この特許の請求項の範囲内に適正に入る全ての方法、装置及び製造物品をカバーする。
Claims (25)
- 画像フレームのコーディングブロックに対して変換動作を実行して、前記コーディングブロックの変換されたバージョンを決定する、コーディングブロック変換器と、
前記コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ及び前記コーディングブロックの前記変換されたバージョンに基づく第2のイントラブロックコピーサーチを実行して、前記画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定する、探索器と、を含み、
前記候補予測器ブロックは、前記画像フレームのイントラブロックコピー予測器に対応する、
ビデオエンコーダ。 - 前記変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである、請求項1に記載のビデオエンコーダ。
- 前記変換動作は、前記ミラー動作であり、前記コーディングブロックの前記変換されたバージョンは、前記コーディングブロックのミラーリングされたバージョンであり、前記コーディングブロック変換器は、前記コーディングブロックに対して前記回転動作を実行して、前記コーディングブロックの回転されたバージョンを決定し、前記探索器は、(i)前記コーディングブロックの前記変換されていないバージョンに基づく前記第1のイントラブロックコピーサーチ、(ii)前記コーディングブロックの前記ミラーリングされたバージョンに基づく前記第2のイントラブロックコピーサーチ、及び(iii)前記コーディングブロックの前記回転されたバージョンに基づく第3のイントラブロックコピーサーチを実行して、前記候補予測器ブロックを決定する、請求項2に記載のビデオエンコーダ。
- 前記変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、複数の変換動作のうちの1つである、請求項1に記載のビデオエンコーダ。
- 前記コーディングブロックの前記変換されたバージョンは、前記コーディングブロックの第1の変換されたバージョンであり、前記コーディングブロック変換器は、前記コーディングブロックに対して前記複数の変換動作のそれぞれの1つを実行して、前記コーディングブロックの対応する異なる変換されたバージョンを決定し、前記コーディングブロックの前記異なる変換されたバージョンは、前記コーディングブロックの前記第1の変換されたバージョンを含み、前記探索器は、前記コーディングブロックの前記変換されていないバージョン及び前記コーディングブロックの前記異なる変換されたバーションの対応するものに基づいてそれぞれのイントラブロックコピーサーチを実行して、前記候補予測器ブロックを決定する、請求項4に記載のビデオエンコーダ。
- 前記変換動作は、前記コーディングブロック変換器によって実行されるべき複数の変換動作のうちの1つに対応し、複数のイントラブロックコピーモードのそれぞれ1つが、前記変換動作の対応する1つを表し、前記探索器は、(i)前記コーディングブロックに対する前記候補予測器ブロックの場所を表す変位ベクトル及び(ii)前記候補予測器ブロックと関連付けられる前記イントラブロックコピーモードの第1のものを出力する、請求項1に記載のビデオエンコーダ。
- 前記イントラブロックコピーモードの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化するストリームエンコーダを更に含む、請求項6に記載のビデオエンコーダ。
- 画像フレームのコーディングブロックに対して変換動作を実行して、前記コーディングブロックの変換されたバージョンを決定することと、
前記コーディングブロックの変換されていないバージョンに基づく第1のイントラブロックコピーサーチ及び前記コーディングブロックの前記変換されたバージョンに基づく第2のイントラブロックコピーサーチを実行して、前記画像フレームの従前に符号化されたピクセルの候補予測器ブロックを決定することと、を含み、
前記候補予測器ブロックは、前記コーディングブロックのイントラブロックコピー予測器に対応する、
方法。 - 前記変換動作は、ミラー動作又は回転動作のうちの少なくとも1つである、請求項8に記載の方法。
- 前記変換動作は、前記ミラー動作であり、前記コーディングブロックの前記変換されたバージョンは、前記コーディングブロックのミラーリングされたバージョンであり、当該方法は、
前記コーディングブロックに対して前記回転動作を実行して、前記コーディングブロックの回転されたバージョンを決定することと、
(i)前記コーディングブロックの前記変換されていないバージョンに基づく前記第1のイントラブロックコピーサーチ、(ii)前記コーディングブロックの前記ミラーリングされたバージョンに基づく前記第2のイントラブロックコピーサーチ、及び(iii)前記コーディングブロックの前記回転されたバージョンに基づく第3のイントラブロックコピーサーチを実行して、前記候補予測器ブロックを決定することと、を更に含む、
請求項9に記載の方法。 - 前記変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、複数の変換動作のうちの1つである、請求項8に記載の方法。
- 前記コーディングブロックの前記変換されたバージョンは、前記コーディングブロックの第1の変換されたバージョンであり、
当該方法は、
前記コーディングブロックに対して前記複数の変換動作のそれぞれの1つを実行して、前記コーディングブロックの対応する異なる変換されたバージョンを決定することであって、前記コーディングブロックの前記異なる変換されたバージョンは、前記コーディングブロックの前記第1の変換されたバージョンを含む、決定することと、
前記コーディングブロックの前記変換されていないバージョン及び前記コーディングブロックの前記異なる変換されたバーションの対応する1つに基づいてそれぞれのイントラブロックコピーサーチを実行して、前記候補予測器ブロックを決定することと、を更に含む、
請求項11に記載の方法。 - 前記変換動作は、前記コーディングブロック変換器によって実行されるべき複数の変換動作のうちの1つに対応し、複数のイントラブロックコピーモードのそれぞれ1つは、前記変換動作の対応するものを表し、(i)前記コーディングブロックに対する前記候補予測器ブロックの場所を表す変位ベクトル及び(ii)前記候補予測器ブロックと関連付けられる前記イントラブロックコピーモードのうちの第1のものを出力することを更に含む、請求項8に記載の方法。
- 前記イントラブロックコピーモードのうちの第1のものを符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化することを更に含む、請求項13に記載の方法。
- 復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択する予測器ブロックセレクタであって、変位ベクトルに基づいて前記予測器ブロックを選択する、予測器ブロックセレクタと、
前記予測器ブロックに対して変換動作を実行して、前記予測器ブロックの変換されたバージョンを決定する、予測器ブロック変換器と、
前記予測器ブロックの前記変換されたバージョンに基づいて前記画像フレームのコーディングブロックを復号化する、フレームデコーダと、を含む、
ビデオデコーダ。 - 前記変換動作は、複数の変換動作のうちの1つであり、前記予測器ブロック変換器は、前記コーディングブロックと関連付けられるイントラブロックコピーモードに基づいて前記変換動作を選択する、請求項15に記載のビデオデコーダ。
- 前記複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、請求項16に記載のデコーダ。
- 前記イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、前記複数のイントラブロックコピーモードのそれぞれ1つは、前記複数の変換動作の対応する1つを表す、請求項16に記載のデコーダ。
- 前記画像フレームは、符号化されたビデオビットストリームと関連付けられ、前記符号化されたビデオビットストリームから前記イントラブロックコピーモード及び前記変位ベクトルを復号化するストリームデコーダを更に含む、請求項16に記載のデコーダ。
- 復号化されている画像フレームの従前に復号化されたピクセルの予測器ブロックを選択することであって、前記予測器ブロックは、変位ベクトルに基づいて選択される、選択することと、
前記予測器ブロックに対して変換動作を実行して、前記予測器ブロックの変換されたバージョンを決定することと、
前記予測器ブロックの前記変換されたバージョンに基づいて前記画像フレームのコーディングブロックを復号化することと、を含む、
方法。 - 前記変換動作は、複数の変換動作のうちの1つであり、前記コーディングブロックと関連付けられるイントラブロックコピーモードに基づいて前記変換動作を選択することを更に含む、請求項20に記載の方法。
- 前記複数の変換動作は、第1の複数の異なるミラー動作と、第2の複数の異なる回転動作とを含む、請求項21に記載の方法。
- 前記イントラブロックコピーモードは、複数のイントラブロックコピーモードのうちの1つであり、前記複数のイントラブロックコピーモードのそれぞれ1つは、前記複数の変換動作の対応する1つを表す、請求項21に記載の方法。
- 前記画像フレームは、符号化されたビデオビットストリームと関連付けられ、前記符号化されたビデオビットストリームから前記イントラブロックコピーモード及び前記変位ベクトルを復号化することを更に含み、前記イントラブロックコピーモードは、前記符号化されたビデオビットストリームのフィールドにおいてビットパターンとして符号化される、請求項21に記載の方法。
- コンピュータ読取可能命令を含む、少なくとも1つのコンピュータ読取可能媒体であって、前記コンピュータ読取可能命令は、実行されるときに、1つ以上のプロセッサに、請求項8~14又は20~24のうちのいずれか1項に記載の方法を実行させる、少なくとも1つのコンピュータ読取可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062956813P | 2020-01-03 | 2020-01-03 | |
US62/956,813 | 2020-01-03 | ||
PCT/US2020/066704 WO2021138164A1 (en) | 2020-01-03 | 2020-12-22 | Video coding with multiple intra block copy modes |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023509296A true JP2023509296A (ja) | 2023-03-08 |
Family
ID=76686711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022532616A Pending JP2023509296A (ja) | 2020-01-03 | 2020-12-22 | 複数のイントラブロックコピーモードを備えるビデオコーディング |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220353498A1 (ja) |
EP (1) | EP4085621A4 (ja) |
JP (1) | JP2023509296A (ja) |
CN (1) | CN114788271A (ja) |
BR (1) | BR112022010865A2 (ja) |
WO (1) | WO2021138164A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024150977A1 (ko) * | 2023-01-13 | 2024-07-18 | 현대자동차주식회사 | 원거리 참조화소들을 이용하는 비디오 코딩을 위한 방법 및 장치 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101686393B (zh) * | 2008-09-28 | 2012-10-17 | 华为技术有限公司 | 应用于模板匹配的快速运动搜索方法及装置 |
US9549182B2 (en) * | 2012-07-11 | 2017-01-17 | Qualcomm Incorporated | Repositioning of prediction residual blocks in video coding |
GB2519070A (en) * | 2013-10-01 | 2015-04-15 | Sony Corp | Data encoding and decoding |
US10368092B2 (en) * | 2014-03-04 | 2019-07-30 | Microsoft Technology Licensing, Llc | Encoder-side decisions for block flipping and skip mode in intra block copy prediction |
US10368091B2 (en) * | 2014-03-04 | 2019-07-30 | Microsoft Technology Licensing, Llc | Block flipping and skip mode in intra block copy prediction |
US9860559B2 (en) * | 2014-03-17 | 2018-01-02 | Mediatek Singapore Pte. Ltd. | Method of video coding using symmetric intra block copy |
WO2015176225A1 (en) * | 2014-05-20 | 2015-11-26 | Mediatek Singapore Pte. Ltd. | Improved intra-block copy searching methods |
KR101748620B1 (ko) * | 2014-06-20 | 2017-07-04 | 성균관대학교산학협력단 | 영상의 부호화/복호화 방법 및 이를 이용하는 장치 |
CN105392008B (zh) * | 2014-08-22 | 2018-09-25 | 中兴通讯股份有限公司 | 一种预测编、解码方法和相应的编、解码器和电子设备 |
US9955185B2 (en) * | 2015-02-12 | 2018-04-24 | Mediatek Inc. | Method and apparatus of constrained intra block copy for coding video |
WO2016150343A1 (en) * | 2015-03-20 | 2016-09-29 | Mediatek Singapore Pte. Ltd. | Methods of palette coding with inter-prediction in video coding |
JP6559337B2 (ja) * | 2015-09-23 | 2019-08-14 | ノキア テクノロジーズ オーユー | 360度パノラマビデオの符号化方法、符号化装置、及びコンピュータプログラム |
EP3422724B1 (en) * | 2017-06-26 | 2024-05-01 | Nokia Technologies Oy | An apparatus, a method and a computer program for omnidirectional video |
US10382767B2 (en) * | 2017-07-21 | 2019-08-13 | Google Llc | Video coding using frame rotation |
US11202079B2 (en) * | 2018-02-05 | 2021-12-14 | Tencent America LLC | Method and apparatus for video decoding of an affine model in an intra block copy mode |
JP7448641B2 (ja) * | 2019-09-27 | 2024-03-12 | オッポ広東移動通信有限公司 | 現在のブロックの予測方法及び予測装置、デバイス、記憶媒体 |
-
2020
- 2020-12-22 EP EP20910546.9A patent/EP4085621A4/en active Pending
- 2020-12-22 WO PCT/US2020/066704 patent/WO2021138164A1/en unknown
- 2020-12-22 CN CN202080083841.7A patent/CN114788271A/zh active Pending
- 2020-12-22 JP JP2022532616A patent/JP2023509296A/ja active Pending
- 2020-12-22 BR BR112022010865A patent/BR112022010865A2/pt unknown
- 2020-12-22 US US17/764,026 patent/US20220353498A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021138164A1 (en) | 2021-07-08 |
US20220353498A1 (en) | 2022-11-03 |
EP4085621A1 (en) | 2022-11-09 |
CN114788271A (zh) | 2022-07-22 |
BR112022010865A2 (pt) | 2022-08-23 |
EP4085621A4 (en) | 2024-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7263521B2 (ja) | インターフレーム点群属性符号化のための方法並びにその、装置およびコンピュータプログラム | |
JP6342500B2 (ja) | 再帰的なブロック・パーティショニング | |
JP6423061B2 (ja) | ビデオデコーダを実装するコンピューティングデバイス及びその方法 | |
CN105282558B (zh) | 帧内像素预测方法、编码方法、解码方法及其装置 | |
CN112188197B (zh) | 通道间点云属性解码方法、装置以及可读存储介质 | |
CN109309838A (zh) | 用于硬件视频编码的技术 | |
KR20130062109A (ko) | 영상의 부호화 방법 및 장치, 그 복호화 방법 및 장치 | |
CN113795870B (zh) | 一种对点云属性编解码的方法、装置及存储介质 | |
US10652541B2 (en) | Method and device for encoding video data | |
CN112218077B (zh) | 通道间点云属性编码方法、装置以及可读存储介质 | |
CN112087628A (zh) | 使用两级帧内搜索对视频进行编码 | |
RU2624464C1 (ru) | Порядки сканирования для кодирования без преобразования | |
JP2023509296A (ja) | 複数のイントラブロックコピーモードを備えるビデオコーディング | |
JP7437426B2 (ja) | インター予測方法および装置、機器、記憶媒体 | |
US20190191162A1 (en) | Method and device for encoding video data | |
JP2024518239A (ja) | ニューラル画像圧縮における反復的なコンテンツ適応型オンライントレーニングのためのシステム、方法、及びコンピュータプログラム | |
US20240212215A1 (en) | Long-range context model in neural image compression | |
JP6080077B2 (ja) | 画像符号化方法及び画像符号化装置 | |
CN112616058B (zh) | 视频编码或解码方法、装置、计算机设备和存储介质 | |
US20240214591A1 (en) | Multi-receptive fields in vision transformer | |
US20240214592A1 (en) | Block-based long-range context model in neural image compression | |
US20240236346A1 (en) | Efficient neural network module for image compression | |
JP2024500701A (ja) | 点群符号化方法、点群復号化方法、点群符号化と復号化システム、点群エンコーダ及び点群デコーダ | |
CN116324805A (zh) | 神经图像压缩中具有替代项的非线性量化 | |
JP2018157571A (ja) | 非変換符号化のためのスキャン順序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20241008 |