(57)【特許請求の範囲】
【請求項１】
受信したストリームデータを格納するための受信バッファと、
前記受信バッファに格納されたストリームデータを再生するための再生手段と、
次に受信するストリームデータを格納する前記受信バッファ内の位置を示す格納ポインタと、前記再生手段により、次に再生される前記受信バッファ内の位置を示す再生ポインタとの所定時間内における差分の最大値及び最小値を求める差分算出手段と、
前記差分算出手段により算出された最大値及び最小値のいずれか１つを使用して、前記受信バッファのサイズを求め、前記再生手段によりストリームデータを再生する際に、前記受信バッファのサイズを求められたサイズに変更する手段とを具備することを特徴とする受信バッファ制御装置。
【請求項２】
前記受信バッファのサイズは、Ｎは定数、Ｘはストリームデータのビットレート、Ｍは再生ポインタの受信バッファサイズに対する割合（％）及びＤを差分の最大値及び最小値のうちＮ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜との差が大きい方の値とした場合に、次式
（受信バッファのサイズ）＝Ｎ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜（bit)
にしたがって求められることを特徴とする請求項１記載の受信バッファ制御装置。
【請求項３】
受信したストリームデータを格納するための受信バッファと、
前記受信バッファに格納されたストリームデータを再生するための再生手段と、
次に受信するストリームデータを格納する前記受信バッファ内の位置を示す格納ポインタと、前記再生手段により、次に再生される前記受信バッファ内の位置を示す再生ポインタとの所定時間内における差分の最大値及び最小値を求める差分算出手段と、
前記差分算出手段により算出された最大値及び最小値のいずれか１つを使用して、一定時間内における前記格納ポインタと、前記再生ポインタとの誤差を求め、この求められた誤差に基づいて前記受信バッファのサイズを変更する手段と
を具備することを特徴とする受信バッファ制御装置。
【請求項４】
前記誤差は、Ｎは定数、Ｘはストリームデータのビットレート、Ｍは再生ポインタの受信バッファサイズに対する割合（％）、Ｔを一定時間及びＤを差分の最大値及び最小値のうちＮ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜との差が大きい方の値とした場合に、次式
（誤差）＝Ｘ＊（｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜）／Ｔ
にしたがって求められることを特徴とする請求項３記載の受信バッファ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、映像、音声等を配信するビデオサーバと接続するクライアントシステムにおいて、安定したストリーム再生を行なうことができ、かつ、クライアント設計時の労力を軽減し、また、汎用性のあるクライアントシステムの構築を可能とするような、ストリームデータの受信バッファ制御装置に関する。
【０００２】
【従来の技術】
映像、音声等の配信を行うビデオサーバより、ストリームデータをクライアントに送出し、クライアント側で再生（表示）を行う、いわゆるＶＯＤ（ビデオオンデマンド）のシステムにおいて、安定したストリームの再生を得るための重要な要素は、
（１）データ送出の安定性（サーバ側）
（２）通信媒体の信頼性と帯域幅
（３）データ受信および再生能力（クライアント側）
などがあげられる。ここでは、（３）について注目する。
【０００３】
一般的なＶＯＤシステムでは、映像、音声等のストリームデータを受信するクライアントは、再生方法がソフトウェアによるもの、またはハードウェアによるもののどちらの場合でも、データ受信バッファを保持している。通信媒体を通して送られたストリームを、一旦、このデータ受信バッファに格納し、その後、バッファ内のデータに適切な処理を施し再生を行う。
【０００４】
今、仮にビデオサーバからの送出は安定しており、ストリームの通信媒体としてＬＡＮ等のネットワークを使用しているとする。このとき、クライアントで安定した再生を行なうためには、ネットワーク経由特有のストリームデータのゆらぎや遅延を吸収する必要がある。また、ストリームの再生ビットレートが、サーバ側とクライアント側のクロックの精度の違いにより誤差が生じ、少しづつずれを生じていく場合もあり、これに関しても調整が必要である。ここで技術的に重要な要素となるのが、クライアント側のストリームデータ受信用バッファの大きさである。
【０００５】
例えば、そのデータ受信用のバッファサイズが小さすぎる場合、通信のゆれや再生ビットレートのずれ等の不安定性により、バッファオーバーフローおよびアンダーフローが頻発してしまい、ストリームの再生は極めて不安定になる。また、逆にデータ受信用のバッファサイズを大きくしすぎた場合、バッファのオーバーフローやアンダーフローは減少するが、クライアントシステムのメモリ使用量が大幅に増えたことで、ストリーム再生処理自体やその他の処理に負荷がかかり、クライアントシステム全体の負荷が上がり、結果的にストリーム再生が不安定になってしまう。
【０００６】
従来は、このような問題を回避するために、データ受信用のバッファサイズは、ＶＯＤシステム設計時において、クライアントシステム設計者が通信媒体やクライアントの性能を分析し、全体のバランスを考慮して、あらかじめ適切な値を固定的に割り当てていた。
【０００７】
【発明が解決しようとする課題】
しかしながら、多様化するＶＯＤシステムの現状において、この方法では、それぞれのクライアントに最善に対応するために設計者が分析に多大な労力を払う必要があり、また、データ受信用のバッファサイズが固定的であるので、システム構築の柔軟性に欠けている。このように、従来方式では、汎用的なクライアントシステム構築は困難であった。
【０００８】
上述したように、映像、音声等を配信するビデオサーバと接続するクライアントシステムにおいて、安定したストリーム再生を実現するためのストリーム受信用のバッファサイズを割り当てる際に、従来の方法では、システム設計時に設計者がクライアント毎に性能を分析し、適切なバッファサイズを固定的に設定していた。そのために、より適したクライアントシステムの構築には手間がかかり、また、汎用的なクライアントシステムの構築が困難であるという問題があった。
【０００９】
本発明では、上記の点に鑑み、映像、音声等を配信するビデオサーバと接続するクライアントシステムにおいて、安定したストリーム再生機能を実現しつつ、かつ、クライアント設計時の労力を軽減し、また、汎用性のあるクライアントシステムを構築可能とするようなストリームデータ受信バッファ制御装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
したがって、まず、本発明の第１の発明によれば、受信したストリームデータを格納するための受信バッファと、
前記受信バッファに格納されたストリームデータを再生するための再生手段と、
次に受信するストリームデータを格納する前記受信バッファ内の位置を示す格納ポインタと、前記再生手段により、次に再生される前記受信バッファ内の位置を示す再生ポインタとの所定時間内における差分の最大値及び最小値を求める差分算出手段と、
前記差分算出手段により算出された最大値及び最小値のいずれか１つを使用して、前記受信バッファのサイズを求め、前記再生手段によりストリームデータを再生する際に、前記受信バッファのサイズを求められたサイズに変更する手段とを具備することを特徴とする受信バッファ制御装置、である。
【００１１】
このような受信バッファ制御装置によれば、差分算出手段により格納ポインタと再生ポインタとの所定時間内における差分の最大値及び最小値のいずれか１つを使用して、オーバフロー又はアンダーフローしないような受信バッファのサイズを求めることができ、この求められた受信バッファのサイズに受信バッファのサイズを変更するので、安定してストリームデータを再生することができる。
【００１２】
また、第２の発明によれば、第１の発明において、前記受信バッファのサイズは、Ｎは定数、Ｘはストリームデータのビットレート、Ｍは再生ポインタの受信バッファサイズに対する割合（％）及びＤを差分の最大値及び最小値のうちＮ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜との差が大きい方の値とした場合に、次式
（受信バッファのサイズ）＝Ｎ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜（bit)
にしたがって求められることを特徴とする受信バッファ制御装置、である。
【００１３】
このような受信バッファ制御装置によれば、所定の式にしたがって、受信バッファのサイズを求めることができる。
【００１４】
さらに、第３の発明によれば、受信したストリームデータを格納するための受信バッファと、
前記受信バッファに格納されたストリームデータを再生するための再生手段と、
次に受信するストリームデータを格納する前記受信バッファ内の位置を示す格納ポインタと、前記再生手段により、次に再生される前記受信バッファ内の位置を示す再生ポインタとの所定時間内における差分の最大値及び最小値を求める差分算出手段と、
前記差分算出手段により算出された最大値及び最小値のいずれか１つを使用して、一定時間内における前記格納ポインタと、前記再生ポインタとの誤差を求め、この求められた誤差に基づいて前記受信バッファのサイズを変更する手段と
を具備することを特徴とする受信バッファ制御装置、である。
【００１５】
このような受信バッファ制御装置によれば、差分算出手段により算出された最大値及び最小値のいずれか１つを使用して、一定時間内における前記格納ポインタと、前記再生ポインタとの誤差を求め、この求められた誤差に基づいて受信バッファのサイズを変更するので、サーバとクライアントのクロック精度の違いを吸収し、かつメモリの使用に無駄の少ない、ストリーム再生が可能となる。
【００１６】
さらに、第４の発明によれば、第３の発明において、前記誤差は、Ｎは定数、Ｘはストリームデータのビットレート、Ｍは再生ポインタの受信バッファサイズに対する割合（％）、Ｔを一定時間及びＤを差分の最大値及び最小値のうちＮ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜との差が大きい方の値とした場合に、次式
（誤差）＝Ｘ＊（｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜）／Ｔ
にしたがって求められることを特徴とする受信バッファ制御装置である。
【００１７】
このような受信バッファ制御装置によれば、所定の式にしたがって、受信バッファのサイズを求めることができる。
【００１８】
【発明の実施の形態】
図１は、本発明の受信バッファ制御装置が使用されるＶＯＤシステムを示す図である。
【００１９】
このＶＯＤシステムにおいては、ＭＰＥＧ等で圧縮された映像、音声のデータをストリームデータとして送信するビデオサーバ１、および送信されたストリームデータをデコードし再生するクライアント３ａ〜３ｃが、ネットワーク２を介して接続されている。
【００２０】
ここで仮にサーバからのストリーム送出は安定しており、また、クライアントはサーバのクロックに同期してデコード（再生）を行うものとする。この場合、安定したストリーム再生を阻害するものは主にネットワークの通信ゆらぎである。
【００２１】
本発明の第１の実施の形態の受信バッファ制御装置は、このような環境において、ストリームデータを安定して再生するものである。
【００２２】
図２は、本発明の第１の実施の形態に係る受信バッファ制御装置を示す図である。この受信バッファ制御装置は、図１に示したクライアント内に設けられるものである。
【００２３】
同図に示すように、本実施の形態の受信バッファ制御装置は、ストリームデータ受信バッファ１０１、受信バッファ格納部１０２、格納ポインタ１０３、再生ポインタ１０４、バッファ内ポインタ管理部１０５及び再生部１０６を具備する。
【００２４】
受信バッファ１０１は、受信したストリームデータを一時的に格納する。
【００２５】
受信バッファ格納部１０２は、受信したデータをバッファへ格納する。
【００２６】
格納ポインタ（ＲＥＣＰ）１０３は、次に受信するストリームデータを格納すべきバッファ内位置を示す。
【００２７】
再生ポインタ（ＰＬＡＹＰ）１０４は、次に再生すべきストリームデータのバッファ内位置を示す。
【００２８】
バッファ内ポインタ管理手段１０５は、格納ポインタ（ＲＥＣＰ）と、再生ポインタ（ＰＬＡＹＰ）の位置を管理する。
【００２９】
再生部１０６は、受信したデータをデコード（再生）する。
【００３０】
受信バッファ管理部１０７は、受信バッファのサイズを管理する。
【００３１】
次に、サーバから再生ビットレートＸbps のストリームデータがクライアントに送信される場合の動作の流れを述べる。クライアントはまず、受信バッファ管理部１０７により、そのストリームのビットレートのＮ倍のバッファを確保し（Ｎ＊Ｘbit ）、データの受信を始める。
【００３２】
次に、データを受信すると、受信バッファ格納部１０２が受信バッファ１０１へデータを格納し、受信したデータ量だけバッファ内でＲＥＣＰを進める。このようにデータの受信を繰り返していき、ＲＥＣＰが受信バッファサイズのＭ％（Ｎ＊Ｘ＊Ｍ／１００bit ）に達した場合、次に再生部１０６が受信バッファ１０１の先頭から再生処理を開始する。
【００３３】
また、再生部１０６は再生したデータ量だけバッファ内でＰＬＡＹＰを進める。ただし、ＲＥＣＰとＰＬＡＹＰは、受信バッファのサイズを超えることはなく、受信バッファの最後まで到達したら、バッファの先頭（０）にリセットし、そこからデータの格納または再生を行なうように制御する。
【００３４】
以上は基本的な動作であるが、もしこのときネットワーク上でのストリームの通信ゆらぎがないとすれば、常に受信バッファ内のデータは、バッファサイズの（１００−Ｍ）％程度の余裕を残して安定して再生されるはずである。
【００３５】
ところが、ネットワーク上を流れるデータは頻繁に滞ったり、また、突発的に大量に流れたりする場合があるため、受信バッファ内でオーバーフロー（ＲＥＣＰがＰＬＡＹＰに追い越す）または、アンダーフロー（ＰＬＡＹＰがＲＥＣＰを追い越す）が発生する可能性がある。
【００３６】
しかもこの発生頻度はストリームの長さ（再生時間）に比例して増す。もし受信バッファにあらかじめ膨大な量を確保しておけば発生の頻度は減らすことは可能である。しかしながら、受信バッファを膨大にしただけクライアントは資源を大量に消費することとなり、負荷はあがり、メモリ使用効率も悪化する。
【００３７】
そこで、本実施の形態においては、上記基本動作に加え、次のような動作を行うように制御する。
【００３８】
すなわち、上記した基本動作にしたがってストリームデータを受信／再生している間に、バッファ内ポインタ管理部１０５は、常にＲＥＣＰとＰＬＡＹＰの距離（差分）を監視していて、その最大値Ｄmax(bit)と最小値Ｄmin(bit)をファイルあるいはメモリ等に記録しておく。
【００３９】
そして、次にストリームを再生する際には、まず、受信バッファ管理部１０７が、それらの値を用い、データ受信バッファサイズを次式で求める。
【００４０】
Ｎ＊Ｘ＋｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜（bit)  …（１）
ここで、Ｄは、Ｄmax とＤmin のうち（Ｎ＊Ｘ＊Ｍ／１００）との差が大きい方の値をとる（｜｜内は絶対値）。
【００４１】
そして、上式の｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜の値が閾値Ａを超えていたときに限り、ここで求めた受信バッファサイズを採用し、再生を行う（閾値Ａは例えばＮ＊Ｘ／２など）。
【００４２】
つまり、ここでは上式の｜｜の部分が通信のゆれであると定義し、大きくゆれたときだけ受信バッファを増やしてから、ストリームの受信／再生を行うようにするという方式である。これにより受信バッファが適切な大きさになると、｜｜の値が閾値Ａを超えることはほとんどなくなり、安定する。
【００４３】
このように受信バッファサイズを制御することによって、バッファのオーバーフローやアンダーフローの回数を低減させ、より安定したストリームの再生を自動的に得られるようになる。また、最初のＮの値を小さく設定しておくことで、その実行環境（ネットワーク状況）に、より適した受信バッファサイズを確保することも可能であり、クライアントの資源利用効率も向上する。
【００４４】
したがって、本実施の形態の受信バッファ管理装置によれば、クライアントが自動的にストリーム受信バッファサイズを管理することにより、ネットワークを用いたＶＯＤシステムにおいて、クライアントの設計に手間をかけずに、より環境に適した、安定性の高いストリーム再生を行なえる。
【００４５】
次に、本発明の第２の実施の形態について説明する。
【００４６】
本実施の形態においては、図１におけるＶＯＤシステムにおいて、ビデオサーバのストリーム送出は安定しており、ネットワークの帯域は十分でゆらぎはないが、クライアントとサーバは非同期にそれぞれのクロックで完全に独立に動作していると仮定する。
【００４７】
図３は、本発明の第２の実施の形態に係る受信バッファ制御装置を示す図である。なお、図２と同一部分には、同一符号を付し、その説明を省略し、ここでは異なる部分についてのみ述べる。
【００４８】
すなわち、本実施の形態の受信バッファ制御装置と、上述の第１の実施の形態の受信バッファ制御装置と異なる点は、誤差検出部２０１を設けたことにある。
【００４９】
以下、ビットレートＸbps のストリームデータをサーバから送出し、クライアントで受信／再生するさいの動作の流れを記す。
【００５０】
基本動作は第１の実施の形態と同じであるが、主に異なるのは、ストリーム受信／再生時の誤差検出部の働きである。
【００５１】
クライアントはまず、受信バッファ管理部１０７により、そのストリームのビットレートのＮ倍のバッファを確保し（Ｎ＊Ｘbit ）、データの受信を始める。
【００５２】
次に、受信バッファ格納部１０２が、受信バッファ１０１へデータを格納し、受信したデータ量だけバッファ内でＲＥＣＰを進める。これを繰り返していき、ＲＥＣＰが受信バッファサイズのＭ％（Ｎ＊Ｘ＊Ｍ／１００bit ）に達した場合、次に、再生部１０６が受信バッファ１０１の先頭から再生処理を開始する。
【００５３】
再生部１０６は、再生したデータ量だけバッファ内でＰＬＡＹＰを進める。このように受信データを再生中に、バッファ内ポインタ管理部１０５は、常にＲＥＣＰとＰＬＡＹＰの差分値を監視していて、その最大値Ｄmax(bit)と最小値Ｄmin(bit)をファイルあるいはメモリ等に記録しておく。
【００５４】
誤差検出部２０１は、ある一定時間Ｔ（秒）の再生が終わった時点で、記録された値とビットレートＸ、およびＭ等の値を用い、次の計算式により、一定時間Ｔでの誤差ＤＦを求める。この誤差ＤＦは、クライアントとサーバーとのクロック周期の相違に起因するＲＥＣＰとＰＬＡＹＰとのずれを意味するものである。
【００５５】
ＤＦ＝Ｘ＊（｜Ｎ＊Ｘ＊Ｍ／１００−Ｄ｜）／Ｔ  …（２）
ここで、Ｄは、Ｄmax とＤmin のうち（Ｎ＊Ｘ＊Ｍ／１００）との差が大きい方の値をとる。
【００５６】
求めた誤差ＤＦは、このストリームを再生したさい一定時間に生ずるクロック精度の違いによる誤差であるので、いま、ストリーム全体の再生時間をＥＴとすると、完全に再生を終えたときの最終的な誤差は、
ＤＦ＊ＥＴ／Ｔ（bit ）  …（３）
となる。
【００５７】
つまり、最初にこの式の値の分だけバッファを確保しておけば、オーバーフローあるいはアンダーフローすることはない。そこで、次のストリーム再生時には、受信バッファ管理部１０７が、受信バッファサイズを上式により求めて確保し、ストリームの再生を行う。
【００５８】
このように受信バッファサイズを制御することで、サーバとクライアントのクロック精度の違いを吸収し、かつメモリの使用に無駄の少ない、ストリーム再生が可能となる。
【００５９】
したがって、本実施の形態の受信バッファ管理装置によれば、クライアントが自動的に受信バッファサイズを管理することで、サーバとクライアントのクロック精度の違いを気にせずにすみ、容易に汎用性の高い、効率的なクライアントを構築できる。また、より安定したストリームの再生も可能となる。
【００６０】
【発明の効果】
以上詳記したように、本発明によれば、映像、音声等を配信するビデオサーバと接続するクライアントシステムにおいて、安定したストリーム再生機能を実現しつつ、かつ、クライアント設計時の労力を軽減し、また、汎用性のあるクライアントシステムを構築できる。
【図面の簡単な説明】
【図１】本発明の受信バッファ制御装置が使用されるＶＯＤシステムを示す図。
【図２】本発明の第１の実施の形態に係る受信バッファ制御装置を示す図。
【図３】本発明の第２の実施の形態に係る受信バッファ制御装置を示す図。
【符号の説明】
１…ＭＰＥＧ等のデータを送出するビデオサーバ、
２…ネットワーク、
３ａ〜３ｃ…クライアント、
１０１…ストリームデータ受信バッファ、
１０２…受信バッファ格納部、
１０３…格納ポインタ（ＲＥＣＰ）、
１０４…再生ポインタ（ＰＬＡＹＰ）、
１０５…バッファ内ポインタ管理部、
１０６…再生部、
１０７…受信バッファ管理部、
２０１…誤差検出部。
【図１】
0003842481.tif 000002
【図２】
0003842481.tif 000003
【図３】
0003842481.tif 000004