種々の実施形態例についての以下の説明では、本願明細書の一部を形成する添付図面を参照するが、本発明を実施できる種々の実施形態は例示として添付図面に示される。本発明の範囲から逸脱することなく、構造上並びに処理上の変更を行うのに別の実施形態も利用可能であることを理解されたい。
一般に、本発明は、マルチメディアデータの処理を制御装置によって制御する方法を提供するものである。該制御装置はディレクトリデータを利用するが、該ディレクトリデータは、マルチメディアオブジェクト間の関係(階層構造等)を規定するのみならず、マルチメディアオブジェクトについても記述する。メタデータは、マルチメディアデータファイルの所在位置、マルチメディアオブジェクトについての記述およびカテゴリ、コーデック、転送プロトコル、カスタムユーザデータなどの情報を含むことができる。リレーショナルデータは、マルチメディアオブジェクトをグループ化するコンテナまたはコレクション規定を含むことができる。
本発明は、CDSとUPnPのAV制御ポイントとの間でメタデータの同期をトリガするために用いる情報を提供するために、既存のUPnPのAVフレームワークを用いるメカニズムを利用することができる。さらに、CDSメタデータは、ユーザの所在位置に依存して要領の良い方法(すなわち、高レベルのサーチ、状況認知サーチ等)でメディアファイルを管理できるように、制御ポイントまたは制御ポイントの代りに機能する装置によって格納/キャッシュを行うことができる。これらの同期メカニズムは、メディアファイルに対するバックアップ処理手順をホームネットワークで自動化するために、利用することが可能である。
典型的には、マルチメディア・ディレクトリデータはネットワークの1つ以上のサーバエレメントに格納される。制御装置は、ネットワークを介してサーバエレメント(メディアサーバのCDS等)からマルチメディア・ディレクトリデータへアクセスする。制御装置は、ローカルにディレクトリデータをデータ格納部にキャッシュする。ユーザ装置およびサーバエレメントは、システム識別子およびオブジェクト識別子の使用により、上記データを同期させることができる。これらの識別子は、サーバエレメントのデータに全体として変更が生じたか否かの判定を制御装置ができるようにする固有の参照用識別子である。また、この識別子は、マルチメディアオブジェクト、コンテナ、あるいは別のリレーショナルデータの状態を追跡するようなさらにきめ細かな変更の判定を実現するために、利用することができる。
識別子は、メディアサーバの“署名”を格納するCDSの中に特別にフォーマットされたエントリを含むことができる。メディアサーバは、新規エントリの追加、CDSでの削除あるいは更新の度に、この“署名”の更新を行うことになる。この“署名”は、何かが変更される度に増分される単純なカウンタとして、あるいは、メタデータのハッシュとして表わすことができる。あるいは、“署名”は、上記変更の性質も示すさらに拡張された意味を持たすことができる。代案として、CDSは、同期またはコンテンツの要約/バックアップデータのための新規なエントリを規定することも可能であり、および、該エントリはタイムスタンプ、署名などを含めることも可能である。このような配置内の制御ポイントは、制御ポイントが接続する個々のCDSの固有のIDも格納することになる。
従来、消費者用電子機器は、専用ケーブルおよび電気的インタフェースを使用してデータ交換を行ってきた。例えば、オーディオ/ビデオ(AV)受信装置は、アナログコンポジットビデオ、アナログオーディオ、デジタルオーディオ、アナログコンポーネントビデオ、デジタルビデオ、リモート制御信号などの任意の組合せを受信するための入力部を持つことができる。消費者用機器は、典型的にはケーブルを介してAV受信機と接続しており、このため、典型的娯楽センタは中心位置に集中する。無線による家庭用ネットワークの採用増加に伴って、すべての機器を、中央切替部およびAV受信機のような統制箇所に接続することを要求するコンセプトは時代遅れになっている。デジタルネットワーク技術は、家庭のどこからもマルチメディアおよびその他のコンテンツにアクセスすることを可能にする。配置によって、インターネットのような長距離のアクセスネットワークを介して、上記データを遠隔アクセスすることもまた可能である。
家庭環境内にデータ配信機能を実現させたいという要望が、UPnP規格のような技術を生み出した。UPnPは、家庭用ネットワークのようなローカルネットワークにおいて電子機器間での簡単な相互運用を可能にするために開発されてきた。UPnPのAV仕様は、消費者用電子機器が家庭用ネットワークのどこからも娯楽コンテンツ(またはマルチメディアコンテンツ)の配信を可能にするように、UPnPを適合させたものである。本発明は、UPnPネットワークとの関係で説明しているが、本発明が、デジタルな形で装置間で娯楽コンテンツを配信することを可能にする別の技術にも適用可能であることを理解されたい。例えば、本願明細書で説明するコンセプトは、X−10、xAP、Jini、家庭用RF、ブルートゥース、IrDAなどのような家庭用自動化技術にもまた適用可能である。
次に図1に関連して、本発明の実施形態によるUPnPのAVアーキテクチャ100の種々のエンティティを示す。特に、UPnPアーキテクチャの3つの論理エンティティ、すなわち、メディア・サーバ102、メディア・レンダラ104および制御ポイント106とを示す。メディア・サーバ102は、1つ以上のデータ格納部108に置かれるマルチメディアコンテンツ107へアクセスする。メディア・サーバ102は、ネットワーク112を介してメディア・レンダラ104のような別のUPnPのAV装置へコンテンツ107の送信を行うことができる。メディア・レンダラ104は、ネットワーク112からマルチメディアコンテンツ107を受信し、当該ハードウェアインタフェース上でコンテンツ107のレンダリングを行うことができる。制御ポイント106は、メディア・サーバ102およびメディア・レンダラ104の処理を協働させて、エンドユーザが要求するアクションを実行する。
メディア・サーバ102およびメディア・レンダラ104は、UPnPのAVサービスのセットを実行する。これらのサービスは、サーバ102からレンダラ104へコンテンツを転送するために、制御ポイント106によって使用することができる。制御ポイント106には、通常メディア・サーバ102とメディア・レンダラ104との間でのデータ転送時のコマンドおよび制御処理のみが含まれる。これらの処理には、典型的には、データ、データ転送プロトコル、およびデータ転送に用いるデータフォーマットとを特定し、選択するステップが含まれる。メディア・サーバ102およびメディア・レンダラ104は、ネットワークエレメントである102、104自身がサポートするプロトコルおよびフォーマットを使用することで、要求コンテンツの転送を行う。したがって、制御ポイント106は、サーバ102およびレンダラ104が使用するプロトコルやデータフォーマットに左右されずに実装が可能となる。
メディア・サーバ102、メディア・レンダラ104、および制御ポイント106は、UPnPのAVアーキテクチャ100で規定される論理エンティティである。アーキテクチャ100で採用される装置は、これらエンティティ102、104、106を任意に組み合わせた機能を含むことができる。例えば、装置は、破線114で示すように、メディア・レンダラ104および内蔵型制御ポイント106の双方を含むことができる。このような装置114は、コンテンツがレンダリングされると同一の場所から処理を制御する機能を含むことになる。
UPnPアーキテクチャ100は、広範囲の電子機器による利用に適している。例えば、消費者用電子機器120は、UPnPネットワーク112を利用することができる。消費者用電子機器120は、オーディオ機器122、テレビ124、カメラ126、ビデオゲーム128、赤外線(IR)リモート制御装置129あるいは一般的消費者用電子機器130として表されるような消費者の娯楽と従来結びつけられる他の任意の機器を含むことができる。
データ処理装置132は、UPnPアーキテクチャ100において使用することができる。データ処理装置132は、一般に計算処理や通信機能を提供する。データ処理装置132の例としては、携帯電話134、デスクトップ型コンピュータ136、携帯用コンピュータ138、ルータ140、個人用情報機器(PDA)142、あるいは、一般的装置144として表される他の任意の装置が含まれる。消費者用電子機器120とデータ処理装置132との間の区別は、多少恣意的なものであることを理解されたい。何故なら、最新の電子機器は、データ処理機能(例えば、組込み型マイクロプロセッサ)を含み、また、ほとんどのユーティリティ・コンピューティング/通信装置は、家庭用アプリケーションを備えているからである。
UPnPアーキテクチャ100は、一般に家庭やオフィスのようなローカルな環境内で利用される。上記アーキテクチャ100は、有線および無線ネットワーク媒体およびプロトコルの任意の組み合わせを利用することができる。ネットワークおよびUPnPアーキテクチャ100の装置120、132は、インターネット146のような公衆データ伝送媒体を介して外部アクセスが可能である。例えば、UPnP用ゲートウェイ/ルータ148は、インターネット146または他の公的アクセス可能媒体(公共放送電波等)を介して、UPnPネットワーク112のエレメントのいくつかまたはすべてにアクセスすることを遠隔装置150に可能にすることができる。
UPnPのAVネットワークのAV機能の利用は、一般に、メディア・サーバ102、メディア・レンダラ104および制御ポイント106の1つ以上の役割を果たす装置間での相互作用を含む。これらのエンティティ102、104、106の論理機能は、業界で公知の消費者向け電子機器およびデータ処理装置120、132の中に組み込むことも可能である。例えば、PDA142は、メディア・サーバ102として機能するコンピュータ136から利用可能なストリーミングビデオを選択するための制御ポイント106として機能することができる。ストリーミングビデオは、メディア・レンダラ104として機能するテレビ124へ送信することも可能である。UPnP規格がアーキテクチャ100内のすべての装置の中に一律に組み込まれていると想定すると、装置間の上記タイプの相互作用を、ユーザによる最低限の設定と構成だけで実施することができる。
UPnPのAV技術の特に有用なアプリケーションには、制御ポイント106としての無線機器(携帯電話134等)の利用が含まれる。一般に、これらの無線機器134は、IEEE802.11規格のWLAN、ブルートゥース、CDMA、TDMAなどを含む種々の無線ネットワークおよびプロトコルで通信するように適合させることができる。無線機器134は、一般に、携帯可能で、バッテリで駆動する装置であり、このため、制御ポイント106として非常に適している。何故なら、ユーザは、電話を受信するような目的で無線機器134を持ち運ぶ可能性が高いからである。したがって、UPnP制御106を実行できる無線機器134は、特殊なリモート制御装置129や別の装置を検索する必要性からユーザを解放してくれる。また、最新の携帯電話134および同種装置の改善された表示能力は、制御ポイント106が要求する潜在的に複雑なユーザインタフェースを伝送するのにふさわしい。
無線機器134を制御ポイント106として使用したときの短所は、このような機器が利用する一般に低い帯域幅の接続を扱うことである。無線プロトコル(802.11g等)のいくつかは、より広帯域幅へ改善されているが、大部分の携帯用機器は、例えば送信時の電力制限のため、改善された帯域幅を利用することができない。したがって、UPnP制御ポイント106として利用される無線機器134は、ネットワーク通信を実施する際、帯域幅の利用を注意深く制限することが必要になるであろう。UPnP制御ポイント106の帯域幅利用についての問題点をより良く理解するために、UPnPのAV仕様で制御ポイント106を処理する方法についてさらに詳細な検討を行うことにする。
UPnP制御ポイント106は、一般に、メディア・サーバ102とメディア・レンダラ104との間でのデータ転送を制御する。この制御には、ネットワーク上にサーバ102およびレンダラ104の位置を特定するステップ、サーバ102からの利用可能なコンテンツを列挙するステップ、共通となる転送プロトコルとデータフォーマットとを決定するためにサーバ102とレンダラ106とに問い合わせるステップ、要求されるコンテンツ、および選択したプロトコルとフォーマットとを、サーバ102およびレンダラ104に設定するステップ、コンテンツ転送を初期化するステップ、データ転送速度やデータ量などのコンテンツに対する調整を特定するステップ、が含まれる。制御ポイント106は、典型的にはディレクトリ情報をユーザへ送信し、ユーザからコマンドを受信するためのユーザインタフェース152を含むことになる。コントロールマネージャ154は、ユーザが希望するデータ転送タスクを実行する目的で、ユーザインタフェース152、サーバ102、およびレンダラ104の間で通信を行うために使用することができる。
制御ポイント106が実行する1つのタスクには、サーバ102で利用可能なコンテンツを決定するために、メディア・サーバ102に問い合わせすることが含まれる。メディア・サーバ102は、マルチメディアコンテンツ107へアクセスし、該コンテンツ107を別のレンダリング装置へ送信することができる。メディア・サーバ102は、サーバコンテンツのすべての発見および列挙を制御ポイント106に対して可能にするコンテンツ・ディレクトリ・サービス(CDS)156を含む。また、サーバ102は、接続マネージャ158も含む。この接続マネージャ158は、メディア・サーバ102とレンダラ104との間でコンテンツ転送を行う際に使用するプロトコルおよびデータフォーマットの交渉および選択を、制御ポイント106ができるようにする。サーバ102は、メディア・レンダラ104での再生中に、コンテンツのフロー制御(一時停止、早送り等)に利用するAVトランスポートサービス160をオプションとして含めることができる。
メディア・レンダラ104は、ネットワーク112または別の手段(直接有線接続等)を介して、コンテンツ107を受信し、コンテンツ107をレンダリングするように構成される。コンテンツ107は、ビデオ表示部、スピーカ、モータ、加熱/冷却用エレメント、電気化学装置、スイッチング装置などを備えた任意形状の電気装置によってレンダリングされる。メディア・レンダラ104は、コンテンツのレンダリング方法の制御に利用できるレンダリング制御部162を含む。レンダリング制御部162は、ビデオ輝度と音量のようなパラメータの変更に使用することができる。メディア・レンダ104は、メディア・サーバ102と一緒になって、プロトコルとデータフォーマットとを交渉および選択するために使用する接続マネージャ164を含む。メディア・サーバ102と同様に、メディア・レンダラは、コンテンツフローの制御に利用するAVトランスポートサービス166を含むことができる。
無線機器134が利用する帯域幅に関して特別の関心をひくものとして、CDS156と制御ポイント106との間での通信がある。CDS156は、制御ポイント106がメディア・サーバ102によりアクセス可能なコンテンツ107を発見し、列挙することを可能とする。メディア・サーバ102で利用可能なコンテンツ107は“オブジェクト”という用語で記述される。CDS156はこれらのオブジェクトの種々の属性を記述するメタデータを提供する。このメタデータは、タイトル、継続時間、作成時刻、修正時刻などのような属性を含むことができる。
制御ポイント106は、ネットワーク112に加わると、シンプルサービス・ディスカバリィ・プロトコル(SSDP)を用いて、メディア・サーバ102およびメディア・レンダラ104のすべてをネットワーク内で発見する。メディア・サーバ用およびメディア・レンダラ用テンプレートを実装するすべての装置が、該装置についての解説ドキュメントのURL付きの要求に応答することになる。メディア・サーバおよびレンダラとの所在位置を特定した時点で、制御ポイント106は、個々の装置の正確な性能を判断するために、解説ドキュメントを取得し、取得ドキュメントの構文解析をする。
初期化後、制御ポイント106は、サーバ102から利用可能なコンテンツを列挙するために、個々のメディア・サーバのCDS156を利用することができる。制御ポイント106は、複数のサーバからCDS156の情報を収集し、この情報を特定のネットワーク112から利用可能なコンテンツのすべてを示す単一ビューに統合することができる。CDS156は、オブジェクトおよびオブジェクトに関連付けられるプロパティを記述するために、拡張マークアップ言語(XML)を用いる。上記オブジェクトとは、CDSによって閲覧アクションまたは検索アクションから戻ることができる任意のデータエンティティである。上記プロパティは、CDS156またはクライアントが規定したオブジェクトの特性を表わす。CDS156は、エレメントまたは属性のいずれかとしてXMLの形でプロパティを表現する。
CDS156は階層型オブジェクトクラスを使用する。特に、2つのハイレベルのクラスのオブジェクトとして“項目”および“コンテナ”とがある。“項目”とは、典型的には、CDのトラックや映画ファイルのようなデータ単位を表わす。“コンテナ”とはオブジェクトの集合を表わす。複数のコンテナは、複数の項目および別のコンテナの双方を含むことができる。CDS156は、これらのオブジェクトについて記述するXML文書を形成する。
CDS156は、主として、制御ポイント106が呼び出せる一定の予め規定されたアクションを意味する、ベースの“アクション”からなり、CDS156はデータに応答する。制御ポイント106は、CDSからオブジェクトを発見するために、少なくとも2つのアクションを呼び出すことができる。すなわち、“閲覧”および“検索”である。CDS156は、少なくとも“閲覧”アクションをサポートし、オプションとして“検索”アクションをサポートすることもできる。閲覧アクションは、CDSディレクトリ構造内のエントリポイント(すなわちコンテナオブジェクト)でデータオブジェクトのリストを取得することを含む。閲覧アクションは、関数原型“Browse(オブジェクトID、閲覧フラグ、フィルタ、開始インデックス、要求総数)”によって表わすことができる。オブジェクトIDは、現在閲覧されているオブジェクトのIDを意味する。CDS156内のルートコンテナは、常に“0”のオブジェクトIDを有する。閲覧フラグが“閲覧メタデータ”にセットされるとき、CDS156はオブジェクトIDに関連付けられるメタデータを返送することになる。閲覧フラグが“BrowseDirectChildren”にセットされると、“オブジェクトID”はコンテナを参照し、CDS156は、コンテナの中に含まれているオブジェクトと関連付けられるメタデータのリストを返送することになる。
制御ポイント106は、ルートコンテナから開始される閲覧アクションを使用してCDS156のコンテンツ全体を発見することができる。このアクションおよび後続するアクションの結果として発見された任意のコンテナは、この後の閲覧要求のためのエントリポイントとして使用される。このようにして、制御ポイント106は、CDSによって公開されたディレクトリ構造全体の中を走査することができる。
“閲覧”アクションに対応して、CDS156は、要求されたオブジェクトを記述するXMLフラグメントを返送する。CDS156は、結果として返送したオブジェクト数と、コンテナ内のオブジェクトの総数(閲覧フラグが“BrowseDirectChildren”にセットされているとき)、および更新IDとを返送する。更新IDは、コンテナの現在の状態を示すためにCDS156が使用する識別子である。コンテンツまたはコンテナのプロパティが変化するとき、この更新IDは増分される。オブジェクトIDが0のとき(すなわち、オブジェクトがルートコンテナのとき)、返送される更新IDは、システム更新IDとして知られる特別の識別子になる。CDS156ディレクトリ内で何かが、変化するときはいつも、システム更新IDの変数は変化する。
CDS156は、オプションとして“検索”アクションに応答することができる。この検索アクションは、特定の検索基準に一致する1組のオブジェクトを見つけるために使用される。CDS156はプロパティのリストを提供することが可能であり、このリストに基づいて、「GetSearchCapabilities」アクションに応答することにより検索することができる。閲覧アクションと同様、CDS156は、何らかのオブジェクトが発見されたとき、検索条件を満たすオブジェクトを記述するXMLフラグメントを返送することになる。
制御ポイント106は、閲覧アクション、または検索アクションのいずれかから得られるオブジェクトのリストを取得した後、この結果をユーザインタフェース152で表示することができる。ユーザは、さらなる閲覧のため、または、レンダリング用の項目を選択するために、このインタフェース152から項目を選択することができる。ユーザがレンダリングすべきコンテンツを選択したあと、制御ポイント106は、選択した項目のためにCDS156のメタデータを取得する。このメタデータは、サポートする転送プロトコルおよびデータフォーマットが決定するために使用される。次いで、制御ポイント106は、レンダラ104が要求のコンテンツをレンダリングできるか否かの判断をするために、このメタデータをレンダラ接続マネージャ164から得られるデータと比較する。
共通のプロトコル/フォーマットが特定されたあと、制御ポイント106は、サーバ102およびレンダラ104上に接続マネージャサービス158、164を呼び出す。個々の装置は、ターゲットのプロトコル/フォーマットに関する情報を通知される。こうして、個々の接続マネージャ158、164は、選択された共通のプロトコルおよびフォーマットに基づいて、マルチメディアの再生セッションの設定と構成を行う。
CDS156は、主として、制御ポイント106がCDS156を介してアクセス可能なデータを発見できるように策定されている。制御ポイント106は、メディアサーバ102上のコンテンツの現状を判断するために、全面的にCDS156を期待することもできる。しかし、CDS156のデータを制御ポイント装置106にキャッシュするほうが望ましい状況が存在することもある。例えば、制御ポイント106は、コンテキスト認知検索のような、CDS156を介しては実施できない高レベルの検索機能を実現することができる。また、制御ポイント106は、低帯域幅の接続でCDS156に要求を送信するよりも、より迅速にローカルなキャッシュを検索することができる。ネットワーク112から完全に切断されたときでも、制御ポイント106は、ローカルキャッシュを閲覧することができる。別の状況では、制御ポイント106は、常に制御ポイント106からアクセス可能ではない複数のCDS156サーバへアクセスを行うことができる。現在のネットワーク接続で使用可能なCDSのみに検索を限定することによって、検索の改善を図ることは可能である。
本発明の実施形態によれば、制御ポイント106は、CDS156から受信したオブジェクトメタデータを格納するためのキャッシュマネージャ168およびキャッシュ170を含む。キャッシュ170は、ハードドライブ、リムーバブル・メディア、フラッシュメモリ、ランダムアクセスメモリ(RAM)などを含む揮発性メモリあるいは不揮発性メモリのいずれでも実装可能である。キャッシュマネージャ168は、CDS156からオブジェクトデータを取得し、該データをキャッシュ170に格納するアクション(閲覧等)を自動的に開始することができるソフトウェアコンポーネントである。また、キャッシュマネージャ168は、部分的なCDSキャッシュを生成するため、および/または、既存のキャッシュエントリを更新するために、ユーザインタフェース152およびコントロールマネージャ154によって実施されるCDSのアクションを監視することができる。ユーザインタフェース152は、コントロールマネージャ154およびCDS156を経由する代りにキャッシュマネージャ168を介して、データを表示し、検索するようなアクションを開始することができる。
制御ポイント装置106は、UPnPネットワーク上でCDS156を第一に発見したとき、CDS156のデータセット全体を読み出し、キャッシュするように構成されている。本発明の実施形態に従って、CDSデータをキャッシュ170へ読み込む処理手順の一例を、図2Aおよび図2Bに示す。「Build_Cache」ルーチン200は、引数として図2Bに示す「Read_Container」ルーチン204をルートコンテナと共に呼び出すことにより開始する(202)。「Read_Container」ルーチン204は、「This_Container」内のすべてのオブジェクトを取得することにより開始する(206)。「This_Container」はルーチン204に渡される引数である。このステップ206は、例えば、“BrowseDirectChildren”という閲覧フラグを用いて閲覧を呼び出すことで実行することができる。「This_Container」内(何か存在する場合)で発見されたコンテナについてループが繰り返される(208)。「Read_Container」は、発見された個々のコンテナで再帰的に呼び出される(210)。「Read_Container」210に戻ったあと、各コンテナのメタデータはキャッシュへ追加される(212)。次に、項目についてループが繰り返される(214)。こうして各項目のためのメタデータがキャッシュへ追加される(216)。すべてのコンテナおよび項目についてのメタデータがキャッシュに追加された後、ルーチンは終了する(218)。
図2Aと図2Bに図示したルーチンの代替として、CDSインタフェースを修正することが、単一のアクションでCDSディレクトリ構造の全体をダウンロードすることを可能にする。例えば、閲覧アクションは、CDSデータセットの全体を一回の起動でダウンロードできる拡張が可能である。このことは、閲覧アクションを“BrowseAll”のような閲覧フラグをサポートする構成にすることで可能となる。“BrowseAll”フラグを使用するときの閲覧アクションは、CDSメタデータの保管場所全体をリストアップしたドキュメントを返送することになる。
図1を再度参照すると、キャッシュ170が、UPnPネットワーク112と第一に接続するとき、CDSデータのうちのいくつかまたはすべてを格納することができる。キャッシュ170がCDSコンテンツの少なくとも一部を含んだ状態で、CDS156内のエントリがいつ変更されたかを確かめる方法が必要となる。制御ポイント106が正しく動作するためには、キャッシュ170およびCDS156が同期状態にあることが重要となる。一般に、CDS156はシステム更新IDを保持するものであり、CDS156が追跡するオブジェクトのいずれかが追加または削除されたときはいつでも、または、オブジェクトのメタデータが変更されたとき、上記システム更新IDは変化する。CDS156は、システム更新IDの値をシステムエンティティに報告する非同期イベントを実施する。また、クライアントエンティティは、「GetSystemUpdateID」アクションをCDS156で呼び出すことによって、システム更新IDの現在値をいつでも要求することができる。この後者の方法は、システム更新IDの現在値をCDS156に調査(poll)させるために、クライアントによって使用することができる。
一般的には、制御ポイント106は、接触するすべてのCDSのコンテンツをローカルに格納することができる。既知のCDS156と接続されているとき、制御ポイント106は、第一に“署名”エントリ(システム更新ID等)を読み出す。“署名”が、制御ポイント106内にキャッシュされている署名と異なるとき、CDSコンテンツは変更されているので、同期手順がトリガされる。
CDSオブジェクトが変更されるときはいつでも、単にCDS156に対してシステム更新IDの修正が要求されるにすぎず、システム更新IDを変更する方法が特定されるわけではない。システム更新IDは、個々の変更の度に増分されるカウンタ値、メタデータのハッシュ、または変更の性質および規模を示す特別に符号化された値にすることができる。最終オプションの1例は、最新の変更がメタデータに対する変更を含むか含まないかを示すために、システム更新IDの1ビットをセットする。同様のビット利用は、オブジェクトの追加や削除あるいは別タイプへの変更を示すために使用することが可能である。別の実施例では、システム更新IDのいくつかのビットは、CDSディレクトリツリーの変更が生じた部分を示すために使用することが可能であり、これによって、変更したデータの取得がスピードアップされる。
システム更新IDの使用は、CDS156内での変更をおおまかに表示する。何故なら、システム更新IDは単にCDS156が変更されたことのみを示すもので、この変更が、何であり、どこで生じたかを示すものではないからである。また、CDS156は、単一コンテナのコンテンツが変更されたときに変更されるコンテナ更新IDを提供することができる。コンテナ更新IDは、CDS156によるイベントとして送出することができる。コンテナ更新IDイベントは、順序づけられたペアの組を含む。個々の順序づけられたペアは、“コンテナID、コンテナ更新ID”から構成される。制御ポイント106は、コンテナ更新IDイベントを監視し、閲覧または検索を介して現在のコンテナデータを取得し、キャッシュ170を更新するために、この取得したデータを使用することができる。
制御ポイント106は、上記コンテナ更新IDおよび/またはシステム更新IDをCDS156の個々の対応するエントリ用の固有の識別子として格納することができる。これは、制御ポイント106が、ネットワーク内で実際に使用可能なキャッシュ107内の上記エントリのみをインテリジェントに動作させることを可能にする。例えば、ユーザは、家庭と仕事場に音楽コレクションを持つことができる。ユーザは、これら2箇所で音楽を管理したので、同じアプリケーションと同じ装置とを使うことを望むことができる。仕事場のCDSおよび家庭のCDSは、異なる固有のID(システム更新ID等)を持つことになり、上記CDS内の個々のエントリも、固有のID(コンテナ更新等)を持つことになる。これら固有のIDを追跡することにより、制御ポイント106は、目的のものの所在位置を検出して、ユーザのために利用可能なエントリを動作させることができる。
一般に、制御ポイント106は、更新IDの変更に関してCDS156をポーリングする、または定期的に生じる更新イベントについて聞くことができる。上記更新IDの追跡は、継続的に接続されるシステムでは有効であるが、制御ポイント106として使用される移動通信装置134は、CDS156と間欠的にしか接続されない可能性がある。したがって、更新イベントの受信に依存することは、制御ポイント106がネットワーク112から所定時間の間切断されたとき、キャッシュ170のデータに同期することが保証されなくなる。このような場合、制御ポイント106は再接続時にとにかくCDSディレクトリを走査し、変更されたエントリのすべてまたはいくつかを再ダウンロードすることができる。しかし、この処理は多量の処理能力を消費する可能性があり、制御ポイント106が切断している間、CDS156に対してほんのわずかな変更しかないとき、非効率的な処理になる可能性がある。
制御ポイント106に間欠的に接続されるキャッシュ170を同期させるための1つの解決策は、CDSディレクトリサービスの一部としてCDS156の変更記録を保持することである。本発明の実施形態によるCDSの変更を保持する1つの方法を、図3に示す。CDS156は、ルートコンテナ302の下で格納される特別クラスのコンテナを保持することができる。本例では、このコンテナは、「object.container.cache_delta」(図3参照)のクラスに属する。制御ポイントと他のクライアントは、ユーザにマルチメディアオブジェクトデータを提示するとき、コンテナのこのタイプの情報は無視できるように構成される。また同期特性に関係ない制御ポイントも、上記エントリを無視することになる。何故なら、上記エントリは通常のツリーから分離されたものであり、このエントリが既存のエントリを妨害することはないからである。ルートコンテナのすぐ下に位置する「cache_delta」コンテナの位置は任意であり、CDSディレクトリ構造内の周知のいずれの位置でも満足する。メディアサーバが、これらのエントリをCDSツリーの日付情報と共に継続的に保持することは理解されよう。
図3の例では、ルートコンテナ300の下に2つの「cache_delta」コンテナ302、304が配置されている。コンテナ302、304は、2つのクライアント、「CLIENT_1」および「CLIENT_2」用として保持される。制御ポイントまたは他のクライアントは、CDS156上に呼び出されたアクションを介して上記ディレクトリ構造を自動的に生成することができる。個々のコンテナの下には、「object.item.cache_delta」タイプのオブジェクトのリストが存在する。例えば項目306である。本例では、コンテナ302、304は、複数の「cache_delta」項目を含む。個々の「cache_delta」は、CDSディレクトリに対する単一の変更の記録を含むことができる。制御ポイントまたは他のクライアントは、自身の「cache_delta」コンテナを見て、「cache_delta」項目を読み、さらに「cache_delta」項目内にリストアップされた変更を、クライアントのローカルなキャッシュに適用させることができる。こうして、クライアントは、コンテナから「cache_delta」項目を削除することができる。別の配置は、現在または将来の削除のためにすでに調査されたエントリに対して、フラグまたはマークを施すステップを含むことができる。このようにして、クライアントがCDSディレクトリ構造全体を走査する必要がなく、CDS156は変更リストをクライアントに提供することができる。
別の配置では、「cache_delta」ディレクトリ302、304は、変更に連結した単一のファイルのみを含むことができる。この配置において、単一のファイルは、ルートコンテナ300内の個々のクライアント用、またはCDS156内の別の既知の場所用として保持することができ、これによって、特別の「cache_delta」コンテナ302、304を設ける必要はなくなる。いずれの配置でも、「cache_delta」項目は、タイムスタンプ、署名、オブジェクトID、変更の種類、およびローカルなキャッシュの更新に必要な別のデータを含むことになる。
図3に図示の配置に対する別の変形例は、“同期メタデータ”エントリをCDS156に配置するステップを含む。上記同期メタデータは、システムIDに類似する固有のIDを含むことができるが、CDS156のすべてまたは一部に関する署名またはハッシュを含むことになる。また、この同期メタデータは、「cache_delta」項目306と同じように、制御ポイントに変更の種類を決定させる別のメタデータを含むこともできる。制御ポイントは、“同期エージェント”を含み、この“同期エージェント”は、上記メタデータを読み出しメタデータ内に記述された変更のみに適用するように構成されている。
CDS156は、同期を行うためにUPnPが使用する同期プロトコルに依存して、この同期メタデータエントリのマルチインスタンスを含むことがある。例えば、SyncMLを用いて同期を行うとき、SyncMLが要求するいくつかのメタデータを含む1つのエントリが存在することになる。別の配置では、複数の同期メタデータエントリを保持することが可能であり、個々のエントリには関連するシステムIDが含まれる。システムIDがカウンタ値のとき、制御ポイントは、システムIDのキャッシュ値をCDS156上の最新値と比較することが可能となる。制御ポイントを更新するステップは、過去のシステムIDと現在のシステムIDとの間に存在する関連のID値を有する個々の同期メタデータエントリを増分しながら読み出し、適用するステップを含むことになる。複数のCDSシステム内の個々のCDS156が、異なる同期プロトコルを使用することが可能となり、上記エントリが、上記プロトコルが必要とする上記情報および別のメタデータを含むようになることは価値がある。
閲覧アクションや検索アクションを行うとき、上記種々の例で説明したような同期は、ユーザがトリガすることも可能であり、あるいは、この同期は、装置上で動作中の同期エージェントによって自動的にトリガされることも可能である。メディアサーバ102に近接しているときに、制御ポイント106は、関連するすべてのデータを自動的にダウンロード、および/または、「object.container.cache_delta」内あるいは別の同期メタデータ内で、検索するように構成することができる。制御ポイント106が、ダウンロード可能なデータをCDS156から入手できることを判定したあと、同期処理が自動的にトリガされるか、または、制御ポイント106が、新規データまたは修正されたデータがメディアサーバ102の中に存在することをユーザに指示することができる。こうして、ユーザは、新規コンテンツを見て同期を開始するために、指示内容を閲覧することができる。
定期的にデータをキャッシュする制御ポイントの方が、一般に、検索およびシステム閲覧よりも、より高速に応答するであろう。これは、無線機器の場合に特にあてはまることで、無機機器は通常、有線接続よりも低い帯域幅および長い待ち時間を有するからである。一般的なシステムはまれにしか変更しないので、ローカルなキャッシュのダウンロードおよび更新は、帯域幅利用に対して最小限の影響しか与えないであろう。
CDSの変更の追跡は、移動通信用制御ポイントに加えて他のアプリケーションにおいても有効なことがある。図4は、本発明の実施形態によるキャッシュ更新コンセプトを使用したデータバックアップのシナリオを示す。図4において、メディア・サーバ102は、前述したようにデータ格納部108およびCDS156を含む。バックアップ・サーバ402は、CDS156と交信するための制御ポイント106を含む。バックアップ・サーバ402は、メディアデータ格納部108からバックアップデータ格納部404へデータをバックアップするために機能する。
第一の使用で、制御ポイント106は、CDS156のコンテンツ全体を決定することが必要になることがある。この図4では、制御ポイント106は、既述した「BrowseAll」拡張子を用いて閲覧コマンド406を使用する。これに対応して、CDS156は、CDSデータ格納部108内のすべてのエントリ408のメタデータを用いて応答する。同じエントリ408は、図2Aと図2Bに示すディレクトリ走査、または当業で公知の他の方法を使用して得ることができることは価値がある。
制御ポイント106は、バックアップのために取得の必要があるすべてのエントリを含むバックアップデータ格納部404へ、バックアップコマンド410を送出する。バックアップデータ格納部404は、エントリ(FTP GET等)の取得412を開始し、これらのエントリはメディアデータ格納部108からバックアップデータ格納部404へダウンロードされる(414)。この取得されたデータ414は、CDSメタデータおよびメディア・サーバ102の中に、またはほかの場所に格納されている実際のデータオブジェクト(メディアファイル等)との任意の組み合わせを含むことができることは理解できよう。この後、バックアップサーバ402は、増分のバックアップだけを実行することが必要となる。
増分バックアップのための2つのシナリオを図4に示す。第1のシナリオにおいて、制御ポイント106は、変更部分について積極的にCDS156をポーリングする(416)。このCDS156へのポーリングは、システム更新ID、コンテナ更新IDをチェックすること、または図3に関連して説明した特化されたキャッシュデータを利用することの任意の組み合わせを含むことができる。変更が発生したとき、デルタ部を決定するために応答418が使用される。完全バックアップの場合と同様に、制御ポイント106は、バックアップデータ格納部404にファイルをバックアップするように命令する(420)。しかし、このとき、バックアップを必要とするのはデルタ部だけである。これまでのように、即座にデータをバックアップするために、データ格納部404、108は取得を要求し(422)、ダウンロードを行う(424)。
図4に示す次のシナリオは、CDS156により生成された非同期の更新イベントを使用する。CDS156は、メディアデータ格納部108内の何かの変更を伝える事象を定期的に送信する(426)。制御ポイント106は、内部キャッシュ(図1に示すキャッシュ170等)に対してデルタ部のみをキャッシュさせる(428)。このシナリオでのバックアップ・サーバ402は、ネットワークが活動しないことが予測される夜遅くのような一定時間帯にバックアップ処理を実行するように構成される。したがって所定時刻に、制御ポイント106は、内部に生成されたタイマ−事象に応答し(430)、バックアップ要求を開始し(432)、この結果、データ取得を要求し(434)、増分データをダウンロードする(436)。図4に示す完全バックアップおよび増分バックアップは、バックアップデータを決定するために、CDSでのポーリングおよびCDSでの事象の任意の組み合わせを使用できること、同様に即時のバックアップおよびタイマイベントバックアップの任意の組み合わせも使用できることは理解できよう。
UPnP規格は、多くの種類の装置がメディア・サーバ、メディア・レンダラおよび制御ポイントとして役割を果たすことを可能にする柔軟性を備えている。移動通信装置は、制御ポイントとして特に有用であり、さらにメディア・レンダラとしての利用も可能である。次に図5に関連して、本発明の実施形態によって、処理を実行できる代表的な移動型コンピュータ配置500の一例を示す。当業者であれば以下のことは理解できるであろう。図示の移動型コンピュータ配置500は、このような移動通信装置と関連付けることができる一般的機能を単に表わすだけでなく、有線型コンピュータシステムも同様の処理を実行するコンピュータ回路を同様に含むことになる。
図示の移動型コンピュータ配置500は、UPnPのAVネットワークにおけるメディア・レンダラおよび制御ポイントの双方としての役割を果たすのに適している。移動型コンピュータ配置500は、マイクロプロセッサ、縮小命令セットコンピュータ(RISC)または別の中央演算処理モジュールのような処理/制御ユニット502を備える。処理ユニット502は、単一の装置である必要はなく、1つ以上のプロセッサを含むこともできる。例えば、処理ユニットは、マスタプロセッサおよびマスタプロセッサと通信するように連結される付随型のスレーブプロセッサを含むこともできる。
処理ユニット502は配置500の基本的機能を制御するものである。上記の関連機能は、プログラム用ストレージ/メモリ504に格納された命令として含むことができる。本発明の1つの実施例において、ストレージ/メモリ504と関連付けられるプログラムモジュールは、携帯端末のパワーダウン時に情報が失われないように、不揮発性の電気的消去可能ROM(EEPROM)、フラッシュリードオンリメモリ(ROM)などに格納される。また、従来方式の携帯端末の操作および本発明による操作の実行に関連するソフトウェアも、データ信号によって移動型コンピュータの配置500へ送信することが可能であり、このデータ信号は、インターネットおよび中間に位置する無線ネットワークのような1つ以上のネットワークを介して電子的にダウンロードすることができる。
プログラム用ストレージ/メモリ504は、移動型コンピュータの配置500の機能と関連付けられる複数の機能およびアプリケーションを実行するためのオペレーティングシステムも含むことができる。プログラム用ストレージ/メモリ504は、リードオンリメモリ(ROM)、フラッシュROM、プログラム可能な及び/又は消去可能なROM、ランダムアクセスメモリ(RAM)、加入者インタフェースモジュール(SIM)、無線インタフェースモジュール(WIM)、スマートカード、ハードドライブ、または他のリムーバブルメモリ装置のうちの1つ以上を含むことができる。
制御ポイント機能を実行するために、プログラム用ストレージ/メモリ504は、制御ポイントマネージャ154、キャッシュマネージャ168、およびキャッシュ170が含まれる。制御ポイントマネージャ154は、メディア・サーバのメタデータを表示するため、および、UPnPマルチメディアサービスを制御するためのユーザ選択を受信するために、ユーザインタフェースのアプリケーション・プログラム・インタフェース(API)506と接続する。メディアのレンダリング機能を実行するために、プログラム用ストレージ/メモリ504は、接続マネージャ164、AVトランスポートモジュール166、およびレンダラ制御部162が含まれる。レンダラ制御部162もまた、ディスプレイおよびスピーカのような物理装置へレンダリング出力を行うためにUIのAPI506と接続する。
移動型コンピュータの配置500は、ネットワークデータ交換を実行するための処理/制御ユニット502と連結したハードウェアコンポーネントおよびソフトウェアコンポーネントを備える。移動型コンピュータの配置500は、有線または無線のデータ接続の任意の組み合わせを保持するために、複数のネットワークインタフェースを備えることができる。特に、図示の移動型コンピュータの配置500は、ネットワークデータ交換を実行するための無線データ送信回路を備える。
上記無線回路は、アナログ・デジタル(A/D)変換、デジタル・アナログ(D/A)変換、音声の符号化処理/復号化処理、暗号化/暗号解読、エラー検出とエラー修正、ビットストリーム変換、フィルタリングなどを含む種々の機能を実行するために採用されたデジタル信号プロセッサ(DSP)516を備える。トランシーバ518は、通常アンテナ520と連結され、発信無線信号522を送信し、無線機器と関連付けられる着信無線信号524を受信する。
プロセッサ502は、携帯端末と関連付けられるユーザインタフェース528エレメントとも連結する。携帯端末のユーザインタフェース528は、例えば、液晶ディスプレイのようなディスプレイ526、キーパッド510、スピーカ512、およびマイク514を備えることができる。上記および他のユーザインターフェースコンポーネントは、当業に既知のプロセッサ502に連結される。別のユーザインタフェースメカニズムを使用することも可能であり、これらには、音声コマンド、スイッチ、タッチパッド/スクリーン、ポインティングデバイスを使用したグラフィックユーザインタフェース、トラックボール、ジョイスティック、またはその他の任意のユーザインタフェースメカニズムが該当する。
図5の移動型コンピュータの配置500は、本発明の原理を適用できるコンピュータ環境の代表例として示すものである。本願明細書に記載の説明から、当業者は、本発明は、他の現在既知および将来の移動型と有線型とのコンピュータ環境の種々においても同様に適用可能なことは理解できるであろう。例えば、デスクトップ型コンピュータ装置は同様に、プロセッサ、メモリ、ユーザインタフェース、およびデータ通信回路を備えている。したがって、本発明は、ネットワークを介してデータ通信が可能な、いずれの既知のコンピュータ構造においても適用可能である。
ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせは、本願明細書に記載した種々の機能および処理の実行に使用できる。本発明と関連付けられる機能を実行するための製造包括コード(manufacture encompassing code)の条項は、コンピュータで利用可能な任意の媒体で永久的にまたは一時的に、あるいは、このようなプログラムの送信を行う任意の送信媒体において永久にまたは一時的に存在するコンピュータプログラムを含むことを意図するものである。送信媒体は、無線/電波通信ネットワークを介する送信、インターネット、イントラネット、電話/モデムベースのネットワーク通信、有線/ケーブル通信ネットワーク、衛星通信、および他の固定用または移動用通信ネットワークシステム/通信リンクを含むものであるが、上記に制限されるものではない。本願明細書に記載の説明から、当業者は、本発明に基づくシステム、装置、および方法を生成するのに適した汎用あるいは専用のコンピュータハードウェアに、上記に説明したように生成したソフトウェアを容易に組み合わせることができる。
例示および説明を目的として、本発明の実施形態例について以上説明を行った。本発明を網羅的なものであると限定したり、開示された正確な形態に限定したりすることは意図していない。上記教示に照らして多くの修正および変形例が考えられる。本発明の範囲は、上記の詳細な説明に限定されるものではなく、本願明細書に添付の請求項により画定されることを意図している。