JP2004215284A - 複数のデータ構成のうちの1つによる放送データの選択的受信 - Google Patents

複数のデータ構成のうちの1つによる放送データの選択的受信 Download PDF

Info

Publication number
JP2004215284A
JP2004215284A JP2004002454A JP2004002454A JP2004215284A JP 2004215284 A JP2004215284 A JP 2004215284A JP 2004002454 A JP2004002454 A JP 2004002454A JP 2004002454 A JP2004002454 A JP 2004002454A JP 2004215284 A JP2004215284 A JP 2004215284A
Authority
JP
Japan
Prior art keywords
data
configuration
broadcast
task
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004002454A
Other languages
English (en)
Other versions
JP4499429B2 (ja
Inventor
Geoffrey Smith
スミス ジェフリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004215284A publication Critical patent/JP2004215284A/ja
Application granted granted Critical
Publication of JP4499429B2 publication Critical patent/JP4499429B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/4508Management of client data or end-user data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/4508Management of client data or end-user data
    • H04N21/4524Management of client data or end-user data involving the geographical location of the client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/4508Management of client data or end-user data
    • H04N21/4532Management of client data or end-user data involving end-user characteristics, e.g. viewer profile, preferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/454Content or additional data filtering, e.g. blocking advertisements
    • H04N21/4542Blocking scenes or portions of the received content, e.g. censoring scenes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/475End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data
    • H04N21/4755End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data for defining user preferences, e.g. favourite actors or genre
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6547Transmission by server directed to the client comprising parameters, e.g. for client setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

【課題】 複数のデータ構成の1つに従って放送データを選択的に受信できるようにすること。
【解決手段】 クライアント・デバイスによって、複数のデータ構成のうちの1つに従って、放送データを選択的に受信する。放送データ・サーバが、視聴者への提示のために放送データを構成することが可能な方法を定義する構成定義を維持することによって、複数のデータ構成の放送を可能とする。放送データ・サーバによって、放送データを受信するクライアント・デバイスに関連付けることができる領域を識別する領域定義も維持される。構成定義が、領域定義にマッピングされ、クライアント・デバイスを特定の領域に関連付けて、特定の領域に関連付けられた複数のデータ構成のいずれかに従って放送データを選択的に受信できるようになる。
【選択図】 図1

Description

本発明は、データ放送(data broadcasting)に関し、より詳細には、複数のデータ構成のうちの1つに従って放送データ(broadcast data)を選択的に受信することに関する。
ディジタル・テレビ網は、一般に、使用可能な帯域幅のほとんどを、オーディオ情報およびビデオ情報の放送に充てている。さらに、ビデオおよびオーディオをエンコードしていない他の情報は、一般に、通常はアウト・オブ・バンド・ネットワーク(out-of-band network)と称する、使用可能な帯域幅のうちの少量を使用して、並列に送信される。この、他の情報には、しばしば、電子番組ガイド(electronic program guide)データ、限定受信(conditional access)指示、表示されるユーザ・インターフェースのレイアウト情報、および広告データが含まれるが、これに制限はされない。通常、セットトップボックスは、セットトップボックスがプログラミング・データ(番組編成データ)および他の情報を蓄積する間に、視聴者が番組を自由に見れるように、ビデオ・データおよびオーディオ・データのデコードおよびレンダリングと並行してアウト・オブ・バンドのデータを収集するように設計されている。たとえば、ケーブル・テレビジョン放送会社は、放送ケーブル網を介して番組コンテンツを放送し、同一のケーブル網の別のより小さい帯域を介して追加の関連データを放送することができる。この形で、少なくとも2つのチューナを有するクライアントを使用する視聴者は、クライアントが、第2のチューナを使用して追加データの受信を続ける間に、第1のチューナを使用してチャネルを変更できる。代替案では、複数のデータ・ストリームを、同一のチャネルを介して平行に放送することができ、これによって、1つのチューナだけを有するクライアント・デバイスが、同一のチャネルを介して、放送番組コンテンツと放送データを同時に受信できるようになる。テレビジョン・チャネルの品質と数の両方が、ディジタル・テレビジョン経営者にとって主要な経営ポイントなので、副情報のために予約される帯域幅の量は、通常は、ビデオ・データおよびオーディオ・データの放送に使用される帯域幅の量と比較して、極端に制限されている。
ANDREAS BRAUN, et. al., "The Software Headend Architecture - A New Approach for Multi-Standard CATV Headends," Institute of Telecommunications, University of Stuttgart, Pfaffenwaldring 47, 70569 Stuttgart, Germany, 2002, IEEE, pp. 156-158 KUO-CHI CHU, et al., "A novel mechanism for providing service differentiation over CATV network," Computer Communications 25 (2002) 1214-1229 DEBRA A. HENSGN, "A Resource Allocation Framework for Heterogeneous SPMD interactive Television Environments," Proceeding of SPIE, Vol. 4528 (2001) pp. 1-12 RUDOLF JAEGER & JOSEF NEUBAUR, "Video and Interactive Internet access in a DVB Network," BetaReseach, Germany, copyright 2000 IEEE, pp. 439-445
通常、セットトップボックスは、特定の言語で、特定のレイアウトに従って、番組データなどの追加データをダウンロードして表示するように事前に構成される。サポートされる特定の言語およびレイアウトは、セットトップボックスが提供される時に初期化され、ユーザは、別の言語またはレイアウトを選択する能力を与えられていない。
本発明の目的は、複数のデータ構成の1つに従って放送データを選択的に受信できるようにすることである。
放送データ・サーバは、複数の領域定義にマッピングされる複数の構成定義を維持する。領域定義は、クライアント・デバイスが実装されている地理的領域、または地理的位置以外のパラメータに基づいたクライアント・デバイスについての他のグループ化を表すことができる。構成定義は、さまざまな言語および/または表示フォーマットによるデータのグループ化を定義する。領域/構成マッピングは、放送データと共に放送され、ある領域内の各クライアント・デバイスが、複数の構成のうちでその領域に関連付けられた構成に従って、放送データの一部を選択的に受信することを、可能にする。この形で、単一のデータ放送が、複数の構成の任意の1つに従うクライアント・デバイスによって受信されるようになり、この構成のそれぞれは、視聴者へのデータについて異なる提示をもたらすことになる。
図面全体を通じて、類似する特徴および構成要素を指すのに同一の符号が使用される。
以下の説明は、テレビジョン放送システム(broadcast television system)で複数のデータ構成からなる放送を可能にすることを対象とする。番組コンテンツ(Program content)(たとえば、放送テレビジョン番組、ビデオ・オン・デマンド番組など)およびデータ(たとえば、電子番組ガイドデータ、ビデオ・オン・デマンド・データ、広告など)が、ケーブル・テレビジョン会社などのヘッドエンド・システムからケーブル・テレビジョン・セットトップボックスなどの複数のクライアント・デバイスに放送される。番組コンテンツおよび関連データの放送のほかに、ヘッドエンドは、放送データを受信するクライアント・デバイスに使用可能なデータ構成を定義するデータも放送する。クライアント・デバイスは、クライアント・デバイスに関連付けられたユーザ・インターフェースを介して使用可能な構成のリストを視聴者に提示する。視聴者が、使用可能な構成を選択すると、クライアント・デバイスは、選択された構成定義に従って放送データの一部を選択的に受信する。クライアント・デバイスは、クライアント・デバイスに関連付けられた領域識別子に基づく、複数の構成の任意の1つの、構成に従ってデータを選択的に受信することができる。一実装形態では、領域識別子は、クライアント・デバイスの製造業者によってクライアント・デバイスに割り当てられることになる。たとえば、ディジタル多用途ディスク(DVD)プレイヤは、通常、そのユニットが設計された対象の特定の地理的領域(たとえば北アメリカ)を識別する、各ユニットに組み込まれている領域識別子を有する。代替実装形態では、ケーブル会社のセットアップ処理中に、クライアント・デバイスに領域識別子を割り当てることができる。たとえば、ケーブル会社は、クライアント・デバイスに関連付けられた領域を識別するデータのパケットを、クライアント・デバイスに送信することができる。もう1つの代替実装形態では、クライアント・デバイス上のアルゴリズムを使用して、たとえば使用可能なチャネルのリストに基づいて、適切な領域識別子を決定することができる。領域識別子は、クライアント・デバイスが実装されている地理的領域に基づくものとするか、他のパラメータ、たとえば、クライアント・デバイスのあるグループに使用可能にすることができるチャネルのラインアップに基づくものとすることができる。領域識別子は、使用可能な複数のデータ構成を判定するために、クライアント・デバイスによって使用されることができる。たとえば、サンフランシスコのケーブル会社から放送されるテレビジョン番組およびデータを受信するように構成されたテレビジョン・セットトップボックスが、英語構成に基づく放送データを、またはスペイン語構成に基づく放送データを、選択的に受信できるようにすることもできる。あるいは、放送されるテレビジョン番組およびデータをニューヨーク市のケーブル会社から受信するように構成されたセットトップボックスは、英語構成、ドイツ語構成、またはフランス語構成に基づく放送データを選択的に受信することができる。追加の構成もサポートすることができ、それは言語に基づくものとすることもでき、また言語に基づかないものとすることもできる。たとえば、子供向け構成は、、単純なユーザ・インターフェースを提供するように設計され、限られた数の放送チャネルへのアクセスを可能にすることができる。もう1つの例では、代替構成を設計して、たとえばプロスポーツチームまたは他の視聴者の関心に基づいて、テーマに合わせた構成のユーザ・インターフェースを提供することができる。さらに、英語バスケットボール構成、スペイン語野球構成、および英語/子供向け/野球構成など、1つまたは複数のテーマおよび言語の組合せに基づく構成を定義することができる。広告も、選択された構成に基づいてターゲットを設定することができる。
例示的なシステムアーキテクチャ
図1に、複数のデータ構成から成る放送を可能にするように実装される例示的な放送テレビジョン・システム100を示す。システム100は、複数の視聴者への番組コンテンツおよび関連データの配信を容易にする。テレビジョン放送システム100は、1つまたは複数のコンテンツ・プロバイダ102と、1つまたは複数のデータ・プロバイダ104と、放送データ・サーバ106と、ヘッドエンド108と、イン−バンド・ネットワーク(in-band network)112およびアウト・オブ・バンド・ネットワーク114を介してヘッドエンド108に結合される複数のクライアント・デバイス110(1)、110(2)、…、110(N)を含む。
コンテンツ・プロバイダ102は、映画、テレビジョン番組、音楽、および類似するオーディオ・コンテンツおよび/またはビデオコンテンツなどの格納された番組コンテンツを、コンテンツ・プロバイダ102からヘッドエンド108に、配信する。さらに、コンテンツ・プロバイダ102は、生のコンテンツ(たとえば、生放送など、前に格納されたものではないコンテンツ)、および/または他の場所に格納されたコンテンツについての、ヘッドエンド108への配信を制御する。
データ・プロバイダ104は、広告、電子番組ガイド(EPG)データ、ビデオ・オン・デマンド(VOD)データなどの、放送されるべき追加データを放送データ・サーバ106に供給する。
放送データ・サーバ106は、データ・プロバイダ104からデータを受信し、複数のデータ構成定義に従ってデータを配列し、そのデータをヘッドエンド108に引き渡す。放送データ・サーバ106は、データ・コレクタ116および構成管理システム118を含む。データ・コレクタ116は、データ・プロバイダ104からデータを収集し、キャッシュに入れる。構成管理システム118は、構成定義を維持し、この構成定義は、データ・コレクタ116によって収集されたデータがヘッドエンド108にどのように配信されるべきか、言い換えると、クライアント・デバイス110にどのように放送されるか、を決定するのに使用される。
ヘッドエンド108は、データ・カルーセル(data carousel)120、放送送信器122を含み、任意選択として、コンテンツ・カルーセル124も含むことができる。データ・カルーセル120は、蓄積アリア(storage area)であり、そこからアウト・オブ・バンド(OOB)ネットワーク114を介して複数のクライアント・デバイス110に(データ・プロバイダ104から放送データ・サーバ106を介して受信される)放送データを放送することになる。放送送信器122は、イン−バンド・ネットワーク112を介する番組コンテンツの送信およびOOBネットワーク114を介するデータの送信を制御する。番組コンテンツは、コンテンツ・プロバイダ102から直接にストリーミングされることができ、あるいは、クライアント・デバイス110へ放送される前に、任意選択のコンテンツ・カルーセル124で受信し、格納することができる。テレビジョン・チャネルの品質および数の両方が、ディジタル・テレビジョン経営者にとって主要な経営ポイントなので、OOBネットワーク114のために予約される帯域幅の量は、通常は、イン−バンド・ネットワーク112のために予約される帯域幅の量と比較して、極端に制限されている。
クライアント・デバイス110は、ヘッドエンド108からイン−バンド・ネットワーク112およびOOBネットワーク114を介して放送番組コンテンツおよび放送データを受信するように実装される。さらに、各クライアント・デバイスは、そのクライアント・デバイスに関連付けられた領域識別子に基づいてクライアント・デバイスに使用可能なデータ構成定義を収容する領域構成ファイルを受信するように構成される。クライアント・デバイスは、ユーザ・インターフェース・コンポーネントを使用して、使用可能な構成のリストを視聴者に提示する。ユーザが構成を選択すると、クライアント・デバイスは、選択された構成の定義に従って、放送データを選択的に受信する。
クライアント・デバイス110は、複数の形で実装されることが可能である。たとえば、テレビジョンに結合される衛星放送受信器として構成されたクライアント・デバイスは、衛星ベースの送信器から放送コンテンツおよびデータを受信し、受信されたコンテンツおよびデータは、テレビジョン・スクリーン上にレンダリングされる。ケーブルテレビジョンセットトップボックスとして実装されたクライアント・デバイスは、ケーブル網を介して放送コンテンツおよびデータを受信する。クライアント・デバイスの他の例は、ディジタル・ビデオ・レコーダ、TV対応パーソナルコンピュータなどを含み、1方向の放送網、1対多の放送網を介して放送データを受信するように構成された任意のクライアント・デバイスを含めることができる。例示的なクライアント・デバイスの選択されたコンポーネントを、図8を参照して、以下で詳細に説明する。
例示的な放送データ・サーバ
図2に、例示的な放送データ・サーバ106の選択されたコンポーネントを示す。放送データ・サーバ106には、プロセッサ202、データ・キャッシュ204(データ・ソースとしても働く)、およびメモリ206が含まれる。さらに、データ・コレクタ116および構成管理システム118が、メモリ206に格納され、プロセッサ202上で実行される。
データ・コレクタ116は、データ・プロバイダ104からデータを受信し、受信されたデータをデータ・キャッシュ204に格納する。図示の実装形態では、データ・コレクタ116は、広告データを受信する広告データ・コレクタ208、使用可能なオンデマンド・ビデオ・タイトルを説明するデータを受信するビデオ・オン・デマンド(VOD)データ・コレクタ210、および電子番組ガイド(EPG)データを受信するEPGデータ・コレクタ212を含む。各データ・コレクタは、1つまたは複数のデータ・プロバイダ104からデータを受信することができる。さらに、データ・コレクタ116は、広告データ・コレクタ208、ビデオ・オン・デマンド(VOD)データ・コレクタ210、およびEPGデータ・コレクタ212には制限されず、これらは、単に、実装できる特定のデータ・コレクタの例を表している。
構成管理システム(Configuration management system)118には、構成リポジトリ214、構成インターフェース216、領域構成ファイル・ジェネレータ218、およびデータ構成モジュール220が含まれる。構成リポジトリ(Configuration repository)214は、領域、構成、および定義された領域と構成との間のマッピングを定義するデータを格納する。例示的な構成リポジトリ構造を、以下で、図3から図5を参照して詳細に説明する。構成インターフェース216は、構成リポジトリ214へのアクセスを提供し、領域定義、構成定義、および領域/構成マッピングを作成し、保守するシステム管理者用の機構を提供する。一実装形態では、領域定義は、通常、ヘッドエンド(たとえばケーブル会社)によって生成され、構成インターフェース216を使用して構成リポジトリ214に入力される。
領域構成ファイル・ジェネレータ218は、構成リポジトリ214に定義された領域ごとに、定義された領域に関連付けられた各構成に従ってクライアント・デバイス110が放送データを選択的に受信できる方法を指定する、フォーマットされた領域構成ファイルを生成する。説明する実装形態では、各領域構成ファイルは、各構成に関連付けられたファイル・ディレクトリ構造を指定する。一実装形態では、領域構成ファイル・ジェネレータ218は、データ・プロバイダ104からではなく構成リポジトリ214からデータを収集するデータ・コレクタ116のようなデータ・コレクタとして実装される。
データ構成モジュール220は、各領域構成ファイルで指定されるファイル・ディレクトリ構造に従って、(データがデータ・プロバイダ104から受信されるとそのデータが格納されるキャッシュメモリ位置である)データ・ソース204からデータ・カルーセル120にデータをコピーする。このデータは、データ・カルーセル120にコピーされた後に、OOBネットワーク114を介して放送され、クライアント・デバイス110は、各特定のクライアント・デバイス110に関連付けられた領域識別子に基づいて、多数のデータ構成のうちの1つに関連付けられたデータを選択的に受信することができる。たとえば、特定のクライアント・デバイスは、複数の構成に関連付けられた(構成リポジトリ214内で、したがって領域構成ファイル内で)領域識別子に関連付けることができる。そのクライアント・デバイスを使用する視聴者は、複数の使用可能な構成の1つを選択することができ、これによって、クライアント・デバイス110は、選択された構成に従って放送データの一部を選択的に受信できるようになる。放送されるデータの量は、データの特定部分が、複数の構成から使用可能であっても、データの各特定部分は1回だけ放送されるという事実によって最小にされる。データの特定部分が複数の構成から使用可能な場合に、それぞれが異なる選択された構成を有する複数のクライアント・デバイスは、選択された構成の間で共通するデータを全て受信することができる。領域構成ファイルは、以下に、図6を参照して詳細に説明する。
例示的な構成リポジトリ構造
図3に、図2の放送データ・サーバ106に実装される構成リポジトリ214の例示的構造を示す。構成リポジトリ214には、複数のデータ構成定義302および複数の領域定義304が格納される。各構成定義302は、構成定義に従って放送データを選択的に受信するクライアント・デバイス110によって使用されるデータを識別する。本明細書に記載の実装形態では、各構成定義302は、そこからデータを放送できるデータ・カルーセル・ディレクトリのグループを識別する。
各領域定義304は、クライアント・デバイスのセットに関連付けられることができる領域を識別する。本明細書に記載の実装形態では、各クライアント・デバイス110は、放送プロバイダによってクライアント・デバイスが提供される際に、領域識別子を割り当てられる。クライアント・デバイスの領域識別子は、構成リポジトリ214によって維持される領域定義304に相当する。領域は、地理的領域に基づいて定義することができ、あるいは、他のパラメータに基づくものとすることができる。たとえば、第1のケーブル会社が、同一の地理的領域内のクライアント・デバイスにサービスする第2のケーブル会社を取得することができるが、そのクライアント・デバイスは、初めは異なるケーブル会社によってサービスされていたので、それらに異なる領域識別子を関連付けることができる。代替実装形態では、領域を、クライアント・デバイスのあるグループから使用可能なチャネル・ラインアップに基づくものとすることができる。
構成リポジトリ214は、定義された構成302のどれが、定義された領域304のそれぞれに関連付けられたクライアント・デバイスに使用可能であるかを定義する領域/構成マッピング306も、格納する。例示的実装形態では、各定義された構成は構成IDによって識別され、各定義された領域は領域ID(領域識別子)によって識別される。そのような実装形態では、領域/構成マッピング306は、領域ID/構成ID対に関して定義される。
例示的な構成定義構造
図4に、例示的な構成定義302のデータ構造を示す。図示の実装形態では、構成テーブル402は、定義された構成ごとに1つのレコードを格納する。言語テーブル404は、有効なカルチャ名(culture name)のリストを格納し、構成テーブル402内のカルチャ名フィールドに対する有効な値のルックアップ・テーブルとして使用される。タグ・テーブル406は、各定義された構成に関連付けられた詳細を記録し、特定の構成に関連付けることができるデータ・タイプごとに1つのレコードを格納する。クライアント・タイプ・テーブル408は、1つまたは複数の構成をサポートする能力があるクライアント・デバイスのタイプを識別するデータを格納し、タグ・テーブル406内のクライアント・タイプIDフィールドに対する有効な値のルックアップ・テーブルとして使用される。データ・タイプ・テーブル410は、構成に関連付けることができるデータ・タイプのリストを格納し、タグ・テーブル406内のデータ・タイプ名フィールドに対する有効な値のルックアップ・テーブルとして使用される。
表1に、例示的な構成テーブル402の構造を示す。
Figure 2004215284
タグ・テーブル406には、各定義された構成に関連付けられた詳細を記録し、特定の構成に関連付けることができるデータ・タイプごとに1つのレコードを格納する。表2に、例示的なタグ・テーブル406の構造を示す。
Figure 2004215284
クライアント・タイプ・テーブル408は、1つまたは複数の構成をサポートする能力があるクライアント・デバイスのタイプを識別するデータを格納する。表3に、例示的なクライアント・タイプ・テーブル408の構造を示す。
Figure 2004215284
データ・タイプ・テーブル410には、1つまたは複数の構成に関連付けることができるデータ・タイプのリストを格納する。表4に、例示的なデータ・タイプ・テーブル410の構造を示す。
Figure 2004215284
例示的な領域定義構造
図5に、例示的な領域定義データ構造304を示す。図示の実装形態では、領域テーブル502は、定義される領域ごとに1つのレコードを格納する。OMグループ・テーブル504は、アウト・オブ・バンド変調器(OM)のグループを識別するデータを格納し、それぞれは、指定された周波数でネットワークを介してデータを送信するように構成される。個々のクライアント・デバイス・タイプは、個々の周波数でデータを受信するように構成することができる。領域をOMグループに関連付けることによって、同一のデータを複数の周波数で放送でき、サポートされるクライアント・デバイス・タイプのそれぞれがそのデータを受信することを可能にする。OMグループ・テーブル504は、領域テーブル502内のOMグループIDフィールドに対する有効な値のルックアップ・テーブルとして使用される。
表5に、例示的な領域テーブル502の構造を示す。
Figure 2004215284
表6に、例示的なOMグループ・テーブル504の構造を示す。上で説明したように、OMグループは、同一のデータを複数の周波数で放送するために実装されるアウト・オブ・バンド変調器のグループである。
Figure 2004215284
例示的な領域構成ファイルのフォーマット
上で図2に関して説明したように、構成管理システム118の領域構成ファイル・ジェネレータ218は、構成リポジトリ214内で定義される領域ごとに、フォーマットされた領域構成ファイルを生成する。各フォーマットされた領域構成ファイルは、定義された領域に関連付けられた構成ごとに、データ・カルーセル120内に実装されるファイル・ディレクトリ構造を指定する。一実装形態では、領域構成ファイルは、XMLファイルとしてフォーマットされる。領域構成ファイルに使用することができる他のフォーマットには、カスタム・フラット・ファイル・フォーマットを含めることができるが、これに制限はされない。一実装形態で、各生成される領域構成ファイルに、xxxx.rgncfgという名前がつけられ、ここで、xxxxは、領域に関連付けられた整数領域IDの4バイト16進数表現であり、必要に応じて先頭に0が付加される、。本明細書に記載の実装形態では、各xxxx.rgncfgファイルは、データ・カルーセル120内の\regionconfigディレクトリに格納される。
図6に、領域構成ファイル・ジェネレータ218によって生成されるファイルの例示的な構造を示す。領域構成ファイル600は、領域エントリ602がルートである階層構成に従ってフォーマットされる。領域エントリ602は、特定の領域定義304に対応する。
1つまたは複数の構成エントリ604(1)、604(2)、…、604(N)は、各領域エントリ602に関連付けられる。各構成エントリ604は、特定の構成定義302に対応する。さらに、領域/構成マッピング306内で、構成エントリ604に対応する各構成定義302が、領域エントリ602に対応する領域定義304にマッピングされる。
タグ・テーブル406に格納されたデータに基づくデータ・タグは、各構成エントリ604に関連付けられる。たとえば、メタデータ・タグ606(1)、必須のデータ・タグ608(1)、および任意選択データ・タグ610(1)は、構成エントリ604(1)に関連付けられ、メタデータ・タグ606(2)、必須のデータ・タグ608(2)、および任意選択データ・タグ610(2)は、構成エントリ604(2)に関連付けられ、メタデータ・タグ606(N)、必須のデータ・タグ608(N)、および任意選択データ・タグ610(N)は、構成エントリ604(N)に関連付けられる。各構成エントリに関連付けられたタグ・エントリの順序は、タグ・テーブル406内の構成フィールドでの順序に基づいて決定される。このタグの順序は、クライアント・デバイス110が特定の構成に関連付けられたデータを獲得する順序も決定することができる。
メタデータ・タグ606は、各特定の構成に関する情報を指定するのに使用される。本明細書に記載の実装形態では、メタデータに、IDおよび記述が含まれる。IDメタデータ値は、データ・タイプ・フィールド値がIDであるタグ・テーブル406のレコードのタグ値フィールドに格納される。一実装形態では、IDメタデータは、0と65535の間の10進の符号なし整数であり、構成テーブルの構成IDフィールド値と同一である。この実装形態は、クライアント・デバイスがデフォルト構成IDを便利に格納することを可能とし、その結果、視聴者が、クライアント・デバイスの電源を入れるたびに構成を選択する必要がなくなる。クライアント・デバイスが、電源を切られ、入れられる時に、視聴者が異なる構成を選択するまで、最後に選択した構成が表示される(メモリに格納された構成IDに基づいて)。クライアント・デバイスに構成識別子を格納することは、領域構成ファイルの選択された構成の位置を示すインデックスを、その代わりに格納する実装に対する改善でもある。たとえば、クライアント・デバイスは、英語、スペイン語、ドイツ語を、この順序で使用可能な構成としてリストする領域構成ファイルを受信することができる。視聴者がスペイン語を選択する場合に、クライアント・デバイスは、視聴者が2番目の使用可能な構成を選択したことを示すインデックス値「2」を格納することができる。この領域構成ファイルが、その後、英語、フランス語、およびスペイン語をこの順序で含むように修正された場合に、次にクライアント・デバイスの電源が入れられた時に、フランス語構成が、2番目の使用可能な構成なので、自動的に選択される。したがって、インデックスではなく、選択された構成に関連付けられた識別子を格納することは、領域構成ファイル構造が変更された場合であっても、一貫性のある構成選択が保証される。
一実装形態で、構成IDがメモリに格納されていない(たとえば、視聴者が、特定の構成を一度も選択していない)場合に、クライアント・デバイスは、領域構成ファルにリストされた最初の構成を自動的に選択する。
説明メタデータは、使用可能な構成のメニュー内で視聴者に提示できるストリングを表す。説明メタデータの値は、構成テーブル402内の構成名フィールドの値に対応する。
必須のデータ・タグ608は、クライアント・デバイスのオペレーションに対する主要なデータで、クライアント・デバイス・タイプに従って異なる可能性があるデータ、を指定するのに使用される。本明細書に記載の実装形態では、必須のデータ・タイプに、下記が含まれる。
・bootstrap
・bootstrap_language
・pages
・language
・ad
・config
・lcl_epg_base
・appdisc
・lcl_epg_ext
bootstrapデータは、チャネル・ブラウジング、ボリューム表示、ロックされた番組のロック解除など、基本的なクライアント・デバイス・ファンクション(機能)に関連付けられた表示をサポートするのに必須のデータである。
bootstrap_languageデータは、上述したbootstrapデータと共に使用されるリソース・ファイルおよび言語フォントを収容する。
pagesデータは、クライアントが使用する表示ファイルのベース・セットを含み、フォント、ページ記述子ファイル(page descriptor files)、ビットマップ、スタイル記述子ファイル(style descriptor files)などを収容する。pagesデータには、環境変数やカスタマイズ可能ストリングなどをセットするためにロード時に実行することができるスクリプト・ファイル、も含めることができる。一実装形態では、個々のファイルを、拡張子「.blb」を持つカルーセル・ブロブ(carousel blobs)内に連結することができる。
language(言語)データは、静的に表示されるストリング(strings)を収容し、このストリングは、複数の構成に渡って一貫性のあるページ表示レイアウトを提供する。1つの例では、異なるストリングをロードして、異なる言語を表示することができる。languageデータは、たとえばストリングのある言語への翻訳が大きすぎて標準レイアウトにおさまらず、オーバーライド・レイアウトを必要とする時、などに使用される、レイアウト・オーバーライドも収容することができる。
bootstrap、bootstrap_language、pages、およびlanguageデータ・タイプの間でデータを分割することによって、2つの重要なデータ分類が作られる。第1に、合わせて捉えると、タイプbootstrapおよびbootstrap_languageのデータは、クライアント・デバイスの基本的な機能性を提供するのに必須のデータの最小限のセット(組)を構成する。合わせて捉えると、pagesおよびlanguageデータ・タイプは、クライアント・デバイスの他の機能性に関連付けられて表示することができる追加デーを構成する。第2に、bootstrapおよびpagesの両方のデータ・タイプは、レイアウト・データを収容し、bootstrap_languageおよびlanguageの両方のデータ・タイプは、bootstrapおよびpagesデータ・タイプのデータによって記述されるレイアウトを使用して表示できる特定のテキストデータを収容する。複数の異なる言語構成が、クライアント・デバイスで使用可能にされる場合に、異なる言語構成の間で、レイアウト・データが同一であり、実際のテキストだけが異なる可能性が高い。したがって、レイアウト・データの1組だけが放送される必要があり、一方、テキストデータは複数の組が放送される必要がある。言い換えると、同一のbootstrapおよび/またはpagesデータを、それぞれが異なるbootstrap_languageデータおよびlanguageデータを有する複数の構成に関連付けることができる。さらに、レイアウト・データは、通常はテキストデータより複雑なので、複数の構成をサポートするために1組のレイアウト・データだけを送信できるようにすることによって、かなりの量の帯域幅を節約することができる。
いくつかの情況で、たとえば、ある言語の特定の単語または句が、他の言語よりかなり長く、その1つの言語に対してより大きいボタンまたはテキスト・フレームが必要になる場合など、異なる構成間でレイアウト・データがわずかに異なる場合がある。そのような状況をサポートすると同時に放送されるデータの量を最小にするために、オーバーライド・レイアウト・データを、特定の構成に関連付けられた適切なテキスト・データ・タイプに含めることができる。たとえば、クライアントがデータを受信すると、まずbootstrapデータ(レイアウト・データが含まれる)が受信され、bootstrap_languageデータ(bootstrapデータによって定義されるレイアウトに適用されるテキストが含まれる)が続く。したがって、bootstrap_languageデータで受信されたレイアウト・データは、bootstrapデータで最初に受信されたレイアウト・データにオーバーライドする(優先する)(bootstrapデータで最初に受信されたレイアウト・データを無効にする)。同様に、オーバーライド・レイアウト情報は、languageデータ・タイプまたはconfigデータ・タイプに含めて、pagesデータ・タイプで指定されるレイアウト情報にオーバーライドすることができる。クライアントによって維持される受信されたデータは、現在放送されているデータに再同期化されるので、更新された放送データは、領域構成ファイルで指定された順序で獲得される。しかし、アプリケーション(たとえば、ユーザ・インターフェース)によって、特定の放送データ・ファイルが要求されると、要求されたファイルが標準位置(たとえばbootstrapデータ・タイプ位置のレイアウト・データ)およびオーバーライド位置(たとえば、bootstrap_languagesデータ・タイプ位置のレイアウト・データ)の両方に存在する場合に、標準ファイルに出会う前にオーバーライド・ファイルに出会うように、クライアントは、選択された構成定義で定義されるデータ・タイプに関連付けられた位置を、逆の順序で検索する。
adデータは、広告のコレクションからなる。さらに、adデータには、クライアント・デバイス・タイプに応じて広告ダイジェスト・ファイルも含めることができる。広告ダイジェスト・ファイルは、現在放送について使用可能な広告と、特定の広告を表示しなければならない時を示すデータをリストする。広告ダイジェスト・ファイルには、通常は、各使用可能な広告に関連付けられた、タイトル、ビットマップ名、およびクリック−スルー(click-through)データが収容される。広告ダイジェスト・ファイルは、通常は、視聴者の関心に基づいてターゲットを設定された広告を実装するのに使用することができる。一実装形態では、タイプIPG1.5のクライアント・デバイスの広告ダイジェストが、「metadata.ads」という名前のファイルに含まれる。タイプBASIC1.0のクライアント・デバイスの広告ダイジェストは、圧縮されたXMLファイルである「AdDigest.gz」という名前のファイルに収容される。
configデータは、潜在的に、pagesデータ・タイプに含めることができるすべてのものを収容し、全体的なpagesディレクトリへの微調整を指示する。たとえば、configデータは、メニュー・ページのデフォルト・ビット・マップに代わりに表示するためにロードされるオーバーライド・ビットマップを含めることができる。ローカル・ヘルプ・デスク番号は、configデータを使用して、含めることができるデータのもう1つの例である。
lcl_epg_baseデータは、基本的なEPGデータを収容する。一実装形態では、lcl_epg_baseは、2つのディレクトリ、data00およびdata01を収容し、data00は、現在のタイム・スライスの詳細なEPGデータを収容する。data01は、次のタイム・スライスの、より詳細でないEPGデータを収容する。一実装形態では、タイム・スライスは、12時間の期間として定義されるが、任意の時間セグメントをタイム・スライスとして実装できることを諒解されたい。data00およびdata01ディレクトリに格納されるファイルは、クライアント・デバイスに実装されるEPGアプリケーションによって理解されるフォーマットである。これらのディレクトリの両方のコンテンツは、この領域に割り当てられたクライアント・デバイス・タイプに格納するのに十分に小さいことが好ましい。一実装形態では、data00およびdata01ディレクトリのサイズが、構成可能である。
appdiscデータ・タイプは、アプリケーションおよびサービス・カタログを通信するのに使用することができる。アプリケーションおよびサービス・カタログには、ダウンロードするクライアント・デバイスに使用可能にすることができる、追加のアプリケーションおよびサービスを記述した情報を収容する。本明細書に記載の実装形態では、appdiscデータ・タイプは、たとえば名前/バージョン、名前、または「*」(すべてのクライアント・タイプへの適用可能性を示す)などに基づいて、特定のクライアント・タイプについてターゲットにすることができる(クライアント・タイプは、表3を参照して上述した)。
一実装形態では、必須のデータ・タイプを、さらに、異なるデータ・タイプがどのように関係するかに従ってグループ化することもできる。たとえば、bootstrapおよびbootstrap_languageデータ・タイプを一緒にグループ化することができ、pagesおよびlanguageデータ・タイプを一緒にグループ化することができる。クライアントがデータを受信すると、特定のデータ・タイプのデータは、同一グループ内のすべてのデータが成功裡に受信されるまで、表示されない。たとえば、クライアントがbootstrapデータを受信するが、bootstrap_languageデータを受信しない場合に、ページ・レイアウトは表示されるが、テキストはなく、したがって、無用になる。関連するデータ・タイプをグループ化することによって、クライアントは、受信したデータのいずれかの表示を試みる前に、必要なすべてのデータを受信することが保証される。一実装形態では、データ・タイプ・グループを、データ・タイプがどのよう命名されるかに関して定義することができる。たとえば、「bootstrap」から始まるすべてのデータ・タイプを、1グループとみなすことができる。代替実装形態では、グループIDフィールドをタグ・テーブル406および領域構成ファイル内の各エントリに追加し、各データ・タイプがどのグループに属するかを識別することができる。
任意選択タグ610は、リソースが許す場合にクライアント・デバイスが任意選択としてダウンロードできるデータを指定するのに使用される。本明細書に記載の実装形態では、任意選択データに、拡張EPGリスティング・データ(データ・タイプlcl_epg_ext)が含まれ、これには、data02からdataYYという番号の複数のサブ・ディレクトリが含まれ、ここで、YYは、2桁の10進数としてフォーマットされた、最高の番号の名前をつけられたディレクトリである。十分なメモリが使用可能なクライアント・デバイスでは、スタートアップ時に他のすべてのタイプのデータを受信した後、および/またはガイドデータの変更が検出された時に、これらのディレクトリから選択的にデータを受け取ることができる。より高い番号のディレクトリのそれぞれに、より遅いタイム・スライスに関連付けられたEPGデータが含まれる。クライアント・デバイスは、指定されたメモリの限度に達するか、すべてのディレクトリを読み取るまで、後続ディレクトリからのデータの読取を継続する。
1例としての領域構成ファイルは、下記のようにフォーマットすることができる。
Figure 2004215284
<rgn>タグは、領域定義の始めを示し、</rgn>タグは、領域定義の終りを示す。<cfg>および</cfg>タグ対のそれぞれは、構成定義の始めおよび終りを示す。
<cfg>および</cfg>タグ対の間の各タグは、タグ・テーブル406の1レコードに対応し、下記のフォーマットを有する。
<tag type name="data type name" ver="client type" val="tag value">
<タグ・タイプ name=「データ・タイプ名」 ver=「クライアント・タイプ」 val=「タグ値」>
ここで、”tag type”(タグ・タイプ)は、データ・タイプ・テーブル410の対応するレコードのタグ・タイプ・フィールド値であり、”data type name”(データ・タイプ名)は、タグ・テーブル406の対応するレコードのデータ・タイプ名フィールド値であり、”client type”(クライアント・タイプ)は、クライアント・タイプ・テーブル408の対応するレコードのクライアント・タイプ・フィールド値であり、”tag value”(タグ値)は、タグ・テーブル406の対応するレコードのタグ値フィールド値である。<cfg>および</cfg>タグ対の間のタグ・エントリの順序は、タグ・テーブル406内の各タグ・レコードの構成フィールド内の順序の値に基づいて決定することができる。
本明細書に記載の実装形態では、領域構成ファイルで指定される各データ・タイプおよび値が、データ・カルーセル120のディレクトリに対応する。したがって、上で図示し、説明した領域構成ファルの例では、データ・カルーセル120での下記のディレクトリ構造が仮定される。
Figure 2004215284
複数データ構成の放送を可能にする方法
上で説明したように、放送データ・サーバ106は、複数のデータ構成定義を維持し、複数のクライアント・デバイス110への放送のために、ヘッドエンド・システム108にこれらの定義を提供する。各クライアント・デバイス110は、領域に関連付けられ、放送データ・サーバ106は、領域への構成定義のマッピングを維持し、その結果、個々の領域に関連付けられたクライアント・デバイスは、データ構成についての個々の組合せへのアクセスを有することができる。
放送データ・サーバ106によって実行されるような複数のデータ構成の放送を可能にすることは、コンピュータによって実行される、アプリケーション・モジュールなどの、コンピュータ実行可能命令についての全般的なコンテキストで説明することができる。一般に、アプリケーション・モジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。ヘッドエンドが複数のデータ構成を放送できるようにする放送・データ・サーバは、複数のプログラミング技法のいずれかを使用して実装することができ、ローカル・コンピューティング環境で実装するか、複数の通信プロトコルのいずれかに基づくさまざまな通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境に実装することができる。そのような分散コンピューティング環境では、アプリケーション・モジュールを、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
図7に、複数のデータ構成の放送を可能にする方法700を示す。例示のために、図7を、図1および図2に示されたコンポーネントを参照して説明する。
ブロック702で、放送データ・サーバ106は、放送データを受信して、格納する。たとえば、データ・コレクタ116は、データ・プロバイダ104からデータを収集し、データ・キャッシュ204にそのデータを格納する。収集されるデータには、広告、VODデータ、およびEPGデータを含めることができるが、これに制限はされない。
ブロック704で、放送データ・サーバ106は、1つまたは複数の構成定義を受信して、格納する。本明細書に記載の実装形態では、構成定義は、システム管理者によって、構成インターフェース216を介してサブミット(submit;発信)され、構成リポジトリ214に格納される。
ブロック706で、放送データ・サーバ106は、1つまたは複数の領域定義を受信して、格納する。本明細書に記載の実装形態では、領域定義は、ヘッドエンド108によって、構成インターフェース216を介するか、放送データ・サーバ106とヘッドエンド108の間の関係を確立する初期化プロセスを介して、サブミットされる。領域定義は、構成リポジトリ214に格納される。
ブロック708で、放送データ・サーバ106は、領域/構成マッピングを受信して、そのマッピングを、構成リポジトリ214に格納する。ブロック710で、領域構成ファイル・ジェネレータ218は、構成リポジトリ214に格納された領域定義ごとに、領域定義ファイルを生成する。本明細書に記載の実装形態では、各領域構成ファイルは、領域に関連付けられた1つまたは複数の構成を識別し、各構成に関連付けられたデータをそこからダウンロードできるデータ・カルーセル120のディレクトリを示すフォーマットされたXMLタグを含む。領域構成ファイルは、そこからクライアント・デバイス110によってダウンロードすることになるデータ・カルーセル120のディレクトリ位置に書き込まれる。
ブロック712で、データ構成モジュール220は、構成リポジトリ214に格納された定義されたデータ構成に基づいて、データ・プロバイダ104から受信され、データ・キャッシュ204に格納されたデータを、データ・カルーセル120のディレクトリにコピーする。
順次的に説明したが、図7に示されたオペレーションは、必ずしも図に示された順序で実行する必要はない。たとえば構成定義、領域定義、および領域/構成マッピングを、最初に導入し、その後にデータを収集してデータ・カルーセルにデータをコピーすることを何回も繰り返すことを続けることができる。
例示的なクライアント・デバイス
図8に、図1に示された例示的なクライアント・デバイス110の選択されたコンポーネントを示す。クライアント・デバイス110は、チューナ802(複数)を含み、これらは、テレビジョン放送信号を受信するためにさまざまな周波数またはチャネルに同調する1つまたは複数のイン−バンド・チューナを表し、さらに、データ・カルーセル120に格納されたデータがそれを介して放送されるOOBネットワーク114に対応する放送チャネルに同調するように構成することができるもう1つのチューナも含む。代替案では、チューナ802(複数)は、単一のチャネルを介して(番組コンテンツと放送データの両方を含む)複数のデータ・ストリームを同時に受信するように構成された単一のチューナを表すことができる。
クライアント・デバイス110は、クライアント・デバイス110のオペレーションを制御し、他の電子デバイスおよびコンピューティング・デバイスと通信するさまざまな命令を処理する1つまたは複数のプロセッサ804を含む。クライアント・デバイス110は、1つまたは複数のメモリ・コンポーネントを有するものとして実装することができ、このメモリ・コンポーネントの例には、ランダム・アクセス・メモリ(RAM)806、ディスク・ドライブ808、マス・ストレージ・コンポーネント810、および不揮発性メモリ812(たとえば、ROM、フラッシュ、EPROM、EEPROMなど)が含まれる。メモリ・コンポーネント(たとえば、RAM806、ディスク・ドライブ808、記憶媒体810、および不揮発性メモリ812)には、受信されたコンテンツ(received content)、EPGデータ、クライアント・デバイス110用の構成情報、および/またはグラフィカル・ユーザ・インターフェース情報などのさまざまな情報および/またはデータが格納される。不揮発性メモリ812は、最後に選択された構成定義に関連付けられた識別子を維持するようにも構成され、その結果、クライアント・デバイス110が、電源を切られ、もう一度電源を入れられる場合に、同一の構成を選択できるようになる。
クライアント・デバイス110の代替実装形態に、ある範囲の処理能力およびメモリ能力を含めることができ、図8に示されたものより少数または多数のタイプのメモリ・コンポーネントを含めることができる。たとえば、フル・リソース・クライアントは、視聴者による再生のためにコンテンツを格納するディスク・ドライブ808を含む、かなりのメモリ・リソースおよび処理リソースを用いて実装することができる。しかし、低リソースのクライアントは、限られた量のRAM806のみで、ディスク・ドライブ808を有さず、限られた処理能力のプロセッサ804を有する、などの、限られた処理能力およびメモリ能力を有することになる。
オペレーティング・システム814および1つまたは複数のアプリケーション・プログラム816を、不揮発性メモリ812に格納し、プロセッサ804によって実行して、ランタイム環境を提供することができる。ランタイム環境は、アプリケーション・プログラム816がクライアント・デバイス110と相互作用できるようにするさまざまなインターフェースを定義できるようにすることによって、クライアント・デバイス110の拡張性を容易にする。
1方向の放送カルーセル・ファイル・システム(BCFS)815は、OOBネットワーク114と相互作用するように構成されて、クライアント・デバイス110によって維持されるデータが、OOBネットワーク114を介して放送されつつあるデータに同期化される。図からわかるように、BCFS815は、不揮発性メモリ812に格納され、且つプロセッサ804で実行される、ソフトウェア・アプリケーションとして実装される。代替案では、BCFS815を、1つまたは複数のハードウェア・コンポーネントとして、またはオペレーティング・システム814の一部として実装することもできる。各特定の実装形態で、BCFS815は、クライアント・デバイス110がそこから放送データを受信する特定のデータ・カルーセル120に関連付けられる(または、少なくともそのデータ・カルーセル120に従って構成される)。
BCFS815は、通常は、ディレクトリ・シーク(seek directory)オペレーション、ファイル・シーク(seek file)オペレーション、ディレクトリ同期化(sync directory)オペレーション、およびファイル同期化(sync file)オペレーションを、実行するように構成される。代替案では、BCFS815を、より基本的なオペレーションを実行するように構成することができ、上でリストしたオペレーションは、実装されるBCFS815へのインターフェースを介して、たとえばオペレーティング・システム814の一部として使用可能になる。
ディレクトリ・シークオペレーションは、特定のローカル・ディレクトリに関連付けられたデータがデータ・カルーセル120上の同一の名前のディレクトリからOOBネットワーク114を介して放送されているデータと同期化されているかどうか、を決定するために呼び出される(ディレクトリをパラメータとして)。ディレクトリ・シークオペレーションは、指定されたローカル・ディレクトリが放送されているディレクトリと同期化されている否かを示すインジケータと、指定されたディレクトリから放送されているデータのサイズ(たとえばバイト単位)を返す。
ファイル・シークオペレーションは、特定のファイルについてのローカルに維持されているコピーがOOBネットワーク114を介して放送されている同一のファイルと同期化されているかどうか、を決定するために呼び出される(ファイル名をパラメータとして)。ファイル・シークオペレーションは、指定されたファイルが放送されていか否かを示すインジケータ、ファイルのローカルに維持されているバージョンが現在放送されつつあるファイルのコピーと一致するか否かを示すインジケータ、および放送されているファイルに関連付けられたファイル・サイズ(たとえばバイト単位)を返す。
ディレクトリ同期化オペレーションは、特定のローカル・ディレクトリに関連付けられたデータをデータ・カルーセル120上の同一の名前のディレクトリからOOBネットワーク114を介して放送されつつあるデータと同期化させるために、呼び出される(ディレクトリをパラメータとして)。ディレクトリ同期化オペレーションは、指定されたディレクトリのすべてのローカルデータを削除して、指定されたディレクトリから放送されているデータを獲得する。
ファイル同期化オペレーションは、OOBネットワーク114を介して現在放送されている、指定された名前のファイルを獲得するために、呼び出される(ファイル名をパラメータとして)。
図示の例のクライアント・デバイス110において、EGPアプリケーション818は、不揮発性メモリ812に格納されて、受信されたEPGデータを操作し、番組ガイドを生成する。クライアント・デバイス110に実装できるアプリケーション・プログラム816には、ウェブ(たとえば「ワールド・ワイド・ウェブ」)をブラウズするブラウザ、電子メールを容易にする電子メールプログラムなどを含めることができる。ユーザ・インターフェース・コンポーネント820も、不揮発性メモリ812に格納され、プロセッサ804で実行されて、クライアント・デバイスとのユーザ対話を提供する。
クライアント・デバイス110には、メモリ812に格納されてプロセッサ804で実行されるデータ構成モジュール822も含まれる。データ構成モジュール822には、クライアント・オブジェクト824および複数のタスク・オブジェクト826が含まれる。クライアント・オブジェクト824は、適切な領域構成ファイルを入手すること、タスク・オブジェクト826がサービスされるべき且つ再び取り上げるべき順序をスケジューリングすること、選択された構成の詳細をタスク・オブジェクト826およびユーザ・インターフェース820(および、おそらくは、アプリケーション・プログラム816および/またはEGPアプリケーション818)から使用可能にすること、および領域構成ファイルが変更されていないことを経時的に検証すること、についての責任を負う。各タスク・オブジェクト826は、非同期コマンドをBCFS815に発行してデータを得ることによって、選択された構成に関連付けられた特定のデータ・タイプのデータを得ることについての責任を負う。本明細書に記載の実装形態では、クライアント・オブジェクト824およびタスク・オブジェクト826が、状態機械(state machines)として実装され、それぞれ以下で詳細に説明される。データ構成モジュールを、類似する機能性を提供する複数の形で実装することができ、本明細書に記載の実装形態が、そのようなデータ構成モジュールの一例に過ぎないことも理解されたい。
クライアント・デバイス110は、この例で示されないテレビジョン・エンターテイメント・システムに関する他のコンポーネントを含むように実装することができる。たとえば、クライアント・デバイス110に、ユーザ・インターフェースのライト(lights;ウィンドウ)、ボタン、コントロール、および類似物を含めて、追加のデバイスとの視聴者対話を容易にすることができる。
図示のクライアント・デバイス110には、NTSC、PAL、SECAM、または他のTVシステム・ビデオ信号などの放送ビデオ信号をデコードするデコーダ828も含まれる。クライアント・デバイス110には、無線インターフェース830、ネットワーク・インターフェース832、シリアルおよび/またはパラレル・インターフェース834、およびモデム836についての任意の組合せも含めることができる。無線インターフェース830を用いると、クライアント・デバイス110が、リモート・コントロール・デバイスなどのユーザが操作する入力デバイスから、または別のIR、Bluetooth、または類似するRF入力デバイスから、入力コマンドおよび他の情報を受信できるようになる。
ネットワーク・インターフェース832およびシリアルおよび/またはパラレル・インターフェース834を用いると、クライアント・デバイス110が、さまざまな通信リンクを介して、他の電子デバイスおよびコンピューティング・デバイスと相互作用し、通信できるようになる。図示されてはいないが、クライアント・デバイス110に、他のデバイスと通信するために他のタイプのデータ通信インターフェースを含めることもできる。モデム836は、普通の電話回線を介する他の電子デバイスおよびコンピューティング・デバイスとのクライアント・デバイス110の通信を容易にする。
クライアント・デバイス110に、オーディオ・データおよびビデオ・データを処理、提示、または他の形でレンダリングできる、テレビジョンまたは他のデバイスに信号を供給する、オーディオ出力838およびビデオ出力840も含まれる。別々に図示されてはいるが、クライアント・デバイス110のコンポーネントのいくつかを、特定用途向け集積回路(ASIC)に実装することができる。さらに、システム・バス(図示せず)は、通常は、クライアント・デバイス110内のさまざまなコンポーネントを接続する。システム・バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、またはさまざまなバス・アーキテクチャのいずれかを使用するローカル・バスを含む、複数のタイプのバス・アーキテクチャのいずれか1つまたは複数として実装することができる。例として、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、および、メザニンバスとも称するPeripheral Component Interconnects(PCI)バスを含めることができる。
データ構成の視聴者選択を可能にする方法
上で説明したように、クライアント・デバイス110は、ヘッドエンド108から放送番組および関連する放送データを受信する。さらに、クライアント・デバイス110は、領域識別子に基づいて、クライアント・デバイスから使用可能である1つまたは複数のデータ構成を示す放送領域構成ファイルを受信する。クライアント・デバイス110は、ユーザ・インターフェースを介して、使用可能なデータ構成のリストを視聴者に提示するように構成され、視聴者が選択したデータ構成に従って放送データを選択的に受信する。
クライアント・デバイス110によって実行される、データ構成の視聴者選択を可能にすることは、コンピュータによって実行される、アプリケーション・モジュールなどの、コンピュータ実行可能命令の全般的なコンテキストで説明することができる。一般に、アプリケーション・モジュールには、特定のタスクを実行するか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。複数のデータ構成のいずれか1つに従って放送データを選択的に受信するように構成されたクライアント・デバイスは、複数のプログラミング技法のいずれかを使用して実装することができ、ローカル・コンピューティング環境に実装するか、複数の通信プロトコルのいずれかに基づくさまざまな通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実装することができる。そのような分散コンピューティング環境では、アプリケーション・モジュールを、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体に配置することができる。
図9に、複数のデータ構成の1つについての視聴者選択を可能とし、選択されたデータ構成に従って放送データを選択的に受信する方法900を示す。例示のために、図9を、図1、図2および図8に示されたコンポーネントを参照して説明する。
ブロック902で、クライアント・デバイス110は、その特定のクライアント・デバイスに適切な領域構成ファイルを獲得する。たとえば、一実装形態では、各領域構成ファイルに、複数のクライアント・デバイスに関連付けられた領域識別子に基づく名前がつけられる。ヘッドエンド108が、その領域構成ファイルを放送すると、各特定のクライアント・デバイスは、そのクライアント・デバイスに関連付けられた領域識別子に基づく名前を有する領域構成ファイルを獲得する。上で説明したように、クライアント・デバイスに関連付けられた領域識別子は、クライアント・デバイスが製造される際に、またはクライアント・デバイスのセットアップ処理中にケーブル・プロバイダによって、などの多数の方法によって割り当てることができる。
ブロック904で、クライアント・デバイス110は、受信された領域構成ファイルから1つの構成を選択する。この構成は、前に選択された(選択されていた)構成に基づいて選択することができ、あるいは、デフォルト構成(たとえば、領域構成ファイルで最初にリストされている構成)を選択することができる。初期構成を選択する例示的な方法を、以下で図15を参照して詳細に説明する。
ブロック906で、クライアント・デバイス110は、領域構成ファイル内の最初に選択された構成定義に従って、データ・カルーセル120から放送されているデータの選択的な受信を開始する。クライアント・デバイス110は、領域構成ファイルで指定された順序で、データ・カルーセル120上のファイル・ディレクトリから放送されているデータを獲得する。
ブロック908で、クライアント・デバイス110は、受信された領域構成ファイルに基づいて、使用可能である、使用可能なデータ構成のリストを表示する。たとえば、視聴者の要求に応答して、ユーザ・インターフェース820は、構成リポジトリ214内の構成テーブルの構成名フィールドに対応する領域構成ファイルからの値のリストを表示する。
ブロック910で、クライアント・デバイス110は、視聴者による構成の選択を(ユーザ・インターフェース820を介して)受信する。視聴者が選択した構成に切り替える例示的な方法を、以下で図21を参照して説明する。
ブロック912で、クライアント・デバイス110は、領域構成ファイルの視聴者が選択した構成定義に従って、データ・カルーセル120から放送されているデータを選択的に受信する。クライアント・デバイス110は、領域構成ファイルで指定される順序で、データ・カルーセル120のファイル・ディレクトリから放送されているデータを獲得する。獲得されたデータは、クライアント・デバイス110に、選択された構成に従ってデータを表示するのに十分なデータ・セットを与える。
クライアント・デバイス110のオペレーションは、構成を選択する別の視聴者要求が受信される場合に、上で説明したようにブロック908を継続することができる。
クライアント・デバイス110のオペレーションは、クライアント・デバイス110に関連付けられた領域識別子が変更される場合、またはクライアント・デバイス110に適切な放送領域構成ファイルが修正される場合に、上で説明したようにブロック902を継続することができる。
例示的なクライアント・オブジェクトの実装形態
図10に、クライアント・オブジェクト824の選択されたコンポーネントを示す。上で説明したように、クライアント・オブジェクト824は、適当な領域構成ファイルを入手すること、タスク・オブジェクト826がサービスされるべき且つ再び取り上げるべき順序をスケジューリングすること、領域構成ファイルが変更されておらず、クライアント・デバイス110に関連付けられた領域識別子が変更されてないことを経時的に検証すること、選択された構成の詳細をタスク・オブジェクト826、ユーザ・インターフェース820、アプリケーション・プログラム816、および/またはEGPアプリケーション818から使用可能にすること、に責任を負う。例示的な実装形態では、クライアント・オブジェクト824は、状態機械として実装される。
クライアント・オブジェクト824には、状態1002、タスク・リスト1004、オペレーション1006、アプリケーション・プログラミング・インターフェース(API)ファンクション1008、タスク・アイドル・タイマ1010、および領域アイドル・タイマ1012が含まれる。クライアント・オブジェクト824は、実行するファンクションに従って、(複数の)状態(states)1002の間で遷移する。クライアント・オブジェクト824の状態は、以下で図12を参照して詳細に説明する形で、遷移する。
タスク・リスト1004は、クライアント・オブジェクト824によって維持されるタスク・オブジェクト826の順序付きリストであり、タスク・リスト1004内のタスク・オブジェクトの順序に基づいてタスク・オブジェクト826に関連付けられたファンクションの実行を容易にする。タスク・リスト1004内のタスク・オブジェクトの順序は、各タスク・オブジェクト826の次アクティビティ・タイム・プロパティに基づいており、このタクスオブジェクトは、以下で、図11を参照して詳細に説明する。
オペレーション1006は、クライアント・オブジェクト824がタスク・オブジェクト(複数)826の間でナビゲートし、それに関連するオペレーションを実行できるようにするオペレーションの基本セットである。オペレーション1006には、構成選択1014、タスク・リスト準備1016、最初のタスク取得1018、および全無効化1020を含めることができるが、これに制限はされない。
構成選択1014は、クライアント・オブジェクト824によって実行され、デフォルト構成または前に選択されていた構成を決定する。例示的な構成選択オペレーション1014を、以下で図15を参照して詳細に説明する。
タスク・リスト準備1016は、クライアント・オブジェクト824によって実行され、タスク・リスト1004を初期化する。例示的なタスク・リスト準備オペレーション1016を、下で図20を参照して詳細に説明する。
最初のタスク獲得1018は、クライアント・オブジェクト824によって実行され、次に実行されるタスクを決定する。例示的な最初のタスク取得オペレーション1018を、下で図22を参照して詳細に説明する。
全無効化1020は、クライアント・オブジェクト824によって実行され、クライアント・デバイス領域識別子が変更された(たとえば、新しい領域識別子が、ヘッドエンドから受信された)時または現在の領域構成ファイルが変更された時に、タスク・リスト1004内の各タスク・オブジェクトを無効にする。例示的な全無効化オペレーション1020を、以下で図23を参照して詳細に説明する。
アプリケーション・プログラミング・インターフェース(API)ファンクション1008は、クライアント・オブジェクト824の外部から呼び出すことができる。選択API呼出し1008には、タスク追加1022、構成のユーザ選択(choose configuration)1024、特定ファイル検索1026、およびデフォルト・パス内ファイル検索1028を含めることができるが、これに制限はされない。
タスク追加1022の呼出し(コール;call)は、クライアント・オブジェクト824が、新しいタスク・オブジェクトを生成し、各タスク・オブジェクト826を無効化することを引き起こす。例示的なタスク追加ファンクション1022を、以下で図13を参照して詳細に説明する。
構成のユーザ選択1024の呼出しは、使用可能な構成についての視聴者による選択の際に、クライアント・オブジェクト824がタスク・リスト1004を更新することを引き起こす。例示的な構成のユーザ選択ファンクション1024を、以下で図21を参照して詳細に説明する。
特定ファイル検索1026の呼出しは、クライアント・オブジェクト824が、指定されたデータ・タイプに関連付けられた指定されたファイルを突き止めることを引き起こす。例示的な特定ファイル検索ファンクション1026を、以下で図37を参照して詳細に説明する。
デフォルト・パス内ファイル検索1028の呼出しは、クライアント・オブジェクト824が、現在選択されている構成に関連付けられたデータ・タイプを逆の順序で検索することによって、指定されたファイルを突き止めることを引き起こす。例示的なデフォルト・パス内ファイル検索ファンクション1028を、以下で図38を参照して詳細に説明する。
タスク・アイドル・タイマ1010は、クライアント・オブジェクト824によって使用され、タスク・オブジェクト826を実行する時を決定する。タスク・アイドル・タイマ1010は、現在の状態およびどのタスクが現在実行されているかに従ってリセットされる。タスク・アイドル・タイマ1010の使用を、以下でタスク実行を参照して詳細に説明する。
領域アイドル・タイマ1012は、クライアント・オブジェクト824によって使用され、現在の領域構成ファイルが、現在放送されている領域構成ファイルとまだ同期化されているかどうかを検証する時と、クライアント・デバイス領域識別子が変更されたか否かを判定するためにクライアント・デバイス領域識別子を検査する時を決定する。
例示的なタスク・オブジェクトの実装形態
図11に、例示的なタスク・オブジェクト826の選択されたコンポーネントを示す。上で説明したように、各タスク・オブジェクト826は、非同期コマンドをBCFS815に発行してデータを得ることによって、選択された構成に関連付けられた特定のデータ・タイプのデータを得る責任を負う。例示的実装形態では、タスク・オブジェクト826は、状態機械として実装され、複数のプロパティ1102、複数の状態1104、および複数のオペレーション1106を有する。
プロパティ1102は、特定のタスク・オブジェクト826を定義するコンポーネントである。プロパティ1102には、下記を含めることができるが、これに制限はされない。
・ ユーザ・タスク・フラグ
・ データ・タイプ
・ 同期化すべきファイル
・ 再検査間隔
・ 次アクティビティ時刻
・ ハンドラ・ファンクション
・ ハンドラ・ファンクション引数
・ データ・サイズ限界
・ デフォルト・パス内フラグ
・ サブ・ディレクトリ・フラグ
・ ファイル・フラグ
・ 最後に同期化されたデータ・タイプ位置
・ ディレクトリ・インデックス
・ ディレクトリ・カウント
「ユーザ・タスク・フラグ」のプロパティは、タスク・オブジェクトがユーザ・タスク(以下で図12を参照して説明する)であるか否かを示す。「データ・タイプ」のプロパティは、タスク・オブジェクトに関連付けられたデータ・タイプの名前を格納する。「同期化すべきファイル」のプロパティは、定義されたタスク・オブジェクトを使用して、選択的に受信されるべき指定されたデータ・タイプに関連付けられたファイルの組を指定する。「再検査間隔」のプロパティは、変更についてデータをどれほど頻繁に検査しなければならないかを指定する。「次アクティビティ時刻」のプロパティは、タスク・オブジェクトに関連付けられたオペレーションを実行する間隔を示すのに使用される。「ハンドラ・ファンクション」のプロパティに、タスク・オブジェクト826に関連付けられたハンドラ・ファンクションへのポインタを格納する。「ハンドラ・ファンクション引数」のプロパティは、ハンドラ・ファンクションが呼び出される際に、そのハンドラ・ファンクションに渡される引数を格納する。「データ・サイズ限界」のプロパティは、指定されたデータ・タイプについて保持される最大データ・サイズを指定する。「デフォルト・パス内フラグ」のプロパティは、指定されたデータ・タイプに関連付けられたデータが、デフォルト・パス内ファイル検索ファンクション1028へのAPI呼出しによって開始される検索に含まれるべきか否かを示す。「サブ・ディレクトリ・フラグ」のプロパティは、指定されたデータ・タイプのデータがそこから放送される位置が、サブ・ディレクトリを含むことを示すのに使用される。「ファイル・フラグ」のプロパティは、指定されたデータ・タイプのデータがそこから放送される位置が、ファイルを含むことを示すのに使用される(サブ・ディレクトリ・フラグ・プロパティおよびファイル・フラグ・プロパティは、相互に排他的である)。「最後に同期化されたデータ・タイプ位置」は、タスク・オブジェクトに関連付けられたデータがそこから放送された位置を指定する領域構成ファイル内のタグからの値を格納する。「最後に同期化されたデータ・タイプ位置」の値は、新しい構成が選択された際に、データ・タイプを再同期化する必要があるか否かを決定するのに使用される。「ディレクトリ・インデックス」のプロパティは、どのサブ・ディレクトリが現在オペレーション状態にあるかを示す整数を格納する。「ディレクトリ・カウント」のプロパティは、現在同期化が完了しているディレクトリの数を示す整数を格納する。「ディレクトリ・インデックス」のプロパティおよび「ディレクトリ・カウント」のプロパティの使用を、以下で図34を参照して詳細に説明する。
状態1104は、(状態機械として実装されている)タスク・オブジェクト(複数)826が所与の時になる可能性がある複数の状態を表す。各タスク・オブジェクト826は、それが実行するファンクションに従って、複数の状態1104の間で遷移する。タスク・オブジェクト状態遷移を、以下で図24および28を参照して詳細に説明する。
オペレーション1106は、特定のタスク・オブジェクト826によって、またはそれに関して実行することができるオペレーションを表す。オペレーション1106には、リセット1108、棚上げ(shelve)1110、チェック/無効化1112、およびデフォルト・ディレクトリ・リスト保守1114を含めることができるが、これに制限はされない。
リセット・オペレーション1108は、タスク・オブジェクトの状態が変化し、タスクに関連付けられたデータ・タイプのデータ獲得が、最初から再開される時に実行される。例示的なリセット・オペレーション1108を、以下で図34を参照して詳細に説明する。
棚上げオペレーション1110は、タスクがユーザによって生成された(すなわち、ユーザ・タスク)が、現在選択されている構成によって使用されない時に実行される。例示的な棚上げオペレーション1110を、以下で図35を参照して詳細に説明する。
チェック/無効化オペレーション1112は、タスク・リスト1004から、新たに選択された構成に関連付けられていないタスク・オブジェクト826をクリアするために実行される。例示的なチェック/無効化オペレーション1112を、以下で図36を参照して詳細に説明する。
デフォルト・ディレクトリ・リスト保守オペレーション1114は、デフォルト・パスの新しいディレクトリが、同期化されるかそのコンテンツを削除された時に実行される。たとえば、タスク・オブジェクトが同期化される時に、タスク・オブジェクト826は、そのタスクに関連付けられたデータ・タイプが、あるデータ・タイプ・グループに属するかどうかを調べることができる。属する場合には、どのデータ・タイプ・グループが使用可能かについてのリストを、(グループ内のデータ・タイプのすべてが同期化されているか否かに基づいて)更新することができる。特定のデータ・タイプ・グループに関連するデータのすべてが、同期化されていることがわかった場合には、初期化オペレーションの組を実行して、アクセスされるべきデータを準備することができる。たとえば、特定のデータ・タイプに関連付けられて受信されたスクリプト・ファイルを、初期化中に実行することができる。そのようなスクリプト・ファイルは、たとえば、フォントの組を使用可能にするのに使用することができる。実行することができるもう1つの初期化の例が、リソース・ファイルの順序付きリストの生成である。受信されたリソース・ファイルに、定義されるレイアウトに従って表示されるべき特定のテキスト・ストリングが含まれる場合がある。一実装形態では、リソース・ファイルのリストは、領域構成ファイルで指定されるデータ・タイプの順序に基づいて順序付けられる。ストリング値が要求される時に、逆の順序でリソース・ファイルを検索して、最後に受信されたデータが最初に検索されるようにする。(これによって、構成定義でより後に指定されたデータ・タイプに、構成定義のより前にリストされたデータ・タイプに関連付けられたデータをオーバーライドするデータが含まれるようにすることができる。)
例示的なクライアント・オブジェクト状態遷移
図12に、クライアント・オブジェクト824の状態1002の間の遷移を示す。データ構成モジュール822が初期化されると、クライアント・オブジェクト824は、タスク追加状態1202に入る。クライアント・オブジェクト824が、タスク追加状態1202である間に、他のソフトウェア・アプリケーションまたはコンポーネントによって、タスク追加API(下で図13を参照して詳細に説明する)を呼び出して、カスタマイズされたタスク・オブジェクト826を生成することができる。クライアント・オブジェクト824がタスク追加状態1202である間に生成されるタスクを、ユーザ・タスクと称する。ユーザ・タスクは、通常は、EGPアプリケーション818などのアプリケーションによって生成され、アプリケーションの生成に特に適用される受信されたデータをどのように処理するかを指定する。広告データが、通常はユーザ・タスクによって処理できるデータ・タイプのもう1つの例である。
ユーザ・タスクを追加した後に、クライアント・オブジェクト824は、領域構成ファイル獲得状態1204に入る。この状態である間に、以下で図14を参照して詳細に説明するように、適切な放送領域構成ファイルが獲得され、1つの構成が選択される。
領域構成ファイルを獲得し、1つの構成を選択した後に、クライアント・オブジェクト824は、メイン状態1206に入り、新しい領域識別子がクライアント・デバイス110に割り当てられるか、新しい領域構成ファイルが検出されるまで、メイン状態1206に留まる。メイン状態1206にいる間に、クライアント・オブジェクト824は、以下で図16から図19を参照して詳細に説明するように、タスク・オブジェクト826を管理する。
例示的なクライアント・オブジェクトのタスク追加APIファンクション
図13に、API呼出しに応答してクライアント・オブジェクト824によって実行され、新しいタスク・オブジェクト826を生成することができる例示的なタスク追加メソッド1022を示す。
本明細書に記載の実装形態では、タスク追加メソッド1022に渡すことができる引数に、下記が含まれる。
・ データ・タイプ
・ 同期化すべきファイル
・ 再検査間隔
・ ハンドラ・ファンクション
・ ハンドラ・ファンクション引数
・ データ・サイズ限界
・ デフォルト・パス内フラグ
・ サブ・ディレクトリ・フラグ
・ ファイル・フラグ
「データ・タイプ」の値は、タスクが関連付けられているデータ・タイプを示す。この値は、領域構成ファイル内に存在する可能性があるタグの名前エントリに対応する。
「同期化すべきファイル」の値は、定義されたタスク・オブジェクトを使用して選択的に受信されるべき、指定されたデータ・タイプに関連付けられたファイルの組を指定する。一実装形態では、ワイルド・カード値(たとえば、「*」)を使用して、指定されたデータ・タイプに関連付けられたすべてのファイルが同期化されなければならないことを示すことができる。
「再検査間隔」の値は、どれほど頻繁に変更についてデータを検査しなければならないかを指定する。一実装形態では、この引数は、各データ検査の間の秒数を指定する整数値である。負の値は、データを1回だけ検査することを示すのに使用でき、正の値は、データを再検査する前に、成功裡の同期化オペレーションの後に待たなければならない秒数を示すのに使用することができる。
「ハンドラ・ファンクション」の値には、生成されるタスク・オブジェクトに関連付けられた別のファンクションへのポインタを格納する。例示的実装形態では、ハンドラ・ファンクションは、特殊なデータ処理が望まれる時に使用されるコール・バック・ファンクションである。たとえば、ハンドラ・ファンクションを、EPGデータの責任を負うタスク・オブジェクトに関連付けて実装することができる。このハンドラ・ファンクションは、ローカルEPGデータが現在放送されているEPGデータと同期化されていないことを見つけた時に、どのアクションを実行するかを制御する責任を負うことができる。期限切れのEPGデータは、視聴者にとって無用なので、ハンドラ・ファンクションは、更新されたEPGデータが成功裡に受信されたか否かに無関係に、期限切れのEPGデータが削除されるようにすることができる。同様に、ハンドラ・ファンクションは、広告データについての責任を負うタスク・オブジェクトに関連付けて実装することができる。このシナリオでは、期限切れの広告は、まだ視聴者に関係する場合があるので、ハンドラ・ファンクションは、更新されたデータが成功裡に受信されるまで、期限切れの広告データを維持されるようにすることができる。
「ハンドラ・ファンクション引数」は、指定されたハンドラ・ファンクションに渡される引数を格納する。
「データ・サイズ限界」の値は、指定されたデータ・タイプのために保持される最大データ・サイズを指定する。この引数は、クライアント・デバイスのメモリ・リソースが、余分なデータで消費されないことを保証するのに使用することができる。
「デフォルト・パス内フラグ」のプロパティは、指定されたデータ・タイプに関連付けられたデータを、デフォルト・パス内ファイル検索ファンクション1028へのAPI呼出しによって開始される検索に含められるべきか否かを示す。
「サブ・ディレクトリ・フラグ」のプロパティは、指定されたデータ・タイプのデータがそこから放送される位置にサブ・ディレクトリが含まれることを示すのに使用される。
「ファイル・フラグ」のプロパティは、指定されたデータ・タイプのデータがそこから放送される位置に、ファイルが含まれることを示すのに使用される。(サブディレクトリフラグプロパティおよびファイル・フラグ・プロパティは、相互に排他的である)。
ブロック1302で、クライアント・オブジェクト824は、受信されたデータ・タイプ引数を、タスク・リスト1004に現在あるタスク・オブジェクト826と比較して、指定されたデータ・タイプのタスク・オブジェクト826が既にあるかどうかを決定する。既存のタスク・オブジェクト826が指定されたデータ・タイプについて見つかる場合に(ブロック1302からの「Yes」分岐)、ブロック1304で、タスク追加1022がエラーを返す。そうでない場合には(ブロック1302からの「No」分岐)、タスク追加1022は、ブロック1306に続く。
ブロック1306で、クライアント・オブジェクト824は、受信したパラメータに基づいて、新しいタスク・オブジェクト826を生成する。
ブロック1308で、クライアント・オブジェクト824は、新しいタスク・オブジェクト826をタスク・リスト1004に追加する。
ブロック1310で、クライアント・オブジェクト824は、新しいタスク・オブジェクトの次アクティビティ・タイムのプロパティを現在時刻(カレント・タイム)にセットし、その結果、このタスクが、タスク・アイドル・タイマ1010が次にシグナリングする(信号送りする、合図する)時に、処理の候補になるようにする。
例示的なクライアント・オブジェクトの領域構成ファイル獲得状態
図14に、領域構成ファイル獲得状態1204の間に、クライアント・オブジェクト824によって実行される例示的な方法1400を示す。
ブロック1402で、クライアント・オブジェクト824は、クライアント・デバイス110に関連付けられた領域識別子に基づいて、領域構成ファイル名を生成する。たとえば、一実装形態では、クライアント・デバイスに関連付けられた領域識別子は、0と65535の間の整数であり、領域構成ファイルは、「xxxx.rgncfg」という名前をつけられる。ここで、この「xxxx」は、必要に応じて前に0を付加される、領域識別子の4バイト16進数表現である。したがって、そのような実装形態では、クライアント・オブジェクト824は、クライアント・デバイスに関連付けられた領域識別子を、4桁の16進数値に変換し、ストリング「.rgncfg」を後に追加することによって、領域構成ファイル名を作成する。
ブロック1404で、クライアント・オブジェクト824は、作成された領域構成ファイル名をパラメータとして渡して、BCFS815へのファイル同期化呼出しを発行する。
ブロック1406で、クライアント・オブジェクト824は、要求された領域構成ファイルが受信されたか否かを決定する。領域構成ファイルが、受信されていない場合には(ブロック1406からの「No」分岐)、ブロック1404で、クライアント・オブジェクト824はファイル同期呼出しを再発行する。
領域構成ファイルが成功裡に獲得された場合に(ブロック1406からの「Yes」分岐)、ブロック1408で、クライアント・オブジェクト824は、構成選択オペレーション1014(以下で図15を参照して詳細に説明する)を実行することによって、受信された領域構成ファイルで指定される構成を選択する。
ブロック1410で、クライアント・オブジェクト824は、クライアント・オブジェクトの領域アイドル・タイマ1012に、将来のタイム(たとえば、カレント・タイム(現在時刻)から10分)をセットする。
ブロック1412で、クライアント・オブジェクト824は、タスク・アイドル・タイマ1010をカレント・タイム(現在時刻)にセットし、その結果、タスク・リスト1004の最初のタスクが、できる限り早く実行されるようになる。
ブロック1414で、クライアント・オブジェクト824が、メイン状態1206に入る。メイン状態1206である間にクライアント・オブジェクト824によって実行されるオペレーションは、以下で図16を参照して詳細に説明する。
例示的なクライアント・オブジェクトの構成選択オペレーション
図15に、クライアント・オブジェクト824によって実行することができる例示的な構成選択オペレーション1014を示す。構成選択1014は、領域構成ファイル獲得状態1204である間に、クライアント・オブジェクト824によって実行され、適当な領域構成ファイルが受信された後に、初期構成選択を行う。
ブロック1502で、クライアント・オブジェクト824は、受信された領域構成ファイルに従って使用可能な構成のリストを識別する。
ブロック1504で、クライアント・オブジェクト824は、前に視聴者が選択していた構成を示す構成値が、メモリに格納されているか否かを決定する。本明細書に記載の実装形態では、クライアント・デバイスの領域識別子および構成識別子が、視聴者が構成を選択すると、一緒に構成値として格納される。このような方法で、クライアント・オブジェクト824は、クライアント・デバイスに関連付けられた領域識別子が変更される場合、または前に選択されていた構成がもはや使用可能でない場合に、無効な構成に基づいてデータを選択的に受信することを試みない。メモリに格納された構成値がないと決定される場合に(ブロック1504からの「No」分岐)、構成選択1014は、ブロック1512に続く。そうでない場合に(ブロック1504からの「Yes」分岐)、構成選択1014は、ブロック1506に続く。
ブロック1506では、クライアント・オブジェクト824は、格納された構成値の一部として格納された領域識別子が、現在クライアント・デバイスに関連付けられている領域識別子と一致するか否かを決定する。格納された領域識別子が、現在のクライアント・デバイスの領域識別子と一致しないと決定される場合に(ブロック1506からの「No」分岐)、構成選択1014は、ブロック1512に続く。そうでない場合に(ブロック1506からの「Yes」分岐)、構成選択1014は、ブロック1508に続く。
ブロック1508で、クライアント・オブジェクト824は、格納された構成識別子が、受信された領域構成ファイルの構成識別子と一致するかどうかを決定する。格納された構成識別子が、使用可能な構成と一致しないと判定される場合に(ブロック1508からの「No」分岐)、構成選択1014は、以下で説明するブロック1512に続く。そうでない場合に(ブロック1508からの「Yes」分岐)、構成選択1014は、ブロック1510に続く。
ブロック1510で、クライアント・オブジェクト824は、現在の構成として、格納された構成識別子と一致する、受信された領域構成ファイルの構成定義を選択する。
ブロック1512では、有効な構成値が格納されていないと判定される場合に(ブロック1504、1506、または1508のいずれかからの「No」分岐)、クライアント・オブジェクト824は、現在の構成として、受信された領域構成ファイルの最初にリストされた構成を選択する。
例示的なクライアント・オブジェクトのメイン状態
図16から図19に、メイン状態1206である間にクライアント・オブジェクト824によって実行される例示的な方法1600を示す。
ブロック1602で、現在選択されている構成に従ってタスク・リスト1004を初期化するために、クライアント・オブジェクト824によってタスク・リスト準備オペレーション1016が実行される。例示的なタスク・リスト準備オペレーション1016を、以下で図20を参照して詳細に説明する。
ブロック1604で、クライアント・オブジェクト824は、タスク・アイドル・タイマ1010がシグナリングしたか否かを決定する。タスク・アイドル・タイマ1010がシグナリングした場合に(ブロック1604からの「Yes」分岐)、メイン状態の処理は、以下で図17を参照して説明するステップ1606に続く。
ブロック1608で、クライアント・オブジェクト824は、BCFS815から応答を受け取ったか否かを決定する。クライアント・オブジェクト824がBCFS815から応答(レスポンス)を受け取った場合に(ブロック1608からの「Yes」分岐)、メイン状態の処理は、以下で図18を参照して説明するステップ1610に続く。
ブロック1612で、クライアント・オブジェクト824は、領域アイドル・タイマ1012がシグナリングしたか否かを決定する。領域アイドル・タイマ1012がシグナリングした場合に(ブロック1612からの「Yes」分岐)、メイン状態の処理は、下で図19を参照して説明するステップ1614に続く。
ブロック1616で、クライアント・オブジェクト824は、構成のユーザ選択1024へのAPI呼出しが受信されたか否かを判定する。構成のユーザ選択1024へのAPI呼出しが受信された場合に(ブロック1616からの「Yes」分岐)、メイン状態の処理は、ステップ1618に続く。
メイン状態の処理は、上で説明した条件の1つが満たされるまで継続される。
ブロック1618で、クライアント・オブジェクト824は、以下で図21を参照して説明するように、構成のユーザ選択1024を実行する。
ブロック1620で、クライアント・オブジェクト824は、メイン状態1206に、再び、入る。
図17に、メイン状態1206である間にタスク・アイドル・タイマ1010からのシグナルに応答してクライアント・オブジェクト824によって実行される例示的な方法1700を示す。
ブロック1702で、クライアント・オブジェクト824は、最初のタスク獲得オペレーション1018を実行して、次に呼び出されるタスク・オブジェクト826を決定する。例示的な最初のタスク取得オペレーション1018を、以下で図22を参照して詳細に説明する。
ブロック1704で、クライアント・オブジェクト824は、タスク・リスト1004内の最初のタスク・オブジェクト826の次アクティビティ時刻プロパティを検査する。次アクティビティ時刻が、現在時刻と等しいかそれより前(過去)である場合に(ブロック1704からの「No」分岐)、ブロック1706で、クライアント・オブジェクト824によって、タスク・アイドル・タイマ1010がセットされて、タスク・リスト1004内の最初のタスク・オブジェクトの次アクティビティ時刻プロパティと等しい時刻がシグナリングされる。メイン状態の処理は、ブロック1710に続く。
ブロック1708で、クライアント・オブジェクト824は、タスク・リスト1004の最初のタスク・オブジェクト826を呼出し、タスク・オブジェクトを実行させる。
ブロック1710で、クライアント・オブジェクト824が、再び、メイン状態1206に入る。
図18に、メイン状態1206である間に、応答がBCFS815から受信される時に、クライアント・オブジェクト824によって実行される例示的な方法1800を示す。
ブロック1802で、クライアント・オブジェクト824は、受信されたBCFS応答を、タスク・リスト1004の最初のタスク・オブジェクトに転送する。
ブロック1804で、クライアント・オブジェクト824は、タスク・オブジェクトから応答を受信する。
ブロック1806で、クライアント・オブジェクト824は、タスクが同期していることをタスク・オブジェクトからの応答が示しているかどうかを、決定する。タスクが同期している場合に(ブロック1806からの「Yes」分岐)、ブロック1808で、タスク・オブジェクト826は、タスク・リスト1004の最後にプッシュされる。
ブロック1810で、クライアント・オブジェクト824は、タスク・オブジェクトからの応答が、タスク・オペレーションが成功裡に実行されたことを示していかどうかを決定する。その応答が成功を示す場合に(ブロック1810からの「Yes」分岐)、ブロック1812で、クライアント・オブジェクト824は、タスク・アイドル・タイマ1010をカレント・タイムにセットする。
そうではなく、その応答が失敗を示す場合に(ブロック1810からの「No」分岐)、ブロック1814で、クライアント・オブジェクト824は、タスク・アイドル・タイマ1010に、近い将来のタイム(たとえば、カレント・タイムから5秒)をセットする。
ブロック1816で、クライアント・オブジェクト824が、再び、メイン状態1206に入る。
図19に、メイン状態1206である間に領域アイドル・タイマ1012からのシグナルに応答してクライアント・オブジェクト824によって実行される例示的な方法1900を示す。
ブロック1902で、クライアント・オブジェクト824は、現在の構成が選択された時以降にクライアント・デバイス領域識別子が変更されたか否かを決定する。一実装形態では、クライアント・オブジェクト824によって、現在のクライアント・デバイス領域識別子が、現在選択されている構成に関連付けられた格納された構成値の領域識別子部分と比較される。クライアント・デバイス領域識別子が変更されている場合に(ブロック1902からの「Yes」分岐)、メイン状態の処理は、ブロック1910に続く。
ブロック1904で、クライアント・オブジェクト824は、現在の領域構成ファイルが、現在放送されつつある同一の名前の領域構成ファイルと同期化されているか否かを決定する。領域構成ファイルが同期化されていない場合に(ブロック1904からの「No」分岐)、メイン状態の処理は、ブロック1910で継続される。
ブロック1906で、クライアント・オブジェクト824は、領域アイドル・タイマ1012を、将来のタイム(たとえば、カレント・タイムから10分)と等しくなるようにセットする。
ブロック1908で、クライアント・オブジェクト824は、再び、メイン状態1206に入る。
クライアント・デバイス領域識別子の不一致(ブロック1902からの「Yes」分岐)または領域構成ファイルの不一致(ブロック1904からの「No」分岐)のいずれかが見つかった場合に、ブロック1910で、クライアント・オブジェクト824は、全無効化オペレーション1020を実行して、現在タスク・リスト1004にあるタスク・オブジェクトが実行されないようにする。例示的な全無効化オペレーション1020を、以下で図23を参照して詳細に説明する。
ブロック1912で、クライアント・オブジェクト824は、領域構成ファイル獲得状態1204に入る。
例示的なクライアント・オブジェクトのタスク・リスト準備オペレーション
図20に、クライアント・オブジェクト824によって実行することができる例示的なタスク・リスト準備オペレーション1016を示す。タスク・リスト準備1016は、領域構成ファイル取得状態1204である間に、クライアント・オブジェクト824によって実行され、現在選択されている構成に基づいてタスク・リスト1004を初期化する。
ブロック2002で、クライアント・オブジェクト824は、領域構成ファイルの現在選択されている構成に関連付けられた最初の非メタ・タグを識別する。
ブロック2004で、クライアント・オブジェクト824は、タスク・リスト1004を検査して、ブロック2002で識別された非メタタグによって示されるデータ・タイプに関連付けられたタスク・オブジェクト826が存在するか否かを判定する。一致するタスクがタスク・リスト1004にない場合に(ブロック2004からの「No」分岐)、タスク・リスト準備1016は、ブロック2006に続く。そうではなく、一致するタスクがタスク・リスト1004にある場合に(ブロック2006からの「Yes」分岐)、タスク・リスト準備1016は、以下で説明するブロック2010に続く。
ブロック2006で、クライアント・オブジェクト824は、ブロック2002で識別されたタグが、必須タグであるか否かを判定する。領域構成ファイルの例を参照して上で説明したように、データ・タグの最初のエントリは、そのタグがメタデータ(meta)、必須データ(req)または任意選択データ(opt)のどれを指定するかを示す。識別されたタグが、必須タグでないと決定される場合に(ブロック2006からの「No」分岐)、クライアント・オブジェクト824は、動作を行わず、タスク・リスト準備1016は、以下で説明するブロック2012に続く。
識別されたタグが必須タグと判定される(ブロック2006からの「Yes」分岐)と、ブロック2008で、クライアント・オブジェクト824は、非ユーザ・タスク・オブジェクト826を生成しそのタスクをタスク・リスト1004の最後に追加する。非ユーザ・タスク・オブジェクトは、デフォルトのパラメータ・セットを用いてタスク追加APIファンクション1022を呼び出すことによって生成することができる。代替実装形態では、タスク追加1022の入力パラメータを、たとえばタスク・オブジェクト826に関連付けられたタグの追加エントリとして、領域構成ファイルに含めることができる。タスク・リスト準備1016は、その後、以下で説明するブロック2012に続く。
識別されたタグに一致するタスクが既にタスク・リスト1004に存在すると判定されると、ブロック2010で、クライアント・オブジェクト824は、既存のタスク・オブジェクトをタスク・リスト1004の終りにプッシュする。さらに、これが、タスク・リストの終りにプッシュされる最初のタスク・オブジェクトである場合には、クライアント・オブジェクト824は、タスク・リスト1004の終りに最初にプッシュされるタスクとしてそのタスクにフラグを立てる。
ブロック2012で、クライアント・オブジェクト824は、領域構成ファイルを検査して、選択された構成の定義に関連付けられた追加の非メタ・タグがあるか否かを決定する。追加の非メタタグがある場合に(ブロック2012からの「Yes」分岐)、タスク・リスト準備1016は、選択された構成に関連付けられた残りの非メタタグがなくなるまで、ブロック2002から2012をループする。タスク・リスト準備1016は、その後、ブロック2014に続く。
ブロック2014で、クライアント・オブジェクト824は、タスク・リスト1004を検査して、(上でブロック2010に関して説明したように)リストの最初のタスクに、タスク・リストの終りに最初にプッシュされたタスクとしてフラグが立てられているか否かを決定する。タスク・リスト1004の最初のタスクが、最初にプッシュされたタスクとしてフラグを立てられていると決定される場合に(ブロック2014からの「Yes」分岐)、クライアント・オブジェクト824は、これ以上の動作を行わず、タスク・リスト準備1016は終了する。他一方、タスク・リスト1004の最初のタスクが、最初にプッシュされたタスクとしてフラグを立てられていない場合に(ブロック2014からの「No」分岐)、タスク・リスト準備1016は、ブロック2016に続く。
ブロック2016で、クライアント・オブジェクト824によって、タスク・リスト1004の最初のタスクを検査して、そのタスクがユーザ・タスクであるか否かを決定する(ユーザ・タスクとは、上で図12に関して説明したように、クライアント・オブジェクト824がタスク追加状態1202である間に生成されるタスク・オブジェクトである)。タスク・リスト1004の最初のタスクがユーザ・タスクである場合に(ブロック2016からの「Yes」分岐)、タスク・リスト準備1016は、ブロック2018に続く。そうでない場合に(ブロック2016からの「No」分岐)、タスク・リスト準備1016は、ブロック2020に続く。
ブロック2018で、クライアント・オブジェクト824は、タスク・リスト1004の最初のタスクを棚上げする。タスクは、棚上げされると、タスク・リストに残るが、そのタスクが実行されないことを保証する最も遠い将来を表す日付および時刻にセットされた次アクティビティ時刻プロパティを有する。タスクの棚上げの例示的な方法を、以下で図35を参照して詳細に説明する。
ブロック2020で、クライアント・オブジェクト824は、タスク・リスト1004の最初のタスクを削除する。
その後、タスク・リスト準備1016は、ブロック2014にループバックし、タスク・リスト1004の最初のタスクが、タスク・リスト1004の終りにプッシュされた最初のタスクとしてブロック2010でフラグを立てられたタスクになるまで、ブロック2014からブロック2020までが繰り返される。
例示的なクライアント・オブジェクトの構成選択APIファンクション
図21に、API呼出しに応答してクライアント・オブジェクト824によって実行することができる例示的な構成のユーザ選択方法1024を示す。構成のユーザ選択1024は、ユーザ・インターフェース820などのユーザインターフェースコンポーネントを介して視聴者が呼び出すことができる。ユーザ・インターフェース820は、現在選択されている構成が強調(ハイライト)表示された状態で(または他の形で表されて)、使用可能な構成のリストが視聴者から使用可能にする。視聴者が、(現在選択されている構成以外の)構成を選択すると、構成のユーザ選択1024が呼び出される。
ブロック2102で、クライアント・オブジェクト824は、必要とされるアプリケーション特定のシャットダウン・プロシージャ(any application-specific shutdown procedures)を実行して、クライアント・デバイスをどのデータ・ファイルに依存しないセーフ(安全)モードにする。たとえば、クライアント・デバイスを、視聴者が放送番組を見続けることができるが、ペイパービュー購入、チャネル・ロック、構成選択などのオペレーションの実行に必要なデータなどの、追加の放送データのどれにもアクセスすることを許可されない、特殊な状態にすることができる。
ブロック2104で、クライアント・オブジェクト824は、クライアント・オブジェクト内の前に選択されていた構成に関連付けられた構成識別子を格納する。たとえば、クライアント・オブジェクト824は、現在の構成識別子を保持するローカル変数をセットする。この値は、不必要なタスク・オブジェクトをすべてクリアするために、新しい構成を前の構成と比較するのに使用される。
ブロック2106で、クライアント・オブジェクト824は、タスク・リスト1004のタスクのそれぞれについて、チェック/無効化オペレーション1112を呼び出す。チェック/無効化1112は、新たに選択された構成に関連付けられていないデータを解放するのに使用される。例示的なチェック/無効化のタスク・オペレーション1112を、以下で図36を参照して詳細に説明する。
ブロック2108で、クライアント・オブジェクト824は、タスク・リスト準備1016(上で図20に関して説明した)を実行して、新たに選択された構成に対応するようにタスク・リスト1004を初期化する。
ブロック2110で、クライアント・オブジェクト824は、現在のクライアント・デバイス領域識別子および現在選択されている構成識別子を、不揮発性メモリ812内に構成値として格納する。上で説明したように、現在の領域識別子および現在選択されている構成識別子を格納することは、クライアント・デバイス110が、スタートアップ時に、最後に選択された構成を再ロードすることを可能とする。しかし、クライアント・デバイス領域識別子が変更されたか、あるいは前に選択されていた構成がもはや使用可能でない場合には、クライアント・デバイス110は、前に選択されていた構成の再ロードを試みることを防止しる。
例示的なクライアント・オブジェクトの最初のタスク獲得オペレーション
図22に、クライアント・オブジェクト824によって実行できる例示的な最初のタスク獲得オペレーション1018を示す。最初のタスク獲得1018は、クライアント・オブジェクト824によって実行され、次のタスクを実行する時であることをタスク・アイドル・タイマ1010がシグナリングする時に、どのタスクを実行するかを決定する。
ブロック2202で、クライアント・オブジェクト824は、タスク・リスト1004の最初のタスクを識別する。
ブロック2204で、クライアント・オブジェクト824は、タスク・リスト1004の最初のタスクの次アクティビティ時刻プロパティを、現在時間と比較する。次のアクティビティ・タイムのプロパティが、現在時刻と等しいかそれより前(過去)である場合に(ブロック2204からの「Yes」分岐)、最初のタスク獲得1018が終了する。そうでない場合に(ブロック2204からの「No」分岐)、最初のタスク獲得1018は、ブロック2206に続く。
ブロック2206で、クライアント・オブジェクト824は、現在のタスク・オブジェクトに関連付けられたタスク識別子および次アクティビティ時刻を格納し、そのタスクを、最も早い次アクティビティ時刻を有するタスクとして識別する。
ブロック2208で、クライアント・オブジェクト824は、タスク・リスト1004内にまだタスクがあるか否かを判定する。タスク・リスト1004にまだタスクがある場合に(ブロック2208からの「Yes」分岐)、最初のタスク獲得1018は、ブロック2212に続く。そうでない場合に(ブロック2208からの「No」分岐)、ブロック2210で、最初のタスク獲得1018は、格納されたタスク識別子に関連付けられたタスク・オブジェクト826を、タスク・リスト1004内の最初の位置に移動し、その後、終了する。
ブロック2212で、クライアント・オブジェクト824は、タスク・リスト1004の次のタスクを識別する。
ブロック2214で、クライアント・オブジェクト824は、タスクの次アクティビティ時刻プロパティを、カレント・タイム(現在時刻)と比較する。次アクティビティ時刻プロパティが、現在時刻と等しいかそれより前(過去)である場合に(ブロック2214からの「Yes」分岐)、最初のタスク獲得1018は、ブロック2216に続く。そうでない場合に(ブロック2214からの「No」分岐)、最初のタスク獲得1018は、ブロック2218に続く。
ブロック2216で、クライアント・オブジェクト824は、現在のタスク・オブジェクト826を、タスク・リスト1004の最初の位置に移動し、終了する。
ブロック2218で、クライアント・オブジェクト824は、現在選択されているタスクの次アクティビティ時刻プロパティを、ブロック2206に関して説明したように格納された次アクティビティ時刻プロパティと比較する。現在のタスクの次アクティビティ時刻が、格納された次アクティビティ時刻の前である場合に(ブロック2218からの「Yes」分岐)、最初のタスク取得1018は、ブロック2206にループバックする。そうでない場合に(ブロック2218からの「No」分岐)、最初のタスク取得1018は、上で説明したように、ブロック2208にループバックする。
例示的なクライアント・オブジェクトの全無効化オペレーション
図23に、クライアント・オブジェクト824によって実行することができる例示的な全無効化オペレーション1020を示す。全無効化1020は、領域識別子が変更された(たとえば、新しい領域識別子をヘッドエンドから受け取った)ことを検出したこと、または現在の領域構成ファイルが変更されたことを検出したことのいずれかに起因して、クライアント・オブジェクト824がメイン状態1206から出る時に実行される。全無効化1020は、タスク・リスト1004内の各タスクを無効化し、クライアント・オブジェクト824を、領域構成ファイル獲得状態1204に置く。
ブロック2302で、クライアント・オブジェクト824は、必要である可能性があるアプリケーション特定のシャットダウン・プロシージャを実行し、クライアント・デバイスを安全モードにする。たとえば、クライアント・デバイスを、視聴者が放送番組を見続けることができるが、ペイパービュー購入、チャネル・ロック、構成選択などのオペレーションの実行に必要なデータなどの、追加の放送データのどれにもアクセスすることを許可されない、特殊な状態にすることができる。
ブロック2304で、クライアント・オブジェクト824は、タスク・リスト1004の各タスクに関連付けられたリセット・ファンクションを呼び出す。たとえば、クライアント・オブジェクト824は、タスク・リスト1004を通してループし、タスク・リスト1004のタスク・オブジェクトごとにタスク・オブジェクト・リセット・オペレーション1108を呼び出す。例示的なタスク・オブジェクト・リセットオペレーション1108を、以下で図34を参照して詳細に説明する。
ブロック2306で、クライアント・オブジェクト824は、その現在の状態が領域構成ファイル獲得状態1204であるかどうかを決定する。現在の状態が領域構成ファイル獲得状態である場合に(ブロック2306からの「Yes」分岐)、全無効化1020は、ブロック2308に続く。そうでない場合に(ブロック2306からの「No」分岐)、全無効化1020は、ブロック2312に続く。
ブロック2308で、クライアント・オブジェクト824は、未解決のBCFS要求のすべてを取り消す。
ブロック2310で、クライアント・オブジェクト824は、現在の領域構成ファイルを解放する。本明細書に記載の実装形態では、受信された放送データは、クライアント・オブジェクト824によってRAM内で維持される。代替実装形態では、受信された放送データは、ハード・ドライブまたは他のメモリ・デバイスに格納することができる。実装形態に応じて、クライアント・オブジェクト824は、領域構成ファイルが維持されるRAMを解放することによって、ハード・ドライブに格納された領域構成ファイルを削除することによって、またはストレージスペースを使用可能にする他の方法によって、現在の領域構成ファイルを解放する。
ブロック2312で、クライアント・オブジェクト824は、領域構成ファイル獲得状態1204に入る。
例示的なタスク・オブジェクトの状態遷移
本明細書に記載の実装形態では、タスク・オブジェクト826は、生成される形に応じて、単一のディレクトリのコンテンツを監視する責任を負う場合があり、特定のディレクトリの下のすべてのサブ・ディレクトリのコンテンツを監視する責任を負う場合がある。ファイル・フラグのプロパティ・セットを有して生成されたタスク・オブジェクト826は、単一ディレクトリのコンテンツを監視する責任を負い、サブ・ディレクトリ・フラグのプロパティ・セットを有して生成されたタスク・オブジェクト826は、特定のディレクトリの下のすべてのサブ・ディレクトリのコンテンツを監視する責任を負う。本明細書に記載の実装形態では、1レベルのサブ・ディレクトリだけがサポートされるが、追加のサブ・ディレクトリ・レベルのサポートも、同様に実装できることを認識されたい。
タスク・オブジェクト826は、クライアント・オブジェクト824から2タイプのメッセージを受け取ることができる。第1のタイプは、タスク・アイドル・タイマ1010がシグナリングしたことを示し、タスク・オブジェクト826が、そのタスク・オブジェクトの現在の状態に基づいて次に実行する適切なBCFSコマンドを決定することを引き起こす。受け取ることができる第2のタイプのメッセージは、BCFS815からの応答である。
ファイルに関する責任を負うタスク・オブジェクトの状態遷移
図24に、単一ディレクトリのコンテンツを監視する(ファイル・フラグのプロパティによって示される)、生成されたタスク・オブジェクト826の状態1104の間の遷移を示す。タスク・オブジェクト826が生成される(たとえば、タスク追加1022へのAPI呼出しを介して)と、またはリセットされた(例示的なタスクリセットオペレーション1108を、下で図34に関して詳細に説明する)ばかりの時に、タスク・オブジェクト826は新しい状態2402に入る。タスク・オブジェクト826は、新しい状態2402である間に、タスク・オブジェクトが処理されるべき(または実行される)ことのシグナルを受け取ると、同期化状態2404に入る。タスク・オブジェクト826の新しい状態の処理を、以下で図25を参照して詳細に説明する。
同期化状態(syncing state)2404である間に、タスク・オブジェクト826は、タスク・オブジェクト826に関連付けられたローカルに維持されるデータを、放送されている同一データ・タイプのデータと同期化することを試みる。タスク・オブジェクト826は、データが成功裡に同期化されるまで(その時点で、タスク・オブジェクト826は、同期状態2406に入る)、または、たとえば視聴者が新しい構成を選択する時などの、タスク・オブジェクトが無効化される時点まで(その時点で、タスク・オブジェクト826は、新しい状態2402に入る)、同期化状態2404に留まる。タスク・オブジェクト826の同期化状態の処理を、以下で図26を参照して詳細に説明する。
同期状態(synced state)2406である間に、タスク・オブジェクト826は、同期化されたデータが同期化されたままであることを検証する。タスク・オブジェクト826は、データがもはや同期化されていないと決定すると、再び、同期化状態2404に入る。タスク・オブジェクト826が、たとえば視聴者が新しい構成を選択した時など、無効化される場合に、タスク・オブジェクト826は、再び、新しい状態2402に入る。タスク・オブジェクト826の同期状態の処理を、以下で図27を参照して詳細に説明する。
図25に、新しい状態2402である間にタスク・オブジェクト826によって実行される例示的な方法2500を示す。
ブロック2502で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信するのを待つ。
ブロック2504で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック2506で、タスク・オブジェクト826は、(現在のタスク・オブジェクト826に関連付けられた構成定義内のタグのタグ値によって示される)タスクのデータ・タイプに関連付けられたディレクトリを指定して、BCFS815へのディレクトリ・シーク呼出しを発行する。
ブロック2508で、タスク・オブジェクト826は、BCFS815からの応答が受け取られるのを待つ。
ブロック2510で、タスク・オブジェクト826は、BCFS815から応答を受信する。
ブロック2512で、タスク・オブジェクト826は、BCFSディレクトリ・シーク呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCFSディレクトリ・シーク呼出しが成功であった場合に(ブロック2512からの「Yes」分岐)、タスク・オブジェクトの新しい状態の処理は、ブロック2514に続く。他方、BCFSディレクトリ・シーク呼出しが失敗した場合に(ブロック2512からの「No」分岐)、タスク・オブジェクトの新しい状態の処理は、ブロック2516に続く。
ブロック2514で、タスク・オブジェクト826は、受け取ったBCFS応答を検査して、指定されたタイプの放送データが、タスク・オブジェクト826に関連付けられたデータ・サイズ限界プロパティ値を超えたかどうかを決定する。
データ・サイズ限界を超える場合に(ブロック2514からの「Yes」分岐)、タスク・オブジェクトの新しい状態の処理は、ブロック2516に続く。他方、データ・サイズ限界を超えない場合、またはデータ・サイズ限界が指定されていない場合に(ブロック2514からの「No」分岐)、ブロック2518で、タスク・オブジェクト826は、同期化状態2404に入る。
ブロック2516で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、将来の時刻(たとえば現在時刻から5分)にセットし、タスク・オブジェクト826は新しい状態2402に留まり、ブロック2502に処理が継続される。
図26に、同期化状態2404である間に、タスク・オブジェクト826によって実行される例示的な方法2600を示す。
ブロック2602で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック2604で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック2606で、タスク・オブジェクト826は、(現在のタスク・オブジェクト826に関連付けられた構成定義のタグのタグ値によって示される)タスクのデータ・タイプに関連付けられたディレクトリを指定して、BCFS815へのディレクトリ同期化呼出しを発行する。
ブロック2608で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック2610で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック2612で、タスク・オブジェクト826は、BCFSディレクトリ同期化呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCFSディレクトリ同期化呼出しが成功であった場合に(ブロック2612からの「Yes」分岐)、タスク・オブジェクトの同期化状態の処理は、ブロック2614に続く。他方、BCFSディレクトリ同期化呼出しが失敗であった場合に(ブロック2612からの「No」分岐)、タスク・オブジェクトの同期化状態の処理は、ブロック2618に続く。
ブロック2614で、タスク・オブジェクト826は、受け取ったBCFS応答を検査して、指定されたタイプの放送データが、タスク・オブジェクト826に関連付けられたデータ・サイズ限界プロパティ値を超えたかどうかを決定する。
データ・サイズ限界を超える場合に(ブロック2614からの「Yes」分岐)、タスク・オブジェクトの同期化状態の処理は、ブロック2616に続く。他方、データ・サイズ限界を超えない場合、またはデータ・サイズ限界が指定されていない場合に(ブロック2614からの「No」分岐)、タスク・オブジェクトの同期化状態のオペレーションは、以下で説明するブロック2620に続く。
ブロック2616で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、将来の時刻(たとえば、現在時刻から5分)にセットする。
ブロック2618で、タスク・オブジェクト826は、現在のタスク・オブジェクトに関連して受信されたデータのすべてを(メモリの削除または解放によって)解放し、タスク・オブジェクト826は、同期化状態2404に留まり、ブロック2602にループバックする。
ブロック2620で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、現在時刻に再検査間隔プロパティの値を足した値にセットする。
ブロック2622で、タスク・オブジェクト826は、ハンドラ・ファンクションが(タスク・オブジェクト826のタスク・ハンドラ・ファンクションプロパティによって示される)そのタスク・オブジェクトに関連付けられているかどうかを決定する。ハンドラ・ファンクションが指定されている場合には、ブロック2626で、そのハンドラ・ファンクションが呼び出される。
ブロック2624で、タスク・オブジェクト826は、同期状態2406に入る。
図27aおよび27bに、同期状態2406である間にタスク・オブジェクト826によって実行される例示的な方法2700を示す。
ブロック2702で、タスク・オブジェクト826は、タスク・オブジェクトに関連付けられた構成定義内のタグからのタグ値の名前を、タスク・オブジェクトの最後に同期化されたデータ・セット・プロパティにセットする。このタグ値は、受信されたデータがそこから放送された位置を示す。この値は、タスク・オブジェクトが同期化される時に格納され、クライアント・オブジェクト824が、新しい構成が選択される際に、再同期化が必要なタスク・オブジェクトを決定できるようにする。
ブロック2704で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック2706で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック2708で、タスク・オブジェクト826は、BCFS815にディレクトリ・シーク呼出しを発行して、タスク・オブジェクト826に関連付けられたローカルに維持されるデータが、放送されているデータと、依然として同期化されているか否かを決定する。
ブロック2710で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック2712で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック2714で、タスク・オブジェクト826は、BCFSディレクトリ・シーク呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCSFディレクトリ・シーク呼出しが成功であった場合に(ブロック2714からの「Yes」分岐)、タスク・オブジェクトの同期状態の処理は、ブロック2716に続く。他方、BCSFディレクトリ・シーク呼出しが失敗であった場合に(ブロック2714からの「No」分岐)、タスク・オブジェクトの同期状態の処理は、ブロック2720に続く。
ブロック2716で、タスク・オブジェクト826は、受け取ったBCFS応答を検査して、指定されたディレクトリが依然として同期化されているかどうかを決定する。データが同期化されている場合に(ブロック2716からの「Yes」分岐)、タスク・オブジェクトの同期状態の処理は、ブロック2720に続く。そうでない場合に(ブロック2716からの「No」分岐)、タスク・オブジェクトの同期状態の処理は、ブロック2718に続く。
ブロック2718で、タスク・オブジェクト826は、受け取ったBCFS応答を検査して、指定されたタイプの放送データが、タスク・オブジェクト826に関連付けられたータ・サイズ限界プロパティ値を超えたかどうかを決定する。
データ・サイズ限界を超える場合に(ブロック2718からの「Yes」分岐)、タスク・オブジェクトの同期状態の処理は、ブロック2720に続く。他方、データ・サイズ限界を超えない場合、またはデータ・サイズ限界が指定されていない場合に(ブロック2718からの「No」分岐)、タスク・オブジェクトの同期状態の処理は、以下で説明するブロック2722に続く。
ブロック2720で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、現在時刻に再検査間隔プロパティの値を足した値にセットし、タスク・オブジェクト826は、同期状態2406に留まり、ブロック2704にループバックする。
ブロック2722で、タスク・オブジェクト826は、ハンドラ・ファンクションが(タスク・オブジェクト826のタスクハンドラ・ファンクションプロパティによって示される)そのタスク・オブジェクトに関連付けられているかどうかを決定する。ハンドラ・ファンクションが指定されていない場合には、ブロック2724で、タスク・オブジェクト826は、同期化状態2404に入る。他方、ハンドラ・ファンクションが指定されている場合には、ブロック2726で、そのハンドラ・ファンクションを呼び出して、いつ同期化が行われるかを判定し、処理は、図27bに示されたブロック2728に続く。
ブロック2728で、タスク・オブジェクト826は、ハンドラ・ファンクションからの応答に基づいて、同期化を即座に実行しなければならないかどうかを決定される。そうである場合には、ブロック2730で、タスク・オブジェクト826は、同期化状態2404に入る。
そうでない場合には、ブロック2732で、タスク・オブジェクト826は、ハンドラ・ファンクションからの応答に基づいて、同期化を短い時間のうちに実行しなければならないかどうかを決定する。そうである場合には、ブロック2734で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを近い将来の時刻(たとえば、現在時刻から5秒)にセットし、タスク・オブジェクトの同期状態の処理は、ブロック2702(図27aに図示)に続く。
ハンドラ・ファンクションからの応答によって、同期化を後に行うことが示される場合に(ブロック2732からの「No」分岐)、ブロック2736で、タスク・オブジェクト826はて、次アクティビティ時刻プロパティを、現在時刻に再検査間隔プロパティの値を足した値にセットする。タスク・オブジェクトの同期状態の処理は、ブロック2702(図27aに図示)に続く。
サブ・ディレクトリの責任を負うタスク・オブジェクトの状態遷移
図28に、特定のディレクトリの下のすべてのサブ・ディレクトリのコンテンツを監視する、生成された(サブ・ディレクトリ・フラグ・プロパティによって示される)タスク・オブジェクト826の状態1104の間の遷移を示す。図28に示された状態遷移は、タスク・オブジェクト826が、複数のサブ・ディレクトリのデータを同期化する責任を負うので、図24に示された状態遷移より複雑である。この場合に、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティおよびディレクトリ・カウント・プロパティを使用する。上で説明したように、ディレクトリ・インデックス・プロパティは、どのサブ・ディレクトリが現在操作されているかを示す整数を格納する。ディレクトリ・カウント・プロパティは、タスク・オブジェクト826によって現在同期化されているディレクトリの数を示す整数を格納する。
タスク・オブジェクト826が生成される(たとえば、タスク追加1022へのAPI呼出しを介して)時、またはリセットされた(例示的なタスクリセットオペレーション1108を、以下で図34を参照して詳細に説明する)ばかりの時に、タスク・オブジェクト826は、新しい状態2802に入る。タスク・オブジェクト826は、新しい状態2802である間にそれが処理される(または実行される)ことのシグナルを受け取る時に、有効化状態(validating state)2804に入る。このコンテキストでのタスク・オブジェクト826新しい状態の処理を、以下で図29を参照して詳細に説明する。タスク・オブジェクト826は、タスク・オブジェクトが無効化される(視聴者が、タスク・オブジェクト826が関連しない新しい構成を選択する時など)場合に、他の状態から新しい状態2802に再入する。
有効化状態2804は、タスク・オブジェクト826によって、タスク・オブジェクト826に関連付けられた各サブ・ディレクトリの同期化を制御するのに使用される。タスク・オブジェクト826有効化状態の処理を、下で図30を参照して詳細に説明する。タスク・オブジェクト826は、有効化状態2804である間に、特定のサブ・ディレクトリが同期化されていないと判定した時に、同期化状態2808に入る。タスク・オブジェクト826は、有効化状態2804である間に、そのタスクに関連付けられたサブ・ディレクトリのすべてが同期化されていると判定した時に、同期状態2806に入る。
同期化状態2808である間に、タスク・オブジェクト826は、タスク・オブジェクト826に関連付けられた特定のサブ・ディレクトリからのローカルに維持されるデータを、放送されているデータと同期化することを試みる。このコンテキストでのタスク・オブジェクト826の同期化状態の処理を、下で図31に関して詳細に説明する。サブ・ディレクトリが成功裡に同期化された時に、タスク・オブジェクトは、有効化状態2804に戻る。
タスク・オブジェクト826に関連付けられたすべてのサブ・ディレクトリが同期化された後に、タスク・オブジェクト826は、処理のシグナルがクライアント・オブジェクト824から受信されるまで、同期状態2806に留まる。同期状態2806である間に処理される時には、タスク・オブジェクト826は、タスク・オブジェクト826に関連付けられた放送されているサブ・ディレクトリを決定し、その後、タスク・オブジェクト826は、同期状態前の有効化状態2810に移る。このコンテキストでのタスク・オブジェクト826の同期状態の処理を、以下で図32を参照して詳細に説明する。
同期状態前の有効化状態2810である間に、タスク・オブジェクト826によって、タスク・オブジェクト826に関連付けられた各サブ・ディレクトリの、前に同期化されたデータが、依然として同期化されていることが検証される。タスク・オブジェクト826は、データがもはや同期化されていないと判定すると、再び、同期化状態2808に入る。タスク・オブジェクト826の同期状態前の有効化状態の処理を、以下で図33を参照して詳細に説明する。
図29に、新しい状態2802である間にタスク・オブジェクト826によって実行される例示的な方法2900を示す。
ブロック2902で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック2904で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック2906で、タスク・オブジェクト826は、(タスク・オブジェクト826のデータ・タイプに関連付けられた現在選択されている構成定義のタグのタグ値によって与えられる)タスクに関連付けられた最上位ディレクトリを指定して、BCFS815にディレクトリ・シーク呼出しを発行する。
ブロック2908で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック2910で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック2912で、タスク・オブジェクト826は、BCFSディレクトリ・シーク呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCFSディレクトリ・シーク呼出しが成功であった場合に(ブロック2912からの「Yes」分岐)、タスク・オブジェクトの新しい状態の処理は、ブロック2916に続く。他方、BCFSディレクトリ・シーク呼出しが失敗であった場合に(ブロック2912からの「No」分岐)、タスク・オブジェクトの新しい状態の処理は、ブロック2914に続く。
ブロック2914で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを将来の時刻(たとえば現在時刻から5分)にセットし、タスク・オブジェクト826は、新しい状態2802に留まり、処理はブロック2902に続く。
BCFSディレクトリ・シーク呼出しが成功であった場合に(ブロック2912からの「Yes」分岐)、BCFS815は、指定された最上位ディレクトリに関連付けられたサブ・ディレクトリのリストと、サブ・ディレクトリのカウントを返す。
ブロック2916で、タスク・オブジェクト826は、サブ・ディレクトリの返されたリストを格納する。一実装形態では、そのリストは、アルファベット順で格納され(、あるいはアルファベット順で後に処理され)る。
ブロック2918で、タスク・オブジェクト826は、BCFS815によって返されたサブ・ディレクトリのカウントを格納する。
ブロック2920で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティの値を0にセットする。
ブロック2922で、タスク・オブジェクト826は、ディレクトリ・カウント・プロパティの値を−1にセットする。
ブロック2924で、タスク・オブジェクト826は、有効化状態2804に入る。
図30に、有効化状態2804である間にタスク・オブジェクト826によって実行される例示的な方法3000を示す。
ブロック3002で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック3004で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック3006で、タスク・オブジェクト826は、タスク・オブジェクト826が新しい状態2802である間に見つかったサブ・ディレクトリについてBCFS815にディレクトリ・シーク呼出しを発行する。ディレクトリ・インデックス・プロパティは、サブ・ディレクトリの格納されたリストからサブ・ディレクトリを選択するのに使用される。
ブロック3008で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック3010で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック3012で、タスク・オブジェクト826は、BCFSディレクトリ・シーク呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCFSディレクトリ・シーク呼出しが成功であった場合に(ブロック3012からの「Yes」分岐)、タスク・オブジェクトの有効化状態の処理は、ブロック3014に続く。他方、BCFSディレクトリ・シーク呼出しが失敗であった場合に(ブロック3012からの「No」分岐)、タスク・オブジェクトの有効化処理は、ブロック3016に続く。
ブロック3014で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを将来の時刻(たとえば現在時刻から5分)にセットし、タスク・オブジェクト826は、有効化状態2804に留まり、処理はブロック3002に続く。
ブロック3016で、タスク・オブジェクト826は、受信されたBCFS応答を検査して、指定されたサブ・ディレクトリが同期化されているかどうかを決定する。BCFS815からの応答により、現在のサブ・ディレクトリが同期化されていないことが示される場合に(ブロック3016からの「No」分岐)、ブロック3018で、タスク・オブジェクト826は、同期化状態2808に入る。そうでない場合に(ブロック3016からの「Yes」分岐)、タスク・オブジェクトの有効化状態の処理は、ブロック3020に続く。
ブロック3020で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティを1つ増分する(インクリメントする)。
ブロック3022で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティの値を、BCFS815によって前に返されたサブ・ディレクトリのカウントと比較する。値が等しい(すべてのサブ・ディレクトリが同期化されたことを示す)場合に、ブロック3024で、タスク・オブジェクト826は、同期状態2806に設定される。他方、値が等しくない(同期化されていないサブ・ディレクトリが少なくとも1つあることを示す)場合に、タスク・オブジェクトの有効化状態の処理は、ブロック3002に続く。
図31に、同期化状態2808である間にタスク・オブジェクト826によって実行される例示的な方法3100を示す。
ブロック3102で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック3104で、タスク・オブジェクト826によって、クライアント・オブジェクト824から処理する信号を受信する。
ブロック3106で、タスク・オブジェクト826は、現在のサブ・ディレクトリ(ディレクトリ・インデックス・プロパティによって決定される)を指定して、BCFS815にディレクトリ同期化呼出しを発行する。一実装形態では、いくつかのデータ(たとえば、EPG検査結果を表示するページ)は、他のディレクトリ内の他のデータへのポインタを必要とする場合があるので、タスク・オブジェクト826は、ディレクトリ同期化呼出しが行われる時を制御するハンドラ・ファンクションを呼び出すことができる。
ブロック3108で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック3110で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック3112で、タスク・オブジェクト826は、BCFSディレクトリ同期化呼出しが成功であったかどうかを(返された応答に基づいて)決定する。
BCFSディレクトリ同期化呼出しが成功であった場合に(ブロック3112からの「Yes」分岐)、タスク・オブジェクトの同期化状態の処理は、ブロック3116に続く。他方、BCFSディレクトリ同期化呼出しが失敗であった場合に(ブロック3112からの「No」分岐)、タスク・オブジェクトの同期化状態の処理は、ブロック3114に続く。
ブロック3114で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを将来の時刻(たとえば現在時刻から5分)にセットし、タスク・オブジェクト826は、同期化状態2808に留まり、処理はブロック3102に続く。
ブロック3116で、タスク・オブジェクト826は、受け取ったBCFS応答を検査して、同期化されたサブ・ディレクトリ内のデータが、タスク・オブジェクト826に関連付けられたデータ・サイズ限界を超えたかどうかを決定する。
データ・サイズ限界を超えた場合に(ブロック3116からの「Yes」分岐)、ブロック3118で、タスク・オブジェクト826は、サブ・ディレクトリのリストの最後のサブ・ディレクトリに関連付けられたデータを解放され、ブロック3116に続く。
ブロック3120で、タスク・オブジェクト826は、ハンドラ・ファンクションがタスク・オブジェクト826に関連付けられている(ハンドラ・ファンクション・プロパティによって示されるように)か否かを決定する。タスク・オブジェクト826が、関連付けられたハンドラ・ファンクションを有する場合に(ブロック3120からの「Yes」分岐)、ブロック3122で、タスク・オブジェクト826はそのハンドラ・ファンクションを呼び出す。
ブロック3124で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティを1つ増分する。
ブロック3126で、タスク・オブジェクト826は、ディレクトリ・カウント・プロパティを1つ増分する。
ブロック3128で、タスク・オブジェクト826は、再び、有効化状態2804に入る。
図32に、同期状態2806である間にタスク・オブジェクト826によって実行される例示的な方法3200を示す。
ブロック3202で、タスク・オブジェクト826は、タスク・オブジェクトに関連付けられた構成定義内のタグからのタグ値の名前を、タスク・オブジェクトの最後に同期化されたデータ・セット・プロパティにセットする。このタグ値は、受信されたデータがそこから放送された最上位ディレクトリを示す。この値は、クライアント・オブジェクト824が、新しい構成が選択される時に再同期化が必要なタスク・オブジェクトを判定できるようにするために、タスク・オブジェクトが同期化される時に格納される。
ブロック3204で、タスク・オブジェクト826は、処理のシグナルがクライアント・オブジェクト824から受信されるかどうかを判定する。処理する信号が受信されるまで、タスク・オブジェクト826は、ブロック3204でのループを継続する。
ブロック3206で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティを0にセットする。
ブロック3208で、タスク・オブジェクト826は、同期状態前の有効化状態2810に入る。
図33aおよび33bに、同期状態前の有効化状態2810である間にタスク・オブジェクト826によって実行される例示的な方法3300を示す。
ブロック3302で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号が受信されるのを待つ。
ブロック3304で、タスク・オブジェクト826は、クライアント・オブジェクト824から処理する信号を受信する。
ブロック3306で、タスク・オブジェクト826は、タスク・オブジェクト826が新しい状態2802であった間に見つかったサブ・ディレクトリについて、BCFS815にディレクトリ・シーク呼出しを発行する。ディレクトリ・インデックス・プロパティが、サブ・ディレクトリの格納されたリストからサブ・ディレクトリを選択するのに使用される。
ブロック3308で、タスク・オブジェクト826は、BCFS815からの応答が受信されるのを待つ。
ブロック3310で、タスク・オブジェクト826は、BCFS815からの応答を受信する。
ブロック3312で、タスク・オブジェクト826は、BCFディレクトリ・シーク呼出しが成功であったかどうかを(受け取った応答に基づいて)決定する。
BCFSディレクトリ・シーク呼出しが成功であった場合に(ブロック3312からの「Yes」分岐)、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3316に続くる。他方、BCFSディレクトリ・シーク呼出しが失敗であった場合に(ブロック3312からの「No」分岐)、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3314に続く。
ブロック3314で、タスク・オブジェクト826は、次アクティビティ時刻プロパティに将来の時刻(たとえば現在時刻から5分)をセットし、タスク・オブジェクト826は、同期状態前の有効化状態2810に留まり、処理はブロック3302に続く。
ブロック3316で、タスク・オブジェクト826は、受信されたBCFS応答を検査して、指定されたサブ・ディレクトリが同期化されているかどうかを決定する。BCFS815からの応答によって、現在のサブ・ディレクトリが同期化されていないことが示される場合に(ブロック3316からの「No」分岐)、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3324で継続される。そうでない場合に(ブロック3316からの「Yes」分岐)、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3318に続く。
ブロック3318で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティを1つ増分する。
ブロック3320で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティの値を、BCFS815によって前に返されたサブ・ディレクトリのカウントと比較する。値が等しい(すべてのサブ・ディレクトリが同期化されたことを示す)場合に、ブロック3322で、タスク・オブジェクト826は、同期状態2806に設定する。他方、値が等しくない(同期化されていないサブ・ディレクトリが少なくとも1つあることを示す)場合に、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3302に続く。
ブロック3316で、指定されたサブ・ディレクトリが同期化されていないと判定される場合に、ブロック3324で、タスク・オブジェクト826は、ハンドラ・ファンクションがタスク・オブジェクト826に関連付けられているか否かを(ハンドラ・ファンクション・プロパティに基づいて)決定する。関連付けられたハンドラ・ファンクションがないと決定される場合には、ブロック3326で、タスク・オブジェクト826は、同期化状態2808に入る。そうでない場合には、タスク・オブジェクトの同期状態前の有効化状態の処理は、ブロック3328に続く。
ブロック3328で、タスク・オブジェクト826は、関連付けられたハンドラ・ファンクションを呼び出して、サブ・ディレクトリを同期化する時を決定し、処理は、図33bに示されたブロック3330に続く。
ブロック3330で、タスク・オブジェクト826は、ハンドラ・ファンクションからの応答に基づいて、サブ・ディレクトリを即座に同期化しなければならないかどうかを判定する。そうである場合には、ブロック3332で、タスク・オブジェクト826は、同期化状態2808に入る。
そうでない場合に、ブロック3334で、タスク・オブジェクト826は、ハンドラ・ファンクションからの応答に基づいて、サブ・ディレクトリを短い時間のうちに同期化しなければならないかどうかを判定する。そうである場合には、ブロック3336で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを近い将来の時刻(たとえば、現在時刻プラス5秒)にセットし、タスク・オブジェクトの同期状態前の有効化状態の処理は、図33aに示されたブロック3302に続く。
ハンドラ・ファンクションからの応答によって、サブ・ディレクトリが後に同期化されることが示される場合に(ブロック3334からの「No」分岐)、ブロック3338で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、現在時刻に再検査間隔プロパティの値を足した値にセットする。タスク・オブジェクトの同期状態前の有効化状態の処理は、図33aに示されたブロック3302に続く。
例示的なタスク・オブジェクトのリセット・オペレーション
図34に、タスク・オブジェクト826に関連付けられた例示的なリセット・オペレーション1108を示す。リセット・オペレーション1108は、タスク・オブジェクト826の状態が変更され、そのタスクに関するデータ獲得が、始めから再開される時に実行される。
ブロック3402で、タスク・オブジェクト826は、BCFS815に対する未解決の要求をすべて取り消す。
ブロック3404で、タスク・オブジェクト826は、クライアント・デバイス110で格納され、タスク・オブジェクト826のデータ・タイプに関連付けられている、すべてのデータ・ファイルを削除する。
ブロック3406で、タスク・オブジェクト826は、ディレクトリ・カウント・プロパティに−1をセットし、試みられているディレクトリ同期化がないことを示す。
ブロック3408で、タスク・オブジェクト826は、ディレクトリ・インデックス・プロパティを0にセットする。
ブロック3410で、タスク・オブジェクト826は、次アクティビティ時刻プロパティをカレントのタイム(現在時刻)にセットし、このタスクが近い将来に実行されることを保証する。
ブロック3412で、タスク・オブジェクト826は、新しい状態2402(または新しい状態2802)に入る。
ブロック3414で、タスク・オブジェクト826は、このタスクに関連付けられたデータが、デフォルト・パスにあるか否かが(デフォルト・パス内フラグに基づいて)判定される。タスクに関連付けられたデータがデフォルト・パス内にない場合に(ブロック3414からの「No」分岐)、リセット・オペレーション1108は終了する。そうでない場合に(ブロック3414からの「Yes」分岐)、リセット・オペレーション1108は、ブロック3416に続く。
ブロック3416で、タスク・オブジェクト826は、使用可能なディレクトリのリストを更新するために、デフォルト・ディレクトリ・リスト保守オペレーション1114を実行する。
例示的なタスク・オブジェクトの棚上げオペレーション
図35に、タスク・オブジェクト826に関連付けられた例示的な棚上げオペレーション1110を示す。棚上げオペレーション1110は、タスク・オブジェクト826がユーザによって生成されたが、現在選択されている構成によって使用されない時に実行される。
ブロック3502で、タスク・オブジェクト826は、リセット・オペレーション1108(上で図34に関して説明した)を実行する。
ブロック3504で、タスク・オブジェクト826は、次アクティビティ時刻プロパティを、表現可能な最も遅い日付/時刻にセットする。これによって、タスクが、タスク・リスト1004内に留まるが、次アクティビティ時刻プロパティが、絶対に別のタスクの次アクティビティ時刻プロパティより早くならないので、そのタスクが呼び出されないことを保証することができる。
例示的なタスク・オブジェクトの無効検査オペレーション
図36に、タスク・オブジェクト826に関連付けられた例示的なチェック/無効化オペレーション1112を示す。チェック/無効化オペレーション1112は、新たに選択された構成に関連付けられていないタスク・オブジェクトをクリアするために実行される。
ブロック3602で、タスク・オブジェクト826は、その現在の状態を判定される。タスク・オブジェクト826が同期状態2406(または同期状態2806)である場合に(ブロック3602からの「Yes」分岐)、チェック/無効化1112は、ブロック3604に続く。そうでない場合に(ブロック3602からの「No」分岐)、チェック/無効化1112は、ブロック3606に続く。
ブロック3604で、タスク・オブジェクト826は、最後に同期化されたデータ・セット・プロパティを検査する。タスク・オブジェクト826に現在関連付けられているデータ・タイプのソース位置(領域構成ファイル内の構成定義のタグ値によって示される)が、最後に同期化されたデータ・セット・プロパティと一致する場合に(ブロック3604からの「Yes」分岐)、オペレーションは行われず、チェック/無効化1112は終了する(この状況は、前に選択されていた構成に関してタスク・オブジェクト826に関連付けられたデータ・タイプのデータが、新たに選択された構成について同一であることを示す)。
ブロック3606で、タスク・オブジェクト826は、リセット・オペレーション1108(上で図34に関して説明した)を実行して、このタスクに関連付けられたすべてのデータをクリアする。
例示的なクライアント・オブジェクトの特定ファイル検索APIファンクション
図37に、API呼出しに応答してクライアント・オブジェクト824によって実行することができる例示的な特定ファイル検索ファンクション1026を示す。通常、特定ファイル検索1026は、視聴者に提示されるべきデータを検索するために、アプリケーション(ユーザ・インターフェースまたはEPGアプリケーション)によって呼び出される。特定ファイル検索1026は、パラメータとしてフル・パス・ファイル名を受け取る。
ブロック3702で、クライアント・オブジェクト824は、フル・パス・ファイル名を受信する。
ブロック3704で、クライアント・オブジェクト824は、受け取ったパスを解析して、要求されたファイルのローカル・コピーを維持する責任を負うタスク・オブジェクト826を決定する。本明細書に記載の実装形態では、パスの最初の部分によってファイルに関連付けられたデータ・タイプが識別され、パスの第2の部分によって放送されるファイルのソース位置が識別され、パスの第3の部分によってファイル名が識別される。
ブロック3706で、クライアント・オブジェクト824は、要求されたファイルの受信されたパスの第1部分および第2部分によって識別されるタスク・オブジェクトを検索する。
ブロック3708で、クライアント・オブジェクト824は、ファイルが見つかったか否かを決定する。
ファイルが見つけ出せなかった場合に(ブロック3708からの「No」分岐)、ブロック3710で、クライアント・オブジェクト824は、要求元アプリケーションに、ファイルの発見不能のエラーを返す。
ファイルが見つけ出せた場合に(ブロック3708からの「Yes」分岐)、ブロック3712で、クライアント・オブジェクト824は、ファイルのサイズおよびファイルへのポインタを返す。
例示的なクライアント・オブジェクトのデフォルト・パス内ファイル検索APIファンクション
図38に、API呼出しに応答してクライアント・オブジェクト824によって実行することができる例示的なデフォルト・パス内ファイル検索ファンクション1028を示す。通常、デフォルト・パス内ファイル検索1028は、視聴者に提示されるデータを検索するために、アプリケーション(ユーザ・インターフェースまたはEPGアプリケーション)によって呼び出される。デフォルト・パス内ファイル検索1028は、パラメータとしてファイル名をとる。
ブロック3802で、クライアント・オブジェクト824は、ファイル名を受信する。
ブロック3804で、クライアント・オブジェクト824によって、現在選択されている構成定義で最後にリストされるタグに関連付けられたタスク・オブジェクト826を識別する。
ブロック3806で、クライアント・オブジェクト824は、識別されたタスク・オブジェクト826が(タスク・オブジェクトに関連付けられたデフォルト・パス内フラグによって示される)デフォルト・パス内にあるかどうかを決定する。識別されたタスク・オブジェクト826がデフォルト・パス内にない場合には、デフォルト・パス内ファイル検索1028は、ブロック3816に続く。
ブロック3808で、クライアント・オブジェクト824は、識別されたタスク・オブジェクトに関連付けられたデータが同期化されているか否かを決定する。タスク・オブジェクトが、たとえば構成定義の一部として指定できるデータ・タイプ・グループ識別子に従って、グループ化される一実装形態では、識別されたタスク・オブジェクトに関連付けられたデータが同期化されているか否かの決定は、同一グループのタスク・オブジェクトに関連付けられたデータのすべてが同期化されているか否かの判定も含む。そのグループに関連付けられたタスク・オブジェクトのいずれかが同期化されていない場合には、現在のタスク・オブジェクトは、同期化されていないと決定される。この方法において、他のアプリケーション(ユーザ・インターフェースなど)は、グループのデータ・タイプに関連付けられたデータのすべてが成功裡に受信されるまで、その特定のデータ・タイプ・グループに関連付けられた受信データのすべてへのアクセスを与えない。識別されたタスク・オブジェクト826が同期化されていない場合には、デフォルト・パス内ファイル検索1028は、ブロック3816に続く。
ブロック3810で、クライアント・オブジェクト824は、要求されたファイルの識別されたタスク・オブジェクト826によって維持されるデータを検索する。
ブロック3812で、クライアント・オブジェクト824は、ファイルが見つかったか否かを決定する。
ファイルが見つかった場合に(ブロック3812の「Yes」分岐)、ブロック3814で、クライアント・オブジェクト824は、ファイルのサイズおよびファイルへのポインタを返す。
ファイルが見つからなかった場合に(ブロック3812の「No」分岐)、ブロック3816で、クライアント・オブジェクト824は、現在選択されている構成に関連付けられたタスク・オブジェクトのすべてが検査されたか否かを決定する。検索すべきタスク・オブジェクトがまだある場合に(ブロック3816の「No」分岐)、デフォルト・パス内ファイル検索1028は、ブロック3820に続く。
検索すべきタスク・オブジェクトがもうない場合に(ブロック3816の「Yes」分岐)、ブロック3818で、クライアント・オブジェクト824は、ファイルの発見不能のメッセージを返す。
ブロック3820で、クライアント・オブジェクト824は、現在選択されている構成定義でリストされるタグで、その前のタグに関連付けられたタスク・オブジェクト826を識別する。タスク・オブジェクトを逆の順序で検索して、オーバーライドされるデフォルト・データが見つかる前に、オーバーライド・データ(それがオーバーライドするデフォルト・データの後にダウンロードされる)が見つかることを保証する。
結論
構造化された特徴および/または方法ステップに関する言語でシステムおよび方法を説明したが、請求項で定義される発明が、本明細書に記載の特定の特徴またはステップに必ずしも制限されないことを理解されたい。そうではなく、特定の特徴およびステップは、請求される発明の実装についての好ましい形として開示されたものである。
複数のデータ構成を放送するために実装される例示的な放送テレビジョン・システムを示す図である。 図1の放送テレビジョン・システムで使用される例示的な放送データ・サーバの選択コンポーネントを示す図である。 図2の放送データ・サーバで使用される構成リポジトリの例示的構造を示す図である。 図3の構成リポジトリに格納される構成定義の例示的なデータ構造を示す図である。 図3の構成リポジトリに格納される領域定義の例示的なデータ構造を示す図である。 図3の構成リポジトリに格納されるデータに基づいて生成される領域構成ファイルの例示的な構造を示す図である。 複数のデータ構成の放送を可能にする例示的な方法を示す図である。 図1の放送テレビシステムで使用され、複数のデータ構成の任意の1つに従って放送データを選択的に受信するために実装される、例示的なクライアント・デバイスの選択コンポーネントを示す図である。 視聴者が複数のデータ構成の1つを選択できるようにする例示的な方法を示す図である。 図8のクライアント・デバイス内で状態機械として実装される例示的なクライアント・オブジェクトの選択コンポーネントを示す図である。 図8のクライアント・デバイス内で状態機械として実装される例示的なタスク・オブジェクトの選択コンポーネントを示す図である。 図10のクライアント・オブジェクトでの状態遷移を示す例示的なブロック図である。 API呼出しに応答して新しいタスク・オブジェクトを生成するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 領域構成ファイル獲得状態の間に図10のクライアント・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 構成を選択するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 メイン状態である間に図10のクライアント・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 メイン状態である間にタスク・アイドル・タイマ・シグナルに応答して図10のクライアント・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 メイン状態である間に1方向放送カルーセル・ファイル・システムから応答を受け取る時に図10のクライアント・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 メイン状態である間に領域アイドル・タイマ・シグナルに応答して図10のクライアント・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 タスク・リストを準備するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 API呼出しに応答して構成を選択するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 最初に処理すべきタスク・オブジェクトを識別するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 タスク・リストのすべてのタスク・オブジェクトを無効化するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 図11のタスク・オブジェクトの状態遷移を示す例示的なブロック図である。 新しい状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 同期化状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 同期状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 ハンドラ・ファンクションが呼び出された後の同期状態の間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 図11のタスク・オブジェクトでの状態遷移を示す例示的な流れ図である。 新しい状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 有効化状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 同期化状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 同期状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 同期状態前の有効化状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 ハンドラ・ファンクションが呼び出された後の同期状態前の有効化状態である間に図11のタスク・オブジェクトによって実行されるオペレーションを示す例示的な処理流れ図である。 図11のタスク・オブジェクトの例示的なリセット方法を示す図である。 図11のタスク・オブジェクトの例示的な棚上げ方法を示す図である。 図11のタスク・オブジェクトの例示的な無効検査方法を示す図である。 API呼出しに応答して所与のパス内で指定されたファイルを検索するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。 API呼出しに応答してデフォルト・パス内で指定されたファイルを検索するために図10のクライアント・オブジェクトによって実行することができる例示的な方法を示す図である。
符号の説明
100 放送テレビジョン・システム
102 コンテンツ・プロバイダ(複数)
104 データ・プロバイダ(複数)
106 放送データ・サーバ
116 データ・コレクタ
118 構成管理システム
108 ヘッドエンド
124 コンテンツ・カルーセル
122 放送送信機
120 データ・カルーセル
112 イン−バンド・ネットワーク
114 アウト−オブ−バンド・ネットワーク
110 クライアント装置

Claims (78)

  1. 放送データに関連付けられた複数の構成定義を含む構成ファイルであって、当該複数の放送構成ファイルのうちの1つの構成ファイルを受信すること、
    前記構成ファイルから前記複数の構成定義のうちの1つを選択すること、および
    前記選択された構成定義に従って前記放送データの部分を選択的に受信すること
    を備えることを特徴とする方法。
  2. 前記複数の構成定義は、前記放送データを視聴者に提示できる方法を定義することを特徴とする請求項1に記載の方法。
  3. 前記複数の構成定義のうちの少なくとも1つは、前記放送データが表示される言語に関連付けられていることを特徴とする請求項1に記載の方法。
  4. 前記複数の構成定義のうちの少なくとも1つは、あるレイアウト表現で前記放送データが表示されるべきであるという視聴者の関心に関連付けられていることを特徴とする請求項1に記載の方法。
  5. 前記複数の構成定義のうちの少なくとも1つは、前記放送データが表示される時のターゲットを設定するのに使用される視聴者の関心に関連付けられていることを特徴とする請求項1に記載の方法。
  6. 前記受信することは、
    前記構成ファイルに関連付けられた領域識別子に基づいて、前記複数の放送構成ファイルから前記構成ファイルを選択すること、および
    放送網から前記構成ファイルを獲得すること
    を備えることを特徴とする請求項1に記載の方法。
  7. 前記選択することは、前に選択されていた構成定義に関連付けられた構成識別子に基づいて、前記複数の構成定義のうちの前記1つを選択することを備えることを特徴とする請求項1に記載の方法。
  8. 前記選択することは、前記構成ファイル内の構成定義の順序に基づいて、前記複数の構成定義のうちの1つを選択することを備えることを特徴とする請求項1に記載の方法。
  9. 前記選択することは、
    前記複数の構成定義のリストをレンダリングすること、および
    前記複数の構成定義のうちの1つの視聴者選択を可能にすること
    を備えることを特徴とする請求項1に記載の方法。
  10. 前記選択的に受信することは、前記選択された構成定義によって指定される順序で前記放送データの部分を獲得することを備えることを特徴とする請求項1に記載の方法。
  11. 前記選択的に受信することは、最大データ・サイズに基づいて、前記最大データ・サイズを超えるデータが獲得されないように、前記放送データの部分を獲得することを備えることを特徴とする請求項1に記載の方法。
  12. 前記選択的に受信することは、獲得される前記放送データが、前記選択された構成定義にも関連付けられているデータ・ソース位置に関連付けられるように、前記放送データの部分を獲得することを備えることを特徴とする請求項1に記載の方法。
  13. 前記選択的に受信することは、獲得される前記放送データが特定のクライアント・デバイス・タイプに関連付けられるように、クライアント・デバイスで前記放送データの部分を獲得することを備えることを特徴とする請求項1に記載の方法。
  14. 前記構成ファイルは、領域識別子に関連付けられ、前記領域識別子は、放送データを受信するように構成された1つまたは複数のクライアント・デバイスに関連付けられることを特徴とする請求項1に記載の方法。
  15. 前記構成ファイルの名前は、前記領域識別子に基づくことを特徴とする請求項14に記載の方法。
  16. 前記複数の構成定義の個々の構成定義は、メタデータ・タグ、必須のデータ・タグ、および任意選択データ・タグのうちの少なくとも1つを備えることを特徴とする請求項1に記載の方法。
  17. 前記複数の構成定義の個々の構成定義は、順序付けられたタグの組を備え、1つまたは複数のメタデータ・タグに、1つまたは複数の必須タグが続くことを特徴とする請求項1に記載の方法。
  18. 前記順序付けられたタグの組は、さらに、前記1つまたは複数の必須タグに続く1つまたは複数の任意選択タグを備えることを特徴とする請求項17に記載の方法。
  19. 前記メタデータ・タグは、構成名を備えることを特徴とする請求項16に記載の方法。
  20. 前記メタデータ・タグは、構成識別子を備えることを特徴とする請求項16に記載の方法。
  21. 前記必須データ・タグは、クライアント・デバイスがそれに関するデータを獲得しなければならないデータ・タイプを識別することを特徴とする請求項16に記載の方法。
  22. 前記任意選択データ・タグは、それに関してクライアント・デバイスが前記クライアント・デバイスの構成に応じてデータを獲得してもしなくてもよいデータ・タイプを識別することを特徴とする請求項16に記載の方法。
  23. 請求項1に記載の方法を実行するように構成されることを特徴とするテレビジョン・セットトップボックス。
  24. 請求項1に記載の方法を実行するように構成されることを特徴とするディジタル・ビデオ・レコーダ。
  25. 放送データに関連付けられた複数の構成定義を受信すること、および
    前記複数の構成定義から1つの構成定義を選択すること
    を備え、前記構成定義は、複数のタグを含み、各タグは、
    データ・タイプと、
    クライアント・デバイス・タイプと、
    指定されたクライアント・デバイス・タイプに適切な、指定された、データ・タイプのデータがそこから放送される場所を示すデータ・ソース位置と
    を備えることを特徴とする方法。
  26. 前記データ・タイプは、データ・タイプ・グループに関連付けられていることを特徴とする請求項25に記載の方法。
  27. 前記データ・タイプ・グループは、基本的なクライアント・デバイス機能性をサポートするデータ・タイプを関連付ける基本データ・タイプ・グループを備えることを特徴とする請求項26に記載の方法。
  28. 前記データ・タイプ・グループは、高度なクライアント・デバイス機能性をサポートするデータ・タイプを関連付ける高度なデータ・タイプ・グループを備えることを特徴とする請求項26に記載の方法。
  29. 前記データ・タイプは、別のデータ・タイプに関連付けられたデータをレンダリングするレイアウトを定義するデータに関連付けられていることを特徴とする請求項26に記載の方法。
  30. 前記データ・タイプは、別のデータ・タイプに関連付けられたデータによって定義されるレイアウトに従ってレンダリングできるデータに関連付けられていることを特徴とする請求項26に記載の方法。
  31. 前記データ・タイプ・グループは、前記別のデータ・タイプにも関連付けられていることを特徴とする請求項30に記載の方法。
  32. 前記データ・タイプは、別のデータ・タイプに関連付けられたデータをレンダリングするレイアウトを定義するデータに関連付けられていることを特徴とする請求項25に記載の方法。
  33. 前記データ・タイプは、別のデータに関連付けられているデータによって定義されるレイアウトに従ってレンダリングすることができるデータに関連付けられていることを特徴とする請求項25に記載の方法。
  34. 前記データ・タイプは、さらに、定義されている前記レイアウトのうちの少なくとも一部の代わりに使用されるオーバーライド・レイアウトを定義するデータに関連付けられていることを特徴とする請求項33に記載の方法。
  35. 前記クライアント・デバイス・タイプは、複数のクライアント・デバイスに関連付けることができるクライアント名を備えることを特徴とする請求項25に記載の方法。
  36. 前記クライアント・デバイス・タイプは、複数のクライアント・デバイスに関連付けることができるクライアント・バージョンを備えることを特徴とする請求項25に記載の方法。
  37. 前記クライアント・デバイス・タイプは、複数のクライアント・デバイスに関連付けることができるクライアント名およびクライアント・バージョンを備えることを特徴とする請求項25に記載の方法。
  38. 前記クライアント・デバイス・タイプは、前記構成定義が複数のクライアント・デバイス・タイプのクライアント・デバイスによってサポートされることを示すワイルド・カード値を備えることを特徴とする請求項25に記載の方法。
  39. 前記データ・ソース位置は、放送カルーセル・データ・ディレクトリの名前を備えることを特徴とする請求項25に記載の方法。
  40. 前記各タグは、さらに、前記指定されたデータ・タイプが必須のデータ・タイプまたは任意選択データ・タイプのどちらであるかを示すタグ・タイプを備えることを特徴とする請求項25に記載の方法。
  41. 前記各タグは、さらに、前記データ・タイプに関連付けられたデータ・グループ・インジケータを備えることを特徴とする請求項25に記載の方法。
  42. 前記データ・グループ・インジケータは、複数の関連するデータ・タイプを識別し、前記関連するデータ・タイプに関連付けられたデータは、個々に取られる時にクライアント・デバイスによって使用可能でなく、一緒に取られる時に使用可能なデータの完全なセットを形成することを特徴とする請求項41に記載の方法。
  43. 前記データ・グループ・インジケータは、レイアウトを定義するデータに関連付けられた第1データ・タイプと、前記レイアウトに従ってレンダリングすることができるデータに関連付けられた第2データ・タイプとに関連付けられていることを特徴とする請求項41に記載の方法。
  44. 前記第2データ・タイプは、さらに、前記レイアウトのうちの少なくとも一部のオーバーライドを定義するデータに関連付けられていることを特徴とする請求項43に記載の方法。
  45. 請求項25に記載の方法を実行するように構成されることを特徴とするテレビジョン・セットトップボックス。
  46. 請求項25に記載の方法を実行するように構成されることを特徴とするディジタル・ビデオ・レコーダ。
  47. 放送データに関連付けられた複数の構成定義を受信すること、
    前記複数の構成定義のうちの1つを選択すること、および
    選択された前記構成定義に関連付けられた構成値を維持すること
    を備え、前記維持することによって、後に同一の前記構成定義を再選択する機構が提供されることを特徴とする方法。
  48. 前記構成値は、
    構成識別子と、および
    クライアント・デバイスの領域識別子と
    を備えることを特徴とする請求項47に記載の方法。
  49. 放送データに関連付けられた複数の構成定義を受信すること、
    前記複数の構成定義から第1の構成定義を選択すること、
    前記第1の構成定義に従って、前記放送データの部分を選択的に受信すること、
    その後、前記複数の構成定義から第2の構成定義を選択すること、および
    前記第2の構成定義に関連付けられているが第1の構成定義に関連付けられていないデータだけが、前記第2の構成定義の前記選択に応答して受信されるように、前記第2の構成定義に従って前記放送データの追加部分を選択的に受信すること
    を備えることを特徴とする方法。
  50. 第1の構成定義の前記選択は、前に選択されていた構成定義を識別して選択することを備えることを特徴とする請求項49に記載の方法。
  51. 第1の構成定義の前記選択は、デフォルト構成定義を選択することを備えることを特徴とする請求項49に記載の方法。
  52. 第2の構成定義の前記選択は、構成定義の視聴者選択を受け取ることを備えることを特徴とする請求項49に記載の方法。
  53. 前記第1の構成定義に従って受信された前記データの部分を削除することをさらに含み、削除される前記データは、前記第2の構成定義に関連付けられていないことを特徴とする請求項49に記載の方法。
  54. 選択された構成定義に従って、第1データ放送からデータを選択的に受信して維持すること、および
    前記データの修正された版が、その後に放送される場合に、選択的に受信して維持されている前記データを、前記その後に放送されるデータからの前記データの前記修正された版に置換すること
    を備えることを特徴とする方法。
  55. 第1のデータ・タイプが第2のデータ・タイプより高い優先順位を有するように、データ・タイプの順序付きの組を定義する構成定義を選択すること、および
    前記第1のデータ・タイプに関連付けられた放送データが、前記第2のデータ・タイプに関連付けられた放送データが受信される前に受信されるように、前記構成定義に従って放送データを受信すること
    を備えることを特徴とする方法。
  56. 前記第2のデータ・タイプに関連付けられて受信される前記放送データは、前記第1のデータ・タイプに関連付けられて受信されたデータをオーバーライドするデータを備えることを特徴とする請求項55に記載の方法。
  57. データの要求を受け取ること、および
    受信された前記データを検索すること
    を備え、前記第2のデータ・タイプに関連付けられた前記放送データが、前記第1のデータ・タイプに関連付けられた前記放送データが検索される前に検索されることを特徴とする請求項55に記載の方法。
  58. 放送されるデータおよび構成ファイルを受信するように構成された1つまたは複数のチューナと、
    データ構成モジュールであって、
    前記放送された構成ファイルに基づいて使用可能なデータ構成を決定し、
    前記データ構成のうちの1つを選択し、
    前記選択されたデータ構成に従って前記データの部分を獲得する
    ように構成されたデータ構成モジュールと
    を備えることを特徴とするシステム。
  59. 前記データ構成モジュールは、
    前記データのうちで特定のデータ・タイプに関連付けられた部分を選択的に獲得するように構成されたタスク・オブジェクトと、
    複数のタスク・オブジェクトを管理するように構成されたクライアント・オブジェクトと
    を備えることを特徴とする請求項58に記載のシステム。
  60. 前記クライアント・オブジェクトは、さらに、複数のデータ構成のうちの1つの視聴者選択を可能にするように構成されていることを特徴とする請求項59に記載のシステム。
  61. 前記クライアント・オブジェクトは、格納された構成値に基づいて、前に選択されていたデータ構成を選択するように構成されていることを特徴とする請求項59に記載のシステム。
  62. 前記クライアント・オブジェクトは、状態機械として実装されていることを特徴とする請求項59に記載のシステム。
  63. 前記タスク・オブジェクトが、状態機械として実装されていることを特徴とする請求項59に記載のシステム。
  64. 同一の前記データ構成の後続の選択を可能にするために、選択されたデータ構成に関連付けられた構成値を維持するように構成されたメモリ・コンポーネントをさらに備えることを特徴とする請求項58に記載のシステム。
  65. 放送データおよび複数の放送構成定義を受信する手段と、
    前記複数の放送構成定義から、選択された構成定義を決定する手段と、
    前記選択された構成定義に従って、前記放送データの部分を選択的に受信する手段と
    を備えることを特徴とするシステム。
  66. 前記決定する手段は、
    前に選択されていた構成定義に関連付けられた構成値を維持する手段と、
    前記構成値に基づいて、前記複数の放送構成定義から構成定義を選択する手段と
    を備えることを特徴とする請求項65に記載のシステム。
  67. 前記決定する手段は、前記複数の放送構成定義を収容するファイル内の位置に基づいてデフォルト構成定義を決定する手段を備えることを特徴とする請求項65に記載のシステム。
  68. 前記決定する手段は、前記複数の放送構成定義のうちの1つについての視聴者選択を可能にする手段を備えることを特徴とする請求項65に記載のシステム。
  69. 放送される複数の領域構成ファイルであって、それぞれは複数の構成定義を含む複数の領域構成ファイルから、領域識別子に基づいて、領域構成ファイルを選択的に獲得する手段と、
    前記複数の構成定義の選択された1つに基づいて、放送データの部分を選択的に獲得する手段と
    を備えることを特徴とするシステム。
  70. コンピュータ実行可能命令を備える1つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行されると、コンピューティング・システムに、
    放送データをレンダリングするパラメータを定義する構成ファイルであって、使用可能な複数の構成を識別する構成ファイルを受信すること、
    前記複数の使用可能な構成から選択された、選択された構成を決定すること、および
    前記選択された構成に従って、放送データを獲得し、レンダリングすること
    を行うように指示することを特徴とする1つまたは複数のコンピュータ可読媒体。
  71. 実行されると、コンピューティング・システムに、
    前に選択されていた構成に関連付けられた構成値を決定すること、および
    前記構成値に基づいて前記選択されていた構成を選択すること
    を行うように指示するコンピュータ実行可能命令をさらに備えることを特徴とする請求項70に記載の1つまたは複数のコンピュータ可読媒体。
  72. 実行されると、コンピューティング・システムに、前記構成ファイル内のデフォルト構成位置に基づいて前記選択された構成を選択することを行うように指示するコンピュータ実行可能命令をさらに備えることを特徴とする請求項70に記載の1つまたは複数のコンピュータ可読媒体。
  73. 実行されると、コンピューティング・システムに、
    前記複数の使用可能な構成のリストをレンダリングすること、および
    前記複数の使用可能な構成の1つの視聴者選択を可能にすること
    を行うように指示するコンピュータ実行可能命令をさらに備えることを特徴とする請求項70に記載の1つまたは複数のコンピュータ可読媒体。
  74. コンピュータ実行可能命令を備える1つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行されると、クライアント・デバイスに
    前記クライアント・デバイスに関連付けられた領域識別子に基づいて、複数の放送データ構成定義からデータ構成定義を選択すること、
    前記データ構成定義を獲得すること、および
    前記データ構成定義に基づいて放送データのサブセットを選択的に獲得すること
    を行うように指示することを特徴とする1つまたは複数のコンピュータ可読媒体。
  75. コンピュータ実行可能命令を備える1つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行される時に、クライアント・デバイスに
    複数のデータ・タイプの順序付きグループを識別する選択された構成定義を決定すること、および
    放送データのうちで前記複数のデータ・タイプに関連付けられた部分が、前記構成定義によって識別される順序で受信されるように、前記選択された構成定義に従って前記放送データを選択的に受信すること
    を行うように指示することを特徴とする1つまたは複数のコンピュータ可読媒体。
  76. 実行される時に、クライアント・デバイスに、
    選択的に受信されたデータを求める要求を受け取ること、および
    前記構成定義によって識別される順序と逆の順序での検索によって、要求されたデータを見つけること
    を行うように指示するコンピュータ実行可能命令をさらに備えることを特徴とする請求項75に記載の1つまたは複数のコンピュータ可読媒体。
  77. 実行される時に、クライアント・デバイスに、
    前記複数のデータ・タイプの1つまたは複数に関連付けられたグループを決定すること、および
    前記グループに関連付けられた各データ・タイプの放送データが受信されるまで、受信された前記放送データの処理を避けること
    を行うように指示するコンピュータ実行可能命令をさらに備えることを特徴とする請求項75に記載の1つまたは複数のコンピュータ可読媒体。
  78. 前記処理は、前記データを求める要求を受け取ることを備えることを特徴とする請求項77に記載の1つまたは複数のコンピュータ可読媒体。

JP2004002454A 2003-01-08 2004-01-07 複数のデータ構成のうちの1つによる放送データの選択的受信 Expired - Fee Related JP4499429B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/339,697 US7606255B2 (en) 2003-01-08 2003-01-08 Selectively receiving broadcast data according to one of multiple data configurations

Publications (2)

Publication Number Publication Date
JP2004215284A true JP2004215284A (ja) 2004-07-29
JP4499429B2 JP4499429B2 (ja) 2010-07-07

Family

ID=32507469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004002454A Expired - Fee Related JP4499429B2 (ja) 2003-01-08 2004-01-07 複数のデータ構成のうちの1つによる放送データの選択的受信

Country Status (3)

Country Link
US (1) US7606255B2 (ja)
EP (1) EP1437893A1 (ja)
JP (1) JP4499429B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930721B1 (en) * 2003-04-02 2011-04-19 Lodgenet Interactive Corporation Method and system for offering interactive controls in a lodging entertainment system
JP2005063363A (ja) * 2003-08-20 2005-03-10 Fujitsu Ltd データバックアップ装置、データバックアップ方法およびデータバックアッププログラム
US7617531B1 (en) * 2004-02-18 2009-11-10 Citrix Systems, Inc. Inferencing data types of message components
FR2874146A1 (fr) * 2004-08-04 2006-02-10 Thomson Licensing Sa Methode de mise-a-jour du logiciel resident dans un appareil et appareil adapte a se mettre a jour par la methode
FR2875982B1 (fr) * 2004-09-28 2006-12-22 Commissariat Energie Atomique Architecture de communication semi-automatique noc pour applications "flots de donnees"
KR100698115B1 (ko) * 2005-10-28 2007-03-26 엘지전자 주식회사 전자 프로그램 가이드 로밍 기능을 갖는 모바일 방송단말기 및 로밍 방법
US7266049B1 (en) 2006-01-09 2007-09-04 Suber Iii Edward Howard Clock radio with integral digital music storage system and infrared interface
KR20080024623A (ko) * 2006-09-14 2008-03-19 삼성전자주식회사 디스플레이장치 및 그 데이터 표시방법
US20080072265A1 (en) * 2006-09-19 2008-03-20 Samsung Electronics Co., Ltd. Method and apparatus for processing plurality of applications for broadcasting service and information storage medium storing the method
US20080126471A1 (en) * 2006-09-19 2008-05-29 Samsung Electronics Co., Ltd. Method and apparatus for generating plurality of applications, and method and apparatus for processing application suitable for broadcasting receiving apparatus
WO2008044085A1 (en) * 2006-10-11 2008-04-17 Nokia Corporation Service discovery in broadcast networks
DE102007003161B4 (de) * 2007-01-22 2018-02-15 Intel Deutschland Gmbh Konfigurierbare Fernbedienung und entsprechende Verfahren zur Konfigurierung
US8483284B2 (en) * 2007-11-21 2013-07-09 ViVu. Inc. Method and apparatus for grid-based interactive multimedia
US8468236B2 (en) * 2007-11-27 2013-06-18 Sercomm Corporation Systems and methods for providing frequency diversity in security transmitters
CN102027467A (zh) * 2008-05-27 2011-04-20 多基有限公司 视频数据的非线性表征
KR101490254B1 (ko) * 2008-08-28 2015-02-05 엘지전자 주식회사 방송 수신기 및 백그라운드 채널 epg 제공 방법
EP2346247B1 (en) * 2008-10-10 2019-09-04 Sharp Kabushiki Kaisha Broadcast receiver apparatus
US8230450B2 (en) * 2009-01-06 2012-07-24 International Business Machines Corporation Method for executing a software routine identified in a task object
US20100175076A1 (en) * 2009-01-06 2010-07-08 International Business Machines Corporation Method for executing a software routine identified in a task object
US20100262651A1 (en) * 2009-04-09 2010-10-14 Samsung Electronics Co., Ltd. Method to prevent server overload for broadcast protocols by adaptively applying prescribed response behavior profiles
TWI394451B (zh) * 2009-08-24 2013-04-21 Kcs Digital Inc 影音裝置設定方法及系統
US9009121B2 (en) 2009-10-30 2015-04-14 Oracle International Corporation Bootstrapping server using configuration file stored in server-managed storage
US8528016B2 (en) * 2009-12-28 2013-09-03 Verizon Patent And Licensing Inc. Dynamic program guide information
US8898723B2 (en) 2010-08-20 2014-11-25 Sony Corporation Virtual channel declarative script binding
US20120079059A1 (en) * 2010-09-27 2012-03-29 Motorola-Mobility, Inc. Selectively receiving media content
US8538934B2 (en) * 2011-10-28 2013-09-17 Microsoft Corporation Contextual gravitation of datasets and data services
CN103458467A (zh) * 2012-06-05 2013-12-18 华为技术有限公司 一种应用于网络中缓存系统、装置以及方法
RU2643429C2 (ru) * 2014-03-31 2018-02-01 Общество С Ограниченной Ответственностью "Яндекс" Способ управления синхронизацией файлов (варианты), электронное устройство (варианты) и машиночитаемый носитель
US9912994B2 (en) 2014-07-03 2018-03-06 Mobiledirect, Inc. Interactive distributed multimedia system
US10313259B2 (en) 2016-12-09 2019-06-04 Vmware, Inc. Suppressing broadcasts in cloud environments
CN106850747B (zh) * 2016-12-23 2020-03-20 上海网达软件股份有限公司 一种分布式实时转码系统的转码节点管理系统及方法
US10191736B2 (en) * 2017-04-28 2019-01-29 Servicenow, Inc. Systems and methods for tracking configuration file changes

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09182038A (ja) * 1995-10-24 1997-07-11 Sony Corp テレビジョン放送装置およびテレビジョン放送方法、テレビジョン受像機およびテレビジョン受像方法、並びにテレビジョン信号受信装置
JPH09274554A (ja) * 1996-02-08 1997-10-21 Matsushita Electric Ind Co Ltd データ選択及びまたはデータに対する処理を容易とするデータ処理装置
JPH09511364A (ja) * 1993-09-15 1997-11-11 ペルモレックス メディア インコーポレイテッド オブジェクト指向通信ネットワーク
JPH1051404A (ja) * 1996-08-05 1998-02-20 Nippon Telegr & Teleph Corp <Ntt> メニュー配信方法
JPH10313449A (ja) * 1996-08-30 1998-11-24 Matsushita Electric Ind Co Ltd デジタル放送装置、受信装置、デジタル放送システム、受信装置に適用するプログラム記録媒体
JPH1155203A (ja) * 1997-07-18 1999-02-26 Hewlett Packard Co <Hp> 送受信システム
JPH11112448A (ja) * 1997-10-03 1999-04-23 Sony Corp 情報送信装置および方法、情報受信装置および方法、並びに伝送媒体
JPH11177510A (ja) * 1997-12-12 1999-07-02 Sharp Corp 送信機および送信方法、受信機および受信方法ならびに送受信システム
JPH11220704A (ja) * 1998-01-30 1999-08-10 Toshiba Corp データ放送システムの送信装置及び受信装置
JPH11340792A (ja) * 1998-05-29 1999-12-10 Sony Corp デジタルオーディオ放送の受信機
JP2001251576A (ja) * 2000-03-03 2001-09-14 Matsushita Electric Ind Co Ltd 番組受信装置および蓄積放送課金装置
JP2002280983A (ja) * 2001-03-15 2002-09-27 Nippon Hoso Kyokai <Nhk> 位置連動型データ放送サービス方法及び受信装置
JP2004507153A (ja) * 2000-08-12 2004-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの選択的な供給

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951639A (en) * 1996-02-14 1999-09-14 Powertv, Inc. Multicast downloading of software and data modules and their compatibility requirements
US6167358A (en) * 1997-12-19 2000-12-26 Nowonder, Inc. System and method for remotely monitoring a plurality of computer-based systems
US6760916B2 (en) 2000-01-14 2004-07-06 Parkervision, Inc. Method, system and computer program product for producing and distributing enhanced media downstreams
US20030141360A1 (en) * 1999-04-22 2003-07-31 De Leo Stephen L. System and method for providing information and services to and from an automated teller machine
JP4644999B2 (ja) 1999-08-19 2011-03-09 ソニー株式会社 伝送方法及び伝送装置並びに受信方法及び受信装置
US20030093530A1 (en) * 2001-10-26 2003-05-15 Majid Syed Arbitrator system and method for national and local content distribution
JP2003179903A (ja) * 2001-12-12 2003-06-27 Toshiba Corp Ipストリーミングシステム、ネットワーク中継装置、ipストリーミング用セットトップボックス及びipストリーミング配信方法
US7908626B2 (en) * 2002-05-03 2011-03-15 Time Warner Interactive Video Group, Inc. Network based digital information and entertainment storage and delivery system
US7073189B2 (en) * 2002-05-03 2006-07-04 Time Warner Interactive Video Group, Inc. Program guide and reservation system for network based digital information and entertainment storage and delivery system

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09511364A (ja) * 1993-09-15 1997-11-11 ペルモレックス メディア インコーポレイテッド オブジェクト指向通信ネットワーク
JPH09182038A (ja) * 1995-10-24 1997-07-11 Sony Corp テレビジョン放送装置およびテレビジョン放送方法、テレビジョン受像機およびテレビジョン受像方法、並びにテレビジョン信号受信装置
JPH09274554A (ja) * 1996-02-08 1997-10-21 Matsushita Electric Ind Co Ltd データ選択及びまたはデータに対する処理を容易とするデータ処理装置
JPH1051404A (ja) * 1996-08-05 1998-02-20 Nippon Telegr & Teleph Corp <Ntt> メニュー配信方法
JPH10313449A (ja) * 1996-08-30 1998-11-24 Matsushita Electric Ind Co Ltd デジタル放送装置、受信装置、デジタル放送システム、受信装置に適用するプログラム記録媒体
JPH1155203A (ja) * 1997-07-18 1999-02-26 Hewlett Packard Co <Hp> 送受信システム
JPH11112448A (ja) * 1997-10-03 1999-04-23 Sony Corp 情報送信装置および方法、情報受信装置および方法、並びに伝送媒体
JPH11177510A (ja) * 1997-12-12 1999-07-02 Sharp Corp 送信機および送信方法、受信機および受信方法ならびに送受信システム
JPH11220704A (ja) * 1998-01-30 1999-08-10 Toshiba Corp データ放送システムの送信装置及び受信装置
JPH11340792A (ja) * 1998-05-29 1999-12-10 Sony Corp デジタルオーディオ放送の受信機
JP2001251576A (ja) * 2000-03-03 2001-09-14 Matsushita Electric Ind Co Ltd 番組受信装置および蓄積放送課金装置
JP2004507153A (ja) * 2000-08-12 2004-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの選択的な供給
JP2002280983A (ja) * 2001-03-15 2002-09-27 Nippon Hoso Kyokai <Nhk> 位置連動型データ放送サービス方法及び受信装置

Also Published As

Publication number Publication date
US20040131076A1 (en) 2004-07-08
JP4499429B2 (ja) 2010-07-07
US7606255B2 (en) 2009-10-20
EP1437893A1 (en) 2004-07-14

Similar Documents

Publication Publication Date Title
JP4499429B2 (ja) 複数のデータ構成のうちの1つによる放送データの選択的受信
US7546383B2 (en) Enabling broadcast of multiple data configurations
US11388451B2 (en) Method and system for enabling data-rich interactive television using broadcast database
JP6387036B2 (ja) 受信装置および受信方法、並びに、送信装置および送信方法
US7950033B2 (en) Utilization of relational metadata in a television system
RU2617671C2 (ru) Повышение компактности инициирующего объекта
JP4422900B2 (ja) テレビシステムにおいて複数の番組サービスを提供するシステムおよび方法
KR101159328B1 (ko) 콘텐츠 기록 기술
JP4719215B2 (ja) インタラクティブ・アプリケーションに使用されるモジュールの管理
WO2014125947A1 (ja) 情報処理装置および情報処理方法、並びに情報処理システム
US20030217369A1 (en) Flexible application information formulation
JP6043089B2 (ja) 放送通信連携受信装置
MX2014000313A (es) Extensiones a la tabla de parametros del activador para television interactiva.
CA2838982A1 (en) Reception apparatus, method, computer program, and information providing apparatus for providing an alert service
JP6283318B2 (ja) インターネット・アクセスを使用する又は使用しないデジタルtv受信機に送信されたコンテンツを複数の可搬形デバイスと同期させるためのシステム
KR20080063714A (ko) Iptv환경에서 전자프로그램가이드 서비스 제공방법
US7685412B1 (en) Configuration settings
JP2008527836A (ja) カスタマイズされた放送サービス提供装置、カスタマイズされた放送サービス提供方法、ユーザ端末装置、及びコンピュータで読み取り可能な記録媒体
JP4518718B2 (ja) 動画像コンテンツ蓄積装置
JP2019054316A (ja) 番組表生成装置、表示装置、テレビジョン受像機、メタデータ生成装置、番組表生成方法、メタデータ生成方法、制御プログラム及び記録媒体
JP2001309316A (ja) 電子番組ガイド作成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100318

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100409

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100415

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130423

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees