(57)【特許請求の範囲】
【請求項１】
エンコードされているビデオデータを入力する入力手段と、
前記入力手段により入力されたビデオデータをデコードするソフトウェアよりなるデコード手段と、
前記デコード手段によりデコードされたビデオデータを、Ｎ個のフレーム単位分だけ記憶し、各フレーム単位がＩＤで区別される記憶手段と、
前記記憶手段に記憶されているフレーム単位の前記ビデオデータの出力の順番をＦＩＦＯ形式で管理する管理手段と
を備え、
前記デコード手段による処理は、前記記憶手段において空いているフレーム単位を次のデコード出力用に割り当てる割り当て処理と、前記入力手段から入力されてきた１フレーム分のビデオデータをデコードし、前記割り当て処理で割り当てられたフレーム単位に記憶するデコード処理と、前記記憶手段の次に読み出すべきフレーム単位のＩＤを前記管理手段に登録する登録処理とを含み、
１フレーム期間内に１フレーム分のビデオデータに対する前記デコード手段による処理が終了しない場合には、次のフレーム期間において、一旦中断した後に再開し、前記デコード手段による該処理が終了した後に、前記入力手段から続いて入力されてきた１フレーム分のビデオデータの前記デコード手段による処理を行うデジタル信号処理装置。
【請求項２】
前記デコード手段は、前記ビデオデータをＭＰＥＧ方式でデコードする請求項１に記載のデジタル信号処理装置。
【請求項３】
入力手段を通じてエンコードされているビデオデータを入力する入力ステップと、
前記入力ステップにより入力されたビデオデータをソフトウェアでデコードするデコードステップと、
前記デコードステップの処理によりデコードされたビデオデータを、各フレーム単位がＩＤで区別される記憶手段に対して、Ｎ個のフレーム単位分だけ記憶する記憶ステップと、
管理手段によって、前記記憶ステップの処理で記憶されているフレーム単位の前記ビデオデータの出力の順番をＦＩＦＯ形式で管理する管理ステップと
を有し、
前記デコードステップにおける処理は、前記記憶手段において空いているフレーム単位を次のデコード出力用に割り当てる割り当て処理と、前記入力ステップで入力されてきた１フレーム分のビデオデータをデコードし、前記割り当て処理で割り当てられたフレーム単位に記憶するデコード処理と、前記記憶手段の次に読み出すべきフレーム単位のＩＤを前記管理手段に登録する登録処理とを含み、
１フレーム期間内に１フレーム分のビデオデータに対する前記デコードステップによる処理が終了しない場合には、次のフレーム期間において、一旦中断した後に再開し、前記デコードステップによる該処理が終了した後に、前記入力手段から続いて入力されてきた１フレーム分のビデオデータの前記デコードステップによる処理を行うデジタル信号処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル信号処理装置および方法、並びにデジタル信号処理プログラムに関し、特に、ソフトウェア処理により、ビデオデータやオーディオデータを符号化または復号化するデジタル信号処理装置および方法、並びにデジタル信号処理プログラムに関する。
【０００２】
【従来の技術】
最近、衛星を介して、ＴＶ番組のデジタルビデオデータやデジタルオーディオデータを伝送するシステムが普及しつつある。このようなシステムにおいては、データ量を圧縮するために、デジタルビデオデータやデジタルオーディオデータは、例えば、ＭＰＥＧ（ＭｏｖｉｎｇＰｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ）方式により符号化（エンコード）されて伝送される。
【０００３】
ソフトウェア処理による符号化装置では、ビデオデータの入力周期に同期して符号化が行われる。入力周期は、さまざまな規格により定められており、例えば、ＮＴＳＣ（ＮａｔｉｏｎａｌＴｅｌｅｖｉｓｉｏｎ Ｓｙｓｔｅｍ Ｃｏｍｍｉｔｔｅｅ）方式では、３３．３６ｍｓｅｃと定められている。１画像に対して割り当てられている最大の処理時間（符号化時間）は、この規格により定められているビデオデータの入力周期に束縛される。換言すれば、入力周期内に、入力されたビデオデータを符号化し終わらなくてはならない。このようにして符号化されたビデオデータは、所定の記録媒体などに記録されたり、衛星を介して伝送される。
【０００４】
また衛星を介して伝送されてくるデジタルデータを受信する受信装置は、受信したデータをＭＰＥＧ方式でデコードする。デジタルビデオデータをソフトウェア処理によってデコード（復号）する場合、デコードに必要な複数の処理を逐次実行していく必要がある。また、出力をリアルタイムで行うには、デコードに必要な全ての処理を、出力で要求される周期に間に合う時間内に完了する必要がある。例えば、ＮＴＳＣ方式の場合、フレームレートは３０フレーム／秒であるため、その１周期は、３３．３６ｍｓｅｃとなる。従って、１フレーム分のデジタルビデオデータは、３３．３６ｍｓｅｃ内にデコード処理する必要がある。
【０００５】
【発明が解決しようとする課題】
ところで、入力されるストリームの状況や、デコードするビデオ画像の状況によって、それらの処理を実行するために必要な時間が変動する。例えば、ＭＰＥＧ方式のビデオ画像の場合、ビットストリームのビットレートによって、可変長符号の復号処理に必要な時間が変化し、Ｉピクチャ、Ｂピクチャ、またはＰピクチャといったピクチャコーディングタイプの種類や、ハーフペル、またはフルペルといった動き補償精度の違いによっても、動き補償の処理時間が変化する。さらに、ビデオ画像だけではなく、デジタルオーディオデータの復号、あるいはデマルチプレクスといった処理にも時間がかかる。その他、それらの処理全体を管理するＯＳが消費する時間も変動する。
【０００６】
そこで、パーソナルコンピュータを用いて、ソフトウェア処理によりデコードを行う場合、デコードが出力周期に間に合わない場合、一部のデータの処理をスキップして、出力を間引くようにして、リアルタイム性を維持するようにしている。
【０００７】
上述したように、従来の符号化装置は、ビデオデータの入力周期と同期して符号化が行われるため、各画像に対して、その周期内で最大限の精度で符号化が完了するようにしなくてはならない。ここで、付号化における精度とは、符号化前の画像と、その符号化された画像を復号した画像とが、どれだけ似ているかによるものであり、その精度の善し悪しは、符号化の処理時間や符号化の手法などにかかわってくる。
【０００８】
時間軸で、符号化処理が代わる場合（例えばＭＰＥＧ（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ）２）や、それぞれの画像をできるだけ等しい精度で符号化しなくてはならない場合（時間軸で符号化の精度が異なると、復号された画像は、ちらちらとして見づらくなってしまうのを防ぐため）、符号化装置の設計は、符号化の精度を高くするために、その符号化処理にかける時間に余裕があるように設定して設計しなくてはならない。
【０００９】
また、ソフトウェア処理による符号化装置は、符号化処理の他に、ビデオデータの入力の制御や出力の制御などをしなくてはならず、それらの処理を、内蔵されているプロセッサで同時に行う必要があった。その為、符号化処理以外の処理との関係により、符号化処理に割り当てられる最大の処理時間を算出する事が困難であるという課題があった。そのため、プロセッサが処理を行わない無駄な時間が発生するという課題もあった。また、このように、複数の処理を１つのプロセッサにより行わせる場合、そのプロセッサは、高い処理能力を持つ必要があり、コスト高になるという課題があった。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、１画像の符号化処理を他の処理を優先しながら行うようにすることにより、処理能力の低いプロセッサにおいても高精度の符号化が行えるようにすることを目的とする。
【００１１】
また、例えば、衛星放送を受信する専用の受信装置において、ソフトウェア処理により受信信号をデコードする場合においても、リアルタイム性を維持するために、一部のデータの処理をスキップして、出力を間引くことは、その装置が、本来衛星を介して送信されてくるデジタルビデオ信号をデコードする専用の装置であることを考慮すれば、許容されることではない。
【００１２】
そこで、ソフトウェア処理によりデコードを短時間で完了できるようにするには、非常に高い処理能力を有するプロセッサが必要となり、コスト高となる課題があった。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、通常の処理能力を有するプロセッサを用いて、ソフトウェア処理により低コストでデコード処理ができるようにするものである。
【００１４】
【課題を解決するための手段】
請求項１に記載のデジタル信号処理装置は、エンコードされているビデオデータを入力する入力手段と、
入力手段により入力されたビデオデータをデコードするソフトウェアよりなるデコード手段と、
デコード手段によりデコードされたビデオデータを、Ｎ個のフレーム単位分だけ記憶し、各フレーム単位がＩＤで区別される記憶手段と、
記憶手段に記憶されているフレーム単位のビデオデータの出力の順番をＦＩＦＯ形式で管理する管理手段と
を備え、
デコード手段による処理は、記憶手段において空いているフレーム単位を次のデコード出力用に割り当てる割り当て処理と、入力手段から入力されてきた１フレーム分のビデオデータをデコードし、割り当て処理で割り当てられたフレーム単位に記憶するデコード処理と、記憶手段の次に読み出すべきフレーム単位のＩＤを管理手段に登録する登録処理とを含み、
１フレーム期間内に１フレーム分のビデオデータに対するデコード手段による処理が終了しない場合には、次のフレーム期間において、一旦中断した後に再開し、デコード手段による該処理が終了した後に、入力手段から続いて入力されてきた１フレーム分のビデオデータのデコード手段による処理を行うデジタル信号処理装置である。
【００１５】
請求項３に記載のデジタル信号処理方法は、入力手段を通じてエンコードされているビデオデータを入力する入力ステップと、
入力ステップにより入力されたビデオデータをソフトウェアでデコードするデコードステップと、
デコードステップの処理によりデコードされたビデオデータを、各フレーム単位がＩＤで区別される記憶手段に対して、Ｎ個のフレーム単位分だけ記憶する記憶ステップと、
管理手段によって、記憶ステップの処理で記憶されているフレーム単位のビデオデータの出力の順番をＦＩＦＯ形式で管理する管理ステップと
を有し、
デコードステップにおける処理は、記憶手段において空いているフレーム単位を次のデコード出力用に割り当てる割り当て処理と、入力ステップで入力されてきた１フレーム分のビデオデータをデコードし、割り当て処理で割り当てられたフレーム単位に記憶するデコード処理と、記憶手段の次に読み出すべきフレーム単位のＩＤを管理手段に登録する登録処理とを含み、
１フレーム期間内に１フレーム分のビデオデータに対するデコードステップによる処理が終了しない場合には、次のフレーム期間において、一旦中断した後に再開し、デコードステップによる該処理が終了した後に、入力手段から続いて入力されてきた１フレーム分のビデオデータのデコードステップによる処理を行うデジタル信号処理方法である。
【００１７】
請求項１に記載のデジタル信号処理装置および請求項３に記載のデジタル信号処理方法においては、１フレーム期間内にデコードステップによる処理が終了しない場合には、次のフレーム期間において、一旦中断した後に再開し、デコードステップによる該処理が終了した後に、入力手段から続いて入力されてきた１フレーム分のビデオデータのデコードステップによる処理を行う。
【００１８】
【発明の実施の形態】
まずソフトウェア処理によるデコードを行うデジタル信号処理装置について説明する。図１は、本発明を適用した、デジタル信号処理装置の構成例を表している。プログラムメモリ２には、入力されたストリームのデコード（復号）処理を行うデコードプログラム、並びに各部を制御する処理プログラムなどが記憶されている。ＣＰＵ １は、プログラムメモリ２に記憶されているプログラムをバス７を介して適宜読み出し実行する。ビデオフレームバッファ３は、デコードされた画像データを一時的に記憶する記憶装置であり、複数フレーム分の画像データを保持する容量を有している。
【００１９】
出力ＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）４は、出力するフレームの画像が記憶されているバッファ１乃至バッファＮの管理ＩＤを、出力する順番に記憶する。ストリーム入力インタフェース（Ｉ／Ｆ）５は、衛星等を介して伝送されてくる、例えば、ＭＰＥＧ方式でエンコードされているトランスポートストリームを入力するためのインタフェース処理を実行する。ディスプレイコントローラ６は、デコードされた画像データを、図示せぬディスプレイに出力し、表示させるための処理を行う。
【００２０】
ビデオフレームバッファ３は、図２に示すように、Ｎフレーム分の画像データを記憶するための領域として、バッファ１乃至バッファＮを有している。これらのバッファは、必ずしも連続したアドレス領域に定義する必要はない。また、各バッファは、それぞれデコード出力用としての割当、デコード結果の保持、およびデータの出力の順序で使用され、出力が終了したバッファは、再び、デコード出力用として再利用される。さらに、各バッファは、全て等価的に使用され、特定のバッファが限定された用途に使用されることはない。
【００２１】
なお、出力ＦＩＦＯ４は、ビデオフレームバッファ３内に形成してもよい。
【００２２】
図３は、出力ＦＩＦＯ４の原理的な構成を表している。この出力ＦＩＦＯ４は、デコード結果を出力するバッファの順番と、出力するまでの遅延を管理するものである。出力ＦＩＦＯ４には、図２に示したビデオフレームバッファ３のバッファ１乃至バッファＮの管理ＩＤまたはポインタが、出力する順番に入力、記憶される。
【００２３】
次に、図４のタイミングチャートを参照して、図１に示す装置の動作について説明する。図４において、時刻ｔ１乃至ｔ４は、それぞれデコードした画像データを出力するタイミングを表している。すなわち、各時刻ｔ１乃至ｔ４の間隔は、１フレーム分の周期（３３．３６ｍｓｅｃ）とされる。ＣＰＵ １は、プログラムメモリ２より読み出したプログラムに従って、時刻ｔ１のタイミングで処理１を実行し、その処理１の処理が終了したとき、次に、処理２を実行する。そして、処理２の処理が完了したとき、処理３を実行する。このように、処理の優先順位は、処理１が最も高く、次に処理２が続き、処理３は最も優先順位が低い。
【００２４】
次に、図５のフローチャートを参照して、処理１について説明する。ステップＳ１１において、ＣＰＵ １は、次に出力するバッファのＩＤを出力ＦＩＦＯ４より取得する。そして、ステップＳ１２において、ＣＰＵ １は、ステップＳ１１で取得したＩＤに対応するビデオデータをビデオフレームバッファ３から読み出し、バス７を介して、ディスプレイコントローラ６に出力する。ディスプレイコントローラ６は、入力されたデータを図示せぬディスプレイに出力し、表示させる。
【００２５】
例えば、図４に示す時刻ｔ１において、出力ＦＩＦＯ４には、その先頭に管理ＩＤとしてＡが保持されている。そこで、ＣＰＵ １は、ステップＳ１１において、出力ＦＩＦＯ４から管理ＩＤとしてＡを読み出し、ビデオフレームバッファ３のバッファ１乃至バッファＮのうち、Ａの管理ＩＤに対応するバッファのビデオデータを読み出し、出力する。
【００２６】
次に、ＣＰＵ １は、処理２を実行する。この処理２は、例えば、オーディオデータのデコード処理である。処理されたオーディオデータは、ディスプレイコントローラ６から出力される所定のタイミング信号に同期して、図示せぬスピーカに出力される。
【００２７】
処理２が終了したとき、次に、ＣＰＵ １は、処理３を実行する。次に、図６のフローチャートを参照して、この処理３の詳細について説明する。
【００２８】
最初に、ステップＳ２１において、ＣＰＵ １は、次のデコード出力用バッファの割当処理を実行する。すなわち、図２に示すビデオフレームバッファ３のバッファ１乃至バッファＮのうち、空いている（既に読み出した）バッファを、デコードしたビデオデータを記憶させるバッファとして割り当てる。次に、ステップＳ２２において、ＣＰＵ １は、ストリーム入力インタフェース５より入力されてきた１フレーム分のビデオデータを、プログラムメモリ２より読み出したデコードプログラムにより、ＭＰＥＧ方式でデコードする。デコードされたデータは、ステップＳ２１で割り当てられたバッファに記憶される。さらに、ステップＳ２３において、ＣＰＵ １は、次に出力する（読み出す）べきバッファのＩＤを出力ＦＩＦＯ４に登録する。
【００２９】
図４の時刻ｔ１から時刻ｔ２の間のタイミングにおいては、このような処理３により、管理ＩＤがＤであるフレームのデコード処理が行われたので、ＣＰＵ １は、出力ＦＩＦＯ４に管理ＩＤとして、Ｄを登録する。図４の例では、時刻ｔ１から時刻ｔ２までの時間に、処理３は完了することが可能であった。
【００３０】
これに対して、時刻ｔ２から時刻ｔ３までの時間においては、処理１として管理ＩＤがＢであるフレームのビデオデータが出力された後、処理２として、オーディオデータなどの処理が行われ、その後、処理３が開始されているのであるが、処理３は、時刻ｔ４までの間に、完了することができていない。
【００３１】
このような場合、従来においては、時刻ｔ３において、直前の時刻ｔ２において出力した、管理ＩＤがＢであるフレームの画像を、再度出力するようにしている。しかしながら、本発明においては、時刻ｔ３において、処理３の処理を一旦中断した後、処理１として出力ＦＩＦＯ４に記憶されている管理ＩＤがＣであるフレームの画像を出力する。その後、さらに、処理２を実行した後、それが終了したとき、処理３として、一旦中断した処理を再開する。そして、その後、続いて、次のフレームのビデオデータの処理を実行する。図４の例では、このようにして、時刻ｔ３から時刻ｔ４までの間に、管理ＩＤがＥとＦの２つのフレームのビデオデータを処理することができ、それらのフレームの管理ＩＤであるＥとＦが、出力ＦＩＦＯ４に記憶されている。
【００３２】
このように、出力ＦＩＦＯ４により、バッファ１乃至バッファＮの管理を行うようにすることで、処理３の実行時間が、出力周期を一時的に越えてしまったような場合や、各処理の実行時間の伸縮によって、処理１と処理３の実行タイミングが非同期になってしまったような場合にも、処理１においては、一定周期で出力するバッファを常に確保することが可能となる。
【００３３】
このようにして、ＣＰＵ １に要求されるソフトウェアの処理能力を、１フレームのデコードに要する処理時間が最長となる場合に対応させる必要はなく、数フレームのデコードに要する平均的処理時間に対応すれば良いため、ＣＰＵ １として、より安価なプロセッサを用いることが可能となる。
【００３４】
次にソフトウェア処理によるエンコードを行うデジタル信号処理装置について説明する。図７は、本発明を適用したデジタル信号処理装置の内部構成を示すブロック図である。ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１１は、ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）などから構成されるメモリ１２に記憶されているプログラムに従って、所定の処理を行う。ビデオフレームバッファ１３は、入出力インターフェース１４を介して入力されたビデオデータを一旦記憶する。エンコーダ１５は、ビデオフレームバッファ１３に記憶されているビデオデータをエンコードし、コードバッファ１６に出力する。コードバッファ１６は、エンコードされたビデオデータを一旦記憶する。コードバッファ１６に記憶されているビデオデータは、入出力インターフェース１４を介して他の装置、例えば、図示されていない記録装置に出力される。これらの各部は、バス１７により、相互に接続されている。
【００３５】
ビデオフレームバッファ１３は、複数のフレームのビデオデータを記憶できる容量をもち、図８に示すように、複数のバッファが定義されている。すなわち、ビデオフレームバッファ１３内には、Ｎ個のバッファ１３−１乃至１３−Ｎが定義されており、ビデオデータ１はバッファ１３−１に、ビデオデータ２はバッファ１３−２に、ビデオデータＮはバッファ１３−Ｎに、それぞれ記憶されるようにされている。バッファ１３−１乃至１３−Ｎは、それらを一意に規定するＩＤまたはポインタで管理されている。ここでは、ＩＤで管理されているとして以下の説明をする。なお、各バッファ１乃至Ｎは、必ずしも連続したアドレス領域に定義される必要はない。
【００３６】
ＣＰＵ １１により行われる、ビデオフレームバッファ１３へのビデオデータの書き込み処理について、図９のフローチャートを参照して説明する。ステップＳ３１において、入出力インターフェース１４を介して、ビデオデータが符号化装置１０に入力されると、ステップＳ３２において、ＣＰＵ １１は、ビデオフレームバッファ１３内の空きバッファを調査する。ビデオフレームバッファ１３内の各バッファは、一意に規定できるＩＤにより管理されており、ＣＰＵ １１は、そのＩＤを参照することにより、空きバッファを調査する。
【００３７】
すなわち、例えば、ＦＩＦＯ（Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ）を用い、ビデオデータが記憶されたバッファのＩＤを順次書き込み、そのＦＩＦＯに書き込まれていないＩＤを調査することにより、空きバッファを調査できるようにする。このように、ＦＩＦＯを用いて、ビデオフレームバッファ１３内の各バッファが管理されている場合、後述する読み出し処理は、書き込まれた順に出力されることになる。ＦＩＦＯには、同一ＩＤは書き込まれることはないので、出力されたＩＤ（従って、ＦＩＦＯには書き込まれていないＩＤ）は、空きバッファを示すＩＤとなる。
【００３８】
ステップＳ３３において、ステップＳ３２により空きバッファであると調査されたバッファに、ステップＳ３１において入力されたビデオデータが書き込まれる。このようにして書き込まれたビデオデータは、エンコーダ１５によるエンコードが行われる際に読み出される。その読み出し処理について、図１０のフローチャートを参照して説明する。ビデオフレームバッファ１３にビデオデータが記憶されており、かつ、ＣＰＵ １１が、他の処理を行っていないとき、ステップＳ４１において、ビデオフレームバッファ１３に記憶されている１フレーム分の画像をエンコードした場合のエンコード量が予測される。エンコードの対象となるビデオデータは、その時点で、上述したＦＩＦＯに一番初めに書き込まれたＩＤに対応するバッファに記憶されているビデオデータである。
【００３９】
ステップＳ４１において、エンコード量が予測されると、ステップＳ４２において、そのエンコード量を記憶するだけの空き容量が、コードバッファ１６にあるか否かが判断される。コードバッファ１６に、予測されたエンコード量を記憶する空き容量がないと判断された場合、エンコードしたビデオデータを記憶する事できないので、このフローチャートの処理は終了される。
【００４０】
一方、ステップＳ４２において、コードバッファ１６に、予測されたエンコード量を記憶する容量があると判断された場合、ステップＳ４３に進み、ステップＳ４１においてエンコード量が予測されたビデオデータが、ビデオフレームバッファ１３から読み出され、エンコーダ１５によりエンコードされる。エンコーダ１５によりエンコードされたビデオデータは、コードバッファ１６に記憶される。コードバッファ１６にビデオデータが記憶されると、ステップＳ４４において、ステップＳ４３においてエンコードされたビデオデータがビデオフレームバッファ１３から削除される。同時にエンコードされたビデオデータが記憶されていたビデオフレームバッファ１３内のバッファのＩＤが、ＦＩＦＯから破棄（出力）される。
【００４１】
このように、エンコーダ１５によるエンコードは、ＣＰＵ １１が他の処理を行っていないとき、ビデオフレームバッファ１３にビデオデータが記憶されているとき、かつ、コードバッファ１６にエンコードされたビデオデータを記憶するだけの空き容量があるときに行われる。
【００４２】
このような符号化装置１０の一連の処理を、図１１と図１２を参照してさらに説明する。時刻ｔにおいて、ビデオデータａが符号化装置１０に入力されると、図９のフローチャートを参照して説明した処理が行われ、入力されたビデオデータａは、ビデオフレームバッファ１３内の割り当てられたバッファに記憶される。時刻ｔ＋１において、ビデオデータｂが入力されると、ビデオデータａが入力された場合と同様の処理により、ビデオフレームバッファ１３内の割り当てられたバッファに、入力されたビデオデータｂが記憶される。また、時刻ｔ＋１においては、ビデオフレームバッファ１３に記憶されているビデオデータａに対して、図４のフローチャートのステップＳ４１の処理、すなわち、ビデオデータａをエンコードしたときのエンコード量が予測される。時刻ｔと時刻ｔ＋１の時間間隔は、例えば、ＮＴＳＣ方式の場合、３３．３６ｍｓｅｃである。他の時間間隔も同じである。
【００４３】
ステップＳ４２における処理により、コードバッファ１６に、ビデオデータａをエンコードしたときのエンコード量が記憶できると判断された場合、エンコーダ１５によるエンコードが開始される。いまの場合、コードバッファ１６には何も記憶されていないので、エンコードしたビデオデータａが記憶するだけの空き容量があると判断される。時刻ｔ＋２において、ビデオデータｃが入力され、ビデオフレームバッファ１３に記憶されると、ＣＰＵ １は、エンコーダ５にビデオデータａをエンコードさせる。ステップＳ４３の処理として、ビデオデータａがビデオフレームバッファ１３から読み出され、エンコーダ１５によりエンコードされ、コードバッファ１６に記憶されると、ステップＳ４４の処理として、ビデオフレームバッファ１３に記憶されていたビデオデータａ（ビデオデータａが記憶されていたバッファに対応するＩＤ）が削除される。
【００４４】
また、時刻ｔ＋２においては、ビデオデータｃの記憶とビデオデータａのエンコードが終了された時点で、まだ、次の時刻ｔ＋３まで時間があり、エンコードしたビデオデータｂを記憶するだけの空き容量がコードバッファ１６にあるので、画像データａのエンコードだけでなく、ビデオデータｂのエンコードも開始される。しかしながら、ビデオデータｂのエンコードの途中で、ビデオデータｄの入力時刻ｔ＋３になり、ビデオデータｄの入力が行われると、そのビデオデータｄが入力（記憶）されている間は、ビデオデータｂのエンコードは中断される。そして、ビデオデータｄの入力が終了されると、再び、ビデオデータｂのエンコードが再開される。時刻ｔ＋４までに、ビデオデータｂのエンコードが終了されるとともに、ビデオデータｃのエンコードも完了される。そのため、時刻ｔ＋４の直前では、ビデオフレームバッファ１３には新たに入力されたビデオデータｄのみが記憶されている状態となり、コードバッファ１６には、既にエンコードされたビデオデータａ、ビデオデータｂ、およびビデオデータｃが記憶されている状態となる。
【００４５】
このように、ビデオフレームバッファ１３に記憶されているビデオデータをエンコードした際、そのエンコード量が、ビデオデータ毎に異り、そのため、エンコードにかかる時間も異なるような場合でも、所定の処理時間内（ビデオデータが入力される入力周期内）に処理を終わらせる必要がないため、エンコードの精度を上げることが可能となる。
【００４６】
時刻ｔ＋４において、ビデオデータｅが入力され、ビデオフレームバッファ１３に記憶される。この時点では、既に、ビデオフレームバッファ１３にビデオデータｄが記憶されており、ＣＰＵ １は、他の処理を起こっていないので、エンコード処理を行うことができるが、コードバッファ１６の空き容量が充分でないため、エンコードは行われない。時刻ｔ＋５（図１２）において、ビデオデータｆが入力されるとともに、他の装置、例えば、記録装置などに、コードバッファ１６に記憶されているビデオデータが一定量で、継続的に出力される。この出力処理は、ＤＭＡＣ（Ｄｉｒｅｃｔ Ｍｅｍｏｒｙ Ａｃｃｅｓｓ Ｃｏｎｔｒｏｌｌｅｒ）などを備え、ＤＭＡ転送させるようにすることにより、ＣＰＵ １１は、読み出しの処理の開始だけ指示すれば良いので、ＣＰＵ １自体に負担をかけずにビデオデータの出力を行うことができる。
【００４７】
コードバッファ１６に記憶されているビデオデータが出力されることにより、コードバッファ１６自体に空き容量ができる。そこで、時刻ｔ＋６において、再び、エンコードが開始される。以後、同様に、図９と図１０のフローチャートを参照して説明したように、ビデオフレームバッファ１３への記憶処理とエンコード処理が行われる。
【００４８】
このように、１つのビデオデータに対するエンコード処理を、コードバッファ６の空き容量やＣＰＵ １１の空き時間を考慮して行うようにすることにより、画像データの入力周期内に処理を終了させなくてはならないという条件に拘束されることなく、エンコード処理を行うことが可能となる。その結果、符号化装置１０に処理能力の低いプロセッサ（ＣＰＵ １１）を用いたとしても、精度の高いエンコードを行うことが可能となるとともに、ビデオデータの入力とともにエンコードを行うことが可能となる。
【００４９】
次に、図１３を参照して、上述した一連のエンコードまたはデコード処理を実行するプログラムをコンピュータにインストールし、コンピュータによって実行可能な状態とするために用いられる媒体について説明する。
【００５０】
プログラムは、図１３Ａに示すように、パーソナルコンピュータ２１に内蔵されている記録媒体としてのハードディスク２２や半導体メモリ２３（メモリ２に相当する）に予めインストールした状態でユーザに提供することができる。
【００５１】
あるいはまた、プログラムは、図１３Ｂに示すように、フロッピーディスク３１、ＣＤ−ＲＯＭ３２、ＭＯディスク３３、ＤＶＤ ３４、磁気ディスク３５、半導体メモリ３６などの記録媒体に、一時的あるいは永続的に格納し、パッケージソフトウエアとして提供することができる。
【００５２】
さらに、プログラムは、図１３Ｃに示すように、ダウンロードサイト４１から、無線で衛星４２を介して、パーソナルコンピュータ４３に転送したり、ローカルエリアネットワーク、インターネットといったネットワーク５１を介して、有線または無線でパーソナルコンピュータ４３に転送し、パーソナルコンピュータ４３において、内蔵するハードディスクなどにダウンロードさせるようにすることができる。
【００５３】
本明細書における媒体とは、これら全ての媒体を含む広義の概念を意味するものである。
【００５４】
以上においては、アクセス単位をフレームとしたが、フィールドでもよい。また、ＭＰＥＧ方式でエンコードされているデジタル信号をデコードする場合を例としたが、符号化（圧縮）とその復号（伸長）処理は、他の方式でもよいことは勿論である。
【００５５】
【発明の効果】
以上の如く、請求項１に記載のデジタル信号処理装置、請求項３に記載のデジタル信号処理方法、および請求項４に記載のデジタル信号処理プログラムによれば、記憶されているアクセス単位のデジタル信号の出力の順番をＦＩＦＯ形式で管理するようにしたので、安価な装置で、ソフトウェアによりリアルタイム性を確保しつつ、デコード処理することが可能となる。
【００５６】
この発明は、上述した実施例等に限定されるものでは無く、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【図面の簡単な説明】
【図１】  本発明を適用したデジタル信号処理装置（デコーダ）の構成例を示すブロック図である。
【図２】  図１のビデオフレームバッファ３の構成を示す図である。
【図３】  図１の出力ＦＩＦＯ４の構成を示す図である。
【図４】  図１の装置の動作を説明するタイミングチャートである。
【図５】  図４の処理１の動作を説明するフローチャートである。
【図６】  図４の処理３の動作を説明するフローチャートである。
【図７】  本発明を適用したデジタル信号処理装置（エンコーダ）の構成例を示すブロック図である。
【図８】  ビデオフレームバッファ１３を説明する図である。
【図９】  ビデオフレームバッファ１３へのビデオデータの書き込み処理について説明するフローチャートである。
【図１０】  エンコードについて説明するフローチャートである。
【図１１】  ビデオデータの入力から出力されるまでの処理を説明する図である。
【図１２】  図１１の続きを示す図である。
【図１３】  媒体を説明する図である。
【符号の説明】
１  ＣＰＵ
２  プログラムメモリ
３  ビデオフレームバッファ
４  出力ＦＩＦＯ
【図１】
0004770023.tif 000002
【図２】
0004770023.tif 000003
【図３】
0004770023.tif 000004
【図４】
0004770023.tif 000005
【図５】
0004770023.tif 000006
【図６】
0004770023.tif 000007
【図７】
0004770023.tif 000008
【図８】
0004770023.tif 000009
【図９】
0004770023.tif 000010
【図１０】
0004770023.tif 000011
【図１１】
0004770023.tif 000012
【図１２】
0004770023.tif 000013
【図１３Ａ】
0004770023.tif 000014
【図１３Ｂ】
0004770023.tif 000015
【図１３Ｃ】
0004770023.tif 000016
0004770023.tif 000017