(57)【要約】【課題】  ＴＣＰなどの通信プロトコルで用いられるＡｃｋ信号を効果的に用いて、ＴＣＰなどのハンドシェークメカニズム上で特殊再生を実現することができるデータ伝送装置を提供する。【解決手段】  特殊再生要求を入力する入力手段１４と、データを記憶するデータ記憶手段と１５、データ記憶手段１５に記憶されたデータを特殊再生要求に従って読み出し、データをエンコードするエンコード手段と、エンコード手段で得たエンコードデータを通信回線を介してデータ受信側１０１に送信する送信手段１３とを具備し、送信手段１３は、ＧＯＰ毎にパケットを伝送するものであって、ＧＯＰの先頭パケットを送信した後予め設定した一定時間が経過したタイミングで、次に送信すべきＧＯＰの先頭パケットを送信する。【選択図】  図１
2005110052.tif 000002
【特許請求の範囲】
【請求項１】
特殊再生要求を入力する入力手段と、
データを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータを前記特殊再生要求に従って読み出し、前記データをエンコードするエンコード手段と、
前記エンコード手段で得たエンコードデータを通信回線を介してデータ受信側に送信する送信手段とを具備し、
前記送信手段は、ＧＯＰ毎にパケットを伝送するものであって、前記ＧＯＰの先頭パケットを送信した後予め設定した一定時間が経過したタイミングで、次に送信すべきＧＯＰの先頭パケットを送信することを特徴とするデータ伝送装置。
【請求項２】
前記送信手段は、前記特殊再生要求が倍速再生の場合、その倍速に応じて前記ＧＯＰをスキップして送信することを特徴とする請求項１記載のデータ伝送装置。
【請求項３】
所定の符号化単位毎にＧＯＰ毎にパケット化したデータを受信側に伝送する際のデータ伝送方法において、
前記受信側にて通常再生を行うときには、前記通常再生に使用する前記ＧＯＰ毎にパケット化したデータを、受信側からのＡｃｋを受信するタイミングに応じて送信し、
前記受信側にて特殊再生を行うときには、前記特殊再生に使用する前記ＧＯＰの先頭パケットを送信した後予め設定した一定時間が経過したタイミングで、次に送信すべきＧＯＰの先頭パケットを送信することを特徴とするデータ伝送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル化されたコンテンツデータを伝送するデータ伝送装置及びデータ伝送方法及び受信装置に関する。
【背景技術】
【０００２】
ビデオデータやオーディオデータ等を圧縮して蓄積し、伝送媒体を介して配信し、データ受信装置にて復号して再生するデータ配信システムが考えられている。
【０００３】
このデータ配信システムにおいても、はや送りやコマ送り或いはスロー再生などの特殊再生を行う技術が開発されている。例えば、特開２００１−３５９０７１号公報や特開２００２−７７８１１号公報に開示されているように、データ伝送装置側でコンテンツデータを特殊再生用のデータに変換し、受信装置側では通常の再生を行う処理によって特殊再生を実現できるようにしている。こうすることで受信装置では特殊再生用の特別な機能を必要とせず特殊再生を実現することを可能としている。
【特許文献１】特開２００１−３５９０７１号公報
【特許文献２】特開２００２−７７８１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように従来の特殊再生を実現する方法では、データ伝送装置側でコンテンツデータを特殊再生用のデータに変換し、受信装置側では通常の再生を行う処理によって特殊再生を実現できるようにしている。
【０００５】
この方法では、送信側で、受信側が通常再生と同様の処理で特殊再生画像が再生できるように特殊再生用のデータに変換してストリームを発生しているので、送信側から受信側にデータを伝送するときに、データ伝送がＴＣＰ／ＩＰなどのようなＡｃｋを用いたハンドシェークを用いた場合、送信側、受信側共に、このハンドシェークの処理については特殊再生と通常再生で同じ処理をすればすむようになっている反面、送信側では受信側でのＭＰＥＧデコード処理におけるバッファモデルが破綻しないような複雑な制御を行う必要があった。
【０００６】
また、有料コンテンツサーバーのように、送信側のデータ伝送装置の数が少なく、受信側である受信装置は数が多く安価でなければならない場合は、数少ないデータ伝送装置でこの複雑な処理を負担し、数が多い受信装置で複雑な処理をさけられるのでメリットが出る。しかしながら家庭内のネットワークに用いる場合のように、それぞれの機器が送信側となり得るようなケースでは、従来の方式のように送信側において特殊再生用のデータに変換するという複雑な構成を必要とせずもっと処理が簡単なものが望まれる。
【０００７】
そこで、本発明では、ＴＣＰなどの通信プロトコルで用いられるＡｃｋ信号を効果的に用いて、ＴＣＰなどのハンドシェークメカニズム上で特殊再生を実現することができるデータ伝送装置及びデータ伝送方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、特殊再生要求を入力する入力手段と、
データを記憶するデータ記憶手段と、
前記データ記憶手段に記憶されたデータを前記特殊再生要求に従って読み出し、前記データをエンコードするエンコード手段と、
前記エンコード手段で得たエンコードデータを通信回線を介してデータ受信側に送信する送信手段とを具備し、
前記送信手段は、ＧＯＰ毎にパケットを伝送するものであって、前記ＧＯＰの先頭パケットを送信した後予め設定した一定時間が経過したタイミングで、次に送信すべきＧＯＰの先頭パケットを送信することを特徴とするデータ伝送装置を提供する。
【０００９】
このとき前記送信手段は、前記特殊再生要求が倍速再生の場合、その倍速に応じて前記ＧＯＰをスキップして送信することができる。
【００１０】
また、所定の符号化単位毎にＧＯＰ毎にパケット化したデータを受信側に伝送する際のデータ伝送方法において、
前記受信側にて通常再生を行うときには、前記通常再生に使用する前記ＧＯＰ毎にパケット化したデータを、受信側からのＡｃｋを受信するタイミングに応じて送信し、
前記受信側にて特殊再生を行うときには、前記特殊再生に使用する前記ＧＯＰの先頭パケットを送信した後予め設定した一定時間が経過したタイミングで、次に送信すべきＧＯＰの先頭パケットを送信することを特徴とするデータ伝送方法を提供する。
【発明の効果】
【００１１】
本発明では、データ伝送装置の構造が簡単で、受信側での特殊再生を実現できるデータ送信装置、データ送信方法を提供できる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しながら本実施例について説明する。
【００１３】
図１は、本発明に係るデータ伝送システムを説明するためのブロック構成図である。
【００１４】
図１に示すように、伝送装置１００は、装置全体の処理機能を管理するＣＰＵ１１と、データを一時的に蓄積するバッファＲＡＭ１２と、データを伝送路４２０に伝送する伝送モジュール１３と、コンテンツデータを蓄積するＨＤＤ２０と、ユーザからの要求を入力するコントローラ１４とを有し、これらがバスラインに接続されている。また、コントローラ１４にはコンテンツデータを蓄積するＨＤＤ１５が接続されている。
【００１５】
ＣＰＵ１１はＨＤＤ１５からコントローラ１４を通してコンテンツデータを読み出し、バッファＲＡＭに蓄え、この蓄えたデータを伝送モジュール１３を通してＩＰパケット伝送路４２０上を伝送する。ここで伝送モジュール１３には、図示しないＭＰＥＧエンコーダを有している。ここではコントローラに接続されたＨＤＤ１５をからデータを読み出したが、もちろんバスラインに接続されているＨＤＤ２０からデータを読み出しても良い。
【００１６】
一方受信装置１０１は、装置全体の処理機能を管理するＣＰＵ１６と、データを一時的に蓄積するバッファＲＡＭ１７と、データを伝送路４２０から受け取る伝送モジュール１８と、ＭＰＥＧエンコードされたデータをデコードするＭＰＥＧデコーダ１９とを有し、これらがバスラインに接続されている。符号４２２はディスプレイなどに送信するための端子を示す。
【００１７】
ＣＰＵ１６は伝送モジュール１８で受信したデータをバッファＲＡＭ１７に一時的に格納し、この格納したデータをＭＰＥＧデコーダ１９に送り込んでコンテンツの再生を行う。再生されたコンテンツデータは端子４２２からディスプレーなどに転送される。
【００１８】
図３は伝送側１００のＣＰＵ１１と受信側１０１のＣＰＵ１６が実行するソフトウェアの階層図を示したものである。
【００１９】
図３中、符号４１１、４１２、４１３、４１７、４０３、４０４、４０５、４０９はソフトウェアモジュールを示す。これらのソフトウェアモジュール４１１、４１２、４１３、４１７、４０３、４０４、４０５、４０９は、送信側１００のＣＰＵ１１、受信側１０１のＣＰＵ１６で実行されるが、同等の処理をＣＰＵ１１、１６以外に追加したＣＰＵや論理回路などで実行してもよい。
【００２０】
次に、図１及び図３を用いて伝送装置１００及び受信装置１０１を用いたシステムで、通常速度再生を行う場合について説明する。
【００２１】
先ず、送信側である伝送装置１００のＨＤＤ１５から送出されたデータ４１９は、データ読み込みＡＶパケット送出モジュール４１１によってコントローラ１４を通して読み出されてバッファＲＡＭ１４内のバッファ領域４１４に一時的に格納される。
【００２２】
図７のフローチャートを用いて説明すると、先ず、バッファ領域４１４に空きができたか判定する（Ｓ７０１）。バッファ領域４１４に空きがなければ元にもどり、空きができるまで待つ。バッファ領域４１４に空きがあれば、ＨＤＤ１５からデータを読み込んでバッファ領域４１４に格納し（Ｓ７０２）、ライトポインタを進める（Ｓ７０３）。
【００２３】
次に、伝送装置１００の伝送モジュール１３内の入力ＩＰパケットの多重送出モジュール４１７はバッファ領域４１４、４１５、４１６から読み出したデータを多重化してＩＰパケット伝送路４２０上にＩＰプロトコルを用いて送り出す。
【００２４】
図８のフローチャートを用いて説明すると、先ず、バッファ領域４１４にデータがあるか判定する（Ｓ８０１）。バッファ領域４１４にデータがなければ元にもどり、データがあるまで待つ。バッファ領域４１４にデータがあれば、バッファ領域４１４からデータを読んでＩＰパケットを送出し（Ｓ８０２）、リードポインタを進める（Ｓ８０３）。
【００２５】
次に、受信側１０１からＡｃｋが返ってきたか判定し（Ｓ８０４）、Ａｃｋが返っていなければ元にもどる。返ってくれば終了する。
【００２６】
次に、受信側である受信装置１０１では、伝送モジュール１８内の入力ＩＰパケットの受信振り分けモジュール４０９が伝送路４２０からＩＰプロトコルを用いて伝送されたデータのヘッダ領域を検出し、バッファＲＡＭ１７内のバッファ領域４０６、４０７、４０８に振り分けて格納する。
【００２７】
次に、ＡＶパケット受け渡しモジュール４０３はバッファ領域４０６にデータがたまると、そこからデータを読み出し、ＭＰＥＧデコーダ１９内のＶＢＶバッファ４０２に空きが十分有ればそこに書き込む。
【００２８】
これとは別の方法として、ＡＶパケットの送出タイミングを示す情報がある場合には、参照カウンタ４１０を調べ、そのカウンタの値とタイミング情報が同一の値になったときにＡＶパケットをＶＢＶバッファ４０２に書き込むという方法がある。
【００２９】
ＭＰＥＧデコーダ１９はその中に備えるＳＴＣカウンタの値に従って入力データをデコードしていく。
【００３０】
ＭＰＥＧデコーダ１９内のＶＢＶバッファ４０２に空きが無くなってくると、ＡＶパケット受け渡しモジュール４０３はバッファ領域４０６からの読み出しを行わない。入力ＩＰパケットの受信振り分けモジュール４０９は、伝送路４２０からのデータを受信できた場合にはＩＰプロトコルで言うＡｃｋデータを送信側１００に送り返し、受信できない場合には送り返さない。
【００３１】
送信側である伝送装置１００は、Ａｃｋデータが返ってこない場合は、しばらくしてからデータの再送信を行うことになっている。受信装置１０１のバッファＲＡＭ１７内のバッファ領域４０６に空きがない状態でデータが伝送路４２０上に伝送されると、入力ＩＰパケットの振り分けモジュール４０９はバッファ領域４０６に書き込めず、データを欠落させてしまう。
【００３２】
その結果、Ａｃｋデータを送信側１００に送り返すことはない。しばらくして、Ａｃｋデータを受け取らない送信側１００がデータを再送信して、そのとき、バッファ領域４０６に空きがあって書き込むことが出来れば、受信側１０１はＡｃｋデータを返す。
【００３３】
しかし、すぐ次のパケットが伝送されてしまってはもう受信できそうにない場合は次に送られるデータ量が受け入れられる状態になってからＡｃｋを返してもよい。
【００３４】
図２は、受信側１０１のバッファ領域１０６のライトポインタとリードポインタの移動する様子を示す図である。
【００３５】
図２に示すように、入力ＩＰパケットの受信振り分けモジュール４０９がバッファ領域４０６にデータを格納することによってライトポインタは０からスタートし、符号４１２に示す矢印のように進んでいく（ａ）。ここで図２の長方形で示す縦軸がアドレスを示し、横軸がビット幅を示す。
【００３６】
その間、ＡＶパケット受け渡しモジュール４０３がＶＢＶバッファ４０２に書き込むことで図２中符号４１３に示す矢印のようにリードポインタが進むが、バッファ領域４０６に書き込まれるスピードが速いために、ライトポインタはリードポインタに追いつく（ｂ）。
【００３７】
このとき、送信側１００がデータを送ると、受信側１０１はデータをバッファ領域４０６に書き込めずにＡｃｋデータを返さない。
【００３８】
その後、またＡＶパケット受け渡しモジュール４０３がＶＢＶバッファ４０２に書き込むことで図２中符号４１３で示す矢印のようにリードポインタが進む。すると、ライトポインタは符号４１２で示す矢印のように進む。このとき、Ａｃｋデータを返す（ｃ）（ｄ）。
【００３９】
このように、通常速度再生の場合は、受信装置１０１のＭＰＥＧデコーダ１９でのデコードスピードが作用して、または、参照カウンタ４１０を参照しながらＡＶパケットを受け渡しをすることによって、自動的に伝送路４２０上でのデータ伝送スピードが制御されることになる。
【００４０】
次に、図４を用いて、ディスク上のストリームのフォーマットの例を示す。
【００４１】
図４（ａ）は、タイムスタンプを用いないトランスポートストリームである。図４（ａ）に示すように、このトランスポートストリームは、ＴＳＰａｋｅｔ１、ＴＳＰａｋｅｔ２、ＴＳＰａｋｅｔ３・・・と流れている。
【００４２】
図４（ｂ）は、ＡＶパケットの送出タイミングを示す通常の１８８ｂｙｔｅのトランスポートストリームの頭に２７ＭＨｚでカウントするカウンターの値４ｂｙｔｅを付加したトランスポートストリームである。図４（ｂ）に示すように、このトランスポートストリームは、ＴＳＰａｋｅｔ１、ＴＳＰａｋｅｔ２、ＴＳＰａｋｅｔ３・・・の頭にヘッダＨが付加されて流れている。
【００４３】
図４（ｃ）は、通常の１８８ｂｙｔｅのトランスポートストリームとは別に、書くパケットのタイミングを示すタイムスタンプ情報をもつものである。図４（ｃ）に示すように、通常のトランスポートストリームＴＳＰａｃｋｅｔ１、ＴＳＰａｃｋｅｔ２、ＴＳＰａｃｋｅｔ３・・・とは別に、タイムスタンプ１、タイムスタンプ２、タイムスタンプ３・・・のデータが添付されている。
【００４４】
次に、図６を用いて通常再生と２倍速再生について説明する。
【００４５】
先ず、図６（ａ）に通常再生における通常のトランスポートストリームとＩＰ伝送路上を流れるデータの関係を示す。
【００４６】
各ＧＯＰ（ＧｒｏｕｐＯｆＰｉｃｔｕｒｅ）には参照フレーム（Ｉピクチャー）とその他のＢ、Ｐの１４ピクチャー、合計で３０ピクチャーがある。ＮＴＳＣの２９．９７Ｈｚのフレームレートでは１ＧＯＰは約０．５秒の長さの画像となる。ＭＰＥＧ圧縮ではピクチャー毎に一定のデータ量となるわけでないので、各ＧＯＰのデータ量や伝送時間はまちまちである。
【００４７】
図６（ａ）では、ＧＯＰ１、ＧＯＰ３が長く、ＧＯＰ２が短い例である。ＧＯＰ１とＧＯＰ３は０．５秒以上の長さとなっている。これをＩＰ伝送路で伝送すると、まず送り側１００がＩピクチャーの一部を送り、受信側１０１が受け取ると、Ａｃｋデータを返す。
【００４８】
それを受け取った送信側１００は残りのデータを送る。受信側１０１はバッファ領域４０６に空きがある限り受信してＡｃｋデータを送り返す。受信側１０１のバッファ領域４０６がいっぱいになってくるとＡｃｋデータを即座に送り返さず、バッファ領域４０６からデータがはけて次のデータが受け入れられそうになると、Ａｃｋを送り返す。Ａｃｋを受けた送信側１００は、次のデータを送信する。このようにして通常速度再生を実現する。
【００４９】
次に、早送りなどの特殊再生について説明する。
【００５０】
図６（ｂ）に早送り再生における通常のトランスポートストリームとＩＰ伝送路上を流れるデータの関係を示す。
【００５１】
早送りの場合は、ＧＯＰは通常ＧＯＰ１、ＧＯＰ２、ＧＯＰ３の順番で伝送するところをたとえば２倍速の場合はＧＯＰ１、ＧＯＰ３、ＧＯＰ５．．．とＧＯＰを一つごとスキップして伝送する。このとき、Ｉピクチャー、Ｐピクチャー及びＢピクチャーのすべてのピクチャーを伝送すると平均の長さ０．５秒をこえるＧＯＰがたまたま集まってしまうとビットレートをあげなくてはならず、そのあげるべき値が不明であるため、許容されるビットレートに収まらない可能性がある。
【００５２】
そこで、Ｉピクチャーのみ、あるいはＩピクチャーとＰピクチャーのみを伝送すればよい。また、各ＧＯＰで時間が不連続となることから、ＧＯＰの先頭にタイムベース不連続情報を挿入する。これには、ＭＰＥＧで規定されたＴｉｍｅｂａｓｅＤｉｓｃｏｎｔｉｎｕｉｔｙフラグをアクティブにしたパケットを挿入したり、ＰＣＲパケットを挿入したり、ＤＶＢ規格で定められるＤＩＴと呼ばれるテーブルを挿入することが考えられる。
【００５３】
図６（ｂ）ではＧＯＰ１にさきだって、タイムベース不連続情報を送出し、そのあとＩピクチャーを伝送する。そのあと、予め設定された時間０．５秒後には、次のＧＯＰつまりＧＯＰ３の先頭データを送出するが、その間にＧＯＰ１のＰピクチャーを、さらにＢピクチャーも伝送しきれるならば伝送する。
【００５４】
このようにＧＯＰ１のうち例えばＩピクチャーだけ伝送すると、受信側１０１がＩピクチャーを受信しきったときにＡｃｋが返ってくるが、そこで、すぐにはＧＯＰ３の先頭データを伝送しない。
【００５５】
受信側１０１は、タイムベース不連続情報を受けると、そのデータを受け取ったときにその後に来るストリーム中にあるＰＣＲの値に従って、それが新しい現在時刻として動作を開始する。
【００５６】
参照カウンタ４１８でのカウント値を参照することで、ＧＯＰ１のデータ伝送開始後０．５秒後、ＧＯＰ３のデータをタイムベース不連続情報に続いて伝送する。
【００５７】
以後、ＧＯＰ５についてはＧＯＰ３の伝送開始後０．５秒後に、というようにＧＯＰ５、７、９．．．についても同様にして伝送していく。
【００５８】
参照カウンタ４１８は２７ＭＨｚでカウントされており、０．５秒では１３．５Ｍ（Ｍは１００万）カウントする。ＧＯＰ１の伝送開始時点で参照カウンタ４１８が１３．５Ｍを示していた場合は、０．５秒後には２７Ｍの値になっている。つまり、参照カウンタ４１８が２７Ｍを示した時点でＧＯＰ３をタイムベース不連続情報に続いて伝送開始する。そして、参照カウンタ４１８が４０．５Ｍになった時点で、ＧＯＰ５を送出する。
【００５９】
図１１のフローチャートを用いて、この処理を説明すると、先ず、タイムベース不連続情報を含むＴＳパケットを作成する（Ｓ１１０１）。
【００６０】
次に、参照カウンタ４１８が所定に達したかどうか判定し（Ｓ１１０２）、所定値に達していない場合は元にもどって、所定値に達するまで待つ。参照カウンタ４１８が所定値に達するとディスクからＴＳパケットを読み込み（Ｓ１１０３）、ＴＳパケットをバッファに格納し（Ｓ１１０４）、ライトポインタを進める（Ｓ１１０５）。
【００６１】
受信側１０１は、予め設定された時間０．５秒ごとにタイムベース不連続情報と共にストリームを受信し、ＰＣＲの値に従ってそれが新しい現在時刻として動作を開始する。このとき、各ピクチャーの圧縮レートが異なることから、各ピクチャーのストリームの伝送開始時点と各ピクチャーのデコード後の表示時刻との間隔は各ピクチャー毎に変化する。従って、０．５秒ごとに送出しても、表示間隔は０．５秒間隔とならないこともある。
【００６２】
タイムベース不連続情報の送出は、省略することが出来る。受信側１０１がこれから特殊再生モードにはいることを知っていれば、特殊モードの間、送られてくるＧＯＰのたびに受信側１０１の参照カウンタやＭＰＥＧデコーダのＳＴＣカウンタをリセットしたりオフセットを付けて使用したり、無視するなどすることができる。
【００６３】
通常再生では０．５秒待たずとも、受信側からのＡｃｋ信号に従って送出していればよかったが、早送り再生などの特殊再生ではそれは出来ない。なぜなら、受信側１０１がＩピクチャーを受信した時点で送り返すＡｃｋに従っていれば、０．５秒よりもかなり早い時点でＡｃｋが返り、そのときＧＯＰ３をタイムベース不連続情報と共に出力してしまったのでは、受信側１０１が「０．５秒よりも早い時点」でつぎのＧＯＰ３のデコード、表示を開始してしまうため、伝送路上の伝送スピードで再生が実行されてしまい、予想もつかないようなスピードで再生されてしまうことになってしまう。しかも、Ｉピクチャーだけを伝送再生するため、圧縮レートが低く、通常ストリームに対して伝送路帯域を大幅に消費する。
【００６４】
図３中モジュール４０５は受信ストリームの記録モジュールである。
【００６５】
このモジュールはバッファ４０８にデータがたまるとバッファ４０８からデータを読んでディスク４２１に書き込む。受信データにタイムベース不連続情報があると、これもそのまま記録する。
【００６６】
図３中モジュール４０４はディスク４２１上のデータの編集モジュールである。ディスクに記録されたストリームを編集する。たとえば、１時間のコンテンツの中で、はじめから３０分の点から１０分カットする等の編集を行う。こうして編集されたストリームは、途中１０分のデータは無くなる。そして、再生するときにはこの１０分の時間分は詰めてデコーダや外部端子に出力されなければならない。このとき、１０分カットしたところにタイムベース不連続情報を入れる。こうすることで、再生時にタイムベースの不連続点があることが検出できる。
【００６７】
ＩＰプロトコルを用いた伝送路４２０を通ることによってリアルタイム性を失われるが、伝送路に流す前にパケットのタイミング情報を示すタイムスタンプをストリームと共に伝送し、受信側１０１でタイムスタンプを参照してその指し示す時刻でパケットを送出することで、元のリアルタイムのトランスポートストリームを再現することが出来る。
【００６８】
また、モジュール４０３では、タイムスタンプを用いないストリームの場合、図９（ａ）に示すフローに従い、ＶＢＶバッファ４０２に空きがあるかどうかを判定し（Ｓ９０１）、空きがなければ元にもどり、空きができるまで待つ。
【００６９】
ＶＢＶバッファ４０２に空きがあれば、バッファ４０６からデータを読んでＶＢＶバッファ４０２に書き込み（Ｓ９０３）、リードポインタを進める（Ｓ９０３）。タイムスタンプを用いたストリームの場合でも同様の処理でよい。
【００７０】
次に、図９（ｂ）を用いてフローを説明する。モジュール４０３では、タイムスタンプを用いたストリームの場合、受信側１０１でＶＢＶバッファ４０２の空き具合を見ながら送出するのではなく、参照カウンタ４１０を参照しながらバッファ４０６からの読み出しストリームを出力してもよい。
【００７１】
すなわち図９（ｂ）に示すように、先ず、バッファ領域４０６に時間不連続情報があれば、それに従って参照カウンタ４１０をプリセットする。
【００７２】
次に、参照カウンタ４１０の値が所定値に達したか判定し（Ｓ９０４）、所定値に達していなければ元にもどり所定値に達するまで待つ。参照カウンタ４１０の値が所定値に達した場合、バッファ領域４０６からデータを読み込んでデコーダ４０１のＶＢＶバッファ４０２に書き込み（Ｓ９０６）、リードポインタを進める。
【００７３】
また、図１６を用いてフローを説明する。モジュール４０３では、タイムスタンプを用いたストリームの場合、ＶＢＶバッファ４０２の空き具合を見ながら送出するのではなく、参照カウンタ４１０を参照しながらディスク４２１からストリームを読み出して出力してもよい。
【００７４】
すなわち図１６に示すように、先ずバッファ領域４０６に時間不連続情報があれば、それに従って参照カウンタ４１０をプリセットする。
【００７５】
次に、参照カウンタ４１０の値が所定値に達したか判定し（Ｓ９０８）、所定値に達していなければ元にもどり所定値に達するまで待つ。参照カウンタ４１０の値が所定値に達した場合、ＨＤＤ１５からデータを読んで出力し（Ｓ９０９）、参照カウンタ４１０を進める。つまり、タイムスタンプ情報に従って、参照カウンタ４１０がタイムスタンプ情報と同じ値になったときにタイムスタンプが示しているデータをＭＰＥＧデコーダ１９のＶＢＶバッファ４０２に書き込む。また、ＩＥＥＥ１３９４規格などの外部出力端子４２２に出力してもよい。
【００７６】
タイムベース不連続情報が来ると、その時点でタイムベース不連続情報のパケットの近辺のパケットのに含まれる時間情報に従って、参照カウンタ４１０をプリセットする。これにより、参照カウンタ４１０は不連続にカウントアップする。参照カウンタ４１０をプリセットしなければ、たとえば１０分間の不連続があるタイムスタンプがついているストリームの場合、１０分間ストリーム出力を停止して参照カウンタ４１０が１０分経過した後のカウント値になったときに出力が再開されるという問題が起きるが、こうすることで、１０分間スキップしているなどの時間的に不連続になっているストリームを実際にスキップした状態で連続的に出力することが出来るようになる。
【００７７】
モジュール４０３がＩＥＥＥ１３９４端子４２２から出力する場合は、デコーダのＶＢＶバッファを監視することは出来ず、あらかじめデコーダのＶＢＶバッファがあふれないような出力制御を行う必要がある。
【００７８】
図５は伝送ストリームと表示のタイミング関係を説明する図である。
【００７９】
参照カウンタは２７ＭＨｚでカウントされている。一方、ストリームのＰＣＲやＰＴＳの時間情報も２７ＭＨｚとそれを３００分周した９０ｋＨｚのクロックでカウントされるカウンターの値を用いて表現される。しかし、参照カウンタの２７ＭＨｚとストリームの２７ＭＨｚは必ずしも同期しているとは限らない。
【００８０】
図５中、符号５０１は表示のタイミングチャートで、１５フレームからなる０．５秒ごとのＧＯＰの表示が連続している。符号５０２はこのような表示を行うためのＧＯＰ１からＧＯＰ９のＭＰＥＧデコーダに入力すべきストリームのタイミングを示している。表示のタイミングよりもある程度先だって伝送される。この中で、ＧＯＰの最初にあるＩピクチャーの位置を符号５０３は示している。このストリームのもつＳＴＣカウンタの値を符号５０４が示す。ＮＴＳＣの場合は１フレームが２９．９７Ｈｚであり、９０ｋＨｚでカウントするＳＴＣカウンタの値は１５フレームでは４５０４５だけ進む。
【００８１】
ＧＯＰ１のＩピクチャーが４５０４５のタイミングで表示される。
【００８２】
ＧＯＰ２のＩピクチャーが９００９０のタイミングで表示される。
【００８３】
ＧＯＰ３のＩピクチャーが１３５１３５のタイミングで表示される。
【００８４】
ＧＯＰ４のＩピクチャーが１８０１８０のタイミングで表示される。
【００８５】
一方、ストリームのタイムスタンプは最初１００Ｍからスタートしている。そして、ＧＯＰ１は参照カウンタが１０７Ｍの位置でデコーダに入れるタイミングである。つまり、ＧＯＰ１の先頭のタイムスタンプは
ＧＯＰ１の先頭は１０７Ｍ
ＧＯＰ２の先頭は１２０Ｍ
ＧＯＰ３の先頭は１３２Ｍとなっていく。
【００８６】
ＧＯＰ１の表示タイミングは１１３．５Ｍ、
ＧＯＰ２の表示タイミングは１２７Ｍとなっていく。
【００８７】
参照カウンタのクロックはこの例では正確には２７ＭＨｚではなく、２６．９７３ＭＨｚと、少しＳＴＣカウンタのクロックとはずれている。そのため、たまたま参照カウンタは１ＧＯＰの期間でちょうど１３．５Ｍのカウントアップする。
【００８８】
このストリームにはＰＣＲが含まれていて、この例ではその位置は参照カウンタの値としては１１８Ｍ、１３３Ｍ、１４８Ｍ、１６１．５Ｍ、１８７Ｍの位置にある。
【００８９】
そして、それはＳＴＣカウンタ値としては０６００６０、１１０１１０、１６０１６０、２０５２０５、２９０２９０の位置にある。
【００９０】
２倍速再生では平均的に１秒ごとのＧＯＰを平均的に０．５秒ごととなるようにして送出することで実現できる。このとき平均的な０．５秒は予め設定しておく。
【００９１】
図１２のフローチャートを用いて説明すると、先ず、タイムベース不連続情報を含むＴＳパケットを作成する（Ｔ１２０１）。
【００９２】
モジュール４1１では、ＧＯＰのデータの最初のデータを出力する前に参照カウンターをチェックし、ＧＯＰを出力するタイミングになったかことを確認する。例えばＧＯＰ１を出力するときにはＧＯＰ１のタイムスタンプをチェックし、参照カウンタがＧＯＰ１の先頭のタイムスタンプの値になったかどうかをチェックする。ＧＯＰの先頭以外のパケットを出力するときは参照カウンタの値はチェックしない。
【００９３】
次に、参照カウンタ４１８、４１０が所定値に達したかどうか判定し（Ｓ１２０２）、達していなければ元にもどり達するまで待つ。参照カウンタ４１８、４１０が所定値に達した場合、ＨＤＤ１５からデータを呼び込む（Ｓ１２０３）。
【００９４】
次に、ＴＳパケットをバッファに格納する（Ｓ１２０４）。このとき、バッファ４１４に空きがあることを確認してから格納を行う。空きがない場合は受信側１０１からのＡｃｋが返ってきておらずデータ送信を待たなければならない場合がある。
【００９５】
次に、ライトポインタを進め（Ｓ１２０５）、参照カウンタを進める（Ｓ１２０６）。ＧＯＰのＩピクチャーが出力し、出力が終わった時点で参照カウンタは進める。伝送路４２０の帯域に余裕があればＰやＢピクチャーも出力し、それが終了してからでも良い。このときのタイムチャートは図６に示したようになる。
【００９６】
例えば参照カウンタ４１８、４１０が１００Ｍから開始すると、それが所定値１０７Ｍに達したときにモジュール４１１、４０３はＧＯＰ１の送信を開始する。Ｉピクチャーの出力が終わり、必要に応じてＰピクチャーなども出力した後、モジュール４１１、４０３は参照カウンタ４１８、４１０を１ＧＯＰ分の時間つまり、１３．５１３５Ｍ進める。その次にはＧＯＰ３を出力する。同様にＧＯＰ３の出力後も参照カウンタを１３．５１３５Ｍ進める。各ＧＯＰの出力の時には、タイムベース不連続情報も出力する。
【００９７】
図５の符号５０５がそのときの参照カウンタの進み具合を示している。この方法によれば、各Ｉピクチャーの出力タイミングは必ずしも０．５秒ではないが、０．５秒ごとに表示される２倍速画像が出力できる。
【００９８】
図１４は、受信側１０１のモジュール４０３がディスク４２１を読み出してＭＰＥＧデコーダ１９や外部出力端子４２２に出力するときのフローチャートである。
【００９９】
この場合は、パケットごとに参照カウンタに従って、出力タイミングを制御する。図１２の場合と異なりバッファに対して出力するのではないので、バッファの空き容量はチェックしない。
【０１００】
図４に示すように、先ず、タイムベース不連続情報を含むＴＳパケットを作成する（Ｓ１４０１）。
【０１０１】
次に、参照カウンタ４１８がパケットのタイムスタンプの値に達したかをチェックし（Ｓ１４０２）、達していなければ元にもどる。
【０１０２】
参照カウンタ４１８がパケットのタイムスタンプの値に達していれば、ディスクからデータを読み込み（Ｓ１４０３）、ＴＳパッケットデータを出力する（Ｓ１４０４）。作成したタイムベース不連続情報は最初に少なくとも１回出力する。
【０１０３】
次に、ＧＯＰの中の出力すべきＩ、Ｐ、Ｂピクチャーを出力し終わったか調べ（Ｓ１４０５）出力し終わっていなければ（Ｓ１４０２）に戻る。出力し終わっていれば、参照カウンタを１ＧＯＰ分の時間つまり１３．５１３５Ｍ（２倍速再生なので１ＧＯＰ分、再生するスピードに応じてこの時間を変える）進める（Ｓ１４０６）。
【０１０４】
ＧＯＰ１の全てのＩ、Ｐ、Ｂピクチャーを出力して、１３．５１３５Ｍ進めると、ＧＯＰ１のデータが長いと、ＧＯＰ３の出力タイミングよりも参照カウンタが進んでしまい、ＧＯＰ３の出力タイミングに間に合わなくなってしまう可能性がある。そこでＧＯＰ１のＩ、Ｐ、Ｂピクチャーの全てを出力していいかはＧＯＰ１の長さとＧＯＰ３の出力すべきタイミング（これはＧＯＰ３のタイムスタンプから得られる）との比較により判定することができる。
【０１０５】
これまで述べてきた方法は、送信側１００で所定のタイミングになったところでデータを送信することで任意の倍速再生を受信側１０１で実現した。送信側１００で所定のタイミングでデータを送信するのではなく、受信側１０１からのＡｃｋに従うだけで送信制御をして、それで任意の倍速再生を実現するための手法を図１３を用いて説明する。このときの受信側１０１の処理は図９（ｂ）で説明したものである。
【０１０６】
図１３に示すように、先ず、バッファ４１４に空きが出来たかどうかチェックし（Ｓ１３０１）、空きがなければ元にもどる。バッファ４１４に空きが出来ていると、ディスクから倍速再生するためのデータを読み出す。これは２倍速の時はＧＯＯＰ１、ＧＯＰ３、ＧＯＰ５・・・と読み出す。ＧＯＰ３は受信側１０１では１ＧＯＰ分早いタイミングで再生されて欲しい。そのために早いタイミングのタイムスタンプにタイムスタンプを書き換える（Ｓ１３０２）。もちろんストリームに含まれるＰＣＲやＤＴＳ、ＰＴＳの値も１ＧＯＰ分早めた値に書き換える。
【０１０７】
図５に示す、ＳＴＣカウンタ値で言うところの１５フレーム分は４５０４５（９０ｋＨｚ／２９．９７＊１５）である。（６−１０）式
ＧＯＰ３の位置を１ＧＯＰ分すなわち１５フレーム早めるために、４５０４５＊１だけ少ない値したＰＣＲ、ＤＴＳ、ＰＴＳの値とする。（６−１１）式
ＧＯＰ３の先頭近傍にあるＰＣＲパケットのＰＣＲ値は１１０１１０である。
【０１０８】
そこから１ＧＯＰ分の値４５０４５を減算すると０６５０６５となる。０６５０６５のタイミングの近傍にあるＰＣＲバケットがたとえば０６００６０のタイミングに存在していたとする。（６−１２）式
この二つのＰＣＲパケットのタイミング差は１１０１１０−０６００６０＝５００５０である。（６−１３）式
また、この二つのパケットのタイムスタンプの値はそれぞれ１３３Ｍと１１８Ｍで、その差は１５Ｍである。（６−１４）式
１ＧＯＰ分の時間に相当するタイムスタンプ値は（６−１４）式で１３．５Ｍとなる。（６−１５）式
ＧＯＰ３のパケット元々ついていたタイムスタンプは、その値を１３．５Ｍ減少させて、そのタイミングでＭＰＥＧデコーダに対して送出すればよいはずである。
【０１０９】
ＧＯＰ３の先頭のパケットのタイムスタンプを１３２Ｍは１１８．５Ｍに書き換える。
【０１１０】
ＧＯＰ５は受信側では２ＧＯＰ分早いタイミングで再生されて欲しい。そうされるために、早いタイミングのタイムスタンプにタイムスタンプを書き換える。もちろん、ストリームに含まれるＰＣＲやＤＴＳ、ＰＴＳの値も２ＧＯＰ分早めた値に書き換える。（６−２０）式
ＧＯＰ５の位置を２ＧＯＰ分早めるために、４５０４５＊２＝９００９０だけ少ない値したＰＣＲ，ＤＴＳ，ＰＴＳの値とする。（６−２１）式
ＧＯＰ５の先頭近傍にあるＰＣＲパケットのＰＣＲ値は２０５２０５である。
【０１１１】
そこから２ＧＯＰ分の値９００９０を減算すると１１５１１５となる。１１５１１５のタイミングの近傍にあるＰＣＲバケットがたとえば１１０１１０のタイミングに存在していたとする。（６−２２）式
この二つのＰＣＲパケットのタイミング差は２０５２０５−１１０１１０＝９５０９５である。（６−２３）式
また、この二つのパケットのタイムスタンプの値はそれぞれ１６１．５Ｍと１３３Ｍで、その差は２８．５Ｍである。（６−２４）式
２ＧＯＰ分の時間に相当するタイムスタンプ値は（６−２４）式で２７Ｍとなる。（６−２５）式
ＧＯＰ５のパケット元々ついていたタイムスタンプは、その値を２７Ｍ減少させて、そのタイミングでＭＰＥＧデコーダに対して送出すればよいはずである。
【０１１２】
ＧＯＰ５の先頭のパケットのタイムスタンプ１６０Ｍを１３３Ｍに書き換える。
【０１１３】
ＧＯＰ７からは通常再生に戻るものとする。
【０１１４】
ＧＯＰ７以後は受信側１０１では３ＧＯＰ分早いタイミングで再生されて欲しい。そうされるために、早いタイミングのタイムスタンプにタイムスタンプを書き換える。もちろん、ストリームに含まれるＰＣＲやＤＴＳ、ＰＴＳの値も３ＧＯＰ分早めた値に書き換える。（６−３０）式
ＧＯＰ７の位置を３ＧＯＰ分早めるために、４５０４５＊３＝１３５１３５だけ少ない値したＰＣＲ，ＤＴＳ，ＰＴＳの値とする。（６−３１）式
ＧＯＰ７の先頭近傍にあるＰＣＲパケットのＰＣＲ値は２９０２９０である。
【０１１５】
そこから３ＧＯＰ分の値１３５１３５を減算すると１５５１５５となる。１５５１５５のタイミングの近傍にあるＰＣＲバケットがたとえば１６０１６０のタイミングに存在していたとする。（６−３２）式
この二つのＰＣＲパケットのタイミング差は２９０２９０−１６０１６０＝１３０１３０である。（６−３３）式
また、この二つのパケットのタイムスタンプの値はそれぞれ１８７Ｍと１４８Ｍで、その差は３９Ｍである。（６−３４）式
３ＧＯＰ分の時間に相当するタイムスタンプ値は（６−２４）式で４０．５Ｍとなる。（６−３５）式
ＧＯＰ７の以後のパケット元々ついていたタイムスタンプは、その値を４０．５Ｍ減少させて、そのタイミングでＭＰＥＧデコーダに対して送出すればよいはずである。
【０１１６】
ＧＯＰ７の先頭のパケットのタイムスタンプ１８５Ｍを１４４．５Ｍに書き換える。
【０１１７】
ＧＯＰ８の先頭のパケットのタイムスタンプ１９８Ｍを１５７．５Ｍに書き換える。
【０１１８】
ＧＯＰ９の先頭のパケットのタイムスタンプ２１０Ｍを１６９．５Ｍに書き換える。
【０１１９】
次に、タイムスタンプなど書き換えたデータをバッファ４１４に空きが有れば格納する（Ｓ１３０３）。
【０１２０】
次に、格納した後にライトポインタを進める（Ｓ１３０４）。
【０１２１】
図１５は、モジュール４０３がディスクに蓄えられたデータを外部端子４２２に出力する場合のフローである。
【０１２２】
図１５に示すように、先ず、ディスクからデータを読んでタイムスタンプを書き換える（Ｓ１５０２）。これは、図１３のＳ１３０２と同様の処理を行う。その結果、書き換えられたタイムスタンプに従って出力すればよいデータとなる。
【０１２３】
次に、参照カウンタ４１０がパケットのタイムスタンプの値に到達したかどうか判定し（Ｓ１５０２）、到達していなければ元に戻る。参照カウンタ４１０がパケットのタイムスタンプの値に到達していれば、その時点で書換えたパケットデータを出力する（Ｓ１５０３）。
【０１２４】
次に、図１０を用いて、モジュール４０９の処理フローを説明する。
【０１２５】
先ず、伝送路４２０からＩＰパケットが到達したか判定し（Ｓ１００１）、到達していなければ元に戻る。ＩＰパケットが到達している場合、そのＩＰパケットのヘッダ情報からバッファ４０６、４０７、４０８にパケットのデータ部分を振り分け格納し（Ｓ１００２）、ライトポインタを進める（Ｓ１００３）。
【０１２６】
次に、バッファ４０６に次のパケットを受け取る余裕が有るかどうかバッファ４０６に空きがあるか判定し（Ｓ１００４）、なければ元に戻る。バッファ４０６にあきがあれば、Ａｃｋを送信側１００に返送する（Ｓ１００５）。
【０１２７】
このように空きが無ければＡｃｋは送信せず、Ａｃｋが送信されなければ送信側１００はまだ受信側１０１がデータの受信準備が出来ていないことがわかる。
【０１２８】
上記の説明で、Ｓ１３０１とＳ１３０２の順番のように入れ替えの可能なステップは入れ替えてもよい。
【図面の簡単な説明】
【０１２９】
【図１】本発明に係るデータ伝送システムを説明するためのブロック構成図である。
【図２】受信側のバッファ領域のライトポインタとリードポインタの移動する様子を示す図である。
【図３】伝送側のＣＰＵと受信側のＣＰＵが実行するソフトウェアの階層図である。
【図４】ディスク上のストリームのフォーマットの例を示す図であり、（ａ）は、通常の１８８ｂｙｔｅのトランスポートストリームと別に、各パケットのタイミングを示す情報をタイムスタンプとして持つストリームである。（ｂ）は、ＡＶパケットの送出タイミングを示す情報の１８８ｂｙｔｅのトランスポートストリームの頭に２７ＭＨｚでカウントするカウンターの値４ｂｙｔｅを付加する方法である。
【図５】伝送ストリームと表示のタイミング関係を説明する図である。
【図６】（ａ）は通常再生における通常のトランスポートストリームとＩＰ伝送路上を流れるデータの関係を示す図、（ｂ）は２倍速再生におけるトランスポートストリームとＩＰ伝送路上を流れるデータの関係を示す図である。
【図７】通常再生処理を説明するフローチャートである。
【図８】通常再生処理を説明するフローチャートである。
【図９】特殊再生処理を説明するフローチャートである。
【図１０】モジュールの処理を説明するフローチャートである。
【図１１】受信側の特殊再生処理を説明するフローチャートである。
【図１２】受信側の特殊再生処理を説明するフローチャートである。
【図１３】送信側の特殊再生処理を説明するフローチャートである。
【図１４】受信側の特殊再生処理を説明するフローチャートである。
【図１５】モジュールがディスクに蓄えられたデータを外部端子に出力する場合のフローである。
【図１６】特殊再生を説明するフローチャート
【符号の説明】
【０１３０】
１００：伝送装置
１０１：受信装置
１１：ＣＰＵ
１２：バッファＲＡＭ
１３：伝送モジュール
１４：コントローラ
１５：ＨＤＤ
１６：ＣＰＵ
１７：バッファＲＡＭ
１８：伝送モジュール
１９：ＭＰＥＧデコーダ
２０：ＨＤＤ
４０１デコーダ
４０２：ＶＢＶバッファ
４０３：ＡＶパケット受け渡し
４０４：その他
４０５：その他
４０６：バッファ
４０７：バッファ
４０８：バッファ
４０９：入力ＩＰパケットの受信振り分け
４１０：参照カウンタ
４１１：データ読み込みＡＶパケット送出
４１２：その他
４１３：その他
４１４：バッファ
４１５：バッファ
４１６：バッファ
４１７：入力ＩＰパケットの多重送出
４１８：参照カウンタ
４１９：ディスク
４１９：ディスク
４２０：伝送路
４２１：ディスク
４２２：外部端子
【図１】
2005110052.tif 000003
【図２】
2005110052.tif 000004
【図３】
2005110052.tif 000005
【図４】
2005110052.tif 000006
【図５】
2005110052.tif 000007
【図６】
2005110052.tif 000008
【図７】
2005110052.tif 000009
【図８】
2005110052.tif 000010
【図９】
2005110052.tif 000011
【図１０】
2005110052.tif 000012
【図１１】
2005110052.tif 000013
【図１２】
2005110052.tif 000014
【図１３】
2005110052.tif 000015
【図１４】
2005110052.tif 000016
【図１５】
2005110052.tif 000017
【図１６】
2005110052.tif 000018