(57)【要約】本発明の映像再生同期信号生成方法は、映像データと音声データとを同期して再生するための映像再生同期信号を生成する映像再生同期信号生成方法であって、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップとを有している。  本発明の映像再生同期信号生成方法によれば、音声データから映像再生同期信号を生成することとしているため、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となる。【特許請求の範囲】
【請求項１】
映像データと音声データとを同期して再生するための映像再生同期信号を生成する映像再生同期信号生成方法であって、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、
前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップとを有することを特徴とする映像再生同期信号生成方法。
【請求項２】
請求項１に記載の映像再生同期信号生成方法において、
前記出力処理終了タイミング取得ステップにおいては、前記音声再生部に対して出力される音声データの出力サンプル数のカウント値が所定値となるタイミングを、前記出力処理終了タイミングとして取得することを特徴とする映像再生同期信号生成方法。
【請求項３】
請求項１に記載の映像再生同期信号生成方法において、
前記出力処理終了タイミング取得ステップにおいては、前記音声再生部に対して出力される音声データの所定位置に立てられたフラグを検出するタイミンダを、前記出力処理終了タイミングとして取得することを特徴とする映像再生同期信号生成方法。
【請求項４】
請求項１に記載の映像再生同期信号生成方法において、
前記出力処理終了タイミング取得ステップにおいては、前記１フレーム相当音声データのブロックが前記音声再生部に対して転送されるタイミングを、前記出力処理終了タイミングとして取得することを特徴とする映像再生同期信号生成方法。
【請求項５】
請求項１に記載の映像再生同期信号生成方法において、
ノン・プリエンプティブなマルチタスクオペレーティングシステムを用いて前記映像再生同期信号を生成することを特徴とすることを特徴とする映像再生同期信号生成方法。
【請求項６】
請求項５に記載の映像再生同期信号生成方法において、
前記出力処理終了タイミング取得ステップにおいては、前記１フレーム相当音声データがブロックとして前記音声再生部に対して転送される際に発行されるシステムコールに基づいて設定されたブロッキングモードが、前記１フレーム相当音声データのブロックの転送終了によって解除されるタイミングを、前記出力処理終了タイミングとして取得することを特徴とする映像再生同期信号生成方法。
【請求項７】
請求項１〜６のいずれかに記載の映像再生同期信号生成方法において、
前記１フレーム相当音声データの出力サンプル数を、映像データのフレームごとに設定可能な出力サンプル数設定ステップをさらに有し、
前記出力サンプル数設定ステップによって設定された前記出力サンプル数に基づいて、映像データのフレームごとに前記出力処理終了タイミング取得ステップを実行することを特徴とする映像再生同期信号生成方法。
【請求項８】
請求項７に記載の映像再生同期信号生成方法において、
前記出力サンプル数設定ステップにおいては、前記出力サンプル数の平均値が所定値と等しくなるか近似するように、前記出力サンプル数を決定することを特徴とする映像再生同期信号生成方法。
【請求項９】
請求項８に記載の映像再生同期信号生成方法において、
前記出力サンプル数の決定は、ブレゼンハム（Ｂｒｅｓｅｎｈａｍ）のアルゴリズムを用いて行うことを特徴とする映像再生同期信号生成方法。
【請求項１０】
請求項７に記載の映像再生同期信号生成方法において、
前記出力サンプル数設定ステップにおいては、音声データのサンプリングレートと映像データのフレームレートとに基づいて前記出力サンプル数を決定するルールが記載されたテーブルを参照することによって、前記出力サンプル数を決定することを特徴とする映像再生同期信号生成方法。
【請求項１１】
映像データと音声データとを同期して再生するための映像再生同期信号を生成するタイミング制御装置に、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、
前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップとを実行させる手順を有することを特徴とする映像再生同期信号生成プログラム。
【請求項１２】
映像データと音声データとを同期して再生するための映像再生同期信号を生成するタイミング制御装置であって、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得して、前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成することを特徴とするタイミング制御装置。
【請求項１３】
映像データと音声データとを同期して再生する映像音声同期再生方法であって、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、
前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップと、
前記映像再生同期信号によって映像データのフレーム更新を行うフレーム更新ステップとを有することを特徴とする映像音声同期再生方法。
【請求項１４】
映像データと音声データとを同期して再生可能な映像音声同期再生装置に、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、
前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成する映像再生同期信号生成ステップと、
前記映像再生同期信号によって映像データのフレーム更新を行うフレーム更新ステップとを実行させる手順を有することを特徴とする映像音声同期再生プログラム。
【請求項１５】
映像データと音声データとを同期して再生可能な映像音声同期再生装置であって、
音声データに基づいて音声再生処理を行う音声再生部と、
映像データに基づいて映像再生処理を行う映像再生部と、
映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得して、前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成するタイミング制御部とを有し、
前記映像再生部は、前記映像再生同期信号に基づいてフレーム更新を行うことを特徴とする映像音声同期再生装置。
【発明の詳細な説明】
【技術分野】  本発明は、映像再生同期信号生成方法、映像再生同期信号生成プログラム、タイミング制御装置、映像音声同期再生方法、映像音声同期再生プログラム及び映像音声同期再生装置に関する。
【背景技術】  映像と音声の再生を行う際、映像と音声とが高精度に同期して再生されないと、視聴者はその同期ずれを違和感として感じることがある。このような違和感を与えないように映像と音声とを高精度に同期させること、あるいは、そのための技術を「リップシンク」または「リップ同期」、「ＡＶ（Ａｕｄｉｏ−Ｖｉｄｅｏ）同期」などと呼んでいる。
映像と音声とでは、再生に用いられるクロックの周波数が異なることから、通常の映像音声再生装置では、それぞれに異なるタイマを用意し、それぞれに用意されたタイマのリソースを管理する必要がある。このような構成の場合、映像再生用と音声再生用のそれぞれのタイマに誤差があると、映像と音声の再生タイミングの誤差が蓄積して、リップシンクが維持できなくなるという問題がある。
そこで、これに対処するための技術として、音声データ出力用カウンタによって音声データの出力サンプル数をカウントし、このカウント値に基づいて映像再生用のタイマを補正するという技術が提案されている（例えば、特許文献１参照。）。特許文献１に記載された技術によれば、音声再生用のタイマに基づいて映像再生用のタイマを補正することとしているため、映像と音声の再生タイミングの誤差が蓄積してしまうことを抑制することができる。
【特許文献１】  特開２００３−３３９０２３号公報
【発明の開示】
しかしながら、特許文献１に記載された技術においては、映像再生用及び音声再生用のそれぞれのタイマのリソースを用意してそれを管理する必要があるという問題がある。
また、特許文献１に記載された技術を、リアルタイム性能の高くないノン・プリエンプティブなマルチタスクオペレーティングシステム（以下、オペレーティングシステムをＯＳという。）上での映像音声同期再生に適用した場合には、マルチタスクＯＳのタスクスケジューリング周期に束縛され、所望のタイミングで映像再生同期信号を出力することができないという問題がある。
なお、ここでいう「リアルタイム性能の高くないマルチタスクＯＳ」とは、例えば、何らかの割り込みがあったとき、その割り込みに対する瞬時の応答の確実性が保証されていないマルチタスクＯＳ、すなわちハードリアルタイム処理を行うことのできないマルチタスクＯＳのことをいうものとする。また、ここでいう「ノン・プリエンプティブなマルチタスクＯＳ」とは、ＣＰＵ上で一のタスク（プロセスということもある。）の処理が行われている場合には、一のタスクよりも優先度の高い他のタスクが生じたとしても、一のタスクから他のタスクに切り替えられるまでの応答時間が保証されないマルチタスクＯＳをいうものとする。
以下、リアルタイム性能の高くないノン・プリエンプティブなマルチタスクＯＳ（以下では単にノン・プリエンプティブなマルチタスクＯＳという。）のタスクスケジューリングについて説明する。
図１７はノン・プリエンプティブなマルチタスクＯＳのタスクスケジューリングについて説明する図である。ここでは説明を単純にするためシステム中のＣＰＵの個数は１個とし、ＣＰＵではＳＭＴ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ  Ｔｈｒｅａｄ）技術を利用していないものとする。図１７において、Ｔｔはノン・プリエンプティブなマルチタスクＯＳのタスクスケジューリング周期（ＯＳによるタイマ割り込み周期）であり、このタスクスケジューリング周期Ｔｔによって複数のタスクの切り替えが可能となる。また、Ｔｉは所望とする周期であり、例えば、映像データのフレーム更新を行うための映像同期再生信号を出力させるべき周期であるとする。
また、マルチタスクであるので、処理すべき複数のタスクＡ，Ａ’，Ｂ，Ｃがあるものとし、タスクＡ’は映像のフレーム更新を行うためのタスクであるとする。また、図１７中の（ａ）に示すように、タスクＡにはＴｉ後にタスクＡ’が処理されるような内容が設定されているものであるとする。
図１７からもわかるように、タスクＡ，Ａ’，Ｂ，Ｃがタスクスケジューリング周期Ｔｔによって切り替えられながらそれぞれ動作を行う。この場合、タスクＡの処理開始からＴｉ後にタスクＡ’が処理され、その後、タスクＡ’が周期Ｔｉごとに処理されるのが理想である。従って、図１７中の（ｂ）に示すように、タスクＡ’はタスクＡの処理開始からＴｉ後のタイミングｔ１において処理開始となるべきである。
しかしながら、この場合、図１７中の（ｃ）に示すように、タイミングｔ１においてはタスクＣが処理中であるため、他のタスクにＣＰＵ時間を与えることはできず、タスクＡ’を処理することができない。
そして、タスクＣの終了するタイミングｔ１’になると、図１７中の（ｄ）に示すように、ＣＰＵ時間が割り当てられて、タスクＡ’の処理が可能となる。従って、この時点においては、本来処理したいタイミングｔ１に対してΔｔ時間の誤差が生じることとなる。
そして、図１７中の（ｅ）に示すように、再度、Ｔｉ後にタスクＡ’が処理されるような内容が設定されるため、タスクＡ’は、図１７中の（ｆ）に示すように、タイミングｔ２’で処理されるような設定となる。
しかしながら、タイミングｔ２’においては、タスクＣが処理中であるため、他のタスクにＣＰＵ時間が与えることができず、タスクＡ’を処理することができない。その後、タスクＣの処理が終了してタイミングｔ２”になると、図１７中の（ｇ）に示すように、ＣＰＵ時間が割り当てられて、タスクＡ’を処理することが可能となる。従って、この時点では、本来処理したいタイミングｔ２に対して誤差がさらに累積してΔｔ’となる。
このように、映像データのフレーム更新を正確なタイミングで処理するためには、ＯＳのタスクスケジューリング周期よりも精細なタイミングを取得できるようにする必要があるが、ノン・プリエンプティブなマルチタスクＯＳにおいては、タスクスケジューリング周期Ｔｔでしか各タスクの切り替えを行うことができない。
このようなマルチタスクＯＳにおいて、そのタスクスケジューリング周期よりも精細なタイミングを取得できるようにする方法としては、マルチタスクＯＳのカーネル空間で何らかの処理を行うことによって、タスクスケジューリング周期よりも精細な周期でのタイミングを取得することが考えられる。
しかしながら、これを実現しようとすると、一般的なマルチユーザＯＳの場合には特権モード（例えば、ＵＮＩＸ（登録商標）系ＯＳではｒｏｏｔ。）を与える必要がある。特権モードはセキュリティ確保の面から容易に与えられるべきものでないため、一般ユーザが自由に使うことは難しいといった問題がある。
また、本発明のように、映像と音声とを同期させる必要がある場合には、単に精細なタスクスケジューリング周期が得られれば良いというわけではない。仮に、カーネル空間で何らかの処理を行うことによって、映像データのフレームレートに相当する周期が得られたとしても、さらに、映像と音声とを同期させる処理をも加える必要があるので、複雑な時間管理が必要となり、実装が困難なものになる。
そこで、本発明は、高精度なリップシンクが可能でタイマリソースの管理が容易な映像再生同期信号生成方法、映像再生同期信号生成プログラム、タイミング制御装置を提供することを第１の目的とする。
また、本発明は、ノン・プリエンプティブなマルチタスクＯＳを用いて映像音声同期再生を行う場合にマルチタスクＯＳのタスクスケジューリング周期に束縛されることなく正確な映像再生同期信号を生成することが可能な映像再生同期信号生成方法、映像再生同期信号生成プログラム、タイミング制御装置を提供することを第２の目的とする。
さらにまた、上記のような映像再生同期信号生成方法によって生成された映像再生同期信号を用いたフレーム更新を行うことにより、高精度なリップシンクが可能でタイマリソースの管理が容易な映像音声同期再生方法、映像音声同期再生プログラム及び映像音声同期再生装置を提供することを第３の目的とする。
（１）本発明の映像再生同期信号生成方法は、映像データと音声データとを同期して再生するための映像再生同期信号を生成する映像再生同期信号生成方法であって、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップとを有することを特徴とする。
このため、本発明の映像再生同期信号生成方法によれば、音声データから映像再生同期信号を生成することとしているため、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第１の目的が達成される。
なお、本発明において、音声再生部に対する出力処理終了タイミングというのは、例えば、音声再生部に設けられるＤ／Ａ変換器などに対する音声データの出力処理の終了タイミングなどをいう。なお、本発明でいう映像のフレームには、インターレース方式の映像フォーマットにおけるフィールドの概念も含まれている。また、本発明でいう音声には、人間の話声音のみならず、ありとあらゆる音が含まれるものとする。
（２）本発明の映像再生同期信号生成方法においては、前記出力処理終了タイミング取得ステップにおいては、前記音声再生部に対して出力される音声データの出力サンプル数のカウント値が所定値となるタイミングを、前記出力処理終了タイミングとして取得することが好ましい。
このような方法とすることにより、所定値を「１フレーム相当音声データ」に含まれる出力サンプル数に設定しておけば、映像データのフレームごとに音声再生のタイミングに正確に同期した映像再生同期信号を生成することができる。
（３）本発明の映像再生同期信号生成方法においては、前記出力処理終了タイミング取得ステップにおいては、前記音声再生部に対して出力される音声データの所定位置に立てられたフラグを検出するタイミングを、前記出力処理終了タイミングとして取得することが好ましい。
このような方法とすることにより、フラグを立てる位置を「１フレーム相当音声データ」の最終位置に設定しておけば、映像データのフレームごとに音声再生のタイミングに正確に同期した映像再生同期信号を生成することができる。
（４）本発明の映像再生同期信号生成方法においては、前記出力処理終了タイミング取得ステップにおいては、前記１フレーム相当音声データのブロックが前記音声再生部に対して転送されるタイミングを、前記出力処理終了タイミングとして取得することが好ましい。
このような方法とすることにより、上記したブロックが音声再生部に対して転送されるタイミングが「１フレーム相当音声データ」の音声再生部に対する出力処理終了タイミングとなるため、映像データのフレームごとに音声再生のタイミングに正確に同期した映像再生同期信号を生成することができる。
この場合、上記したブロックのサイズは、音声データの出力サンプル数、量子化ビット数、出力チャネル数から算出することができる。
（５）本発明の映像再生同期信号生成方法は、ノン・プリエンプティブなマルチタスクオペレーティングシステムを用いて前記映像再生同期信号を生成する場合にも適用することができる。
このため、ノン・プリエンプティブなマルチタスクＯＳを用いて映像音声同期再生を行う場合にも、マルチタスクＯＳのタスクスケジューリング周期に束縛されることなく正確な映像再生同期信号を生成することが可能となるという効果も得られるようになり、本発明の第２の目的も達成される。
（６）本発明の映像再生同期信号生成方法においては、前記出力処理終了タイミング取得ステップにおいては、前記１フレーム相当音声データがブロックとして前記音声再生部に対して転送される際に発行されるシステムコールに基づいて設定されたブロッキングモードが、前記１フレーム相当音声データのブロックの転送終了によって解除されるタイミングを、前記出力処理終了タイミングとして取得することが好ましい。
このような方法とすることにより、タスクスケジューリングの周期よりも精細なタイミングで出力処理終了タイミングを取得することが可能になるため、映像データのフレームごとに音声再生のタイミングに正確に同期した映像再生同期信号を生成することができる。
（７）本発明の映像再生同期信号生成方法においては、前記１フレーム相当音声データの出力サンプル数を、映像データのフレームごとに設定可能な出力サンプル数設定ステップをさらに有し、前記出力サンプル数設定ステップによって設定された前記出力サンプル数に基づいて、映像データのフレームごとに前記出力処理終了タイミング取得ステップを実行することが好ましい。
このような方法とすることにより、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合であっても、映像データのフレームごとに音声データの出力サンプル数を適切に設定することで、映像と音声とを長時間再生したときでもリップシンクのずれを生じないようにすることができる。
（８）本発明の映像再生同期信号生成方法においては、前記出力サンプル数設定ステップにおいては、前記出力サンプル数の平均値が所定値と等しくなるか近似するように、前記出力サンプル数を決定することが好ましい。
このような方法とすることにより、長いスパンで平均したときの音声データの出力サンプル数を、映像データ１フレームの表示期間に相当する理想の出力サンプル数と等しくなるか又は近似するようにすることができ、映像と音声とを長時間再生したときでもリップシンクのずれを生じないようにすることができる。
（９）本発明の映像再生同期信号生成方法においては、前記出力サンプル数の決定は、ブレゼンハム（Ｂｒｅｓｅｎｈａｍ）のアルゴリズムを用いて行うことが好ましい。
このような方法とすることにより、「１フレーム相当音声データ」の出力サンプル数を、ジッタを最小にしつつ適切に設定することができる。
（１０）本発明の映像再生同期信号生成方法においては、前記出力サンプル数設定ステップにおいては、音声データのサンプリングレートと映像データのフレームレートとに基づいて前記出力サンプル数を決定するルールが記載されたテーブルを参照することによって、前記出力サンプル数を決定することも好ましい。
このような方法とすることにより、上記したテーブルを参照して「１フレーム相当音声データ」の出力サンプル数を映像データのフレームごとに決定することで、「１フレーム相当音声データ」の出力サンプル数を少ない演算量で適切に設定することができる。
（１１）本発明の映像再生同期信号生成プログラムは、映像データと音声データとを同期して再生するための映像再生同期信号を生成するタイミング制御装置に、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップとを実行させる手順を有することを特徴とする。
このため、本発明の映像再生同期信号生成プログラムを用いてタイミング制御装置を動作させることにより、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第１の目的が達成される。
（１２）本発明のタイミング制御装置は、映像データと音声データとを同期して再生するための映像再生同期信号を生成するタイミング制御装置であって、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得して、前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成することを特徴とする。
このため、本発明のタイミング制御装置によれば、音声データから映像再生同期信号を生成することとしているため、本発明のタイミング制御装置を用いて映像再生同期信号を生成することにより、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第１の目的が達成される。
（１３）本発明の映像音声同期再生方法は、映像データと音声データとを同期して再生する映像音声同期再生方法であって、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、前記出力処理終了タイミングを取得するごとに前記映像再生同期信号を生成する映像再生同期信号生成ステップと、前記映像再生同期信号によって映像データのフレーム更新を行うフレーム更新ステップとを有することを特徴とする。
このため、本発明の映像音声同期再生方法によれば、音声データから映像再生同期信号を生成し、この映像再生同期信号を用いて映像音声同期再生を行うこととしているため、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第３の目的が達成される。
（１４）本発明の映像音声同期再生プログラムは、映像データと音声データとを同期して再生可能な映像音声同期再生装置に、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得する出力処理終了タイミング取得ステップと、前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成する映像再生同期信号生成ステップと、前記映像再生同期信号によって映像データのフレーム更新を行うフレーム更新ステップとを実行させる手順を有することを特徴とする。
このため、本発明の映像音声同期再生プログラムを用いて映像音声同期再生を行うことにより、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第３の目的が達成される。
（１５）本発明の映像音声同期再生装置は、映像データと音声データとを同期して再生可能な映像音声同期再生装置であって、音声データに基づいて音声再生処理を行う音声再生部と、映像データに基づいて映像再生処理を行う映像再生部と、映像データ１フレームの表示期間に相当する１フレーム相当音声データの音声再生部に対する出力処理終了タイミングを取得して、前記出力処理終了タイミングを取得するごとに映像再生同期信号を生成するタイミング制御部とを有し、前記映像再生部は、前記映像再生同期信号に基づいてフレーム更新を行うことを特徴とする。
このため、本発明の映像音声同期再生装置によれば、音声再生用タイマのリソースのみを基準にして映像データのフレーム更新を行うことが可能になるため、高精度なリップシンクが可能、かつ、タイマリソースの管理が容易となり、本発明の第３の目的が達成される。
【図面の簡単な説明】  図１は、本発明の基本的な概念について説明するための図である。
図２は、本発明の映像音声同期再生装置の機能を概略的に説明する図である。
図３は、実施形態１に係る映像音声同期再生装置の動作概念を説明する図である。
図４は、音声デコーダ１２の処理手順を説明するフローチャートである。
図５は、映像デコーダ１３の処理手順を説明するフローチャートである。
図６は、音声再生部１６の音声再生処理に基づく映像再生同期信号生成方法（第１の映像再生同期信号生成方法）について説明する図である。
図７は、音声再生部１６の音声再生処理に基づく映像再生同期信号生成方法（第２の映像再生同期信号生成方法）について説明する図である。
図８は、音声再生部１６の音声再生処理に基づく映像再生同期信号生成方法（第３の映像再生同期信号生成方法）について説明する図である。
図９は、第３の映像再生同期信号生成方法における音声データブロックの音声データバッファ１４への書き込みを示す図である。
図１０は、第３の映像生成タイミング生成方法を用いた場合の音声及び映像の再生動作例を説明するための図である。
図１１は、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合における音声データと映像データとの関係を説明する図である。
図１２は、映像の１フレームごとにブレゼンハムのアルゴリズムを用いて各フレームに対応する出力サンプル数を求めた結果の一例を示す図である。
図１３は、フレームレートとサンプリングレートとに基づいて予め決められたルールの参照を可能とするテーブルの一例を示す図である。
図１４は、実施形態２に係る映像音声同期再生装置における映像再生同期信号生成方法の一例について説明する図である。
図１５は、ノン・プリエンプティブなマルチタスクＯＳを用いて、音声出力を利用して精細なタスクスケジューリング周期を得る方法について説明する図である。
図１６は、実施形態２に係る映像音声同期再生装置における映像音声同期再生処理をノン・プリエンプティブなマルチタスクＯＳを用いて処理させる場合を概念的に示す図である。
図１７は、ノン・プリエンプティブなマルチタスクＯＳのタスクスケジューリングについて説明する図である。
【発明を実施するための最良の形態】  以下、各実施形態に基づいて本発明を詳細に説明する。
［実施形態１］
図１は、本発明の基本的な概念について説明するための図である。
本発明の映像再生同期信号生成方法においては、図１に示すように、映像データ１フレームの表示期間に相当するＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）音声データ（本発明の「１フレーム相当音声データ」に対応。）が音声再生部に出力処理されたタイミング（これを出力処理終了タイミングという。）で、映像データのフレーム更新を行うための映像再生同期信号を出力することとしている。なお、音声再生部１６に対する出力処理終了タイミングというのは、実施形態１においては、音声再生部１６に設けられるＤ／Ａ変換器１６１に対する音声データの出力処理終了タイミングとしている。
具体的な例で説明すると、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、ＰＣＭ音声データ（以下では単に音声データという。）のサンプリングレートが４４．１［ＫＨｚ］であったとする。この場合、音声データのサンプリングレートを映像データのフレームレートで割り算して得られた１４７０［ｓａｍｐｌｅ］を音声データの１つのブロックとし、その１４７０［ｓａｍｐｌｅ］の音声データのブロックがＤ／Ａ変換器１６１に出力されるタイミングで映像データのフレーム更新を行うための映像再生同期信号を出力する。そして、映像再生部１７（図２参照。）側では、この映像再生同期信号を用いてフレーム更新を行うようにする。
これによって、音声再生用タイマのリソースのみを基準にして映像再生同期信号を生成することが可能となる。このため、映像再生部１７側では、この映像再生同期信号を用いてフレーム更新を行うようにしているので、高精度なリップシンクが可能となり、また、タイマのリソースは音声再生側のみに用意すればよいことから、タイマのリソースの管理を容易なものとすることができる。
図２は、本発明の映像音声同期再生装置の機能を概略的に説明する図である。映像音声同期再生装置は、映像・音声多重化ストリームデータから音声ストリームデータＡＤと映像ストリームデータＶＤとシステムデータＳＤとに分離する機能を有するデマルチプレクサ１１、音声ストリームデータＡＤをデコードする音声デコーダ１２、映像ストリームデータＶＤをデコードする映像デコーダ１３、デコード後の音声データを記憶する音声データバッファ１４、デコード後の映像データをフレーム単位で記憶する映像フレームバッファ１５、音声データバッファ１４に記憶された音声データを順次入力して再生する音声再生部１６、映像フレームバッファ１５に記憶された映像データを順次入力して再生する映像再生部１７、音声と映像とを同期させるためのタイミング制御を行うタイミング制御部１８、音声再生部１６で音声再生処理された音声信号を音声として出力する音声出力部１９及び映像再生部１７で映像再生処理された映像信号を映像として出力する映像出力部２０を有している。
音声データバッファ１４は、リングバッファなどのようなＦＩＦＯの機能を有するものである。なお、音声データはリニアＰＣＭ形式で音声データバッファ１４に記憶される。また、映像フレームバッファ１５は、例えば、３フレーム分の映像データをそれぞれのフレームごとに記憶可能な記憶領域１５１〜１５３を有している。
また、音声再生部１６は、図１に示すように、Ｄ／Ａ変換器１６１、クロックジェネレータ１６２、ローパスフィルタ（ＬＰＦ）１６３を有しており、音声出力部１９に接続されている。
タイミング制御部１８は、デマルチプレクサ１１からのシステムデータＳＤ（サンプリングレートやフレームレートなど。）及び音声再生部１６のクロックジェネレータ１６２からのクロックに基づいて、映像１フレームの表示期間に相当する音声データの出力サンプル数の設定を行う機能を有している。また、タイミング制御部１８は、映像データ１フレームの表示期間に相当する音声データのＤ／Ａ変換器１６１に対する出力処理終了タイミング（この出力処理終了タイミングについては後述する。）を取得して、出力処理終了タイミングを取得するごとに映像再生同期信号を生成し、その映像再生同期信号を映像再生部１７に出力する機能を有している。このタイミング制御部１８の具体的な動作については後述する。
また、映像再生部１７は、映像再生同期信号によって映像出力部２０に対してフレーム更新のための信号を出力する。
図３は、実施形態１に係る映像音声同期再生装置の動作概念を説明する図である。タスクスイッチャＴＳＷは、簡単なタスクスケジューリング機能を有するもので、この図３の例では、デマルチプレクサ１１、音声デコーダ１２及び映像デコーダ１３の動作切り替えを行う。例えば、音声デコーダ１２に動作の権利を与えれば、音声デコーダ１２による音声データの音声データバッファ１４への書き込み動作が可能となり、映像デコーダ１３に動作権利を与えれば、映像データの映像フレームバッファ１５への書き込み動作が可能となる。
音声データバッファ１４に書き込まれた音声データのうち、映像データ１フレームの表示期間に相当する音声データの音声再生処理がなされると、映像再生制御ＶＯＣに処理が移り、映像フレームの更新がなされ、映像フレームバッファ１５に書き込まれている１フレーム分の映像データに対する映像再生処理がなされる。
図４は、音声デコーダ１２の処理手順を説明するフローチャートである。図５は、映像デコーダ１３の処理手順を説明するフローチャートである。
音声デコーダ１２は、図４に示すように、まず、音声ストリームデータＡＤがあるか否かを判定し（ステップＳ１）、音声ストリームデータＡＤがなければ処理をタスクスイッチャＴＳＷ（図４及び図５では「ＴａｓｋＳＷ」と表記する。）に返し（ステップＳ２）、音声ストリームデータＡＤがあれば音声データバッファ１４に空き領域があるか否かを判定する（ステップＳ３）。
この判定において、音声データバッファ１４に空き領域がなければタスクスイッチャＴＳＷに処理を返し（ステップＳ４）、音声データバッファ１４に空き領域があればデコードを行い（ステップＳ５）、デコード後の音声データを音声データバッファ１４に書き込む（ステップＳ６）。そして、タスクスイッチャＴＳＷに処理を返す（ステップＳ７）。
なお、タスクスイッチャＴＳＷに処理を返すということは、タスク処理の権利を自分以外（この例では、デマルチプレクサ１１又は映像デコーダ１３。）に渡すということである。すなわち、図４の場合は、タスクスイッチャＴＳＷによって、音声デコーダ１２からデマルチプレクサ１１ないし映像デコーダ１３に処理を切り替えられることである。また、図４において、タスクスイッチャＴＳＷから戻る矢印は、タスク処理の権利が自身に移ることを意味している。これは、図５においても同様である。
一方、映像デコーダ１３は、図５に示すように、まず、映像ストリームデータＶＤがあるか否かを判定し（ステップＳ１１）、映像ストリームデータＶＤがなければタスクスイッチャＴＳＷに処理を返し（ステップＳ１２）、映像ストリームデータＶＤがあれば映像フレームバッファ１５に空き領域があるか否かを判定する（ステップＳ１３）。
この判定において、映像フレームバッファ１５に空き領域がなければタスクスイッチャＴＳＷに処理を返し（ステップＳ１４）、映像フレームバッファ１５に空き領域があればデコードを行い（ステップＳ１５）、デコード後のフレームを映像フレームバッファ１５の空き領域に書き込む（ステップＳ１６）。そして、タスクスイッチャＴＳＷに処理を返す（ステップＳ１７）。
なお、映像データの映像フレームバッファ１５への書き込みは、図５におけるステップＳ１６の書き込み動作例として示すように、例えば、映像データの各フレームをフレームＦ１，Ｆ２，Ｆ３，・・・で表せば、フレームＦ１をまず空きの記憶領域（この場合、初期状態として３つの記憶領域１５１〜１５３はすべて空き領域であるとする。）１５１に書き込み、次に、フレームＦ２を記憶領域１５２に書き込み、次にフレームＦ３を記憶領域１５３に書き込むというように記憶領域１５１〜１５３に順番に書き込む。
そして、記憶領域１５１〜１５３に書き込まれた映像データは、フレームＦ１，フレームＦ２，・・・の順序で順次出力されるので、記憶領域１５１，１５２，・・・の順序で空き領域となる。従って、フレームＦ４は記憶領域１５１に、フレームＦ５は記憶領域１５２に書き込むというような順序で記憶領域１５１〜１５３に順番に書き込まれる。
図６〜図８は、音声再生部１６の音声再生処理に基づく映像再生同期信号生成方法について説明する図である。なお、図６に示す方法を第１の映像再生同期信号生成方法といい、図７に示す方法を第２の映像再生同期信号生成方法といい、図８に示す方法を第３の映像再生同期信号生成方法ということにする。
まず、第１の映像再生同期信号生成方法について、図６を参照しながら説明する。
図６において、タイミング制御部１８では、音声データの出力サンプル数を所定値に設定する。（ステップＳ２１）。この所定値は、映像データ１フレームに対応する音声データ（１フレーム相当音声データ）の出力サンプル数である。
そして、音声再生部１６では、Ｄ／Ａ変換器１６１に対して音声データサンプルを出力し（ステップＳ３１）、出力済みのサンプル数（これを出力サンプル数という。）がタイミング制御部１８で設定された所定値に達したか否かを判定する（ステップＳ３２）。この判定の結果、出力サンプル数のカウント値が所定値に達したと判定すれば、所定値に達したことを示す信号をタイミング制御部１８に出力する。
タイミング制御部１８は、音声再生部１６から出力サンプル数が所定値に達したことを示す信号を受けると映像再生同期信号を生成し、映像再生部１７に対して映像表示呼び出し（映像再生同期信号出力）を行い（ステップＳ２２）、ステップＳ２１に戻る。
このように、タイミング制御部１８では、音声再生部１６において、Ｄ／Ａ変換器１６１に対して所定の出力サンプル数が出力されたタイミングを、映像データ１フレームの表示期間に相当する音声データの出力処理終了タイミングとして取得し、その出力処理終了タイミングを取得するごとに映像再生同期信号を生成して、その映像再生同期信号を映像再生部１７に出力する。
映像再生部１７では、タイミング制御部１８からの映像表示呼び出し（映像再生同期信号）を受けると、ステップＳ４１で取得しておいた映像フレームを表示したのち、表示済みの映像フレームを記憶していた映像フレームバッファ１５のある１つの記憶領域を解放する（ステップＳ４２，Ｓ４３）。
なお、音声デコーダ１２と音声再生部１６との間及び映像デコーダ１３と映像再生部１７との間はいずれも非同期で動作しているものとする。ただし、音声デコーダ１２及び映像デコーダ１３は、音声データバッファ１４及び映像フレームバッファ１５でそれぞれバッファアンダラン／オーバランが起きないように制御されている。これは、以下に示す図７及び図８においても同様である。
このように、第１の映像再生同期信号生成方法は、Ｄ／Ａ変換器１６１に出力される音声データの出力サンプル数が予め設定された値となるごとに、映像再生部１７に対して映像再生同期信号を出力するものである。映像再生部１７では、この映像再生同期信号によって映像データのフレーム更新を行う。
具体的には、例えば、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］であった場合には、映像データ１フレームの表示期間に対応する音声データの出力サンプル数（１４７０［ｓａｍｐｌｅ］）が音声再生部１６のＤ／Ａ変換器１６１に出力されるごとに、映像データのフレームの更新がなされる。これによって、映像と音声とを高精度に同期させることができる。
このように、第１の映像再生同期信号生成方法によれば、Ｄ／Ａ変換器１６１に出力される音声データの出力サンプル数をカウントし、そのカウント数が予め設定された値となったタイミングで映像データのフレーム更新を行うようにしているので、映像と音声との同期再生が自動的に実現されることとなる。
次に、第２の映像再生同期信号生成方法について、図７を参照しながら説明する。
図７において、タイミング制御部１８は、映像データ１フレームの表示期間に相当する音声データの終端位置にフラグを立てる（ステップＳ５１）。具体的には、音声データ中の音声に直接影響の無い特定のビットに終端であることを示すフラグを立てるなどをする。そして、音声再生部１６では、Ｄ／Ａ変換器１６１に対して音声データサンプルを出力し（ステップＳ６１）、タイミング制御部１８で立てられたフラグを検出したか否かを判定する（ステップＳ６２）。この判定の結果、フラグを検出したと判定すれば、フラグを検出したことを示す信号をタイミング制御部１８に出力する。
タイミング制御部１８は、音声再生部１６からフラグを検出したことを示す信号を受けると、映像再生同期信号を生成し、映像再生部１７に対して映像表示呼び出し（映像再生同期信号出力）を行い（ステップＳ５２）、ステップＳ５１に戻る。
このように、タイミング制御部１８では、音声再生部１６において、Ｄ／Ａ変換器１６１に対して出力される音声データからフラグが検出されたタイミングを、映像データ１フレームの表示期間に相当する音声データの出力処理終了タイミングとして取得し、その出力処理終了タイミングを取得するごとに映像再生同期信号を生成し、その映像再生同期信号を映像再生部１７に出力する。
映像再生部１７では、音声再生部１６からの映像表示呼び出し（映像再生同期信号）を受けると、図６の場合と同様、ステップＳ４１で取得しておいた映像フレームを表示したのち、表示済みの映像フレームを記憶していた映像フレームバッファ１５のある１つの記憶領域を解放する（ステップＳ４２，Ｓ４３）。
第２の映像再生同期信号生成方法は、映像１フレームの表示期間に相当する音声データから終端を示すフラグを検出すると、映像再生部１７に対して映像再生同期信号を出力するものである。映像再生部１７では、この映像再生同期信号によって映像データのフレーム更新を行う。
具体的には、例えば、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］であった場合には、映像データ１フレームの表示期間に相当する出力サンプル数（１４７０［ｓａｍｐｌｅ］）ごとに、音声データの終端を示すフラグを立てる。そして、その終端を示すフラグが検出されるごとに、映像データのフレームの更新がなされる。これによって、映像と音声とを高精度に同期させることができる。
第２の映像再生同期信号生成方法によれば、出力サンプル数をカウントすることなく音声データの所定のデータ単位を検出することができる。これは、「番兵のアルゴリズム」などを用いることによって実現できる。
次に、第３の映像再生同期信号生成方法について、図８を参照しながら説明する。
第３の映像再生同期信号生成方法は、図８に示すように、所定の出力サンプル数に相当する音声データのブロック（以下、音声データブロックという。）が音声データバッファ１４から音声再生部１６の音声再生用のバッファに転送されたタイミングで映像データのフレーム更新を行うものである。
第３の映像生成タイミングの生成方法を実現するために、音声データ用のバッファが２段設けられるようなバッファ構成とすることが好ましい。すなわち、音声デコーダ１２によるデコード済みの音声データを記憶するための音声データバッファ１４と、音声再生部１６側に設けられる音声再生用バッファ（図示せず。）との２段のバッファ構成とする。このような２段のバッファ構成とすることによって、音声データを途切れることなく再生することができる。
なお、音声再生用バッファは、Ｄ／Ａ変換器１６１の前段に設けられる。また、この音声再生用バッファは、音声再生部１６に専用のバッファとして設けることも可能であるが、音声再生部１６が音声再生用バッファとして使用可能な記憶手段をもともと有していればそれを利用することもできる。
第３の映像再生同期信号生成方法を実現する際には、音声データバッファ１４は、複数の記憶領域を有するものとし、それぞれの記憶領域に音声データブロックを個々のブロック単位で書き込むことができるようなものであることが好ましい。従って、この場合、音声データバッファ１４は、映像フレームバッファ１５と同様、例えば、３つの記憶領域１４１〜１４３（図９参照。）を有しているものであるとする。
図９は、第３の映像再生同期信号生成方法における音声データブロックの音声データバッファ１４への書き込みを示す図である。この音声データブロックの音声データバッファ１４への書き込みは、音声デコーダ１２によって行われる。その書き込み動作は、映像データの各フレームを映像フレームバッファ１５の各記憶領域１５１〜１５３へ書き込むのと同様の動作で可能となる。
例えば、図９に示すように、音声データの各音声データブロックを音声データブロックＢ１，Ｂ２，Ｂ３，・・・で表せば、音声データブロックＢ１をまず空きの記憶領域（この場合、初期状態として３つの記憶領域１４１〜１４３はすべて空き領域であるとする。）１４１に書き込み、次に、音声データブロックＢ２を空きの記憶領域１４２に書き込み、次に、音声データブロックＢ３を空きの記憶領域１４３に書き込むというように順次記憶領域１４１〜１４３に書き込む。また、各記憶領域１４１〜１４３に書き込まれた音声データブロックＢ１〜Ｂ３の音声再生用バッファへの転送制御は、タイミング制御部１８からの転送指示によって行われる。
ここで、図８に説明を戻すと、音声再生部１６では、まず、自身が有する音声再生用バッファの記憶領域のうち、再生済みの音声データの１ブロックを記憶していた記憶領域を解放する（ステップＳ７１）。この記憶領域の解放は、音声再生用バッファに書き込まれていた音声データブロックがＤ／Ａ変換器１６１に出力されたタイミングで行われる。
タイミング制御部１８は、所定の出力サンプル数（映像データ１フレームの表示期間に相当する出力サンプル数）の音声データブロックを、音声データバッファ１４から音声再生部１６に転送し、転送済みの音声データブロックを記憶していた記憶領域を解放する（ステップＳ８１）。そして、タイミング制御部１８は、この音声データブロックの音声再生部１６への転送のタイミングを、映像データ１フレームの表示期間に相当する音声データブロックの出力処理終了タイミングとし、その出力処理終了タイミングごとに、映像再生同期信号を生成し、映像再生部１７に対して映像表示呼び出し（映像再生同期信号出力）を行い（ステップＳ８２）、ステップＳ８１に戻る。
また、音声再生部１６は、音声データバッファ１４から転送されてきた音声データブロックを取得して自身の音声再生用バッファに記憶し（ステップＳ７２）、音声再生を行い（ステップＳ７３）、ステップＳ７１に戻る。
映像再生部１７では、タイミング制御部１８からの映像表示呼び出し（映像再生同期信号）を受けると、図６の場合と同様、ステップＳ４１で取得しておいた映像フレームを表示したのち、表示済みの映像フレームを記憶していた映像フレームバッファ１５のある１つの記憶領域を解放する（ステップＳ４２，Ｓ４３）。
図１０は、第３の映像再生同期信号生成方法を用いた場合の音声及び映像の再生動作例を説明するための図である。図１０の横軸は時間を示している。図１０（Ａ）は音声デコーダ１２の音声デコード処理タスクを示す図であり、図１０（Ｆ）は映像デコーダ１３の映像デコード処理タスクを示す図であり、これらはタスクスイッチャＴＳＷによってそれぞれの動作が切り替えられ、ＣＰＵによって割り当てられた時間内でデコード処理を行う。なお、デマルチプレクシング処理のタスクについては、必要な処理時間は映像デコード処理タスクや音声デコード処理タスクよりも短いのが一般的であるため、図１０には特に記していない。
また、図１０（Ｂ）は音声データバッファ１４における３つの記憶領域１４１〜１４３の記憶状態を示す図であり、音声デコーダ１２でデコードされた音声データブロックＢ１が記憶領域１４１に記憶され、音声デコーダ１２でデコードされた音声データブロックＢ２が記憶領域１４２に記憶されるというように、順次、デコードされた音声データブロックＢ１，Ｂ２，・・・がそれぞれ記憶領域１４１，１４２，・・・に記憶される。
なお、図１０（Ｂ）において、斜線を施した部分は各記憶領域１４１〜１４３にデータが記憶されている（ｖａｌｉｄである。）ことを示し、データが記憶されている記憶領域は書き換え不可であり、新たなデータの書き込みはできない。これは、図１０（Ｅ）の映像フレームバッファ１５の場合も同様である。
一方、映像デコーダ１３側においてもデコードされた映像データの各フレームＦ１，Ｆ２，・・・は、図１０（Ｅ）に示すように、順次、記憶領域１５１，１５２，・・・に記憶される。
ここで、音声データブロックＢ２及びこれと対応する映像データのフレームＦ２を例として説明する。音声デコーダ１２によってデコード処理後の音声データブロックＢ２は、記憶領域１４２に記憶される。そして、その記憶領域１４２の音声データブロックＢ２が図１０（Ｃ）に示すように、音声再生部１６の音声再生用バッファに転送されると（ステップＳ１０１）、そのタイミングで映像再生部１７に対して映像表示呼び出し（映像再生同期信号出力）がなされる（ステップＳ１０２）。
これにより、映像再生部１７では、図１０（Ｄ）及び図１０（Ｅ）に示すように、映像フレームバッファ１５に記憶されているフレームＦ２を表示する（ステップＳ１０３）。図１０における（ステップＳ１０１）、（ステップＳ１０２）、（ステップＳ１０３）は、図８のフローチャート中の（ステップＳ１０１）、（ステップＳ１０２）、（ステップＳ１０３）に対応している。
なお、映像データのフレームＦ２の表示期間が終了したあとは、フレームＦ２を記憶していた記憶領域１５２は解放される。また、音声再生部１６側においては、音声データブロックＢ２を音声再生部１６の音声再生用バッファ側に転送した段階で、音声データブロックＢ２を記憶していた記憶領域１４２は解放される。
このように、第３の映像再生同期信号生成方法は、映像データ１フレームの表示期間に相当する音声データのブロックが音声データバッファ１４から音声再生部１６が有する音声再生用バッファに転送されたタイミングで、映像データのフレーム更新を行うものである。映像再生部１７では、この映像再生同期信号によって映像データのフレーム更新を行う。
具体的には、例えば、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］であった場合には、映像データ１フレームの表示期間に対応する音声データの出力サンプル数（１４７０［ｓａｍｐｌｅ］）分の情報量を持つ音声データを１つのブロックとし、その音声データのブロックが音声再生部１６の音声再生用バッファに転送されるタイミングで映像データのフレームの更新がなされる。これによって、映像と音声とを高精度に同期させることができる。
以上説明した第１〜第３の映像再生同期信号生成方法を採用することにより、音声データの再生処理に基づいて映像データのフレーム更新のタイミングを生成することができるので、音声データと映像データとの同期を高精度にとることができ、しかも、映像データのフレーム更新のタイミング生成用のタイマのリソースの用意及び管理が不要となる。
ところで、音声データのサンプリングレートと映像データのフレームレートとが整数比である場合には、音声データのサンプリングレートを映像データのフレームレートで割り算して得られた出力サンプル数を、単純に映像１フレームの表示期間に相当する音声データとすることができる。
すなわち、これまで説明した例では、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］（＝４４１００［Ｈｚ］）であり、これは、音声データのサンプリングレートと映像データのフレームレートとが整数比である場合であったが、各々の値によっては必ずしも整数比になるとは限らない。この場合、映像と音声とを長時間再生すると、後述するようなリップシンクのずれが生じて問題となりうる。
従って、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合についても考慮する必要がある。
以下、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合について説明する。
図１１は、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合における音声データと映像データとの関係を説明する図である。図１１の例では、映像データのフレームレートが２９．９７［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］であるとする。この場合、図１１からもわかるように、３０フレームが出力される時間を計算すると、約１．００１００１［ｓｅｃ］となる。約１．００１００１秒間における音声データの出力サンプル数は４４１４４．１４４１４４・・・となる。音声データのサンプリングレートと映像データのフレームレートとが整数比でないために、このような数値となるのである。
すなわち、映像データ１フレーム当りの音声データの出力サンプル数は、１４７１．４７１・・・となる。しかしながら、音声再生部１６のＤ／Ａ変換器１６１に与えられる音声データの出力サンプル数は、当然ながら正の整数である必要があるため、ここで計算されたような１４７１．４７１・・・という数値をＤ／Ａ変換器１６１に与えることはできない。
そこで、仮に１４７１．４７１・・・について小数点以下切り上げを行って、「１４７２」、または、小数点以下切り捨てを行って「１４７１」とし、これら「１４７２」及び「１４７１」のいずれかに固定した値を上記した各方法における出力サンプル数として用いて同期再生を行うものとすると、映像データと音声データとのタイミングのわずかな誤差が徐々に累積していって、コンテンツを長時間再生したときのリップシンクのずれは許容できないものとなる。
この問題を解決するために、この例では、例えば１４７１［ｓａｍｐｌｅ］あるいは１４７２［ｓａｍｐｌｅ］の各値を適宜切り替えて用いて、長いスパンで平均したときに、映像データ１フレームの表示期間に相当する音声データの出力サンプル数がおおよそ１４７１．４７１・・・［ｓａｍｐｌｅ］となるようにするなどの方法が考えられる。
ただし、その場合であっても、各音声データの出力サンプル数の変動が可能な限り小さく、つまり、フレーム更新周期のジッタが可能な限り小さくなるようにすることが好ましい。例えば、各音声データの出力サンプル数が「１」，「２９４２」，「１」，「２９４２」，「１」，「２９４２」，・・・というような極端な値で映像フレームの更新を行う場合も、平均の出力サンプル数としては、１４７１．４７１・・・に近い値となるが、これではフレーム更新周期のジッタが大きすぎて、視聴者に違和感を与えるものとなるばかりか、このようなタイミングで映像のフレームを切り替えることはハードウェア的に実現性に乏しい。
従って、長いスパンで平均したときの出力サンプル数の値が、理想の出力サンプル数となるように、かつ、フレーム更新周期のジッタができるだけ小さくなるように、映像データ１フレームの表示期間に相当する音声データの出力サンプル数を設定する方法が必要となる。
そのような出力サンプル数の設定方法として、ここでは２つの方法（これを第１の出力サンプル数設定方法及び第２の出力サンプル数設定方法という。）を用いるものとする。
第１の出力サンプル数設定方法は、ブレゼンハム（Ｂｒｅｓｅｎｈａｍ）のアルゴリズムにより出力サンプル数を設定する方法であり、第２の出力サンプル数設定方法は、テーブル参照（ＬＵＴ：Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）により出力サンプル数を設定する方法である。
まず、第１の出力サンプル数設定方法を用いて、映像データ１フレームの表示期間に相当する音声データの出力サンプル数を設定する方法について説明する。
１フレームの表示期間に相当する音声データの理想出力サンプル数Ｎｉ［ｓａｍｐｌｅ／ｆｒａｍｅ］は、
2006006714.tif 000002
で表すことができる。（１）式において、ｆｓは音声データのサンプリングレート［ｓａｍｐｌｅ／ｓｅｃ］、Ｆはフレームレート［ｆｒａｍｅ／ｓｅｃ］、ｋはｋＦ及びｋｆｓを整数にするための整数係数である。
ここで、
ｃ＝（ｋｆｓ  ｍｏｄ  ｋＦ）／ｋＦ                （２）
とおき、映像１フレームの表示期間に相当する音声データの出力処理ごとに、（２）式で得られた値をある実数の変数ｂ（初期値０）に加算する。そして、加算の結果、この変数ｂの整数部が「＋１」となったときだけ、次回出力する音声データの出力サンプル数Ｎを「＋１」だけ加算することとする。
ここでは、映像データのフレームレートＦをＦ＝２９．９７［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートｆｓをｆｓ＝４４．１［ＫＨｚ］としているので、Ｎｉ＝４４１００／２９．９７＝１４７１．４７１４７１・・・［ｆｒａｍｅ／ｓｅｃ］となるが、実際の出力時の出力サンプル数Ｎは、この１４７１．４７１４７１・・・に比較的近い整数とする必要がある。また、（２）式のｃはｃ＝０．４７１４７１と求められる。
図１２は、映像の１フレームごとに上述のブレゼンハムのアルゴリズムを用いて各フレームに対応する出力サンプル数を求めた結果の一例を示す図である。図１２からもわかるように、映像フレームのフレーム番号ｎ＝＝１，２，３，・・・に対応する音声データの出力サンプル数は、「１４７１」と「１４７２」のいずれかとなる。この例の場合、ある実数の変数ｂ（初期値０）に０．４７１４７１を加算して得られる値（ｂｎ）の整数部が「＋１」となった場合に、次に出力する音声データの出力サンプル数Ｎを「＋１」だけ加算する。
図１２の例では、フレーム番号２におけるｂｎの整数部が０で、フレーム番号３におけるｂｎの整数部が１であるので、次回（フレーム番号４）に対応する音声データの出力サンプル数も「１４７１＋１」として「１４７２」の出力サンプル数とする。同様に、図１２の例では、フレーム番号６、フレーム番号８、フレーム番号１０にそれぞれ対応する音声データの出力サンプル数も「１４７２」となる。
このように、この例の場合、映像データの各フレームに対応する音声データの出力サンプル数は、「１４７１」又は「１４７２」がある確率で出現することとなる。なお、図１２では１１個のフレームに対する出力サンプル数しか示されていないが、長いスパンでみても同様の傾向となる。
従って、より長いスパンで平均したときに映像データの各フレームに対応する音声データの出力サンプル数は、理想の出力サンプル数である１４７１．４７１４７１・・・にきわめて近いものとなる。しかも、各フレームごとの出力サンプル数の変動はこの例の場合、「１」であり、これは、時間にしてほぼ２２．７［μｓｅｃ］である。このため、フレーム更新周期のジッタは約２２．７［μｓｅｃ］であり、これは、視聴者に違和感を与える要因とはならない。
以上説明したように、第１の出力サンプル数設定方法を用いることによって、フレーム更新周期のジッタをきわめて小さくできることができる。
なお、上述した例では、各フレームごとに音声データの出力サンプル数を設定するようにしたが、音声データの１サンプル分の時間は、約２２．７［μｓｅｃ］（サンプリングレートが４４．１［ＫＨｚ］である場合）といったきわめて短い時間である。従って、映像データのすべてのフレームごとに出力サンプル数の設定を行わなくても、実用上十分なリップシンク品質が得られるものと考えられる。そこで、実用上十分なリップシンク品質を維持でき、かつ、映像データのフレーム更新周期のジッタが許容できる範囲であれば、上述した第１の出力サンプル数設定方法による出力サンプル数の調整は、複数フレームおきに行うようにしてもよい。
次に、第２の出力サンプル数設定方法について説明する。この第２の出力サンプル数設定方法はテーブル参照（ＬＵＴ：Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）により出力サンプル数を設定する方法である。
フレームレートやサンプリングレートは一般に、何らかの規格の形式でそれぞれの値は予め決められている。例えば、フレームレートであれば、３０［ｆｒａｍｅ／ｓｅｃ］、２９．９７［ｆｒａｍｅ／ｓｅｃ］、２４［ｆｒａｍｅ／ｓｅｃ］、１５［ｆｒａｍｅ／ｓｅｃ］、１０［ｆｒａｍｅ／ｓｅｃ］などであり、サンプリングレートであれば、８［ＫＨｚ］、３２［ＫＨｚ］、４４．１［ＫＨｚ］、４８［ＫＨｚ］などである。このように、一般的に使用されているフレームレートやサンプリングレートは、それぞれ離散的な値である。
従って、フレームレートとサンプリングレート（及び量子化ビット数やチャネル数）との組み合わせによって、音声データの出力サンプル数やその調整の頻度（この頻度は、上述したように複数のフレームおきに出力サンプル数を調整するというようなことを意味している。）などのルールを事前に決めておき、それをテーブルとして持ち、これを利用することで第１の出力サンプル数設定方法と同様の効果を得ることができる。
図１３は、フレームレートとサンプリングレートとに基づいて予め決められたルールの参照を可能とするテーブルの一例を示す図である。図１３において、例えば、フレームレートが１０［ｆｒａｍｅ／ｓｅｃ］（この図１３では［ｆｐｓ］と表記）であって、サンプリングレートは８［ＫＨｚ］である場合には、「ルール“１０−８”」を参照し、フレームレートが１５［ｆｒａｍｅ／ｓｅｃ］であって、サンプリングレートは８［ＫＨｚ］である場合には、「ルール“１５−８”」を参照するというように、フレームレートとサンプリングレートとの組み合わせによって、参照すべきルールが記述されている。
一例として、フレームレートが２９．９７［ｆｒａｍｅ／ｓｅｃ］であってサンプリングレートが４４．１［ＫＨｚ］である場合は、図１３から「ルール“２９．９７−４４．１”」というような参照すべきルールが記述されており、このルールに基づいて出力サンプル数の設定を行う。
この「ルール“２９．９７−４４．１”」としては、種々の出力サンプル数の設定方法を設定することができるが、ここでは、以下に示す３つの出力サンプル数の設定ルールを例として説明する。
まず、出力サンプル数の設定ルール（その１）として、事前にブレゼンハムのアルゴリズムによって各フレームごとの出力サンプル数を求めておき、それを用いる。具体的な値は図１２に示したとおりである。
また、出力サンプル数の設定ルール（その２）として、各フレームごとに１４７１［ｓａｍｐｌｅ］と１４７２［ｓａｍｐｌｅ］とを交互に繰り返す。そして、１０００フレームに１回だけ１４４３［ｓａｍｐｌｅ］とする。これは、出力サンプル数の設定ルール（その１）に比べれば映像フレーム更新周期のジッタは若干大きくなるが、少ない演算量で実現できる。
また、出力サンプル数の設定ルール（その３）として、１４７１［ｓａｍｐｌｅ］を５００回繰り返し、続いて、１４７２［ｓａｍｐｌｅ］を４９９回繰り返す。続いて、１回だけ１４４３［ｓａｍｐｌｅ］とする。この組み合わせを繰り返す。これは、出力サンプル数の設定ルール（その２）の変形であり、出力サンプル数の設定ルール（その２）と同様、出力サンプル数の設定ルール（その１）に比べればサンプリング更新周期のジッタは若干大きくなるが、少ない演算量で実現できる。
以上説明した第１の出力サンプル数設定方法又は第２の出力サンプル数設定方法によって求められた出力サンプル数を、上述の図６におけるステップＳ２１、図７におけるステップＳ５１、図８におけるステップＳ８１で適用することで、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合であっても、高精度なリップシンクを長時間にわたって維持することができる。
すなわち、図６におけるステップＳ２１においては、音声データの出力サンプル数の所定値設定を第１の出力サンプル数設定方法又は第２の出力サンプル数設定方法によって求められた出力サンプル数とし、図７におけるステップＳ５１においては、音声データのフラグ位置を第１の出力サンプル数設定方法又は第２の出力サンプル数設定方法によって求められた出力サンプル数に対応する位置とする。また、図８におけるステップＳ８１においては、転送すべき音声データブロックのブロックサイズを、第１の出力サンプル数設定方法又は第２の出力サンプル数設定方法によって求められた出力サンプル数から算出されるブロックサイズとする。このような設定を行うことで、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合であっても、高精度なリップシンクを長時間にわたって維持することができる。
なお、第２の出力サンプル数設定方法におけるテーブルは、フレームレートとサンプリングレートとが整数比であるか否かにかかわらず用いることもできる。
［実施形態２］
図１４は、実施形態２に係る映像音声同期再生装置における映像再生同期信号生成方法の一例について説明する図である。
実施形態２に係る映像再生同期信号生成方法は、所定の出力サンプル数に相当する音声データブロックが音声データバッファ１４から音声再生部１６側に設けられた音声再生処理用としてのバッファに転送されたタイミングを、音声再生部１６に対する出力処理終了タイミングとし、この出力処理終了タイミングで映像データのフレーム更新を行うものである。なお、音声再生処理用としてのバッファは、後に説明する図１６の音声再生用バッファ１６４に相当するものである。
実施形態２に係る映像再生同期信号生成方法を実現するためには、音声データ用のバッファが２段設けられたバッファ構成とすることが好ましい。すなわち、音声デコーダ１２によるデコード済みの音声データが書き込まれる音声データバッファ１４（これは図２における音声データバッファ１４に相当するものである。）と、音声再生部１６側に設けられた音声再生用バッファ１６４との２段のバッファ構成とする。なお、音声再生用バッファ１６４は、図２においては図示されていない。このような２段のバッファ構成とすることによって、音声データを途切れることなく再生することができる。
なお、音声再生用バッファ１６４は、後に説明する図１６に示すように、Ｄ／Ａ変換器１６１の前段に設けられる。また、音声再生用バッファ１６４は、音声再生部１６に新たに専用のバッファを設けて、それを音声再生用バッファ１６４として使用することも可能であるが、音声再生部１６が音声再生用バッファとして使用可能な記憶手段をもともと有していればそれを利用することもできる。
また、音声データバッファ１４に書き込まれた音声データブロックの音声再生用バッファ１６４への転送制御は、タイミング制御部１８からの転送指示によって行われる。
ここで、図１４に説明を戻すと、音声再生部１６では、まず、音声再生用バッファ１６４の記憶領域（再生済みの音声データブロックを記憶していた記憶領域）を解放する（ステップＳ１１１）。この記憶領域の解放は、音声再生用バッファ１６４に書き込まれていた音声データのブロックがＤ／Ａ変換器１６１に出力されるタイミングで行われる。
タイミング制御部１８は、所定の出力サンプル数（映像データ１フレームの表示期間に相当する出力サンプル数）の音声データブロックを、音声データバッファ１４から音声再生部１６の音声再生用バッファ１６４に転送し、転送済みの音声データブロックを記憶していた記憶領域を解放する（ステップＳ１２１）。そして、タイミング制御部１８は、この音声データブロックの音声再生部１６への転送のタイミングを、映像データ１フレームの表示期間に相当する音声データブロックの出力処理終了タイミングとし、その出力処理終了タイミングごとに、映像再生同期信号を生成し、映像再生部１７に対して映像表示呼び出し（映像再生同期信号出力）を行い（ステップＳ１２２）、ステップＳ１２１に戻る。
また、音声再生部１６は、音声データバッファ１４から転送されてきた音声データブロックを音声再生用バッファ１６４に取得して、音声再生を行い（ステップＳ１１３）、ステップＳ１１１に戻る。
映像再生部１７では、タイミング制御部１８からの映像表示呼び出し（映像再生同期信号）を受けると、図６の場合と同様に、ステップＳ４１で取得しておいた映像フレームを表示したのち、表示済みの映像フレームを記憶していた映像フレームバッファ１５（図５参照。）の記憶領域を解放する（ステップＳ４２，Ｓ４３）。
以上説明したように、実施形態２に係る映像再生同期信号生成方法は、映像データ１フレームの表示期間に相当する音声データブロックが音声データバッファ１４から音声再生部１６の音声再生用バッファ１６４に転送されたタイミングで映像再生同期信号を出力し、この映像再生同期信号によって映像データのフレーム更新を行うものである。
具体的には、例えば、映像データのフレームレートが３０［ｆｒａｍｅ／ｓｅｃ］、音声データのサンプリングレートが４４．１［ＫＨｚ］であった場合、映像データ１フレームに対応する音声データの出力サンプル数（１４７０［ｓａｍｐｌｅ］）を１つの音声データブロックとし、その音声データブロックが音声再生部１６の音声再生用バッファ１６４に転送されるタイミングで映像データのフレームの更新がなされる。これによって、映像と音声とを高精度に同期再生させることができる。
以上説明したように、実施形態２に係る映像再生同期信号生成方法を採用することにより、音声データの再生処理に基づいて映像データのフレーム更新のタイミングを生成することができるので、音声データと映像データとの同期を高精度にとることができ、しかも、映像データのフレーム更新のタイミング生成用のタイマのリソースの用意及び管理が不要となる。
実施形態２に係る映像音声同期再生方法は、図１４に示すような映像音声同期再生を、ノン・プリエンプティブなマルチタスクＯＳを用いて可能とするものである。すなわち、実施形態２に係る映像音声同期再生方法は、映像データ１フレームの表示期間に相当する音声データブロックの音声再生部１６に対する出力処理終了タイミングを、ノン・プリエンプティブなマルチタスクＯＳを用いて、マルチタスクＯＳのタスクスケジューリングの周期よりも精細なタイミングで取得するものである。
図１５は、ノン・プリエンプティブなマルチタスクＯＳを用いて、音声出力を利用して精細なタスクスケジューリング周期を得る方法について説明する図である。
図１５においては、複数のタスクＡ，Ｂ，Ｃがあって、タスクＡは映像データ１フレーム分に相当する音声データブロックをカーネル側の音声データバッファ１４から音声再生部１６側の音声再生用バッファ１６４に書き込む処理（転送処理）と、映像データのフレーム更新処理のための映像再生同期信号の生成及び出力が可能なタスクである。
タスクＡは自身に割り当てられた時間内のあるタイミングｔ１で、カーネル側の音声データバッファ１４に書き込まれている音声データブロックを音声再生部１６側の音声再生用バッファ１６４に転送するための「ｗｒｉｔｅ（）」のシステムコールを発行する。この「ｗｒｉｔｅ（）」のシステムコールをマルチタスクＯＳが受け取ると、カーネルが動作して「ｗｒｉｔｅ（）」の期間（図１５の矢印で示す。）で音声データブロックをカーネル側の音声データバッファ１４から音声再生部１６側の音声再生用バッファ１６４に転送処理する。この間、カーネルはマルチタスクＯＳのブロッキングモードで動作を行うので、タスクＡは「ｗｒｉｔｅ（）」が終わるまで、すなわち、ブロッキング状態から復帰するまで待つ。
そして、カーネルが音声データブロックの転送処理を終了すると、その転送処理終了のタイミングｔ２でブロッキング状態から復帰する。そして、ブロッキングから復帰すると同時に、タスクＡは「フレーム更新処理（）」を行う。
なお、「ｗｒｉｔｅ（）」のシステムコール終了のタイミングとフレーム更新のための映像同期再生信号出力のタイミングとは一致している。すなわち、図１４で説明したように、実施形態２では、映像データ１フレームの表示期間に相当する音声データブロックが音声再生部１６の音声再生用バッファ１６４に転送されたときを映像再生同期信号の出力タイミングとしている。
ところで、タスクＡからマルチタスクＯＳに対して与えた「ｗｒｉｔｅ（）」のシステムコールをカーネルがブロッキングモードで処理中であれば、そのシステムコールはカーネル空間で処理されているため、「ｗｒｉｔｅ（）」の処理が終了するまでは、他のタスク（図１５の例ではタスクＢやタスクＣ）に切り替わることはない。
このように、マルチタスクＯＳのブロッキングモードを利用することで、「ｗｒｉｔｅ（）」のシステムコールが終了したタイミングを所望とするタイミングとすることができる。これによって、ノン・プリエンプティブなマルチタスクＯＳを用いて、そのＯＳのタスクスケジューリング周期よりも精細なタイミングを取得することができ、取得したタイミングを、映像データのフレーム更新処理を行うためのタイミングとして用いることができる。
図１６は、実施形態２に係る映像音声同期再生装置をノン・プリエンプティブなマルチタスクＯＳを用いて処理させる場合を概念的に示す図である。ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）には、音声再生部としてサウンドカードが、映像再生部としてグラフィックカードがそれぞれ設けられているものとする。もちろん、チップセット内蔵の機能が利用できるのであればそれでも構わない。このハードウェア上で、Ｌｉｎｕｘ（登録商標）などのＵＮＩＸ（登録商標）系ＯＳが動作しており、同ＯＳ上に各種デコーダやデマルチプレクサがユーザ空間上のソフトウェアとして実装されている。音声データバッファ１４はＲＡＭに、映像フレームバッファ１５はＲＡＭないしグラフィックカードのＶＲＡＭ上に構成されている。なお、ここでは音声デコーダ、映像デコーダ及びデマルチプレクサなどの各部の動作の詳細については特に説明しないが、再生時は音声データバッファ及び映像フレームバッファがオーバラン／アンダランすることのないようにそれぞれ非同期で動作しているものとする。
映像と音声の再生がユーザ空間で開始されると、まずシステムデータより得られる音声データのサンプリングレートをサウンドカードのクロックとしてセットするため、各種デバイスの機能をコントロールするシステムコールである「ｉｏｃｔｌ（）」を発行する。
カーネル空間ではそのシステムコールにより、デバイスドライバを介してサウンドカード（音声再生部１６）のクロックジェネレータ１６２に音声データのサンプリングレートと同一のクロックを設定する。これによって、サウンドカード（音声再生部１６）側では、音声再生用バッファ１６４に書き込まれている音声データブロック（映像データ１フレームの表示期間に相当する音声データ）をＤ／Ａ変換器１６１にてＤ／Ａ変換したのち、ローパスフィルタ１６３を通して音声信号として出力することができる。
そして、ユーザ空間上ではデコードされた音声データブロック（映像の１フレームの表示期間に相当する音声データ）を、「ｗｒｉｔｅ（）」のシステムコールを発行してサウンドカード側に出力する。ただし、システムコールを処理するカーネル側では、カーネル側の音声データバッファ１４（カーネルが各種デバイスとのＩ／Ｏに利用するための記憶領域であって、以下ではカーネルバッファ１４という。）に一旦データを書き込む。カーネルバッファ１４が一杯にならないとサウンドカード側へのデータの出力はされないので、データブロックのサイズに応じて事前にカーネルバッファ１４のサイズを小さくするなど適宜設定しておくのが好ましい。こうすることで、「ｗｒｉｔｅ（）」のシステムコールが発行されるたびに、カーネルは与えられたデータブロックをサウンドカード側へ出力するようになる。
なお、カーネルバッファ１４から音声再生用バッファ１６４へのデータの書き込み（転送）は、音声再生用バッファ１６４に空き領域がない限り行えない。また、「ｗｒｉｔｅ（）」のシステムコールをブロッキングモードで動作させることで、ユーザ空間におけるプロセスはブロッキング状態となり、「ｗｒｉｔｅ（）」のシステムコールの後に続く処理は、カーネルによってブロッキングされる。
ここで、音声再生部１６において、音声再生用バッファ１６４に書き込まれた音声データブロックがＤ／Ａ変換器１６１に出力されると、音声再生用バッファ１６４には１つの音声データブロック（映像データ１フレームの表示期間に相当する音声データ）分の空き領域ができる。音声再生用バッファ１６４に映像データ１フレームの表示期間に相当する音声データブロック分の空き領域ができると、カーネルバッファ１４に書き込まれた音声データブロックを音声再生用バッファ１６４に転送することができる。
すなわち、「ｗｒｉｔｅ（）」のシステムコールの後に続く処理がカーネルによってブロッキングされたあと、音声再生用バッファ１６４にすでに書き込まれている音声データブロックがＤ／Ａ変換器１６１に出力されると、すなわち、所定の数の音声データサンプルがＤ／Ａ変換器１６１に出力されると（ステップＳ１３１）、音声再生用バッファ１６４には映像データ１フレームの表示期間に相当する音声データブロック分の書き込み可能な領域ができる（ステップＳ１３２）。
音声再生用バッファ１６４に映像データ１フレームの表示期間に相当する音声データブロック分の空き領域ができると、カーネルバッファ１４に書き込まれた音声データブロックが音声再生用バッファ１６４に転送され（ステップＳ１３３）、この音声データブロックの転送が終了すると、「ｗｒｉｔｅ（）」のシステムコールが終了する（ステップＳ１３４）。
このように、カーネルバッファ１４から音声再生用バッファ１６４に音声データブロックが転送されると、「ｗｒｉｔｅ（）」のシステムコールが終了するので、その時点でカーネルによるブロッキングが解除され（ステップＳ１３５）、次のステップである映像データのフレーム更新処理に移る（これが映像再生同期信号となる。）。このタイミングでバッファフリップやビットブリットを行うことによって実際にフレーム更新がなされる。
このような動作を繰り返すことによって、映像データ１フレームの表示期間に相当する音声データのブロックがＤ／Ａ変換器１６１に出力されるごとに映像再生同期信号を映像再生部１７に出力することができる。すなわちこの手法では、システムコールをブロッキングモードで発行したときのカーネルの動作を利用して、ノン・プリエンプティブなマルチタスクＯＳを用いて、マルチタスクＯＳのタスクスケジューリング周期よりも精細なタイミングを取得することができ、そのタイミングを映像データのフレーム更新を行うための映像同期再生信号出力タイミングとして用いることができる。
なお、音声データのサンプリングレートと映像データのフレームレートとが整数比でない場合については、この実施形態２に係る映像音声同期再生方法においても、実施形態１に係る映像音声同期再生方法の場合と同様な方法を用いて対処することができる。
以上、本発明の映像再生同期信号生成方法及び映像音声同期再生方法を上述の各実施形態に基づいて説明したが、本発明は上述の各実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。
また、本発明は、上述の各実施形態１に係る映像再生同期信号生成方法や映像音声同期再生方法に限られず、これら映像再生同期信号生成方法や映像音声同期再生方法を実施する際に用いるタイミング制御装置や映像音声同期再生装置をも含むものである。また、上記したタイミング制御装置に映像再生同期信号生成方法を実行させる手順を有する映像再生同期信号生成プログラムや上記した映像音声同期再生装置に映像音声同期再生方法を実行させる手順を有する映像音声同期再生プログラムをも含むものである。この場合、これらの映像再生同期信号生成プログラムや映像音声同期再生プログラムは、フレキシブルディスク、光ディスク、ハードディスクなどの記録媒体に記録させておくこともできる。従って、本発明は、これらのプログラムが記録された記録媒体をも含むものである。もちろん、本発明は、ネットワークを介して供給可能なプログラムをも含むものである。
【図１】
2006006714.tif 000003
【図２】
2006006714.tif 000004
【図３】
2006006714.tif 000005
【図４】
2006006714.tif 000006
【図５】
2006006714.tif 000007
【図６】
2006006714.tif 000008
【図７】
2006006714.tif 000009
【図８】
2006006714.tif 000010
【図９】
2006006714.tif 000011
【図１０】
2006006714.tif 000012
【図１１】
2006006714.tif 000013
【図１２】
2006006714.tif 000014
【図１３】
2006006714.tif 000015
【図１４】
2006006714.tif 000016
【図１５】
2006006714.tif 000017
【図１６】
2006006714.tif 000018
【図１７】
2006006714.tif 000019
【国際調査報告】
2006006714.tif 000020
2006006714.tif 000021
2006006714.tif 000022
2006006714.tif 000023