(57)【要約】      （修正有）【課題】受信機がダイナミックに視聴者と対話しかつ番組内容に基づいてそれ自身を構成することが出来るクローズド・キャプション・タグ付けシステムを提供する。【解決手段】受信機は、放送ストリームを受信して、受信機に存在する格納装置上格納された放送ストリームの範囲内でタグを検出し、そして処理する。タグは、受信機が変換して、かつ作動するコマンドと制御信号、さらに番組セグメントの開始と終了のポイントを含む。受信機は、再生の間、遠隔入力装置上のボタンを視聴者がプレスすることに応じて番組セグメントをスキップし、または、それは視聴者の嗜好に従い番組セグメントを自動的にスキップする。コマーシャルのような番組セグメントは、様々な基準に基づいて選択された新規の番組セグメントを有する受信機によって自動的に置き換えられる。メニュ、アイコン、およびウェブ・ページは、タグ内に含まれる情報に基づいて視聴者に表示される。【選択図】図１
2014003636.tif 000002
【特許請求の範囲】
【請求項１】
受信機でメディア・ストリームを受信するステップであって、前記メディア・ストリームが、少なくとも、前記メディア・ストリーム内に複数のビデオ・フレームと複数のタグを備える、ステップと、
前記メディア・ストリーム内の１個以上の特定タグを検出するステップと、
前記１個以上の特定タグに基づいて、少なくとも前記メディア・ストリーム内のセグメントの開始ポイントと終了ポイントを識別するステップと、
前記メディア・ストリームを再生する間に、前記1個以上の特定タグに基づいて、前記セグメントの前記終了ポイントまで前記メディア・ストリームをスキップするステップと、
を備える方法であって、
前記方法が、１個以上のコンピューティング・デバイスにより実行される、
方法。
【請求項２】
前記開始ポイントを示す、前記１個以上のタグの第一のタグまたは前記特定タグを検出することに応じて、前記セグメント全体を自動的にスキップするステップを、更に備える、請求項１に記載の方法。
【請求項３】
前記スキップするステップが、視聴者の嗜好に基づいて自動的に行われる、請求項１に記載の方法。
【請求項４】
遠隔デバイスからの入力に応じて、前記セグメントの前記終了ポイントまで前記メディア・ストリームをスキップするステップを、更に備える、請求項１に記載の方法。
【請求項５】
前記１個以上の特定タグが、前記セグメントの前記開始ポイントと長さを示す1個のタグを備える、請求項１に記載の方法。
【請求項６】
前記１個以上の特定タグが、前記開始ポイントを示す開始タグと前記終了ポイントを示す終了タグとを備える、請求項１に記載の方法。
【請求項７】
前記開始タグと前記終了タグが、両者とも、前記セグメントに対して同じ固有の識別子を備える、請求項６に記載の方法。
【請求項８】
前記開始タグが、前記受信機が前記終了ポイントを検索しようとする前記開始タグからの距離の制限を示す、請求項６に記載の方法。
【請求項９】
前記受信機に結合されている１個以上の格納デバイスに前記メディア・ストリームをレコーディングするステップを備え、
前記メディア・ストリームの前記再生が、前記1個以上の格納デバイスから前記レコーディングされたメディア・ストリームを再生するステップを備える、  
請求項１に記載の方法。
【請求項１０】
前記メディア・ストリームが、生中継のメディア・ストリームであって、前記方法が、更に、前記生中継のメディア・ストリームをバッファリングするステップを備え、
前記メディア・ストリームの前記再生が、前記バッファから前記生中継のメディア・ストリームを再生するステップを備える、
請求項１に記載の方法。
【請求項１１】
前記メディア・ストリーム内の前記セグメントの再生中に、遠隔デバイスから入力を受信するステップと、  
前記入力に応じて、前記セグメントに関連する終了タグを検索するステップと、
前記終了タグに関連する終了フレームの直後のフレームから、前記メディア・ストリームの再生を再開するステップと
を備える請求項１に記載の方法。
【請求項１２】
前記セグメントを表示せずに、前記メディア・ストリームから番組マテリアルを巻き戻す間に、
前記セグメントの前記終了ポイントの終了タグを検出するステップと、
前記終了タグの検出に応じて、前記セグメントの前記開始ポイントの開始タグを探すステップと、
前記開始タグと前記終了タグとに基づいて前記セグメントをスキップするステップと
を備える、請求項１に記載の方法。
【請求項１３】
前記タグの各々が、前記メディア・ストリームの特定ビデオ・フレームに特有である、請求項１に記載の方法。
【請求項１４】
前記メディア・ストリームを受信するステップが、放送伝送、衛星伝送、ケーブル伝送、または他の通信伝送の内の一つにより前記メディア・ストリームを受信するステップを備える、請求項１に記載の方法。
【請求項１５】
タグが、前記メディア・ストリームまたは私的データ・チャネルの字幕部分の一つに埋め込まれている、請求項１に記載の方法。
【請求項１６】
1個以上のコンピューティング・デバイスによって実行させるときに、請求項１〜１５の何れか１項に記載の方法の少なくとも一つを実行させる命令を格納する１個以上の媒体。
【請求項１７】
請求項１〜１５の何れか１項に記載の方法の少なくとも一つを実行するように構成されている受信機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディアのオーディオおよびビデオのストリームの処理に関する。とりわけ、本発明は、マルチメディアのオーディオおよびビデオのテレビ・ストリームのタグ付けに関する。
【背景技術】
【０００２】
ビデオ・カセット・レコーダ(VCR)は、世界の全体にわたってテレビ(TV)視聴者の生活を変化させた。VCRは、視聴者へ、彼らの生活様式に合うようにテレビ番組をタイム‐シフトする柔軟性を提供した。
【０００３】
視聴者は、VCRを使用して磁気テープにテレビ番組を格納する。VCRにより、視聴者は、格納された番組マテリアルを再生、巻戻し、早送り、および一時停止することが出来る。これらの機能により、視聴者は、彼が望む時はいつでも、番組再生を一時停止し、不必要な番組マテリアルまたはコマーシャルを早送りし、かつ好きなシーンを再生することが出来る。しかしながら、VCRは、情報の取り込みと再生を同時に行うことは出来ない。
【０００４】
デジタル・ビデオ・レコーダ(DVR)が、最近、市場に導入された。DVRによって、視聴者は、ハードディスクにテレビ番組を格納することが出来る。これにより、視聴者は、磁気テープの世界から解放された。視聴者は、ライブ(live)放送番組を一時停止し、巻き戻し、および早送りすることが出来る。他方、DVRの機能は、単に番組をレコーディングすることを越えて広がっている。
【０００５】
番組をデジタルの形で局所的に格納することは、プログラマに、以前利用可能であった以上に、多くのオプションを与える。今や、広告（コマーシャル）を、ダイナミックに置き換えることが出来、かつ特に、特定の視聴者に、彼または彼女の視聴習慣に基づいて目標を定めることが出来る。コマーシャルは、視聴者のDVRに局所的に格納させることが出来、かついつでも表示させることが出来る。
【０００６】
DVRは、視聴者との対話型プログラミングを可能にする。一般に、将来の番組のプロモーション／お知らせは、通常の放送番組の間に、視聴者に示される。その時、視聴者は、その番組のレコーディングまたは視聴のために、その番組が放送される日付、時間およびチャネルを覚えていなければならない。視聴者は、DVRによって、すぐに番組のレコーディングの予定を入れることが出来る。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
唯一の欠点は、この現世代のDVRが、このレベルで視聴者と対話する能力を有しないことである。コマーシャルが、ある番組または他の広告に、直接タイアップされていることをDVRに通知する手段がない。更に、コマーシャルを置き換えることが出来ることをDVRに知らせる方法がない。
【０００８】
放送媒体にわたってフレーム特定データを送信する能力を与えるクローズド・キャプション・タグ付けシステムをコンテンツ・プロバイダに提供することは、有利であろう。受信機がダイナミックに視聴者と対話しかつ番組内容に基づいてそれ自身を構成することが出来るクローズド・キャプション・タグ付けシステムを提供することは、更に有利であろう。
【課題を解決するための手段】
【０００９】
本発明は、クローズド・キャプション・タグ付けシステムを提供する。本発明によって、コンテンツ・プロバイダが放送媒体にわたってビデオおよびオーディオ・テレビ・ストリームに統合されたフレーム特定データおよびコマンドを送信することが出来る。更に、本発明によって受信機がダイナミックに視聴者と対話し、かつビデオおよびオーディオ・ストリームコンテンツに基づいてそれ自身を構成することが出来る。
【００１０】
本発明の好適な実施例は、タグをオーディオまたはビデオのテレビ放送ストリームに挿入するためのメカニズムを提供する。タグは、送信の前にまたはその時点で放送ストリームに挿入される。タグには、受信機が変換しかつそれに基づいて作動するコマンドとコントロール情報が含まれる。
【００１１】
受信機は、放送ストリームを受信し、かつ放送ストリームの範囲内でタグを検出しそして処理する。放送ストリームは、受信機に設けられた格納装置に格納される。放送ストリームからの番組マテリアルは、視聴者に対し、格納装置から再生される。
【００１２】
タグ処理ステージの間、受信機はタグに応じて適切なアクションを行う。タグは、コンテンツ・プロバイダまたはシステム管理者に、無制限の量の動作を作成する大きなフレキシビリティを提供する。
【００１３】
タグは、番組セグメントの開始および終了ポイントを示す。受信機は、視聴者が遠隔入力装置上のボタンを押していることに応じた再生の間、番組セグメントをスキップする。受信機は、また、視聴者の嗜好に従い番組セグメントを自動的にスキップする。
【００１４】
コマーシャルのような番組セグメントは、受信機によって、新規の番組セグメントへ自動的に置き換えられる。新規の番組セグメントは、その地域、時刻、番組マテリアル、視聴者の視聴習慣、視聴者の番組嗜好またはその視聴者の個人情報のような様々な基準に基づいて選択される。新規の番組セグメントは、その受信機に遠隔からまたは局所的に格納される。
【００１５】
メニュ、アイコンおよびウェブ・ページは、タグに含まれる情報に基づいて視聴者に示される。視聴者は、入力装置により、そのメニュ、アイコンまたはウェブ・ページと対話する。受信機は、そのメニュ、アイコンまたはウェブ・ページおよび視聴者の入力と関連するアクションを行う。視聴者が番組マテリアルの再生を終了することを、メニュまたはアクションが要求する場合、受信機は退出ポイントを保存し、かつ視聴者が対話セッションを完了した時の、同じ退出ポイントに視聴者を戻す。
【００１６】
メニュおよびアイコンは、リード(lead)を発生させ、セール(sale)を発生させ、および番組のレコーディングの予定を入れるために使用される。ワンタッチレコーディング・オプションが、提供される。広告されている番組が将来レコーディング可能であることを視聴者に知らせるアイコンが、視聴者に示される。視聴者は、受信機にレコーディングするための番組を予定に入れさせる入力装置上のシングル・ボタンを押す。受信機は、また、タグに含まれる情報に基づいて格納装置に放送ストリーム内の現在の番組もレコーディングするであろう。
【００１７】
タグは、番組マテリアルのインデックスを作成するために使用される。これによって、視聴者が番組内の特定のインデックスにジャンプすることが出来る。
【００１８】
本発明の他の観点および利点は、具体例により、本発明の原理を例示する添付の図面と共に以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】本発明の好適な実施例の上位概念のブロック線図を示す。
【図２】本発明によるマルチプル入力および出力モジュールを使用している本発明の好適な実施例のブロック線図を示す。
【図３】本発明によるMPEG(Moving Pictures Experts Group)データ・ストリームおよびそのビデオおよびオーディオのコンポーネントの線図を示す。
【図４】本発明によるメディア・スイッチに含まれるパーサおよび4つのダイレクト・メモリ・アクセス(DMA)入力エンジンのブロック線図を示す。
【図５】本発明によるパケット化された基本ストリーム(PES)バッファのコンポーネントの線図を示す。
【図６】メディア・スイッチ出力循環バッファにおいて解析されたコンポーネントからのPESバッファの構造の線図を示す。
【図７】本発明によるメディア・スイッチおよびそれが通信する様々なコンポーネントのブロック線図を示す。
【図８】本発明によるプログラム・ロジックの上位概念のブロック線図を示す。
【図９】本発明によるプログラム・ロジックのクラス階層のブロック線図を示す。
【図１０】本発明による本発明のクリップ・キャッシュ・コンポーネントの好適な実施例のブロック線図を示す。
【図１１】本発明による放送スタジオ・ビデオ・ミキサをエミュレートする本発明の好適な実施例のブロック線図を示す。
【図１２】本発明によるクローズド・キャプション・パーサのブロック線図を示す。
【図１３】本発明による本発明の一体化されたコンポーネントとしてVCRを利用する本発明の好適な実施例の上位概念のブロック線図を示す。
【図１４】本発明によるビデオ・ストリームにタグを挿入するための本発明の好適な実施例のブロック線図を示す。
【図１５】本発明によるビデオ・ストリームにタグを挿入するためのサーバに基づく本発明の好適な実施例のブロック線図を示す。
【図１６】本発明によるビデオ・ストリームにタグを挿入するためのユーザ・インターフェースの図を示す。
【図１７】本発明によるスクリーンの左下コーナーに表示されるアラート・アイコンを有するスクリーンの図を示す。
【図１８】本発明のビデオ・ストリームの送信経路のブロック線図を示す。
【図１９】本発明によるビデオ・ストリームのプログラム・セグメントの開始および終了のタグ付けと新規プログラム・セグメントの再生のブロック線図を示す。
【図２０】本発明によるビデオ・ストリームに挿入されたタグを解釈する本発明の好適な実施例のブロック線図を示す。
【図２１】本発明による番組レコーディング・オプションを表示しているスクリーンの図を示す。
【図２２】本発明による視聴者遠隔制御装置の図を示す。
【図２３】本発明によるリードおよびセール発生のための一連のスクリーンのブロック線図を示す。
【発明を実施するための形態】
【００２０】
本発明は、クローズド・キャプション・タグ付けシステムにおいて実施される。本発明のシステムによって、コンテンツ・プロバイダが放送媒体にわたってフレーム特定データおよびビデオおよびオーディオのテレビ・ストリームに統合されたコマンドを送信することが出来る。本発明によって、さらに受信機がダイナミックに視聴者と対話してかつビデオおよびオーディオのストリーム・コンテンツに基づいてそれ自身を構成することが出来る。
【００２１】
本発明の好適な実施例は、コンテンツ・プロバイダが、フレーム特定方法で、テレビ放送媒体で送信されるビデオおよびオーディオのストリームにタグ付けをすることが出来るタグ付けおよび解釈システムを提供する。受信機は、受信されたストリームに埋め込まれたタグを解釈し、かつそれに基づいて作動する。タグ・データによって、受信機は、メニュおよびアクション・アイコンを通してダイナミックに視聴者と対話することが出来る。タグは、また、受信機のダイナミックな構成も提供する。
【００２２】
図１を参照すると、本発明の好適な実施例は、入力セクション101、メディア・スイッチ102および出力セクション103を有する。入力セクション101は、多数の形（例えば、NTSC(National Television Standards Committee)放送またはPAL放送）で、およびDSS(Digital Satellite System)、DBS(Digital Broadcast Services)またはATSC(Advanced Television Standards Committee)のようなデジタルの形でテレビ(TV)入力ストリームを取り込む。DBS、DSS、およびATSCは、MPEG2(Moving Pictures Experts Group 2)標準およびMPEG2トランスポート (Transport)に基づく。MPEG2トランスポートは、テレビ受像機が入力ストリームを分解して多重化信号内の番組を見つけ出すことを可能にする、TVソース・トランスミッタからのデジタル・データ・ストリームをフォーマットするための標準である。入力セクション101は、MPEGストリームを生成する。MPEG2トランスポート・マルチプレックスは、マルチプルのビデオおよび音声の送りと個人的なデータを有する同じ放送チャネル内のマルチプル番組をサポートする。入力セクション101は、チャネルを特定の番組にチューニングさせて、それからの特定のMPEG番組を抽出し、かつ他のシステムにそれを送る。アナログTV信号は、別個のビデオおよびオーディオのエンコーダを使用して、類似したMPEG形式にエンコードされる。その結果、システムの残りの部分は、どのようにしてその信号が得られたかを知らない。情報は、多数の標準方法でアナログTV信号のVBI(垂直同期間隔：Vertical Blanking Interval)に変調することが出来る。例えば、FCCがCC(クローズド・キャプション：Closed Caption)およびEDS(拡張データ・サービス：Extended Data Services)のためにライン21の使用を強制するが、NABTS(北米放送テレテキスト標準：North American Broadcast Teletext Standard)を、NTSC信号のライン10から20へ情報を変調するために使用することが出来る。このような信号は、あたかもそれらがMPEG2の個人的なデータ・チャネルを介して配信されたように、入力セクションによってデコ―ドされ、かつ他のセクションにパスされる。
【００２３】
メディア・スイッチ102は、マイクロプロセッサCPU 106、ハードディスクまたは格納装置105とメモリ104との間に介在する。入力ストリームは、MPEGストリームに変換されて、メディア・スイッチ102に送信される。メディア・スイッチ102は、メモリにMPEGストリームをバッファする。ユーザがリアルタイムTVを見ている場合、それは、その時、2つの動作を行う。ストリームが、出力セクション103に送信され、かつそれは、同時に、ハードディスクまたは格納装置105に書き込まれる。
【００２４】
出力セクション103は、入MPEGストリームを取り込み、かつNTSC、PALまたは他の要求されるTV標準に従ってアナログTV信号を生成する。出力セクション103は、MPEGデコーダ、OSD(On-Screen Display)ジェネレータ、アナログTVエンコーダおよびオーディオ・ロジックを含む。OSDジェネレータによって、プログラム・ロジックは、結果的に得られるアナログTV信号の上に重ね書きされる画像を供給することが出来る。更に、出力セクションは、出力信号のVBI上へ、（NABTS、CCおよびEDS含む）多数の標準形式でプログラム・ロジックによって供給される情報を変調することが出来る。
【００２５】
図２に示されるように、本発明は、各々が異なるタイプの入力にチューニングすることが出来るマルチプル入力セクション（チューナ）201、202、203、204に適応させるように、容易に拡張することができる。マルチプル出力モジュール（デコーダ）206、207、208、209も、同様に加えられる。ピクチャ・イン・ピクチャのような特殊効果は、マルチプル・デコーダによって実施することが出来る。メディア・スイッチ205は、ユーザがある番組を見ている間、他の番組をレコーディングする。これは、あるストリームがディスク上に格納されている間に、他のストリームを、ディスクから抽出することが出来ることを意味する。
【００２６】
図３に示されるように、入MPEGストリーム301は、インタリーブ配置されたビデオ302、305、306およびオーディオ303、304、307のセグメントを有する。これらの要素は、別個のビデオ308およびオーディオ309のストリームまたはバッファを作成するために、分離され、かつ再結合されなければならない。このことは、別個のデコーダが、MPEG要素をオーディオまたはビデオのアナログ・コンポーネントへ逆変換するために使用されるので、必要となる。このような別個の配信は、デコーダを信号の正確な再生のために適切に同期させることが出来るように、時間シーケンス情報を発生させることを必要とする。
【００２７】
メディア・スイッチにより、プログラム・ロジックが（おそらくそれをストリームに直接埋め込む）各々のセグメントを適切な時間シーケンス情報に関連付けることが可能になる。これらのタイム・スタンプは、単調に増加し、かつシステムが立ち上がるごとに、ゼロから開始する。これによって、本発明は、いかなる特定のビデオ・セグメントにおいても任意の特定のスポットを見つけ出すことが出来る。例えば、システムが、キャッシュされつつある入力の連続ビデオ・ストリームに、5秒間読み込むことを必要とする場合、システムは、単に、このストリームの先に読み込みを開始し、かつ適切なタイム・スタンプを調べさえすれば良い。
【００２８】
バイナリ・サーチは、ストリームにインデックスを付ける格納されたファイル上で行うことが出来る。各ストリームは、一様なタイム・スタンピングの故に、速いバイナリ・サーチを可能にする固定サイズ・セグメントのシーケンスとして格納される。ユーザが番組を途中から開始させたい場合、システムは、それが適切なスポットを見つけ出し、最小の情報量で所望の結果を得るまで、格納されたセグメントのバイナリ・サーチを行う。これに代えて、信号がMPEGストリームとして格納される場合、所望の位置を見つけ出すために、始めからストリームを線形に解析することが必要であろう。
【００２９】
図４に示されるように、メディア・スイッチは、各DMA(ダイレクト・メモリ・アクセス：Direct Memory Access)エンジンが関連したバッファ410、411、412、413を有する、4つの入力DMAエンジン402、403、404、405を含む。概念的には、各DMAエンジンは、ポインタ406、そのポインタのためのリミット407、次のポインタ408および次のポインタのためのリミット409を有する。各DMAエンジンは、特定のタイプの情報（例えば、ビデオ402、オーディオ403および解析されたイベント405）の専用である。バッファ410、411、412、413は、循環性であり、かつ特定情報を集める。DMAエンジンは、それがリミット407に達して、次のポインタ408およびリミット409をロードするまで、関連したバッファへのポインタ406を増大させる。ポインタ406および次のポインタ408を同じ値にセットすることにより、対応するリミットの値とともに、循環バッファが作成される。次のポインタ408は、ベクトルDMAを提供するために異なるアドレスにセットすることが出来る。
【００３０】
入力ストリームは、パーサ401を通って流れる。パーサ401は、ビデオ、オーディオまたは個人的なデータ・セグメントの開始を示すMPEGにより区別されたイベントを捜すために、ストリームを解析する。例えば、パーサ401がビデオ・イベントを見つけた場合、それは、ストリームをビデオDMAエンジン402に向ける。パーサ401は、ビデオDMAエンジン402を介してビデオ・バッファ410にデータをバッファし、かつそれをダイレクト・メモリ・アクセスする。同時に、パーサ401は、イベント・バッファ413にイベントを発生させるイベントDMAエンジン405にイベントを向ける。パーサ401がオーディオ・イベントを認識する場合、それはバイト・ストリームをオーディオDMAエンジン403に向け直し、かつイベントをイベント・バッファ413に発生させる。同様に、パーサ401が個人的なデータ・イベントを認識する場合、それはバイト・ストリームを個人的なデータDMAエンジン404に向け、かつイベントをイベント・バッファ413に向ける。イベントがイベント・バッファに配置される場合、メディア・スイッチは、割り込みメカニズムを介してプログラム・ロジックに通知する。
【００３１】
図４および５を参照すると、イベント・バッファ413は、パーサ401によってイベントで満たされる。イベント・バッファ内の各イベント501は、オフセット502、イベント・タイプ503、およびタイム・スタンプ・フィールド504を有する。パーサ401は、各イベントのタイプおよびオフセットを、それがバッファの中へ配置されるように、提供する。例えば、オーディオ・イベントが生じる場合、イベント・タイプ・フィールドは、オーディオ・イベントにセットされ、かつオフセットは、オーディオ・バッファ411内の位置を示す。プログラム・ロジックは、オーディオ・バッファ411が開始し、かつストリーム内のイベントを見つけ出すためにオフセットを加える場所を知っている。アドレス・オフセット502は、プログラム・ロジックに次のイベントが生じた場所を知らせるが、それが終わった場所は知らせない。前のイベントは、セグメントの長さと同じく、現在のイベントの終了を、見つけることが出来るように、キャッシュされる。
【００３２】
図５および６に示されるように、プログラム・ロジックは、メディア・スイッチ601によって割り込まれると、イベント・バッファ602に蓄積されたイベントを読み込む。これらのイベントから、プログラム・ロジックは、解析されたMPEGセグメント615に対応するロジカル・セグメント603のシーケンスを発生させる。プログラム・ロジックは、オフセット502を各セグメントの実アドレス610に変換し、かつ最後にキャシュされたイベントを使用してイベントの長さ609をレコーディングする。ストリームがアナログ信号をエンコードすることによって生成された場合、それは、結果として生じる出力を適切に提示するためにデコーダによって使用されるPTS(Program Time Stamp)値を含まないであろう。このように、プログラム・ロジックは、発生されたタイム・スタンプ504を使用して、各セグメント用にシミュレートされたPTSを算出し、かつロジカル・セグメント・タイム・スタンプ607内にそれを配置する。デジタルTVストリームの場合、PTS値は、ストリーム内にすでにエンコードされている。プログラム・ロジックは、この情報を抽出し、かつロジカル・セグメント・タイムスタンプ607内にそれを配置する。
【００３３】
プログラム・ロジックは、それが固定されたバッファ・サイズに達するまで、ロジカル・セグメント603を集め続ける。これが生じる場合、プログラム・ロジックは、（これらのロジカル・セグメント603を順番に、さらに補助的制御情報を含んでいるPES(Packetized Elementary Stream) バッファ605と呼ばれる）新規のバッファを発生させる。各ロジカル・セグメント・ポイント604は、直接循環バッファ（例えば、ビデオ・バッファ613）にメディア・スイッチ601によって満たされる。この新規のバッファは、次に、バッファ内のストリームを、格納媒体にそれをデコ―ドするまたは書き込むためにそれを提示するような何らかの方法で、更に処理することが出来る、他のロジック・コンポーネントにパスされる。このように、MPEGデータは、プロセッサによって、メモリのある位置から他の位置にコピーされない。より小さいメモリ帯域幅およびプロセッサ帯域幅しか必要でないので、これは、より経済的な設計になる。
【００３４】
PESバッファへのMPEGストリーム・トランスフォーメーションの固有の特徴は、上記したように、ロジカル・セグメントと関連するデータがバッファそれ自体に存在する必要がないことである。PESバッファが格納に書き込まれる場合、これらのロジカル・セグメントは、それらが現れる格納媒体にロジカルな順番で書き込まれる。これは、それらが、ビデオ、オーディオまたは個人的なデータ循環バッファ内にあるにせよ、格納媒体上のストリーム・データのシングル・リニア・バッファにストリームのコンポーネントを集める効果を有する。バッファは、格納媒体からの一度の転送で格納媒体から読み出され、かつロジカル・セグメント情報は、バッファ606の実際の位置と対応するようにアップデートされる。よりハイレベルなプログラム・ロジックは、それがロジカル・セグメントしか取り扱わないので、この変換を知らない。このように、ストリーム・データは、データが、CPUによってDRAM内の位置の間で繰り返してコピーされることを必要とせず、容易に管理される。
【００３５】
メディア・スイッチの固有の観点は、効果的、および安価に高データ速度を取り扱う能力である。これは、ビデオおよびオーディオのデータを取り込む、ビデオおよびオーディオのデータを外へ送信する、ディスクにビデオおよびオーディオのデータを送信する、およびビデオおよびオーディオ・データを低コスト・プラットホーム上のディスクから抽出する機能を持つ。通常、メディア・スイッチは、マイクロプロセッサCPUによる最小の介入で多量の情報を移動するそのDMA能力を使用して、CPUとは非同期でかつ独立して動く。
【００３６】
図７に示されるように、メディア・スイッチ701の入力側は、MPEGエンコーダ703に接続されている。また、MPEGオーディオ704およびメディア・スイッチ701に送るVBI(垂直同期間隔)データ702に対する専用回路も存在する。この代わりに、デジタルTV信号が処理される場合、MPEGエンコーダ703は、MPEG2トランスポート・デマルチプレクサ（Transport Demultiplexor）に置き換えられ、かつMPEGオーディオ・エンコーダ704およびVBIデコーダ702は除去される。デマルチプレクサは、ビデオ入力メディア・スイッチ・ポートを通して抽出されたオーディオ、ビデオおよび個人的なデータチャネル・ストリームを多重送信する。
【００３７】
パーサ705は、MPEGエンコーダ703、オーディオ・エンコーダ704およびVBIデコーダ702から、入力データ・ストリームを解析し、また、デジタルTVストリームの場合、トランスポート・デマルチプレクサから、入力データ・ストリームを解析する。パーサ705は、ビデオまたはオーディオのストリーム内の重要なイベントの全部の開始、フレームの全部の開始、シーケンス・ヘッダの開始を検出する。すなわち、それは、プログラム・ロジックが、適切に再生し、かつストリーム上の特殊効果（例えば速送り、逆再生、再生、停止、高速／低速再生、インデクシング、および高速／低速逆再生）を行うために知る必要がある情報の全部を検出する。
【００３８】
パーサ705は、それがビデオまたはオーディオのセグメントを識別した場合、またはそれに個人的なデータが与えられた場合、FIFO 706にタグ707を配置する。DMA 709は、これらのタグが何時外へ取り出されるかを制御する。セグメントのタグ707およびDMAアドレスは、イベント待ち行列708に配置される。フレーム型情報は、それがビデオI-フレーム、ビデオB-フレーム、ビデオP-フレーム、ビデオPES、オーディオPES、シーケンス・ヘッダ、オーディオ・フレームまたは個人的なデータパケットの開始であるにせよ、情報が配置された関連する循環バッファ内のオフセットとともにイベント待ち行列708に配置される。CPU 713内で動作しているプログラム・ロジックは、それがDRAM 714に転送された後、循環バッファ内のイベントを検討する。
【００３９】
メディア・スイッチ701は、CPU 713およびDRAM 714に接続されているデータ・バス711を有する。アドレス・バス712は、また、メディア・スイッチ701、CPU 713、およびDRAM 714との間で共有されている。ハードディスクまたは格納装置710は、メディア・スイッチ701のポートの内の一つに接続されている。メディア・スイッチ701は、MPEGビデオ・デコーダ715および別個のオーディオ・デコーダ717にストリームを出力する。オーディオ・デコーダ717の信号は、遠隔制御上のユーザのコマンドまたは他の内部イベントに応じてシステムによって発生させるオーディオ・キューを含む。MPEGデコーダからのデコードされたオーディオ出力は、デジタル方式で別個のオーディオ信号とミキシングされる(718)。結果として生じる信号は、ビデオ、オーディオおよびスクリーン上の表示を含み、かつTV 716に送信される。
【００４０】
メディア・スイッチ701は、ディスクから他のデータのストリームを抽出し、同時に、MPEGデコーダ715にそれを送信しながら、8ビット・データを取り込み、かつディスクにそれを送信する。上記したDMAエンジンは、全て、同時に、動作することが出来る。メディア・スイッチ701は、FPGA(Field Programmable Gate Array)、ASIC、またはディスクリートなロジックを使用して、ハードウェアにより実施させることが出来る。
【００４１】
各フレームが存在するであろう所の開始を調べるために巨大なデータ・ストリームを解析する必要はなく、プログラム・ロジックは、単に、DRAM 714の循環性のイベント・バッファに注目しさえすれば良く、かつそれは、各フレームの開始が在る所およびフレーム・タイプを知らせることが出来る。このアプローチは、CPU 713のリアルタイム要求を小さく保って、大量のCPU電源を節約する。CPU 713は、時間内の全てのポイントで非常に高速である必要はない。メディア・スイッチ701は、CPU713に、作業を完了するためにできるだけ多くの時間を与える。解析メカニズム705およびイベント待ち行列708は、CPU 713から、オーディオ、ビデオ、およびバッファとストリームのリアルタイム性質の解析を切り離し、これにより、低コスト化が可能になる。これは、また、他の方法の場合よりもはるかに安いメモリで、非常に低いクロック・レートで動作するCPU環境でのバス構造の使用も可能にする。
【００４２】
CPU 713は、一つのDMA転送に待ち行列を作る能力を有し、かつその合間に次のDMA転送を準備することが出来る。これは、CPU 713に、それがDMAコントローラ709にサービスを提供することが出来る大きい時間間隔を与える。CPU 713は、大きい待ち時間を可能にするので、より大きい時間窓の範囲内でDMA割り込みに応答することが出来る。MPEGストリームは、MPEG2トランスポートから抽出される、またはアナログTV信号からエンコードされるにせよ、典型的には、VBR(可変ビット・レート：Variable Bit Rate encoding)と呼ばれる技法を使用して、エンコードされる。この技法は、これらの画像間の動きの量によって画像シーケンスを表すために必要とされるデータ量を変化させる。（バスケットボール・ゲームのような）急速な動きを有するシーケンスは、より大きい帯域幅要求でエンコードされるものの、この技法は、信号に対する要求帯域幅を大きく減らすことが出来る。例えば、ヒューズ・ディレクＴＶ（Hughes DirecTV）サテライト・システムは、どこにでも1〜10Mb/sの（フレームごとに異なって）要求帯域幅で信号をエンコードする。いかなるコンピューター・システムも、この構造無しで、このように迅速に変化しているデータ・レートについていくことは、困難であろう。
【００４３】
図８を参照すると、CPUの範囲内のプログラム・ロジックは、3つの概念上のコンポーネント、ソース801、トランスフォーム802、およびシンク803を有する。ソース801は、データのバッファを生成する。トランスフォーム802は、データのバッファを処理し、かつシンク803は、データのバッファを消費する。トランスフォームは、それが動作するデータのバッファを、割り当てかつ待ち行列に入れる働きをする。バッファは、データのソースに対し「空」であるように、割り当てられ、このことは、それらに逆に「満」を与える。バッファは、次に、待ち行列に入れられ、かつシンクに「満」として与えられ、そしてシンクは、「空」のバッファを戻すであろう。
【００４４】
ソース801は、エンコーダ（例えば、デジタル衛星受信機）から、データを受け取る。それは、ダウンストリーム・トランスフォームからこのデータに対するバッファを得て、バッファにデータをパッケージ化し、次いで、上述のようにパイプラインへバッファをプッシュする。ソース・オブジェクト801は、システムの残りの部分について何も知らない。シンク803は、アップストリーム・トランスフォームからのバッファを取り込み、デコーダにデータを送信し、次で、再使用のためのバッファをリリースして、バッファを消費する。
【００４５】
使用されるトランスフォーム802には、空間および時間の2つのタイプがある。空間トランスフォームは、例えば、パスしているバフッァされたデータで画像の畳込み、または圧縮・解凍を行うトランスフォームである。時間トランスフォームは、システムに入ってくるバッファとシステムから出て行くバッファとの間に表現できる時間関係がない場合に、使用される。このようなトランスフォームは、バッファを格納媒体上のファイル804に書き込む。バッファは、後で引き出され、パイプラインへ送信され、そしてストリームの範囲内で適切に順番付けられる。
【００４６】
図９には、プログラム・ロジックのC++クラス階層導出が、示されている。Tmk(TiVo Media Kernel)904、908、913は、オペレーティング・システム・カーネルで介在する。カーネルは、例えば、記憶割当て、同期、およびスレッディングの動作を提供する。TmkCore 904、908、913は、オブジェクトとして媒体カーネルから取り込まれるメモリを構築する。これは、オブジェクトを構成しかつ分解するために、新規および削除をオペレータに提供する。各オブジェクト（ソース901、トランスフォーム902およびシンク903）は、定義によってマルチスレッドさせ、かつ並列に実行することが出来る。
【００４７】
TmkPipelineクラス905、909、914は、システムを通るフローの制御を行う。パイプラインは、ソース901からシンク903までフローの中で次のパイプラインを指す。例えば、パイプラインを一時停止するために、「一時停止」と呼ばれているイベントが、パイプラインの第一のオブジェクトに送信される。イベントは、パイプラインの次のオブジェクト以降に中継される。このことは、非同期でパイプラインを通過している全てのデータに起こる。このように、電話のようなアプリケーションに類似して、MPEGストリームのフローの制御は、非同期であり、かつストリーム自体から分離されている。これは、同時に、（一時停止、巻戻し、早送り等を含む）前述した特徴をサポートするのに十分強力でシンプルな論理設計を可能にする。更に、この構成は、バッファされたデータを単純に破棄することが出来、かつデコーダがシングル・イベントを使用してリセットするので、ストリーム・ソース間の高速かつ効率的なスイッチングと、その後、新規のストリームからのデータがパイプラインをパスすることを可能とする。例えば、このような能力は、入力セクションによって取り込まれているチャネルを切替える場合、または入力セクションからのライブ信号と格納されたストリームとの間をスイッチングする場合、必要である。
【００４８】
ソース・オブジェクト901は、TmkSource 906であり、かつトランスフォーム・オブジェクト902は、TmkXfrm 910である。これらは、パイプライン内のクラスに対する標準動作を定義する中間的クラスである。ソース・オブジェクト901は、メディア・スイッチのような、物理的なデータ・ソースから、データを取り込み、かつそれをPESバッファに配置する。バッファを得るために、ソース・オブジェクト901は、バッファに彼のパイプラインのダウン・ストリーム・オブジェクト(allocEmptyBuf)を要求する。充分なメモリになるまで、ソース・オブジェクト901は、ブロックされる。これは、パイプラインが自己制御式であることを意味する。すなわち、これは、自動フロー制御を有する。ソース・オブジェクト901がバッファを満たすと、これは、pushFullBuf機能によりトランスフォーム902にそれを渡し戻す。
【００４９】
シンク903には、フロー制御も行われる。これは、nextFullBufを呼び出し、次の満たされたバッファの準備ができていることを、トランスフォーム902に知らせる。バッファの準備ができるまで、この動作はシンク903をブロックすることが出来る。シンク903がバッファを使い終える（すなわち、それがバッファ内のデータを消費する）と、これはreleaseEmptyBufを呼び出す。ReleaseEmptyBufは、トランスフォーム902にバッファを与える。トランスフォーム902は、次いで、再び満たすため、例えば、ソース・オブジェクト901にそのバッファを手渡すことが出来る。この方法の自動フロー制御の利便性に加えて、これは、また、トランスフォームによってバッファの固定された割当ての実施を可能にすることよって、バッファに確保されたメモリの量を制限する。これは、経済的に制限されたDRAM環境を達成する場合、重要な特徴である。
【００５０】
MediaSwitchクラス909は、TmkClipCache 912のオブジェクトのallocEmptyBuf方法を呼び出し、かつそれからPESバッファを受信する。これは、次いで、メディア・スイッチ・ハードウェア内の循環バッファに出て行き、そしてPESバッファを発生させる。MediaSwitchクラス909は、バッファを満たし, かつそれをTmkClipCache 912のオブジェクトへプッシュする。
【００５１】
TmkClipCache 912は、格納媒体上のキャッシュ・ファイル918を保持する。これは、また、このキャッシュに2つのポインタ、ソース901から来ている次のバッファが挿入される場所を示すプッシュ・ポインタ919と、使用された現在のバッファを指すカレント・ポインタ920とを保持する。
【００５２】
カレント・ポインタによって指されるバッファは、Velaデコーダ・クラス916に手渡される。Velaデコーダ・クラス916は、ハードウェア内のデコーダ921と通信する。デコーダ921は、NTSC、PALなどのアナログ・フォーマットでアナログTV信号にその後エンコードされる復号化されたTV信号を生成する。Velaデコーダ・クラス916がバッファを使い終えると、これはreleaseEmptyBufを呼び出す。
【００５３】
クラスの構成は、システムがテストおよびデバッグすることを容易にする。各レベルは、それが適切な方法で実行することを確実にするために別々に試験することが出来、かつクラスは、効果的に各オブジェクトを試験する能力を保持しながら所望の機能を達成するために徐々に集合させることが出来る。
【００５４】
制御オブジェクト917は、ユーザからのコマンドを受け取り、かつパイプラインにイベントを送信してパイプラインが行っていることを制御する。例えば、ユーザが遠隔制御を有し、かつTVを見ている場合、ユーザが一時停止を押すと、制御オブジェクト917は、（それに一時停止を知らせる）イベントをシンク903に送信する。シンク903は、新規のバッファを要求することを停止する。カレント・ポインタ920は、現在の場所に留まる。シンク903は、それが、それにプレイすることを知らせる他のイベントを受信すると、再びバッファの取り込みを開始する。システムは、完全に同期している。これは、停止したフレームから開始する。
【００５５】
遠隔制御は、早送りボタンを有することも出来る。早送りボタンが押されると、制御オブジェクト917は、トランスフォーム902に、2秒先に移動することをそれに知らせるイベントを送信する。トランスフォーム902は、2秒の時間範囲により3つのバッファ前に移動させなければならないことを見つけ出す。これは、次に、ダウンストリーム・パイプラインにリセット・イベントを出し、その結果、ハードウェア・デコーダに存在することが出来るいかなる待ち行列化されたデータまたは状態もフラッシュ(flush)される。MPEGストリームの構成がデータのマルチプル・フレームにわたる状態のメンテナンスを必要とするので、これは、クリティカル・ステップであり、そしてこの状態はポインタを再位置付けすることによって無効になるであろう。これは、次に、カレント・ポインタ920を3つのバッファ前に移動させる。シンク903がnextFullBufを呼び出す次の時、これは新規の現在のバッファを得る。同じ方法は、トランスフォーム902がカレント・ポインタ920を後方に移動させて、高速逆再生として機能する。
【００５６】
システム・クロック・リファレンスは、デコーダ内に存在する。システム・クロック・リファレンスは、高速プレイに対し速度を上げ、また低速プレイに対し速度を下げる。シンクは、単に、クロック・スピードに応じて、より速くまたはより遅くなることを、全バッファに要求する。
【００５７】
図１０に示されるように、TmkXfrmクラスから得られる2つの異なったオブジェクトが、ディスク・アクセスに対しパイプラインに配置される。一方は、TmkClipReader 1003と呼ばれ、かつ、他方はTmkClipWriter 1001と呼ばれる。バッファは、TmkClipWriter 1001に入り、そして格納媒体1004上のファイルに送られる。TmkClipReader 1003は、格納媒体1005上のファイルの中から取り込まれるバッファを要求する。TmkClipWriter 1001が、nextFullBufおよびreleaseEmptyBuf方法のみを提供するのに対し、TmkClipReader 1003は、allocEmptyBufおよびpushFullBuf方法のみを提供する。従って、TmkClipWriter 1001が、TmkClipCache 1002の出力または「プル」側と同じ機能を行うのに対し、TmkClipReader 1003は、TmkClipCache 1002の入力または「プッシュ」側と同じ機能を行う。
【００５８】
図１１には、マルチプル機能を達成する好適な実施例が、示されている。ソース1101は、TV信号入力を有する。ソースは、TmkXfrmから得られるトランスフォームであるPushSwitch 1102にデータを送信する。PushSwitch 1102は、制御オブジェクト1114によって切替えられることが出来るマルチプル出力を有する。これは、ユーザの意志で、パイプラインの一部分を、止めることが出来、かつ他の部分を、開始させることが出来ることを意味する。ユーザは、異なる格納装置に切り替えることが出来る。PushSwitch 1102は、TmkCiipWriter 1106に出力することが出来、これは、格納装置1107に進む、またはキャッシュ・トランスフォーム1103に書き込む。
【００５９】
この機器の重要な特徴は、これがプログラム・ロジックの制御の下で入力信号の部分を選択的に取り込むことが出来る容易さである。現在の時刻またはおそらく特定の時間範囲のような情報に基づいて、またはおそらく視聴者による遠隔制御のボタンプレスにより、TmkClipWriter 1106は、一部の信号をレコーディングするためにスイッチをオンにし、そして後でスイッチをオフにすることが出来る。このスイッチングは、典型的には、PushSwitch 1102のオブジェクトに「スイッチ」イベントを送信することによって行われる。
【００６０】
選択的キャプチャをトリガするための更なる方法は、VBIに変調されたまたはMPEGの個人的なデータ・チャネルに配置された情報による。VBIまたは個人的なデータ・チャネルからデコ―ドされるデータは、プログラム・ロジックにパスされる。プログラム・ロジックは、このデータを検討し、データがそれが変調されたTV信号のキャプチャを開始すべきことを示しているか否かを決定する。同様に、この情報は、また、レコーディングが、いつ終わるべきかを示すことが出来、または他のデータ項目は、キャプチャがいつ終わるべきかを示している信号に変調することが出来る。開始および終了のインジケータは、明示的に信号に変調することが出来、また、標準の仕方で信号に配置される他の情報は、この情報をエンコードするために使用することが出来る。
【００６１】
図１２には、プログラム・ロジックが、キャプチャをトリガするための特定のワードまたはフレーズを用いて、開始および終了時点を決定するために、CC(closed caption)フィールド内に含まれるワードをどのようにスキャンするかを示す具体例が、示されている。NTSCまたはPALフィールド1201のストリームが、示されている。CCバイトは、各奇数のフィールド1202から抽出され、かつワード・パーサ(Word Parser) 1204による処理のために循環バッファ1203に入力される。ワード・パーサ 1204は、それがワード境界（通常は、スペース、ピリオドまたは他の描いた文字）に遭遇するまで、文字を集める。MPEGのオーディオおよびビデオのセグメントが、一連の固定サイズのPESバッファに集められることが、上述から想起される。CCフィールド1205から抽出されたワードを保持するために、特別なセグメントが、各PESバッファに加えられる。このように、CC情報は、オーディオおよびビデオと時間同期させて保存されるので、ストリームが表示される時、視聴者に正しく提示することが出来る。これにより、格納されたストリームをプログラム・ロジックの合間にCC情報に対し処理することが可能になり、この結果、ロードは広がり、コストは削減され、かつ効率が改善される。このような場合、特別なセグメントに格納されたワードは、単に、ステート・テーブル・ロジック1206にパスされるだけである。
【００６２】
ストリームをキャプチャする間、各ワードは、テーブル1206内で調べられる。このテーブルは、そのワードを認識するためのアクションを示す。このアクションは、単に、レコグナイザ・ステート・マシン1207の状態を変化させるのみ、または、ステート・マシン1207に、「キャプチャの開始」、「キャプチャの停止」、「フレーズ・シーン」等のアクション要求を出させるのみである。実際に、認識されたワードまたはフレーズにより、パイプラインを切替えることが出来る。例えば、望ましくない言葉が番組に使用されている場合には、異なるオーディオ・トラックを重ね書きすることが出来る。
【００６３】
解析状態テーブル1206およびレコグナイザ・ステート・マシン1207は、何時でも変更または修正することが出来ることに、留意されたい。例えば、異なるテーブルおよびステート・マシンを、各入力チャネルに対し提供することが出来る。これに代えて、これらの要素は、時刻に応じ、または他のイベント故に、切替えることが出来る。
【００６４】
図１１に示されるように、シンク1105に出力を与えるPullSwitch 1104が、加えられている。シンク1105は、PullSwitch 1104からバッファを得るまたは戻すためにnextFullBufおよびreleaseEmptyBufを呼び出す。PuIlSwitch 1104は、かなりの数の入力を有することが出来る。一つの入力を、ActionClip 1113とすることが出来る。遠隔制御により、入力ソースを切替えることが出来る。制御オブジェクト1114は、PullSwitch 1104に、切り替えを知らせるイベントを送信する。これは、現在の入力ソースから制御オブジェクトが選択する如何なる入力ソースにも切替わるであろう。
【００６５】
ActionClipクラスは、予測できるおよび制御可能な方法で、おそらく遠隔制御を介して視聴者の選択の加えられた制御で、多数の異なる格納された信号のシーケンスを提供する。従って、これは、次の格納された信号に切替えるための「スイッチ」イベントを受け取るTmkXfrmオブジェクトの派生物として現れる。
【００６６】
これにより、プログラム・ロジックまたはユーザは、ビデオ出力のカスタム・シーケンスを作成することが出来る。いかなる数のビデオ・セグメントも、あたかもプログラム・ロジックまたはユーザが放送スタジオ・ビデオ・ミキサを使用しているかのように、ラインアップさせ、かつ結合させることが出来る。TmkClipReaders 1108、1109、1110は、割り当てられ、かつ、各々は、PullSwitch 1104にフック(hook)される。PullSwitch 1104は、ビデオおよびオーディオ・クリップを結合するためにTmkClipReaders 1108、1109、1110を切り替える。パイプラインが構成されるので、フロー制御は、自動的である。PushおよびPull Switchesは、放送スタジオにおけるビデオ・スイッチと同じものである。
【００６７】
本明細書で記載されている派生クラスおよび結果として生じるオブジェクトは、TVストリームの格納、検索、切替およびの視聴のための多数の異なる役立つ構成を作成する任意の方法で、結合させることが出来る。例えば、マルチプル入出力セクションが利用可能であるならば、一つの入力を、他の入力が格納されている間に、視聴し、かつ、第二の出力によって発生させたピクチャ・イン・ピクチャのウィンドウを、前に格納されたストリームをプレビュするために使用する。このような構成は、高価で、精巧なハードウェア・ソリューションに期待される機能を、単一の経済的な装置内で達成するソフトウェア・トランスフォーメーションの独特かつ新規な応用を表す。
【００６８】
図１３は、VCRバックアップを実施する上位システム概念が、示されている。出力モジュール 1303は、VCR 1307にTV信号を送信する。これにより、ユーザはビデオ・テープにテレビ番組を直接レコーディングすることが出来る。本発明によって、ユーザは、ディスクからビデオ・テープにレコーディングされる番組の待ち行列を作ることが出来、かつ番組が、VCR 1307に送信される時間の予約を入れることが出来る。番組が送信される前に、タイトルページ（EPGデータ）を、VCR1307に送信することが出来る。より長い番組は、プレイ速度の速度を上げること、またはフレームを落とすことにより、より短いビデオ・テープにフィットさせて縮小させることが出来る。
【００６９】
VCR 1307の出力は、入力モジュール 1301に戻るようルートを決めることも出来る。この構成の場合、VCRは、メディア・スイッチ1302に対するバックアップ・システムとして作動する。いかなるオーバーフロー記憶、またはより低い優先順位プログラミングも、後の検索のためにVCR 1307に送信される。
【００７０】
入力モジュール 1301は、デコードすることが出来、かつ垂直同期間隔（VBI）上のエンコードされたシステム情報の残りにパスすることが出来る。出力モジュール 1303は、システムの残りによって提供された出力VBIデータに、エンコードすることが出来る。プログラム・ロジックは、様々な種類の識別情報を出力信号にエンコードするように構成することが出来、これは、VCR 1307を使用して、テープにレコーディングされるであろう。入力へこのテープを再生することによって、プログラム・ロジックは、このテープにレコーディングされたTV信号が、適切に取り扱われているなどのこの識別情報を読み込むことが出来る。例えば、特定の番組は、それがいつレコーディングされたか、ソース・ネットワーク等について情報と共にテープにレコーディングすることが出来る。この番組が入力モジュールで再生される場合、この情報は、信号、視聴者への表現等の記憶を制御するために使用することが出来る。
【００７１】
当業者は、このようなメカニズムが、適切なテレビジョン信号とは考えられない様々なデータ項目をプログラム・ロジックに導入するために使用することが出来ることを、容易に理解するであろう。例えば、ソフトウェア・アップデートまたは他のデータを、システムにパスすることが出来る。テレビ・ストリームからこのデータを受信しているプログラム・ロジックは、データが取り扱われる方法に関する制御、例えば、ある認証シーケンスを必要すること、および／または埋め込まれた情報を解読することを、前に獲得したあるキーに従って、課すことが出来る。このような方法は、通常の放送信号に対しても機能し、プログラム・ロジックに非TV制御情報およびデータを提供する効率的な手段となる。
【００７２】
さらに、前述の説明において、特に、VCRが述べられたが、いかなるマルチメディアのレコーディング装置（例えば、デジタル・ビデオ・ディスク−ランダム・アクセス・メモリ(DVD-RAM)レコーダ）も、これに置き換えることが出来ることは、当業者には、容易に理解されるであろう。
【００７３】
本発明が、本明細書において好適な実施例に関して記載されているが、当業者は、他の応用が本発明の精神および範囲から逸脱することなく、本明細書において記載されるものと代えることが出来ることを、容易に理解するであろう。例えば、本発明は、ギャンブル・カジノ犯罪の検出に使用することが出来る。本発明の入力セクションは、カジノのビデオ監視システムに接続される。レコーディングされたビデオは、キャシュされ、かつ外部VCRに同時に出力される。ユーザは、いかなるビデオ・フィードにも切替えることが出来、かつ、外部VCRにリアルタイム入力ビデオがロードされている間、レコーディングされたビデオの特定セグメントを検討（すなわち巻戻し、プレイ、低速プレイ、早送り等）することが出来る。
【００７４】
（ビデオ・ストリーム・タグ・アーキテクチャ）
再び図１２を参照すると、タグは、テレビ・ストリーム1201で生じるアブストラクト・イベントである。これらは、アナログ信号のVBIにまたはMPEG2マルチプレックスの個人的なデータ・チャネルに埋め込むことが出来る。上述したように、タグは、クローズド・キャプション(CC)・フィールドに埋め込むことが出来、かつ循環バッファ1203または記憶割当てスキーマ内に抽出することが出来る。ワード・パーサ1204は、CCデータのその走査の間、固有のタグを識別する。タグは、標準CC制御コードと共に点在する。タグは、例えば、現在の時刻および視聴されている番組に基づいて、暗示的に発生させることも出来る。
【００７５】
本発明は、放送の前にビデオ・ストリームにタグ（TiVoタグ）を挿入するためのTVTAG(TiVo Video Tag Authoring)システムと呼ばれるメカニズムを提供する。図１４、１６および１７に示されるように、TVTAGシステムは、ビデオ出力ソース1401と、VBI(垂直同期間隔)にクローズド‐キャプショニング(closed-captioning)情報を挿入しかつ見出しをつけられたビデオ1402を出力する互換装置と、ビデオ・モニタ1405と、クローズド・キャプション情報で形成されたタグ・データ・オブジェクトをビデオ・ストリーム1406に取り入れるためのVBI挿入装置を制御するためのソフトウェア・プログラムとから成る。タグ付されたビデオは、すぐに、1404に再送信され、または、後の送信のために適切な媒体1403に格納される。
【００７６】
その最も基本的な実施の場合、TVTAGソフトウェア1406は、VBI 挿入装置1402を制御する役割を果たす。TVTAGソフトウェア1406は、標準コンピュータ・インターフェースおよびデバイス・コントロール・コード・プロトコルによってVBI挿入装置1402と通信する。ビデオ・モニタ1405を観察するオペレータが、所望のタグ挿入ポイントが近づいたと決定すると、彼は、キーを押す。これにより、TiVoタグ・データ・オブジェクトが、発生され、VBI挿入装置1402に送信され、そして送信1404または記憶1403のためにビデオ・ストリームに取り入れられる。
【００７７】
TVTAGソフトウェアは、ビデオ入力ソース1401およびビデオ出力格納装置1403を制御する追加機能を有する。オペレータは、特定のビデオ1602を選択し、かつモニタ上のグラフィック要素1702を重ね書きし、かつポインティング・デバイス（例えば、マウス）によってそれを配置するのを容易にするために、ビデオ入力ストリームを一時停止させる能力を有する。グラフィック要素1702のポジショニングは、また、オペレータ・インタフェース1601によっても行われる。オペレータは、X-ポジション1605およびYポジション1604を使用して、グラフィックのポジションを入力する。
【００７８】
グラフィック要素およびポジショニング情報は、次に、（以下で述べられる）TiVoタグ・データ・オブジェクトおよび記述されたビデオの時間-コードまたはフレームに取り入れられる。オペレータの要求が満たされると、再生およびレコーディングが再開される。タグは、その時、最高度の正確度で、挿入装置により発行される。
【００７９】
図１５に示されるように、TVTAGシステムの他の好適な実施例の場合、ソフトウェア・プログラムは、オペレータ1505に表示した標準インターネット・プロトコル・ウェブ・ページという形をとる。ウェブ・ページは、TiVoタグ・オブジェクトを、リモート・サーバ1504上のスクリプト実行によって発生させる。サーバ1504は、VBI挿入装置1502、ビデオ・ソース1501、およびレコーディング装置1503を制御する。遠隔オペレータ1505は、サーバ1504から、タグ挿入のためのリファレンスとして使用されるビデオ・ストリームの狭帯域または広帯域のバージョンを受信することが出来る。一旦必要なタグ・データ・オブジェクト情報が発生しかつ送信されると、これは、サーバ1504によって後でバッチ処理することが出来る。
【００８０】
他の本発明の好適な実施例の場合、「プラグイン形」としてソフトウェアをポピュラーな非線形ビデオ編集システムと統合し、このことにより、TiVoタグ・データ・オブジェクトをビデオ生産プロセスの間、挿入することを可能にしている。本実施例の場合、この非線形編集システムは、ソースおよび記憶システム・コントローラとして機能し、かつTiVoタグ・データ・オブジェクトのフレーム-正確配置を可能にするグラフィック配置機能も提供する。
【００８１】
図１８に示されるように、タグは、ビデオ・ソース1801において、またはそれより前で、ビデオ・ストリームに統合される。ビデオ・ストリームは、次いで、サテライト1802、ケーブルまたは他の地上の送信方法1803を介して送信される。受信機1804は、ビデオ・ストリームを受信し、タグを認識し、かつタグに応じて適切なアクションを行う。視聴者は、モニタまたはテレビジョン受信機1805を介して結果として得られたビデオ・ストリームを見る。
【００８２】
本発明は、ビデオ・ストリーム内のタグに基づいて様々なアクションを取り込むことをサポートするアーキテクチャを提供する。TiVoタグが提供するフレキシビリティのいくつかの具体例は、以下の通りである。
【００８３】
・ いつか将来の時点でこの番組をレコーディングするためのオプションが視聴者に与えられるであろう、ネットワーク・プロモーションが、視聴されている時を知ることは、望ましい。この番組が放送される、日、時間およびチャネルを示すプロモーションに、TiVoタグが、加えられる。実際のプロモーションは、下記に詳述されている。
【００８４】
・ 一般的な問題は、野球試合の時間超過問題である。VCRおよびDVR(デジタル・ビデオ・レコーダ)は、ゲームが予告されたタイム・スロットを超えてしまうと、野球の試合の終り部分をカットしてしまう。TiVoタグが、レコーディングを続ける必要があることを示すために、ビデオ・ストリームに送信される。TiVoタグは、また、ゲームが終わったので、システムにレコーディングを止めることを知らせるためにも、送信される。
【００８５】
・ ボクシングの試合は、しばしば急に終わり、VCRおよびDVRに確保された時間の残りの間を埋める番組をレコーディングさせる。TiVoタグは、番組が終わったことを示すために送信され、このレコーディングを止めることを、システムに知らせる。
【００８６】
・  図１９に示されるように、ローカルにまたは遠隔操作で格納された広告が、全国広告または領域外の広告の代わりに示すことが出来るように、広告には、タグが付けられる。ビデオ・ストリーム1901の範囲で、重ね書きされた番組セグメント1902（コマーシャルまたは他の番組セグメント）は、上述されたTVTAGシステムのような技法を使用して、タグ付けされる。TiVoタグは、本発明1905に旧番組セグメント1902の開始および終了ポイントを知らせる。本発明1905に、旧番組セグメント1902の持続時間を知らせるシングル・タグ1903を、加えることが出来る。また、タグが、旧番組セグメントの開始1903および終了1904でセグメント1902の開始および終了を示すために加えられる。TiVoタグが検出されると、本発明1905は、新規の番組セグメント1906を見つけ出し、かつ旧番組セグメント1902の代わりにそれを単に再生し、再生が完了すると、オリジナルの番組1901に戻る。視聴者1907は、トランジションに決して気がつかない。
【００８７】
ここで、3つのオプションがある。
1) システム1905は、オリジナルの番組をキャシュし続けることが出来るので、視聴者1907が番組1901を巻き戻し、かつ再びそれを再生するならば、彼は上書きされたセグメントを見る。
2) 旧番組セグメント1902は、キャッシュの場合も置き換えられるので、視聴者はセグメントが上書きされていることに決して気づかない。
3) システムは、オリジナルのセグメント1902をキャシュし、かつ再生時にタグを再解釈する。しかしながら、インテリジェント・タグを先取りしない場合には、これは、視聴者が、システムが上書きされたセグメントの第一のタグを認識するように、十分な時間をバックアップする場合のみ、正しく働く。
【００８８】
この問題は、開始1903および終了1904のタグに、旧番組セグメントの長さを加えることによって解決される。他のアプローチは、開始タグ1903がシステムに対して終了タグ1904を識別するように、タグを突き合わせることである。システム1905は、それが、速送り、または巻き戻す時、タグのうちの一つを越えて他のタグを調べるべきであることを知っている。タグ1903、1904のペアは、一意の名前を含む。システム1905は、次に、突き合わされたタグの先または後を検索し、かつ旧番組を置き換えることが出来る。システムが先取りを行うことが出来るフレームの時間または長さの量には制限がある。これは、タグに含めることが出来、または標準化することが出来る。タグ内に制限を含むことは、最もフレキシブルなアプローチである。
【００８９】
再生される番組セグメントは、例えば、地域、時刻、番組マテリアルに基づいて、または（出願人によって所有される出願番号第09/422121号に記載される）嗜好エンジンに基づいて選択される。嗜好エンジンを使用して、局所的記憶またはサーバ記憶1906からの適切な番組セグメントが、視聴者のプロファイルによって選択される。プロファイルは、視聴者の視聴習慣、番組嗜好、およびその他個人情報を含む。格納された番組セグメント1906は、嗜好ベクトルに最もマッチするように検索されるそれらの特徴を記載している番組オブジェクトも有する。
【００９０】
明らかに、広告見疲れを避けるためにコマーシャル間の回転(rotation)メカニズムが、なければならない。嗜好ベクトルは、現在見られている番組のための番組データに対して誤りベクトルを発生させ、かつこの誤りベクトルを使用して、更にバイアスすることが出来、ディスク1906上のコマーシャルの在庫に対するマッチにバイアスを加える。例えば、視聴者が昼メロ(soap opera)を見ていて、かつこの視聴者の嗜好ベクトルがスポーツ・ショーに向いているならば、本発明は、おしめコマーシャルよりビール・コマーシャルを選択するであろう。
【００９１】
タグは、また、条件つきの選択をするためにも使用することが出来る。タグは、自身の嗜好重み付けを含む。この場合、この嗜好重み付けは、嗜好ベクトルと比較され、高い相関は、本発明にそのコマーシャルのみを残させる。低い相関は、上記の本方法を呼び出す。
【００９２】
注意：これらの場合の全てにおいて、システム1905は、意思決定をするための充分な時間があった。パイプラインの構成は、通常ビデオの1/2秒をバッファし、ストリームを変化させるために入力と出力の間に多くの時間を与える。より多くの時間が必要であるならば、バッファをパイプラインに加える。ディスクを離れて再生するならば、システムはストリームの先を読み取ることよって同じ時間遅延を作成する。
【００９３】
コマーシャルが、また本出願人が所有する名称「アナログ・ビデオ・タッギングおよびエンコーディング・システム(Analog Video Tagging and Encoding System)」の米国特許出願（第09/187967号）に記載されている方法を使用して検出出来ることにも留意されたい。上記した置換と同じタイプは、上述した適用を記載されているタグが使用される場合、使用することが出来る。
【００９４】
・ 図１９および２２に示されるように、タグは、コマーシャルの「飛ばし」の取込みを可能にする。タグは、コマーシャルの開始1903および終了1904のポイントをマークするために使用することが出来るので、これらは、スキップして先取りすることが出来る。視聴者は、遠隔制御2201上の飛越しボタン2205を押すだけである。システムは、終了タグを検索し、および、タグと関連するフレームに続くフレームにおいて再生を再開する。スキップされるコマーシャルの数は、バッファされるビデオ・ストリームの量に依存する。
【００９５】
視聴者の予め設定された嗜好に従い、システム1905それ自身は、メモリ1906内に格納されたライブまたは予めレコーディングしてある番組上のコマーシャルをスキップすることが出来る。ライブのビデオ上のコマーシャルをスキップすることは、上述したようにパイプライン内のバッファリングのより大きい量を必要とする。システムがレコーディングされた番組上のコマーシャルをスキップすることができることは、視聴者にいかなるコマーシャルの割込みもない番組の連続表示を提供する。
【００９６】
・ タグは、インデックスとして作動するために番組マテリアルに加えられる。例えば、視聴者は、遠隔制御2201上のジャンプ・ボタン2205を押すことによって番組の範囲内で各インデックスにジャンプすることが出来る。
【００９７】
・ タグは、また、システム機能のために使用される。上述したように、システムは局所的にそれ自身の使用のための番組マテリアルを格納する。システム1905は、何らかの方法で、番組マテリアルを受信しなければならない。これは、オフタイムで特定のチャネルへのチューニングによって行われる。システム1905は、ストリーム1901内に、それにレコーディングを開始することを知らせるタグを検索する。レコーディングは、コンテンツおよびおそらく嗜好ベクトルを識別するタグ1903、1904によって区切られた多数の番組セグメントから成る。ストリームの終わりのタグは、レコーディングを停止することをシステム1905に知らせる。番組セグメントは、局所的に1906に格納され、かつ、上述のように後の使用のためにインデックスが付される。
【００９８】
本発明は、以下の設計点を取り入れる。
・ 設計は、メカニズムとポリシの明白な分離を提供する。
・ タグは、内部的には、ポリシ・モジュールをトリガするアブストラクト・イベントと見られる。受信されたタグ情報をこれらの内部アブストラクトにマッピングすることは、ソース・パイプライン・オブジェクトの役割である。
・ アブストラクト・タグは、それらがあたかも他のセグメントであるかのように、PesBufストリームに格納される。これは、任意のサイズ設定をされたタグを正確なタイミング情報で処理することを可能にする。タグをレコーディングされた番組の一部として残すことが出来るので、いつ番組が見られても、正しいアクションが取り込まれる。
・ タグは、現在の番組、将来の番組等について情報をアップデートすることが出来る。この情報は、レコーディングされた番組に対して保存される。
・ タグは、それらがシステムを通過するように、ログすることが出来る。この情報をアップロードすることも可能である。タグに関連する全ての情報を保存することは必要ない。
・ タグは、別個の時刻表に基づいて発生することが出来る。例えば、タグを発生させるためにネットワーク局のログを使用することは、見られている時間およびネットワークに基づく。時間に基づくタグは、レコーディングされたストリーム内に保存される。
【００９９】
（時間に基づくタグ）
図２０に示されるように、時間に基づくタグは、時間に基づいたタグ認識器(Tag Recognizer) 2012によって取り扱われる。このオブジェクト2012は、チャネル変更イベントを聞き、かつ公知のネットワークが切替えられると、このネットワークに対する「時間ログ」を読み出そうとする。一つが存在するならば、オブジェクト2012は、現在の時刻に基づいてタグ・スケジュールを構築する。各タグごとに時間が生じるたびに、オブジェクト2012は、挿入されるタグを示しているソース・オブジェクト2001に、イベントを送信する。ソース・オブジェクト2001は、作成中の現在のPesBuf内に次の利用可能なポジションにタグを挿入する。次の「利用可能な」ポジションは、フレーム境界または他の条件に基づいて決定することが出来る。
【０１００】
（ソース・オブジェクトの役割）
ソース・オブジェクト2001は、それが生成するPesBufストリームに、タグを挿入する役割を果たす。これは、アナログ入力およびデジタルTVソースのための別個のソース・オブジェクトがあると仮定している。
【０１０１】
アナログ・ストリーム内に、タグが現れる可能性には多数の異なる場合がある：
- EDSフィールドの範囲内。
- CCフィールドの暗黙の使用。
- おそらくATVEFスペックを使用したVBIのへの変調。
- 時間に基づく。
【０１０２】
デジタルTVストリーム内またはアナログからMPEGへの変換の後：
- TiVo Tagging Technologyを使用したバンド内。
- MPEG2の個人的なデータ・チャネル。
- MPEG2のストリーム特徴（フレーム境界等）。
- 時間に基づくタグ。
【０１０３】
ソース・オブジェクト2001には、タグを解析する機能も無いし、いかなるアクションも取り込む機能も無い。その代わりに、ソース・オブジェクト2001は、単独でストリーム内にポテンシャル・タグを認識し、かつそれらをPesBufストリームに加える機能を持つべきである。
【０１０４】
（タグ認識およびアクション）
概念的には、全てのタグは、2つの広いグループに分解することが出来る。番組をレコーディングするような、受信に応じてアクションを必要とするもの、および、番組提供、すなわち、番組が見られるとき、に応じてアクションを必要とするものである。
【０１０５】
（受信タグ処理）
受信に応じてアクションを必要とするタグは、次のように取り扱われる：TmkPushSwitchクラス2002の新規の受信タグ・メカニズム(Reception Tag Mechanism)サブクラス2003が、作成される。入力ストリームが、ソース・オブジェクト2001と番組キャッシュ・トランスフォーム2013との間でこのクラス2003を通過するので、クラス2003は、受信タグを認識しかつ適切なアクションを取り込む。受信タグは、一般に一度取り扱われ、次は使用禁止にされる。
【０１０６】
（番組提供タグの処理）
番組提供に応じてアクションを必要とするタグは、次のように取り扱われる：TmkPullSwitchクラス2008の新規の提示タグ・メカニズム(Presentation Tag Mechanism)サブクラス2007が、作成される。出力ストリームが番組キャッシュ・トランスフォーム2013およびシンク・オブジェクト2011との間でこのクラス2007を通過すると、クラス2007は番組提供タグを認識し、かつ適切なアクションを取る。
【０１０７】
（タグ・ポリシの処理）
現在のチャネルを示すTagReceptionPolicyオブジェクト2009が存在する場合には、タグ受信処理のみが許可される。ソース・チャネルのためのTagPresentationPolicyオブジェクト2010が存在する場合には、番組提供タグの処理のみが許可される。TagPolicyオブジェクトは、どのタグが、認識されるべきか、かつ何のアクションが可能であるかを記述する。入力チャネルが変更されると、受信タグ・オブジェクトが、通知され、かつ、それは、（もしあれば）そのチャネルのためのTagReceptionPolicyオブジェクト2009をフェッチし、定義されたポリシに従う。出力チャネルが変更されると、番組提供タグ・オブジェクトが、通知され、かつ、それは（もしあれば）そのチャネルのためのTagPresentationPolicyオブジェクト2010をフェッチ(fetch)し、定義されたポリシに従う。
【０１０８】
（タグ・ロギング）
タグの受信は、データ・ベースにログすることが出来る。TagReceptionPolicyオブジェクト2009が存在する場合のみ、これは、生じ、かつタグ・ロギング属性が、セットされる。例えば、ロギング属性は、セットされるかもしれないが、受信アクションは、行うことが出来ない。これは、入力ストリーム内で受動ロギングのアクティビティを可能にする。
【０１０９】
（パイプラインの処理変更）
現在の上映について情報のアップデートをサポートすることは、重要である。以下の方策が、提案される：
- 入力ソースが変更される、または新規の上映が開始されるときはいつでも、開示オブジェクトのコピーが作られ、そしてパイプラインでの全ての更なる動作は、このコピーとは別に働く。
- アップデートされるタグは、受信タグである; ポリシによって許可されるならば、コピーされた上映オブジェクトは、アップデートされる。
- 現在の上映がレコーディングされる場合には、上映オブジェクトのコピーもセーブされる。その結果、セーブされた番組は、その番組にセーブされた正しい情報を有する。
- オリジナルの上映オブジェクトは、このプロセスによって変更されない。
- レコーダは、上映オブジェクトへの変更を認識していなければならないので、レコーダが、例えば、野球の試合の終了前にカットしてしまうことは無い。
【０１１０】
（タグ解釈対タグ・ステート・マシン）
一旦、TagPolicyオブジェクトが有効なタグを識別するために使用されると、標準化されたアブストラクト・タグがタグ・インタプリータ(Tag Interpreter) 2005によって解釈され、かつ動作のタグがTiVo タグ・ステート・マシン(Tag State Machine) 2006によって実行されるという点で、タグは極めてフレキシブルである。解釈されたタグは、定義済みのアクションの組をトリガする。アクションの各組は、システムに前もってプログラムされている。
【０１１１】
ステート・マシン・タグは、実行可能コードを伝えないが、プログラム・ステップを実行する演算タグである。これは、タグ発信者が、これらのタグを結合させて、TiVoシステム上のカスタマイズされたアクションを行うことを可能にする。ステート・マシン・タグは、解釈されたタグと同じ結果を達成するために使用することが出来るが、実行されたアクションの組をダイナミックに変化させるフレキシビリティを有する。
【０１１２】
（アブストラクト解釈されたタグ）
利用可能なアブストラクトタグの組は、タグ／アクションテーブルと呼ばれるテーブル内で規定される。このテーブルは、典型的には、データベースオブジェクト内に格納される。小量のアブストラクトアクションが、規定されている。これらのアクションは、3つの一般領域に分けられる。
- 視聴者管理下のアクション（対話を含むことが出来る）。
- ストリーム（チャネル、時間、持続時間等）についてのメタ情報。
- TiVo制御タグ。
【０１１３】
ディスク上のデータベースに変更を生じさせ、または暗示的なレコーディングを生じさせるタグは、確認されなければならない。これは、制御タグにより行われる。
【０１１４】
（視聴者管理下のタグ）
- メニュ
このタグは、視聴者に選択肢が提示されることになっていることを示す。タグと関連するデータは、選択肢が何であるかおよび提示スタイルのような、他の興味のあるデータを示す。メニュは、関連した不活動タイムアウトを有する。
【０１１５】
メニュ・タグの考え方は、視聴者に選択肢を提供するということである。視聴者が存在しないまたは興味を持たないならば、メニュはすぐに消えるべきである。メニュ・ポリシにより、現在の番組を一時停止させまたはそれを解除させることが出来る。メニュの提示は、リストである必要はない。
-代替番組プッシュ条件（Push Alternate Program Conditional）
このタグは、ある代替番組がある条件を満たすならば、再生されるべきであることを示す。この条件は、ポリシ・モジュールによって分析される。条件が、常に満たされているとすることも出来る。
-代替番組ポップ条件（Pop Alternate Program Conditional）
このタグは、前の番組に戻る。番組が終わると、代替番組のスタックが自動的にポップされる。チャネルが変えられる、または視聴者がTiVo Centralメニュ領域に入ると、全ての代替番組が、ポップされる。代替番組は、視聴されているストリームに任意のシーケンスを挿入する方法である。条件データは、トップ・レベルでは評価されない。これに代えて、ポリシ・モジュールが、選択のためにこのデータを検討しなければならない。例えば、これは、「テレスコーピング」広告を作成するために使用することが出来る。
- インジケータ表示条件（Show Indicator Conditional）
このタグにより、インジケータがスクリーンに描かれる。インジケータには名前がつけられ、そしてアクティブ・インジケータの組は、いつでも問い合わせることが出来る。タグまたはタグ・ポリシは、インジケータが生成された時のタイムアウト値を示すことが出来る。
- インジケータ消去条件（Clear Indicator Conditional）
このタグにより、アクティブなインジケータが消去される。チャネルが変更され、または視聴者がTiVo Centralメニュ領域に入ると、全てのインジケータは、消去される。
【０１１６】
インジケータは、番組フローに割り込みを行わずに、視聴者に選択肢を提供する別の方法である。これらのインジケータは、また、興味を引くかもしれないストリーム内の条件を示すためにも使用することも出来る。例えば、タグ・データの一部として、この番組を選択することを可能にする番組オブジェクトIDを提供することによって、「Active Promo」が、作成される。視聴者が、インジケータが現れている間に、特定のキーを打つと、この番組のレコーディングが、予約される。
【０１１７】
（メタ-情報タグ）
- 現在の上映情報
このタグは、現在の上映についての情報のための一般的なバケットである。各タグは、典型的に1つの情報（例えば、開始時刻、終了時間、持続時間等）を伝える。このタグは、イベントのレコーディングを「長くする」ために使用することが出来る。
- 将来の上映情報
このタグは、上記のものに類似しているが、将来の上映についての情報を含む。興味を引く2つの環境がある：
・この情報は、データベース内にすでに常駐する上映を参照する。データベース・オブジェクトは、適切に、アップデートされる。
・この情報は、存在しない上映を参照する。新規の上映オブジェクトは、作成され、かつタグから初期化される。
【０１１８】
（TiVo制御タグ）
- 修正許可
このタグは、一般に、今月のセキュリティ・キーによって暗号化される。認可の寿命は、ポリシーによって、おそらく１、２時間にセットされる。従って、ローカルTiVoシステム状態に対する修正が許可される場合、タグは絶えず再放送されることが必要となる。
このタグの観念は、EDSのような本質的に不安定なタグ・メカニズムを使用して、不当な（または偶然の）攻撃を避けることである。ネットワークがEDS情報を提供すると、我々は最初に彼らのタグが正確であること、およびタグ配送システムへの攻撃がありそうもないことの保証を得たい。そして、我々は、そのネットワークに認可タグを周期的に与える認可システムを提供するそのネットワークを使用するであろう。未許可のタグは、ソース・オブジェクトによってPESストリームに決して挿入されるべきでない。
- 現在のレコーディング条件
このタグは、現在の番組のディスクへのセーブをこのポイントから開始させる。現在の番組が終わると、レコーディングは終わるであろう。
- 現在のレコーディング停止条件
このタグは、現在の番組のレコーディングを停止する。
- 将来のレコーディング条件
上映オブジェクトIDが、提供される（おそらく、将来の放映(Future Showing) タグ内に送信される）。番組は、明示的な視聴者の選択より低いバックグラウンド優先順位で、レコーディングする予定に入れられる。
- 将来のレコーディングキャンセル条件
上映オブジェクトIDが、提供される。レコーディングがそのオブジェクト用の前のタグによって予約が入れられた場合、レコーディングはキャンセルされる。
これらのタグおよび将来の放映タグは、暗号化された、安全なフォーマットで挿入することが出来る。これらが適切に有効化されると、ソース・オブジェクトは、PESストリーム内にこれらのタグを挿入するのみである。
これらのタグの目的の一つは、TiVo在庫（例えば、ループセット(loopset)、広告、割込み、など）のレコーディングを自動的にトリガーすることである。後でのダウンロードにより、この在庫は「インストールされ」、かつ利用可能となるであろう。
- ファイルのセーブ条件
このタグは、ディスクに格納されるストリームを通してデータをパスするために使用される。例えば、放送ウェブページは、このメカニズムによりパスされるであろう。
- オブジェクトのセーブ条件
このタグは、ディスクに格納されるストリームを通してオブジェクトをパスするために使用される。オブジェクトを格納することは、ルールをアップデートしている標準オブジェクトに従う。
【０１１９】
以下は、ストリームのCC(Closed Captioning)部分に挿入された上映タグを使用している実施の具体例である。信号が送信され、デジタル化され、そしてデコードされる時、それが保存されるので、それがユーザ受信機に達する前に、ストリームのCC部は選ばれた。残りのVBI信号については、保証はない。サテライト・システムの多くは、MPEG-2にエンコードする時、クローズド・キャプショニング(closed captioning)以外のすべてを取り除く。
【０１２０】
CCストリームには、厳しい帯域幅制限がある。CCストリームに対するデータレートは、ビデオ・フレーム毎の2つの7-ビット・バイトである。さらに、制御コードとの衝突を避けるために、データは0x20で開始する必要がある。したがって、それは、効果的に約6.5ビット・バイトに制限される（簡潔さのための6-ビット・バイトに、切り捨てる）。ゆえに、帯域幅は、およそ360ビット/秒である。チャネルが実CCデータと共有される場合、このレートは、更に減少する。更に、特別な制御コードが、CC-可能にされたテレビがCCテキストとしてTiVoタグを表示しようとするのを防止するために、送信される必要がある。
【０１２１】
（基本的なタグ・レイアウト）
このセクションは、タグがクローズド・キャプショニング・ストリーム内にどのように配置されるかについて記述する。これは、決定的なものではないが、それは、一般的にクローズド・キャプショニング仕様を良く知っていることを前提とする。
【０１２２】
（タグを見えなくすること）
ストリームに配置されるTiVo Tagは、クローズド・キャプショニングが可能にされたテレビ上の表示に影響を及ぼすべきでない。これは、最初に「再開キャプション・ローディング」コマンドを（失敗許容のため２度）送信し、タグを記載する文字列が続き、「イレーズ・ノンディスプレイド・メモリ」コマンドが（失敗許容のため２度）続くことによって達成される。これが行うことは、テキストをオフスクリーン・メモリへロードし、次に、メモリをクリアすることである。可能にされるクローズド・キャプショニングを有する正規のTVは、（EIA-701の標準に従って）このテキストを表示しない。
【０１２３】
クローズド・キャプショニング・デコーダが「ロール‐アップ」または「スクロール」モード内にない限り、これは働く。このモードの場合、「再開キャプション・ローディング」コマンドによって、テキストが消去されるであろう。この問題を解決するために、それらが第二のクローズド・キャプショニング・チャネルに送信される場合であっても、TiVo Tagsは受け取られ、認識されるであろう。このように、クローズド・キャプショニング・チャネル1がテキストをスクロールする準備である場合であっても、我々はクローズド・キャプショニング・チャネル2を通してなおタグを送信することが出来る。
【０１２４】
（タグ・エンコーディング）
TiVo Tagによって送信されるテキストは、英字「Tt」と、それに続くタグの長さ示すシングル文字と、それに続くタグ・コンテンツと、それに続くタグ・コンテンツのためのCRCとから成る。英字「Tt」は、通常のCCデータ内では遭遇しそうにないほど十分に独特である。さらに、通常のCCデータは、常に、テキストがスクリーン上のどこに表示されるかを示す位置制御コードによって開始される。我々がオンスクリーンを表示していないので、この位置決めデータのためのニーズがない。ゆえに、「再開キャプション・ローディング」制御コードの直後に「Tt」に遭遇する可能性は極めてまれで、我々は、この組合せがTiVoタグであることをほとんど保証することが出来る（しかし実施は、これが真であることには基づかないであろう）。
【０１２５】
タグの長さを示しているシングル文字は、タグ長さを0x20に加えることによって計算される。長さが3文字である場合、例えば、使用される長さ文字は、0x23（'#'）である。実施を95の長さに制限せずに（文字の組は96文字しかないので）、最大長は、63として定義される。より長いタグが必要な場合、その長さ文字のための他の32の可能な値に関する解釈を加えることが出来る。
【０１２６】
タグそれ自身のための可能な値は、下記のタグ・タイプの項で定義される。
CRCは、16ビットCRC-CCITT（すなわち、多項式= x^16 + x^12 + x^5 + 1）である。これは、3つの別個の文字としてストリーム内に配置される。第一の文字は、0x20をCRCの最上位の6ビットに加えることによって計算される。次の文字は、0x20をCRCの次の6ビットに加えることによって計算される。最後の文字は、0x20をCRCの最後の4ビットに加えることによって計算される。
【０１２７】
（タグ・タイプ）
この項は、TiVo Tagの具体例を詳述する。すべてのタグ・シーケンスがタグ・タイプを示す少なくとも一つのバイトから始まることに留意されたし。
【０１２８】
（iPreview タグ）
図１７を参照すると、iPreviewタグは、4つの情報を含む。第一のタグは、予告されている番組の32ビット・プログラムIDである。第二のタグは、プロモーションがどれくらい長く続くかと言う情報を含む。第三部分は、スクリーン1701上のどこにiPreviewアラート1702を配置するかと言う情報、および、最後の部分は、どのサイズのiPreviewアラートを使用するかと言う情報を含む。
【０１２９】
iPreviewアラートのためのスクリーン位置は、幅および高さでの画面解像度の分数である。X座標は幅を分けるために9ビットを使用し、そして、最終的な座標は、x =(x_resolution/511)* xval.として与えられる。（CCIR656解像度を使用する）720×486スクリーン上で、xvalが10として与えられる場合、X座標は14となるであろう。Y座標は、高さを分けるために8ビットを使用し、最終的な座標は、Y =(y_resolution/255)* yval.として与えられる。X,Y座標は、バグ・グラフィックの左上コーナーの位置を示す。
【０１３０】
XおよびYの値が最大可能な値（すなわちx=511、y=255）に設定される場合、これは作者がシステムにそのポジションを決定するジョブを与えていることを示す。システムは、既定のデフォルトの位置にバグを配置する。最大値をデフォルトのポジションを示すために使用する理由は、それが全てのバグ・グラフィックをオフスクリーンに配置するであろうから、「実」ポジションがこれらの値にセットされるであろうことが、決して期待されないからである。
【０１３１】
サイズ・フィールドは、任意のアラート・グラフィックがどのようなサイズかを示す4ビット数である。このフィールドの16の可能な値は、セットトップ・ボックスが提供する用意が出来ている定義済みのグラフィック・サイズと一致する。
【０１３２】
タイムアウトは、プロモーション内に残されるフレームの数を示している10ビットの数である。これは、このタグに34秒の寿命制限を課す。プロモーションがより長い場合、タグは繰り返す必要がある。エラーに対する露光を制限するために、タイムアウトは、10ビットに「人為的に、制限されている」ことに留意されたい。これは、作者がタグ内に出来そこないのタイムアウトを設定すると、それが、続くコマーシャルに及ぼす効果を制限することである。
【０１３３】
バージョンは、プロモーションそれ自身を識別するために使用されるバージョン・ナンバである。この数をビット-パッキングする（したがって、それを6ビットに制限する）代わりに、全部のクローズド・キャプショニング文字の組を使う（これは、64(2^6)の代わりに96の可能性になる）。バージョン・ナンバは、したがって、0-95の範囲内にあることが必要である。
【０１３４】
予備文字は、現在使っていない。制御コードが、最後には2-バイト境界に適切に配置されるために、この文字は存在することを必要とする。
iPreviewタグの第一の文字は、常に「i」である。
【０１３５】
データフィールドの全ては、ビット境界に一緒にパックされ、次いで、（0x20を加えることによって）文字に変換される6ビット値に分解され、そして送信される。フィールドの順番は、次の通りである：
・32ビット：プログラムID
・9ビット：X位置
・8ビット：Y位置
・4ビット：グラフィック・サイズ
・10ビット：タイムアウト
・1文字：バージョン
・1文字：予備
【０１３６】
データフィールドは、送信するための11の文字 + バージョンのための1つの文字と予備の1つの文字とを必要とする全66のビットである。各文字の正確なコンテンツは、以下の通りである：
1) 0x20 + ID[31：26 ]
2) 0x20 + ID[25：20 ]
3) 0x20+ID[19：14 ]
4) 0x20 + ID[13：8 ]
5) 0x20 + ID[7：2 ]
6) 0x20 + ID[1：0 ] X[8：5 ]
7) 0x20 + X[4：0 ] Y[7]
8) 0x20 + Y[6：1 ]
9) 0x20 + Y[0] size[3：0 ]
10) 0x20 + Y[0] size[3：0 ] timeout[9]
11) 0x20 + timeout[8：3 ]
12) 0x20 + timeout[2：0 ]
13) 0x20+version
14) 予備
【０１３７】
第一の文字「i」を含むと、iPreviewタグの長さは、14文字+ 3 CRC文字である。タグ・ヘッダ（3文字）によって、これは、10フレームで送信出来る20文字の全長を作る。二度「再開・キャプション・ローディング」を送信しかつ二度「イレーズ・ノンディスプレード・メモリ」を送信するために4つの他のフレームを加えることは、iPreviewタグが、放送に4フレーム（0.47秒）必要とすることを意味する。
【０１３８】
完全なPreviewタグは、以下のように構成される：
Resume caption loading Resume caption loading T t 1 (0x20+17 = 0x31 = 01 10001="1") I <13 character iPreview tag> 3 character CRC Erase nondisplayed memory Erase nondisplayed memory
【０１３９】
（パリティ・デバッグ文字）
現在、パリティ・ビットはパリティ・ビットとして使用されている。しかしながら、CRCがすでに含まれているので、パリティ・ビットのエラー・チェック能力に対するニーズはない。これに、あるステップを更に取り込むと、パリティ・ビットを巧妙な方法で使用することが出来る。クローズド・キャプショニング受信機は、不正確なパリティ・ビットを有するいかなる文字も無視すべきであるから、制限された帯域幅CCチャネルは、間違ったパリティを意図的に使用することによって、より上手く使用できる。これにより、再開・キャプション・ローディングおよびイレーズ・ノンディスプレイ・メモリの文字の消去が可能となり、さらにTiVoタグを既存のCCデータの間に「点在させる」ことをより容易にする。
【０１４０】
（iPreview視聴者対話）
図１７、２０、２１および２２に示されるように、iPreviewタグは、タグ・インタープリータ(Tag Interpreter) 2005に、iPreviewアラート1702をスクリーン1701に表示させる。iPreviewアラート1702は、視聴者に、アクティブなプロモーションが利用可能であることを知らせることが出来、かつ視聴者は、TiVoシステムに、将来の上映をレコーディングすることを知らせることが出来る。視聴者は、遠隔制御2201上の選択ボタン2204を押すことによってiPreviewアラート1702に応答する。
【０１４１】
タグ・インタープリータ2005は、ユーザ入力を待つ。視聴者が予め設定した嗜好に応じて、選択ボタン2204を押すことにより、タグ・インタープリータ2005が自動的に番組のレコーディングを予約する（これは、ワンタッチのレコーディングとなる）、または、視聴者に、レコード・オプション・スクリーン2101が提示される。視聴者は、レコード・メニュ項目2102を強調表示し、そして選択ボタン2204を押してこの番組のレコーディングを予約する。
【０１４２】
タグそれ自身は、タグ・インタープリータ2005によって解釈された。タグ・インタープリータ2005は、遠隔制御2201によるいかなる視聴者の入力も待つ。一旦、視聴者が選択ボタン2204を押すと、タグ・インタープリータ2005、iPreviewタグ内に32ビット・プログラムIDによって記載されている番組のレコーディングの予約を入れることをTiVoシステムに知らせる。
【０１４３】
図２０、２２および２３に示されるように、iPreviewタグは、他の目的のためにも使用される。各使用は、番組マテリアルのコンテクストおよび表示されたスクリーン・アイコンによって指示される。明らかに、システムは番組マテリアルを解釈することはできないが、プログラムIDと組み合わされたアイコンは、タグ・インタープリータ2005にどんなアクションを取るべきかを知らせる。2つの具体例は、リード(lead)とセール(sale)の生成である。
【０１４４】
リードを発生させるプロセスは、例えば、自動車広告がプレイされているとき、生じる。iPreviewアイコンが、スクリーン上の2301に現れ、そして視聴者は、彼が選択ボタン2204を押して対話型のメニュに入ることができることを知る。
【０１４５】
メニュ画面2302は、タグ・インタープリータ2005によって表示され、より多くの情報2303を得るまたは自動車2304のビデオを見るための選択肢をユーザに、与える。視聴者は、ライブのTVボタン2202を押すことによっていつでも退出することが出来る。視聴者が、上下矢印ボタン2203と選択・ボタン2204によってより多くの情報2303を選択すると、視聴者の情報はタグ・インタープリータ2005によってメーカ2305に送信され、このことによりリードが発生する。視聴者は、選択ボタン2204を押すことによって番組に戻る。
【０１４６】
製品（例えば、音楽アルバムの広告）が広告されるとき、セールの発生が生じる。iPreviewアイコン2301は、スクリーンに現れる。視聴者は、選択・ボタン2204を押し、そしてメニュ画面2307が、タグ・インタープリータ2005によって表示される。
【０１４７】
メニュ画面2307は、視聴者に製品を買う2308、または退出する2309ための選択肢を与える。視聴者が製品を買うためにイエス2308を選択すると、タグ・インタープリータ2005は、メーカに視聴者の購入情報2310とともに注文を送信する。これが音楽アルバム広告である場合、視聴者に、アーティストによる音楽ビデオを視聴する選択肢を提示することも出来る。
【０１４８】
視聴者が退出から戻って番組を視聴するときは常に、システムは、視聴者が退出したときの元の正確なポイントに戻る。これは、視聴者に番組が連続している感覚を与える。
【０１４９】
再指定の概念は、容易にインターネットに拡大される。iPreviewアイコンは、上述のように現れる。視聴者が遠隔制御2201上の選択ボタン2204を押すと、ウェブ・ページが、視聴者に表示される。視聴者は、次いで、ウェブ・ページと対話し、そして終了すると、システムは、視聴者が退出してきた正確なポイントで彼が見ていた番組に、視聴者を戻す。
【０１５０】
上述したように、嗜好エンジンを使用すると、リードまたはセール生成の間、視聴者に示される情報は、容易に特定の視聴者向けに適合化される。視聴者に提示された、視聴者の視聴習慣、番組嗜好、および個人情報は、メニュ、選択肢、およびスクリーンを選択するために使用される。各メニュ、選択肢、およびスクリーンは、視聴者の嗜好ベクトルと比較される関連した番組オブジェクトを有する。
【０１５１】
例えば、視聴者が男性で、かつプロモーションがシボレ(Chevrolet)に対するものである場合、視聴者が選択ボボタンを押すと、トラックの静止画が表示される。視聴者が女性である場合、オープンカー(convertible)の静止画が表示されるであろう。
【０１５２】
後述するタグ・ステート・マシン2006が、上記の具体例のタグ・インタープリータ2005と同じステップを充分に行うことができることに留意されたい。
【０１５３】
（ TiVoタグステート・マシン）
再び図２０を参照すると、本発明の好適な実施例は、TiVo受信機によって視聴者が見ることが出来るアクションになることが出来るアブストラクトTiVoタグを処理するためのメカニズムであるTSM(タグ・ステート・マシン)2006を提供する。
【０１５４】
シンプルな具体例は、アクティブ・プロモーションの作成である。前に示したように、アクティブ・プロモーションでは、やがて公開されるショーのための番組が放送され、かつ視聴者には、すぐに、それが実際に放送される時、TiVoシステムにその番組をレコーディングさせるオプションが与えられる。
【０１５５】
このシンプルな具体例には、以下の隠された複雑さが存在する：視聴者に機会をアラートするために、あるインジケータを、発生させなければならない; インジケータは、見えるようにしなければならない、また正確に消去しなければならない; 問題となっている番組の正確な情報が、提供されなければならない; そして、アクティブ・プロモーションが現れる番組は、それが放送された時と全く異なる時間で視聴することが出来る。
【０１５６】
TiVoタグの作成管理も、また、課題化されている。既存の放送の実施および技術に可能な限り変更を加えないことが、重要である。これは、メカニズムを、放送ストリームへの統合化の容易さと、堅牢で信頼できる動作の両方のために、可能な限りシンプルに保つことを意味する。
【０１５７】
（タグの原理）
上述したように、タグを送信するために利用できる帯域幅には制約があるものと仮定されている。例えば、VBIは、厳しい競走下にある利用可能なスペースを制限した。信号の大部分の消費者が主にテレビ番組オプションに集中するであろうから、ディジタル・テレビジョン信号においてさえ、送信される帯域外データの量は、少ない。
【０１５８】
タグは、この場合、わずか数バイトのサイズのシンプルなオブジェクトである。より多くの複雑なアクションは、シーケンスにマルチプル・タグを送信することによって構築される。
【０１５９】
放送配信の性質は、タグが、信号問題、太陽黒点等のために消失することを暗示する。TSMは、失われたタグを取り扱い、かつ失われたタグに起因する予想外のアクションが取り込まれないことを保証するためのメカニズムを取り入れる。
【０１６０】
一般に、視聴者管理下のタグ・アクションは、それらが受信されるチャネルにのみ関連する。すなわちチャネル変更の後、タグ状態は破棄されるものと仮定する。
【０１６１】
物理的タグは、物理的なタグを受信するソース・オブジェクト1901によってアブストラクト・タグに変換される。タグは、それらが、実行可能なコードを伝えない点で、「アクティブなエージェント」ではない。TSMを機能化することは、視聴者管理下のアーチファクトおよび変更と言う結果になるが、TiVo受信機システムの基本的な動作は、タグのシーケンスによって影響を受けないままであろう。タグが実行可能なコード（例えば、ATVEFによって検討されたJava（登録商標）バイト・ストリーム）を含むことができる場合、TiVo視聴体験の完全性は、不十分に書かれたまたは不当なソフトウェアによって危うくなるかもしれない。
【０１６２】
全てのタグ・アクションは、現在のチャネルにマッチしたポリシ・オブジェクトによって支配される。いかなる、または全てのアクションは、このオブジェクトによって使用可能または使用不可にすることが出来、ポリシ・オブジェクトの不在は、全てのタグ・アクションを抑制する。
【０１６３】
（基本的なアブストラクト・タグ）
全てのアブストラクト・タグは、一般的なインフラストラクチャを有する。以下のコンポーネントは、いかなるアブストラクト・タグ内にも存在する：
- タグ・タイプ（1バイト）
タイプ0は、認められない。ある将来の時点で、254より大きいタグ値が、必要とされる場合、タイプ255は、「エクステンション」タグを示す。
- タグ・シーケンス（1バイト）
この符号が付されていないフィールドは、シーケンスの一部である各タグのために増加される。シーケンスの一部でないタグは、このフィールドをゼロにセットしなければならない。一つのタグ・シーケンスは、新規のシーケンスの開始を示す; シーケンスは、概念的にいかなる長さとなることも出来るが、それは順番付けられた255以下のタグのセグメントで構成される。
各タグ・タイプは、暗示的なシーケンス長さ（ゼロとなることも可能である）を有する; シーケンス番号は、ストリームでのドロップアウトまたは他の形のタグ・ロスを取り扱うために導入される。一般に、シーケンス誤りが生じた場合、全てのタグ・シーケンスは破棄され、ステート・マシンのリセットが起きる。
タグは、物理的なドメイン内でチェックサムされるべきである。チェックサムがマッチしない場合、タグはソース・オブジェクトによって破棄される。これにより、シーケンス誤りとステート・マシンのリセットとなる。
- タグ・タイムスタンプ（8バイト）
これは、タグが、認識されたTVストリームの範囲内の同期時間である。この時間は、TiVo受信機によって発生される全ての他の提示時間に同期する。このコンポーネントは、決して送信されないが、受信機自身によって発生される。
-タグ・データ長（2バイト）
これは、タグと関連する任意のデータの長さである。このデータの解釈は、タグ・タイプに基づく。物理的なドメイン・トランスレータは、データ上のある最小のエラー検査を行うべきである。
【０１６４】
（タグステート・マシン）
TSMは、ビデオ再生とイン-ラインであるタグ提示メカニズム(Tag Presentation Mechanism)の一部である。
【０１６５】
概念的には、TSMは、少なくとも32ビットの精度またはオブジェクトIDを保持するのに充分なサイズを有する整数値のアブストラクト・スタックを管理する。オブジェクトIDは、アブストラクトであり、かつTiVo受信機に実オブジェクトを示すことが出来るまたは出来ない。これは、さもなくば、正しいオブジェクトにマップされることが必要となる。スタックは、サービス不能攻撃を制限するためにサイズが255のエントリに制限される。
【０１６６】
TSMは、変数のプールも管理する。変数は、2-バイト整数によって名前が付けられる。変数名0は、予備とされる。「ユーザ」変数（1と2^15-1との間にある）は、タグ・シーケンスによって操作することが出来る。「システム」変数は、TSMによって保持され、かつ現在のTiVo受信機に関する値（例えば、現在の番組オブジェクトID； TSMの改定；および他の有益な情報）を含む。これらの変数は、2^15と2^16-1との間に名前を有する。ユーザ変数の数値は、TSMの範囲内に制限することが出来る；TSM変数は、この制限が何であるかを示す。
【０１６７】
タグ・データは、連続したTSMコマンドである。これらのコマンドの実行は、前記タグが認識されかつ許可される時、開始される。TSMコマンドはバイト・オリエンティッドであり、そしてあるコマンドは、それらの機能をサポートするために更なるバイトを有することが出来る。
利用可能なTSMコマンドは、いくつかのクラスに分解することが出来る：
【０１６８】
（データ移動コマンド）
push_byte−スタック上へコマンドに続くバイトをプッシュする。
push_short−スタック上へコマンドに続くショートをプッシュする。
push_word−スタック上へコマンドに続くワードをプッシュする。
【０１６９】
（変数アクセス・コマンド）
push_var−コマンドに続く16ビット量で名づけられた変数をプッシュする。
pop_var−コマンドに続く16ビット量で名づけられた変数へポップする。
copy_var−スタックからコマンドに続く16ビット量で名づけられた変数にコピーする。
【０１７０】
（スタック操作コマンド）
swap−トップの2つのスタック値を交換する。
pop−トップのスタック値をトスする。
【０１７１】
（算術コマンド）
add_byte−コマンドに続く符号が付けられたバイトをスタックのトップに加える。
add_short−スタックのトップにコマンドに続く符号が付けられたショートを加える。
add_word−コマンドに続く符号が付けられたワードをスタックのトップに加える。
and−トップと次のスタック・エントリの論理積をとり、スタックをポップし、かつ新規の値をプッシュする。
or−トップと次のスタック・エントリの論理和をとり、スタックをポップし、かつ新規の値をプッシュする。
【０１７２】
（条件コマンド）
（符号が付けられていない比較のみ）
brif_zero−スタックのトップがゼロである場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_nz−スタックのトップがゼロでない場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_gt−スタックのトップが次のスタック・エントリより大きい場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_ge−スタックのトップが次のスタック・エントリ以上の場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_le−スタックのトップが次のスタック・エントリ以下の場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_lt−スタックのトップが次のスタック・エントリ未満の場合、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
brif_set−ビットの組が、トップと次のスタックのエントリが一緒に論理積されるとき、コマンドに続く符号が付けられた16ビットのオフセットに分岐する。
【０１７３】
（アクション・コマンド）
exec−スタックのトップに名づけられたオブジェクトID上のタグ・アクションを実行する。
fin−アクションしていないタグを終了する。
【０１７４】
（システム変数）
32768 (TAG)-現在のタグの値。
GMT内の時間：
32769 (YEAR)-現在の年（0から）。
32770 (MONTH)-現在の月（1-12）。
32771 (DAY)-月の日（1-31）。
32772 (WDAY)-曜日（1-7、日曜日から開始）。
32773 (HOUR)-日の時間（0-23）。
32774 (MIN)-時間の分（0-59）。
32775 (SEC)-分の秒（0-59）。
【０１７５】
TiVo受信機状態：
32800 (SWREL)-ソフトウェア・リリース（バイト表記x.x.xで）。
32801 (NTWRK)-現在チューニングされたネットワークのオブジェクトID。
32802 (PRGRM)-現在チューニングされた番組のオブジェクトID。
32803 (PSTATE)-出力パイプラインの現在の状態：
【０１７６】
0-通常の再生
1-一時停止
2-低速プレイ(slo-mo)
10-速度1での巻戻し
11-速度2での巻戻し
・・・
20-速度1での早送り(ff)
21-速度2での早送り(ff)
・・・
【０１７７】
タグ実行状態：
32900 (IND)  -表示する、または取り込むためのインジケータ・ナンバ。
32901 (PDURING)  -タグが実行する間のパイプラインの状態。
32902 (ALTP)  -プレイ・スタックにプッシュする代替番組オブジェクトID。
32903 (SELOBJ)    -インジケータが選択される場合、レコーディングするための番組オブジェクトID。
33000 (MENU1)   -メニュ項目1のためのストリング・オブジェクト・ナンバ。
33001 (MENU2)  -メニュ項目2のためのストリング・オブジェクト・ナンバ。
・・・
33009 (MENU10)  -メニュ項目9のためのストリング・オブジェクト・ナンバ。
33100 (PlCT1)  -メニュ項目1のためのピクチャ・オブジェクト・ナンバ。
33101 (PICT2)  -メニュ項目2のためのピクチャ・オブジェクト・ナンバ。
・・・
33109 (PIOT10)  -メニュ項目10のためのピクチャ・オブジェクト・ナンバ。
33200 (MSELOBJ1)  -メニュ項目が選択される場合、レコーディングするための番組オブジェクトID。
33201 (MSELOBJ2)  -メニュ項目が選択される場合、レコーディングするための番組オブジェクトID。
・・・
33209 (MSELOBJ10)  -メニュ項目が選択される場合、レコーディングするための番組オブジェクトID。
【０１７８】
（タグ）
- 代替番組をプッシュする
- 代替番組をポップする（番組の終了での自動ポップ）
- インジケータを上げる
- インジケータを下げる
- メニュ
【０１７９】
（タグ実行ポリシ）
実行ポリシは、TSMによって決定される。いくつかの候補は、以下の通りである：
- メニュ
標準TiVoメニュガイドラインに従ってメニュは配置される。一般に、メニュはライブのビデオに重なって現れる。項目の選択は、典型的にレコード・ダイアログを呼び出す。メニュ動作の間、パイプラインを一時停止することは、ベストであることができる。
- インジケータ
図１７と２２に示されるように、インジケータ1702は、小さいアイコンとしてのディスプレイの一番下に整列して並べられている。通常の視聴状態の間、遠隔制御2201上の上向き矢印と下向き矢印のキー2203は、何も行わない。インジケータに関し、上向き矢印2203は、インジケータを通して左に、下向き矢印は、右に円を描く。選択されたインジケータは、それを囲んで描かれる小さい四角を有する。プッシュ選択2204は、アクションを始める。新規のインジケータは、デフォルトで選択される; インジケータが消去されると、もしあれば、前に選択されたインジケータは強調表示される。
- 代替番組
代替番組は、ビデオ・ストリームの一部として現れ、かつ全部の早送り／巻き戻し(ff/rew)制御を有するべきである。ライブのボタン2202に対するスキップは、最初に空にするために代替番組スタックをポップする。
【０１８０】
本明細書では、クローズド・キャプション・ストリームが、特に、言及されたが、（EDSフィールド、VBI、MPEG2個人的データチャネル等のような）他のトランスポート方法を使用することが可能であることは、当業者であれば、容易に理解するであろう。
【０１８１】
本発明が、好適な実施例に関して本明細書において記載されているが、当業者は、ほかの応用が本発明の精神および範囲から逸脱することなく、本明細書において記載されるそれらのために代えることが出来ることを容易に理解するであろう。
【符号の説明】
【０１８２】
102   メディア・スイッチ
205   メディア・スイッチ
301   入力のMPEGストリーム
401   パーサ
501   イベント・バッファ
604   ロジカル・セグメント・ポイント
701   メディア・スイッチ
802   トランスフォーマ
917   制御オブジェクト
1004  格納媒体
1101  ソース
1203  循環バッファ
1307  VCR
1405  ビデオモニタ
1505  オペレータ
1601  オペレータ・インターフェース
1701  スクリーン
1802  サテライト
1901  ビデオ・ストリーム
2001  ソース・オブジェクト
2102  レコーディング項目メニュ
2202  選択ボタン
2302  メニュ画面
【図１】
2014003636.tif 000003
【図２】
2014003636.tif 000004
【図３】
2014003636.tif 000005
【図４】
2014003636.tif 000006
【図５】
2014003636.tif 000007
【図６】
2014003636.tif 000008
【図７】
2014003636.tif 000009
【図８】
2014003636.tif 000010
【図９】
2014003636.tif 000011
【図１０】
2014003636.tif 000012
【図１１】
2014003636.tif 000013
【図１２】
2014003636.tif 000014
【図１３】
2014003636.tif 000015
【図１４】
2014003636.tif 000016
【図１５】
2014003636.tif 000017
【図１６】
2014003636.tif 000018
【図１７】
2014003636.tif 000019
【図１８】
2014003636.tif 000020
【図１９】
2014003636.tif 000021
【図２０】
2014003636.tif 000022
【図２１】
2014003636.tif 000023
【図２２】
2014003636.tif 000024
【図２３】
2014003636.tif 000025