(57)【要約】【課題】処理ユニットのタイミング挙動を改善するための方法及び装置を提供することであり、この場合全てのユニットがマルチスレッディング環境におけるスレッドであり、異なるタイムベースを有しうる。【解決手段】上記課題は、出力側バッファの充填度を測定し、測定が出力側バッファの充填度に等価な値を結果的に生じるステップと、測定値からタイマ値を計算するステップと、タイマをこのタイマ値によってセットしタイマをスタートし、このタイマはタイマ値により所定の時間が経過した場合に通知を送信するステップと、もしすでにアクティブでないのなら通知に基づいて処理ユニットスレッドを活性化し、さもなければ処理ユニットスレッドの活性を継続するステップによって解決される。【選択図】図７
2006012150.tif 000002
【特許請求の範囲】
【請求項１】
処理ユニット（１４）においてデータを処理するための方法であって、前記処理ユニットは複数の入力側ユニット（１１、・・・、１３）からのデータを組み合わせることによって出力側ユニット（１６）に対するデータフレームを生成し、処理されるデータは処理ユニットと出力側ユニットとの間の出力側バッファ（１５）にバッファされ、処理ユニット、入力側ユニット及び出力側ユニットはマルチスレッディング環境におけるスレッドであり、同一のマイクロプロセッサを共有する、処理ユニット（１４）においてデータを処理するための方法において、
前記出力側バッファ（１５）の充填度を測定し、測定が前記出力側バッファの充填度に等価である値を結果的に生じるステップと、
測定された値からタイマ値を計算するステップと、
タイマ（２１）を計算されたタイマ値によってセットして前記タイマ（２１）をスタートし、該タイマ（２１）は前記タイマ値により指定された時間が経過した場合に通知を送信し、該通知は処理ユニットスレッドに関するものであるステップと、
もしすでにアクティブでないのなら前記通知に基づいて処理ユニットスレッドを活性化し、さもなければ処理ユニットスレッドの活性を継続するステップと
を有する、処理ユニット（１４）においてデータを処理するための方法。
【請求項２】
タイマ値の計算は、複数の測定値に亘る平均化及び／又はローパスフィルタリングを有する、請求項１記載の方法。
【請求項３】
計算されたタイマ値が指定された最小値と最大値との間にある場合にのみ、タイマをセットするステップが実行され、タイマをセットするステップは、計算されたタイマ値がより低い場合にはスキップされ、タイマは計算されたタイマ値がより高い場合には指定された最大値にセットされる、請求項１又は２記載の方法。
【請求項４】
タイマ値は
ｔｉｍｅｒＶａｌｕｅ＝ｋ１＊ｆｉｌｌｉｎｇＶａｌｕｅ＋ｋ２
の形の線形な式の結果であり、ここでｋ１は正の値であり、所定の平均バッファ充填度レベルに基づいており、ｋ２はタイマが使用されている場合の最小値を定義し、ｆｉｌｌｉｎｇＶａｌｕｅはそれぞれバッファの充填度もしくはバッファの平均化された充填度及び／又はローパスフィルタリングされた充填度に等価な測定値である、請求項１〜３のうちの少なくとも１項記載の方法。
【請求項５】
出力側ユニット（１６）は出力側バッファ（１５）へのシングルアクセスで複数の処理されたデータフレームを正規の時間インターバルで読み込み、該時間インターバルはタイマ値により指定される平均時間の整数倍である、請求項１〜４のうちの少なくとも１項記載の方法。
【請求項６】
タイマ値により指定される平均時間は入力側ユニットのサンプルレートの逆数の公倍数であり、前記入力側ユニット（１１、・・・、１３）は異なるサンプルレートを有しうる、請求項１〜５のうちの少なくとも１項記載の方法。
【請求項７】
処理されるデータはオーディオデータであり、処理ユニットの連続する呼の間の平均時間はＭミリ秒であり、平均出力時間インターバルはＮ＊Ｍミリ秒であり、Ｎは１より大きな正の整数である、請求項５又は６記載の方法。
【請求項８】
データを処理するための装置であって、該装置は複数の入力側から入力データを受信し、さらにマイクロプロセッサ、データセット及びタイマ（２１）を有し、前記マイクロプロセッサ及び前記データセットはデータ処理ユニット（１４）及びデータ出力側ユニット（１６）を構成し、前記データ処理ユニット（１４）及び前記データ出力側ユニット（１６）はマルチスレッディング環境におけるスレッドであり、データはバッファ（１５）を介して前記処理ユニットから出力側ユニットへと通過される、データを処理するための装置において、
出力側バッファ（１５）の充填度に等価である値を測定するための手段を有し、
測定された値からタイマ値を計算するための手段を有し、
タイマ（２１）を前記タイマ値によってセットして前記タイマ（２１）をスタートするための手段を有し、該タイマは前記タイマ値により指定された時間が経過した場合に通知を送信し、もしすでにアクティブでないのなら前記通知が処理ユニットスレッドの活性化を惹起し、さもなければ処理ユニットスレッドの継続的な活性をもたらす
ことを特徴とする、データを処理するための装置。
【請求項９】
複数の入力側は少なくとも２つの異なる一定の入力データレートでデータを供給し、タイマ（２１）は測定された出力側バッファ充填度が所定の最小値と最大値との間である場合にのみ使用され、所定の平均バッファ充填度値から結果的に得られるタイマ値により指定される時間は入力側のデータレートの逆数の公倍数である、請求項８記載の装置。
【請求項１０】
タイマ値により指定される時間は入力側のデータレートの逆数の最小公倍数である、請求項９記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理ユニットにおいてデータを処理するための方法であって、処理ユニットは複数の入力側ユニットからのデータを組み合わせることによって出力側ユニットに対するデータフレームを生成し、処理されるデータは処理ユニットと出力側ユニットとの間の出力側バッファにバッファされ、処理ユニット、入力側ユニット及び出力側ユニットはマルチスレッディング環境におけるスレッドであり、同一のマイクロプロセッサを共有する、処理ユニットにおいてデータを処理するための方法に関し、さらに、本発明は、データを処理するための装置であって、この装置は複数の入力側から入力データを受信し、さらにマイクロプロセッサ、データセット及びタイマを有し、マイクロプロセッサ及びデータセットはデータ処理ユニット及びデータ出力側ユニットを構成し、データ処理ユニット及びデータ出力側ユニットはマルチスレッディング環境におけるスレッドであり、データはバッファを介して処理ユニットから出力側ユニットへと通過される、データを処理するための装置に関する。
【背景技術】
【０００２】
ＭＰＥＧ−４システムとして公知のＭｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ（ＭＰＥＧ）規格ＩＳＯ／ＩＥＣ−１４４９６−１により符号化されるオーディオ・ヴィジュアル（ＡＶ）表示は複数のデータストリーム、例えばビデオのための１つ以上のストリーム、オーディオのための１つ以上のストリーム及びその他から成る。オーディオストリームは個々の通常は規格化されたサンプルレート、例えば８ｋｂ／ｓ、１６ｋｂ／ｓ、２２．０５ｋｂ／ｓ、３２ｋｂ／ｓ、４４．１ｋｂ／ｓ又は４８ｋｂ／ｓを異なるタイプのオーディオストリームに対して有しうる。さらに、これらのストリームは添付されたタイムスタンプを有するパケット又はフレームから成る。
【０００３】
このような表示の再生は様々なストリームに対する個別の復号化ユニット、処理ユニット及び１つ以上の出力側ユニットを必要とする。これらの復号化、処理及び出力側ユニットは、オペレーティングシステム（ＯＳ）及びアプリケーションソフトウェアによりマイクロプロセッサを使用していわゆるマルチスレッディング技術でインプリメントされ、上記のユニットは別個のソフトウェアパーティションとして、いわゆる「タスク」又は「スレッド」としてインプリメントされる。スレッドはシーケンシャルに他のスレッドとマイクロプロセッサの制御を共有する実行可能なソフトウェアの独立したユニットである。スレッドはシーケンシャルに呼び出されて実行されるので、これらのスレッドは互いに非同期に作動し、オペレーティングシステムにより提供されるメッセージングアプリケーションプログラミングインターフェース（ＡＰＩ）又はファンクションコールを介して互いに通信しあう。スレッド間のデータの伝送はデータをバッファしなければならず、通常は同期化されるＦＩＦＯライクな構造がバッファリングに使用される。しかし、再生の許容可能な品質を得るためには出力データストリーム、例えばオーディオストリームが出力側ユニットにおいて連続的かつ完全である必要があり、つまりいかなるバッファアンダーフロー及びバッファオーバーフローも防止されなければならないのである。出力側ユニットにおける一定のデータアベイラビリティを保証するためには、一般的に大きなＦＩＦＯバッファが処理ユニットと出力側ユニットとの間で使用される。
【０００４】
従来のオーディオ処理システムが図１に示されている。ソースストリームから復号化されるデータブロックはデコーダ１１からフレームＦＩＦＯ１１ｂを介して処理ユニット１４に読み込まれ、そこでデータブロックは処理される。処理されたデータブロックは出力側モジュール１６にデータを供給するブロック構成ＦＩＦＯ１５に書き込まれる。出力側モジュール１６は、複数の復号化されたデータブロックを同時に使用して、フレームＦＩＦＯ１５から読み出されるデータブロックからオーディオ表示データの連続ストリーム１７を発生する。ＦＩＦＯ１５が満杯でない場合、このＦＩＦＯ１５は信号１８、例えば例外メッセージを処理ユニット１４に送信する。この場合、ＦＩＦＯ１５が満杯になるまで処理ユニット１４はその入力側からのより多くのデータを処理する。
【０００５】
このようなシステムはリアルタイムオペレーティングシステム（ＲＴＯＳ）又は例えばMicrosoft Windowsのような非ＲＴＯＳにインプリメントされうる。ＲＴＯＳより安価でシンプルなので有利である後者のケースでは、別個のスレッド１１Ｔ、１４Ｔ、１６Ｔがデコーダ１１、処理ユニット１４及び出力側モジュール１６のために使用される。
【０００６】
いくつかのアプリケーションに対しては、異なるソースからのデータを同時に処理することが望ましい。この場合、これらのソースが異なるフレームレート及び／又はサンプルレートを有し、別個のデコーダを必要とすることもありうる。例えば、複数の入力側、例えば１０個以上の入力側からのオーディオ信号をスーパーポーズすることが必要になるかもしれない。
【０００７】
図２は直送方式による解決策を示し、複数のデコーダ１１、１２、１３を処理ユニット１４に接続している。デコーダ１１、１２、１３は別個のスレッドにおいて実行され、ＯＳのスレッドマネージメントは個々のスレッドを呼び出すことによって異なる入力データを処理する命令を制御する。大抵の場合、入力側バッファに処理すべきデータを有し、出力側バッファに書き込むスペースを有する限り、スレッドはアクティブである。処理ユニット１４はその全ての入力側バッファ１１ｂ、１２ｂ、１３ｂからのデータを組み合わせるのであり、それゆえこれらの全てのバッファにおいて利用可能であるデータを必要とする。結果として、処理ユニット１４の連続する呼の間の時間は単一入力システムの場合よりも長くなる。なぜなら、デコーダユニット１１、１２、１３の各々は、ＯＳのスレッドマネージメントにより制御されるように、その個々の入力側バッファ１１ｂ、１２ｂ、１３ｂを完全に満杯にしようとするからである。よって、処理すべき入力データの全体量も単一入力システムの場合よりも高くなる。これは出力側バッファの充填度（the filling）のより強い変動をもたらす。とりわけマイクロプロセッサに重く負荷がかかっている場合、システムは遅くなりすぎて、リアルタイム同様の処理を必要とする入力ストリーミングデータを処理することができなくなるかもしれない。そして、もしスレッドマネージメントが一般的な目的のためのものでありかつ最適化されていないならば、それは一種のボトルネック効果のためにブロックするかもしれない。これはデータ損失をもたらしうる。つまり、例えば高品質オーディオデータのようなデータタイプを許容できない出力側モジュール１６には入力データの全てが到達するわけではない。
【０００８】
非ＲＴＯＳにおいて、例えばオーディオ・ビデオ表示アプリケーションで実行されるここで記述される多重入力システムは、重い負荷の下で、例えば付加的にマイクロプロセッサが他のタスクを実行しなければならない間に複数の異なるオーディオソースからの入力データを処理しなければならない場合に、処理ユニットの予測不可能なタイミング挙動を引き起こす。結果として、オーディオとビデオとの間の同期化はオーディオパケットの復号化と出力側ユニットにおけるオーディオレンダリングとの間の予測不可能な遅延のために困難である。さらに、処理ユニットスレッドの連続する呼の間の長い時間も、ユーザインタラクション、例えばマルチスレッディングシステムにおいて大抵の場合処理ユニットによって実行されるコマンドに対する比較的大きいレスポンスタイムの原因となる。よって、ユーザコマンドが有効となるのに比較的長い時間がかかってしまう。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の課題は、処理ユニットのタイミング挙動を改善するための方法及びこの方法を利用する装置を提供することであり、この場合、処理ユニットは出力側ユニットに対するデータを複数の入力側ユニットからのデータを組み合わせることによって生成し、全てのユニットがマルチスレッディング環境におけるスレッドであり、異なるタイムベースを有しうる。特に本発明の課題は、多重マルチメディアストリームデータに対するオーディオ又はオーディオ・ビデオ再生装置のためのこのような方法及びこのような方法を利用する装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題は、冒頭に記載の処理ユニットにおいてデータを処理するための方法において、
出力側バッファの充填度を測定し、測定が出力側バッファの充填度に等価である値を結果的に生じるステップと、
測定された値からタイマ値を計算するステップと、
タイマを計算されたタイマ値によってセットしてタイマをスタートし、このタイマはタイマ値により指定された時間が経過した場合に通知を送信し、この通知は処理ユニットスレッドに関するものであるステップと、
もしすでにアクティブでないのなら通知に基づいて処理ユニットスレッドを活性化し、さもなければ処理ユニットスレッドの活性を継続するステップと
を有することによって解決され、
さらに、上記課題は、冒頭に記載したデータを処理するための装置において、
出力側バッファの充填度に等価である値を測定するための手段を有し、
測定された値からタイマ値を計算するための手段を有し、
タイマをタイマ値によってセットしてタイマをスタートするための手段を有し、このタイマはタイマ値により指定された時間が経過した場合に通知を送信し、もしすでにアクティブでないのなら通知が処理ユニットスレッドの活性化を惹起し、さもなければ処理ユニットスレッドの継続的な活性をもたらす
ことによって解決される。
【発明を実施するための最良の形態】
【００１１】
本発明によれば、タイミング挙動は、ＯＳのスレッドマネージメントの上位メカニズムを使用して処理ユニットを比較的短い時間インターバルで呼び出すことによって改善される。とりわけ、本発明は処理ユニットスレッドを呼び出すためのタイマユニットを使用すること及びタイマを個々にセットすることを含む。有利には、これによってマイクロプロセッサ処理能力のより一様な分散がもたらされる。さらに、本発明の方法は、ＯＳのスレッドマネージメントから独立した処理ユニットスレッドのプライオリティを増大し、出力側バッファの充填度の変動を低減する。これによって、例えばより良好なオーディオ・ビデオ同期化及びユーザインタラクションに対するより短い遅延がもたらされる。
【００１２】
処理ユニットスレッドが呼び出される場合にはいつでも、出力側バッファの充填度が測定され、この測定結果は処理ユニットスレッドの次の呼の前に時間を決定するために使用される。例えば初期化の間に充填度が所定の閾値より下にある限りは、処理ユニットは、タイマユニットのセッティングなしで、フレームを処理し、それを出力側バッファに書き込み、再び出力側バッファ充填度を測定するというサイクルを繰り返す。出力側バッファが閾値に到達すると、タイマ値が測定された出力側バッファ充填度から計算され、タイマユニットがこの計算されたタイマ値によってセットされ、この時間が経過するとこのタイマが処理ユニットスレッドを呼び出し、タイマによって又はＯＳのスレッドマネージメントによって再び呼び出されるまで処理ユニットスレッドはターミネートされる。
【００１３】
タイマ値により決定される時間周期は、処理ユニットがＯＳのスレッドマネージメントによってではなく通常タイマによって呼び出されるためのものである。それゆえ、処理ユニットの処理する連続するフレームの間の時間は出力側バッファの充填度に依存する。これは制御（regulation）ループが閉じられていることを意味し、これによって制御が改善される。とりわけ出力側ユニットが正規の時間インターバル、例えば８０ｍｓで出力側バッファからの出力フレームを処理し、出力フレームが複数の入力フレームを含み、各入力フレームが固有のサンプルレートを有する場合には、本発明はタイマを入力側サンプルレートの逆数の公倍数に相応しかつ出力側ユニット時間インターバルよりも短い値にセットすることを含む。とりわけ有利には、入力側サンプルレートの逆数の公倍数、もしくはとりわけ最小公倍数を選び取り、例えば４８ｋＨｚ、４４．１ｋＨｚ、３２ｋＨｚ、２２．０５ｋＨｚ、１６ｋＨｚ及び８ｋＨｚのサンプルレートに対しては、逆数２０．８３μｓ、２２．６７μｓ、３１．２５μｓ、４５．３５μｓ、６２．５μｓ及び１２５μｓに相応して、２０ｍｓである。
【００１４】
本発明により提案されているように、特定の出力データストリーム、例えばオーディオデータのフレームを処理するための処理ユニットスレッドを呼び出すためにタイマが使用される場合及びタイマの負荷値が出力側バッファの充填度に依存する場合、処理ユニットは初期化フェーズの後で実質的に等間隔の時間インターバルで作動する。有利には、タイマ値の計算のために平均バッファ充填度値を使用する。平均はスレッドの連続する呼からの数個の測定値、例えば２〜５個の測定値に亘って計算される。平均化された測定値の更なるローパスフィルタリングが例えばシステム時間挙動を改善するために使用されうる。
【００１５】
共通マイクロプロセッサにより提供される多目的タイマは、特定の出力側ユニットに対する連続する処理フレームの間の指定された最大時間を平均して維持するために使用される。タイマはスレッドマネージメントから独立してリアルタイムで実行される。マイクロプロセッサ及び／又はオペレーティングシステムは通常このようなタイマを提供する。多目的タイマは次のフレームを復号化するために処理ユニットスレッドをトリガする。その後、タイマにバッファの充填度から計算される新たな値がロードされる。
【００１６】
有利には、単純な計算がこの目的のために使用され、例えば、平均化されたバッファ充填度が線形の式に入力される。この場合、最初に測定値を線形の式に入力し、次いで平均値を計算することも可能である。この方法は、損失のないストリームアクセスを保証し、すなわちバッファアンダーフロー及びバッファオーバーフローを防止し、さらに処理の間の一定の最小遅延を保証する。これは例えば比較的良好なオーディオ・ビデオ同期化及びユーザインタラクションに対する比較的迅速なレスポンスにおいて有利である。
【００１７】
タイマにより測定される時間は、マイクロプロセッサがトリガされた時にこのマイクロプロセッサが別のタスクでビジー状態であり、この結果、このマイクロプロセッサはこのトリガに反応する前にまずこの別のタスクを終了しなければならないという事実に関しての平均最大時間である。出力側ユニットにとって作業を継続するのに十分な大きさを出力側バッファが持っている場合にこのケースが論じられる。
【００１８】
結局は、処理ユニットと出力側ユニットとの間のＦＩＦＯバッファに格納されるデータフレーム又はブロックの平均個数は従来のシステムの場合よりも低くなりうる。これは例えばより短いレスポンスタイム、オーディオデータの表示時間のより良好な推定をもたらし、それゆえ改善されたオーディオ・ビデオ同期化及び非リアルタイムシステムにおけるリアルタイム挙動の一般的により良好な近似をもたらす。
【００１９】
この方法を利用する装置は請求項８に開示されている。
【００２０】
データを処理するための本発明の装置は複数の入力側から入力データを受信し、マイクロプロセッサ、データセット例えばプログラムデータ及びタイマを有し、マイクロプロセッサ及びデータセットはデータ処理ユニット及びデータ出力側ユニットを構成し、データ処理ユニット及びデータ出力側ユニットはマルチスレッディング環境におけるスレッドであり、データはバッファを介して処理ユニットから出力側ユニットへと通過される。さらに、この装置は、出力側バッファの充填度に相応する値を測定し、この値を処理ユニットに提供するための手段を有し、処理ユニットにおいてタイマ値を計算するための手段を有し、このタイマ値は出力側バッファの充填度に相応する前記の値に依存し、このタイマをタイマ値によってセットしてタイマをスタートするための手段を有し、このタイマはタイマ値により指定された時間が経過した場合に通知を送信し、もしすでにアクティブでないのならば通知が処理ユニットスレッドの活性化を惹起し、さもなければ処理ユニットスレッドの継続的な活性をもたらす。
【００２１】
本発明による装置は、その入力側が少なくとも２つの異なる一定の入力データレートでデータを供給するならば最も有利に使用される。本発明は、測定されたバッファ充填度が予め設定される最小値と最大値との間にある場合にだけ使用されること及び予め設定された平均バッファ充填度値から結果的に得られるタイマ値により指定される時間が入力側のデータレートの逆数の最小公倍数であることを含む。さらに、タイマ値と出力側バッファ充填度値との間の関係が線形であってもよい。
【００２２】
本発明は従来技術に比べて以下のような利点を有する：第１に、リアルタイム処理のより良好な近似が非リアルタイム挙動を有するシステムにおいて達成されうる。第２に、出力側ユニットの表示時間の改善された時間推定が可能であり、その結果、良好な同期化、例えばオーディオ／ビデオ同期化が得られる。第３に、個々のフレーム毎に処理することが可能であり、それゆえ処理ユニットに接続されるソースストリームへの最適化されたアクセスが可能である。
【００２３】
本発明の有利な実施形態は従属請求項、以下の記述及び図面に開示されている。
【実施例】
【００２４】
本発明の実施例を添付された図面を参照して記述する。
【００２５】
以下においては、本発明の有利な実施例を記述する前に、従来のシステムの問題を詳しく記述する。
【００２６】
図２は複数のマルチメディアソースストリームを有するシステムの中心である処理ユニット１４を示し、これらのマルチメディアソースストリームは別個のデコーダ１１、１２、１３により復号化され、別個のバッファ１１ｂ、１２ｂ、１３ｂにバッファされる。デコーダ１１、１２、１３は、処理ユニット１４のタイムドメインから独立している別個のタイムドメイン又はスレッドに所属する。処理ユニット１４は異なるソースからのデータ間のタイムスタンプを同期させる。処理ユニット１４の出力側はフレーム指向ＦＩＦＯバッファ１５に送信される。バッファ１５からの信号１８はバッファ充填度レベルを処理ユニット１４に伝達し、これにより、バッファ１５の充填度が所定のレベルより下である場合にアンダーフローを防止するようにより多くのデータをリクエストする。バッファ１５の出力側は出力側モジュール１６によって駆動されており、この出力側モジュール１６は正規のインターバルでデータをバッファ出力側１７において必要とする。よって、出力側モジュールはＦＩＦＯバッファ１５の充填度及びフレームレートを決定する。出力側バッファ１５のフレームサイズは出力側モジュール１６の要求に依存するが、通常バッファ１５は非常に大きく、例えば１５フレームである。このようなシステムの典型的なソフトウェア実現においては、出力側モジュール１６は、他のスレッド、とりわけ入力側バッファスレッド及び処理ユニット１４のスレッドから独立しているそれ自身のスレッドにおいて作動する。
【００２７】
出力側バッファ１５は処理ユニット１４スレッドと出力側モジュール１６スレッドとの間の通信エレメントである。出力側バッファ１５の充填度がリクエストされる場合、このバッファが満杯になるまで処理ユニット１４はデータを出力側バッファ１５に書き込む。次いで、処理ユニットは待機する。つまり出力側モジュール１６が出力側バッファ１５からデータブロックを読み出すまでは何もしないか又は他のタスクを実行する。それゆえ、出力側モジュール１６は出力側バッファ１５の充填度を決定し、この出力側バッファ１５は今度は処理ユニット１４の活性化を決定する
このスレッド指向処理は、結果的に例示的なオーディオデータストリームに対して図３に示された特性を生じる。この例では、出力側モジュールは８０ｍｓに等しい時間を有し、すなわち例えば４８ｋＨｚで３８４０個のオーディオサンプルに相応する８０ｍｓオーディオフレームで作動しており、しかもデコーディングフレームは２０ｍｓオーディオ再生には十分である。よって、８０ｍｓのアイドル時間ｄＴの後で、処理ユニットは短いシーケンスで４つの処理呼ｃ１、・・・、ｃ４を受信する。図４ａは出力側バッファの結果的に得られる充填度を示し、この充填度は主に７又は８個のデコードフレームと１１個のデコードフレームとの間で変化する。図４ｂのように値を平均化すること及び次に図４ｃのようにローパスフィルタリングすることによって、平均してほとんど１０個のデコードフレームがバッファに存在することが示される。利用される従来のアルゴリズムはいつも出力側バッファを満杯に保持しようする。
【００２８】
図３及び図４ａは、データブロックがＦＩＦＯから取り出される場合に処理ユニットが４回呼び出されることを示しており、つまりそれは出力側バッファが満杯ではない限りは呼び出される。この時間挙動は非ＲＴＯＳのスレッドマネージメントにおいて典型的なものである。
【００２９】
多重マルチメディアストリームデータのための処理ユニットはロスレスストリームアクセス及び一定の最小遅延処理を保証する必要がある。１つの例はＭＰＥＧ−４プレイヤ用のマルチインプットオーディオレンダラ（multi-input audio renderer）である。
【００３０】
本発明によれば、解決策は、処理ユニットからセットされうるタイマを使用することによって処理のための等間隔開始時点を近似することであり、それはＯＳのスレッドマネージメントの上位にある。これは図５において示されている。このシステムは、タイマユニット２１が処理ユニット１４に接続されていること以外は、図２の前述のシステムに似ている。このタイマユニットはスレッドマネージメントから独立しており、とりわけそれは処理ユニットスレッドの部分ではない。処理ユニット１４は、例えばその信号処理の後で、タイマ２１を値によりセットし、次いでタイマをスタートし、待機モードに入り、この結果、マイクロプロセッサが他のことを行うことができる。タイマがプログラムされた時間の終了に達すると、このタイマが処理モジュールを呼び出すか又は再び「覚醒させる」。処理モジュールはその固有の処理を行い、タイマを新しい値によりセットし、この結果、処理ユニットは指定された時間の間再び待機することができる。これが繰り返される。タイマ値は原理的には信号処理の前又は後で計算される。しかし、この計算は処理ユニットにおいて行われ処理ユニットスレッドは中断されるので、タイマ値の早めの計算が有利である。この場合、タイマはできるだけ早くスタートされ、この結果、潜在的なスレッド中断においてタイマがアクティブである可能性は高い。
【００３１】
タイマ値は次のように出力ＦＩＦＯモジュールの飽和から発生される：ＦＩＦＯバッファの瞬時の充填度が測定される。次いで最近の４つの測定値に亘る充填度の平均値が計算され、例えば、０．１の正規化されたカットオフ周波数を有する３次のフィルタによってローパスフィルタリングされる。この信号は
ｔｉｍｅｒＶａｌｕｅ＝ｋ１＊ｆｉｌｌｉｎｇＶａｌｕｅ＋ｋ２
の形のクリップされた線形関数によるタイマ値をもたらし、ここでｋ１は正の値でなくてはならず、ｆｉｌｌｉｎｇＶａｌｕｅはこの場合充填度測定のローパスフィルタリングされた平均値である。パラメータｋ２はタイマが使用されている場合の最小値を定めており、他方でｋ１は閉ループ制御（regulation）の感度を定義している。
【００３２】
システムの制御ループゲインを定める式を見つけるための一般化されたアプローチは次のようなものである：最初に、閉ループ制御の調整範囲が個々に制限される。すなわちバッファ充填度が例えば２＜バッファ充填度＜１１のように最小値と最大値との間に存在しなくてはならない。次いで、目標充填度が定義され、この目標充填度はこの例では８個のブロックである。線形式がその簡素さのためにここでは使用されるが、他のタイプの式も可能である。原理的に、この例は目標充填度である動作点の周囲に線形式を近似する場合に使用される。上記の例のｋ１及びｋ２に相応する勾配及びオフセットは次のように定められうる：ｔｉｍｅｒＶａｌｕｅがタイマをその値にセットすべき値である場合及びｆｉｌｌｉｎｇＶａｌｕｅが平均化及びローパスフィルタリングの後のバッファ充填度値である場合、動作範囲の下限に対してｔｉｍｅｒＶａｌｕｅは０でｆｉｌｌｉｎｇＶａｌｕｅは２であるべきである。それゆえ：
ｋ２＝−２＊ｋ１
さらに８の平均バッファ充填度に対して２０ｍｓのインターバル時間が生じるべきである。それゆえ：
２０＝ｋ１＊８−２＊ｋ１
よって、計算するとｋ１＝１０／３及びｋ２＝−２０／３である。最後にｔｉｍｅｒＶａｌｕｅは整数に丸められ
ｔｉｍｅｒＶａｌｕｅ＝ｉｎｔｅｇｅｒ（１０／３＊ｘ−２０／３＋０．５）
となる。
【００３３】
この関数は、測定値「ｆｉｌｌｉｎｇＶａｌｕｅ」が少なくとも３でかつ１１より大きくない場合にのみ使用されることに関連してクリップされている。これは図７に示されている。測定値が３より下である場合７４、タイマは使用されず、処理ユニットは次のフレームによって直ちに継続する７１０。測定値が１１より大きい場合７２、処理ユニットは、もう一度測定値を計測する７１前に、スレッドマネージメント機能を使用して所定の時間、例えば１ｍｓだけ休止する７３。しかし、ＯＳスレッドマネージメントはいつでも処理ユニットスレッドを中断することができる。測定値が所定の範囲内にある場合、測定値は平均化され７５、ローパスフィルタリングされ７６、その後で上述の式に入力される７７。この式７７は値を生じ、この値がタイマをセットするために使用され７８、他方でデータブロック、例えばオーディオデータブロックの処理７９がスタートする。その後、タイマは処理ユニットスレッドの次の呼をトリガする７１１。それゆえ、ＷａｉｔＦｏｒＴｉｍｅｒ（）ステップ７１１は実際にはスレッドプロセスの部分ではなく、本発明による処理の部分である。
【００３４】
例えば、ｋ１は１０／３にセットされ、ｋ２は−２０／３にセットされる。この結果、上で説明したように、各々２０ｍｓの８フレームを有する平均出力側バッファ充填度が生じる。処理ユニットに対するこの閉ループ制御の効果は図６に示されている。ドットは時間に亘る処理ユニット呼を表しており、ほぼ線形シーケンスにある。これは処理ユニットのほとんど等間隔の呼を意味する。この精確な時間挙動の重要な帰結として、処理されるデータの表示時間をより良好に推定し、さらにこの推定のために出力側モジュールのバッファモデルを含めることが可能である。これは、バッファの中央値飽和（median saturation）が今や調整可能であるがゆえに既知であるからであり、処理時間がより正確に測定されうるからである。この知識によって、例えばより良好なオーディオ／ビデオ（ＡＶ）同期化及び処理アルゴリズムに対するユーザインタラクティビティの改善された反応がＡＶ再生において達成される。
【００３５】
図８は本発明によるシステムの結果的に得られる挙動を示す。図８ａはバッファ充填度を示し、このバッファ充填度は図４ａよりもよりフレキシブルかつ平均してより低くなっている。これは、平均してより少ないデータが出力側バッファにあることを意味している。この効果は平均バッファ充填度を考慮するとより明瞭になり、２０ｍｓの４つのフレームに亘って平均化されて図８ｂに示され、さらに図８ｃに示されているようにローパスフィルタリングによる平均化を行う。図８ｄは最終的にローパスフィルタリングされた平均充填度値から計算されるタイマ値を示す。出力側バッファが相対的に満杯である場合、例えば時間ｔ８１において、図８ｃのローパスフィルタリングされた平均充填度値は高く、上述のｋ１が正の値であるためにタイマ値は高い。それゆえ、処理ユニットの連続する呼の間の時間は相対的に長く、ほぼ２０ｍｓ又は２０ｍｓより大きい。ローパスフィルタリングされた平均充填度値が低い場合、タイマ値は低く、もしくは、例えば時間ｔ８２においてタイマ値が指定された最小値３より小さいがゆえにタイマはディスエーブルされ、この結果、処理ユニットは呼ごとに１つより多くのフレームを処理する。
【００３６】
図９は本発明の１つの実施形態による処理ユニットの時間挙動を示す。時間Ｔ０ではタイマ値が計算され、タイマがその値にセットされ、フレーム処理がスタートする。ｔ０の時間の後では、ＯＳが処理ユニットスレッドをターミネートする。利用可能なデータがこの時間内に処理されたとみなされる。このタイマはｔＰ０の時間の間は作動しつづけ、ついでＴ１において再び処理ユニットスレッドを呼び出し、この結果、処理ユニットの以前の呼からの時間差はＴ＝ｔ０＋ｔＰ０である。Ｔ１において処理ユニットスレッドが再びアクティブになり、バッファ充填度を測定し、上述のようにタイマ値を計算し、タイマをセットする。次いで、スレッドマネージメントがｔ１１の時間の後でそのフレーム処理を中断し処理パワーを別のプロセスに与えるまで、処理ユニットスレッドがそのフレーム処理を継続する。ｔＰ１の後でスレッドマネージメントはｔ１２の付加的な時間の間だけＴ１にスタートしたデータパケットの処理を継続するために再び処理ユニットスレッドを呼び出す。次のタイマイベントがＴ２においてあらわれる場合、この処理はまだ続行中であり、ｔＤ２の更なる時間の間継続し、しかしこのタイマイベントは記憶される。現在のスレッドがＴ２＋ｔＤ２に完了すると、それは直ぐに再びリスタートされ、バッファ充填度を測定する。この時点でバッファは相対的に空であるとみなされる。なぜなら、バッファは連続的に空にされていたからである。次のタイマ周期のためのより短い時間Ｔ’に相応して、前よりも低いタイマ値が計算される。この時間Ｔ’はＴ−ｔＤ２に等しいか又は近く、バッファ充填度からタイマ値を導出する線形の式に依存する。この結果、実質的に等間隔のタイムラスタが処理ユニットスレッドの開始時間に対して達成される。
【００３７】
１つ又は複数の特定のスレッドのスタート時間がタイムラスタ外に、例えばＴ２＋ｔＤ２にありうるが、本発明の方法はこのラスタを復旧するのに適している。さらに、瞬時のタイマ値は現在の状況に適合され、それゆえ処理ユニットが持つ平均時間が調整される。ラスタタイムＴは処理ユニットの連続する呼の間の平均値であるが、正確にパラメータｋ１及びｋ２の適正な選択によりアプリケーションに合わせられる。それゆえ、処理ユニットの時間挙動は出力側ユニット及び入力側ユニットの時間挙動に適合され、この時間挙動は処理ユニットの遮断を阻止する。
【００３８】
一般的に、平均出力時間インターバルがＮ＊Ｍミリ秒、ただしここでＮは１より大きい正の整数である場合に、ラスタタイムつまり処理ユニットの連続する呼の間の平均時間をＭミリ秒となるように選択すると有利である。
【００３９】
本発明はタイマユニットをいつ利用するかについての様々な可能性を有する。原理的には測定値を記憶し、後で例えばスレッドのスタートシーケンス又は出口シーケンス内で計算に使用しうるのだが、タイマ値の計算及びタイマのセッティングは有利にはバッファ充填度を測定した直後に行われる。
【００４０】
本発明の１つの実施形態では、タイマ値はフレームを処理する前にいつも計算される。別の実施形態では、タイマ値は処理ユニットスレッドが呼び出されるときにはいつでもスレッドのスタートシーケンスとして計算される。また別の実施形態では、タイマ値はスレッドの出口シーケンスの一部として処理ユニットスレッドがターミネートされる前にだけ計算される。１つの実施形態では、タイマユニットがタイマ値の計算の直後にセットされる。別の実施形態では、タイマユニットはもっと後でセットされるか又はスレッドの出口シーケンスの一部として処理ユニットスレッドをターミネートする前にいつもセットされる。
【００４１】
本発明はプロセッサ過負荷の危険性が高いマルチスレッディング環境において例えばＭＰＥＧ−４などのためのマルチチャネルインプットオーディオレンダラをインプリメントするのにとりわけ有利である。
【図面の簡単な説明】
【００４２】
【図１】従来の単一入力オーディオ処理システムのブロック線図である。
【図２】拡張された従来のオーディオ処理システムのブロック線図である。
【図３】拡張された従来の処理システムにおけるバッファへのバースト式データフレーム伝送のタイミングを示す線図である。
【図４】拡張された従来の処理システムにおけるバッファ充填度線図である。
【図５】本発明による改良されたオーディオ処理システムのブロック線図である。
【図６】本発明の処理システムにおけるフレームの等間隔処理を示す線図である。
【図７】本発明のデータ処理方法のフローチャートである。
【図８】本発明の処理システムのバッファ充填度線図である。
【図９】本発明の処理ユニットスレッドのタイミング挙動を示す線図である。
【符号の説明】
【００４３】
１１  デコーダ
１１ｂ  フレームＦＩＦＯ入力側バッファ
１１Ｔ、１４Ｔ、１６Ｔ  スレッド
１２  デコーダ
１２ｂ  入力側バッファ
１３  デコーダ
１３ｂ  入力側バッファ
１４  処理ユニット
１４Ｔ  スレッド
１５  ブロック構成ＦＩＦＯバッファ
１６  出力側モジュール
１６Ｔ  スレッド
１７  連続ストリーム
１８  信号
２１  タイマ
【図１】
2006012150.tif 000003
【図２】
2006012150.tif 000004
【図３】
2006012150.tif 000005
【図４】
2006012150.tif 000006
【図５】
2006012150.tif 000007
【図６】
2006012150.tif 000008
【図７】
2006012150.tif 000009
【図８】
2006012150.tif 000010
【図９】
2006012150.tif 000011