(57)【要約】オーディオデコーダ中で消費されたバイトを使用して、組込みマルチメディアシステムを再同期させる方法およびシステムである。消費されたバイトは、再送信を要求しないシステムでのビットエラー処理および誤り訂正を補償するためのメカニズムを提供する。オーディオデコーダは消費されたバイトを継続追跡し、消費されたバイトを周期的に報告する。再同期が必要かどうかを決定するために、予め決められたバイトカウントに対してビットエラーが処理され、訂正されているため、ホストマイクロプロセッサは消費された実際のバイトをインデックス付けする。【選択図】    図３
2010505150.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを有するマルチメディアシステムであって、
オーディオビットストリームをデコードし、前記デコードによって消費されたバイトをカウントし、前記消費されたバイトのカウントを報告するオーディオデコーダと；
前記消費されたバイトのカウントに基づいてシステムを再同期するホストマイクロプロセッサと；
を備えるマルチメディアシステム。
【請求項２】
前記オーディオデコーダは、スピーカーによってプレイアウトされた前記オーディオビットストリームのデコードサンプル数をカウントするサンプルカウンタをさらに備える、 請求項1に記載のシステム。
【請求項３】
前記オーディオデコーダは、前記報告を生成するために誤りに対して強靭なオーディオ再生時間スタンプ報告発生器を備え、前記報告は、前記サンプルカウンタのカウントをさらに備える、請求項2に記載のシステム。
【請求項４】
共有メモリをさらに備え、前記ホストマイクロプロセッサは、ビットストリームを組み立てて通信しかつ前記オーディオデコーダによる使用のためにコールバックインターバルを前記共有メモリに書き込むビットストリーム組み立てモジュールを含み、なお、前記コールバックインターバルは前記デコードサンプル数の関数であり、前記報告が前記ホストマイクロプロセッサに送られる頻度を示す；
前記誤りに対して強靭なオーディオ再生時間スタンプ報告発生器は、前記ホストマイクロプロセッサによる使用のために、前記報告の前記サンプルカウンタのカウントおよび前記消費されたバイトを前記共有メモリに書き込む、請求項3に記載のシステム。
【請求項５】
前記ホストマイクロプロセッサは、予め決められたバイトカウントおよび前記予め決められたバイトカウントに関連付けられた予め決められたオーディオ再生時間を有するルックアップテーブル(LUT)と；
前記消費されたバイトのカウウントと前記LUT中でインデックス付けされた前記予め決められたバイトカウントとを相互参照する、誤りに対して強靭な再生時間スタンプ報告相互参照モジュールとを含む、請求項1に記載のシステム。
【請求項６】
前記ホストマイクロプロセッサは、予め決められたオーディオプログラム用の前記LUTを構成するためのLUT構成モジュールを含む、請求項5に記載のシステム。
【請求項７】
前記ホストマイクロプロセッサは早送り、巻き戻し、停止を行うためのユーザ入力コマンドに応答し、前記早送り、巻き戻しのための前記ユーザ入力コマンドに応答して前記ホストマイクロプロセッサは前記LUTを再構成し、前記オーディオデコーダは前記消費されたバイトをリセットする、請求項6に記載のシステム。
【請求項８】
前記オーディオデコーダは、さらに、コールバックインターバルを受け取り前記消費されたバイトをリセットするために前記ホストマイクロプロセッサとインターフェースする、請求項1に記載のシステム。
【請求項９】
前記ホストマイクロプロセッサが前記システムを再同期するとき、前記デコードされたオーディオビットストリームのオーディオプレイアウトを表示する再生時間ディスプレイが再同期される、請求項1に記載のシステム。
【請求項１０】
前記ホストマイクロプロセッサが前記システムを再同期するとき、前記オーディオビットストリームと関係するビデオストリームが再同期される、請求項1に記載のシステム。
【請求項１１】
前記オーディオデコーダはデジタル信号プロセサ(DSP)によって実行されるプログラム命令を含み、前記ホストマイクロプロセッサは、アドバンスドRISCマシン(ARM)によって実行されるプログラム命令を含む、請求項1に記載のシステム。
【請求項１２】
前記オーディオデコーダは、ウィンドウズ・メディア・オーディオ、高品質オーディオコーディング(AAC)デコーダ、AAC Plusデコーダ、改良AAC Plusデコーダ(eAAC+)、MP3およびリアル・オーディオ・ビットストリーム・フォーマットのうちの少なくとも1つとの互換性を有する、請求項1に記載のシステム。
【請求項１３】
マルチメディアシステムであって、
オーディオビットストリームをデコードし、前記デコードの間に消費されたバイトをカウントし、前記消費されたバイトの前記カウントを報告するためのデコード手段と；
前記消費されたバイトを処理し、前記消費されたバイトのカウントに基づいて前記システムを再同期するための処理手段と；
を備えるマルチメディアシステム。
【請求項１４】
前記デコード手段は、プレイアウトされたオーディオビットストリームのデコードサンプル数をカウントするためのサンプルカウント手段をさらに備える、請求項13に記載のシステム。
【請求項１５】
前記デコード手段は、前記サンプルカウント手段のカウントを報告するための報告手段をさらに備える、請求項14に記載のシステム。
【請求項１６】
コールバックインターバルを格納するための格納手段をさらに備え、前記処理手段は、ビットストリームを組み立てて通信しかつ前記デコード手段による使用のために前記コールバックインターバルを前記格納手段に書き込むための手段を含み、前記コールバックインターバルは前記デコードサンプル数の関数であり、前記処理手段による使用のために前記報告手段が前記サンプルカウント手段のカウントおよび前記消費されたバイトを前記格納手段に書き込む頻度を示す、請求項15に記載のシステム。
【請求項１７】
前記処理手段は、予め決められたバイトカウントおよび前記予め決められたバイトカウントに関連付けられた予め決められたオーディオ再生時間を有するルックアップテーブル(LUT)と；
前記消費されたバイトのカウントと前記LUT中でインデックス付けされた前記予め決められたバイトカウントとを相互に参照するための相互参照手段と；
を含む、請求項13に記載のシステム。
【請求項１８】
前記処理手段は、予め決められたオーディオプログラム用の前記LUTを構成するための構成手段を含む、請求項17に記載のシステム。
【請求項１９】
前記処理手段は、早送り、巻き戻し、停止を行うためのユーザ入力コマンドに反応し、前記早送り、巻き戻しのための前記ユーザ入力コマンドに反応して、前記処理手段前記構成手段は前記LUTを再構成するための再構成手段を含み、前記デコード手段は前記消費されたバイトをリセットするためのリセット手段を含む、請求項18に記載のシステム。
【請求項２０】
前記デコード手段は、さらに、コールバックインターバルを受け取り前記消費されたバイトをリセットするために前記処理手段とインターフェースするインターフェース手段を備える、請求項13に記載のシステム。
【請求項２１】
前記処理手段は、前記デコードされたオーディオビットストリームのオーディオプレイアウトを表示する再生時間ディスプレイを再同期するための再同期手段を含む、請求項13に記載のシステム。
【請求項２２】
前記処理手段は、前記オーディオビットストリームと関係するビデオストリームを再同期するための再同期手段を含む、 請求項13に記載のシステム。
【請求項２３】
前記デコード手段は、ウィンドウズ・メディア・オーディオ、高品質オーディオコーディング(AAC)デコーダ、AAC Plusデコーダ、改良AAC Plusデコーダ(eAAC+)、MP3およびリアル・オーディオ・ビットストリーム・フォーマットのうちの少なくとも1つとの互換性を有する、請求項13に記載のシステム。
【請求項２４】
マルチメディアシステムを再同期する方法であって、
オーディオデコーダによってオーディオビットストリームをデコードし、前記デコードの間に消費されたバイトをカウントするステップと;
前記消費されたバイトのカウントをホストマイクロプロセッサに報告するステップと;
報告された前記消費されたバイトを処理するステップと;
前記報告された前記消費されたバイトに基づいて前記システムを再同期するステップと；
を備える方法。
【請求項２５】
前記デコードするステップの間、プレイアウトされた前記オーディオビットストリームのデコードサンプル数をカウントするステップをさらに備える、請求項24に記載の方法。
【請求項２６】
前記報告するステップは、前記デコードサンプル数のカウントを報告するステップをさらに備える、請求項25に記載の方法。
【請求項２７】
ビットストリームを組み立てて通信するステップと；
前記デコードするステップの間の使用のためにコールバックインターバルをセットするステップとをさらに備え、前記コールバックインターバルは前記デコードサンプル数の関数であり、前記報告するステップの頻度を示す、請求項26に記載の方法。
【請求項２８】
前記報告するステップは、前記ホストマイクロプロセッサによる使用のために、前記オーディオデコーダによって消費された前記バイトとデコードされたサンプルのカウントとをメモリに書き込むステップを備える、請求項27に記載の方法。
【請求項２９】
前記処理するステップは、
前記予め決められたバイトカウントと前記予め決められたバイトカウントに関連付けられた予め決められたオーディオ再生時間とを有するルックアップテーブル(LUT)中で、前記消費されたバイトのカウントを予め決められたバイトカウントと相互参照することを備える、請求項24に記載の方法。
【請求項３０】
前記デコードするステップに先立って、予め決められたオーディオプログラムのための前記LUTを構成するステップをさらに備える、請求項29に記載の方法。
【請求項３１】
前記再同期するステップは、前記デコードされたオーディオビットストリームのオーディオプレイアウトを表示する再生時間ディスプレイを再同期するステップを備える、請求項24に記載の方法。
【請求項３２】
前記再同期するステップは、前記オーディオビットストリームと関係するビデオストリームを再同期するステップを備える、請求項24に記載の方法。
【請求項３３】
前記デコードするステップは、ウィンドウズ・メディア・オーディオ、高品質オーディオコーディング(AAC)デコーダ、AAC Plusデコーダ、改良AAC Plusデコーダ(eAAC+)、MP3およびリアルオーディオ・ビットストリーム・フォーマットのうちの少なくとも1つとの互換性を有する、請求項24に記載の方法。
【請求項３４】
組込みマルチメディアシステムにおける使用のためのオーディオデコーダであって、オーディオビットストリームをデコードし、消費されたバイトをカウントし、前記システムの再同期のために前記消費されたバイトのカウントをホストマイクロプロセッサに周期的に報告するオーディオデコーダ。
【請求項３５】
前記オーディオデコーダは、さらに、スピーカーによってプレイアウトされたオーディオビットストリームのデコードされたサンプル数をカウントする、請求項34に記載のデコーダ。
【請求項３６】
前記オーディオデコーダは、さらに、前記サンプルカウンタのカウントを報告する、請求項35に記載のデコーダ。
【請求項３７】
前記オーディオデコーダは、さらに、前記サンプルカウンタおよび前記消費されたバイトのカウントをメモリに書き込み、前記メモリからコールバックインターバルを検索する、請求項36に記載のデコーダ。
【請求項３８】
前記オーディオデコーダは、ウィンドウズ・メディア・オーディオ、高品質オーディオコーディング(AAC)デコーダ、AAC Plusデコーダ、改良AAC Plusデコーダ(eAAC+)、MP3およびリアルオーディオ・ビットストリーム・フォーマットのうちの少なくとも1つとの互換性を有する、請求項34に記載のデコーダ。
【請求項３９】
組込みマルチメディアシステムの複数のプロセッサによって実行可能なプログラム命令であって、前記プログラム命令の実行によって前記プロセッサに、オーディオビットストリームをデコードさせ、前記デコードの間に消費されたバイトをカウントさせ、前記消費されたバイトのカウントを報告させ；
前記消費されたバイトのカウントに基づいて前記システムを再同期させる、プログラム命令。
【請求項４０】
前記プログラム命令は、その実行によって前記プロセッサに、さらに、スピーカーによってプレイアウトされたオーディオビットストリームのデコードサンプル数をカウントさせる、請求項39に記載のプログラム命令。
【請求項４１】
前記報告するためのプログラム命令は、その実行によって前記プロセッサに、さらに、前記デコードサンプル数のカウントを報告させる、請求項40に記載のプログラム命令。
【請求項４２】
前記プログラム命令は、その実行によって前記プロセッサに、ビットストリームを組み立てて通信させ、かつコールバックインターバルをメモリに書き込ませる、なお、前記コールバックインターバルは前記デコードサンプル数の関数で、前記デコードするためのプログラム命令による報告の頻度を示す、請求項39に記載のプログラム命令。
【請求項４３】
前記プログラム命令は、その実行によって前記プロセッサに、さらに、予め決められたバイトカウントと前記予め決められたバイトカウントに関連付けられた予め決められたオーディオ再生時間とを有するルックアップテーブル(LUT)を構成させ；
前記消費されたバイトのカウントと前記LUT中でインデックス付けされた予め決められたバイトカウントとを相互参照させる、請求項39に記載のプログラム命令。
【請求項４４】
前記プログラム命令は、その実行によって前記プロセッサに、早送り、巻き戻し、停止を行うためのユーザ入力コマンドに応答させ、前記早送り、巻き戻しのための前記ユーザ入力コマンドに応答して、前記プログラム命令はその実行によって前記プロセッサに、前記消費されたバイトのカウントをリセットさせ、前記LUTを再構成させる、請求項43に記載のプログラム命令。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込みマルチメディアシステムの分野において同期のために使用されるオーディオ時間スタンプ表示に関する。
【背景技術】
【０００２】
マルチプロセッサシステムでは、オーディオデコーディングのような計算集約的なタスクは、通常、デジタル信号プロセサ(DSP)のような別個のプロセッサで行われ、一方、オーディオ/ビデオ同期(audio/video synchronization)のようなタスク処理はホストのマイクロプロセッサによって行われる。アドバンスドRISCマシーン(ARM)のようなホストマイクロプロセッサは、オーディオ/オーディオ同期(audio/audio sync)、オーディオ/ビデオ同期(audio/video sync)およびオーディオ再生時間(audio playback time)ディスプレイのような多くの目的のためにオーディオデコーダからの時間スタンプ報告(time stamp reporting)を必要とする。
【０００３】
送信制御プロトコル(TCP)は、送り手から受け手までの、信頼でき、かつ規則正しいデータ搬送を保証する。しかし、それは再送信オーバーヘッド(帯域幅浪費をもたらす)を要求し、また、受け手においてバッファーするための余分な遅れはオーディオまたはビデオのリアルタイム再生の中断をもたららし得る。TCPは、マルチメディアストリーミングには通常使用されない。
【０００４】
別のプロトコルとして、ユーザデータグラムプロトコル(UDP)は、データの誤りが確かなことをアドレスするために巡回冗長検査(CRC)のようなチェックサムを使用する。UDP Liteは単に敏感なヘッダーデータにチェックサムを使用して、コーデックが誤り破損データ(error corrupted data)を処理することを可能にする。それ故、UDP Liteはより速いが、発見されずにオーディオもしくはビデオコーデックに送られるビットエラーに帰着し得る。最もオリジナルの装置製造者(OEM)は、それがより速くて再送信帯域幅オーバーヘッドがなく、また、ほとんどのオーディオ/ビデオコーデックがある程度ビットエラーを扱うことができるという事実により、モバイル装置ストリーミング用のUDPを要求する。
【０００５】
例えば、クァルコムのMediaFlo放送システムは、再送信を許可しない独自のプロトコル(proprietary protocol)を使用する。したがって、オーディオ/ビデオコーデックは誤ったビットストリームを受け取り得る。一般に、UDP Liteあるいは他の「ベスト−エフォート」(信頼できない)プロトコルを使用するマルチメディアストリーミングシステムについては、オーディオ/ビデオコーデックは、上部層において検知できない誤ったビットストリームデータを受け取り得る。
【０００６】
時間スタンプを報告する従来の方法は、オーディオデコーダに、再生時間(playback time)あるいはオーディオフレーム番号(audio frame number)をホストマイクロプロセッサに報告させることである。しかしながら、オーディオパケットに誤りがある場合、報告された時間スタンプは誤っている。
【０００７】
ほとんどのビデオコーディング標準は、オーディオビデオ同期を維持するためにホストマイクロプロセッサによって有利に使用することができるビットストリーム内に埋め込まれた時間スタンプ情報を持っている。しかしながら、そのようなタイムスタンプは、オーディオコーディング標準においては典型的に利用可能ではない。
【０００８】
ハフマン符号のような可変長コード体系を使用するパックされたオーディオビットストリーム(packed audio bitstream )については、ビットストリームが破損するとオーディオデコーダは正確なビットストリーム境界情報を失い、ホストのマイクロプロセッサにもはや正確な時間スタンプを報告することができないことになる。パケット中であるビットエラーに遭遇すると、オーディオデコーダは一般に多かれ少なかれビットストリームデータを消費するため、不正確な報告が続いて起こる。その結果、再生時間はビットストリーム消費率との同期から外れるであろう。ホストのマイクロプロセッサが、同期あるいは他の目的で、報告された誤ったオーディオ再生時間を使用すると、誤りの累積的な性質は、再度正確に同期することを不可能にする。
【０００９】
これらを考慮して、改善されたシステム同期のためのホストマイクロプロセッサへの正確な時間スタンプ報告を達成する、誤りに対して強靭(robust)な報告方法および組込みマルチメディアシステムを提供することが望ましい。
【００１０】
また、オーディオビットストリームにおける誤りの累積的な性質を補償するマルチメディアシステムでの使用のために、誤りに対してロバストな報告方法を提供することが望ましい。
【００１１】
さらに、再送信を要求しないプロトコルを使用するマルチメディアシステムにおいて、誤りの累積的な性質を補償するエラーロバスト(error robust)な報告方法を提供することが望ましい。
【００１２】
さらに、UDP Liteあるいは他の「ベスト−エフォート」(信頼できない)のプロトコルを使用するマルチメディアシステムで使用することができるエラーロバストな報告方法を提供することが望ましい。
【発明の概要】
【００１３】
上記のものを考慮して、本発明は、改善されたシステム同期用のホストマイクロプロセッサに報告する正確なタイムスタンプを達成する、エラーロバストな報告方法および組込みマルチメディアシステム(embedded multimedia system)を提供することを目的とする。
【００１４】
本発明は、オーディオビットストリームにおける誤りの累積的な性質を補償するマルチメディアシステムでの使用のための、エラーロバストな報告方法を提供することをもう一つの目的とする。
【００１５】
さらに本発明は、再送信を要求しないプロトコルを使用するマルチメディアシステムにおける、誤りの累積的な性質を補償するエラーロバストな報告方法を提供することを別の目的とする。
【００１６】
さらに本発明は、UDP Liteあるいは他の「ベスト−エフォート」(信頼できない)のプロトコルを使用するマルチメディアシステムで使用することができる、エラーロバストな報告方法を提供することを別の目的とする。
【００１７】
本発明の先のおよび他の目的は、オーディオビットストリームをデコードし、オーディオデコーダによって消費されたバイト(bytes)をカウントし、消費されたバイトのカウントを報告するように動作可能なオーディオデコーダと；消費されたバイトのカウントに基づいて、システムを再同期(resynchronize)させるように動作可能なホストマイクロプロセッサを備えた複数のプロセッサを有するマルチメディアシステムによって遂行される。
【００１８】
オーディオデコーダはさらに、スピーカーによってプレイアウトされたオーディオビットストリームのデコードされたサンプル数をカウントするように動作可能なサンプルカウンタを含む。報告は、また、サンプルカウンタのカウント数を送る。
【００１９】
ホストマイクロプロセッサは、ビットストリームを組み立てて通信し、かつ、使用のためのコールバックインターバルをオーディオデコーダによってメモリに書きこむように操作可能なビットストリーム組み立てモジュールを含む。コールバックインターバルは、デコードされたサンプル数の関数で、報告がホストマイクロプロセッサに送られる頻度を示す。
【００２０】
ホストマイクロプロセッサは、予め決められたバイトカウントおよび予め決められたバイトカウントに関連する予め決められたオーディオ再生時間を有するルックアップテーブル(LUT)を含む。エラーロバストな再生時間スタンプ報告相互参照モジュールが、消費されたバイトのカウントとLUT中でインデックス付けされた予め決められたバイトカウントとを相互に参照するために使用される。
【００２１】
ホストマイクロプロセッサは、早送り、巻き戻し、あるいは停止のユーザ入力コマンドに応答する。ここで、早送りまたは巻き戻しのユーザ入力コマンドに応答して、システムはオーディオデコーダおよびサンプルカウンタ中で消費されたバイトのカウントをリセットし、LUTを再構成する。
【００２２】
オペレーションにおいて、再同期は、デコードされたオーディオビットストリームのオーディオプレイアウトを表示する再生時間ディスプレイの再同期を含む。さらに、オーディオビットストリームと関係するビデオストリームの再同期が必要とされる。
【００２３】
オーディオデコーダは、ウィンドウズ（登録商標）・メディア・オーディオ、高品質オーディオコーディング(AAC)デコーダ、AAC Plusデコーダ、改良されたAAC Plusデコーダ(eAAC+)、MP3およびリアル・オーディオ・ビットストリーム・フォーマットの少なくとも1つと互換性を有する。
【００２４】
別の態様では、本発明は、オーディオデコーダによってオーディオビットストリームをデコードし、デコードの間に消費されたバイトをカウントするステップと;消費されたバイトのカウントをホストマイクロプロセッサに報告するステップと;報告された消費バイトを処理するステップと;報告された消費バイトに基づいて、システムを再同期するステップとを備える、マルチメディアシステムを再同期させる方法に向けられる。
【００２５】
さらに別の態様では、本発明は、組込みマルチメディアシステムにおいて使用され、オーディオビットストリームをデコードし、消費されたバイトをカウントして、再度システムを同期させるために、消費されたバイトのカウントを周期的にホストマイクロプロセッサに報告するように操作可能なオーディオデコーダに向けられる。
【００２６】
さらに別の態様では、本発明は、組込みマルチメディアシステムの複数のプロセッサによって実行可能なプログラム命令に向けられ、そのプログラム命令は、その実行によって、オーディオビットストリームをデコードし、デコードの間に消費されたバイトをカウントし、消費されたバイトのカウントを報告し、消費されたバイトのカウントに基づいてシステムを再度同期するように操作可能とされる。
【００２７】
以上の要約は、以下の本発明の好適な実施形態の詳細な説明と同様に、添付の図面と共に読まれた時、一層よく理解されよう。本発明を例示する目的で、図面中では現時点で好ましい実施例が示される。しかしながら、本発明は示された配置そのものに制限されないことを理解すべきである。
【図面の簡単な説明】
【００２８】
【図１】図1は、本発明によるマルチメディアシステムのブロックダイヤグラムを例示する図である。
【図２Ａ】図2Aは、ファントムで示されるオーディオデコーダの詳細を備えた、図1のマルチメディアシステムのブロックダイヤグラムを例示する図である。
【図２Ｂ】図2Bは、ファントムで示されるホストマイクロプロセッサの詳細を備えた、図1のマルチメディアシステムのブロックダイヤグラムを例示する図である。
【図３】図3は、本発明に従って、オーディオデコーダによるエラーロバストなオーディオ再生時間スタンプ報告方法のフローチャートを例示する図である。
【図４】図4は、本発明に従ってシステム再同期方法のフローチャートを例示する図である。
【図５】図5は、本発明に従って、エラーロバストなオーディオ再生時間スタンプ報告方法のためのホストマイクロプロセッサ制御のフローチャートを例示する図である。
【図６】図6は、ファントムで示されるオーディオデコーダの詳細を備えた、本発明によるマルチメディアシステムの代替実施例のブロックダイヤグラムを例示する図である。
【発明の詳細な説明】
【００２９】
本発明は様々な異なる形態での実施が可能であるが、この明細書と添付の図面は本発明の使用の例としていくつかの形態だけを示す。本発明は、記述された通りの実施例に制限されるようには意図されず、本発明の範囲は添付の請求項で指摘されるであろう。
【００３０】
本発明による組込みマルチメディアシステムの好ましい実施例は、可変長コード体系への特定のアプリケーションとともに以下に述べられる。マルチメディアシステムはメディア再生アプリケーションを使用することができる。オーディオデコーダは、ウィンドウズ・メディア・オーディオ、高品質オーディオコーディング(advanced audio coding)(AAC)デコーダ、AAC Plusデコーダ(AAC Plus decoder)、改良AAC Plusデコーダ(eAAC+)、MP3およびリアル・オーディオ・ビットストリーム・フォーマット(Real Audio bitstream formats)と互換性を有する。しかしながら、本発明はゲームオーディオアプリケーション用を含む他の形態のオーディオデコーダに適用できることが当業者によって理解されよう。
【００３１】
全体を通して同様の要素には同様の参照番号が付された図面を詳細に参照すると、図1および2A-2Bに、全般的に10で示される、本発明による組込みマルチメディアシステムの実施例が示される。
【００３２】
一般に、組込みマルチメディアシステム10は、スピーカー44によるオーディオ、およびビデオディスプレイ46によるビデオのような複数のメディア出力を含んでいる。システム10はさらに、ビデオディスプレイ46と統合あるいは分離された再生時間ディスプレイ(playback time display)48(ファントムで示される)を出力する。例示された組込みマルチメディアシステム10はオーディオとビデオの両方を含んでいるが、任意のユーザ選択プログラムは、オーディオのみ、あるいはオーディオとビデオの両方を含み得る。
【００３３】
組込みマルチメディアシステム10では、図2Bで最も見られるように、ホストマイクロプロセッサ12は、ビットストリーム組み立てモジュール(bitstream assembling module)14中に、パックされたオーディオビットストリーム(packed audio bitstream)を組み立てるプログラム命令を含んでおり、そしてパックされたオーディオビットストリームをDSP 30中のオーディオデコーダ32へ送る。オーディオデコーダ32は、パックされたオーディオビットストリームをスピーカー44によってプレイアウトされる波形へデコードするプログラム命令を含んでいる。一般に、プログラムのパックされたオーディオビットストリーム中の各フレームは、ルックアップテーブル(LUT)構成モジュール15によって構成されその後ルックアップテーブル(LUT)22に格納される予め決められたオーディオ再生時間およびバイトカウントと関連付けられている。
【００３４】
典型的な実施例では、プログラムのフレームFR1、FR2、…FRXの予め決められたオーディオ再生時間は、24A、24B、…24Xとして表示される。さらに、LUT 22は、各フレームの予め決められたオーディオ再生時間24A、24B、…24Xに関連する予め決められたバイトカウント26A、26B、…26Xを有する。
【００３５】
ホストマイクロプロセッサ12はさらに、エラーロバストな再生時間スタンプ報告相互参照モジュール(error-robust playback time stamp report cross referencing module)16として機能するように操作可能なプログラム命令を含んでおり、モジュール16は、LUT 22中の特定フレームの格納され予め決められたオーディオ再生時間24A、24B…24Xを相互参照する。さらに、再同期オペレーションについては、ホストマイクロプロセッサ12はさらに再同期評価モジュール(resynchronization evaluation module)18および再同期モジュール(resynchronization module)20として操作可能なプログラム命令を含む。
【００３６】
オーディオデコーダ32はエラーロバストなオーディオ再生時間スタンプ報告発生器40として機能するように操作可能なプログラム命令を含んでいる。図2Aで最も見られるように、エラーロバストなオーディオ再生時間スタンプ報告発生器40は、レポートインターバル比較器 34、サンプルカウンタ36およびバイトカウンタ(byte counter)38を含む。
【００３７】
レポートインターバル比較器34はコールバックインターバルを時間と比較し、その結果、エラーロバストなオーディオ再生時間スタンプ報告発生器40が報告を送ることができる。レポートインターバル比較器34は、共有メモリ50に格納された1つ以上のコールバックインターバル54を受け取り、抽出(extract)する。ここで、コールバックインターバル54はホストマイクロプロセッサ12によって書き込まれている。オーディオデコーダ32はプログラムの全体にわたって使用のためにコールバックインターバルを使用することができる。
【００３８】
エラーロバストなオーディオ再生時間スタンプ報告発生器40は、ホストマイクロプロセッサ12に送られるエラーロバストなオーディオ再生時間スタンプ報告を作成する。エラーロバストなオーディオ再生時間スタンプ報告は、サンプルカウンタ36からのサンプルカウントとバイトカウンタ38からのバイトカウントを含む。
【００３９】
オペレーションでは、ホストマイクロプロセッサ12は、ホストマイクロプロセッサ12にエラーロバストなオーディオ再生時間スタンプ報告をどれくらいの頻度で送らねればならないかに関してオーディオデコーダ32に指示するために、プレイアウトされたオーディオサンプルの数(N)によってコールバックインターバル54をセットし、および／または送るであろう。コールバックインターバル54はホストマイクロプロセッサ12がLUT構成モジュール15によってLUT 22を構成するのを支援するために使用することができる。オーディオデコーダ32は共有メモリ50からコールバックインターバル54を抽出する。代替として、コールバックインターバル54は、ホストコマンド中でDSP 30に送られてもよい。さらに、オーディオデコーダ32は、バイトカウンタ38によって消費されたビットストリームのバイト数、および、デコードされサンプルカウンタ36を介してスピーカー44に送られたサンプル数の追跡を継続する。エラーロバストなオーディオ再生時間スタンプ報告発生器40は、要求されたコールバックインターバルもしくはコールバックインターバルの整数倍で、サンプルカウンタ36のサンプルカウントとバイトカウンタ38のバイトカウントの両方を報告し返す。
【００４０】
ホストマイクロプロセッサ12は、再生の開始から予め決められたオーディオ再生時間24A、24B、…24Xを備えたビットストリームのバイト数(バイトカウント)26A、26B、…26Xを写像するルックアップテーブル(LUT)22を保存する。ホストマイクロプロセッサ12がエラーロバストなオーディオ再生時間スタンプ報告を受け取ると、ホストマイクロプロセッサ12は、サンプルの数が少なくとも1つのビットストリームエラーの可能性による正確なタイミング表示ではないかもしれないことを認識する。したがって、ホストマイクロプロセッサ12は、予め決められたオーディオ再生時間24A、24B、…24Xを見つけるために、LUT 22にインデックスを付けるため、報告からの消費されたバイトの数(バイトカウント)を使用する。好ましくは、「LUT 22中へのインデックス」は、パックされたオーディオビットストリームにおけるいかなるエラーも一時的にはフレーム境界に配置されていないバイトカウントに帰着するため、報告中で送られたバイトカウントに最も近いLUT 22中のエントリーを見つけるために、最も近いマッチ探索を使用するべきである。
【００４１】
既知のバイトカウントとサンプルカウントによって、ホストマイクロプロセッサ12は、どこでオーディオがプレイアウトし、オーディオ、オーディオと関連付けられたビデオ、および再生時間ディスプレイのうちの少なくとも１つと同期化するかを決定することができる。
【００４２】
メディア(オーディオまたはビデオ)再生のための巻き戻し、早送り、あるいは停止のコマンドが受け取られると、ホストマイクロプロセッサ12はオーディオデコーダ32に対応するコマンドを送り、そうするように指示する。オーディオデコーダ32はサンプルカウンタ36とバイトカウンタ38をリセットする。さらに、ホストマイクロプロセッサ12はLUT構成モジュール15を介してLUT 22を再構成する。サンプルコマンドとバイトコマンドは、サンプルカウンタ36とバイトカウンタ38を0（ゼロ）にリセットするために使用される。代替として、サンプルコマンドとバイトコマンドは、サンプルカウンタ36とバイトカウンタ38を単に前に進めてもよく、あるいは後退させてもよい。
【００４３】
ホストマイクロプロセッサ12および／またはDSP 30は、図5のステップS172A、S172B、S172Cでなされた決定に基づいて、バイト／サンプルカウンタをいつリセットするべきかを知る。オーディオ再生はリアルタイムにあり、人間の耳は、落とされた、あるいは追加されたオーディオサンプルに非常に敏感であるので、再同期は、ビデオフレームを削除するか、ビデオフレームを遅らせるようにホストマイクロプロセッサ12によって制御される。ビデオ再生によって、１つのフレームを二度落とすか、二度プレイすることができる。
【００４４】
様々なビットストリームエラー検知および処理の仕組みがオーディオデコーダにおいて利用可能である。オーディオデコーダ32は、それがエラービットストリームを検知あるいはヒットした場合、出力を無音にし、あるいは出力パルス符号変調(PCM)を隠すことができる。オーディオデコーディングはこれまでに良く確立されているので、デコーディングおよびエラーハンドリングについてこれ以上の説明は行わない。
【００４５】
エラーロバストなオーディオ再生時間スタンプ報告方法100およびマルチメディアシステム10は、ビットストリーム長が対立するチャンネル条件下であっても同じままであるという事実を利用する。ホストマイクロプロセッサ12は、オーディオビットストリームフレーム境界でのパックされたビットストリーム位置をスルーして、予め決められたオーディオ再生時間を相互参照するためにオーディオバイトカウントを使用する。そしてその結果、ビットストリームにおける任意のエラーにかかわらず、システム10の再同期のためのような正確な「実際の」オーディオ再生時間を決定することができる。
【００４６】
図3を参照して、エラーロバストなオーディオ再生時間スタンプ報告方法100は、図4の方法150によってシステム10のホストの再同期を容易にするためにマルチメディアシステム10にインプリメントすることができるエラーロバストなタイムスタンプ報告を可能にする。方法100は、オーディオデコーダ32がホストマイクロプロセッサ12からのパックされたオーディオビットストリームをデコードするステップS102で始まる。ステップS102にステップS104およびS106が続く。ステップS104ではデコードが行われるとともに、バイトカウンタ38がステップS104でデコーダによって消費されたバイトをカウントする。ステップS106に返って、ステップS106はデコードプロセスの間にエラーが検知されたかどうかを決定する。もし決定が「いいえ」である場合、ステップS106にステップS109が続き、ステップS110でスピーカー44によってプレイアウトされるサンプルがカウントされる。
【００４７】
再びステップS106に返って、もしステップS106での決定が「はい」(エラーが検知されたことを意味する)である場合、ステップS106にステップS108が続き、検知されたエラーに適した既知のエラー訂正処理技術を使用してエラーが処理される。またステップS108にステップS109が続き、ステップS110(ステップS110はステップS109に続く)でプレイアウトされるサンプルがカウントされる。
【００４８】
理解されるように、ステップS102、S106およびS108は、オーディオデコーダ32がスピーカー44を介してプレイアウトされる(ステップS110)前に受信ビットストリーム中のビットエラーをデコードし訂正あるいは処理するデコーディングプロセスの一部である。
【００４９】
再びステップS109に返って、ステップS109には、コールバックインターバル54あるいはコールバックインターバル54の整数倍が到達したかどうかを決定するためにステップS112が続く。コールバックインターバル54はサンプルカウントの関数である。もし決定が「いいえ」である場合、ステップS112はステップS109に返る。もしステップS112の決定が「はい」である場合、ステップS112にステップS114が続き、バイトカウントとサンプルカウントを有するエラーロバストなオーディオ再生時間スタンプ報告がホストマイクロプロセッサ12に送られる。ステップS114にはステップS116が続き、さらに何らかのプログラミングがあるかどうかが決定される。ステップS120の決定が「はい」である場合、ステップS120はステップS102に返る。そうではなく、ステップS120の決定が「いいえ」である場合、方法100は終了する。
【００５０】
図4を参照して、システム再同期方法150が示される。方法150は、ホストマイクロプロセッサ12が、バイトカウントおよびサンプルカウントを備えたエラーロバストなオーディオ再生時間スタンプ報告を受け取るステップS152で始まる。ステップS152にはステップS154が続き、パックされたビットストリームのフレーム用に予め決められたオーディオ再生時間24A、24B、…24XがLUT 22中でルックアップあるいは探索される。バイトカウントに近い予め決められたオーディオ再生時間のエントリーを見つけるために、最も近いマッチ探索が使用され得る。ステップS154は、エラーロバストな再生時間スタンプ報告相互参照モジュール16によって実行される。
【００５１】
ステップS154にはステップS156が続き、バイトカウントと相互参照された予め決められたオーディオ再生時間とを使用して、実際のオーディオ再生時間が計算される。ステップS156にはステップS158が続き、ステップS156での計算結果に基づいて、再同期が必要か否かが決定される。もし決定が「いいえ」であれば、方法150は終了する。ステップS156およびS158は再同期評価モジュール18によって実行される。
【００５２】
他方、ステップS158での決定が「はい」である場合、ステップS158にステップS160およびS162が続く。ステップS162では、再同期モジュール20が再生時間ディスプレイを同期させる。ステップS160では、プログラムがさらにビデオを含んでいるかどうかが決定される。もし決定が「いいえ」である場合、ステップS160にステップS164が続き、オーディオ−オーディオ同期(audio-audio sync)が実行される。他方、ステップS160での決定が「はい」である場合、プログラムはビデオとオーディオの両方を含んでいる。したがって、ステップS166でオーディオ−ビデオ同期(audio-video sync)を行う必要がある。ステップS162、S164およびS166で再同期方法150が終了する。もし再同期がビデオフレームの挿入や遅延、あるいはビデオの他の操作によって実行されるならば、LUT 22を修正する必要はない。したがって、ビデオの任意の時点の再同期は、次のサンプルカウントおよびバイトカウントの報告がLUT 22で配列されるようにUT 22を再配列する(エラーが生じなかったと仮定して)。他方、もし再同期がオーディオフレームが落とされあるいは操作されることを要求する場合、LUT 22は再構成を要求し得る。
【００５３】
組込みマルチメディアシステム10は、個々の特定のアプリケーションに言及することはできないが、上に言及されない他のメディアアプリケーションのための同期情報を要求してもよい。
【００５４】
図5を参照して、エラーロバストなオーディオ再生時間スタンプ報告のためのオーディオデコーダ32のホストマイクロプロセッサ制御方法170のフローチャートが示される。方法170はステップS172A、172Bおよび172Cから始まる。オペレーションでは、ホストマイクロプロセッサ12は、ステップS172Aで新しいプログラムの再生のためのユーザコマンドを、ステップS172Bでプログラムの早送りのためのユーザコマンドを、またステップS172Cでプログラムの巻き戻しのためのユーザコマンドを受け取ることができる。
【００５５】
ステップS172A、172Bおよび／または172CにはステップS174が続き、ホストマイクロプロセッサ12が、新しいバイトカウントおよびそれに関連する予め決められたオーディオ再生時間24A、24B、…、24XでLUT 22を構成あるいは再構成する。ステップS174にステップS176(ファントムで示される)が続き、サンプルカウンタ36がリセットされる。ステップS176(ファントムで示される)にステップS178(ファントムで示される)が続き、バイトカウンタ38がリセットされる。LUT 22は新しい、あるいはリセットされたバイトカウントを使用して構成される。1つの実施例では、サンプルカウンタ36およびバイトカウンタ38は、0（ゼロ）あるいはホストマイクロプロセッサ12および／またはDSP 30によって決定された他のある数にリセットされる。ステップS178(ファントムで示される)にはオプションのステップS180(ファントムで示される)が続き、そこでは、コールバックインターバルすなわちコールバックインターバル用のカウンタがセットあるいはリセットされる。コールバックインターバル54は、適宜、送ることができる。例えば、ステップS180でのコールバックインターバルは、再生のために新しいプログラムが開始されたときだけにセットされ、他の時はセットされない。
【００５６】
ステップS176とS178は、新しいプログラム選択、早送り、あるいは巻き戻しのためのユーザ入力を受け取るホストマイクロプロセッサ12の結果としてホストマイクロプロセッサ12とDSP 30との間のインターフェースがサンプルカウンタ36、バイトカウンタ38のセットあるいはリセットをもたらすことを示すために、ファントムで示されている。同様に、コールバックインターバルもセットあるいはリセットされてもよい。さらに、サンプルカウンタ36およびバイトカウンタ38のリセットもDSP 30によって自動的に行われてもよい。
【００５７】
図1、2Aおよび2Bの実施例では、コールバックインターバル54を通信するためのホストマイクロプロセッサ12とDSP 30との間のインターフェースは、共有メモリ50である。この実施例では、ホストマイクロプロセッサ12は共有メモリ50にコールバックインターバル54を書き込む。DSP 30は、エラーロバストなオーディオ再生時間スタンプ報告発生器40による使用のために、共有メモリ50からコールバックインターバル54を読み出す。代替では、コールバックインターバル54を通信するホストマイクロプロセッサ12とDSP 30との間のインターフェースは、ホストマイクロプロセッサ12からDSP 30に送られるコマンドである。
【００５８】
図6を参照して、DSP 30(ファントムで示される)の詳細を有するマルチメディアシステム10'の代替実施例のブロックダイヤグラムが示される。この実施例では、コールバックインターバルを通信するホストマイクロプロセッサとDSP 30との間のインターフェースは、共有メモリ50'である。エラーロバストなオーディオ再生時間スタンプ報告のサンプルカウント52とバイトカウント53を送るためのDSP30とホストマイクロプロセッサ12との間のインターフェースは、オーディオデコーダ32'によってサンプルカウント52およびバイトカウント53を共有メモリ50の記憶位置に書き込むことを含む。ホストマイクロプロセッサ12は、共有メモリ50'からサンプルカウント52およびバイトカウント53を読み出す。さらに、エラーロバストなオーディオ再生時間スタンプ報告発生器40'は、ホストマイクロプロセッサ12にエラーロバストなオーディオ再生時間スタンプ割り込みを送る。その割り込みは、共有メモリ50'中のサンプルカウント52およびバイトカウント53の利用可能性をホストマイクロプロセッサ12に通知する。
【００５９】
上記を考慮して、本発明は、システム同期のためにホストマイクロプロセッサに報告する正確な時間スタンプを達成するエラーロバストな通知方法および組込みマルチメディアシステム10を提供する。その方法とシステム10は、また、システムを同期させるためにオーディオビットストリームにおける誤りの累積的な性質を補償する。
【００６０】
ここで開示された組込みマルチメディアシステム、方法およびプログラム命令によってエラーロバストな報告が正確な時間スタンプ報告を達成し、またオーディオビットストリームにおける誤りの累積的な性質を補償することが当業者によって理解されるであろう。また、エラーロバストな報告は、プロトコルが再送信を要求しない場合に誤りの累積的な性質を補償する。例えば、プロトコルはUDP Liteあるいは他の「ベスト−エフォート」(信頼できない)プロトコルであり得る。エラーロバストな報告は、また、改善された同期を可能にする。
【００６１】
本発明の実施例の先の記述は、例示および説明の目的で提示された。本発明は、開示された形態そのものに限定されるよう意図されるものではなく、上記の教示に照らして変更および変形が可能であり、あるいは本発明の実施から変更および変形を得ることができる。実施例は、当業者が本発明を様々な実施例および意図された特定の使用に適した様々な変更をもって実施できるように、本発明の本質およびその実際的な適用を説明するために選択され、記述された。本発明の範囲はここに添付された請求項とそれらの均等物によって定義されるように意図される。
【図１】
2010505150.tif 000003
【図２Ａ】
2010505150.tif 000004
【図２Ｂ】
2010505150.tif 000005
【図３】
2010505150.tif 000006
【図４】
2010505150.tif 000007
【図５】
2010505150.tif 000008
【図６】
2010505150.tif 000009
【国際調査報告】
2010505150.tif 000010
2010505150.tif 000011
2010505150.tif 000012