(57)【特許請求の範囲】
【請求項１】
記憶されたマルチメディアプログラミングの表示方法であり、このプログラミングはその記憶前にインデキシングされておらず、前記方法は、
前記記憶されたマルチメディアプログラミングの平均ピクチャグループ（ＧＯＰ）サイズについての統計を表す統計情報を提供し、前記統計情報は前記プログラミングの通常表示中に作成することができる形式である、ステップ（600）と、
特殊表示の指示を表すシーク入力を受信するステップ（610）と、
前記シーク入力に基づく開始位置から、前記記憶されたマルチメディアプログラミングの一部分を読み取りバッファにロードし、前記一部分のサイズは前記統計情報によって表される前記ＧＯＰサイズの２倍で、前記読み取りバッファサイズを超えない値が決定される、ステップ（660）と、
前記ロードされたプログラミングを分析（670、680）し、完全なイントラ符号化フレームを認識できた場合は、前記特殊表示を作るステップ（690）と、
を含み、
前記マルチメディアプログラミングは、ビデオおよび／またはオーディオのデータのパケットを含むMPEGストリームで提供され、
前記方法は、前記シーク入力に基づいて、前記記憶されたMPEGストリーム内の開始読み取り位置とデータ読み取りサイズを決定するステップ（630、640）をさらに含み、
前記ステップ（660）は、前記記憶されたMPEGストリームの一部分をロードし、前記ロードされた一部分のサイズは前記データ読み取りサイズに基づき、前記ロードされた一部分の位置は前記開始読み取り位置に基づく、ステップを含み、
前記分析（670、680）して前記特殊表示を作るステップ（690）は、
前記ロードされた一部分が完全なMPEGイントラ符号化フレームを含むかどうかを決定するために、前記ロードされた一部分を分析するステップと、
前記分析の結果、前記ロードされた一部分が完全なMPEGイントラ符号化フレームを含む場合、表示用のビデオもしくはオーディオのフレームを提供するために、前記MPEGイントラ符号化フレームをデコードするステップと、
を含み、
前記データ読み取りサイズは、少なくとも、読み取り動作を実行するために必要な時間と、前記データ読み取りサイズに等しい前記記憶されたMPEGストリームの一部分をロードする際に完全なMPEGイントラ符号化フレームをロードしない確率との関数である、記憶されたマルチメディアプログラミングの表示方法。
【請求項２】
通常表示は順再生を含み、特殊表示は逆再生、スローモーション順再生もしくはスローモーション巻き戻し、早送り再生もしくは高速巻き戻し、および順方向スキップもしくは逆方向スキップのうちのいずれか一つを含む、請求項１に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項３】
前記統計情報は、通常表示中に作成されるか、もしくは予め作成されているかのいずれかである、請求項１もしくは２に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項４】
前記マルチメディアプログラミングがデータのフレームのストリームとして記憶され、前記分析（670、680）して前記特殊表示を作るステップ（690）は、前記ロードされたプログラミングの前記一部分が、完全なイントラ符号化フレームを含むか否かを決定するステップを含む、請求項１から３のいずれか一項に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項５】
前記ステップ（600）は、
放送フレーム速度で逐次的にストリーム内のデータを出力するために、前記プログラミングの通常表示を始めるステップと、
前記通常表示に基づいて前記統計情報を作成するステップと、
を含む、請求項４に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項６】
前記ステップ（630、640）は、前記統計情報を格納するテーブルから前記統計情報を検索するステップを含む、請求項４に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項７】
前記ロードされた第一の部分が完全なイントラ符号化フレームを含まないとき（680）、前記記憶されたストリームの該第一の部分とは異なる第二の部分をロードするステップ（660）をさらに含む、請求項４から６のいずれか一項に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項８】
前記ステップ（630、640）は、前記統計情報に基づいて前記開始読み取り位置を決定するステップを含む、請求項１から７のいずれか一項に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項９】
前記開始読み取り位置は、少なくとも、前記記憶されたストリーム内の現在の読み取り位置と前記統計情報の関数である、請求項８に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項１０】
前記シーク入力はユーザー入力に基づき、表示速度値とスキップ値のうちの少なくとも一つを決定する、請求項１から９のいずれか一項に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項１１】
前記プログラミングは、前記プログラミングを入力バッファ内に受信し、記憶前に、インデキシング情報を作成するために前記プログラミング内のデータを分析することなく、前記入力バッファから記憶装置内に前記プログラミングを記憶するステップ（530）によって記憶されている、請求項１から１０のいずれか一項に記載の記憶されたマルチメディアプログラミングの表示方法。
【請求項１２】
記憶されたマルチメディアプログラミングの表示を可能にするためのプログラムを記録したコンピュータ可読媒体であって、前記プログラムは、コンピュータに、
前記記憶されたマルチメディアプログラミングの平均ピクチャグループ（ＧＯＰ）サイズについての統計を表す統計情報を提供し、前記統計情報は前記プログラミングの通常表示中に作成することができる形式である、ステップ（600）と、
特殊表示の指示を表すシーク入力を受信するステップ（610）と、
前記シーク入力に基づく開始位置から、前記記憶されたマルチメディアプログラミングの一部分を読み取りバッファにロードし、前記一部分のサイズは前記統計情報によって表される前記ＧＯＰサイズの２倍で、前記読み取りバッファサイズを超えない値が決定される、ステップ（660）と、
前記ロードされたプログラミングを分析（670、680）し、完全なイントラ符号化フレームを認識できた場合は、前記特殊表示を作る（690）ステップと、
を実行させ、
前記マルチメディアプログラミングは、ビデオおよび／またはオーディオのデータのパケットを含むMPEGストリームで提供され、
前記プログラムは、前記コンピュータに、前記シーク入力に基づいて、前記記憶されたMPEGストリーム内の開始読み取り位置とデータ読み取りサイズを決定するステップ（630、640）をさらに実行させ、
前記ステップ（660）は、前記記憶されたMPEGストリームの一部分をロードし、前記ロードされた一部分のサイズは前記データ読み取りサイズに基づき、前記ロードされた一部分の位置は前記開始読み取り位置に基づく、ステップを含み、
前記分析（670、680）して前記特殊表示を作るステップ（690）は、
前記ロードされた一部分が完全なMPEGイントラ符号化フレームを含むかどうかを決定するために、前記ロードされた一部分を分析するステップと、
前記分析の結果、前記ロードされた一部分が完全なMPEGイントラ符号化フレームを含む場合、表示用のビデオもしくはオーディオのフレームを提供するために、前記MPEGイントラ符号化フレームをデコードするステップと、
を含み、
前記データ読み取りサイズは、少なくとも、読み取り動作を実行するために必要な時間と、前記データ読み取りサイズに等しい前記記憶されたMPEGストリームの一部分をロードする際に完全なMPEGイントラ符号化フレームをロードしない確率との関数である、ことを特徴とするコンピュータ可読媒体。
【請求項１３】
通常表示は順再生を含み、特殊表示は逆再生、スローモーション順再生もしくはスローモーション巻き戻し、早送り再生もしくは高速巻き戻し、および順方向スキップもしくは逆方向スキップのうちのいずれか一つを含む、請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記統計情報は、通常表示中に作成されるか、もしくは予め作成されているかのいずれかである、請求項１２もしくは１３に記載のコンピュータ可読媒体。
【請求項１５】
前記プログラムは、請求項４から１１のいずれか一項に記載の方法によってマルチメディアプログラミングを表示できるようにするための命令を保持する、請求項１２−１４のいずれか一項に記載のコンピュータ可読媒体。
【請求項１６】
記憶されたマルチメディアプログラミングを表示するように構成されたデジタルビデオレコーダ（100）であって、前記レコーダ（100）は、
インデキシング無しに前記プログラミングを記憶するための記憶装置（150）と、
前記記憶されたマルチメディアプログラミングの平均ピクチャグループ（ＧＯＰ）サイズについての統計を表す統計情報を受信するための処理手段（160）であって、前記統計情報は前記プログラミングの通常表示中に作成することができる形式である、処理手段（160）と、
特殊表示の指示を表すシーク入力が受信されるユーザーインターフェースと、
前記シーク入力に基づく開始位置から、前記記憶されたマルチメディアプログラミングの一部分を受信するための読み取りバッファ（220）で、前記読み取りバッファ（220）内にロードされた前記一部分のサイズは前記統計情報によって表される前記ＧＯＰサイズの２倍で、前記読み取りバッファサイズを超えない値が決定される、読み取りバッファ（220）と、
前記ロードされたプログラミングを分析し、完全なイントラ符号化フレームを認識できた場合は、前記読み取りバッファ（220）内にロードされた前記プログラミングの前記特殊表示を作るための表示手段（130）と、
を含み、
前記マルチメディアプログラミングは、ビデオおよび／またはオーディオのデータのパケットを含むMPEGストリームで前記レコーダ（100）に提供され、
前記処理手段（160）は、
前記ユーザーインターフェースにより受信されたシーク入力に基づいて、前記記憶装置（150）に記憶されたMPEGストリーム内の開始読み取り位置とデータ読み取りサイズを決定し、
前記記憶装置（150）に記憶されたMPEGストリームの一部分を前記読み取りバッファ（220）にロードし、前記読み取りバッファ（220）にロードされた一部分のサイズは前記データ読み取りサイズに基づき、前記読み取りバッファ（220）にロードされた一部分の位置は前記開始読み取り位置に基づき、
前記読み取りバッファ（220）にロードされた一部分が完全なMPEGイントラ符号化フレームを含むかどうかを決定するために、前記読み取りバッファ（220）にロードされた一部分を分析し、
前記表示手段（130）は、前記分析の結果、前記ロードされた一部分が完全なMPEGイントラ符号化フレームを含む場合、表示用のビデオもしくはオーディオのフレームを提供するために、前記MPEGイントラ符号化フレームをデコードし、
前記データ読み取りサイズは、少なくとも、読み取り動作を実行するために必要な時間と、前記データ読み取りサイズに等しい前記記憶されたMPEGストリームの一部分をロードする際に完全なMPEGイントラ符号化フレームをロードしない確率との関数である、デジタルビデオレコーダ（100）。
【請求項１７】
通常表示は順方向再生を含み、特殊表示は逆再生、スローモーション順再生もしくはスローモーション巻き戻し、早送り再生もしくは高速巻き戻し、および順方向スキップもしくは逆方向スキップのうちのいずれか一つを含む、請求項１６に記載のデジタルビデオレコーダ（100）。
【請求項１８】
前記マルチメディアプログラミングを受信するためのチューナー（121）をさらに含み、前記チューナー（121）は表示装置（130）および／または前記記憶装置（150）に前記プログラミングを出力するように構成される、請求項１６もしくは１７に記載のデジタルビデオレコーダ（100）。
【請求項１９】
前記表示装置（130）は、ビデオデコーダ（131）、オーディオデコーダ（132）、および、テレビ（140）もしくは他の表示装置への接続用の出力とを含む、請求項１８に記載のデジタルビデオレコーダ（100）。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、改良された放送情報のデジタル記録および表示のための方法と装置に関する。具体的には、本開示は、リアルタイム動作モードおよびタイムシフト動作モードで放送情報を受信、記憶、および表示するための方法と装置に関する。
【背景技術】
【０００２】
デジタルビデオレコーダ（DVR's）などのデジタルデータレコーダは、少なくとも1992年から知られている。標準的なDVR'sでは、ユーザーは後で再生するために記憶装置に放送情報を記録することができる。通常、DVR'sは、ビデオカセットレコーダで見られる機能と同様のタイムシフト（トリックプレイ）動作モードが可能であり、これはほとんどのユーザーによく知られている。例えば、DVR'sは“一時停止”、“巻き戻し”、“早送り”、“スキップ”、および“スローモーション”などの機能を持ち得る。最初の市販のDVR'sの一つは、現在はEchoStar Communications Corporationの一部であるMedia4によって開発、市販されたMediaStreamシステムであった。1996年4月、Media4は、統合DVR機能を持つデジタルビデオ放送対応衛星受信システムであるMediaStream受信機を発表した。MediaStreamシステムは、一つのプログラムの記録と表示の両方が可能になるように、プログラムの記録と表示の両方を同時に行うように設計された。MediaStream受信システムは、例えば一つ以上のテレビ番組を含むMPEG（Moving Pictures Group）トランスポートストリームをデマルチプレックスし、別々のビデオPES（packetized elementary stream）とオーディオPESバッファに入れる。バッファに入れられたデータは、通常モードもしくはトリックプレイモードのいずれかで後で再生するために、ディスクに書き込まれる。MediaStreamシステムは、トリックプレイ動作モードに役立つインデックスを作成するために入力の知的パージング（intelligent parsing）を行うのではなく、これらの機能を実行する際にハードディスク上に記憶されたデータの“力まかせ探索（brute-force search）”を実行するだけであった。
【０００３】
放送入力ストリームの知的パージングによってインデックスを作成し、後で適切なデータのフレームを見つけて再生するために入力中に作成されるインデックス情報を使用するための、多くの方法とシステムが開発されてきた。これらのシステムの最古のものの一つは、ImediaCorporationに譲渡された、共にKrauseらによる二つの特許、U.S. Patent No. 5,949,948および6,304,714に記載されている。これらの特許は、圧縮デジタルデータの表示と記録を同時に行うためのセットトップDVRシステムを開示する。例えば、U.S. Patent No. 5,949,948は、MPEGデータストリーム中のビデオI-フレームの開始を検出するための開始コード検出器と、I-フレームをメモリ内のアドレスと関連付けるインデキシングシステムと、どのフレームをトリックプレイ動作で再生するかを決定するためにインデックス情報を検索するトリックプレイシステムとを開示する。同様に、IntelのCobbleyらのU.S. 5,614,940は、放送情報をデジタル形式に変換し、入力中にその放送情報のコンテンツに関する様々なインデックスデータを作成し、圧縮放送データと関連インデックスデータの両方を記憶し、その後、対応するインデックス情報に基づいて再生（通常モードもしくはトリックプレイモードで）のための放送データを検索することができる、セットトップシステムを開示する。同様に、フロント・エンドの入力側知的パージングと、インデックス・ベースの検索の方法が、KennerらのU.S. Patent No. 5,956,716、PorterらのU.S. Patent No. 5,659,539、SporerらのU.S. Patent No. 6,167,083、およびPetersのU.S. Patent No. 5,577,190に開示されている。
【０００４】
BartonらのU.S. Patent No. 6,233,389の明細書に記載された、TiVo Inc.で開発された最近の記録システムもまた、入力中、および記憶装置での放送情報の記憶の前に、特定形式の知的パージング／インデキシングを利用する。この特許に記載されたシステムは、インデックスを作成し、特定のデータを個々の適切なバッファに入れる“Media Switch”と呼ばれる特殊回路を利用する。開示された“Media Switch”は、中央処理装置（CPU）、記憶装置、およびメモリの間に介在し、従って、CPUから個々のデバイスへの入力ストリームの集中的なインデックスベースの処理をオフロードする。また、Bartonらのシステムでは、“source object”というソフトウェアが、データをデータストリームに変換し、バッファ割当の全体制御に関与する“transform object”という中央ソフトウェアによって割り当てられるバッファに入れる。ソフトウェア“transform object”は、その後データをハードディスクに書き込む。ソフトウェア“transform object”は、ハードディスクからのデータの読み取り、バッファへのデータの格納、後でデコードし再生するために、格納されたバッファを“sink object”というソフトウェアに割り当てることにも関与する。
【０００５】
これらの以前のシステムは、いくつかの動作設定では非効率的で非常に複雑になる可能性がある。そのようなシステムは、放送データの全セットの入力中に集中的処理を必要とする。現代のDVR機能に必要な高いスループットを考えると、そのようなシステムにおいて入力中に必要とされる処理能力は、CPUに重い負担をかける可能性があり、あるいは、Bartonらのシステムの場合には、特殊なハードウェアとソフトウェアを必要とする。さらに、記録されたものの多くは標準モード以外のモードでは再生されないので、関連インデックス情報を記憶するために必要な処理能力、および必要なメモリが、大いに浪費される可能性がある。より頑丈で、安価で、単純なシステムが必要とされる。
【発明の概要】
【０００６】
本発明は、以前の方法とシステムで指摘されている問題を軽減することを目指す。
【０００７】
本発明の第一の態様に従って、記憶されたマルチメディアプログラミングを表示する方法が提供される。このプログラミングは、記録前にインデキシングされていない。この方法は、プログラミングの通常表示中に作成することができる形式の統計情報を提供するステップ；シーク入力を受信するステップ；シーク入力に基づく開始位置から、記憶されたマルチメディアプログラミングの一部分をロードし、その一部分のサイズは統計情報によって決定されるステップ；および、ロードされたプログラミングがプログラミングの特殊表示のために十分であることを分析が示す場合は、特殊表示を作るステップ、を含む。
【０００８】
本発明の実施形態は、受信された放送データのパージング、分離、変換、もしくは他の処理機能が、データの記憶前に必要ないので、以前の方法を改良する。本発明の方法では、プログラミングデータを記憶装置から表示する際に、プログラミングデータの検索と追跡を行うために、統計的確率的アルゴリズムが利用される。
【０００９】
従って、受信されたプログラミングは、非同期の単一バッファ読み書きプロセスを用いて記憶装置に直接書き込まれ得る。トリックプレイ動作モードの起動時には、検索動作が統計値に基づいて実行されてもよいし、もしくは表示動作中に動的に作成されてもよいし、もしくは放送データと共に受信されてもよい。通常表示の際には、トリックプレイ動作中にスキップするフレームの理想的な数、シークするバイト数、記憶装置から読み出すデータファイルのサイズを決定するために、統計値が作成されてもよい。
【００１０】
本発明の方法は、要求される任意のスキップ値、シーク値、および読み取り値を動的に決定するためのアルゴリズムと動作を利用してもよく、これはシステムリソースの使用を最小限にする。こうして、データがより効率的かつ経済的に記憶され、適切な確率的アルゴリズムを応用して、より円滑に微妙な差異をつけてトリックプレイ動作を実行することができる。
【００１１】
本明細書に記載の方法およびシステムの他の特徴と効果は、添付の図面と併せて考察される際に、以下の詳細な説明から明らかとなるだろう。
【図面の簡単な説明】
【００１２】
【図１】本明細書に記載のDVRシステムを図示するブロック図である。
【図２】本明細書に記載のDVRシステムにおけるメモリ割当のブロック図である。
【図３】本明細書に記載の単一バッファメモリにおけるメモリ割当のブロック図である。
【図４】本明細書に記載のDVRシステムにおけるデータの記憶を図示するフロー図である。
【図５】本明細書に記載の記録スレッドアプリケーションの機能の論理図である。
【図６】本明細書に記載のシステムにおいて記憶されたデータを表示するための論理図である。
【発明を実施するための形態】
【００１３】
原則として、プログラミングデータの“知的分析”、“知的パージング”もしくは“インデキシング”とは、そこから情報を引き出すためにデータを分析することをあらわす。データが例えばビデオデータやオーディオデータのストリームで提供される場合、分析は、フレーム表示時間情報などのビデオもしくはオーディオに固有の情報を、記憶データファイルにおける位置などのシステム固有の情報と関連付けてもよい。
【００１４】
以下の記載は、本明細書に記載された、記憶前にインデキシングの必要がないマルチメディアプログラミングの記憶と表示のための方法およびシステムの多数の実施例を説明する。しかし当然のことながら、こうした記載は本発明の範囲に対する限定として意図されるものではなく、むしろ例示的な実施形態の記載として提供される。
【００１５】
［I．表示と記憶のためのシステム］
図１を参照すると、デジタルビデオレコーダ（DVR）100の実施形態は、衛星受信機110を介して、直接放送衛星（DBS）システムから、暗号化され、スクランブルされた、もしくは明瞭な放送信号を受信する。別の実施形態では、オフエア（off-air）や地上波放送、もしくはケーブルテレビ（TV）などの、追加の、もしくは異なる放送源と形式が使用されてもよい。典型的には、放送信号はテレビもしくは他のマルチメディアプログラミングの信号である。信号は、高精細（HD）テレビ、標準画質（SD）テレビ、オーディオのみの信号、もしくは他の信号であってもよい。そのような信号は、データの周波数バンドを多数含んでもよく、各バンドは多数のTVコンテンツプログラム（例えばCNN（登録商標）、HBO（登録商標）など）を含む。好ましい実施形態では、受信機110から受信された信号は、MPEGトランスポートストリームとして送信されるマルチメディアプログラミングを含むが、アナログTV形式などの代わりの形式が使用されてもよい。MPEGトランスポートストリーム（トランスポートストリーム）は、ビデオのみ、オーディオのみ、もしくは他のデータのパケットを含む。各パケットは、パケット識別子（PID）情報を含む関連ヘッダ情報を有し得る。PID情報は、パケット（ビデオ、オーディオ、その他）のデータ形式と、パケットに関連するコンテンツプログラミング、およびその他の情報を識別し得る。トランスポートストリームにエンコードされたビデオおよびオーディオのパケットは、パケットの同期を可能にする表示タイムスタンプ（PTS）データも含み得る。パケットは、ビデオもしくはオーディオのフレームの開始を識別する開始コードデータも含み得る。
【００１６】
放送マルチメディアプログラミングは、受信機110で受信され、DVR100の入力セクション120へ転送される。信号は、放送周波数バンドにわたる変調放送信号であってもよい。受信機110は、受信した信号を、DVR100に転送する前に中間周波数に変換し得る。セクション120のチューナー121は、受信機110から受信された信号を、目的のコンテンツプログラミングを含む周波数レンジ（チャンネル）に合わせる。入力セクション120は、復調されたトランスポートストリームを作るために放送信号を復調する復調器122も含み得る。セクション120は、目的のコンテンツプログラミングに関連するパケットのみを含むトランスポートストリームを作るために、プログラミング固有のPIDに従ってトランスポートストリームをフィルタするデマルチプレクサ123もまた含み得る。一実施形態では、デマルチプレクサ123は、別個のビデオのみのPES（packetized elementary stream）と別個のオーディオのみのPESストリームを作ってもよい。別の実施形態では、インターリーブされたビデオとオーディオのデータを持つ単一のトランスポートストリームが作られる。デマルチプレクサ123はまた、DVR100で使用するために、他の（例えば非ビデオもしくは非オーディオ）データパケットをフィルタアウトし得る。入力セクション120はまた、エラー訂正、デスクランブル、復号、アナログデジタル変換、もしくは多数の他の基本信号処理機能などの追加機能も実行し得る。
【００１７】
セクション120から出力されるMPEGトランスポートストリームは、リアルタイムの即時表示のために、表示セクション130へ送られ得る。表示セクション130は、少なくともMPEGビデオデコーダ131とMPEGオーディオデコーダ132を含む。表示セクション130は、テレビ140もしくは他の表示装置への配信に必要な場合、デジタルアナログ変換器、エンコーダ、追加デコーダ、ビデオフィルタもしくはオーディオフィルタ、および／またはメモリバッファをさらに含んでもよい。
【００１８】
セクション120から出力されるMPEGトランスポートストリームは、後で表示するため、もしくはリアルタイム以外で表示するために、ハードディスク150などの記憶装置へも送られ得る。好ましい実施形態では、プログラム論理は、追加バッファを使用することなく、ハードディスク150への転送に単一バッファを使用する。好ましくは、セクション120から受信されるトランスポートストリームは、MPEGビデオおよび／またはオーディオフレーム情報を最初に分析もしくはインデキシングすることなく、MPEGトランスポートストリームファイル（TSPファイル）としてハードディスク150上に書き込まれる。別の実施形態では、MPEG情報はPESファイルもしくは他の適切なファイル形式で記憶される。そうすることによって、大きなシステムリソースを利用することなく、後で使用するためにMPEGトランスポートストリームが効率的に記憶される。時系列、PTS、開始コード、もしくは他の組み込まれたMPEGフレーム情報は、記憶前に分析やインデキシングの必要がなく、あるいは別の方法で、TSPファイル位置などのシステム固有情報に関連付ける必要がない。個別のTSPファイルは、各々個別に記録されたコンテンツプログラム毎に、もしくは各個別の記録セッション毎に維持され得る。ハードディスク150は、ハードディスク150上にTSPファイルとして記憶される任意のコンテンツプログラムの連続表示および不連続表示の両方を供給するために、表示セクション130に接続される。セクション120は、コンテンツプログラミングの記憶と表示を同時に行うために、表示セクション130とハードディスク150の両方へ同時に出力することができる。
【００１９】
DVR100は、少なくとも一つのプロセッサ160と少なくとも一つのシステムRAMモジュール170もまた含む。DVR100の動作に必要な、記録論理、通常再生論理、もしくはトリック再生論理などのプログラム論理は、RAMモジュール170と併せてプロセッサ160上で実行され得る。代わりの実施形態では、別個のプロセッサと別個のRAMモジュールが、DVR100の入力、記憶、表示の機能、および／または他の機能で利用されてもよい。一実施形態では、DVR100はLinuxオペレーティングシステムで動作するシステムである。代わりの実施形態では、DVRはUNIX、Windows、Mac OS、もしくは他のオペレーティングシステムで動作するシステムであってもよい。DVR100は、複数の入力セクション、表示セクション、記憶装置、プロセッサ、およびRAMモジュールを含んでもよい。このようにして、DVR100は多数の信号源に対応し、多数のコンテンツプログラムを同時にもしくは別々に表示し記録し得る。
【００２０】
［II．記憶動作］
一実施形態では、記録プログラム論理は、記録ドライバと記録スレッドアプリケーションの両方によって非同期的にアクセスされ得る固定メモリアドレスを持つ、単一メモリバッファを用いて動作する。この単一バッファは記録バッファとも称され、記録ドライバによって入力される。単一バッファ内のデータはその後、記録スレッドアプリケーションによって、単一の動作で単一バッファからハードディスク150へ移動する。好ましくは、記録プログラム論理はフロー制御されず、記録ドライバと記録スレッドアプリケーションは、いずれかのアプリケーションが他方を制御することなく、独立して単一バッファへの読み書きを行う。より好ましくは、単一記録バッファは循環バッファである。単一バッファの使用により、二つ以上の別個のバッファ間の転送の必要がなくなり、プロセッサや他のシステムリソースが節約され得る。単一バッファの方法は、記録ドライバと記録スレッドアプリケーション間の通信の必要をなくすことによって、システム効率をさらに増加し得る。好ましくは、DVR100はDVR内のチューナー毎に一つの記録ドライバと一つの記録スレッドアプリケーションを利用する。
【００２１】
図２は、DVR100の一実施形態におけるシステムメモリ割当である。（複数の）記録ドライバを含むシステムドライバがドライバ空間210を占有し得る。単一バッファメモリ220は、システム起動時にLinuxカーネルによって予約される。好ましい実施形態では、単一バッファメモリ220は各システム起動中に固定メモリアドレスを割り当てられる。システムメモリは、再生バッファもしくは他のユーザー固有要素を含み得る、Linuxカーネルおよびユーザー空間230も含む。一実施形態では、Linuxカーネルはメモリ220のために固定アドレスを予約する。単一バッファメモリ220は、一つ以上の転送バッファ（図示せず）に論理的に分けられてもよい。単一バッファメモリ220のための固定メモリアドレスを持つ好ましい実施形態では、ドライバ空間210内の（複数の）記録ドライバは、カーネルメモリの最上位からのハードコードされたオフセットを用いて、転送バッファメモリアドレスを計算する。ハードコードオフセットは、空間230内のLinuxカーネルによってエクスポートされるhigh_memoryシンボルによって決定される。空間230内にある（複数の）記録スレッドアプリケーションは、（複数の）実際のハードコードされた転送バッファアドレスも使用する。
【００２２】
図３は、単一バッファメモリ220におけるメモリ割当の特定の実施形態を図示し、単一バッファは、（複数の）記録ドライバと（複数の）記録スレッドアプリケーションの両方によって非同期的に共有される。メモリ220は、少なくともシステム内の各チューナー毎に一つの記録情報領域310と転送バッファを含む。好ましい実施形態では、DVR100内の各チューナー毎に単一転送バッファが存在する。転送バッファ0 320、転送バッファ1 330、および転送バッファ2 340が図示されるが、使用される転送バッファの数はもっと多くても少なくてもよい。一実施形態では、記録情報領域310は、サイズが4096バイトのメモリの1ページであり、構造体の配列（array of structures）を含む。ここに、（複数の）記録ドライバによって各転送バッファに書き込まれたデータの位置とサイズに関する情報が記憶され、（複数の）記録ドライバによってアップデートされる。（複数の）記録スレッドアプリケーションはこれらの構造体にアクセスし得る。
【００２３】
図４は、DVR100における記憶用のトランスポートストリームの処理を図示する。入力セクション120から受信されたトランスポートストリームデータ410は、記録ドライバ420によって単一メモリバッファ220の転送バッファ430に書き込まれる。代わりの実施形態では、データは入力セクション120のハードウェアによって転送バッファに入れられる。記録ドライバ420はまた、ドライバの記録ポインタの位置を示す情報ページ310もアップデートする。記録ドライバは、フロー制御無しで、トランスポートストリームデーターが入力セクションから受信されるとリアルタイムで動作する。
【００２４】
最後の読み取り位置を記憶する記録スレッドアプリケーション440は、バッファ220内の書き込まれていないデータのサイズを決定するために情報ページ310にアクセスする。記録スレッドアプリケーション440は、書き込まれていないデータをTSPファイルとして記憶するためにハードディスク150に直接転送する。
【００２５】
図５は、DVR100上で動作する記録スレッドアプリケーションループ500の一実施形態の簡略化したフロー図を図示する。記録スレッドアプリケーションは、マスターアプリケーションが、記録スレッドに実行を開始させるセマフォの信号を送るまで、“Start”セマフォでスリープする（プロセス510）。記録スレッドが実行すると、いくつかのローカル変数が初期化され、実行ループが開始され得る（プロセス520）。プロセス530では、実行ループは、読み取られていないデータがどの位転送バッファに存在するか、およびそのデータの位置を決定するために、記録スレッドアプリケーションに関連する転送バッファに関連する記録情報構造体を読み取る。プロセス530ではまた、0バイトのデータが存在すると決定された場合であっても、このデータがその後ハードディスク150に書き込まれる。記録スレッドアプリケーションは、記録スレッドアプリケーションを介してデータを処理することなく、直接IO（入力／出力）転送を介して、データをハードディスク150に転送する。ハードディスク150に書き込まれた後、最終読み取りアドレスなどのいくつかのローカル変数がアップデートされ得る（プロセス530）。プロセス540では、記録スレッドはその後、時限“Sleep”セマフォによって、割り込み可能なスリープ状態に入り得る。“Sleep”セマフォのタイムアウト時間は、サービスタイプ（例えばSDもしくはHDテレビ、またはオーディオのみ）に基づき得る。この時限“Sleep”セマフォは、システム内の他のプロセスを実行できるようにする。“Sleep”セマフォがタイムアウトになると、記録スレッドは別のループを実行する。マスターアプリケーションが記録スレッドに実行を停止するように信号を送ると、セマフォはタイムアウトにならず、アプリケーションはプロセス550で終了する。記録スレッドアプリケーションは記録ドライバに対して非同期的に動作する。代わりの実施形態では、記録スレッドアプリケーションは、記録タスクもしくは記録プロセスアプリケーションであってもよい。
【００２６】
［III．記憶装置からの表示］
DVR100は、記憶されたビデオデータとオーディオデータのいくつかの表示モードに対応する。一実施形態では、表示モードは、順再生、一時停止、逆再生、スローモーション順再生もしくはスローモーション巻き戻し、早送りもしくは高速巻き戻し、および順方向スキップもしくは逆方向スキップを含む。本明細書に記載の方法とシステムを用いて、DVR100は、予めインデキシングされたMPEGフレーム情報を用いることなく、または特定フレームの位置決めや時系列情報の必要なく、これらのモードに対応することができる。記録、および記憶装置からの表示の前に、記憶された全てのビデオおよび／またはオーディオデータに対する時系列情報を決定する必要がないので、システムリソースが節約される。一実施形態では、ハードディスク150などの記憶装置からの表示は、表示セクション130への出力の前に、読み取りバッファへの記憶されたMPEGトランスポートストリームの一部分を読み取ることによって実行される。一実施形態では、読み取りバッファは循環読み取りバッファである。本明細書に記載の表示方法は、ビデオのみのデータ、オーディオのみのデータ、もしくは組み合わせたビデオとオーディオのデータで利用され得る。
【００２７】
MPEGビデオ圧縮標準は、あるビデオのフレームを、その前のフレームもしくは後のフレームからの差分としてあらわすことによって、ビデオ信号を転送もしくは記憶するのに必要なデータの量を削減する。MPEGビデオは、一般的に三つの主要フレームタイプから構成される。I-フレームすなわちイントラ符号化フレームは、他のフレームを参照せずにエンコードされるピクチャである。P-フレームすなわち予測フレームは、前のフレームからの差分を参照することによってエンコードされるピクチャである。B-フレームすなわち双方向予測フレームは、前後のフレームからの差分を参照することによってエンコードされるピクチャである。MPEG-4は追加のイントラ符号化フレームタイプであるIRD-フレームを指定し、これもまた使用され得る。当然のことながら、本明細書に記載の方法とシステムでは、IRD-フレームがI-フレームと置き換えられてもよい。完全な画像を表示するために、少なくとも一つのイントラ符号化フレーム（IもしくはIRD）がデコードされて表示されなければならない。MPEG符号化ビデオストリームは、所定のフレーム毎秒（fps）レートでリアルタイムに放送される。fpsはコンテンツプログラムによって異なり得る。例えば、フレームレートはおよそ30 fps（標準テレビ）、24 fps（映画）、25 fps（一部の海外コンテンツ）、もしくは他のフレームレートであってもよい。MPEG標準は、フレーム形式へのオーディオデータの圧縮にも使用され得る。
【００２８】
再生モードは、概念的に以下の三つのカテゴリに分類され得る。
【００２９】
【表１】
0005752824.tif 000002
【００３０】
リニア（再生）は、全フレーム（I、P、B）を起こった順番に表示する任意の表示モードである。全ビデオデータをその放送fpsレートで表示する“通常”再生とも称される順再生モードは、リニア（再生）の一形式である。“トリック”という用語は、TSPファイルからの不連続な読み取り（“シーク”）、もしくは総数よりも少ないピクチャフレームの表示（“スキップ”）のいずれかを必要とする任意の表示モードを意味するために使用される。連続（トリック）は、記憶されたマルチメディアデータを連続的にロードする任意のトリックモードである。不連続（トリック）は、記憶されたマルチメディアデータを不連続にロードする任意のトリックモードである。表示モードの他の概念的な分類が利用されてもよい。一実施形態では、表示モードは、DVR100のユーザー制御を容易にすることができる遠隔制御装置を用いて、DVR100のユーザーによって選択される。
【００３１】
図６は、TSPファイルとして記憶されたデータを用いる好ましい実施形態において、ユーザーが所望の表示モードで変更を選択する際の表示にかかわるステップの簡略化した論理図を図示する。所望の表示位置を見つけるためにTSPファイルを最初から網羅的に分析する必要なく表示することができるように、選択される表示モードによって、MPEGトランスポートストリームにエンコードされたビデオデータに関する統計情報が使用され得る。プロセス600では、統計データは、非特異的な予め作成されたビデオデータ統計値を用いて“スプーフ”される（すなわち提供される）か、もしくは統計データは、コンテンツプログラムの通常表示中に特異的に作成されるかのいずれかである。以下の表は、一実施形態においてスプーフもしくは収集されるビデオデータ統計情報をあらわす。
【００３２】
【表２】
0005752824.tif 000003
【００３３】
通常表示中に収集される情報は、後で使用するために不揮発性メモリに記憶されてもされなくてもよい。一実施形態では、この情報は現在の表示セッションの期間中のみ維持される。別の実施形態では、統計情報は放送としてトランスポートストリームに含まれてもよい。トランスポートストリームで放送される統計情報を用いる実施形態では、トランスポートストリームに含まれる統計情報は、トランスポートストリームパケットのアダプテーションフィールドに含まれるプライベートデータである。
【００３４】
プロセス610では、システムは所望の表示モードを選択し、スキップされるフレームの数を設定する。遠隔制御装置を利用する一実施形態では、ユーザーによる表示モードの選択はユーザーの入力として扱われ、そこからDVR100がスキップするフレームの数を決定する。表示中のフレームのスキップは、ユーザーが加速された表示として認識する、所定の再生速度（例えば表示速度値）の倍数としてあらわされる、タイムシフトされた表示をもたらす。例として、全ての8番目のI-フレーム(Nth_I_frame)が2回表示され(M_repeats)、I-フレームがコンテンツプログラム内で平均で15番目のフレーム毎にあらわれる(I_spacing)場合、ユーザーは通常速度の“60x”(Speed)として表示を認識する。認識される表示スピードは、次式で決定することができる。
Speed＝(I_spacing)*(Nth_I_frame)/(M_repeats)
【００３５】
(I_spacing)と(Nth_I_frame)の積は、ディスプレイに表示される最終フレームから、スキップするフレームの数を決定する。一般的に、(I_spacing)を与えるために、プロセス600からの統計データが使用される。あるいは、所望の表示モードが単一フレームのスキップイベントを命令する際は、ユーザーは、本来なら通常速度の表示において、“ジャンプ”もしくは単一の順方向スキップもしくは逆方向スキップを認識する。
【００３６】
表示モードの選択は、多数の変数フラグを設定し得る。一実施形態では、設定されるフラグは“トリック（trick）”、“連続（contiguous）”、および“順方向（forward）”などのTRUE/FALSEバイナリフラグである。遠隔制御装置を利用する実施形態では、変数フラグを設定するために、表示モードの選択に基づくユーザーのシーク入力が使用される。フラグの状態は次の処理ステップに影響を及ぼし得る。一実施形態では、“連続”フラグは、全フレームが表示される（例えばリニア（再生））か、あるいはスキップされるフレームの数が(I_spacing)以下であるかのいずれかの場合、“TRUE”と設定される。例えば、4個のフレームがスキップされ、I-フレームが15番目のフレーム毎にあらわれる際は、表示は“連続”である。これらの例では、データを連続的にロードすることによってシステム効率が最適化され得る。従って、フレームをスキップするある表示方法は連続と見なされるが、同様にフレームをスキップする他の方法は不連続と指定される。スキップされるフレームは、forward=TRUEの場合は正の値としてあらわされ、forward=FALSEの場合は負の値としてあらわされ得る。
【００３７】
プロセス620では、連続フラグが設定されるかどうかによって、再利用動作が読み取りバッファ上で実行され得る。連続表示モードが選択される場合、記憶データが連続的にロードされ得る。従って、表示セクションへ送られていない（使用されていない）読み取りバッファに在る任意の部分を、潜在的使用のために再利用することができる。再利用により、読み取られるファイルデータの量を減らすことで、システムリソースが節約される。不連続表示モードが選択される場合、再利用プロセス620は起こらず、使用されていないデータはメモリから消去されるか、もしくは上書きされる（フラッシュされる）。
【００３８】
読み取られる、記憶されたMPEGトランスポートストリームファイルデータのサイズ（読み取りサイズ）はプロセス630で決定される。読み取りサイズは、連続フラグの状態によって決定される。モードが連続の場合、読み取りサイズは、最大読み取りバッファサイズから、再利用されたデータのサイズを差し引いたものに等しい。不連続モードの場合、一実施形態では、読み取りサイズは、プロセス600で決定されるように平均ピクチャグループサイズの2倍である。論理的に、完全なI-フレームの位置決定ができない場合、読み取りサイズの増加と、追加読み取りイベントにより生じるコストとの間には、システム効率におけるトレードオフが存在する。読み取りサイズをGOPサイズの2倍であるが最大バッファサイズ未満に設定することで、不連続モードの最中に完全なI-フレームが読み取りバッファにロードされる確率を高く維持しながら、システムリソースが節約される。あるいは、不連続モードの読み取りサイズは次式を用いて決定することができ、式中のService_timeは完全なI-フレームを位置決定するために必要な時間、Pmiss(s)は完全なI-フレームが位置決定されない確率、treadsはサイズsの読み取りを実行するために必要な時間である。
(Service_time)=(Pmiss(s)+1)*(treads)
【００３９】
Pmiss(s)の曲線がDVR100内で実験的に（例えば順次不連続表示イベントを通して）与えられるかもしくは決定されると、Service_timeを最小化するためにsの値が動的に調節され得る。
【００４０】
シーク位置はプロセス640で計算される。シーク位置は、記憶されたMPEGトランスポートストリームファイル内の現在の読み取り位置に関連して決定される。一実施形態では、現在の読み取り位置はファイルポインタによって示される。プロセス610の最中に“順方向”および“連続”のフラグの両方が“TRUE”に設定された表示モードの場合は、データローディングが連続的に実行されるので、シークは起こらない。順方向にのみ読み取るファイルポインタを持つシステムにおける連続巻き戻し（すなわちcontiguous＝TRUE、forward=FALSE）の場合は、シーク位置は、再利用されるデータサイズと630で決定される読み取りサイズの合計（すなわち最大バッファサイズ）であり、現在のファイルポインタ位置より前のデータが、読み取りイベントの後に読み取りバッファ内に置かれているようになっている。不連続モードでは、スキップされるフレーム（610で設定される）と平均フレームサイズ（600で決定される）の積に等しいシークベクトルが計算される。精度を増すために、GOPサイズの半分に等しい調整もまた決定される。シーク位置は次式に基づいて計算され、式中の(Origin)は現在のファイルポインタ位置である。
(Seek_Position)=(Origin)+(Seek_vector)-(GOP_size)/2
【００４１】
プロセス650では、ファイルポインタが640で決定される位置をシークする。630で決定された読み取りサイズに等しい、記憶されたMPEGトランスポートストリームファイルの一部分が、読み取りバッファに読み取られる（プロセス660）。
【００４２】
プロセス670では、データの完全なI-フレームが存在するかどうかを決定するために、プログラム論理が読み取りバッファ内のデータを分析する。MPEGトランスポートストリームでは、各パケットは随意にアダプテーションフィールドで構築され得る。アダプテーションフィールドは、トランスポートストリームの状態信号、ストリームタイミングの詳細、トランスポートプライベートデータ、および／またはビデオスプライシング情報を含み得る。アダプテーションフィールド内に含まれるトランスポートプライベートデータは、アクセスユニット（AU）情報を含み得る。アクセスユニットは、ビデオフレームなど、表示に適したユニット（表示ユニット）のコード値（例えばI、B、およびPフレーム）である。典型的には、アクセスユニット情報は、I-フレームの開始がトランスポートストリームパケットのペイロード内に含まれるかどうかを示す。I-フレームの開始が特定されると、読み取りバッファ内のさらに別のフレームの開始を位置決定することによって、完全なI-フレームを示す。アクセスユニット情報を利用できない場合は、プログラム論理は、ビデオフレームの開始を示し得る開始コード情報のためにトランスポートストリームペイロードを分析することができる。開始コードの直後のデータは、ビデオフレームタイプ（I、P、もしくはB）を示す。アクセスユニット情報と同様に、I-フレームの開始を特定した後に次のビデオフレームの開始コードを位置決定することで、バッファ内の完全なI-フレームの存在が示される。一般的に、アダプテーションフィールドデータを使用してのI-フレームの識別は、開始コードの識別よりもシステムリソースの集約性が低い。しかしながら、開始コード情報は常に利用可能であるが、アダプテーションフィールド情報は随意にエンコードされる。前述のように、アダプテーションフィールドはプライベートデータとしてフレーム統計情報も含み得る。一実施形態では、開始コードの識別はアダプテーションフィールド情報を利用できない場合にのみ使用される。別の実施形態では、開始コードデータは、独立して、もしくはアダプテーションフィールド情報と併用してのいずれかで常に使用される。
【００４３】
決定680では、プログラム論理は、追加データが読み取られるべきかどうかを決定する。好ましくは、DVR100は最大ピクチャグループサイズと最大I-フレームサイズの合計に少なくとも等しい読み取りバッファを持つシステムである。そのような好ましいシステムでは、最大読み取りバッファサイズが利用されるので、完全なI-フレームは、任意の連続再生モード中に高確率で読み取りバッファ内で位置決定される。最大ピクチャグループサイズと最大I-フレームサイズの合計未満の読み取りバッファを持つ実施形態では、完全なI-フレームを位置決定するために、追加の再利用プロセス、追加の読み取りプロセスを実行すること、および／または読み取りバッファの少なくとも一部をフラッシュすることが必要となり得る。再利用を行わず、最大読み取りバッファサイズ未満を読み取る不連続モードでは、データの完全なI-フレームが位置決定されない場合、追加のデータ読み取り（“付加”）が必要となり得る。付加は、システムが660へループする際に起こり、計算された読み取りサイズに等しい、記憶装置からのMPEGトランスポートストリームデータの追加部分を読み取り、読み取りバッファに既にロードされているデータに新たなデータを付加する。不連続モードにおいて追加の付加動作を可能にするために、読み取りバッファのサイズによって、読み取りバッファの少なくとも一部のフラッシュが必要となり得る。プログラム論理は、完全なI-フレームがロードされたかどうかを決定するために、読み取りバッファに入っているものを再度分析し、完全なI-フレームがロードされない場合、完全なI-フレームが位置決定されるまで、読み取りと分析のプロセスのループを実行する。
【００４４】
完全なI-フレームが位置決定されると、デコードと表示のためにプロセス690で表示セクション130に送られる。表示セクション130は、テレビセットなどの様々な表示装置上に多数の表示形式でビデオおよび／またはオーディオ信号を出力することができる。放送信号がオーディオのみの放送信号である実施形態では、表示装置はステレオシステムなどのオーディオ信号のみを表示することができる装置であってもよい。DVR100は、所望の表示モードを作り出すために必要に応じて記載された表示プロセスを繰り返してもよい。本明細書に開示された方法を用いて、DVRシステムは、所望のピクチャフレームを見つけるために最初からトランスポートストリームを直線的に分析する必要なく、かつ、トランスポートストリームの記憶前にビデオおよび／またはオーディオのフレーム情報を分析しインデキシングする必要なく、少なくとも通常速度、変速順方向および逆方向、ならびに順方向スキップおよび逆方向スキップを含む複数の表示モードで、MPEGトランスポートストリーム符号化ビデオデータおよび／またはオーディオデータを表示し得る。
【００４５】
本発明は特定の好ましい実施形態を参照して記載されているが、当業者は、様々な変更と他の実施形態が提供されてもよいことがわかるだろう。これらの、および他の実施形態は、本発明の範囲内に含まれることが意図される。本明細書に記載の実施形態に対する、これらの、および他の変形と変更は、以下の請求項によってのみ制限される本発明によって提供される。
【図１】
0005752824.tif 000004
【図２】
0005752824.tif 000005
【図３】
0005752824.tif 000006
【図４】
0005752824.tif 000007
【図５】
0005752824.tif 000008
【図６】
0005752824.tif 000009