(57)【要約】【課題】複数のメディアストリームを多重化して配信するメディアストリーム配信装置において受信側バッファのアンダーフロー及びオーバーフローを抑制する。【解決手段】各ストリームのフレームごとの伝送完了時刻に基づいてストリームのフレームを送出することで、各ストリームのフレームごとの伝送完了時刻を反映した多重化配信を行うことができるので、各ストリームにおける受信側バッファのアンダーフロー及びオーバーフローを抑制することができる。【選択図】          図１
2017017606.tif 000002
【特許請求の範囲】
【請求項１】
多重化対象の複数のストリームデータを記憶するストリーム記憶手段と、
前記ストリーム記憶手段に記憶された前記ストリームデータのフレームごとの伝送完了時刻を出力する伝送完了時刻出力手段と、
前記伝送完了時刻出力手段から出力された前記伝送完了時刻に基づいて前記ストリーム記憶手段から前記ストリームデータを読みだして多重化する多重化手段と、を備えたことを特徴とするメディアストリーム配信装置。
【請求項２】
多重化対象の複数のストリームデータをストリーム記憶手段に記憶するストリーム記憶ステップと、
前記ストリーム記憶手段に記憶された前記ストリームデータのフレームごとの伝送完了時刻を出力する伝送完了時刻出力ステップと、
前記伝送完了時刻出力ステップで出力された前記伝送完了時刻に基づいて前記ストリーム記憶手段から前記ストリームデータを読みだして多重化する多重化ステップと、を備えたことを特徴とするメディアストリーム配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のメディアストリームを多重化して配信するメディアストリーム配信装置及びメディアストリーム配信方法に関するものである。
【背景技術】
【０００２】
機器の高性能化、インターネットの普及と伝送路の広帯域化および動画像圧縮符号化技術の高効率化などを背景として、例えば音声や動画像等のメディアデータを圧縮符号化したメディアデータをダウンロードしながら、同時に再生をするストリーミングといわれる伝送サービスが増加している。音声や動画像のような時系列データを配信する際は時系列に応じて順次配信するストリーミング配信が一般的である。
【０００３】
例えば、ストリーミング配信で動画像のメディアデータを送る場合、伝送レートの平滑化を行うが、このとき、受信側のバッファリングを適切に行わないと受信側で所定のフレームが伝送完了しているべき時に届いていない、いわゆるアンダーフローの状態が生じ、適切な動画像表示が行えなくなる。一方、受信側バッファの容量に対して送信側からの伝送レートが高過ぎると、受信側のバッファメモリがオーバーフローしてデータの欠損を生じる。
【０００４】
受信側のバッファメモリで上記のようなアンダーフロー、オーバーフローなどのバッファ破綻が起きないよう、例えば、Ｈ．２６４やＨＥＶＣの規格では、受信側でのバッファリング処理を定義するバッファモデルが規定されている。このバッファモデルは、送信側の伝送レート、受信側におけるバッファリング時間及び受信側の最大バッファサイズを制約するルールであり、バッファモデルを守ることにより受信側バッファのバッファ破綻が発生しないことが保証される。特に、上記Ｈ．２６４やＨＥＶＣなどのフレーム予測を用いた圧縮符号化方式による符号化データは、Ｉピクチャは情報量が多く、ＰピクチャやＢピクチャは情報量が少なくなるというように、フレームごとの符号情報量が大きく異なるので、それぞれの方式の特徴に適したバッファモデルが規定される。
【０００５】
以上のように一つの動画像データを配信する場合は、送信側が上記バッファモデルに規定された送出レートを守り、受信側がバッファリング時間を守るとともに最大バッファサイズ以上の容量を有するバッファを持つようにすることで、受信側バッファのオーバーフローやアンダーフローといったバッファ破綻を防げる。
【０００６】
一方、伝送路を有効活用するため、複数の動画像ストリームを多重化して１つの伝送路で配信することがある。この場合、個々の動画像ストリームの送受信装置においてバッファモデルを守るよう符号化制御、送信制御をし、バッファ容量を準備するようにしても、一緒に多重される別の動画像ストリームの情報量の影響により、それぞれの動画像ストリームがバッファモデルを守れなくなる状況が生じる。すなわち、多重している複数の動画像ストリームのうちの一つにおいて急に情報量が増加した場合、その情報量のデータを送信するために他の動画像ストリームのデータの送信が待たされることや、受信側のバッファ容量の状況を送信側に反映するタイミングが遅れるため、結果的に受信側の個々の動画像ストリームにおいてバッファモデルが守られない配信が行われることになる。この問題を回避する方法として、例えば、特許文献１に示されたように、各ストリームの各フレームの符号量を符号化側で予め見積もり、受信側のバッファがオーバーフローしないよう符号化側で符号化レートを制御する方法がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２０５２６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示されたように、受信側のバッファがオーバーフローしないよう符号化側で符号化レートを制御することで、バッファのオーバーフローを防ぐことはできる。しかし、多重している複数の動画像ストリームにおいて符号量の大きいフレームがあった場合に、そのフレームの送出に時間がかかり、伝送時刻が迫ってきているストリームを送出できず、当該ストリームの受信側バッファでアンダーフローが生じてしまう可能性がある。
【０００９】
本発明は、上記課題を解決するためになされたものであり、複数のメディアストリームを多重した場合でも、受信側バッファのバッファ破綻が抑制されるメディアストリーム配信装置、及びメディアストリーム配信方法を得ることを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るメディアストリーム配信装置は、多重化対象の複数のストリームデータを記憶するストリーム記憶手段と、このストリーム記憶手段に記憶されたストリームデータのフレームごとの伝送完了時刻を出力する伝送完了時刻出力手段と、この伝送完了時刻出力手段から出力された伝送完了時刻に基づいて前記ストリーム記憶手段からストリームデータを読みだして多重化する多重化手段とを備えたものである。
また、本発明に係るメディアストリーム配信方法は、多重化対象の複数のストリームデータを記憶するストリーム記憶ステップと、前記ストリーム記憶ステップに記憶された前記ストリームデータのフレームごとの伝送完了時刻を出力する伝送完了時刻出力ステップと、前記伝送完了時刻出力ステップから出力され前記伝送完了時刻に基づいて前記ストリーム記憶ステップから前記ストリームデータを読みだして多重化する多重化ステップと、を備えたものである。
【発明の効果】
【００１１】
本発明によれば、各ストリームのフレームごとの伝送完了時刻に基づいてストリームのフレームを送出することで、各ストリームのフレームごとの伝送完了時刻を反映した多重化配信を行うことができるので、各ストリームにおけるバッファ破綻を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係るメディストリーム配信装置を示す構成図。
【図２】（ａ）実施の形態１に係るストレージ２に蓄積されたストリームの一例を概念的に示した説明図、（ｂ）実施の形態１において、各ストリームを伝送レートに変換した場合の概念を説明する説明図、（ｃ）３つのストリームを単純に各フレームの順番で多重化した場合の多重化ストリームの例を示す説明図、（ｄ）本発明による多重化を行った場合の多重化ストリームの例を示す説明図。
【図３】実施の形態１に係るメディアストリーム配信装置の動作を示すフローチャート。
【図４】実施の形態１に係るメディアストリーム配信装置のストリーム解析部の詳細動作を示すフローチャート。
【図５】実施の形態１に係るメディアストリーム配信装置のハードウェア構成図。
【発明を実施するための形態】
【００１３】
実施の形態１．
まず、本発明の実施の形態１に係るメディアストリーム配信装置の構成を説明する。図１は、本発明の実施の形態１に係るメディアストリーム配信装置の構成例を示す構成図である。図１は、ストレージ２に記憶された複数の動画像データ１〜Ｎを、メディアストリーム配信装置としての動画像配信装置１が読出して多重化し、伝送路１５へ送出する例を示している。
動画像配信装置１は、ストリームデータを記憶するストリーム記憶手段としてのストリームメモリ１０、このストリームメモリ１０に記憶されたストリームデータのフレームごとの伝送完了時刻を出力する伝送完了時刻出力手段としての伝送完了時刻出力部、この伝送完了時刻出力部１１から出力された伝送完了時刻から優先度を求めるストリーム解析部１２、このストリーム解析部１２で求められた優先度に基づいて、ストリームメモリ１０からストリームデータを読出し、多重化する多重化手段としてのストリーム読出部１３とストリーム多重化伝送部１４を有して構成されている。
【００１４】
ここで、ストレージ２は、本発明の動画像配信装置１により多重化して配信する複数ストリームのデータを供するものであり、例えば、ＨＤＤやＳＤＤなどの不揮発性の記憶媒体や、これらの不揮発性の記憶媒体から読みだしたデータを保存するＳＤＲＡＭなどの揮発性の記憶媒体などの複数のストリーム１〜Ｎを蓄積する記憶装置で構成すればよい。さらには、動画像配信装置１に多重化して配信するストリームのデータを供するものとして、ストレージ２は符号済みストリームを出力する符号化装置で置き換えてもよい。
【００１５】
このような動画像配信装置１により複数の動画像ストリームを多重化して配信する場合、まず、動画像配信装置１は、ストレージ２から複数の動画像データ１〜Ｎを読出す。ストレージ２にある動画像データ１〜Ｎが続けて読出されて情報の流れになったものをストリームという。ここで、ストリーム１〜Ｎは、それぞれのストリームを送受信する装置間で決められた所定のバッファモデルを順守した符号化がなされている。このため、多重化を考慮せずに、各ストリームに対してそれぞれ定義された送出レートＲ１〜ＲＮに従って、送信側からレート平滑化配信を行えば、受信側でバッファ破綻することなく伝送可能であるように構成されているものである。
【００１６】
バッファ破綻とは、上述したような受信側バッファのアンダーフローまたはオーバーフローを指す。伝送レートを平滑化して配信した場合、各フレームの情報量が異なるため、受信側にフレームのデータが到着する時間が一定間隔でなくなる。しかし、受信側では、映像フレームはフレームレートに合わせて一定周期で表示する必要がある。そこで、動画像データの各フレームのデータが到着するタイミングの変動が画面表示に影響を与えないよう、受信した動画像データをある一定量バッファリングし、受信タイミングの変動を吸収する処理が行われる。バッファモデルを順守したストリームは、指定された送出レートで送信側から受信側のバッファに配信され、かつ受信側は、指定されたサイズ以上のバッファを用意する。また、受信側に伝送され、バッファに蓄積されたフレームデータは、指定された時間にバッファから引き抜かれることが取り決められている。このことで、受信側のバッファにおいてオーバーフローが発生しないことが保証される。
【００１７】
図２（ａ）は、ストレージ２に蓄積されたストリームの一例を概念的に示した説明図であり、３つのストリームをそれぞれ時系列に並べて示している。各ストリームはフレームごとに仕切られており、横の長さは当該フレームの伝送に要する時間を示している。各ストリームはそれぞれ送受信装置間で取り決められたバッファモデルを順守したストリームであり、それぞれ送出レートはＲ１，Ｒ２、Ｒ３が指定されているものとする。
【００１８】
図２（ａ）において点線の矢印で示しているのは、各フレームのデータが受信側のバッファからストリームが引き抜かれるまでの時刻であり、ここでは目標伝送完了時刻という。この目標伝送完了時刻において各フレームのデータが受信側バッファから引き抜かれることで受信側バッファがオーバーフローすることが防止される。このように受信側バッファがオーバーフローすることを防止するために各フレームのデータが受信側バッファから引き抜かれるということは、その時刻に各フレームのデータを表示に使うということなので、この目標伝送完了時刻までに各フレームのデータが受信側バッファに伝送完了していなければならない。すなわち、目標伝送完了時刻までに、各フレームのデータが受信側バッファに伝送完了していないと、アンダーフローとなって正常な動画像表示が行われなくなってしまう。
最大バッファリング時間は、バッファモデルによって指定された各ストリームの最大フレームの符号量によって定められる。最大バッファリングサイズは、各ストリームに対する受信側バッファの容量である。ここで、最大バッファリングサイズを最大バッファリング時間に変換すると、最大バッファリング時間ＴＢ［ｓｅｃ］は、バッファサイズＢＣ［ｂｉｔ］と送出レートＲ［ｂｉｔ／ｓｅｃ］から、次の式で求められる。
【００１９】
【数１】
2017017606.tif 000003
【００２０】
次に、動画像配信装置１がストレージ２から複数のストリーム１〜Ｎを読出し、１つの伝送路１５で送出できるように多重化を行う動作の詳細を説明する。
【００２１】
ストリームメモリ１０は、ストレージ２から複数のストリーム１〜Ｎを読出し、一時的に保存する。
【００２２】
伝送完了時刻出力部１１は、ストリームメモリ１０に保存された複数のストリーム１〜Ｎから伝送完了時刻を読出す。伝送完了時刻出力部１１は、各ストリームの各フレームの目標伝送完了時刻をストリーム解析部１２へ出力する。この各ストリームの各フレームの目標伝送完了時刻は、バッファモデルを順守したストリームである場合、ストリーム毎に定義されている情報である。この情報はストリーム内の付加情報フィールドに埋め込まれている場合もあれば、既知情報として送出側と受信側で、別途定められた手段で共有している場合もある。伝送完了時刻出力部１１は、これらの情報を、ストリームの付加情報フィールドから抽出することで取得してもよいし、または既知情報として動画像配信装置１外から与えられた情報に基づいて取得してもよい。
【００２３】
ストリーム解析部１２は、伝送完了時刻出力部１１から出力された目標伝送完了時刻を用いて各ストリームの先頭フレームの優先度を導出しストリーム読出部１３に出力する。さらに、ストリーム解析部１２は、各ストリームに設定された送出レートを管理し、ストリーム多重化伝送部１４に出力する。
各ストリームの受信側バッファ蓄積状態、送出レートは、バッファモデルによって定められるパラメータである。これらの情報はバッファモデルを順守したストリームである場合、ストリーム毎に定義されている情報である。これらの情報はストリーム内の付加情報フィールドに埋め込まれている場合もあれば、既知情報として送出側と受信側で、別途定められた手段で共有している場合もある。ストリーム解析部１２は、これらの情報を、ストリームの付加情報フィールドから抽出することで取得してもよいし、または既知情報として動画像配信装置１外から与えられた情報に基づいて取得してもよい。
【００２４】
そして、ストリーム解析部１２から出力された優先度に基づき、ストリーム読出部１３は、ストリームメモリ１０から読出すストリームを選択し、そのストリームの読出しを行う。なお、図１では読出すストリームを選択する様子を切り替えスイッチのように模式的に表している。読出したストリームはストリーム多重化伝送部１４に出力され、読出し済みのストリームはストリームメモリ１０から削除する。
【００２５】
ストリーム読出部１３からストリーム多重化伝送部１４に出力されたストリームを、ストリーム多重化伝送部１４において所定の伝送方式で多重化するとともに、ストリーム解析部１２から出力された送出レート情報に基づきレート平滑化して伝送路１５へ送出する。ストリーム多重化伝送部１４へ出力するストリームは、ストリームそのものでも良いし、当該ストリームのストリームメモリ１０の格納位置を表すアドレス情報のみでも良い。
【００２６】
レート平滑化は、パケットの伝送間隔を制御することで実現する。あるパケット１つに着目すると、伝送時の伝送レートは伝送路１５の帯域幅と等しくなる。パケットの送出間隔を大きくすることは、伝送レートを下げることに等しく、間隔を小さくすることは伝送レートを上げることに等しい。伝送レートを下げることで、伝送路１５の始端／終端や中継装置において処理する時間あたりのパケット個数を減らす事ができ、伝送路１５の品質が安定する。伝送レートは、多重化の際のオーバーヘッドを取り除いたストリーム部分のみに着目した場合、各ストリーム１〜Ｎの伝送レートＲ１〜ＲＮの合計のレートで算出される次のような値とする。
【００２７】
【数２】
2017017606.tif 000004
【００２８】
図２（ｂ）は、図２（ａ）で示した各ストリームを伝送路で伝送するときの伝送レートで平滑化した状態を概念で示したものである。図２（ｂ）では、各フレームの目標伝送完了時刻の直前にフレームが送出完了する状態を示しているが、それより早めに伝送完了してもよく、各フレームは目標伝送完了時刻までに伝送が完了していれば受信側でアンダーフローが発生しない。
【００２９】
図２（ｂ）のように、各ストリームだけを伝送レートで平滑化して伝送する場合は、各フレームの目標伝送完了時刻までに伝送が完了するように伝送すればよい。しかし、これら複数のストリームを多重化して伝送する場合、複数のストリームのデータを織り交ぜながら伝送することになる。図２（ｃ）は、図２（ｂ）のように伝送レートに変換した３つのストリームを、単純に各フレームの順番通りに多重化した場合の多重ストリームの例を概念で示す説明図である。この場合、あるストリームのフレームを伝送している間は他のストリームのフレームを伝送できないため、目標伝送完了時刻までに送出完了することができないフレームが生じる。すなわち、受信側でアンダーフローを発生させてしまう場合が生ずる。図２（ｃ）の例では、フレーム２−１の符号量が大きいため送出に時間がかかり、その間に他のストリームを送ることができないので、フレーム１−２が目標伝送完了時刻までに送出完了することできない事態が生じている。
【００３０】
本発明では、伝送完了時刻出力部１１から各ストリームの各フレームの目標伝送完了時刻をストリーム解析部１２へ出力し、この目標伝送完了時刻に基づいて多重化順序に関する優先度を求め、この優先度に基づいて多重化を行う。このように各ストリームの各フレームの目標伝送完了時刻を反映した多重化を行うことで、各ストリームにおける受信側のアンダーフローを抑制するものである。このような多重化を行った場合の多重化ストリームの例を図２（ｄ）に示す。各ストリームの各フレームの目標伝送完了時刻を反映し、目標伝送完了時刻が早く訪れるフレームを優先的に多重して伝送することで図２（ｄ）に示すように、それぞれのフレームが目標伝送完了時刻を守った伝送タイミングで伝送される。
【００３１】
伝送完了時刻出力部１１から各ストリームの各フレームの目標伝送完了時刻を出力し、目標伝送完了時刻に基づいて多重化順序に関する優先度を求め、優先度に基づいて多重化を行う動作についての詳細は後述する。
【００３２】
なお、多重化伝送部１４における多重化方式は、例えばＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）、ＲＴＰ（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）、ＭＭＴ（ＭＰＥＧ  Ｍｅｄｉａ  Ｔｒａｎｓｐｏｒｔ）などのＭＰＥＧ−２システム規格で定められている方式を用いることができる。いずれの多重化方式も、各ストリームを所定の単位に分割した後、パケットヘッダを付加してパケット化し、パケット単位に入れ子状に配置して送信する。またいずれの多重化方式も、各パケットヘッダにストリームの識別子を含み、各パケットがどのストリームのデータを含んでいるかが受信側で判断することができる。またいずれの多重化方式も、フレームの開始位置と終了位置を示すマーカ情報をパケット内に含み、１つのパケット内に含まれて伝送されるフレームであっても、複数のパケットに跨って伝送されるフレームであっても、受信側でそれぞれのフレーム位置を特定することができる。
【００３３】
次に、本実施の形態に係る動画像配信装置１の動作について説明する。図３は、実施の形態１に係る動画像配信装置１の動作を示すフローチャートである。
【００３４】
まず、ステップＳ１０１において、動画像配信装置１は、ストレージ２から複数の動画像データ１〜Ｎを読出し、ストリームメモリ１０に記憶する。
【００３５】
次に、ステップＳ１０２において、伝送完了時刻出力部１１がストリームメモリ１０に記憶された各ストリームから、各ストリームの各フレームの目標伝送完了時刻を取得し、ストリーム解析部１２へ出力する。この目標伝送完了時刻は、ストリーム毎に定義されている情報で、ストリーム内の付加情報フィールドに埋め込まれている場合もあれば、既知情報として送出側と受信側で、別途定められた手段で共有している場合もある。伝送完了時刻出力部１１は、これらの情報を、ストリームの付加情報フィールドから抽出することで取得してもよいし、または既知情報として動画像配信装置１外から与えられた情報に基づいて取得してもよい。
【００３６】
ステップＳ１０３では、ステップＳ１０２で得た目標伝送完了時刻から優先度を導出し、導出した優先度をストリーム読出部１３に出力する。優先度の導出については後に詳細を説明する。
【００３７】
ステップＳ１０４、Ｓ１０５は、ストリーム読出部１３が行う動作である。ステップＳ１０４では、ストリーム読出部１３は、ステップＳ１０３で導出した各フレームの優先度に基づき、最も優先度の高いストリームを選択し、読出す。そして、ステップＳ１０５にて、読出したストリームをストリーム多重化伝送部１４へ出力する。このとき、ストリーム読出部１３は、読出し済みのストリームをストリームメモリ１０から削除する。
【００３８】
ステップＳ１０６、Ｓ１０７は、ストリーム多重化伝送部１４が行う。ステップＳ１０６では、ストリーム読出部１３によってストリーム１〜Ｎがストリーム多重化伝送部１４へ出力される。ストリーム多重化伝送部１４は、入力された順にストリーム１〜Ｎを所定の伝送方式に多重化する。ステップＳ１０７では、ストリーム解析部１２から入力された伝送レート情報に基づいてレート平滑化して伝送路１５へ送出する。
【００３９】
ステップＳ１０８では、ステップＳ１０１〜Ｓ１０８の処理を、未送出の送出対象ストリームに対して繰り返し実施するか否かを判断する。ストリームメモリ１０に送出データが残っている場合はステップＳ１０１を繰り返し、ストリームメモリ１０に送出データがなかった場合にはフローチャートの動作を終了する。
【００４０】
次に、伝送時刻出力部１１及びストリーム解析部１２の処理の詳細について説明する。図４は、本実施の形態１に係るメディアストリーム配信装置のストリーム解析部１２の詳細動作を示すフローチャートである。このフローチャートの動作を開始する時刻は、直前にこのフローチャートの動作にて特定されたストリームが送出完了した時刻とする。ただし後述するステップＳ２１０にて、ストリームの特定がスキップされた場合、後述するステップＳ２０９で求められた時刻Ｔｒｅｍｏｖｅまで待機するか、または所定の微少な時間だけ、直前のフローチャートの動作終了時刻から待機した後に、フローチャートの動作を起動する。
【００４１】
まず、ステップＳ２０１にて、ストリーム１〜Ｎの未送信フレームのうち先頭のフレームに対して、各ストリームの各フレームの目標伝送完了時刻、受信側バッファ蓄積状態、送出レートを取得する。例えば、各ストリームの中を解析することで、これらの情報を取得する。
【００４２】
なお、ここでいうフレームとは、フレームデータ全体であるか、またはフレームデータの断片である。これは後述する特定の条件においては、フレームデータ全体が送出できないため、フレームデータの一部のデータのみを送出して図４に示すフローチャートの動作を終了する場合があるためである。あるストリームに対して先頭フレームの一部のみを送出した後に再度このフローチャートの動作を実施する場合、当該ストリームの先頭フレームが未送出のフレームデータ断片となる。
【００４３】
ステップＳ２０２にて目標送出完了時刻を全てのストリームの先頭未送信フレームに対して求めると、その時刻が現在の時刻から近い順に送出する優先度が高くなるよう優先度を決定する。優先度が最大であったストリームを優先度最大ストリームＳＭａｘとする。受信側のバッファサイズ上限について考慮しない場合は、伝送完了時刻順、すなわち優先度が高い順にフレームを送出していくことで、全てのストリームに対して、受信側でバッファアンダーフローを発生させることなく複数のストリームを送信することができる。
【００４４】
これは以下の考え方から導かれる。ストリーム１〜Ｎが、いずれもバッファモデルを順守しており、かつそれぞれのビットレートおよびバッファモデルのパラメータである送出レートがＲ１〜ＲＮ［ｂｐｓ］とする。それぞれ単独で、上記送出レートで送出する場合、送出開始からある時刻Ｔまでに送出されるストリームｎのデータ量Ｄｎ（Ｔ）は、次の式であらわされる。
【００４５】
【数３】
2017017606.tif 000005
【００４６】
また、これらストリーム１〜Ｎをまとめて、伝送レートで送出する場合、時刻Ｔまでに送出可能なデータ量Ｄ（Ｔ）は次のようになる。
【００４７】
【数４】
2017017606.tif 000006
【００４８】
よってある時刻Ｔまでに、個別に送出する場合と同じデータを全てのストリーム１〜Ｎにおいて送出することが可能である。
【００４９】
以上より、任意のストリームの任意のフレームに着目すると、当該フレームおよび当該フレームの目標伝送完了時刻Ｔよりも前の目標伝送完了時刻を持つ全てのストリームの全てのフレームは、時刻Ｔまでに送出完了可能である。よって目標伝送完了時刻が早い順に送出を実施すると、全てのストリームの全てのフレームを目標伝送完了時刻までに送出完了することができる。
【００５０】
次に、ステップＳ２０３では、優先度最大ストリームＳＭａｘの受信側のバッファの空き容量が０かどうかを判定する。
【００５１】
ステップＳ２０３にて受信側のバッファの空き容量が０でなかった場合、ステップＳ２０４に進む。ステップＳ２０４では、ストリーム解析部１２は送出優先度、すなわち、目標伝送完了時刻が最も近いストリームの先頭フレームを送出対象フレームＦＭａｘに決定する。
【００５２】
次に、ステップＳ２０５にて、送出対象となった優先度最大ストリームＳＭａｘの現時点での受信側バッファの空き容量と送出対象フレームＦＭａｘのフレームサイズを比較する。受信側バッファ空き容量は、後述するステップＳ２１６で導出されたバッファ蓄積量を、ステップＳ２０１にて求めたバッファ最大量から減じた値として求めることができる。
【００５３】
ステップＳ２０５にて、送出対象フレームＦＭａｘのサイズがバッファ空き容量以下であった場合、ステップ２０６へ進み、フレーム全体を送出対象データとする。
Ｓ２０５にて、送出対象フレームサイズがバッファ空き容量を超過した場合、ステップＳ２０７へ進み、送出対象フレームのうちバッファ空き容量分のデータを送出対象データとする。
【００５４】
ステップＳ２０５〜Ｓ２０７の処理により、受信側バッファの上限を超えるデータが送出されないため、受信側バッファのオーバーフローの発生が抑制される。なお、ステップＳ２０７側に分岐し、フレームデータの一部しか送出されなかった場合においても、次にこのフローチャートの動作を実施した際にバッファ空き容量が増えていれば、残りの断片データが、ステップＳ２０１に基づく優先度で送出されるため、このデータ分割処理により受信側でバッファアンダーフローが発生することはない。
【００５５】
次に、ステップＳ２０３にて、受信側のバッファの空き容量が０であった場合について述べる。受信側バッファの空き容量が０であった場合、ステップＳ２０８へ進む。ステップ２０８では、優先度最大のストリームＳＭａｘを一時的に送出対象から除外する。これにより、これまで優先度が２番目であったストリームを優先度最大ストリームＳＭａｘ２とする。
またその際に、ステップＳ２０９にて除外した優先度最大ストリームＳＭａｘの受信側バッファに空きが発生する時刻Ｔｒｅｍｏｖｅを求める。Ｔｒｅｍｏｖｅは、送出済みフレームのうち、受信側バッファから引き抜かれていない最も先に送出したフレームの目標伝送完了時刻である。
【００５６】
ステップＳ２１０では、送出対象ストリームがあるかどうかを判定し、その判定結果に基づき処理を分岐する。送出対象ストリームが存在しない場合、以降の処理をスキップしこのフローチャートの動作を終了する。
【００５７】
ステップＳ２１０にて送出対象ストリームがあった場合は、ステップＳ２１１へ進む。ステップ２１１では、優先度最大のストリームの受信側バッファの空き容量に応じて処理を分岐する。バッファの空き容量が０であった場合、ステップＳ２１２へ進み、優先度最大のストリームＳＭａｘ２も送出対象から一時的に除外し、ステップ２１０に戻る。この場合は、ＳＭａｘ２の次に優先度が大きいストリームが存在する場合は、そのストリームを優先度最大ストリームＳＭａｘ２とする。優先度最大ＳＭａｘ２の次に優先度が大きいストリームが存在しなかった場合は、ステップＳ２１０の動作に基づきこのフローチャートの動作を終了する。
【００５８】
ステップＳ２１１にて優先度最大のストリームＳＭａｘ２のバッファの空き容量が０でなかった場合は、ステップ２１３へ進む。ステップＳ２１３では、優先度最大ストリームＳＭａｘ２の先頭未送信フレームＦＭａｘ２を送出対象フレームに決定する。
【００５９】
次に、ステップＳ２１４では、送出対象フレームＦＭａｘ２を全部送るか、分割して送るかを判断するため、フレームサイズと、優先度最大ストリームＳＭａｘ２の受信側バッファ空き容量および送出データ量を示す値Ｂｒｅｍｏｖｅを比較し、比較結果にもとづき処理を分岐する。ここでＢｒｅｍｏｖｅは、現在時刻からステップＳ２０９で求めたＴｒｅｍｏｖｅまで、すなわち最初に除外されたストリームＳＭａｘの受信側バッファに空きが出るまでにおいて、伝送レートΣＲｎで送出可能なデータ量である。現在時刻をＴとすると、送出可能なデータ量Ｂｒｅｍｏｖｅ［ｂｉｔ］は以下の式で求められる。
【００６０】
【数５】
2017017606.tif 000007
【００６１】
すなわち、受信側バッファ空き容量がＦＭａｘ２のフレームサイズより小さい場合、フレーム全体を送ると受信側バッファがオーバーフローしてしまい、また送出データ量ＢｒｅｍｏｖｅがＦＭａｘ２のフレームサイズより小さい場合、フレーム全体を送ると送信を待機している優先度最大ストリームＳＭａｘの送信再開を遅らせてしまう。このため、まず、優先度最大ストリームＳＭａｘ２の受信側バッファ空き容量とＢｒｅｍｏｖｅを比較し、小さい方をｍ［ｂｉｔ］とする。そして、送出対象フレームＦＭａｘ２のフレームサイズがｍ以下であった場合はフレーム全体を送出対象データとする。
【００６２】
ステップＳ２１４にて送出対象フレームサイズがｍを超過していた場合、ステップＳ２１５にすすみ、送出対象フレームのうちｍだけのデータを送出対象データとする。
【００６３】
Ｓ２０８〜Ｓ２１１の処理により、優先度最大のストリームＳＭａｘのバッファ空き容量がなく送出できない場合、バッファに空きが生じるまでの時間に優先度の低いストリームを送るため、優先度の高いストリームが優先度の低いストリームの送出を阻害することがなく、効率的に送出を行うことができる。またこの場合、優先度の低いストリームの送出するデータサイズに制限を設け、優先度最大のストリームＳＭａｘのバッファに空きが生じるまでの時間Ｔｒｅｍｏｖｅしか送出を行わないため、優先度の低いストリームの送出により優先度最大のストリームＳＭａｘの送出が阻害される事も抑制される。
【００６４】
ステップＳ２１６では、各ストリームの受信側バッファの蓄積量を求める。このフローチャートの動作開始時の時刻をＴとすると、ストリームｎの受信バッファの蓄積量Ｂｓｔｏｒｅｎ（Ｔ）は以下の式で求められる。
【００６５】
【数６】
2017017606.tif 000008
【００６６】
Ｂｓｅｎｔｎ（Ｔ）は、このフローチャートの動作開始時の時刻Ｔにおいて送出完了したストリームｎのデータの総和に、フローチャートの動作にて特定した送出対象データサイズを加算した値である。Ｂｒｅｍｏｖｅｄｎ（Ｔ）は、このフローチャートの動作開始時の時刻において受信側バッファから引き抜かれたデータ量の総和である。これは、時刻Ｔよりも前の目標伝送完了時刻を持つ全てのフレームデータのデータ量の総和に等しい。
【００６７】
以上のフローチャートの動作により、各ストリームの各フレームの優先度に基づいて多重化と伝送が行われる。上述したように、図２（ｄ）は、本実施の形態１に係るメディアストリーム配信装置を使用して図２（ａ）のような各ストリームを多重化した場合の多重ストリームの概念を示すものである。各フレームは、目標伝送完了時刻が早いものから順に多重化されている。また、フレームサイズが大きいフレーム、例えばフレーム２−１については受信側バッファの空き容量がフレーム２−１の符号量分空いていなかったため、３つに分割して送信されている。
【００６８】
本発明に係るメディアストリーム配信装置によれば、各ストリームの各フレームの目標伝送完了時刻を導出し、目標伝送完了時刻が最も近いストリームのフレームを優先的に送出することで受信側バッファのアンダーフローの発生を抑制するとともに、受信側バッファ蓄積量に応じて送出するデータの量を制御することで受信側バッファのオーバーフローの発生を抑制し、かつ、複数のストリームをレート平滑化して送出することができる。
【００６９】
以上のように、本発明に係るメディアストリーム配信装置では、複数のストリームを伝送路１５の負荷を抑制しながら、受信側バッファのバッファ破綻を発生させることなく、低処理負荷で多重化伝送を行うことが可能である。
【００７０】
なお、本発明の動画像配信装置１の伝送完了時刻出力部１１、ストリーム解析部１２、ストリーム読出部１３、ストリーム多重化部１４は、図５に示したような構成において、ＣＰＵ２３がＲＯＭ２２に記憶されたプログラムを実行し、各データをＲＡＭ２１に記憶あるいはＲＡＭ２１から読みだすことにより実現してもよい。この場合、動画配信装置１は、複数のストリームを一時的にストリームメモリ１０にあたるＲＡＭ２１に保存し、所定の動作が記憶されたＲＯＭ２２とその処理をおこなうＣＰＵ２３と、多重化ストリームのデータを伝送路に送出する出力回路２４によって伝送完了時刻出力部１１、ストリーム解析部１２、ストリーム読出部１３、ストリーム多重化部１４を構成し、複数ストリームの多重化を実現する。
また、伝送完了時刻出力部１１、ストリーム解析部１２、ストリーム読出部１３、ストリーム多重化部１４を、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGA、またはこれらを組み合わせたもので実現してもよい。また、複数のプロセッサおよび複数のメモリが連携して上記機能を実行してもよい。
【符号の説明】
【００７１】
１．動画像配信装置
２．ストレージ
１０．ストリームメモリ
１１．伝送完了時刻出力部
１２．ストリーム解析部
１３．ストリーム読出部
１４．ストリーム多重化伝送部
１５．伝送路
２１．ＲＡＭ
２２．ＲＯＭ
２３．ＣＰＵ
２４．出力回路
【図１】
2017017606.tif 000009
【図２】
2017017606.tif 000010
【図３】
2017017606.tif 000011
【図４】
2017017606.tif 000012
【図５】
2017017606.tif 000013