(57)【特許請求の範囲】
【請求項１】
計算装置により実行される方法であって、
少なくとも２個のハッシュ値の第一シーケンスと少なくとも２個のハッシュ値の前記第一シーケンスに関連するメタデータとを備えるイベント識別データを受信するステップであって、前記イベント識別データが、少なくとも２個のハッシュ値の前記第一シーケンス内の連続する２個のハッシュ値に関連する第一時間オフセットを、さらに、備える、ステップと、
マルチメディア・コンテンツ・ストリームのインバンド・データ・ストリームから少なくとも２個のハッシュ値の第二シーケンスを決定するステップと、
少なくとも２個のハッシュ値の前記第二シーケンスの１個のハッシュ値が、前記インバンド・データ・ストリームから生成された時点と、少なくとも２個のハッシュ値の前記第二シーケンスの以前のハッシュ値が、前記インバンド・データ・ストリームから生成された時点との間の時間を表す第二時間オフセットを決定するステップと、
少なくとも２個のハッシュ値の前記第一シーケンスが、少なくとも２個のハッシュ値の前記第二シーケンスにマッチングしたとの決定に少なくとも部分的に基づいて、前記メタデータを処理するステップと
を備える方法であって、
少なくとも２個のハッシュ値の前記第一シーケンスが、少なくとも２個のハッシュ値の前記第二シーケンスにマッチングしたと決定するステップが、少なくとも２個のハッシュ値の前記第一シーケンス内の前記ハッシュ値の各々を、少なくとも２個のハッシュ値の前記第二シーケンス内の前記ハッシュ値の別々の値にマッチングさせることと、さらに、前記第一時間オフセットが、許容誤差内で前記第二時間オフセットにマッチングすることを決定することとを備える、方法。
【請求項２】
前記マルチメディア・コンテンツ・ストリームを再生するステップと、
前記マルチメディア・コンテンツ・ストリームの再生中に前記インバンド・データ・ストリームから少なくとも２個のハッシュ値の前記第二シーケンスを決定するステップと
を、さらに、備える、請求項１に記載の方法。
【請求項３】
少なくとも２個のハッシュ値の前記第一シーケンスが、少なくとも２個のハッシュ値の前記第二シーケンスにマッチングしたとの決定に少なくとも部分的に基づいて、前記インバンド・データ・ストリームの、少なくとも２個のハッシュ値の前記第二シーケンスが決定される位置に対応する、前記マルチメディア・コンテンツ・ストリーム内の位置で、前記マルチメディア・コンテンツ・ストリームにタグ・データを挿入するステップを、さらに、備える、請求項１に記載の方法。
【請求項４】
前記メタデータを処理するステップが、前記マルチメディア・コンテンツ・ストリームに挿入する前記タグ・データを決定することを備える、請求項３に記載の方法。
【請求項５】
前記マルチメディア・コンテンツ・ストリームの前記インバンド・データ・ストリームからインバンド・データを除去するステップを、さらに、備える、請求項３に記載の方法。
【請求項６】
前記メタデータを処理するステップが、前記マルチメディア・コンテンツ・ストリームのセグメントの再生をスキップするステップを備え、前記スキップされたセグメントが、前記インバンド・データ・ストリームの一部の前記マルチメディア・コンテンツ・ストリーム内の、少なくとも２個のハッシュ値の前記第二シーケンスが決定される位置に対応する、前記マルチメディア・コンテンツ・ストリーム内の位置を有する、請求項１に記載の方法。
【請求項７】
前記メタデータを処理するステップが、前記マルチメディア・コンテンツ・ストリームのセグメントを格納するステップを備え、前記格納されたセグメントが、前記マルチメディア・コンテンツ・ストリーム内に、前記インバンド・データ・ストリームの一部に対応する位置を有し、その位置から少なくとも２個のハッシュ値の前記第二シーケンスが決定される、請求項１に記載の方法。
【請求項８】
１個以上のプロセッサにより実行させる際に、請求項１〜７の何れか１項に記載の方法を実施させる命令を格納する、１個以上のコンピュータ可読揮発性または不揮発性媒体。
【請求項９】
１個以上のプロセッサと、前記１個以上のプロセッサにより実行させる際に、請求項１〜７の何れか１項に記載の方法を実施させる命令を格納する、１個以上のコンピュータ可読揮発性または不揮発性媒体を備える計算装置。    
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディア・コンテンツ・ストリームのインバンド・データを認識し、かつマルチメディア装置でマルチメディア・コンテンツ・ストリーム内のポイントの位置を決めることに関する。
【背景技術】
【０００２】
ここに記載される方法は、必ずしも既に考えられたか、実行された方法ではないが、実行できる方法である。したがって、特に明記しない限り、ここにおいて記載されるあらゆる手法が、単に、この項に包含される既知の発明として限定されるものとみなしてはならない。
【０００３】
テレビ視聴者は、ビデオカセット・レコーダ（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は、DVR 102および104が視聴者の興味を満たすためにサーバ106Aの中で独立して作動することを可能にするデータのプログラム・ガイド・データ、グラフィカルなリソース（例えばフォント、画像、その他）サービス情報、ソフトウェア、広告、イベント識別データおよび他の形式を提供するサーバ106Aと通信する。
【００３１】
コンテンツ・プロバイダ106Bは、無線の放送、衛星通信または同軸ケーブルによってDVR 102および104に、直接マルチメディア番組コンテンツを提供することもできる。マルチメディア番組コンテンツは、DVRユーザに表示するための、長編の映画、ホームコメディ、バラエティーショー、トークショー、広告、その他のコンテンツを含む。さらに、コンテンツ・プロバイダ106Bは、また、サーバ106AがDVR 102および104を解釈し、提供するためにプロモーションのデータ、アイコン、ウェブ・データおよびその他の情報を含むサーバ106Aに、付加的データを提供する。他の実施例によれば、コンテンツ・プロバイダ106Bは、また、処理のためにサーバ106Aに、マルチメディア番組コンテンツを提供する。サーバ106Aは、マルチメディア番組コンテンツを処理し、イベント識別データを作成し、DVRおよびその他の装置にイベント識別データを提供する。
【００３２】
マルチメディア装置は、マルチメディア・コンテンツ・ストリームに認識し、同期するために、イベント識別データを使用する。次に図2を参照すると、インバンド・データの認識および同期のための装置の構成要素を例示するブロック図が、一実施例に従って示される。特に図2は、DVR 200の構成要素を表す。実施例の必要上参照は、明細書を通してDVRになされる点に注意すべきである。しかしながら、本発明はこのように限定されるものではなく、インバンド・データへ認識し、同期する処理は、どのようなマルチメディア装置またはコンピュータ・システムのタイプでも実行することができる。
【００３３】
DVR 200は、一般に、（コンテンツ・プロバイダ106Bまたはサーバ106Aからマルチメディア番組コンテンツを受信するために、入力モジュール202Aによって示される）複数の構成要素を備える。一実施例によれば、マルチメディア・コンテンツ・ストリームを表す放送信号は、コンテンツ・プロバイダ106BからDVR 200に送信される。DVR 200は、入力モジュール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 200は、また、入力モジュール202Aから受信されるマルチメディア・コンテンツ・ストリームの一つ以上の部分を録画して、記憶装置214のデジタルデータストリームとしてマルチメディア・コンテンツ・ストリームを格納するために機能的な録画モジュール204を含む。録画モジュール204は、デジタルデータストリームのセグメントを保持するように設計される記憶装置214のような、少なくとも一つの記憶設備上にデジタルデータストリームを格納することによって、着信マルチメディア・コンテンツ・ストリームを録画する。一実施例によれば、記憶装置214は、DVR 200上に設置されるハード・ディスク・ドライブでもよい。これに代えて、記憶装置214は、任意型の揮発性および／または不揮発性記憶媒体（例えば、フラッシュ・メモリ）でよく、さらに、取外し可能な記憶媒体（例えば、DVD-ROMディスク）で構成することもできる。DVR 200が、あらゆるそれらの組み合わせで、上記のタイプの複数の記憶装置、記憶媒体または取外し可能な記憶媒体を含むことができることに注意すべきである。
【００３５】
再生の間、信号が標準規格テレビ受像機に配信される出力モジュール202Bを介して、デジタルデータストリームは、アナログ信号に変換され、その時RF搬送波上へ変調する。これに代えて、出力モジュール202Bは、デジタル信号をテレビ受像機またはビデオモニタに配信することもできる。例えば、DVR 200は、デジタル・ビジュアル・インタフェースポート（DVI）をDVIケーブルを介してTVにデジタル信号を送信するために利用することもできる。これに代えて、出力モジュール202Bは、ケーブルを用いずに内部的にアナログおよび／またはデジタル信号をテレビ受像機に配信することもできる。例えば、DVR 200はテレビ受像機の一部としてもよく、DVR 200と表示画面間の通信は、テレビ受像機に配置されるシステムバスを介して内部的に行われる。
【００３６】
マルチメディア・コンテンツ・ストリームと他のタイプのデータを録画しかつ格納するために、DVR 200は、記憶装置214を含む。記憶装置214は、ハード・ディスク、メモリまたはDVR 200に配置されるその他の形式の記憶域とすることもできる。記憶装置214は、DVR 200に使用するために、プログラムの要素またはマルチメディア・コンテンツ・ストリームだけでなく、付加的データも格納するために使用することができる。例えば、将来の検索のために記憶装置214にイベント識別データを格納することができる。記憶装置214がDVR 200内のモジュールとして現れるが、記憶装置214は、DVR 200の外側に配置してもよく、DVR 200はインタフェース（例えば、通信インタフェース206）を使用して、記憶域と通信することができる。
【００３７】
また、DVR 200は、通信インタフェース206を包含し、イーサネット（登録商標）、ワイヤレス・ネットワーク、モデムまたはその他の標準規格の通信を介して、ネットワーク105と通信する。他の実施態様において、通信インタフェース206は、任意型の通信ポート（例えば、同軸ケーブル、赤外線、光ファイバ、シリアル・ポート）とすることができる。1つの例によれば、データは、ネットワーク105上のサーバ106Aから通信インタフェース206に接続されたイーサネット（登録商標）ケーブルを使用してDVR 200へ通信される。通信インタフェース206を使用して、DVR 200は、LANを通してPC101Aまたは携帯機器101Bと通信することができる。
【００３８】
入力モジュール202Aは、DVRユーザに録画および再生のためにマルチメディア・コンテンツ・ストリームを受信する。マルチメディア・コンテンツ・ストリームは、入力モジュール202Aで受信されると、録画モジュール204によって録画され、出力モジュール202Bを介してユーザに表示するために処理される。表示のためのマルチメディア・コンテンツ・ストリームの処理は、記憶装置214と、その後の表示のために出力モジュール202Bに、マルチメディア・コンテンツ・ストリームを送信することを含む。実質的に、DVRは生再生の間、マルチメディア・コンテンツ・ストリーム部分を録画するので、全てのビデオ番組を録画することなく、ユーザが一時中断して、生放送を巻き戻すことができる。マルチメディア・コンテンツ・ストリームの処理ついては、本出願人によって所有され、本願明細書に参照によって完全に組み込まれている、「マルチメディアの時間的歪みシステム」と称される米国特許6,233,389号においてさらに詳細に記載されている。
【００３９】
DVR 200の動作の間、解析モジュール210は、インバンド・データ（例えば、字幕データまたはETV信号データ）のためにリスンする。マルチメディア・コンテンツ・ストリームが録画されると共に、解析モジュール210はストリームのインバンド・データ部分を監視する。これに代えて、解析モジュール210は、その他の時間（例えば、マルチメディア・コンテンツ・ストリームの再生）の間、インバンド・データを監視することもできる。
【００４０】
一実施例によれば、マルチメディア・コンテンツ・ストリームはMPEGトランスポート・ストリームであり、インバンド・データはプライベートデータ・イベントとしてオーディオおよびビデオ・データによってインタリーブされる。インバンド・データがコンテンツ・ストリーム内の独立のイベントであるので、DVR 200のようなマルチメディア装置によって容易に認識される。さらに、オリジナル放送がアナログ形式の場合には、解析モジュール210によって処理されるとき、マルチメディア・コンテンツ・ストリームがMPEGトランスポート・ストリームの形式になるように、DVR 200は入力モジュール202Aでマルチメディア・コンテンツ・ストリームをデジタル化するために必要な複数の構成要素を含む。米国特許6,233,389号に詳しく記載されているように、ビデオおよびオーディオが、パッケタイズド・エレメンタリ・ストリーム（PES：Packetized Elementary Stream）に置かれるように、インバンド・データは抽出される。インバンド・データは、後に、解析モジュール210による処理、および、出力モジュール202Bによる表示のために、オーディオおよびビデオと結合される。
【００４１】
マルチメディア・コンテンツ・ストリームと同期するために、DVR 200は、また、パターン認識ステートマシン212を含む。実施例において、パターン認識ステートマシン212は、マルチメディア・コンテンツ・ストリーム内でインバンド・データパターンを識別するためのアルゴリズムを表す。インバンド・データを既知のインバンド・データパターンとマッチングさせる試みで、パターン認識ステートマシン212は、周知のインバンド・データパターンを含むイベント識別データを処理する。
【００４２】
一実施例によれば、パターン認識ステートマシン212は、記憶装置214に格納されたイベント識別データのインバンド・データパターンを有する解析モジュール210からのインバンド・データにマッチングさせることを試みるステート・ベースのアルゴリズムである。マッチングが生じる場合、パターン認識ステートマシン212は、認識されるインバンド・データパターンと関連するメタデータを検査するDVR 200に、マッチングを報告する。メタデータに基づいて、DVR 200は、マルチメディア・コンテンツ・ストリームの同期に多くのアクションを実行することができる。
【００４３】
DVR 200の構成要素がDVRとの関係について記載されているが、モジュールがDVR 200の各モジュールの機能を実行することができるテレビ受像機に収容されるように、上記のモジュールをテレビ・システムに組み込んでもよいことに注意すべきである。さらに、他の実施例では、上記のモジュールは、記載された機能を実行することができる多くの装置の中で配置されてもよい。これにより、記載された構成要素の動作によって、DVR 200は、インバンド・データを認識することができ、インバンド・データにアクションおよびイベントを同期させることができる。
【実施例】
【００４４】
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）に変調される。例えば、FCCが、字幕（CC：Closed Caption）および拡張データサービス（EDS：Extended Data Services）に対してはライン21の使用を強制するので、北米基本テレテキスト標準（NABTS：North American Broadcast Teletext Standard）は、NTSC信号のライン10〜20に情報を変調するために使用することができる。しかしながら、アナログ字幕信号は、それらがあたかもMPEG2プライベート・データ・チャネルを介して配信されるかのように、DVRの入力モジュールによって復号化され、かつDVRのその他の構成要素へ渡される。したがって、上述したように、DVR 200の解析モジュール210は、もとがアナログまたはデジタルの何れの形式で放送された字幕データであっても処理することができる。マルチメディア・コンテンツ・ストリームの字幕データの位置に関する詳細な情報は、出願人によって所有され、本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（Closed-Caption Tagging System）」と称される米国特許出願09/665,921号に見出すことができる。妻
【００５１】
他の実施例では、字幕データは、マルチメディア・コンテンツ・ストリームに検出可能な形式で含ませることができる。サーバ106AおよびDVR 200は、字幕データを読み込みかつ解析することができる。
【００５２】
字幕データを認識しかつアクションおよびイベントをマルチメディア・コンテンツ・ストリームの字幕データに同期させる処理の一部として、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は、サーバ106Aによる処理のためのビデオ番組に関連した字幕データを含む録画されたビデオ番組を、ネットワーク105によりサーバ106Aに、送信することができる。
【００５６】
ステップ304で、サーバ106Aは、ビデオ番組の字幕データを解析して、ハッシュ値シーケンス・データを作成するのに使用されるハッシュ値を得る。サーバ106Aは、ハッシュ値を作成するために、多数の異なる方法を使用することもできる。字幕データのハッシュ値の作成に使用される方法は、ビデオ番組の視聴者に字幕テキストを表示する字幕ストリームによって使用される方法ごとに異なる。
【００５７】
これにより、サーバ106Aは、字幕データを表示するためにどの字幕モードが使用されているかを常に追跡することができる。例えば、一実施例によれば、詳細に本願明細書に記載されるように、字幕テキストは、ポップアップ・モード、ロールアップ・モードまたはペイントオン・モードを使用して、処理しかつユーザに表示することができる。使用されるモードに応じて、ハッシュ値は、ハッシュ関数をテキスト・ラインの多数の文字に適用する結果を表す。ハッシュ関数Hは、可変サイズの入力mをとり、かつh=H（m）となるハッシュ値hと称される、固定サイズの文字列を返す変換式である。詳細に本願明細書に記載されるように、字幕データの可変サイズ入力は、使用される字幕方法によるであろう。さらに、一実施例によれば、字幕データのラインに挿入することができる文字の量は、制限される。
【００５８】
しかしながら、構文解析部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は、フレーム番号151で、つまり、フレーム310Aから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は、ハッシュ値のリストが、フレーム310A〜310Dによって表されるビデオ番組から、構文解析部312によって生成されることを表す。表320は、ハッシュ値の列、時間の列および時間のオフセット列を含む。ハッシュ値の列は、フレーム310A〜310Dに対して構文解析部312によって生成されたハッシュ値を表す。時間の列は、各ハッシュ値が適切な字幕方法に従って生成された相対時間を表す。時間値は、全マルチメディア・コンテンツ・ストリーム、フレーム310A〜310Dを含む特定のビデオ番組またはDVRの現実の時計時間に関連させることができる。
【００６６】
構文解析部312がフレームのハッシュ値を生成すると、構文解析部312は、ハッシュ値が生成された時間を決定するために、DVR 200のタイミング・モジュール209に問い合わせをする。構文解析部312が、時間の列における時間の生成に同じ相対時間ユニットを使用する限り、DVR 200は、生成されたハッシュ値とハッシュ値シーケンス・データとの間の時間差を正確に追跡することができる。時間オフセットの列は、あるハッシュ値に関連した時間データとその後のハッシュ値に関連した時間データの差を示す。例えば、ハッシュ値「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を含み、続いて、着信CCデータ350Cが、テキスト・ライン2〜4のようなテキストを含むように、最初、ディスプレイ360上のテキストを構成することができる。テキスト・ライン2が表示される準備ができると、テキスト・ライン2は、ディスプレイに「ロールアップ」し、テキスト・ライン1をディスプレイ360のフレームY内でシフト・アップさせる。一実施例では、フレームYは、2つのテキスト・ラインしか表示することを可能にしない。これにより、その後のフレームでは、テキスト・ライン3が表示される準備ができると、テキスト・ライン1は削除され、テキスト・ライン2は、上方へ移動し、ディスプレイ360上のテキストの第2行を占めるであろう。これに代えて、任意の数のラインを、ロールアップ・モードでの字幕に対し供給することができる。
【００７９】
一実施例によれば、ロールアップ・モードにおいてハッシュ値を生成するために、構文解析部312は、テキスト・ラインを監視し、かつキャリッジ・リターン・コマンドのリスンする。構文解析部312が、この種のイベントが生じたと決定すると、構文解析部312は、対応するテキストのハッシュ値を生成する。これにより、テキスト・ラインが完結すると、ハッシュ値が生成され、かつ字幕データは、ラインの終わりを示す個別のユーザ可視イベントを含む。画面上に表示されるテキスト・ラインの全てに対して累積ハッシュ値を作成することとは対照的に、ロールアップ・モードは、画面上に現れるたびに、可視テキスト・ラインの各々に対してハッシュ値を生成しかつ報告する。
【００８０】
例えば、一実施例によれば、テキストが1つのライン（例えば、フレームYのテキスト・ライン１）スクロール・アップされると、構文解析部312は、テキスト・ラインが完結していると決定することができる。構文解析部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は、ハッシュ・シーケンスを認識した後にとられるDVRの特定のアクションを記載することができる。例えば、アクション1は、DVRのユーザにアイコンを表示することを含むことができる。アクション1を規定するメタデータは、アクションの長さに関するタイミング情報、グラフィクスに関する情報、およびDVRに接続されている表示装置上のアイコン配置を含むことができる。メタデータによって指定されるアクションは、ハッシュ・シーケンスを認識する時間と異なる時間に行ってもよい点に注意すべきである。例えば、メタデータは、アクションがハッシュ・シーケンスの認識の前に一度に行われることを示すこともできる。このように、プログラムが格納装置域から再生される場合、DVRは、前方を走査し、ハッシュ比較を実行し、適切な時間にアクションを実行することを知る。
【００８６】
他の実施形態では、アクション1は、DVRが処理するためのコマンド・データを含むことができる。コマンド・データは、DVRにマルチメディア・コンテンツ・ストリームの一つ以上の部分を録画しかつ格納させることができる。例えば、特定のビデオ番組の生放送の間、DVRが、C、D、E、Fのハッシュ・シーケンスを認識して、ハッシュ・シーケンスに関連したコマンド・データを処理する場合、コマンド・データは、直ちにDVRにプログラムの録画を開始させる。他の実施態様では、コマンド・データは、DVRに、ハッシュ・シーケンスの認識の後、いつでも生放送の録画を開始させることができる。
【００８７】
さらに、ハッシュ・シーケンスに関連したメタデータは、指定されたイベントまたはアクションに限定されるものではなく、DVRまたはメタデータを受信する装置によって理解され、処理することができるデータとすることができる。
【００８８】
3.1.3 マルチメディア装置によるハッシュ・シーケンスの認識
サーバ106Aが既にハッシュ値シーケンス・データを蓄積している場合には、サーバ106Aは、DVRまたはその他の装置にハッシュ値シーケンス・データを送信し、DVRまたはその他の装置は、ハッシュ値シーケンス・データを使用して字幕データを認識し、かつこの字幕データを使用しているビデオ番組に同期させる。図4には、字幕データを認識し、かつアクションとイベントを字幕データに同期させる処理の概要を記述するフローチャートが、示されている。ステップ402で、DVR 102は、サーバ106Aから、図3Bの表330に表されるハッシュ値シーケンス・データを受信する。一実施例では、「プル」処理として知られている場合には、DVR 102は、サーバ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は、パターン識別ステートマシン212に、ハッシュ値および各ハッシュ値に関連したタイム・スタンプを送信し、パターン識別ステートマシン212は、DVR 102が、サーバ106Aまたはその他のソースからダウンロード、格納、または受信したハッシュ値シーケンス・データのいずれかと、ハッシュ値を比較し、かつマッチングするために使用される。
【００９２】
ステップ408で、パターン識別ステートマシン212は、解析モジュール210によって生成されたハッシュ値を監視し、かつハッシュ値をステップ402で受信されたハッシュ値シーケンス・データと比較するために、使用される。一実施例によれば、パターン識別ステートマシン212は、ステップ402で受信されたハッシュ値シーケンス・データに従って構築されたステートマシンである。
【００９３】
具体例の目的のために、パターン識別ステートマシン212は、ノードおよび分岐を含むツリーの構造をとると仮定する。ツリーの各ノードは、ハッシュ値のシーケンス内の特定のハッシュ値を表すことができ、かつツリーの各「枝」は、ハッシュ値シーケンス・データによって識別された全ハッシュ・シーケンスを表す。後述するように、この構造は、図5Aにおいて詳細に説明される。パターン認識ステートマシン212は、ツリーのノードを移動させることによって生成されたハッシュ値をマッチングさせることを試みる。何れかの所定のノードで、マッチングが生じると、パターン識別ステートマシン212は次のノードへ進む。以前のノードがハッシュ値シーケンスの終わりを表すと、マッチングが生じ、かつパターン識別ステートマシン212は、ハッシュ値シーケンスが識別されたことを示すことができ、その結果、本願明細書に詳細に説明したように、DVR 200に適切なアクションを実行させる。
【００９４】
それゆえ、ステップ510で、パターン識別ステートマシン212は、解析モジュール210によって生成される任意のハッシュ値が、ハッシュ値シーケンス・データ内に含まれるハッシュ値にマッチングするか否かを決定する。ハッシュ値がマッチし、ハッシュ値イベント間の時間差が、予想されるハッシュ・シーケンスの閾値内にある限り、肯定的なマッチングが報告される。
【００９５】
図5Aには、一実施例による、パターン識別ステートマシンの形式のハッシュ値シーケンス・データが示されている。ハッシュ値シーケンス・データは、ハッシュ値シーケンス内の個々のハッシュ値を表すノードを含むステートマシン500によって表される。一実施例によれば、ステートマシン500は、ステートマシンの開始ステートを表すスタート・ノード502を含む。
【００９６】
一実施例によれば、ステートマシン500のノードには、ハッシュ値シーケンス・データにおいて識別されたハッシュ・シーケンスの第１のハッシュ値に従って、インデックスが付けられる。ステートマシン500は、初期化された後、まず、第1のノード504のハッシュ値が、解析モジュール210によって生成されたハッシュ値にマッチングするか否かを決定することができる。マッチしない場合、ステートマシン500は、インデックス501を続けて移動させ、次のノード520をテストする。まれであるが、異なるハッシュ値シーケンスが、同じハッシュ値から開始する可能性があることに注意すべきである。したがって、ハッシュ値「3D59」から開始するハッシュ・シーケンスを表すノード504は、異なるハッシュ値シーケンス（(1) 3D59、2Z55、A6E3および9Y95、または、(2) 3D59、2Z55、E4E9および9F4U）を表す2つの異なった分岐を含む可能性がある。
【００９７】
一実施例によれば、ステートマシン500は、DVR 200の軽量の構成要素であり、これは、ステートマシン500が、DVR 200の動作の間、最小のシステム・リソースしか使用しないように設計されていることを意味する。したがって、ステートマシン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でのマッチングを見出す代わりに、ステートマシン500は、否定的な出力を報告し、かつハッシュ値「2Z55」を表すインデックス501内の次のノード520まで進む。これに代えて、マッチングが特定ノードで見つけられない場合、ステートマシン500は、ステートマシンをリセットしかつスタート・ノード502を再度開始させる、失敗ノード515へ進むこともできる。
【０１０１】
それゆえ、インデックス501内の第1のノードでマッチングが生じたと仮定すると、ステートマシン212は、解析モジュール210から次に生成されたハッシュ値を待つ。一実施例では、次に生成されたハッシュ値は、「2Z55」である。それゆえ、ステートマシン500は、「2Z55」を次のノード506内の値と比較する。次のノードの値もまた「2Z55」であるので、ステートマシン500はマッチングを見出し、そしてノード508へ進む。しかしながら、マッチングがノード506で見出せない場合、ステートマシン500は、失敗ステートへ進まず、代わりに、「E4E9」を表すノード507でハッシュ値にマッチングすることを試みる点に注意すべきである。このように、ノード506は、2つのハッシュ値シーケンスが、それぞれ、「3D59」および「2Z55」のハッシュ値から始めることができる、ステートマシン500の分岐を表す。
【０１０２】
解析モジュール210によって生成されたハッシュ値を受信すると、ステートマシン500は、マッチングが発生しなくなるまで、または、ハッシュ・シーケンスの終わりが識別されるまで、シーケンシャルに、図5に表される各ノードを移動する。さらに、ハッシュ値のシーケンスの各ハッシュ値とハッシュ値をマッチングさせる間、ステートマシン500は、解析モジュール210によって生成されたハッシュ値とハッシュ・シーケンス内のハッシュ値との間で時間オフセットを比較することもできる。両方のハッシュ値がマッチし、両方のハッシュ値の時間オフセット値がマッチングすると、ステートマシン500は、肯定的なマッチングが生じたと決定することができる。他の実施形態では、ステートマシン500は、「バッファ」または誤差の範囲を許容することによって、特定のハッシュ値が、ハッシュ・シーケンス内でハッシュ値の時間オフセットにマッチングしたと決定することができる。この特定の例によれば、ステートマシン500は、図3Bの構文解析部312によって生成されたそれぞれのハッシュ値を受信した後に、3D59、2Z55、A6E3および9Y95のハッシュ・シーケンスに対して、マッチングが生じたと決定する。
【０１０３】
マッチングが見出せない場合に、次のハッシュ値が解析モジュール210から受信されると、ステートマシン500は、スタート・ノード502および再初期設定のマッチング処理をリセットする。
【０１０４】
DVR 200が動作している間、ステートマシン500は、ハッシュ値シーケンスとハッシュ値がマッチングすることを連続的に試みている点に注意すべきである。ステップ412で、ハッシュ・シーケンス全体に対し肯定的なマッチングが作成されると、ステートマシン500は、マッチングの成功を報告し、DVR 200に、ハッシュ値シーケンス・データに関連したメタデータを検査させる。
【０１０５】
他の実施態様では、ステートマシン500は、ハッシュ表を利用して、ハッシュ値シーケンス・データとハッシュ値がマッチングすることを試みる。ハッシュ表は、配列（または検索されるデータが格納されるテーブル）およびマッピング機能で構成されるデータ構造である。ハッシュ表は、サーチ・アルゴリズムで一般的に使用される、周知のデータ構造である。
【０１０６】
さらに、もう一つの実施例では、DVR 200は、複数のステートマシンを含む。一度に二つ以上のステートマシンを動作させることによって、ハッシュ値の同じシーケンス内の複数のパターンを識別することができる。例えば、「X6Y6、A4Z4およびB1C1」のハッシュ値が、マルチメディア・コンテンツ・ストリームから生成されたと仮定しよう。また、「X6Y6、A4Z4」および「A4Z4、B1C1」の2つの既知のパターンが、存在すると仮定しよう。一つのステートマシンがDVR 200上で動いているとすると、それらのパターンのうちの1つしか認識されないであろう。しかしながら、DVR 200は、二つ以上のステートマシンを同時に動かすことができるので、DVR 200は、「X6Y6、A4Z4およびB1C1」のハッシュ値から「X6Y6、A4Z4」および「A4Z4、B1C1」の両方のパターンを認識することができる。したがって、他の実施例では、DVR 200は、複数のステートマシンを含むことができ、かつ各ステートマシンは、インバンド・データの異なるパターンを表すことができる。
【０１０７】
図5Bには、一実施例のハッシュ値シーケンス・データが、示されている。ハッシュ値シーケンス・データは、シーケンス・データ520Aおよびメタデータ520Bを含む。シーケンス・データ520Aは、ハッシュ値のシーケンスとハッシュ値の発生の間の近似の時間差とを表すデータに対応する。これにより、上述したように、ステートマシン500は、特定のレベルでマッチングが見出せなくなるまで、または、ハッシュ・シーケンスの終わりにすでに遭遇している場合、図5Aに図示されるように、ノードを移動する。一実施例によれば、パターン認識ステートマシン212は、ハッシュ値3D59、2Z55、A6E3および9Y95のシーケンスが、生成された各ハッシュ値間の時間差に基づいて、解析モジュール210から同じハッシュ値の生成とすでにマッチしていたことを決定する。
【０１０８】
3.1.4 字幕データの同期
DVRが、パターンマッチングが既に生じていると決定した場合には、DVRは、上記のメタデータを使用して、マルチメディア・コンテンツ・ストリームに同期させる。特に、DVRは、メタデータを使用して、マルチメディア・コンテンツ・ストリーム内のイベントまたはビデオ番組の相対的位置関係を決定する。このように、DVR 102が、ハッシュ値の特定のシーケンスが生成されたと決定すると、DVR 200は、メタデータ520Bを参照して、とられるアクションを決定するであろう。メタデータ520Bは、コマンド・アンド・コントロール情報、プログラム・タイミング、コンテンツ情報、表示命令およびグラフィック情報のような情報を含むことができる。さらに、メタデータ520Bは、コマンド・データ522を含むこともできる。
【０１０９】
パターン認識ステートマシン212が、マルチメディア・コンテンツ・ストリームからのハッシュ値が特定のハッシュ・シーケンスにマッチングすると決定すると、ステップ412で、DVRは、ハッシュ・シーケンスに関連したハッシュ・シーケンス・メタデータを検査し、かつそれに応じて応答する。DVR 102のようなDVRは、多くの異なる方法で応答し、ハッシュ値のシーケンスに応答することができる。例えば、メタデータは、DVRがビデオ番組内のイベントの認識、ビデオ番組または全マルチメディア・コンテンツ・ストリームの同期、ユーザへの情報の表示、または、今後のプログラムを録画することができる情報を含むことができる。さらに、他の実施例では、メタデータは、DVRがマルチメディア・コンテンツ・ストリーム、ビデオ番組またはDVRの動作（例えば、コマーシャルのスキップおよびその他のコンテンツ）に関連するあらゆるアクションを実行することを可能にする情報を含むことができる。
【０１１０】
図6には、一実施例に従う、インバンド・データにアクションおよびイベントを同期させるための方法を例示するブロック図が、示されている。表606はハッシュ値シーケンス・データを表し、表608は、特定のハッシュ・シーケンスに関連したメタデータを表す。この特定の例では、表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は、構文解析モジュールを使用して、スライダ604によって示される位置である、時間：00でハッシュ値「3D59」、時間：05でハッシュ値「2Z55」、時間：10でハッシュ値「A6E3」および時間：12ハッシュ値「9Y95」を生成する。
【０１１１】
ハッシュ値と生成された対応する時間データとにより、DVRは、ハッシュ値が表606に配置されるハッシュ値シーケンス・データにマッチングすることを決定する。一実施例によれば、DVRは、実際のハッシュ値だけでなく各々のハッシュ値の時間オフセットも比較することによって、ハッシュ値をハッシュ値シーケンス・データに確実にマッチングさせることができる。
【０１１２】
マッチングを決定した後、DVRは、マッチングがプログラム内のどこに配置されているかを知る。具体的には、DVRは、スライダ604が、ハッシュ値シーケンス・データに従って、番組の指定された始まりの初めから12秒後に配置されていると決定する。次に、DVRは、表608に配置されているメタデータ情報を調べ、ハッシュ値シーケンス・データとマッチングすることに応答してとられる適切なアクションを決定する。一実施例によれば、表608は、イベント1が時間：10で行われることを示す。スライダ604の現在位置を調べることによって、DVR 102は、イベント1がスライダの現在位置の：02秒前に行われると算出することができる。イベント1が、ユーザに10秒間アイコンを表示することを規定している場合、DVR 102は、イベント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に命令することができる。他の実施形態では、DVR 102を、イベント2でマルチメディア・コンテンツ・ストリームの録画を開始するようにプログラムすることができる。このようにして、イベント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の正確な位置でビデオ・タグに遭う。このように、ビデオ・タグが、マルチメディア・コンテンツ・ストリームに置かれると、イベントまたはアクションが、再生中にビデオおよび音声データとともに自動的に処理されるビデオ・タグによって規定されているので、VRは、もはやマルチメディア・コンテンツ・ストリームに同期させるために字幕データを認識する必要はない。ビデオ・タグは、本出願人が所有しかつ本願明細書に参照によって完全に組み込まれている、「字幕のタグ付けシステム（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またはその他の装置で、録画、または再生されるとき、タイム・スタンプの形式の時間情報は、インバンド・データに関連している。具体的には、上述したように、インバンド・データを含むマルチメディア・コンテンツ・ストリームは、個別のオーディオ、ビデオおよびデータフレームにパケット化される。パケット化の際、各々のフレームには、相対的なタイム・スタンプが与えられる。これらのタイム・スタンプは、マルチメディア・コンテンツ・ストリームまたはビデオ番組内のインバンド・データの時間を追跡するために使用することができる。
【０１２７】
ユーザがビデオ番組（彼／彼女が保存したい、または、注目する）のセグメントを視聴するとき、ユーザは、ビデオ番組内の位置を選択することによってDVR 102にセグメントをマークさせる。一実施例によれば、画面操作ソフトは、プログラム・キャッシュ・バー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」が先ず（ここでは、時間：12で）生じ、ハッシュ値「E5Y5」が2秒後に生じ、そしてハッシュ値「A2R2」が「E5Y5」の4秒後に生じる。集合的に、ハッシュ値「Z1B1、E5Y5およびA2R2」は、第2の位置706のハッシュ・シーケンスを表す。プログラムに関連したメタデータが、これを示すであろう。
【０１３２】
従って、表710では、ハッシュ値「Z1B1」が、シーケンスの第1のハッシュの時から時間ゼロで生じ、ハッシュ値「E5Y5」がハッシュ値「Z1B1」の2秒後に生じ、そしてハッシュ値「A2R2」がハッシュ値「E5Y5」の4秒後に生じる。これに代えて、時間オフセットを、ビデオ番組、マルチメディア・コンテンツ・ストリーム、ビデオ番組またはストリームの位置またはビデオ・セグメントのいかなる部分にも関連させることができる。
【０１３３】
DVRが、そのステートマシンに対するハッシュ値シーケンス・データとして表710を使用し、マルチメディア・コンテンツ・ストリーム700Bを再生すると、DVRは、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である。この入力デバイスは、通常、2つの軸に2つの自由度を有し、かつ第1軸（例えば、x）および第2軸（例えば、y）により、このデバイスは、平面での位置を指定することができる。
【０１４５】
本発明は、本明細書に説明される手法を実装するためのコンピュータ・システム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 コンテンツ・プロバイダ
200 DVR
202A 入力モジュール
202B 出力モジュール
204 録画モジュール
206 通信インタフェース
209 タイミング・モジュール
210 解析モジュール
212 パターン認識ステートマシン
214 記憶装置
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 シーケンス1
513 シーケンス2
515 失敗ノード
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 ISP
828 インターネット
830 サーバ
【図１】
0005715078.tif 000002
【図２】
0005715078.tif 000003
【図３Ａ】
0005715078.tif 000004
【図３Ｂ】
0005715078.tif 000005
【図３Ｃ】
0005715078.tif 000006
【図３Ｄ】
0005715078.tif 000007
【図４】
0005715078.tif 000008
【図５Ａ】
0005715078.tif 000009
【図５Ｂ】
0005715078.tif 000010
【図６】
0005715078.tif 000011
【図７】
0005715078.tif 000012
【図８】
0005715078.tif 000013