(57)【要約】【課題】復号の際にストリームバッファをオーバフローさせることがない多重化ストリームを得ることができる多重化装置及び多重化方法を提供すること。【解決手段】多重化装置は、ビデオＥＳとオーディオＥＳとを多重化してトランスポートストリームＴＳを生成すものであって、ビデオバッファ４２１、オーディオバッファ４２２及び多重化部４２３を有する。多重化部４２３は、ＴＳ復号時にビデオＴＳが要するバッファの占有量のシミュレーションを行い、そのシミュレーション結果に基づきバッファがオーバフローしないようビデオＥＳの多重化を制御する。シミュレーションでは、（メインバッファのリークレート／システムクロック周波数）×Ｎ（Ｎは整数）が整数となるＮで、所定時間Δｔを除算した余りＲを次回の演算に持ちこすことで、整数からなる商に基づき現在のメインバッファのリークデータ量を整数演算する。【選択図】図４
2007282023.tif 000002
【特許請求の範囲】
【請求項１】
第１のエンコードストリームと第２のエンコードストリームとを多重化して多重化ストリームを生成する多重化装置であって、
前記多重化ストリームを復号する際に前記多重化ストリームが必要とするバッファの占有量のシミュレーションを行なうシミュレーション部と、
前記シミュレーション結果に基づき前記バッファがオーバフローしないよう前記第1のエンコードストリームの多重化を制御する多重化制御部とを有し、
前記シミュレーション部は、前記バッファのリークレートに基づきリークデータ量を整数演算することで前記バッファの占有量を算出する多重化装置。
【請求項２】
前記シミュレーション部は、前記バッファの（リークレート／基本クロック周波数）×Ｎ（Ｎは整数）が整数となるＮに基づきリークデータ量を補正する
ことを特徴とする請求項１記載の多重化装置。
【請求項３】
前記基本クロックは、システムクロック又はその整数倍の周波数を有するクロックである
ことを特徴とする請求項１又は２項記載の多重化装置。
【請求項４】
前記多重化ストリームを順次格納する第１及び第２のバッファのうち、前記リークレートは、前記第１のバッファから前記第２のバッファへのリークレートである
ことを特徴とする請求項１乃至３のいずれか１項記載の多重化装置。
【請求項５】
前記シミュレーション部は、時間間隔Δｔ毎に前記バッファの占有量を算出するものであって、前記バッファの（リークレート／基本クロック周波数）×Ｎが整数となるＮにより、前記Δｔを除算し、その商（商は整数）に基づき今回のリークデータ量を整数演算し、余りを、次回の時間間隔Δｔに加算することで前記補正を行なう
ことを特徴とする請求項２乃至４のいずれか１項記載の多重化装置。
【請求項６】
前記メインバッファからのリークデータ量を演算することで前記メインバッファの占有量を演算する
ことを特徴とする請求項４又は５記載の多重化装置。
【請求項７】
前記基本クロック周波数は９０ｋＨｚであって、Ｎは６の倍数である
ことを特徴とする請求項１乃至４のいずいれか１項記載の多重化装置。
【請求項８】
前記基本クロック周波数は、２７ＭＨｚであって、Ｎは７２の倍数である
ことを特徴とする請求項１乃至４のいずいれか１項記載の多重化装置。
【請求項９】
第１のエンコードストリームと第２のエンコードストリームとを多重化して多重化ストリームを生成する多重化方法であって、
前記多重化ストリームを復号する際に前記多重化ストリームが必要とするバッファの占有量を、当該バッファのリークレートに基づきリークデータ量を整数演算することで算出してシミュレーションを行ない、
前記シミュレーション結果に基づき前記バッファがオーバフローしないよう前記第1のエンコードストリームの多重化を制御する多重化方法。
【請求項１０】
前記シミュレーションでは、前記バッファの（リークレート／基本クロック周波数）×Ｎ（Ｎは整数）が整数となるＮに基づきリークデータ量を補正する
ことを特徴とする請求項９記載の多重化方法。
【請求項１１】
前記シミュレーションでは、時間間隔Δｔ毎に前記バッファの占有量を算出するものであって、前記バッファの（リークレート／基本クロック周波数）×Ｎが整数となるＮにより、前記Δｔを除算し、その商に基づき今回のリークデータ量を整数演算し、余りを、次回の時間間隔Δｔに加算することで前記補正を行なう
ことを特徴とする請求項９又は１０記載の多重化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多重化装置及び多重化方法に関し、ビデオやオーディオのエレメンタリストリームを多重化して伝送するためのトランスポートストリームを生成するに好適な多重化装置及び多重化方法に関する。
【背景技術】
【０００２】
図１は、エレメンタリストリーム（Elementary Stream：ＥＳ）、パケッタイズドＥＳ（Packetized Elementary Stream：ＰＥＳ）、及びトランスポートストリーム（Transport stream：ＴＳ）の構造を示す図である。図１に示すように、ＭＰＥＧ（Moving Picture Expert Group）伝送規格において、符号化された画像データからなるビデオエレメンタリデータ（ＥＳ）は、適当な単位にパケット化されることでパケッタイズドＥＳ（ＰＥＳ）が生成される。
【０００３】
図２はＰＥＳパケットヘッダのデータ構造を示す図である。図２に示すように、ＰＥＳパケットにはＰＥＳヘッダと呼ばれるヘッダ情報が付加される。このＰＥＳヘッダには、スタートコードを格納したスタートコードプリフィックス、個別のストリームを識別するコードを格納したストリームＩＤ（stream_id）、ＰＥＳパケットのパケット長を格納したＰＥＳパケット長、オプショナルフィールドなどのデータからなる。オプショナルフィールドには、パケットの優先度を示すＰＥＳプライオリティ、パックの長さを調整するためのスタッフィングバイトなどの他、更にオプショナルフィールドが設けられている。このオプショナルフィールドには、ＤＴＳ（Decoding Time Stamp）、ＰＴＳ（Presentation Time Stamp）と呼ばれる９０ｋＨｚ単位のデコード時刻、表示時刻が示されている。デコード時刻ＤＴＳ、表示時刻ＰＴＳは、同期再生のための時間情報である。
【０００４】
ＭＰＥＧ２システムには２種類のストリーム、トランスポートストリームＴＳとプログラムストリームＰＳ（Program Stream）がある。ＰＥＳは、両ストリームを構成する基本要素であり、相互の変換を可能とするための中間的な状態である。トランスポートストリームの場合は、図１に示すように、ＰＥＳがトランスポートパケット(TS packet)と呼ばれる１８８バイト固定長のパケットに細分化され、音声データ及びシステムデータなどと多重化されトランスポートストリームとして伝送される。ＴＳパケットは４ｂｙｔｅ固定長のパケットヘッダと可変長のアダプテーションフィールド（adaptation field）及びペイロード（payload）とで構成される。パケットヘッダ（ＴＳヘッダ）にはＰＩＤ（パケット識別子）や各種のフラグが定義されている。このＰＩＤにより、ＴＳパケットの種類が識別される。
【０００５】
トランスポートストリームＴＳは、ビデオＥＳ及びオーディオＥＳを多重化装置に供給し、多重化装置にてこれらをパケット化し、多重化することで生成される。多重化装置は、復号装置のオーディオバッファ、ビデオバッファがオーバフローもアンダーフローもしないようにトランスポートストリームをマルチプレクス（多重化）しなければいけない。例えば特許文献１に記載のデータパケット送出装置は、コンテンツデータを各システム方式に従って分割してパケット化しＴＳパケットを生成して出力するフローコントローラと、このＴＳパケットを所定の伝送ビットレートになるよう多重化して多重化ＴＳパケットを生成するパケッタイザとを有し、多重化装置に供給する。多重化装置は、ビデオＴＳパケット及びオーディオＴＳパケットと共に、上記多重化ＴＳパケットを多重化して出力する。ここで、フローコントローラは、全体の出力ビットレートと、個々のＴＳパケットのビットレートの割合から適宜ヌルパケットを挿入することで、所定のビットレートのＴＳパケットを送出するようにしている。
【０００６】
ところで、多重化装置は、次に説明するＭＰＥＧ規格（ＩＳＯ／ＩＥＣ１３８１８−１）における仮想的な復号器（トランスポートストリームシステムターゲット復号器（Ｔ−ＳＴＤ））による仮想バッファシミュレーションを行なって、ＭＰＥＧ伝送規格を満たすトランスポートストリームを生成するよう定められている。
【０００７】
図３はトランスポートストリームシステムターゲット復号器Ｔ−ＳＴＤを示すブロック図である。Ｔ−ＳＴＤは、トランスポートストリームの生成および検証の際における、多重化装置で行なわれるデコード処理をモデル化するための概念モデルである。
【０００８】
３０２はデマルチプレクサ、３１１はビデオ用トランスポートバッファ[TBvid]、３２１はオーディオ用トランスポートバッファ[TBaud]、３３１はシステム用トランスポートバッファ[TBsys]、３１２はビデオ用メインバッファ[MB]、３１３はビデオ用エレメンタリバッファ[EB]、３２２はオーディオ用メインバッファ[Baud]、３３２はシステム用メインバッファ[Bsys]、３１４はビデオデコーダ[Dvid]、３２３はオーディオデコーダ[Daud]、３３３はシステムデコーダ[Dsys]を示す。
【０００９】
入力されたトランスポートストリームＴＳ（３０１）は、デマルチプレクサ３０２によってビデオ、オーディオ、又はシステムのＴＳパケットに分割され、それぞれビデオ用トランスポートバッファ３１１、オーディオ用トランスポートバッファ３２１、システム用トランスポートバッファ３３１に入力される。ビデオ用トランスポートバッファ３１１に入力されたビデオＴＳパケットは、ＴＳヘッダを取り除かれリークレート（Rxvid）３４１でビデオ用メインバッファ３１２に転送される。リークレート３４１は、ビデオ用トランスポートバッファから単位時間あたりに取り出さなければならないデータ量である。
【００１０】
ビデオ用メインバッファ３１２に溜まったパケッタイズドビデオＥＳデータ（ビデオＰＥＳデータ）は、ビデオ用エレメンタリバッファ３１３に空きがあればリークレート（Rbx）３４２でビデオ用エレメンタリバッファ３１３に転送される。ビデオＰＥＳデータが、ビデオ用メインバッファ３１２からビデオ用エレメンタリバッファ３１３に転送される場合、ビデオ用メインバッファ３１２に在りそのビデオＰＥＳデータの直前のすべてのＰＥＳヘッダは瞬間的に取り除かれる。ビデオ用エレメンタリバッファ３１３に溜まったビデオエレメンタリデータは、デコード時刻（ＤＴＳ）になったタイミングで、ビデオ用エレメンタリバッファ３１３から１フレーム分のデータが瞬時に取り除かれ、ビデオデコーダ３１４にてデコードされる。
【００１１】
オーディオデータについては、ビデオデータ同様にオーディオ用メインバッファ３２２から取り除かれ、オーディオデコーダ３２３にてデコードされる。また、システムデータは規格定義されたレートでシステム用メインバッファ３３２から取り除かれ、システムデコーダ３３３にてデコードされる。
【００１２】
多重化装置は、トランスポートストリームシステムターゲット復号器がＭＰＥＧ伝送規格を満たすようにＴ−ＳＴＤバッファシミュレーションを行う。これをＴ−ＳＴＤ仮想バッファシミュレーションという。多重化器は、このシミュレーション結果に基づきビデオ、オーディオ及びシステムのＴＳパケットの出力選択を行うことでＩＳＯ／ＩＥＣ１３８１８−１の規定に従ったトランスポートストリームを生成する。このバッファシミュレーションの計算は、通常、デコード時刻ＤＴＳ及び表示時刻ＰＴＳと同じ９０ｋＨｚ単位、又はＭＰＥＧ２のシステムクロックに合わせた２７ＭＨｚ単位で行う。
【００１３】
ところで、ＭＰＥＧ−２では様々な動画像圧縮機能や、様々な画像サイズを取り扱っているため、これらを明確に区分して相互利用における混乱を避けるために、レベルとプロファイルによるクラス分けが定義されている。プロファイルは、空間、時間、及びＳＮＲスケーラビリティの有無で定義され、それぞれ解像度、フレームレート、及び画質の異なる複数の画像を同時に扱う機能に相当する。レベルは解像度及びフレームレート（秒間フレーム数）が定義されている。
【００１４】
そして、用途に応じて使用するＭＰＥＧ２の機能を選べるように策定された仕様のひとつに、ＭａｉｎプロファイルＭａｉｎレベル（Main Profile@Main Level：ＭＰ＠ＭＬ）がある。ＭＰ＠ＭＬでは、現行のテレビに対応する７２０×４８０画素、３０フレーム／秒の画像を処理でき、かつ動き探索の際の探索対象画像として、圧縮処理中の画像に対し時間的に前の画像と後の画像の両方を用いる両方向予測方式を利用できる。このＭＰ＠ＭＬでは、トランスポートストリームシステムターゲット復号器（Ｔ−ＳＴＤ）におけるビデオのバッファサイズやリークレートは以下のように定められる。
ＴＢサイズ＝５１２（ｂｙｔｅ）
ＭＢサイズ＝１０，０００（ｂｙｔｅ）
ＥＢサイズ＝２２９３７６（ｂｙｔｅ）
ビデオ用トランスポートバッファＴＢｖｉｄからメインバッファＭＢへのリークレートＲｘｖｉｄ＝１８，０００，０００（ｂｐｓ）
メインバッファＭＢからエレメンタリバッファＥＭへのリークレートＲｂｘ＝１５，０００，０００（ｂｐｓ）
【００１５】
しかしながら、下記に示すとおり、メインバッファＭＢ（３１２）からエレメンタリバッファＥＭ（３１３）へのリークレートＲｂｘは９０ｋＨｚ、２７ＭＨｚで割り切れない値である。
１５，０００，０００（ｂｉｔ／ｓ）＝１，８７５，０００（ｂｙｔｅ／ｓ）
１，８７５，０００÷９０，０００＝２０．８３３・・・（ｂｙｔｅ：９０ｋＨｚ単位）
１，８７５，０００÷２７，０００，０００＝０．０６９４４・・・（ｂｙｔｅ：２７ＭＨｚ単位）
【００１６】
よって、メインバッファ３１２からエレメンタリバッファ３１３へのリーク量は、２０．８３３・・・×ｓ９０（９０ｋＨｚ単位）、０．０６９４４・・・×ｓ２７（２７ＭＨｚ単位）、（ｓ：時間間隔）で求められるが、２０．８３３・・・、０．０６９４４・・・は共に無限小数であり、浮動小数点演算を用いても誤差は蓄積される。
【００１７】
なお、バッファシミュレーションとは異なるが、整数演算することにより蓄積される誤差を補正する技術が特許文献２に記載されている。ＭＰＥＧ１  Ｌａｙｅｒ２オーディオにおいては、サンプリング周波数が４４．１ｋＨｚであるため、９０ｋＨｚの単位の１フレームごとのデコード時刻の増分値（ΔＰＴＳ）は、下記のように整数で表現することはできない。
ΔＰＴＳ＝１１５２×９０（ｋＨｚ）／４４．１（ｋＨｚ）＝２３５１．０２０４
【００１８】
整数演算するためにΔＰＴＳを２３５１又は２３５２に近似して演算をすると、誤差が蓄積して伸張復号時にビデオデータとオーディオデータの同期が取れなくなってしまう。そこで、特許文献２に記載の音声・映像データ生成装置では、ΔＰＴＳ＝２３５１と近似し、１秒毎にオーディオＰＴＳの値を補正することで、誤差が累積されることを防いでいる。
【特許文献１】特開平１１−３４１０５４号公報
【特許文献２】特開平９−２８４７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上述したように、ＭＰ＠ＭＬの仕様では、リークレートＲｂｘは１５，０００，０００ｂｐｓと定められている。ＴＳのレート、すなわちストリーム全体のレートが１５，０００，０００ｂｐｓ以下であれば、リークレートＲｂｘが１５，０００，０００ｂｐｓを超えることはない。このため、特許文献１等に記載の従来の多重化装置では、ビデオについてはエレメンタリバッファ３１３のシミュレーションだけを行えばよく、メインバッファ３１２のシミュレーションを行う必要がなかった。
【００２０】
しかし、今後大容量メディア等に対応するため、ＭＰ＠ＭＬの仕様のＴＳレートの最大値である１８，０００，０００ｂｐｓに対応することが求められる。このときリークレートＲｂｘは、１５，０００，０００ｂｐｓを超える可能性があるため、メインバッファ３１２のバッファシミュレーションを行う必要が生じる。しかし、メインバッファ３１２のバッファシミュレーションでは、上述のように、メインバッファ３１２からのリーク量は、共に無限小数であり、浮動小数点演算を用いても誤差は蓄積されるという問題点がある。
【００２１】
また、特許文献２においては、オーディオＰＴＳを整数演算するため、当該整数演算により算出したオーディオＰＴＳの値の誤差を１秒毎に補正している。しかしながらエンコード処理では他の処理との兼ね合いからシステムクロックをベースに計算することが好ましい。更に、バッファシミュレーションにおいては、１秒毎のような長い時間間隔で補正を行なうと誤差が大きくなりすぎ、適切なシミュレーションを行なうことができないという問題点もある。
【課題を解決するための手段】
【００２２】
本発明にかかる多重化装置は、第１のエンコードストリームと第２のエンコードストリームとを多重化して多重化ストリームを生成する多重化装置であって、前記多重化ストリームを復号する際に前記多重化ストリームが必要とするバッファの占有量のシミュレーションを行なうシミュレーション部と、前記シミュレーション結果に基づき前記バッファがオーバフローしないよう前記第1のエンコードストリームの多重化を制御する多重化制御部とを有し、前記シミュレーション部は、前記バッファのリークレートに基づきリークデータ量を整数演算することで前記バッファの占有量を算出するものである。
【００２３】
本発明においては、多重化ストリームが必要とするバッファの占有量のシミュレーションを行なって、当該バッファがオーバフローしないよう多重化を制御する。この際、バッファの占有量をリークレートに基づき整数演算するため、バッファシミュレーションにおける演算が簡略化する。
【発明の効果】
【００２４】
本発明によれば、簡単な演算により復号の際にストリームバッファをオーバフローさせることがない多重化ストリームを得ることができる多重化装置及び多重化方法を提供することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態にかかる多重化装置は、Ｔ−ＳＴＤバッファシミュレーションにおいて、ある時間間隔ΔtにおけるメインバッファＭＢのリーク量を、ある特定の範囲内の誤差に抑える。更に、そのための演算を整数演算で行うことができるようにものである。特に、本実施の形態においては、ＴＳレートが１５，０００，０００ｂｐｓ以上になった場合にも対応すべく、Ｔ−ＳＴＤのメインバッファＭＢのバッファシミュレーションを行う。メインバッファＭＢのバッファシミュレーションは、特定の時間間隔（例えばトランスポート１パケット出力周期）で行い、メインバッファＭＢからエレメンタリバッファＥＢへのリーク量に対し、所定時間間隔Δｔで行なうシミュレーション演算毎に補正値を加えることで誤差の蓄積をなくす。以上により、ＭＰ＠ＭＬの仕様のＴＳレートの最大値である１８，０００，０００ｂｐｓにも対応可能な多重化装置を提供する。
【００２６】
図４は、ビデオ／オーディオエンコーダ及びＴＳの多重化装置（Multiplexer）の図である。４０２はビデオエンコーダ、４１２はオーディオエンコーダ、４２０は多重化装置全体を示す。多重化装置４２０は、ビデオバッファ４２１、オーディオバッファ４２２、及び多重化部４２３を有する。例えば、ＩＴＵ（International Telecommunication Union：
国際電子通信連合）ＢＴ６５６等の非圧縮のビデオデータ４０１がビデオエンコーダ４０２に入力される。ビデオエンコーダ４０２は、ビデオデータ４０１を圧縮してビデオエレメンタリストリーム（ビデオＥＳ）４０３を生成し、多重化装置４２０内のビデオバッファ４２１へ供給する。またオーディオも同様に、非圧縮のＰＣＭ（Pulse Code Modulation）データ４１１がオーディオエンコーダ４１２に入力される。オーディオエンコーダ４１２は、ＰＣＭデータ４１１を圧縮してオーディオエレメンタリストリーム（オーディオＥＳ）４１３を生成し、多重化装置４２０内のオーディオバッファ４２２へ供給する。
【００２７】
多重化部４２３は、先ず、ビデオＥＳ及びオーディオＥＳをパケット化（ＰＥＳ化）する。そして、適切なデコード時刻ＤＴＳ、表示時刻ＰＴＳをＰＥＳヘッダに付加する。その後、図３に示すＴ−ＳＴＤを利用したＴ−ＳＴＤバッファシミュレーションを満たすように多重化を行い、トランスポートストリーム４３０を生成して出力する。
【００２８】
すなわち、多重化部４２３はＴ−ＳＴＤシミュレーションを行なうシミュレーション部（不図示）と、そのシミュレーション結果に基づきメインバッファがオーバフローしないようビデオＥＳの多重化を制御する多重化制御部（不図示）とを有する。シミュレーション部は、時間間隔Δｔ毎にメインバッファＭＢの占有量を算出するものであって、（メインバッファＭＢのリークレートＲｂｘ／基本クロック周波数）×Ｎが整数となるＮにより、前記Δｔを除算し、その商（商は整数）に基づき今回のリークデータ量を整数演算し、余り（Δｔｍｏｄ Ｎ）を、次回の時間間隔Δｔに加算することでリークデータ量の補正を行なう。ここで、基本クロック周波数は、本実施の形態においては、時間情報と同じ９０ｋＨｚ又はＭＰＥＧ２のシステムクロック２７ＭＨｚなどである。
【００２９】
また、本実施の形態においては、ＴＳレート１５，０００，０００ｂｐｓ以上の例えばＭＰ＠ＭＬのＴＳレートの最大値である１８，０００，０００ｂｐｓでＴＳを転送しても、オーディオＴＳパケットの多重化比率を変更したり、ヌルパケットをトランスポートストリームに挿入したりすることにより、メインバッファＭＢ（３１２）がオーバフローしないよう制御する。なお、Ｔ−ＳＴＤバッファシミュレーションは、多重化部４２３内のＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより、図３に示す仮想的な復号器による復号処理を実行する。ここで、本実施の形態においては、Ｔ−ＳＴＤは、ソフトウェアとして説明するが、これに限定されるものではなく、図３に示す復号器をハードウェア構成として具備し、これを用いてバッファシミュレーションを行なうようにしてもよい。
【００３０】
次に、多重化部４２３におけるＴＳパケット出力方法について詳細に説明する。ここでは説明の簡単のため、ビデオＥＳについてのみ考える。多重化部４２３は、例えば、１パケットごとなど、定期的にＴ−ＳＴＤバッファシミュレーションを行う。そして、ＭＰＥＧの伝送規格を満たすようにビデオパケット出力可否の選択を行い、必要であればオーディオパケットやヌルパケットを多重化することにより、復号側でビデオのバッファをオーバフローさせないよう、その転送レートを制御する。
【００３１】
図５は、ＭＰ＠ＭＬ仕様において、ビデオデータに関するＴ−ＳＴＤバッファシミュレーションの方法を示すフローチャートである。最初に、あるフレームがデコード時刻ＤＴＳを過ぎたか否かをチェックする。デコード時刻ＤＴＳを過ぎていたら（ステップＳ１：ＹＥＳ）ステップＳ２の処理を行う。過ぎていなければステップＳ２の処理は行なわず、ステップＳ３に進む。ステップＳ２においては、デコード時刻ＤＴＳを過ぎたフレームのデータをエレメンタリバッファ３１３から引く。
【００３２】
ステップＳ３では、エレメンタリバッファ３１３に空きがあるかチェックする。空きがあればステップＳ４の処理に進み、空きがなければステップＳ４の処理は行なわず、ステップＳ５に進む。ステップＳ４では、メインバッファ３１２からエレメンタリバッファ３１３にデータを送る。
【００３３】
ステップＳ５では、メインバッファＭＢに空きがあるかチェックする。空きがあればステップＳ６の処理に進む。空きがなければステップＳ６、Ｓ７の処理は行わないで終了する。ステップＳ６では、メインバッファ３１２にビデオパケットを出力する。そして、ステップＳ７にてメインバッファ３１２のバッファ占有量ＭＢＳに、出力したＰＥＳペイロードデータ量を加算する。
【００３４】
次に、９０ｋＨｚカウンタをベースに計算したときの図５におけるステップＳ４、すなわち、メインバッファ３１２からエレメンタリバッファ３１３へデータを送る場合の、メインバッファ３１２のバッファ占有量ＭＢＳの算出方法について説明する。リークレートＲｂｘ１５，０００，０００（ｂｉｔ／ｓ）を９０ｋＨｚ単位に変換すると以下のようになる。
１５，０００，０００（ｂｉｔ／ｓ）
＝１,８７５，０００（Ｂｙｔｅ／ｓ）
そして、９０ｋＨｚをクロック周波数とした場合の１クロック当たりのリークレートＲｂｘを計算すると、下記のように求まる。
１,８７５，０００／９０，０００（Ｂｙｔｅ：９０ｋＨｚ単位）
＝（２３×３×５７）／（２４×３２×５４）（Ｂｙｔｅ：９０ｋＨｚ単位）
＝５３／（２×３）（Ｂｙｔｅ：９０ｋＨｚ単位）
【００３５】
上記５３／（２×３）＝１２５／６は、９０ｋＨｚ単位における１カウントのリークデータ量を示す。つまり、９０ｋＨｚ単位においては、２×３＝６カウント毎に、メインバッファ３１２からリークするデータ量が整数値（＝１２５）になることがわかる。これを一般式で書くと下記のようになる。９０ｋＨｚ単位でのカウンタ増分値をＸとすると
リークデータ量：Ｘ×５３／（２×３)
＝Ｘ×（１２５／６）
＝[Ｘ／６]×１２５＋（Ｘｍｏｄ６)×（１２５／６）
ここで、ｋ≦Ｋ＜ｋ＋１ならば、［Ｋ］＝ｋ（ｋ∈自然数）を示す。すなわち[Ｘ／６]は、Ｘを６で除算した商の整数部分を示す。Ｘｍｏｄ６は、Ｘを６で除算した余りである。
よって、Ｘが６で割り切れる場合は、Ｘｍｏｄ６＝０となり、
Ｘ×（１２５／６）＝[Ｘ／６]×１２５
が成り立つ。
【００３６】
本実施の形態においては、所定期間におけるカウント値Ｘが６で割り切れない場合には、その余り（Ｘｍｏｄ６)は次回の演算に持ち越す。すなわち、カウントＸの間にメインバッファ３１２からリークするデータ量Ｘ×５３／（２×３）を、整数演算するため[Ｘ／６]×１２５とする。よって、割り切れない余りＲ＝Ｘｍｏｄ６（以下、これを補正値という。）によるリークデータ量Ｒ×（１２５／６）は誤差となる。しかし、本実施の形態においては、この余りＲ＝Ｘｍｏｄ６を次のリークデータ量の演算の際にＸに加算することで、当該誤差を補正する。
【００３７】
例えば９０ｋＨｚ単位の各カウントにおいてリークデータ量を算出する場合について考える。あるカウントにおけるリークデータ量は、"Ｘ＝１"を"６"で除算した商（商は整数）（＝[Ｘ／６]＝０）に基づき整数演算（[Ｘ／６]×１２５＝０）することができる。そして、この回の余りＸｍｏｄ６＝１は、次回のカウントにおけるカウントの増分（Ｘ）に加算される。そして、６カウント目にカウントの増分Ｘ＝６となり、Ｘ／６は割り切れるため、Ｘｍｏｄ６＝０となり、リークデータ量の誤差はなくなる。こうして誤差を一定範囲内に抑えることができる。なお、上述したように、リークデータ量の算出は、各カウント毎ではなく、例えばパケット単位などで行なうが、Ｘｍｏｄ６の最大値は５であり、次回の演算に持ちこされる余りＲによるリークデータ量の誤差の最大値は、（１２５／６）×５となる。
【００３８】
ここで、
Δｔ（ｎ）＝ｔ（ｎ）−ｔ（ｎ−１）とすれば、
補正後の時刻の差分Ｘ（ｎ）＝Δｔ（ｎ）＋Ｒ（ｎ−１）
ただし、ｔ（０）＝０、Ｒ（０）＝０、ｎ≧１と表すことができ、
メインバッファのバッファ占有量は下記のようになる。
ＭＢＳ（ｎ）＝ＭＢＳ（ｎ−１）−[Ｘ（ｎ）／６]×１２５
＝ＭＢＳ（ｎ−１）−［（Δｔ（ｎ）＋（Ｒ（ｎ−１））／６）］×１２５
ここで、補正値Ｒ（ｎ）＝Ｘ（ｎ）ｍｏｄ６
ｔ（ｎ−１）：前回の計算時刻（９０ｋＨｚ単位）
ｔ（ｎ）：今回の計算時刻（９０ｋＨｚ単位）
ＭＢＳ（ｎ−１）：前回のメインバッファＭＢのバッファ占有量
ＭＢＳ（ｎ）：今回のメインバッファＭＢのバッファ占有量
【００３９】
以上のようにして、ステップＳ４において、メインバッファ３１２からエレメンタリバッファ３１３へデータを送る際のメインバッファ３１２のバッファ占有量を、整数演算でかつ所定の範囲内の誤差にて算出することができる。結果、メインバッファ３１２に空きかなければビデオパケットを出力せず、例えばオーディオパケットやシステムパケット、又はヌルパケットを出力することで、ＴＳレート１８，０００，０００ｂｐｓであってもメインバッファ３１２をオーバフローさせることがない。
【００４０】
図６は、９０ｋＨｚカウンタをベースに計算したときのステップＳ４の処理を詳細に示すフローチャートである。図５におけるステップＳ４においては、先ず、前回の計算時刻ｔ（ｎ−１）と今回の計算時刻ｔ（ｎ）の差分Δｔ（ｎ）を９０ｋＨｚ単位で求める（ステップＳ１１）。次に、算出したΔｔ（ｎ）に前回求めた補正値Ｒ（ｎ−１）を加算し、補正値を考慮した、前回と今回との計算時刻の差分Ｘ（ｎ）を求める（ステップＳ１２）。
【００４１】
そして、差分Ｘ（ｎ）の間にメインバッファ３１２からリークしたデータ量（［Ｘ（ｎ）／６］×１２５）を、前回のバッファ占有量ＭＢＳ（ｎ−１）から減算する（ステップＳ１３）。ここで、規格上、メインバッファ３１２からエレメンタリバッファ３１３に転送されるときにＰＥＳヘッダは瞬間的に取り除かれるため、ＰＥＳヘッダはリークデータ量に含めない。
【００４２】
次に、ステップＳ１３の計算の結果、メインバッファ３１２のバッファ占有量ＭＢＳ（ｎ）が０より小さくなっているかをチェックする（ステップＳ１４）。メインバッファ３１２のバッファ占有量ＭＢＳ（ｎ）が０より小さければ、当該バッファ占有量ＭＢＳ（ｎ）を０にし（ステップＳ１５）、ステップＳ１６へ進む。一方、メインバッファ３１２のバッファ占有量ＭＢＳ（ｎ）が０より大きければ当該バッファ占有量ＭＢＳ（ｎ）はそのままとし、ステップＳ１６に進む。ステップＳ１６では、次回の計算の補正値Ｒ（ｎ）＝Ｘ（ｎ）ｍｏｄ６を算出する。こうして図５のステップＳ４においてメインバッファ３１２からエレメンタリバッファ３１３へのリークデータ量を求めることで、メインバッファ３１２のバッファ占有量を得る。
【００４３】
図７は、９０ｋＨｚカウンタを用いた場合における、メインバッファ３１２に入力がない場合のバッファ占有量の遷移を示すグラフ図である。実線が理想的なバッファ占有量ＭＢＳ０、破線が上記の計算を使用して導き出されたバッファ占有量ＭＢＳ１である。
誤差ΔＥ（ｎ）＝Ｒ（ｎ）×（１２５／６）
ここで、Ｒ（ｎ）＝Ｘｍｏｄ６であるため、Ｒ（ｎ）は０〜５であり、誤差ΔＥ（ｎ）は常に０≦ΔＥ（ｎ）＜１２５の範囲で収まることがわかる。すなわち、６カウント毎にＸｍｏｄ６＝０となり、誤差ΔＥ（ｎ）は理想値ＭＢＳ０と一致する。
【００４４】
本実施の形態においては、高速転送レートに対応すべく、Ｔ−ＳＴＤのバッファシミュレーションにおいて従来不要だったメインバッファ３１２のバッファシミュレーションを行なって、復号側においてビデオデータのバッファがオーバフローしないようビデオＥＳの多重化を制御する。このため、トランスポートストリームの転送速度が速くなっても、復号側でトランスポートストリームをデコードする際、そのバッファをオーバフローさせることなく復号可能な多重化ストリームを得ることができる。
【００４５】
そして、バッファシミュレーションにおいては、９０ｋＨｚカウンタをベースに計算を行った場合、メインバッファ３１２からエレメンタリバッファ３１３へのリークレートＲｂｘが１５，０００，０００ｂｐｓとしても、ある時間間隔におけるメインバッファ３１２からのリーク量を整数で考えられる。よってある時刻ｔ（ｎ）のメインバッファ３１２のバッファ占有量ＭＢＳ（ｎ）を整数演算で求めることができる。また補正値Ｒ（ｎ）を用いることで誤差ΔＥ（ｎ）が蓄積させることなくメインバッファ３１２のバッファ占有量を計算することができる。
【００４６】
なお、上述の実施の形態においては、（メインバッファのリークレート／クロック周波数）（９０ｋＨｚ）×Ｎを整数とするＮの一例として、Ｎ＝６でアラインし計算することを考えたが、６の倍数（６×ｉ（ｉ∈自然数））であれば同様の演算が可能である。ここで、誤差は、ΔＥ（ｎ）＝Ｒ（ｎ）×（１２５／６）×ｉとなるため、６が最も誤差が少なくなる点で好ましい。またｔ（ｎ−１）とｔ（ｎ）は、例えばトランスポートストリーム中のＰＣＲ（Program Clock Reference）時刻を利用してもよい。ＰＣＲは、トランスポートストリーム中に存在する２７ＭＨｚの基準時刻情報である。
【００４７】
次に、２７ＭＨｚ単位の場合の補正の計算方法について説明する。１５，０００，０００（ｂｉｔ／ｓ）を２７ＭＨｚ単位に変換すると下記のようになる。
１５，０００，０００（ｂｉｔ／ｓ）
＝１,８７５，０００（Ｂｙｔｅ／ｓ）
そして、２７ＭＨｚをクロック周波数とした場合の１クロック当たりのリークレートＲｂｘを計算すると、下記のように求まる。
１,８７５，０００／２７，０００，０００（Ｂｙｔｅ：２７ＭＨｚ単位）
＝（２３×３×５７）／（２６×３３×５６）（ｂｙｔｅ：２７ＭＨｚ単位）
＝５／（２３×３２）（Ｂｙｔｅ：２７ＭＨｚ単位）
【００４８】
つまり、２７ＭＨｚ単位においては、２３×３２＝７２カウントごとにリークするデータ量が整数値になることがわかる。これを一般式に書くと次のようになる。２７ＭＨｚ単位でのカウンタ増分値をＸとすると
リークデータ量：Ｘ×５／（２３×３２）
＝Ｘ×（５／７２）
＝[Ｘ／７２]×５＋（Ｘｍｏｄ７２）×（５／７２）
よって、Ｘが７２で割りきれる場合には、下記の式が成り立つ。
Ｘ×５／（２３×３２）
＝Ｘ×（５／７２）
＝[Ｘ／７２]×５
【００４９】
つまり、Ｘが７２で割り切れない場合はカウントが[Ｘ／７２]の分のみリークデータ量として計算し、割り切れない余り（補正値）Ｒ＝Ｘｍｏｄ７２は次のリークデータ量の演算に持ち越して計算する。これにより、各演算を整数演算とすることができる。
したがって、
Δｔ（ｎ）＝ｔ（ｎ）−ｔ（ｎ−１）とすれば、
Ｘ（ｎ）＝Δｔ（ｎ）＋Ｒ（ｎ−１）
ｔ（０）＝０、Ｒ（０）＝０、ｎ≧１
バッファ占有量＝ＭＢＳ−［Ｘ（ｎ）／７２］×５
ＭＢＳ−[（Δｔ（ｎ）＋（Ｒ（ｎ−１））／７２]×５
ただし、Ｒ（ｎ）＝Ｘ（ｎ）ｍｏｄ７２
ｔ（ｎ−１）：前回の計算時刻（２７ＭＨｚ単位）
ｔ（ｎ）：今回の計算時刻（２７ＭＨｚ単位）
ＭＢＳ：ＭＢのバッファ占有量
Ｘ（ｎ）：補正後の時刻の差分
【００５０】
図８は、２７ＭＨｚカウンタをベースに計算したときの図５におけるステップＳ４の処理を詳細に示すフローチャートである。先ず、前回の計算時刻ｔ（ｎ−１）と今回の計算時刻ｔ（ｎ）の差分Δｔ（ｎ）を求める（２７ＭＨｚ単位）（ステップＳ２１）。次に、ステップＳ２１にて算出したΔｔ（ｎ）に前回求めた計算の補正値Ｒ（ｎ−１）を加算し、補正値を考慮した計算時刻の差分Ｘ（ｎ）を求める（ステップＳ２２）。そして、メインバッファ３１２からリークしたデータ量（［Ｘ（ｎ）／７２］×５）をメインバッファ３１２のバッファ占有量ＭＢＳから減算する。ここで、上述したように、規格上、メインバッファ３１２からエレメンタリバッファ３１３に転送されるときにＰＥＳヘッダは瞬間的に取り除かれるため、ＰＥＳヘッダはリークデータ量に含めない。
【００５１】
次に、ステップＳ２３の計算の結果、メインバッファ３１２のバッファ占有量ＭＢＳが０より小さくなっているかをチェックする（ステップＳ２４）。メインバッファ３１２のバッファ占有量ＭＢＳが０より小さければ、当該バッファ占有量ＭＢＳを０にし（ステップＳ２５）、ステップＳ２６へ進む。一方、メインバッファ３１２のバッファ占有量ＭＢＳが０より大きければ当該バッファ占有量ＭＢＳはそのままとし、ステップＳ２６に進む。ステップＳ２６では、次回の計算の補正値Ｒ（ｎ）を算出する。
【００５２】
図９は、２７ＭＨｚカウンタを用いた場合における、メインバッファ３１２に入力がない場合のバッファ占有量の遷移を示すグラフ図である。実線が理想的なバッファ占有量ＭＢＳ０、破線が上記計算を使用して導き出されたバッファ占有量ＭＢＳ２である。
誤差ΔＥ（ｎ）＝Ｒ（ｎ）×（５／７２）
ここで、Ｒ（ｎ）＝Ｘｍｏｄ７２であるため、Ｒ（ｎ）は０〜７１であり、誤差ΔＥ（ｎ）は、常に０≦ΔＥ（ｎ）＜５の範囲で収まることがわかる。すなわち、７２カウント毎にＲ（ｎ）＝Ｘｍｏｄ７２＝０となり、誤差ΔＥ（ｎ）は理想値ＭＢＳ０と一致する。
【００５３】
以上のように、２７ＭＨｚのカウンタを使用した場合であっても、メインバッファ３１２からエレメンタリバッファ３１３間のリークレートＲｂｘが１５，０００，０００ｂｐｓの場合において、ある時間間隔におけるメインバッファ３１２のリーク量を整数で演算することができる。よって、ある時刻ｔ（ｎ）のメインバッファ３１２のバッファ占有量ＭＢＳを整数値で演算することができる。また補正値Ｒ（ｎ）を用いることで誤差ΔＥ（ｎ）を一定範囲内とし、誤差を蓄積させることなく計算することができる。更に、ＭＰＥＧ２のシステムクロックの周波数は２７ＭＨｚと定義されているため、より精度の高い計算が可能である。
【００５４】
なお、ここでは例として、時間間隔を７２カウントでアラインし、計算する場合について説明したが、７２の倍数（７２×ｉ（ｉ∈自然数））であれば同様の演算が可能である。ただし、誤差はΔＥ（ｎ）＝Ｒ（ｎ）×（５／７２）×ｉとなるため、７２が最も誤差が少なく好ましい。
【００５５】
以上説明したように、本実施の形態においては、システムクロックの周波数、又はその整数倍の周波数のクロックをベースにメインバッファのリークデータ量を計算する場合において、（リークレート／システムクロック周波数）×Ｎが整数となるＮを見つけ、クロックの増分値をＮでアラインすることによりリークデータ量を整数化し、またアラインされたことにより切り捨てられたクロックの増分値の端数を、次のクロック増分値に加算して計算する。これにより、９０ｋＨｚ又は２７ＭＨｚにおいて、これらで割り切れないリークレートであっても、計算誤差は一定の範囲内で抑え、計算誤差を蓄積させることなく計算が可能である。また、浮動小数点演算を用いず整数演算で計算可能なため、処理の負荷を小さくすることができる。
【００５６】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００５７】
【図１】エレメンタリストリームＥＳ、パケッタイズドＥＳ（ＰＥＳ）、及びトランスポートストリームＴＳの構造を示す図である。
【図２】ＰＥＳパケットヘッダのデータ構造を示す図である。
【図３】ＭＰＥＧ伝送規格における仮想的な復号器（トランスポートストリームシステムターゲット復号器）を示すブロック図である。
【図４】本発明の実施の形態にかかるビデオ／オーディオエンコーダ及びＴＳの多重化装置を示す図である。
【図５】本実施の形態にかかる多重化装置において、ＭＰ＠ＭＬ仕様でのビデオデータに関するＴ−ＳＴＤバッファシミュレーションの方法を示すフローチャートである。
【図６】９０ｋＨｚカウンタをベースに計算したときの図５におけるステップＳ４の処理を詳細に示すフローチャートである。
【図７】９０ｋＨｚカウンタを用いた場合における、メインバッファ３１２に入力がない場合のバッファ占有量ＭＢＳの遷移を示すグラフ図である。
【図８】２７ＭＨｚカウンタをベースに計算したときの図５におけるステップＳ４の処理を詳細に示すフローチャートである。
【図９】２７ＭＨｚカウンタを用いた場合における、メインバッファ３１２に入力がない場合のバッファ占有量ＭＢＳの遷移を示すグラフ図である。
【符号の説明】
【００５８】
３０２  デマルチプレクサ
３１１  ビデオ用トランスポートバッファ
３１２  ビデオ用メインバッファ
３１３  ビデオ用エレメンタリバッファ
３１４  ビデオデコーダ
３２１  オーディオ用トランスポートバッファ
３２２  オーディオ用メインバッファ
３２３  オーディオデコーダ
３３１  システム用トランスポートバッファ
３３２  システム用メインバッファ
３３３  システムデコーダ
３４１，３４２，３４３，３４４  リークレート
４０１  ビデオデータ
４０２  ビデオエンコーダ
４１１  ＰＣＭデータ
４１２  オーディオエンコーダ
４２０  多重化装置
４２１  ビデオバッファ
４２２  オーディオバッファ
４２３  多重化部
４３０  トランスポートストリーム
【図１】
2007282023.tif 000003
【図２】
2007282023.tif 000004
【図３】
2007282023.tif 000005
【図４】
2007282023.tif 000006
【図５】
2007282023.tif 000007
【図６】
2007282023.tif 000008
【図７】
2007282023.tif 000009
【図８】
2007282023.tif 000010
【図９】
2007282023.tif 000011