(57)【要約】【課題】  オーディオデータとビデオデータとを高精度に同期させて出力する。【解決手段】  符号化されたビデオデータと符号化されたオーディオデータとを再生して復号し、復号したオーディオデータをＤＭＡ転送バッファに書き込み、このＤＭＡ転送バッファから復号されたオーディオデータを読み出してオーディオ出力デバイスに出力と共に復号されたビデオデータをビデオ出力デバイスに出力する再生方法で、  再生処理のためのシステムタイマよりも高周波のクロックをカウントする同期タイマの出力値と前記ＤＭＡバッファに蓄積された前記オーディオデータの状態から求めた出力遅延時間とに基づき、前記オーディオ出力デバイスにより出力されるオーディオデータの再生経過時間と前記ビデオ出力デバイスにより出力されるビデオデータの再生経過時間とが同期するようオーディオデータとビデオデータの出力を制御する。【選択図】  図３
2005236641.tif 000002
【特許請求の範囲】
【請求項１】
符号化されたビデオデータと符号化されたオーディオデータとを、システムタイマの出力に従って再生する再生ステップと、
前記再生された符号化オーディオデータを復号してＤＭＡ転送バッファに書き込むオーディオ復号ステップと、
前記再生された符号化ビデオデータを復号するビデオ復号ステップと、
前記再生ステップによる前記オーディオデータの再生処理とは独立して前記ＤＭＡ転送バッファから前記復号されたオーディオデータを読み出してオーディオ出力デバイスに出力するオーディオ出力ステップと、
前記ビデオ復号ステップにより復号されたビデオデータをビデオ出力デバイスに出力するビデオ出力ステップと、
前記システムタイマよりも高周波のクロックをカウントする同期タイマの出力値と前記ＤＭＡバッファに蓄積された前記オーディオデータの状態から求めた出力遅延時間とに基づき、前記オーディオ出力デバイスにより出力されるオーディオデータの再生経過時間と前記ビデオ出力デバイスにより出力されるビデオデータの再生経過時間とが同期するよう前記オーディオ出力ステップとビデオ出力ステップとを制御する同期制御ステップとを有する再生方法。
【請求項２】
前記ビデオデータの再生中は前記オーディオデータのＤＭＡ転送バッファを常にフルにしておくことを特徴とする請求項１記載の再生方法。
【請求項３】
前記ＤＭＡバッファによる前記オーディオデータのバッファリングの為に発生する遅延時間が、規定時間範囲より小さくなるようにバッファサイズを変更可能であることを特徴とする請求項１記載の再生方法。
【請求項４】
請求項１から３のいずれかに記載の方法をコンピュータにより実行するためのプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はビデオとオーディオの再生方法に関する。
【背景技術】
【０００２】
従来、ビデオデータとオーディオデータを合わせた動画データの再生ソフトウェアにおいて、ビデオとオーディオを同期再生する方法には、オペレーションシステムのシステムタイマを使ったシステム経過時間から得られる時間情報を利用して、ビデオとオーディオの再生時間を合わせて同期させる方法がある（例えば、特許文献１参照）。また、オーディオ再生においてはオーディオデバイスへのオーディオＤＭＡ転送を用いる場合、オーディオ再生のプロセス（あるいはスレッド）がオーディオＤＭＡ転送バッファにオーディオデータを書き込み、ＤＭＡ転送が実行されることでオーディオを出力する。このような場合において、オーディオ再生データをＤＭＡ転送バッファに書き込むオーディオ再生プロセス（プロセス）ではＤＭＡ転送のバッファへの書き込みまでが一連のオーディオ再生ループ処理となるため、実際にオーディオが出力された時間までの遅延時間を、ビデオ再生との同期に反映することが難しい。
【特許文献１】特開２００１−３２４９９８
【発明の開示】
【発明が解決しようとする課題】
【０００３】
前記のようなシステムタイマによる時間情報を使ったビデオとオーディオの同期再生方法では、システムタイマより小さい粒度で、ビデオとオーディオを同期再生することができない問題があった。例えば、システムタイマの粒度が１０ｍｓである場合、オーディオとビデオの再生プロセスが１０ｍｓよりも短い時間でスイッチすることはないため、同期再生の精度として１０ｍｓ以下にはならない。さらにオーディオ再生にオーディオデバイスへＤＭＡによるデータ転送を利用する場合では、オーディオ転送ＤＭＡのバッファリングが原因で実際にオーディオが出力されるまでの遅延時間が大きくなると、システムタイマの時間の粒度では、正確に遅延時間を反映したビデオ、オーディオの再生同期をとることができない。
【０００４】
本発明はこの様な問題を解決し、オーディオデータとビデオデータとを高精度に同期させて出力可能とすることを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、符号化されたビデオデータと符号化されたオーディオデータとを、システムタイマの出力に従って再生する再生ステップと、前記再生された符号化オーディオデータを復号してＤＭＡ転送バッファに書き込むオーディオ復号ステップと、前記再生された符号化ビデオデータを復号するビデオ復号ステップと、前記再生ステップによる前記オーディオデータの再生処理とは独立して前記ＤＭＡ転送バッファから前記復号されたオーディオデータを読み出してオーディオ出力デバイスに出力するオーディオ出力ステップと、前記ビデオ復号ステップにより復号されたビデオデータをビデオ出力デバイスに出力するビデオ出力ステップと、前記システムタイマよりも高周波のクロックをカウントする同期タイマの出力値と前記ＤＭＡバッファに蓄積された前記オーディオデータの状態から求めた出力遅延時間とに基づき、前記オーディオ出力デバイスにより出力されるオーディオデータの再生経過時間と前記ビデオ出力デバイスにより出力されるビデオデータの再生経過時間とが同期するよう前記オーディオ出力ステップとビデオ出力ステップとを制御する同期制御ステップとを有する。
【発明の効果】
【０００６】
本発明によれば、より高精度にオーディオデータとビデオデータとを同期して出力することができる。
【発明を実施するための最良の形態】
【０００７】
図１は本発明を適用した再生システムの一例を表す図である。１０１は、動画データ格納手段であり、符号化されたビデオデータとオーディオデータを合わせた動画データを保存しておき、動画再生時に読み出す手段を表す。
【０００８】
１０２は、再生データ同期手段である。動画再生中に１０１からビデオデータとオーディオデータを読み出す装置およびソフトウェアである。１０２は任意の再生経過時間に合致する、符号化ビデオデータと符号化オーディオデータを取り出すことが可能である。
【０００９】
１０３はオーディオ再生手段である。動画再生中に符号化オーディオデータを復号するプロセス（あるいはスレッド）を示す。１０５はオーディオ出力手段である。オーディオデータから聴音可能なオーディオを出力する。
【００１０】
オーディオ再生では、１０２の再生データ同期手段が１０１の動画データ格納手段から符号化オーディオデータを読み出し、１０３のオーディオ再生手段に渡す。１０３のオーディオ再生手段は符号化オーディオデータ復号化して１０５のオーディオ出力手段に転送する。最後に１０５のオーディオ出力手段が動画のオーディオを出力する。
【００１１】
また、１１２は、ＤＭＡを利用して復号化したオーディオデータを１０３から１０５へ転送することを表している。
【００１２】
１０４はビデオ再生手段である。動画再生中に符号化ビデオデータを復号化するプロセス（あるいはスレッド）を示す。１０６はビデオ出力手段を表し、例えば液晶ディスプレイ表示などの表示装置である。
【００１３】
ビデオ再生では、１０２の再生データ同期手段が１０１の動画データ格納手段から符号化ビデオデータを読み出し、１０４のビデオ再生手段に渡す。１０４のビデオ再生手段は符号化データを復号化して１０６のビデオ出力手段に転送する。最後に１０６のビデオ出力手段が動画のビデオを出力する。
【００１４】
１０７は、本発明の動画再生システムの再生制御手段であり、１０２、１０３、１０４の制御指示を行うプロセス（あるいはスレッド）を表す。
【００１５】
１０８は再生操作受信手段を表す。動画再生を行うユーザーが、１０９に示す再生操作（再生、一時停止、早送り、巻き戻しなど）をすると、１０８の再生操作受信手段が１０７の再生制御手段にどのような再生操作が行われたかを送信する。１０７は操作の種類を識別し、１０２、１０３、１０４に対して制御指示を実行する。
【００１６】
また、動画再生システムは、システムタイマ１１０の時間粒度によって動作する。システムタイマ１１０は、該動画再生システムの動作するオペレーションシステムのタイマである。本発明において再生の同期専用に使用するタイマ１１１を使用する。このタイマを同期タイマと呼ぶことにする。再生データ同期手段１０２とオーディオ再生手段１０３とビデオ再生手段１０４が同期タイマを使用する。
【００１７】
ここで同期タイマについて実施例を記す。同期タイマはシステムタイマよりも細かい精度でタイマ割り込み処理が起きるように作成する。例えばシステムタイマの粒度が１０ｍｓである場合、同期タイマは、少なくとも１ｍｓの粒度でなければならない。同期タイマの一例としては、ハードウェア周期タイマ（ｐｅｒｉｏｄｉｃ  ｔｉｍｅｒ）を使ったタイマである。ハードウェア周期タイマには一定周期のクロック数を設定する。開始するとシステム内部のクロックソース、あるいは外部のクロックソースに同期したクロックをカウントし、設定したクロック数で、ハードウェアタイマ割り込みを起こす。これを利用して同期タイマを作成する。また、同期タイマは任意のタイミングで、開始からの経過時間を読み出すことが可能であり、また任意のタイミングで開始からの経過時間を書き換えることが可能である。
【００１８】
ビデオの再生同期では、ビデオフレームレートが１０ｆｐｓならば、再生開始から１００ｍｓごとにビデオフレームを表示出力するのが理想である。しかし、１５ｆｐｓならば、１０００／１５ｍｓであり、３０ｆｐｓならば、１０００／３０ｍｓを周期として出力することが理想であり、このためには少なくとも０．１ｍｓ程度の精度のタイマが必要である。システムタイマは、動画再生システムのオペレーションシステムが利用するため、あまり粒度が小さいとタイマ割り込み処理が増大してしまう。そのためシステムタイマ時間間隔の粒度を小さくすることは難しい。
【００１９】
したがって、再生同期にシステムタイマを用いると同期再生の精度が悪くなる。
【００２０】
そこで、１５ｆｐｓの場合は１０００／１５ｍｓ、３０ｆｐｓの場合は１０００／３０ｍｓがハードウェア周期タイマの割り込み周期となるように、ハードウェア割り込み間隔のクロック数を計算して同期タイマに設定する。同期タイマは、タイマ割り込み処理内で、割り込み発生時の動作経過時間Ｉを計算して保持しておく。このように同期タイマは内部に動作経過時間を保持する。
【００２１】
ソフトウェアプロセス（あるいはスレッド）から任意のタイミングで読み出される同期タイマの動作経過時間は、動作経過時間Ｉと前回の割り込みからのクロック数で計算された時間である。
【００２２】
次に同期タイマを使った再生同期について実施例を示す。図１の１０２に示す再生データ同期手段は、再生開始と同時に同期タイマをスタートさせる。動画のオーディオとビデオを同期再生するために、同期タイマの動作経過時間を利用する。同期タイマの動作経過時間を、オーディオ再生手段で計算されるオーディオの再生経過時間に合わせ、ビデオ再生手段で計算されるビデオデータの再生経過時間を同期タイマの動作経過時間に合わせるように調整することで、オーディオとビデオの再生経過時間をできるだけ一致させ、同期再生を可能としている。
【００２３】
図２は、同期タイマを利用して、オーディオ再生経過時間とビデオ再生経過時間を一致させることについて模式的に表した図である。２０１は同期タイマの動作経過時間、２０２はオーディオ再生経過時間を表す。オーディオ再生経過時間は、同期タイマ動作経過時間前後の規定同期時間の範囲（２０４）に収まるようにする。動画再生中にオーディオ再生経過時間が２０４の範囲から外れたときには、同期タイマの動作経過時間をオーディオ再生経過時間となるように、同期タイマを設定したり、オーディオ再生処理を一時停止させたりする。
【００２４】
２０３はビデオ経過時間を表し、２０５はビデオフレームを表示するタイミングを示す。ビデオ再生経過時間も同様に、同期タイマ動作経過時間前後の規定同期時間の範囲（２０４）に収まるようにする。動画再生中にビデオ再生経過時間が２０４の範囲より進んでしまったときに次ビデオフレームの表示を遅らせたり、逆に２０４の範囲より遅れたときに次ビデオフレームの表示をスキップしたりすることにより、ビデオ再生が同期タイマの動作経過時間に沿うように制御する。
【００２５】
図１の１１２に示すようなオーディオデータのＤＭＡ転送では、１０３のオーディオ再生手段によってＤＭＡの転送バッファに書き込まれる復号化オーディオデータを１０５のオーディオ出力手段に転送する。ＤＭＡ転送用バッファはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）構造になっており、先に書き込まれたデータから順次転送される。したがってオーディオ出力までには、ＤＭＡ転送バッファでのバッファリングによる遅延が生じる。一般にソフトウェアプロセスからの出力データをＤＭＡ転送で出力デバイスに転送する場合、ソフトウェアプロセスは、ＤＭＡ転送バッファでのバッファリングによる遅延のために、出力の正確な時刻を知ることができない。かかる問題を解決するために、請求項１にある、再生同期処理においてオーディオ出力ＤＭＡバッファのバッファリングで発生する遅延時間を考慮する方法を説明する。
【００２６】
図１の１０３のオーディオ再生手段側の再生同期処理シーケンスを図３に示す。図３のＳ３０２では、復号化オーディオデータをＤＭＡ転送バッファに書き込む。オーディオデータの書き込みはブロッキング・ライトで行われる。すなわち書き込もうとするデータサイズが、バッファの空きサイズに収まりきらない場合に書き込めるだけのデータを先に書き込み、ＤＭＡ転送でバッファに空きが出来次第、残りのデータを書き込んでいく。Ｓ３０２でオーディオデータを書き終えるとＳ３０３に進む。
【００２７】
Ｓ３０３ではオーディオＤＭＡバッファに書き込まれ、転送待ちになっているオーディオデータの出力に要する所要時間を計算する。この所用時間の計算では、転送バッファにあるオーディオデータのサイズと、１１２のＤＭＡのオーディオデータ転送から１０５のオーディオデータ出力までのハードウェア特性を用いた計算を行う。
【００２８】
Ｓ３０４では、それまでにオーディオ再生手段がＤＭＡ転送バッファに書き込んだ符号化オーディオデータの総サイズ分の再生時間から、Ｓ３０３で計算したＤＭＡ転送待ちのオーディオデータ分の再生所要時間を差し引いた、オーディオ再生経過時間を求める。
【００２９】
次に、Ｓ３０５で同期タイマの動作経過時間を調べる。
【００３０】
Ｓ３０６では、Ｓ３０５で得た同期タイマの動作経過時間をＳ３０４で得たオーディオ再生経過時間と比較する。同期タイマの動作経過時間がオーディオ再生経過時間よりも、再生同期判定の規定時間範囲以上にも遅れているならばＳ３０７に進み、そうでないならばＳ３０８に進む。Ｓ３０７では同期タイマの動作経過時間をオーディオ再生経過時間に変更する。
【００３１】
Ｓ３０８では同期タイマの動作経過時間がオーディオ再生経過時間よりも、同期判定の規定時間範囲以上に進んでいるならばＳ３０９に進む。Ｓ３０９では時間差分だけオーディオ再生手段を一時停止する。
【００３２】
以上の方法により、オーディオ出力手段へＤＭＡでオーディオデータを転送する場合に、ＤＭＡバッファでのバッファリングによるオーディオ出力の遅延を考慮して、同期再生をすることが可能である。
【００３３】
オーディオ再生はオーディオＤＭＡ転送のバッファにブロッキング・ライトで書き込む。このとき、オーディオデータの書き込みができるだけブロックされるようにする。すなわち再生中はオーディオデータ転送バッファを常にフルの状態にしておくことにする。例えば、前記請求項３や、オーディオ再生手段のプロセス（あるいはスレッド）を他のプロセス（あるいはスレッド）より優先させるなどの方法により実現する。
【００３４】
このときオーディオ再生は途切れることなく連続しており、同期再生においてオーディオ再生時間を基準とすることが可能である。また転送バッファがフルの状態では、転送待ちになっているデータサイズが一定であり、データ転送にかかる遅延時間が一定となり、オーディオ再生経過時間の計算を単純にすることが可能となる。また書き込みがブロックされるとき、他プロセスに処理実行権を移すことができる利点がある。
【００３５】
ビデオ再生とオーディオ再生では、それぞれの再生経過時間が、同期タイマの動作経過時間を基準とした規定同期時間の範囲内であることを、同期再生の判定としている。しかしオーディオ再生では、再生経過時間すなわち実際に再生出力した時間に相当するオーディオデータ量よりも、ＤＭＡ転送のバッファリングによる遅延時間分に相当するデータ量の分だけ、実際に復号化したデータ量は大きい。
【００３６】
したがって、規定同期時間に相当するオーディオデータサイズよりも転送バッファサイズが大きいほど、オーディオ再生経過時間分のオーディオデータ量よりも復号化したデータ量が大きくなり、再生同期中も、オーディオの復号化処理（図１の１０３）がオーバーワークしていることになる。そこで、オーディオデータのＤＭＡ転送バッファのサイズを、同期再生の規定同期時間に相当するデータサイズよりも小さく変更可能であることする。
【００３７】
また、ＤＭＡ転送バッファサイズを小さくすることで、オーディオデータの書き込みをブロックする回数を増やすこともできる。
【図面の簡単な説明】
【００３８】
【図１】再生システムの一例を示す図である。
【図２】オーディオ再生経過時間とビデオ再生経過時間の一致についての模式図である。
【図３】同期再生処理のフローチャートである。
【図１】
2005236641.tif 000003
【図２】
2005236641.tif 000004
【図３】
2005236641.tif 000005