JP2011182169A - 符号化装置および方法 - Google Patents
符号化装置および方法 Download PDFInfo
- Publication number
- JP2011182169A JP2011182169A JP2010044111A JP2010044111A JP2011182169A JP 2011182169 A JP2011182169 A JP 2011182169A JP 2010044111 A JP2010044111 A JP 2010044111A JP 2010044111 A JP2010044111 A JP 2010044111A JP 2011182169 A JP2011182169 A JP 2011182169A
- Authority
- JP
- Japan
- Prior art keywords
- task
- frame
- encoding
- priority
- core
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】フレーム入力から、ビットストリーム出力までの時間を安定させることができるようにする。
【解決手段】符号化タスク生成部31は、符号化プログラムを、ME、TS、およびVLCの機能に分割し、分割された機能に対してエンコードタスクを生成し、そのエンコードタスクに対して、機能毎に設定された優先度を付加し、タスク実行順序制御部33の優先度キューに投入する。タスク実行順序制御部33は、符号化タスク生成部31により投入された優先度キューのタスクに付加された優先度と、リソース負荷検出部32からのリソースの負荷情報とに基づき、実行すべきタスクを決定し、実行する。本発明は、例えば、画像を符号化する画像符号化装置に適用することができる。
【選択図】図6
【解決手段】符号化タスク生成部31は、符号化プログラムを、ME、TS、およびVLCの機能に分割し、分割された機能に対してエンコードタスクを生成し、そのエンコードタスクに対して、機能毎に設定された優先度を付加し、タスク実行順序制御部33の優先度キューに投入する。タスク実行順序制御部33は、符号化タスク生成部31により投入された優先度キューのタスクに付加された優先度と、リソース負荷検出部32からのリソースの負荷情報とに基づき、実行すべきタスクを決定し、実行する。本発明は、例えば、画像を符号化する画像符号化装置に適用することができる。
【選択図】図6
Description
本発明は、符号化装置および方法に関し、特に、フレーム入力から、ビットストリーム出力までの時間を安定させることができるようにした符号化装置および方法に関する。
マルチコア/マルチタスクOS環境においては、動画像符号化プログラム自身を複数の機能やデータに分割して、並列実行させることでプログラムの実行効率をあげることができる(例えば、特許文献1参照)。
しかしながら、マルチタスクOS環境においては、動画像符号化プログラム以外にも多くのタスクが同時に実行されており、また、動画像符号化プログラムも複数のタスクに分割されている。物理コア数以上に実行可能なタスクが存在する場合、それらが実行される順番は、OSが管理するスケジューラの方針に基づいて処理される。
図1には、動画像符号化プログラムを3つのタスクに分割し、複数のフレームについて理想的に処理される様子が示されている。いま、簡単のために、動画像符号化プログラムは、ME(動き予測)、TS(Transform Scaling:変換・量子化)、およびVLC(可変長符号化)という3つのエンコードタスクに分割されているものとする。括弧内のn-1,n,n+1は、それぞれ、フレーム番号を示し、各タスクが、n-1フレーム、nフレーム、n+1フレームのタスクであることを表している。
理想的に、物理コア数が3であれば、3つのタスクの同時実行が可能である。すなわち、n-1フレームのMEのタスクが終わると、nフレームのMEのタスクが開始されるとともに、n-1フレームのMEの結果が用いられて、n-1フレームのTSのタスクが開始される。次に、nフレームのMEのタスクが終わると、n-1フレームのTSのタスクも終わる。したがって、n+1フレームのMEのタスクが開始されるとともに、nフレームのMEの結果が用いられて、nフレームのTSのタスクが開始され、n-1フレームのTSの結果が用いられて、n-1フレームのVLCのタスクが開始される。
そして、n+1フレームのMEのタスクが終わると、nのフレームのTSのタスクと、n-1フレームのVLCのタスクも終わる。したがって、n+1フレームのMEの結果が用いられて、n+1フレームのTSのタスクが開始され、nのフレームのTSの結果が用いられて、nフレームのVLCのタスクが開始される。さらに、n+1フレームのTSのタスクが終わると、nフレームのVLCのタスクも終わり、次に、n+1フレームのTS の結果が用いられて、n+1フレームのVLCのタスクが開始される。
ただし、実際のスケジューリングはOSや物理コア数に依存してしまう。例えば、物理コア数2の環境においては、同時実行可能なタスク数は2であり、例えば、図2に示されるように処理される。
図2の例においては、一方のコアでn-1フレームのMEのタスクが終わると、nフレームのMEのタスクが開始され、他方のコアでn-1フレームのMEの結果が用いられて、n-1フレームのTSのタスクが開始される。一方のコアでnフレームのMEのタスクが終わると、そのMEの結果が用いられて、nフレームのTSのタスクが開始される。このとき、他方のコアでn-1フレームのTSのタスクが終わるので、その結果が用いられて、n-1フレームのVLCのタスクが開始される。
また、一方のコアでnフレームのTSのタスクが終わると、そこで、n+1フレームのMEのタスクが開始される。このとき、他方のコアでn-1フレームのVLCのタスクが終わるので、nフレームのTSの結果が用いられて、nフレームのVLCのタスクが開始される。さらに、一方のコアでn+1フレームのMEのタスクが終わると、その結果が用いられて、n+1フレームのTSのタスクが開始される。このとき、他方のコアでnフレームのVLCのタスクが終わるので、n+2フレームのMEのタスクが開始される。
さらに、一方のコアでn+1フレームのTSのタスクが終わると、他方のコアでn+2フレームのMEのタスクが終わる。したがって、一方のコアでn+2フレームのME結果が用いられて、n+2フレームのTSのタスクが開始され、他方のコアでn+1フレームのTS結果が用いられて、n+1フレームのVLCのタスクが開始される。そして、一方のコアでn+2フレームのTSのタスクが終わるので、n+3フレームのMEのタスクが開始される。
しかしながら、図2の左から3つ目のタスクが開始されるタイミングにおいては、n+1番目のフレームのME、n番目のフレームのTS、およびn-1番目のフレームのVLCのタスクがいずれも実行可能であり、実際の実行順序は、OSスケジューラに依存する。したがって、動画像符号化プログラムのタスクは、図2の例に限らず、例えば、次の図3のように実行されることもある。
図3の例においては、一方のコアでn-1フレームのMEのタスクが終わると、nフレームのMEのタスクが開始され、他方のコアでn-1フレームのMEの結果が用いられて、n-1フレームのTSのタスクが開始される。一方のコアでnフレームのMEのタスクが終わると、そのMEの結果が用いられて、nフレームのTSのタスクが開始される。このとき、他方のコアでn-1フレームのTSのタスクが終わるので、n+1フレームのMEのタスクが開始される。
また、一方のコアでnフレームのTSのタスクが終わると、他方のコアでn+1フレームのMEのタスクも終わる。したがって、一方のコアで、n+1フレームのMEの結果が用いられて、n+1フレームのTSのタスクが開始され、他方のコアで、n-1フレームのTSの結果が用いられて、n-1フレームのVLCのタスクが開始される。
一方のコアでn+1フレームのTSのタスクが終わると、nフレームのTS結果が用いられて、nフレームのVLCのタスクが開始される。このとき、他方のコアで、n-1フレームのVLCのタスクが終わるので、n+2フレームのMEのタスクが開始される。
さらに、一方のコアで、nフレームのVLCのタスクが終わり、他方のコアでn+2フレームのMEのタスクが終わると、一方のコアで、n+2フレームのMEの結果が用いられて、n+2フレームのTSのタスクが開始される。このとき、他方のコアで、n+1フレームのTSの結果が用いられて、n+1フレームのVLCのタスクが開始される。そして、一方のコアで、n+2フレームのTSのタスクが終了すると、n+3フレームのMEのタスクが開始される。
ここで、図2のT1と図3のT2は、どちらも、n-1フレームのMEのタスクが開始されてから、n-1フレームのVLCのタスクが終了するまでの時間を矢印の長さで示している。これらのT1およびT2の長さは、タスクの実行順序、すなわち、OSスケジューラにより変わってしまう。
また、タスクの分割として、符号化の処理対象のフレームを上下2分割して、並行処理を行うことも可能である。具体的には、図4Aに示されるように、1つのフレームが、(0)と(1)の上下2つに分割される。そして、一方のコアで、上フレーム(0)のMEのタスクが実行され、他方のコアで下フレーム(1)のMEのタスクが実行され、一旦待ち合わせる。
次に、上フレーム(0)のTSのタスクが実行され、他方のコアで下フレーム(1)のTSのタスクが実行され、一旦待ち合わせる。さらに、上フレーム(0)のVLCのタスクが実行され、他方のコアで下フレーム(1)のVLCのタスクが実行され、一旦待ち合わせる。
なお、図4の場合においても、マルチタスクOS環境であるので、例えば、図5に示されるように、エンコードタスク以外のタスクも実行され、エンコードタスクの処理中に他のタスク実行が混在することもよくある。
例えば、図5においては、一方のコアにおいて、上フレーム(0)のMEのタスクの後に、エンコード以外のタスクが実行され、他方のコアにおいて、下フレーム(1)のTSのタスクの前に、エンコード以外のタスクが実行される例が示されている。すなわち、この場合も、エンコード以外のタスクにより、待ち合わせ時間が延び、VLCのタスクの開始が遅れてしまっている。
なお、上述した図は適宜、本発明を実施するための形態の説明にも用いられる。
以上のように、マルチコア/マルチOS環境においては、MEのタスクを実行してから、VLCのタスクの実行が終了するまでの時間、すなわち、符号化対象のフレームが入力されてからビットストリームに変換されるまでの間が実行の度に変わり得る。これらの変動は、物理コア数を超えたタスク実行の順序が符号化プログラムから制御困難であるため起こり得る。
このような処理時間の変動(揺らぎ)は、一定間隔でフレームを入力して、一定時間内で処理を返す、リアルタイム系のアプリケーションでは、処理落ち、コマ落ちといったことが生じてしまう恐れがある。
例えば、エンコードデータ分割を、MBライン単位のように細かくすることで、処理の充填率を上げる提案もなされているが、そのためには、図4に示した待ち合わせのようなタスク間同期ポイントが増加してしまう。また、環境によっては、同期処理コストが高いものもあり、非効率な結果になる恐れもある。
本発明は、このような状況に鑑みてなされたものであり、フレーム入力から、ビットストリーム出力までの時間を安定させることができるものである。
本発明の一の側面の符号化装置は、符号化処理を動き予測、変換量子化、および可変長符号化の機能に分割し、分割された機能に対してタスクを生成し、前記機能毎に設定された優先度を付加するタスク生成手段と、前記タスク生成手段により生成された前記タスクに付加された前記優先度に基づいて、前記タスクの実行を制御する実行制御手段とを備える。
前記タスク生成手段は、生成された前記タスクに、前記符号化処理の一連の流れにおいて、入力側から出力側に向けて高くなるように前記機能毎に設定された前記優先度を付加することができる。
前記符号化処理の負荷を監視する負荷監視手段をさらに備え、前記実行制御手段は、前記タスクに付加された前記優先度および前記負荷監視手段により監視された前記負荷に基づいて、前記タスクの実行を制御することができる。
前記負荷監視手段により監視された前記負荷に基づいて、符号化対象のフレームの分割数を決定する分割数決定手段をさらに備え、前記タスク生成手段は、分割された機能に対するタスクを、前記分割数決定手段により決定された前記分割数だけ生成し、前記機能毎に設定された前記優先度を付加することができる。
前記タスク生成手段は、前記動き予測の機能を、さらに、複数のサブ機能に分割して、分割されたサブ機能に対してタスクを生成し、前記サブ機能毎に設定された前記優先度を付加することができる。
本発明の一側面の符号化方法は、タスク生成手段と、実行制御手段とを備える符号化装置の符号化方法において、前記タスク生成手段が、符号化処理を動き予測、変換量子化、および可変長符号化の機能に分割し、分割された機能に対してタスクを生成し、前記機能毎に設定された優先度を付加し、前記実行制御手段が、生成された前記タスクに付加された前記優先度に基づいて、前記タスクの実行を制御する。
本発明の一側面においては、符号化処理が動き予測、変換量子化、および可変長符号化の機能に分割され、分割された機能に対してタスクが生成され、前記機能毎に設定された優先度が付加される。そして、生成された前記タスクに付加された前記優先度に基づいて、前記タスクの実行が制御される。
なお、上述の符号化装置は、独立した装置であっても良いし、1つの符号化装置を構成している内部ブロックであってもよい。
本発明の一側面によれば、フレーム入力から、ビットストリーム出力までの時間を安定させることができる。これにより、本発明の一側面によれば、瞬間的な処理落ちやコマ落ちを抑制することができる。したがって、リアルタイムの再生品質の劣化を抑えることができる。
以下、図を参照して本発明の実施の形態について説明する。
[画像符号化装置の構成例]
図6は、本発明を適用した画像符号化装置としてのパーソナルコンピュータの第1の実施の形態の構成を表している。
図6は、本発明を適用した画像符号化装置としてのパーソナルコンピュータの第1の実施の形態の構成を表している。
このパーソナルコンピュータ11は、符号化制御ブロック21と、OS(オペレーションシステム)22により構成されている。符号化制御ブロック21は、符号化プログラムの実行を制御するためにエンコードタスクを生成して、OS22に供給する。
OS22は、タスクスケジューラと称されるスケジューリング機能を有しており、タスクスケジューラに従って、符号化制御ブロック21からのエンコードタスクやエンコードタスク以外のその他のタスクを実行する。その他のタスクとしては、例えば、メールや表計算などの機能があげられる。
図6の例において、符号化制御ブロック21は、符号化タスク生成部31、リソース負荷検出部32、およびタスク実行順序制御部33を含むように構成されている。
符号化タスク生成部31は、符号化プログラムのタスク生成を行う機能ブロックである。すなわち、符号化タスク生成部31は、符号化プログラムを、ME(動き予測)、TS(Transform Scaling:変換・量子化)、およびVLC(可変長符号化)の機能に分割し、分割された機能に対してエンコードタスクを生成する。なお、符号化タスク生成部31には、図示されないが、処理対象フレームも入力される。符号化タスク生成部31は、処理対象フレームを含むように、エンコードタスクを生成するので、エンコードタスクには、処理対象フレームが含まれている。
符号化タスク生成部31は、そのエンコードタスクに対して、機能毎に設定された優先度を付加し、優先度が付加されたエンコードタスクを、タスク実行順序制御部33の優先度キューに投入する。
符号化タスク生成部31は、機能毎の優先度を、符号化の一連の流れのうち、出力側(ビットストリーム生成)から入力側(原画フレームの入力)に向けて低くなるように設定する。すなわち、ME,TS,VLCの場合、VLC > TS > MEの順に高い優先度に設定される。出力側が完了しないと、出力に影響が出る恐れがあるためである。したがって、VLCのタスクには、TSやMEより高く設定された優先度が付加され、TSのタスクには、MEのタスクより高く設定された優先度が付加され、MEのタスクには、3つの中では一番低く設定された優先度が付加される。
なお、エンコードアルゴリズムや規格(H.264及びMPEG-4 Part10 (Advanced Video Coding、以下H.264/AVCと記す)やMPEG(Moving Picture Experts Group)2)によっては、分割される機能が変わることもあるが、優先度の設定の仕方は同様である。
リソース負荷検出部32は、符号化処理の負荷、すなわち、リソースの負荷を検出し、検出した負荷情報を、タスク実行順序制御部33に供給する。リソースの負荷としては、例えば、使用プロセッサの負荷や空きプロセッサ数、プロセッサのパフォーマンスやメモリ残量、ハードディスクなどの読み出し速度などの情報が検出される。
具体的には、リソース負荷検出部32は、エンコードタスクで使用しているプロセッサの負荷(使用コア数、空きコア数)を計測する。あるいは、リソース負荷検出部32は、OS22が提供する負荷を計測する機能を参照して使用コア数を推定する。また、プロセッサとしては、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などが含まれる。
タスク実行順序制御部33は、優先度キューを有している。タスク実行順序制御部33は、符号化タスク生成部31により投入された優先度キューのタスクに付加された優先度と、リソース負荷検出部32からのリソースの負荷情報とに基づき、実行すべきタスクを決定し、実行する。
ここで、優先度キューは、優先度値に従って内部で整列して、最高の優先度をもつデータを取り出すことができるデータ構造となっている。すなわち、タスク実行順序制御部33は、最高の優先度をもつタスク順に、リソース負荷検出部32からの空きプロセッサコア数だけのタスクを優先度キューから取り出し、実行可能タスクとして、OS22に渡す処理を行う。
[タスク実行順序制御処理の例]
次に、図7のフローチャートを参照して、パーソナルコンピュータ11のタスク実行順序制御処理について説明する。この処理は、例えば、ユーザにより、図示せぬ操作入力部などが操作されて、符号化プログラムの実行が指示されることにより開始される。
次に、図7のフローチャートを参照して、パーソナルコンピュータ11のタスク実行順序制御処理について説明する。この処理は、例えば、ユーザにより、図示せぬ操作入力部などが操作されて、符号化プログラムの実行が指示されることにより開始される。
ステップS11において、符号化タスク生成部31は、符号化プログラムを、ME、TS、およびVLCの機能に分割し、分割された機能に対してエンコードタスクを生成する。
符号化タスク生成部31は、ステップS12において、そのエンコードタスクに対して、機能毎に設定された優先度を付加し、ステップS13において、優先度が付加されたエンコードタスクを、タスク実行順序制御部33の優先度キューに投入する。
その間、リソース負荷検出部32は、エンコードタスクで使用しているプロセッサの負荷(使用コア数)を計測することにより、リソースの負荷を検出し、検出した負荷情報を、タスク実行順序制御部33に供給している。
ステップS14において、タスク実行順序制御部33は、優先度キューにタスクが残っているか否かを判定する。ステップS14において、タスクが残っていると判定された場合、タスク実行順序制御部33は、ステップS15において、リソース負荷検出部32からの負荷情報を取得する。そして、ステップS16において、タスク実行順序制御部33は、取得した負荷情報に基づいて、符号化に用いるための空きプロセッサがあるか否かを判定する。
ステップS16において、空きプロセッサがないと判定された場合、処理はステップS14に戻り、それ以降の処理が繰り返される。
ステップS16において、空きプロセッサがあると判定された場合、タスク実行順序制御部33は、ステップS17において、優先度キューのタスクのうち、最高優先度をもつタスクを実行する。すなわち、タスク実行順序制御部33は、最高優先度をもつタスクを優先度キューから取り出し、実行可能なタスクとして、OS22に渡す。
これに対応して、OS22は、タスクスケジューラに従って、タスク実行順序制御部33からの最高優先度をもつタスクを、空きプロセッサに実行させることができる。タスク実行順序制御部33は、優先度の高い順に、タスクをOS22に渡すので、OS22は、渡されたタスクを選択し、実行する。すなわち、タスク実行順序制御部33は、エンコードタスクの実行順を制御することができる。
これにより、OS22においては、エンコードタスク以外のタスク実行が入るとしても、エンコードタスクについては、例えば、図2を参照して上述した順にタスクが実行される。すなわち、図2や図3のように同じコア環境であっても、タスク実行順が変わることがないので、フレーム入力から、ビットストリーム出力までの時間を安定させることができる。
ステップS14において、タスクが残っていないと判定された場合、タスク実行順序制御処理は終了される。
[効果の説明]
次に、図8乃至図10を参照し、従来と比較して、本発明の効果についてさらに具体的に説明する。図8の例においては、従来の符号化プログラムのタスク生成部と、決定したタスクを、OS22が有するタスクスケジューラに従って順序を選択、実行するOS22が示されている。
次に、図8乃至図10を参照し、従来と比較して、本発明の効果についてさらに具体的に説明する。図8の例においては、従来の符号化プログラムのタスク生成部と、決定したタスクを、OS22が有するタスクスケジューラに従って順序を選択、実行するOS22が示されている。
なお、タスク生成部とOS22との間にある横ラインより上は、符号化プログラムからの制御が可能なブロックを示しており、横ラインより下は、符号化プログラムからの制御が困難なブロックを示している。すなわち、図8の例の場合、符号化プログラムからの制御可能であるのは、実行可能タスクを渡すところだけであり、OS22のスケジューリングは、符号化プログラムからの制御が困難であった。
したがって、OS22には、符号化プログラム側の実行可能タスクが実行可能な分だけ複数蓄積される状態となり、その結果、図2および図3を参照して上述したようなエンコードタスク実行終了時間の揺らぎが発生していた。
そこで、本発明においては、図9に示されるように、符号化タスク生成部31と、OS22との間に、タスク実行順序制御部33という層が新たに追加される。このタスク実行順序制御部33は、符号化タスク生成部31からの入力(実行可能タスク)のうち、最高優先度をもつ実行可能タスクから順に、空きプロセッサコア数分だけ、OS22に渡す。
すなわち、OS22においては、従来のように、実行可能タスクが複数蓄積されていくのではなく、空きプロセッサコア数分だけの実行可能タスクしか渡されない。したがって、OS22は、渡された実行可能タスクを実行するしかない。これにより、OSのスケジューリング機能に由来する不確実性を軽減することができる。
なお、例えば、空きプロセッサコア数が0の場合に限っては、1のタスクを渡しておくようにすることもできる。また、上述したように、タスク実行順序制御部33は、符号化タスク生成部31からの入力(タスクおよび優先度)と、OS22(リソース負荷検出部32)からの入力を基にしてOS22に渡すタスクを決定する。
ここで、上記説明においては、リソース負荷検出部32が、エンコードタスクで使用しているプロセッサの負荷(使用コア数)を計測し、リソースの負荷を検出する例を説明したが、これに限定されない。
例えば、図10に示されるように、リソース負荷検出部32には、符号化タスク生成部31から、エンコードタスクの実行時間も入力させることができる。また、リソース負荷検出部32には、OS22から、例えば、プロセッサの使用率や実行中および実行待機中のタスク数なども入力させることができる。
リソース負荷検出部32は、符号化タスク生成部31からの入力と、OS22からの入力を基にして、現在の空きプロセッサ使用率を導出する。また、リソース負荷検出部32は、実行中の符号化プログラムのタスクと、そのタスクの終了時間を予測し、プロセッサの負荷を予測することもできる。タスクの終了時刻は、これまでに実行してきた同種のタスクの実際の実行にかかった時間差から推測したり、または、事前に導出した統計より該当タスクの実行時間を推測することができる。
リソース負荷検出部32は、現在の空きプロセッサリソース率および近未来の空きプロセッサリソース率を導出し、その情報を、タスク実行順序制御部33に供給する。タスク実行順序制御部33は、プロセッサのリソース率がある限り、現在実行可能なタスクの中で最も優先度の高いタスクを選択して、OS22に渡す。
なお、近未来のプロセッサリソース率を利用する目的は、現在瞬間的にプロセッサ負荷が高くても、次の瞬間にプロセッサが空く可能性があるからであり、必要に応じてタスクを先行入力することで、プロセッサの使用効果をあげることができる。
以上、符号化プログラムを機能分割して、タスクを生成し、リソースの負荷とタスクに付加された優先度に基づいて、実行制御を行う例を説明したが、次に、リソースの負荷に応じて、フレームを分割し、その分割数のタスクを生成する例について説明する。
[画像符号化装置の他の構成例]
図11は、本発明を適用した画像符号化装置としてのパーソナルコンピュータの第2の実施の形態の構成を表している。
図11は、本発明を適用した画像符号化装置としてのパーソナルコンピュータの第2の実施の形態の構成を表している。
図11のパーソナルコンピュータ51は、符号化制御ブロック21の代わりに、符号化制御ブロック61が追加された点が、図6のパーソナルコンピュータ11と異なっている。また、パーソナルコンピュータ51は、OS22を備えている点は、図6のパーソナルコンピュータ11と共通している。
符号化制御ブロック61は、リソース負荷検出部32、データ分割数決定部71、および符号化タスク生成部72を含むように構成されている。
リソース負荷検出部32は、図6の場合と同様に、符号化処理の負荷、すなわち、リソースの負荷を検出する。そして、リソース負荷検出部32は、検出した負荷情報を、データ分割数決定部71に供給する。
データ分割数決定部71には、リソース負荷検出部32からの負荷情報の他に、図示せぬ入力部などより処理対象フレームが入力される。データ分割数決定部71は、リソース負荷検出部32からのリソースの負荷情報に基づき、エンコードタスク以外の負荷を考慮して、入力される処理対象フレームのデータ分割数を決定する。データ分割数決定部71は、処理対象フレームを決定した分割数に分割し、分割した処理データを、符号化タスク生成部72に出力する。
図11の例においては、処理対象フレームが3つに分割された例が示されている。したがって、データ分割数決定部71は、例えば、処理対象フレームの上1/3の処理データ0、処理対象フレームの真ん中1/3の処理データ1、処理対象フレームの下1/3の処理データ2をそれぞれ符号化タスク生成部72に出力する。
符号化タスク生成部72は、符号化プログラムにおいて、いまから処理を行う機能(ME , TS or VLC)についてそれぞれ、分割された処理データ毎にエンコードタスクを生成し、生成したエンコードタスクを実行する。
すなわち、図11の例の場合、符号化タスク生成部72は、処理データ0に対するタスク0、処理データ1に対するタスク1、および、処理データ3に対するタスク3を生成し、生成したタスク1乃至3を、実行可能なタスクとして、OS22に渡す処理を行う。
[タスク実行順序制御処理の他の例]
次に、図12のフローチャートを参照して、パーソナルコンピュータ51のタスク実行順序制御処理について説明する。この処理は、例えば、符号化プログラムが機能分割されている場合には、分割された機能毎に実行される処理である。例えば、いまからTSが行われるとする。
次に、図12のフローチャートを参照して、パーソナルコンピュータ51のタスク実行順序制御処理について説明する。この処理は、例えば、符号化プログラムが機能分割されている場合には、分割された機能毎に実行される処理である。例えば、いまからTSが行われるとする。
データ分割数決定部71には、処理対象フレームが入力される。
リソース負荷検出部32は、エンコードタスクで使用しているプロセッサの負荷(使用コア数)を計測することにより、リソースの負荷を検出し、検出した負荷情報を、データ分割数決定部71に供給している。
データ分割数決定部71は、ステップS51において、リソース負荷検出部32からの負荷情報を取得し、ステップS52において、取得した負荷情報に基づいて、符号化に用いるための空きプロセッサ数を求める。
データ分割数決定部71は、ステップS53において、空きプロセッサ数が1より多いか否かを判定する。ステップS53において、空きプロセッサ数が1より多い、すなわち、空きプロセッサ数が複数あると判定された場合、データ分割数決定部71は、ステップS54において、空きプロセッサ数分に、処理対象フレームのデータを分割する。分割した処理データは、符号化タスク生成部72に出力される。
ステップS55において、符号化タスク生成部72は、いまから行うTSについて、分割された処理データ毎にエンコードタスクを生成し、生成したエンコードタスクを実行する。
すなわち、図11の例の場合、符号化タスク生成部72は、処理データ0に対するタスク0、処理データ1に対するタスク1、および、処理データ3に対するタスク3を生成し、生成したタスク1乃至3を、実行可能なタスクとして、OS22に渡す処理を行う。
一方、ステップS53において、空きプロセッサ数が1以下である、すなわち、0または1であると判定された場合、データ分割数決定部71は、ステップS56において、データを分割せず、処理対象フレームのデータを、符号化タスク生成部72に出力する。
ステップS57において、符号化タスク生成部72は、いまから行うTSについて、1つのエンコードタスクを生成し、生成したエンコードタスクを実行する。すなわち、符号化タスク生成部72は、1つのタスクを生成し、実行可能なタスクとして、OS22に渡す処理を行う。
換言するに、ステップS54およびS56においてデータ分割数決定部71は、max(1,空きプロセッサ数)で、データ分割を行っている。
以上のように、空きプロセッサ数に応じて、処理対象フレームのデータの分割を行うようにしたので、待ち合わせまでの時間を安定化することができる。
すなわち、図5を参照して上述したように、処理対象フレームのデータを分割して、ME,TS,VLCの処理をこなそうとすると、エンコードタスク以外のタスクにより、エンコードタスクの開始が乱れていた。これに対して、各ME, TS,TSを行う際に、エンコード託す以外のタスクがあるか否かを考慮して、データの分割数を決定するようにした。例えば、図13に示されるように、MEやVLCを行う際には、エンコードタスク以外のタスクがないので、2つにデータ分割されているが、TSを行う際に、エンコード託す以外のタスクがあるので、その負荷を考慮して、データ分割をしないようにした。
これにより、待ち合わせ時間が延びてしまうことが抑制され、待ち合わせ時間までの時間を安定化させることができる。
なお、上記説明においては、符号化プログラムの機能を、ME,TS,VLCと分割し、それぞれに優先度を付加するように説明したが、それらの機能をさらに複数のステージ(サブ機能)に分割し、優先度を付加することも可能である。
MEは、アルゴリズムによって、動き予測の探索対象フレーム、探索範囲、探索アルゴリズムなどを切り替えて実行することがあるので、各ステージに分割することが可能である。
例えば、入力フレーム上の粗く広範囲に探索するステージや、再構築フレーム(いわゆる、ローカルデコードフレーム)を密に探索するステージに分けることも可能で、それぞれのステージのタスク優先度を変えることもできる。例えば、入力フレームの探索は、再構築フレームの探索よりも優先度が低く設定される。
MEを例にさらに具体的に説明する。なお、以下、説明の簡単のために、実行環境を2コアとするが、もちろん、コア数は2つに限定されず、2より大きい場合にも適用させることができる。
[サブ機能の優先度の説明]
図14は、MEを探索対象フレームの種類でサブステージに分けた場合の符号化処理の構成を示すブロック図である。図14の例においては、MEが、入力画像を探索対象としたME-Aと、DPB(Decoded Picture Buffer)114内の参照画像を探索対象としたME-Bのサブ機能に分割されている例が示されている。
図14は、MEを探索対象フレームの種類でサブステージに分けた場合の符号化処理の構成を示すブロック図である。図14の例においては、MEが、入力画像を探索対象としたME-Aと、DPB(Decoded Picture Buffer)114内の参照画像を探索対象としたME-Bのサブ機能に分割されている例が示されている。
図14に示される機能ブロックは、ME-A部101、符号化前情報記憶部102、ME-B部103、MC(動き補償:Motion compensation)部104、イントラ判断部105、イントラ予測部106、スイッチ107、演算部108、TS部109、VLC部110、逆TS部111、演算部112、デブロックフィルタ113、およびDPB114を含むように構成されている。
入力画像は、ME-B部103、イントラ判断部105、演算部108に入力される。これらの各部に入力される入力画像を探索範囲として、ME-A部101は、動き予測を行い、その結果の動きベクトル情報を、符号化前情報記憶部102に出力する。
符号化前情報記憶部102は、ME-A部101からの動きベクトル情報を記憶する。
ME-B部103は、入力画像と符号化前情報記憶部102に記憶されている動きベクトル情報を参照し、DPB114内の参照画像を探索対象として動き予測を行い、その結果の動きベクトル情報をMC部104に出力する。MC部104は、ME-B部103からの動きベクトル情報を用いて、DPB114内の参照画像に補償処理を行い、予測画像を生成し、生成された予測画像をスイッチ107に出力する。
イントラ判断部105は、入力画像に基づいて、イントラ予測が可能であるか否かを判定し、可能であると判定した場合、入力画像を、イントラ予測部106に出力する。イントラ予測部106は、入力画像における周辺画素を用いてイントラ予測を行い、予測画像を生成し、生成した予測画像を、スイッチ107に出力する。
スイッチ107は、MC部104からの予測画像とイントラ予測部106からの予測画像を参照して、符号化効率のよい方をマクロブロックタイプに決定し、決定した方の予測画像を、演算部108および112に出力する。
演算部108は、入力画像とスイッチ107からの予測画像の差分をTS部109に出力する。TS部109は、演算部108からの差分をDCT変換および量子化し、量子化後のデータを、VLC部110と逆TS部111に出力する。VLC部110は、量子化後のデータを可変長符号化し、ビットストリームを、図示せぬ後段に出力する。
一方、逆TS部111は、TS部109からの量子化後のデータに対して、逆量子化および逆DCT変換し、逆DCT変換後のデータを、演算部112に出力する。演算部112は、逆DCT変換後のデータ(入力画像と予測画像の差分に相当)とスイッチ107からの予測画像を加算し、加算した結果の画像を、デブロックフィルタ113に出力する。
デブロックフィルタ113は、演算部112からの画像にデブロッキングフィルタを行い、フィルタ後の画像を、DPB114に出力する。DPB114は、デブロックフィルタ113からの画像、すなわち、符号化済みの参照画像を記憶する。
なお、以下、簡単のために、図14の符号化処理において、ME-AおよびME-B以外の処理を、Rとまとめることにする。すなわち、Rは、MC、イントラ判断、イントラ予測、マクロブロックタイプ決定、TS、VLC、逆TS、およびデブロックフィルタなどの処理を表している。
また、以降の説明で、優先度を付加する場合は、ME-A<ME-B<Rという順序、すなわち、Rの優先度が一番高く、ME-Aの優先度が一番低いという順序を付けるものとする。
ここで、図15は、ME-AおよびME-Bの優先度を考慮しない場合に、上述した符号化処理を実行した場合の例を示している。なお、ME-A[n]は、n番目のフレームを対象としたME-Aのタスク、ME-B[n]は、n番目のフレームを対象としたME-Bのタスク、R[n]は、n番目のフレームを対象とした、符号化処理におけるME-AおよびME-B以外のすべての処理のタスクを表している。
優先度が考慮されていないので、図15の例においては、一方のコアで、n-1番目のフレームのME-Aのタスクが終わると、n番目のフレームのME-Aのタスクが開始され、他方のコアで、n-1番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n-1番目のフレームのME-Bのタスクが開始される。
一方のコアで、n番目のフレームのME-Aのタスクが終わると、n+1番目のフレームのME-Aのタスクが開始される。このとき、他方のコアで、n-1番目のフレームのME-Bのタスクが終わり、n番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n番目のフレームのME-Bのタスクが開始される。
また、一方のコアで、n+1番目のフレームのME-Aのタスクが終わると、n+1番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n+1番目のフレームのME-Bのタスクが開始される。このとき、他方のコアで、n番目のフレームのME-Bのタスクが終わると、n-1番目のフレームのME-Bの結果の動きベクトル情報が用いられてn-1番目のフレームのRの処理のタスクが開始される。
さらに、一方のコアで、n+1番目のフレームのME-Bが終わった後、n番目のフレームのME-Bの結果の動きベクトル情報が用いられてn番目のフレームのRの処理のタスクが開始される。このとき、他方のコアで、n-1番目のフレームのRの処理のタスクが終わると、n+2番目のME-Aのタスクが開始される。
一方のコアで、n番目のフレームのRの処理のタスクが終わると、他方のコアで、n+2番目のME-Aのタスクが終わる。このとき、一方のコアで、n+2番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n+2番目のフレームのME-Bのタスクが開始され、他方のコアで、n+1番目のフレームのME-Bの結果の動きベクトル情報が用いられてn+1番目のフレームのRの処理のタスクが開始される。
そして、一方のコアで、n+2番目のフレームのME-Bのタスクが終了すると、他方のコアで、n+1番目のフレームのRの処理のタスクが終了し、一方のコアで、n+3番目のME-Aのタスクが開始される。
図16は、図15の例において、ME-A<ME-B<Rという順序の優先度を付加しそれを考慮して、上述した符号化処理を実行した場合の例を示している。
図16の例においては、一方のコアで、n-1番目のフレームのME-Aのタスクが終わると、n番目のフレームのME-Aのタスクが開始され、他方のコアで、n-1番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n-1番目のフレームのME-Bのタスクが開始される。
一方のコアで、n番目のフレームのME-Aのタスクが終わると、他方のコアで、n-1番目のフレームのME-Bのタスクが終わる。このとき、実行可能なタスクとしては、n+1番目のフレームのME-A、n番目のフレームのME-B、およびn-1番目のフレームのRの処理があるが、ME-AよりもME-BおよびRのタスクの優先度が高い。したがって、一方のコアで、n番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n番目のフレームのME-Bのタスクが開始される。他方のコアで、n-1番目のフレームのME-Bの結果の動きベクトル情報が用いられてn-1番目のフレームのRの処理のタスクが開始される。
次に、一方のコアで、n番目のフレームのME-Bのタスクが終わり、他方のコアで、n-1番目のフレームのRの処理のタスクが終わる。このとき、実行可能なタスクとしては、n+1番目のフレームのME-A、およびn番目のフレームのRの処理しかない。したがって、一方のコアで、n+1番目のフレームのME-Aのタスクが開始され、他方のコアで、n番目のフレームのME-Bの結果の動きベクトル情報が用いられてn番目のフレームのRの処理のタスクが開始される。
また、一方のコアで、n+1番目のフレームのME-Aのタスクが終わり、他方のコアで、n番目のフレームのRの処理のタスクが終わる。このとき、実行可能なタスクとしては、n+1番目のフレームのME-B、およびn+2番目のフレームのME-Aしかない。したがって、一方のコアで、n+1番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n+1番目のME-Bのタスクが開始され、他方のコアで、n+2番目のフレームのME-Aのタスクが開始される。
さらに、一方のコアで、n+1番目のME-Bのタスクが終了し、他方のコアで、n+2番目のフレームのME-Aのタスクが終了する。このとき、実行可能なタスクとしては、n+3番目のフレームのME-A、n+2番目のフレームのME-B、およびn+1番目のフレームのRの処理があるが、ME-AよりもME-BおよびRのタスクの優先度が高い。したがって、一方のコアで、n+2番目のフレームのME-Aの結果の動きベクトル情報が参照されて、n+2番目のフレームのME-Bのタスクが開始される。他方のコアで、n+1番目のフレームのME-Bの結果の動きベクトルが用いられてn+1番目のフレームのRの処理のタスクが開始される。
また、一方のコアで、n+2番目のフレームのME-Bのタスクが終わり、他方のコアで、n+1番目のフレームのRの処理のタスクが終わる。このとき、実行可能なタスクとしては、n+2番目のフレームのRの処理、およびn+3番目のフレームのME-Aしかない。したがって、一方のコアで、n+3番目のフレームのME-Aのタスクが開始され、図示されないが、他方のコアで、n+2番目のフレームのME-Bの結果の動きベクトル情報が用いられてn+2番目のフレームのRの処理のタスクが開始される。
以上のように、MEをサブ機能に分けた場合も、サブ機能のタスクの優先度に応じてタスクを実行させるようにしたので、図15のt1と図16のt2に示されるように、n-1番目のフレームのRの処理のタスク完了までの時間を短縮することができる。図16のRの処理のタスクを、図15の例よりも早いタイミングで完了させる、すなわち、そのタイミングを制御することができる。
また、上記説明においては、優先度の例(図6)と画面分割の例(図11)を別々に説明したが、次のように組み合わせて用いることも可能である。
[優先度と画面内分割の組み合わせの説明]
次に、図17乃至図19を参照して、優先度と画面内分割を組み合わせる例について説明する。
次に、図17乃至図19を参照して、優先度と画面内分割を組み合わせる例について説明する。
図17の例においては、画面内分割数が3である場合のフレームが示されている。すなわち、フレームは、縦に3分割した領域で構成されている。以下、分割した各領域を、セグメントと称し、上から順に、0番目のセグメント、1番目のセグメント、2番目のセグメントとする。各セグメントは、論理的には並列(順不同)に実行可能である。
図18は、優先度と画面分割を考慮しない場合に、図14の符号化処理を実行した場合の例を示している。なお、ME-A[n](m)は、n番目のフレーム内m番目のセグメントを対象としたME-Aのタスク、ME-B[n] (m)は、n番目のフレーム内m番目のセグメントを対象としたME-Bのタスク、R[n] (m)は、n番目のフレーム内m番目のセグメントを対象とした、符号化処理におけるME-AおよびME-B以外のすべての処理のタスクを表している。
図18の例においては、一方のコアで、n番目のフレーム内0番目のセグメントのME-Aのタスクが開始され、n番目のフレーム内1番目のセグメントのME-Aのタスクが開始される。
一方のコアで、n番目のフレーム内0番目のセグメントのME-Aのタスクが終了され、他方のコアで、n番目のフレーム内1番目のセグメントのME-Aのタスクが終了される。このとき、ME-B[n]の実行依頼があるが、優先度が考慮されていないので、一方のコアで、n番目のフレーム内2番目のセグメントのME-Aのタスクが開始される。また、他方のコアで、n番目のフレーム内0番目のセグメントのME-Aの結果が参照されて、n番目のフレーム内0番目のセグメントのME-Bのタスクが開始される。
次に、一方のコアで、n番目のフレーム内2番目のセグメントのME-Aのタスクが終了するので、n番目のフレーム内1番目のセグメントのME-Aの結果が参照されて、n番目のフレーム内1番目のセグメントのME-Bのタスクが開始される。このとき、他方のコアで、n番目のフレーム内0番目のセグメントのME-Bのタスクが終了するので、n番目のフレーム内2番目のセグメントのME-Aの結果が参照されて、n番目のフレーム内2番目のセグメントのME-Bのタスクが開始される。
一方のコアで、n番目のフレーム内1番目のセグメントのME-Bのタスクが終了するので、n番目のフレーム内0番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内0番目のセグメントのRの処理のタスクが開始される。このとき、他方のコアで、n番目のフレーム内2番目のセグメントのME-Bのタスクが終了するので、n番目のフレーム内1番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内1番目のセグメントのRの処理のタスクが開始される。
そして、一方のコアで、n番目のフレーム内0番目のセグメントのRの処理のタスクが終了すると、n番目のフレーム内2番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内2番目のセグメントのRの処理のタスクが開始される。
図19は、図18の例において、ME-A<ME-B<Rという順序の優先度を付加しそれを考慮して、上述した符号化処理を実行した場合の例を示している。
一方のコアで、n番目のフレーム内0番目のセグメントのME-Aのタスクが終了され、他方のコアで、n番目のフレーム内1番目のセグメントのME-Aのタスクが終了される。このとき、ME-B[n]の実行依頼があり、優先度が考慮されるので、一方のコアで、n番目のフレーム内0番目のセグメントのME-Aの結果が参照されて、n番目のフレーム内0番目のセグメントのME-Bのタスクが開始される。また、他方のコアで、n番目のフレーム内1番目のセグメントのME-Aの結果が参照されて、n番目のフレーム内1番目のセグメントのME-Bのタスクが開始される。
ここで、ME-Aの結果(動きベクトル情報)がなくても、ME-Bを実行することができるが、ME-Bの結果(動きベクトル情報)がなくては、Rの処理を実行することができない。したがって、一方のコアで、n番目のフレーム内0番目のセグメントのME-Bのタスクが終了すると、n番目のフレーム内2番目のセグメントのME-Bのタスクが開始される。また、他方のコアで、n番目のフレーム内1番目のセグメントのME-Bのタスクが終了し、n番目のフレーム内0番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内0番目のセグメントのRの処理のタスクが開始される。
次に、一方のコアで、n番目のフレーム内2番目のセグメントのME-Bのタスクが終了すると、n番目のフレーム内1番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内1番目のセグメントのRの処理のタスクが開始される。このとき、他方のコアで、n番目のフレーム内0番目のセグメントのRの処理のタスクが終了するので、n番目のフレーム内2番目のセグメントのME-Bの結果が用いられて、n番目のフレーム内2番目のセグメントのRの処理のタスクが開始される。
そして、一方のコアで、n番目のフレーム内1番目のセグメントのRの処理のタスクが終了し、他方のコアで、n番目のフレーム内2番目のセグメントのRの処理のタスクが終了する。したがって、ここで、優先度が一番低く、処理が残っていたn番目のフレーム内0番目のセグメントのME-Aのタスクが開始される。
以上のように、優先度と画面分割を組み合わせた場合も、図18のt3と図19のt4に示されるように、n番目のフレームのRの処理のタスク完了までの時間を短縮することができる。図19のRの処理のタスクを、図18の例よりも早いタイミングで完了させる、すなわち、そのタイミングを制御することができる。
以上により、MEのサブ機能の優先度や画面分割を行った場合も、タスクの優先度実行によって、符号化処理の出力(ビットストリーム)までの時間を短縮、あるいは、不必要に長くならないように制御することができる。したがって、処理時間の揺らぎを小さくすることが可能となる。
以上においては、例えば、符号化方式としてH.264/AVC方式を用いるようにしたが、本発明はこれに限らず、MPEG2などのその他の符号化方式/復号方式を適用することができる。また、上記説明においては、パーソナルコンピュータの例を説明したが、それに限定されず、汎用のコンピュータなどであってもよい。
なお、本発明は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本発明は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本発明は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
[パーソナルコンピュータの構成例]
図20は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図20は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303は、バス304により相互に接続されている。
バス304には、さらに、入出力インタフェース305が接続されている。入出力インタフェース305には、入力部306、出力部307、記憶部308、通信部309、およびドライブ310が接続されている。
入力部306は、キーボード、マウス、マイクロホンなどよりなる。出力部307は、ディスプレイ、スピーカなどよりなる。記憶部308は、ハードディスクや不揮発性のメモリなどよりなる。通信部309は、ネットワークインタフェースなどよりなる。ドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア311を駆動する。
以上のように構成されるコンピュータでは、CPU301が、例えば、記憶部308に記憶されているプログラムを入出力インタフェース305及びバス304を介してRAM303にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU301)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア311に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア311をドライブ310に装着することにより、入出力インタフェース305を介して、記憶部308にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部309で受信し、記憶部308にインストールすることができる。その他、プログラムは、ROM302や記憶部308に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
11 パーソナルコンピュータ, 21 符号化制御ブロック, 22 OS, 31 符号化タスク生成部, 32 リソース負荷検出部, 33 タスク実行順序制御部, 51 パーソナルコンピュータ, 61 符号化制御ブロック, 71 データ分割数決定部, 72 符号化タスク生成部
Claims (6)
- 符号化処理を動き予測、変換量子化、および可変長符号化の機能に分割し、分割された機能に対してタスクを生成し、前記機能毎に設定された優先度を付加するタスク生成手段と、
前記タスク生成手段により生成された前記タスクに付加された前記優先度に基づいて、前記タスクの実行を制御する実行制御手段と
を備える符号化装置。 - 前記タスク生成手段は、生成された前記タスクに、前記符号化処理の一連の流れにおいて、入力側から出力側に向けて高くなるように前記機能毎に設定された前記優先度を付加する
請求項1に記載の符号化装置。 - 前記符号化処理の負荷を監視する負荷監視手段
をさらに備え、
前記実行制御手段は、前記タスクに付加された前記優先度および前記負荷監視手段により監視された前記負荷に基づいて、前記タスクの実行を制御する
請求項2に記載の符号化装置。 - 前記負荷監視手段により監視された前記負荷に基づいて、符号化対象のフレームの分割数を決定する分割数決定手段
をさらに備え、
前記タスク生成手段は、分割された機能に対するタスクを、前記分割数決定手段により決定された前記分割数だけ生成し、前記機能毎に設定された前記優先度を付加する
請求項3に記載の符号化装置。 - 前記タスク生成手段は、前記動き予測の機能を、さらに、複数のサブ機能に分割して、分割されたサブ機能に対してタスクを生成し、前記サブ機能毎に設定された前記優先度を付加する
請求項2に記載の符号化装置。 - タスク生成手段と、実行制御手段とを備える符号化装置の符号化方法において、
前記タスク生成手段が、符号化処理を動き予測、変換量子化、および可変長符号化の機能に分割し、分割された機能に対してタスクを生成し、前記機能毎に設定された優先度を付加し、
前記実行制御手段が、生成された前記タスクに付加された前記優先度に基づいて、前記タスクの実行を制御する
符号化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010044111A JP2011182169A (ja) | 2010-03-01 | 2010-03-01 | 符号化装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010044111A JP2011182169A (ja) | 2010-03-01 | 2010-03-01 | 符号化装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011182169A true JP2011182169A (ja) | 2011-09-15 |
Family
ID=44693217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010044111A Withdrawn JP2011182169A (ja) | 2010-03-01 | 2010-03-01 | 符号化装置および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011182169A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014092435A (ja) * | 2012-11-02 | 2014-05-19 | Denso Corp | 通信システム、当該通信システムを構成する通信装置及び処理装置 |
CN103918270A (zh) * | 2011-09-30 | 2014-07-09 | 英特尔公司 | 用于视频编码管线的系统、方法和计算机程序产品 |
-
2010
- 2010-03-01 JP JP2010044111A patent/JP2011182169A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103918270A (zh) * | 2011-09-30 | 2014-07-09 | 英特尔公司 | 用于视频编码管线的系统、方法和计算机程序产品 |
JP2014529256A (ja) * | 2011-09-30 | 2014-10-30 | インテル コーポレイション | ビデオ符号化パイプラインのためのシステム、方法及びコンピュータプログラム |
EP2761870A4 (en) * | 2011-09-30 | 2016-03-16 | Intel Corp | SYSTEMS, METHODS AND COMPUTER PROGRAM PRODUCTS FOR VIDEO ENCODING DEVICE |
US10602185B2 (en) | 2011-09-30 | 2020-03-24 | Intel Corporation | Systems, methods, and computer program products for a video encoding pipeline |
JP2014092435A (ja) * | 2012-11-02 | 2014-05-19 | Denso Corp | 通信システム、当該通信システムを構成する通信装置及び処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11388405B2 (en) | Content aware scheduling in a HEVC decoder operating on a multi-core processor platform | |
US8705616B2 (en) | Parallel multiple bitrate video encoding to reduce latency and dependences between groups of pictures | |
US8861591B2 (en) | Software video encoder with GPU acceleration | |
US9161034B2 (en) | Scalable multi-thread video decoding | |
US8213518B1 (en) | Multi-threaded streaming data decoding | |
US8031766B2 (en) | Performance adaptive video encoding with concurrent decoding | |
JP5650183B2 (ja) | 複数のフィルタを使用してビデオ・データをフィルタすること | |
US8320448B2 (en) | Encoder with multiple re-entry and exit points | |
US7796692B1 (en) | Avoiding stalls to accelerate decoding pixel data depending on in-loop operations | |
US9258569B2 (en) | Moving image processing method, program and apparatus including slice switching | |
US20140029671A1 (en) | Image encoding or decoding apparatus, system, method, and storage medium for encoding or decoding a plurality of images in parallel | |
US10785485B1 (en) | Adaptive bit rate control for image compression | |
JP2005080123A (ja) | 映像符号化装置、映像符号化制御方法及び映像符号化制御プログラム | |
JP2011182169A (ja) | 符号化装置および方法 | |
US9781439B2 (en) | Combined parallel and pipelined video encoder | |
JP2011066843A (ja) | 並列符号化装置及びプログラム並びに画像データの符号化方法 | |
Gudumasu et al. | Software-based versatile video coding decoder parallelization | |
CN104038766A (zh) | 用于以图像帧为基础执行并行视频编码的装置及其方法 | |
US20060061497A1 (en) | Bit rate conversion apparatus and method | |
US8538178B2 (en) | Image processing device and image processing method | |
Radicke et al. | Many-core HEVC encoding based on wavefront parallel processing and GPU-accelerated motion estimation | |
WO2018205780A1 (zh) | 一种运动估计实现方法及电子设备 | |
US20160117796A1 (en) | Content Adaptive Decoder Quality Management | |
US9092790B1 (en) | Multiprocessor algorithm for video processing | |
JP2008172545A (ja) | 画像符号化・復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130507 |