(57)【特許請求の範囲】
【請求項１】
ビデオデータとオーディオデータの各々に対して出力データストリームの出力単位のサイズ以上の格納容量を有するバッファと、前記出力単位サイズは、１ＶＯＢＵ（ｖｉｄｅｏ  ｏｂｊｅｃｔ  ｕｎｉｔ）又は１ＧＯＰ（ｇｒｏｕｐ  ｏｆ  ｐｉｃｔｕｒｅ）であり、
入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成して前記バッファに格納し、前記出力単位に基づいてナビゲーションパックを生成し、前記ナビゲーションパック、及び前記格納されたビデオＥＳとオーディオＥＳから出力されるべき複数のビデオパック及び複数のオーディオパックの各々の出力順序を前記出力単位サイズで決定し、前記出力単位サイズと前記出力順序に基づいて前記ナビゲーションパックのパラメータを更新して完成し、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを前記出力データストリームとして出力する制御モジュールと
を具備するデータストリーム生成装置。
【請求項２】
請求項１に記載のデータストリーム生成装置において、
前記出力単位サイズは、前記出力データストリームに渡って、予め決められた数のパックを有する
データストリーム生成装置。
【請求項３】
入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成し、予め決められたパック数からなる出力単位の予め決められたサイズ単位で予め出力順序を決定し、前記予め決められた出力順序に基づいてナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを出力データストリームとして出力する制御モジュールを具備するデータストリーム生成装置。
【請求項４】
請求項２または３に記載のデータストリーム生成装置において、
前記制御モジュールは、前記ビデオデータのビットレート、前記オーディオデータのビットレート、前記ビデオデータのフレームレート及びピクチャーの数に基づいて前記固定の出力単位サイズ当たりのパック数を予め決定する
データストリーム生成装置。
【請求項５】
請求項１乃至４のいずれかに記載のデータストリーム生成装置において、
前記制御モジュールは、第１の仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら前記出力順序を予め決定する
データストリーム生成装置。
【請求項６】
請求項５に記載のデータストリーム生成装置において、
前記制御モジュールは、最初に前記ナビゲーションパックを出力し、続いて前記ビデオパックを出力し、続いて前記オーディをパックを出力するように前記シミュレーションを行う
データストリーム生成装置。
【請求項７】
請求項１乃至６のいずれかに記載のデータストリーム生成装置において、
前記制御モジュールは、第２の仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックを前記出力データストリームとして出力する
データストリーム生成装置。
【請求項８】
請求項６に記載のデータストリーム生成装置において、
前記制御モジュールは、前記第１の仮想バッファがオーバーフローすると判断するとき、ダミーパックを生成してシミュレーションを行う
データストリーム生成装置。
【請求項９】
請求項８に記載のデータストリーム生成装置において、
前記制御モジュールは、第２の仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパック、前記ダミーパックを前記出力データストリームとして出力するデータストリーム生成装置。
【請求項１０】
出力単位のサイズ当たりのパック数を決定する第１ステップと、
入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成してバッファに格納する第２ステップと、
ナビゲーションパックを生成する第３ステップと、
前記出力単位サイズで前記ナビゲーションパック、及び前記格納されたビデオＥＳとオーディオＥＳから出力されるべき複数のビデオパック及び複数のオーディオパックの各々の出力順序を決定する第４ステップと、
前記出力単位サイズと前記出力順序に基づいて前記ナビゲーションパックのパラメータを更新して完成する第５ステップと、
前記出力順序に基づいて前記バッファから前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを読みだし、前記出力データストリームとして出力する第６ステップと
を具備するデータストリーム生成方法。
【請求項１１】
請求項１０に記載のデータストリーム生成方法において、
前記第４ステップは、第１の仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら前記出力順序を決定するステップを具備する
データストリーム生成方法。
【請求項１２】
請求項１０または１１に記載のデータストリーム生成方法において、
前記出力単位サイズは、前記出力データストリーム中で固定である
データストリーム生成方法。
【請求項１３】
請求項１０乃至１２のいずれかに記載のデータストリーム生成方法において、
前記第１ステップは、前記ビデオデータのビットレート、前記オーディオデータのビットレート、前記ビデオデータのフレームレート及びピクチャーの数に基づいて前記出力単位サイズ当たりのパック数を予め決定するステップを具備する
データストリーム生成方法。
【請求項１４】
請求項１０乃至１３のいずれかに記載のデータストリーム生成方法において、
前記第６ステップは、第２の仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを前記出力データストリームとして出力するステップを具備する
データストリーム生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データをエンコードしてデータストリームを生成する方法と、そのための装置に関し、特に、ビデオデータとオーディオデータからＤＶＤ規格またはＭＰＥＧ規格のデータストリームを生成する方法と、そのための装置に関する。
【０００２】
【従来の技術】
従来のＭＰＥＧエンコーダは、ＭＰＥＧデコーダ側と同容量程度の標準的なストリームバッファを持つ。ＭＰＥＧエンコーダは、ビデオデータ及びこのバッファを使用して、リアルタイムに生成されたビデオ／オーディオエレメンタリ（ＥＳ）の多重化を行う。パックの順序は、パックが出力される毎に、ストリームバッファに格納されているビデオＥＳとオーディオＥＳのデータ量に基づいて逐次決定される。
【０００３】
ここで、特開２０００−２６８５３７号公報及び特開２０００−２８５６４８号公報に示されるように、ビデオファイルは、複数のプログラムチェーンで構成され、１つのプログラムチェーンは複数のプログラムからなる。各プログラムは、複数のセルからなり、各セルは複数のビデオオブジェクトユニット（以下、「ＶＯＢＵ」という）からなる。各ＶＯＢＵは、複数種類のパックからなる。これらのパックには、ナビゲーションパック、ビデオパック、オーディオパック、サブピクチャパック等が含まれる。パックは、１つ以上のパケットとパックヘッダで構成され、データ転送処理を行う最小単位となっている。一方、論理上の処理を行う最小単位はセルとなっている。
【０００４】
従来のＤＶＤ装置では、ビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳの各々に対して図９に示されるように１ＶＯＢＵの容量以下の小さいストリームバッファが使用されている。ビデオＥＳとオーディオＥＳが逐次ストリームバッファから読み出される。その後、デコーダのバッファを想定した仮想バッファがオーバーフローしないかアンダーフローしないかをシミュレーションして、読み出されたビデオ／オーディオのＥＳがパックとして順序づけられる。こうして生成されたデータストリームがデータストリーム生成装置の外部に出力される。その後、後続のＶＯＢＵのデータストリームが生成されると、それらに基づいて、先に出力されたデータストリーム内のナビゲーションパックＮＶ＿ＰＣＫ内の情報が外部で更新され、ディスクに書き込まれる。
【０００５】
このとき行われる仮想バッファシミュレーションの様子が図１０，図１１に示されている。図１０は、ビデオデータに対するシミュレーションを示し、図１１はオーディオデータに対するシミュレーションを示している。
図１１において、横軸はシステムクロックリファレンス（ＳＣＲ）であり、時間に対応する。縦軸は、仮想バッファの格納量を示している。図１１では、オーディオパックＡ＿ＰＣＫが転送され、格納容量は最大格納容量に近づく。その後、オーディオデータが未だ消費されないときには、ＳＣＲが進められる。その後、オーディオデータが消費され、空き領域が増加する。このとき、オーディオデータは、ほぼ一定量づつ消費され、再生されるので、空き領域は階段状に増加している。
【０００６】
一方、図１０において、横軸はシステムクロックリファレンス（ＳＣＲ）であり、時間に対応する。縦軸は、仮想バッファの格納量を示している。ビデオパックＶ＿ＰＣＫが転送されるにつれてバッファの格納量は階段状に増加している。バッファの最大格納量までビデオパックＶ＿ＰＣＫが転送されても未だ消費されないときは、そのままビデオパックＶ＿ＰＣＫが転送されるとバッファはオーバーフローしてしまう。そのため、最大格納量まで格納されたときには、次に格納されるべきビデオパックＶ＿ＰＣＫ分以上の空き領域が確保されるまで、ＳＣＲが進められる。格納容量が急減している時点では、ピクチャの再生が行われている。ピクチャの再生が行われ、空き領域ができると次のピクチャに対するビデオパックＶ＿ＰＣＫが転送される。
【０００７】
ナビゲーションパックＮＶ＿ＰＣＫはＶＯＢＵ（または各ＧＯＰ（Ｇｒｏｕｐｏｆ  Ｐｉｃｔｕｒｅ））の先頭に置かれるべきパックである。ナビゲーションパックＮＶ＿ＰＣＫには、そのＶＯＢＵの種々のデータが書かれる必要がある。このため、ナビゲーションパックＮＶ＿ＰＣＫが出力される時点では知り得ないデータの代わりにダミー値が設定されてナビゲーションパックＮＶ＿ＰＣＫは出力される。このダミー値は、ＤＶＤ規格、ＭＰＥＧ規格等で規定されている。ナビゲーションパックＮＶ＿ＰＣＫが出力された後、このダミー値は、出力された外部で書き換えられる必要がある。
【０００８】
さらにナビゲーションパックＮＶ＿ＰＣＫには、これから生成されるＶＯＢＵ（ＧＯＰ）内のビデオ情報とこれから生成されるはずのＶＯＢＵ（ＧＯＰ）のアドレス、さらにＶＯＢＵ、ＶＯＢ（video object）の再生開始／終了情報などが記述される必要がある。これらのデータを更新するためには、未来のＶＯＢＵの各アドレスを知っている必要がある。そのため、これらのデータについてもダミー値が設定されてナビゲーションパックＮＶ＿ＰＣＫが出力される。このように標準的なバッファを用いてナビゲーションパックＮＶ＿ＰＣＫはストリーム内に多重化されている。
【０００９】
しかしながら、このような従来のエンコーダでは、外部においてナビゲーションパックＮＶ＿ＰＣＫ情報を更新することが必要になるので、データストリームの生成と同時にはデータストリームが完成していないという問題がある。さらに、データストリームを完成させるために、外部構成及び処理が複雑になり、その分コストもかかるという問題がある。
【００１０】
【発明が解決しようとする課題】
従って、本発明の課題は、ＤＶＤ規格またはＭＰＥＧ規格のデータストリームをリアルタイムで生成する方法とそのための装置を提供することである。
また、本発明の他の課題は、１ＶＯＢＵまたは１又は複数のＧＯＰのサイズが固定されているＤＶＤ規格またはＭＰＥＧ規格のデータストリームを生成する方法とそのための装置を提供することである。
また、本発明の他の課題は、高速にＤＶＤ規格またはＭＰＥＧ規格のデータストリームを生成する方法とそのための装置を提供することである。
【００１１】
【課題を解決するための手段】
以下の説明において、構成要素に（）付きで示される参照番号、記号等は、以下の発明の実施の形態で使用されるそれらに対応するものである。しかしながら、それらの参照番号、記号等は、対応関係を明確にするためにのみ使用されるもので、特許請求の範囲の解釈に用いてはならない。
【００１２】
本発明のＤＶＤ装置またはＭＰＥＧ記録装置用データストリーム生成装置は、バッファ（４）と制御モジュール（２０）とを具備する。バッファ（４）は、ビデオデータとオーディオデータの各々に対して出力データストリームの単位サイズ以上の格納容量を有する。前記単位サイズは、１ＶＯＢＵ（video object unit）又は１ＧＯＰ（group of picture）である。制御モジュール（２０）は、入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成して前記バッファに格納し、ナビゲーションパックを生成する。制御モジュール（２０）は、その後、前記単位サイズで前記ナビゲーションパック、前記複数のビデオパック及び前記複数のオーディオパックの各々の出力順序を決定し、前記単位サイズと前記出力順序に基づいて前記ナビゲーションパックのパラメータを更新する。続いて、制御モジュール（２０）は、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを前記出力データストリームとして出力する。
【００１３】
ここで、前記制御モジュール（２０）は、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら前記出力順序を決定することが望ましい。また、前記単位サイズは、前記出力データストリームに渡って、予め決められた数のパックを有することが望ましい。
【００１４】
また、前記制御モジュール（２０）は、前記ビデオデータのビットレート、前記オーディオデータのビットレート、ビデオのフレームレート及びピクチャーの数に基づいて前記単位サイズ当たりのパック数を予め決定してもよい。また、前記制御モジュール（２０）は、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを前記出力データストリームとして出力することが望ましい。
【００１５】
本発明の他の観点では、ＤＶＤ装置またはＭＰＥＧ記録装置用データストリーム生成装置において、入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成され、予め決められたパック数からなるサイズ単位で、予め決められた出力順序に基づいてナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックが出力データストリームとして出力される。
【００１６】
ここで、前記制御モジュール（２０）は、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら前記出力順序を予め決定することが望ましい。また、前記制御モジュール（２０）は、前記ビデオデータのビットレート、前記オーディオデータのビットレート、ビデオのフレームレート及びピクチャー数に基づいて前記固定サイズ当たりのパック数を予め決定することが望ましい。
【００１７】
また、前記制御モジュール（２０）は、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックを前記出力データストリームとして出力することが望ましい。
また、本発明の他の観点では、ＤＶＤ装置またはＭＰＥＧ記録装置用データストリーム生成方法は、単位サイズ当たりのパック数を決定する第１ステップと、入力されるビデオデータとオーディオデータからビデオエレメンタリストリーム（ＥＳ）とオーディオＥＳを生成して前記バッファに格納する第２ステップと、ナビゲーションパックを生成する第３ステップと、前記単位サイズで前記ナビゲーションパック、前記複数のビデオパック及び前記複数のオーディオパックの各々の出力順序を決定する第４ステップと、前記単位サイズと前記出力順序に基づいて前記ナビゲーションパックのパラメータを更新する第５ステップと、前記出力順序に基づいて前記バッファから前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを読みだし、前記出力データストリームとして出力する第６ステップとを具備する。
【００１８】
また、前記第４ステップは、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら前記出力順序を決定するステップを具備することが望ましく、また、前記第１ステップは、前記ビデオデータのビットレート、前記オーディオデータのビットレート、ビデオのフレームレート及びピクチャー数に基づいて前記単位サイズ当たりのパック数を予め決定するステップを具備することが望ましい。
また、前記第６ステップは、仮想バッファがオーバーフローするか否かを知るためのシミュレーションを行いながら、前記出力順序に基づいて前記ナビゲーションパック、前記複数のビデオパック、前記複数のオーディオパックパックを前記出力データストリームとして出力するステップを具備することが望ましい。
【００１９】
【発明の実施の形態】
以下に添付図面を参照して、本発明によるＤＶＤ装置またはＭＰＥＧ記録装置のデータストリーム生成装置を詳細に説明する。
【００２０】
図１は、本発明の実施の形態によるＤＶＤ装置またはＭＰＥＧ記録装置のデータストリーム生成装置の構成を示すブロック図である。図１を参照して、ＤＶＤ装置またはＭＰＥＧ記録装置は、データストリーム生成ユニット２、デコーダ６，Ａ／Ｄ変換器８，リード／ライト＆制御ユニット１０、モータ１４，システムマイコン１６，ビデオ／オーディオ再生ユニット１８からなる。ＤＶＤディスク１２は、モータ１４に載置されている。
【００２１】
デコーダ６は、ＮＴＳＣ方式あるいはＰＡＬ方式のビデオ信号をデコードしてビデオデータを生成してデータストリーム生成ユニット２に供給する。また、Ａ／Ｄ変換器８は、オーディオ信号をＡ／Ｄ変換してオーディオデータを生成してデータストリーム生成ユニット２に供給する。
データストリーム生成ユニット２は、デコーダ６からのビデオデータとＡ／Ｄ変換器８からのオーディオデータを多重化処理してデータストリームを生成してリード／ライト＆制御ユニット１０に出力する。このとき、データストリーム生成ユニット２は、ＶＯＢＵ内のナビゲーションパックＮＶ＿ＰＣＫ内に必要な情報を既に書き込み済みである。
リード／ライト＆制御ユニット１０は、書き込み指示に応答するシステムマイコン１６の制御に従って、ＤＶＤディスク１２が載置されたモータ１４を駆動制御して、データストリームをディスク１２に書き込む。上記のように、ナビゲーションパックＮＶ＿ＰＣＫ内に必要な情報を既に書き込み済みであるので、従来のＤＶＤ装置またはＭＰＥＧ記録装置とは異なり、システムマイコン１６がナビゲーションパックＮＶ＿ＰＣＫ内に必要な情報を書き込む必要がなく、データストリームの供給に同期してリアルタイムに高速にディスク１２にデータストリームを書き込むことができる。
【００２２】
再生指示に応答して動作するシステムマイコン１６の制御に従って、リード／ライト＆制御ユニット１０は、モータ１４を駆動制御しながらディスク１２からデータストリームを読みだしてビデオ／オーディオ再生ユニット１８に供給する。
ビデオ／オーディオ再生ユニット１８は、システムマイコン１６の制御の下、読み出されたデータストリームをデコードしてビデオ信号とオーディオ信号を再生して出力する。
【００２３】
次に、図２を参照して、データストリーム生成ユニット２について詳細に説明する。図２において、データストリーム生成ユニット２は、制御モジュール２０とストリームバッファ４とからなる。
ストリームバッファ４は、ＭＰＥＧ  ＡＶエンコーダによりＤＶＤビデオ規格のシステムビットレートでコンスタントビットレート（ＣＢＲ）にてデータをエンコードするとき、１ＶＯＢＵ（１ＧＯＰ）分より大きなエレメンタリ（ＥＳ）を蓄積可能なバッファ容量を持つ。すなわち、ストリームバッファ４は、１ＶＯＢＵより大きな格納容量を有している。ストリームバッファ４の格納領域は、１ＶＯＢＵより大きなビデオエレメンタリストリーム（ＥＳ）用格納領域３０とオーディオＥＳ用格納領域３２に分けられている。
【００２４】
制御モジュールは、パック数算出部２２、パック順序決定シミュレーション部２４、パラメータ更新部２６、及び出力部２８からなる。
パック数算出部２２は、エンコード処理に先立ち１ＶＯＢＵ内のパック数を決定する。１パックのサイズは、規格により２０４８バイトに規定されている。このパック数は、このエンコード処理中固定である。従って、次にどのタイミング、あるいはアドレスに次のＶＯＢＵが出現するかを予め知ることができる。また、パックサイズが固定であるので、種々のパックが一列に並べられたとき、そのパックの位置が分かれば自動的にそのパックのタイミングあるいはアドレスを知ることができる。従って、このパック数算出部２２は、本発明の特徴の１つである。
【００２５】
パック順序決定シミュレーション部２４ではデコード部（この例では、ビデオ／オーディオ再生ユニット１８）に設けられるバッファを想定して仮想バッファという概念が導入される。パック順序決定シミュレーション部３４は、仮想バッファの容量を勘案して、仮想バッファがオーバーフローしたりアンダーフローしたりしないようにシミュレーションして、算出されたパック数に基づいてストリームバッファ４に格納されているエレメンタリをパックとして出力されるべき順序を決定する。また、ナビゲーションパックＮＶ＿ＰＣＫの生成も行う。
【００２６】
パラメータ更新部２６は、ナビゲーションパックＮＶ＿ＰＣＫに書かれるべき情報（パラメータ）をナビゲーションパックＮＶ＿ＰＣＫに書き込む。上記のように、各パックの位置、各ＶＯＢＵの位置は予め決まっており、また、パック順序決定シミュレーション部２４でパック順序が決定されているので、データストリームが出力されるまえにパラメータを決定してナビゲーションパックＮＶ＿ＰＣＫに書き込むことが可能である。
【００２７】
また、出力部２８は、従来例と同様なシミュレーションを行いながら、パラメータが書かれたナビゲーションパックＮＶ＿ＰＣＫ、ビデオＥＳ格納領域３０内のビデオパックＶ＿ＰＣＫと、オーディオＥＳ格納領域３２のオーディオパックＡ＿ＰＣＫとを順序決定シミュレーション部２４で決定された順序で出力する。
【００２８】
次に、本発明のＤＶＤ装置またはＭＰＥＧ記録装置のデータストリーム生成処理について詳細に説明する。
パック数算出部２２は、ビデオのビットレートとオーディオのビットレートから１ＶＯＢＵ当たりのパック数を算出する。最初、以下の式（１）においてシステムビットレートを算出する。
システムビットレート＝（ビデオビットレート＊1.10＋オーディオビットレート）＊1.03＋（2048＊8＊3＊ビデオのフレームレート／Ｎ値）  （１）
ここで、Ｎ値は、１ＶＯＢＵ内に含まれるピクチャの数であり、一般には１５が用いられるが、任意の値でよい。また、パックのサイズが２０４８バイトであるが、これが変更される必要があるときには、変更可能である。値１．１０は、ビデオビットレートの揺れを考慮した値であり、値１．０３はエレメンタリ（ＥＳ）データに対するパックヘッダの最大比率を表す。
【００２９】
次に、上記式（１）で算出されたシステムビットレートから以下の式（２）を用いて１ＶＯＢＵ当たりのパック数が算出される。
パック数＝システムビットレート／2048／ビデオのフレームレート＊Ｎ値（２）
【００３０】
図３は、データストリーム生成ユニット２の動作の全体を示すフローチャートである。データストリーム生成ユニット２は、決定されたパック数とストリームバッファ４を用いて、リアルタイムに適切なナビゲーションパックＮＶ＿ＰＣＫの生成を行い、データストリームを出力する。
【００３１】
図３を参照して、処理の全体について説明する。図３では、動作が開始されると、ステップＳ２の初期化の段階で上記のパック数の算出が行われる。続いて、ステップＳ４でパック出力中か否かが判定される。ステップＳ４でパック出力中と判定されると、ステップＳ１０でパック出力処理が実行される。ステップＳ４でパック出力中ではないと判定されると、１ＶＯＢＵのエンコードが終了したか否かが判定される。１ＶＯＢＵのエンコードが未だ終了していないときには、処理フローはステップＳ４に戻る。ステップＳ６で１ＶＯＢＵのエンコードが終了したと判定されるときは、ステップＳ８が実行され、パック順序決定処理が実行される。
【００３２】
パック順序決定シミュレーション部２４は、パック順序決定のシミュレーションを行う。１ＶＯＢＵ（１ＧＯＰ）分エンコードが完了する毎にオーディオビデオを多重化する順序を決めるためにパック順序選択処理を実行する。パック順序選択処理の概要は次の通りである。
【００３３】
ビデオＥＳの１ＧＯＰの総符号量とオーディオＥＳのアクセスユニット（ＡＵ）単位の総符号量を取得する。１ＶＯＢＵ当たりのパック数分の処理が終了するまで、以下の動作が繰り返し実行される。
パック番号が＃０ならばナビゲーションパックＮＶ＿ＰＣＫが選択され、パック番号が＃１ならばビデオパックＶ＿ＰＣＫが選択される。このパック順は、ＤＶＤビデオ規格で定められている。それ以外のパック番号ならば、オーディオ用の仮想バッファでオーバーフローが生じなければ、オーディオパックＡ＿ＰＣＫが選択される。オーディオパックＡ＿ＰＣＫが出力されない場合は、ビデオの仮想バッファがオーバーフローしなければビデオパックＶ＿ＰＣＫが選択される。これらの選択処理中にオーディオパックＡ＿ＰＣＫとビデオパックＶ＿ＰＣＫのどちらも選択できない場合、すなわち仮想バッファがオーバーフローする場合には、オーディオ／ビデオのどちらかの仮想バッファにパック分の空きを作るためにシステムクロックレート（ＳＣＲ）が調整される必要がある。システムクロックレートＳＣＲを調整するために、ダミーのパックＤ＿ＰＣＫが選択される。
【００３４】
次に、上記のパック順序決定シミュレーション処理を図４，５，６，７を参照して詳細に説明する。
【００３５】
最初に、図４，５を参照してパック順序決定処理について詳細に説明する。
ステップＳ１２では、ＶＯＢ（video object）の境界が判定される。これは、決定されたパック数とパックサイズから可能である。１ＶＯＢＵの値は、データがエンコードされてデータストリームが生成される間固定である。従って、１つのＶＯＢＵの処理が行われている間に後続のＶＯＢＵのアドレスが決定されることができる。続いてステップＳ１４でストリームバッファ４に格納されている総ビデオデータ量が取得され、ステップＳ１６で総オーディオデータ量が取得される。
【００３６】
次に、ステップＳ１８で総ビデオデータ量が０ではないか否かが判定される。総ビデオデータ量が０ではなければ、処理フローはステップＳ２４に進む。ステップＳ１８で総ビデオデータ量が０ならば処理フローはステップＳ２０に進む。ステップＳ２０では、総オーディオデータ量が０ないか否かが判定される。総オーディオデータ量が０でなければ、処理フローはステップＳ２４に進む。ステップＳ２０で総オーディオデータ量が０であると判定されると、続いてステップ２２が実行される。ステップＳ２２では、パック数が設定パック数未満であるか否かが判定される。パック数が設定パック数未満ではないと判定されたときには、処理フローは終了する。一方、パック数が設定パック数未満であると判定されたときには、処理フローはステップＳ２４に進む。
【００３７】
以上の処理により、１ＶＯＢＵあるいは１ＧＯＰ分の処理が終了したか否かが判定されている。
【００３８】
ステップＳ２４では、仮想バッファが更新される。続いて、ステップＳ２６では、パック番号がパック＃０か否かが判定される。ＶＯＢＵ内のパック番号が＃０であれば、そのパックはナビゲーションパックＮＶ＿ＰＣＫであると、ステップＳ２８で設定される。続いて、処理フローはステップＳ８０に進む。こうして、ＶＯＢＵの先頭には、必ずナビゲーションパックＮＶ＿ＰＣＫが生成されることになる。
【００３９】
ステップＳ２６でパック番号が＃０ではないと判定されると、ステップＳ３０が実行される。ステップＳ３０では、パック番号が＃１であるか否かが判定される。パック番号が＃１であれば、ステップＳ３２でパックはビデオパックＶ＿ＰＣＫに設定される。その後、ステップＳ３４で、ビデオデータ用仮想バッファにそのビデオパックＶ＿ＰＣＫのビデオデータ数が加算され、またステップＳ３６で総ビデオ符号量からビデオデータ数が減算される。その後処理フローはステップＳ８０に進む。この処理により、ＶＯＢＵのナビゲーションパックＮＶ＿ＰＣＫの次には必ずビデオパックＶ＿ＰＣＫが存在することになる。
【００４０】
ステップＳ３０でパック番号が＃１ではないと判定されたとき、ステップＳ４０が実行される。ステップＳ４０で総オーディオデータ量が０ではないか否かが判定される。総オーディオデータが０のときは、処理フローはステップＳ６０に進む。総オーディオデータが０ではないとき、ステップＳ４２でオーディオパックＡ＿ＰＣＫの出力が可能な状態であるか否かが判定される。オーディオパックＡ＿ＰＣＫの出力が可能な状態ではないときには、処理フローは、ステップＳ６０に進む。オーディオパックＡ＿ＰＣＫの出力が可能な状態のときには、処理フローは、ステップＳ４４に進む。ステップＳ４４では、総ビデオデータ量が０に等しいか否かが判定される。総オーディオデータ量が０に等しくないときには、処理フローはステップＳ４８に進む。総オーディオデータが０に等しいときには、ステップＳ４６で総オーディオデータ量が残りオーディオＡＵ量に等しいと設定される。
【００４１】
ステップＳ４８では、仮想バッファがオーバーフローするか否かが判定される。仮想バッファがオーバーフローしなければ、処理フローはステップＳ５２に進む。仮想バッファがオーバーフローするときには、ステップＳ５０でシステムクロックレートＳＣＲが更新される。続いて、ステップＳ５２でオーディオパックＡ＿ＰＣＫが決定される。また、ステップＳ５４で、オーディオデータ用仮想バッファにオーディオデータ数が加算され、ステップＳ５６で総オーディオデータ量から転送されるべきオーディオデータ数が減算される。その後、処理フローはステップＳ８０に進む。
【００４２】
ステップＳ６０では、総ビデオデータ量が０ではないか否かが判定される。総ビデオデータ量が０のときには、処理フローはステップＳ７４に進む。総ビデオデータ量が０ではないときには、ステップＳ６２でビデオパックＶ＿ＰＣＫの出力が可能な状態か否かが判定される。ビデオパックＶ＿ＰＣＫの出力が可能な状態ではないときには、処理フローはステップＳ７４に進む。ビデオパックＶ＿ＰＣＫの出力が可能な状態のときには、ステップＳ６４では、ビデオデータ用仮想バッファがオーバーフローするか否かが判定される。ビデオデータ仮想バッファがオーバーフローしなければ、処理フローはステップＳ６８に進む。仮想バッファがオーバーフローするときには、ステップＳ６６でシステムクロックレートＳＣＲが更新される。続いて、ステップＳ６８でビデオパックＶ＿ＰＣＫが決定される。また、ステップＳ７０で、仮想バッファにビデオデータ数が加算され、ステップＳ７２で総ビデオデータ量から転送されたビデオデータ数が減算される。その後、処理フローはステップＳ８０に進む。
【００４３】
ステップＳ７４ではダミーパックＤ＿ＰＣＫが決定される。
こうして、総ビデオデータ量と総オーディオデータ量とに基づいて出力されるべきパックの種類が決定される。
【００４４】
ステップＳ８０では、システムクロックレートＳＣＲが更新され、ステップＳ８２では、ナビゲーションパックＮＶ＿ＰＣＫのパラメータが更新される。続いて、ステップＳ８４では、パック番号が更新される。その後、処理フローは、ステップＳ１８に戻り、上述のステップを繰り返す。
【００４５】
次に、図６を参照して、図４，図５におけるビデオパックＶ＿ＰＣＫの出力が可能か否かの判定処理を説明する。
ステップＳ９０では、ビデオデータ仮想バッファがオーバーフローしないか否かが判定される。ビデオデータ仮想バッファがオーバーフローしないときには、ステップＳ９４が実行される。ビデオデータ仮想バッファがオーバーフローするときには、ステップＳ９２でシステムクロックレートＳＣＲが最初のＤＴＳ未満であるか否かが判定される。ＤＴＳ未満ではないときには、処理は終了される。ステップＳ９２で、システムクロックレートＳＣＲが最初のＤＴＳ未満であると判定されたときには、ステップＳ９４が実行される。ステップＳ９４では、ビデオパックＶ＿ＰＣＫが出力可能な状態に設定される。こうして、ビデオパックＶ＿ＰＣＫは出力可能状態に設定される。
【００４６】
次に、図７を参照して、オーディオパックＡ＿ＰＣＫの出力が可能か否かの判定処理を説明する。
ステップＳ１０２では、オーディオデータ仮想バッファがオーバーフローしないか否かが判定される。オーディオデータ仮想バッファがオーバーフローしないときには、処理フローはステップＳ１１２に進む。オーディオデータ仮想バッファがオーバーフローするときには、ステップＳ１０４で総ビデオデータ量が０であるか否かが判定される。総ビデオデータ量が０ではないときには、処理フローはステップＳ１１０に進む。総ビデオデータ量が０のときには、残り設定パック数のシステムクロックレートＳＣＲ増分がＰＴＳの増分未満であるか否かが判定される。システムクロックレートＳＣＲ増分がＰＴＳ増分未満ではないときには処理フローはステップＳ１１０に進む。システムクロックレートＳＣＲ増分がＰＴＳ増分未満であるときには、ステップＳ１０８で、残りＡＵ出力でオーディオデータ仮想バッファがオーバーフローしなか否かが判定される。オーディオデータ仮想バッファがオーバーフローするときには、処理フローはステップＳ１１０に進む。オーディオデータ仮想バッファがオーバーフローしないときには処理フローはステップＳ１１２に進む。ステップＳ１１０では、パックが最終パックであるか否かが判定される。最終パックではないときには、処理フローは終了する。最終パックのときには、処理フローはステップＳ１１２に進む。ステップＳ１１２では、オーディオパックＡ＿ＰＣＫが出力可能状態に設定される。その後、処理フローは終了する。こうして、オーディオパックＡ＿ＰＣＫは出力可能状態に設定される。
【００４７】
次に、パラメータ更新部２６は、ナビゲーションパックＮＶ＿ＰＣＫのパラメータ更新を行う。パラメータ更新部２６は、現在生成されているＶＯＢＵ内のピクチャの相対アドレスや時間情報を記述するために、ナビゲーションパックＮＶ＿ＰＣＫのパラメータを更新する。またＶＯＢＵのパック数が算出できているので、この時点から未来のＶＯＢＵのアドレス情報も更新される。
【００４８】
最後に、１ＶＯＢＵ（１ＧＯＰ）分のパック出力処理が行われる。この時、オーディオとビデオに関して仮想バッファがオーバーフローしないかまたはアンダーフローしないかを確認するためにシミュレーションが行われる。これにより、より高い安全度でデータストリームが出力されることが可能である。
【００４９】
次に、図８を参照してパック出力処理について詳細に説明する。
ステップＳ１２０では、仮想バッファが更新される。続いて、ステップＳ１２２で現在のパック番号＃ｎで指定されるパックがナビゲーションパックＮＶ＿ＰＣＫであるか否かが判定される。ナビゲーションパックＮＶ＿ＰＣＫではないときには、処理フローはステップＳ１２６に進む。番号＃ｎにより指定されるパックがナビゲーションパックＮＶ＿ＰＣＫのときには、ステップＳ１２４で、＃ｎにより指定されるナビゲーションパックＮＶ＿ＰＣＫが出力される。その後処理フローはステップＳ１５０に進む。
【００５０】
ステップＳ１２６では、パック番号＃ｎで指定されるパックがダミーＤ＿ＰＣＫであるか否かが判定される。ダミーパックＤ＿ＰＣＫではないときには、処理フローはステップＳ１３０に進む。ダミーパックＤ＿ＰＣＫのときには、ステップＳ１２８でＤ＿ＰＣＫが出力される。その後処理フローはステップＳ１５０に進む。
【００５１】
ステップＳ１３０でパック番号＃ｎで指定されるパックがビデオパックＶ＿ＰＣＫであるか否かが判定される。ビデオパックＶ＿ＰＣＫではないときには、処理フローはステップＳ１４０に進む。ビデオパックＶ＿ＰＣＫのときには、ステップＳ１３２で仮想バッファがオーバーフローするか否かが判定される。オーバーフローしないときには、処理フローは１３６に進む。オーバーフローするときには、ステップＳ１３４でシステムクロックレートＳＣＲが更新される。その後ステップＳ１３６の処理が行われる。ステップＳ１３６では、ビデオパックＶ＿ＰＣＫが出力される。その後処理フローはステップＳ１５０に進む。
【００５２】
ステップＳ１４０では、仮想バッファがオーバーフローするか否かが判定される。オーバーフローしないときには、処理フローは１４４に進む。オーバーフローするときには、ステップＳ１４２でシステムクロックレートＳＣＲが更新される。続いて、ステップＳ１４４の処理が行われる。ステップＳ１４４では、オーディオパックＡ＿ＰＣＫが出力される。その後処理フローはステップＳ１５０に進む。
【００５３】
ステップＳ１５０では、システムクロックレートＳＣＲが更新され、ステップＳ１５２ではバック番号が更新される。続いて、ステップＳ１５４でパック番号が総パック数に等しいか否かが判定される。等しくないときには、処理は終了する。等しいときには１ＶＯＢＵパックの出力処理が終了する。
【００５４】
【発明の効果】
上記のように、本発明によれば、ＤＶＤビデオ規格の任意のビットレートでエンコードした場合にも、リアルタイムに適切なデータのナビゲーションパックＮＶ＿ＰＣＫをＶＯＢＵ毎に生成し、ストリームに反映することができる。
【００５５】
また、１ＶＯＢＵ（１ＧＯＰ）以上のストリームを蓄積できるバッファを有することにより、その１ＶＯＢＵ内のパック順序をシミュレーションすることができ、さらにナビゲーションパックＮＶ＿ＰＣＫの出力タイミングに遅延が得られるため、現在のＶＯＢＵ内の情報をナビゲーションパックＮＶ＿ＰＣＫに反映できる。
【００５６】
１ＶＯＢＵのパック数を算出し固定にすることで未来のデータを現在のナビゲーションパックＮＶ＿ＰＣＫに反映させることができる。
【図面の簡単な説明】
【図１】図１は、本発明のＤＶＤ装置またはＭＰＥＧ記録装置の構成を示すブロック図である。
【図２】図２は、図１のＤＶＤ装置またはＭＰＥＧ記録装置のデータストリーム生成ユニット２の構成を示す機能ブロック図である。
【図３】図３は、データストリーム生成ユニットの動作を示すフローチャートである。
【図４】図４は、パック順序決定処理を示すフローチャートである。
【図５】図５は、パック順序決定処理を示すフローチャートである。
【図６】図６は、ビデオパックビデオパックＶ＿ＰＣＫの出力設定処理を示すフローチャートである。
【図７】図７は、オーディオパックオーディオパックＡ＿ＰＣＫの出力設定処理を示すフローチャートである。
【図８】図８は、パック出力処理を示すフローチャートである。
【図９】図９は、従来のＤＶＤ装置またはＭＰＥＧ記録装置において、ストリームバッファからパックが出力される処理を示す図である。
【図１０】図１０は、従来のＤＶＤ装置またはＭＰＥＧ記録装置において、ビデオ用仮想バッファのシミュレーションを示す図である。
【図１１】図１１は、従来のＤＶＤ装置またはＭＰＥＧ記録装置において、オーディオ用仮想バッファのシミュレーションを示す図である。
【符号の説明】
２：  データストリーム生成ユニット
４：  バッファ
６：  ビデオデータ用のデコーダ
８：  Ａ／Ｄ変換器
１０：  リード／ライト＆制御ユニット
１２：  ＤＶＤディスク
１４：  モータ
１６：  システムマイコン
１８：  ビデオ／オーディオ再生ユニット
【図１】
0003773805.tif 000002
【図２】
0003773805.tif 000003
【図３】
0003773805.tif 000004
【図４】
0003773805.tif 000005
【図５】
0003773805.tif 000006
【図６】
0003773805.tif 000007
【図７】
0003773805.tif 000008
【図８】
0003773805.tif 000009
【図９】
0003773805.tif 000010
【図１０】
0003773805.tif 000011
【図１１】
0003773805.tif 000012