説明

データストリーム内の所定位置を記憶又は再配置するための方法及び装置

【課題】データストリームをスキャンする際に、各データパケットを調べなくてもよくすることによりサーチ時間を短縮する。
【解決手段】第1データパケット内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第2又は別のデータパケットを形成し、第2タイプ又は別のタイプの1つ又は複数の異なるデータストリームを生じさせるようにした、第1タイプのデータストリーム内の所定位置を記憶又は再配置する方法において、所定位置に配置された第1データパケットが第2データパケットの開始又はヘッダを含むようにし、前記所定位置の記述と各々の第2データパケットに関する付加情報とを記憶する又はデータストリームから個別に取り出す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータストリーム(MTS)内の所定位置を記憶又は再配置するための方法及び装置に関する。
【背景技術】
【0002】
例えばMPEG2規格ISO/IEC 13818−1に基づいたデジタルデータストリームはしばしばパケットに分割される。この場合、時間明細のようなある種の情報アイテムは特定のパケットにしか含まれない。特に、上に引用した規格はトランスポートデータストリーム(TS)の構造を定義する。MPEG2−TSデータストリームは、連続したトランスポートパケット(“Transport Stream Packets”,TSP)から成るパケット向けストリームである。TSPはヘッダとトランスポートデータから構成されており、このヘッダとトランスポートデータはパケット向け基本データストリーム(Packetized Elementary Stream,PES)のパケット(PESパケット)の一部を為している。PESパケット全体を得るためには、個々の部分は連続的に関連づけられたTSPから抽出されなければならず、またプロセス中にTSPの順番を変えずにアセンブルされなければならない。PESパケットはヘッダ情報とデータフィールドから構成されている。データフィールドは、例えば、ビデオデータストリームの一部又はオーディオデータストリームの一部であってよい。このようなデータストリームをサーチ(スキャン)して情報を得るには、各パケットが調べられねばならず、長い時間がかかる。さらに、広範囲にわたる評価プロセス、例えば誤り検査又は誤り補正が必要とされることもある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の課題は、データストリームをスキャンする際に、各データパケットを調べなくてもよくすることによりサーチ時間を短縮することである。
【課題を解決するための手段】
【0004】
上記課題は、一定サイズの第1データパケットから成る第1タイプのデータストリーム内の所定位置を記憶又は再配置する方法であって、第1データパケット内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第2又は別のデータパケットを形成し、第2タイプの又は別のタイプの1つ又は複数の異なるデータストリームを生じさせるようにした方法において、所定位置に配置された第1データパケットが第2データパケットの開始又はヘッダを含むようにし、前記所定位置の記述とそれぞれの第2データパケットに関する付加情報とを記憶する又はデータストリームから個別に取り出すようにすることにより解決される。
【図面の簡単な説明】
【0005】
【図1】MPEG−2 TSデータストリームのレイアウトを示す。
【図2】情報ファイルの一般的レイアウトを示す。
【図3】MPEG2−TSデータストリーム向けの情報ファイルを示す。
【図4】ParsePacket()関数の構造図を示す。
【発明を実施するための形態】
【0006】
パケット向けデータストリーム内の各データパケットを調べなくてもよくするために、データストリームのスキャン中に役立つ情報ファイル(インフォファイル)が生成される。このファイルには、示差的情報アイテムのそれぞれのオフセットが記憶される。つまり、パケット及びバイトのオフセットが記憶される。データストリームと情報ファイルは並列に、つまり、同時にスキャンされ、情報ファイルは、所望の情報がある次の指定された位置又は次のマークされた入口点に到達するためにデータストリーム内のいくつのパケット又はバイトをスキップしうるかを特定するのに使用される。さらに、各々のデータパケットに関するさらなる情報アイテムを情報ファイルに記憶してもよい。これらの情報アイテムは、より大掛かりなプロシージャを用いてデータストリームから評価されなければならない。したがって、これらのプロシージャは一度だけ実行されるようにしなければならない。これはスタジオ自体において又はユーザのレコーダにおいてレコーディングプロセスの間に又はその後の後処理の間に行ってもよい。この目的のためには、原則的に、機器が情報ファイルを記録することができ、また記録したデータストリームを再生することができるだけで十分である。本発明による情報ファイルによれば、実質的に遅延なしでデータストリームのスキャンができ、したがって、情報抽出にとって、ならびに、データストリーム内の特定の位置へのジャンプにとって非常に大きな時間的利点がもたらされる。
【0007】
本発明による、パケット向けデータストリームのスキャンのための情報ファイルは、情報ブロックのシーケンスから構成されている。各情報ブロックはデータストリーム内の専用パケットに対応付けられており、2つの成分を有している。この2つの成分の第1はオフセット、すなわち、次の情報ブロックに対応付けられた次のデータパケットが現れるまでのパケット数又はバイト数であり、第2は現在対応付けられているデータパケットに関する付加情報、例えば各々のタイムスタンプである。
【0008】
情報ファイルが可変データ速度及び種々のパケットサイズをよりよくサポートすることができるように、情報ブロックはパケット及びバイトの双方について次の関連パケットまでのオフセットを含んでいる。このケースでは、原則的に、2つの詳細のうちの一方で十分である。
【0009】
さらに、上記オフセットは相対的である。したがって、本発明による情報ファイルは任意のサイズのデータストリームをサポートすることができる。ストリームの開始に関係づけられた絶対オフセットとは対照的に、オフセットのサイズから生じる制限は2つのデータパケットの間の距離にしか関係せず、ファイル長には関係しない。
【0010】
情報ファイルは、特に、パケット向けデータストリーム内での高速早送り及び逆送りに利用され、融通性を向上させる。情報ファイルの使用はパケット向けデータストリームの格段に高速なスキャンを可能にする。なぜならば、関心のないパケット及び無関係なパケット、特に、トランスポートデータストリーム内のパケットのうちで異なる基本データストリームの一部であるパケット又はPESパケットヘッダを含んでいないパケットをスキップすることができるからである。さらに、複雑な計算の結果を付加情報として情報ファイル内に記憶してもよい。そうすることにより、計算は一度だけ、例えば情報ファイルを生成するときに実行するだけでよい。情報ファイルの使用は、データストリーム内でスキップされるパケット数が大きくなればなるほど、また所望の情報アイテムをデータストリームから抽出するプロセスが難しくなればなるほど効果的になる。
サイズ可変のデータパケットから構成された基本データストリーム内での早送り又は逆送りのための装置であって、サイズ可変のデータパケットが例えばTDPなどのトランスポートデータストリーム内の一定サイズの他のデータパケットから抽出され、ファイルポインタがトランスポートデータストリーム内での現在位置を示す形式の装置において、該装置は、基本データストリーム内のデータパケットの開始又はヘッダを含んだトランスポートデータストリーム内のTDPの相対的位置の検索に使用される記憶媒体と、別のTSPのトランスポートデータストリーム内での位置をファイルポインタの位置から及び前記記憶媒体から検索された位置詳細又はオフセットから計算するための手段、例えばプロセッサと、ファイルポインタをトランスポートデータストリーム内の計算された位置にセットするための手段とを有する。
【0011】
本発明の有利な実施形態は、請求項、以下の詳細な説明、及び図面に記載されている。
【実施例】
【0012】
本発明をMPEG−2記憶再生装置(デジタルストレージデバイス、DSD)用のパーザを例として説明する。このMPEG−2記憶再生装置は以下のテキストではDSD−MPEG2パーザと呼ばれる。
【0013】
DSD−MPEG2パーザは、TSPから成るMPEG−2 TSデータストリームを調べ、このストリーム内に含まれているPESパケットのパーツから完全なPESパケットを組み立てようとする。TSPは複数の異なるPESパケットに属していることもあるので、異なる基本データストリームが形成される。図1には、単純化されたMPEG2トランスポートデータストリームMTSと、対応付けられた基本データストリームPES1,PES2が、概略的に図解されている。トランスポートデータストリームMTSはMPEG2トランスポートパケットTSPから構成されており、MPEG2トランスポートパケットTSPはそれぞれヘッダとデータ、又はペイロードを含んでいる。このペイロードはPESパケットのパーツを表しており、PESパケットヘッダとデータ、又はペイロードから構成されている。対応付けられたPESパケットPP♯1,PP♯2から基本データストリームPES1,PES2が生じる。基本データストリームPES1,PES2のうちの一方は、例えば、ビデオデータを含み、他方はオーディオデータを含む。
【0014】
PESパケットのヘッダ内にある“start_code_prefix”は24ビットの長さを有し、固定値000001hexを有している。次の“stream_id”は搬送されるデータストリームのタイプ(“PES_packet_data_byte”)を表す。これはビデオストリームではE0hexからEFhexまでの範囲内にあり、オーディオストリームではC0hexからDFhexまでの範囲内にある。
【0015】
パーザはTSPのヘッダからの“payload_unit_start_indicator”フラグの値が1であるか、またこのようなTSPのデータエリアが32ビットに拡張されたPESパケットの“start_code_prefix”に従って値00000001hexを有しているかを調べる。両方のフィールドが期待される値を有していれば、パーザは現在のTSPにおいて新たなPESパケットが開始していると判断する。
【0016】
PESパケットは“Presentation Timestamp”(PTS)及び“Decoding Timestamp”(DTS)を有していてもよい。PTSは搬送されるデータが提示されるべき時点を表し、DTSはデータ復号時間に関する情報を提供する。PESパケットのヘッダにも含まれている“PTS_DTS_flag”は、PESパケットがPTS又はDTSを含んでいるか否かを表す。ISO/IEC規格13818−1は、連続するPTS間の間隔は高々0.7sであると規定している。現在位置、つまり、現在のタイムコードを決定するために、PTSを評価してもよい。
【0017】
PTSを評価する際に生じる1つの問題は、PTSはビデオデータストリームのゼロ位置で開始しなくてもよく、任意の(開始)値をとりうるということである。ビデオデータストリーム内の個々のフレームは、正確にそれらが表示される順序で符号化されているわけではない。したがって、限定された範囲内で、PTSはより小さくなりうる。しかし、PTSの長さは制限されているので、これは「オーバーフロー」につながる。さらに、PTSは逐次的にアセンブルされた異なるビデオデータストリーム要素間の過渡点で大幅にジャンプすることもある。しかし、このPTSのジャンプは再生されているビデオのタイムコードにおけるジャンプを意味するものではない。MPEG2−TSデータストリーム内の第1のPTSがゼロ位置でないこともありうるという問題は、以下のようにして解決することができる。タイムコードを値として有する変数、すなわち、経過した再生時間をReset()の呼出しの際にゼロに設定する。この変数には、連続する2つのPTSの間の差が順次加算される。この値の単位がミリ秒となるようにするため、差の値を90で除する。連続する2つのPTSの間の差が、0.7に相当するFFFFhexよりも大きい状況では、差を無視する。この状況は、2つのアセンブルされたストリーム要素の間の過渡点に達したときに生じる。パーザが「スプリアス」なPTSに遭遇すると、このPTSと前のPTSとの間の差及びこのPTSと次のPTSとの間の差は無視される。というのも、両方の値とも0.7sより大きいからである。
【0018】
隣接する2つのPTSの間の差は、この差が0.7に相当するFFFFhexよりも大きくない場合にのみ、タイムコードの計算に含められる。この計算はPTSの最下位16ビットだけを必要とする。一方、PTSの長さは33ビットである。しかし、計算には16ビットしか必要とされず、また2つのPTSとFFFFhexとの比較も32ビットを用いて格段に容易に実行することができるので、一般にPTS内のMSB(最上位ビット)は無視される。
【0019】
早送り又は逆送りの間、表示のためのビデオデータはIEEE1394バスを介して送られず、位置ポインタのみがビデオファイル内でシフトされる。ファイルポインタが移動する速度は早送り又は逆送りの速度である。この目的で、現在のタイムコードが連続的に求められる。現在のタイムコードは例えばディスプレイモジュールに表示してもよい。
【0020】
計算で求めることのできるこの早送り又は逆送りの速度を一定にするため、ファイルポインタは一定の時間間隔で指定されたタイムコードのステップの分だけシフトされる。この目的で、求められているタイムコードに対応するビデオストリーム内のデータパケットが探し出されなければならない。早送り又は逆送りプロセスの基本的なプロシージャは表1に示されている。
【0021】
【表1】

【0022】
早送り及び逆送りの速度は、タイムコードにおける差(CurrentTimeCode+ΔT)とルーチン内のその後の待機時間とによって設定することができる。ループ内の待機時間はまったく制限なしに選択してよい。タイムコードにおける差ΔTはこの待機時間に合うように決定され、特定の早送り又は逆送り速度が達成される。
【0023】
早送り又は逆送り速度は特定の時間内に飛び越されるタイムコードの間隔である。これは、例えば、フィルムの10秒は1秒で飛び越されなければならないことを意味する。待機時間は過度に長くてはならない。というのも、そうでなければ、タイムコード表示は、早送り又は逆送りの間、長い間隔でしか追うことができなくなるからである。しかしながら、待機時間はまた、ΔTが2つのタイムコードの間の平均間隔より短い値をとるほど短くてはならない。さらに、待機時間は時間表示の読み取り易さに影響する。
【0024】
早送り及び逆送りの間、ビデオストリーム内の現在位置におけるタイムコードが知られていなければならないので、ビデオデータストリームは連続的にパーズされなければならない。このことは、MPEG2−TSデータストリームでは、すべてのTSPが調べられなければならないことを意味する。PESパケットは、PTSの出現に関して測定され調べられなければならない。つぎに、PTSは誤り検査を受け、必要ならば、誤りが訂正されなければならない。しかし、このプロセスは長い時間がかかるので、早送り及び逆送りは無限定に迅速に実行することはできない。しかし、早送り及び逆送りは、現在のタイムコードとこれを含んだTSPが容易に求められるようにする本発明による情報ファイルの使用によって著しく単純化される。
【0025】
すべてのPESパケットがPTSを含む必要はない。しかしながら、PESパケットがPTSを含むのであれば、このPTSはPESパケットの開始に位置していなければならない。したがって、一旦PTSが見つかれば、多数のTSPをスキップすることができる。しかし、ビデオデータストリームをパーズしている間は、飛び越すことのできるTSPの数は前もって知られてはいない。この状況においては、本発明による情報ファイルの有利な効果を利用することができる。
【0026】
図2には、本発明による情報ファイルIが示されている。情報ファイルIは、原則的に、オフセット値OP,OBのシーケンスを含んでいる。これらのオフセット値は、早送り及び逆送りの間にいくつの基本パケットが無関係であり、飛ばしてもよいものであるかを示す。各オフセットに関する付加情報AIも記憶される。これら3つのフィールドはともになって各PESパケットの情報ブロックIBを形成する。「オフセットパケット」OP及び「オフセットバイト」OBの値は、基本トランスポートデータパケット(TSPs)TDPの数と、2つの関連TSPの間のバイト数、すなわち、例えば、同じ基本データストリームEDS内で直接的に相前後するPESパケットのヘッダPPH,PPHを含んだトランスポートデータストリームMTS内の2つのパケットPP♯1,PP♯1の間のバイト数を示す。このそれぞれのPESパケットPPに対応付けられたTSPはこれらの関連TSPの間に位置しているが、異なる基本データストリームのPESパケットに対応付けられたTSPもそこに出現しうる。情報ブロックIBは2つのオフセット値OP,OBと付加情報フィールドAIとから構成されている。付加情報フィールドAIはデータパケット内のそれぞれのパケットPP♯1,PP♯1に関しており、例えば、このパケットのタイムスタンプ(PTS)を含んでいる。各情報ファイルはただ1つの基本データストリーム、有利にはビデオデータストリームに関している。というのも、早送り及び逆送りプロセスはこのデータストリーム向けを意図しているからである。
【0027】
MPEG2−TSデータストリームの場合には、情報ブロック内の最初の2つのフィールドOP,OBは連続する2つのPESパケットの間の間隔を示しており、各々32ビットの長さを有している。上記用途における「付加情報」フィールドAIは、各ビデオフォーマットに関して、完全に計算され誤り訂正されたタイムコードを含んでおり、同じく32ビットの長さを有している。上記形式の情報ブロックはしたがって3×32=96ビットの長さを有している、つまりMPEG2−TSデータストリーム内に12バイトを有する。しかしながら、早送り及び逆送り速度が再び低下するほど情報ファイルが長くならない限りで、さらに別のデータを付加情報フィールドに記憶すると有利である。この適用形態では、情報ファイル内の情報によって関係のないすべてのTSPを直ちにスキップすることができる。情報ファイルIと基本データストリームEDS、例えばMPEG2に基づいたビデオデータストリームとの間のナビゲーション又は同期は、PESパケットごとに実行される。タイムコードはこのケースでは直接情報ファイルから読み出されるので、それぞれの早送り又は逆送りプロセスの最中に再計算しなくてもよい。
【0028】
記録されたMPEG2−TSビデオデータストリームは、PESパケットの開始(「PESスタート」)を含んだTSPを以て始まる必要はない。例えば、DSDがライブストリームを記録しているならば、第1TSPは連続的なトランスポートデータストリームからの未定義パケットである。この状況は図3に示されている。トランスポートデータストリームMTSは、第1パケットPSP♯1が「PESスタート」を以て出現する前に、2つの別のデータパケットOTHを以て始まる。情報フィイル内の第1オフセット値OP1,OB1は、「PESスタート」を含む第1MTSパケットPSP♯1と、同じく「PESスタート」を含む第2MTSパケットPSP♯2との間の距離を記述する。トランスポートデータストリームMTS内の第1TSPは完全なPESパケットを含んでおらず、それらが同じ基本データストリームに対応付けられていても情報ファイルにより無視される。しかし、さらに、情報ファイル内の第1エントリは、第1PESパケットPSP♯1までの距、離又は飛び越すべき無関係のTSPであるOTHの数も示す。
【0029】
ビデオストリームの記録が終了すれば、最も最近受け取ったTSPがPESパケットの終了を含んでいる必要はない。それゆえ、「オフセットパケット」値がゼロであるMPEG2特有の情報ファイルの最後の情報ブロックにさらなるブロックが付加され、その後に「PESスタート」を含んだ最後のTSPの位置が続く。この最初のPESパケットは完全でなくてもよく、またリプレー中に送られてはならない。図3に示されている短縮化された例では、最後の通常情報ブロックOP2,OB2,TC2は、PSP♯2を以て始まる最後の完全なPESパケットとPSP♯3を以て始まる最後の不完全なPESパケットとの間の距離を記述している。オフセットOP2は3である。なぜならば、後続の第3TSPは同じ基本データストリームに対応付けられた次のPESパケットを含んでいるからである。オフセットOB2は、PSP♯2を以て始まるPESパケット内のバイトの和である。タイムコードTC2はこのPESパケットの表示時間又はPTSに相当する。しかし、最も最近の情報ブロックOP3,OB3,TC3は、オフセット値OP3に関してゼロを含んでおり、このオフセット値OP3の後に最後の「PESスタート」PSP♯3の位置が続いている。したがって、これは記録された基本データストリームの終了を記述している。
【0030】
情報ファイルを援用してスキャンされている最中のビデオデータストリームはまず第一に情報ファイルと同期していなければならない。このためには、PESパケットの開始を含んだビデオデータストリーム内の第1TSP、つまり、「PESスタート」を探す必要がある。
【0031】
情報ファイルは、フォーマットごとに固有のDSDストリームパーザにおいて生成され、評価される。それゆえ、各ビデオフォーマットに関して、個別的な付加情報フィールド及び情報ブロックのための個別的ビット長を備えた特別あつらえの情報ファイルを生成することが可能である。
【0032】
通常、情報ファイルはビデオデータを受け取っている間、つまり、記録プロセス中に生成される。すでに存在しているトラックに関して情報ファイルが存在していない場合には、このような情報ファイルは、DSDアプリケーションが開始されたときに生成することができる。したがって、例えば、ビデオファイルが手動でコピーされている場合のように、記録中に本発明による情報ファイルが生成されなかったようなビデオファイルをもレプレイすることが可能である。情報ファイルはまたビデオデータとともに送信及び受信するようにしてもよい。
【0033】
表2に列記された関数はDSDストリームパーザモジュールにおいてインタフェースの提供のために定義されているものであり、情報ファイルを開き、生成し、閉じることができる。
【0034】
【表2】

【0035】
ParsePacket()を呼び出すと、情報ファイルが読み出され、ParseStream()を呼び出すと、以前に呼び出された関数がOpenInfoFile()であるか又はCreateInfoFile()であるかに応じて、情報ファイルが読み出し又は生成される。
【0036】
関数CheckSync()は、ビデオデータストリームと情報ファイルとが同期しているか否かをチェックする。MPEG2−TSデータストリームの場合には、ビデオストリーム内の現在位置における“payload_unit_start_indicator”フラグが1にセットされているか否か、及び“start_code_prefix”が値000001hexを含んでいるか否かを判定するためにチェックが行われる。
上記判定の結果が肯定的であれば、TSPはビデオストリーム内の現在位置においてPESパケットの開始を含んでいる。情報ファイルはそれぞれ隣接する「PESスタート」を含む2つのTSPの間の間隔を示すので、これは情報ファイルを用いたビデオデータストリームのスキャンにとって必要条件である。この場合、関数は値「真」を返す。
【0037】
ParsePacket()を呼び出すと、MPEG2−TSデータストリーム内の単一のTSPがスキャンされる。ParsePacket()の連続的呼出しは入力パラメータとして連続したTSPを含む。現時点においてパーズされているパケットに関するタイムコードは関連する情報ファイルから読み出される。それゆえ、以前にOpenInfoFile()が呼び出されていることが必要である。図4には、ParsePacket()ルーチンのプロシージャが示されている。
【0038】
パーズすべきビデオデータストリームは先ず、ParsePacket()の個々の呼出しの際に「PESスタート」を含むビデオデータストリーム内の第1TSPを探すことにより情報ファイルに同期される。この目的で、第1のステップD1において、TSPヘッダの第1バイトであるsync_byteが特定の値47hexを有しているかが調べられる。モジュール変数bFirstPESReachedは、このTSPがすでに見つけ出されているか否かを示す。第2のステップD2では、ParsePacket()がこの変数を調べる。TSPがまだ見つけ出されていなければ、CheckSync()が呼び出される。bFirstPESReachedの値は、返された値に応じて「真」にセットすることができる。第3のステップD3では、この変数を使用して、再度PESパケットの開始を有する第1TSPが見つけ出されているか否かをチェックする。ビデオデータストリームがParsePacket()の呼出しの際に情報ファイルに同期されていれば、関連する「PESスタート」を含む次のTSPに関するオフセットがインフォファイルから読み出される。モジュール変数u32PacketsToNextPESには、決定されたオフセットの値が与えられる。関数の新たな呼出しが行われると、変数は減分される。情報ファイルは、変数が値ゼロに達するまで再び読み出されない。ゼロのオフセットが情報ファイルから読み出されると(D4,D5)、すなわち、ファイルの終了に達すると、「PESスタート」を含む最後のTSPの位置がモジュール変数u64ByteCounterAtPESStartに転送される。この変数の値は関数GetCurrentEndOfValidStream()によって返される。ファイルの終了に達していなければ、現在のTSPに対応付けられたタイムコードが情報ファイルから読み出され、モジュール変数u32ElapsedTimeに格納される。
【0039】
関数ParseStream()は、1つ又は複数のTSPから構成されたビデオデータストリームの一部をスキャンする。この関数は情報ファイルからのタイムコードの決定だけでなく、このようなファイルの生成もサポートする。使用されるモードは、以前に呼び出された関数がOpenInfoFile()であるか又はCreateInfoFile()であるかに依存する。どちらの場合でも、パーズすべきビデオデータストリームから単一のビデオデータパケットがループにおいて抽出される。このループは各々パケットを通過し終わるまで続く。プロセス内のモジュール変数u32TSPCounterは抽出されたパケットをカウントし、抽出されたバイトはu64ByteCounterにおいてカウントされる。以前に呼び出された関数がOpenInfoFile()である場合、抽出されたそれぞれのパケットはParsePacket()の関数呼出しの入力パラメータとして使用される。「PESスタート」を有する第1TSPに達するとすぐに、u64ByteCounterに含まれている現在のバイト数がモジュール変数u32CurrentStartOfStreamOffsetに転送される。
【0040】
情報ファイルを生成しようとする場合には、現在のTSPはプライベート関数ParseTransportPacket()に転送される。この関数は、TSPが基本データストリームに関連しているか否かを判定し、基本データストリームからPESパケットのピースを抽出し、バッファに記憶する。各々の関数呼出しごとに、PESパケットの別のピースがバッファに記憶される。TSPが新たなPESパケットの開始を含んでいれば、変数u32TSPCounterのカウントがモジュール変数u32TSPCounterAtPESStartに格納され、u64ByteCounterの現在値がu64ByteCounterAtPESStartに格納され、以前に記憶されたすべてのPESパケットのピースが結合され、完全なPESパケットがプライベート関数ParsePESPacket()により調べられる。この関数は対応付けられたPTSが存在すればそのPTSを調べ、それをモジュール変数u32PTSに格納する。また、例えば、PESパケットがビデオデータストリーム又はオーディオデータストリームを含んでいるか否かを判定するために、PESパケットをさらに調べることも可能である。PTSはParseTransportPacket()において調べられ、誤りのチェック及び訂正が行われ、現在のタイムコードが計算され、開かれている情報ファイルに書き込まれる。タイムコードは上で説明した方法を用いて計算される。「PESスタート」を含んだ2つの隣接するTSPの間の距離は、モジュール変数u32TSPCounter、u32TSPCounterAtPESStart、u64ByteCounter、及びu64ByteCounterAtPESStartを用いて計算される。
【0041】
関数GetCurrentEndOfValidStream()は、ParsePacket()及びParseStream()に関して説明したように、変数u64ByteCounterAtPESStartの現在値を返す。このように、関数GetCurrentEndOfValidStream()は、「PESスタート」を含んだTSPで最も最近パーズされたものの位置を与える。
【0042】
関数GetStartOfStreamOffset()は、ParseStream()において埋められた変数u32CurrentStartOfStreamOffsetの値を返す。アプリケーションがビデオストリームをリプレイしている場合、実際の伝送は返された値から開始される。これにより、リプレイの開始時に不完全なPESパケットが伝送されることが防止される。ビデオデータストリームは任意のポイントから始めて記録することができるため、記録されたファイルは第1TSP内の「PESスタート」で始まる必要はない。変数u32CurrentStartOfStreamOffsetは初めは初期値FFFFFFFFhexに設定される。関数がこの値を返した場合、それはParseStream()においてまだ「PESスタート」が見つけ出されていないことを意味する。
【0043】
情報ファイル内の特定のタイムコードのサーチは、DSD−MPEG2パーザのSeekTimeCode()ルーチンを用いて行われる。順方向サーチと逆方向サーチ(サーチタイプ)が区別される。ビデオストリーム内で適切なTSPに達するためにファイルポインタが通過しなければならないバイトの数が返される。ルーチンの逆方向サーチパスでは、パラメータとして転送されるタイムコードより小さな又は等しいタイムコードが情報ファイル内で探索される。この目的で、表3に記載されているアルゴリズムが実行される。
【0044】
【表3】

【0045】
表3のトータルジャンプカウンタは、ビデオストリーム内で所望のタイムコードに達するために位置ポインタが通過しなければならないバイトの数を示す。所望のタイムコードは、PESパケットごとにオフセットを加算していくことによって情報ファイル内で探索される。
【0046】
ルーチンの順方向パスでは、パラメータとして転送されるタイムコードより大きな又は等しいタイムコードが情報ファイル内で探索される。表4は順方向サーチの構造図を示している。
【0047】
【表4】

【0048】
表4に示されているアルゴリズムのループを通過し終わるたびに、情報ファイルのためのファイルポインタは次の情報ブロックの開始を指し、この次の情報ブロックに対してはステップ5〜8が実行される。ファイルの終了に達すると、ループを離れ、情報ファイル内のファイルポインタは「ファイルスタート」にセットされる。
【0049】
以下のテキストは、早送りコマンド及び逆送りコマンドの早送り及び逆送りへの変換を説明したものである。
【0050】
ビデオデータストリームにおける早送り及び逆送りは上記の情報ファイルを用いて行われる。ルーチンの開始時には、ビデオストリーム内の位置ポインタはPESパケットの開始(「PESスタート」)を含んだTSP又はこれの前に位置するTSPを指していると仮定される。情報ファイルとの同期のために、ビデオストリームは「PESスタート」を有するTSPが見つけ出されるまで順方向にスキャンされる。図3では、データストリームTS内のパケットOTHが、「PESスタート」を含んだ第1PESパケットPSP♯1が見つけ出されるまでスキャンされる。つぎに、現在のタイムコードから特定の時間間隔にある情報ファイル内のタイムコードが、SeekTimeCode()を用いたループにより探索され、飛び越すべきTSP又はバイトの数を合計することにより飛び越すべきTSP又はバイトの数が求められる。データポインタはこの量だけビデオストリーム内でオフセットされる。
【0051】
コマンドの変更が生じたときには、ビデオストリームと情報ファイルとの間の同期も保証されなければならない。この目的で、タイムコードも同様にビデオストリームからではなく情報ファイルからリプレイ中に読み出される。これには2つの理由がある。第1には、タイムコードをPTSから再計算する必要がないので、より迅速であり、またパフォーマンスに有利な効果を与えること、第2には、早送り又は逆送りの後にコマンドの変更が生じても、結果的に情報ファイルがビデオストリームに同期されることである。
【0052】
コマンドの変更が生じてもビデオストリームと情報ファイルとが同期を保つように、DSD−MPEG2パーザは以下の規則に従う:
1.コマンド実行開始時に、位置ポインタは、ビデオストリーム内で、情報ファイル内の現在ポインタ位置に対応するPESパケットの開始を含んだTSP又はこれの前に位置するTSPを指していなければならない。それゆえ、ポインタがビデオストリーム内においても情報ファイル内においてもファイルスタートに位置していれば、定義によりこの条件は充たされている。
2.ビデオストリーム内の位置ポインタが、リプレイプロセス後に、「PESスタート」を有するTSPに位置していない場合には、情報ファイルのためのファイルポインタは、「PESスタート」を有する次のTSPに対応する情報ブロックを指す。ビデオストリーム内の現在のTSPが「PESスタート]を含んでいる場合には、情報ファイルのためのファイルポインタはこのTSPに対応する情報ブロックを指す。
3.早送りコマンド又は逆送りコマンドの実行後、ビデオストリーム内の位置ポインタは「PESスタート」を有するTSPを指している。情報ファイルのためのファイルポインタはこのTSPに対応付けられた情報ブロックを指す。1つの例外は、コマンドを実行している間にファイルの終了に達してしまった場合である。この場合、両方のポインタともファイルスタートにセットされる。
【0053】
コマンド実行後、ビデオファイルと情報ファイルは双方とも閉じられる。したがって、ビデオストリーム内の現在位置と情報ファイル内の現在位置を永久的に記憶したモジュール変数が導入される。この目的で、DSDワーキングスレッドモジュールが変数u64FilePosを生成する。この変数は、各ファイルアクセスの後にビデオファイルのためのファイルポインタの現在位置とともにアップデートされる。DSD−MPEG2パーザは変数u32InfoFilePositionを定義する。DSDワーキングスレッドのStartFile()ルーチンにおいて、ファイルポインタはビデオファイルが開かれた後にu64FilePos内の位置にセットされる。これはまた対応するDSD−MPEG2パーザモジュール変数を有する情報ファイルを開く際にも行われる。以前のコマンドにより選択されたトラック以外のトラックがリプレイされている場合には、両方のモジュール変数ともゼロにセットされなければならない。
【0054】
実際の実施においては、一般に以下のようなフィル間の数量比が達成されうる。例えば、65Mバイトのサイズのビデオファイルに対しては、情報ファイルは0.12%に相当するおよそ81Kバイトのサイズを有する。サイズが299Mバイトである別のビデオファイルに対しては、情報ファイルはおよそ0.06%に相当するおよそ146Kバイトのサイズを有する。
【0055】
使用されるトランスポートデータストリーム(トランスポートストリーム、TS)は、主に誤りの生じうるチャネルに対して使用されるパケット向けデータストリームである。
なお、このチャネルは通常は伝送用又は記憶用である。しかし、本発明はトランスポートデータストリーム内のすべてのパケットが関連性を有しているのか、又はその一部だけが関連性を有しているのかということにまったく依存していない。
【0056】
使用されるPESパケットは64Kバイトまでの可変サイズを有しており、基本データストリーム内に、イントラコーディングされた1つのフレーム(「Iフレーム」、約40Kバイト)又はインターコーディングされた2つまでのフレーム(「Bフレーム」、「Pフレーム」)を含むことができる。これは符号化されたフレームのサイズがフレームの内容に応じて可変であるからである。したがって、本発明による方法によれば、個々のPESパケットは、したがってまた個々のビデオフレームは、簡単かつ迅速にしかも正確に探し出すことができる。
【0057】
本発明の1つの重要な特徴は、PESパケットの探索に関連した情報が別に、例えば別のファイル又は別のメモリエリアに記憶されることである。本発明による方法のさらなる利点は、なによりも、特定の基本データストリーム内の特定のポイントを探し出すために、探索プロセス中に、2つ又はそれ以上の基本データストリームからのパケットを含んだ記憶されているトランスポートデータストリームをソートする必要がないことである。これら両利点とも、トランスポートデータストリームを受信したときの形を変えずに記憶することを可能にする。
【0058】
さらに、本発明による方法によれば、例えば可能な入口点の固定的枠組みを予め設定する代わりに、フレーム符号化の観点から可能なビデファイル内のどの入口点へも、すなわち、どのIフレームにもジャンプすることが可能である。インターコーディングされたフレーム、つまり、Bフレーム又はPフレームでさえ、これらがPESパケットの開始に位置しているかぎり、それらにジャンプすることが可能である。これらのポインの位置は情報ファイルが生成されるときに自動的に突き止められる。
【0059】
相対的オフセットの指定は、本方法がファイル全体の長さには依存していないことを意味している。最大ジャンプ幅だけが制限されている。もっとも、最大ジャンプ幅は高い信頼性を以て予測可能である。この場合には、関連性の定義に応じて、関連する次のTSP又は関連する先行TSPに対するオフセットを指定することもできる。
【0060】
本発明による方法は、有利には、パケット向けデータストリームをナビゲートしなければならない機器、例えば、パーソナルビデオレコーダ(PVR)や同様の機器のようなビデオデータ及び/又はオーディオデータの記録再生機器において、特に早送り、逆送り、及びリプレイ機能の実施のために使用することができる。

【特許請求の範囲】
【請求項1】
一定サイズの第1データパケット(TDP)から成る第1タイプのデータストリーム(MTS)内の所定位置を記憶又は再配置する方法であって、第1データパケット(TDP)内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第2の又は別のデータパケット(PP)を形成し、第2タイプの又は別のタイプの1つ又は複数の異なるデータストリーム(PES1,PES2)を生じさせるようにした方法において、 所定位置に配置された第1データパケット(TDP)が第2データパケットの開始又はヘッダ(PPH,PPH)を含むようにし、
前記所定位置の記述とそれぞれの第2データパケットに関する付加情報とを記憶する、又はデータストリームから個別に取り出すことを特徴とする方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−146391(P2012−146391A)
【公開日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2012−52265(P2012−52265)
【出願日】平成24年3月8日(2012.3.8)
【分割の表示】特願2004−340970(P2004−340970)の分割
【原出願日】平成16年11月25日(2004.11.25)
【出願人】(501263810)トムソン ライセンシング (2,848)
【氏名又は名称原語表記】Thomson Licensing 
【住所又は居所原語表記】1−5, rue Jeanne d’Arc, 92130 ISSY LES MOULINEAUX, France
【Fターム(参考)】