JP2009544225A - ビデオ圧縮用並列処理装置 - Google Patents
ビデオ圧縮用並列処理装置 Download PDFInfo
- Publication number
- JP2009544225A JP2009544225A JP2009520786A JP2009520786A JP2009544225A JP 2009544225 A JP2009544225 A JP 2009544225A JP 2009520786 A JP2009520786 A JP 2009520786A JP 2009520786 A JP2009520786 A JP 2009520786A JP 2009544225 A JP2009544225 A JP 2009544225A
- Authority
- JP
- Japan
- Prior art keywords
- coding
- macroblock
- thread
- processing
- processes
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 238000007906 compression Methods 0.000 title abstract description 42
- 230000006835 compression Effects 0.000 title abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 161
- 230000008569 process Effects 0.000 claims abstract description 126
- 238000013139 quantization Methods 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 4
- 230000008901 benefit Effects 0.000 abstract description 9
- 230000001360 synchronised effect Effects 0.000 abstract description 4
- 230000033001 locomotion Effects 0.000 description 33
- 238000013459 approach Methods 0.000 description 10
- 239000013598 vector Substances 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
ビデオ圧縮を並列処理するための方法及び装置をここに開示する。画像は、N個のゾーンに鉛直方向に分割する。そして、鉛直方向分割並列処理(VSP)は、N個のゾーンにおける一般的なマクロブロックコーディングのためのN個のM−コーディングのプロセス、そして、エントロピーコーディングのための1つのE−コーディングからなるN+1個のプロセスを配置する。マクロブロックエンコーディングのプロセスをM−コーディングのプロセス、そして、E−コーディングのプロセスに分割することによって、複数のM−コーディングのスレッド、そして、一つのE−コーディングのスレッドは、スレッド間の適切な同期を伴い同時に処理することができる。M−コーディングのプロセスの負荷は、各マクロブロックコーディングのプロセスのためのE−コーディングより大きいことから、2つのコアは、2つのM−コーディングのプロセスのために指定され得る。E−コーディングの負荷は軽いことから、どちらかのコアが、E−コーディングのプロセスのために指定され得る。したがって、VSPは、並列処置コンピュータの能力を効果的に利用する。
Description
本発明は、ビデオ圧縮の分野に関する。より詳細には、本発明は、並列プロセッサを用いたビデオ圧縮に関する。
本出願は、2006年7月17日に出願した発明の名称が「Parallel Processing Apparatus of Video Compression」である同時継続中の米国仮特許出願番号60/831、614について35 U.S. C. §119(e)のもとで優先権を主張する。2006年7月17日に出願した発明の名称が「Parallel Processing Apparatus of Video Compression」である仮特許出願番号60/831、614は、それの全体の参照によってここに組み込まれる。
ビデオシーケンスは、通常、フレームと呼ばれる多くの画像からなる。続いて生じるフレームは、非常に似ていることから、あるフレームから次までに多くの冗長部分が含まれる。チャンネル上で効率的に送られる前、又は、メモリに効率的に記憶される前に、ビデオデータは、帯域幅及びメモリを浪費しないよう圧縮される。その目標は、過剰部分を削減し、より良い圧縮比を得ることである。最初に、ビデオ圧縮アプローチは、所定のフレームから参照フレームを抜き取り、相対的差異を生成することである。圧縮されているフレームが有する情報は、参照フレームより少ない。相対的差異は、同じ品質でありながら低いビットレートでエンコードすることができる。デコーダは、参照フレームに相対的差異を加えることによって、もとのフレームを再構築する。
より精巧なアプローチは、全てのシーンの動き及びビデオシーケンスのオブジェクトに似せることである。その動きは、ビットストリーム内にエンコードされているパラメータによって表現される。予測されるフレームのピクセルは、適切に解釈された参照フレームのピクセルによって近づけられる。このアプローチは、単純な抜き取りを超える改良された予測能力を含む。しかしながら、動きモデルのパラメータで占められるビットレートは、大きくなりすぎてはならない。
一般に、ビデオ圧縮は、MPEG−1、MPEG−2、MPEG−4などのようなムービングピクチャーエクスパーツグループ(MPEG)によるオーディオ及びビデオ圧縮のための一又は二以上の標準を含む多くの標準によって実行される。追加の機能拡張は、MPEG−4のパート10の標準の一部、また、H.264又はAVC(アドバンスドビデオコーディング)といわれるようなものの一部として構成されている。MPEGの標準のもとで、ビデオデータは、最初にエンコード(例えば、圧縮)され、次に、ビデオシステムのエンコーダ側におけるエンコーダのバッファに記憶される。最後に、エンコードされたデータは、ビデオシステムのデコーダ側に送られる。その場合、デコードの前に、それはデコーダのバッファに記憶され、これにより、対応する画像を見ることができる。
H.264/AVCプロジェクトの目的は、標準的な機能を開発することである。その機能は、以前の標準(例えば、MPEG−2、H.263、MPEG−4のパート2など)で必要としていたものより十分に低いビットレートで良好なビデオ品質を提供する。さらに、それは、複雑性を大きく増加(実装するのに非現実的となるような設計)させることなく、これら改善がなされることを要求している。追加の目標は、柔軟な方法でこれら変更を構成することである。その方法は、標準が多種多様なアプリケーションに適用されることを可能にする。これにより、それは、低ビットレートビデオと高ビットレートビデオの両方、そして、低分解ビデオと高分解ビデオの両方のために用いることが可能となる。別の目的は、非常に多種多様なネットワーク及びシステム上で効果的に動作させることである。
H.264/AVC/MPEG−4のパート10は、多くの新しい特徴を含み、以前の標準より効果的にビデオを圧縮することを可能にし、そして、多種多様なネットワーク環境への利用のためにさらなる柔軟性を提供する。ある主要な特徴は以下を含む。それは、参照として前にエンコードした画像を用いた複数の画像の動き補償、16ピクセル×16ピクセルと同じ大きさのブロック及び4ピクセル×4ピクセルと同じ大きさのブロックを用いた可変ブロックサイズ動き補償(VBSMC)、半画素の輝度サンプル予測を導出するための6タップフィルタリング、マクロブロックペア構造、動き補償のためのクオーターピクセル予測、予測に重点をおいたもの、インループ非ブロックフィルター、整数完全一致4ピクセル×4ピクセル空間ブロック変換、アダマール変換が高速フーリエ変換と同じであるプライマリ空間変換の「DC」係数上で実行されるセカンダリアダマール変換、「イントラ」コーディングのための隣接するブロックのエッジによる空間予測、状況対応型バイナリ算術コーディング(CABAC)、状況対応型可変長コーディング(CAVLC)、指数ゴロム(Exponential-Golomb)コーディングと呼ばれるCABAC又はCAVLCによってコードされない多くのシンタックス要素のための単純可変長コーディング及び高構造可変長コーディング(VLC)技術、ネットワークアブストラクション層(NAL)定義、スイッチングスライス、フレキシブルマクロブロックオーダーリング、過剰スライス(RS)、追加拡張情報(SEI)、ビデオユーザービリティ情報(VUI)、補助画像、フレームナンバリング、画像順序カウントである。これら技術及び他のいくつかは、以前の標準や、より多くの状況、より多くの環境などにおいて、より顕著に良好な効果でH.264が機能することを可能にする。H.264は通常、MPEG−2より良好に機能し、半分あるいはそれ以下のビットで同じ品質が得られる。
MPEGは、動画及びそれに関連するオーディオの一般的なコーディングのために用いられ、3つのタイプのエンコードされたデータフレームが一組となって構成されている圧縮ビデオビットストリームを生成する。3つのタイプのデータフレームは、イントラフレーム(I−フレーム(I-frame)又はI−ピクチャ(I-picture)とよばれる)、双方向予測フレーム(B−フレーム(B-frame)又はB−ピクチャ(B-picture)とよばれる)、順方向予測フレーム(P−フレーム(P-frame)又はP−ピクチャ(P-picture)とよばれる)である。これら3つのタイプのフレームは、GOP(Group Of Pictures)構造と呼ばれる特定の順序に配置され得る。I−フレームは、画像を再構築するのに必要な情報を全て含む。I−フレームは、動き補償なしで通常のイメージとしてエンコードされる。その一方、P−フレームは、前のフレームからの情報を用いて、そして、B−フレームは、前のフレーム、次のフレーム、又はその両方からの情報を用いて画像を再構築する。特に、P−フレームは、先行するI−フレーム又は直前のP−フレームから予測される。
フレームはまた、直後のフレームからも予測され得る。次のフレームがこの方法で利用されるために、その次のフレームは、予測フレームの前にエンコードされなければならない。したがって、エンコードの順序は、必ずしも実際のフレーム順序に合致していなくてもよい。そのようなフレームは通常、2方向から予測される。例えば、Iフレーム又はP−フレームは、予測フレームの直前、また、そのP−フレームは、予測フレームの直後から予測される。これら双方向予測フレームはB−フレームと呼ばれる。
多くの実行可能なGOP構造が存在する。通常のGOP構造は、15フレームの長さであり、シーケンスはI_BB_P_BB_P_BB_P_BB_P_BB_である。同様に12フレームのシーケンスも一般的である。I−フレームは、空間的冗長性に関してエンコードを行い、P−フレーム及びB−フレームは、時間的冗長性及び空間的冗長性両方に関してエンコードを行う。ビデオストリーム内の隣接したフレームはしばしば、相関性を十分に有することから、P−フレーム及びB−フレームにおけるI−フレームのサイズは、わずかな割合でしかない。しかしながら、処理時間に対してフレームが圧縮されるサイズ、そして、そのような圧縮フレームをエンコードするのに必要とするリソースとの間にトレードオフが存在する。GOP構造内のI−フレーム、P−フレーム、そして、B−フレームの比率は、ビデオストリームの種類によって、そして、アウトプットストリームに対する制約である帯域幅によって決定されるが、エンコード時間も問題となり得る。これは、制限されたコンピュータ装置を用いたライブ送信及びリアルタイム環境に特にあてはまる。多くのB−フレームを含むストリームは、Iフレームのみのファイルよりエンコードするのに長い時間がかかる可能性があるからである。
B−フレーム及びP−フレームは、画像データを記憶するためにより少ないビットを要求し、通常、前のフレーム、次のフレーム、又は、その両方と現在のフレームとの間の差異についての差異ビットを含む。したがって、B−フレーム及びP−フレームは、フレーム間に含まれる冗長情報を取り除くよう用いられる。動作中、デコーダは、エンコードされているB−フレーム又はP−フレームを受け、前のフレーム又は次のフレームを用いて、もとのフレームを再構築する。シーケンシャルフレームが実質的に同じである場合、フレーム間の差異が小さいことによって、このプロセスは、より単純となり、よりスムーズなシーンの遷移を生み出す。
各ビデオイメージは、一つのルミナンスチャンネル(Y)と2つのクロミナンスチャンネル(色差信号Cb及びCrとよばれる)に分離される。ルミナンス及びクロミナンスのアレイのブロックは、フレーム内におけるコーディングの基本ユニットである「マクロブロック」にまとめられる。
I−フレームの場合、実際のイメージデータは、エンコードプロセスを経る。しかしながら、P−フレーム及びB−フレームは、最初に「動き補償」のプロセスに従う。動き補償は、前のフレームの各マクロブロックが移動している場合に関して、連続したフレーム間の差異を記述する方法である。そのような技術はしばしば、ビデオ圧縮のためのビデオシーケンスの時間的冗長性を削減するよう採用される。「動きベクトル」を用いたエンコーダによって選択されるときに、P−フレーム又はB−フレーム内の各マクロブロックは、相関性を十分に有する前又は次のイメージのエリアと関連する。動きベクトルは、マクロブロックをそれと相関するエリアに位置決めし、そして、エンコードされる。次に、2つのエリア間の差異は、エンコードプロセスを経る。
従来のビデオコーデックは、動き補償予測を用いて、未加工のインプットビデオストリームを効率的にエンコードする。現在のフレーム内のマクロブロックは、前のフレームにおいて移動したマクロブロックから予測される。もとのマクロブロックとそれの予測との間の差異は、圧縮され、変位(動き)ベクトルとともに送られる。この技術は、インターコーディング(inter-coding)と呼ばれ、MPEG標準において用いられるアプローチである。
エンコードプロセスで多くの時間を必要とする構成要素の一つは、動き推定である。動き推定は、予測エラーの変換コーディングと組み合わせて動き補償予測を実行することによって、ビデオ信号のビットレートを削減するよう用いられる。動き推定に関連するエイリアシングは、インターピクセルの動き推定によって避けることができず、そのエイリアシングは、予測効率を劣化させる。品質劣化の問題を解決するために、ハーフピクセル補間及びクオーターピクセル補間は、エイリアシングの影響を削減するために適用される。クオーターピクセルの精度によって動きベクトルを推定することで、通常、3段階の検索が用いられる。第1のステップにおいて、動き推定は、特定の検索範囲で各整数ピクセルに適用され、最良の適合を探し出す。次に、第2のステップにおいて、選択されている整数ピクセル動きベクトル周辺の8つのハーフピクセルポイントが、最適なハーフピクセルの適合ポイントを探すよう検査される。最後に、第3のステップにおいて、選択されているハーフピクセル動きベクトル周辺の8つのクオーターピクセルポイントが検査され、最適な適合ポイントが、最終的な動きベクトルとして選択される。動き推定の複雑性を考慮すると、整数ピクセルの動き推定のために全検索が用いられた場合、整数ピクセルの動き推定は、動き推定の多くの部分を占める。しかしながら、高速整数動き推定(integer motion estimation)アルゴリズムを利用すると、10より少ない検索ポイントを検査することによって、整数ピクセルの動きベクトルを探し出すことが可能となる。結果として、ハーフピクセルの動きベクトル及びクオーターピクセルの動きベクトルを検索する計算の複雑性は、際立ったものとなる。
トランジスターのサイズを小さくし、これにより、より多くの機能性を実装するためのシリコンスペースを増加させる絶え間ない半導体技術の進歩、そして、顕著な熱消費をもたらす物理的制限に起因して、プロセッサの製造者は、マルチコアシステム又はマルチプロセッサシステムを導入し始めている。ビデオ圧縮処理は、プロセッサの能力を必要とし、現在のプロセッサが実行可能な計算能力を利用するよう試みる。しかしながら、多くのビデオ圧縮の方法論は、順次定義を用いるかそれとも、近接のビデオオブジェクト間の依存関係を有する。これにより、現在の並列コンピュータシステムにおけるビデオ圧縮プロセスに向けたスレッドレベルの並列処理を利用することは困難となっている。ビデオ圧縮アプリケーションにおける並列処理能力を利用するアプローチの一つは、スライスとして知られているが、ビデオシーケンス内の画像を複数の部分に水平方向に分割することである。複数のスライス間で意味的な依存関係が存在しないことから、これは、マルチ処理システムにおけるビデオ圧縮に適している。
しかしながら、あるビデオ圧縮アプリケーションは、単一のスライスアプローチを必要とする(画像あたり一つのスライス)。単一のスライスアプローチを用いると、単一スライスシンタックス及びブロック境界周辺の動きにおいて、特に、アドバンスドビデオコーディング(AVC)仕様において多くの依存関係の問題が存在する。
単一スライスアプローチを用いたマルチ処理システム上の並列処理ビデオ圧縮のためのある方法は、画像を上部半分と下部半分の水平方向に分割することである。一つのスレッドは、画像の上部半分を処理し、他のスレッドは、下部半分を処理する。二つのスレッドは、同じ画像を処理する。下部のスレッドは、境界周辺の依存関係を無視し、境界周辺のシンタックスの一致を扱う。下部のスレッドが、第1のマクロブロック(MB)のラインを処理する場合、それは、MBモードを選択する。そのモードは、それの上部のMBから独立している。しかしながら、この種の一般的な方法論は、標準的な単一スライスラスタースキャンアプローチより圧縮の効果を劣化させる。
ビデオ圧縮の別の並列処理方法論は、画像を複数の部分に水平方向に分割することである。これら水平方向に分割された部分は、スライスと呼ばれる。そして、ビデオ圧縮システムは、並列処理の方法でこれらスライスをエンコードする。結果として、この方法は、複数のスライスを作りだす。
しかしながら、複数のスライスアプローチは、多くの問題を抱えている。複数のスライスのエンコード結果は、互いが意味的に独立していることから、複数のスライスのエンコード結果は、単一のスライスとは異なる。したがって、複数のスライスによる並列処理方法論についての正確性を確かめることは、困難かつ不可能である。ビデオ品質は、スライスの境界で低下する。異なるスライスにおいてビデオ内容の複雑性が異なる場合、水平方向の複数のスライスエンコーディングを用いるビデオ圧縮は、負荷が不均衡となる。水平方向の複数のスライスエンコーディングにおける個々のスライスの結果を、単一の結果が形成されるよう結び付ける必要がある。
発明の概要
並列処理のビデオ圧縮のための方法及び装置をここに説明する。画像はN個のゾーンに鉛直方向に分割される。鉛直方向分割並列処理(Vertical Split Parallelism、VSP)は、N個のゾーンにおける一般的なマクロブロックコーディングのためのN個のM−コーディングのプロセス、そして、エントロピーコーディングのための1つのE−コーディングからなるN+1個のプロセスを配置する。マクロブロックエンコーディングのプロセスをM−コーディングのプロセス及びE−コーディングのプロセスに分割することによって、複数のM−コーディングのスレッド、そして、一つのE−コーディングのスレッドは、スレッド間の適切な同期を伴い同時に処理することができる。M−コーディングのプロセスの負荷は、各マクロブロックコーディングのプロセスのためのE−コーディングより大きいことから、2つのコアは、2つのM−コーディングのプロセスのために指定され得る。E−コーディングのプロセスの負荷は軽いことから、どちらかのコアが、E−コーディングのプロセスのために指定され得る。したがって、VSPは、並列処置コンピュータの能力を効果的に利用する。
並列処理のビデオ圧縮のための方法及び装置をここに説明する。画像はN個のゾーンに鉛直方向に分割される。鉛直方向分割並列処理(Vertical Split Parallelism、VSP)は、N個のゾーンにおける一般的なマクロブロックコーディングのためのN個のM−コーディングのプロセス、そして、エントロピーコーディングのための1つのE−コーディングからなるN+1個のプロセスを配置する。マクロブロックエンコーディングのプロセスをM−コーディングのプロセス及びE−コーディングのプロセスに分割することによって、複数のM−コーディングのスレッド、そして、一つのE−コーディングのスレッドは、スレッド間の適切な同期を伴い同時に処理することができる。M−コーディングのプロセスの負荷は、各マクロブロックコーディングのプロセスのためのE−コーディングより大きいことから、2つのコアは、2つのM−コーディングのプロセスのために指定され得る。E−コーディングのプロセスの負荷は軽いことから、どちらかのコアが、E−コーディングのプロセスのために指定され得る。したがって、VSPは、並列処置コンピュータの能力を効果的に利用する。
一つの側面において、ビデオを圧縮するための装置は、複数の処理コア、そして、プログラムを備え、そのプログラムは、複数の処理コアを実行し、N個のM−コーディングのプロセス及び一つのE−コーティングプロセスを処理する。Nは、複数の処理コア内におけるコアの数に等しい。E−コーディングのプロセスは、複数の処理コアから選択される利用可能なある処理コアによって処理される。利用可能な処理コアは、自動的に選択される。N個のM−コーディングのプロセスは、モード判定、変換、量子化を含み、E−コーディングのプロセスは、エントロピーコーディングを含む。N個のM−コーディングのプロセスは、並列に処理される。N個のM−コーディングのプロセスは、同時に処理される。N個のM−コーディングのプロセスはそれぞれ、鉛直方向のゾーンに対応する。N個のM−コーディングのプロセスはそれぞれ、シフト分割されている鉛直方向のゾーンに対応する。N個のM−コーディングのプロセスはそれぞれ、対角線上のゾーンに相当する。複数の処理コアは、前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行い、現在のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのE−コーディングを行い、前のマクロブロックのE−コーディングが完了した後に現在のマクロブロックのE−コーディングを行う。複数の処理コアは、マクロブロックが最初の行にない場合、マクロブロックのM−コーディングを、その右上のマクロブロックのE−コーディングが完了した後に行う。複数の処理コアは、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのM−コーディングを、その上部のマクロブロックのE−コーディングが完了した後に行う。
別の側面において、ビデオを圧縮するための装置は、第1のM−コーディングのスレッドを処理するための第1の処理コア、そして、第2のM−コーディングのスレッドを処理するための第2の処理コアであって、第1の処理コアに接続されている第2の処理コアを備える。その場合、E−コーディングのスレッドは、第1の処理コア及び第2の処理コアから選択された利用可能な処理コアによって処理される。第1のM−コーディングのスレッド及び第2のM−コーディングのスレッドは、モード判定、変換、量子化を含み、E−コーディングのスレッドは、エントロピーコーディングを含む。利用可能な処理コアは、自動的に選択される。第1のM−コーディングのスレッド及び第2のM−コーディングのスレッドは、並列に処理される。第1のM−コーディングのスレッド及び第2のM−コーディングのスレッドは、同時に処理される。第1のM−コーディングのスレッドは鉛直方向の第1のゾーンに対応し、第2のM−コーディングのスレッドは鉛直方向の第2のゾーンに対応する。第1のM−コーディングのスレッドは鉛直方向にシフト分割された第1のゾーンに対応し、第2のM−コーディングのスレッドは鉛直方向にシフト分割された第2のゾーンに対応する。第1のM−コーディングのスレッドは対角線上の第1のゾーンに対応し、第2のM−コーディングのスレッドは対角線上の第2のゾーンに対応する。
別の側面において、ビデオを圧縮するための方法は、画像をN個のゾーンに鉛直方向に分割し、N+1個のプロセスを配置することを含む。その場合、N個のプロセスは、M−コーディングであり、一つのプロセスは、E−コーディングである。そして、その方法は、複数の処理コアを利用し並列にN個のM−コーディングのプロセスを処理し、複数の処理コアの利用可能なある処理コアを利用しE−コーディングのプロセスを処理し、さらに、N+1個のプロセスを同期化する。N個のM−コーディングのプロセスは、前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行うことを含む。E−コーディングのプロセスは、現在のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのE−コーディングを行うことを含む。E−コーディングのプロセスを処理することは、前のマクロブロックのE−コーディングが完了した後に現在のマクロブロックのE−コーディングを行うことを含む。方法はさらに、前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行い、現在のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのE−コーディングを行い、前のマクロブロックのE−コーディングが完了した後に現在のマクロブロックのE−コーディングを行うことを含む。方法はさらに、マクロブロックが最初の行にない場合、マクロブロックのM−コーディングを、その右上のマクロブロックのE−コーディングが完了した後に行うことを含む。方法はまた、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのM−コーディングを、その上部のマクロブロックのE−コーディングが完了した後に行うことを含む。
ビデオシーケンスは、画像のシーケンスを含む。各画像はさらに、複数のマクロブロックに分割される。従来のエンコーディングのプロセスは、ラスタースキャン順に一つずつマクロブロックをエンコードする。一般的に、各マクロブロックのエンコーディングのプロセスは、マクロブックのタイプの選択、前段階である動き予測及び動き補償、中期段階である変換及び量子化、最終段階であるエントロピーエンコーディングを含む。
鉛直方向分割並列処理(VSP)は、従来のビデオ圧縮プロセスを2つの部分であるM−コーディング及びE−コーディングに分割する。Mコーディングは、エントロピーエンコーディングのプロセスを伴わない一般的なマクロブロックコーディングのプロセスを意味する。E−コーディングは、エントロピーコーディングのプロセスを意味する。画像が鉛直方向に分割される場合、鉛直方向に分割されている各部分の画像は、ゾーンを表す。従って、画像は、複数のゾーンを含む。各ゾーンは、M−コーディングによって最初に処理される。マクロブロックの単位あたりの各ゾーンのMコーディングのアウトプットは、E−コーディングによってさらに処理される。VSPの特徴は、各マクロブロックのM−コーディング及びE−コーディングの依存関係を切り離すことである。これにより、マクロブロックのE−コーディングは、それ自体のM−コーディングの直後には処理されない。さらに、各マクロブロックは、ラスタースキャンの順序における前のマクロブロックのE−コーディングの完了には依存しない。
通常、画像が、N個のゾーンに鉛直方向に分割されている場合、VSPは、N個のゾーンのためのN個のM−コーディングのプロセス、そして、エントロピーコーディングのための1つのE−コーディングからなるN+1個のプロセスを配置する。例えば、画像が、2つのゾーンに鉛直方向に分割されている場合、VSPは、2つのゾーンのための2つのM−コーディングのプロセス、そして、エントロピーコーディングのための一つのE−コーディングのプロセスからなる3つのプロセスを配置する。
マクロブロックのエンコーディングのプロセスをM−コーディングのプロセス、そして、E−コーディングのプロセスに分けることによって、複数のM−コーディングのスレッド及び一つのE−コーディングのスレッドは、スレッド間の適切な同期を伴って同時に進行することが可能である。M−コーディングは、モード判定、変換、量子化を含む。M−コーディングのこれらの段階は、E−コーディングであるエントロピーコーディングのタスクと比較して非常に負荷がかかるタスクである。M−コーディングのプロセスの負荷は、各マクロブロックコーディングのためのE−コーディングのプロセスより重いことから、コアは、各M−コーディングのプロセスを実行するために指定され得る。例えば、デバイス又はシステム内に2つのコアが存在する場合、すると、そのコアは2つのM−コーディングのプロセスに利用されるであろう。その場合、一プロセスが各コアに伝達される。2つのM−コーディングのプロセスは、並列に実行することができるが、AVCシンタックス依存がいまだ存在する。例えば、デルタQPやマクロブロック(MB)のスキップ実行など。これら問題は、スタンドアロンのE−スレッドの導入によって解決することができる。E−コーディングの負荷は軽いことから、2つのコアのどちらかが、E−コーディングのプロセスを処理し得る。したがって、VSPは、並列処理演算能力を効率的に利用する。
VSPは、並列処理方法における複数のスライスをエンコードする際の問題を解決する。ビデオ圧縮のVSPの並列処理は、同じ結果となる単一スライスの順次処理をもたらす。したがって、VSP並列処理と単一スライスの順次処理の結果が等しいことを比較することによって、VSP並列処理の正確性を確認することが容易となる。VSP並列処理と単一スライスの順次処理の結果は同一であるから、ビデオ品質は同一であることが保証される。画像を鉛直方向に分割することによって、VSPの各ゾーンは通常、ビデオの内容の複雑性を一様にする。したがって、各コアにおける個々の所定の負荷は、比較的に等しくなる。さらに、負荷が不均衡である場合、それは、VSPのエントロピーコーディングのプロセスによって排除される。したがって、VSP並列処理の負荷は、自動的に釣り合いが保たれる。VSPのエントロピーコーディングのプロセスは、単一のスライスのエンコーディングと同じである単一の結果をもたらす。したがって、複数スライスの並列処理における部分的な結果の連結動作である追加の段階は存在しないこととなる。
VSPが実装されているビデオ圧縮ソフトウエアは、マルチプロセッサコンピュータアーキテクチャの対称型マルチプロセッシング(Symmetric Multiprocessing、SMP)マシン上で実行されることが望ましい。そのアーキテクチャでは、複数のプロセス(スレッド)の同期化は、共有メモリの読み取り及び書き込みによって達成されることから、二以上の同一プロセッサ又はコアは、単一の共有メインメモリに接続されている。
VSPの実装は、ソフトウエアや、ハードウエア、ソフトウエアとハードウエアの組み合わせなどを介することで可能となる。画像を分割する好ましい方法は、鉛直方向に分割することであるが、他の実施例では、画像は対角線上に分割される。
並列で処理を行うビデオ圧縮の量を増加させること、そして、順次処理を削減することによって、ビデオ圧縮の性能は改善する。
VSPは、画像レート制御(Picture Rate Control)や、マクロブロック量子化重みマクロブロックレート制御(Macro-block Quantization Weight Macro-block Rate Control、MQW MBRC)、画像再エンコード、MB再エンコード、CAVLCエントロピーコーディング及びCABACエントロピーコーディング、フレームインプットフォーマット及びフィールドインプットフォーマット、ブロック解除のオン/オフなどをサポートする。
多くの問題が存在し、VSPによって解決される。SYNC境界制限も解決される。量子化パラメータ(QP)境界制限は、実際のMBコーディングの前に全てのQPを事前に計算しておくことによって、又は、右端MB上の左端MBの依存関係を減少させるアルゴリズムを変更しておくことによって解決する。QPデルタ依存関係の問題は、2段階のアルゴリズムによって解決する。ラスタースキャン順序における前のQP、そして、ラスタースキャン順序における前のスキップMBへの依存関係が存在することから、QPデルタ依存関係の問題が存在する。VSPを用いて、コーディングを2段階に分離する。その際、M−コーディングは、並列で実行し、E−コーディングは、ラスタースキャン順序において順次実行する。したがって、デュアルコアシステムにおいて顕著に処理速度が上昇する。
並列化の方法は、タスク分解又はデータ分解によって分類することが可能である。タスク分解では、Jvtエンコーダが、パイプライン方式において機能レベルで複数のプロセスに分解され得る。各プロセスは、独立した方式として実行され、そして、そのアウトプットは、次のプロセスのためのインプットとすることが可能である。各プロセスにおいてロードバランス及びデータ依存性が解決されている場合、並列化は達成される。各プロセスのためにロードを行う現在のコードのコンピュータ操作は、不均衡である。Jvtコーディングのプロセスは、他のものと比較して最も重い。
データ分解では、各ピクチャーは、異なる時間フレームにおいて同時にエンコードを行うためにフレームレベルで半分に分解され得る。ペールムーンAアルゴリズムは、この方法を実現する。各ピクチャーは、複数の異なるスライスを用いてスライスレベルでエンコードされ、並列化を達成する。一つの画像内で処理を行うと、参照フレームが時間領域において生成されない。MBレベルにおいて、各MBは、並列化のための処理ユニットとなる。データ同期化は、扱うとすると隣接するMBへのデータ依存関係がAVCエンコーダにおいて基準となることから主要な問題となる。VSPは、この方法を採用する。ブロックレベルでの並列化は、MB内で実行され得る。それは、非常に低レベルのアルゴリズムであり、MBレベルにおいて生じるデータ同期化の問題を回避する。混合した分解では、タスク分解及びデータ分解の両方が含まれる。
図1A乃至図1Cは、ビデオ圧縮のための並列処理装置の実施例におけるブロック図を示す。図1A乃至図1Cそれぞれにおいて、コンピュータデバイスは、一又は二以上のコアを有する一又は二以上のプロセッサを備える。合計で2つのコアを有するならば、任意のプロセッサ及びコアの組み合わせは実現可能である。
図1Aは、2つのプロセッサを有するコンピュータデバイス1を示す。その2つのプロセッサは、第1のプロセッサ2、第2のプロセッサ4であって、それぞれ、単一のコア3、コア5を有する。図1Bは、単一プロセッサ2’を有するコンピュータデバイス1’を示す。その単一プロセッサ2’は、デュアルコア3’を備える。図1Cは、2つのプロセッサを有するコンピュータデバイス1’’を示す。その2つのプロセッサは、第1のプロセッサ2’、第2のプロセッサ4’であって、それぞれ、デュアルコア3’、デュアルコア5’を有する。各コンピュータデバイスは、同一プロセッサ内又は複数のプロセッサ内のどちらかに少なくとも二つのコアを有する。さらに、図1Cに示すように、2以上のコアを利用することも可能である。コアの総合計が2以上である限り、任意の数のプロセッサ及びコアを利用することができる。コンピュータデバイスは、以下に限定しないが、ビデオカメラ、デジタルカメラ、携帯電話、携帯情報端末(PDA)、コンピュータなどを含む任意のデジタルデバイスである。
複数のコアを利用することで、ビデオ圧縮のための並列処理装置は、並列処置の利点を生かすことによりビデオ圧縮プロセスを促進させることが可能である。ここに記載するように、画像が、N個のゾーンに鉛直方向に分割された後、N個のM−コーディングのプロセスとエントロピーコーディングのための一つのE−コーディングのプロセスからなるN+1個のプロセスが配置される。M−コーディングのプロセスにはE−コーディングのプロセスより重い負荷がかかることから、コアは、各M−コーディングのプロセスのために指定され得る。例えば、図1Aを参照すると、第1のM−コーディングのプロセスは、第1のプロセッサ2内のコア3に送られ、第2のM−コーディングのプロセスは、第2のプロセッサ4内のコア5に送られる。これにより、各M−コーディングのプロセスは、個別に処理される。E−コーディングのプロセスのために、コア3又はコア5のどちらかが利用され得る。そのようなプロセスの処理は比較的軽いからである。したがって、ビデオ圧縮のための並列処理装置は、並列処理コンピュータの能力を効果的に利用する。
図2は、鉛直方向分割並列処理(VSP)における実施例のフローチャートを示す。ステップ200において、画像は、N個のゾーンに分割される。この場合、Nは2以上である。通常、画像が分割され、これにより、ゾーンの数が処理のために利用可能なコアの数に等しくなる。ステップ202において、N+1個のプロセスが配置される。N個のM−コーディングのプロセス及び一つのE−コーディングのプロセスが存在する。ステップ204において、N個のMコーディングのプロセスは、並列に処理される、次に、ステップ206において、E−コーディングのプロセスは、利用可能である任意のコアを利用して処理される。そして、ステップ208において、処理は同期化される。
図3は、ゾーン_a(左部分)及びゾーン_b(右部分)かならなる2つのゾーンに対する鉛直方向への画像の分割を示す。その画像は、128×96ピクセル(8×6MB)を有する。各鉛直方向のゾーンここではゾーン_a及びゾーン_bは、分離したコアによって個々のスレッドとして処理される。MBレベルのエンコーディングに関して、鉛直方向のゾーン間のゾーン境界のみが多くの同期化を必要とする。その他の独立したスレッドは、エントロピーコーディングのために利用される。各MBは、マクロブロック層のコーディングである「Mコーディング」、そして、エントロピーコーディングである「E−コーディング」によってエンコードされる。各ゾーンは、M−コーディングのための一つのスレッドによって処理される。例えば、ゾーン_aは、一つのスレッドによってM−コーディングが実行される、ゾーン_bは、別のスレッドによってM−コーディングが実行される。独立したスレッドが「E−コーディング」を実行する。よって、画像が2つの鉛直方向のゾーンに分割されている場合、合計で3つのスレッドが実行される。
効果的にコーディングが実行されることを保証する多くの同期化のルール又は要求が存在する。前のマクロブロックのM−コーディングが完了すると、現在のマクロブロックのM−コーディングが開始する。例えば、図3を参照すると、MB1aは、MB0aが完了したときのみ開始することができる。次に、MB2bは、MB1bが完了したときのみ開始することができ、そして、MB1bは、それが開始可能となる前に、MB0aが終了するまで待たなければならない。MBのE−コーディングは、それぞれのMBのM−コーディングが完了したときに開始する。あるMBのE−コーディングはまた、そのMBの前のE−コーディングが完了したときのみ開始することができる。
上記の一般的な同期化に加えて、用いられるデータ構造の設計に依存するルールが存在する。重複したデータ構造の設計と同期化アルゴリズムの間に密接な関係が有るからである。以下に、重複したデータ構造の設計に依存する同期化のアルゴリズムの実装を開示する。マクロブロックの各列に関して、データの2つのセットが存在する。例えば、8ピクセル×6ピクセルMB画像に関して、隣接したマクロブロックの情報(Adjacent Macro-block Information、AdjacentMblnfo)、算術コーディングのための前のCABAC情報(Adjacent Macro-block Information、AdjacentMblnfo)、マクロブロックエンコーディング(MbCoding)、マクロブロックエンコーディング、オーサリングエンコーディングモード(MbCodingAE)、マクロブロックエンコーディングモード判定(Macro-block Encoding Mode Decision、 ModeDecision)の16セットである8×2のデータのセットがある。マクロブロック各列に関して、バッファーを記憶するエントロピーファンクションコールの2つのセットが存在する。各MBのバッファーは、ファンクションコールを32個まで記憶することができる。例えば、8ピクセル×6ピクセルMB画像に関して、VspSims[8×2][32]は、エントロピーファンクションコールレコーディングバッファーである。MBの第1の行内に存在しないMBに関して、M−コーディングは、それの右上のMBのE−コーディングが完了したときのみ開始することができる。MBが行内の最後のMBである場合、Mコーディングは、それの上のMBのE−コーディングが完了したときのみ開始することができる。例えば、図3を参照すると、MB e10のM−コーディングは、MB e03のE−コーディングが完了したときのみ開始することができる。次に、MB e10は、MB e10とMB e02が同一のMBの列にあることから、同一なデータのセットであるMB e02を再利用する。
ビデオ圧縮のための並列処理装置による、その他の改善事項は、水平方向のゾーンの代わりに鉛直方向のゾーンの使用を含む。鉛直方向のゾーンは、上述の記載に加えて、水平方向のゾーンを越える他の利益を有する。一般的に、鉛直方向のピクセルは、水平方向のピクセルより少ない。ゆえに、列又は行の数が均一ではない場合、相違は、水平方向より鉛直方向の方が小さくなる。したがって、一つのプロセッサが、別のものより負荷が非常に大きくなることはないと考えられる。鉛直方向にゾーンを構成することの別の利益は、図4Aに示すように列の数が均一ではないとき、鉛直方向にシフト分割を行うことを可能にすることである。シフト分割は、ゾーンが等しいサイズとなるよう、鉛直方向の分割が画像内のあるポイントで変更されることである。例えば、図4Aを参照すると、第1のゾーン400及び第2のゾーン402である2つのゾーンを生成するとき、奇数の列が存在し、分割部404は、中間点406における一つの列によって画像の下方で入れ替えられる。これにより、サイズが等しい2つのゾーンが生じることとなる。鉛直方向にゾーンを構成することのさらなる別の利益は、例えば、画像上部にわたる青空や画像下部の水などのように、画像内に静的な構成要素が存在するような多くの画像に向けたものである。例えば、図4Bに示す同じような画像は、家の上にある青空、画像の下部には木や人を含む。画像が、水平方向に分割された場合、青空の処理は、圧縮のために処理能力を少ししか必要としない。なぜならば、それが比較的静的であるのに対して、家や、木、そして、人である部分は、多くの処理を必要とするからである。したがって、バランスが保たれなくなる。しかしながら、画像が鉛直方向に分割された場合、両側は、半分の空、半分の家、そして半分の木や人を含むと考えられ、よりバランスの取れた処理スキームを提供する。
VSPを利用することは、他の圧縮の実装を超える多くの利益を提供する。ロードバランスに関して、負荷が重いスレッドのそれぞれ対して、ほとんど同じ数のMBが存在する。全てのMBは、同一フレーム内で処理される。鉛直方向に区分けすることは、バランスの取れた負荷を達成する。拡張性ついては、スレッドの数を調節することが容易である。同期化に関しては、同期化するのに必要とされるアイテムの数が最小となる。ゾーン境界に隣接するゾーン内の第1の列のMBのみが、多くの同期化を必要とする。データの依存関係のマップは、同期化のために用いることができる。同期化の「実行可能」の結果の可能性は高く、そして、同期化の「実行可能」に対して「実行不可」の待ち時間は短くなる。多くの参照MBは、同一の特定のキャッシュ内にある。x86デュアルコアプロセッサは、2つのL2キャッシュと有する。CELLは、各SPEのために特定の記憶部を有する。境界を越える参照MBは、転送する必要がない。x86は、事前フェッチを用いて参照MBを転送する。CELLは、転送のためにDMAを使用する。負荷が重いスレッドそれぞれは、フレームの一部のみを処理する。鉛直方向の領域それぞれは、負荷が重いスレッドそれぞれによって実行される。
マルチコアマシン上の負荷が重いスレッド(M−コーディング)間にバランスの取れていない負荷が存在する場合、負荷が軽い独立したスレッド(E−コーディング)が、そのギャップを埋めることができる。したがって、マルチコアの負荷は、自動的にバランスが保たれる。ここに開示した実装を用いることで、プロセッサの利用は、デュアルコアマシン上で時間の大部分である90%を上回る。VSPは、メモリの利用をわずかであるが約2.3%増加させる。
レート制御アルゴリズムは、一般的なレート制御アルゴリズムに関してQP依存関係の問題をMQW MBRCアルゴリズムを超えて解決することができる。図5に、第1のスレッド500及び第2のスレッド502を2つのタイプの境界を用いて示す。SYNC境界504は、イントラ予測要求に起因する。MB[1]は、MB[H]に依存する(例えば、MB[H]が完了するまでMB[1]は開始できない)。MB[P]は、MB[1]に依存する(例えば、MB[1]が完了するまでMB[P]は開始できない)。QP境界506は、レート制御アルゴリズムに起因する。MB[I]は、MB[8]に依存する(例えば、MB[8]のQPが決定された後、MB[I]のQPが決定される)。MB[Q]は、MB[16]に依存する(例えば、MB[16]のQPが決定された後、MB[Q]のQPが決定される)。
QP境界の問題を減少させるアルゴリズムの変更は、右端のMBとの依存関係なしに左端MBのQPを決定し、MB間の残りのQP依存関係(例えば、右端のMBへの左端のMBの依存関係を除く、ラスタースキャン順序における前のMBへの他のMB依存関係の全て)に影響しない(例えば、MBコーディングの間の各MBのためのQPの変化)。したがって、VSPは、MB間の依存関係についての弱点を克服することができる。MB[9]のQPは、MB[8]のQP又はMB[P]のQPのどちらかに依存し得る。新しいレート制御アルゴリズムは、2つの画像(2つのラスタースキャン順序におけるQP依存関係のための左半分の画像と右半分の画像)として分割した画像を扱う。左端のMBと右端のMB間の相関関係は存在しておらず、QP境界依存関係を減少させることが可能である。
動作中、ビデオ圧縮のための並列処理装置は、ビデオ圧縮を促進させるよう複数のコアを用いて並列処置の能力を利用する。多くのデバイス及びシステムは、単一のプロセッサ又は複数のプロセッサのどちらかにおいて複数のコアを備える。効率性の目的に関して、ビデオ圧縮が複数のコアを利用することは重要である。他の試みは、複数のコアを利用することで構成されるが、それは、それの効果を減少させる特定の欠点を有する。VSPは、各画像をN個の鉛直方向のゾーンに分離させる。その場合、そのゾーンは、通常同一サイズである。Mコーディングのプロセスは、一つのE−コーディングのプロセスに加えて各ゾーンに対して生成される。各M−コーディングのプロセスは同様な複雑性を有することから、各コアは、それらを処理するためにおおよそ同じ時間を必要とするであろう。さらに、E−コーディングは負荷が少ないため、利用可能な任意のコアによって処理することが可能となる。その結果、プロセスの同期化が行われる。
記載の通り、デバイスは、画像を鉛直方向のゾーンに分割することによって鉛直方向分割並列処理を利用し、そして、それぞれ対応するプロセスを分離したコアに送り処理を行う。さらに、エントロピーコーディングのプロセスは、利用可能なあるコアに送られる。その後、プロセスは同期化が行われ、迅速なビデオ圧縮を達成する。鉛直方向分割並列処理の実装は、ハードウエアや、ソフトウエア、又はそれらを組み合わせることで可能となる。
鉛直方向分割並列処理は、これらに限定しないが、ビデオ編集、ストレージ、ブロードバンド接続、通信などを含む多くのアプリケーションにおいて用いることが可能である。
本発明は、特定の実施例に関して開示している。その実施例には、本発明の構成及び動作の原理を理解することを促進するための詳細が記載されている。そのような特定の実施例への参照及びそれについての詳細は、ここに添付する特許請求の範囲を制限することを意図していない。他の様々な変更が、特許請求の範囲によって定義する発明の思想及び範囲から逸脱することなく図示のために選択された実施例において構成され得ることは当業者にとって明らかであろう。
Claims (28)
- ビデオを圧縮するための装置であって、その装置は、
a.複数の処理コアと、
b.N個のM−コーディングのプロセス、そして、一つのE−コーディングのプロセスを処理するよう前記複数の処理コアを実行するプログラムと、
を備えることを特徴とする装置。 - 請求項1に記載の装置であって、Nは、前記複数の処置コア内の処理コアの数と等しいことを特徴とする装置。
- 請求項1に記載の装置であって、前記E−コーディングのプロセスは、前記複数の処理コアから選択される利用可能な処理コアによって処理されることを特徴とする装置。
- 請求項3に記載の装置であって、前記利用可能な処理コアが、自動的に選択されることを特徴とする装置。
- 請求項1に記載の装置であって、前記N個のM−コーディングのプロセスは、モード判定、変換、量子化を含み、前記E−コーディングのプロセスは、エントロピーコーディングを含むことを特徴とする装置。
- 請求項1に記載の装置であって、前記N個のM−コーディングのプロセスは、並列に処理されることを特徴とする装置。
- 請求項6に記載の装置であって、前記N個のM−コーディングのプロセスは、同時に処理されることを特徴とする装置。
- 請求項1に記載の装置であって、前記N個のM−コーディングのプロセスは、それぞれ鉛直方向のゾーンに対応することを特徴とする装置。
- 請求項1に記載の装置であって、前記N個のM−コーディングのプロセスは、それぞれシフト分割されている鉛直方向のゾーンに対応することを特徴とする装置。
- 請求項1に記載の装置であって、前記N個のM−コーディングのプロセスは、それぞれ対角線上のゾーンに対応することを特徴とする装置。
- 請求項1に記載の装置であって、前記複数の処理コアは、
a.前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行い、
b.前記現在のマクロブロックのM−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行い、
c.前記前のマクロブロックのE−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行うことを特徴とする装置。 - 請求項1に記載の装置であって、マクロブロックが最初の行にない場合、前記複数の処理コアは、マクロブロックのM−コーディングを右上のマクロブロックのE−コーディングが完了した後に行うことを特徴とする装置。
- 請求項1に記載の装置であって、マクロブロックが行内の最後のマクロブロックである場合、前記複数の処理コアは、マクロブロックのM−コーディングを上部のマクロブロックのE−コーディングが完了した後に行うことを特徴とする装置。
- ビデオを圧縮するための装置であって、その装置は、
a.第1のM−コーディングのスレッドを処理するための第1の処理コアと、
b.前記第1の処理コアに接続されている第2の処理コアであって、第2のM−コーディングのスレッドを処理するための前記第2の処理コアと、
を備え、
前記第1の処理コア及び前記第2の処理コアから選択される利用可能な処理コアによってE−コーディングのスレッドが処理されることを特徴とする装置。 - 請求項14に記載の装置であって、前記第1のM−コーディングのスレッド及び前記第2のM−コーディングのスレッドは、モード判定、変換、量子化を含み、前記E−コーディングのスレッドは、エントロピーコーディングを含むことを特徴とする装置。
- 請求項14に記載の装置であって、前記利用可能な処理コアは、自動的に選択されることを特徴とする装置。
- 請求項14に記載の装置であって、前記第1のM−コーディングのスレッド及び前記第2のM−コーディングのスレッドは、並列に処理されることを特徴とする装置。
- 請求項17に記載の装置であって、前記第1のM−コーディングのスレッド及び前記第2のM−コーディングのスレッドは、同時に処理されることを特徴とする装置。
- 請求項14に記載の装置であって、前記第1のM−コーディングのスレッドは、第1の鉛直方向のゾーンに対応し、前記第2のM−コーディングのスレッドは、第2の鉛直方向のゾーンに対応することを特徴とする装置。
- 請求項14に記載の装置であって、前記第1のM−コーディングのスレッドは、シフト分割されている鉛直方向の第1のゾーンに対応し、前記第2のM−コーディングのスレッドは、シフト分割されている鉛直方向の第2のゾーンに対応することを特徴とする装置。
- 請求項14に記載の装置であって、前記第1のM−コーディングのスレッドは、対角線上の第1のゾーンに対応し、前記第2のM−コーディングのスレッドは、対角線上の第2のゾーンに対応することを特徴とする装置。
- ビデオを圧縮するための方法であって、
a.画像をN個のゾーンに鉛直方向に分割し、
b.N個のプロセスがM−コーディングであり、一つのプロセスがE−コーディングであるN+1個のプロセスを配置し、
c.複数の処理コアを用いて、前記N個のM−コーディングのプロセスを並列に処理し、
d.前記複数の処理コアから利用可能な処理コアを用いて、前記E−コーディングのプロセスを処理し、
e.前記N+1個のプロセスを同期化する、
ことを含む方法。 - 請求項22に記載の方法であって、前記N個のM−コーディングのプロセスを処理することは、前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行うことを含む方法。
- 請求項22に記載の方法であって、前記E−コーディングのプロセスを処理することは、前記現在のマクロブロックのM−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行うことを含む方法。
- 請求項22に記載の方法であって、前記E−コーディングのプロセスを処理することは、前記前のマクロブロックのE−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行うことを含む方法。
- 請求項22に記載の方法であって、その方法はさらに、
a.前のマクロブロックのM−コーディングが完了した後に現在のマクロブロックのM−コーディングを行い、
b.前記現在のマクロブロックのM−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行い、
c.前記前のマクロブロックのE−コーディングが完了した後に前記現在のマクロブロックのE−コーディングを行う、
ことを含む方法。 - 請求項22に記載の方法であって、マクロブロックが最初の行にない場合、マクロブロックのM−コーディングを右上のマクロブロックのE−コーディングが完了した後に行うことをさらに含む方法。
- 請求項22に記載の方法であって、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのM−コーディングを、上部のマクロブロックのE−コーディングが完了した後に行うことをさらに含む方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83161406P | 2006-07-17 | 2006-07-17 | |
US11/716,197 US8000388B2 (en) | 2006-07-17 | 2007-03-08 | Parallel processing apparatus for video compression |
PCT/US2007/016112 WO2008010979A2 (en) | 2006-07-17 | 2007-07-12 | Parallel processing apparatus for video compression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009544225A true JP2009544225A (ja) | 2009-12-10 |
Family
ID=38957300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009520786A Pending JP2009544225A (ja) | 2006-07-17 | 2007-07-12 | ビデオ圧縮用並列処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8000388B2 (ja) |
EP (1) | EP2041882A4 (ja) |
JP (1) | JP2009544225A (ja) |
CN (1) | CN101490968B (ja) |
TW (1) | TWI415446B (ja) |
WO (1) | WO2008010979A2 (ja) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8189683B2 (en) * | 2006-11-28 | 2012-05-29 | General Instrument Corporation | Method and system for providing single cycle context weight update leveraging context address look ahead |
US8213499B2 (en) * | 2007-04-04 | 2012-07-03 | General Instrument Corporation | Method and apparatus for context address generation for motion vectors and coefficients |
US20080247459A1 (en) * | 2007-04-04 | 2008-10-09 | General Instrument Corporation | Method and System for Providing Content Adaptive Binary Arithmetic Coder Output Bit Counting |
CN101330608A (zh) * | 2007-06-22 | 2008-12-24 | 科立尔数位科技股份有限公司 | 位率控制方法及装置 |
US8634470B2 (en) * | 2007-07-24 | 2014-01-21 | Samsung Electronics Co., Ltd. | Multimedia decoding method and multimedia decoding apparatus based on multi-core processor |
TW200943175A (en) * | 2008-01-17 | 2009-10-16 | Nec Corp | Synchronization control method and information processing device |
US8542730B2 (en) | 2008-02-22 | 2013-09-24 | Qualcomm, Incorporated | Fast macroblock delta QP decision |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
JP5088215B2 (ja) * | 2008-04-11 | 2012-12-05 | ソニー株式会社 | 情報処理システム及び情報処理方法、並びにプログラム |
FR2931280B1 (fr) * | 2008-05-19 | 2011-01-07 | Envivio France | Procede et dispositif de codage ou decodage d'image avec parallelisatioon du traitement sur plusieurs processeurs et coprocesseurs, programme d'ordinateur et moyen de stockage correspondants. |
CN101686388B (zh) * | 2008-09-24 | 2013-06-05 | 国际商业机器公司 | 视频流编码装置及其方法 |
US9762973B2 (en) * | 2008-11-04 | 2017-09-12 | The Directv Group, Inc. | Method and system for operating a receiving circuit module to encode a channel signal into multiple encoding formats |
US8335256B2 (en) * | 2008-11-14 | 2012-12-18 | General Instrument Corporation | Motion compensation in video coding |
US8705879B2 (en) * | 2009-04-01 | 2014-04-22 | Microsoft Corporation | Image compression acceleration using multiple processors |
US8069446B2 (en) * | 2009-04-03 | 2011-11-29 | Microsoft Corporation | Parallel programming and execution systems and techniques |
TWI455587B (zh) * | 2009-04-10 | 2014-10-01 | Asustek Comp Inc | 具有多格式影像編解碼功能的資料處理電路及處理方法 |
JP5343703B2 (ja) * | 2009-05-22 | 2013-11-13 | ソニー株式会社 | 復号処理装置、復号処理方法、およびプログラム |
KR101645058B1 (ko) * | 2009-06-09 | 2016-08-02 | 톰슨 라이센싱 | 디코딩 장치, 디코딩 방법, 및 편집 장치 |
US8379718B2 (en) * | 2009-09-02 | 2013-02-19 | Sony Computer Entertainment Inc. | Parallel digital picture encoding |
CN102648583B (zh) * | 2009-10-05 | 2015-05-20 | 法国电信 | 用于编码和解码图像的方法、对应的编码和解码装置 |
US8660177B2 (en) * | 2010-03-24 | 2014-02-25 | Sony Computer Entertainment Inc. | Parallel entropy coding |
US8344917B2 (en) | 2010-09-30 | 2013-01-01 | Sharp Laboratories Of America, Inc. | Methods and systems for context initialization in video coding and decoding |
US9313514B2 (en) | 2010-10-01 | 2016-04-12 | Sharp Kabushiki Kaisha | Methods and systems for entropy coder initialization |
US9060174B2 (en) * | 2010-12-28 | 2015-06-16 | Fish Dive, Inc. | Method and system for selectively breaking prediction in video coding |
CN105007486B (zh) * | 2011-03-07 | 2018-06-05 | 杜比国际公司 | 编码和解码图像的方法、编码和解码设备 |
FR2972588A1 (fr) * | 2011-03-07 | 2012-09-14 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
US20120236940A1 (en) * | 2011-03-16 | 2012-09-20 | Texas Instruments Incorporated | Method for Efficient Parallel Processing for Real-Time Video Coding |
EP2719182B1 (en) * | 2011-06-07 | 2018-05-02 | Thomson Licensing | Method for encoding and/or decoding images on macroblock level using intra-prediction |
FR2977111A1 (fr) | 2011-06-24 | 2012-12-28 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
US8767824B2 (en) | 2011-07-11 | 2014-07-01 | Sharp Kabushiki Kaisha | Video decoder parallelization for tiles |
BR112014001026B1 (pt) | 2011-07-15 | 2022-05-03 | Ge Video Compression, Llc | Codificação de matriz de amostra de baixo atrasdo |
JP6080375B2 (ja) | 2011-11-07 | 2017-02-15 | キヤノン株式会社 | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム |
US9332259B2 (en) | 2012-01-18 | 2016-05-03 | Qualcomm Incorporated | Indication of use of wavefront parallel processing in video coding |
CN102740075B (zh) * | 2012-06-05 | 2015-02-11 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
TW201414311A (zh) | 2012-09-18 | 2014-04-01 | Novatek Microelectronics Corp | 視訊編碼方法與視訊編碼裝置 |
CN104904202A (zh) * | 2012-09-28 | 2015-09-09 | 三星电子株式会社 | 用于使用参考画面信息进行并行视频编码的方法和设备以及用于使用参考画面信息进行并行视频解码的方法和设备 |
EP2814254A1 (en) * | 2013-02-21 | 2014-12-17 | ST-Ericsson SA | Combined parallel and pipelined video encoder |
US9319576B2 (en) * | 2014-01-29 | 2016-04-19 | Google Technology Holdings LLC | Multi-processor support for array imagers |
CN104980764B (zh) * | 2014-04-14 | 2019-06-21 | 深圳力维智联技术有限公司 | 基于复杂度均衡的并行编解码方法、装置及系统 |
CN107005694B (zh) * | 2014-09-30 | 2020-05-19 | 瑞典爱立信有限公司 | 在独立处理单元中编码和解码视频帧的方法、装置和计算机可读介质 |
US9836248B2 (en) * | 2014-10-30 | 2017-12-05 | ScaleFlux | In-memory data compression complementary to host data compression |
US10506235B2 (en) | 2015-09-11 | 2019-12-10 | Facebook, Inc. | Distributed control of video encoding speeds |
US10375156B2 (en) | 2015-09-11 | 2019-08-06 | Facebook, Inc. | Using worker nodes in a distributed video encoding system |
US10499070B2 (en) | 2015-09-11 | 2019-12-03 | Facebook, Inc. | Key frame placement for distributed video encoding |
US10341561B2 (en) | 2015-09-11 | 2019-07-02 | Facebook, Inc. | Distributed image stabilization |
US10602157B2 (en) | 2015-09-11 | 2020-03-24 | Facebook, Inc. | Variable bitrate control for distributed video encoding |
US10063872B2 (en) * | 2015-09-11 | 2018-08-28 | Facebook, Inc. | Segment based encoding of video |
US10602153B2 (en) | 2015-09-11 | 2020-03-24 | Facebook, Inc. | Ultra-high video compression |
KR101925681B1 (ko) * | 2016-09-28 | 2018-12-05 | 가천대학교 산학협력단 | 멀티코어 시스템을 이용한 병렬 비디오 처리 |
CN109584137B (zh) * | 2018-10-24 | 2021-02-02 | 北京大学 | 一种脉冲序列格式转换方法及系统 |
US11194634B2 (en) | 2018-12-14 | 2021-12-07 | Advanced Micro Devices, Inc. | Apparatus and method for providing workload distribution of threads among multiple compute units |
BR112022005346A2 (pt) * | 2019-09-23 | 2022-06-14 | Huawei Tech Co Ltd | Indicação de uma fatia por subimagem em codificação de vídeo baseada em subimagem |
CN111105766B (zh) * | 2019-12-04 | 2022-08-26 | 昆山龙腾光电股份有限公司 | 频率转换方法、组件、时序处理装置及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040258162A1 (en) * | 2003-06-20 | 2004-12-23 | Stephen Gordon | Systems and methods for encoding and decoding video data in parallel |
JP2006129284A (ja) * | 2004-10-29 | 2006-05-18 | Sony Corp | 符号化及び復号装置並びに符号化及び復号方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04139986A (ja) * | 1990-09-29 | 1992-05-13 | Victor Co Of Japan Ltd | 画像信号の動き補償予測符号化/復号化装置 |
US5138447A (en) * | 1991-02-11 | 1992-08-11 | General Instrument Corporation | Method and apparatus for communicating compressed digital video signals using multiple processors |
US5379070A (en) * | 1992-10-02 | 1995-01-03 | Zoran Corporation | Parallel encoding/decoding of DCT compression/decompression algorithms |
US5768537A (en) * | 1996-02-22 | 1998-06-16 | International Business Machines Corporation | Scalable MPEG2 compliant video encoder |
US6775417B2 (en) * | 1997-10-02 | 2004-08-10 | S3 Graphics Co., Ltd. | Fixed-rate block-based image compression with inferred pixel values |
US6330370B2 (en) * | 1998-02-25 | 2001-12-11 | Lucent Technologies Inc. | Multiple description transform coding of images using optimal transforms of arbitrary dimension |
US6148111A (en) * | 1998-04-27 | 2000-11-14 | The United States Of America As Represented By The Secretary Of The Navy | Parallel digital image compression system for exploiting zerotree redundancies in wavelet coefficients |
US7190840B2 (en) * | 2002-01-07 | 2007-03-13 | Hewlett-Packard Development Company, L.P. | Transform coefficient compression using multiple scans |
US6888891B2 (en) * | 2002-01-09 | 2005-05-03 | Octa Technology, Inc. | Wavelet domain half-pixel motion compensation |
US6931061B2 (en) | 2002-11-13 | 2005-08-16 | Sony Corporation | Method of real time MPEG-4 texture decoding for a multiprocessor environment |
FR2854754B1 (fr) | 2003-05-06 | 2005-12-16 | Procede et dispositif de codage ou decodage d'image avec parallelisation du traitement sur une pluralite de processeurs, programme d'ordinateur et signal de synchronisation correspondants |
-
2007
- 2007-03-08 US US11/716,197 patent/US8000388B2/en not_active Expired - Fee Related
- 2007-07-12 CN CN200780027016XA patent/CN101490968B/zh not_active Expired - Fee Related
- 2007-07-12 EP EP07810502A patent/EP2041882A4/en not_active Withdrawn
- 2007-07-12 JP JP2009520786A patent/JP2009544225A/ja active Pending
- 2007-07-12 WO PCT/US2007/016112 patent/WO2008010979A2/en active Application Filing
- 2007-07-16 TW TW096125859A patent/TWI415446B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040258162A1 (en) * | 2003-06-20 | 2004-12-23 | Stephen Gordon | Systems and methods for encoding and decoding video data in parallel |
JP2006129284A (ja) * | 2004-10-29 | 2006-05-18 | Sony Corp | 符号化及び復号装置並びに符号化及び復号方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101490968B (zh) | 2013-12-18 |
TWI415446B (zh) | 2013-11-11 |
CN101490968A (zh) | 2009-07-22 |
US20080219349A1 (en) | 2008-09-11 |
WO2008010979A2 (en) | 2008-01-24 |
TW200818864A (en) | 2008-04-16 |
US8000388B2 (en) | 2011-08-16 |
EP2041882A2 (en) | 2009-04-01 |
EP2041882A4 (en) | 2011-08-31 |
WO2008010979A3 (en) | 2008-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8000388B2 (en) | Parallel processing apparatus for video compression | |
US9872018B2 (en) | Random access point (RAP) formation using intra refreshing technique in video coding | |
KR101775936B1 (ko) | 비디오 코딩 방법 및 장치 | |
JP6960548B2 (ja) | ニューラルネットワークを利用したコーデック | |
US8218641B2 (en) | Picture encoding using same-picture reference for pixel reconstruction | |
US8218640B2 (en) | Picture decoding using same-picture reference for pixel reconstruction | |
US7929608B2 (en) | Method of reducing computations in intra-prediction and mode decision processes in a digital video encoder | |
EP2324639B1 (en) | System and method for decoding using parallel processing | |
JP5100015B2 (ja) | 画面間又は画面内符号化モードの動画像符号化方法及び装置 | |
US8660177B2 (en) | Parallel entropy coding | |
US20120281760A1 (en) | Iterative Grid-Pattern Motion Search | |
US10158869B2 (en) | Parallel video decoding processing apparatus and operating method thereof | |
TWI776071B (zh) | 用以編碼及解碼視訊取樣之轉換區塊的方法、設備和系統 | |
US20110135003A1 (en) | Uni-modal based fast half-pel and fast quarter-pel refinement for video encoding | |
US20150358630A1 (en) | Combined Parallel and Pipelined Video Encoder | |
US20090067494A1 (en) | Enhancing the coding of video by post multi-modal coding | |
JP6234770B2 (ja) | 動画像復号処理装置、動画像符号化処理装置およびその動作方法 | |
JP4557440B2 (ja) | 画像処理装置及び画像符号化装置及び画像復号装置 | |
Αλεξάκος | Evaluation of multiple slices and tiles in HEVC video encoding | |
Gangavati | Complexity reduction of H. 264 using parallel programming | |
Wong et al. | A hardware-oriented intra prediction scheme for high definition AVS encoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100604 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121210 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130507 |