(57)【要約】【課題】プロセッサが有するコア毎の処理負担を均等にして、各コアのスループットを向上させる。【解決手段】動画像処理装置１００は、コアを複数個有するＣＰＵ１０１と、入力ストリームのピクチャを、均等な画像領域毎に分割する分割部１１２と、分割された画像領域それぞれを、コア毎に割り当てる割当部１１３と、割り当てた画像領域のデコード及びスケーリングを、各コアのそれぞれが実行するよう制御する制御部１１４と、を備える。【選択図】        図１
2010109572.tif 000002
【特許請求の範囲】
【請求項１】
コアを複数個有するプロセッサと、
動画像データの画面情報を、均等な画像領域毎に分割する分割手段と、
分割された前記画像領域を、前記コア毎に割り当てる割当手段と、
割り当てた前記画像領域のデコード及びスケーリングを、前記各コアのそれぞれが実行するよう制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記分割手段は、デコード及びスケーリングが可能な画像領域単位で分割すること、
を特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記制御手段による制御により、前記各コアが割り当てられた前記画像領域に対して行うスケーリング手法として、他の前記コアに割り当てられた前記画像領域を参照せずに実行可能なスケーリング手法を用いること、
を特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記制御手段は、前記画像領域のエンコードを各コアが実行するように制御すること、
を特徴とする請求項２又は３に記載の画像処理装置。
【請求項５】
前記分割手段は、前記動画像データのデコード可能な最小の画像サイズ、前記動画像データのスケーリング可能な最小の画像サイズ、前記動画像データのエンコード可能な最小の画像サイズによる最小公倍数の整数倍となる画像サイズの画像領域に、前記動画像データを分割すること、
を特徴とする請求項４に記載の画像処理装置。
【請求項６】
入力処理された前記動画像データの、画面情報毎に、他の画像領域の画素値を参照せずに符号化可能なＩピクチャであるか否かを判定する判定手段をさらに備え、
分割手段は、Ｉピクチャが含まれていると判断した場合に、前記画像領域毎に分割を行なわず、
前記プロセッサは、分割が行われていない前記画面情報に対して、デコード及びスケーリングを行うこと、
を特徴とする請求項１乃至５のいずれか一つに記載の画像処理装置。
【請求項７】
前記分割手段は、前記動画像データを、前記プロセッサが有するコアの数以下の数で分割すること、
を特徴とする請求項２に記載の画像処理装置。
【請求項８】
コアを複数個有する画像処理装置で実行される画像処理方法であって、
動画像データの画面情報を、均等な画像領域毎に分割する分割ステップと、
分割された前記画像領域を、前記コア毎に割り当てる割当ステップと、
割り当てた前記画像領域のデコード及びスケーリングを、前記各コアのそれぞれが実行するよう制御する制御ステップと、
を含むことを特徴とする画像処理方法。
【請求項９】
前記分割ステップは、さらに、デコード及びスケーリングが可能な画像領域単位で分割すること、
を特徴とする請求項８に記載の画像処理方法。
【請求項１０】
前記制御ステップは、さらに、前記画像領域のエンコードを各コアが実行するように制御すること、
を特徴とする請求項９に記載の画像処理方法。
【請求項１１】
前記分割ステップは、前記動画像データのデコード可能な最小の画像サイズ、前記動画像データのスケーリング可能な最小の画像サイズ、前記動画像データのエンコード可能な最小の画像サイズによる最小公倍数の整数倍となる画像サイズの画像領域に、前記動画像データを分割すること、
を特徴とする請求項１０に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを有するプロセッサを用いて動画像データを処理する画像処理装置、及び方法に関するものである。
【背景技術】
【０００２】
近年、動画像データの再生、保管を行うためにＨＤＤを搭載した動画再生装置が普及しつつある。この動画再生装置においては、地上デジタル放送などのコンテンツをＨＤＤに記録し、ユーザの要求に応じてコンテンツの再生を行うことができる。当然ながら、ＨＤＤの容量に制限があるため、保管可能なコンテンツの量に限りがある。
【０００３】
そこで、例えば、地上デジタル放送などのMPEG-2  Video(MPEG-2)のコンテンツの場合、圧縮効率の良いH.254フォーマットに変換することで、容量を削減できる。また、さらに容量を小さくしたい場合は、ＳＤ解像度など解像度を小さくすることも考えられる。このような変換処理は、ＣＰＵに対してかなり処理負担が大きく、時間が掛かる処理である。
【０００４】
一方、最近ではＣＰＵの性能向上のために、マルチコアなど複数のコアを搭載する傾向にある。現在では２〜４個のコアを搭載することが主流になっているが、将来４個よりさらに多いコアを搭載することが予想される。
【０００５】
このようにマルチコアプロセッサ上で、ソフトウェアによるトランスコードを行う場合に、効率的に処理を行うためには、複数のコアそれぞれを有効に利用して、トランスコードを行うことが重要になる。このために、スレッドの分け方が重要になるが、単にスレッドに分けただけでは、効率よくコアに仕事をさせることができない。
【０００６】
トランスコーダに適用されるスレッドの分割手法としては、エンコーダやデコーダなどのモジュール単位でスレッドに分ける技術がよく用いられている。しかしながら、モジュール単位でスレッドを分割する手法の場合、モジュール毎に行う処理が異なるため、スレッドごとの処理量が大きく異なる。このため、コア毎の処理負担が異なることになり、効率的にコアを利用することができない。
【０００７】
ところで、コア毎に処理負担を均等にする技術としては、特許文献１に記載された技術がある。特許文献１の技術は、デコーダの数でピクチャをスライスし、スライスしたピクチャをデコーダに割り当てることにしている。これにより、各デコーダの処理負担を均等にしている。
【０００８】
【特許文献１】特開２００６−３１９９４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記の特許文献１の従来技術は、デコード（一つのモジュール）を複数のデコーダで均等に分担する技術であり、トランスコードなど、複数のモジュール（例えば、デコード、スケールなど）が必要な場合まで考慮されていない。このため、特許文献１の技術を用いても、複数のモジュールによる処理が必要な場合には、従来通りモジュール単位でコアを割り当てることしかできないという問題がある。
【００１０】
本発明は、上記に鑑みてなされたものであって、マルチコアプロセッサ上の処理のスループットを向上させる画像処理装置、及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明にかかる画像処理装置は、コアを複数個有するプロセッサと、動画像データの画面情報を、均等な画像領域毎に分割する分割手段と、分割された前記画像領域を、前記コア毎に割り当てる割当手段と、割り当てた前記画像領域のデコード及びスケーリングを、前記各コアのそれぞれが実行するよう制御する制御手段と、を備えることを特徴とする。
【００１２】
また、本発明にかかる画像処理方法は、コアを複数個有する画像処理装置で実行される画像処理方法であって、動画像データの画面情報を、均等な画像領域毎に分割する分割ステップと、分割された前記画像領域を、前記コア毎に割り当てる割当ステップと、割り当てた前記画像領域のデコード及びスケーリングを、前記各コアのそれぞれが実行するよう制御する制御ステップと、を含むことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、マルチコアプロセッサ上の処理のスループットを向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかる画像処理装置、及び方法の最良な実施の形態を詳細に説明する。本実施の形態では、画像処理装置を動画処理装置に適用した例について説明するが、ＰＣなど画像データの処理が可能な装置であれば良く、さまざまな装置に適用することができる。
【００１５】
（第１の実施の形態）
図１は、第１の実施の形態にかかる動画像処理装置１００の構成を示すブロック図である。図１に示すように、動画像処理装置１００は、ＣＰＵ１０１、ノースブリッジ１２、メインメモリ１３、グラフィクスコントローラ１４、サウスブリッジ１５、ＢＩＯＳ−ＲＯＭ１６、ハードディスクドライブ（ＨＤＤ）１７、光ディスクドライブ（ＯＤＤ）１８、デジタルＴＶ放送チューナ１９、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）２０およびネットワークコントローラ２１等を備える。
を備えている。
【００１６】
ノースブリッジ１２は、ＣＰＵ１０１のローカルバスとサウスブリッジ１５との間を接続するブリッジデバイスである。また、ノースブリッジ１２は、メインメモリ１３をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ１２は、ＡＧＰ（Accelerated  Graphics  Port）バスなどを介してグラフィクスコントローラ１４との通信を実行する機能も有している。
【００１７】
グラフィクスコントローラ１４は、動画像処理装置１００のディスプレイモニタとして使用されるＬＣＤ３を制御する表示コントローラである。このグラフィクスコントローラ１４はビデオメモリ（ＶＲＡＭ）１４Ａに書き込まれた画像データからＬＣＤ３に送出すべき表示信号を生成する。
【００１８】
サウスブリッジ１５は、ＬＰＣ（Low  Pin  Count）バス上の各デバイス、およびＰＣＩ（Peripheral  Component  Interconnect）バス上の各デバイスを制御する。また、サウスブリッジ１５は、ＨＤＤ１７、ＯＤＤ１８を制御するためのＩＤＥ（Integrated  Drive  Electronics）コントローラを内蔵している。さらに、サウスブリッジ１５は、デジタルＴＶ放送チューナ１９を制御する機能、およびＢＩＯＳ−ＲＯＭ１６をアクセス制御するための機能も有している。
【００１９】
光ディスクドライブ（ＯＤＤ）１８は、ビデオコンテンツが格納されたＤＶＤなどの記憶メディアを駆動するためのドライブユニットである。デジタルＴＶ放送チューナ１９は、デジタルＴＶ放送番組のような放送番組データを外部から受信するための受信装置である。
【００２０】
ＥＣ／ＫＢＣ２０は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）４およびタッチパッド７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ２０は、ユーザによるパワーボタン５の操作に応じて動画像処理装置１００を電源オン／オフする機能を有している。さらに、ＥＣ／ＫＢＣ２０は、ユーザによるＴＶ起動ボタン６Ａ、ＤＶＤ起動ボタン６Ｂの操作に応じて、動画像処理装置１００を電源オンすることもできる。
【００２１】
ネットワークコントローラ２１は、ネットワークを介して他の通信装置と通信を実行する通信回路とする。本実施の形態にかかるネットワークコントローラ２１は、ネットワークを介して接続された通信装置から入力された入力ストリームを受信処理（換言すれば入力処理）する。
【００２２】
なお、本実施の形態は、動画像データの入力処理を、ネットワークを介した入力処理に制限するものではなく、ＨＤＤ１７からの読み出しや、デジタルＴＶ放送チューナ１９による受信処理等であってもよい。
【００２３】
ＨＤＤ１７は、各種ソフトウェア及びデータを格納する記憶装置である。ＨＤＤ１７は、ＯＳや動画像処理アプリケーションを記憶している。そして、動画像処理装置１００の起動時に、ＣＰＵ１０１の制御により、動画像処理アプリケーションがメインメモリ１３上に展開される。
【００２４】
メインメモリ１３は、後述するＣＰＵ１０１の作業領域として用いられる。そして、動画像処理装置１００の起動時には、ＣＰＵ１０１の制御により、動画像処理アプリケーション１５０が、メインメモリ１３上に展開される。
【００２５】
動画像処理アプリケーション１５０は、入力された動画像データである入力ストリームに対してフォーマットの変換処理を行い、出力ストリームを生成するためのソフトウェアとする。本実施の形態においては、入力ストリームのフォーマットを、ＭＰＥＧ−２とし、出力ストリームのフォーマットを、Ｈ．２６４とする。なお、本実施の形態は、変換元のフォーマットをＭＰＥＧ−２に、変換先のフォーマットをＨ．２６４に制限するものではなく、変換元及び変換先のフォーマットとして、様々なフォーマットを用いて良い。
【００２６】
また、動画像処理アプリケーション１５０は、入力ストリームから出力ストリームを生成する際に、解像度変換を行うものとする。本実施の形態は、１４４０×１０８０画素のＭＰＥＧ−２としの入力ストリームから、７２０×４８０画素のＨ．２６４の出力ストリームを生成する場合について説明する。なお、本実施の形態は、入力ストリーム及び出力ストリームの画素数を制限するものではなく、フォーマット等に基づく様々な画素数の入力ストリーム及び出力ストリームに適用できる。
【００２７】
ＣＰＵ１０１は、第１コア１０２と、第２コア１０３と、第３コア１０４と、第４コア１０５と、第５コア１０６と、第６コア１０７と、を備えたマルチコアプロセッサとする。ＣＰＵ１０１は、動画像処理装置１００の動作を制御するために設けられたプロセッサとする。本実施の形態においては、これらのコアを用いて均等に処理を分担させるようにする。なお、本実施の形態においては、６個のコアを備えるものとするが、６個に制限するものではなく、複数個コアを備えていればよい。
【００２８】
また、ＣＰＵ１０１は、ＨＤＤ１７に格納された、オペレーティングシステム（ＯＳ）および動画像処理アプリケーション１５０のような各種アプリケーションプログラムを、メインメモリ１３にロードした後、ＯＳ及び各種アプリケーションプログラムを実行する。
【００２９】
そして、ＣＰＵ１０１は、メインメモリ１３上に展開された動画像処理アプリケーション１５０との協働により、第１コア１０２上に、制御部１１４と、分割部１１２と、割当部１１３と、特定部１１１と、判定部１１５と、の各機能部を実現すると共に、他のコアによる各動画処理を実現する。
【００３０】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１６に格納されたＢＩＯＳ（Basic  Input  Output  System）も実行する。ＢＩＯＳはハードウェア制御のためのプログラムである。
【００３１】
以上の構成を備えた動画像処理装置１００が、入力ストリームを出力ストリームにトランスコードする。次にトランスコードに必要な構成（モジュール）について説明する。
【００３２】
図２は、トランスコーダ２００の構成を示したブロック図とする。図２に示すように、トランスコーダ２００は、モジュールとしてデコーダ２０１、スケーラ２０２、及びエンコーダ２０３を備えている。
【００３３】
デコーダ２０１は、入力ストリームに対して復号化処理を施して、元の動画像データを抽出するモジュールとする。また、デコーダ２０１は、圧縮された動画像データの復元や、暗号の解読などを行ってもよい。
【００３４】
図３は、本実施の形態にかかる動画像処理装置１００における、デコード処理単位であるスライスを示した図である。図３に示すように、本実施の形態にかかる動画像処理装置１００は、デコーダの処理単位を、マクロブロックライン（以下、ＭＢラインとする）毎とする。つまり、本実施の形態にかかる動画像処理装置１００が入力処理する入力ストリームは、ＭＰＥＧ−２とした。このＭＰＥＧ−２は、地上デジタル放送に用いられるビデオコーデックの種類である。そして、ＭＰＥＧ−２の規格においては、１マクロブロックが１６×１６画素と、１ＭＢラインが高さ１６画素×表示領域の横幅と、規定されている。そして、ＭＰＥＧ−２では、１ＭＢラインに独立して処理することが可能である。このため、動画像処理装置１００は、入力ストリームに対して、高さ１６画素単位で処理を行うことが可能となる。ただし、ＭＢＡＦＦ構造の場合は規格上２ＭＢラインで処理する必要がある。この場合、動画像処理装置１００は、高さ２ＭＢライン（３２画素）単位で並列処理を行うことができる。
【００３５】
また、本実施の形態の出力ストリームはＨ．２６４としたが、このＨ．２６４もＭＰＥＧ−２と同様に、基本的に１ＭＢライン単位で処理を可能である。
【００３６】
図２に戻り、スケーラ２０２は、デコード処理が行われた後の動画像データに対して、スケーリングを行う。スケーリングとしては、フレームレートの変更、解像度の変更、カラーフォーマットの変更などいずれか一つ以上の処理を含むものとする。
【００３７】
エンコーダ２０３は、スケール変更処理後の動画像データに対して、符号化処理を施す。行う処理としては、動画像データの圧縮や暗号化などを含むものとする。
【００３８】
本実施の形態にかかる動画像処理装置１００は、上述したデコーダ２０１、スケーラ２０２及びエンコーダ２０３で示した各モジュールの処理を、動画像処理アプリケーション１５０により、ＣＰＵ１０１の各コアで実行される。
【００３９】
ところで、マルチコアプロセッサの各コアで並列処理をするには各処理が独立性を確保できなければならない。このため、従来のトランスコーダにおいては、上記のモジュール単位でスレッドを分割する技術が用いられていた。しかしながら、モジュール単位の並列処理を行う場合だと、モジュールに応じて処理量が大きく異なるため、バランスが悪くなり効率的に各コアを利用することができない。特に入出力画像のサイズによって大きな影響を受ける。
【００４０】
そこで、本実施の形態にかかる動画像処理装置１００においては、１ピクチャを、動画像処理を行うコアの数で分割し、分割した動画像データに対して各コアがデコード、スケール及びエンコード処理を行うこととした。これにより、各コアの処理負担が均等になり、効率的にコアを利用することが可能となる。
【００４１】
また、本実施の形態にかかる動画像処理装置１００では、スケーリングに平均画素法を適用する。平均画素法は、入力ストリームの画像サイズの高さと、スケール後の出力ストリームの画像サイズの高さとの最小公倍数をとり、最小公倍数の高さの画像データを生成した後、出力ストリームの画像サイズになるように所定の領域毎に平均値を求めることで、出力ストリームを生成する手法である。当該平均画素手法を用いることで、分割した後の入力ストリームの画像サイズと、スケーリング後で一つのピクチャに結合する前の出力ストリームの画像サイズと、に基づいて、スケーリングを行うことが可能になる。
【００４２】
そして、本実施の形態にかかる動画像処理装置１００は、トランスコードで用いるスケーリングを、平均画素（スーパーサンプリング）法に特化したものとする。当該手法を適用することで、分割された他の領域の画像データを参照せずにスケーリングを行うことができる。
【００４３】
なお、他のスケール（例えばバイリニア法、バイキュービック法）手法は、対象画素に対してスケーリングする際に、当該対象画素の１画素上の画素値（分割された他の領域の画像データの画素値）が必要であり、並列処理の独立性を確保できないために適用できない。しかしながら、並列処理の独立性が確保可能、換言すれば分割された他の領域の画像データを参照せずに実行可能なスケーリング手法が提案された場合、当該スケーリング手法を適用しても良い。
【００４４】
図４は、平均画素法を用いた場合のスケーリングを行うマクロブロックライン単位を示した説明図である。図４に示す例では、幅Ｗ画素×高さＮ画素（Ｉiライン数のＭＢライン）で分割された入力ストリームに対してスケーリングを行い、幅Ｘ画素×高さＬ画素（Ｉoライン数のＭＢライン）の出力ストリームを生成している。
【００４５】
このように、入力ストリーム及び出力ストリームの画像サイズが予め定められている。そこで、特定部１１１がスケーリング対象として高さＮ画素（Ｉiライン数のＭＢライン）単位と特定し、分割部１１２が特定された高さＮ画素（Ｉiライン数のＭＢライン）に分割することで、分割された画像領域毎にスケーリングが行われるようになる。そして、図４に示すように入力ストリームで高さＮ画素毎にスケーリングを行う場合、入力ストリームの画像サイズの高さＨ画素をＮ画素で除した数のコアで並列処理を行うことができる。
【００４６】
そして、各コア（第２コア１０３〜第６コア１０７）に処理を分担させるため及び実際に動画像データについて処理を行うための構成として、本実施の形態にかかる動画像処理装置１００においては、図１に示すＣＰＵ１０１の第１コア１０２内に、特定部１１１と、制御部１１４と、分割部１１２と、割当部１１３と、判定部１１５と、を備えている。
【００４７】
まず、特定部１１１が、初期化処理の際に入力ストリームの分割数（換言すれば並列処理数）、及び何ＭＢライン毎に入力ストリームを分割するかを特定する。本実施の形態にかかる特定部１１１は、当該分割数及びＭＢライン数を、ＭＢラインの画素数、コアの数、入力ストリームの画像サイズの高さ、出力ストリームの画像サイズの高さ、出力ピクチャ構造（ＭＢＡＦＦ(MacroBlock  Adaptive  FrameField)か否か）、及びポスト処理の有無に基づいて特定する。
【００４８】
なお、ＭＢラインの画素数、入力ストリームの画像サイズの高さ、及び出力ストリームの画像サイズの高さは、分割可能なＭＢラインの最小単位数を特定するために用いられる。このうち、ＭＢラインの高さは、デコード及びエンコード可能な最小の領域を表している。
【００４９】
本実施の形態では、ＭＰＥＧ−２及びＨ．２６４の両方のＭＢのサイズを１６画素×１６画素と仮定する。この場合、ＭＰＥＧ−２及びＨ．２６４の両方のＭＢラインの高さが１６画素となる。この場合、最も小さなスライスの高さが１６画素、またはＭＢＡＦＦの場合には３２画素となる。
【００５０】
さらに、ＭＰＥＧ−２の入力ストリームの画像サイズを幅１９２０×高さ１４４０画素と、Ｈ．２６４の出力ストリームの画像サイズを幅７２０×４８０画素と仮定する。この場合、高さ３画素の入力ストリーム毎にスケーリングを行うことで、高さ１画素の出力ストリームを生成できる。つまり、３画素と１画素との最小公倍数である３画素単位であれば、平均画素法によるスケーリングが可能となる。つまり、本実施の形態では、高さ３画素が、スケーリング可能な最小の領域となる。
【００５１】
この場合、特定部１１１は、非ＭＢＡＦＦ構造の場合、（ＭＢラインの高さを表す画素数）１６と、（入力ストリームの高さを表す画素数）３と、（出力ストリームの高さを表す画素数）１との最小公倍数として、４８を算出する。つまり、入力ストリームの高さ４８画素（３ＭＢライン）の整数倍単位で分割すれば、適切にデコード、スケーリング、エンコードを行うことが可能となる。つまり、デコード、スケーリング、及びエンコードが可能な領域単位での分割が可能となる。
【００５２】
このように、デコード可能とする入力ストリームの画像サイズ（例えば画像の高さ）、スケーリングを可能とする最小の画素サイズ（例えばマクロブロックラインの高さ）、エンコード可能とする出力ストリームの画像サイズ（例えば画像の高さ）の最小公倍数が算出される。そして、算出した最小公倍数の整数倍の画像サイズが、分割する画像サイズとして特定される。
【００５３】
また、ＭＢＡＦＦ構造の場合、特定部１１１は、（２ラインのＭＢラインの高さを表す画素数）３２と、（入力ストリームの高さを表す画素数）３と、（出力ストリームの高さを表す画素数）１との最小公倍数として、９６を算出する。なお、以下に示す例では、非ＭＢＡＦＦ構造の場合について説明するが、同様の処理をＭＢＡＦＦ構造の場合にも適用できる。
【００５４】
なお、ポスト処理の有無は、ポスト処理用にコアを確保するか否かを判断するために必要となる。本実施の形態においては、ポスト処理を行うものとする。
【００５５】
さらに、特定部１１１は、各コアの処理負担が均等になるように、入力ストリームを分割する、入力ストリームの高さ４８画素（３ラインのＭＢライン）のＮ倍数を特定する。本実施の形態では、第１コア１０２で、入力ストリームの分割処理、ポスト処理及びビットストリーム化処理を行い、第２コア１０３〜第６コア１０７で分割された入力ストリームに対してデコード、スケール及びエンコードを行うこととする。このため、５個のコアに均等に処理負担になるように、特定部１１１がＮ倍数を特定する。
【００５６】
そこで、本実施の形態の特定部１１１は、入力ストリームの１ピクチャを、２８８画素（６ＭＢラインであって４８画素×６）毎に、５個に均等に分割すると特定する。これにより、第２コア１０３〜第６コア１０７のそれぞれに対して、入力ストリームの１ピクチャについて、６ライン分のＭＢラインが割り当てられることになる。
【００５７】
なお、本実施の形態とコアの数が異なり、コア毎に均等に入力ストリームを分割できない場合、例えば、いくつかのコアに対して高さ４８画素×６の入力ストリームを割り当て、他のコアに対して高さ４８画素×５の入力ストリームを割り当てる等をしてもよい。つまり、各コアの処理負担がなるべく均等に掛かるようにするだけでも、目的とする効果は達せられる。
【００５８】
また、分割された入力ストリームが各コアに割り当てられる以上、特定部１１１が特定する入力ストリームの分割数は、ＣＰＵ１０１の総コア数以下となる。
【００５９】
ただし、動画像処理装置１００は、全てのピクチャをＭＢライン単位で分割するのではなく、マクロブロックがインターブロックの場合には、フレーム間で予測する必要があるので分割しないものとする。
【００６０】
そこで、判定部１１５が、ピクチャ毎に、Ｉ(Intra)ピクチャであるか否かを判定する。そして、Ｉピクチャ以外（例えばＰピクチャ、Ｂピクチャ）の場合に分割し、Ｉピクチャの場合に分割しないで処理を行うものとする。Ｉピクチャは、従来通りの処理を行うものとして説明を省略する。Ｉピクチャとは、他のフレームと依存関係がなく、他のフレームを参照せずに符号化可能なピクチャとする。
【００６１】
また、判定部１１５は、ピクチャの先頭や、ＭＢラインの先頭の検出等も行うものとする。
【００６２】
そして、分割部１１２は、入力ストリームの１ピクチャ毎に、ＭＢライン単位、且つ均等な領域で分割する。本実施の形態にかかる分割部１１２は、特定部１１１で特定されたように、１ピクチャを６ＭＢライン毎に５個に分割する。そして、分割された数毎に、各コアで動画像データに関する並列処理が行われる。
【００６３】
割当部１１３は、分割部１１２により分割された入力ストリームを、各コアに割り当てる。本実施の形態では、入力ストリームの１ピクチャを６ＭＢライン毎に５個に分割されるため、割当部１１３は、分割された６個の６ＭＢラインの動画像データを、第２コア１０３〜第６コア１０７のそれぞれに割り当てる。そして、第２コア１０３〜第６コア１０７は、割り当てられた動画像データに対して、デコード、スケーリング及びエンコード処理まで行う。このように、本実施の形態は、モジュール単位で各コアに処理を割り当てるのではなく、動画像データのＭＢライン単位で各コアが複数のモジュール処理を行うこととする。このように、割当部１１３は、処理負担が均等になるよう、各コアに対して、分割された入力ストリームのピクチャを割り当てる。
【００６４】
なお、本実施の形態は、６ＭＢライン毎に５個に分割した例について説明したが、このような分割に制限するものではなく、ＣＰＵが備えるコアの数や、入力ストリームの画像サイズ、出力ストリームの画像サイズ等に基づいて、適切なＭＢライン数毎に入力ストリームを分割及び割当を行うものとする。
【００６５】
制御部１１４は、割り当てた入力ストリームを各コア（第２コア１０３〜第６コア１０７）がデコード、スケーリング及びエンコードを実行するように、各コア（第２コア１０３〜第６コア１０７）を制御する。
【００６６】
また、制御部１１４は、第２コア１０３〜第６コア１０７でエンコード処理まで行われた後の動画像データに対して、ポスト処理４０６及びビットストリーム化４０７を行う。これにより、出力ストリームの生成が終了する。
【００６７】
図５は、動画像処理装置１００による１ピクチャに対する処理の概念を示した図である。図５に示すように、第１コア１０２が１ピクチャを分割した後、分割した入力画像データ毎にスレッドが起動し、各コアが起動した各スレッドの処理を行う。
【００６８】
図５に示した例では、第１スレッド４０１を第２コア１０３が処理し、第２スレッド４０２を第３コア１０４が処理し、第３スレッド４０３を第４コア１０５が処理し、第４スレッド４０４を第５コア１０６が処理し、第５スレッド４０５を第６コア１０７が処理する。そして、その他の処理（分割処理４０８、ポスト処理４０６及びビットストリーム化４０７）を第１コア１０２が担当する。
【００６９】
このように、各スレッドを各コアが処理を行うことで、各コアの処理負担を均等にすることが可能となり、効率的なコアの利用を可能とする。
【００７０】
次に、以上のように構成された本実施の形態にかかる動画像処理装置１００における出力ストリームを出力するまでの処理について説明する。図６は、本実施の形態にかかる動画像処理装置１００における上述した処理の手順を示すフローチャートである。
【００７１】
まず、動画像処理装置１００は、初期化処理を行う（ステップＳ６０１）。初期化処理はトランスコーダの初期化を意味し、動画像処理アプリケーション１５０を起動した際に１回だけ行う。
【００７２】
そして、初期化処理の際、特定部１１１が、入力ストリームの分割数、及び何ＭＢライン毎に入力ストリームのピクチャを分割するかを特定する（ステップＳ６０２）。そして、分割数のスレッドが起動し、各スレッドについて並列処理が行われる。
【００７３】
次に、ＣＰＵ１０１が、動画像処理装置１００の各構成（例えば、ネットワークコントローラ２１又はデジタルＴＶ放送チューナ１９）が入力ストリームを検出したか否かを判断する（ステップＳ６０３）。入力ストリームを検出しなかったと判断した場合（ステップＳ６０３：Ｎｏ）、処理を終了する。
【００７４】
入力ストリームを検出したと判断した場合（ステップＳ６０３：Ｙｅｓ）、ネットワークコントローラ２１や、デジタルＴＶ放送チューナ１９などの構成が、入力ストリームを入力処理する（ステップＳ６０４）。
【００７５】
その後、判定部１１５が、入力処理された入力ストリームについて、ＭＢラインの先頭を検出する（ステップＳ６０５）。本実施の形態においては、ＭＢライン単位で処理を行うため、ＭＢラインの先頭を検出する。そして、所定の数のＭＢラインを検出することで、各ピクチャを特定できる。
【００７６】
そして、判定部１１５が、特定されたピクチャのピクチャタイプが、Ｉピクチャか否かを判定する（ステップＳ６０６）。
【００７７】
判定部１１５が、Ｉピクチャであると判定した場合（ステップＳ６０６：Ｙｅｓ）、通常通り、ＣＰＵ１０１の各コアを用いて、デコード（ステップＳ６０７）、スケーリング（ステップＳ６０８）及びエンコード（ステップＳ６０９）を行う。その後、判定部１１５が、ポスト処理が必要か否か判定する（ステップＳ６１０）。必要ないと判定した場合（ステップＳ６１０：Ｎｏ）、特に処理を行わない。一方、必要と判定した場合（ステップＳ６１０：Ｙｅｓ）、所定のコアが、ポスト処理を行う（ステップＳ６１１）。なお、ステップＳ６０７〜Ｓ６１１までの処理は、モジュール単位で各コアに処理を割り当てる等を行うものとする。
【００７８】
一方、判定部１１５が、Ｉピクチャでないと判定した場合（ステップＳ６０６：Ｎｏ）、分割部１１２が、各ピクチャを、特定部１１１により特定されたＭＢライン単位で分割する（ステップＳ６１２）。そして、分割したＭＢライン単位でスレッドを起動し、スレッド毎にデコード、スケーリング、エンコード処理を各コアに行わせることになる。その後、割当部１１３が、分割したＭＢライン毎に、各コアに割り当てる（ステップＳ６１３）。
【００７９】
そして、制御部１１４が、割り当てた入力ストリームを各コア（第２コア１０３〜第６コア１０７）がデコード、スケーリング及びエンコードを実行するように制御する。これにより、各コアが、割り当てられたＭＢライン毎に、デコード、スケーリング、及びエンコードを行う（ステップＳ６１４）。なお、詳細な処理は、図５で示した通りなので説明を省略する。
【００８０】
その後、判定部１１５が、ポスト処理が必要か否かを判定する（ステップＳ６１５）。必要ないと判定した場合（ステップＳ６１５：Ｎｏ）、ポスト処理を行わない。一方、必要と判定した場合（ステップＳ６１５：Ｙｅｓ）、各コアでエンコード処理まで終了した後に、第１コア１０２の制御部１１４が、ポスト処理を行う（ステップＳ６１６）。これにより、出力ストリームの生成が終了する。なお、ポスト処理としては、ポスト処理は、主にデブロッキング処理とするが、他に画質改善やフィルタ処理等を含めても良い。
【００８１】
その後、ネットワークコントローラ２１による出力ストリームの送信や、ＨＤＤ１７に対して出力ストリームを格納するなど、出力ストリームの出力処理を行う（ステップＳ６１７）。
【００８２】
そして、判定部１１５が、入力ストリームに含まれる全てのピクチャの処理が終了したか否かを判定する（ステップＳ６１８）。終了していないと判定した場合（ステップＳ６１８：Ｎｏ）、ステップＳ６０５から処理を開始する。
【００８３】
一方、判定部１１５が、終了したと判定した場合（ステップＳ６１８：Ｙｅｓ）、処理を終了する。
【００８４】
上述した処理手順により、Ｉピクチャ以外の場合に、各コアでデコード、スケーリング及びエンコードの並列処理を行い、その他のピクチャタイプの場合に通常通りの処理を行うことが可能となる。Ｉピクチャ以外の場合に、各コアに複数のモジュール処理を行うことで、各コアの処理負担を均等にすることが可能となる。
【００８５】
また、上述した処理手順においては、スレッド単位でポスト処理を行うことができないため、各コアの処理した後に結合した動画データに対して、第１コア１０２の制御部１１４がポスト処理を行うこととした。その後、結合した動画データに対してビットストリーム化を行い、出力ストリームを生成した。
【００８６】
これに対し、ピクチャタイプがＩピクチャ以外で、ポスト処理を行わない場合、スレッド内でビットストリーム化まで行うことができる。そこで、ポスト処理を行わない場合、ビットストリーム化による出力ストリームの生成まで各スレッド（各コア）で行うものとする。この場合、ビットストリーム化などの処理が第２コア１０３〜第６コア１０７に負担されるため、第２コア１０３〜第６コア１０７と同じぐらいの処理負担になるように、分割可能なＭＢライン数単位のＭＢラインを、第１コア１０２に対して割り当てても良い。
【００８７】
また、本実施の形態の動画像処理装置１００においては、ＣＰＵ１０１の複数コアの場合について説明したが、複数のＣＰＵを備え、各ＣＰＵの処理負担が均等になるように分担しても良い。
【００８８】
このように、各コアに対して、より詳細にＭＢラインを割り当てることで、コアのスループットを上げられ、また入力ストリーム及び出力ストリームの画像サイズなど他の要素によるスレッド効率（並列度）が悪くなる可能性を軽減できる。
【００８９】
なお、本実施の形態は、動画像処理装置１００を用いた並列処理の例を示したものであり、並列処理数は、適宜プロセッサのコア数、MPEGデコード、エンコード、及びスケールパラメータに応じて決定されるものとする。
【００９０】
本実施の形態にかかる動画像処理装置１００においては、ＭＰＥＧデコードと、スケーリングと、エンコードとによる処理を、ＭＢライン単位で並列化することで、処理効率を向上させることができる。
【００９１】
さらに、本実施の形態にかかる動画像処理装置１００においては、トランスコードにおいて、従来通りにモジュール単位で並列処理を行うのではなく、複数のモジュールを含めた上で、分割可能な最小単位数のＭＢライン毎に各コアに割り当て、並列処理を行うことができる。つまり、最小単位数のＭＢライン単位で、各コアに割り当てることで、より細かい粒度で並列処理を設定することが可能となる。これにより、並列処理の自由度が増し、効率的にトランスコードすることができる。
【００９２】
特に分割可能な最小単位数のＭＢライン単位で処理を割り当てることができるため、マルチコア、メニイコアに対して均等な処理負担を行うことが可能となる。また、従来のモジュール単位の並列化した場合に画像サイズが大きい程、各モジュールの処理負担が異なることになっていたが、本実施の形態で示した手法では、画像サイズが大きくなるほど、コア毎の処理負担が異なるものではないため、安定的な並列処理を実現できる。
【００９３】
（変形例）
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【００９４】
（変形例１）
上述した第１の実施の形態において、一つのピクチャをＭＢライン毎に分割して各コアに処理を割り当てる場合について説明した。しかしながら、動画像処理装置１００が、さらに多くのコアがある場合、複数のピクチャに含まれるＭＢラインそれぞれを各コアに割り当て、複数のピクチャの処理を並列化してもよい。この場合、複数のピクチャ単位の処理を並列化することで、ポスト処理による待ち状態のタイムロスを軽減することができる。
【００９５】
（変形例２）
また、上述した第１の実施の形態においては、各コアがデコード、スケーリング及びエンコード処理という３つのモジュールの処理を行うこととしたが、３つのモジュール処理を必ず行う必要があるものではない。例えば、トランスコードではなく再生処理を行うものとして、各コアがデコード、スケーリングの２つのモジュール処理を行うことにしてもよい。
【００９６】
上述した実施の形態にかかる動画像処理装置１００で実行される動画像処理アプリケーション１５０は、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供してもよい。
【００９７】
また、上述した実施の形態にかかる動画像処理装置１００で実行される動画像処理アプリケーション１５０を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施の形態にかかる動画像処理装置１００で実行される動画像処理アプリケーション１５０をインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００９８】
また、上述した実施の形態の動画像処理アプリケーション１５０を、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【図面の簡単な説明】
【００９９】
【図１】第１の実施の形態にかかる動画処理装置の構成を示すブロック図である。
【図２】トランスコーダの構成を示したブロック図とする。
【図３】第１の実施の形態にかかる動画像処理装置における、デコード処理単位であるスライスを示した図である。
【図４】平均画素法を用いた場合のスケーリングを行うマクロブロックライン単位を示した説明図である。
【図５】第１の実施の形態にかかる動画像処理装置による１ピクチャに対する処理の概念を示した図である。
【図６】第１の実施の形態にかかる動画像処理装置における出力ストリームを出力するまでの処理の手順を示すフローチャートである。
【符号の説明】
【０１００】
３  ＬＣＤ
４  ＫＢ
５  パワーボタン
６Ａ  ＴＶ起動ボタン
６Ｂ  ＤＶＤ起動ボタン
７  タッチパッド
１２  ノースブリッジ
１３  メインメモリ
１４  グラフィクスコントローラ
１４Ａ  ＶＲＡＭ
１５  サウスブリッジ
１６  ＢＩＯＳ−ＲＯＭ
１７  ＨＤＤ
１８  ＯＤＤ
１９  デジタルＴＶ放送チューナ
２０  ＥＣ／ＫＢＣ
２１  ネットワークコントローラ
１００  動画像処理装置
１０１  ＣＰＵ
１０２  第１コア
１０３  第２コア
１０４  第３コア
１０５  第４コア
１０６  第５コア
１０７  第６コア
１１１  特定部
１１２  分割部
１１３  割当部
１１４  制御部
１１５  判定部
１５０  動画像処理アプリケーション
【図１】
2010109572.tif 000003
【図２】
2010109572.tif 000004
【図３】
2010109572.tif 000005
【図４】
2010109572.tif 000006
【図５】
2010109572.tif 000007
【図６】
2010109572.tif 000008