(57)【特許請求の範囲】
【請求項１】
多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出し、
多重化区間内の前記複数のビットストリームの情報量の積算値と第１の上限値とを比較し、
前記積算値と前記第１の上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する際に、
前記積算値が前記第１の上限値を超える場合、前記優先度に応じて、前記多重化区間の終了境界を跨ぐ、受信側のデコーダでのデコード単位を有する前記ビットストリームを選択して、選択した前記ビットストリームの当該デコード単位を多重化対象から除外し、
前記終了境界を跨ぐ前記デコード単位を次の多重化区間内で多重化すると、前記次の多重化区間内における前記積算値が前記第１の上限値を超える場合、前記終了境界を跨ぐ他のビットストリームの他のデコード単位を、前記優先度に応じて選択し、当該他のデコード単位を前記多重化対象から除外し、
前記積算値は、前の多重化区間において、前記多重化対象から除外された前記デコード単位の情報量を含み、
各前記ビットストリームの前記優先度は、前記複数のビットストリームそれぞれに対応して設定される前記デコーダのバッファ量の、前記多重化区間内における最大値と前記バッファ量の第２の上限値との差分と、前記多重化区間における前記バッファ量の最小値のうち、小さい方の値を前記バッファ量の前記第２の上限値で規格化した値であり、
前記第１の上限値は、前記多重化区間のビットレートの上限に前記多重化区間の時間を乗じた値から、前記ビットストリームに含ませる時刻情報の情報量を差し引いた値である、
処理をコンピュータに実行させるプログラム。
【請求項２】
前記第１の上限値と前記積算値との差分に応じて、多重化するデータ情報の情報量を決定することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記優先度の高い順に選択された前記ビットストリームにおいて、デコード開始時刻と、現在時刻の差が所定値以内である場合に、多重化を行うことを特徴とする請求項１または２に記載のプログラム。
【請求項４】
多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出する優先度計算部と、
多重化区間内の前記複数のビットストリームの情報量の積算値と第１の上限値とを比較し、前記積算値と前記第１の上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する選択部と、を有し、
前記選択部は、
前記積算値が前記第１の上限値を超える場合、前記優先度に応じて、前記多重化区間の終了境界を跨ぐ、受信側のデコーダでのデコード単位を有する前記ビットストリームを選択して、選択した前記ビットストリームの当該デコード単位を多重化対象から除外し、
前記終了境界を跨ぐ前記デコード単位を次の多重化区間内で多重化すると、前記次の多重化区間内における前記積算値が前記第１の上限値を超える場合、前記終了境界を跨ぐ他のビットストリームの他のデコード単位を、前記優先度に応じて選択し、当該他のデコード単位を前記多重化対象から除外し、
前記積算値は、前の多重化区間において、前記多重化対象から除外された前記デコード単位の情報量を含み、
各前記ビットストリームの前記優先度は、前記複数のビットストリームそれぞれに対応して設定される前記デコーダのバッファ量の、前記多重化区間内における最大値と前記バッファ量の第２の上限値との差分と、前記多重化区間における前記バッファ量の最小値のうち、小さい方の値を前記バッファ量の前記第２の上限値で規格化した値であり、
前記第１の上限値は、前記多重化区間のビットレートの上限に前記多重化区間の時間を乗じた値から、前記ビットストリームに含ませる時刻情報の情報量を差し引いた値である、
ことを特徴とする多重化装置。
【請求項５】
多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出し、
多重化区間内の前記複数のビットストリームの情報量の積算値と第１の上限値とを比較し、
前記積算値と前記第１の上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する際に、
前記積算値が前記第１の上限値を超える場合、前記優先度に応じて、前記多重化区間の終了境界を跨ぐ、受信側のデコーダでのデコード単位を有する前記ビットストリームを選択して、選択した前記ビットストリームの当該デコード単位を多重化対象から除外し、
前記終了境界を跨ぐ前記デコード単位を次の多重化区間内で多重化すると、前記次の多重化区間内における前記積算値が前記第１の上限値を超える場合、前記終了境界を跨ぐ他のビットストリームの他のデコード単位を、前記優先度に応じて選択し、当該他のデコード単位を前記多重化対象から除外し、
前記積算値は、前の多重化区間において、前記多重化対象から除外された前記デコード単位の情報量を含み、
各前記ビットストリームの前記優先度は、前記複数のビットストリームそれぞれに対応して設定される前記デコーダのバッファ量の、前記多重化区間内における最大値と前記バッファ量の第２の上限値との差分と、前記多重化区間における前記バッファ量の最小値のうち、小さい方の値を前記バッファ量の前記第２の上限値で規格化した値であり、
前記第１の上限値は、前記多重化区間のビットレートの上限に前記多重化区間の時間を乗じた値から、前記ビットストリームに含ませる時刻情報の情報量を差し引いた値である、ことを特徴とする多重化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、多重化装置及び多重化方法に関する。
【背景技術】
【０００２】
動画像や音声など各メディアのデータを伝送する際、これらを符号化してビットストリームを生成し、各ビットストリームを多重化して、１つのストリームで伝送することが行われている。
【０００３】
従来、受信側のデコーダモデルを規定し、このデコーダモデルにおける仮想バッファが、オーバーフローまたはアンダーフローによる破綻を起こさないように多重化処理が行われている。たとえば、デコーダモデルの仮想バッファ推移をフレームごとに検証して、フレームデコード時間ごとに、デコーダモデルの仮想バッファから各フレームの符号化データ量を減じて、設定ビットレートに応じたバッファ量を増分する手法が知られている。この手法は、デコーダモデルの仮想バッファがオーバーフローしないように、バッファ増分量を調整し、バッファ増分量に基づき、多重化比率を制御するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３３９７１８号公報
【特許文献２】特開平８−２５６３２９号公報
【特許文献３】特開平９−１３９７２０号公報
【特許文献４】国際公開第９８／３２２５２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数種類のメディアのビットストリームを多重化する際、伝送路の容量などを考慮して多重化後のビットレートに上限を設けている場合、その上限を守り、なおかつ、仮想バッファが破綻を起こさないように多重化することが困難であった。
【課題を解決するための手段】
【０００６】
発明の一観点によれば、以下のようなプログラムが提供される。このプログラムは、多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出し、多重化区間内の前記複数のビットストリームの情報量の積算値と所定の上限値とを比較し、前記積算値と前記上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する、処理をコンピュータに実行させる。
【発明の効果】
【０００７】
開示のプログラム、多重化装置及び多重化方法によれば、デコーダ側のバッファの破綻を防止できるとともに、ビットレートの上限に応じた多重化が可能となる。
【図面の簡単な説明】
【０００８】
【図１】本実施の形態の多重化装置の一例を示す図である。
【図２】多重化装置の動作の一例を示す図である。
【図３】ビットストリームの多重化区間とアクセスユニットの一例を示す図である。
【図４】優先度算出処理の一例の流れを示すフローチャートである。
【図５】Ｂｄｉｆｆｍｉｎの計算例を示す図である。
【図６】複数のメディアのビットストリームと多重化区間の一例を示す図である。
【図７】多重化するビットストリームの選択処理及び多重化処理の一例を示すフローチャートである（その１）。
【図８】多重化するビットストリームの選択処理及び多重化処理の一例を示すフローチャートである（その２）。
【図９】データの多重化における、時間と送信残りビット数の関係の一例を示す図である。
【図１０】本実施の形態に用いるコンピュータのハードウェアの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
図１は、本実施の形態の多重化装置の一例を示す図である。
多重化装置１０は、多重化部１１、優先度計算部１２−１，１２−２，…，１２−ｎ、選択部１３、記憶部１４を有している。
【００１０】
多重化部１１は、符号化部２０−１，２０−２，…，２０−ｎで符号化されて、メモリ２１−１，２１−２，…，２１−ｎに一旦蓄えられた複数種類のメディアのビットストリームを多重化する。メディアは、音声、動画などである。
【００１１】
優先度計算部１２−１〜１２−ｎは、多重化対象の複数のビットストリームそれぞれに対して、多重化における優先度を算出する。優先度計算部１２−１〜１２−ｎは、たとえば、メディアごとに規格で定められたデコーダモデルのデコーダバッファサイズ、デコード単位（以下アクセスユニットという）、またはデコード開始時刻を示すＤＴＳ（Decoding Time Stamp）に応じて優先度を算出する。優先度は、デコーダモデルにおいて、実際のデコーダバッファを仮想した仮想バッファが破綻する危険性のある度合いを意味する。
【００１２】
選択部１３は、ある多重化区間内の複数種類のメディアのビットストリームの情報量の積算値を求め、その積算値（たとえば、単位はビット数）と、所定の上限値（たとえば、単位はビット数）とを比較する。そして、選択部１３は、積算値と上限値との比較結果と、算出された優先度をもとに、複数のビットストリームから多重化するビットストリームを選択する。上限値は、たとえば、多重化したビットストリームを流す伝送路の容量などを考慮して設定されるビットレートの上限の値に、多重化区間の時間を乗じた値となる。
【００１３】
詳細は後述するが、たとえば、選択部１３は、優先度の高い順に多重化するビットストリームを選択していく。
また、選択部１３は前述の積算値が上限値を超える場合、多重化を行わなくても次の多重化区間での仮想バッファの破綻が起こらないメディアのビットストリームのうち、優先度が最も低いものを選択しない、などの処理を行う。または、選択部１３は、前述の積算値が上限値を超える場合、優先度に応じて、多重化区間の終了境界を跨ぐアクセスユニットを有するビットストリームを選択して、選択したビットストリームのアクセスユニットを多重化対象から除外するなどの処理を行う。これにより、多重化後のビットストリームが上限値を超えることが抑制されるとともに、デコードバッファの破綻が防止される。
【００１４】
記憶部１４は、各メディアのデコーダバッファサイズ、アクセスユニットの情報（ビット数など）、ＤＴＳなどの規格値や、前述の上限値などを記憶する。記憶部１４は、たとえば、ＲＯＭ（Read Only Memory）などである。記憶部１４は、多重化装置１０外に設けられていてもよい。
【００１５】
なお、図１の例では、ビットストリームごとに、優先度計算部１２−１〜１２−ｎを設けているが、１つの優先度計算部が、各ビットストリームの優先度を算出するようにしてもよい。
【００１６】
また、音声や動画などのメディア以外で、バッファモデルを持たないデータ情報（たとえば、字幕放送用のデータなど）や、時刻情報の情報量を考慮して、多重化を行うようにしてもよい。
【００１７】
以下、多重化装置１０の動作を説明する。
図２は、多重化装置の動作の一例を示す図である。
ステップＳ１：優先度計算部１２−１〜１２−ｎは、ビットストリームごとに多重化における優先度を算出する。
【００１８】
ステップＳ２：選択部１３は、多重化区間内の複数種類のメディアのビットストリームの情報量の積算値を求め、その積算値と、所定の上限値とを比較する。
ステップＳ３：そして、選択部１３は、積算値と上限値との比較結果と、ステップＳ１の処理で算出された優先度をもとに、多重化するビットストリームを選択する。
【００１９】
ステップＳ４：多重化部１１は、選択部１３で選択された複数のビットストリームを多重化して出力する。
このような、上限値と優先度を考慮した多重化処理を行うことで、多重化後のビットストリームがビットレートの上限を超えることが抑制されるとともに、デコードバッファの破綻が防止される。
【００２０】
次に、上記の各処理の一例を、より詳細に説明する。
（優先度算出処理の一例）
図３は、ビットストリームの多重化区間とアクセスユニットの一例を示す図である。
【００２１】
横軸は時間を表している。ビットストリームに含まれるアクセスユニットＵ１，Ｕ２，Ｕ３，Ｕ４，Ｕ５は、フレームやピクチャなどの同期単位であり、前述のようにデコード単位となる。
【００２２】
多重化区間Ｇｃは、必ずしも各アクセスユニットＵ１〜Ｕ５の切れ目で区切られているわけではなく、図３の例では、アクセスユニットＵ２の途中から、アクセスユニットＵ５の途中までの範囲で設定されている。
【００２３】
なお、以下では、多重化区間Ｇｃは、運用規定などで定められたＰＣＲ（Program Clock Reference）の挿入間隔以下の適当な時間単位で設定されるものとする。また、アクセスユニットＵ１〜Ｕ５ごとに、ＤＴＳが付加されているとする。このため、どのアクセスユニットＵ１〜Ｕ５が多重化区間Ｇｃに含まれるかどうかは、判別可能である。
【００２４】
図４は、優先度算出処理の一例の流れを示すフローチャートである。
ステップＳ１０：各アクセスユニットは発生情報量が一定とは限らない。そのため、優先度計算部１２−１〜１２−ｎは、ある多重化区間Ｇｃにおいて、メモリ２１−１〜２１−ｎから読み出される各ビットストリームに対して、アクセスユニットごとの仮想バッファ量を算出する。たとえば、あるビットストリームにおいて、多重化区間Ｇｃに、ｉ個のアクセスユニットがある場合、仮想バッファ量Ｂｕｆｆ１〜Ｂｕｆｆｉが算出される。
【００２５】
このとき、優先度計算部１２−１〜１２−ｎは、前回の多重化区間において、多重化対象とされなかったアクセスユニットがある場合については、今回の多重化区間の最初のアクセスユニットにその情報量を加算する。
【００２６】
ステップＳ１１：優先度計算部１２−１〜１２−ｎは、多重化区間Ｇｃで最大の仮想バッファ量ＢｕｆｆＭＡＸと、最小の仮想バッファ量ＢｕｆｆＭＩＮを算出する。
ステップＳ１１の処理において、優先度計算部１２−１〜１２−ｎは、多重化区間の境界を跨ぐアクセスユニットに対しては、仮想バッファ量が単純増加で推移するとして計算を行う。
【００２７】
また、各アクセスユニットでのバッファ引き抜き量をＢｕｆｆｏｆｆ１〜Ｂｕｆｆｏｆｆｉとすると、多重化区間Ｇｃ内のｎ番目のアクセスユニットの最後では、仮想バッファ量の積算値ＢＵＦＦnは、以下の式のようになる。
【００２８】
ＢＵＦＦn＝ＢＵＦＦn-1＋Ｂｕｆｆｎ−Ｂｕｆｆｏｆｆｎ
上式で、Ｂｕｆｆｎは、ｎ番目のアクセスユニット自体の仮想バッファ量、Ｂｕｆｆｏｆｆｎはｎ番目のアクセスユニットでのバッファ引き抜き量である。すなわち、ｎ−１番目のアクセスユニットまでの間に算出した仮想バッファ量の積算値ＢＵＦＦn-1に、ｎ番目の仮想バッファ量Ｂｕｆｆｎを加算し、バッファ引き抜き量Ｂｕｆｆｏｆｆｎを減算したものが、新たな仮想バッファ量の積算値ＢＵＦＦnとなる。
【００２９】
そして、優先度計算部１２−１〜１２−ｎは、ＢｕｆｆＭＡＸ＝ＭＡＸ（ＢｕｆｆＭＡＸ，ＢＵＦＦn）により、ＢｕｆｆＭＡＸを算出する。ＭＡＸ（）は、括弧内の値から、最大値を出力する関数である。アクセスユニットごとに、それまでのＢｕｆｆＭＡＸと、仮想バッファ量の積算値ＢＵＦＦnのうち大きい方が新たなＢｕｆｆＭＡＸとして算出される。
【００３０】
また、優先度計算部１２−１〜１２−ｎは、ＢｕｆｆＭＩＮ＝ＭＩＮ（ＢｕｆｆＭＩＮ，ＢＵＦＦn）により、ＢｕｆｆＭＩＮを算出する。ＭＩＮ（）は、括弧内の値から、最小値を出力する関数である。アクセスユニットごとに、それまでのＢｕｆｆＭＩＮと、仮想バッファ量の積算値ＢＵＦＦnのうち小さい方が新たなＢｕｆｆＭＩＮとして算出される。
【００３１】
なお、仮想バッファ量として０を許容する場合には、ＢｕｆｆＭＩＮ＝ＢＭＡＸとする。ＢＭＡＸは、メディアごとに規格で定められた仮想バッファ量の許容値（最大値）である。
【００３２】
ステップＳ１２：優先度計算部１２−１〜１２−ｎは、多重化区間ＧｃにおけるＢＭＡＸ−ＢｕｆｆＭＡＸとＢｕｆｆＭＩＮとを比較し、小さい方の計算結果をＢｄｉｆｆｍｉｎとする。
【００３３】
図５は、Ｂｄｉｆｆｍｉｎの計算例を示す図である。
横軸は時間、縦軸は仮想バッファ量を示している。図５では、あるビットストリームにおいて、アクセスユニットＵ１０，Ｕ１１，Ｕ１２に多重化区間が設定された場合が示されている。図５に示すように仮想バッファ量が推移する場合、ＢＭＡＸ−ＢｕｆｆＭＡＸより、ＢｕｆｆＭＩＮの方が小さい。従って、この場合は、ＢｕｆｆＭＩＮがＢｄｉｆｆｍｉｎとして選択される。なお、ＢｕｆｆＭＩＮが小さいということは、この多重化区間においては、多重化を行わないと、仮想バッファのアンダーフローが発生する可能性があることが示される。一方、ＢＭＡＸ−ＢｕｆｆＭＡＸが小さい場合には、その多重化区間においては、多重化を行わないと、仮想バッファからのデータの引き抜きが発生せず、オーバーフローが発生する可能性がある。
【００３４】
ステップＳ１３：優先度計算部１２−１〜１２−ｎは、多重化区間Ｇｃにおける優先度Ｅ＝Ｂｄｉｆｆｍｉｎ／ＢＭＡＸを算出する。優先度計算部１２−１〜１２−ｎは、各メディアのビットストリームのＢｄｉｆｆｍｉｎを、各メディアの仮想バッファ量の許容値ＢＭＡＸで割ることによって規格化し、優先度を求める。これにより、メディアごとのビットストリームの多重化の優先度を示す統一的な指標を得ることができる。
【００３５】
次に、選択部１３での選択処理及び多重化部１１での多重化処理の詳細を説明する。
（多重化するビットストリームの選択処理及び多重化処理の一例）
図６は、複数のメディアのビットストリームと多重化区間の一例を示す図である。
【００３６】
横軸は時間方向を示している。図６ではメディアＭ１，Ｍ２，…，Ｍｎのビットストリームと多重化区間Ｇｃ１が示されている。メディアＭ１のビットストリームは、アクセスユニットＵ２０，Ｕ２１，Ｕ２２，Ｕ２３，Ｕ２４を含んでいる。メディアＭ２のビットストリームはアクセスユニットＵ３０，Ｕ３１，Ｕ３２，Ｕ３３，Ｕ３４，Ｕ３５，Ｕ３６を含んでいる。また、メディアＭｎのビットストリームはアクセスユニットＵ４０を含んでいる。
【００３７】
図６に示すように、各メディアＭ１〜Ｍｎのアクセスユニットの大きさや位置は、メディアによってまちまちである。
図７及び図８は、多重化するビットストリームの選択処理及び多重化処理の一例を示すフローチャートである。
【００３８】
ステップＳ２０：選択部１３は、ある多重化区間内の最大ビット数Ｂｍａｘから時刻情報のビット数を減算する。
最大ビット数Ｂｍａｘは、多重化区間Ｇｃ１の時間をＧｃｔ１、多重化区間Ｇｃ１でのビットレートの上限をＲｍａｘ１とすると、Ｂｍａｘ＝Ｒｍａｘ１×Ｇｃｔ１、と表される。ここで、時刻情報の減算後の最大ビット数をＢｍａｘｓとすると、Ｂｍａｘｓ＝Ｂｍａｘ−Ｂｔｉｍｅ×（多重化区間Ｇｃ１の終了時刻−ＳＴＣｂ）／ＳＴＣｇとなる。Ｂｔｉｍｅは、時刻情報の多重化に要するビット数、ＳＴＣｂは、前回の多重化区間での時刻情報の挿入時刻、ＳＴＣｇは、時刻情報の挿入間隔を示す。
【００３９】
これにより、ビットストリームに時刻情報が挿入された場合に、ビットレートが上限を超えることを防止できる。
ステップＳ２１：次に選択部１３は、多重化区間Ｇｃ１の途中から開始または途中で完了となるアクセスユニットがあるか否かを調べ、時刻比でそれらのアクセスユニットのビット数を算出する。たとえば、図６に示した例において、アクセスユニットＵ２１，Ｕ２４，Ｕ３６，Ｕ４０は、多重化区間Ｇｃ１の境界を跨いでいる。このようなアクセスユニットに対して、選択部１３は、伝送ビットレートが一定であると仮定して、各アクセスユニットのＤＴＳを、ＤＴＳ＝ＤＴＳ−多重化区間Ｇｃ１の開始時刻と更新して、時間比でビット数を算出する。
【００４０】
ステップＳ２２：選択部１３は、前の多重化区間で、最大ビット数を超えたなどの理由で伝送していないアクセスユニットがあれば、そのビット数を前の多重化区間からの持ち越しとして現在の多重化区間の先頭のアクセスユニットのビット数に加算する。これにより、前の多重化区間では、上限値（最大ビット数）を超えないような多重化を行うことが可能になっている。
【００４１】
ステップＳ２３：選択部１３は、ステップＳ２２の処理によって修正後の各アクセスユニットのビット数の積算値と、時刻情報のビット数の減算後の最大ビット数Ｂｍａｘｓを比較する。
【００４２】
修正後の各アクセスユニットのビット数の積算値が、Ｂｍａｘｓ以下の場合にはステップＳ２４が行われる。また、修正後の各アクセスユニットのビット数の積算値が、Ｂｍａｘｓを超える場合には、図８のステップＳ２９の処理が行われる。
【００４３】
ステップＳ２４：選択部１３は、Ｂｍａｘｓと修正後の各アクセスユニットのビット数の積算値との差分に応じて多重化するデータ情報のビット量を決定し、多重化区間の総ビットレートを修正する。
【００４４】
たとえば、多重化区間Ｇｃ１の全てのメディアの総ビットレートをＲＧ１とした場合、ＲＧ１＝ＲＧ１＋ＭＩＮ（（Ｂｍａｘｓ１−修正された各アクセスユニットのビット数の積算値，データ情報のビット量））／Ｇｃｔ１と修正する。
【００４５】
この式によれば、多重化区間Ｇｃ１の最大ビット数Ｂｍａｘｓ１と、修正された各アクセスユニットのビット数の積算値との差分より、データ情報のビット量が小さい場合には、データ情報のビット量分だけビットレートが増加する。また、差分よりもデータ情報のビット量が大きい場合には、その差分に相当するデータ情報のビット量分だけビットレートが増加する。
【００４６】
Ｂｍａｘｓと修正後の各アクセスユニットのビット数の積算値との差分に応じて多重化するデータ情報のビット量を決定することで、データ情報によりビットレートが上限を超えることが防止される。
【００４７】
ステップＳ２５：選択部１３は、時刻情報を多重化するか否か判定する。時刻情報を多重化する場合にはステップＳ２６の処理が行われ、時刻情報を多重化しない場合にはステップＳ２７の処理が行われる。たとえば、選択部１３は、現在のシステムの時刻情報であるＳＴＣが、ＳＴＣ−ＳＴＣｂ＞ＳＴＣｇである場合には、時刻情報を多重化すると判定する。
【００４８】
また、選択部１３は、（ＳＴＣｂ＋ＳＴＣｇ−ＳＴＣ）／ＳＴＣｇが所定の閾値よりも小さければ多重化すると判定するようにしてもよい。
ステップＳ２６：選択部１３は、時刻情報を多重化するビットストリームに挿入する。
【００４９】
ステップＳ２７：選択部１３は、優先度の高いメディアのビットストリームから順に、多重化するビットストリームとして選択する。そして、選択部１３は、たとえば、ＤＴＳ−ＳＴＣ＜Ｂｕｆｆｅｒｄｅｌａｙであれば、多重化部１１に多重化処理を行わせる。
【００５０】
ここで、Ｂｕｆｆｅｒｄｅｌａｙは、たとえば、メディアごとのバッファモデルにより規定された、デコーダバッファから最初のアクセスユニットが引き抜かれる時間である。上式のようなタイミングで多重化を行うことで、デコーダバッファの破綻を防ぐことができる。
【００５１】
選択部１３は、多重化を行うと、ＳＴＣをＳＴＣ＝ＳＴＣ＋多重化したビット数／ＲＧ１と更新する。
ステップＳ２８：たとえば、文字放送用などで用いられるデータ情報は、バッファ規定はないものの、運用規定などにより、一定時刻以内に送りきることが望ましい。
【００５２】
図９は、データの多重化における、時間と送信残りビット数の関係の一例を示す図である。横軸は時間、縦軸は送信残りビット数を示している。
図９では、現在時刻ＳＴＣｃ、送信完了予定時刻ＳＴＣｅ、全データ情報のビット数Ｄｂ、既に送信済みのビット数Ｄｄの一例が示されている。ここで、全データ情報を送信完了予定時刻ＳＴＣｅに送信し終わる平均ビットレートをＲｇすると、Ｒｇ＝Ｄｂ／ＳＴＣｅと表せる。また、現在時刻ＳＴＣｃにおいてデータ情報の残りを送信完了予定時刻ＳＴＣｅに送信し終わる平均ビットレートをＲｒとすると、Ｒｒ＝（Ｄｂ−Ｄｄ）／（ＳＴＣｅ−ＳＴＣｃ）と表せる。このとき、たとえば、選択部１３は、Ｒｒ−Ｒｇ＞Ｔｈ（所定の閾値）である場合には、データ情報を多重化する。
【００５３】
データ情報を多重化すると、選択部１３は、ＳＴＣをＳＴＣ＝ＳＴＣ＋多重化したビット数／ＲＧ１と更新する。その後、次の多重化区間の処理が行われる。
ステップＳ２９：修正後の各アクセスユニットのビット数の積算値が、Ｂｍａｘｓを超える場合、選択部１３は、多重化区間の終了境界を跨ぐアクセスユニットがあるか否か判定する。多重化区間の終了境界を跨ぐアクセスユニットがある場合には、ステップＳ３０の処理が行われ、多重化区間の終了境界を跨ぐアクセスユニットがない場合には、ビットレートの上限を超えることを許容して前述のステップＳ２４の処理が行われる。
【００５４】
たとえば、図６に示した例の場合、アクセスユニットＵ２４，Ｕ３６，Ｕ４０が、多重化区間Ｇｃ１の終了境界を跨ぐ。
ステップＳ３０：選択部１３は、多重化区間の終了境界を跨ぐアクセスユニットがある場合、該当するアクセスユニットの中から、多重化対象から除外する（ビット数を０にする）候補を優先度に応じて選択する。該当するアクセスユニットが複数ある場合、選択部１３は、たとえば、優先度計算部１２−１〜１２−ｎで計算された優先度の最も低いビットストリームのアクセスユニットを１つ選択する。
【００５５】
ステップＳ３１：選択部１３は、ステップＳ３０の処理で選択したアクセスユニットのビット数を０にして、そのアクセスユニットを次の多重化区間で多重化する場合、最大ビット数Ｂｍａｘｓを超えてしまわないか否かを判定する。
【００５６】
次の多重化区間で最大ビット数を超える場合には、選択部１３は、選択したアクセスユニットのビット数の修正は行わずに、ステップＳ３４の処理に進み、最大ビット数を超えない場合にはステップＳ３２の処理を行う。
【００５７】
ステップＳ３２：選択部１３は、ビット数を０にする候補として選択したアクセスユニットのビット数を０に修正する。これにより、選択されたアクセスユニットは、現在の多重化区間では多重化が行われず、たとえば、次の多重化区間で多重化されることになる。
【００５８】
ステップＳ３３：選択部１３は、ステップＳ３２の処理でビット数を修正した後の、各アクセスユニットのビット数の積算値と、時刻情報のビット数の減算後の最大ビット数Ｂｍａｘｓを比較する。
【００５９】
修正後の各アクセスユニットのビット数の積算値が、Ｂｍａｘｓ以下の場合にはステップＳ２４が行われる。修正後の各アクセスユニットのビット数の積算値が、まだＢｍａｘｓを超える場合には、ステップＳ３４の処理が行われる。
【００６０】
ステップＳ３４：選択部１３は、ステップＳ３０の処理で選択されなかった、ビット数を０にするアクセスユニットの他の候補があるか否かを判定する。他の候補がある場合には、ステップＳ３０からの処理が繰り返され、ステップＳ３０の処理では、多重化区間の終了境界を跨ぐアクセスユニットのうち、次に優先度が低いビットストリームのアクセスユニットが選択される。他の候補がない場合には、修正を行わずビットレートが上限を超えることを許容して、図７のステップＳ２４の処理が行われる。
【００６１】
以上のようにビットレートの上限値と優先度を考慮した多重化処理を行うことで、多重化後のビットストリームが上限値を超えることが抑制されるとともに、デコードバッファの破綻が防止される。
【００６２】
なお、上記の図７、図８で示した処理フローは、あくまで一例であり、たとえば、適宜処理ステップを入れ替えるようにしてもよい。
たとえば、上記では、多重化区間のアクセスユニットの情報量の積算値が、Ｂｍａｘｓを超える場合には、多重化しないアクセスユニットを決定するようにしたが、これに限定されない。たとえば、上記積算値からビットレートを計算し、そのビットレートが、多重化区間におけるビットレートの上限を超える場合には、多重化しないアクセスユニットを選択するようにしてもよい。
【００６３】
以上のような多重化装置１０の処理内容は、たとえば、ＬＳＩ（Large Scale Integrated circuit）に搭載されるファームウェアとして適用されてもよい。
また、多重化装置１０の各機能を、以下のようなコンピュータで実行されるプログラムにより実現するようにしてもよい。
【００６４】
図１０は、本実施の形態に用いるコンピュータのハードウェアの一例を示す図である。
コンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０９を介してＲＡＭ（Random Access Memory）１０２、ＲＯＭ１０３及び複数の周辺機器が接続されている。
【００６５】
ＲＡＭ１０２は、コンピュータ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に用いる各種データが格納される
また、ＲＯＭ１０３には、ＣＰＵ１０１が実行する基本的なプログラムやデータを格納する。前述した、バッファモデルの各種の規格値なども、たとえば、ＲＯＭ１０３に格納される。
【００６６】
バス１０９に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、光学ドライブ装置１０７、及び通信インタフェース１０８がある。
【００６７】
ＨＤＤ１０４は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ１０４は、コンピュータ１００の二次記憶装置として使用される。ＨＤＤ１０４には、ＯＳのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００６８】
グラフィック処理装置１０５には、モニタ１０５ａが接続されている。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０５ａの画面に表示させる。モニタ１０５ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００６９】
入力インタフェース１０６には、キーボード１０６ａとマウス１０６ｂとが接続されている。入力インタフェース１０６は、キーボード１０６ａやマウス１０６ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０６ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００７０】
光学ドライブ装置１０７は、レーザ光などを利用して、光ディスク１０７ａに記録されたデータの読み取りを行う。光ディスク１０７ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０７ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００７１】
通信インタフェース１０８は、ネットワーク１０８ａに接続されている。通信インタフェース１０８は、ネットワーク１０８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００７２】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
上記のように、本実施の形態の処理機能は、コンピュータによって実現することができる。その場合、多重化装置１０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００７３】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００７４】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００７５】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【００７６】
以上、実施の形態に基づき、本発明のプログラム、多重化装置及び多重化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【００７７】
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出し、
多重化区間内の前記複数のビットストリームの情報量の積算値と所定の上限値とを比較し、
前記積算値と前記上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する、
処理をコンピュータに実行させるプログラム。
【００７８】
（付記２）  前記積算値が前記上限値を超える場合、前記優先度に応じて、前記多重化区間の終了境界を跨ぐアクセスユニットを有する前記ビットストリームを選択して、選択した前記ビットストリームの当該アクセスユニットを多重化対象から除外することを特徴とする付記１記載のプログラム。
【００７９】
（付記３）  前記終了境界を跨ぐ前記アクセスユニットを次の多重化区間内で多重化すると、前記次の多重化区間内における前記積算値が前記上限値を超える場合、前記終了境界を跨ぐ他のビットストリームの他のアクセスユニットを、前記優先度に応じて選択し、当該他のアクセスユニットを前記多重化対象から除外することを特徴とする付記２記載のプログラム。
【００８０】
（付記４）  前記積算値は、前の多重化区間において、前記多重化対象から除外された前記アクセスユニットの情報量を含むことを特徴とする付記２または３に記載のプログラム。
【００８１】
（付記５）  各前記ビットストリームの前記優先度は、前記複数のビットストリームそれぞれに対応して設定される仮想バッファ量の、前記多重化区間内における最大値と前記仮想バッファ量の上限値との差分と、前記多重化区間における前記仮想バッファ量の最小値のうち、小さい方の値を前記仮想バッファ量の前記上限値で規格化した値であることを特徴とする付記１乃至４の何れか一項に記載のプログラム。
【００８２】
（付記６）  前記上限値は、前記多重化区間のビットレートの上限に前記多重化区間の時間を乗じた値から、前記ビットストリームに含ませる時刻情報の情報量を差し引いた値であることを特徴とする付記１乃至５の何れか一項に記載のプログラム。
【００８３】
（付記７）  前記上限値と前記積算値との差分に応じて、多重化するデータ情報の情報量を決定することを特徴とする付記１乃至６の何れか一項に記載のプログラム。
（付記８）  前記優先度の高い順に選択された前記ビットストリームにおいて、デコード開始時刻と、現在時刻の差が所定値以内である場合に、多重化を行うことを特徴とする付記１乃至７の何れか一項に記載のプログラム。
【００８４】
（付記９）  多重化対象の複数の前記ビットストリームは、異なる複数のメディアのビットストリームであることを特徴とする付記１乃至８の何れか一項に記載のプログラム。
（付記１０）  現在時刻と、前回時刻情報を挿入した時刻の差に応じて、前記時刻情報を多重化するか否かを選択することを特徴とする付記１乃至９の何れか一項に記載のプログラム。
【００８５】
（付記１１）  送信完了予定時刻に全データ情報を送信し終わる平均ビットレートと、現在時刻において前記データ情報の残りを前記送信完了予定時刻に送信し終わる平均ビットレートとの差に応じて、前記データ情報を多重化するか否かを選択することを特徴とする付記１乃至１０の何れか一項に記載のプログラム。
【００８６】
（付記１２）  前記積算値が前記上限値を超えない場合、前記優先度の高いビットストリームから順に多重化を行うことを特徴とする付記１乃至１１の何れか一項に記載のプログラム。
【００８７】
（付記１３）  多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出する優先度計算部と、
多重化区間内の前記複数のビットストリームの情報量の積算値と所定の上限値とを比較し、前記積算値と前記上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する選択部と、
を有することを特徴とする多重化装置。
【００８８】
（付記１４）  多重化対象の複数のビットストリームそれぞれに対して多重化における優先度を算出し、
多重化区間内の前記複数のビットストリームの情報量の積算値と所定の上限値とを比較し、
前記積算値と前記上限値との比較結果及び前記優先度をもとに、前記複数のビットストリームから多重化するビットストリームを選択する、ことを特徴とする多重化方法。
【符号の説明】
【００８９】
１０  多重化装置
１１  多重化部
１２−１，１２−２，…，１２−ｎ  優先度計算部
１３  選択部
１４  記憶部
２０−１，２０−２，…，２０−ｎ  符号化部
２１−１，２１−２，…，２１−ｎ  メモリ
【図１】
0005625776.tif 000002
【図２】
0005625776.tif 000003
【図３】
0005625776.tif 000004
【図４】
0005625776.tif 000005
【図５】
0005625776.tif 000006
【図６】
0005625776.tif 000007
【図７】
0005625776.tif 000008
【図８】
0005625776.tif 000009
【図９】
0005625776.tif 000010
【図１０】
0005625776.tif 000011