JP2012010182A - 情報処理装置と情報処理方法 - Google Patents

情報処理装置と情報処理方法 Download PDF

Info

Publication number
JP2012010182A
JP2012010182A JP2010145439A JP2010145439A JP2012010182A JP 2012010182 A JP2012010182 A JP 2012010182A JP 2010145439 A JP2010145439 A JP 2010145439A JP 2010145439 A JP2010145439 A JP 2010145439A JP 2012010182 A JP2012010182 A JP 2012010182A
Authority
JP
Japan
Prior art keywords
codec
data
buffer
processing
encoding
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
Application number
JP2010145439A
Other languages
English (en)
Inventor
Toshio Takada
敏男 高田
Original Assignee
Sony Corp
ソニー株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp, ソニー株式会社 filed Critical Sony Corp
Priority to JP2010145439A priority Critical patent/JP2012010182A/ja
Publication of JP2012010182A publication Critical patent/JP2012010182A/ja
Application status is Withdrawn legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Abstract

【課題】コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を短縮化する。
【解決手段】コーデック指示部である本体部20は、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求にバッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部30は、コーデック要求に含まれたリスト情報に基づきバッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みを行う。
【選択図】 図3

Description

この発明は、情報処理装置と情報処理方法に関する。詳しくは、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を短縮化できるようにする。

従来、画像データのエンコード処理やデコード処理では、例えば1フレーム期間内で処理が可能な集積回路等を用いて、フレーム単位で処理が行われている。図1は、アプリケーションで例えばエンコード要求が行われたときの動作を示している。なお、各フレームは、イントラ予測モードでエンコード処理される。

アプリケーションは、エンコードE1要求を行う。デバイスドライバは、メインメモリに記憶されているエンコードE1用データの管理処理を行い、エンコードE1用データをエンコードハードウェアに転送可能とする。次に、エンコードE1用データ転送を行い、エンコードE1用データをエンコードハードウェアに転送する。エンコードハードウェアは、エンコードE1用データの転送が完了すると、供給されたエンコードE1用データのエンコードE1処理を行う。デバイスドライバは、エンコードE1処理が終了したとき、エンコードE1結果データ転送を行い、エンコードE1処理で得られたエンコードE1結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードE1結果取得となる。また、アプリケーションは、エンコードE1要求に対してエンコードE1結果データが得られたとき、次のエンコードE2要求を行う。このように、エンコード要求に対して、エンコード用データの転送処理とエンコード処理およびエンコード結果データの転送処理が順番に行われている。なお、デコード要求に対しても同様に処理を行い、符号化データから画像データが生成されている。

このように、エンコード要求に対して、エンコード用データの転送処理とエンコード処理およびエンコード結果データの転送処理を順番に行うと、エンコード要求からその結果を取得できるまで、例えば3フレーム以上のレイテンシを要してしまう。したがって、リアルタイム処理を行うことができない。

このため、エンコード要求やデコード要求を複数実行可能とする機構(コマンドキューイング)を設けて、エンコード処理やデコード処理を連続的に実行可能とすることも行われている。

図2は、コマンドキューイング処理を示している。アプリケーションは、例えばエンコード処理後、すぐに次のエンコード処理を行うことができるように、エンコード要求をキューイングしておく。

アプリケーションからエンコードE1要求が行われると、デバイスドライバは、記憶されている画像データをエンコーダに転送するデータ転送処理を行う。デバイスドライバは、例えばメインメモリに記憶されているエンコードE1用データを読み出してエンコーダに転送可能とするためのデータ管理処理を行う。次に、デバイスドライバは、エンコードE1用データをエンコードハードウェアのエンコード用フレームバッファMA1に記憶させる。

また、アプリケーションから次のエンコードE2要求が行われると、デバイスドライバは、記憶されている画像データをエンコーダに転送するデータ転送処理を行う。データ転送処理では、例えば情報処理装置のメインメモリに記憶されているエンコードE2用データを読み出してエンコーダに転送可能とするためのデータ管理処理を行う。次に、デバイスドライバは、エンコードE2用データを読み出してエンコードハードウェアの空いているエンコード用フレームバッファMA2記憶させる。以下同様に、アプリケーションからエンコード要求が行われる毎に、エンコードハードウェアの空いているエンコード用フレームバッファに、エンコード用データを記憶させる。

エンコードハードウェアは、エンコード用フレームバッファMA1に記憶されているエンコードE1用データをコーデックプロセッサに読み出すエンコードE1用データ読出を行う。またエンコードハードウェアは、エンコードE1用データのエンコードE1処理、エンコードE1結果データをエンコード結果用フレームバッファMB1に書き込むエンコードE1結果データ書込を行う。

また、エンコードハードウェアは、エンコードE1用データの処理と並行してエンコードE2用データの処理を行う。すなわち、エンコード用フレームバッファMA2に記憶されているエンコードE2用データを他のコーデックプロセッサに読み出すエンコードE2用データ読出を行う。さらに、エンコードハードウェアは、エンコードE2用データのエンコードE2処理、エンコードE2結果データをエンコード結果用フレームバッファMB2に書き込むエンコードE2結果データ書込を行う。また、他のエンコード用フレームバッファにエンコード用データが記憶されたときは、このエンコード用データの処理も並行して行う。

デバイスドライバは、エンコード結果用フレームバッファMB1にエンコードE1結果データが書き込まれたとき、エンコードE1用結果データ転送を行い、エンコードE1結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードE1結果取得となる。

また、デバイスドライバは、エンコード結果用フレームバッファMB2にエンコードE2結果データが書き込まれたとき、エンコードE2用結果データ転送を並行して行い、エンコードE2結果データをメインメモリに転送する。したがって、アプリケーションは、エンコードE2結果取得となる。また、他のエンコード結果用フレームバッファにエンコード結果データが書き込まれたとき、エンコード用結果データ転送を並行して行う。

このように、エンコード要求に対する処理を並行して行うことができるので、リアルタイム処理が可能となる。また、デコード要求に対してもエンコード要求と同様な処理を行うことで、リアルタイム処理が可能となる。

また、処理を並行して行う方法として、例えば特許文献1では、1画面を複数画面に分割して、分割画面毎に符号化を行い得られた符号化データを1画面分統合することが行われている。また、特許文献2では、複数の映像ストリームを選択して、選択された映像ストリームの復号処理を並列に実行することが行われている。

2004−356857号公報 2009−044537号公報

ところで、キューイング処理でエンコード処理やデコード処理をリアルタイムに行うようにした場合、エンコード処理前(デコード処理前)のデータとエンコード処理後(デコード処理後)のデータをフレームバッファに蓄積しなければならない。したがって、多くのメモリリソースが必要となる。また、バッファの管理を行う必要があるから処理が複雑となってしまう。

さらに、エンコード要求やデコード要求のキューイングを行ったとき、キューイングされている要求のキャンセルを行うときには、キュー内の該当コマンドを消去したのち順序を繰り上げる処理や繰り上げ処理に伴うバッファ管理も合わせて行う必要がある。このため、キャンセル機構が複雑となる。

また、特許文献1や特許文献2のようにコーデック処理を並列に行う場合、メインメモリからコーデック処理前のデータの読み出しやコーデック処理後のデータのメインメモリへの書き込みを高速に行わないと、コーデック結果が得られるまでの時間が長くなる。

そこで、この発明では、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる情報処理装置と情報処理方法を提供することを目的とする。

この発明の第1の側面は、複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部と、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めて前記コーデック処理部に発行するコーデック指示部とを有し、前記コーデック処理部は、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う情報処理装置にある。

この発明においては、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタをコーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、このバッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。例えば、コーデック処理前やコーデック処理後のデータが記憶されるバッファの分散収集リストが作成されて、この分散収集リストが、転送単位で再リスト化されてバッファリストが作成される。

コーデック指示部から発行されるコーデック要求がエンコード要求であるとき、このエンコード要求に画面分割情報が含まれる。コーデック処理部は、画面分割情報に基づき複数のコーデックプロセッサに分割画面毎にコーデック処理前のデータを分配してエンコード処理を行う。また、転送単位は、分配とエンコード処理の少なくともいずれかに適したデータ量単位とする。例えばエンコード処理によって得られた符号化データのデータ転送処理において、転送単位のデータ量とするために符号化データに付加される無効データのデータ量を少なくして転送効率が高くなるように決定する。さらにコーデック処理部は、エンコード処理によって得られた符号化データを記憶するコーデックメモリに対して、分割画面毎に符号化データを記憶する領域を予め設定して、この領域を最大符号発生量のサイズとする。

コーデック指示部から発行されるコーデック要求がデコード要求であるとき、コーデック処理部は、バッファからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを複数のコーデックプロセッサに分配してそれぞれデコード処理を行う。また、転送単位は、分割画面毎の画像データの転送に適したデータ量単位とする。
さらに、コーデック処理部は、デコード処理で得られた画像データを、分割画面毎に予め設定されているメモリ領域の対応する領域に記憶させて、この記憶された画像データを画像表示領域に対応させて読み出して出力する。

この発明の第2の側面は、コーデック指示部によって、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する工程と、複数のコーデックプロセッサを用いてコーデック処理を行う前記コーデック処理部によって、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う工程とを具備する情報処理方法にある。

この発明によれば、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、バッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部では、コーデック要求に含まれたリスト情報に基づきバッファリストが取得されて、このバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みが行われる。このように、コーデック処理前とコーデック処理後の少なくともいずれかのデータの転送が高速に行われることから、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる。

エンコード要求が行われたときの従来の動作を説明するための図である。 コマンドキューイング処理を示した図である。 情報処理装置の構成を示す図である。 オペレーティングシステムを構成するプログラムの一部を示す図である。 エンコード時のパイプライン処理を示す図である。 エンコード時におけるオペレーティングシステムおよびコーデック処理部で行われる処理の流れを示した図である。 分散収集リストとバッファリストおよびリスト情報を説明するための図である。 コーデック処理部のデータ転送管理の具体例を示した図である。 エンコード処理動作の制御シーケンスを示した図である。 4Kサイズ画像のエンコード処理を示す図である。 4Kサイズ画像の他のエンコード処理を示す図である。 デコード時のパイプライン処理を示す図である。 デコード時におけるオペレーティングシステムおよびコーデック処理部で行われる処理の流れを示した図である。 分散収集リストとバッファリストおよびリスト情報を説明するための図である。 コーデック処理部のデータ転送管理の具体例を示した図である。 デコード処理動作の制御シーケンスを示した図である。 画像データの出力順序と表示画像との関係を例示した図である。

以下、発明を実施するための形態について説明する。なお、説明は以下の順序で行う。
1.情報処理装置の構成
2.第1の実施の形態(エンコード動作を行う場合)
2−1.エンコード動作におけるデータ転送
2−2.エンコード処理
2−3.データ転送管理の具体例
3.第2の実施の形態(デコード動作を行う場合)
3−1.デコード動作におけるデータ転送
3−2.デコード処理
3−3.データ転送管理の具体例
3−4.デコード結果の出力処理

<1.情報処理装置の構成>
図3は、情報処理装置10の構成を示している。情報処理装置10は、例えば、一般的なワークステーションやパーソナルコンピュータである。情報処理装置10は、コーデック指示部としての動作を行う本体部20と、複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部30を有している。

本体部20は、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示したバッファリストを作成する。また、本体部20は、コーデック要求にバッファリストを取得するためのリスト情報を含めてコーデック処理部30に発行する。

コーデック処理部30は、コーデック要求に含まれたリスト情報に基づきバッファリストを取得する。コーデック処理部30は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みを行う。

本体部20は、CPU21、メインメモリ22、チップセット23、HDD24、スロット(例えばPCIExpress(商標)の規格に対応したスロット)25、入出力インタフェース(I/F)部26等で構成されている。さらに、入出力I/F部26には、操作入力取得部27、通信部28、ドライブ29が接続されている。

CPU21は、情報処理装置10の全体を制御するものであり、HDD24等に記録されているオペレーティングシステムや種々のアプリケーションプログラムを動作させて、例えば動画編集や動画圧縮伸張処理等を行う。

メインメモリ22には、CPU21が実行するプログラムやデータなどが適宜記憶される。

チップセット23は、タイマ、割り込み、メインメモリ22をコントロールする回路など、必要な機能がまとめられたものである。

HDD24は、例えば、オペレーティングシステムや種々のアプリケーションプログラム、コーデック処理前のデータやコーデック処理後のデータ等が記録される。

スロット25は、情報処理装置10の機能の拡張等を行うためのボードが組み込み可能とされており、例えば動画像データのコーデック処理を行うときには、コーデック処理部30が組み込まれる。

操作入力取得部27は、ユーザの操作入力を受け、入出力I/F部26およびチップセット23を介して、CPU21にユーザの操作入力を通知する。

通信部28は、インターネットやLANをはじめとする外部のネットワーク、または、他の装置と接続されて通信を行う。

ドライブ29は、例えば、磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリなどのリムーバブルメディア50が装着可能とされている。ドライブ29は、装着されたリムーバブルメディア50に対して情報の読み出しや書き込みを行うことができるようになされている。

コーデック処理部30は、情報処理装置10で実行される例えばノンリニア編集等のアプリケーションで使用される周辺機器である。コーデック処理部30は、本体部20から供給されたデータのコーデック処理を実行する。また、コーデック処理部30は、コーデック処理後のデータを本体部20に供給したり、外部機器に出力する。

コーデック処理部30は、ローカルCPU31、コーデックインタフェース(I/F)部32、DMAC(Direct Memory Access Controller)33、コーデックメモリ34、複数のコーデックプロセッサ35、出力部36を有している。

ローカルCPU31は、本体部20からエンコード要求やデコード要求に基づき、コーデック処理部30の各部を制御して、エンコード要求やデコード要求に応じた処理をコーデック処理部30で行わせる。

コーデックI/F部32は、本体部20とのデータ転送や通信を行うためのインタフェースである。コーデックI/F部32は、例えば、本体部20から読み出されたコーデック処理前のデータをDMAC33に出力する。また、DMAC33から供給されたコーデック処理後のデータを本体部20に出力する。さらに、コーデックI/F部32は、本体部20からコーデック要求が発行されたとき、コーデック要求をローカルCPU31に出力する。また、ローカルCPU31からのコーデック完了通知を本体部20に出力する。さらに、ローカルCPU31から後述するリスト情報の要求を本体部20に出力して、本体部20から供給されたリスト情報をローカルCPU31に供給する。

DMAC33は、本体部20からコーデックメモリ34へのデータ転送を行うとき用いられるレジスタ33-Rと、コーデックメモリ34から本体部20へのデータ転送を行うときに用いられるレジスタ33-Tを備えている。DMAC33は、ローカルCPU31の制御に基づき、コーデックメモリ34と本体部20のメインメモリ22との間で、コーデック処理前のデータやコーデック処理後のデータのDMA転送を行う。

コーデックメモリ34は、DMAC33から供給されたコーデック処理前のデータや、コーデックプロセッサ35から供給されたコーデック処理後のデータを記憶する。

複数のコーデックプロセッサ35は、ローカルCPU31の制御に基づいてコーデック処理を行う。すなわち、各コーデックプロセッサ35は、コーデックメモリ34からコーデック対象のデータを読み出してコーデック処理を行う。また、コーデックプロセッサ35は、コーデック処理後のデータを、コーデックメモリ34においてコーデックプロセッサ毎に予め設定されている領域に記憶させる。

出力部36は、コーデック処理後のデータを外部機器に出力するとき、コーデックメモリ34に記憶されているコーデック処理後のデータを、外部機器に対応したフォーマットのデータとして出力する。

図4は、情報処理装置10の本体部20で動作するオペレーティングシステムを構成するプログラムの一部を示している。プログラムは、ユーザモードレイヤとカーネルモードレイヤに区分されている。また、ハードウェアレイヤはコーデック処理部30に相当する。

ユーザモードレイヤは、アプリケーションソフトウェア(以下「アプリケーション」という)101、API(Application Program Interface)102、ドライバインタフェース103で構成されている。また、カーネルモードレイヤは、I/Oマネージャ104、デバイスドライバ105、ファイルシステムドライバ106、メモリマネージャ107、マイクロカーネル108、HAL(Hardware Abstract Layer)109等のソフトウェアで構成されている。

アプリケーション101は、ユーザ等の要求に応じてコーデック要求を行うソフトウェアである。API102は、アプリケーション101でカーネルモードレイヤの各種サービスを利用可能とする。ドライバインタフェース103は、アプリケーション101がAPI102を介してカーネルモードレイヤのデバイスドライバを利用可能とする。

I/Oマネージャ104は、入出力を統合的に管理するモジュールである。I/Oマネージャ104の内部はさらに小さなコンポーネント、例えばデバイスドライバ105やファイルシステムドライバ106等に分かれている。

デバイスドライバ105は、特定のデバイスに依存した違いを吸収して、デバイスに依存しないインタフェースを上位のモジュールに提供する。このデバイスドライバ105は、コーデック要求に後述するバッファリストを取得するためのリスト情報を含めてコーデック処理部30に発行する。

ファイルシステムドライバ106は、HDD15等の記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、HDD15に保存されているファイルやフォルダへのアクセスを可能とする。

メモリマネージャ107は、各プロセスで仮想メモリ空間を利用可能とする。マイクロカーネル108は、スレッドのスケジューリングや割り込みおよび例外の処理などを行う。HAL109は、情報処理装置10のスロット等に接続されているハードウェアの種類による違いを吸収して、オペレーティングシステムの各サービスに対して抽象化したサービスを提供する。すなわち、HAL109は、オペレーティングシステムを構成する各種のサービスが、ハードウェアの種類による違いを意識することなくスロット等に接続されているハードウェアにアクセスできるようにする。

ハードウェアレイヤであるコーデック処理部30は、本体部20からコーデック処理前のデータを取得してコーデックメモリ34に記憶させる。また、コーデック処理部30は、複数のコーデックプロセッサ35で、コーデックメモリ34に記憶されているコーデック処理前のデータのコーデック処理を行い、コーデック処理後のデータをコーデックメモリ34に記憶させる。さらに、コーデックメモリ34に記憶されたコーデック処理後のデータを本体部20に転送して、コーデック要求に対してコーデック処理が終了したことを示す応答を行う。

<2.第1の実施の形態>
次に、第1の実施の形態として、コーデック指示部である本体部20からコーデック要求としてエンコード要求が行われる場合について説明する。なお、コーデック処理部30は、コーデック要求が発行されたとき、本体部20のメインメモリ22のエンコード用の画像データをエンコード処理して、符号化データ(エンコード結果データ)をメインメモリ22に書き戻すエンコード動作を行う。なお、各フレームはイントラ予測モードでエンコード処理する。

[2−1.エンコード動作におけるデータ転送]
情報処理装置10では、本体部20とコーデック処理部30間におけるデータ転送を効率よく行うため、データ転送処理をコーデック処理部30から行う。コーデック処理部30は、本体部20のメインメモリ22からエンコード用画像データをコーデック処理部30に転送する処理、およびコーデック処理部30からエンコード結果データをメインメモリ22に転送する処理をパイプライン化して行う。

図5は、エンコード時のパイプライン処理を示している。情報処理装置10の本体部20で動作するアプリケーション101は、メインメモリ22にエンコード用画像データを記憶させるための第1のバッファ22Aとエンコード結果データを記憶させるための第2のバッファ22Bを設けて、エンコード要求を行う。

デバイスドライバ105は、エンコード要求が発行されると、エンコード用画像データ管理とエンコード結果データ管理を行う。デバイスドライバ105は、エンコード用画像データ管理として、エンコード用画像データを記憶させるために設けた第1のバッファ22Aのメインメモリ22上の位置を示すポインタを記述した第1のバッファリストを作成する。また、第1のバッファリストは、コーデック処理部30からのデータ転送処理に応じた転送単位のリストとする。例えば、転送単位は、コーデック処理部30からパイプライン処理でデータ転送を行い易い単位とする。また、転送単位は、分割画面毎のエンコード用画像データを各コーデックプロセッサ35に供給する際に適した単位や、コーデックプロセッサ35におけるエンコード処理に適した単位とする。例えば、1つの分割画面のデータ量が転送単位の整数倍で、転送単位のデータ量がエンコード処理の処理単位の整数倍等となるように設定する。

なお、画面分割は、例えばエンコード処理の処理単位の整数倍のサイズで行い、分割画面毎にエンコード処理を行えるようにする。また、最後の分割画面のサイズが処理単位の整数倍とならないときは、無効データを付加してエンコード処理を行えるようにする。

また、デバイスドライバ105は、エンコード結果データ管理として、エンコード結果データを記憶させるために設けた第2のバッファ22Bの位置を示すポインタを記述した第2のバッファリストを作成する。また、第2のバッファリストは、コーデック処理部30からパイプライン処理でデータ転送を行うのに適した転送単位のリストとする。例えば、転送単位は、コーデック処理部30からパイプライン処理でデータ転送を行い易い単位とする。また、エンコード結果データは可変長のデータであることから、転送単位は、エンコード結果データの終了時にデータ量を転送単位とするために付加される無効データのデータ量を少なくして転送効率が高くなるように設定する。

デバイスドライバ105は、エンコード要求に、第1と第2のバッファリストを取得するためのリスト情報と、複数のコーデックプロセッサ35で分割画面毎にエンコード処理を行うための画面分割情報とを含めて、コーデック処理部30に出力する。

コーデック処理部30のローカルCPU31は、リスト情報に基づきDMAC33を制御して、メインメモリ22における第1のバッファ22Aからコーデックメモリ34にエンコード用画像データをDMA転送する。コーデックメモリ34は、エンコード用画像データを記憶させるための第1のバッファ34Aとエンコード結果データを格納させるための第2のバッファ34Bが配置されている。したがって、DMAC33は、エンコード用画像データを第1のバッファ34Aに記憶させる。

ローカルCPU31は、画面分割情報に基づきコーデックメモリ34またはコーデックプロセッサ35を制御して、第1のバッファ34Aに記憶されているエンコード用画像データを分割画面毎に複数のコーデックプロセッサ35に分配する。例えば図5では画面を上下に分割して、上側分割画面のエンコード用画像データをコーデックプロセッサ35-1、下側分割画面のエンコード用画像データをコーデックプロセッサ35-2に分配する。また、第1のバッファ34Aに記憶されたエンコード用画像データを順次コーデックプロセッサ35-1,35-2に供給して、メインメモリ22からのエンコード用画像データのデータ転送が終了する前にエンコード処理を開始させる。

また、メインメモリ22からのエンコード用画像データのデータ転送を行う際に、上側分割画面と下側分割画面の画像データを所定ライン分毎に切り替えて読み出すようにしてもよい。例えばエンコード処理の処理単位の整数倍であるライン数毎に切り替えて読み出す。このようにすれば、上側分割画面と下側分割画面のエンコード処理を並列に行うこともできる。

コーデックプロセッサ35-1,35-2は、分配されたエンコード用画像データのエンコード処理をそれぞれ行う。コーデックプロセッサ35-1,35-2は、エンコード処理を行うことにより得られたエンコード結果データを、コーデックメモリ34の第2のバッファ34Bに分割画面毎に記憶させる。

コーデック処理部30のローカルCPU31は、リスト情報に基づきDMAC33を制御して、コーデックメモリ34の第2のバッファ34Bから本体部20のメインメモリ22にエンコード結果データを転送する。また、コーデック処理部30は、画面分割情報に基づきエンコード結果データの転送順序を制御して、本体部20のメインメモリ22に正しい画面順序でエンコード結果データを記憶させる。

このように、エンコード用画像データやエンコード結果データの転送をコーデック処理部30で適した転送単位でパイプライン化して行うと、エンコード要求に対する処理を高速に行うことができるようになる。また、エンコード処理が分割画面単位で並列化して行われることから、エンコード処理に要する時間も短くなる。したがって、レイテンシの少ないエンコード処理が可能となる。このため、エンコード要求をキューイングする必要がなく、キャンセル処理の問題やキューイングのために多くのバッファが必要となってしまう問題等を回避できる。

図6は、エンコード時におけるオペレーティングシステムおよびコーデック処理部30で行われる処理の流れを示している。情報処理装置10の本体部20で動作するアプリケーション101は、API102に対しエンコード要求を発行する(S001)。

API102は、ファイルシステムドライバ106によって、HDD15から符号化するエンコード用画像データを取得する(S002)。

API102は、エンコード用画像データをメモリマネージャ107によってメインメモリ22にコピーする(S003)。

API102は、エンコード用画像データを記憶させるためのメインメモリ22上の第1のバッファ22Aと、エンコード結果データを記憶させるためのメインメモリ22上の第2のバッファ22Bの位置(アドレス)とサイズを示すバッファ情報を取得する。API102は、ドライバインタフェース103に対して、これらのバッファ情報を含めた形で、エンコード要求を発行する(S004)。

ドライバインタフェース103は、デバイスドライバ105に対して、API102からのエンコード要求を発行する(S005)。

デバイスドライバ105は、I/Oマネージャ104からメインメモリ22上の第1と第2のバッファ22A,22Bを示す分散収集リスト(SGL:scatter gather list)を取得する。また、デバイスドライバ105は、分散収集リストを上述のようにデータ転送処理に応じた転送単位で再リスト化して、第1と第2のバッファリストを作成する。なお、I/Oマネージャ104は、ドライバインタフェース103からのエンコード要求に含まれているバッファ情報に基づき、分散収集リストを作成する。

さらに、デバイスドライバ105は、作成した第1と第2のバッファリストをメインメモリ22上に記憶させて、第1と第2のバッファリストの位置(アドレス)やサイズを示すリスト情報をエンコード要求に含める。また、デバイスドライバ105は、複数のコーデックプロセッサ35で分割画面毎にエンコード処理を行うための分割情報もエンコード要求に含める。デバイスドライバ105は、リスト情報と分割情報を含めたエンコード要求を、コーデック処理部30のローカルCPU31に出力する(S007)。

コーデック処理部30のローカルCPU31は、デバイスドライバ105から通知されたリスト情報に基づきDMAC33を制御する。DMAC33は、エンコード用画像データをメインメモリ22上の第1のバッファ22Aからコーデック処理部30におけるコーデックメモリ34の第1のバッファ34Aに転送させる(S008,S009,S010)。

ローカルCPU31は、コーデックメモリ34の第1のバッファ34Aに記憶されたエンコード用画像データを、逐時対応するコーデックプロセッサ35でエンコード処理させる(S011,S012)。

コーデックプロセッサ35は、エンコード用画像データのエンコード処理を行い、エンコード結果データをコーデックメモリ34における第2のバッファ34Bの対応する領域に記憶させる(S013)。

ローカルCPU31は、デバイスドライバ105から通知されたリスト情報に基づきDMAC33を制御する。DMAC33は、エンコード処理が完了した分割画面毎に、エンコード結果データをコーデックメモリ34の第2のバッファ34Bからメインメモリ22の第2のバッファ22BへDMA転送させる(S014,S015,S016)。

API102は、エンコード結果データの転送が終了したとき、アプリケーション101に対して、エンコード要求に対する処理が終了したことを示すエンコード結果応答を行う(S017,S018)。

次に、分散収集リストとバッファリストおよびリスト情報について、図7を用いて説明する。なお、図7では、動作を容易に理解できるようにアドレス値を例示しているが、アドレス値は図7の値に限られない。

情報処理装置10で動作するオペレーティングシステムでは、メインメモリ22上のアドレス(物理アドレス)を仮想メモリ空間へアドレスマッピングする手法が用いられている。

また、オペレーティングシステム内で管理するプログラム等が記憶されるアドレス空間(アプリケーションエリア)は小さいため、仮想メモリ空間として使用していないプログラムのアドレスを一部物理メモリ空間へ退避させることが行われている。さらに、物理メモリ空間は様々なデータを分散して記憶させることが可能であり、仮想メモリ空間で確保した連続したメモリ領域は、物理メモリ空間では特別な作業をしない限り物理メモリ空間へ分散されてアドレッシングされる。例えば、アプリケーションがメインメモリ22にデータを記憶させる場合、仮想メモリ空間上に連続するアドレスのデータ領域を設けることで、メモリマネージャ107が物理メモリ空間へ最小単位(例えば4KB)で分散したデータ格納領域を設ける。

アプリケーション101は、物理メモリ空間へ直接アクセスすることができず、連続したアドレスでの制御を行うために仮想メモリ空間のアドレスを使用してデータ制御を行っている。また、物理メモリ空間上のアドレスは、コーデック処理部30からアクセス可能である。さらに、物理メモリ空間は、オペレーティングシステムのカーネル内で動作するデバイスドライバ105からアドレスを取得することは可能であるが、デバイスドライバ内での物理メモリ空間への直接制御は行えない。このため、デバイスドライバ105もアプリケーションと同様に仮想メモリ空間上のアドレスを使用して制御を行う。したがって、デバイスドライバ105は、仮想メモリ空間と物理メモリ空間を関係付けたバッファリストをメインメモリ22上に記憶させる。さらに、デバイスドライバ105は、バッファリストを記憶させた物理メモリ空間の位置やサイズを示すリスト情報をエンコード要求に含めてコーデック処理部30に発行する。

コーデック処理部30は、リスト情報に基づきバッファリストを取得できる。したがって、コーデック処理部30は、バッファリストに基づきアプリケーション101が配置した第1のバッファ22Aや第2のバッファ22Bが物理メモリ空間のいずれの位置であるかをポインタで判別する。すなわち、コーデック処理部30は、ポインタを用いて第1のバッファ22Aや第2のバッファ22Bに対してDMA転送を行うことができるようになる。

例えばユーザ空間のデータ領域をメインメモリ22の物理空間に配置する(S021)。このとき、オペレーティングシステムのメモリマネージャ107は、例えば最小4KB単位で配置する(S022)。したがって、データ領域は、例えば図7に示すように分散されて配置されてしまう場合が生じる。なお、データバッファは、エンコード用画像データを記憶させる第1のバッファ22Aやエンコード結果データを記憶させる第2のバッファ22Bに相当する。

デバイスドライバ105は、I/Oマネージャ104に対して分散収集リストの作成要求を行い、I/Oマネージャ104は分散収集リストを作成する(S023)。なお、作成された分散収集リストは、システム空間に書き込まれる(S024)。

分散収集リストでは、コーデック処理部30からのアクセスで用いる物理メモリ空間のアドレスが記憶されているが、仮想メモリ空間に書き込まれているため、コーデック処理部30で参照することができない。したがって、デバイスドライバ105は、分散収集リストをコーデック処理部30から参照可能とするため、I/Oマネージャ104に対して本体部20とコーデック処理部30との両者で参照可能なコモンバッファの作成要求を行う。I/Oマネージャ104はコモンバッファをメインメモリ22に配置して、このコモンバッファを示すコモンバッファ構造体を作成する(S025)。なお、コモンバッファは、コモンバッファの情報をコーデック処理部30から連続して読み出すことができるように、連続した領域として配置する。

コモンバッファ構造体は、仮想メモリ空間と物理メモリ空間を関連付けるための情報である。コモンバッファ構造体は、コモンバッファの実体(例えば分散収集リストを再リストして作成した第1と第2のバッファリスト)の仮想アドレスと、コモンバッファの物理メモリ空間上のアドレスを示すコモンバッファMDL(Memory Descriptor List)を有している(S026)。

コモンバッファMDLは、コモンバッファの実体が連続して記憶されている物理メモリ空間のポインタを示している(S027)。このコモンバッファMDLのポインタは、物理メモリ空間のアドレスを示していることから、このコモンバッファMDLで示されたポインタの位置の情報を用いることで、コーデック処理部30からコモンバッファの実体を読み出すことが可能となる(S028)。

このように作成されるコモンバッファ構造体において、デバイスドライバ105は、分散収集リストをコーデック処理部30におけるデータ転送に応じた転送単位に再リスト化してバッファリストを作成して、コモンバッファの実体とする。例えばコーデック処理部30におけるエンコード用画像データのデータ転送に適した転送単位が1KBであるとき、4KB単位で作成されている第1のバッファ22Aの分散収集リストを1KB単位で再リスト化して第1のバッファリストとする。このようにして、エンコード処理前のデータが記憶される第1のバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示した第1のバッファリストを作成する。また、例えばコーデック処理部30におけるエンコード結果データのデータ転送に適した転送単位が1KBであるとき、4KB単位で作成されている第2のバッファ22Bの分散収集リストを1KB単位で再リスト化して第2のバッファリストとする。このようにして、エンコード処理後のデータが記憶される第2のバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示した第2のバッファリストを作成する。(S029)。

なお、分散収集リストを再リスト化して、第1および第2のバッファリストを作成すると、物理メモリ空間上に設けたコモンバッファの実体は、第1および第2のバッファリストの情報に更新される。また、情報の更新に伴いコモンバッファ構造体の内容も更新される。

デバイスドライバ105は、再リスト化された分散収集リストであるバッファリストが記憶されている位置(物理アドレス)やサイズを示すリスト情報を、エンコード要求に含めて、コーデック処理部30に発行する(S030)。

コーデック処理部30のDMAC33は、リスト情報に基づき第1や第2のバッファリストを取得して、この第1や第2のバッファリストに基づき、アプリケーションで確保された第1および第2のバッファ22A,22Bに対して、データ転送を行うことができる。また、第1および第2のバッファリストは、データ転送に適した転送単位とされている。したがって、フレーム単位でデータ転送を行う際に、一般的に用いられるDMA処理およびコーデックプロセッサとの転送処理を細分化して、パイプライン化して転送処理を連続的に行うことで転送処理時間を短縮できるようになる。

[2−2.エンコード処理]
次に、コーデック処理部30で行われるエンコード処理について説明する。エンコード要求を受けたコーデック処理部30のローカルCPU31は、リスト情報に基づきメインメモリ22からバッファリストを取得する。ローカルCPU31は、バッファリストに基づきエンコード用画像データが記憶されているメインメモリ22上の第1のバッファ22Aの位置(物理アドレス)を判別する。また、エンコード結果データを記憶するメインメモリ22上の第2のバッファ22Bの位置(物理アドレス)を判別する。この判別結果に基づきDMAC33を制御して、メインメモリ22の第1のバッファ22Aからエンコード用画像データの1フレーム分をコーデックメモリ34に転送させる。さらに、ローカルCPU31は、分割情報に基づいてエンコード用画像データを各コーデックプロセッサ35に分配する。なお、バッファリストはデータ転送に適した転送単位で作成されていることから、データ転送に適した転送単位でエンコード用画像データの転送が行われる。

各コーデックプロセッサ35は、エンコード用画像データのエンコード処理を行う。エンコード処理を行うことにより得られるエンコード結果データは、可変長サイズである。したがって、ローカルCPU31は、コーデックメモリ34の第2のバッファ34Bに、各分割画面のエンコード用画像データをエンコード処理したときの最大符号発生量と等しいサイズで、予め分割画面毎に領域を確保しておく。各コーデックプロセッサ35は、エンコード処理を行うことにより得られたエンコード結果データを、第2のバッファ34Bにける領域に記憶させる。なお、コーデックプロセッサ35からコーデックメモリ34へのデータ転送を高速化する行うため、バーストアクセス(例えば、256B単位)で連続にデータ転送を行う。この場合、有効なエンコード結果データの最後からバーストアクセス可能なメモリ境界アドレスまでは、デコード処理に影響を与えない無効データ(例えば0データ)でパディングする。また、エンコード結果データをコーデックメモリ34に記憶した最終アドレス位置から、事前に確保した領域の最後までは、デコード処理に影響を与えない無効データで初期化する。

コーデックメモリ34の第2のバッファ34Bに記憶されているエンコード結果データは、バッファリストの転送単位で、DMAC33によってコーデックメモリ34の第2のバッファ34Bからメインメモリ22の第2のバッファ22BにDMA転送される。

エンコード結果データの転送では、転送単位を例えば4KBやその整数倍のように大きな転送サイズとすると、エンコード結果データだけでなく無効データが多く含まれてしまう場合が生じる。このため、上述のようにデバイスドライバ105は、分散収集ストの再リスト化を行い、無効データが多く含まれることがないように転送単位を例えば4KBよりも小さい1KBとしたバッファリストを作成する。

[2−3.データ転送管理の具体例]
図8は、コーデック処理部のデータ転送管理の具体例を示している。エンコード用画像データは、1フレームが1920画素×1080ラインとする。また、コーデックプロセッサ35で例えば16画素×16ライン単位でエンコード処理を行う場合、16ラインの整数倍例えば272ライン毎に画面を分割して4つの分割画面毎にエンコード処理を行う。なお、コーデック処理部30は、最初の分割画面をコーデックプロセッサ35-1でエンコード処理する。また、コーデック処理部30は、2番目の分割画面をコーデックプロセッサ35-2、3番目の分割画面をコーデックプロセッサ35-1、最後の分割画面をコーデックプロセッサ35-2でそれぞれエンコード処理を行う。さらに、1つの分割画面を272ライン(エンコード処理単位の整数倍)とすると、1フレームは1088ラインとなる。したがって、最後の分割画面では264ライン分のエンコード処理を行う。

DMAC33は、バーストリードを行い、本体部20のメインメモリ22から4KB単位でエンコード用画像データを読み出してレジスタ33-Rに記憶させる。さらに、DMAC33は、コーデックメモリ34の第1のバッファ34Aに対してバーストライトを行い、レジスタ33-Rに記憶されているエンコード用画像データを、256B単位で記憶させる。なお、エンコード用画像データは、分割画面毎に第1のバッファ34Aの対応する領域に記憶される。

また、第1のバッファ34Aにエンコード処理単位分のエンコード用画像データが記憶されると、記憶されているエンコード用画像データのバーストリードを行い、256B単位でエンコード用画像データを読み出してコーデックプロセッサ35に供給する。例えばコーデックプロセッサ35は、16ライン単位でエンコード処理を行う。この場合、最初の分割画面の16ライン分のエンコード用画像データが第1のバッファ34Aの対応する領域に記憶されたとき、この記憶されたエンコード用画像データをコーデックプロセッサ35-1でエンコード処理する。また、次の16ライン分のエンコード用画像データが第1のバッファ34Aに記憶されたとき、この記憶されたエンコード用画像データをコーデックプロセッサ35-1でエンコード処理する。以下同様にエンコード処理を行う。また、第2の分割画面のエンコード用画像データに対しても同様な処理を行い、エンコード用画像データをコーデックプロセッサ35-2でエンコード処理する。さらに、第3の分割画面のエンコード用画像データをコーデックプロセッサ35-1、最後の分割画面のエンコード用画像データをコーデックプロセッサ35-2でエンコード処理する。

コーデックプロセッサ35-1,35-2は、エンコード用画像データのエンコード処理を行い、エンコード結果データを生成する。また、エンコード結果データのバースライトを行い、256B単位でコーデックメモリ34の第2のバッファ34Bに記憶させる。なお、エンコード結果データは、分割画面毎に第2のバッファ34Bの対応する領域に記憶される。また、エンコード結果データは可変長データであることから、各分割画面に対応する領域において、エンコード結果データが記憶されていない領域は無効データの領域とする。なお、分割画面毎に設けた領域は、272ライン分のエンコード用画像データをエンコード処理したときの最大符号発生量のサイズとして、エンコード結果データを対応する領域にすべて記憶できるようにする。

このように、コーデックメモリ34とコーデックプロセッサ35-1,35-2との間でデータ転送をパイプライン処理して、順次エンコード処理やエンコード結果データの出力を行う。

DMAC33は、バーストリードを行い、第2のバッファ34Bから256B単位でエンコード結果データを読み出してレジスタ33-Tに記憶させる。さらに、DMAC33は、本体部20のメインメモリ22に対してバーストライトを行い、レジスタ33-Tに記憶されているエンコード結果データを、1KB単位でメインメモリ22の第2のバッファ22Bに記憶させる。なお、エンコード結果データは可変長データであることから、エンコード結果データの最後のデータ転送では、無効データを加えて1KB単位としてデータ転送を行う。さらに、コーデックメモリ34では、エンコード結果データが画面領域毎に分かれて記憶されている。したがって、分割画面毎のエンコード結果データをメインメモリ22に連続して記憶させることで、分割画面毎のエンコード結果データをメインメモリ22で連続データとして統合させることができる。

なお、1920×1080/4:2:2であるエンコード用画像データの16ライン分のエンコード結果データは約30KB(440Mbps/30Frame中の16/1088=1/68 ) なので、例えば分割画面が16ライン分であるとき、転送単位を4KBにすると、4KBに満たない端数分の無効データの割合は最大で1/7.5の割合になる。しかし転送単位を1KBとすると、1KBに満たない端数分の無効データの割合は最大で1/30の割合となり、無効データの割合を少なくできる。さらに、画面分割を行ったときの分割画面のサイズを大きくして(レイテンシを少し延ばし)、各コーデックプロセッサ35でエンコード処理を行う。このように分割画面のサイズを大きくすると、分割画面の数が少なくなるので、エンコード結果データに1KBに満たない端数分として付加される無効データは、分割単位が小さい場合に比べて少なくなり、無効データの割合はほとんど無視できるようになる。

図9は、図8に示すエンコード処理動作の制御シーケンスを示している。

アプリケーション101は、エンコード要求を発行する(S041)。

デバイスドライバ105は、エンコード要求を受けると、I/Oマネージャ104に対して、分割収集リストの作成要求を行う(S042)。

I/Oマネージャ104は、要求された分割収集リストを作成して、デバイスドライバ105に作成完了を通知する(S043)。

デバイスドライバ105は、分割収集リストの作成完了後、I/Oマネージャ104に対して、コモンバッファの作成要求を行う(S044)。

I/Oマネージャ104は、要求されたコモンバッファを配置して、コモンバッファを示すコモンバッファ構造体を作成して、デバイスドライバ105に作成完了を通知する(S045)。

デバイスドライバ105は、分散収集リストの再リスト化を行う。デバイスドライバ105は、エンコード用画像データを記憶するための第1のバッファ22Aの分散収集リストと、エンコード結果データを記憶するための第2のバッファ22Bの分散収集リストの再リスト化を行う。デバイスドライバ105は、分散収集リストをコーデック処理部30からデータ転送処理に応じた転送単位で再リスト化して、第1と第2のバッファリストを作成してI/Oマネージャ104に供給する(S046)。

I/Oマネージャ104は、デバイスドライバ105で第1と第2のバッファリストが作成されると、物理メモリ空間上に設けたコモンバッファの実体を、第1および第2のバッファリストの情報に更新する。また、実体の更新に伴いコモンバッファ構造体の内容も更新して、デバイスドライバ105に完了を通知する(S047)。

デバイスドライバ105は、コモンバッファに記憶された第1と第2のバッファリストに基づいてコーデック処理部30からデータ転送処理を行うことができるように、第1と第2のバッファリストを取得するためのリスト情報をエンコード要求に含める。さらに、デバイスドライバ105は、エンコード要求に分割情報も含めて、コーデック処理部30のローカルCPU31に発行する(S048)。

ローカルCPU31は、リスト情報に基づき、DMAC33によってエンコード用画像データをメインメモリ22からコーデックメモリ34に転送させる。例えば、ローカルCPU31は、リスト情報に基づきバッファリストをメインメモリ22から読み出して、バッファリストに基づきDMAC33を制御する。DMAC33は、メインメモリ22の第1のバッファ22Aに記憶されているエンコード用画像データをコーデックメモリ34の第1のバッファ34Aに転送させる。バッファリストは、エンコード用画像データが記憶された第1のバッファ22Aの位置をデータ転送に適した転送単位で示している。したがって、DMAC33は、最適な転送単位でエンコード用画像データをパイプライン処理で高速転送できる(S049)。

ローカルCPU31は、分割情報に基づきコーデックプロセッサ35-1またはコーデックメモリ34を制御して、最初の分割画面のエンコード処理を行う。例えばコーデックプロセッサ35-1は、コーデックメモリ34の第1のバッファ34Aに、最初の分割画面のエンコード用画像データが16ライン分(エンコード処理単位)記憶される毎に、このエンコード用画像データのエンコード処理を行う(S050-1)。また、コーデックプロセッサ35-1は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ34の第2のバッファ34Bにおける対応する領域に記憶させる(S051-1)。

ローカルCPU31は、分割情報に基づきコーデックプロセッサ35-2またはコーデックメモリ34を制御して、2番目の分割画面のエンコード処理を行う。例えばコーデックプロセッサ35-2は、コーデックメモリ34の第1のバッファ34Aに、2番目の分割画面のエンコード用画像データが16ライン分(エンコード処理単位)記憶される毎に、このエンコード用画像データのエンコード処理を行う(S050-2)。また、コーデックプロセッサ35-2は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ34の第2のバッファ34Bにおける対応する領域に記憶させる(S051-2)。

ローカルCPU31は、分割情報に基づきコーデックプロセッサ35-1またはコーデックメモリ34を制御して、最初の分割画面のエンコード処理終了後、第3の分割画面のエンコード処理を行う。例えばコーデックプロセッサ35-1は、コーデックメモリ34の第1のバッファ34Aに記憶されている第3の分割画面のエンコード用画像データを用いてエンコード処理を行う(S050-3)。また、コーデックプロセッサ35-1は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ34の第2のバッファ34Bにおける対応する領域に記憶させる(S051-3)。

ローカルCPU31は、分割情報に基づきコーデックプロセッサ35-2またはコーデックメモリ34を制御して、2番目の分割画面のエンコード処理終了後、最後の分割画面のエンコード処理を行う。例えばコーデックプロセッサ35-2は、コーデックメモリ34の第1のバッファ34Aに記憶されている最後の分割画面のエンコード用画像データを用いてエンコード処理を行う(S050-4)。また、コーデックプロセッサ35-2は、エンコード処理によって得られたエンコード結果データを、コーデックメモリ34の第2のバッファ34Bにおける対応する領域に記憶させる(S051-4)。

ローカルCPU31は、リスト情報に基づき、DMAC33によってエンコード結果データをコーデックメモリ34からメインメモリ22に転送させる。すなわち、ローカルCPU31とDMAC33は、バッファリストに基づき、コーデックメモリ34の第2のバッファ34Bに記憶されているエンコード結果データをメインメモリ22の第2のバッファ22Bに転送させる。バッファリストは、エンコード結果データが記憶される第2のバッファ22Bの位置をデータ転送に適した転送単位で示している。したがって、DMAC33は、最適な転送単位でエンコード結果データをパイプライン処理で高速転送できる(S052)。

ローカルCPU31は、エンコード処理の終了を示すエンコード完了通知を、デバイスドライバ105に供給する。デバイスドライバ105は、エンコード完了通知を受けると、コモンバッファを解放し、API102に対してエンコード完了通知を返すことで、エンコード処理が完了する(S053)。

なお、図8では、コーデックプロセッサ35-1,35-2で1画面分のエンコード用画像データのエンコード処理を行っているが、分割画面数だけコーデックプロセッサを設けて、各コーデックプロセッサでそれぞれ異なる分割画面のエンコード処理を行ってもよい。また、図10、11に示すように4Kサイズ(4096画素×2160ライン)のエンコード用画像データにおいても、HDサイズ(1920画素×1080ライン)の場合と同様に処理することができる。

[2−4.データ転送管理の他の具体例]
図10は、4Kサイズの画面を最初のラインから544ライン毎に分割して、4分割画面を2つのコーデックプロセッサでエンコード処理を行う場合を例示している。この場合、コーデックプロセッサ35-1は、最初の分割画面(1〜544ライン目までの544ライン分)と3番目の分割画面(1089〜1632ライン目までの544ライン分)のエンコード処理を行う。また、コーデックプロセッサ35-2は、2番目の分割画面(545〜1088ライン目までの544ライン分)と最後の分割画面(1633〜2160ライン目までの528ライン分)のエンコード処理を行う。

図11は、4Kサイズの画面を最初のラインから272ライン毎に分割して、8分割画面を4つのコーデックプロセッサでエンコード処理を行う場合を例示している。この場合、コーデックプロセッサ35-1は、最初の分割画面(1〜272ライン目までの272ライン分)と5番目の分割画面(1089〜1360ライン目までの272ライン分)のエンコード処理を行う。また、コーデックプロセッサ35-2は、2番目の分割画面(273〜544ライン目までの272ライン分)と6番目の分割画面(1361〜1632ライン目までの272ライン分)のエンコード処理を行う。コーデックプロセッサ35-3は、3番目の分割画面(545〜816ライン目までの272ライン分)と7番目の分割画面(1633〜1904ライン目までの272ライン分)のエンコード処理を行う。また、コーデックプロセッサ35-4は、4番目の分割画面(817〜1088ライン目までの272ライン分)と最後の分割画面(1905〜2160ライン目までの256ライン分)のエンコード処理を行う。

このように画面分割を行い、複数のコーデックプロセッサでエンコード処理を行うことで、エンコード用画像データが4Kサイズであっても、HDサイズのエンコード用画像データをエンコード処理する場合と同様に処理できる。

このように、第1の実施の形態では、コーデック指示部によって、エンコード処理前とエンコード処理後のデータが記憶される第1と第2のバッファ22A,22Bの位置を示すポインタをデータ転送処理に応じた転送単位で示した第1と第2のバッファリストが作成される。また、コーデック指示部から発行されるエンコード要求に第1と第2のバッファリストを取得するためのリスト情報が含められる。また、コーデック処理部は、エンコード要求に含まれたリスト情報に基づき第1と第2バッファリストを取得する。コーデック処理部は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、第1のバッファ22Aからエンコード処理前のデータの読み出しや第2のバッファ22Bへエンコード処理後のデータの書き込みが行われる。このため、エンコード要求から要求に応じたエンコード結果が得られるまでに要する時間を短縮できる。また、複雑なキューイング構造を用意することなく、容易にエンコード処理が実現できる。また、キューイング構造をなくすことで、キャンセル機構が不要となる。さらに、メインメモリ22とコーデック処理部30のメモリ容量を削減でき、かつ、複数バッファの管理が不要となる。また、複数トラックに対するエンコード処理の実現も容易である。

また、第1のバッファ22Aから読み出したエンコード処理前のデータは、複数のコーデックプロセッサに分配してエンコード処理が行われるので、エンコード処理に要する時間も短くなり、例えばリアルタイムでエンコード結果を得ることが可能となる。さらに、第1のバッファリストの転送単位は、例えばコーデック処理部における分配およびエンコード処理に適したデータ量単位とされる。また、第2のバッファリストの転送単位は、転送単位のデータ量とするために符号化データに付加される無効データのデータ量を少なくなるように決定される。したがって、パイプライン処理で効率よくデータ転送を行うことができるようになる。

また、コーデックメモリ34とコーデックプロセッサ35-1,35-2との間でデータ転送をパイプライン処理して、エンコード処理等が順次行われるので、エンコード用画像データを読み込んでからエンコード結果データが得られるまでに要する時間も短くできる。

さらに、エンコード要求に画面分割情報が含まれるとき、画面分割情報に基づき複数のコーデックプロセッサに分割画面毎にエンコード処理前の画像が分配される。また、分割画面毎に符号化データを記憶する領域がコーデックメモリに設定されて、各領域が最大符号発生量のサイズとされる。したがって、分割画面毎にエンコード処理を行っても、符号化データをコーデックメモリに記憶して、コーデックメモリから第2のバッファ22Bに正しく転送することが可能となる。

<3.第2の実施の形態>
次に、第2の実施の形態として、コーデック指示部である本体部20からコーデック要求としてデコード要求を行い、本体部20のメインメモリ22に記憶されているデコード用データをコーデック処理部30でデコード処理するデコード動作について説明する。なお、デコード動作では、デコード処理後の画像データ(デコード結果画像データ)をメインメモリ22に記憶させる場合の動作と、外部機器に出力する場合の動作について説明する。なお、デコード用データは、各フレームをイントラ予測モードでエンコード処理して得られた符号化データとする。

[3−1.デコード動作におけるデータ転送]
情報処理装置10では、本体部20とコーデック処理部30間におけるデータ転送を効率よく行うため、データ転送処理をコーデック処理部30から行う。コーデック処理部30は、本体部20のメインメモリ22からデコード用データをコーデック処理部30に転送する処理、およびコーデック処理部30からデコード結果画像データをメインメモリ22に転送する処理をパイプライン化して行う。

図12は、デコード時のパイプライン処理を示している。情報処理装置10の本体部20で動作するアプリケーション101は、メインメモリ22にデコード用データを記憶させるための第1のバッファ22Aとデコード結果画像データを記憶させるための第2のバッファ22Bを配置して、デコード要求を行う。

デバイスドライバ105は、デコード要求が発行されると、デコード用データ管理とデコード結果画像データ管理を行う。デバイスドライバ105は、デコード用データ管理として、デコード用データを記憶させるために設けた第1のバッファ22Aのメインメモリ22上の位置を記述した第1のバッファリストを作成する。また、第1のバッファリストは、コーデック処理部30からのデータ転送処理に応じた転送単位とする。例えば、転送単位は、コーデック処理部30からパイプライン処理でデータ転送を行い易い単位とする。

また、デバイスドライバ105は、デコード結果画像データ管理として、デコード結果画像データを記憶させるために設けた第2のバッファ22Bの位置を記述した第2のバッファリストを作成する。第2のバッファリストは、コーデック処理部30からパイプライン処理でデータ転送を行い易い転送単位とする。例えば、転送単位は、コーデック処理部30からパイプライン処理でデータ転送を行い易い単位とする。また、転送単位は、コーデック処理部30が設けられた複数基板で画像データの出力を分割画面毎に行うとき、分割画面毎の画像データの転送に適したデータ量単位とする。例えば、1つの分割画面のデータ量が転送単位の整数倍となるように設定する。

デバイスドライバ105は、デコード要求に、第1と第2のバッファリストを取得するためのリスト情報を含めてコーデック処理部30に出力する。

コーデック処理部30のローカルCPU31は、リスト情報に基づきDMAC33を制御して、メインメモリ22における第1のバッファ22Aからコーデックメモリ34にデコード用データをDMA転送する。コーデックメモリ34は、デコード用データを記憶させるための第1のバッファ34Aとデコード結果画像データを記憶させるための第2のバッファ34Bが配置されている。したがって、DMAC33は、デコード用データを第1のバッファ34Aに記憶させる。

また、ローカルCPU31は、デコード用データを分析して、デコード用データを分割する。ローカルCPU31は、例えばデコード用データに含まれている画像サイズ情報や、マクロブロックの大きさ等を示すマクロブロック情報等を取得して、これらの情報からラインの先頭位置を特定する。さらに、ローカルCPU31は、デコード用データを、所定ライン数の分割画面毎に分割する。また、分割位置の決定では、コーデックメモリ34に対してデコード結果画像データをバースト転送するときの境界位置も考慮して、バースト転送の境界が分割位置となるように決定する。ローカルCPU31は、データ転送量とデコード用データの分割位置を管理して、実際にデコードすべき分割画面に応じて、必要なデコード用データをコーデックメモリ34から複数のコーデックプロセッサ35に分配する。なお、図12では、上側分割画面のデータをデータU、下側分割画面のデータをデータLとして示している。

コーデックプロセッサ35-1,35-2は、分配されたデコード用データのデコード処理をそれぞれ行う。コーデックプロセッサ35-1,35-2は、デコード処理を行うことにより得られたデコード結果画像データを、コーデックメモリ34の第2のバッファ34Bに分割画面毎に記憶させる。なお、第2のバッファ34Bには、分割画面の画像サイズに応じてマッピングした領域を予め確保しておき、コーデックプロセッサ35-1,35-2は、デコード結果画像データを、分割画面に対応した領域に記憶させる。

コーデック処理部30のローカルCPU31は、リスト情報に基づきDMAC33を制御して、コーデックメモリ34の第2のバッファ34Bから本体部20のメインメモリ22にデコード結果画像データを転送する。また、コーデック処理部30は、分割画面の順序に応じてデコード結果データの転送順序を制御して、本体部20のメインメモリ22に正しい分割画面順序でデコード結果画像データを記憶させる。

このように、デコード用データやデコード結果画像データの転送をコーデック処理部30で適した転送単位でパイプライン化して行うと、デコード要求に対する処理を高速に行うことができるようになる。また、デコード処理が分割画面単位で並列化して行われることから、デコード処理に要する時間も短くなる。したがって、レイテンシの少ないデコード処理が可能となる。このため、デコード要求をキューイングする必要がなく、キャンセル処理の問題やキューイングのために多くのバッファが必要となってしまう問題等を回避できる。

また、デコード用データの分割は、デコード結果画像データを外部機器に出力するときの伝送形式に対応するように分割を行い、デコード結果画像データの出力は、正しくデコード後の画像を表示できるように外部機器に対応させて行う。

例えば4Kサイズの画面を、HD−SDI伝送(SDI1本あたりは HDサイズのデータ転送)に対応するように分割して、分割画面のデコード用データを複数のコーデックプロセッサ35でそれぞれデコード処理する。また、複数のコーデックプロセッサ35で生成されて第2のバッファ34Bに記憶されているデコード結果画像データは、外部機器における表示動作に対応させて出力する。

図13は、デコード時におけるオペレーティングシステムおよびコーデック処理部30で行われる処理の流れを示している。情報処理装置10の本体部20で動作するアプリケーション101は、API102に対しデコード要求を発行する(S101)。

API102は、ファイルシステムドライバ106によって、HDD15から符号化するデコード用データを取得する(S102)。

API102は、デコード用データをメモリマネージャ107によってメインメモリ22にコピーする(S103)。

API102は、デコード用データを記憶させるメインメモリ22上の第1のバッファ22Aと、デコード結果画像データを記憶させるメインメモリ22上の第2のバッファ22Bの位置(アドレス)とサイズを示すバッファ情報を取得する。API102は、ドライバインタフェース103に対して、これらのバッファ情報を含めた形で、デコード要求を発行する(S104)。

ドライバインタフェース103は、デバイスドライバ105に対して、API102からのデコード要求を発行する(S105)。

デバイスドライバ105は、I/Oマネージャ104からメインメモリ22上の第1と第2のバッファ22A,22Bを示す分散収集リストを取得する。また、デバイスドライバ105は、分散収集リストを上述のように最適な転送単位に再リスト化して第1と第2のバッファリストを作成する。なお、I/Oマネージャ104は、ドライバインタフェース103からのデコード要求に含まれているバッファ情報に基づき、分散収集リストを作成する。

さらに、デバイスドライバ105は、作成した第1と第2のバッファリストをメインメモリ22上に記憶させて、第1と第2のバッファリストの位置(アドレス)やサイズを示すリスト情報をデコード要求に含める。デバイスドライバ105は、リスト情報を含めたデコード要求を、2つの基板PA,PBのコーデック処理部30のローカルCPU31に出力する(S107-a,S107-b)。

基板PAのコーデック処理部30のローカルCPU31は、デバイスドライバ105から通知されたリスト情報に基づきDMAC33を制御する。DMAC33は、デコード用データをメインメモリ22上の第1のバッファ22Aからコーデック処理部30におけるコーデックメモリ34の第1のバッファ34Aに転送させる(S108,S109−a,S110)。

ローカルCPU31は、デコード用データの分析を行い、分割位置を決定する。さらに、ローカルCPU31は、決定された分割位置で分割したデコード用データを、対応するコーデックプロセッサ35でデコード処理させる(S111,S112)。

コーデックプロセッサ35は、デコード用データのデコード処理を行い、デコード結果画像データをコーデックメモリ34における第2のバッファ34Bの対応する領域に記憶させる(S113)。

ローカルCPU31は、デバイスドライバ105から通知されたリスト情報に基づきDMAC33を制御する。DMAC33は、デコード処理が完了した分割画面毎に、デコード結果画像データをコーデックメモリ34の第2のバッファ34Bからメインメモリ22の第2のバッファ22BへDMA転送させる(S114,S115,S116−a)。

また、基板PBのコーデック処理部30でも基板Aと同様な処理を行う(S109−b,S116−b)。

なお、基板PBでは、基板PAと異なる分割画面のデコード用データを用いてデコード処理を行い、基板PAと異なる分割画面のデコード結果画像データを生成する。

API102は、デコード結果画像データの転送が終了したとき、アプリケーション101に対して、デコード要求に対する処理が終了したことを示すデコード結果応答を行う(S117,S118)。

次に、分散収集リストとバッファリストおよびリスト情報について、図14を用いて説明する。なお、図14では、動作を容易に理解できるようにアドレス値を例示しているが、アドレス値は図14の値に限られない。

上述のように、情報処理装置10で動作するオペレーティングシステムでは、メインメモリ22上のアドレス(物理アドレス)を仮想メモリ空間へアドレスマッピングする手法が用いられている。

また、オペレーティングシステム内で管理するプログラム等が記憶されるアドレス空間(アプリケーションエリア)は小さいため、仮想メモリ空間として使用していないプログラムのアドレスを一部物理メモリ空間へ退避させることが行われている。さらに、物理メモリ空間は様々なデータを分散して記憶することが可能であり、仮想メモリ空間で確保した連続したメモリ領域は、物理メモリ空間では特別な作業をしない限り物理メモリ空間へ分散されてアドレッシングされる。例えば、アプリケーションがメインメモリ22にデータを記憶する場合、仮想メモリ空間上に連続するアドレスのデータ領域を設けることで、メモリマネージャ107が物理メモリ空間へ最小単位(例えば4KB)で分散したデータ格納領域を設ける。

アプリケーション101は、物理メモリ空間へ直接アクセスすることができず、連続したアドレスでの制御を行うために仮想メモリ空間のアドレスを使用してデータ制御を行っている。また、物理メモリ空間上のアドレスは、コーデック処理部30からアクセス可能である。さらに、物理メモリ空間は、オペレーティングシステムのカーネル内で動作するデバイスドライバ105からアドレスを取得することは可能であるが、デバイスドライバ内での物理メモリ空間への直接制御は行えない。このため、デバイスドライバ105もアプリケーションと同様に仮想メモリ空間上のアドレスを使用して制御を行う。したがって、デバイスドライバ105は、仮想メモリ空間と物理メモリ空間を関係付けたバッファリストをメインメモリ22上に記憶させる。さらに、デバイスドライバ105は、バッファリストを記憶した物理メモリ空間の位置を示すリスト情報をデコード要求に含めてコーデック処理部30に発行する。

コーデック処理部30は、リスト情報に基づき仮想メモリ空間と物理メモリ空間を関係付けたバッファリストを取得できる。したがって、コーデック処理部30は、バッファリストに基づきアプリケーション101が配置した第1のバッファ22Aや第2のバッファ22Bが物理メモリ空間のいずれの位置であるか判別する。すなわち、コーデック処理部30は、ポインタを用いて第1のバッファ22Aや第2のバッファ22Bに対してDMA転送を行うことができるようになる。

例えばユーザ空間のデータ領域をメインメモリ22の物理空間に配置する(S121)。このとき、オペレーティングシステムのメモリマネージャ107は、例えば4KB単位で配置する(S122)。したがって、データ領域は、例えば図14に示すように分散されて配置されてしまう場合が生じる。なお、データバッファは、デコード用データを記憶する第1のバッファ22Aやデコード結果画像データを記憶する第2のバッファ22Bに相当する。

デバイスドライバ105は、I/Oマネージャ104に対して分散収集リストの作成要求を行い、I/Oマネージャ104は分散収集リストを作成する(S123)。なお、作成された分散収集リストは、システム空間に書き込まれる(S124)。

分散収集リストでは、コーデック処理部30からのアクセスで用いる物理メモリ空間のアドレスが記憶されているが、仮想メモリ空間に書き込まれているため、コーデック処理部30で参照することができない。したがって、デバイスドライバ105は、分散収集リストをコーデック処理部30から参照可能とするため、I/Oマネージャ104に対して本体部20とコーデック処理部30との両者で参照可能なコモンバッファの作成要求を行う。I/Oマネージャ104はコモンバッファをメインメモリ22に配置して、このコモンバッファを示すコモンバッファ構造体を作成する(S125)。なお、コモンバッファは、コモンバッファの情報をコーデック処理部30から連続して読み出すことができるように、連続した領域として配置する。

コモンバッファ構造体は、仮想メモリ空間と物理メモリ空間を関連付けるための情報である。コモンバッファ構造体は、コモンバッファの実体(例えば分散収集リストを再リストして作成した第1と第2のバッファリスト)の仮想アドレスと、コモンバッファの物理メモリ空間上のアドレスを示すコモンバッファMDL(Memory Descriptor List)を有している(S126)。

コモンバッファMDLは、コモンバッファの実体が連続して記憶されている物理メモリ空間のポインタを示している(S127)。このコモンバッファMDLのポインタは、物理メモリ空間のアドレスを示していることから、このコモンバッファMDLで示されたポインタの位置の情報を用いることで、コーデック処理部30からコモンバッファの実体を読み出すことが可能となる(S128)。

このように作成されるコモンバッファ構造体において、デバイスドライバ105は、分散収集リストをコーデック処理部30におけるデータ転送に応じた転送単位に再リスト化してバッファリストを作成して、コモンバッファの実体とする。例えばコーデック処理部30におけるデコード用データのデータ転送に適した転送単位が4KBであるとき、例えば4KBよりも大きい単位で作成されている第1のバッファ22Aの分散収集リストを4KB単位で再リスト化して第1のバッファリストとする。このようにして、デコード処理前のデータが記憶される第1のバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示した第1のバッファリストを作成する。また、例えばコーデック処理部30におけるデコード結果画像データのデータ転送に適した転送単位が1KB単位であるとき、4KB単位で作成されている第2のバッファ22Bの分散収集リストを1KB単位で再リスト化して第2のバッファリストとする。このようにして、デコード処理後のデータが記憶される第2のバッファの位置を示すポインタを、コーデック処理部30からのデータ転送処理に応じた転送単位で示した第2のバッファリストを作成する。(S129)。

なお、分散収集リストを再リスト化して、第1および第2のバッファリストを作成すると、物理メモリ空間上に設けたコモンバッファの実体は、第1および第2のバッファリストの情報に更新される。また、情報の更新に伴いコモンバッファ構造体の内容も更新される。

デバイスドライバ105は、再リスト化された分散収集リストであるバッファリストが記憶されている位置(物理アドレス)やサイズを示すリスト情報を、デコード要求に含めて、コーデック処理部30に発行する(S130)。

コーデック処理部30のDMAC33は、リスト情報に基づき第1や第2のバッファリストを取得して、この第1や第2のバッファリストに基づき、アプリケーションで確保された第1および第2のバッファ22A,22Bに対して、データ転送を行うことができる。また、第1および第2のバッファリストは、データ転送に適した転送単位とされている。したがって、フレーム単位でデータ転送を行う際に、一般的に用いられるDMA処理およびコーデックプロセッサとの転送処理を細分化して、パイプライン化して転送処理を連続的に行うことで転送処理時間を短縮できるようになる。

[3−2.デコード処理]
次に、コーデック処理部30で行われるデコード処理について説明する。デコード要求を受けたコーデック処理部30のローカルCPU31は、リスト情報に基づきメインメモリ22からバッファリストを取得する。ローカルCPU31は、バッファリストに基づきデコード用データが記憶されているメインメモリ22上の第1のバッファ22Aの位置(物理アドレス)や、デコード結果画像データを記憶する第2のバッファ22Bの位置(物理アドレス)を判別する。この判別結果に基づきDMAC33を制御して、メインメモリ22の第1のバッファ22Aからデコード用データの1フレーム分をコーデックメモリ34に転送させる。さらに、ローカルCPU31は、デコード用データの解析を行い、デコード用データを分割画面毎に分割して各コーデックプロセッサ35に分配する。なお、バッファリストはデータ転送に適した転送単位で作成されていることから、データ転送に適した転送単位でデコード用データの転送が行われる。

各コーデックプロセッサ35は、デコード用データを用いてデコード処理を行う。ここで、デコード結果画像データは、分割画面のサイズに応じたデータ量となる。したがって、ローカルCPU31は、予めコーデックメモリ34の第2のバッファ34Bに、デコード結果画像データを記憶する領域を画面分割数と分割画面のサイズに応じて確保しておく。各コーデックプロセッサ35は、デコード用データのデコード処理を行い、デコード処理を行うことにより得られたデコード結果画像データを、第2のバッファ34Bの対応する領域に記憶させる。なお、コーデックプロセッサ35からコーデックメモリ34へのデータ転送を高速化する行うため、バーストアクセス(例えば、256B単位)で連続にデータ転送を行う。

コーデックメモリ34の第2のバッファ34Bに記憶されているデコード結果画像データは、バッファリストの転送単位で、DMAC33によってコーデックメモリ34の第2のバッファ34Bからメインメモリ22の第2のバッファ22BにDMA転送される。

デコード結果画像データの転送では、転送単位を大きな転送サイズとすると、分割画像のデコード結果画像データの終了時にデータ量が転送単位とならず無効データが多く含まれてしまう場合が生じる。このため、上述のようにデバイスドライバ105は、分散収集ストの再リスト化を行い、無効データが多く含まれることがないように転送単位を例えば小さい1KBとしたバッファリストを作成する。

また、コーデックメモリ34の第2のバッファ34Bにおける分割画面毎の領域からデコード結果画像データを並列に出力部36から出力させる。このようにすれば、複数の表示デバイスで1画面を構成して画像表示を行う外部装置に対して、各表示デバイスに対して、該表示デバイスが表示される画像部分のデコード結果画像データを出力させることができる。

[3−3.データ転送管理の具体例]
図15は、コーデック処理部のデータ転送管理の具体例を示している。デコード用データは、1フレームが3840画素×2160ラインとする。また、デコード用データは、16ライン単位でエンコード処理された符号化データとする。

また、基板PAのコーデック処理部30は、1フレームの画像の上半分の領域のデコード処理を行い、基板PBのコーデック処理部30は、1フレームの画像の下半分の領域のデコード処理を行う。

基板PAのコーデック処理部30におけるコーデックプロセッサ35-1は、1フレームの画像の上半分の領域において、最初の分割画像(1〜272ライン目までの272ライン分(16ラインの整数倍))のデコード処理を行う。また、コーデックプロセッサ35-1は、1フレームの画像の上半分の領域において、2番目の分割画像(273〜544ライン目までの272ライン分)のデコード処理を行う。

基板PAのコーデック処理部30におけるコーデックプロセッサ35-2は、1フレームの画像の上半分の領域において、3番目の分割画像(545〜816ライン目までの272ライン分)のデコード処理を行う。また、コーデックプロセッサ35-2は、1フレームの画像の上半分の領域において、最後の分割画像(817〜1080ライン目までの264ライン分)のデコード処理を行う。なお、符号化データが16ライン単位でエンコード処理された符号化データであるとき、最後の分割画像のデコード処理を行うと、817〜1088ライン目までの画像データが得られる。

基板PBのコーデック処理部30におけるコーデックプロセッサ35-1では、デコード処理を行い、1フレームの画像の下半分の領域において、最初の分割画像のデコード処理を行う。ここで、符号化データが16ライン単位でエンコード処理された符号化データであるとき、下半分の領域の最初である1081ラインは、1073〜1088ライン目のエンコード処理単位に含まれる。したがって、下半分の領域のデコード処理では、1073〜2160ラインのエンコード処理結果である符号化データを用いる。したがって、コーデックプロセッサ35-1は、1フレームの画像の下半分の領域において、最初の分割画像(1073〜1344ライン目までの272ライン分)のデコード処理を行う。

また、コーデックプロセッサ35-1は、1フレームの画像の上半分の領域において、2番目の分割画像(1345〜1616ライン目までの272ライン分)のデコード処理を行う。

基板PBのコーデック処理部30におけるコーデックプロセッサ35-2は、1フレームの画像の下半分の領域において、3番目の分割画像(1617〜1888ライン目までの272ライン分)のデコード処理を行う。また、コーデックプロセッサ35-2は、1フレームの画像の下半分の領域において、最後の分割画像(1889〜2160ライン目までの264ライン分)のデコード処理を行う。

基板PAと基板PBのDMAC33は、バーストリードを行い、本体部20のメインメモリ22から4KB単位でデコード用データを読み出してレジスタ33-Rに記憶させる。さらに、DMAC33は、コーデックメモリ34の第1のバッファ34Aに対してバーストライトを行い、レジスタ33-Rに記憶されているデコード用データを、256B単位で記憶させる。

また、コーデックプロセッサ35-1,35-2は、デコード用データの解析結果に基づいて、第1のバッファ34Aに記録されているデコード用データを、分割画面毎にバーストリードを行い、256B単位でデコード用データを読み出してデコード処理を行う。さらに、コーデックプロセッサ35-1,35-2は、デコード処理を行うことにより得られたデコード結果画像データのバーストライトを行い、第2のバッファ34Bにおける分割画面と対応する領域に記憶させる。

このように、コーデックメモリ34とコーデックプロセッサ35-1,35-2との間でデータ転送をパイプライン処理して、順次デコード処理やデコード結果画像データの出力を行う。

DMAC33は、バーストリードを行い、第2のバッファ34Bから256B単位でデコード結果画像データを読み出してレジスタ33-Tに記憶させる。さらに、DMAC33は、本体部20のメインメモリ22に対してバーストライトを行い、レジスタ33-Tに記憶されているデコード結果画像データを、1KB単位でメインメモリ22の第2のバッファ22Bに記憶させる。

図16は、図15に示すデコード処理動作の制御シーケンスを示している。

アプリケーション101は、デコード要求を発行する(S141)。

デバイスドライバ105は、デコード要求を受けると、I/Oマネージャ104に対して、分割収集リストの作成要求を行う(S142)。

I/Oマネージャ104は、要求された分割収集リストを作成して、デバイスドライバ105に作成完了を通知する(S143)。

デバイスドライバ105は、分割収集リストの作成完了後、I/Oマネージャ104に対して、コモンバッファの作成要求を行う(S144)。

I/Oマネージャ104は、要求されたコモンバッファを配置して、コモンバッファを示すコモンバッファ構造体を作成して、デバイスドライバ105に作成完了を通知する(S145)。

デバイスドライバ105は、分散収集リストの再リスト化を行う。デバイスドライバ105は、デコード用データを記憶するための第1のバッファ22Aの分散収集リストと、デコード結果画像データを記憶するための第2のバッファ22Bの分散収集リストの再リスト化を行う。デバイスドライバ105は、分散収集リストをコーデック処理部30からデータ転送処理に応じた転送単位で再リスト化して、第1と第2のバッファリストを作成してI/Oマネージャ104に供給する(S146)。

I/Oマネージャ104は、デバイスドライバ105で第1と第2のバッファリストが作成されると、物理メモリ空間上に設けたコモンバッファの実体を、第1および第2のバッファリストの情報に更新する。また、実体の更新に伴いコモンバッファ構造体の内容も更新して、デバイスドライバ105に完了を通知する(S147)。

デバイスドライバ105は、コモンバッファに記憶された第1と第2のバッファリストに基づいてコーデック処理部30からデータ転送処理を行うことができるように、第1と第2のバッファリストを取得するためのリスト情報をデコード要求に含める。さらに、デバイスドライバ105は、1フレーム画像のいずれの領域に対するデコード処理を基板PA,PBで行うか示した領域割り当て情報を、デコード要求に含めて基板PAと基板PBのローカルCPU31に供給する(S148−a,S148−b)。

基板PAと基板PBのローカルCPU31は、リスト情報や領域割り当て情報に基づき、DMAC33によってデコード用データをメインメモリ22からコーデックメモリ34に転送させる。例えば、ローカルCPU31は、リスト情報に基づきバッファリストをメインメモリ22から読み出して、バッファリストに基づきDMAC33を制御する。DMAC33は、メインメモリ22の第1のバッファ22Aに記憶されているデコード用データをコーデックメモリ34の第1のバッファ34Aに転送させる。バッファリストは、デコード用データが記憶された第1のバッファ22Aの位置をデータ転送に適した転送単位で示している。したがって、DMAC33は、最適な転送単位でデコード用データをパイプライン処理で高速転送できる(S149−a,S149−b)。

基板PAと基板PBのローカルCPU31は、デコード用データの解析を行い、解析結果に基づきデコード用データを分割画面毎にコーデックプロセッサ35-1,35-2に分配して、デコード処理を行わせる。コーデックプロセッサ35-1,35-2は、デコード処理によって得られたデコード結果画像データを、コーデックメモリ34の第2のバッファ34Bにおける対応する領域に記憶させる。

基板PAと基板PBのローカルCPU31は、リスト情報に基づき、DMAC33によってデコード結果画像データをコーデックメモリ34からメインメモリ22に転送させる。すなわち、ローカルCPU31とDMAC33は、バッファリストに基づき、コーデックメモリ34の第2のバッファ34Bに記憶されているデコード結果画像データをメインメモリ22の第2のバッファ22Bに転送させる。バッファリストは、デコード結果画像データが記憶される第2のバッファ22Bの位置をデータ転送に適した転送単位で示している。したがって、DMAC33は、最適な転送単位でデコード結果画像データをパイプライン処理で高速転送できる(S150−a、S150−b)。

基板PAのローカルCPU31は、デコード処理の終了を示すデコード完了通知を、デバイスドライバ105に供給する(S151−a)。基板PBのローカルCPU31は、デコード処理の終了を示すデコード完了通知を、デバイスドライバ105に供給する(S151−b)。デバイスドライバ105は、基板PA,PBの両方のローカルCPU31からデコード完了通知を受けると、コモンバッファを解放し、API102に対してデコード完了通知を返すことで、デコード処理が完了する(S152)。

さらに、基板PA,PBのコーデックメモリ34の第2のバッファ34Bからデコード結果画像データを読み出してSDI方式で並列に出力することで、例えばHDサイズである4つ表示デバイスHD1〜HD4を用いて4Kサイズの画像表示を行うことができる。

[3−4.デコード結果の出力処理]
次に、出力部36からデコード結果画像データを出力する場合についての具体例を説明する。デコード用データは、4Kサイズ(3840画素×2160ライン,4:4:4)の画像データがエンコード処理されたデータとする。また、出力部36に接続される外部機器は、HDサイズの表示パネルを4枚用いて4Kサイズ画像の表示を行う。また各表示パネルは、2本のHD−SDI(High Definition Serial Digital Interface)入力や、DualLink HD−SDI入力、1本の3G−SDI(SMPTE 424M)入力を有している。

基板PAでは、例えば2本の3G−SDI出力のそれぞれで、1920画素×1080ラインの画像データを出力する必要がある。同様に、基板PBでは、例えば2本の3G−SDI出力のそれぞれで、1920画素×1080ラインの画像データを出力する必要がある。このため、基板PAと基板PBで共通してデコード処理が行われる16ライン分(1073〜1088ライン目)について、1フレームの上半分の領域のデコード処理を行う基板PAでは、1073〜1080ライン目を出力する。また、1フレームの下半分の領域のデコード処理を行う基板PBでは、1081〜1088ライン目を出力する。すなわち、基板PAと基板PBは、それぞれ3840画素×1080ライン相当の画像データを出力する。

さらに、基板PAと基板PBは、スプリッタ機能を用いて、3840画素×1080ライン相当の画像、1920画素×1080ラインの左右2画面に分割して出力させる。
図17は、画像データの出力順序と表示画像を示しており、図17の(A)はスプリッタ機能を用いていない場合、図17の(B)はスプリッタ機能を用いた場合を示している。 スプリッタ機能を用いていない場合、3840画素分の画像データが1ライン分として表示装置の1つの表示パネルに供給される。しかし、表示パネルの解像度は1920画素×1080ラインであり、コーデック処理部30から出力した1ライン分の画像データは、表示パネルで2ライン分の画像データとされる。したがって、3840画素×540ライン分の画像データを読み出して各表示パネルに供給したとき、各表示パネルでは対応する領域の画像を表示することができない。

したがって、コーデック処理部30は、分割画面毎に予め設定されているメモリ領域に記憶されている画像データを画像表示領域に対応させて読み出して出力する。すなわち、コーデック処理部30は、スプリッタ機能を用いて水平方向を2分割して、表示パネルの解像度に対応させた1920画素×1080ライン分の画像データを各表示パネルに供給する。この場合、各表示パネルに供給される画像データは、水平方向の画素数および垂直方向のライン数が等しいことから、各表示パネルでは対応する領域の画像を表示することができる。

なお、図15と図17では3GーSDIを用いて画像データの出力を行う場合を示しているが、HD−SDI方式を用いる場合、基板PAと基板PBのそれぞれでは4本の出力(DualLink HD-SDI 2系統)から画像データを出力する。

このように、デコード用データの分割処理を行い、分割後のデコード用データのデコード処理を並列して行うことで、デコード処理を高速に行うことができる。また、アプリケーションから、複雑なキューイング構造を用意することなく、容易にデコード処理を実現できる。さらに、キューイング構造をなくすことで、アプリケーション側のランダム再生におけるレスポンス低下が無くなり、かつ、キャンセル機構が不要となる。また、要求単位毎に完結した処理を実現できるので、ソフトデコードのような柔軟性が確保でき、複数ビデオクリップに対するデコード処理の実現が容易になる。また、キューイングのための複数のバッファを設ける必要がないので、構成が簡単でバッファの管理等も容易となる。

さらに、コーデック処理部30を設けた基板で、基板サイズの制約により所望の数の出力端子を設けることができなくとも、コーデック処理部30が設けられた基板を複数用いて、各基板で対応する分割画面のデコード処理を行えばよい。すなわち、複数の基板を用いて得られた所望の数の出力端子を使用して、各出力端子から担当する表示領域の画像データを出力できる。また、基板間のデータの受け渡しが必要ないことから、データの受け渡しのためのバッファ等を用意しなくてよい。

以上のように、第2の実施の形態では、コーデック指示部において、デコード処理前とデコード処理後のデータが記憶される第1のバッファ22Aと第2のバッファ22Bの位置を示すポインタをデータ転送処理に応じた転送単位で示した第1と第2のバッファリストが作成される。また、コーデック指示部から発行されるデコード要求に第1と第2のバッファリストを取得するためのリスト情報が含められる。また、コーデック処理部では、デコード要求に含まれたリスト情報に基づき第1と第2バッファリストを取得する。コーデック処理部は、取得したバッファリストに基づきパイプライン処理でデータ転送処理を行い、第1のバッファ22Aからデコード処理前のデータの読み出しや第2のバッファ22Bへデコード処理後のデータの書き込みが行われる。このため、デコード要求から要求に応じたデコード結果が得られるまでに要する時間を短縮できる。また、複雑なキューイング構造を用意することなく、容易にデコード処理が実現できる。また、キューイング構造をなくすことで、キャンセル機構が不要となる。さらに、メインメモリ22とコーデック処理部30のメモリ容量を削減でき、かつ、複数バッファの管理が不要となる。また、複数トラックに対するデコード処理の実現も容易である。

また、コーデック処理部30では、第1のバッファ22Aからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを複数のコーデックプロセッサに分配してデコード処理が行われる。このため、デコード処理に要する時間も短くなり、例えばリアルタイムでデコード結果を得ることが可能となる。さらに、第2のバッファリストの転送単位は、例えば、分割画面毎の画像データの転送に適したデータ量単位とされるので、パイプライン処理で効率よくデータ転送を行うことができるようになる。

また、コーデックメモリ34とコーデックプロセッサ35-1,35-2との間でデータ転送をパイプライン処理して、デコード処理等が順次行われるので、デコード用データを読み込んでからデコード結果画像データが得られるまでに要する時間も短くできる。

さらに、コーデック処理部30では、デコード処理で得られた画像データを、分割画面毎に予め設定されているメモリ領域の対応する領域に記憶して、この記憶された画像データを画像表示領域に対応して読み出して出力する。このため、複数の表示デバイスを用いて1画面を構成する場合でも、正しく画像表示を行うことができる。

以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。

この発明の情報処理装置および情報処理方法では、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストが作成されて、バッファリストを取得するためのリスト情報がコーデック要求に含められてコーデック処理部に発行される。複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部では、コーデック要求に含まれたリスト情報に基づきバッファリストが取得されて、このバッファリストに基づきパイプライン処理でデータ転送処理を行い、バッファからコーデック処理前のデータの読み出しやバッファへコーデック処理後のデータの書き込みが行われる。このように、コーデック処理前とコーデック処理後の少なくともいずれかのデータの転送が高速に行われることから、コーデック要求から要求に応じたコーデック結果が得られるまでに要する時間を簡単な構成で短縮化できる。したがって、画像データの記録や再生を行う電子機器、画像データの編集処理を行う編集装置等に適している。

10・・・情報処理装置、20・・・本体部、21・・・CPU、22・・・メインメモリ、22A,34A・・・第1のバッファ、22B,34B・・・第2のバッファ、23・・・チップセット、24・・・HDD、25・・・スロット、26・・・入出力インタフェース(I/F)部、27・・・操作入力取得部、28・・・通信部、29・・・ドライブ、30・・・コーデック処理部、31・・・ローカルCPU、32・・・コーデックインタフェース(I/F)部、33・・・DMAC(Direct Memory Access Controller)、33-R,33-T・・・レジスタ、34・・・コーデックメモリ、35,35-1〜35-4・・・コーデックプロセッサ、36・・・出力部、50・・・リムーバブルメディア、101・・・アプリケーションソフトウェア、102・・・API(Application Program Interface)、103・・・ドライバインタフェース、104・・・I/Oマネージャ、105・・・デバイスドライバ、106・・・ファイルシステムドライバ、107・・・メモリマネージャ、108・・・マイクロカーネル、109・・・HAL(Hardware Abstract Layer)、

Claims (12)

  1. 複数のコーデックプロセッサを用いてコーデック処理を行うコーデック処理部と、
    コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めて前記コーデック処理部に発行するコーデック指示部とを有し、
    前記コーデック処理部は、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う情報処理装置。
  2. コーデック指示部は、前記バッファの分散収集リストを作成して、該分散収集リストを前記転送単位で再リスト化して前記バッファリストを作成する請求項1記載の情報処理装置。
  3. 前記コーデック処理部は、前記バッファから読み出したコーデック処理前のデータを、前記複数のコーデックプロセッサに分配してコーデック処理を行う請求項2記載の情報処理装置。
  4. 前記エンコード指示部は、前記コーデック要求としてエンコード要求を発行し、エンコード処理を行う画像データのデータ転送処理において、前記コーデック処理部における前記分配および前記エンコード処理に適したデータ量単位を前記転送単位とする請求項3記載の情報処理装置。
  5. 前記コーデック指示部は、前記エンコード要求に画面分割情報を含めて前記コーデック処理部に発行し、
    前記コーデック処理部は、前記エンコード要求が発行されたとき、前記バッファから読み出した画像データを、前記画面分割情報に基づき前記複数のコーデックプロセッサに分割画面毎に分配してエンコード処理を行う請求項4記載の情報処理装置。
  6. 前記コーデック処理部は、前記エンコード処理によって得られた符号化データを記憶するコーデックメモリを有し、
    前記コーデック処理部は、前記分割画面毎に前記符号化データを記憶する領域を前記コーデックメモリに設定して、該領域を最大符号発生量のサイズとした請求項5記載の情報処理装置。
  7. 前記コーデック指示部は、前記コーデック要求としてエンコード要求を発行し、前記コーデック処理部でエンコード処理によって得られた符号化データのデータ転送処理において、前記転送単位のデータ量とするために前記符号化データに付加される無効データのデータ量を少なくして転送効率が高くなるように、前記転送単位を決定する請求項3記載の情報処理装置。
  8. 前記コーデック指示部は、前記コーデック要求としてデコード要求を行い、
    前記コーデック処理部は、前記デコード要求が発行されたとき、前記バッファからパイプライン処理で読み出した符号化データを分割画面毎に分割して、分割後の符号化データを前記複数のコーデックプロセッサに分配してデコード処理を行う請求項3記載の情報処理装置。
  9. 前記デコード指示部は、前記デコード処理で得られた画像データのデータ転送において、前記分割画面毎の画像データの転送に適したデータ量単位を前記転送単位とする請求項8記載の情報処理装置。
  10. 前記コーデック処理部は、前記デコード処理で得られた画像データを、前記分割画面毎に予め設定されているメモリ領域の対応する領域に記憶させて、該記憶された画像データを画像表示領域に対応させて読み出して出力する請求項8記載の情報処理装置。
  11. 前記コーデック処理部は、前記バッファから読み出されたコーデック処理前のデータをパイプライン処理で前記コーデックプロセッサに供給してコーデック処理を行う請求項3記載の情報処理装置。
  12. コーデック指示部によって、コーデック処理前とコーデック処理後の少なくともいずれかのデータが記憶されるバッファの位置を示すポインタを、前記コーデック処理部からのデータ転送処理に応じた転送単位で示したバッファリストを作成して、コーデック要求に前記バッファリストを取得するためのリスト情報を含めてコーデック処理部に発行する工程と、
    複数のコーデックプロセッサを用いてコーデック処理を行う前記コーデック処理部によって、前記コーデック要求に含まれた前記リスト情報に基づき前記バッファリストを取得して、該バッファリストに基づきパイプライン処理でデータ転送処理を行い、前記バッファからコーデック処理前のデータの読み出しや前記バッファへコーデック処理後のデータの書き込みを行う工程と
    を具備する情報処理方法。
JP2010145439A 2010-06-25 2010-06-25 情報処理装置と情報処理方法 Withdrawn JP2012010182A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010145439A JP2012010182A (ja) 2010-06-25 2010-06-25 情報処理装置と情報処理方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010145439A JP2012010182A (ja) 2010-06-25 2010-06-25 情報処理装置と情報処理方法
CN201110170352A CN102300089A (zh) 2010-06-25 2011-06-20 信息处理装置和信息处理方法
US13/164,120 US20110317763A1 (en) 2010-06-25 2011-06-20 Information processing apparatus and information processing method

Publications (1)

Publication Number Publication Date
JP2012010182A true JP2012010182A (ja) 2012-01-12

Family

ID=45352547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010145439A Withdrawn JP2012010182A (ja) 2010-06-25 2010-06-25 情報処理装置と情報処理方法

Country Status (3)

Country Link
US (1) US20110317763A1 (ja)
JP (1) JP2012010182A (ja)
CN (1) CN102300089A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012150611A (ja) * 2011-01-18 2012-08-09 Ricoh Co Ltd データ処理装置、及びデータ処理方法
KR20160140012A (ko) * 2015-05-29 2016-12-07 엔쓰리엔 주식회사 영상 데이터 전송 및 수신 방법 및 장치
KR101839415B1 (ko) * 2017-02-20 2018-03-16 엔쓰리엔 주식회사 영상 데이터 전송 및 수신 방법 및 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9426476B2 (en) * 2012-07-09 2016-08-23 Hewlett-Packard Development Company, L.P. Video stream
TW201442015A (zh) * 2013-04-19 2014-11-01 Hon Hai Prec Ind Co Ltd 高解析度顯示器驅動系統及方法
KR20160022726A (ko) * 2014-08-20 2016-03-02 한국전자통신연구원 부호화 장치 및 방법
CN105580010B (zh) 2014-09-01 2019-02-19 华为技术有限公司 访问文件的方法、装置和存储系统
US10447753B2 (en) * 2016-10-13 2019-10-15 Verizon Digital Media Services Inc. Encoding scalability with brokers
US10547491B2 (en) * 2017-08-28 2020-01-28 Genband Us Llc Transcoding with a vector processing unit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068918B1 (en) * 1998-05-01 2006-06-27 Samsung Electronics Co., Ltd. Recording medium for storing real time recording/reproduction information, method and apparatus for recording and reproducing in real time, and file operating method using the same
JP4672104B2 (ja) * 2000-04-26 2011-04-20 パナソニック株式会社 監視用デジタル画像記録再生装置
US6931497B2 (en) * 2003-01-09 2005-08-16 Emulex Design & Manufacturing Corporation Shared memory management utilizing a free list of buffer indices
JP2005244898A (ja) * 2004-02-27 2005-09-08 Fujitsu Ltd ビデオ符号化データ合成装置
US7984369B2 (en) * 2006-01-20 2011-07-19 Silicon Image, Inc. Concurrent code checker and hardware efficient high-speed I/O having built-in self-test and debug features
US8526303B2 (en) * 2006-01-31 2013-09-03 Broadcom Corporation Flow control mechanism in a data processing pipeline
JP4881210B2 (ja) * 2007-04-09 2012-02-22 キヤノン株式会社 撮像装置、画像処理装置及びそれらの制御方法
KR100793286B1 (ko) * 2007-05-02 2008-01-10 주식회사 코아로직 버퍼 메모리의 사용량이 작은 디지털 영상 코덱 및 그 제어방법
JP2009044537A (ja) * 2007-08-09 2009-02-26 Osaka Univ 映像ストリーム処理装置及びその制御方法、プログラム、記録媒体
JP4998312B2 (ja) * 2008-02-15 2012-08-15 富士通セミコンダクター株式会社 画像処理装置、撮像装置及び画像処理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012150611A (ja) * 2011-01-18 2012-08-09 Ricoh Co Ltd データ処理装置、及びデータ処理方法
KR20160140012A (ko) * 2015-05-29 2016-12-07 엔쓰리엔 주식회사 영상 데이터 전송 및 수신 방법 및 장치
KR101710011B1 (ko) * 2015-05-29 2017-03-08 엔쓰리엔 주식회사 영상 데이터 전송 및 수신 방법 및 장치
KR101839415B1 (ko) * 2017-02-20 2018-03-16 엔쓰리엔 주식회사 영상 데이터 전송 및 수신 방법 및 장치

Also Published As

Publication number Publication date
CN102300089A (zh) 2011-12-28
US20110317763A1 (en) 2011-12-29

Similar Documents

Publication Publication Date Title
US20160323351A1 (en) Low latency and low defect media file transcoding using optimized storage, retrieval, partitioning, and delivery techniques
CN105068953B (zh) 用于对等高速外围组件互联存储传输的系统和方法
US9454551B2 (en) System and method for management of garbage collection operation in a solid state drive
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
CN102171647B (zh) 使用即时数据分块的文件输入/输出调度
JP4342435B2 (ja) 少なくとも1つのデータストリームのデータを処理する方法、データ記憶システム及び該システムを使用する方法
US8621069B1 (en) Provisioning a computing application executing on a cloud to a client device
US9075560B2 (en) Real-time compression with GPU/CPU
US9760486B2 (en) Accelerating cache state transfer on a directory-based multicore architecture
DE102012216568A1 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
CN103167222B (zh) 一种非线性云编辑系统
CN103002274B (zh) 一种基于离线下载的移动多媒体实时转码播放系统及方法
US8725915B2 (en) Virtual buffer interface methods and apparatuses for use in wireless devices
KR101238163B1 (ko) 파일 입출력 스케줄러
US8253732B2 (en) Method and system for remote visualization client acceleration
US8527993B2 (en) Tasking system interface methods and apparatuses for use in wireless devices
US8477852B2 (en) Uniform video decoding and display
US20140028679A1 (en) Render-assisted compression for remote graphics
US6959348B1 (en) Method and system for accessing data
CN105554506B (zh) 基于多方式边界填充的全景视频编码、解码方法和装置
US7403564B2 (en) System and method for multiple channel video transcoding
JP2016530731A (ja) ビデオ復号のための電子デバイスおよび方法
CA2259513C (en) Compression and decompression scheme performed on shared workstation memory by media coprocessor
CN104471554A (zh) 共享虚拟存储器
KR101898565B1 (ko) 전송을 위한 서버 시스템의 그래픽 데이터 프로세싱

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: 20130903