(57)【要約】【課題】コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を短縮化する。【解決手段】コーデック指示部である本体部２０は、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求にバッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部３０は、コーデック要求に含まれたリスト情報に基づきバッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みを行う。【選択図】        図３
2012010182.tif 000002
【特許請求の範囲】
【請求項１】
複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部と、
コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めて前記コーデック処理部に発行するコーデック指示部とを有し、
前記コーデック処理部は、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う情報処理装置。
【請求項２】
コーデック指示部は、前記バッファの分散収集リストを作成して、該分散収集リストを前記転送単位で再リスト化して前記バッファリストを作成する請求項１記載の情報処理装置。
【請求項３】
前記コーデック処理部は、前記バッファから読み出したコーデック処理前のデータを、前記複数のコーデックプロセッサに分配してコーデック処理を行う請求項２記載の情報処理装置。
【請求項４】
前記エンコード指示部は、前記コーデック要求としてエンコード要求を発行し、エンコード処理を行う画像データのデータ転送処理において、前記コーデック処理部における前記分配および前記エンコード処理に適したデータ量単位を前記転送単位とする請求項３記載の情報処理装置。
【請求項５】
前記コーデック指示部は、前記エンコード要求に画面分割情報を含めて前記コーデック処理部に発行し、
前記コーデック処理部は、前記エンコード要求が発行されたとき、前記バッファから読み出した画像データを、前記画面分割情報に基づき前記複数のコーデックプロセッサに分割画面毎に分配してエンコード処理を行う請求項４記載の情報処理装置。
【請求項６】
前記コーデック処理部は、前記エンコード処理によって得られた符号化データを記憶するコーデックメモリを有し、
前記コーデック処理部は、前記分割画面毎に前記符号化データを記憶する領域を前記コーデックメモリに設定して、該領域を最大符号発生量のサイズとした請求項５記載の情報処理装置。
【請求項７】
前記コーデック指示部は、前記コーデック要求としてエンコード要求を発行し、前記コーデック処理部でエンコード処理によって得られた符号化データのデータ転送処理において、前記転送単位のデータ量とするために前記符号化データに付加される無効データのデータ量を少なくして転送効率が高くなるように、前記転送単位を決定する請求項３記載の情報処理装置。
【請求項８】
前記コーデック指示部は、前記コーデック要求としてデコード要求を行い、
前記コーデック処理部は、前記デコード要求が発行されたとき、前記バッファからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを前記複数のコーデックプロセッサに分配してデコード処理を行う請求項３記載の情報処理装置。
【請求項９】
前記デコード指示部は、前記デコード処理で得られた画像データのデータ転送において、前記分割画面毎の画像データの転送に適したデータ量単位を前記転送単位とする請求項８記載の情報処理装置。
【請求項１０】
前記コーデック処理部は、前記デコード処理で得られた画像データを、前記分割画面毎に予め設定されているメモリ領域の対応する領域に記憶させて、該記憶された画像データを画像表示領域に対応させて読み出して出力する請求項８記載の情報処理装置。
【請求項１１】
前記コーデック処理部は、前記バッファから読み出されたコーデック処理前のデータをパイプライン処理で前記コーデックプロセッサに供給してコーデック処理を行う請求項３記載の情報処理装置。
【請求項１２】
コーデック指示部によって、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する工程と、
複数のコーデックプロセッサを用いてコーデック処理を行う前記コーデック処理部によって、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う工程と
を具備する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置と情報処理方法に関する。詳しくは、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を短縮化できるようにする。
【背景技術】
【０００２】
従来、画像データのエンコード処理やデコード処理では、例えば１フレーム期間内で処理が可能な集積回路等を用いて、フレーム単位で処理が行われている。図１は、アプリケーションで例えばエンコード要求が行われたときの動作を示している。なお、各フレームは、イントラ予測モードでエンコード処理される。
【０００３】
アプリケーションは、エンコードＥ１要求を行う。デバイスドライバは、メインメモリに記憶されているエンコードＥ１用データの管理処理を行い、エンコードＥ１用データをエンコードハードウェアに転送可能とする。次に、エンコードＥ１用データ転送を行い、エンコードＥ１用データをエンコードハードウェアに転送する。エンコードハードウェアは、エンコードＥ１用データの転送が完了すると、供給されたエンコードＥ１用データのエンコードＥ１処理を行う。デバイスドライバは、エンコードＥ１処理が終了したとき、エンコードＥ１結果データ転送を行い、エンコードＥ１処理で得られたエンコードＥ１結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードＥ１結果取得となる。また、アプリケーションは、エンコードＥ１要求に対してエンコードＥ１結果データが得られたとき、次のエンコードＥ２要求を行う。このように、エンコード要求に対して、エンコード用データの転送処理とエンコード処理およびエンコード結果データの転送処理が順番に行われている。なお、デコード要求に対しても同様に処理を行い、符号化データから画像データが生成されている。
【０００４】
このように、エンコード要求に対して、エンコード用データの転送処理とエンコード処理およびエンコード結果データの転送処理を順番に行うと、エンコード要求からその結果を取得できるまで、例えば３フレーム以上のレイテンシを要してしまう。したがって、リアルタイム処理を行うことができない。
【０００５】
このため、エンコード要求やデコード要求を複数実行可能とする機構（コマンドキューイング）を設けて、エンコード処理やデコード処理を連続的に実行可能とすることも行われている。
【０００６】
図２は、コマンドキューイング処理を示している。アプリケーションは、例えばエンコード処理後、すぐに次のエンコード処理を行うことができるように、エンコード要求をキューイングしておく。
【０００７】
アプリケーションからエンコードＥ１要求が行われると、デバイスドライバは、記憶されている画像データをエンコーダに転送するデータ転送処理を行う。デバイスドライバは、例えばメインメモリに記憶されているエンコードＥ１用データを読み出してエンコーダに転送可能とするためのデータ管理処理を行う。次に、デバイスドライバは、エンコードＥ１用データをエンコードハードウェアのエンコード用フレームバッファＭＡ１に記憶させる。
【０００８】
また、アプリケーションから次のエンコードＥ２要求が行われると、デバイスドライバは、記憶されている画像データをエンコーダに転送するデータ転送処理を行う。データ転送処理では、例えば情報処理装置のメインメモリに記憶されているエンコードＥ２用データを読み出してエンコーダに転送可能とするためのデータ管理処理を行う。次に、デバイスドライバは、エンコードＥ２用データを読み出してエンコードハードウェアの空いているエンコード用フレームバッファＭＡ２記憶させる。以下同様に、アプリケーションからエンコード要求が行われる毎に、エンコードハードウェアの空いているエンコード用フレームバッファに、エンコード用データを記憶させる。
【０００９】
エンコードハードウェアは、エンコード用フレームバッファＭＡ１に記憶されているエンコードＥ１用データをコーデックプロセッサに読み出すエンコードＥ１用データ読出を行う。またエンコードハードウェアは、エンコードＥ１用データのエンコードＥ１処理、エンコードＥ１結果データをエンコード結果用フレームバッファＭＢ１に書き込むエンコードＥ１結果データ書込を行う。
【００１０】
また、エンコードハードウェアは、エンコードＥ１用データの処理と並行してエンコードＥ２用データの処理を行う。すなわち、エンコード用フレームバッファＭＡ２に記憶されているエンコードＥ２用データを他のコーデックプロセッサに読み出すエンコードＥ２用データ読出を行う。さらに、エンコードハードウェアは、エンコードＥ２用データのエンコードＥ２処理、エンコードＥ２結果データをエンコード結果用フレームバッファＭＢ２に書き込むエンコードＥ２結果データ書込を行う。また、他のエンコード用フレームバッファにエンコード用データが記憶されたときは、このエンコード用データの処理も並行して行う。
【００１１】
デバイスドライバは、エンコード結果用フレームバッファＭＢ１にエンコードＥ１結果データが書き込まれたとき、エンコードＥ１用結果データ転送を行い、エンコードＥ１結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードＥ１結果取得となる。
【００１２】
また、デバイスドライバは、エンコード結果用フレームバッファＭＢ２にエンコードＥ２結果データが書き込まれたとき、エンコードＥ２用結果データ転送を並行して行い、エンコードＥ２結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードＥ２結果取得となる。また、他のエンコード結果用フレームバッファにエンコード結果データが書き込まれたとき、エンコード用結果データ転送を並行して行う。
【００１３】
このように、エンコード要求に対する処理を並行して行うことができるので、リアルタイム処理が可能となる。また、デコード要求に対してもエンコード要求と同様な処理を行うことで、リアルタイム処理が可能となる。
【００１４】
また、処理を並行して行う方法として、例えば特許文献１では、１画面を複数画面に分割して、分割画面毎に符号化を行い得られた符号化データを１画面分統合することが行われている。また、特許文献２では、複数の映像ストリームを選択して、選択された映像ストリームの復号処理を並列に実行することが行われている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】２００４−３５６８５７号公報
【特許文献２】２００９−０４４５３７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところで、キューイング処理でエンコード処理やデコード処理をリアルタイムに行うようにした場合、エンコード処理前（デコード処理前）のデータとエンコード処理後（デコード処理後）のデータをフレームバッファに蓄積しなければならない。したがって、多くのメモリリソースが必要となる。また、バッファの管理を行う必要があるから処理が複雑となってしまう。
【００１７】
さらに、エンコード要求やデコード要求のキューイングを行ったとき、キューイングされている要求のキャンセルを行うときには、キュー内の該当コマンドを消去したのち順序を繰り上げる処理や繰り上げ処理に伴うバッファ管理も合わせて行う必要がある。このため、キャンセル機構が複雑となる。
【００１８】
また、特許文献１や特許文献２のようにコーデック処理を並列に行う場合、メインメモリからコーデック処理前のデータの読み出しやコーデック処理後のデータのメインメモリへの書き込みを高速に行わないと、コーデック結果が得られるまでの時間が長くなる。
【００１９】
そこで、この発明では、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる情報処理装置と情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
この発明の第１の側面は、複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部と、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めて前記コーデック処理部に発行するコーデック指示部とを有し、前記コーデック処理部は、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う情報処理装置にある。
【００２１】
この発明においては、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタをコーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、このバッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。例えば、コーデック処理前やコーデック処理後のデータが記憶されるバッファの分散収集リストが作成されて、この分散収集リストが、転送単位で再リスト化されてバッファリストが作成される。
【００２２】
コーデック指示部から発行されるコーデック要求がエンコード要求であるとき、このエンコード要求に画面分割情報が含まれる。コーデック処理部は、画面分割情報に基づき複数のコーデックプロセッサに分割画面毎にコーデック処理前のデータを分配してエンコード処理を行う。また、転送単位は、分配とエンコード処理の少なくともいずれかに適したデータ量単位とする。例えばエンコード処理によって得られた符号化データのデータ転送処理において、転送単位のデータ量とするために符号化データに付加される無効データのデータ量を少なくして転送効率が高くなるように決定する。さらにコーデック処理部は、エンコード処理によって得られた符号化データを記憶するコーデックメモリに対して、分割画面毎に符号化データを記憶する領域を予め設定して、この領域を最大符号発生量のサイズとする。
【００２３】
コーデック指示部から発行されるコーデック要求がデコード要求であるとき、コーデック処理部は、バッファからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを複数のコーデックプロセッサに分配してそれぞれデコード処理を行う。また、転送単位は、分割画面毎の画像データの転送に適したデータ量単位とする。
さらに、コーデック処理部は、デコード処理で得られた画像データを、分割画面毎に予め設定されているメモリ領域の対応する領域に記憶させて、この記憶された画像データを画像表示領域に対応させて読み出して出力する。
【００２４】
この発明の第２の側面は、コーデック指示部によって、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する工程と、複数のコーデックプロセッサを用いてコーデック処理を行う前記コーデック処理部によって、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う工程とを具備する情報処理方法にある。
【発明の効果】
【００２５】
この発明によれば、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、バッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部では、コーデック要求に含まれたリスト情報に基づきバッファリストが取得されて、このバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みが行われる。このように、コーデック処理前とコーデック処理後の少なくともいずれかのデータの転送が高速に行われることから、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる。
【図面の簡単な説明】
【００２６】
【図１】エンコード要求が行われたときの従来の動作を説明するための図である。
【図２】コマンドキューイング処理を示した図である。
【図３】情報処理装置の構成を示す図である。
【図４】オペレーティングシステムを構成するプログラムの一部を示す図である。
【図５】エンコード時のパイプライン処理を示す図である。
【図６】エンコード時におけるオペレーティングシステムおよびコーデック処理部で行われる処理の流れを示した図である。
【図７】分散収集リストとバッファリストおよびリスト情報を説明するための図である。
【図８】コーデック処理部のデータ転送管理の具体例を示した図である。
【図９】エンコード処理動作の制御シーケンスを示した図である。
【図１０】４Ｋサイズ画像のエンコード処理を示す図である。
【図１１】４Ｋサイズ画像の他のエンコード処理を示す図である。
【図１２】デコード時のパイプライン処理を示す図である。
【図１３】デコード時におけるオペレーティングシステムおよびコーデック処理部で行われる処理の流れを示した図である。
【図１４】分散収集リストとバッファリストおよびリスト情報を説明するための図である。
【図１５】コーデック処理部のデータ転送管理の具体例を示した図である。
【図１６】デコード処理動作の制御シーケンスを示した図である。
【図１７】画像データの出力順序と表示画像との関係を例示した図である。
【発明を実施するための形態】
【００２７】
以下、発明を実施するための形態について説明する。なお、説明は以下の順序で行う。
１．情報処理装置の構成
２．第１の実施の形態（エンコード動作を行う場合）
２−１．エンコード動作におけるデータ転送
２−２．エンコード処理
２−３．データ転送管理の具体例
３．第２の実施の形態（デコード動作を行う場合）
３−１．デコード動作におけるデータ転送
３−２．デコード処理
３−３．データ転送管理の具体例
３−４．デコード結果の出力処理
【００２８】
＜１．情報処理装置の構成＞
図３は、情報処理装置１０の構成を示している。情報処理装置１０は、例えば、一般的なワークステーションやパーソナルコンピュータである。情報処理装置１０は、コーデック指示部としての動作を行う本体部２０と、複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部３０を有している。
【００２９】
本体部２０は、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示したバッファリストを作成する。また、本体部２０は、コーデック要求にバッファリストを取得するためのリスト情報を含めてコーデック処理部３０に発行する。
【００３０】
コーデック処理部３０は、コーデック要求に含まれたリスト情報に基づきバッファリストを取得する。コーデック処理部３０は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みを行う。
【００３１】
本体部２０は、ＣＰＵ２１、メインメモリ２２、チップセット２３、ＨＤＤ２４、スロット（例えばＰＣＩＥｘｐｒｅｓｓ（商標）の規格に対応したスロット）２５、入出力インタフェース（Ｉ／Ｆ）部２６等で構成されている。さらに、入出力Ｉ／Ｆ部２６には、操作入力取得部２７、通信部２８、ドライブ２９が接続されている。
【００３２】
ＣＰＵ２１は、情報処理装置１０の全体を制御するものであり、ＨＤＤ２４等に記録されているオペレーティングシステムや種々のアプリケーションプログラムを動作させて、例えば動画編集や動画圧縮伸張処理等を行う。
【００３３】
メインメモリ２２には、ＣＰＵ２１が実行するプログラムやデータなどが適宜記憶される。
【００３４】
チップセット２３は、タイマ、割り込み、メインメモリ２２をコントロールする回路など、必要な機能がまとめられたものである。
【００３５】
ＨＤＤ２４は、例えば、オペレーティングシステムや種々のアプリケーションプログラム、コーデック処理前のデータやコーデック処理後のデータ等が記録される。
【００３６】
スロット２５は、情報処理装置１０の機能の拡張等を行うためのボードが組み込み可能とされており、例えば動画像データのコーデック処理を行うときには、コーデック処理部３０が組み込まれる。
【００３７】
操作入力取得部２７は、ユーザの操作入力を受け、入出力Ｉ／Ｆ部２６およびチップセット２３を介して、ＣＰＵ２１にユーザの操作入力を通知する。
【００３８】
通信部２８は、インターネットやＬＡＮをはじめとする外部のネットワーク、または、他の装置と接続されて通信を行う。
【００３９】
ドライブ２９は、例えば、磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリなどのリムーバブルメディア５０が装着可能とされている。ドライブ２９は、装着されたリムーバブルメディア５０に対して情報の読み出しや書き込みを行うことができるようになされている。
【００４０】
コーデック処理部３０は、情報処理装置１０で実行される例えばノンリニア編集等のアプリケーションで使用される周辺機器である。コーデック処理部３０は、本体部２０から供給されたデータのコーデック処理を実行する。また、コーデック処理部３０は、コーデック処理後のデータを本体部２０に供給したり、外部機器に出力する。
【００４１】
コーデック処理部３０は、ローカルＣＰＵ３１、コーデックインタフェース（Ｉ／Ｆ）部３２、ＤＭＡＣ(Direct Memory Access Controller)３３、コーデックメモリ３４、複数のコーデックプロセッサ３５、出力部３６を有している。
【００４２】
ローカルＣＰＵ３１は、本体部２０からエンコード要求やデコード要求に基づき、コーデック処理部３０の各部を制御して、エンコード要求やデコード要求に応じた処理をコーデック処理部３０で行わせる。
【００４３】
コーデックＩ／Ｆ部３２は、本体部２０とのデータ転送や通信を行うためのインタフェースである。コーデックＩ／Ｆ部３２は、例えば、本体部２０から読み出されたコーデック処理前のデータをＤＭＡＣ３３に出力する。また、ＤＭＡＣ３３から供給されたコーデック処理後のデータを本体部２０に出力する。さらに、コーデックＩ／Ｆ部３２は、本体部２０からコーデック要求が発行されたとき、コーデック要求をローカルＣＰＵ３１に出力する。また、ローカルＣＰＵ３１からのコーデック完了通知を本体部２０に出力する。さらに、ローカルＣＰＵ３１から後述するリスト情報の要求を本体部２０に出力して、本体部２０から供給されたリスト情報をローカルＣＰＵ３１に供給する。
【００４４】
ＤＭＡＣ３３は、本体部２０からコーデックメモリ３４へのデータ転送を行うとき用いられるレジスタ３３-Rと、コーデックメモリ３４から本体部２０へのデータ転送を行うときに用いられるレジスタ３３-Tを備えている。ＤＭＡＣ３３は、ローカルＣＰＵ３１の制御に基づき、コーデックメモリ３４と本体部２０のメインメモリ２２との間で、コーデック処理前のデータやコーデック処理後のデータのＤＭＡ転送を行う。
【００４５】
コーデックメモリ３４は、ＤＭＡＣ３３から供給されたコーデック処理前のデータや、コーデックプロセッサ３５から供給されたコーデック処理後のデータを記憶する。
【００４６】
複数のコーデックプロセッサ３５は、ローカルＣＰＵ３１の制御に基づいてコーデック処理を行う。すなわち、各コーデックプロセッサ３５は、コーデックメモリ３４からコーデック対象のデータを読み出してコーデック処理を行う。また、コーデックプロセッサ３５は、コーデック処理後のデータを、コーデックメモリ３４においてコーデックプロセッサ毎に予め設定されている領域に記憶させる。
【００４７】
出力部３６は、コーデック処理後のデータを外部機器に出力するとき、コーデックメモリ３４に記憶されているコーデック処理後のデータを、外部機器に対応したフォーマットのデータとして出力する。
【００４８】
図４は、情報処理装置１０の本体部２０で動作するオペレーティングシステムを構成するプログラムの一部を示している。プログラムは、ユーザモードレイヤとカーネルモードレイヤに区分されている。また、ハードウェアレイヤはコーデック処理部３０に相当する。
【００４９】
ユーザモードレイヤは、アプリケーションソフトウェア（以下「アプリケーション」という）１０１、ＡＰＩ(Application Program Interface)１０２、ドライバインタフェース１０３で構成されている。また、カーネルモードレイヤは、Ｉ／Ｏマネージャ１０４、デバイスドライバ１０５、ファイルシステムドライバ１０６、メモリマネージャ１０７、マイクロカーネル１０８、ＨＡＬ(Hardware Abstract Layer)１０９等のソフトウェアで構成されている。
【００５０】
アプリケーション１０１は、ユーザ等の要求に応じてコーデック要求を行うソフトウェアである。ＡＰＩ１０２は、アプリケーション１０１でカーネルモードレイヤの各種サービスを利用可能とする。ドライバインタフェース１０３は、アプリケーション１０１がＡＰＩ１０２を介してカーネルモードレイヤのデバイスドライバを利用可能とする。
【００５１】
Ｉ／Ｏマネージャ１０４は、入出力を統合的に管理するモジュールである。Ｉ／Ｏマネージャ１０４の内部はさらに小さなコンポーネント、例えばデバイスドライバ１０５やファイルシステムドライバ１０６等に分かれている。
【００５２】
デバイスドライバ１０５は、特定のデバイスに依存した違いを吸収して、デバイスに依存しないインタフェースを上位のモジュールに提供する。このデバイスドライバ１０５は、コーデック要求に後述するバッファリストを取得するためのリスト情報を含めてコーデック処理部３０に発行する。
【００５３】
ファイルシステムドライバ１０６は、ＨＤＤ１５等の記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、ＨＤＤ１５に保存されているファイルやフォルダへのアクセスを可能とする。
【００５４】
メモリマネージャ１０７は、各プロセスで仮想メモリ空間を利用可能とする。マイクロカーネル１０８は、スレッドのスケジューリングや割り込みおよび例外の処理などを行う。ＨＡＬ１０９は、情報処理装置１０のスロット等に接続されているハードウェアの種類による違いを吸収して、オペレーティングシステムの各サービスに対して抽象化したサービスを提供する。すなわち、ＨＡＬ１０９は、オペレーティングシステムを構成する各種のサービスが、ハードウェアの種類による違いを意識することなくスロット等に接続されているハードウェアにアクセスできるようにする。
【００５５】
ハードウェアレイヤであるコーデック処理部３０は、本体部２０からコーデック処理前のデータを取得してコーデックメモリ３４に記憶させる。また、コーデック処理部３０は、複数のコーデックプロセッサ３５で、コーデックメモリ３４に記憶されているコーデック処理前のデータのコーデック処理を行い、コーデック処理後のデータをコーデックメモリ３４に記憶させる。さらに、コーデックメモリ３４に記憶されたコーデック処理後のデータを本体部２０に転送して、コーデック要求に対してコーデック処理が終了したことを示す応答を行う。
【００５６】
＜２．第１の実施の形態＞
次に、第１の実施の形態として、コーデック指示部である本体部２０からコーデック要求としてエンコード要求が行われる場合について説明する。なお、コーデック処理部３０は、コーデック要求が発行されたとき、本体部２０のメインメモリ２２のエンコード用の画像データをエンコード処理して、符号化データ（エンコード結果データ）をメインメモリ２２に書き戻すエンコード動作を行う。なお、各フレームはイントラ予測モードでエンコード処理する。
【００５７】
［２−１．エンコード動作におけるデータ転送］
情報処理装置１０では、本体部２０とコーデック処理部３０間におけるデータ転送を効率よく行うため、データ転送処理をコーデック処理部３０から行う。コーデック処理部３０は、本体部２０のメインメモリ２２からエンコード用画像データをコーデック処理部３０に転送する処理、およびコーデック処理部３０からエンコード結果データをメインメモリ２２に転送する処理をパイプライン化して行う。
【００５８】
図５は、エンコード時のパイプライン処理を示している。情報処理装置１０の本体部２０で動作するアプリケーション１０１は、メインメモリ２２にエンコード用画像データを記憶させるための第１のバッファ２２Ａとエンコード結果データを記憶させるための第２のバッファ２２Ｂを設けて、エンコード要求を行う。
【００５９】
デバイスドライバ１０５は、エンコード要求が発行されると、エンコード用画像データ管理とエンコード結果データ管理を行う。デバイスドライバ１０５は、エンコード用画像データ管理として、エンコード用画像データを記憶させるために設けた第１のバッファ２２Ａのメインメモリ２２上の位置を示すポインタを記述した第１のバッファリストを作成する。また、第１のバッファリストは、コーデック処理部３０からのデータ転送処理に応じた転送単位のリストとする。例えば、転送単位は、コーデック処理部３０からパイプライン処理でデータ転送を行い易い単位とする。また、転送単位は、分割画面毎のエンコード用画像データを各コーデックプロセッサ３５に供給する際に適した単位や、コーデックプロセッサ３５におけるエンコード処理に適した単位とする。例えば、１つの分割画面のデータ量が転送単位の整数倍で、転送単位のデータ量がエンコード処理の処理単位の整数倍等となるように設定する。
【００６０】
なお、画面分割は、例えばエンコード処理の処理単位の整数倍のサイズで行い、分割画面毎にエンコード処理を行えるようにする。また、最後の分割画面のサイズが処理単位の整数倍とならないときは、無効データを付加してエンコード処理を行えるようにする。
【００６１】
また、デバイスドライバ１０５は、エンコード結果データ管理として、エンコード結果データを記憶させるために設けた第２のバッファ２２Ｂの位置を示すポインタを記述した第２のバッファリストを作成する。また、第２のバッファリストは、コーデック処理部３０からパイプライン処理でデータ転送を行うのに適した転送単位のリストとする。例えば、転送単位は、コーデック処理部３０からパイプライン処理でデータ転送を行い易い単位とする。また、エンコード結果データは可変長のデータであることから、転送単位は、エンコード結果データの終了時にデータ量を転送単位とするために付加される無効データのデータ量を少なくして転送効率が高くなるように設定する。
【００６２】
デバイスドライバ１０５は、エンコード要求に、第１と第２のバッファリストを取得するためのリスト情報と、複数のコーデックプロセッサ３５で分割画面毎にエンコード処理を行うための画面分割情報とを含めて、コーデック処理部３０に出力する。
【００６３】
コーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきＤＭＡＣ３３を制御して、メインメモリ２２における第１のバッファ２２Ａからコーデックメモリ３４にエンコード用画像データをＤＭＡ転送する。コーデックメモリ３４は、エンコード用画像データを記憶させるための第１のバッファ３４Ａとエンコード結果データを格納させるための第２のバッファ３４Ｂが配置されている。したがって、ＤＭＡＣ３３は、エンコード用画像データを第１のバッファ３４Ａに記憶させる。
【００６４】
ローカルＣＰＵ３１は、画面分割情報に基づきコーデックメモリ３４またはコーデックプロセッサ３５を制御して、第１のバッファ３４Ａに記憶されているエンコード用画像データを分割画面毎に複数のコーデックプロセッサ３５に分配する。例えば図５では画面を上下に分割して、上側分割画面のエンコード用画像データをコーデックプロセッサ３５-1、下側分割画面のエンコード用画像データをコーデックプロセッサ３５-2に分配する。また、第１のバッファ３４Ａに記憶されたエンコード用画像データを順次コーデックプロセッサ３５-1，３５-2に供給して、メインメモリ２２からのエンコード用画像データのデータ転送が終了する前にエンコード処理を開始させる。
【００６５】
また、メインメモリ２２からのエンコード用画像データのデータ転送を行う際に、上側分割画面と下側分割画面の画像データを所定ライン分毎に切り替えて読み出すようにしてもよい。例えばエンコード処理の処理単位の整数倍であるライン数毎に切り替えて読み出す。このようにすれば、上側分割画面と下側分割画面のエンコード処理を並列に行うこともできる。
【００６６】
コーデックプロセッサ３５-1，３５-2は、分配されたエンコード用画像データのエンコード処理をそれぞれ行う。コーデックプロセッサ３５-1，３５-2は、エンコード処理を行うことにより得られたエンコード結果データを、コーデックメモリ３４の第２のバッファ３４Ｂに分割画面毎に記憶させる。
【００６７】
コーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきＤＭＡＣ３３を制御して、コーデックメモリ３４の第２のバッファ３４Ｂから本体部２０のメインメモリ２２にエンコード結果データを転送する。また、コーデック処理部３０は、画面分割情報に基づきエンコード結果データの転送順序を制御して、本体部２０のメインメモリ２２に正しい画面順序でエンコード結果データを記憶させる。
【００６８】
このように、エンコード用画像データやエンコード結果データの転送をコーデック処理部３０で適した転送単位でパイプライン化して行うと、エンコード要求に対する処理を高速に行うことができるようになる。また、エンコード処理が分割画面単位で並列化して行われることから、エンコード処理に要する時間も短くなる。したがって、レイテンシの少ないエンコード処理が可能となる。このため、エンコード要求をキューイングする必要がなく、キャンセル処理の問題やキューイングのために多くのバッファが必要となってしまう問題等を回避できる。
【００６９】
図６は、エンコード時におけるオペレーティングシステムおよびコーデック処理部３０で行われる処理の流れを示している。情報処理装置１０の本体部２０で動作するアプリケーション１０１は、ＡＰＩ１０２に対しエンコード要求を発行する（Ｓ００１）。
【００７０】
ＡＰＩ１０２は、ファイルシステムドライバ１０６によって、ＨＤＤ１５から符号化するエンコード用画像データを取得する（Ｓ００２）。
【００７１】
ＡＰＩ１０２は、エンコード用画像データをメモリマネージャ１０７によってメインメモリ２２にコピーする（Ｓ００３）。
【００７２】
ＡＰＩ１０２は、エンコード用画像データを記憶させるためのメインメモリ２２上の第１のバッファ２２Ａと、エンコード結果データを記憶させるためのメインメモリ２２上の第２のバッファ２２Ｂの位置（アドレス）とサイズを示すバッファ情報を取得する。ＡＰＩ１０２は、ドライバインタフェース１０３に対して、これらのバッファ情報を含めた形で、エンコード要求を発行する（Ｓ００４）。
【００７３】
ドライバインタフェース１０３は、デバイスドライバ１０５に対して、ＡＰＩ１０２からのエンコード要求を発行する（Ｓ００５）。
【００７４】
デバイスドライバ１０５は、Ｉ／Ｏマネージャ１０４からメインメモリ２２上の第１と第２のバッファ２２Ａ，２２Ｂを示す分散収集リスト（ＳＧＬ：scatter gather list）を取得する。また、デバイスドライバ１０５は、分散収集リストを上述のようにデータ転送処理に応じた転送単位で再リスト化して、第１と第２のバッファリストを作成する。なお、Ｉ／Ｏマネージャ１０４は、ドライバインタフェース１０３からのエンコード要求に含まれているバッファ情報に基づき、分散収集リストを作成する。
【００７５】
さらに、デバイスドライバ１０５は、作成した第１と第２のバッファリストをメインメモリ２２上に記憶させて、第１と第２のバッファリストの位置（アドレス）やサイズを示すリスト情報をエンコード要求に含める。また、デバイスドライバ１０５は、複数のコーデックプロセッサ３５で分割画面毎にエンコード処理を行うための分割情報もエンコード要求に含める。デバイスドライバ１０５は、リスト情報と分割情報を含めたエンコード要求を、コーデック処理部３０のローカルＣＰＵ３１に出力する（Ｓ００７）。
【００７６】
コーデック処理部３０のローカルＣＰＵ３１は、デバイスドライバ１０５から通知されたリスト情報に基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、エンコード用画像データをメインメモリ２２上の第１のバッファ２２Ａからコーデック処理部３０におけるコーデックメモリ３４の第１のバッファ３４Ａに転送させる（Ｓ００８，Ｓ００９，Ｓ０１０）。
【００７７】
ローカルＣＰＵ３１は、コーデックメモリ３４の第１のバッファ３４Ａに記憶されたエンコード用画像データを、逐時対応するコーデックプロセッサ３５でエンコード処理させる（Ｓ０１１，Ｓ０１２）。
【００７８】
コーデックプロセッサ３５は、エンコード用画像データのエンコード処理を行い、エンコード結果データをコーデックメモリ３４における第２のバッファ３４Ｂの対応する領域に記憶させる（Ｓ０１３）。
【００７９】
ローカルＣＰＵ３１は、デバイスドライバ１０５から通知されたリスト情報に基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、エンコード処理が完了した分割画面毎に、エンコード結果データをコーデックメモリ３４の第２のバッファ３４Ｂからメインメモリ２２の第２のバッファ２２ＢへＤＭＡ転送させる（Ｓ０１４，Ｓ０１５，Ｓ０１６）。
【００８０】
ＡＰＩ１０２は、エンコード結果データの転送が終了したとき、アプリケーション１０１に対して、エンコード要求に対する処理が終了したことを示すエンコード結果応答を行う（Ｓ０１７，Ｓ０１８）。
【００８１】
次に、分散収集リストとバッファリストおよびリスト情報について、図７を用いて説明する。なお、図７では、動作を容易に理解できるようにアドレス値を例示しているが、アドレス値は図７の値に限られない。
【００８２】
情報処理装置１０で動作するオペレーティングシステムでは、メインメモリ２２上のアドレス（物理アドレス）を仮想メモリ空間へアドレスマッピングする手法が用いられている。
【００８３】
また、オペレーティングシステム内で管理するプログラム等が記憶されるアドレス空間（アプリケーションエリア）は小さいため、仮想メモリ空間として使用していないプログラムのアドレスを一部物理メモリ空間へ退避させることが行われている。さらに、物理メモリ空間は様々なデータを分散して記憶させることが可能であり、仮想メモリ空間で確保した連続したメモリ領域は、物理メモリ空間では特別な作業をしない限り物理メモリ空間へ分散されてアドレッシングされる。例えば、アプリケーションがメインメモリ２２にデータを記憶させる場合、仮想メモリ空間上に連続するアドレスのデータ領域を設けることで、メモリマネージャ１０７が物理メモリ空間へ最小単位（例えば４ＫＢ）で分散したデータ格納領域を設ける。
【００８４】
アプリケーション１０１は、物理メモリ空間へ直接アクセスすることができず、連続したアドレスでの制御を行うために仮想メモリ空間のアドレスを使用してデータ制御を行っている。また、物理メモリ空間上のアドレスは、コーデック処理部３０からアクセス可能である。さらに、物理メモリ空間は、オペレーティングシステムのカーネル内で動作するデバイスドライバ１０５からアドレスを取得することは可能であるが、デバイスドライバ内での物理メモリ空間への直接制御は行えない。このため、デバイスドライバ１０５もアプリケーションと同様に仮想メモリ空間上のアドレスを使用して制御を行う。したがって、デバイスドライバ１０５は、仮想メモリ空間と物理メモリ空間を関係付けたバッファリストをメインメモリ２２上に記憶させる。さらに、デバイスドライバ１０５は、バッファリストを記憶させた物理メモリ空間の位置やサイズを示すリスト情報をエンコード要求に含めてコーデック処理部３０に発行する。
【００８５】
コーデック処理部３０は、リスト情報に基づきバッファリストを取得できる。したがって、コーデック処理部３０は、バッファリストに基づきアプリケーション１０１が配置した第１のバッファ２２Ａや第２のバッファ２２Ｂが物理メモリ空間のいずれの位置であるかをポインタで判別する。すなわち、コーデック処理部３０は、ポインタを用いて第１のバッファ２２Ａや第２のバッファ２２Ｂに対してＤＭＡ転送を行うことができるようになる。
【００８６】
例えばユーザ空間のデータ領域をメインメモリ２２の物理空間に配置する（Ｓ０２１）。このとき、オペレーティングシステムのメモリマネージャ１０７は、例えば最小４ＫＢ単位で配置する（Ｓ０２２）。したがって、データ領域は、例えば図７に示すように分散されて配置されてしまう場合が生じる。なお、データバッファは、エンコード用画像データを記憶させる第１のバッファ２２Ａやエンコード結果データを記憶させる第２のバッファ２２Ｂに相当する。
【００８７】
デバイスドライバ１０５は、Ｉ／Ｏマネージャ１０４に対して分散収集リストの作成要求を行い、Ｉ／Ｏマネージャ１０４は分散収集リストを作成する（Ｓ０２３）。なお、作成された分散収集リストは、システム空間に書き込まれる（Ｓ０２４）。
【００８８】
分散収集リストでは、コーデック処理部３０からのアクセスで用いる物理メモリ空間のアドレスが記憶されているが、仮想メモリ空間に書き込まれているため、コーデック処理部３０で参照することができない。したがって、デバイスドライバ１０５は、分散収集リストをコーデック処理部３０から参照可能とするため、Ｉ／Ｏマネージャ１０４に対して本体部２０とコーデック処理部３０との両者で参照可能なコモンバッファの作成要求を行う。Ｉ／Ｏマネージャ１０４はコモンバッファをメインメモリ２２に配置して、このコモンバッファを示すコモンバッファ構造体を作成する（Ｓ０２５）。なお、コモンバッファは、コモンバッファの情報をコーデック処理部３０から連続して読み出すことができるように、連続した領域として配置する。
【００８９】
コモンバッファ構造体は、仮想メモリ空間と物理メモリ空間を関連付けるための情報である。コモンバッファ構造体は、コモンバッファの実体（例えば分散収集リストを再リストして作成した第１と第２のバッファリスト）の仮想アドレスと、コモンバッファの物理メモリ空間上のアドレスを示すコモンバッファＭＤＬ（Memory Descriptor List）を有している（Ｓ０２６）。
【００９０】
コモンバッファＭＤＬは、コモンバッファの実体が連続して記憶されている物理メモリ空間のポインタを示している（Ｓ０２７）。このコモンバッファＭＤＬのポインタは、物理メモリ空間のアドレスを示していることから、このコモンバッファＭＤＬで示されたポインタの位置の情報を用いることで、コーデック処理部３０からコモンバッファの実体を読み出すことが可能となる（Ｓ０２８）。
【００９１】
このように作成されるコモンバッファ構造体において、デバイスドライバ１０５は、分散収集リストをコーデック処理部３０におけるデータ転送に応じた転送単位に再リスト化してバッファリストを作成して、コモンバッファの実体とする。例えばコーデック処理部３０におけるエンコード用画像データのデータ転送に適した転送単位が１ＫＢであるとき、４ＫＢ単位で作成されている第１のバッファ２２Ａの分散収集リストを１ＫＢ単位で再リスト化して第１のバッファリストとする。このようにして、エンコード処理前のデータが記憶される第１のバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示した第１のバッファリストを作成する。また、例えばコーデック処理部３０におけるエンコード結果データのデータ転送に適した転送単位が１ＫＢであるとき、４ＫＢ単位で作成されている第２のバッファ２２Ｂの分散収集リストを１ＫＢ単位で再リスト化して第２のバッファリストとする。このようにして、エンコード処理後のデータが記憶される第２のバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示した第２のバッファリストを作成する。（Ｓ０２９）。
【００９２】
なお、分散収集リストを再リスト化して、第１および第２のバッファリストを作成すると、物理メモリ空間上に設けたコモンバッファの実体は、第１および第２のバッファリストの情報に更新される。また、情報の更新に伴いコモンバッファ構造体の内容も更新される。
【００９３】
デバイスドライバ１０５は、再リスト化された分散収集リストであるバッファリストが記憶されている位置（物理アドレス）やサイズを示すリスト情報を、エンコード要求に含めて、コーデック処理部３０に発行する（Ｓ０３０）。
【００９４】
コーデック処理部３０のＤＭＡＣ３３は、リスト情報に基づき第１や第２のバッファリストを取得して、この第１や第２のバッファリストに基づき、アプリケーションで確保された第１および第２のバッファ２２Ａ，２２Ｂに対して、データ転送を行うことができる。また、第１および第２のバッファリストは、データ転送に適した転送単位とされている。したがって、フレーム単位でデータ転送を行う際に、一般的に用いられるＤＭＡ処理およびコーデックプロセッサとの転送処理を細分化して、パイプライン化して転送処理を連続的に行うことで転送処理時間を短縮できるようになる。
【００９５】
［２−２．エンコード処理］
次に、コーデック処理部３０で行われるエンコード処理について説明する。エンコード要求を受けたコーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきメインメモリ２２からバッファリストを取得する。ローカルＣＰＵ３１は、バッファリストに基づきエンコード用画像データが記憶されているメインメモリ２２上の第１のバッファ２２Ａの位置（物理アドレス）を判別する。また、エンコード結果データを記憶するメインメモリ２２上の第２のバッファ２２Ｂの位置（物理アドレス）を判別する。この判別結果に基づきＤＭＡＣ３３を制御して、メインメモリ２２の第１のバッファ２２Ａからエンコード用画像データの１フレーム分をコーデックメモリ３４に転送させる。さらに、ローカルＣＰＵ３１は、分割情報に基づいてエンコード用画像データを各コーデックプロセッサ３５に分配する。なお、バッファリストはデータ転送に適した転送単位で作成されていることから、データ転送に適した転送単位でエンコード用画像データの転送が行われる。
【００９６】
各コーデックプロセッサ３５は、エンコード用画像データのエンコード処理を行う。エンコード処理を行うことにより得られるエンコード結果データは、可変長サイズである。したがって、ローカルＣＰＵ３１は、コーデックメモリ３４の第２のバッファ３４Ｂに、各分割画面のエンコード用画像データをエンコード処理したときの最大符号発生量と等しいサイズで、予め分割画面毎に領域を確保しておく。各コーデックプロセッサ３５は、エンコード処理を行うことにより得られたエンコード結果データを、第２のバッファ３４Ｂにける領域に記憶させる。なお、コーデックプロセッサ３５からコーデックメモリ３４へのデータ転送を高速化する行うため、バーストアクセス（例えば、２５６Ｂ単位）で連続にデータ転送を行う。この場合、有効なエンコード結果データの最後からバーストアクセス可能なメモリ境界アドレスまでは、デコード処理に影響を与えない無効データ（例えば０データ）でパディングする。また、エンコード結果データをコーデックメモリ３４に記憶した最終アドレス位置から、事前に確保した領域の最後までは、デコード処理に影響を与えない無効データで初期化する。
【００９７】
コーデックメモリ３４の第２のバッファ３４Ｂに記憶されているエンコード結果データは、バッファリストの転送単位で、ＤＭＡＣ３３によってコーデックメモリ３４の第２のバッファ３４Ｂからメインメモリ２２の第２のバッファ２２ＢにＤＭＡ転送される。
【００９８】
エンコード結果データの転送では、転送単位を例えば４ＫＢやその整数倍のように大きな転送サイズとすると、エンコード結果データだけでなく無効データが多く含まれてしまう場合が生じる。このため、上述のようにデバイスドライバ１０５は、分散収集ストの再リスト化を行い、無効データが多く含まれることがないように転送単位を例えば４ＫＢよりも小さい１ＫＢとしたバッファリストを作成する。
【００９９】
［２−３．データ転送管理の具体例］  
図８は、コーデック処理部のデータ転送管理の具体例を示している。エンコード用画像データは、１フレームが１９２０画素×１０８０ラインとする。また、コーデックプロセッサ３５で例えば１６画素×１６ライン単位でエンコード処理を行う場合、１６ラインの整数倍例えば２７２ライン毎に画面を分割して４つの分割画面毎にエンコード処理を行う。なお、コーデック処理部３０は、最初の分割画面をコーデックプロセッサ３５-1でエンコード処理する。また、コーデック処理部３０は、２番目の分割画面をコーデックプロセッサ３５-2、３番目の分割画面をコーデックプロセッサ３５-1、最後の分割画面をコーデックプロセッサ３５-2でそれぞれエンコード処理を行う。さらに、１つの分割画面を２７２ライン（エンコード処理単位の整数倍）とすると、１フレームは１０８８ラインとなる。したがって、最後の分割画面では２６４ライン分のエンコード処理を行う。
【０１００】
ＤＭＡＣ３３は、バーストリードを行い、本体部２０のメインメモリ２２から４ＫＢ単位でエンコード用画像データを読み出してレジスタ３３-Rに記憶させる。さらに、ＤＭＡＣ３３は、コーデックメモリ３４の第１のバッファ３４Ａに対してバーストライトを行い、レジスタ３３-Rに記憶されているエンコード用画像データを、２５６Ｂ単位で記憶させる。なお、エンコード用画像データは、分割画面毎に第１のバッファ３４Ａの対応する領域に記憶される。
【０１０１】
また、第１のバッファ３４Ａにエンコード処理単位分のエンコード用画像データが記憶されると、記憶されているエンコード用画像データのバーストリードを行い、２５６Ｂ単位でエンコード用画像データを読み出してコーデックプロセッサ３５に供給する。例えばコーデックプロセッサ３５は、１６ライン単位でエンコード処理を行う。この場合、最初の分割画面の１６ライン分のエンコード用画像データが第１のバッファ３４Ａの対応する領域に記憶されたとき、この記憶されたエンコード用画像データをコーデックプロセッサ３５-1でエンコード処理する。また、次の１６ライン分のエンコード用画像データが第１のバッファ３４Ａに記憶されたとき、この記憶されたエンコード用画像データをコーデックプロセッサ３５-1でエンコード処理する。以下同様にエンコード処理を行う。また、第２の分割画面のエンコード用画像データに対しても同様な処理を行い、エンコード用画像データをコーデックプロセッサ３５-2でエンコード処理する。さらに、第３の分割画面のエンコード用画像データをコーデックプロセッサ３５-1、最後の分割画面のエンコード用画像データをコーデックプロセッサ３５-2でエンコード処理する。
【０１０２】
コーデックプロセッサ３５-1，３５-2は、エンコード用画像データのエンコード処理を行い、エンコード結果データを生成する。また、エンコード結果データのバースライトを行い、２５６Ｂ単位でコーデックメモリ３４の第２のバッファ３４Ｂに記憶させる。なお、エンコード結果データは、分割画面毎に第２のバッファ３４Ｂの対応する領域に記憶される。また、エンコード結果データは可変長データであることから、各分割画面に対応する領域において、エンコード結果データが記憶されていない領域は無効データの領域とする。なお、分割画面毎に設けた領域は、２７２ライン分のエンコード用画像データをエンコード処理したときの最大符号発生量のサイズとして、エンコード結果データを対応する領域にすべて記憶できるようにする。
【０１０３】
このように、コーデックメモリ３４とコーデックプロセッサ３５-1，３５-2との間でデータ転送をパイプライン処理して、順次エンコード処理やエンコード結果データの出力を行う。
【０１０４】
ＤＭＡＣ３３は、バーストリードを行い、第２のバッファ３４Ｂから２５６Ｂ単位でエンコード結果データを読み出してレジスタ３３-Tに記憶させる。さらに、ＤＭＡＣ３３は、本体部２０のメインメモリ２２に対してバーストライトを行い、レジスタ３３-Tに記憶されているエンコード結果データを、１ＫＢ単位でメインメモリ２２の第２のバッファ２２Ｂに記憶させる。なお、エンコード結果データは可変長データであることから、エンコード結果データの最後のデータ転送では、無効データを加えて１ＫＢ単位としてデータ転送を行う。さらに、コーデックメモリ３４では、エンコード結果データが画面領域毎に分かれて記憶されている。したがって、分割画面毎のエンコード結果データをメインメモリ２２に連続して記憶させることで、分割画面毎のエンコード結果データをメインメモリ２２で連続データとして統合させることができる。
【０１０５】
なお、１９２０×１０８０／４：２：２であるエンコード用画像データの１６ライン分のエンコード結果データは約３０ＫＢ（４４０Ｍｂｐｓ／３０Ｆｒａｍｅ中の１６／１０８８＝１／６８ ) なので、例えば分割画面が１６ライン分であるとき、転送単位を４ＫＢにすると、４ＫＢに満たない端数分の無効データの割合は最大で１／７．５の割合になる。しかし転送単位を１ＫＢとすると、１ＫＢに満たない端数分の無効データの割合は最大で１／３０の割合となり、無効データの割合を少なくできる。さらに、画面分割を行ったときの分割画面のサイズを大きくして（レイテンシを少し延ばし）、各コーデックプロセッサ３５でエンコード処理を行う。このように分割画面のサイズを大きくすると、分割画面の数が少なくなるので、エンコード結果データに１ＫＢに満たない端数分として付加される無効データは、分割単位が小さい場合に比べて少なくなり、無効データの割合はほとんど無視できるようになる。
【０１０６】
図９は、図８に示すエンコード処理動作の制御シーケンスを示している。
【０１０７】
アプリケーション１０１は、エンコード要求を発行する（Ｓ０４１）。
【０１０８】
デバイスドライバ１０５は、エンコード要求を受けると、Ｉ／Ｏマネージャ１０４に対して、分割収集リストの作成要求を行う（Ｓ０４２）。
【０１０９】
Ｉ／Ｏマネージャ１０４は、要求された分割収集リストを作成して、デバイスドライバ１０５に作成完了を通知する（Ｓ０４３）。
【０１１０】
デバイスドライバ１０５は、分割収集リストの作成完了後、Ｉ／Ｏマネージャ１０４に対して、コモンバッファの作成要求を行う（Ｓ０４４）。
【０１１１】
Ｉ／Ｏマネージャ１０４は、要求されたコモンバッファを配置して、コモンバッファを示すコモンバッファ構造体を作成して、デバイスドライバ１０５に作成完了を通知する（Ｓ０４５）。
【０１１２】
デバイスドライバ１０５は、分散収集リストの再リスト化を行う。デバイスドライバ１０５は、エンコード用画像データを記憶するための第１のバッファ２２Ａの分散収集リストと、エンコード結果データを記憶するための第２のバッファ２２Ｂの分散収集リストの再リスト化を行う。デバイスドライバ１０５は、分散収集リストをコーデック処理部３０からデータ転送処理に応じた転送単位で再リスト化して、第１と第２のバッファリストを作成してＩ／Ｏマネージャ１０４に供給する（Ｓ０４６）。
【０１１３】
Ｉ／Ｏマネージャ１０４は、デバイスドライバ１０５で第１と第２のバッファリストが作成されると、物理メモリ空間上に設けたコモンバッファの実体を、第１および第２のバッファリストの情報に更新する。また、実体の更新に伴いコモンバッファ構造体の内容も更新して、デバイスドライバ１０５に完了を通知する（Ｓ０４７）。
【０１１４】
デバイスドライバ１０５は、コモンバッファに記憶された第１と第２のバッファリストに基づいてコーデック処理部３０からデータ転送処理を行うことができるように、第１と第２のバッファリストを取得するためのリスト情報をエンコード要求に含める。さらに、デバイスドライバ１０５は、エンコード要求に分割情報も含めて、コーデック処理部３０のローカルＣＰＵ３１に発行する（Ｓ０４８）。
【０１１５】
ローカルＣＰＵ３１は、リスト情報に基づき、ＤＭＡＣ３３によってエンコード用画像データをメインメモリ２２からコーデックメモリ３４に転送させる。例えば、ローカルＣＰＵ３１は、リスト情報に基づきバッファリストをメインメモリ２２から読み出して、バッファリストに基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、メインメモリ２２の第１のバッファ２２Ａに記憶されているエンコード用画像データをコーデックメモリ３４の第１のバッファ３４Ａに転送させる。バッファリストは、エンコード用画像データが記憶された第１のバッファ２２Ａの位置をデータ転送に適した転送単位で示している。したがって、ＤＭＡＣ３３は、最適な転送単位でエンコード用画像データをパイプライン処理で高速転送できる（Ｓ０４９）。
【０１１６】
ローカルＣＰＵ３１は、分割情報に基づきコーデックプロセッサ３５-1またはコーデックメモリ３４を制御して、最初の分割画面のエンコード処理を行う。例えばコーデックプロセッサ３５-1は、コーデックメモリ３４の第１のバッファ３４Ａに、最初の分割画面のエンコード用画像データが１６ライン分（エンコード処理単位）記憶される毎に、このエンコード用画像データのエンコード処理を行う（Ｓ０５０-1）。また、コーデックプロセッサ３５-1は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ３４の第２のバッファ３４Ｂにおける対応する領域に記憶させる（Ｓ０５１-1）。
【０１１７】
ローカルＣＰＵ３１は、分割情報に基づきコーデックプロセッサ３５-2またはコーデックメモリ３４を制御して、２番目の分割画面のエンコード処理を行う。例えばコーデックプロセッサ３５-2は、コーデックメモリ３４の第１のバッファ３４Ａに、２番目の分割画面のエンコード用画像データが１６ライン分（エンコード処理単位）記憶される毎に、このエンコード用画像データのエンコード処理を行う（Ｓ０５０-2）。また、コーデックプロセッサ３５-2は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ３４の第２のバッファ３４Ｂにおける対応する領域に記憶させる（Ｓ０５１-2）。
【０１１８】
ローカルＣＰＵ３１は、分割情報に基づきコーデックプロセッサ３５-1またはコーデックメモリ３４を制御して、最初の分割画面のエンコード処理終了後、第３の分割画面のエンコード処理を行う。例えばコーデックプロセッサ３５-1は、コーデックメモリ３４の第１のバッファ３４Ａに記憶されている第３の分割画面のエンコード用画像データを用いてエンコード処理を行う（Ｓ０５０-3）。また、コーデックプロセッサ３５-1は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ３４の第２のバッファ３４Ｂにおける対応する領域に記憶させる（Ｓ０５１-3）。
【０１１９】
ローカルＣＰＵ３１は、分割情報に基づきコーデックプロセッサ３５-2またはコーデックメモリ３４を制御して、２番目の分割画面のエンコード処理終了後、最後の分割画面のエンコード処理を行う。例えばコーデックプロセッサ３５-2は、コーデックメモリ３４の第１のバッファ３４Ａに記憶されている最後の分割画面のエンコード用画像データを用いてエンコード処理を行う（Ｓ０５０-4）。また、コーデックプロセッサ３５-2は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ３４の第２のバッファ３４Ｂにおける対応する領域に記憶させる（Ｓ０５１-4）。
【０１２０】
ローカルＣＰＵ３１は、リスト情報に基づき、ＤＭＡＣ３３によってエンコード結果データをコーデックメモリ３４からメインメモリ２２に転送させる。すなわち、ローカルＣＰＵ３１とＤＭＡＣ３３は、バッファリストに基づき、コーデックメモリ３４の第２のバッファ３４Ｂに記憶されているエンコード結果データをメインメモリ２２の第２のバッファ２２Ｂに転送させる。バッファリストは、エンコード結果データが記憶される第２のバッファ２２Ｂの位置をデータ転送に適した転送単位で示している。したがって、ＤＭＡＣ３３は、最適な転送単位でエンコード結果データをパイプライン処理で高速転送できる（Ｓ０５２）。
【０１２１】
ローカルＣＰＵ３１は、エンコード処理の終了を示すエンコード完了通知を、デバイスドライバ１０５に供給する。デバイスドライバ１０５は、エンコード完了通知を受けると、コモンバッファを解放し、ＡＰＩ１０２に対してエンコード完了通知を返すことで、エンコード処理が完了する（Ｓ０５３）。
【０１２２】
なお、図８では、コーデックプロセッサ３５-1，３５-2で１画面分のエンコード用画像データのエンコード処理を行っているが、分割画面数だけコーデックプロセッサを設けて、各コーデックプロセッサでそれぞれ異なる分割画面のエンコード処理を行ってもよい。また、図１０、１１に示すように４Ｋサイズ（４０９６画素×２１６０ライン）のエンコード用画像データにおいても、ＨＤサイズ（１９２０画素×１０８０ライン）の場合と同様に処理することができる。
【０１２３】
［２−４．データ転送管理の他の具体例］
図１０は、４Ｋサイズの画面を最初のラインから５４４ライン毎に分割して、４分割画面を２つのコーデックプロセッサでエンコード処理を行う場合を例示している。この場合、コーデックプロセッサ３５-1は、最初の分割画面（１〜５４４ライン目までの５４４ライン分）と３番目の分割画面（１０８９〜１６３２ライン目までの５４４ライン分）のエンコード処理を行う。また、コーデックプロセッサ３５-2は、２番目の分割画面（５４５〜１０８８ライン目までの５４４ライン分）と最後の分割画面（１６３３〜２１６０ライン目までの５２８ライン分）のエンコード処理を行う。
【０１２４】
図１１は、４Ｋサイズの画面を最初のラインから２７２ライン毎に分割して、８分割画面を４つのコーデックプロセッサでエンコード処理を行う場合を例示している。この場合、コーデックプロセッサ３５-1は、最初の分割画面（１〜２７２ライン目までの２７２ライン分）と５番目の分割画面（１０８９〜１３６０ライン目までの２７２ライン分）のエンコード処理を行う。また、コーデックプロセッサ３５-2は、２番目の分割画面（２７３〜５４４ライン目までの２７２ライン分）と６番目の分割画面（１３６１〜１６３２ライン目までの２７２ライン分）のエンコード処理を行う。コーデックプロセッサ３５-3は、３番目の分割画面（５４５〜８１６ライン目までの２７２ライン分）と７番目の分割画面（１６３３〜１９０４ライン目までの２７２ライン分）のエンコード処理を行う。また、コーデックプロセッサ３５-4は、４番目の分割画面（８１７〜１０８８ライン目までの２７２ライン分）と最後の分割画面（１９０５〜２１６０ライン目までの２５６ライン分）のエンコード処理を行う。
【０１２５】
このように画面分割を行い、複数のコーデックプロセッサでエンコード処理を行うことで、エンコード用画像データが４Ｋサイズであっても、ＨＤサイズのエンコード用画像データをエンコード処理する場合と同様に処理できる。
【０１２６】
このように、第１の実施の形態では、コーデック指示部によって、エンコード処理前とエンコード処理後のデータが記憶される第１と第２のバッファ２２Ａ，２２Ｂの位置を示すポインタをデータ転送処理に応じた転送単位で示した第１と第２のバッファリストが作成される。また、コーデック指示部から発行されるエンコード要求に第１と第２のバッファリストを取得するためのリスト情報が含められる。また、コーデック処理部は、エンコード要求に含まれたリスト情報に基づき第１と第２バッファリストを取得する。コーデック処理部は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、第１のバッファ２２Ａからエンコード処理前のデータの読み出しや第２のバッファ２２Ｂへエンコード処理後のデータの書き込みが行われる。このため、エンコード要求から要求に応じたエンコード結果が得られるまでに要する時間を短縮できる。また、複雑なキューイング構造を用意することなく、容易にエンコード処理が実現できる。また、キューイング構造をなくすことで、キャンセル機構が不要となる。さらに、メインメモリ２２とコーデック処理部３０のメモリ容量を削減でき、かつ、複数バッファの管理が不要となる。また、複数トラックに対するエンコード処理の実現も容易である。
【０１２７】
また、第１のバッファ２２Ａから読み出したエンコード処理前のデータは、複数のコーデックプロセッサに分配してエンコード処理が行われるので、エンコード処理に要する時間も短くなり、例えばリアルタイムでエンコード結果を得ることが可能となる。さらに、第１のバッファリストの転送単位は、例えばコーデック処理部における分配およびエンコード処理に適したデータ量単位とされる。また、第２のバッファリストの転送単位は、転送単位のデータ量とするために符号化データに付加される無効データのデータ量を少なくなるように決定される。したがって、パイプライン処理で効率よくデータ転送を行うことができるようになる。
【０１２８】
また、コーデックメモリ３４とコーデックプロセッサ３５-1，３５-2との間でデータ転送をパイプライン処理して、エンコード処理等が順次行われるので、エンコード用画像データを読み込んでからエンコード結果データが得られるまでに要する時間も短くできる。
【０１２９】
さらに、エンコード要求に画面分割情報が含まれるとき、画面分割情報に基づき複数のコーデックプロセッサに分割画面毎にエンコード処理前の画像が分配される。また、分割画面毎に符号化データを記憶する領域がコーデックメモリに設定されて、各領域が最大符号発生量のサイズとされる。したがって、分割画面毎にエンコード処理を行っても、符号化データをコーデックメモリに記憶して、コーデックメモリから第２のバッファ２２Ｂに正しく転送することが可能となる。
【０１３０】
＜３．第２の実施の形態＞
次に、第２の実施の形態として、コーデック指示部である本体部２０からコーデック要求としてデコード要求を行い、本体部２０のメインメモリ２２に記憶されているデコード用データをコーデック処理部３０でデコード処理するデコード動作について説明する。なお、デコード動作では、デコード処理後の画像データ（デコード結果画像データ）をメインメモリ２２に記憶させる場合の動作と、外部機器に出力する場合の動作について説明する。なお、デコード用データは、各フレームをイントラ予測モードでエンコード処理して得られた符号化データとする。
【０１３１】
［３−１．デコード動作におけるデータ転送］
情報処理装置１０では、本体部２０とコーデック処理部３０間におけるデータ転送を効率よく行うため、データ転送処理をコーデック処理部３０から行う。コーデック処理部３０は、本体部２０のメインメモリ２２からデコード用データをコーデック処理部３０に転送する処理、およびコーデック処理部３０からデコード結果画像データをメインメモリ２２に転送する処理をパイプライン化して行う。
【０１３２】
図１２は、デコード時のパイプライン処理を示している。情報処理装置１０の本体部２０で動作するアプリケーション１０１は、メインメモリ２２にデコード用データを記憶させるための第１のバッファ２２Ａとデコード結果画像データを記憶させるための第２のバッファ２２Ｂを配置して、デコード要求を行う。
【０１３３】
デバイスドライバ１０５は、デコード要求が発行されると、デコード用データ管理とデコード結果画像データ管理を行う。デバイスドライバ１０５は、デコード用データ管理として、デコード用データを記憶させるために設けた第１のバッファ２２Ａのメインメモリ２２上の位置を記述した第１のバッファリストを作成する。また、第１のバッファリストは、コーデック処理部３０からのデータ転送処理に応じた転送単位とする。例えば、転送単位は、コーデック処理部３０からパイプライン処理でデータ転送を行い易い単位とする。
【０１３４】
また、デバイスドライバ１０５は、デコード結果画像データ管理として、デコード結果画像データを記憶させるために設けた第２のバッファ２２Ｂの位置を記述した第２のバッファリストを作成する。第２のバッファリストは、コーデック処理部３０からパイプライン処理でデータ転送を行い易い転送単位とする。例えば、転送単位は、コーデック処理部３０からパイプライン処理でデータ転送を行い易い単位とする。また、転送単位は、コーデック処理部３０が設けられた複数基板で画像データの出力を分割画面毎に行うとき、分割画面毎の画像データの転送に適したデータ量単位とする。例えば、１つの分割画面のデータ量が転送単位の整数倍となるように設定する。
【０１３５】
デバイスドライバ１０５は、デコード要求に、第１と第２のバッファリストを取得するためのリスト情報を含めてコーデック処理部３０に出力する。
【０１３６】
コーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきＤＭＡＣ３３を制御して、メインメモリ２２における第１のバッファ２２Ａからコーデックメモリ３４にデコード用データをＤＭＡ転送する。コーデックメモリ３４は、デコード用データを記憶させるための第１のバッファ３４Ａとデコード結果画像データを記憶させるための第２のバッファ３４Ｂが配置されている。したがって、ＤＭＡＣ３３は、デコード用データを第１のバッファ３４Ａに記憶させる。
【０１３７】
また、ローカルＣＰＵ３１は、デコード用データを分析して、デコード用データを分割する。ローカルＣＰＵ３１は、例えばデコード用データに含まれている画像サイズ情報や、マクロブロックの大きさ等を示すマクロブロック情報等を取得して、これらの情報からラインの先頭位置を特定する。さらに、ローカルＣＰＵ３１は、デコード用データを、所定ライン数の分割画面毎に分割する。また、分割位置の決定では、コーデックメモリ３４に対してデコード結果画像データをバースト転送するときの境界位置も考慮して、バースト転送の境界が分割位置となるように決定する。ローカルＣＰＵ３１は、データ転送量とデコード用データの分割位置を管理して、実際にデコードすべき分割画面に応じて、必要なデコード用データをコーデックメモリ３４から複数のコーデックプロセッサ３５に分配する。なお、図１２では、上側分割画面のデータをデータＵ、下側分割画面のデータをデータＬとして示している。
【０１３８】
コーデックプロセッサ３５-1，３５-2は、分配されたデコード用データのデコード処理をそれぞれ行う。コーデックプロセッサ３５-1，３５-2は、デコード処理を行うことにより得られたデコード結果画像データを、コーデックメモリ３４の第２のバッファ３４Ｂに分割画面毎に記憶させる。なお、第２のバッファ３４Ｂには、分割画面の画像サイズに応じてマッピングした領域を予め確保しておき、コーデックプロセッサ３５-1，３５-2は、デコード結果画像データを、分割画面に対応した領域に記憶させる。
【０１３９】
コーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきＤＭＡＣ３３を制御して、コーデックメモリ３４の第２のバッファ３４Ｂから本体部２０のメインメモリ２２にデコード結果画像データを転送する。また、コーデック処理部３０は、分割画面の順序に応じてデコード結果データの転送順序を制御して、本体部２０のメインメモリ２２に正しい分割画面順序でデコード結果画像データを記憶させる。
【０１４０】
このように、デコード用データやデコード結果画像データの転送をコーデック処理部３０で適した転送単位でパイプライン化して行うと、デコード要求に対する処理を高速に行うことができるようになる。また、デコード処理が分割画面単位で並列化して行われることから、デコード処理に要する時間も短くなる。したがって、レイテンシの少ないデコード処理が可能となる。このため、デコード要求をキューイングする必要がなく、キャンセル処理の問題やキューイングのために多くのバッファが必要となってしまう問題等を回避できる。
【０１４１】
また、デコード用データの分割は、デコード結果画像データを外部機器に出力するときの伝送形式に対応するように分割を行い、デコード結果画像データの出力は、正しくデコード後の画像を表示できるように外部機器に対応させて行う。
【０１４２】
例えば４Ｋサイズの画面を、ＨＤ−ＳＤＩ伝送（ＳＤＩ１本あたりは ＨＤサイズのデータ転送）に対応するように分割して、分割画面のデコード用データを複数のコーデックプロセッサ３５でそれぞれデコード処理する。また、複数のコーデックプロセッサ３５で生成されて第２のバッファ３４Ｂに記憶されているデコード結果画像データは、外部機器における表示動作に対応させて出力する。
【０１４３】
図１３は、デコード時におけるオペレーティングシステムおよびコーデック処理部３０で行われる処理の流れを示している。情報処理装置１０の本体部２０で動作するアプリケーション１０１は、ＡＰＩ１０２に対しデコード要求を発行する（Ｓ１０１）。
【０１４４】
ＡＰＩ１０２は、ファイルシステムドライバ１０６によって、ＨＤＤ１５から符号化するデコード用データを取得する（Ｓ１０２）。
【０１４５】
ＡＰＩ１０２は、デコード用データをメモリマネージャ１０７によってメインメモリ２２にコピーする（Ｓ１０３）。
【０１４６】
ＡＰＩ１０２は、デコード用データを記憶させるメインメモリ２２上の第１のバッファ２２Ａと、デコード結果画像データを記憶させるメインメモリ２２上の第２のバッファ２２Ｂの位置（アドレス）とサイズを示すバッファ情報を取得する。ＡＰＩ１０２は、ドライバインタフェース１０３に対して、これらのバッファ情報を含めた形で、デコード要求を発行する（Ｓ１０４）。
【０１４７】
ドライバインタフェース１０３は、デバイスドライバ１０５に対して、ＡＰＩ１０２からのデコード要求を発行する（Ｓ１０５）。
【０１４８】
デバイスドライバ１０５は、Ｉ／Ｏマネージャ１０４からメインメモリ２２上の第１と第２のバッファ２２Ａ，２２Ｂを示す分散収集リストを取得する。また、デバイスドライバ１０５は、分散収集リストを上述のように最適な転送単位に再リスト化して第１と第２のバッファリストを作成する。なお、Ｉ／Ｏマネージャ１０４は、ドライバインタフェース１０３からのデコード要求に含まれているバッファ情報に基づき、分散収集リストを作成する。
【０１４９】
さらに、デバイスドライバ１０５は、作成した第１と第２のバッファリストをメインメモリ２２上に記憶させて、第１と第２のバッファリストの位置（アドレス）やサイズを示すリスト情報をデコード要求に含める。デバイスドライバ１０５は、リスト情報を含めたデコード要求を、２つの基板ＰＡ，ＰＢのコーデック処理部３０のローカルＣＰＵ３１に出力する（Ｓ１０７-a，Ｓ１０７-b）。
【０１５０】
基板ＰＡのコーデック処理部３０のローカルＣＰＵ３１は、デバイスドライバ１０５から通知されたリスト情報に基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、デコード用データをメインメモリ２２上の第１のバッファ２２Ａからコーデック処理部３０におけるコーデックメモリ３４の第１のバッファ３４Ａに転送させる（Ｓ１０８，Ｓ１０９−ａ，Ｓ１１０）。
【０１５１】
ローカルＣＰＵ３１は、デコード用データの分析を行い、分割位置を決定する。さらに、ローカルＣＰＵ３１は、決定された分割位置で分割したデコード用データを、対応するコーデックプロセッサ３５でデコード処理させる（Ｓ１１１，Ｓ１１２）。
【０１５２】
コーデックプロセッサ３５は、デコード用データのデコード処理を行い、デコード結果画像データをコーデックメモリ３４における第２のバッファ３４Ｂの対応する領域に記憶させる（Ｓ１１３）。
【０１５３】
ローカルＣＰＵ３１は、デバイスドライバ１０５から通知されたリスト情報に基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、デコード処理が完了した分割画面毎に、デコード結果画像データをコーデックメモリ３４の第２のバッファ３４Ｂからメインメモリ２２の第２のバッファ２２ＢへＤＭＡ転送させる（Ｓ１１４，Ｓ１１５，Ｓ１１６−ａ）。
【０１５４】
また、基板ＰＢのコーデック処理部３０でも基板Ａと同様な処理を行う（Ｓ１０９−ｂ，Ｓ１１６−ｂ）。
【０１５５】
なお、基板ＰＢでは、基板ＰＡと異なる分割画面のデコード用データを用いてデコード処理を行い、基板ＰＡと異なる分割画面のデコード結果画像データを生成する。
【０１５６】
ＡＰＩ１０２は、デコード結果画像データの転送が終了したとき、アプリケーション１０１に対して、デコード要求に対する処理が終了したことを示すデコード結果応答を行う（Ｓ１１７，Ｓ１１８）。
【０１５７】
次に、分散収集リストとバッファリストおよびリスト情報について、図１４を用いて説明する。なお、図１４では、動作を容易に理解できるようにアドレス値を例示しているが、アドレス値は図１４の値に限られない。
【０１５８】
上述のように、情報処理装置１０で動作するオペレーティングシステムでは、メインメモリ２２上のアドレス（物理アドレス）を仮想メモリ空間へアドレスマッピングする手法が用いられている。
【０１５９】
また、オペレーティングシステム内で管理するプログラム等が記憶されるアドレス空間（アプリケーションエリア）は小さいため、仮想メモリ空間として使用していないプログラムのアドレスを一部物理メモリ空間へ退避させることが行われている。さらに、物理メモリ空間は様々なデータを分散して記憶することが可能であり、仮想メモリ空間で確保した連続したメモリ領域は、物理メモリ空間では特別な作業をしない限り物理メモリ空間へ分散されてアドレッシングされる。例えば、アプリケーションがメインメモリ２２にデータを記憶する場合、仮想メモリ空間上に連続するアドレスのデータ領域を設けることで、メモリマネージャ１０７が物理メモリ空間へ最小単位（例えば４ＫＢ）で分散したデータ格納領域を設ける。
【０１６０】
アプリケーション１０１は、物理メモリ空間へ直接アクセスすることができず、連続したアドレスでの制御を行うために仮想メモリ空間のアドレスを使用してデータ制御を行っている。また、物理メモリ空間上のアドレスは、コーデック処理部３０からアクセス可能である。さらに、物理メモリ空間は、オペレーティングシステムのカーネル内で動作するデバイスドライバ１０５からアドレスを取得することは可能であるが、デバイスドライバ内での物理メモリ空間への直接制御は行えない。このため、デバイスドライバ１０５もアプリケーションと同様に仮想メモリ空間上のアドレスを使用して制御を行う。したがって、デバイスドライバ１０５は、仮想メモリ空間と物理メモリ空間を関係付けたバッファリストをメインメモリ２２上に記憶させる。さらに、デバイスドライバ１０５は、バッファリストを記憶した物理メモリ空間の位置を示すリスト情報をデコード要求に含めてコーデック処理部３０に発行する。
【０１６１】
コーデック処理部３０は、リスト情報に基づき仮想メモリ空間と物理メモリ空間を関係付けたバッファリストを取得できる。したがって、コーデック処理部３０は、バッファリストに基づきアプリケーション１０１が配置した第１のバッファ２２Ａや第２のバッファ２２Ｂが物理メモリ空間のいずれの位置であるか判別する。すなわち、コーデック処理部３０は、ポインタを用いて第１のバッファ２２Ａや第２のバッファ２２Ｂに対してＤＭＡ転送を行うことができるようになる。
【０１６２】
例えばユーザ空間のデータ領域をメインメモリ２２の物理空間に配置する（Ｓ１２１）。このとき、オペレーティングシステムのメモリマネージャ１０７は、例えば４ＫＢ単位で配置する（Ｓ１２２）。したがって、データ領域は、例えば図１４に示すように分散されて配置されてしまう場合が生じる。なお、データバッファは、デコード用データを記憶する第１のバッファ２２Ａやデコード結果画像データを記憶する第２のバッファ２２Ｂに相当する。
【０１６３】
デバイスドライバ１０５は、Ｉ／Ｏマネージャ１０４に対して分散収集リストの作成要求を行い、Ｉ／Ｏマネージャ１０４は分散収集リストを作成する（Ｓ１２３）。なお、作成された分散収集リストは、システム空間に書き込まれる（Ｓ１２４）。
【０１６４】
分散収集リストでは、コーデック処理部３０からのアクセスで用いる物理メモリ空間のアドレスが記憶されているが、仮想メモリ空間に書き込まれているため、コーデック処理部３０で参照することができない。したがって、デバイスドライバ１０５は、分散収集リストをコーデック処理部３０から参照可能とするため、Ｉ／Ｏマネージャ１０４に対して本体部２０とコーデック処理部３０との両者で参照可能なコモンバッファの作成要求を行う。Ｉ／Ｏマネージャ１０４はコモンバッファをメインメモリ２２に配置して、このコモンバッファを示すコモンバッファ構造体を作成する（Ｓ１２５）。なお、コモンバッファは、コモンバッファの情報をコーデック処理部３０から連続して読み出すことができるように、連続した領域として配置する。
【０１６５】
コモンバッファ構造体は、仮想メモリ空間と物理メモリ空間を関連付けるための情報である。コモンバッファ構造体は、コモンバッファの実体（例えば分散収集リストを再リストして作成した第１と第２のバッファリスト）の仮想アドレスと、コモンバッファの物理メモリ空間上のアドレスを示すコモンバッファＭＤＬ（Memory Descriptor List）を有している（Ｓ１２６）。
【０１６６】
コモンバッファＭＤＬは、コモンバッファの実体が連続して記憶されている物理メモリ空間のポインタを示している（Ｓ１２７）。このコモンバッファＭＤＬのポインタは、物理メモリ空間のアドレスを示していることから、このコモンバッファＭＤＬで示されたポインタの位置の情報を用いることで、コーデック処理部３０からコモンバッファの実体を読み出すことが可能となる（Ｓ１２８）。
【０１６７】
このように作成されるコモンバッファ構造体において、デバイスドライバ１０５は、分散収集リストをコーデック処理部３０におけるデータ転送に応じた転送単位に再リスト化してバッファリストを作成して、コモンバッファの実体とする。例えばコーデック処理部３０におけるデコード用データのデータ転送に適した転送単位が４ＫＢであるとき、例えば４ＫＢよりも大きい単位で作成されている第１のバッファ２２Ａの分散収集リストを４ＫＢ単位で再リスト化して第１のバッファリストとする。このようにして、デコード処理前のデータが記憶される第１のバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示した第１のバッファリストを作成する。また、例えばコーデック処理部３０におけるデコード結果画像データのデータ転送に適した転送単位が１ＫＢ単位であるとき、４ＫＢ単位で作成されている第２のバッファ２２Ｂの分散収集リストを１ＫＢ単位で再リスト化して第２のバッファリストとする。このようにして、デコード処理後のデータが記憶される第２のバッファの位置を示すポインタを、コーデック処理部３０からのデータ転送処理に応じた転送単位で示した第２のバッファリストを作成する。（Ｓ１２９）。
【０１６８】
なお、分散収集リストを再リスト化して、第１および第２のバッファリストを作成すると、物理メモリ空間上に設けたコモンバッファの実体は、第１および第２のバッファリストの情報に更新される。また、情報の更新に伴いコモンバッファ構造体の内容も更新される。
【０１６９】
デバイスドライバ１０５は、再リスト化された分散収集リストであるバッファリストが記憶されている位置（物理アドレス）やサイズを示すリスト情報を、デコード要求に含めて、コーデック処理部３０に発行する（Ｓ１３０）。
【０１７０】
コーデック処理部３０のＤＭＡＣ３３は、リスト情報に基づき第１や第２のバッファリストを取得して、この第１や第２のバッファリストに基づき、アプリケーションで確保された第１および第２のバッファ２２Ａ，２２Ｂに対して、データ転送を行うことができる。また、第１および第２のバッファリストは、データ転送に適した転送単位とされている。したがって、フレーム単位でデータ転送を行う際に、一般的に用いられるＤＭＡ処理およびコーデックプロセッサとの転送処理を細分化して、パイプライン化して転送処理を連続的に行うことで転送処理時間を短縮できるようになる。
【０１７１】
［３−２．デコード処理］
次に、コーデック処理部３０で行われるデコード処理について説明する。デコード要求を受けたコーデック処理部３０のローカルＣＰＵ３１は、リスト情報に基づきメインメモリ２２からバッファリストを取得する。ローカルＣＰＵ３１は、バッファリストに基づきデコード用データが記憶されているメインメモリ２２上の第１のバッファ２２Ａの位置（物理アドレス）や、デコード結果画像データを記憶する第２のバッファ２２Ｂの位置（物理アドレス）を判別する。この判別結果に基づきＤＭＡＣ３３を制御して、メインメモリ２２の第１のバッファ２２Ａからデコード用データの１フレーム分をコーデックメモリ３４に転送させる。さらに、ローカルＣＰＵ３１は、デコード用データの解析を行い、デコード用データを分割画面毎に分割して各コーデックプロセッサ３５に分配する。なお、バッファリストはデータ転送に適した転送単位で作成されていることから、データ転送に適した転送単位でデコード用データの転送が行われる。
【０１７２】
各コーデックプロセッサ３５は、デコード用データを用いてデコード処理を行う。ここで、デコード結果画像データは、分割画面のサイズに応じたデータ量となる。したがって、ローカルＣＰＵ３１は、予めコーデックメモリ３４の第２のバッファ３４Ｂに、デコード結果画像データを記憶する領域を画面分割数と分割画面のサイズに応じて確保しておく。各コーデックプロセッサ３５は、デコード用データのデコード処理を行い、デコード処理を行うことにより得られたデコード結果画像データを、第２のバッファ３４Ｂの対応する領域に記憶させる。なお、コーデックプロセッサ３５からコーデックメモリ３４へのデータ転送を高速化する行うため、バーストアクセス（例えば、２５６Ｂ単位）で連続にデータ転送を行う。
【０１７３】
コーデックメモリ３４の第２のバッファ３４Ｂに記憶されているデコード結果画像データは、バッファリストの転送単位で、ＤＭＡＣ３３によってコーデックメモリ３４の第２のバッファ３４Ｂからメインメモリ２２の第２のバッファ２２ＢにＤＭＡ転送される。
【０１７４】
デコード結果画像データの転送では、転送単位を大きな転送サイズとすると、分割画像のデコード結果画像データの終了時にデータ量が転送単位とならず無効データが多く含まれてしまう場合が生じる。このため、上述のようにデバイスドライバ１０５は、分散収集ストの再リスト化を行い、無効データが多く含まれることがないように転送単位を例えば小さい１ＫＢとしたバッファリストを作成する。
【０１７５】
また、コーデックメモリ３４の第２のバッファ３４Ｂにおける分割画面毎の領域からデコード結果画像データを並列に出力部３６から出力させる。このようにすれば、複数の表示デバイスで１画面を構成して画像表示を行う外部装置に対して、各表示デバイスに対して、該表示デバイスが表示される画像部分のデコード結果画像データを出力させることができる。
【０１７６】
［３−３．データ転送管理の具体例］
図１５は、コーデック処理部のデータ転送管理の具体例を示している。デコード用データは、１フレームが３８４０画素×２１６０ラインとする。また、デコード用データは、１６ライン単位でエンコード処理された符号化データとする。
【０１７７】
また、基板ＰＡのコーデック処理部３０は、１フレームの画像の上半分の領域のデコード処理を行い、基板ＰＢのコーデック処理部３０は、１フレームの画像の下半分の領域のデコード処理を行う。
【０１７８】
基板ＰＡのコーデック処理部３０におけるコーデックプロセッサ３５-1は、１フレームの画像の上半分の領域において、最初の分割画像（１〜２７２ライン目までの２７２ライン分（１６ラインの整数倍））のデコード処理を行う。また、コーデックプロセッサ３５-1は、１フレームの画像の上半分の領域において、２番目の分割画像（２７３〜５４４ライン目までの２７２ライン分）のデコード処理を行う。
【０１７９】
基板ＰＡのコーデック処理部３０におけるコーデックプロセッサ３５-2は、１フレームの画像の上半分の領域において、３番目の分割画像（５４５〜８１６ライン目までの２７２ライン分）のデコード処理を行う。また、コーデックプロセッサ３５-2は、１フレームの画像の上半分の領域において、最後の分割画像（８１７〜１０８０ライン目までの２６４ライン分）のデコード処理を行う。なお、符号化データが１６ライン単位でエンコード処理された符号化データであるとき、最後の分割画像のデコード処理を行うと、８１７〜１０８８ライン目までの画像データが得られる。
【０１８０】
基板ＰＢのコーデック処理部３０におけるコーデックプロセッサ３５-1では、デコード処理を行い、１フレームの画像の下半分の領域において、最初の分割画像のデコード処理を行う。ここで、符号化データが１６ライン単位でエンコード処理された符号化データであるとき、下半分の領域の最初である１０８１ラインは、１０７３〜１０８８ライン目のエンコード処理単位に含まれる。したがって、下半分の領域のデコード処理では、１０７３〜２１６０ラインのエンコード処理結果である符号化データを用いる。したがって、コーデックプロセッサ３５-1は、１フレームの画像の下半分の領域において、最初の分割画像（１０７３〜１３４４ライン目までの２７２ライン分）のデコード処理を行う。
【０１８１】
また、コーデックプロセッサ３５-1は、１フレームの画像の上半分の領域において、２番目の分割画像（１３４５〜１６１６ライン目までの２７２ライン分）のデコード処理を行う。
【０１８２】
基板ＰＢのコーデック処理部３０におけるコーデックプロセッサ３５-2は、１フレームの画像の下半分の領域において、３番目の分割画像（１６１７〜１８８８ライン目までの２７２ライン分）のデコード処理を行う。また、コーデックプロセッサ３５-2は、１フレームの画像の下半分の領域において、最後の分割画像（１８８９〜２１６０ライン目までの２６４ライン分）のデコード処理を行う。
【０１８３】
基板ＰＡと基板ＰＢのＤＭＡＣ３３は、バーストリードを行い、本体部２０のメインメモリ２２から４ＫＢ単位でデコード用データを読み出してレジスタ３３-Rに記憶させる。さらに、ＤＭＡＣ３３は、コーデックメモリ３４の第１のバッファ３４Ａに対してバーストライトを行い、レジスタ３３-Rに記憶されているデコード用データを、２５６Ｂ単位で記憶させる。
【０１８４】
また、コーデックプロセッサ３５-1，３５-2は、デコード用データの解析結果に基づいて、第１のバッファ３４Ａに記録されているデコード用データを、分割画面毎にバーストリードを行い、２５６Ｂ単位でデコード用データを読み出してデコード処理を行う。さらに、コーデックプロセッサ３５-1，３５-2は、デコード処理を行うことにより得られたデコード結果画像データのバーストライトを行い、第２のバッファ３４Ｂにおける分割画面と対応する領域に記憶させる。
【０１８５】
このように、コーデックメモリ３４とコーデックプロセッサ３５-1，３５-2との間でデータ転送をパイプライン処理して、順次デコード処理やデコード結果画像データの出力を行う。
【０１８６】
ＤＭＡＣ３３は、バーストリードを行い、第２のバッファ３４Ｂから２５６Ｂ単位でデコード結果画像データを読み出してレジスタ３３-Tに記憶させる。さらに、ＤＭＡＣ３３は、本体部２０のメインメモリ２２に対してバーストライトを行い、レジスタ３３-Tに記憶されているデコード結果画像データを、１ＫＢ単位でメインメモリ２２の第２のバッファ２２Ｂに記憶させる。
【０１８７】
図１６は、図１５に示すデコード処理動作の制御シーケンスを示している。
【０１８８】
アプリケーション１０１は、デコード要求を発行する（Ｓ１４１）。
【０１８９】
デバイスドライバ１０５は、デコード要求を受けると、Ｉ／Ｏマネージャ１０４に対して、分割収集リストの作成要求を行う（Ｓ１４２）。
【０１９０】
Ｉ／Ｏマネージャ１０４は、要求された分割収集リストを作成して、デバイスドライバ１０５に作成完了を通知する（Ｓ１４３）。
【０１９１】
デバイスドライバ１０５は、分割収集リストの作成完了後、Ｉ／Ｏマネージャ１０４に対して、コモンバッファの作成要求を行う（Ｓ１４４）。
【０１９２】
Ｉ／Ｏマネージャ１０４は、要求されたコモンバッファを配置して、コモンバッファを示すコモンバッファ構造体を作成して、デバイスドライバ１０５に作成完了を通知する（Ｓ１４５）。
【０１９３】
デバイスドライバ１０５は、分散収集リストの再リスト化を行う。デバイスドライバ１０５は、デコード用データを記憶するための第１のバッファ２２Ａの分散収集リストと、デコード結果画像データを記憶するための第２のバッファ２２Ｂの分散収集リストの再リスト化を行う。デバイスドライバ１０５は、分散収集リストをコーデック処理部３０からデータ転送処理に応じた転送単位で再リスト化して、第１と第２のバッファリストを作成してＩ／Ｏマネージャ１０４に供給する（Ｓ１４６）。
【０１９４】
Ｉ／Ｏマネージャ１０４は、デバイスドライバ１０５で第１と第２のバッファリストが作成されると、物理メモリ空間上に設けたコモンバッファの実体を、第１および第２のバッファリストの情報に更新する。また、実体の更新に伴いコモンバッファ構造体の内容も更新して、デバイスドライバ１０５に完了を通知する（Ｓ１４７）。
【０１９５】
デバイスドライバ１０５は、コモンバッファに記憶された第１と第２のバッファリストに基づいてコーデック処理部３０からデータ転送処理を行うことができるように、第１と第２のバッファリストを取得するためのリスト情報をデコード要求に含める。さらに、デバイスドライバ１０５は、１フレーム画像のいずれの領域に対するデコード処理を基板ＰＡ，ＰＢで行うか示した領域割り当て情報を、デコード要求に含めて基板ＰＡと基板ＰＢのローカルＣＰＵ３１に供給する（Ｓ１４８−ａ，Ｓ１４８−ｂ）。
【０１９６】
基板ＰＡと基板ＰＢのローカルＣＰＵ３１は、リスト情報や領域割り当て情報に基づき、ＤＭＡＣ３３によってデコード用データをメインメモリ２２からコーデックメモリ３４に転送させる。例えば、ローカルＣＰＵ３１は、リスト情報に基づきバッファリストをメインメモリ２２から読み出して、バッファリストに基づきＤＭＡＣ３３を制御する。ＤＭＡＣ３３は、メインメモリ２２の第１のバッファ２２Ａに記憶されているデコード用データをコーデックメモリ３４の第１のバッファ３４Ａに転送させる。バッファリストは、デコード用データが記憶された第１のバッファ２２Ａの位置をデータ転送に適した転送単位で示している。したがって、ＤＭＡＣ３３は、最適な転送単位でデコード用データをパイプライン処理で高速転送できる（Ｓ１４９−ａ，Ｓ１４９−ｂ）。
【０１９７】
基板ＰＡと基板ＰＢのローカルＣＰＵ３１は、デコード用データの解析を行い、解析結果に基づきデコード用データを分割画面毎にコーデックプロセッサ３５-1，３５-2に分配して、デコード処理を行わせる。コーデックプロセッサ３５-1，３５-2は、デコード処理によって得られたデコード結果画像データを、コーデックメモリ３４の第２のバッファ３４Ｂにおける対応する領域に記憶させる。
【０１９８】
基板ＰＡと基板ＰＢのローカルＣＰＵ３１は、リスト情報に基づき、ＤＭＡＣ３３によってデコード結果画像データをコーデックメモリ３４からメインメモリ２２に転送させる。すなわち、ローカルＣＰＵ３１とＤＭＡＣ３３は、バッファリストに基づき、コーデックメモリ３４の第２のバッファ３４Ｂに記憶されているデコード結果画像データをメインメモリ２２の第２のバッファ２２Ｂに転送させる。バッファリストは、デコード結果画像データが記憶される第２のバッファ２２Ｂの位置をデータ転送に適した転送単位で示している。したがって、ＤＭＡＣ３３は、最適な転送単位でデコード結果画像データをパイプライン処理で高速転送できる（Ｓ１５０−ａ、Ｓ１５０−ｂ）。
【０１９９】
基板ＰＡのローカルＣＰＵ３１は、デコード処理の終了を示すデコード完了通知を、デバイスドライバ１０５に供給する（Ｓ１５１−ａ）。基板ＰＢのローカルＣＰＵ３１は、デコード処理の終了を示すデコード完了通知を、デバイスドライバ１０５に供給する（Ｓ１５１−ｂ）。デバイスドライバ１０５は、基板ＰＡ，ＰＢの両方のローカルＣＰＵ３１からデコード完了通知を受けると、コモンバッファを解放し、ＡＰＩ１０２に対してデコード完了通知を返すことで、デコード処理が完了する（Ｓ１５２）。
【０２００】
さらに、基板ＰＡ，ＰＢのコーデックメモリ３４の第２のバッファ３４Ｂからデコード結果画像データを読み出してＳＤＩ方式で並列に出力することで、例えばＨＤサイズである４つ表示デバイスＨＤ１〜ＨＤ４を用いて４Ｋサイズの画像表示を行うことができる。
【０２０１】
［３−４．デコード結果の出力処理］
次に、出力部３６からデコード結果画像データを出力する場合についての具体例を説明する。デコード用データは、４Ｋサイズ（３８４０画素×２１６０ライン，４：４：４）の画像データがエンコード処理されたデータとする。また、出力部３６に接続される外部機器は、ＨＤサイズの表示パネルを４枚用いて４Ｋサイズ画像の表示を行う。また各表示パネルは、２本のＨＤ−ＳＤＩ(High Definition Serial Digital Interface)入力や、ＤｕａｌＬｉｎｋ  ＨＤ−ＳＤＩ入力、１本の３Ｇ−ＳＤＩ（ＳＭＰＴＥ ４２４Ｍ）入力を有している。
【０２０２】
基板ＰＡでは、例えば２本の３Ｇ−ＳＤＩ出力のそれぞれで、１９２０画素×１０８０ラインの画像データを出力する必要がある。同様に、基板ＰＢでは、例えば２本の３Ｇ−ＳＤＩ出力のそれぞれで、１９２０画素×１０８０ラインの画像データを出力する必要がある。このため、基板ＰＡと基板ＰＢで共通してデコード処理が行われる１６ライン分（１０７３〜１０８８ライン目）について、１フレームの上半分の領域のデコード処理を行う基板ＰＡでは、１０７３〜１０８０ライン目を出力する。また、１フレームの下半分の領域のデコード処理を行う基板ＰＢでは、１０８１〜１０８８ライン目を出力する。すなわち、基板ＰＡと基板ＰＢは、それぞれ３８４０画素×１０８０ライン相当の画像データを出力する。
【０２０３】
さらに、基板ＰＡと基板ＰＢは、スプリッタ機能を用いて、３８４０画素×１０８０ライン相当の画像、１９２０画素×１０８０ラインの左右２画面に分割して出力させる。
図１７は、画像データの出力順序と表示画像を示しており、図１７の（Ａ）はスプリッタ機能を用いていない場合、図１７の（Ｂ）はスプリッタ機能を用いた場合を示している。  スプリッタ機能を用いていない場合、３８４０画素分の画像データが１ライン分として表示装置の１つの表示パネルに供給される。しかし、表示パネルの解像度は１９２０画素×１０８０ラインであり、コーデック処理部３０から出力した１ライン分の画像データは、表示パネルで２ライン分の画像データとされる。したがって、３８４０画素×５４０ライン分の画像データを読み出して各表示パネルに供給したとき、各表示パネルでは対応する領域の画像を表示することができない。
【０２０４】
したがって、コーデック処理部３０は、分割画面毎に予め設定されているメモリ領域に記憶されている画像データを画像表示領域に対応させて読み出して出力する。すなわち、コーデック処理部３０は、スプリッタ機能を用いて水平方向を２分割して、表示パネルの解像度に対応させた１９２０画素×１０８０ライン分の画像データを各表示パネルに供給する。この場合、各表示パネルに供給される画像データは、水平方向の画素数および垂直方向のライン数が等しいことから、各表示パネルでは対応する領域の画像を表示することができる。
【０２０５】
なお、図１５と図１７では３ＧーＳＤＩを用いて画像データの出力を行う場合を示しているが、ＨＤ−ＳＤＩ方式を用いる場合、基板ＰＡと基板ＰＢのそれぞれでは４本の出力（DualLink HD-SDI 2系統）から画像データを出力する。
【０２０６】
このように、デコード用データの分割処理を行い、分割後のデコード用データのデコード処理を並列して行うことで、デコード処理を高速に行うことができる。また、アプリケーションから、複雑なキューイング構造を用意することなく、容易にデコード処理を実現できる。さらに、キューイング構造をなくすことで、アプリケーション側のランダム再生におけるレスポンス低下が無くなり、かつ、キャンセル機構が不要となる。また、要求単位毎に完結した処理を実現できるので、ソフトデコードのような柔軟性が確保でき、複数ビデオクリップに対するデコード処理の実現が容易になる。また、キューイングのための複数のバッファを設ける必要がないので、構成が簡単でバッファの管理等も容易となる。
【０２０７】
さらに、コーデック処理部３０を設けた基板で、基板サイズの制約により所望の数の出力端子を設けることができなくとも、コーデック処理部３０が設けられた基板を複数用いて、各基板で対応する分割画面のデコード処理を行えばよい。すなわち、複数の基板を用いて得られた所望の数の出力端子を使用して、各出力端子から担当する表示領域の画像データを出力できる。また、基板間のデータの受け渡しが必要ないことから、データの受け渡しのためのバッファ等を用意しなくてよい。
【０２０８】
以上のように、第２の実施の形態では、コーデック指示部において、デコード処理前とデコード処理後のデータが記憶される第１のバッファ２２Ａと第２のバッファ２２Ｂの位置を示すポインタをデータ転送処理に応じた転送単位で示した第１と第２のバッファリストが作成される。また、コーデック指示部から発行されるデコード要求に第１と第２のバッファリストを取得するためのリスト情報が含められる。また、コーデック処理部では、デコード要求に含まれたリスト情報に基づき第１と第２バッファリストを取得する。コーデック処理部は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、第１のバッファ２２Ａからデコード処理前のデータの読み出しや第２のバッファ２２Ｂへデコード処理後のデータの書き込みが行われる。このため、デコード要求から要求に応じたデコード結果が得られるまでに要する時間を短縮できる。また、複雑なキューイング構造を用意することなく、容易にデコード処理が実現できる。また、キューイング構造をなくすことで、キャンセル機構が不要となる。さらに、メインメモリ２２とコーデック処理部３０のメモリ容量を削減でき、かつ、複数バッファの管理が不要となる。また、複数トラックに対するデコード処理の実現も容易である。
【０２０９】
また、コーデック処理部３０では、第１のバッファ２２Ａからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを複数のコーデックプロセッサに分配してデコード処理が行われる。このため、デコード処理に要する時間も短くなり、例えばリアルタイムでデコード結果を得ることが可能となる。さらに、第２のバッファリストの転送単位は、例えば、分割画面毎の画像データの転送に適したデータ量単位とされるので、パイプライン処理で効率よくデータ転送を行うことができるようになる。
【０２１０】
また、コーデックメモリ３４とコーデックプロセッサ３５-1，３５-2との間でデータ転送をパイプライン処理して、デコード処理等が順次行われるので、デコード用データを読み込んでからデコード結果画像データが得られるまでに要する時間も短くできる。
【０２１１】
さらに、コーデック処理部３０では、デコード処理で得られた画像データを、分割画面毎に予め設定されているメモリ領域の対応する領域に記憶して、この記憶された画像データを画像表示領域に対応して読み出して出力する。このため、複数の表示デバイスを用いて１画面を構成する場合でも、正しく画像表示を行うことができる。
【０２１２】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【産業上の利用可能性】
【０２１３】
この発明の情報処理装置および情報処理方法では、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、バッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部では、コーデック要求に含まれたリスト情報に基づきバッファリストが取得されて、このバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みが行われる。このように、コーデック処理前とコーデック処理後の少なくともいずれかのデータの転送が高速に行われることから、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる。したがって、画像データの記録や再生を行う電子機器、画像データの編集処理を行う編集装置等に適している。
【符号の説明】
【０２１４】
１０・・・情報処理装置、２０・・・本体部、２１・・・ＣＰＵ、２２・・・メインメモリ、２２Ａ，３４Ａ・・・第１のバッファ、２２Ｂ，３４Ｂ・・・第２のバッファ、２３・・・チップセット、２４・・・ＨＤＤ、２５・・・スロット、２６・・・入出力インタフェース（Ｉ／Ｆ）部、２７・・・操作入力取得部、２８・・・通信部、２９・・・ドライブ、３０・・・コーデック処理部、３１・・・ローカルＣＰＵ、３２・・・コーデックインタフェース（Ｉ／Ｆ）部、３３・・・ＤＭＡＣ(Direct Memory Access Controller)、３３-R，３３-T・・・レジスタ、３４・・・コーデックメモリ、３５，３５-1〜３５-4・・・コーデックプロセッサ、３６・・・出力部、５０・・・リムーバブルメディア、１０１・・・アプリケーションソフトウェア、１０２・・・ＡＰＩ(Application Program Interface)、１０３・・・ドライバインタフェース、１０４・・・Ｉ／Ｏマネージャ、１０５・・・デバイスドライバ、１０６・・・ファイルシステムドライバ、１０７・・・メモリマネージャ、１０８・・・マイクロカーネル、１０９・・・ＨＡＬ(Hardware Abstract Layer)、
【図１】
2012010182.tif 000003
【図２】
2012010182.tif 000004
【図３】
2012010182.tif 000005
【図４】
2012010182.tif 000006
【図５】
2012010182.tif 000007
【図６】
2012010182.tif 000008
【図７】
2012010182.tif 000009
【図８】
2012010182.tif 000010
【図９】
2012010182.tif 000011
【図１０】
2012010182.tif 000012
【図１１】
2012010182.tif 000013
【図１２】
2012010182.tif 000014
【図１３】
2012010182.tif 000015
【図１４】
2012010182.tif 000016
【図１５】
2012010182.tif 000017
【図１６】
2012010182.tif 000018
【図１７】
2012010182.tif 000019