(57)【特許請求の範囲】
【請求項１】
サーバが、インバンド・データを備えるマルチメディア・プログラム・コンテンツを処理するステップであって、前記処理が、ハッシュ値シーケンス・データとコマンド・データを含むイベント識別データを作成することを備え、前記イベント識別データを、前記インバンド・データから、
a) １個以上の時間オフセットに基づいて前記マルチメディア・プログラム・コンテンツ内の２個以上のフレームを識別することと、
b) 前記２個以上のフレームの少なくとも一部のインバンド・データから、第
一のハッシュ値、第二のハッシュ値、および前記第一のハッシュ値と前記第二のハッシュ値の生成の時間差を備える前記ハッシュ値シーケンス・データを、生成させることと、
c) 前記マルチメディア・プログラム・コンテンツをユーザに表示する際に、前記ハッシュ値シーケンス・データの検知に基づいて、マルチメディア・デバイスによって実行されるべき1個以上のアクションを特定する、前記コマンド・データを生成することと、
により作成するステップと、
前記イベント識別データを、マルチメディア・デバイスに送信するステップとを、
備える方法。
【請求項２】
前記第一のハッシュ値が、前記２個以上のフレームの第一のビデオ・フレームに関連付けられていて、かつ前記第二のハッシュ値が、前記２個以上のフレームの第二のビデオ・フレームに関連付けられている、請求項１に記載の方法。
【請求項３】
前記マルチメディア・デバイスが、前記ハッシュ値シーケンス・データを識別するために前記インバンド・データを処理し、かつ前記ハッシュ値シーケンス・データを識別すると、前記１個以上のアクションを実行する、請求項1に記載の方法。
【請求項４】
前記イベント識別データを作成することが、さらに、
a) ビデオ・プログラムの第一部分の終了部に関係付けられている第一のハッシュ値シーケンス・データを生成すること、および
b) 前記ビデオ・プログラムの第二部分の開始部に関係付けられている第二のハッシュ値シーケンス・データを生成すること、
の少なくとも１つを備える、請求項1に記載の方法。
【請求項５】
前記ハッシュ値シーケンス・データが、ビデオ・プログラムに関係付けられている字幕データから生成される、請求項１に記載の方法。
【請求項６】
前記ハッシュ値シーケンス・データが、テキストの様々なサイズから標準化されたハッシュ値を作成するハッシュ関数を用いて、字幕から生成される、請求項1に記載の方法。
【請求項７】
請求項1〜６の何れかに記載の方法を１個以上のプロセッサに実行させる命令を備える、一時的でないコンピュータ可読格納媒体。
【請求項８】
１個以上のプロセッサと、
インバンド・データを備えるマルチメディア・プログラム・コンテンツを処理するモジュールであって、前記処理が、ハッシュ値シーケンス・データとコマンド・データを含むイベント識別データを作成することを備え、前記イベント識別データを、前記インバンド・データから、
a) １個以上の時間オフセットに基づいて前記マルチメディア・プログラム・コンテンツ内の２個以上のフレームを識別することと、
b) 前記２個以上のフレームの少なくとも一部のインバンド・データから、第一のハッシュ値、第二のハッシュ値、および前記第一のハッシュ値と前記第二のハッシュ値の生成の時間差を備える前記ハッシュ値シーケンス・データを、生成させることと、
c) 前記マルチメディア・プログラム・コンテンツをユーザに表示する際に、前記ハッシュ値シーケンス・データの検知に基づいて、マルチメディア・デバイスによって実行されるべき1個以上のアクションを特定する、コマンド・データを生成することと、
により作成する、モジュールと、
前記イベント識別データを、マルチメディア・デバイスに送信するモジュールとを、
備えるサーバ。
【請求項９】
前記第一のハッシュ値が、前記２個以上のフレームの第一のビデオ・フレームに関連付けられていて、かつ前記第二のハッシュ値が、前記２個以上のフレームの第二のビデオ・フレームに関連付けられている、請求項８に記載のサーバ。
【請求項１０】
前記マルチメディア・デバイスが、前記ハッシュ値シーケンス・データを識別するために前記インバンド・データを処理し、かつ前記ハッシュ値シーケンス・データを識別すると、前記１個以上のアクションを実行する、請求項８に記載のサーバ。
【請求項１１】
前記イベント識別データを作成することが、さらに、
a) ビデオ・プログラムの第一部分の終了部に関係付けられている第一のハッシュ値シーケンス・データを生成すること、および
b) 前記ビデオ・プログラムの第二部分の開始部に関係付けられている第二のハッシュ値シーケンス・データを生成すること、
の少なくとも１個を備える、請求項８に記載のサーバ。
【請求項１２】
前記ハッシュ値シーケンス・データが、ビデオ・プログラムに関係付けられている字幕データから生成される、請求項８に記載のサーバ。
【請求項１３】
前記ハッシュ値シーケンス・データが、テキストの様々なサイズから標準化されたハッシュ値を作成するハッシュ関数を用いて、字幕から生成される、請求項８に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディア・コンテンツ・ストリームのインバンド・データを認識し、かつマルチメディア・デバイスでマルチメディア・コンテンツ・ストリーム内のポイントの位置を決めることに関する。
【背景技術】
【０００２】
ここに記載される方法は、必ずしも既に考えられたか、実行された方法ではないが、実行できる方法である。したがって、特に明記しない限り、ここにおいて記載されるあらゆる手法が、単に、この項に包含される既知の発明として限定されるものとみなしてはならない。
【０００３】
テレビ視聴者は、ビデオカセット・レコーダ（VCR）を使用して、放送されたテレビ・プログラムを録画することができる。このように、VCRユーザは、テレビ・プログラムが放送される時に特定のテレビ・プログラムを録画することができ、後で同じ録画されたテレビ・プログラムを再生することができる。これを達成するために、VCRは、テレビ・プログラムを表す電気信号を磁気信号に変え、その磁気信号を磁気テープに保存する。磁気テープは、通常、VCRユーザによってVCRに挿入されるビデオカセット・テープの形式である。VCRのユーザがテレビ・プログラムを再生することを決めるとき、その処理は逆で、VCRは、ビデオカセット・テープに保存された磁気信号を電気信号に変えて、電気信号をテレビ受像機に送信する。
【０００４】
デジタル技術の発達とともに、VCRは、デジタル・ビデオテープ・レコーダ（DVR）に取って代えられている。DVRは、テレビ・プログラムの電気信号をデジタル情報に変え、デジタル情報をハード・ディスクに格納することによって、後の再生のために放送されたテレビ・プログラムを録画する。ユーザが録画されたテレビ・プログラムを再生するとき、DVRは、デジタル情報をアナログ信号へ変えて、テレビ視聴者にテレビ・プログラムを表示するテレビ受像機に信号を送信する。また、デジタル・テレビの出現によって、DVRは、デジタルおよびアナログの信号を受信することができ、デジタル形式のテレビ・プログラムを表示するデジタル・テレビ受像機に直接デジタル信号を送信することができる。多くのコンテンツ・プロバイダは、現在、デジタル・プログラミングを放送するために、デジタル・ケーブルおよび衛星技術を使用する。デジタル・プログラミングは、表示画面にユーザへのデジタル・プログラミングを表示するために使用されるケーブルボックスおよび／または衛星トランシーバによって受信される。このように、DVRは、この種のデバイスに組み込まれるだけでなく、録画および表示のためにケーブルボックスまたは衛星トランシーバからデジタル・プログラミング信号を受信する能力を有する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願09/665,921号
【特許文献２】米国特許6,233,389号
【特許文献３】米国特許出願11/284,487号
【特許文献４】米国特許6,215,526号
【特許文献５】米国特許6,850,691号
【特許文献６】米国特許出願10/915,990号
【特許文献７】米国特許10/220,558号
【特許文献８】米国特許出願10/741,596号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
DVRは、テレビ・プログラムを録画するのに、ますます普及し、広く使用されるようになった。より重要なことに、テレビ番組を録画するためのDVRの使用は、DVRユーザに内容を提示し、ビデオ・プログラムの経験を拡充する異なる手段をコンテンツ・プロバイダに探索させることになった。カスタマイズされた放送コンテンツは、コンテンツ・プロバイダおよびDVRコミュニティにおいて不足するようになった。本出願人が所有する米国特許出願09/665,921号は、字幕エリアを使用する放送コンテンツにタグを付ける方法について記載する。また、本出願人が所有する米国特許6,233,389号は、字幕データの特定の語を認識する方法について記載する。
【０００７】
未修正のビデオ・プログラム内の、識別可能なイベントを認識するための技術が望まれる。
【図面の簡単な説明】
【０００８】
本発明は、添付図面において、一例として示され、かつ、限定されるものではなく、また、参照番号は、同種の要素を示す。
【図１】実施例に従って、インバンド・データの認識および同期するためのシステムを例示するブロック図である。
【図２】実施例に従って、インバンド・データの認識および同期のためのデバイスのコンポーネントの全体的な概要を例示するブロック図である。
【図３Ａ】実施例に従って、ハッシュ値シーケンス・データを生成するための方法を示すフローチャートである。
【図３Ｂ】実施例に従って、ハッシュ値シーケンス・データを生成するための方法を例示するブロック図である。
【図３Ｃ】実施例に従って、さまざまな字幕方式を使用するハッシュ値シーケンス・データを生成するための方法を例示するブロック図である。
【図３Ｄ】実施例に従って、表示画面に現れるアイコンを例示するブロック図である。
【図４】実施例に従って、マルチメディア・デバイスで字幕の認識および同期するための方法を表すフローチャートである。
【図５Ａ】実施例に従って、インバンド・データパターンにマッチングするステートマシンを例示するブロック図である。
【図５Ｂ】実施例に従って、ハッシュ値シーケンス・データを例示するブロック図である。
【図６】実施例に従って、インバンド・データに同期するための方法を例示するブロック図である。
【図７】実施例に従って、ビデオ・プログラム内のマルチメディア・セグメントを作成し、視聴するための方法を例示するブロック図である。
【図８】本発明の実施例を実行できるシステムのブロック図である。
【発明を実施するための形態】
【０００９】
以下の説明では、説明の必要上、本発明の完全な理解を提供するために、具体的な詳細の多くが記載される。しかしながら、本発明がこれらの具体的な詳細なしで実行できることは、明らかである。他の場合では、本発明を不必要にあいまいにすることを避けるため、周知の構造及びデバイスが、ブロック図の形式で示される。
【００１０】
実施例は、本願明細書に以下の概略のもとに記載される。
1.0  全体的な概要
2.0  構造的な概要
3.0  インバンド・データの認識および同期の方法
3.1  字幕データ
3.1.1  ハッシュ値シーケンス・データの生成
3.1.2  ハッシュ・シーケンス・メタデータ
3.1.3  マルチメディア・デバイスによるハッシュ・シーケンスの認識
3.1.4  字幕データの同期
3.2  エンハンスト・テレビジョン・信号化データ
4.0  カスタマイズされたマルチメディア・セグメントを作成し、視聴する方法
4.1  マルチメディア・プログラム・セグメントのユーザ選択
4.2  マルチメディア・プログラムのユーザ起動イベント識別データの作成
4.3  タグ付けされたマルチメディア・プログラム・コンテンツの作成
4.4  マルチメディア・プログラムの共有イベント識別データ
5.0  実施メカニズム
【００１１】
1.0  全体的な概要  上記の背景において確認されるニーズ、および、以下の説明により明らかになる他のニーズと目的は、一態様において、インバンド・データの認識および同期システムを備える本発明で成し遂げられる。
【００１２】
上記したように、テレビ・プログラムを録画するためのDVRの使用は、DVRユーザにコンテンツを提示し、ビデオ・プログラムの経験を拡充する異なる手段をコンテンツ・プロバイダに探索させることになった。例えば、オリジナルのビデオ・プログラム内に付加的なマーケティングおよびプロモーション・コンテンツを提示することを望むコンテンツ・プロバイダは、特定のアイコン、メッセージまたは対話のための要素にビデオ・プログラムの特定の部分でユーザに表示させることができる。
【００１３】
出願人が所有し、本願明細書に参照によって完全に組み込まれている、「ブランド・ビデオ・タグを表示するための方法とデバイス（Method and Apparatus for Displaying Branded Video Tags）」と称される米国特許出願11/284,487号に記載されるように、DVRは、ビデオ・プログラムの放送の間、アイコンまたは関連付けられた内容を表示することによって、ビデオ・プログラムのブランド部分を表示することができる。これにより、コンテンツ・プロバイダが、これから放送されるビデオ・プログラムのプロモートを望む場合、そのビデオ・プログラムを詳述するコマーシャルの表示の間、対話のためのアイコンを表示させることができる。コマーシャルを視聴すると共に、視聴者は、DVRに自動的にプロモートされた、これから放送されるビデオ・プログラムを録画させるために、リモコンを使用してアイコンと対話することができる。
【００１４】
これらの付加的な特徴の多くが機能するようにするために、DVRは、正確な時間に付加的なコンテンツ・データを表示するために、マルチメディア・コンテンツ・ストリームと同期しなければならない。通常は、コンテンツが放送される前に、付加的なコンテンツはマルチメディア・コンテンツ・ストリームに直接埋め込まれる。このように、DVRは、マルチメディア・コンテンツ・ストリーム内のオーディオおよびビデオ・データとともに付加的なコンテンツを処理する。マルチメディア・コンテンツ・ストリームに直接コンテンツを埋め込むことによって、コンテンツ・プロバイダは、確実に、付加的データを、コンテンツ・プロバイダが表示することを要求した所で、正確にユーザに提示することができる。さらに、マルチメディア・コンテンツ・ストリームには、DVRとの同期を補助するために、付加的情報をユーザには見えないように埋め込むことができる。上記の特徴は、本出願人が所有する、各々が本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（Closed-Caption Tagging System）」と称される米国特許出願09/665,921号、および、「アナログ・ビデオのタグ付けおよび符号化システム（Analog Video Tagging and Encoding System）」と称される米国特許6,215,526号に、より詳細に記載されている。
【００１５】
本発明の実施例は、DVRおよび他のマルチメディア・デバイスが、マルチメディア・コンテンツ・ストリーム内のインバンド・データと同期するのを可能にする。インバンド・データは、データ（この場合、オーディオおよびビデオ・データ）の送信に使用されるものと同じチャネルまたは「バンド」による付加的データを信号化するために使用される。同期のためにインバンド・データを使用することの1つの利点は、インバンド・データが通常コンテンツ・ストリーム内で不変状態であるということである。このため、インバンド・データは、通常、完全でかつ変化しないので、マルチメディア・コンテンツ・ストリームとの同期に対し信頼性が高いソースとなる。
【００１６】
インバンド・データの具体例は、字幕データおよびエンハンスト・テレビジョン（ETV）信号化データを含む。字幕ストリームには、ビデオ・プログラム（例えば、視聴者に表示されるコマーシャル、ホームコメディ・プログラム、長編映画および他のマルチメディア・コンテンツ）に関連付けられた字幕データ（通常は字幕コマンド・データおよびテキスト）が、含まれる。ETV信号化データは、ETVビデオ・プログラムと同期する対話アプリケーションのためのコマンド・アンド・コントロール信号を定義する。
【００１７】
マルチメディア・デバイスが、ビデオ・プログラムおよびインバンド・データを含むマルチメディア・コンテンツ・ストリームを受信すると、このデバイスは、インバンド・データを処理する。マルチメディア・コンテンツ・ストリームは、コンテンツ・プロバイダによる無線放送によって、または、マルチメディア・デバイスによって既に録画されたものでもよい。ビデオ・プログラムの録画または再生の間、マルチメディア・デバイスは、インバンド・データパターンを認識することを試みる。インバンド・データパターンは、イベント識別データとして、他のデバイスまたはサービス・プロバイダから提供されたものでもよい。イベント識別データは、マルチメディア・コンテンツ・ストリームの特定のイベントに関連付けられたインバンド・データパターンを識別する。イベント識別データは、格納デバイスに格納され、インバンド・データを処理するときにアクセスすることができる。
【００１８】
マルチメディア・デバイスは、マッチング・アルゴリズムを利用することによってインバンド・データパターンを認識することを試みる。一実施例によれば、マッチング・アルゴリズムは、有限ステートマシンで具体化される。マルチメディア・コンテンツ・ストリーム内でインバンド・データをリスンすると共に、マルチメディア・デバイスは、ステートマシンを利用して、インバンド・データがインバンド・データの特定のパターンにマッチングするかどうかを決定する。
【００１９】
一実施例によれば、マルチメディア・デバイスでローカルに格納されるイベント識別データは、メタデータも含む。メタデータは、マルチメディア・コンテンツ・ストリームのインバンド・データをリスンすることによって、パターンを識別することに応答して、一つ以上のアクションを特定する。マッチングが生じると、マルチメディア・デバイスはパターンに関連付けられたメタデータを処理し、そのメタデータで特定される適切なアクションを実行する。例えば、マルチメディア・デバイスは、表示画面上に、ユーザに対してアイコンを表示することができる。ユーザがそのアイコンに反応すると、メタデータは、必要なあらゆる応答を、マルチメディア・デバイスに指示することができる。さらに、インバンド・データパターンを認識することに応答して、マルチメディア・デバイスは、そのパターンに関連付けられたビデオ・セグメントを格納デバイスに格納することができる。マルチメディア・デバイスは、ビデオ・セグメントが、どこで開始され、どこで終了するか、または、特定のイベントがビデオ・プログラム内のどこで生じるかについて決定するために、認識されるパターンに関連付けられたメタデータを使用することができる。このようにして、インバンド・データを認識し、同期するための方法が可能となる。
【００２０】
別の態様において、カスタマイズされたマルチメディア・セグメントを作成し、かつ視聴する方法が提供される。格納または再生にビデオ・プログラム内のイベントまたは部分を選択することができる方法が、マルチメディア・デバイスによってユーザに提供される。第1のマルチメディア・デバイスで、ユーザは、制御インタフェース（例えば、リモコン）を使用し、ビデオ・プログラム内の一つ以上の位置を選択する。マルチメディア・デバイスは、制御インタフェースから信号を受信し、ビデオ・プログラムのどの位置が選択されたかを決定する。マルチメディア・デバイスは、選択された位置に関するインバンド・データパターンを計算し、上記と同じ方法で、イベント識別データのように、インバンド・データパターンを格納する。
【００２１】
選択された位置に関するイベント識別データは、他のマルチメディア・デバイスに提供することができる。イベント識別データを使用して、他のマルチメディア・デバイスは、ビデオ・プログラム内で位置を認識するために、ビデオ・プログラムに関連付けられたインバンド・データパターンにマッチングすることを試みる。
【００２２】
一実施例によれば、ビデオ・プログラムの選択された位置は、イベントまたはビデオ・セグメントを表す。さらに、他の実施例によれば、ビデオ・セグメントが認識されるとき、ビデオ・プログラムの再生の間、ユーザが、選択された位置に直接スキップできるように、ビデオ・タグをマルチメディア・コンテンツ・ストリーム内の適切な場所に置くようにすることができる。
【００２３】
さらに、他の実施例では、一旦ビデオ・プログラムの選択された位置を表すビデオ・タグが生成されると、字幕データをコンテンツ・ストリームから取り除いてもよく、かつコンテンツ・ストリームを携帯機器に提供することができる。携帯機器は、ビデオ・プログラム内の特定の位置またはセグメントを示すために、ビデオ・タグを使用する。これに代えて、マルチメディア・コンテンツ・ストリームにビデオ・タグを置く代わりに、コンテンツ・ストリームの未編集のバージョンを、選択された位置を表すデータとともに、マルチメディア・デバイスに提供することができる。選択された位置を表すデータは、マルチメディア・コンテンツ・ストリームから分離して提供することができる。携帯機器は、ビデオ・プログラム内の関心を引く位置を特定し、ユーザに位置を表示するためのデータを使用することができる。これに代えて、携帯機器は、何らかの適切な方法で選択された位置を表すデータを使用することができる。
【００２４】
他の実施例の場合、本発明は、デバイスおよびコンピュータ可読媒体を含む。
【００２５】
2.0  構造的な概要
本記載を通して、多数の用語は特定の概念を言及するために使用され、これらはここで定義される。具体的には、「インバンド・データ」は、オーディオおよび／またはビデオ・データを送信するために使用されるのと同じチャネルまたは「バンド」上で送信される信号化データである。集合的に、インバンド・データは、「インバンド・データ・ストリーム」に含まれる。一実施例によれば、インバンド・データ・ストリームは、マルチメディア・コンテンツ・ストリームの字幕データまたはエンハンスト・テレビジョン（ETV）信号化データを含むことができる。「インバンド・データパターン」は、インバンド・データ・ストリームの特定のセグメント上で生じるインバンド・データを含む。インバンド・データパターンは、一部のインバンド・データ・ストリームから選択されるインバンド・データのシーケンスを識別する。例えば、インバンド・データパターンは、インバンド・データ・ストリームの特定のセグメントにまたがる一まとまりの字幕データまたはETV信号化データとすることができる。「イベント識別データ」は、一つ以上のインバンド・データパターンを識別するデータである。さらに、イベント識別データは、マルチメディア・コンテンツ・ストリーム内のイベントを記載するメタデータ、及びインバンド・データパターンの認識に応答してアクションを実行するためのコマンド・データのような付加的データを含むこともできる。マルチメディア・コンテンツ・ストリームのインバンド・データを認識し、マルチメディア・コンテンツ・ストリーム内のポイントを配置するために、イベント識別データを使用するマルチメディア・デバイスに、イベント識別データを、提供することができる。
【００２６】
図1には、一実施例による、インバンド・データの認識および同期するためのシステムが示される。システムは、任意型の適切な通信インタフェース（例えば、イーサネット（登録商標）または無線通信ポート）によるネットワーク105に各々通信で接続されたDVR 102および104を含む。さらに、システムは、サーバ106A、コンテンツ・プロバイダ106B、パーソナル・コンピュータ101Aおよび携帯機器101Bを含む。
【００２７】
パーソナル・コンピュータ101Aは、デスクトップまたはラップトップコンピュータのようなパーソナル・コンピューティング・デバイスとすることができ、かつ任意型の適切なインタフェースによってネットワーク105に接続させることができる。パーソナル・コンピュータ101Aは、携帯機器101Bにも接続される。携帯機器101Bは、ハンドヘルド・コンピューティング・デバイス、携帯電話、携帯用のメディアプレーヤまたはマルチメディア・コンテンツを表示することができるその他の携帯機器である。ネットワーク105を通して、DVR 102および104、パーソナル・コンピュータ101Aおよび携帯機器101Bの各々が、サーバ106Aおよびコンテンツ・プロバイダ106Bと通信する。
【００２８】
ネットワーク105は、通信システムのデバイス間でのデータ交換を提供する任意型の媒体またはメカニズムによって、実施することができる。ネットワーク105の例としては、ローカル・エリア・ネットワーク（LAN）、ワイド・エリア・ネットワーク（WAN）、イーサネット（登録商標）、またはインターネットのようなネットワーク、または一つ以上の地上、衛星、無線リンクが挙げられるが、これらに限定されるものではない。この代わりに、または、これに加えて、ネットワーク105に接続される多数のデバイスは、通信リンクを通して相互に直接接続させることができる。
【００２９】
一実施例において、DVR 102および104は、サーバ106Aと通信する。サーバ106Aは、DVR 102および104が視聴者の興味を満たすために、サーバ106Aの中で独立して作動することを可能にするデータのプログラム・ガイド・データ、グラフィカルなリソース（例えばフォント、画像、その他）サービス情報、ソフトウェア、広告、イベント識別データ等を提供する。    
【００３０】
コンテンツ・プロバイダ106Bは、無線の放送、衛星通信または同軸ケーブルによってDVR 102および104に、直接、マルチメディア・プログラム・コンテンツを提供することもできる。マルチメディア・プログラム・コンテンツは、DVRユーザに表示するための、長編の映画、ホームコメディ、バラエティーショー、トークショー、広告等のコンテンツを含む。さらに、コンテンツ・プロバイダ106Bは、サーバ106Aが、解釈しかつDVR 102および104に提供するプロモーションのデータ、アイコン、ウェブ・データ等の情報を含む付加的データも、サーバ106Aに提供する。他の実施例によれば、コンテンツ・プロバイダ106Bは、また、マルチメディア・プログラム・コンテンツを処理のためにサーバ106Aに提供する。サーバ106Aは、マルチメディア・プログラム・コンテンツを処理し、イベント識別データを作成し、そしてDVR及び他のデバイスにイベント識別データを提供する。
【００３１】
マルチメディア・デバイスは、マルチメディア・コンテンツ・ストリームに認識し、同期するために、イベント識別データを使用する。次に図2を参照すると、インバンド・データの認識および同期のためのデバイスのコンポーネントを例示するブロック図が、一実施例に従って示される。特に図2は、DVR 202のコンポーネントを表す。実施例の必要上参照は、明細書を通してDVRになされる点は注記されるべきである。しかしながら、本発明はこのように限定されるものではなく、インバンド・データを認識し、かつそれに同期する処理は、どのようなマルチメディア・デバイスまたはコンピュータ・システムのタイプでも実行させることができる。
【００３２】
DVR 202は、一般に、（コンテンツ・プロバイダ106Bまたはサーバ106Aからマルチメディア・プログラム・コンテンツを受信するために、入力モジュール202Aによって示される）複数のコンポーネントを備える。一実施例によれば、マルチメディア・コンテンツ・ストリームを表す放送信号は、コンテンツ・プロバイダ106BからDVR 202に送信される。DVR 202は、入力モジュール202Aを介してアンテナ、有線テレビ・システム、衛星受信器等の伝送システムからマルチメディア・コンテンツ・ストリームを表す放送信号を受信する。入力モジュール202Aは、複数の信号を受信しかつ同時に録画することを可能にするために、複数のチューニング・モジュールを備えることができる。さらに、入力モジュール202Aは、例えば、全国テレビジョン標準方式委員会（NTSC：National Television Standards Committee）、または、PAL放送、および、デジタル衛星システム（DSS：Digital Satellite System）デジタル放送サービス（DBS：Digital Broadcast Services）または先進テレビジョン標準方式委員会（ATSC：Advanced Television Standards Committee）の多くのデジタル形式でTV入力ストリームを得る。DBS、DSSおよびATSCは、Moving Pictures Experts Group 2（MPEG2）およびMPEG 2トランスポートと呼ばれる標準規格に基づく。テレビ受像機が多重化信号のプログラムを見つけ出すために、入力ストリームを逆アセンブルできるように、MPEG2トランスポートは、TVソース送信器からデジタルデータ・ストリームをフォーマットするための標準規格となっている。
【００３３】
DVR 202は、また、入力モジュール202Aから受信されるマルチメディア・コンテンツ・ストリームの一つ以上の部分を録画し、かつデジタルデータ・ストリームとしてマルチメディア・コンテンツ・ストリームを格納デバイス214に格納する機能を有する録画モジュール204を含む。録画モジュール204は、デジタルデータ・ストリームのセグメントを保持するように設計される格納デバイス214のような、少なくとも一つの格納設備上にデジタルデータ・ストリームを格納することによって、着信マルチメディア・コンテンツ・ストリームを録画する。一実施例によれば、格納デバイス214は、DVR 202内に設置されるハード・ディスク・ドライブでもよい。これに代えて、格納デバイス214は、任意型の揮発性および／または不揮発性格納媒体（例えば、フラッシュ・メモリ）でもよく、さらに、取外し可能な格納媒体（例えば、DVD-ROMディスク）で構成することができる。DVR 202が、これらのあらゆる組み合わせで、上記のタイプの複数の格納デバイス、格納媒体または取外し可能な格納媒体を含むことができることは注意されるべきである。
【００３４】
再生の間、信号を標準規格テレビ受像機に配信する出力モジュール202Bを介して、デジタルデータ・ストリームは、アナログ信号に変換され、次いでRF搬送波に変調される。これに代えて、出力モジュール202Bは、デジタル信号をテレビ受像機またはビデオモニタに配信することもできる。例えば、DVR 202は、デジタル・ビジュアル・インタフェースポート（DVI）を、DVIケーブルを介してTVにデジタル信号を送信するために利用することができる。これに代えて、出力モジュール202Bは、ケーブルを用いずに内部的にアナログおよび／またはデジタル信号をテレビ受像機に配信することもできる。例えば、DVR 202は、DVR 202と表示画面間の通信が、テレビ受像機に配置されるシステムバスを介して内部的に行われるテレビ受像機の一部としても良い。
【００３５】
マルチメディア・コンテンツ・ストリームおよび他のタイプのデータを録画しかつ格納するために、DVR 202は、格納デバイス214を含む。格納デバイス214は、ハード・ディスク、メモリまたはDVR 202に配置されるその他の形式の格納域とすることができる。格納デバイス214は、プログラムの要素またはマルチメディア・コンテンツ・ストリームのみならず、DVR 202が使用する付加的データも格納するために使用することができる。例えば、将来の検索のために、イベント識別データを格納デバイス214に格納することができる。格納デバイス214がDVR 202内のモジュールとして示されているが、格納デバイス214は、DVR 202の外部に配置し、そしてDVR 202が、インタフェース（例えば、通信インタフェース206）を使用して、格納デバイスと通信することができるようにすることもできる。
【００３６】
また、DVR 202は、通信インタフェース206を含み、イーサネット（登録商標）、ワイヤレス・ネットワーク、モデム等の標準規格の通信を介して、ネットワーク105と通信する。他の実施例において、通信インタフェース206は、任意型の通信ポート（例えば、同軸ケーブル、赤外線、光ファイバ、シリアル・ポート）とすることができる。1つの例によれば、データは、通信インタフェース206に接続されたイーサネット（登録商標）ケーブルを使用して、ネットワーク105上のサーバ106AからDVR 202へ通信される。通信インタフェース206を使用して、DVR 202は、LANを通してPC101Aまたは携帯機器101Bと通信することができる。
【００３７】
入力モジュール202Aは、DVRユーザが録画および再生するためにマルチメディア・コンテンツ・ストリームを受信する。マルチメディア・コンテンツ・ストリームは、入力モジュール202Aで受信されると、録画モジュール204によって録画され、かつ出力モジュール202Bを介してユーザに表示させるために、処理される。表示のためのマルチメディア・コンテンツ・ストリームの処理は、格納デバイス214と、その後の表示のための出力モジュール202Bとに、マルチメディア・コンテンツ・ストリームを送信することを含む。具体的には、このDVRは、生再生の間、マルチメディア・コンテンツ・ストリームの一部分を録画し、全てのビデオプログラムを録画することなく、ユーザが一時中断して、生放送を巻き戻すことを可能とする。マルチメディア・コンテンツ・ストリームの処理については、本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「マルチメディアの時間的歪みシステム」と称される米国特許6,233,389号においてさらに詳細に記載されている。
【００３８】
DVR 202の動作の間、解析モジュール210は、インバンド・データ（例えば、字幕データまたはETV信号化データ）をリスンする。マルチメディア・コンテンツ・ストリームが録画されると共に、解析モジュール210は、ストリームのインバンド・データ部分を監視する。これに代えて、解析モジュール210は、その他の時間（例えば、マルチメディア・コンテンツ・ストリームの再生）の間、インバンド・データを監視することもできる。
【００３９】
一実施例の場合、マルチメディア・コンテンツ・ストリームは、MPEGトランスポート・ストリームであり、そしてインバンド・データは、プライベートデータ・イベントとしてオーディオおよびビデオ・データとインタリーブされる。インバンド・データは、コンテンツ・ストリーム内の独立のイベントであるので、DVR 202のようなマルチメディア・デバイスによって容易に認識される。さらに、オリジナル放送がアナログ形式の場合には、DVR 202は、解析モジュール210によって処理されるとき、マルチメディア・コンテンツ・ストリームがMPEGトランスポート・ストリームの形式になるように、入力モジュール202Aでマルチメディア・コンテンツ・ストリームをデジタル化するために必要な複数のコンポーネントを含む。米国特許6,233,389号に詳しく記載されているように、インバンド・データは、ビデオおよびオーディオが、パッケタイズド・エレメンタリ・ストリーム（PES：Packetized Elementary Stream）に置かれるように、抽出される。インバンド・データは、その後、解析モジュール210による処理および出力モジュール202Bによる表示のために、オーディオおよびビデオと結合される。
【００４０】
マルチメディア・コンテンツ・ストリームと同期するために、DVR 202は、パターン認識ステートマシン212も含む。実施例において、パターン認識ステートマシン212は、マルチメディア・コンテンツ・ストリーム内のインバンド・データパターンを識別するためのアルゴリズムを表す。パターン認識ステートマシン212は、インバンド・データを既知のインバンド・データパターンとマッチングさせる過程で、周知のインバンド・データパターンを含むイベント識別データを処理する。
【００４１】
一実施例によれば、パターン認識ステートマシン212は、格納デバイス214に格納されているイベント識別データのインバンド・データパターンを解析モジュール210からのインバンド・データとマッチングさせるステート・ベースのアルゴリズムである。マッチングが生じると、パターン認識ステートマシン212は、認識されたインバンド・データパターンに関連付けられたメタデータを検査するDVR 202に、マッチングを報告する。メタデータに基づいて、DVR 202は、いかなる数のアクションもマルチメディア・コンテンツ・ストリームに同期させて実行することができる。
【００４２】
DVR 202のコンポーネントが、DVRとの関係について記載されているが、モジュールが、DVR 202の各モジュールの機能を実行することができるテレビ受像機に収容されるように、上記モジュールをテレビ・システムに組み込むことができることは、注記されるべきである。さらに、他の実施例では、上記モジュールは、記載された機能を実行することができる多くのデバイスの中に配置してもよい。これにより、記載されたコンポーネントの動作によって、DVR 202は、インバンド・データを認識し、かつアクションおよびイベントをインバンド・データに同期させることができる。
【実施例】
【００４３】
3.0  インバンド・データの認識および同期の方法
上述したように、インバンド・データは、多くの形式をとることができる。そのような二つの形式には、字幕データおよびETV信号化データが含まれる。しかしながら、本発明は、字幕およびETV信号化データに限定されず、他のタイプのインバンド・データにも適用できる点は注記されるべきである。
【００４４】
3.1  字幕データ  
マルチメディア・コンテンツ・ストリーム内のインバンド・データの一つのタイプは、字幕データである。字幕データは、ユーザに表示するための字幕テキストとビデオ・プログラミングと連動する字幕制御を表すデータである。マルチメディア・デバイスは、字幕データを認識することができ、かつ本願明細書に記載されるようなプロセスを用いて、さまざまな方法でアクションおよびイベントを字幕データに同期させることができる。
【００４５】
マルチメディア・デバイスは、マルチメディア・コンテンツ・ストリームを認識しかつ同期させるために、字幕データパターンを使用することができる。字幕データで利用可能なデータパターンのタイプは、非常に多くある。例えば、識別可能なデータパターンは、実際の字幕テキスト、字幕制御データ、および字幕データによって定義されるその他のイベント内に存在することができる。字幕データ内の識別可能なパターンを認識することにより、DVRは、マルチメディア・コンテンツ・ストリーム内のイベントを識別することができる。
【００４６】
字幕データ内のパターンを認識する1つの方法は、字幕テキストを表すハッシュ値を計算しかつハッシュ値シーケンスのパターンを識別することである。これにより、一実施例によれば、マルチメディア・デバイス（例えば、DVRまたはサーバ）で、字幕データが解析され、ハッシュ値が字幕データに対応して生成される。そして、ハッシュ値は、特定のビデオ・プログラムまたはセグメントに関連付けられたハッシュ値シーケンスにコンパイルされ、さらにマルチメディア・デバイスで処理するために、コマンド・アンド・コントロール情報を定義するメタデータと組み合わせられる。
【００４７】
このハッシュ・シーケンスおよびメタデータは、ハッシュ値シーケンス・データの形式でマルチメディア・デバイス（例えば、DVR）に提供される。マルチメディア・デバイスは、このハッシュ値シーケンス・データを使用して、字幕データを認識しかつこれに同期させる。マルチメディア・デバイスは、マッチング・アルゴリズムを用いて、字幕データから生成されたハッシュ値を、マルチメディア・デバイスがローカルに格納した複数のハッシュ・シーケンスとシーケンシャルに比較する。一実施例によれば、マッチング・アルゴリズムは、生成されたハッシュ値を処理しかつハッシュ値シーケンス・データによって識別されたハッシュ・シーケンスとのマッチングが生じたかどうかを報告するステートマシンによって実行される。
【００４８】
3.1.1  ハッシュ値シーケンス・データの生成
一実施例によれば、字幕データを認識し、かつアクションおよびイベントをコンピュータ・システムの字幕データに同期させるために、ハッシュ値シーケンス・データが生成され、DVR 102および104などのデバイスに提供される。また、DVR 102および104の各々は、ユーザに表示するためのビデオ・プログラムを含む一つ以上のマルチメディア・コンテンツ・ストリームを受信する。本明細書で定義されるように、ビデオ・プログラムは、DVRのユーザが再生する長編の映画、バラエティーショー、トークショー、音楽ビデオ、ホームコメディ・プログラム、コマーシャル、テレビジョンの生放送等のマルチメディア・コンテンツとすることができる。
【００４９】
字幕データは、一実施例によれば、マルチメディア・コンテンツ・ストリームに関連付けられたデータの分離したストリームに含めることができる。例えば、プログラムがデジタル形式の場合、字幕データはプライベートデータ・チャネルの一部としてMPEG2ストリーム内で通信される。しかしながら、アナログフォーマットで通信するときは、字幕データは、この代わりに多数の標準規格方式でアナログTV信号の垂直帰線消去時間（VBI：Vertical Blanking Interval）に変調される。例えば、北米基本テレテキスト標準（NABTS：North American Broadcast Teletext Standard）は、FCCが、字幕（CC：Closed Caption）および拡張データサービス（EDS：Extended Data Services）に行21の使用を命令するとき、NTSC信号の行10から20上に情報を変調するために使用することができる。しかしながら、アナログ字幕信号は、あたかもそれらがMPEG2プライベートデータ・チャネルを介して配信されるかのように、DVRの入力モジュールによって復号化され、かつDVRの他のコンポーネントへ渡される。したがって、上述したように、DVR 202の解析モジュール210は、もとがアナログまたはデジタルの何れの形式で放送される字幕データも処理することができる。マルチメディア・コンテンツ・ストリームの字幕データの位置に関する詳細な情報は、本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（Closed-Caption Tagging System）」と称される米国特許出願09/665,921号に見出すことができる。
【００５０】
他の実施例では、字幕データは、マルチメディア・コンテンツ・ストリーム内に検出可能な形式で含めることができる。サーバ106AおよびDVR 202は、字幕データを読み込み、解析することができる。
【００５１】
字幕データを認識しかつアクションおよびイベントをマルチメディア・コンテンツ・ストリームの字幕データに同期させる処理の一部として、また、DVR 102および104の各々は、イベント識別データを受信する。一実施例によれば、イベント識別データは、ハッシュ値シーケンス・データである。ハッシュ値シーケンス・データは、多数のソース（例えば、サーバ106A）から得ることができる。例えば、サーバ106Aは、マルチメディア・デバイスの使用のために、ハッシュ値を計算しかつハッシュ・シーケンスを決定することによって、プログラム・コンテンツを前処理することができる。マルチメディア・デバイスに放送される前に、プログラム・コンテンツは、コンテンツ・プロバイダ106Bによってサーバ106Aに提供させることができる。このように、マルチメディア・デバイスが関連付けられたプログラム・コンテンツを受信する前に、サーバ106Aは、マルチメディア・デバイスにハッシュ・シーケンスを提供することができる。これに代えて、シーケンス・データは、他のコンピューティング・デバイス（例えば、他のDVR）から得ることもできる。
【００５２】
次に図3Aを参照すると、一実施例によるハッシュ値シーケンス・データを生成するための方法を表すフローチャートが示される。ステップ302で、サーバ106Aは、コンテンツ・プロバイダ106Bから一つ以上のビデオ・プログラムを表すデータを受信する。データは、マルチメディア・コンテンツ・ストリームの形式、または、マルチメディア・コンテンツ・ストリームから分離した個々のビデオ・プログラムデータとすることができる。コンテンツ・プロバイダ106Bは、ビデオ・プログラムデータとともに、サーバ106Aにビデオ・プログラムに関連付けられた字幕データも供給する。一実施例では、字幕データは、コンテンツ・プロバイダ106Bによって供給されるビデオ・プログラムを含めたマルチメディア・コンテンツ・ストリーム内に、埋め込むことができる。さらに、コンテンツ・プロバイダ106Bは、ビデオ・プログラムに関連付けられたメタデータを含むイベント情報を提供することができる。
【００５３】
サーバ106Aは、ユーザにビデオ・プログラムを表示すると共に、マルチメディア・デバイスによって作動されるイベントまたはアクションを指定する情報を定義する。この情報は、ユーザに表示するためのグラフィカル・アイコンまたは付加的なコンテンツへの参照を含むことができる。コンテンツまたはアイコンは、マルチメディア・デバイスで提示され、または、インターネット、ネットワーク、または他のDVRを介してマルチメディア・デバイスによって得られる。さらに、その情報は、ビデオ・プログラム内の特定のイベントを表すデータを提示することができる。例えば、スポーツ放送が、別々の期間と休憩時間に分割される場合、コンテンツ・プロバイダ106Bは、サーバ106Aに休憩時間がマルチメディア・コンテンツ・ストリームのどこで生じるかを示すイベント情報を提供することができる。この情報を使用して、サーバ106Aは、DVRがビデオ・プログラム内で自動的に休憩時間の開始と終了を識別することを可能とし、ハッシュ値シーケンス・データを生成することを可能にする。休憩時間が識別されたことで、DVRユーザは、録画された放送を視聴するときに、DVRに自動的に休憩時間をスキップすることを要求することができる。
【００５４】
さらに、一実施例によれば、サーバ106Aは、DVRのような任意のマルチメディア・デバイスから、ビデオ・プログラムの字幕データを得ることができる。例えば、DVR 102は、既に字幕データを含んだビデオ・プログラムを録画することができる。DVR 102は、ネットワーク105の上のサーバ106Aに、サーバ106Aによる処理のために、ビデオ・プログラムに関連付けられた字幕データを含む録画されたビデオ・プログラムを送信することができる。
【００５５】
ステップ304で、サーバ106Aは、ビデオ・プログラムの字幕データを解析して、ハッシュ値シーケンス・データを作成するのに使用されるハッシュ値を作成する。サーバ106Aは、ハッシュ値を作成するために、多数の異なる方法を使用することができる。字幕データのハッシュ値の作成に使用される方法は、ビデオ・プログラムの視聴者に字幕テキストを表示する字幕ストリームによって使用される方法によって、様々なものに変更させることができる。
【００５６】
このように、サーバ106Aは、どの字幕モードが字幕データを表示するために使用されているかを追跡し続ける。例えば、一実施例によれば、後に本願明細書に詳細に記載されるように、字幕テキストは、処理させて、かつポップアップ・モード、ロールアップ・モードまたはペイントオン・モードを使用するユーザに、表示させてもよい。使用されるモードに応じて、ハッシュ値は、ハッシュ関数をテキストの一行の多数の文字に適用する結果を表す。ハッシュ関数Hは、可変サイズの入力mをとり、かつハッシュ値hと呼ばれる固定サイズの文字列h=H（m）となる変換式である。さらに本願明細書に記載されるように、字幕データの可変サイズ入力は、使用される字幕方法による。さらに、一実施例によれば、字幕データの行に置くことができる文字の量は、制限される。
【００５７】
しかしながら、構文解析部312は、異なるシステムに適応するために、テキストの一行に如何なる数文字も受け置くように構成することができる。これにより、後述するように、構文解析部312は、字幕データ内で独立したイベントを検出することに応答して、いつハッシュ値を生成すべきかを決定する。字幕データの範囲内の独立したイベントは、コマンド（例えば、「キャリッジ・リターン」コマンド）とすることができる。「キャリッジ・リターン」コマンドは、テキスト行の終了または開始を定義するために使用することができる。これにより、例えば、テキストの一行が完了済であるときに、「キャリッジ・リターン」はカーソル位置をリセットして次の行に移動させるであろう。
【００５８】
ハッシュ関数は、テキストの様々なサイズから標準化されたハッシュ値を作成するのに役立つ。一実施例によれば、文字は、情報交換用米国標準コード（ASCII：American Standard Code for Information Interchange）によって定義されるのと同種の16進数を表すことができる。さらに、いくつかの字幕実施は、修正されたASCII標準規格を表示変形シンボル（例えば、ビデオ・プログラムのオーディオにおける楽音）に利用することができる。
【００５９】
一実施例によれば、解析モジュール210は、ハッシュ値を製作するために、字幕データの16進表現にハッシュアルゴリズムを適用する。さらに、解析モジュール210は、使用される字幕方法よって、ハッシュ値を計算する方法を調整する。
【００６０】
図3Bを参照すると、一実施例に従って、ハッシュ値シーケンス・データを生成するための方法を例示するブロック図が示される。フレーム310A〜310Dは、106Aサーバで受信されるマルチメディア・コンテンツ・ストリーム内のビデオ・プログラムのフレームを表す。一実施例によれば、ビデオ・プログラムは、毎秒30フレームのレートで再生される。フレーム310A〜310Dの各々は、フレームレートに従って特定の時間で表示される。例えば、フレーム310Aは、時間=1:00で生じ、フレーム310Bは、時間=1:05で生じる。このため、毎秒30フレームのフレームレートとすると、フレーム310Bは、フレーム310A後、フレーム番号151または150のフレームで生じる。
【００６１】
ここで、フレーム310A〜310Dは、単にマルチメディア・コンテンツ・ストリーム内の多数のフレームの中の4つの独立したフレームにすぎず、310Aと310Dの各々のフレームの間には、多数のフレームが、存在することができることは注記されるべきである。フレーム310A〜310Dにおいて、ハッシュ値は、それぞれ、テキストA〜Dに対して生成される。テキストA〜Dは、字幕ストリームの中に含まれるテキストであり、フレーム310A〜310Dは、ハッシュ値がテキストに対して生成される時間を表す。しかしながら、通常、字幕テキストは、一度に二つ以上のフレームに対して表示する点は注記されるべきである。一実施例によれば、字幕データのための転送レートは、ビデオの1フレームにつき2バイトであり、テキストの全行の伝送または受信には数フレームが必要となる。テキストBは、例えば、フレーム310Bに先行する複数のフレームを表示することができる。しかしながら、フレーム310Bは、ハッシュ値がテキストBのために生成されるマルチメディア・コンテンツ・ストリーム内の位置である。
【００６２】
さらに、フレーム310A〜310Dの各々は、特定の時間に表示されるので、フレームが表示されているビデオ・プログラムまたはマルチメディア・コンテンツ・ストリーム内で、時間を表す相対的時間データを含むメタデータを作成することができる。したがって、フレーム310Bは、1:05の時間にテキストBを表示しているが、フレーム310Aは、1:00の時間にテキストAを表示している。構文解析部312は、それぞれ、フレームのハッシュ値に関連付けられたハッシュ値314A〜314Dおよびメタデータを生成するために、フレーム310A〜310Dの各々からテキストA〜Dを読み込む。しかしながら、ハッシュ値を生成するたびに、メタデータを作成する必要がない点は注記されるべきである。
【００６３】
他の実施例では、構文解析部312が、何のテキストも表示していない付加的なフレームを解析することができる。しかしながら、これらのフレームは字幕テキストを含まないので、ハッシュ値の生成は誘発されない。むしろ、より詳細に本願明細書に記載されているように、トリガー・イベントが生じるまで、構文解析部312は、ハッシュ値を生成しない。使用される字幕方法に応じて、トリガー・イベントは、場合ごとに変化するであろう。例えば、一実施例によれば、トリガー・イベントは、字幕データ内の「キャリッジ・リターン」コマンドを識別することである。「キャリッジ・リターン」コマンドが字幕データ内で検出されると、構文解析部312は、字幕テキストの一行以上の行がビデオ・プログラム内で秒数にまたがることを表すハッシュ値を生成する。
【００６４】
表320は、構文解析部312が、ハッシュ値のリストを、フレーム310A〜310Dによって表されるビデオ・プログラムから生成することを表す。表320は、ハッシュ値の列、時間の列および時間オフセットの列を含む。ハッシュ値の列は、フレーム310A〜310Dに対して構文解析部312が生成させたハッシュ値を表す。時間の列は、各ハッシュ値が適切な字幕方法に従って生成された相対時間を表す。特定のビデオ・プログラムがフレーム310A〜310DまたはDVRの現実の時間を含んでいるので、時間値を、マルチメディア・コンテンツ・ストリーム全体に関連させることができる。
【００６５】
構文解析部312がフレームのハッシュ値を生成すると、構文解析部312は、DVR 202のタイミング・モジュール209に問い合わせて、ハッシュ値が生成された時間を決定する。構文解析部312が時間列の時間を生成に同じ相対時間ユニットを使用する限り、DVR 202はいつでも生成されたハッシュ値とハッシュ値シーケンス・データ間の相違を正確に追うことができる。時間オフセットの列は、あるハッシュ値に関連付けられた時間データとその後のハッシュ値に関連付けられた時間データの差を示す。例えば、ハッシュ値「3D59」は、時間オフセット値を有しないことが報告される。この場合、ハッシュ値「3D59」がハッシュ・シーケンスの開始であると決定され、したがって、時間オフセット値は必要ではない。しかしながら、ハッシュ値「2Z55」に対して、時間オフセット値の：05秒が報告（ハッシュ値「3D59」が生成されたあと、およそ、05秒でハッシュ値「2Z55」が生成されたことを示す）される。この情報は、ビデオ・プログラムまたは、これに代えて、特定のイベントまたはDVRのビデオ・プログラム内の位置の開始を決めることに使用することができる。ビデオ・プログラムにコンピュータ・システムを同期させるために、時間オフセット情報を使用する処理は、3.3節でより詳細に考察される。
【００６６】
このように、構文解析部312は、ビデオ・プログラム内の字幕データを解析する。図3Aに戻って参照すると、一旦、構文解析部312が、ビデオ・プログラムの字幕データを解析してハッシュ値を生成すると、サーバ106Aは、ステップ306においてビデオ・プログラムに関連付けられたハッシュ・シーケンスを生成し続ける。構文解析部312が、ビデオ・プログラムまたはビデオ・プログラムセグメントの特定数のハッシュ値を生成することを完了すると、構文解析部312は、生成されたハッシュ値からハッシュ値シーケンス・データを作成する。
【００６７】
ハッシュ・シーケンスのハッシュ値の数およびハッシュ値によって表される時間の量は、構文解析部312、サーバ106Aまたは他のデバイスまたはハッシュ値シーケンス・データの作成の制御を望むユーザが、任意に、設定することができる。例えば、コンテンツ・プロバイダ106Bが、解析のために特定のビデオ・プログラムをサーバ106Aに供給していた場合、コンテンツ・プロバイダ106Bは、5〜10秒間継続するビデオ・プログラムの特定部分の間、アイコンがユーザ入力を要求する画面上に現れるべきであることを示すことができる。図3Dは、一実施例に従って表示画面に現れるこの種のアイコンを例示する図表である。図3Dによれば、表示画面400は、アイコン404を示す。アイコン404は、ダイアログを要請するユーザ入力404Aを含む。この例では、コンテンツ・プロバイダ106Bは、サーバ106Aに、アイコン404が、ビデオ・プログラムの特定部分の間、表示画面400上に現れることを要求する。ここで、構文解析部312は、ビデオ・プログラムの少なくとも10秒間の選択された部分に、ハッシュ値を生成するように構成することができる。これは、コンピュータ・システムが、ハッシュ値の全シーケンスを認識し、かつビデオ・プログラムまたはその部分を明確に識別するのに十分な時間を与えるので、少なくともビデオ・プログラムの選択された部分に対してハッシュ値が生成されることを確実にする。さらに、遅延または誤差の範囲を補償するために、構文解析部312は、ビデオ・プログラムの選択された部分より長くに渡って、ハッシュ値を生成するように構成することができる。
【００６８】
これに代えて、任意のハッシュ値シーケンス・データの長さを、ハッシュ・シーケンス内に生成した各ハッシュ値が、どの程度ユニークであるによって決定することもできる。例えば、ある状況で、同じ字幕データは、結果として同じハッシュ値になる可能性がある。2つのビデオ・プログラムがきわめて類似する字幕データ（例えば、字幕テキストが非常に少ない2つのコマーシャル）を含む場合、それらは、最初、プログラムの前半部に対して同じハッシュ値を生成する可能性がある。しかしながら、構文解析部312が、特定のビデオ・プログラムに対してより長い時間ハッシュ値を生成するほどハッシュ・シーケンスは、よりユニークとなる。したがって、構文解析部312は、ハッシュ値シーケンス・データのビデオ・プログラムへのマッチング精度を制御するために、ハッシュ・シーケンスに含まれるハッシュ値の数を任意に選択できるように構成することができる。さらに、構文解析部312がハッシュ値を生成するとき、サーバ106Aは、メタデータをハッシュ値シーケンス・データに関連付けることができる。関連付けられたメタデータは、上記実施例で考察されたように、ユーザからの入力を要請するためにアイコン400が表示されるべきことを示すことができる。
【００６９】
ハッシュ値が生成されるとき、構文解析部312は、各ハッシュ値が生成された時間に関連付けられた時間データを含む。しかしながら、同じ字幕データまたは同じハッシュ値を、使用される字幕方法に従って、異なる時間に生成させてもよい。
【００７０】
したがって、図3Cを参照すると、異なる字幕使用方法が、一実施例によって示される。それぞれ、字幕データは、ユーザに、ポップアップ・モード340、ロールアップ・モード342またはペイントオン・モード346で表示される。図3Cは、字幕ストリームからのデータを表す着信CCデータ領域と字幕テキストの出力または実際の表示をユーザに表す表示領域を示す。
【００７１】
3.1.1.1  ポップアップ・モード
ポップアップ・モード340では、一実施例によれば、1〜4のテキスト行が同時に画面上に現れ、しばらくの間そこにとどまり、それから字幕テキストの次の行に入れ替わる。
【００７２】
ポップアップ・モード340では、着信字幕データは、バック・バッファ350Bに入れられ、かつ一旦、特定のフレームまたはフレームのシリーズの完全なテキストが表示される用意ができると、一回の「フリップ・バッファ」コマンドによって表示される。このモードでは、「フリップ・バッファ」コマンドが発せられると、ハッシュ値が、表示されているテキストに対して生成される。「フリップ・バッファ」コマンドが発せられると、バック・バッファ350B内のテキストは、ディスプレイ360に表示されているテキストを表すフロント・バッファ350Aへ転送される。
【００７３】
ポップアップ・モードでは、ユーザに対してディスプレイ360上の可視テキストを変更する明確に定義されたイベントは二つしかない。これらのイベントは、(1)バック・バッファ350Bのコンテンツがフロント・バッファ350Aに置かれるように、バッファをフリップすること、および、(2)表示画面360上に表示されたテキストを消去することである。ポップアップ・モードでハッシュ値を生成することは、一旦、フリップ・コマンドまたはイレーズ・ディスプレイ・メモリ・コマンドが処理されていると、バック・バッファ内で構成されたテキストを追跡し続けかつバック・バッファ350B内のテキストに対しハッシュ値を作成する事項に過ぎない。
【００７４】
このようにして、構文解析部312は、ポップアップ・モードで、バック・バッファ350Bにおいて構成されたテキストを追跡する。構文解析部312は、バック・バッファ350Bを監視すると共に、バック・バッファ350B内に蓄積された如何なるテキストの全ての値に対応するハッシュ値を更新し続ける。最初、バック・バッファ350Bは、空である。テキストが各々の行に分解されている間、構文解析部312は「カーソル配置」コマンドが発せられるのを待つ。カーソル配置コマンドは、新たな行にテキストカーソルを置くために使用してもよい。カーソル配置コマンドに基づいて、構文解析部312は、行が完結したので、特定の行に対してハッシュ値を計算することを決定することができる。
【００７５】
最終的には、フロント・バッファ350Aはクリアされ、バック・バッファ350Bは、フリップバッファ・コマンドの発行によってフロントにフリップされる。バック・バッファ350Bがテキストの複数の行を含むことができることは注記されるべきである。テキストの複数行に対して単一のハッシュ値を生成するために、フロント・バッファ350Aに現れているテキストのすべての行に対して、累積したハッシュ値が、生成される。一旦バック・バッファ350Bがフロント・バッファ350Aにフリップされると、累積したハッシュ値が作成される。このようにして、テキストがバック・バッファ350Bにおいてコンパイルされている間に、構文解析部312は、上述したように、テキストの各行に対する個々のハッシュ値を追跡する。フロント・バッファ350Aにフリップされるとき、各々の行のハッシュ値は、累積したハッシュ値を作成するために結合される。
【００７６】
一実施例の場合、構文解析部312がハッシュ値を生成するとき、構文解析部312は、タイミング・モジュール209からマルチメディア・コンテンツ・ストリームに関連付けられた時間データも読み出す。タイミング・モジュール209は、マルチメディア・コンテンツストリームの開始に対するマルチメディア・コンテンツ・ストリームのタイミング、カレンダー時間、最後のハッシュ値以降の時間またはマルチメディア・コンテンツ・ストリームの範囲内のビデオ・プログラムの開始に対する時間を示すことができる。したがって、図3Bを戻って参照すると、例えば、構文解析部312は、フレーム310AのテキストAが時間=1:00でフロント・バッファ350Aにフリップされ、かつ「3D59」の対応するハッシュ値を有することを決定する。
【００７７】
3.1.1.2  ロールアップ・モード
字幕テキストを表示するための他のモードは、ロールアップ・モード342である。（ニュースまたはトークショーのような生放送で、より一般的である）ロールアップ・モード342では、テキストは、話す内容がタイプされ、かつ受信されると出来る限り早急にテレビジョン上に現れる。一旦「キャリッジ・リターン」コマンドが受信されると、テキストがスクロールアップされる。キャリッジ・リターン・コマンドは、カーソルを行の開始点に戻らせるコマンドである。カーソルが新しい行の開始点に戻ると、キャリッジ・リターンを、新しい行が構成されていることを示すために使用してもよい。一実施例によれば、このようにフレームXがテキスト行1を含むように、テキストを最初ディスプレイ360にに形成し、他方、着信CCデータ350Cが、テキスト行2〜4のようなその後に形成されるテキストを含むようにすることができる。テキスト行2を表示する用意ができると、テキスト行2はディスプレイに「ロールアップ」し、テキスト行1は、ディスプレイ360のフレームY内においてシフト・アップする。一実施例では、フレームYは、一度にテキストの２行しか表示させない。したがって、次のフレームでは、テキスト行3の表示の用意がなされると、テキスト行1は削除され、かつテキスト行2は、ディスプレイ360上でテキストの第2行を占めるように上方に移動する。これに代えて、任意の数の行をロールアップ・モードで字幕として供給することもできる。
【００７８】
一実施例によれば、ロールアップ・モードにおいてハッシュ値を生成するために、構文解析部312は、テキスト行を監視し、かつキャリッジ・リターン・コマンドをリスンする。一旦、構文解析部312が、この種のイベントが生じたと決定すると、構文解析部312は、対応するテキストのハッシュ値を生成する。このようにして、テキスト行が完結すると、ハッシュ値が生成され、字幕データは、行の終了を示す独立したユーザ可視イベントを含むことになる。画面上に表示されるテキストのすべての行に対して累積的なハッシュ値を作成することとは対照的に、ロールアップ・モードは、可視テキスト行の各々に対して、それが画面に現れるたびに、ハッシュ値を生成し、報告する。
【００７９】
例えば、一実施例の場合、構文解析部312は、テキストが1行（例えば、フレームYのテキスト行1）上にスクロールされると、テキスト行が完結していることを決定することができる。構文解析部312は、それが着信CCデータ350内に「キャリッジ・リターン」コマンドを検出すると、テキスト行が完結していることを検出することができる。したがって、図3Bを戻って参照すると、例えば、構文解析部312は、フレーム310Bで「キャリッジ・リターン」コマンドを検出した後に、テキストBに対応するテキストの行が、完結していることを決定し、かつ時間=1:05でのハッシュ値「2Z55」を計算する。
【００８０】
3.1.1.3  ペイントオン・モード
他の字幕モードは、ペイントオン・モード344である。着信CCデータ350Dがフロント・バッファ上に直接形成されることを除いて、ペイントオン・モード344は、ポップアップ・モード340と同様であり、かつフロント・バッファのコンテンツがディスプレイに直接供給されるので、視聴者は形成されつつあるテキストを見ることができる。一実施例では、ハッシュ値を生成するために、構文解析部312は、テキストの完全な行が完結した後に、第1のユーザ可視イベントが生じるのを待つ。このように、ペイントオン・モード344では、ハッシュ値を生成する一つの方法は、表示されつつあるテキストの行を蓄積することと、行がその行のハッシュ値の生成を完結した後に、第1のユーザ可視イベントを待つことを含む。他の行の開始、画面のクリアリング、またはポップアップ・モードで新しいテキストを表示する「フリップ・バッファ」コマンドが、第1のユーザ可視イベントとなるかもしれない。
【００８１】
3.1.2  ハッシュ・シーケンス・メタデータ  
使用されている字幕モードのタイプに関係なく、一旦、構文解析部312が、ビデオ・プログラムに関連付けられたハッシュ値を生成すると、ハッシュ値は、付加的データ（例えば、ハッシュ値の各々に対する時間および時間オフセットデータ）とともに表320に置かれる。表320の累積的なデータは、例えば、ハッシュ値シーケンス・データが、サーバ106Aのようなデバイスによって生成されることを表す。
【００８２】
一旦、ハッシュ値シーケンス・データが生成されると、付加的なメタデータはハッシュ・シーケンスに関連付けることができる。一実施例によれば、付加的なメタデータは、ハッシュ・シーケンスの認識に応じて、いくつかのアクションを実行するためのコマンド・アンド・コントロール・データを含むことができる。
【００８３】
したがって、図3Bを戻って参照すると、表330は、ハッシュ・シーケンスに関連付けられたハッシュ・シーケンスおよびメタデータを表す列を含む。一実施例によれば、ハッシュ・シーケンス3D59、2Z55、A6E3および9Y95は、一つのイベントのイベント1を記載するメタデータを含む。イベント1は、特定の時間で生じるマルチメディア・コンテンツ・ストリーム内のイベントとすることができる。例えば、イベント1は、スポーツ・イベントの間の休憩時間のようなビデオ・プログラム内の、特定の位置を定義することができる。イベント1を定義するメタデータは、付加情報（例えば、イベントを認識した後に行われるビデオ・プログラムの記載およびその後のアクション）を含むことができる。例えば、イベント1は、イベント1の時にプログラム・ストリームにタグを挿入するためのタグ情報を含むことができる。タグは、ユーザが、イベント1を直接閲覧し、または、その代わりに、再生中にイベント1をスキップすることができるように操作することが可能である。マルチメディア・コンテンツ・ストリームのタグの機能は、本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（Closed-Caption Tagging System）」と称される米国特許出願09/665,921号に詳述されている。
【００８４】
さらに表330を参照すると、メタデータは、特定のアクション（例えば、ハッシュ・シーケンスA6E3、9Y95、E4E9および9F4Uに関連付けられたアクション1）を指定することができる。一実施例によれば、アクション1は、ハッシュ・シーケンスを認識した後に行われるDVRの特定のアクションを記載することができる。例えば、アクション1は、DVRのユーザにアイコンを表示することを含むことができる。アクション1を定義するメタデータは、DVRに接続されている表示デバイス上のグラフィクスおよびアイコン配置に関する情報並びにアクションの長さに関するタイミング情報を含むことができる。メタデータによって指定されるアクションは、ハッシュ・シーケンスを認識する時間と異なる時間に行ってもよい点は、注記されるべきである。例えば、メタデータは、アクションがハッシュ・シーケンスの認識の前に一度に行われることを示すことができる。このように、プログラムが格納域から再生される場合、DVRは、前方を走査して、ハッシュ比較を実行するので、アクションを実行する適切な時間を知っている。
【００８５】
他の実施形態では、アクション1は、DVRが処理するためのコマンド・データを含むことができる。コマンド・データは、DVRに、マルチメディア・コンテンツ・ストリームの一つ以上の部分を録画させ、かつ格納させてもよい。例えば、特定のビデオ・プログラムの生放送の間、DVRがC、D、E、Fのハッシュ・シーケンスを認識し、かつハッシュ・シーケンスに関連付けられたコマンド・データを処理する場合、コマンド・データは、直ちにDVRにプログラムの録画を開始させる。他の実施例では、コマンド・データは、ハッシュ・シーケンスの認識の後、DVRにいつでも生放送の録画を開始させることができる。
【００８６】
さらに、ハッシュ・シーケンスに関連付けられたメタデータは、指定されたイベントまたはアクションに限定されないが、DVRまたはメタデータを受信するデバイスが理解し、かつ処理することができるデータとすることができる。
【００８７】
3.1.3  マルチメディア・デバイスによるハッシュ・シーケンスの認識
サーバ106Aがハッシュ値シーケンス・データを蓄積すると、サーバ106Aは、字幕データを認識し、かつ字幕データを使用するビデオ・プログラムに同期するために、ハッシュ値シーケンス・データを使用するDVRまたは他のデバイスにハッシュ値シーケンス・データを送信する。次に図4を参照すると、字幕データを認識しかつアクションとイベントを字幕データと同期させる処理の概要を記述するフローチャートが、示されている。ステップ402で、DVR 102は、サーバ106Aから図3Bの表330によって表されるハッシュ値シーケンス・データを受信する。一実施例では、既知の「プル」処理において、DVR102は、サーバ106Aにハッシュ値シーケンス・データの要求を始めた後に、ハッシュ値シーケンス・データを受信する。これに代えて、既知の「プッシュ」処理では、サーバ106Aは、DVR102から要求されることなく、DVR102にハッシュ値シーケンス・データを自動的に送信することができる。DVR 102がハッシュ値シーケンス・データを受信すると、それは、格納デバイス214にハッシュ値シーケンス・データを格納する。
【００８８】
ステップ404で、DVR 102は、ユーザへの表示のためのマルチメディア・コンテンツ・ストリームを受信する。一実施例の場合、マルチメディア・コンテンツ・ストリームは、入力モジュール202Aから受信させることができ、かつコンテンツ・プロバイダ106Bによって現在放送されつつあるマルチメディア・コンテンツを表すことができる。これに代えて、マルチメディア・コンテンツ・ストリームは、DVR 102の格納デバイス214から再生させてもよい。さらに、他の実施例では、DVR 102は、マルチメディア・コンテンツ・ストリームをユーザに表示せずに、放送またはインターネット経由でマルチメディア・コンテンツ・ストリームを受信することができる。このように、DVR 102は、コンテンツ・プロバイダ106Bからコンテンツを受信することができ、格納デバイス214にコンテンツを格納することもできる。
【００８９】
マルチメディア・コンテンツ・ストリームが録画または再生する間、ステップ406で、DVR 102は、マルチメディア・コンテンツ・ストリームに関連付けられた字幕データの解析を開始する。
【００９０】
解析モジュール210は、図3Bのサーバ106Aに関して上述したようにして字幕データを解析する。これにより、解析モジュール210は、使用される字幕方法（すなわち、ポップアップ、ロールアップまたはペイントオン）に従って、複数のハッシュ値の字幕データを解析する。ハッシュ値を生成している間、解析モジュール210は、サーバ106A等のソースからDVR 102によって、ダウンロード、格納、または受信されるハッシュ値シーケンス・データのいずれかと、ハッシュ値を比較しかつマッチングするために使用されるパターン識別ステートマシン212に、各ハッシュ値に関連付けられたハッシュ値およびタイムスタンプを送信する。
【００９１】
ステップ408で、パターン識別ステートマシン212は、解析モジュール210によって生成されるハッシュ値を監視し、かつハッシュ値をステップ402で受信されるハッシュ値シーケンス・データと比較するために、使用される。一実施例によれば、パターン識別ステートマシン212は、ステップ402で受信されたハッシュ値シーケンス・データに従って構成されたステートマシンである。
【００９２】
例証の目的で、パターン識別ステートマシン212は、ノードおよび分岐を含んでいる木の構造をとると仮定する。木の各ノードは、一連のハッシュ値における特定のハッシュ値を表すことができ、かつ木の各「枝」は、完全なハッシュ・シーケンスがハッシュ値シーケンスデータによって識別されることを表す。後述するように、この構造は図5Aにおいてさらに参照される。パターン認識ステートマシン212は、木のノードを移動することによって生成されたハッシュ値のマッチングを試みる。何れかの所定のノードで、マッチングが生じると、パターン識別ステートマシン212は次のノードへ進む。初期ノードがハッシュ値シーケンスの終了を表すと、マッチングが生じ、かつパターン識別ステートマシン212は、ハッシュ値シーケンスが識別されたことを示し、本願明細書に詳細にて説明したように、次々に、DVR 202に適切なアクションを実行させることができる。
【００９３】
それゆえ、ステップ510で、パターン識別ステートマシン212は、解析モジュール210によって生成される何れかのハッシュ値が、ハッシュ値シーケンス・データ内に含まれるハッシュ値にマッチングするかどうかを決定する。ハッシュ値がマッチングし、ハッシュ値イベント間の時間差が、予想されるハッシュ・シーケンスの閾値内にある限り、肯定的なマッチングが報告される。
【００９４】
次に図5Aを参照すると、一実施例によれば、パターン識別ステートマシンの形式のハッシュ値シーケンス・データが示される。ハッシュ値シーケンス・データは、ハッシュ値シーケンス内の個々のハッシュ値を表すノードを含むステートマシン510によって表される。一実施例によれば、ステートマシン510は、ステートマシンの開始ステートを表すスタート・ノード502を含む。
【００９５】
一実施例によれば、ステートマシン510のノードには、ハッシュ値シーケンス・データにおいて識別される、何れかのハッシュ・シーケンスの第1のハッシュ値に従ってインデックスが付される。ステートマシン510が初期化した後、それは、最初に、第1のノード504のハッシュ値が解析モジュール210によって生成されるハッシュ値にマッチングするかどうかを決定することができる。マッチングが生じない場合、ステートマシン510はインデックス501を移動し続け、引き続いて次のノード520をテストする。まれではあるが、異なるハッシュ値シーケンスが、同じハッシュ値から開始する可能性があることは注記されるべきである。したがって、ハッシュ値「3D59」から開始するハッシュ・シーケンスを表すノード504は、異なるハッシュ値シーケンス（(1) 3D59、2Z55、A6E3および9Y95、または、(2) 3D59、2Z55、E4E9および9F4U）を表す2つの異なった分岐を含む可能性がある。
【００９６】
一実施例によれば、ステートマシン500は、DVR 202上の軽量のコンポーネントであり、これは、ステートマシン500が、DVR 202の動作の間、最小のシステム・リソースを占めるように設計されていることを意味する。したがって、ステートマシン500は、ハッシュ値シーケンスが認識されたかどうかを決定するために、何万ものノードを移動しなければならない場合でさえ、ほんの少しのシステム・リソースしか、ステートマシン500を動作するために必要とされない。したがって、DVRユーザは、ステートマシン500が動作している間のマルチメディア・コンテンツの再生において如何なる遅延も性能低下にも気づかないであろう。
【００９７】
一実施例によれば、ステートマシン500の効率は、インデックス501を使用することによりさらに進展する。インデックス501の各ハッシュ・シーケンス内の第1のハッシュ値にインデックスを付すことによって、ステートマシン500は、多くのシステム・リソースを占めることなく比較するための大量のハッシュ・シーケンスを素早く除外することができる。
【００９８】
解析モジュール210から生成されたハッシュ値の処理を開始するために、ステートマシン500は、初期化され、かつインデックス501に配置されるノードのテストを開始する。一実施例によれば、解析モジュール210によって生成される第1のハッシュ値は、図3Bのフレーム310AのテキストAに対応する「3D59」である。したがって、ステートマシン500は起動され、かつハッシュ値「3D59」を表す第1のノード504をテストし、マッチングを見つけだし、かつ肯定的な出力を与える。この実施例によれば、何れの不成立もステートマシンを下位レベルへ移動させ、他方、何れのマッチングもステートマシンを右へ進ませる。しかしながら、他の実施例では、ステートマシン500は、ハッシュ値をテストするのに適すいかなる方法で構築させてもよい。
【００９９】
しかしながら、最初、「2Z55」のハッシュ値が解析モジュール210によって報告されたと仮定する。第1のノード504でマッチングを見出す代わりに、ステートマシン510は、否定的な出力を報告し、かつハッシュ値「2Z55」を表すインデックス501内の次のノード520に進むであろう。これに代えて、マッチングが特定ノードで見出せない場合、ステートマシン510は、ステートマシンをリセットさせかつスタート・ノード502で再びスタートさせる失敗ノード515に進むこともできる。
【０１００】
それゆえ、マッチングがインデックス501の第1のノードで生じたと仮定すると、ステートマシン212は、次いで、解析モジュール210からの次に生成されたハッシュ値を待つ。一実施例の場合、次に生成されたハッシュ値は、「2Z55」である。それゆえ、ステートマシン510は、「2Z55」を次のノード506の値と比較する。次のノードの値もまた「2Z55」であるので、ステートマシン510はマッチングを見出して、ノード508へ進む。しかしながら、マッチングがノード506で見出せない場合、ステートマシン500は、失敗ステートへ進まず、代わりに、「E4E9」を表すノード507でハッシュ値のマッチングを試みる点は注記されるべきである。このように、2つのハッシュ値シーケンスが、それぞれ、「3D59」および「2Z55」のハッシュ値から開始することができるように、ノード506はステートマシン500内の分岐を表す。
【０１０１】
解析モジュール210によって生成されるハッシュ値を受信することに応答して、マッチングが生じなくなるまで、または、ハッシュ・シーケンスの終了が識別されるまで、ステートマシン500はシーケンシャルに、図5において表される各ノードを移動する。さらに、ハッシュ値を、ハッシュ値シーケンスの各ハッシュ値とマッチングさせる間、ステートマシン500は、解析モジュール210によって生成されるハッシュ値とハッシュ・シーケンス内のハッシュ値との間の時間オフセットを比較することもできる。両方のハッシュ値がマッチングし、両方のハッシュ値の時間オフセット値がマッチングする場合、ステートマシン500は肯定的なマッチングが生じたと決定することができる。他の実施形態では、ステートマシン500は、「バッファ」または誤差の範囲を許容することによって、特定のハッシュ値がハッシュ・シーケンス内でハッシュ値の時間オフセットにマッチングしたと決定することができる。この特定の例によれば、ステートマシン500は、マッチングが図3Bの構文解析部312によって生成されるそれぞれのハッシュ値を受信した後に、3D59、2Z55、A6E3および9Y95のハッシュ・シーケンスに対して生じたと決定する。
【０１０２】
マッチングが見出せないとき、次のハッシュ値が解析モジュール210から受信されると、ステートマシン500はスタート・ノード502および再初期設定のマッチング処理をリセットする。
【０１０３】
DVR 202の動作を通して、ステートマシン500は、ハッシュ値シーケンスとハッシュ値のマッチングすることを連続的に試みている点は注記されるべきである。肯定的なマッチングが、ステップ412で完全なハッシュ・シーケンスに対し作成されると、ステートマシン500は、マッチングの成功を報告し、かつハッシュ値シーケンス・データに関連付けられたメタデータをDVR 202に検査させる。
【０１０４】
他の実施例では、ステートマシン500は、ハッシュ表を利用して、ハッシュ値シーケンス・データとハッシュ値のマッチングを試みる。ハッシュ表は、配列（または検索されるべきデータが格納されるテーブル）およびマッピング機能から構成されるデータ構造である。ハッシュ表は、サーチ・アルゴリズムで一般的に使用される周知のデータ構造である。
【０１０５】
さらに、もう一つの実施例では、DVR 202は、複数のステートマシンを含む。同時に動作する二つ以上のステートマシンを有することによって、ハッシュ値の同じシーケンス内の複数のパターンを識別することができる。例えば、「X6Y6、A4Z4およびB1C1」のハッシュ値が、マルチメディア・コンテンツ・ストリームから生成されたと仮定する。また、「X6Y6、A4Z4」および「A4Z4、B1C1」の2つの既知のパターンが存在すると仮定する。一つのステートマシンがDVR 202上で動いているとすれば、それらのパターンのうちの1つしか認識されない。しかしながら、DVR 202が二つ以上のステートマシンを並行して動作させることができるので、DVR 202は、「X6Y6、A4Z4およびB1C1」のハッシュ値から「X6Y6、A4Z4」および「A4Z4、B1C1」の両方のパターンを認識することができる。したがって、他の実施例では、DVR 202は、複数のステートマシンを含むことができ、かつ各ステートマシンは、インバンド・データの異なるパターンを表すことができる。
【０１０６】
図5Bには、ハッシュ値シーケンス・データが、一実施例に従って示されている。ハッシュ値シーケンス・データは、シーケンス・データ520Aおよびメタデータ520Bを含む。シーケンス・データ520Aは、ハッシュ値シーケンスを表すデータとハッシュ値の発生の間の近似の時間差に対応する。これにより、上述したように、ステートマシン500は、マッチングが特定のレベルで見出せなくなるまで、または、ハッシュ・シーケンスの終了に遭遇した場合、図5Aに図示されるノードを移動する。一実施例によれば、パターン認識ステートマシン212は、ハッシュ値3D59、Z55、A6E3および9Y95のシーケンスが、生成された各ハッシュ値間の時間差に基づいて解析モジュール210から同じハッシュ値の生成とマッチングしたことを決定する。
【０１０７】
3.1.4  字幕データの同期
DVRが、パターンマッチングが生じたと決定すると、それは、上記のメタデータを使用して、マルチメディア・コンテンツ・ストリームの同期を取る。特に、DVRは、マルチメディア・コンテンツ・ストリーム内のイベントまたはビデオ・プログラムの相対的位置関係を決定するためにメタデータを使用する。このように、DVR 102がハッシュ値の特定のシーケンスが生成したと決定すると、DVR 202は、とるべきアクションを決定するためにメタデータ520Bを参照する。メタデータ520Bは、情報（例えば、コマンド・アンド・コントロール情報、プログラム・タイミング、コンテンツ情報、表示命令およびグラフィック情報）を含むことができる。さらに、メタデータ520Bは、コマンド・データ522を含むこともできる。
【０１０８】
一旦パターン認識ステートマシン212がマルチメディア・コンテンツ・ストリームからのハッシュ値が特定のハッシュ・シーケンスにマッチングすると決定すると、ステップ412で、DVRは、ハッシュ・シーケンスに関連付けられたハッシュ・シーケンス・メタデータを検査し、それに応じて反応する。メタデータのコンテンツに従い、DVR 102のようなDVRは、一連のハッシュ値を認識することに、多数の異なる方法に反応することができる。例えば、メタデータは、DVRがビデオ・プログラム内のイベントの認識、ビデオ・プログラムまたは全マルチメディア・コンテンツ・ストリームの同期、ユーザへの情報の表示、または、今後のプログラムを録画することができる情報を含んでもよい。さらに、他の実施例では、メタデータは、DVRがマルチメディア・コンテンツ・ストリーム、ビデオ・プログラムまたはDVRの動作（例えば、コマーシャルのスキップ等のコンテンツ）に関連付けられたあらゆるアクションを実行することを可能にする情報を含むことができる。
【０１０９】
これにより、次に図6には、インバンド・データにアクションおよびイベントを同期さるための方法を示すブロック図が、一実施例に従って示されている。表608が特定のハッシュ・シーケンスに関連付けられたメタデータを表し、表606はハッシュ値シーケンス・データを表す。この特定の例では、表606は、ハッシュ・シーケンス3D59、2Z55、A6E3および9Y95、並びに各々のハッシュ値の時間および時間オフセット値を保有する。上述の通り、この情報は、サーバ106A等のソースから受信されて、活パターン認識ステートマシン212の形式でDVR 102に配置される。コンテンツ600は、マルチメディア・コンテンツ・ストリームが一つ以上のビデオ・プログラムを含んでいることを表す。マルチメディア・コンテンツ・ストリーム600を再生または録画する間、DVRは、ともに本出願人が所有する、本願明細書に参照によって完全に組み込まれている、ともに「マルチメディア経過表示システム（Multimedia Progress Indication System）」と称される米国特許6,850,691号および米国特許出願10/915,990号に記載される、プログラム要素を表すプログラム・キャッシュ・バーを横断するスライダ604を使用して、コンテンツ・ストリーム600内の再生位置を示す。この特定の例では、スライダ604は、マルチメディア・コンテンツ・ストリームまたはビデオ・プログラムの現在の時間1:12にある。コンテンツ・ストリーム600を再生する間に、構文解析モジュールを使用し、DVRは、時間：00でハッシュ値「3D59」、時間：05でハッシュ値「2Z55」、時間：10でハッシュ値「A6E3」、および時間：12（スライダ604によって示される位置）でハッシュ値「9Y95」を生成する。
【０１１０】
ハッシュ値および対応する生成された時間データにより、DVRは、ハッシュ値が表606に配置されるハッシュ値シーケンス・データにマッチングすることを決定する。一実施例によれば、DVRは、実際のハッシュ値のみならず各々のハッシュ値に対する時間オフセットも比較することによって、ハッシュ値をハッシュ値シーケンス・データに確実にマッチングさせることができる。
【０１１１】
マッチングを決定した後、DVRは、次に、それが、プログラム内のどこに配置されているかを知る。具体的には、DVRは、スライダ604が、ハッシュ値シーケンス・データに従ってプログラムの指定された開始の開始後12秒に配置されると決定する。次に、DVRは、表608に配置されているメタデータ情報を調べて、ハッシュ値シーケンス・データのマッチングに応答して取るべき適切なアクションを決定する。一実施例によれば、表608は、イベント1が時間：10で行われることを示す。スライダ604の現在位置を調べることによって、DVR 102は、イベント1がスライダの現在位置の：02秒前に行われると計算することができる。イベント1が、10秒間ユーザにアイコンを表示するように定義されていたとすると、DVRは、イベント1の開始からすでに2秒が経過していることを知っているので、DVR 102は、直ちにアイコンを8秒間表示することができる。再生されつつあるプログラムが録画である、またはユーザが生放送を再生しているが、再生位置が実際の放送より遅れている場合、DVR 102は、現在の再生位置の前方をスキャンし、現在の再生位置の前方のハッシュ値を計算することができる。これによって、DVR 102が、イベントに関連付けられた如何なるアクションもより正確に作動させることができる。
【０１１２】
さらに、表608の検査後、DVR 102は、イベント2がビデオ・プログラムの時間：40で行われると決定することができる。ビデオ・プログラム内の現在位置を調べた後に、DVR 102は、イベント2が最後のハッシュの：28秒後に行われると決定する。DVR 102が、マルチメディア・コンテンツ・ストリーム内のイベント1および2の正確な位置を決定することができるので、それらのイベントに如何なる態様でも反応するようにDVR 102をプログラムすることができる。例えば、一実施例によれば、イベント2の間、ユーザにアイコンを表示するようにDVR 102に指示することができる。他の実施形態では、イベント2でマルチメディア・コンテンツ・ストリームの録画を開始するようにDVR 102をプログラムすることができる。このように、イベント1または2を識別する情報を、ビデオ・プログラム600内の識別可能なイベントを識別するために使用することができる。さらに、他の実施例では、表608は、DVRがハッシュ・シーケンスの認識に応じて取るその他のイベントまたはアクションを定義することができる。例えば、ハッシュ・シーケンス3D59、2Z55、A6E3および9Y95を認識した後に、テーブル608は、DVRが、表示デバイス上に対話のためのアイコンをユーザに直ちに表示すべきことを示すことができる。
【０１１３】
さらに、一旦DVR 102が、ビデオ・プログラムの範囲内でイベント1および2を認識すると、DVR 102は、イベント1および2の位置でマルチメディア・コンテンツ・ストリームにビデオ・タグを挿入することができる。一実施例によれば、ビデオ・タグは、ビデオおよび音声データ（例えば、MPEG-2ストリーム）を含むマルチメディア・コンテンツ・ストリームにインタリーブされるデータ・オブジェクトである。ビデオ・タグがマルチメディア・コンテンツ・ストリームに置かれた後、マルチメディア・コンテンツ・ストリームは後の再生のために格納される。再生時、DVR 102は、マルチメディア・コンテンツ・ストリームを処理し、かつイベント1および2の正確な位置でビデオ・タグに遭遇する。このようにして、一旦、ビデオ・タグが、マルチメディア・コンテンツ・ストリームに置かれると、イベントまたはアクションが、再生中にビデオおよび音声データとともに自動的に処理されるビデオ・タグによって既に定義されているので、DVRは、もはやマルチメディア・コンテンツ・ストリームに同期させるために字幕データを認識する必要はない。ビデオ・タグは、本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（Closed-Caption Tagging System）」と称される米国特許出願09/665,921号で考察されている。
【０１１４】
上記の処理がDVR 102に関して記載されているが、その方法は、このようなステップ（例えば、DVR104、PC101Aまたは携帯機器101B）を実行できる、その他のデバイスによって実行させてもよい。
【０１１５】
3.2  エンハンスト・テレビジョン・信号化データ
インバンド・データパターンの認識に使用することができる他のタイプのインバンド・データは、エンハンスト・テレビジョン（ETV）信号化データである。ETVは、対話のためのアプリケーションの使用を、マルチメディア・コンテンツ・ストリームのその他のビデオ・サービスと共に「インバンド」配信することを可能にする。インバンド・アプリケーションをビデオ・プログラムに同期するために、ETVは、ビデオ・プログラムのタイミングに対して調整されたコマンド信号を利用する。インバンド・データ伝送の信号性能に関する詳細な情報は、ビデオ・サービスのタイム・ラインに同期されたインバンド・データ伝送の信号性能を特定するOpenCable Enhanced TV Application Messaging Specification（ETV-AM-I02）において入手可能である。
【０１１６】
一実施例によれば、ETVが使用可能なマルチメディア・デバイスは、ETVコマンド信号を受信し、かつ処理するためのETVエージェントを含む。ETVコマンド信号は、マルチメディア・デバイスに、ETVアプリケーションを特定の時間に発見、ダウンロード、起動、終了させる。これにより、一実施例によれば、マルチメディア・デバイスは、ETVマルチメディア・コンテンツ・ストリーム内のアプリケーションの開始または終了を定義するETV信号化データのパターンを認識することができる。これは、解析モジュール210を使用して、ETV信号化データをマルチメディア・コンテンツ・ストリームから識別し、かつ抽出することにより実行させてもよい。さらに、ETVコマンド信号は、付加情報（例えば、ETVコンテンツまたはプログラミングを記載している情報）を含むことができる。加えて、ETVコマンド信号は、適切な時間でETVアプリケーションを処理するための時間データに関連付けられている。この時間データを使用して、マルチメディア・デバイスは、マルチメディア・コンテンツ・ストリーム内の相対位置を識別することができる。したがって、マルチメディア・デバイスは、ETV信号化データを解釈して、(a) ETVイベントが生じるであろうこと、（b）ETVイベントがビデオ・プログラムの特定の部分またはセグメントに同期していること、を決定することができる。
【０１１７】
このように、字幕データのハッシュ値シーケンスを認識することと同様に、パターン認識ステートマシン212を、ETVコマンド信号およびタイミング情報のパターンを認識するために使用することができる。ETVアプリケーションが、付随するビデオ・プログラムにすでに同期されているので、マルチメディア・デバイスは、ETV信号化データのパターンを認識することによって、マルチメディア・コンテンツ・ストリームに同期することができる。字幕データの場合と同様に、一旦マルチメディア・デバイスがパターンを認識すると、マルチメディア・デバイスは、字幕データに同期するアクションおよびイベントに関して上述したものと同様のアクションをとることができる。
【０１１８】
4.0  カスタマイズされたマルチメディア・セグメントを作成しかつ視聴する方法
4.1  マルチメディア・プログラム・セグメントのユーザ選択
一実施例によれば、マルチメディア・コンテンツ・ストリームのビデオ・プログラムは、表示デバイス（例えば、テレビジョン・スクリーンまたはコンピュータ・モニタ）で、DVRユーザに表示される。他の実施例では、ビデオ・プログラムは、携帯用マルチメディア視聴デバイスのような表示デバイスに表示させることができる。DVRユーザは、制御インタフェース（例えば、リモコン）を使用してビデオ・プログラムの再生を制御することができる。
【０１１９】
ユーザは、マルチメディア・プログラムのセクションをマークする、または、マルチメディア・プログラム内のコンテンツに興味を示すポイントを置くことができる。例えば、ユーザは、フットボール・ゲームの録画で最高のプレイをマークすることを望むかもしれない。一旦ユーザがそのプレイをマークすると、ユーザは、ハッシュ・シーケンスを友人のDVRに送信し、そこにハッシュ・シーケンスを発生させることができる。DVR間にデータを転送する1つの方法は、ともに本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「パーソナル・テレビジョン・サービスへのインターネット接続のシステムと方法」と称される米国特許10/220,558号、および、「安全なマルチメディア転送システム」と称される米国特許出願10/741,596号に記載されている。その後、友人がユーザの録画されたそのゲームのコピーを再生するとき、友人のDVRは、ユーザの興味のあるポイントをその友人に表示することができる。例えば、友人のDVRは、彼の表示デバイスに表示されるプログラム・キャッシュ・バーに沿って興味のあるポイントを表示する。
【０１２０】
録画されたゲームのハッシュ値を計算しかつハッシュ値を受信したハッシュ・シーケンスと比較することによって、ゲームの再生を開始する前に、友人のDVRは、録画されたゲームを前処理する。これは、DVRが録画されたゲームの興味のあるポイントの位置を見つけて、友人に興味のあるポイントを表示することを可能にする。その時、友人は、リモコンを使用して興味のあるポイントにスキップすることができる。
【０１２１】
DVRユーザは、プログラムの興味のあるポイントの独自のセットを、その他のユーザに配布することができる。ユーザは、さらに、DVRに、視聴者に対しテキスト（例えば、「このアクション・シーンは、激しくない？」）を表示させることができる、メタデータを興味のある各々のポイントに付けることもできる。ユーザは、興味のあるポイントからプログラムにx秒スキップする、または、次の興味のあるポイントにスキップする前にプログラムをx秒表示するようDVRに命じるように、メタデータを興味のあるポイントに付けてもよい。これによって、ユーザが、彼らの友人、家族、同級生、生徒、利益団体、などに配布することができるプログラムの独自の凝縮されたバージョンを作成することができる。
【０１２２】
また、マルチメディア・プログラム、または、全コンテンツ・ストリームのセグメントを再編成するよう、DVRに指示することもできる。そうするための1つの目的は、放送業者がマルチメディア・コンテンツ・ストリームのセグメントにスクランブルをかける時である。その結果、権限のない視聴者は、確実にマルチメディア・コンテンツ・ストリームを視聴することができない。しかしながら、権限を与えられた視聴者のために、DVRは、適切な状態にセグメントを編成する。さらに、ユーザは、独自のカスタマイズされたマルチメディア・プログラムを作成するために、マルチメディア・コンテンツ・ストリームのセグメントを再編成することを望むかもしれない。ユーザは、カスタマイズされたマルチメディア・プログラムを格納し、または、カスタマイズされたマルチメディア・プログラムを彼らの友人および他のDVRユーザに配布することができる。カスタマイズされたマルチメディア・プログラムは、別のマルチメディア・コンテンツ・ストリームから読み出されたセグメント、または、DVRの格納デバイスに既に格納されたセグメントのコンパイルを含むことができる。
【０１２３】
上述されたように、インバンド・データを認識しかつコンピュータ・システムをインバンド・データに同期させる方法を使用すると、DVRはこれらの機能を容易に実行することができる。
【０１２４】
例えば、ユーザがビデオ・プログラム内の特定のコンテンツの位置を保存または示すことを望むとき、DVRユーザは、そのような機能を示す制御インタフェースのボタンを押すことができる。制御インタフェースはDVRに信号を送信し、DVRは、その信号をユーザ選択として解釈する。その時DVRは、ユーザが制御インタフェースから信号を送信したプログラム内の時間を決定し、かつそのポイントにつながるインバンド・データパターンを計算することができる。
【０１２５】
4.2  マルチメディア・プログラムのユーザ起動イベント識別データの作成
図7を参照すると、ビデオ・プログラム内のマルチメディア・セグメントを作成し、かつ視聴する方法を示すブロック図が、一実施例に従って示されている。字幕（CC）データ702のようなインバンド・データを含むマルチメディア・コンテンツ・ストリーム700Aが、DVR等のデバイスで録画または再生されるとき、タイム・スタンプ形式の時間情報は、インバンド・データに関連付けられている。具体的には、上述したように、インバンドデータを含むマルチメディア・コンテンツ・ストリームは、独立したオーディオ、ビデオおよびデータフレームにパケット化される。パケット化のとき、各々のフレームには相対的なタイム・スタンプが与えられる。これらのタイム・スタンプは、マルチメディア・コンテンツ・ストリームまたはビデオ・プログラム内のインバンド・データの時間を追うために使用することができる。
【０１２６】
ユーザがビデオ・プログラム（彼／彼女が保存したい、または、注目する）のセグメントを視聴するとき、ユーザは、ビデオ・プログラム内の位置を選択することによってDVR102にセグメントをマークさせる。一実施例によれば、画面操作ソフトは、プログラム・キャッシュ・バー700Bおよびスライダ708を含む表示画面に提示される。スライダは、プログラムの現在の再生位置を示す。ユーザがビデオ・プログラム内の位置を選択したいと思うとき、スライダが望んだ位置に到達するまで、ユーザは待ち、リモコンのような制御インタフェースを使用して望んだ位置を選択する。ユーザがリモコンのボタンを押すと、リモコンからDVRまで信号が送信され、DVRは、ユーザに対してドロップダウンメニューを表示する。ドロップダウン・メニューは、ユーザがビデオ・プログラムの望む位置に関連して選択するオプションを含むことができる。一実施例の場合、ユーザが利用可能なオプションには、ブックマークする、位置をスキップする、注を付ける、または、ビデオ・プログラムに関して実行することができるその他のアクションが、含まれる。
【０１２７】
一実施例によれば、ビデオ・プログラムを再生する間に、DVRユーザは、制御インタフェースを使用して位置704を選択する。DVRが制御インタフェースから信号を受信すると、それは、ユーザ−選択が生じ、かつ時間：10で生じる選択の位置を録画することを認識する。このポイントで、DVRは、イベント識別データを作成する。上述の通り、イベント識別データは、インバンド・データのパターンまたはシーケンス、およびマルチメディア・コンテンツ・ストリームの範囲内でアクションまたはイベントを識別するためのメタデータを含むことができる。
【０１２８】
また、インバンド・データの一つのタイプは、字幕データである。一実施例によれば、イベント識別データを作成するために、DVRは、ハッシュ値のユニーク配列を作成するのに位置704に先行して、充分な字幕データを捜す。表710は、ビデオ・セグメント700のハッシュ値シーケンス・データを表す。ハッシュ値シーケンス・データは、ハッシュ値、ハッシュ値の時間および各々のハッシュ値の時間オフセットを示すことができる。一実施例によれば、時間オフセットは、ハッシュ値の生成とビデオ・プログラムのその前のハッシュ値との間の時間の差異を示す。
【０１２９】
このように、表710は、位置704に先行するハッシュ値「W5W4」と「M5M5」を識別する。DVRは、各々のハッシュ値が字幕テキストを表示するために使用される特定の字幕方法およびハッシュ値の時間オフセットに従って生成された時間を録画する。ここで、ハッシュ値「W5W4」は、プログラムの開始から時間：06で生じ、時間オフセットがゼロであるシーケンスの第1のハッシュである。ハッシュ値「M5M5」は、プログラムの開始から時間：08で生じ、ハッシュ値「W5W4」の2秒後である。DVRがハッシュ・シーケンス「W5W4、M5M5」を認識するときに、DVRは、アクションは、位置704の実際の再生の前に、ちょうど必要とされることを識別し、かつ適切なアクション（例えば、アイコンの表示）を実行することができる。メタデータは、ハッシュ・シーケンス「W5W4、M5M5」の認識の2秒後にアイコンが表示されることを示すことができる。
【０１３０】
さらに、ユーザは、時間：20で生じるビデオ・セグメントの望んだ部分の終了を表す第2の位置706を選択することもできる。一実施例によれば、DVRは、時間：10と時間：20の間のCCデータを解析し、かつ3つのハッシュ値「Z1B1、E5Y5およびA2R2」を生成して、各々のハッシュ値が生成された時間を録画する。このため、この特定の例において、ハッシュ値「Z1B1」は第1に（ここでは時間：12）生じ、ハッシュ値「E5Y5」は2秒後に生じ、ハッシュ値「A2R2」は「E5Y5」の4秒後に生じる。集合的に、ハッシュ値「Z1B1、E5Y5およびA2R2」は、第2の位置706のハッシュ・シーケンスを表す。プログラムに関連付けられたメタデータが、これを示すであろう。
【０１３１】
このように、表710において、ハッシュ値「Z1B1」は、シーケンスの第1のハッシュの時から時間ゼロで生じ、ハッシュ値「E5Y5」はハッシュ値「Z1B1」の2秒後に生じ、ハッシュ値「A2R2」はハッシュ値「E5Y5」の4秒後に生じる。これに代えて、時間オフセットを、ビデオ・プログラム、マルチメディア・コンテンツ・ストリーム、ビデオ・プログラムまたはストリームの位置またはビデオ・セグメントのいかなる部分とも関連付けさせることができる。
【０１３２】
DVRが、ステートマシンにハッシュ値シーケンス・データとして表710を使用し、かつマルチメディア・コンテンツ・ストリーム700Bを再生すると、それは、CCデータ702を解析し、かつハッシュ値を生成する。一旦DVRが、ハッシュ値「A2R2」を認識すると、DVRは、ハッシュ・シーケンスを認識するために上記の方法に従って、直ちにアクション（例えば、DVRに接続されている表示画面にアイコンを表示する）を実行することができる。この場合、DVRが、表710に位置するハッシュ・シーケンスを認識すると、DVRは、位置704と706の間のビデオ・セグメントの正確な開始および終了の時間を決定することができる。この情報が与えられると、ハッシュ値シーケンス・データに関連付けられたメタデータは、DVRに、位置704と706の間のプログラム・セグメントをスキップするように指示し、または、例えば、DVRに、位置704と706の間のプログラム・セグメントを格納するように指示することができる。
【０１３３】
DVRは、ハッシュ値シーケンス・データのタイム・スタンプを使用することにより、マルチメディア・コンテンツ・ストリームに対するビデオ・セグメントを認識することができる。それゆえ、例え、ビデオ・プログラムが、異なる位置の2つの異なる時間に放送、または、再生される場合であっても、同じビデオ・セグメントは、ハッシュ値に関連付けられたタイム・スタンプを使用して認識される。より詳しくは、タイム・スタンプは、DVRのローカル時間または放送時間ではなく、ハッシュ値の生成に関連する。したがって、異なる位置において、または、異なる時間に再生された場合、ほとんどのプログラミングが等しいとすると、ビデオ・セグメントはハッシュ値のタイム・スタンプを使用して極めて正確に認識させることができる。なお、上記の考察は、字幕データを中心に説明されているが、本発明はこのような実施例に限定されるものではなく、DVRは、どのようなタイプのインバンド・データ（例えば、ETV信号化データ）使用してもイベント識別データを作成することができる。
【０１３４】
4.3  タグ付けされたマルチメディア・プログラム・コンテンツの作成
ビデオ・プログラム内のイベントまたはセグメントの認識後、DVR 102は、セグメントまたはイベントに対応するタグを生成し、かつそれらのタグを適切な位置でマルチメディア・コンテンツ・ストリームに挿入することができる。各々のタグは、タグを処理するデバイスが変換しかつ作用するコマンドおよびコントロール情報を含むことができる。例えば、一実施例によれば、ユーザが、位置704と706の間のすべてのコンテンツをスキップすることを望む場合、DVRは、ビデオ・セグメントに関連付けられたハッシュ・シーケンスを認識した後に、DVRを位置706へ自動的に10秒ジャンプさせ、これによりビデオ・セグメントをスキップする、タグを位置704に簡単に作成することができる。
【０１３５】
さらに、タグデータは、マルチメディア・コンテンツ・ストリームの一部として処理されるので、これは、ビデオ・プログラムの再生と自動的に同期される。このタグデータにより、マルチメディア・コンテンツ・ストリームを受信するデバイスは、選択された位置に自動的にスキップすることができる。これに代えて、タグは、ビデオ・プログラム内の位置に関するコンテンツを識別する情報を含むことができる。例えば、マルチメディア・コンテンツ・ストリーム700Aの位置704に対応するタグは、スポーツ・プログラム内の休憩時間のような位置を識別する情報を含むことができる。さらに、位置706は、休憩時間の終了とすることができる。したがって、DVRは、スポーツ・プログラム内の休憩時間が、位置704つまり時間：10で行われ、かつ位置706つまり時間：20で終わることを示すユーザのためのユーザ・インタフェースを提示すことができる。この情報を使用して、ユーザは、DVRに、位置704をスキップさせ、そして直接位置706に進ませることができる。
【０１３６】
また、特定のイベントまたはセグメントに対応するために、マルチメディア・コンテンツ・ストリームにタグを挿入する間、DVR 102は、マルチメディア・コンテンツ・ストリームからインバンド・データを取り除くことができる。例えば、一実施例によれば、マルチメディア・コンテンツ・ストリームは、別々のオーディオ、ビデオおよびデータ・フィードを含むMPEG 2トランスポート・ストリームである。オリジナルのインバンドデータは、マルチメディア・コンテンツ・ストリームのデータ部分に位置する。タグが生成されると、タグはマルチメディア・ストリームのデータ部分に挿入される。さらに、一旦、インバンド・データが取り除かれると、例えば、PC 101は、マルチメディア・コンテンツ・ストリームを携帯機器101Bへ転送することができる。タグがマルチメディア・コンテンツ・ストリームに置かれ、字幕ストリームが取り除かれたので、携帯機器101Bは、字幕データを表示する必要がない。これに代えて、マルチメディア・コンテンツ・ストリームをユーザに表示しつつ、マルチメディア・コンテンツ・ストリーム内のタグは、マルチメディア・コンテンツ・ストリームとの同期が自動的に処理されることもできる。マルチメディア・コンテンツ・ストリームにタグを生成しかつ挿入することについては、本出願人が所有する、本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム」と称される米国特許出願09/665921号にさらに詳細に記載されている。
【０１３７】
他の実施形態では、DVR 102またはPC 101のようなマルチメディア・デバイスは、携帯機器101Bに、興味のある位置のリストを簡単に提供することができる。このようにして、マルチメディアコンテンツ・ストリームにタグを挿入する代わりに、コンテンツ・ストリームをそのままにし、そして携帯機器101Bは、興味のある位置のリストを使用して、ビデオ・プログラム内のイベントを識別することができる。興味のある位置のリストは、マルチメディア・コンテンツ・ストリームから携帯機器101Bへ別々に提供させてもよい。一実施例によれば、興味のある位置のリストは、イベントが生じる相対的な時間を識別する時間データを含む。さらに、興味のある位置のリストは、付加的データ（例えば、各々のイベントを記載するデータ）を含むことができる。携帯機器101Bは、いくつかの適切な方法で、興味のある位置のリスト内のデータを使用することを決定することができる。
【０１３８】
一実施例によれば、興味のある位置のリストは、ユーザ入力に応答してマルチメディア・デバイスによって生成される。例えば、ユーザは、制御インタフェースを使用して、ビデオ・プログラム内の一つ以上の位置を選択することができる。マルチメディア・デバイスは、制御インタフェースから信号を受信して、選択された位置がビデオ・プログラム内のどこにあるかを決定する。マルチメディア・デバイスは、マルチメディア・コンテンツ・ストリームに関連付けられた時間データを調べることによって、このような決定をすることができる。次いで、マルチメディア・デバイスは、それに関連付けられた時間データにより各選択された位置を識別するデータを興味のある位置のリストに格納し、そして携帯機器101Bにこのリストを提供する。
【０１３９】
さらに、もう一つの実施例では、マルチメディア・デバイスは、インバンド・データパターンを使用するビデオ・プログラム内のイベントまたはセグメントの認識後、興味のある位置のリストを生成することができる。例えば、マルチメディア・デバイスは、携帯機器101Bに提供する前に、マルチメディア・コンテンツ・ストリーム全体を処理することができる。マルチメディア・デバイスがインバンド・データパターンを認識すると、それは、インバンド・データパターンに関連付けられたメタデータを調べ、かつ各イベントに関連付けられた時間データを含むビデオ・プログラム内のイベントを識別する。マルチメディア・デバイスは、時間データを使用して、各イベントをリストする興味のある位置のリストおよびイベントがビデオ・プログラムまたはマルチメディア・コンテンツ・ストリームに対して行われる時間を生成する。次いで、興味のある位置のリストは、ビデオ・プログラム内の位置を識別するリストを使用できる携帯機器101Bに提供される。
【０１４０】
4.4  マルチメディア・コンテンツの共有イベント識別データ
上述したように、DVRユーザは、DVRから他のDVRへ、イベント識別データを転送することができる。これは、ネットワークまたはインターネットによる他のDVRへの直接転送により実行させてもよい。一旦、DVRがイベント識別データを受信すると、カスタマイズされたプログラム・インデックスが受信されたことおよびそれがどのプログラムに関するものかを、DVRユーザに通知することができる。次いで、ユーザは、インデックスを使用してプログラムの再生を選ぶことができる。
【０１４１】
さらに、DVRサービスは、イベント識別データの分布点としての役割を果たすことができる。プログラムに関連付けられたイベント識別データは、DVRからサーバ106Aにアップロードさせることができる。サーバ106Aが、DVRからイベント識別データを受信すると、それは、ローカルの格納デバイスまたはデータベースにイベント識別データを格納する。サーバ106Aは、ネットワーク105を介してダウンロードできるように、複数のDVRで作成されたイベント識別データを、提供することができる。他のDVR 104が、特定のプログラムに関連付けられたイベント識別データを読み出すことを望むとき、サーバ106Aはネットワーク105上のDVR 104にイベント識別データを送信する。このようにして、カスタマイズされたビデオ・セグメントを作成しかつ視聴するシステムが、可能となる。
【０１４２】
5.0  実施メカニズム  
図8は、本発明の実施例を実施することができるコンピュータ・システム800を示す、ブロック図ある。コンピュータ・システム800は、情報を通信するためのバス802または他の通信メカニズム、および情報を処理するためにバス802と結合されるプロセッサ804を含む。コンピュータ・システム800は、ランダムアクセスメモリ（RAM）または他の動的格納デバイスといった主メモリ806も含み、かつ情報およびプロセッサ804によって実行される命令を格納するため、バス802に結合されている。主メモリ806は、また、プロセッサ804によって実行される命令を実行中、一時的変数または他の中間情報を格納するために使用することができる。コンピュータ・システム800は、さらに、静的情報およびプロセッサ804に対する命令を格納するためにバス802と結合される読み出し専用メモリ（ROM）808または他の静的格納デバイスを含む。磁気ディスクまたは光ディスクといった格納デバイス810が、提供され、そして情報および命令を格納するためにバス802に結合される。
【０１４３】
コンピュータ・システム800は、コンピュータ・ユーザに情報を表示するため、バス802を介して、陰極線管（CRT）といった表示812に結合することができる。英数字等のキーを含む入力デバイス814は、プロセッサ804への情報およびコマンド選択を通信するため、バス802に結合される。ユーザ入力デバイスの別のタイプは、マウス、トラックボールまたはカーソル方向キーといった、プロセッサ804への方向情報およびコマンド選択を通信するため、そして表示812上でカーソルの動きを制御するため、のカーソル制御816である。この入力デバイスは、通常、第1軸（例えば、x）および第2軸（例えば、y）の、2つの軸において2つの自由度を有し、平面内での位置の指定を可能とする。
【０１４４】
本発明は、本明細書に説明される手法を実装するためのコンピュータ・システム800の使用に関する。本発明の一実施例によると、これらの手法は、主メモリ806に含まれる1つまたは複数の命令の1つまたは複数のシーケンスをプロセッサ804が実行するのに応答して、コンピュータ・システム800によって実行される。このような命令は、格納デバイス810といった別の機械可読媒体から主格納デバイス806に読み込むことができる。主メモリ806に含まれる命令のシーケンスを実行すると、プロセッサ804は、本明細書に説明される処理ステップを実行する。別の実施例では、配線接続の回路を、ソフトウェア命令の代わりに使用するか、またはソフトウェア命令と組み合わせて使用して、本発明を実装することができる。すなわち、本発明の実施例は、ハードウェア回路およびソフトウェアの何らかの特定の組み合わせに限定されない。
【０１４５】
本明細書で使用される用語「機械可読媒体」は、機械を特定のやり方で動作させるデータを提供するのに関与する任意の媒体である。コンピュータ・システム800を使用して実装される一実施例では、さまざまな機械可読媒体が、例えば、プロセッサ804が実行するための命令の提供に、関与する。このような媒体は、多くの形式をとることができ、不揮発性媒体、揮発性媒体、および伝送媒体を含むが、これらに限定されない。不揮発性媒体は、例えば、格納デバイス810といった、光または磁気ディスクを含む。揮発性媒体は、主メモリ806といった、動的メモリを含む。伝送媒体は、同軸ケーブル、銅線および光ファイバを含み、バス802を構成する線を含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるものといった、音波または光波の形式をとることもできる。このようなすべての媒体は、媒体によって搬送される命令が、この命令を機械に読み込む物理的メカニズムによって検出できるようにするため、実体のあるものでなければならない。
【０１４６】
機械可読媒体の共通の形式は、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハード・ディスク、磁気テープ、または他の何らかの磁気媒体、CD-ROM、他の何らかの光媒体、パンチカード、紙テープ、穴のパターンがある他の何らかの物理的媒体、RAM、PROM、およびEPROM、FLASH-EPROM、他の何らかのメモリチップまたはカートリッジ、以下に説明される搬送波、またはコンピュータが読み取れる他の何らかの媒体を含む。
【０１４７】
機械可読媒体のさまざまな形式は、実行のため、プロセッサ804に1つまたは複数の命令の1つまたは複数のシーケンスを搬送することに関係する。例えば、この命令は、最初、リモートコンピュータの磁気ディスクで搬送することができる。このリモートコンピュータは、命令をその動的メモリにロードでき、そしてこれらの命令は、モデムを使用して電話線から送信できる。コンピュータ・システム800にローカルなモデムは、この電話線のデータを受信でき、そして赤外線送信器を使用して、データを赤外線信号に変換できる。赤外線検出器は、赤外線信号で搬送されるデータを受信でき、そして適切な回路が、このデータをバス802に配置できる。バス802は、主メモリ806にデータを搬送し、ここから、プロセッサ804は、命令を呼び出し、そして実行する。主メモリ806によって受信される命令は、オプションとして、プロセッサ804による実行の前に、これに代えて後で格納デバイス810に格納させてもよい。
【０１４８】
コンピュータ・システム800は、また、バス802に結合される通信インタフェース818を含む。通信インタフェース818は、ローカルネットワーク822と接続されるネットワークリンク820と結合する双方向データ通信を提供する。例えば、通信インタフェース818は、対応する電話線タイプへのデータ通信接続を提供するサービス総合デジタル通信網（ISDN）カードまたはモデムでもよい。別の例として、通信インタフェース818は、互換LANへのデータ通信接続を提供するローカル・エリア・ネットワーク（LAN）カードでもよい。無線リンクを、実装することができる。このような実装の何れでも、通信インタフェース818は、さまざまなタイプの情報を表すデジタルデータ・ストリームを搬送する電気、電磁気、または光の信号を送信および受信する。
【０１４９】
ネットワークリンク820は、通常、1つまたは複数のネットワークにより、他のデータ・デバイスにデータ通信を提供する。例えば、ネットワークリンク820は、ローカルネットワーク822により、ホストコンピュータ824に、またはインターネットサービスプロバイダー（ISP）826によって動作されるデータ機器に、接続を提供することができる。ISP826は、次いで、ワールドワイドパケットデータ通信ネットワーク（現在は一般に「インターネット」828と呼ばれる）によりデータ通信サービスを提供する。ローカルネットワーク822およびインターネット828は、両方とも、デジタルデータ・ストリームを搬送する電気、電磁気、または光の信号を使用する。さまざまなネットワークを通じた信号、およびネットワークリンク820上および通信インタフェース818を通じた信号は、コンピュータ・システム800と双方向にデジタルデータを搬送し、情報をトランスポートする搬送波の代表的な形式である。
【０１５０】
コンピュータ・システム800は、ネットワーク（1つまたは複数）、ネットワークリンク820および通信インタフェース818により、メッセージの送信、およびプログラムコードを含むデータの受信ができる。インターネットの例では、サーバ830は、インターネット828、ISP826、ローカルネットワーク822および通信インタフェース818により、アプリケーションプログラムに対する要求コードを送信する可能性がある。
【０１５１】
受信コードは、受信された際にプロセッサ804によって実行させてもよいし、そして／または後で実行するため、格納デバイス810、または他の不揮発性ストレージに格納させてもよい。このようにして、コンピュータ・システム800は、搬送波の形式で、アプリケーションコードを取得することができる。
【０１５２】
上記の明細において、本発明の実施例は、多数の特定の詳細を参照して説明されているが、実装ごとに異なってもよい。すなわち、本発明とは何か、および本出願人が意図する何をもって本発明とするか、についての唯一かつ排他的な指標は、本出願から発行される請求項一式であり、この特定の形式において、このような請求項は、何らかの後続する修正も含んで、発行される。このような請求項に含まれる用語について本明細書で明示的に説明される何らかの定義は、これらの請求項で使用される場合の、こうした用語の意味を規定する。そのため、一請求項で明示的に記載されない限定、要素、特性、機能、利点または属性が、如何なる場合も、こうした請求の範囲を限定すべきではない。本明細書および図面は、適宜、制限的な感覚でなく、むしろ説明的なものと見なされる。
【符号の説明】
【０１５３】
101A  パーソナル・コンピュータ（PC）
101B  携帯機器
102  DVR
104  DVR
106A  サーバ
106B  コンテンツ・プロバイダ
202  DVR
202A  入力モジュール
202B  出力モジュール
204  録画モジュール
206  通信インタフェース
209  タイミング・モジュール
210  解析モジュール
212  パターン認識ステートマシン
214  格納デバイス
310A  フレーム
310B  フレーム
310C  フレーム  
310D  フレーム
312  構文解析部
314A  ハッシュ
314B  ハッシュ
314C  ハッシュ
314D  ハッシュ
320  表
330  表
340  ポップアップ・モード
342  ロールアップ・モード
344  ペイントオン・モード
350A  フロント・バッファ
350B  バック・バッファ
350C  着信CCデータ
350D  着信CCデータ
360  フレーム
400  表示画面
404  アイコン
404A  ユーザ入力
500  ステートマシン
501  インデックス
502  スタート
512  シーケンス
1513  シーケンス
2515  失敗ノード
520A  シーケンス・データ
520B  メタデータ
522  コマンド・データ
600  コンテンツ
601  ハッシュ値
602A  クロック・タイム
602B  プログラム・タイム
604  スライダ
700A  マルチメディア・コンテンツ・ストリーム
700B  プログラム・キャッシュ・バー
702  CCデータ
704  位置
706  位置
800  コンピュータ・システム
802  バス
804  プロセッサ
806  主メモリ
808  ROM
810  格納デバイス
812  ディスプレイ
814  入力デバイス
816  カーソル制御
818  通信インタフェース
820  ネットワークリンク
822  ローカル・ネットワーク 
824  ホスト
826  ISP828  インターネット
830  サーバ
【図１】
0005250128.tif 000002
【図２】
0005250128.tif 000003
【図３Ａ】
0005250128.tif 000004
【図３Ｂ】
0005250128.tif 000005
【図３Ｃ】
0005250128.tif 000006
【図３Ｄ】
0005250128.tif 000007
【図４】
0005250128.tif 000008
【図５Ａ】
0005250128.tif 000009
【図５Ｂ】
0005250128.tif 000010
【図６】
0005250128.tif 000011
【図７】
0005250128.tif 000012
【図８】
0005250128.tif 000013