(57)【要約】【課題】アイテムの探索結果を効率的に管理することができるようにする。【解決手段】通信システムは、DLNA機器であるDMR１、DMS２、およびDMC３がネットワークを介して接続されることによって構成される。DMC３からDMR１に対して、DMS２が管理するルートコンテナの再生が指示された場合、DMR１においては、DMS２が管理するオブジェクトの探索が開始される。探索結果は、ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかる先頭アイテムのトラック番号と、最後に見つかる最終アイテムのトラック番号と、先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けるようにして記憶され、DMR１により管理される。本発明は、DLNA機器に適用することができる。【選択図】図４
2012018564.tif 000002
【特許請求の範囲】
【請求項１】
DLNA機器である第１の他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行う探索手段と、
前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する記憶手段と
を備える情報処理装置。
【請求項２】
前記記憶手段は、BrowseDirectChildrenによって前記先頭アイテムが見つかったときのstartingIndexの値を、前記位置情報として記憶する
請求項１に記載の情報処理装置。
【請求項３】
DLNA機器である第２の他の情報処理装置から送信されてきたPlayContainerUriを受信する受信手段をさらに備え、
前記探索手段は、前記PlayContainerUriのcontainer-id-argによってObjectIDが指定される前記ルートコンテナに格納される、first-item-id-argによってObjectIDが指定されるアイテムの親のコンテナからBrowseDirectChildrenを開始する
請求項２に記載の情報処理装置。
【請求項４】
前記ルートコンテナを起点としてBrowseDirectChildrenを繰り返し行った場合に見つかるオブジェクトの順番は決まっており、
前記探索手段は、前記first-item-id-argによってObjectIDが指定されるアイテムを格納する前記親のコンテナ以降のそれぞれのコンテナを対象としてBrowseDirectChildrenを行い、最後のオブジェクトが見つかったとき、前記ルートコンテナを起点として、前記ルートコンテナ以降のそれぞれのコンテナを対象としてBrowseDirectChildrenを行い、前記first-item-id-argによってObjectIDが指定されるアイテムが見つかったとき、探索を終了する
請求項３に記載の情報処理装置。
【請求項５】
前記探索手段は、所定のトラック番号のアイテムの再生を行う場合、前記記憶手段に記憶されている情報に基づいて、前記所定のトラック番号のアイテムを格納するコンテナのObjectIDと、前記所定のトラック番号のアイテムのコンテナ内における位置を特定し、特定したObjectIDにより識別されるコンテナ内の、特定した位置にあるオブジェクトの探索を行い、
前記探索手段による探索結果に基づいて、前記所定のトラック番号のアイテムの送信を前記第１の他の情報処理装置に対して要求し、要求に応じて送信されてきたアイテムを再生する再生手段をさらに備える
請求項１に記載の情報処理装置。
【請求項６】
DLNA機器である他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行い、
前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する
ステップを含む情報処理方法。
【請求項７】
DLNA機器である他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行い、
前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する
ステップを含む処理をコンピュータに実行させるプログラム。
【請求項８】
DLNA機器である、第１の情報処理装置と、第２の情報処理装置と、第３の情報処理装置とからなる通信システムにおいて、
前記第１の情報処理装置は、
前記第３の情報処理装置において再生可能なアイテムを記憶する記憶手段と、
ルートコンテナを設定し、前記アイテムを前記ルートコンテナに格納して管理するとともに、前記第３の情報処理装置からの探索要求に対して応答する制御手段と
を備え、
前記第２の情報処理装置は、
前記ルートコンテナのObjectIDをcontainer-id-argによって指定するとともに、前記ルートコンテナに格納されるアイテムのうちの最初に再生するアイテムのObjectIDをfirst-item-id-argによって指定するPlayContainerUriを作成する作成手段と、
前記作成手段により作成された前記PlayContainerUriを前記第３の情報処理装置に送信する送信手段と
を備え、
前記第３の情報処理装置は、
前記第２の他の情報処理装置から送信されてきた前記PlayContainerUriを受信する受信手段と、
前記PlayContainerUriのcontainer-id-argによってObjectIDが指定される前記ルートコンテナに格納される、first-item-id-argによってObjectIDが指定されるアイテムの親のコンテナからBrowseDirectChildrenを開始するように、前記第１の情報処理装置が管理する前記ルートコンテナに格納されるオブジェクトの探索を行う探索手段と、
前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する記憶手段と
を備える
通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム、情報処理装置、情報処理方法、およびプログラムに関し、特に、コンテンツの探索結果を効率的に管理することができるようにした通信システム、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、DLNA(Digital Living Network Alliance)のガイドラインに対応した機器（以下、適宜、DLNA機器という）が普及してきている。複数のDLNA機器を家庭内のネットワークを介して接続することによって、あるDLNA機器に記憶されているコンテンツを、他のDLNA機器で再生したりすることが可能になる。
【０００３】
図１は、３つのDLNA機器を用いて実現される通信システムの構成例を示す図である。
【０００４】
図１の通信システムは、DMSとして動作するDLNA機器、DMRとして動作するDLNA機器、およびDMCとして動作するDLNA機器が、LAN(Local Area Network)などのネットワークを介して接続されることによって構成される。図１の通信システムはいわゆる3Box System Usageの通信システムである。以下、適宜、それぞれのDLNA機器を、単に、DMS、DMR、DMCという。
【０００５】
DMS(Digital Media Server)は、音楽コンテンツやビデオコンテンツなどのコンテンツを記憶し、他のDLNA機器に配信する機器である。図１の例においては、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの内蔵の記録媒体に音楽コンテンツを記録するオーディオ機器がDMSとされている。
【０００６】
以下、音楽コンテンツの再生について説明する。音楽コンテンツの再生は、例えばプレイリストを用いて行われる。適宜、コンテンツのことをアイテムともいう。
【０００７】
DMR(Digital Media Renderer)は、アイテムを再生し、音楽を出力する機器である。図１の例においては、ディスプレイとスピーカを有するテレビジョン受像機がDMRとされている。
【０００８】
DMC(Digital Media Controller)は、UI(User Interface)機能を有し、ユーザによる操作に応じて他のDLNA機器を制御する機器である。図１の例においては、ディスプレイや各種の操作ボタンを有する携帯機器がDMCとされている。
【０００９】
DLNAでは、プレイリストの表記方法としてPlayContainerUriが定義されている。PlayContainerUriには、プレイリストに登録されているアイテムを記憶するDMSの情報、プレイリストとして再生するコンテナと、そのコンテナ内における、最初に再生するアイテムの位置の情報、および、DMSにおいて階層的にコンテナが管理されている場合において、アイテムの探索時に階層を辿る深さの情報などが記述される。プレイリストに登録されているそれぞれのアイテムが、そのプレイリストに対応するコンテナに格納されている。
【００１０】
DMCから送信されたPlayContainerUriを受け取ったDMRは、その記述に基づいてアイテムの探索を行い、見つかったアイテムを再生していくことでプレイリスト再生を実現する。
【００１１】
［プレイリスト再生の流れ］
ここで、図２のフローチャートを参照して、図１の通信システムにおいて行われるプレイリスト再生の流れについて説明する。
【００１２】
ステップＳ１において、DMCは、DMSが管理するコンテナのBrowseを実行する。DMCからDMSに対してはBrowse要求（Browse要求を表す情報）が送信される。
【００１３】
ステップＳ１１において、DMSは、DMCによるBrowse要求を受信し、ステップＳ１２において応答する。DMSからの応答には、プレイリストとして選択することが可能な、アイテムが格納されているコンテナの情報が含まれる。
【００１４】
ステップＳ２において、DMCはDMSから送信されてきた情報を受信する。DMCは、受信した情報に基づいてプレイリストの一覧をディスプレイに表示し、再生するプレイリストをユーザに選択させる。
【００１５】
ステップＳ３において、DMCは、ユーザによる操作に応じて、再生対象となるプレイリスト（コンテナ）を決定する。ここで決定されたコンテナに格納されているアイテムが順次再生される。
【００１６】
ステップＳ４において、DMCは、PlayContainerUriを作成する。DMCにより作成されたPlayContainerUriには、ステップＳ３で決定されたコンテナを指定する情報などが含まれる。
【００１７】
ステップＳ５において、DMCは、PlayContainerUriをDMRに送信する。
【００１８】
ステップＳ２１において、DMRは、DMCから送信されてきたPlayContainerUriを受信し、ステップＳ２２において解析する。PlayContainerUriを解析することにより、アイテムの配信元となるDMSや、プレイリストに対応するRootコンテナなどが特定される。
【００１９】
ステップＳ２３において、DMRは、アイテムの配信元として特定したDMSが管理する、再生対象のプレイリストに対応するRootコンテナを対象としてBrowseを実行する。DMRからDMSに対してはBrowse要求が送信される。
【００２０】
ステップＳ１３において、DMSは、DMRによるBrowse要求を受信し、ステップＳ１４において応答する。DMSからの応答には、Browse対象のRootコンテナに格納されているオブジェクト（コンテナまたはアイテム）の情報が含まれる。
【００２１】
ステップＳ２４において、DMRは、DMSから送信されてきた情報を受信し、ステップＳ２５において、受信した情報に基づいてアイテムの探索を行う。アイテムの探索については後述する。
【００２２】
探索によってアイテムが見つかった場合、ステップＳ２６において、DMRは、アイテム取得要求（アイテム取得要求を表す情報）をDMSに送信する。ここで、探索によりオブジェクトが見つかるとは、Browseの実行結果としてDMSから送信されてきた情報の中にObjectIDなどのオブジェクトの情報が含まれており、そのオブジェクトの情報をDMRが取得したことを表す。
【００２３】
ステップＳ１５において、DMSは、DMRによるアイテム取得要求を受信し、要求されたアイテムを記録媒体から読み出す。ステップＳ１６において、DMSは、記録媒体から読み出したアイテムをDMRに送信する。
【００２４】
ステップＳ２７において、DMRは、DMSから送信されてきたアイテムを受信し、ステップＳ２８において再生する。
【００２５】
プレイリストに登録されているアイテム毎に、ステップＳ２３乃至Ｓ２８の処理がDMRにより行われ、また、DMRの処理に対応して、ステップＳ１３乃至Ｓ１６の処理がDMSにより行われる。図１の通信システムにおいては、プレイリストの再生が以上のようにして行われる。
【００２６】
プレイリストの再生中、DMCからDMRに対しては、適宜、再生方法の指定などが行われる。再生方法には、トラック番号順に再生するノーマル再生、プレイリストに登録されているアイテムをランダムに再生するランダム再生がある。また、トラック番号により指定されたアイテム、または、１曲（１トラック）前、１曲後といったようにして指定されたアイテムを再生するトリック再生がある。
【００２７】
［アイテムの探索］
次に、DMRにより行われるアイテムの探索について説明する。
【００２８】
図３は、DMSが管理するアイテムのツリー構造の例を示す図である。
【００２９】
図３の例においては、あるプレイリストに対応するRootコンテナであるContainer_Aには、第１階層のオブジェクトとして、左から順にItem_8，Container_B，Container_C，Container_D，Container_E，Item_7が格納されている。それぞれのItemは１曲の音楽アイテムに相当する。
【００３０】
また、Container_Aには、第２階層のオブジェクトとして、Container_BにItem_9が格納され、Container_Cに、Container_F，Item_1，Item_2，Container_Gが格納されている。また、Container_DにItem_5が格納され、Container_EにItem_6が格納されている。
【００３１】
さらに、Container_Aには、第３階層のオブジェクトとして、Container_FにItem_10が格納され、Container_GにItem_3とItem_4が格納されている。
【００３２】
図３に示すツリー構造によって、DMSにおいてアイテムが管理されている場合について説明する。ここでは、PlayContainerUriにより指定される、プレイリストとして再生するコンテナ（Rootコンテナ）がContainer_Aであり、最初に再生するアイテムがItem_1であるものとする。DMRにおいてはItem_1の探索が最初に行われる。
【００３３】
はじめに、Container_Aを対象としてDMRによりBrowseが実行される。複数のオブジェクトの情報を送信することが要求されている場合、Browse要求に対する応答として、Container_Aに格納されている第１階層のオブジェクトであるItem_8，Container_B，Container_C，Container_D，Container_E，Item_7の情報がDMSからDMRに送信される。ObjectIDや位置情報（URL(Uniform Resource Locator)）を含む各オブジェクトの情報が、例えば図３の左側に示されるオブジェクトの情報の順にソートされ、DMRに送信される。
【００３４】
DMRにおいては、ソートされた先頭のオブジェクトから順に注目され、注目されているオブジェクトがItemである場合には、そのItemがいま探しているItemであるか否かが判断される。また、注目されているオブジェクトがコンテナである場合には、そのコンテナを対象としてBrowseが実行される。
【００３５】
この例においては、Item_8が注目され、注目されているItem_8が、いま探しているItemではないとしてDMRにより判断される。
【００３６】
次に、Item_8の次のオブジェクト（ソート順で次のオブジェクト）であるContainer_Bが注目され、Container_Bを対象としてBrowseが実行される。DMSからDMRに対しては、Browse要求に対する応答として、Container_Bに格納されているItem_9の情報が送信される。このとき、Item_9が注目され、Item_9が、いま探しているItemではないとしてDMRにより判断される。
【００３７】
次に、いま注目したItem_9を格納するContainer_Bの次のオブジェクトであるContainer_Cが注目され、Container_Cを対象としてBrowseが実行される。DMSからDMRに対しては、Browseコマンドに対する応答として、Container_Cに格納されているContainer_F，Item_1，Item_2，Container_Gの情報が送信される。
【００３８】
Container_F，Item_1，Item_2，Container_Gのうちの先頭のオブジェクトであるContainer_Fが注目され、Container_Fを対象としてBrowseが実行される。DMSからDMRに対しては、Browse要求に対する応答として、Container_Fに格納されているItem_10の情報が送信される。Item_10が注目され、Item_10が、いま探しているItemではないとしてDMRにより判断される。
【００３９】
次に、いま注目したItem_10を格納するContainer_Fの次のオブジェクトであるItem_1が注目され、Item_1が、いま探しているItemであるとしてDMRにより判断される。DMRからDMSに対して、Item_1を指定してアイテム取得要求が送信され、アイテム取得要求に対する応答として送信されてきたデータが受信されたとき、DMRによりItem_1が再生される。
【００４０】
Item_1の再生が終了したとき、Item_1の次のオブジェクトであるItem_2が注目される。Item_2が、いま探しているItemであるとしてDMRにより判断された場合、DMRからDMSに対して、Item_2を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータが受信されたとき、DMRによりItem_2が再生される。
【００４１】
この例においては、最初に再生するアイテムとしてPlayContainerUriにより指定されたアイテム（Item_1）の再生が終了した後は、探索により見つかった順にアイテムを再生するものとされている。
【００４２】
Item_2の再生が終了したとき、Item_2の次のオブジェクトであるContainer_Gが注目され、Container_Gを対象としてBrowseが実行される。DMSからDMRに対しては、Browse要求に対する応答として、Container_Gに格納されているItem_3，Item_4の情報が送信される。
【００４３】
DMRからDMSに対して、Item_3を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータが受信されたとき、DMRによりItem_3が再生される。
【００４４】
Item_3の再生が終了したとき、DMRからDMSに対して、Item_4を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータが受信されたとき、DMRによりItem_4が再生される。
【００４５】
Item_4の再生が終了したとき、次に、Item_4を格納するContainer_Gを格納するContainer_Cの次のオブジェクトであるContainer_Dが注目され、Container_Dを対象としてBrowseが実行される。DMSからDMRに対しては、Browse要求に対する応答として、Container_Dに格納されているItem_5の情報が送信される。
【００４６】
DMRからDMSに対して、Item_5を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータが受信されたとき、DMRによりItem_5が再生される。
【００４７】
Item_5の再生が終了したとき、次に、Item_5を格納するContainer_Dの次のオブジェクトであるContainer_Eが注目され、Container_Eを対象としてBrowseが実行される。DMSからDMRに対しては、Browse要求に対する応答として、Container_Eに格納されているItem_6の情報が送信される。
【００４８】
DMRからDMSに対して、Item_6を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータを受信したとき、DMRによりItem_6が再生される。
【００４９】
Item_6の再生が終了したとき、次に、Item_6を格納するContainer_Eの次のオブジェクトであるItem_7が注目され、DMRからDMSに対して、Item_7を指定してアイテム取得要求が送信される。アイテム取得要求に対する応答として送信されてきたデータを受信したとき、DMRによりItem_7が再生される。
【００５０】
再生モードとしてリピート再生などが指定されている場合、探索により既に見つかっているアイテムであるItem_8，Item_9，Item_10が順に再生される。Item_8，Item_9，Item_10のアイテム取得要求は、既に取得され、図示せぬメモリなどに保存されていたそれらのアイテムのObjectIDや位置情報に基づいてアイテムを指定することによって行われる。
【００５１】
ユーザにより選択されたプレイリストに対応するContainer_Aの再生は以上のようにして行われる。
【００５２】
なお、DMSにおいては、RootコンテナであるContainer_Aを起点としてBrowseを実行したときに見つけることができる順に、それぞれのアイテムにTrack_1〜Track_10のトラック番号が割り当てられている。Container_Aに対応するプレイリストのノーマル再生が指示された場合、DMRにより実行されるBrowseにより見つかるItem_8，Item_9，Item_10，Item_1，Item_2，Item_3，Item_4，Item_5，Item_6，Item_7の順に再生される。
【先行技術文献】
【特許文献】
【００５３】
【特許文献１】特開２００８−１４０４１０号公報
【特許文献２】特表２００８−５１５０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００５４】
実際にアイテムの再生を行うDMRはプレイリスト内のツリー構造を知らないために以上のようにしてアイテムの探索を行う必要がある。また、アイテムの再生を行うためには、ObjectIDや位置情報によってアイテムを指定して、そのデータの送信をDMSに要求する必要がある。
【００５５】
従って、例えば、DMCからトラック番号を指定してアイテムの再生が指示された場合、探索が終了していないと、DMRは、指定されたトラック番号のアイテムを特定できない。
【００５６】
同様に、ランダム再生を行うことも、探索が終了していない段階では、どこを指定してデータの送信を要求して良いのか分からないことから難しい。
【００５７】
ここで、探索により見つかる毎にオブジェクトの情報をDMRに記憶させていくことで、探索が完了した範囲に関して、トラック番号を指定した再生やランダム再生などのノーマル再生以外の再生を可能にすることが考えられる。
【００５８】
しかしながら、オブジェクトの情報を単純に記憶させていくとすると、探索で見つかるアイテムの数が多いときには、オブジェクトの情報を記憶するためのメモリの容量が無視できない量になってしまう。例えば、１つのオブジェクトの情報量が256bytesであるとした場合、1000個のアイテムが存在するときには、それだけで約256kbytesのメモリを消費してしまうことになる。アイテムの種類によっては1000個を遙かに上回る可能性もあり、DMRのメモリの容量が乏しい場合にはこの手法では対応できない。
【００５９】
本発明はこのような状況に鑑みてなされたものであり、アイテムの探索結果を効率的に管理することができるようにするものである。
【課題を解決するための手段】
【００６０】
本発明の一側面の情報処理装置は、DLNA機器である第１の他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行う探索手段と、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する記憶手段とを備える。
【００６１】
前記記憶手段には、BrowseDirectChildrenによって前記先頭アイテムが見つかったときのstartingIndexの値を、前記位置情報として記憶させることができる。
【００６２】
DLNA機器である第２の他の情報処理装置から送信されてきたPlayContainerUriを受信する受信手段をさらに設けることができる。この場合、前記探索手段には、前記PlayContainerUriのcontainer-id-argによってObjectIDが指定される前記ルートコンテナに格納される、first-item-id-argによってObjectIDが指定されるアイテムの親のコンテナからBrowseDirectChildrenを開始させる。
【００６３】
前記ルートコンテナを起点としてBrowseDirectChildrenを繰り返し行った場合に見つかるオブジェクトの順番は決まっており、前記探索手段には、前記first-item-id-argによってObjectIDが指定されるアイテムを格納する前記親のコンテナ以降のそれぞれのコンテナを対象としてBrowseDirectChildrenを行わせ、最後のオブジェクトが見つかったとき、前記ルートコンテナを起点として、前記ルートコンテナ以降のそれぞれのコンテナを対象としてBrowseDirectChildrenを行わせ、前記first-item-id-argによってObjectIDが指定されるアイテムが見つかったとき、探索を終了させることができる。
【００６４】
前記探索手段には、所定のトラック番号のアイテムの再生を行う場合、前記記憶手段に記憶されている情報に基づいて、前記所定のトラック番号のアイテムを格納するコンテナのObjectIDと、前記所定のトラック番号のアイテムのコンテナ内における位置を特定し、特定したObjectIDにより識別されるコンテナ内の、特定した位置にあるオブジェクトの探索を行わせることができる。前記探索手段による探索結果に基づいて、前記所定のトラック番号のアイテムの送信を前記第１の他の情報処理装置に対して要求し、要求に応じて送信されてきたアイテムを再生する再生手段をさらに設けることができる。
【００６５】
本発明の一側面の情報処理方法は、DLNA機器である他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行い、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶するステップを含む。
【００６６】
本発明の一側面のプログラムは、DLNA機器である他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索を行い、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶するステップを含む処理をコンピュータに実行させる。
【００６７】
本発明の他の側面の通信システムは、DLNA機器である、第１の情報処理装置と、第２の情報処理装置と、第３の情報処理装置とからなる通信システムである。前記第１の情報処理装置は、前記第３の情報処理装置において再生可能なアイテムを記憶する記憶手段と、ルートコンテナを設定し、前記アイテムを前記ルートコンテナに格納して管理するとともに、前記第３の情報処理装置からの探索要求に対して応答する制御手段とを備え、前記第２の情報処理装置は、前記ルートコンテナのObjectIDをcontainer-id-argによって指定するとともに、前記ルートコンテナに格納されるアイテムのうちの最初に再生するアイテムのObjectIDをfirst-item-id-argによって指定するPlayContainerUriを作成する作成手段と、前記作成手段により作成された前記PlayContainerUriを前記第３の情報処理装置に送信する送信手段とを備え、前記第３の情報処理装置は、前記第２の他の情報処理装置から送信されてきた前記PlayContainerUriを受信する受信手段と、前記PlayContainerUriのcontainer-id-argによってObjectIDが指定される前記ルートコンテナに格納される、first-item-id-argによってObjectIDが指定されるアイテムの親のコンテナからBrowseDirectChildrenを開始するように、前記第１の情報処理装置が管理する前記ルートコンテナに格納されるオブジェクトの探索を行う探索手段と、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とを、コンテナのObjectIDと対応付けて記憶する記憶手段とを備える。
【００６８】
本発明の一側面においては、DLNA機器である他の情報処理装置が管理するルートコンテナに格納されるオブジェクトの探索が行われ、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とが、コンテナのObjectIDと対応付けて記憶される。
【００６９】
本発明の他の側面においては、第１の情報処理装置により、第３の情報処理装置において再生可能なアイテムが記憶され、ルートコンテナが設定され、前記アイテムが前記ルートコンテナに格納して管理され、第３の情報処理装置からの探索要求に対して応答することが行われる。また、第２の情報処理装置により、前記ルートコンテナのObjectIDをcontainer-id-argによって指定するとともに、前記ルートコンテナに格納されるアイテムのうちの最初に再生するアイテムのObjectIDをfirst-item-id-argによって指定するPlayContainerUriが作成され、作成された前記PlayContainerUriが前記第３の情報処理装置に送信される。前記第３の情報処理装置により、前記第２の他の情報処理装置から送信されてきた前記PlayContainerUriが受信され、前記PlayContainerUriのcontainer-id-argによってObjectIDが指定される前記ルートコンテナに格納される、first-item-id-argによってObjectIDが指定されるアイテムの親のコンテナからBrowseDirectChildrenを開始するように、前記第１の情報処理装置が管理する前記ルートコンテナに格納されるオブジェクトの探索が行われ、前記ルートコンテナに格納されるオブジェクトの探索結果を表す情報として、前記ルートコンテナに格納されるコンテナ毎に、そのコンテナを対象とする探索により最初に見つかるアイテムである先頭アイテムのトラック番号と、最後に見つかるアイテムである最終アイテムのトラック番号と、前記先頭アイテムのコンテナ内における位置を表す位置情報とが、コンテナのObjectIDと対応付けて記憶される。
【発明の効果】
【００７０】
本発明によれば、アイテムの探索結果を効率的に管理することができる。
【図面の簡単な説明】
【００７１】
【図１】通信システムの構成例を示す図である。
【図２】プレイリスト再生の流れについて説明するフローチャートである。
【図３】アイテムのツリー構造の例を示す図である。
【図４】本発明の一実施形態に係るDLNA機器の構成例を示すブロック図である。
【図５】PlayContainerUriを示す図である。
【図６】各DLNA機器の処理について説明するフローチャートである。
【図７】DMRの探索処理について説明するフローチャートである。
【図８】図７のステップＳ１０１において行われる1st Item Track起点探索処理について説明するフローチャートである。
【図９】コンテナ探索０について説明するフローチャートである。
【図１０】図９のステップＳ１２３において行われるコンテナ情報作成処理について説明するフローチャートである。
【図１１】コンテナ探索１について説明するフローチャートである。
【図１２】コンテナ探索２について説明するフローチャートである。
【図１３】コンテナ探索３について説明するフローチャートである。
【図１４】コンテナ情報の例を示す図である。
【図１５】コンテナ情報の他の例を示す図である。
【図１６】コンテナ情報のさらに他の例を示す図である。
【図１７】図７のステップＳ１０２において行われるRootコンテナ起点探索処理について説明するフローチャートである。
【図１８】コンテナ情報の例を示す図である。
【図１９】統合したコンテナ情報の例を示す図である。
【図２０】DMRの再生処理について説明するフローチャートである。
【図２１】コンピュータのハードウェアの構成例を示すブロック図である。
【発明を実施するための形態】
【００７２】
［通信システムの構成例］
図４は、本発明の一実施形態に係るDLNA機器の構成例を示すブロック図である。
【００７３】
図４の通信システムは、図１を参照して説明したように、DMSとして動作するDLNA機器、DMRとして動作するDLNA機器、およびDMCとして動作するDLNA機器がネットワークを介して接続されることによって構成される。
【００７４】
図４のDMR１は図１のテレビジョン受像機などよりなるDMRに対応し、DMS２は図１のオーディオ機器などよりなるDMSに対応する。また、図４のDMC３は図１の携帯機器などよりなるDMCに対応する。重複する説明については適宜省略する。
【００７５】
図４に示すように、DMR１は、通信部１１、制御部１２、記憶部１３、および再生部１４から構成され、DMS２は、通信部２１、制御部２２、およびコンテンツ記憶部２３から構成される。DMC３は、通信部３１、制御部３２、操作部３３、および表示部３４から構成される。
【００７６】
DMR１の通信部１１は、ネットワークインタフェースなどよりなり、DMS２の通信部２１およびDMC３の通信部３１とネットワークを介して通信を行う。通信部１１により受信された情報は制御部１２に供給される。例えば、通信部１１は、DMC３の通信部３１から送信されてきたPlayContainerUriを受信する。
【００７７】
また、通信部１１は、制御部１２による制御に従ってBrowse要求をDMS２の通信部２１に送信し、Browse要求に対する応答として送信されてきた情報を受信する。通信部１１は、アイテム取得要求を送信することに応じてDMS２の通信部２１から送信されてきたアイテムを受信し、受信したアイテムを再生部１４に出力することなども行う。
【００７８】
制御部１２は、CPU(Central Processing Unit)などよりなり、所定のプログラムを実行することによってDMR１の全体の動作を制御する。例えば、制御部１２は、アイテムの探索時、Browse要求に対する応答としてDMS２から送信されてきた情報に基づいて、DMS２により管理されているコンテナに関する情報であるコンテナ情報を生成し、記憶部１３に記憶させる。
【００７９】
後述するように、コンテナ情報には、アイテムのタイトルやアーティスト名、アイテムの位置情報などは含まれず、コンテナのObjectID、コンテナに格納されているアイテムのトラック番号などが含まれる。
【００８０】
制御部１２は、アイテムのランダム再生がDMC３により指示された場合、または、DMC３により指定されたトラック番号のアイテムを再生する場合、記憶部１３に記憶させているコンテナ情報に基づいて、再生対象のアイテムが格納されているコンテナを特定する。また、制御部１２は、通信部１１を制御し、特定したコンテナを探索することによってそのコンテナに格納されているアイテムの情報を取得し、アイテム取得要求をDMS２に送信する。
【００８１】
記憶部１３は、フラッシュメモリなどよりなり、制御部１２により生成されたコンテナ情報を記憶する。
【００８２】
再生部１４は、通信部１１から供給されたアイテムを再生し、再生音をスピーカから出力する。
【００８３】
DMS２の通信部２１は、DMR１の通信部１１およびDMC３の通信部３１とネットワークを介して通信を行う。例えば、通信部２１は、DMR１の通信部１１からBrowse要求が送信されてきた場合、Browse要求を受信して制御部２２に出力する。通信部２１は、制御部２２から供給されたBrowseの実行結果を表す情報をDMR１の通信部１１に出力する。
【００８４】
また、通信部２１は、DMR１の通信部１１から送信されてきたアイテム取得要求を受信して制御部２２に出力する。通信部２１は、コンテンツ記憶部２３から読み出されたアイテムをDMR１の通信部１１に送信する。
【００８５】
制御部２２は、所定のプログラムを実行することによってDMR１の全体の動作を制御する。例えば、制御部２２は、プレイリスト毎にRootコンテナを設定し、プレイリストに登録されているアイテムを、図３に示すようなツリー構造によって管理する。制御部２２は、アイテムの探索時にDMR１から送信されてきたBrowse要求に応じて、Browse要求に含まれるパラメータによって指定されたコンテナに格納されているアイテムに関する情報を、通信部２１を制御してDMR１に送信する。
【００８６】
コンテンツ記憶部２３はアイテムを記憶する。コンテンツ記憶部２３に記憶されているアイテムは制御部２２により管理され、適宜、読み出される。
【００８７】
DMC３の通信部３１は、DMR１の通信部１１およびDMS２の通信部２１とネットワークを介して通信を行う。例えば、通信部３１は、制御部３２から供給されたPlayContainerUriをDMR１の通信部１１に送信する。
【００８８】
また、通信部３１は、DMS２の通信部２１に対してBrowse要求を送信し、Browse要求に対する応答としてDMS２の通信部２１から送信されてきた情報を受信する。通信部３１は、受信した情報を制御部３２に出力する。
【００８９】
制御部３２は、所定のプログラムを実行することによってDMC３の全体の動作を制御する。例えば、制御部３２は、Browse要求に対する応答としてDMS２から送信されてきた情報に基づいてプレイリストの一覧を表示部３４に表示し、再生するプレイリストをユーザに選択させる。プレイリストが選択されたとき、制御部３２は、PlayContainerUriを生成し、通信部３１を制御してDMR１に送信させる。
【００９０】
操作部３３は、DMC３の筐体に設けられる十字キーや決定キーに対するユーザの操作を検出し、ユーザの操作の内容を表す情報を制御部３２に出力する。
【００９１】
表示部３４は、LCD(Liquid Crystal Display)などのディスプレイよりなり、制御部３２による制御に従って、プレイリストの一覧を表示する。
【００９２】
図５は、PlayContainerUriを示す図である。
【００９３】
図５の“cds-udn”は、DMSを特定するUDNを表す。“service-id-arg”は、DMSが持つCDSのService IDを表す。CDS(Content Directory Service)は、DMSが管理するアイテムのリストを階層化して配信する機能である。“container-id-arg”は、プレイリストのRootコンテナのObjectIDを表す。DMSが管理するコンテナと、コンテナに格納されているアイテムには、それぞれObjectIDが割り当てられている。
【００９４】
“first-item-id-arg”は、1st Item Trackとして指定するアイテムのObjectIDを表し、“first-item-index-arg”は、1st Item Trackのアイテムのコンテナ内の位置を表す。“sort-arg”はソート条件を表し、“max-depth-arg”は、アイテムの探索時にRootコンテナから辿る階層の深さの上限を表す。
【００９５】
主な記述について説明すると、図５のPlayContainerUriは、“container-id-arg”で指定されるRootコンテナ以下に存在するアイテムのうち、“first-item-id-arg”で指定されたアイテムを起点とし、深さ優先で探索して見つかったアイテムを順に再生することを表す。
【００９６】
［各機器の動作］
図６のフローチャートを参照して、DMR１、DMS２、DMC３のそれぞれの処理について説明する。
【００９７】
図６には、PlayContainerUriをDMR１が受信し、解析するまでの各機器の処理を示している。図６のステップＳ５１乃至Ｓ５５のDMC３の処理は、図２のステップＳ１乃至Ｓ５の処理に対応し、図６のステップＳ６１，Ｓ６２のDMS２の処理は、図２のステップＳ１１，Ｓ１２の処理に対応する。図６のステップＳ７１，Ｓ７２のDMR１の処理は、図２のステップＳ２１，Ｓ２２の処理に対応する。
【００９８】
ステップＳ５１において、DMC３の制御部３２はBrowseを実行し、通信部３１を制御してBrowse要求をDMS２に送信する。
【００９９】
ステップＳ６１において、DMS２の通信部２１は、DMC３によるBrowse要求を受信する。
【０１００】
ステップＳ６２において、DMS２の制御部２２は、通信部２１を制御し、Browse要求に対する応答として、プレイリストとして選択することが可能な、アイテムが格納されているコンテナの情報をDMC３に送信する。
【０１０１】
ステップＳ５２において、DMC３の通信部３１は、DMS２から送信されてきた情報を受信する。制御部３２は、通信部３１において受信された情報に基づいてプレイリストの一覧を表示部３４に表示し、再生するプレイリストをユーザに選択させる。
【０１０２】
ステップＳ５３において、DMC３の制御部３２は、操作部３３から供給された情報に基づいて再生対象のプレイリスト（Rootコンテナ）を決定する。
【０１０３】
ステップＳ５４において、DMC３の制御部３２は、ユーザにより選択されたプレイリストに対応するRootコンテナを指定する情報などを含む、図５に示すPlayContainerUriを作成する。
【０１０４】
ステップＳ５５において、DMC３の制御部３２は、通信部３１を制御し、PlayContainerUriをDMR１に送信する。
【０１０５】
ステップＳ７１において、DMR１の通信部１１は、DMC３の通信部３１から送信されてきたPlayContainerUriを受信する。制御部１２は、通信部１１により受信されたPlayContainerUriを記憶部１３などに記憶させる。
【０１０６】
ステップＳ７２において、DMR１の制御部１２は、PlayContainerUriを解析することによって、アイテムの配信元がDMS２であることや、プレイリストに対応するRootコンテナなどを特定する。
【０１０７】
［DMRの探索処理］
次に、図７のフローチャートを参照して、アイテムを探索するDMR１の処理について説明する。
【０１０８】
図７の処理は、DMC３から送信されてきたPlayContainerUriの解析が終了した後に行われる。DMS２においては、図３に示すツリー構造によってアイテムが管理されているものとする。また、PlayContainerUriのcontainer-id-argによって図３のContainer_Aが指定され、first-item-id-argによって、1st Item TrackとしてItem_1が指定されているものとする。PlayContainerUriには、Container_AのObjectIDとItem_1のObjectIDが含まれている。
【０１０９】
ステップＳ１０１において、DMR１の制御部１２は、通信部１１を制御するなどしてDMS２と通信を行い、1st Item Track起点探索処理を行う。1st Item Track起点探索処理においては、1st Item Trackとして指定されたItem_1を起点として、アイテムの探索が行われる。
【０１１０】
ステップＳ１０２において、制御部１２は、Rootコンテナ起点探索処理を行う。Rootコンテナ起点探索処理においては、RootコンテナであるContainer_Aを起点として、1st Item Trackとして指定されたItem_1が見つかるまで探索が行われる。
【０１１１】
ステップＳ１０３において、制御部１２は、1st Item Track起点探索処理により得られたコンテナ情報と、Rootコンテナ起点探索処理により得られたコンテナ情報を統合する。コンテナ情報の統合については後述する。
【０１１２】
ここで、図８乃至図１３のフローチャートを参照して、図７のステップＳ１０１において行われる1st Item Track起点探索処理について説明する。
【０１１３】
図８のステップＳ１１１において、制御部１２は、PlayContainerUriのfirst-item-id-argで1st Item Trackとして指定されたアイテムを対象としてBrowseMetaDataを実行する。
【０１１４】
ここで、DMR１が行うBrowseには、BrowseMetaDataとBrowseDirectChildrenがある。
【０１１５】
BrowseMetaDataは、オブジェクトを指定して、そのオブジェクトの情報をDMR１が取得するためのBrowseである。DMR１からDMS２に送信されるBrowseMetaDataのコマンドにはObjectIDが含まれており、BrowseMetaDataのコマンドを受信したDMS２は、ObjectIDにより指定されたオブジェクトの情報をDMR１に対して送信する。DMS２から送信されるオブジェクトの情報には、ObjectIDにより指定されたオブジェクトを格納するコンテナ（親のコンテナ）のObjectIDであるparentIDなどが含まれる。
【０１１６】
BrowseDirectChildrenは、コンテナを指定して、そのコンテナに格納されているオブジェクト（子のオブジェクト）の情報をDMR１が取得するためのBrowseである。DMR１からDMS２に送信されるBrowseDirectChildrenのコマンドにはObjectIDが含まれており、BrowseDirectChildrenのコマンドを受信したDMS２は、ObjectIDにより指定されたコンテナに格納されているコンテナやアイテムのObjectID、アイテムのURLなどの情報をDMR１に送信する。
【０１１７】
この例においては、BrowseMetaDataが実行されることにより、1st Item Trackとして指定されたItem_1の親のコンテナであるContainer_CのObjectIDがparentIDとして取得される。
【０１１８】
ステップＳ１１２において、制御部１２は、1st Item Trackとして指定されたアイテムの親のコンテナを対象とするBrowseDirectChildrenの準備を行う。BrowseDirectChildrenの準備として、BrowseDirectChildrenのパラメータであるRequestCountの値として1、startingIndexの値として、PlayContainerUriで指定されたfirst-item-index-argの値を設定することが行われる。
【０１１９】
RequestCountは、BrowseDirectChildrenに対する応答として情報を返すオブジェクトの数を指定するパラメータである。例えば、RequestCountの値が1であることは、startingIndexで指定された位置にある１つのオブジェクトの情報の送信を要求することを表す。
【０１２０】
startingIndexは、情報の送信を要求するオブジェクトの位置を表すパラメータである。例えば、startingIndexの値が0であることは、BrowseDirectChildrenの対象となるコンテナに格納されている最初（ソート順で最初）のアイテムの位置を表す。
【０１２１】
DMC３から送信されてきたPlayContainerUriには、Container_CにおけるItem_1の位置を表す情報としてfirst-item-index-arg=1が設定されている。first-item-index-argの値が1であることは、Container_Cを対象としてBrowseDirectChildrenを実行したときに最初に見つかるオブジェクトであるContainer_Fの位置をstartingIndex=0で表される位置として、1st Item TrackであるItem_1が、その次の位置にあることを表す。
【０１２２】
すなわち、制御部１２は、RequestCountの値として1、startingIndexの値として1を、Container_Cを対象とするBrowseDirectChildrenのパラメータとして設定する。Container_Cを対象とすることは、Container_CのObjectIDにより指定される。
【０１２３】
ステップＳ１１３において、制御部１２はカウンタの値を１に初期化する。制御部１２は、記憶部１３に記憶させておくなどして、探索により見つかったアイテムの数を表すカウンタを管理している。その後、処理はコンテナ探索０に進む。
【０１２４】
次に、図９のフローチャートを参照して、コンテナ探索０について説明する。
【０１２５】
ステップＳ１２１において、制御部１２は、BrowseDirectChildrenを実行する。
【０１２６】
例えば、図８のステップＳ１１２において準備が行われた後に、Container_Cを対象とするBrowseDirectChildrenがステップＳ１２１において行われた場合、それに対する応答として、DMS２からは、Container_Cに格納され、startingIndex=1により指定される１つのオブジェクトであるItem_1の情報が送信されてくる。Item_1の情報には、Item_1のObjectIDが含まれる。
【０１２７】
なお、1st Item Track起点探索処理、Rootコンテナ起点探索処理で実行されるBrowseDirectChildrenにおいては、RequestCountの値として常に1が設定される。すなわち、DMS２により管理されているオブジェクトの情報が、１つずつ、BrowseDirectChildrenが行われる毎にDMR１により取得されることになる。
【０１２８】
また、startingIndexの値として、1st Item Trackで指定されたアイテムの親のコンテナに対してBrowseDirectChildrenを実行する場合を除いて、初期値として0が設定され、その後、同じコンテナを対象としてBrowseDirectChildrenを実行する毎に1を加算した値が設定される。すなわち、BrowseDirectChildrenの対象となるコンテナに格納されているオブジェクトの情報が、先頭のものから順に、１つずつ、BrowseDirectChildrenが行われる毎にDMR１により取得されることになる。
【０１２９】
ステップＳ１２２において、制御部１２は、アイテムが見つかったか否かを判定する。
【０１３０】
アイテムが見つかったとステップＳ１２２において判定した場合、ステップＳ１２３において、制御部１２は、コンテナ情報作成処理を行う。
【０１３１】
ステップＳ１２４において、制御部１２は、現在のコンテナ（現在探索対象としているコンテナ）を対象とするBrowseDirectChildrenのstartingIndexの値として、それまでの値に１を加算した値を設定する。
【０１３２】
startingIndexの値が更新された後、ステップＳ１２１に戻り、同じコンテナを対象としてBrowseDirectChildrenが実行される。同じコンテナを対象としてBrowseDirectChildrenが繰り返し行われることにより、現在のコンテナに直接格納されている全てのアイテムが見つかることになる。
【０１３３】
一方、アイテムが見つかっていないとステップＳ１２２において判定した場合、ステップＳ１２５において、制御部１２は、ステップＳ１２１で実行したBrowseDirectChildrenによってコンテナが見つかったか否かを判定する。
【０１３４】
コンテナが見つかったとステップＳ１２５において判定した場合、ステップＳ１２６において、制御部１２は、現在のコンテナのObjectIDと、現在のstartingIndexの値をスタックに格納する。スタック用のメモリ領域も例えば記憶部１３に確保されている。
【０１３５】
ステップＳ１２７において、制御部１２は、ステップＳ１２１のBrowseDirectChildrenによって見つかったコンテナを、次の探索の対象として選択する。その後、処理はコンテナ探索１に進む。
【０１３６】
一方、ステップＳ１２５においてコンテナが見つかっていないと判定した場合、ステップＳ１２８において、制御部１２は、現在のコンテナがRootコンテナであるか否かを判定する。現在のコンテナがRootコンテナであるか否かは、例えば、BrowseDirectChildrenによって得られたコンテナのObjectIDが、DMC３から送信されてきたPlayContainerUriのcontainer-id-argで指定されるObjectIDと同じであるか否かに基づいて判定される。
【０１３７】
現在のコンテナがRootコンテナではないとステップＳ１２８において判定した場合、制御部１２はコンテナ探索２を行う。
【０１３８】
一方、現在のコンテナがRootコンテナであるとステップＳ１２８において判定した場合、制御部１２は、1st Item Track起点探索処理を終了し、図７のステップＳ１０１以降の処理を行う。
【０１３９】
次に、図１０のフローチャートを参照して、図９のステップＳ１２３において行われるコンテナ情報作成処理について説明する。
【０１４０】
図１０の処理は、ステップＳ１２１において行われたBrowseDirectChildrenによってアイテムが見つかる毎に行われる。
【０１４１】
ステップＳ１４１において、制御部１２は、現在のコンテナからアイテムが見つかったのは初めてか否かを判定する。例えば、現在のコンテナがContainer_Cであり、BrowseDirectChildrenによって見つかったアイテムが、先頭のアイテムであるItem_1である場合、現在のコンテナからアイテムが見つかったのが初めてであるとして判定される。
【０１４２】
現在のコンテナからアイテムが見つかったのが初めてであるとステップＳ１４１において判定した場合、ステップＳ１４２において、制御部１２は、StartingIndex，Start Track No，End Track No，1st Item Track No，ContainerIDを格納するメモリ領域を記憶部１３に確保する。これらの情報は、コンテナ情報に含まれる情報である。
【０１４３】
StartingIndexは、ContainerIDにより指定されるコンテナを対象としてBrowseDirectChildrenを行うときに、startingIndexの値としてどの値を指定すれば、そのコンテナに格納されている最初のアイテム（Start Track Noで指定されるアイテム）が見つかるのかを表す。あるコンテナを対象とするBrowseDirectChildrenによって最初にアイテムが見つかったときのstartingIndexの値が、StartingIndexとして制御部１２により登録される。
【０１４４】
Start Track Noは、ContainerIDにより指定されるコンテナに格納されるアイテムのうちの最初のアイテムのトラック番号を表す。1st Item Track起点探索処理においては、見つかったアイテムの順に、トラック番号として仮の番号が割り当てられる。あるコンテナを対象とするBrowseDirectChildrenによって最初に見つかったアイテムのトラック番号がStart Track Noとして制御部１２により登録される。
【０１４５】
End Track Noは、ContainerIDにより指定されるコンテナに格納されるアイテムのうちの最後のアイテムのトラック番号を表す。あるコンテナを対象とするBrowseDirectChildrenによって最後に見つかったアイテムのトラック番号がEnd Track Noとして制御部１２により登録される。
【０１４６】
1st Item Track Noは、PlayContainerUriのfirst-item-id-argによって1st Item Trackとして指定されたアイテムが、ContainerIDにより指定されるコンテナに格納されるものある場合に、その1st Item Trackのアイテムのトラック番号を表す。1st Item Trackとして指定されたアイテムが格納されていないコンテナの情報には、1st Item Track Noの値として0が登録される。
【０１４７】
ContainerIDは、それに対応付けられて記憶されるStartingIndex，Start Track No，End Track No，1st Item Track Noの各情報が、どのコンテナに関する情報であるのかを表す。ContainerIDには、コンテナのObjectIDが登録される。
【０１４８】
ステップＳ１４３において、制御部１２は、StartingIndexの値として、現在のstartingIndexの値を登録し、Start Track Noの値として、現在のカウンタ値を登録する。また、制御部１２は、ContainerIDとして、BrowseDirectChildrenで利用したObjectID（現在のコンテナのObjectID）を登録する。
【０１４９】
現在のコンテナからアイテムが見つかったのが初めてではないとステップＳ１４１において判定された場合、ステップＳ１４２，Ｓ１４３の処理はスキップされる。
【０１５０】
ステップＳ１４４において、制御部１２は、End Track Noの値として、現在のカウンタ値を登録する。現在のコンテナの情報として、End Track Noの値が既に登録されている場合、そのEnd Track Noの値は現在のカウンタ値によって更新される。
【０１５１】
ステップＳ１４５において、制御部１２は、見つかったアイテムがPlayContainerUriのfirst-item-id-argで指定されたアイテムと同じであるか否かを判定する。
【０１５２】
見つかったアイテムがPlayContainerUriのfirst-item-id-argで指定されたアイテムと同じであるとステップＳ１４５において判定した場合、制御部１２は、ステップＳ１４６において、1st Item Track Noの値として現在のカウンタ値を登録する。
【０１５３】
1st Item Track Noの値を登録した後、または、見つかったアイテムがPlayContainerUriのfirst-item-id-argで指定されたアイテムではないとステップＳ１４５において判定された場合、ステップＳ１４７において、制御部１２は、カウンタの値に1を加算する。
【０１５４】
カウンタの値が更新された後、図９のステップＳ１２３に戻り、それ以降の処理が行われる。
【０１５５】
次に、図１１のフローチャートを参照して、図９のステップＳ１２７の処理に続けて行われるコンテナ探索１について説明する。
【０１５６】
コンテナ探索１は、直前に実行したBrowseDirectChildrenによってコンテナが見つかった場合、その見つかったコンテナを対象として行われる。
【０１５７】
ステップＳ１６１において、制御部１２は、startingIndexの値を0に初期化し、現在のコンテナ（直前に実行したBrowseDirectChildrenによって見つかったコンテナ）を対象とするBrowseDirectChildrenの準備を行う。
【０１５８】
ステップＳ１６２において、制御部１２は、現在のコンテナを対象としてBrowseDirectChildrenを実行する。その後、図９のコンテナ探索０のステップＳ１２２以降の処理が行われる。
【０１５９】
次に、図１２のフローチャートを参照して、現在のコンテナがRootコンテナではないと図９のステップＳ１２８において判定された場合に、コンテナ探索０に続けて行われるコンテナ探索２について説明する。
【０１６０】
ステップＳ１７１において、制御部１２は、スタックにデータが格納されているか否かを判定する。ここでは、コンテナ探索２が開始される前に図９のステップＳ１２６の処理、または、後述する図１３のステップＳ１８８の処理が行われている場合、スタックにデータが格納されているとして判定されることになる。
【０１６１】
スタックにデータが格納されていないとステップＳ１７１において判定された場合、処理はコンテナ探索３に進む。
【０１６２】
一方、スタックにデータが格納されているとステップＳ１７１において判定した場合、ステップＳ１７２において、制御部１２は、スタックに格納しておいたObjectIDとstartingIndexの値を取り出す。取り出されたObjectIDとstartingIndexの値はスタックから消去される。
【０１６３】
ステップＳ１７３において、スタックから取り出したObjectIDにより指定されるコンテナを対象としてBrowseDirectChildrenを実行する。その際、制御部１２は、startingIndexの値として、スタックから取り出したstartingIndexの値に1を加算した値を用いる。その後、図９のコンテナ探索０のステップＳ１２２以降の処理が行われる。
【０１６４】
次に、図１３のフローチャートを参照して、図１２のステップＳ１７１においてスタックにデータが格納されていないと判定された場合に行われるコンテナ探索３について説明する。
【０１６５】
ステップＳ１８１において、制御部１２は、現在のコンテナのObjectIDを調べる。ここでは、現在のコンテナのObjectIDをαとする。
【０１６６】
ステップＳ１８２において、制御部１２は、ステップＳ１８１で調べたObjectIDを用いて現在のコンテナを対象としてBrowseMetaDataを実行し、現在のコンテナの親のコンテナのObjectIDであるparentIDを取得する。
【０１６７】
ステップＳ１８３において、制御部１２は、startingIndexの値として0を設定し、parentIDで指定されるコンテナを対象とするBrowseDirectChildrenの準備を行う。
【０１６８】
ステップＳ１８４において、制御部１２は、BrowseDirectChildrenを実行する。
【０１６９】
ステップＳ１８５において、制御部１２は、BrowseDirectChildrenの実行結果に基づいて、αで指定される、ステップＳ１８２でBrowseMetaDataを実行したコンテナが見つかったか否かを判定する。
【０１７０】
ステップＳ１８２でBrowseMetaDataを実行したコンテナが見つかっていないとステップＳ１８５において判定した場合、ステップＳ１８６において、制御部１２は、現在のコンテナ（ステップＳ１８２で取得したparentIDで指定されるコンテナ）を対象とするBrowseDirectChildrenのstartingIndexの値として、それまでの値に１を加算した値を設定する。
【０１７１】
startingIndexの値が更新された後、ステップＳ１８４に戻り、同じコンテナを対象としてBrowseDirectChildrenが実行される。
【０１７２】
ステップＳ１８２でBrowseMetaDataを実行したコンテナが見つかったとステップＳ１８５において判定した場合、ステップＳ１８７において、制御部１２は、現在のstartingIndexの値に１を加算する。
【０１７３】
ステップＳ１８８において、制御部１２は、現在探索していたコンテナのObjectIDとstartingIndexの値をスタックに格納する。その後、処理はコンテナ探索０に進む。
【０１７４】
ここで、図３のツリー構造を対象として以上の探索を行った場合の処理の流れを具体的に説明する。
【０１７５】
はじめに、PlayContainerUriのfirst-item-id-argによって1st Item Trackとして指定されたItem_1を対象としてBrowseMetaDataが実行される（図８のステップＳ１１１）。Item_1を対象としたBrowseMetaDataにより、親のコンテナであるContainer_CのObjectIDが取得される。
【０１７６】
次に、取得されたObjectIDを用いて、Container_Cを対象としてBrowseDirectChildrenが実行される（図９のステップＳ１２１）。Container_Cを対象とする１回目のBrowseDirectChildrenのstartingIndexの値は、PlayContainerUriで指定されたfirst-item-index-argの値と同じ1である。
【０１７７】
Container_Cを対象とする１回目のBrowseDirectChildrenによりItem_1が見つかり、それに応じてコンテナ情報作成処理が行われる（図９のステップＳ１２３）。コンテナ情報作成処理により、Container_Cの情報として、StartingIndex=1、Start Track No=1、ContainerID=Container_CのObjectIDが、それぞれ登録される（図１０のステップＳ１４３）。また、1st Item Track No=1が登録される（図１０のステップＳ１４６）。
【０１７８】
startingIndexの値は図８のステップＳ１２４において２となる。Container_Cを対象とする２回目のBrowseDirectChildrenによりItem_2が見つかり、それに応じて、コンテナ情報作成処理が行われる（図９のステップＳ１２３）。コンテナ情報作成処理により、Container_Cの情報として、End Track No=2が登録される（図１０のステップＳ１４４）。
【０１７９】
この時点で記憶部１３に記憶されるコンテナ情報を図１４に示す。図１４に示すように、Container_Cの情報として、StartingIndex=1、Start Track No=1、End Track No=2、1st Item Track No=1が、Container_CのObjectIDと対応付けて記憶される。
【０１８０】
このように、DMR１においては、あるコンテナを対象とした探索結果を表す情報として、アイテムの再生時に、そのコンテナを対象としてどのような値をパラメータとして設定してBrowseDirectChildrenを行えばアイテムの情報を取得することができるのかを表す情報が記憶される。
【０１８１】
すなわち、Container_Cを再生する場合、制御部１２は、コンテナ情報を参照することによって、Container_CのObjectIDを特定することが可能になる。
【０１８２】
また、制御部１２は、特定したObjectIDに基づいてContainer_Cを指定するとともに、startingIndex=1を指定するBrowseDirectChildrenを実行することによって、仮のトラック番号でいうTrack_1のアイテムの情報を取得することが可能になる。制御部１２は、取得した情報（ObjectID、URL等）に基づいてアイテム取得要求を行うことによって、Track_1のアイテムを取得し、再生することができる。
【０１８３】
さらに、制御部１２は、特定したObjectIDに基づいてContainer_Cを指定するとともに、startingIndex=2を指定するBrowseDirectChildrenを実行することによって、仮のトラック番号でいうTrack_2のアイテムの情報を取得することが可能になる。制御部１２は、取得した情報に基づいてアイテム取得要求を行うことによって、Track_2のアイテムを取得し、再生することができる。
【０１８４】
また、制御部１２は、Container_Cに格納されているアイテムが、Track_1のアイテムからTrack_2のアイテムまでであることをコンテナ情報から特定することができる。また、制御部１２は、”End Track No” - “Start Track No” + 1の計算結果から、Container_C には再生対象のアイテムが2個あることも特定することができる。制御部１２は、1st Item Track No に1が設定されていることから、PlayContainerUriで指定された、最初に再生すべきアイテムがContainer_Cにあることを特定することができる。
【０１８５】
これにより、BrowseDirectChildrenによって取得された情報を全て記憶しておく場合に較べて、DMS２から取得可能なアイテムの情報を記憶しておくために必要なメモリの容量を減らすことが可能になる。
【０１８６】
図３のツリー構造の探索の説明に戻り、startingIndexの値は図８のステップＳ１２４において３となり、Container_Cを対象とする３回目のBrowseDirectChildrenによりContainer_Gが見つかる。
【０１８７】
Container_Cの情報がスタックに格納された後（図９のステップＳ１２６）、Container_Gが、次の探索対象のコンテナとして選択される（図９のステップＳ１２７）。Container_Gの探索に移る前にContainer_Cの情報をスタックに格納しておく理由は、Container_Gの探索が終わった後、Container_Cに戻り、Container_Cを対象として既に探索を行った位置の続きから探索を再開できるようにするためである。
【０１８８】
Container_Gを対象としてコンテナ探索１が行われ（図１１）、続けて、コンテナ探索０のステップＳ１２２以降の処理が行われることによって、Item_3とItem_4が見つかる。それぞれのアイテムが見つかる毎にコンテナ情報作成処理が行われることによって、記憶部１３には、Container_Gの情報としてItem_3とItem_4の情報が記憶される。
【０１８９】
この時点で記憶部１３に記憶されるコンテナ情報を図１５に示す。図１５に示すように、Container_Cの情報に追加して、StartingIndex=0、Start Track No=3、End Track No=4、1st Item Track No=0がContainer_GのObjectIDと対応付けて記憶される。図１５のコンテナ情報は、Container_Cに格納されているアイテムを再生した後、再生対象がContainer_Gに格納されているアイテムに移ることを表す。
【０１９０】
Container_Gを対象とする２回のBrowseDirectChildrenによってItem_3とItem_4が見つかった後に行われる、Container_Gを対象とする３回目のBrowseDirectChildren（図９のステップＳ１２１）によっては、アイテムもコンテナも見つからない。この場合、現在のコンテナであるContainer_GはRootコンテナではないから、図９のステップＳ１２８の判定を経て、処理はコンテナ探索０から、図１２のコンテナ探索２に進む。
【０１９１】
探索対象がContainer_CからContainer_Gに移る前にContainer_Cの情報がスタックに格納されているから、コンテナ探索２においては、スタックに格納されている情報に基づいて、Container_Cを対象としてBrowseDirectChildrenが実行される（図１２のステップＳ１７３）。ここで行われるBrowseDirectChildrenは、既に探索が終了しているContainer_Gの次の位置にあるオブジェクトを探索するものである。その後、処理はコンテナ探索０のステップＳ１２２以降に進む。
【０１９２】
Container_Cを対象とするBrowseDirectChildrenによってはオブジェクトが見つからないから、処理はコンテナ探索０からコンテナ探索２に進む。２回目のコンテナ探索２においては、スタックにはContainer_Cの情報が格納されていないから、ステップＳ１７１の判定を経て、処理はコンテナ探索２からコンテナ探索３に進む。
【０１９３】
コンテナ探索３においては、Container_Cに対してBrowseMetaDataが実行され、親のコンテナであるContainer_AのObjectIDが取得される（図１３のステップＳ１８２）。また、Container_Aを対象として、Container_Cが見つかるまで、BrowseDirectChildrenが繰り返される（図１３のステップＳ１８４）。
【０１９４】
Container_Aを対象とする３回目のBrowseDirectChildrenによってContainer_Cが見つかり、このとき、startingIndexの値に1が加算され（図１３のステップＳ１８７）、Container_Aの情報がスタックに格納された後（図１３のステップＳ１８８）、処理はコンテナ探索３からコンテナ探索０に進む。
【０１９５】
その後、Container_Dを対象としてBrowseDirectChildrenが実行され、Item_5が見つかることに応じてコンテナ情報作成処理が行われる。また、Container_Eを対象としてBrowseDirectChildrenが実行され、Item_6が見つかることに応じてコンテナ情報作成処理が行われる。
【０１９６】
Container_Aを対象としてBrowseDirectChildrenが実行され、Item_7が見つかることに応じてコンテナ情報作成処理が行われた後、図９のステップＳ１２８の処理を経て、1st Item Track起点探索処理が終了する。
【０１９７】
以上のように、1st Item Track起点探索処理においては、Item_1を起点として、Item_1とともに同じContainer_Cに格納されるItem_2、Container_Gに格納されるItem_3、Item_3とともに同じContainer_Gに格納されるItem_4、Container_Dに格納されるItem_5、Container_Eに格納されるItem_6、Container_Aに格納されるItem_7の順に各アイテムが見つかる。
【０１９８】
1st Item Track起点探索処理が終了したとき、記憶部１３には、図１６に示すコンテナ情報が記憶される。
【０１９９】
図１６に示すように、コンテナ情報には、見つかったアイテムを格納するコンテナの順に、Container_C、Container_G、Container_D、Container_E、Container_Aの各コンテナの情報が登録される。
【０２００】
ただし、このままでは、PlayContainerUriで指定されたDMS２が管理するアイテムの全ての探索結果を取得したことにならない。図７を参照して説明したように、1st Item Track起点探索処理が終了したとき、Rootコンテナ起点探索処理が行われる。
【０２０１】
Rootコンテナ起点探索処理においては、RootコンテナであるContainer_Aを起点として、1st Item Trackとして指定されたItem_1が見つかるまで探索が行われる。Rootコンテナ起点探索処理も、探索の起点が異なる点と、Item_1が見つかったときに処理が終了される点を除いて、基本的に、1st Item Track起点探索処理と同様の処理である。
【０２０２】
図１７のフローチャートを参照して、図７のステップＳ１０２において行われるRootコンテナ起点探索処理について説明する。
【０２０３】
ステップＳ２０１において、制御部１２は、startingIndex=0を設定し、RootコンテナであるContainer_Aに対するBrowseDirectChildrenの準備を行う。
【０２０４】
ステップＳ２０２において、制御部１２は、カウンタの値を１に初期化する。
【０２０５】
その後、処理はコンテナ探索０に進み、上述した処理と同様の処理が行われる。すなわち、Rootコンテナ起点探索処理においては、Container_Aに格納されるItem_8、Container_Bに格納されるItem_9、Container_Fに格納されるItem_10が見つかる。Item_10が見つかった後、Container_Cに格納されるItem_1が見つかるから、そのときにRootコンテナ起点探索処理は終了する。
【０２０６】
Rootコンテナ起点探索処理のBrowseDirectChildrenによって見つかったアイテムが1st Item Trackとして指定されたItem_1と同じアイテムであるか否かは、BrowseDirectChildrenによって得られたアイテムのObjectIDが、DMC３から送信されてきたPlayContainerUriのfirst-item-id-argで指定されるObjectIDと同じであるか否かに基づいて判定される。Rootコンテナ起点探索処理において、Container_Cを対象とし、startingIndexの値を1としてBrowseDirectChildrenを行ったときに得られるObjectIDは、PlayContainerUriのfirst-item-id-argで指定されるObjectIDと同じものとなる。このとき、Rootコンテナ起点探索処理は終了する。
【０２０７】
Rootコンテナ起点探索処理が終了したとき、記憶部１３には、図１８に示すコンテナ情報が記憶される。
【０２０８】
図１８に示すように、コンテナ情報には、Rootコンテナ起点探索処理によって見つかったアイテムを格納するコンテナの順に、Container_A、Container_B、Container_F、Container_Cの各コンテナの情報が登録される。
【０２０９】
上述したように、DMS２においては、RootコンテナであるContainer_Aを起点としてBrowseを実行したときに見つけることができる順に、それぞれのアイテムにトラック番号が割り当てられている。
【０２１０】
Rootコンテナ起点探索処理においても、見つかった順に各アイテムにトラック番号が制御部１２により割り当てられるが、各アイテムに割り当てられたトラック番号は、仮の番号ではなく、DMS２により割り当てられているトラック番号と同じ、正式な番号である。図１８のStart Track No、End Track No、1st Item Track Noは、正式なトラック番号である。
【０２１１】
図７を参照して説明したように、Rootコンテナ起点探索処理が終了したとき、1st Item Track起点探索処理によって得られたコンテナ情報と、Rootコンテナ起点探索処理によって得られたコンテナ情報の統合が行われる（ステップＳ１０３）。
【０２１２】
図１９は、1st Item Track起点探索処理によって得られた図１６のコンテナ情報と、Rootコンテナ起点探索処理によって得られた図１８のコンテナ情報を統合したコンテナ情報の例を示す図である。
【０２１３】
Rootコンテナ起点探索処理において各アイテムに割り当てられたトラック番号は正式な番号であるから、図１９に示すように、Rootコンテナ起点探索処理によって得られた図１８の情報に続けて、1st Item Track起点探索処理によって得られた図１６の情報を加えるようにしてコンテナ情報の統合が行われる。
【０２１４】
1st Item Track起点探索処理によって得られたコンテナ情報に含まれる各アイテムのトラック番号は、PlayContainerUriによって1st Itemとして指定されたItem_1の仮のトラック番号１を基準とする相対値である。Item_1の正式なトラック番号は4であるから、コンテナ情報の統合時、1st Item Track起点探索処理によって得られたコンテナ情報に含まれる各アイテムのトラック番号は、Item_1の正式なトラック番号である4を基準として、相対的に同じ数だけ差があるように書き換えられる。すなわち、図１６のコンテナ情報に含まれるトラック番号は、図１９のContainer_Cの行以降に示すように、3（4-1）ずつ増えるように書き換えられる。
【０２１５】
これにより、PlayContainerUriで指定された、DMS２が管理するContainer_Aに格納されるアイテムの全ての探索結果を取得したことになる。
【０２１６】
以上のように、DMS２が管理するツリー構造全体を把握するための情報として、各コンテナの情報のみを記憶するようにしたため、メモリの使用量を抑えることができる。例えば、１つのコンテナに10個のアイテムが格納されており、そのようなコンテナが1000個ある場合、アイテムの情報を個々に全て記憶しておくとした場合には10000個のアイテムの情報を格納しておく分のメモリ領域が必要になるが、以上の方法によれば10分の1の領域で済む。
【０２１７】
また、ツリー構造全体の情報を記憶しておくことになるため、トラック番号を指定しての再生やランダム再生がDMC３から指示された場合であっても、その指示に応じた処理を行うことが可能になる。
【０２１８】
［DMRの再生処理］
次に、図２０のフローチャートを参照して、DMR１の再生処理について説明する。
【０２１９】
図２０の処理は、DMS２が管理するアイテムの全ての探索結果が以上の処理によって取得された状態で、例えば、DMC３から、所定のアイテムの再生が指示されたときに開始される。DMC３からは、トラック番号を指定してアイテムの再生が指示される。
【０２２０】
ステップＳ２１１において、制御部１２は、DMC３により再生が指示されたトラック番号が割り当てられたアイテムを格納するコンテナの情報をコンテナ情報から読み出す。例えば、図１９のコンテナ情報が記憶部１３に記憶されている場合において、トラック番号9のアイテムを再生することが指示されたとき、トラック番号として9が割り当てられたアイテムを格納するContainer_EのObjectIDと、StartingIndex=0が読み出される。
【０２２１】
ステップＳ２１２において、制御部１２は、再生が指示されたトラック番号が割り当てられたアイテムを格納するコンテナを対象としてBrowseDirectChildrenを実行する。StartingIndexの値にはステップＳ２１１で読み出された値が用いられる。BrowseDirectChildrenに対する応答として、DMS２からは、再生が指示されたアイテムのObjectID、URLなどの詳細情報が送信されてくる。
【０２２２】
ステップＳ２１３において、制御部１２は、ObjectIDやURLを用いるなどして再生対象のアイテムを指定し、DMS２に対してアイテムの送信を要求する。ここで行われる要求に対する応答として、DMS２からは、コンテンツ記憶部２３に記憶されているアイテムのデータが送信されてくる。DMS２から送信されてきたアイテムのデータは通信部１１により受信され、再生部１４に供給される。
【０２２３】
ステップＳ２１４において、再生部１４は、通信部１１から供給されたアイテムを再生する。
【０２２４】
トラック番号を指定して再生が指示された場合、その再生処理は以上のようにして行われる。図２０の再生処理は、トラック番号を指定して再生が指示された場合だけでなく、ランダム再生がDMC３により指示された場合にも適用可能である。
【０２２５】
ランダム再生を行う場合、制御部１２は、まず、コンテナ情報に登録されているContainer_IDの中から、１つのContainer_IDをランダムに選択する。次に、制御部１２は、選択したContainer_IDに対応付けて記憶されている、同じ行のStart Track NoとEnd Track Noで表される範囲のトラック番号の中から、１つのトラック番号をランダムに選択する。
【０２２６】
トラック番号を選択し終えたとき、制御部１２は、startingIndexをコンテナ情報のStartingIndexの値に基づいて決定し、Container_IDで特定されるコンテナに対してBrowseDirectChildrenを行う。これにより、制御部１２は再生すべきアイテムの情報を得ることができる。
【０２２７】
なお、アイテムをランダムに選択する手法として、図１９のコンテナ情報から最大Track番号が分かるので、その範囲で乱数を生成し、得られた番号とコンテナ情報を照らし合わせることで、どこのコンテナの何番目の位置に、得られたトラック番号のアイテムがあるのかを選択する方法もある。
【０２２８】
［コンピュータの構成例］
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０２２９】
図２１は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０２３０】
CPU(Central Processing Unit)１０１、ROM(Read Only Memory)１０２、RAM(Random Access Memory)１０３は、バス１０４により相互に接続されている。
【０２３１】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、キーボード、マウスなどよりなる入力部１０６、ディスプレイ、スピーカなどよりなる出力部１０７が接続される。また、入出力インタフェース１０５には、ハードディスクや不揮発性のメモリなどよりなる記憶部１０８、ネットワークインタフェースなどよりなる通信部１０９、リムーバブルメディア１１１を駆動するドライブ１１０が接続される。
【０２３２】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを入出力インタフェース１０５及びバス１０４を介してRAM１０３にロードして実行することにより、上述した一連の処理が行われる。
【０２３３】
CPU１０１が実行するプログラムは、例えばリムーバブルメディア１１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供され、記憶部１０８にインストールされる。
【０２３４】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０２３５】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０２３６】
１  DMR，  ２  DMS，  ３  DMC，  １１  通信部，  １２  制御部，  １３  記憶部，  １４  再生部，  ２１  通信部，  ２２  制御部，  ２３  コンテンツ記憶部，  ３１  通信部，  ３２  制御部，  ３３  操作部，  ３４  表示部
【図１】
2012018564.tif 000003
【図２】
2012018564.tif 000004
【図３】
2012018564.tif 000005
【図４】
2012018564.tif 000006
【図５】
2012018564.tif 000007
【図６】
2012018564.tif 000008
【図７】
2012018564.tif 000009
【図８】
2012018564.tif 000010
【図９】
2012018564.tif 000011
【図１０】
2012018564.tif 000012
【図１１】
2012018564.tif 000013
【図１２】
2012018564.tif 000014
【図１３】
2012018564.tif 000015
【図１４】
2012018564.tif 000016
【図１５】
2012018564.tif 000017
【図１６】
2012018564.tif 000018
【図１７】
2012018564.tif 000019
【図１８】
2012018564.tif 000020
【図１９】
2012018564.tif 000021
【図２０】
2012018564.tif 000022
【図２１】
2012018564.tif 000023