(57)【要約】【課題】データストリームをスキャンする際に、各データパケットを調べなくてもよくすることによりサーチ時間を短縮する。【解決手段】第１データパケット内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第２又は別のデータパケットを形成し、第２タイプ又は別のタイプの１つ又は複数の異なるデータストリームを生じさせるようにした、第１タイプのデータストリーム内の所定位置を記憶又は再配置する方法において、所定位置に配置された第１データパケットが第２データパケットの開始又はヘッダを含むようにし、前記所定位置の記述と各々の第２データパケットに関する付加情報とを記憶する又はデータストリームから個別に取り出す。【選択図】図２
2005158251.tif 000002
【特許請求の範囲】
【請求項１】
一定サイズの第１データパケット（ＴＤＰ）から成る第１タイプのデータストリーム（ＭＴＳ）内の所定位置を記憶又は再配置する方法であって、第１データパケット（ＴＤＰ）内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第２の又は別のデータパケット（ＰＰ）を形成し、第２タイプの又は別のタイプの１つ又は複数の異なるデータストリーム（ＰＥＳ１，ＰＥＳ２）を生じさせるようにした方法において、
所定位置に配置された第１データパケット（ＴＤＰ）が第２データパケットの開始又はヘッダ（ＰＰＨ１，ＰＰＨ２）を含むようにし、
前記所定位置の記述とそれぞれの第２データパケットに関する付加情報とを記憶する、又はデータストリームから個別に取り出すことを特徴とする方法。
【請求項２】
所定位置に配置された第１のデータパケット（ＴＤＰ）が、同じデータストリーム（ＥＤＳ）に関連したすべての第２データパケット（ＰＰ）の開始又はヘッダ（ＰＰＨ１，ＰＰＨ２）を自動的に含むようにする、請求項１記載の方法。
【請求項３】
第２データパケット（ＰＰ）が１つのタイプの符号化されたデータのみを含むようにし、第２データパケットの開始又はヘッダ（ＰＰＨ１，ＰＰＨ２）が第２データストリーム（ＥＤＳ）の復号のための入口点であるようにする、請求項１又は２記載の方法。
【請求項４】
第２タイプのデータストリーム（ＥＳＤ）のデータパケットの開始又はヘッダを含んだ第１タイプのデータストリーム（ＭＴＳ）内のデータパケット（ＰＰ♯１２）の位置を、第２タイプのデータストリーム（ＥＤＳ）内の次の又は前の第２データパケットの開始又はヘッダを含んだ第１タイプのデータストリーム（ＭＴＳ）内の別のデータパケット（ＰＰ♯１１）に対して相対的に（ＯＰ，ＯＢ）記述する、請求項１から３のいずれか１項記載の方法。
【請求項５】
前記相対的指定（ＯＰ，ＯＢ）を第１タイプのパケットの数（ＯＰ）として及びバイト数として（ＯＢ）定める、請求項１から４のいずれか１項記載の方法。
【請求項６】
ＰＥＳパケットのヘッダの位置とそれぞれのヘッダのタイムスタンプとを含む情報を別に記憶し、第１タイプのデータストリーム（ＭＴＳ）をＭＰＥＧ−２トランスポートデータストリームとする、請求項１から５のいずれか１項記載の方法。
【請求項７】
サイズ可変のデータパケット（ＰＰ）から構成された第２タイプのデータストリーム（ＥＤＳ）内での早送り又は逆送りの方法であって、前記サイズ可変のデータパケット（ＰＰ）を第１タイプのデータストリーム（ＭＴＳ）内の一定サイズの他のデータパケット（ＴＤＰ）から抽出し、ファイルポインタが第１タイプのデータストリーム（ＭＴＳ）内での現在位置を示すようにした方法において、
第２タイプのデータストリーム（ＥＤＳ）内のデータパケット（ＰＰ）の開始又はヘッダを含んだ第１タイプのデータストリーム（ＭＴＳ）内のデータパケット（ＰＰ♯１１，ＰＰ♯１２）の相対的位置をメモリ又はファイルから検索し、
第１タイプのデータストリーム（ＭＴＳ）内での別のデータパケット（ＰＰ♯１２）の位置をファイルポインタ（ＰＰ♯１１）の位置から及び前記別のデータパケット（ＰＰ♯１２）の検索された位置から計算し、
ファイルポインタを第１タイプのデータストリーム（ＭＴＳ）内の計算された位置へジャンプさせることを特徴とする方法。
【請求項８】
第１タイプのデータストリーム（ＭＴＳ）内のデータパケットのうちで第２タイプのデータストリーム（ＥＤＳ）内のデータパケット（ＰＰ）の開始又はヘッダを含んだすべてのデータパケット（ＰＰ♯１１，ＰＰ♯１２）をメモリ又はファイルから呼び出す、請求項７記載の方法。
【請求項９】
第２タイプのデータストリーム（ＥＤＳ）内のデータパケット（ＰＰ）がヘッダ（ＰＰＨ１，ＰＰＨ２）内にタイムスタンプを含み、
さらに、前記タイムスタンプを、それぞれのヘッダを含んだデータパケット（ＰＰ♯１１，ＰＰ♯１２）の第１タイプのデータストリーム（ＭＴＳ）内での位置詳細とともにメモリ内又はファイル内に記憶し、ならびに前記メモリ又は前記ファイルから呼び出し、前記タイムスタンプを第２タイプのデータストリーム（ＥＤＳ）内での位置の決定又は指定に使用する、請求項７又は８記載の方法。
【請求項１０】
サイズ可変のデータパケット（ＰＰ）から構成された第２タイプのデータストリーム（ＥＤＳ）内での早送り又は逆送りのための装置であって、前記サイズ可変のデータパケット（ＰＰ）が第１タイプのデータストリーム（ＭＴＳ）内の一定サイズの他のデータパケット（ＴＤＰ）から抽出され、ファイルポインタが第１タイプのデータストリーム（ＭＴＳ）内での現在位置を示す形式の装置において、
該装置は、
第２タイプのデータストリーム（ＥＤＳ）内のデータパケット（ＰＰ）の開始又はヘッダを含んだ第１タイプのデータストリーム（ＭＴＳ）内のデータパケット（ＰＰ♯１１，ＰＰ♯１２）の相対的位置の検索に使用される記憶媒体と、
別のデータパケット（ＰＰ♯１２）の第１タイプのデータストリーム（ＭＴＳ）内での位置をファイルポインタ（ＰＰ♯１１）の位置から及び前記別のデータパケット（ＰＰ♯１２）の検索された位置から計算するための手段と、
ファイルポインタを第１タイプのデータストリーム（ＭＴＳ）内の計算された位置にセットするための手段とを有する、ことを特徴とする装置。
【請求項１１】
第２タイプのデータストリーム（ＥＤＳ）内のデータパケット（ＰＰ）がタイムマーカを有しており、該タイムマーカは、それぞれのパケットヘッダ（ＰＰＨ２）を含んだデータパケット（ＰＰ♯１２）の位置詳細（ＯＰ，ＯＢ）とともに前記記憶媒体から検索され、早送り又は逆送りのために選択される前記他のデータパケット（ＰＰ♯１２）は、該データパケットに対応付けられたタイムマーカと現在のデータパケット（ＰＰ♯１１）に含まれているタイムマーカとが所定の時間差を有するように選択される、請求項１０記載の装置。
【請求項１２】
サイズ可変のデータパケット（ＰＰ）から構成された第２タイプのデータストリーム（ＥＤＳ）に関する情報を計算及び記憶するための装置であって、前記データパケット（ＰＰ）が自らのヘッダ（ＰＰＨ１，ＰＰＨ２）内にタイムマーカを有し、且つ第１タイプのデータストリーム（ＭＴＳ）の一定サイズの他のデータパケット（ＴＤＰ）の内容から構成されている形式の装置において、
該装置は、
第１タイプのデータストリーム（ＭＴＳ）のデータパケット（ＴＤＰ）を第２タイプのデータストリーム（ＥＤＳ）に対応付けるための手段と、
第２タイプのデータストリーム（ＥＤＳ）のデータパケット（ＰＰ）のタイムマーカを第１タイプのデータストリーム（ＭＴＳ）のデータパケット（ＴＤＰ）から抽出するための手段と、
ヘッダを含んだ現在のデータパケット（ＰＰ♯１１）からヘッダを含み且つ同じ第２タイプのデータストリーム（ＥＤＳ）の一部である次のデータパケット（ＰＰ♯１２）まで第１タイプのデータストリーム（ＭＴＳ）のデータパケット（ＴＤＰ）をカウントするためのカウンタと、
データブロック（ＩＢ）を記憶するための手段とを有しており、
前記データブロックの各々は、第２タイプのデータストリーム（ＥＤＳ）の１つのデータパケット（ＰＰ）に対応付けられており、少なくとも決まった数のパケットと抽出されたタイムマーカとを含んでいる、ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータストリーム（ＭＴＳ）内の所定位置を記憶又は再配置するための方法及び装置に関する。
【背景技術】
【０００２】
例えばＭＰＥＧ２規格ＩＳＯ／ＩＥＣ  １３８１８−１に基づいたデジタルデータストリームはしばしばパケットに分割される。この場合、時間明細のようなある種の情報アイテムは特定のパケットにしか含まれない。特に、上に引用した規格はトランスポートデータストリーム（ＴＳ）の構造を定義する。ＭＰＥＧ２−ＴＳデータストリームは、連続したトランスポートパケット（“Transport Stream Packets”，ＴＳＰ）から成るパケット向けストリームである。ＴＳＰはヘッダとトランスポートデータから構成されており、このヘッダとトランスポートデータはパケット向け基本データストリーム（Packetized Elementary Stream，ＰＥＳ）のパケット（ＰＥＳパケット）の一部を為している。ＰＥＳパケット全体を得るためには、個々の部分は連続的に関連づけられたＴＳＰから抽出されなければならず、またプロセス中にＴＳＰの順番を変えずにアセンブルされなければならない。ＰＥＳパケットはヘッダ情報とデータフィールドから構成されている。データフィールドは、例えば、ビデオデータストリームの一部又はオーディオデータストリームの一部であってよい。このようなデータストリームをサーチ（スキャン）して情報を得るには、各パケットが調べられねばならず、長い時間がかかる。さらに、広範囲にわたる評価プロセス、例えば誤り検査又は誤り補正が必要とされることもある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、データストリームをスキャンする際に、各データパケットを調べなくてもよくすることによりサーチ時間を短縮することである。
【課題を解決するための手段】
【０００４】
上記課題は、一定サイズの第１データパケットから成る第１タイプのデータストリーム内の所定位置を記憶又は再配置する方法であって、第１データパケット内に含まれているデータアイテムを順番を変えずに組み合わせてサイズ可変の第２又は別のデータパケットを形成し、第２タイプの又は別のタイプの１つ又は複数の異なるデータストリームを生じさせるようにした方法において、所定位置に配置された第１データパケットが第２データパケットの開始又はヘッダを含むようにし、前記所定位置の記述とそれぞれの第２データパケットに関する付加情報とを記憶する又はデータストリームから個別に取り出すようにすることにより解決される。
【発明を実施するための最良の形態】
【０００５】
パケット向けデータストリーム内の各データパケットを調べなくてもよくするために、データストリームのスキャン中に役立つ情報ファイル（インフォファイル）が生成される。このファイルには、示差的情報アイテムのそれぞれのオフセットが記憶される。つまり、パケット及びバイトのオフセットが記憶される。データストリームと情報ファイルは並列に、つまり、同時にスキャンされ、情報ファイルは、所望の情報がある次の指定された位置又は次のマークされた入口点に到達するためにデータストリーム内のいくつのパケット又はバイトをスキップしうるかを特定するのに使用される。さらに、各々のデータパケットに関するさらなる情報アイテムを情報ファイルに記憶してもよい。これらの情報アイテムは、より大掛かりなプロシージャを用いてデータストリームから評価されなければならない。したがって、これらのプロシージャは一度だけ実行されるようにしなければならない。これはスタジオ自体において又はユーザのレコーダにおいてレコーディングプロセスの間に又はその後の後処理の間に行ってもよい。この目的のためには、原則的に、機器が情報ファイルを記録することができ、また記録したデータストリームを再生することができるだけで十分である。本発明による情報ファイルによれば、実質的に遅延なしでデータストリームのスキャンができ、したがって、情報抽出にとって、ならびに、データストリーム内の特定の位置へのジャンプにとって非常に大きな時間的利点がもたらされる。
【０００６】
本発明による、パケット向けデータストリームのスキャンのための情報ファイルは、情報ブロックのシーケンスから構成されている。各情報ブロックはデータストリーム内の専用パケットに対応付けられており、２つの成分を有している。この２つの成分の第１はオフセット、すなわち、次の情報ブロックに対応付けられた次のデータパケットが現れるまでのパケット数又はバイト数であり、第２は現在対応付けられているデータパケットに関する付加情報、例えば各々のタイムスタンプである。
【０００７】
情報ファイルが可変データ速度及び種々のパケットサイズをよりよくサポートすることができるように、情報ブロックはパケット及びバイトの双方について次の関連パケットまでのオフセットを含んでいる。このケースでは、原則的に、２つの詳細のうちの一方で十分である。
【０００８】
さらに、上記オフセットは相対的である。したがって、本発明による情報ファイルは任意のサイズのデータストリームをサポートすることができる。ストリームの開始に関係づけられた絶対オフセットとは対照的に、オフセットのサイズから生じる制限は２つのデータパケットの間の距離にしか関係せず、ファイル長には関係しない。
【０００９】
情報ファイルは、特に、パケット向けデータストリーム内での高速早送り及び逆送りに利用され、融通性を向上させる。情報ファイルの使用はパケット向けデータストリームの格段に高速なスキャンを可能にする。なぜならば、関心のないパケット及び無関係なパケット、特に、トランスポートデータストリーム内のパケットのうちで異なる基本データストリームの一部であるパケット又はＰＥＳパケットヘッダを含んでいないパケットをスキップすることができるからである。さらに、複雑な計算の結果を付加情報として情報ファイル内に記憶してもよい。そうすることにより、計算は一度だけ、例えば情報ファイルを生成するときに実行するだけでよい。情報ファイルの使用は、データストリーム内でスキップされるパケット数が大きくなればなるほど、また所望の情報アイテムをデータストリームから抽出するプロセスが難しくなればなるほど効果的になる。
サイズ可変のデータパケットから構成された基本データストリーム内での早送り又は逆送りのための装置であって、サイズ可変のデータパケットが例えばＴＤＰなどのトランスポートデータストリーム内の一定サイズの他のデータパケットから抽出され、ファイルポインタがトランスポートデータストリーム内での現在位置を示す形式の装置において、該装置は、基本データストリーム内のデータパケットの開始又はヘッダを含んだトランスポートデータストリーム内のＴＤＰの相対的位置の検索に使用される記憶媒体と、別のＴＳＰのトランスポートデータストリーム内での位置をファイルポインタの位置から及び前記記憶媒体から検索された位置詳細又はオフセットから計算するための手段、例えばプロセッサと、ファイルポインタをトランスポートデータストリーム内の計算された位置にセットするための手段とを有する。
【００１０】
本発明の有利な実施形態は、請求項、以下の詳細な説明、及び図面に記載されている。
【実施例】
【００１１】
本発明をＭＰＥＧ−２記憶再生装置（デジタルストレージデバイス、ＤＳＤ）用のパーザを例として説明する。このＭＰＥＧ−２記憶再生装置は以下のテキストではＤＳＤ−ＭＰＥＧ２パーザと呼ばれる。
【００１２】
ＤＳＤ−ＭＰＥＧ２パーザは、ＴＳＰから成るＭＰＥＧ−２  ＴＳデータストリームを調べ、このストリーム内に含まれているＰＥＳパケットのパーツから完全なＰＥＳパケットを組み立てようとする。ＴＳＰは複数の異なるＰＥＳパケットに属していることもあるので、異なる基本データストリームが形成される。図１には、単純化されたＭＰＥＧ２トランスポートデータストリームＭＴＳと、対応付けられた基本データストリームＰＥＳ１，ＰＥＳ２が、概略的に図解されている。トランスポートデータストリームＭＴＳはＭＰＥＧ２トランスポートパケットＴＳＰから構成されており、ＭＰＥＧ２トランスポートパケットＴＳＰはそれぞれヘッダとデータ、又はペイロードを含んでいる。このペイロードはＰＥＳパケットのパーツを表しており、ＰＥＳパケットヘッダとデータ、又はペイロードから構成されている。対応付けられたＰＥＳパケットＰＰ♯１，ＰＰ♯２から基本データストリームＰＥＳ１，ＰＥＳ２が生じる。基本データストリームＰＥＳ１，ＰＥＳ２のうちの一方は、例えば、ビデオデータを含み、他方はオーディオデータを含む。
【００１３】
ＰＥＳパケットのヘッダ内にある“ｓｔａｒｔ＿ｃｏｄｅ＿ｐｒｅｆｉｘ”は２４ビットの長さを有し、固定値０００００１ｈｅｘを有している。次の“ｓｔｒｅａｍ＿ｉｄ”は搬送されるデータストリームのタイプ（“ＰＥＳ＿ｐａｃｋｅｔ＿ｄａｔａ＿ｂｙｔｅ”）を表す。これはビデオストリームではＥ０ｈｅｘからＥＦｈｅｘまでの範囲内にあり、オーディオストリームではＣ０ｈｅｘからＤＦｈｅｘまでの範囲内にある。
【００１４】
パーザはＴＳＰのヘッダからの“ｐａｙｌｏａｄ＿ｕｎｉｔ＿ｓｔａｒｔ＿ｉｎｄｉｃａｔｏｒ”フラグの値が１であるか、またこのようなＴＳＰのデータエリアが３２ビットに拡張されたＰＥＳパケットの“ｓｔａｒｔ＿ｃｏｄｅ＿ｐｒｅｆｉｘ”に従って値０００００００１ｈｅｘを有しているかを調べる。両方のフィールドが期待される値を有していれば、パーザは現在のＴＳＰにおいて新たなＰＥＳパケットが開始していると判断する。
【００１５】
ＰＥＳパケットは“Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｔｉｍｅｓｔａｍｐ”（ＰＴＳ）及び“Ｄｅｃｏｄｉｎｇ  Ｔｉｍｅｓｔａｍｐ”（ＤＴＳ）を有していてもよい。ＰＴＳは搬送されるデータが提示されるべき時点を表し、ＤＴＳはデータ復号時間に関する情報を提供する。ＰＥＳパケットのヘッダにも含まれている“ＰＴＳ＿ＤＴＳ＿ｆｌａｇ”は、ＰＥＳパケットがＰＴＳ又はＤＴＳを含んでいるか否かを表す。ＩＳＯ／ＩＥＣ規格１３８１８−１は、連続するＰＴＳ間の間隔は高々０．７ｓであると規定している。現在位置、つまり、現在のタイムコードを決定するために、ＰＴＳを評価してもよい。
【００１６】
ＰＴＳを評価する際に生じる１つの問題は、ＰＴＳはビデオデータストリームのゼロ位置で開始しなくてもよく、任意の（開始）値をとりうるということである。ビデオデータストリーム内の個々のフレームは、正確にそれらが表示される順序で符号化されているわけではない。したがって、限定された範囲内で、ＰＴＳはより小さくなりうる。しかし、ＰＴＳの長さは制限されているので、これは「オーバーフロー」につながる。さらに、ＰＴＳは逐次的にアセンブルされた異なるビデオデータストリーム要素間の過渡点で大幅にジャンプすることもある。しかし、このＰＴＳのジャンプは再生されているビデオのタイムコードにおけるジャンプを意味するものではない。ＭＰＥＧ２−ＴＳデータストリーム内の第１のＰＴＳがゼロ位置でないこともありうるという問題は、以下のようにして解決することができる。タイムコードを値として有する変数、すなわち、経過した再生時間をＲｅｓｅｔ（）の呼出しの際にゼロに設定する。この変数には、連続する２つのＰＴＳの間の差が順次加算される。この値の単位がミリ秒となるようにするため、差の値を９０で除する。連続する２つのＰＴＳの間の差が、０．７に相当するＦＦＦＦｈｅｘよりも大きい状況では、差を無視する。この状況は、２つのアセンブルされたストリーム要素の間の過渡点に達したときに生じる。パーザが「スプリアス」なＰＴＳに遭遇すると、このＰＴＳと前のＰＴＳとの間の差及びこのＰＴＳと次のＰＴＳとの間の差は無視される。というのも、両方の値とも０．７ｓより大きいからである。
【００１７】
隣接する２つのＰＴＳの間の差は、この差が０．７に相当するＦＦＦＦｈｅｘよりも大きくない場合にのみ、タイムコードの計算に含められる。この計算はＰＴＳの最下位１６ビットだけを必要とする。一方、ＰＴＳの長さは３３ビットである。しかし、計算には１６ビットしか必要とされず、また２つのＰＴＳとＦＦＦＦｈｅｘとの比較も３２ビットを用いて格段に容易に実行することができるので、一般にＰＴＳ内のＭＳＢ（最上位ビット）は無視される。
【００１８】
早送り又は逆送りの間、表示のためのビデオデータはＩＥＥＥ１３９４バスを介して送られず、位置ポインタのみがビデオファイル内でシフトされる。ファイルポインタが移動する速度は早送り又は逆送りの速度である。この目的で、現在のタイムコードが連続的に求められる。現在のタイムコードは例えばディスプレイモジュールに表示してもよい。
【００１９】
計算で求めることのできるこの早送り又は逆送りの速度を一定にするため、ファイルポインタは一定の時間間隔で指定されたタイムコードのステップの分だけシフトされる。この目的で、求められているタイムコードに対応するビデオストリーム内のデータパケットが探し出されなければならない。早送り又は逆送りプロセスの基本的なプロシージャは表１に示されている。
【００２０】
【表１】
2005158251.tif 000003
【００２１】
早送り及び逆送りの速度は、タイムコードにおける差（CurrentTimeCode＋ΔＴ）とルーチン内のその後の待機時間とによって設定することができる。ループ内の待機時間はまったく制限なしに選択してよい。タイムコードにおける差ΔＴはこの待機時間に合うように決定され、特定の早送り又は逆送り速度が達成される。
【００２２】
早送り又は逆送り速度は特定の時間内に飛び越されるタイムコードの間隔である。これは、例えば、フィルムの１０秒は１秒で飛び越されなければならないことを意味する。待機時間は過度に長くてはならない。というのも、そうでなければ、タイムコード表示は、早送り又は逆送りの間、長い間隔でしか追うことができなくなるからである。しかしながら、待機時間はまた、ΔＴが２つのタイムコードの間の平均間隔より短い値をとるほど短くてはならない。さらに、待機時間は時間表示の読み取り易さに影響する。
【００２３】
早送り及び逆送りの間、ビデオストリーム内の現在位置におけるタイムコードが知られていなければならないので、ビデオデータストリームは連続的にパーズされなければならない。このことは、ＭＰＥＧ２−ＴＳデータストリームでは、すべてのＴＳＰが調べられなければならないことを意味する。ＰＥＳパケットは、ＰＴＳの出現に関して測定され調べられなければならない。つぎに、ＰＴＳは誤り検査を受け、必要ならば、誤りが訂正されなければならない。しかし、このプロセスは長い時間がかかるので、早送り及び逆送りは無限定に迅速に実行することはできない。しかし、早送り及び逆送りは、現在のタイムコードとこれを含んだＴＳＰが容易に求められるようにする本発明による情報ファイルの使用によって著しく単純化される。
【００２４】
すべてのＰＥＳパケットがＰＴＳを含む必要はない。しかしながら、ＰＥＳパケットがＰＴＳを含むのであれば、このＰＴＳはＰＥＳパケットの開始に位置していなければならない。したがって、一旦ＰＴＳが見つかれば、多数のＴＳＰをスキップすることができる。しかし、ビデオデータストリームをパーズしている間は、飛び越すことのできるＴＳＰの数は前もって知られてはいない。この状況においては、本発明による情報ファイルの有利な効果を利用することができる。
【００２５】
図２には、本発明による情報ファイルＩが示されている。情報ファイルＩは、原則的に、オフセット値ＯＰ，ＯＢのシーケンスを含んでいる。これらのオフセット値は、早送り及び逆送りの間にいくつの基本パケットが無関係であり、飛ばしてもよいものであるかを示す。各オフセットに関する付加情報ＡＩも記憶される。これら３つのフィールドはともになって各ＰＥＳパケットの情報ブロックＩＢを形成する。「オフセットパケット」ＯＰ及び「オフセットバイト」ＯＢの値は、基本トランスポートデータパケット（ＴＳＰｓ）ＴＤＰの数と、２つの関連ＴＳＰの間のバイト数、すなわち、例えば、同じ基本データストリームＥＤＳ内で直接的に相前後するＰＥＳパケットのヘッダＰＰＨ１，ＰＰＨ２を含んだトランスポートデータストリームＭＴＳ内の２つのパケットＰＰ♯１１，ＰＰ♯１２の間のバイト数を示す。このそれぞれのＰＥＳパケットＰＰに対応付けられたＴＳＰはこれらの関連ＴＳＰの間に位置しているが、異なる基本データストリームのＰＥＳパケットに対応付けられたＴＳＰもそこに出現しうる。情報ブロックＩＢは２つのオフセット値ＯＰ，ＯＢと付加情報フィールドＡＩとから構成されている。付加情報フィールドＡＩはデータパケット内のそれぞれのパケットＰＰ♯１１，ＰＰ♯１２に関しており、例えば、このパケットのタイムスタンプ（ＰＴＳ）を含んでいる。各情報ファイルはただ１つの基本データストリーム、有利にはビデオデータストリームに関している。というのも、早送り及び逆送りプロセスはこのデータストリーム向けを意図しているからである。
【００２６】
ＭＰＥＧ２−ＴＳデータストリームの場合には、情報ブロック内の最初の２つのフィールドＯＰ，ＯＢは連続する２つのＰＥＳパケットの間の間隔を示しており、各々３２ビットの長さを有している。上記用途における「付加情報」フィールドＡＩは、各ビデオフォーマットに関して、完全に計算され誤り訂正されたタイムコードを含んでおり、同じく３２ビットの長さを有している。上記形式の情報ブロックはしたがって３×３２＝９６ビットの長さを有している、つまりＭＰＥＧ２−ＴＳデータストリーム内に１２バイトを有する。しかしながら、早送り及び逆送り速度が再び低下するほど情報ファイルが長くならない限りで、さらに別のデータを付加情報フィールドに記憶すると有利である。この適用形態では、情報ファイル内の情報によって関係のないすべてのＴＳＰを直ちにスキップすることができる。情報ファイルＩと基本データストリームＥＤＳ、例えばＭＰＥＧ２に基づいたビデオデータストリームとの間のナビゲーション又は同期は、ＰＥＳパケットごとに実行される。タイムコードはこのケースでは直接情報ファイルから読み出されるので、それぞれの早送り又は逆送りプロセスの最中に再計算しなくてもよい。
【００２７】
記録されたＭＰＥＧ２−ＴＳビデオデータストリームは、ＰＥＳパケットの開始（「ＰＥＳスタート」）を含んだＴＳＰを以て始まる必要はない。例えば、ＤＳＤがライブストリームを記録しているならば、第１ＴＳＰは連続的なトランスポートデータストリームからの未定義パケットである。この状況は図３に示されている。トランスポートデータストリームＭＴＳは、第１パケットＰＳＰ♯１が「ＰＥＳスタート」を以て出現する前に、２つの別のデータパケットＯＴＨを以て始まる。情報フィイル内の第１オフセット値ＯＰ１，ＯＢ１は、「ＰＥＳスタート」を含む第１ＭＴＳパケットＰＳＰ♯１と、同じく「ＰＥＳスタート」を含む第２ＭＴＳパケットＰＳＰ♯２との間の距離を記述する。トランスポートデータストリームＭＴＳ内の第１ＴＳＰは完全なＰＥＳパケットを含んでおらず、それらが同じ基本データストリームに対応付けられていても情報ファイルにより無視される。しかし、さらに、情報ファイル内の第１エントリは、第１ＰＥＳパケットＰＳＰ♯１までの距、離又は飛び越すべき無関係のＴＳＰであるＯＴＨの数も示す。
【００２８】
ビデオストリームの記録が終了すれば、最も最近受け取ったＴＳＰがＰＥＳパケットの終了を含んでいる必要はない。それゆえ、「オフセットパケット」値がゼロであるＭＰＥＧ２特有の情報ファイルの最後の情報ブロックにさらなるブロックが付加され、その後に「ＰＥＳスタート」を含んだ最後のＴＳＰの位置が続く。この最初のＰＥＳパケットは完全でなくてもよく、またリプレー中に送られてはならない。図３に示されている短縮化された例では、最後の通常情報ブロックＯＰ２，ＯＢ２，ＴＣ２は、ＰＳＰ♯２を以て始まる最後の完全なＰＥＳパケットとＰＳＰ♯３を以て始まる最後の不完全なＰＥＳパケットとの間の距離を記述している。オフセットＯＰ２は３である。なぜならば、後続の第３ＴＳＰは同じ基本データストリームに対応付けられた次のＰＥＳパケットを含んでいるからである。オフセットＯＢ２は、ＰＳＰ♯２を以て始まるＰＥＳパケット内のバイトの和である。タイムコードＴＣ２はこのＰＥＳパケットの表示時間又はＰＴＳに相当する。しかし、最も最近の情報ブロックＯＰ３，ＯＢ３，ＴＣ３は、オフセット値ＯＰ３に関してゼロを含んでおり、このオフセット値ＯＰ３の後に最後の「ＰＥＳスタート」ＰＳＰ♯３の位置が続いている。したがって、これは記録された基本データストリームの終了を記述している。
【００２９】
情報ファイルを援用してスキャンされている最中のビデオデータストリームはまず第一に情報ファイルと同期していなければならない。このためには、ＰＥＳパケットの開始を含んだビデオデータストリーム内の第１ＴＳＰ、つまり、「ＰＥＳスタート」を探す必要がある。
【００３０】
情報ファイルは、フォーマットごとに固有のＤＳＤストリームパーザにおいて生成され、評価される。それゆえ、各ビデオフォーマットに関して、個別的な付加情報フィールド及び情報ブロックのための個別的ビット長を備えた特別あつらえの情報ファイルを生成することが可能である。
【００３１】
通常、情報ファイルはビデオデータを受け取っている間、つまり、記録プロセス中に生成される。すでに存在しているトラックに関して情報ファイルが存在していない場合には、このような情報ファイルは、ＤＳＤアプリケーションが開始されたときに生成することができる。したがって、例えば、ビデオファイルが手動でコピーされている場合のように、記録中に本発明による情報ファイルが生成されなかったようなビデオファイルをもレプレイすることが可能である。情報ファイルはまたビデオデータとともに送信及び受信するようにしてもよい。
【００３２】
表２に列記された関数はＤＳＤストリームパーザモジュールにおいてインタフェースの提供のために定義されているものであり、情報ファイルを開き、生成し、閉じることができる。
【００３３】
【表２】
2005158251.tif 000004
ＰａｒｓｅＰａｃｋｅｔ（）を呼び出すと、情報ファイルが読み出され、ＰａｒｓｅＳｔｒｅａｍ（）を呼び出すと、以前に呼び出された関数がＯｐｅｎＩｎｆｏＦｉｌｅ（）であるか又はＣｒｅａｔｅＩｎｆｏＦｉｌｅ（）であるかに応じて、情報ファイルが読み出し又は生成される。
【００３４】
関数ＣｈｅｃｋＳｙｎｃ（）は、ビデオデータストリームと情報ファイルとが同期しているか否かをチェックする。ＭＰＥＧ２−ＴＳデータストリームの場合には、ビデオストリーム内の現在位置における“ｐａｙｌｏａｄ＿ｕｎｉｔ＿ｓｔａｒｔ＿ｉｎｄｉｃａｔｏｒ”フラグが１にセットされているか否か、及び“ｓｔａｒｔ＿ｃｏｄｅ＿ｐｒｅｆｉｘ”が値０００００１ｈｅｘを含んでいるか否かを判定するためにチェックが行われる。上記判定の結果が肯定的であれば、ＴＳＰはビデオストリーム内の現在位置においてＰＥＳパケットの開始を含んでいる。情報ファイルはそれぞれ隣接する「ＰＥＳスタート」を含む２つのＴＳＰの間の間隔を示すので、これは情報ファイルを用いたビデオデータストリームのスキャンにとって必要条件である。この場合、関数は値「真」を返す。
【００３５】
ＰａｒｓｅＰａｃｋｅｔ（）を呼び出すと、ＭＰＥＧ２−ＴＳデータストリーム内の単一のＴＳＰがスキャンされる。ＰａｒｓｅＰａｃｋｅｔ（）の連続的呼出しは入力パラメータとして連続したＴＳＰを含む。現時点においてパーズされているパケットに関するタイムコードは関連する情報ファイルから読み出される。それゆえ、以前にＯｐｅｎＩｎｆｏＦｉｌｅ（）が呼び出されていることが必要である。図４には、ＰａｒｓｅＰａｃｋｅｔ（）ルーチンのプロシージャが示されている。
【００３６】
パーズすべきビデオデータストリームは先ず、ＰａｒｓｅＰａｃｋｅｔ（）の個々の呼出しの際に「ＰＥＳスタート」を含むビデオデータストリーム内の第１ＴＳＰを探すことにより情報ファイルに同期される。この目的で、第１のステップＤ１において、ＴＳＰヘッダの第１バイトであるｓｙｎｃ＿ｂｙｔｅが特定の値４７ｈｅｘを有しているかが調べられる。モジュール変数bFirstPESReachedは、このＴＳＰがすでに見つけ出されているか否かを示す。第２のステップＤ２では、ＰａｒｓｅＰａｃｋｅｔ（）がこの変数を調べる。ＴＳＰがまだ見つけ出されていなければ、ＣｈｅｃｋＳｙｎｃ（）が呼び出される。bFirstPESReachedの値は、返された値に応じて「真」にセットすることができる。第３のステップＤ３では、この変数を使用して、再度ＰＥＳパケットの開始を有する第１ＴＳＰが見つけ出されているか否かをチェックする。ビデオデータストリームがＰａｒｓｅＰａｃｋｅｔ（）の呼出しの際に情報ファイルに同期されていれば、関連する「ＰＥＳスタート」を含む次のＴＳＰに関するオフセットがインフォファイルから読み出される。モジュール変数u32PacketsToNextPESには、決定されたオフセットの値が与えられる。関数の新たな呼出しが行われると、変数は減分される。情報ファイルは、変数が値ゼロに達するまで再び読み出されない。ゼロのオフセットが情報ファイルから読み出されると（Ｄ４，Ｄ５）、すなわち、ファイルの終了に達すると、「ＰＥＳスタート」を含む最後のＴＳＰの位置がモジュール変数u64ByteCounterAtPESStartに転送される。この変数の値は関数ＧｅｔＣｕｒｒｅｎｔＥｎｄＯｆＶａｌｉｄＳｔｒｅａｍ（）によって返される。ファイルの終了に達していなければ、現在のＴＳＰに対応付けられたタイムコードが情報ファイルから読み出され、モジュール変数u32ElapsedTimeに格納される。
【００３７】
関数ＰａｒｓｅＳｔｒｅａｍ（）は、１つ又は複数のＴＳＰから構成されたビデオデータストリームの一部をスキャンする。この関数は情報ファイルからのタイムコードの決定だけでなく、このようなファイルの生成もサポートする。使用されるモードは、以前に呼び出された関数がＯｐｅｎＩｎｆｏＦｉｌｅ（）であるか又はＣｒｅａｔｅＩｎｆｏＦｉｌｅ（）であるかに依存する。どちらの場合でも、パーズすべきビデオデータストリームから単一のビデオデータパケットがループにおいて抽出される。このループは各々パケットを通過し終わるまで続く。プロセス内のモジュール変数u32TSPCounterは抽出されたパケットをカウントし、抽出されたバイトはu64ByteCounterにおいてカウントされる。以前に呼び出された関数がＯｐｅｎＩｎｆｏＦｉｌｅ（）である場合、抽出されたそれぞれのパケットはＰａｒｓｅＰａｃｋｅｔ（）の関数呼出しの入力パラメータとして使用される。「ＰＥＳスタート」を有する第１ＴＳＰに達するとすぐに、u64ByteCounterに含まれている現在のバイト数がモジュール変数u32CurrentStartOfStreamOffsetに転送される。
【００３８】
情報ファイルを生成しようとする場合には、現在のＴＳＰはプライベート関数ＰａｒｓｅＴｒａｎｓｐｏｒｔＰａｃｋｅｔ（）に転送される。この関数は、ＴＳＰが基本データストリームに関連しているか否かを判定し、基本データストリームからＰＥＳパケットのピースを抽出し、バッファに記憶する。各々の関数呼出しごとに、ＰＥＳパケットの別のピースがバッファに記憶される。ＴＳＰが新たなＰＥＳパケットの開始を含んでいれば、変数u32TSPCounterのカウントがモジュール変数u32TSPCounterAtPESStartに格納され、u64ByteCounterの現在値がu64ByteCounterAtPESStartに格納され、以前に記憶されたすべてのＰＥＳパケットのピースが結合され、完全なＰＥＳパケットがプライベート関数ＰａｒｓｅＰＥＳＰａｃｋｅｔ（）により調べられる。この関数は対応付けられたＰＴＳが存在すればそのＰＴＳを調べ、それをモジュール変数u32PTSに格納する。また、例えば、ＰＥＳパケットがビデオデータストリーム又はオーディオデータストリームを含んでいるか否かを判定するために、ＰＥＳパケットをさらに調べることも可能である。ＰＴＳはＰａｒｓｅＴｒａｎｓｐｏｒｔＰａｃｋｅｔ（）において調べられ、誤りのチェック及び訂正が行われ、現在のタイムコードが計算され、開かれている情報ファイルに書き込まれる。タイムコードは上で説明した方法を用いて計算される。「ＰＥＳスタート」を含んだ２つの隣接するＴＳＰの間の距離は、モジュール変数u32TSPCounter、u32TSPCounterAtPESStart、u64ByteCounter、及びu64ByteCounterAtPESStartを用いて計算される。
【００３９】
関数ＧｅｔＣｕｒｒｅｎｔＥｎｄＯｆＶａｌｉｄＳｔｒｅａｍ（）は、ＰａｒｓｅＰａｃｋｅｔ（）及びＰａｒｓｅＳｔｒｅａｍ（）に関して説明したように、変数u64ByteCounterAtPESStartの現在値を返す。このように、関数ＧｅｔＣｕｒｒｅｎｔＥｎｄＯｆＶａｌｉｄＳｔｒｅａｍ（）は、「ＰＥＳスタート」を含んだＴＳＰで最も最近パーズされたものの位置を与える。
【００４０】
関数ＧｅｔＳｔａｒｔＯｆＳｔｒｅａｍＯｆｆｓｅｔ（）は、ＰａｒｓｅＳｔｒｅａｍ（）において埋められた変数u32CurrentStartOfStreamOffsetの値を返す。アプリケーションがビデオストリームをリプレイしている場合、実際の伝送は返された値から開始される。これにより、リプレイの開始時に不完全なＰＥＳパケットが伝送されることが防止される。ビデオデータストリームは任意のポイントから始めて記録することができるため、記録されたファイルは第１ＴＳＰ内の「ＰＥＳスタート」で始まる必要はない。変数u32CurrentStartOfStreamOffsetは初めは初期値ＦＦＦＦＦＦＦＦｈｅｘに設定される。関数がこの値を返した場合、それはＰａｒｓｅＳｔｒｅａｍ（）においてまだ「ＰＥＳスタート」が見つけ出されていないことを意味する。
【００４１】
情報ファイル内の特定のタイムコードのサーチは、ＤＳＤ−ＭＰＥＧ２パーザのＳｅｅｋＴｉｍｅＣｏｄｅ（）ルーチンを用いて行われる。順方向サーチと逆方向サーチ（サーチタイプ）が区別される。ビデオストリーム内で適切なＴＳＰに達するためにファイルポインタが通過しなければならないバイトの数が返される。ルーチンの逆方向サーチパスでは、パラメータとして転送されるタイムコードより小さな又は等しいタイムコードが情報ファイル内で探索される。この目的で、表３に記載されているアルゴリズムが実行される。
【００４２】
【表３】
2005158251.tif 000005
表３のトータルジャンプカウンタは、ビデオストリーム内で所望のタイムコードに達するために位置ポインタが通過しなければならないバイトの数を示す。所望のタイムコードは、ＰＥＳパケットごとにオフセットを加算していくことによって情報ファイル内で探索される。
【００４３】
ルーチンの順方向パスでは、パラメータとして転送されるタイムコードより大きな又は等しいタイムコードが情報ファイル内で探索される。表４は順方向サーチの構造図を示している。
【００４４】
【表４】
2005158251.tif 000006
表４に示されているアルゴリズムのループを通過し終わるたびに、情報ファイルのためのファイルポインタは次の情報ブロックの開始を指し、この次の情報ブロックに対してはステップ５〜８が実行される。ファイルの終了に達すると、ループを離れ、情報ファイル内のファイルポインタは「ファイルスタート」にセットされる。
【００４５】
以下のテキストは、早送りコマンド及び逆送りコマンドの早送り及び逆送りへの変換を説明したものである。
【００４６】
ビデオデータストリームにおける早送り及び逆送りは上記の情報ファイルを用いて行われる。ルーチンの開始時には、ビデオストリーム内の位置ポインタはＰＥＳパケットの開始（「ＰＥＳスタート」）を含んだＴＳＰ又はこれの前に位置するＴＳＰを指していると仮定される。情報ファイルとの同期のために、ビデオストリームは「ＰＥＳスタート」を有するＴＳＰが見つけ出されるまで順方向にスキャンされる。図３では、データストリームＴＳ内のパケットＯＴＨが、「ＰＥＳスタート」を含んだ第１ＰＥＳパケットＰＳＰ♯１が見つけ出されるまでスキャンされる。つぎに、現在のタイムコードから特定の時間間隔にある情報ファイル内のタイムコードが、ＳｅｅｋＴｉｍｅＣｏｄｅ（）を用いたループにより探索され、飛び越すべきＴＳＰ又はバイトの数を合計することにより飛び越すべきＴＳＰ又はバイトの数が求められる。データポインタはこの量だけビデオストリーム内でオフセットされる。
【００４７】
コマンドの変更が生じたときには、ビデオストリームと情報ファイルとの間の同期も保証されなければならない。この目的で、タイムコードも同様にビデオストリームからではなく情報ファイルからリプレイ中に読み出される。これには２つの理由がある。第１には、タイムコードをＰＴＳから再計算する必要がないので、より迅速であり、またパフォーマンスに有利な効果を与えること、第２には、早送り又は逆送りの後にコマンドの変更が生じても、結果的に情報ファイルがビデオストリームに同期されることである。
【００４８】
コマンドの変更が生じてもビデオストリームと情報ファイルとが同期を保つように、ＤＳＤ−ＭＰＥＧ２パーザは以下の規則に従う：
１．コマンド実行開始時に、位置ポインタは、ビデオストリーム内で、情報ファイル内の現在ポインタ位置に対応するＰＥＳパケットの開始を含んだＴＳＰ又はこれの前に位置するＴＳＰを指していなければならない。それゆえ、ポインタがビデオストリーム内においても情報ファイル内においてもファイルスタートに位置していれば、定義によりこの条件は充たされている。
２．ビデオストリーム内の位置ポインタが、リプレイプロセス後に、「ＰＥＳスタート」を有するＴＳＰに位置していない場合には、情報ファイルのためのファイルポインタは、「ＰＥＳスタート」を有する次のＴＳＰに対応する情報ブロックを指す。ビデオストリーム内の現在のＴＳＰが「ＰＥＳスタート］を含んでいる場合には、情報ファイルのためのファイルポインタはこのＴＳＰに対応する情報ブロックを指す。
３．早送りコマンド又は逆送りコマンドの実行後、ビデオストリーム内の位置ポインタは「ＰＥＳスタート」を有するＴＳＰを指している。情報ファイルのためのファイルポインタはこのＴＳＰに対応付けられた情報ブロックを指す。１つの例外は、コマンドを実行している間にファイルの終了に達してしまった場合である。この場合、両方のポインタともファイルスタートにセットされる。
【００４９】
コマンド実行後、ビデオファイルと情報ファイルは双方とも閉じられる。したがって、ビデオストリーム内の現在位置と情報ファイル内の現在位置を永久的に記憶したモジュール変数が導入される。この目的で、ＤＳＤワーキングスレッドモジュールが変数u64FilePosを生成する。この変数は、各ファイルアクセスの後にビデオファイルのためのファイルポインタの現在位置とともにアップデートされる。ＤＳＤ−ＭＰＥＧ２パーザは変数u32InfoFilePositionを定義する。ＤＳＤワーキングスレッドのＳｔａｒｔＦｉｌｅ（）ルーチンにおいて、ファイルポインタはビデオファイルが開かれた後にu64FilePos内の位置にセットされる。これはまた対応するＤＳＤ−ＭＰＥＧ２パーザモジュール変数を有する情報ファイルを開く際にも行われる。以前のコマンドにより選択されたトラック以外のトラックがリプレイされている場合には、両方のモジュール変数ともゼロにセットされなければならない。
【００５０】
実際の実施においては、一般に以下のようなフィル間の数量比が達成されうる。例えば、６５Ｍバイトのサイズのビデオファイルに対しては、情報ファイルは０．１２％に相当するおよそ８１Ｋバイトのサイズを有する。サイズが２９９Ｍバイトである別のビデオファイルに対しては、情報ファイルはおよそ０．０６％に相当するおよそ１４６Ｋバイトのサイズを有する。
【００５１】
使用されるトランスポートデータストリーム（トランスポートストリーム、ＴＳ）は、主に誤りの生じうるチャネルに対して使用されるパケット向けデータストリームである。なお、このチャネルは通常は伝送用又は記憶用である。しかし、本発明はトランスポートデータストリーム内のすべてのパケットが関連性を有しているのか、又はその一部だけが関連性を有しているのかということにまったく依存していない。
【００５２】
使用されるＰＥＳパケットは６４Ｋバイトまでの可変サイズを有しており、基本データストリーム内に、イントラコーディングされた１つのフレーム（「Ｉフレーム」、約４０Ｋバイト）又はインターコーディングされた２つまでのフレーム（「Ｂフレーム」、「Ｐフレーム」）を含むことができる。これは符号化されたフレームのサイズがフレームの内容に応じて可変であるからである。したがって、本発明による方法によれば、個々のＰＥＳパケットは、したがってまた個々のビデオフレームは、簡単かつ迅速にしかも正確に探し出すことができる。
【００５３】
本発明の１つの重要な特徴は、ＰＥＳパケットの探索に関連した情報が別に、例えば別のファイル又は別のメモリエリアに記憶されることである。本発明による方法のさらなる利点は、なによりも、特定の基本データストリーム内の特定のポイントを探し出すために、探索プロセス中に、２つ又はそれ以上の基本データストリームからのパケットを含んだ記憶されているトランスポートデータストリームをソートする必要がないことである。これら両利点とも、トランスポートデータストリームを受信したときの形を変えずに記憶することを可能にする。
【００５４】
さらに、本発明による方法によれば、例えば可能な入口点の固定的枠組みを予め設定する代わりに、フレーム符号化の観点から可能なビデファイル内のどの入口点へも、すなわち、どのＩフレームにもジャンプすることが可能である。インターコーディングされたフレーム、つまり、Ｂフレーム又はＰフレームでさえ、これらがＰＥＳパケットの開始に位置しているかぎり、それらにジャンプすることが可能である。これらのポインの位置は情報ファイルが生成されるときに自動的に突き止められる。
【００５５】
相対的オフセットの指定は、本方法がファイル全体の長さには依存していないことを意味している。最大ジャンプ幅だけが制限されている。もっとも、最大ジャンプ幅は高い信頼性を以て予測可能である。この場合には、関連性の定義に応じて、関連する次のＴＳＰ又は関連する先行ＴＳＰに対するオフセットを指定することもできる。
【００５６】
本発明による方法は、有利には、パケット向けデータストリームをナビゲートしなければならない機器、例えば、パーソナルビデオレコーダ（ＰＶＲ）や同様の機器のようなビデオデータ及び／又はオーディオデータの記録再生機器において、特に早送り、逆送り、及びリプレイ機能の実施のために使用することができる。
【図面の簡単な説明】
【００５７】
【図１】ＭＰＥＧ−２  ＴＳデータストリームのレイアウトを示す。
【００５８】
【図２】情報ファイルの一般的レイアウトを示す。
【００５９】
【図３】ＭＰＥＧ２−ＴＳデータストリーム向けの情報ファイルを示す。
【００６０】
【図４】ＰａｒｓｅＰａｃｋｅｔ（）関数の構造図を示す。
【図１】
2005158251.tif 000007
【図２】
2005158251.tif 000008
【図３】
2005158251.tif 000009
【図４】
2005158251.tif 000010