(57)【要約】ネットワークに接続されたマルチメディアコンテンツサーバと複数の端末から構成されるマルチメディア配信システムにおいて、ある端末において中断したコンテンツの再生を、別の端末から再開する。
2007072680.tif 000002
【特許請求の範囲】
【請求項１】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、
外部の装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された出力先に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える
ことを特徴とするデータ出力装置。
【請求項２】
前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、指定された前記複数の端末のいずれかを出力先として出力する
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項３】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項４】
前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項５】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断信号を受信したときの出力先とは異なる第２の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させたマルチメディアデータを、前記出力手段により、前記第2の出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項６】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項７】
さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる  ことを特徴とする請求項１に記載のデータ出力装置。
【請求項８】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項７に記載のデータ出力装置。
【請求項９】
マルチメディアデータを蓄積している蓄積手段を備える装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
外部の制御装置からの信号を受信する受信ステップと、
前記蓄積手段からデータを読み出す読出ステップと、
前記マルチメディアデータを指定された出力先に出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。
【請求項１０】
さらに、Ｊａｖａ（登録商標）アプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションによって起動される  ことを特徴とする請求項１に記載のデータ出力装置。
【請求項１１】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断信号を受信したときの出力元とは異なる第２の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力元とは異なる出力先へ出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１２】
前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、ユーザにより指定された前記複数の端末のいずれかに、前記ネットワークを介して出力する
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１３】
前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１４】
前記制御手段は、さらに、
前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１５】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受けた場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる制御を行う
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１６】
さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、Ｊａｖａアプリケーションより、前記出力手段から前記再生手段への出力を中断したマルチメディアデータの再開位置情報を受け取って、前記記憶手段に記憶させ、
Ｊａｖａアプリケーションからマルチメディアデータの識別子を受け取り、前記記憶手段に記憶させたマルチメディアデータの再開位置情報を前記Ｊａｖａアプリケーションに引き渡す
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１７】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、Ｊａｖａアプリケーションからの指示により、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
書き込ませたデータの再生位置情報を生成して前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１６に記載のデータ出力装置。
【請求項１８】
マルチメディアデータを蓄積する蓄積手段と、
再開位置情報を記憶する記憶手段と、
Ｊａｖａアプリケーションを実行するＪａｖａ実行手段と、
Ｊａｖａアプリケーションによって起動される制御手段とを備えた、
ネットワークに接続された装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
前記ネットワークに接続された外部の制御装置からメッセージを受信する受信ステップと、
前記蓄積手段からマルチメディアデータを読み出す読出ステップと、
前記マルチメディアデータを、指定された出力先に、前記ネットワークを介して出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。
【請求項１９】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、  前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える  ことを特徴とする機器制御装置。
【請求項２０】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
Ｊａｖａアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる
ことを特徴とする請求項１９に記載の機器制御装置。
【請求項２１】
Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記中断要求と出力再開時の出力先とを受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記送信先を前記送信手段により送信させる
ことを特徴とする請求項１９に記載の機器制御装置。
【請求項２２】
映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、
前記データ出力装置から提供されるコンテンツの属性を受信する属性受信手段と、
前記データ出力装置に要求を送信する送信手段と、
ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える
ことを特徴とする機器制御装置。
【請求項２３】
前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、
前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記データ出力装置へ送信させる
ことを特徴とする請求項２２に記載の機器制御装置。
【請求項２４】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる
ことを特徴とする請求項２２に記載の機器制御装置。
【請求項２５】
前記制御手段は、出力中断の状態であると判定した場合に、さらに、Ｊａｖａアプリケーションに中断している出力を再開するか否かを問い合わせ、Ｊａｖａアプリケーションから再開すると指示を受ければ、前記送信手段に前記再開要求を前記マルチメディアサーバに送信させる
ことを特徴とする請求項２４に記載の機器制御装置。
【請求項２６】
ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、
前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記データ出力装置と通信する通信手段と、
前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、
前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える
ことを特徴とする機器制御装置。
【請求項２７】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、
Ｊａｖａアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる
ことを特徴とする請求項２６に記載の機器制御装置。
【請求項２８】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置と、出力された前記マルチメディアデータを受信する複数の端末とがネットワークを介して接続されているマルチメディア配信システムであって、
前記データ出力装置は、
前記機器制御装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された前記端末に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段より、前記出力先へ出力させる制御手段とを備え、
前記端末は、
前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える
ことを特徴とするマルチメディア配信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディアのデジタルコンテンツのネットワークなどへの出力およびその制御に関する。
【背景技術】
【０００２】
近年、ＢＳデジタル放送、ＣＳ１１０度デジタル放送および地上波デジタル放送などのデジタル放送が開始された。また、ＨＤＤレコーダ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）レコーダなどの普及が進んでいる。これらにより、家庭内で利用できる、デジタル化されたマルチメディアコンテンツが増加している。【０００３】
また、一方で、ブロードバンド環境の整備により、家庭からのインターネットアクセスが普及している。それに伴い、家庭内の各部屋をＩＰネットワークで繋ぐ、いわゆるホームネットワークの普及も進んでいる。【０００４】
このような状況により、家庭内のデジタル放送受信機で受信したデジタル放送、もしくは、レコーダに蓄積したデジタルコンテンツを、ホームネットワークを用いて、他の部屋で視聴することが行われるようになった。この際、ホームネットワーク上のサーバ（例えば、デジタル放送を受信するセットトップボックスやＨＤＤレコーダ）とクライアント（例えば、パーソナルコンピュータやデジタルプレーヤ）における、お互いの機器の認識や利用できるコンテンツの情報のやり取りには、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌａｇ  ａｎｄ  Ｐｌａｙ）に規定された方法が広く用いられている。また、マルチメディアデータの通信はＲＴＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｔｒａｓｎｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）などが、その制御にはＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）などが用いられている。ＲＴＳＰはＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）によって規格化されている。（例えば、非特許文献１を参照）。【０００５】
映画のような長時間のデジタルコンテンツを再生、視聴する場合、視聴を短時間中断したのち、続きを視聴するといったことが頻繁に行われる。ＲＴＳＰを用いたネットワーク経由での視聴では、ＲＴＳＰのＲＥＳＵＭＥ機能を用いるか、もしくは、クライアントが中断位置を記憶しておき、再開時にサーバに改めて中断位置以降のデータ送信を要求することで実現されている。ここで、ホームネットワークにより、複数の部屋での視聴が可能になることにより、例えばリビングで視聴していたコンテンツの続きを寝室で見る、といったニーズが出てきている。
【非特許文献１】ＲＦＣ２３２６  Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ  （ＲＴＳＰ）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＲＴＳＰでは、サーバ−クライアントの１対１通信を対象とし、別のクライアントへのデータ転送は考慮されておらず、上記の部屋を変えての視聴再開を実現することは出来ない。また、クライアントが変わるため、クライアントが中断位置を記憶するといった方法を用いることができない。【０００７】
本発明は、上記の問題を解決するためになされたもので、同じクライアントだけでなく異なるクライアントからでも、コンテンツの中断位置からの視聴を可能とするデータ出力装置、機器制御装置およびマルチメディア配信システムの提供を目的とする。
【課題を解決するための手段】
【０００８】
従来の課題を解決するために、本発明のデータ出力装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、外部の装置から信号を受信する受信手段と、マルチメディアデータを蓄積している蓄積手段と、前記蓄積手段からデータを読み出す読出手段と、前記マルチメディアデータを指定された出力先に出力する出力手段と、前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える。【０００９】
このように、本発明のデータ出力装置は、再開位置情報を記憶している。これにより、マルチメディアデータの出力先が変わっても、中断されたマルチメディアデータ出力を中断された続きから的確に再開することが可能になる。【００１０】
好ましくは、前記データ出力装置は、ネットワークを介して複数の端末に接続されており、前記出力手段は、ユーザにより指定された前記複数の端末のいずれかを出力先として出力する。【００１１】
このように、出力手段はネットワークを介して接続された複数の端末に出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。【００１２】
また好ましくは、前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる。【００１３】
このように、出力手段は複数の端末のいずれかに出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。【００１４】
さらに好ましくは、前記制御手段は、前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる。【００１５】
このように、記憶手段は再開位置情報と中断識別子とを記憶している。これにより、ユーザは中断識別子によって再開要求を指示することができ、利便性が向上する。【００１６】
さらに好ましくは、前記制御手段は、さらに、前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる。【００１７】
このように、記憶手段は再開位置情報と出力先とを記憶している。これにより、記憶している出力先から出力再開要求を受け付けた場合にのみ、出力を再開することが可能になる。これにより、例えば、再開位置情報と出力先との組み合わせを複数記憶しておくことにより、再開要求を受け付けた出力先に応じて、適切なコンテンツを適切な再開位置から出力することが可能になる。【００１８】
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。【００１９】
このように、マルチメディアデータを受信しながら出力している場合に、中断要求を受け付けると、受信しているマルチメディアデータの続きを蓄積しておく。これにより、デジタル放送で放送中もしくはＶｏＤ（Ｖｉｄｅｏ  Ｏｎ  Ｄｅｍａｎｄ）で受信中など、出力中断時にすべて受信していないデータであっても、再開要求を受け付けたときに蓄積されているマルチメディアデータを出力することができる。そのため、再開要求を受け付けたときのマルチメディアデータの出力を的確に再開することが可能となる。【００２０】
さらに好ましくは、さらに、マルチメディアデータを再生する再生手段を備え、前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、前記制御手段は、さらに、前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる。【００２１】
このように、データ出力装置自身が、マルチメディアデータを再生する再生手段を備え、再生手段を出力先として指定することができる。そのため、データ出力装置自身を出力先とすることが可能になる。【００２２】
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。【００２３】
このように、データ出力装置は、マルチメディアデータを外部の装置から受信し、受信したマルチメディアデータを記憶手段に蓄積する。これにより、デジタル放送またはＶｏＤにより配信されるマルチメディアデータの出力を中断し、その再開要求を受け付けた場合であっても、そのマルチメディアデータの出力を的確に再開することが可能になる。【００２４】
さらに好ましくは、さらに、Ｊａｖａ（登録商標）アプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、Ｊａｖａアプリケーションによって起動される。【００２５】
このように、データ出力装置はＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションプログラム（以下、「Ｊａｖａアプリケーション」という。）を実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。【００２６】
また、第１９の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、前記データ出力装置へ要求を送信する送信手段と、前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える。【００２７】
このように、機器制御装置は、中断要求とともに、特定した出力先をデータ出力装置に送信する。これにより、データ出力装置に、データ出力再開時の送信先を登録することが可能であり、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。【００２８】
好ましくは、さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記Ｊａｖａアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる。【００２９】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。【００３０】
次に、第２２の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、前記データ出力装置から提供されるマルチメディアデータに含まれるコンテンツの属性を受信する属性受信手段と、前記データ出力装置に要求を送信する送信手段と、ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える。【００３１】
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、マルチメディアデータに含まれるコンテンツの属性として、そのコンテンツの出力が中断されているか否かを判定し、出力が中断されていると判定した場合に、そのコンテンツが含まれるマルチメディアデータの出力の再開要求を送信する。これにより、出力が中断されている場合には、その続きから出力することができ、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。【００３２】
好ましくは、前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記マルチメディアサーバへ送信させる。【００３３】
このように、コンテンツの属性には出力中断を表す識別子が含まれる。これにより、その識別子によってマルチメディアデータを特定し、その出力を再開させることが可能になる。【００３４】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、前記Ｊａｖａアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記マルチメディアサーバへ送信させる。【００３５】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。【００３６】
さらに、第２６の発明の機器制御装置は、ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記データ出力装置と通信する通信手段と、前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える。【００３７】
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、再開位置情報を記憶している。これにより、ネットワークを介してデータ出力装置に再開要求とともに、出力を再開する位置を送信できる。そのため、データ装置によるマルチメディアデータの出力の再開を的確に制御することが可能になる。【００３８】
好ましくは、さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、前記Ｊａｖａアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、Ｊａｖａアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる。【００３９】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。【００４０】
なお、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置として実現することができるだけでなく、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段をステップとする方法として実現したり、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記録媒体やインターネット等の通信ネットワークを介して流通させることができる。また、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置を備えるマルチメディア配信システムとして実現することもできる。
【発明の効果】
【００４１】
以上述べたように、本発明のデータ出力装置、機器制御装置、マルチメディア配信システムによれば、マルチメディアコンテンツの視聴・再生を中断して再開する場合に、ネットワーク上の別の端末で再開する場合においても、的確に再開することが可能となる。
【図面の簡単な説明】
【００４２】
【図１】図１は、本発明の実施の形態１におけるマルチメディア配信システムの構成図である。
【図２】図２は、本発明の実施の形態１におけるデータ出力装置の構成の一例を示すブロック図である。
【図３】図３は、本発明の実施の形態１における端末および端末の構成の一例を示すブロック図である。
【図４】図４は、本発明の実施の形態１における蓄積部に蓄積されたデータの構成の一例を示す図である。
【図５】図５は、本発明の実施の形態１におけるマルチメディアデータの属性情報の一例を示す図である。
【図６】図６は、本発明の実施の形態１におけるＵＲＩテーブルの一例を示す図である。
【図７】図７は、本発明の実施の形態１における再開位置情報の一例を示す図である。
【図８】図８は、本発明の実施の形態１の第１の変形例における再開位置情報の一例を示す図である。
【図９】図９は、本発明の実施の形態１の第２の変形例における再開位置情報の一例を示す図である。
【図１０】図１０は、本発明の実施の形態１の第３の変形例におけるデータ出力装置の構成の一例を示すブロック図である。
【図１１】図１１は、本発明の実施の形態１の第４の変形例におけるデータ出力装置の構成の一例を示すブロック図である。
【図１２】図１２は、本発明の実施の形態１の第５の変形例におけるマルチメディア配信システムの構成の一例を示す図である。
【図１３】図１３は、本発明の実施の形態２におけるマルチメディア配信システムの構成の一例を示す図である。
【図１４】図１４は、本発明の実施の形態２おけるデータ出力装置の構成の一例を示すブロック図である。
【図１５】図１５は、フロントパネルで実施の形態２に係る入力部を構成した場合の外観の一例を示す図である。
【図１６】図１６は、本発明の実施の形態２におけるデータ出力装置が保持し、実行するプログラムの構成の一例を示す図である。
【図１７】図１７は、本発明の実施の形態２に係るモニタに表示された番組表の例を示す図である。
【図１８】図１８は、本発明の実施の形態２に係る第２メモリに記憶されている番組情報の一例を示す図である。
【図１９】図１９は、本発明の実施の形態２に係る第２メモリに格納されているチャンネル情報の一例を示す図である。
【図２０】図２０は、本発明の実施の形態２に係る第２メモリに格納されているチャンネルの識別子の例を示す図である。
【図２１】図２１は、収集したＰＡＴの情報の一例を模式的に示す図である。
【図２２】図２２は、収集したＰＭＴの情報の一例を模式的に示す図である。
【図２３】図２３は、収集したＡＩＴの情報の一例を模式的に示す図である。
【図２４】図２４は、ダウンロードしたファイルシステムの一例を示す図である。
【図２５】図２５は、データ出力装置が、第２メモリにマルチメディアデータを蓄積する形態の一例を示す図である。
【図２６】図２６は、本発明の実施の形態２における属性情報の一例を示す図である。
【図２７】図２７は、本発明の実施の形態２における属性情報テーブルの一例を示す図である。
【図２８】図２８は、ネットワークライブラリの内部構成の一例を示す図である。
【図２９】図２９は、ネットワークライブラリの内部構成に含まれる制御部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図３０】図３０は、ネットワークライブラリで使用されるＮｅｔＤｅｖｉｃｅクラスの構成の一例を示す図である。
【図３１】図３１は、ネットワークライブラリで使用されるＳｅｒｖＨａｎｄｌｅｒインタフェースの構成の一例を示す図である。
【図３２】図３２は、本発明の実施の形態２におけるＵＲＩテーブルの構成の一例を示す図である。
【図３３】図３３は、ネットワークライブラリで使用されるＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【図３４】図３４は、本発明の実施の形態２における再開位置情報テーブルの構成の一例を示す図である。
【図３５】図３５は、ネットワークライブラリの内部構成に含まれる情報受信部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図３６】図３６は、ネットワークライブラリで使用されるＲｅｑｕｅｓｔＩｎｆｏクラスの構成の一例を示す図である。
【図３７】図３７は、ネットワークライブラリの内部構成に含まれるデータ出力部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図３８】図３８は、ネットワークライブラリで使用されるＲｅｓｐｏｎｓｅＩｎｆｏクラスの構成の一例を示す図である。
【図３９】図３９は、ネットワークライブラリの内部構成に含まれる情報受信部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図４０】図４０は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４１】図４１は、本発明の実施の形態２おける端末の構成の一例を示すブロック図である。
【図４２】図４２は、本発明の実施の形態２に係る端末のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。
【図４３】図４３は、ネットワークライブラリの内部構成の一例を示すブロック図である。
【図４４】図４４は、ネットワークライブラリの内部構成に含まれる制御部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４５】図４５は、ネットワークライブラリで使用されるＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【図４６】図４６は、ネットワークライブラリで使用されるＣｌｉｅｎｔＨａｎｌｄｅｒインタフェースの構成の一例を示す図である。
【図４７】図４７は、ネットワークライブラリの内部構成に含まれる情報送信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４８】図４８は、ネットワークライブラリの内部構成に含まれる情報受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４９】図４９は、ネットワークライブラリの内部構成に含まれる判定部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図５０】図５０は、ネットワークライブラリの内部構成に含まれるデータ受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図５１】図５１は、ネットワークライブラリ３００４ｄで使用されるＲｅｍｏｔｅＰｒｏｇｒａｍクラスの構成の一例を示す図である。
【図５２】図５２は、本発明の実施の形態２の第６の変形例におけるマルチメディア配信システムの構成を示す図である。
【符号の説明】
【００４３】
１０１、１３０１  データ出力装置
１０２、１０３、１２０３、１２０４、１３０２、１３０３、５２０３、５２０４  端末
１０４、１２０５、１３０４、５２０５  ネットワーク
１０５、１２０６、１３０５、５２０６  マルチメディア配信システム
２０１  制御部
２０２、１４０４  受信部
２０３  蓄積部
２０４  読出部
２０５  第１出力部
２０６  第２出力部
２０７  記憶部
２０８  書込部
２０９  ネットワークインタフェース
３０１  機器制御部
３０２  制御部
３０３  受信部
３０４  送信部
３０５  判定部
３０６  データ受信部
３０７  データ復号部
３０８  ネットワークインタフェース
３０９  表示部
４０１  マルチメディアデータ
４０２  マルチメディアデータ
４１１  マルチメディアデータ４０１の属性情報
４１２  マルチメディアデータ４０２の属性情報
４２１  マルチメディアデータのＵＲＩテーブル
７０１  再開位置情報
８０１  再開位置情報
８０２  再開位置情報
８０３  再開位置情報
９０１  再開位置情報
９０２  再開位置情報
１００１  データ受信部
１００２  データ受信インタフェース
１１０１  データ復号部
１１０２  表示部
１２０１、５２０１  データ出力装置
１２０２、５２０２  制御装置
１４０１、４１０１  入力部
１４０２、４１０２  第１メモリ
１４０３、４１０３  第２メモリ
１４０５、４１０４  多重分離部
１４０６  デスクランブラ
１４０７、４１０５  ＴＳデコーダ
１４０８、４１０６  映像出力部
１４０９、４１０７  音声出力部
１４１０  ＴＳマルチプレクサ
１４１１、４１０８  ネットワーク部
１４１２、４１０９  ＣＰＵ
【発明を実施するための最良の形態】
【００４４】
（実施の形態１）
以下本発明の実施の形態について、図面を参照しながら説明する。【００４５】
図１は、本発明の実施の形態１におけるマルチメディア配信システムの構成図である。【００４６】
図１に示すマルチメディア配信システム１０５は、データ出力装置１０１と、第１の端末１０２と、第２の端末１０２と、ネットワーク１０４とを備える。データ出力装置１０１、端末１０２および端末１０３は、ネットワーク１０４に接続されており、ネットワーク１０４を介して相互に通信可能である。【００４７】
本実施の形態におけるデータ出力装置１０１は、ネットワーク１０４を通じて送信された、端末１０２および端末１０３からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク１０４を通じて端末１０２および端末１０３へ送信するものである。【００４８】
データ出力装置１０１は、実行中のデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。そして、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。【００４９】
端末１０２および端末１０３は、ユーザの要求により、データ出力装置１０１へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク１０４を通じて送信する。そして、端末１０２および端末１０３は、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。【００５０】
端末１０２および端末１０３は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。【００５１】
ネットワーク１０４は、家庭内に施設されたホームネットワークであり、イーサネット（登録商標）、無線ＬＡＮなどによって構成されたＩＰネットワークである。【００５２】
以上のように、本発明のデータ出力装置１０１、端末１０２、端末１０３、およびマルチメディア配信システム１０５においては、例えば端末１０２にて受信中だったデータの送信を中断しても、別の端末１０３において、的確にデータ通信を再開することが可能となる。【００５３】
以下、本発明のマルチメディア配信システム１０５を構成する、データ出力装置１０１、端末１０２および端末１０３について、更に詳細に説明する。ここでは、端末１０２へデータ通信中にデータ送信を中断し、端末１０３へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。【００５４】
まず、データ出力装置１０１について説明する。【００５５】
図２は、本発明の実施の形態１におけるデータ出力装置１０１の構成の一例を示すブロック図である。【００５６】
図２に示すデータ出力装置１０１は、制御部２０１と、外部の制御装置からの信号を受信する受信部２０２と、データを蓄積する蓄積部２０３と、制御部２０１からの指示に従い蓄積部２０３からデータ読み出す読出部２０４と、第１出力部２０５と、第２出力部２０６と、データ出力を中断したときに、該データおよびデータ出力中断位置から得られる再開位置情報を記憶する記憶部２０７と、蓄積部２０３にデータを書き込む書込部２０８と、ネットワーク１０４と接続されるネットワークインタフェース２０９とを備える。【００５７】
制御部２０１をより詳細に説明する。制御部２０１は、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどによって構成されている。ＲＯＭ、ＲＡＭおよび図示していない情報記憶部にはマイクロプロセッサにて動作するＯＳ、Ｊａｖａ（登録商標）  ＶＭ（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）プログラム、Ｊａｖａプログラムライブラリ、Ｊａｖａアプリケーションプログラムが保存されている。マイクロプロセッサは、起動時にＯＳを読み込んで実行する。引き続いて、Ｊａｖａアプリケーション起動時に、Ｊａｖａ  ＶＭを読み込んで実行し、必要に応じてＪａｖａプログラムライブラリを読み込みながら、Ｊａｖａアプリケーションを実行する。【００５８】
制御部２０１は、受信部２０２からの信号を受け、Ｊａｖａアプリケーションにしたがって、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８との制御、およびこれらとの間のデータ送受信を行う。【００５９】
受信部２０２は、ネットワークインタフェース２０９に接続されており、ネットワークインタフェース２０９に届いたデータ出力装置１０１宛の情報を受信して、制御部２０１に引き渡す。受信部２０２は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。【００６０】
なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。また、ネットワークインタフェース２０９のほか、例えば赤外線通信を行う通信部など、別の通信部にも同時に接続されたものであっても良い。【００６１】
蓄積部２０３は、ハードディスクドライブに代表される、大容量をもつデジタルデータの蓄積装置と、そのドライバソフトウェアから構成されるものである。【００６２】
読出部２０４は、制御部２０１からの指示を受け、蓄積部２０３に蓄積されたデータファイルのうち、指定されたファイルの指定位置からのデータを順次読み出して、第１出力部２０５および第２出力部２０６へ転送する。【００６３】
第１出力部２０５および第２出力部２０６は、ネットワークインタフェース２０９に接続されており、制御部２０１の指示を受けて動作し、制御部２０１もしくは読出部２０４から送られたデータを、制御部２０１が指示した宛先へのパケットに変換して、ネットワークインタフェース２０９を通じて出力するものである。第１出力部２０５および第２出力部２０６は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。【００６４】
記憶部２０７は、フラッシュメモリやＨＤＤなどの記憶装置もしくはその一部によって構成されるものであり、制御部２０１からの指示を受け、制御部２０１から受け取ったデータを記憶するものである。【００６５】
書込部２０８は、制御部２０１からの指示を受け、蓄積部２０３にデータを書き込むものである。データの書き込みには、新規にデータを書き込む場合と、既存のデータに上書きする場合の２つがある。【００６６】
ネットワークインタフェース２０９は、Ｅｔｈｅｒケーブルや無線ＬＡＮなどネットワークの物理メディアに応じたインタフェースを提供するハードウェアとそのドライバソフトウェアから構成されるものである。【００６７】
以下、図を参照しながら、データ出力装置１０１の動作を、更に詳細に説明する。ここでは、説明を簡易にするために、第１出力部２０５は端末１０２へ出力するものであり、第２出力部２０６は端末１０３へ出力するものであるとするが、この構成に限らないことは言うまでもない。【００６８】
図４は、本発明の実施の形態１における蓄積部２０３に蓄積されたデータの構成の一例を示す図である。【００６９】
図４において、蓄積部２０３は、大きく分けて、マルチメディアデータ、マルチメディアデータの属性情報、マルチメディアデータのＵＲＩテーブルという３種類のデータ群を蓄積しており、マルチメディアデータ４０１と、マルチメディアデータ４０２と、属性情報４１１と、属性情報４１２と、マルチメディアデータのＵＲＩテーブル４２１とを含む例を示す。本実施の形態では、属性情報４１１はマルチメディアデータ４０１の属性情報を、属性情報４１２はマルチメディアデータ４０２の属性情報を、それぞれ表すこととする。蓄積部２０３が蓄積しているマルチメディアデータや属性情報は、それぞれ２つに限られない。【００７０】
マルチメディアデータ４０１、４０２は、デジタル化されたマルチメディアコンテンツデータであり、代表的には、ＭＰＥＧ２によって符号化されたデータである。各マルチメディアデータ４０１、４０２は、それぞれ、蓄積部２０３上において、一つのファイルとして蓄積され、ファイル名が付けられている。【００７１】
属性情報４１１、４１２は、マルチメディアデータ４０１、４０２に、例えば、コンテンツのタイトル、ジャンル、放送日時、録画日時、出力した回数、最後に出力した日時といった、付加的な情報を与えるものである。図５に、属性情報の一例を示す。【００７２】
図５は、本発明の実施の形態１におけるマルチメディアデータの属性情報４１１の一例を示す図である。図５に示す属性情報は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）によって定義されたテキスト情報である。【００７３】
ＵＲＩテーブル４２１は、各マルチメディアデータとそのＵＲＩの対応を記憶するものであり、図６にその一例を示す。【００７４】
図６は、本発明の実施の形態１に係るＵＲＩテーブル４２１の一例を示す図である。図６において、ファイル名０００１.ｍ２ｔｓというマルチメディアデータのＵＲＩは、ｒｔｓｐ:／／１９２．１６８.０．３／ＡＶＤａｔａ／０００１.ｍ２ｔｓであることを表している。【００７５】
なお、ＵＲＩテーブルは、必ずしも必要ではなく、データ出力装置１０１のＩＰアドレスもしくはホスト名と、マルチメディアデータのファイル名から、制御部２０１が都度作成する構成であっても良いし、ＵＲＩを付加情報として属性情報の中に記述する構成であっても良い。また、ＵＲＩテーブルはファイル名とＵＲＩとの対応に限るものではなく、タイトルや各マルチメディアデータに付加された識別子や番号などとＵＲＩとの対応であっても良い。【００７６】
まず、端末１０２へのデータ送信を中断するまでの過程におけるデータ出力装置１０１の動作を説明する。【００７７】
制御部２０１は、受信部２０２から受け取った端末１０２の要求がコンテンツ一覧取得であった場合、読取部２０４を制御して情報を読み出すことにより、蓄積部２０３に蓄積されたマルチメディアデータの一覧表を作成して、第１出力部２０５から端末１０２へ送信する。【００７８】
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのＵＲＩとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。【００７９】
コンテンツ一覧の取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧のデータフォーマットは、ＵＰｎＰ  ＡＶに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。コンテンツ一覧のフォーマットは、ＸＭＬによって定義されているため、ＸＭＬ  Ｎａｍｅｓｐａｃｅを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースNaを使った要素ＰＡＵＳＥを各コンテンツの情報に追加し、このＰＡＵＳＥ要素の内容が「Ｙｅｓ」の場合は、出力中断中であることを表すことと出来る。【００８０】
また、制御部２０１は、受信部２０２から受け取った端末１０２の要求がデータ送信要求であった場合、読出部２０４に指示して要求されたマルチメディアデータを蓄積部２０３から読み出させ、第１出力部２０５に指示して読み出したデータを送信する。例えば、送信要求としてＲＴＳＰを使用して、ＵＲＩが ｒｔｓｐ:／／１９２．１６８.０．３／ＡＶＤａｔａ／０００１.ｍ２ｔｓのデータを、先頭から送信する要求の場合、以下のメッセージが端末１０２からデータ出力装置１０１へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00【００８１】
制御部２０１は、上記メッセージを受け取ると、読出部２０４に読み出させたＵＲＩテーブル４２１を参照して、ＵＲＩが ｒｔｓｐ:／／１９２．１６８.０．３／ＡＶＤａｔａ／０００１.ｍ２ｔｓであるマルチメディアデータを検索する。本実施の形態の場合、マルチメディアデータ４０１がそれに当たる。対応するマルチメディアデータが存在すれば、制御部２０１は、ＲＴＳＰに規定された以下のような返答メッセージを作成して、第１出力部２０５に指示して端末１０２へ送信させる。
RTSP/1.0 200 OK
CSeq: 2
Session: 12345
Range: smtpe=0:00:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts; seq=123123532; rtptime=53265【００８２】
その後、読出部２０４に指示してマルチメディアデータ４０１の先頭から順次データを読み出させ、第１出力部２０５に指示して読み出したデータを端末１０２へ送信する。データ送信はＲＴＰに規定された方法で行われるため、詳細は省略する。【００８３】
制御部２０１は、受信部２０２から受け取った端末１０２の要求がデータ送信中断であった場合、第１出力部２０５に指示してデータ送信を停止させるとともに、送信済データ数を第１出力部２０５より受け取る。また、読出部２０４に指示して、蓄積部２０３からのデータの読み出しを停止させる。ＲＴＳＰを用いる場合、データ送信中断はＰＡＵＳＥコマンドを用いて行うことが出来る。これは、以下のメッセージが端末１０２から送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345【００８４】
制御部２０１は、上記のＰＡＵＳＥコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、第１出力部２０５に送信させる。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345【００８５】
また、読出部２０４に指示して属性情報４１１を読み出し、出力中断中の属性を追加する。本実施の形態においては、図５に示した属性情報のうち、「ＰＡＵＳＥ」という要素で表すこととする。すなわち、ＰＡＵＳＥ要素があって、その内容が「Ｙｅｓ」の場合に限り、データ送信を中断している状態を表すこととする。【００８６】
制御部２０１は、属性情報４１１を更新した後、書込部２０８に指示して、蓄積部２０３上の属性情報４１１に上書きさせる。【００８７】
制御部２０１は、さらに、第１出力部２０５より受け取った送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から５０１１９バイトのデータを送信した場合は、先頭から５０１２０バイト目となる。【００８８】
制御部２０１は、この送信再開位置とマルチメディアデータ４０１を識別する情報、例えばファイル名を組として、再開位置情報を作成して、記憶部２０７に記憶させる。図７にこの再開位置情報の一例を示す。【００８９】
図７は、本発明の実施の形態１における再開位置情報の一例を示す図である。図７は、上記のデータ送信中断における再開位置情報７０１を表す。なお、本実施の形態においては、第１出力部２０５から受け取った送信済データ数を基に送信再開位置を求めたが、読出部２０４より受け取った、例えば、読出済データ数を基に求めるものであっても良い。【００９０】
ＲＴＳＰでは、このあとに、セッションを切断するＴＥＡＲＤＯＷＮというコマンドが送受信されるが、本実施の形態では、ＴＥＡＲＤＯＷＮを行っても、上記の再開位置情報７０１および属性情報４１１は更新しない。【００９１】
なお、より明確に後に再開する中断であることを表すために、ＰＡＵＳＥもしくはＴＥＡＲＤＯＷＮを拡張して、再開位置情報７０１の作成・保持および属性情報４１１の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるＸ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓを用い、その値が「Ｙｅｓ」の場合に限り、再開位置情報７０１を作成・保持および属性情報４１１を更新・保持することとすれば、上記のＰＡＵＳＥメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes【００９２】
この場合、制御部２０１は、受信したＰＡＵＳＥメッセージにＸ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓヘッダがあり、かつその値が「Ｙｅｓ」であるので、再開位置情報７０１を作成して保持し、また、属性情報４１１を更新して保持する。Ｘ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓヘッダがないか、あっても値が「Ｙｅｓ」以外の場合は、制御部２０１は、再開位置情報７０１を作成せず、また、属性情報４１１を更新しない。【００９３】
次に、端末１０３との通信において、上記の中断したデータ送信を再開する過程のデータ出力装置１０１の動作を説明する。【００９４】
まず、コンテンツ一覧取得に関しては、上記と同様のため、説明を省略する。【００９５】
制御部２０１は、受信部２０２から受け取った端末１０３の要求が中断したデータ送信の再開であった場合の処理を説明する。本実施の形態においては、この要求は、ＲＴＳＰのＰＬＡＹに、独自拡張ヘッダであるＸ−Ｒｅｓｔａｒｔを用い、その値を「Ｙｅｓ」とすることで行うものとする。この場合、端末１０３から以下のメッセージが送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes【００９６】
制御部２０１は、まず、ＵＲＩテーブル４２１を参照しながら、ＰＬＡＹメッセージで送られてきたＵＲＩのマルチメディアデータ（この場合はマルチメディアデータ４０１）の再開位置情報を、記憶部２０７に記憶された再開位置情報から検索する。この場合は、再開位置情報７０１が該当する。【００９７】
制御部２０１は、再開位置情報７０１から、再開位置が先頭から５０１２０バイト目であることを読み取り、読出部２０４にマルチメディアデータ４０１の先頭から５０１２０バイト目から読み出すように指示を送る。読出部２０４は、指示を受けてデータの読み出しを開始する。【００９８】
制御部２０１は、続いて、以下の返答メッセージを作成し、第２出力部２０６に指示して、端末１０３へ送信させる。なお、５０１２０バイト目は、マルチメディアデータ４０１の先頭から８分目としている。
RTSP/1.0 200 OK
CSeq: 2
Session: 54321
Range: smtpe=0:08:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts; seq= 123073412; rtptime=52865【００９９】
続いて、制御部２０１は、ＰＬＡＹメッセージが端末１０３から送られてきたことから、データの送信先を端末１０３と判定し、第２出力部２０６に指示して、読出部２０４が読み出したデータを、端末１０３へ送信させる。また、制御部２０１は、再開位置情報７０１を記憶部から削除するとともに、属性情報４１１から、「出力中断中」の属性を削除して、属性情報４１１を更新する。【０１００】
なお、本実施の形態の場合、制御部２０１は、ＲＴＳＰメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末１０３から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。【０１０１】
次に、端末１０２および端末１０３について説明する。【０１０２】
図３は、本発明の実施の形態１における端末１０２および端末１０３の構成の一例を示すブロック図である。【０１０３】
図３に示す端末１０２および端末１０３は、機器制御部３０１と、制御部３０２と、データ出力装置１０１から送信されたメッセージを受信する受信部３０３と、データ出力装置１０１に要求メッセージを送信する送信部３０４と、受信部３０３が受信したメッセージのうち、マルチメディアデータの属性を解釈して出力中断中であるかを判定する判定部３０５と、データ出力装置１０１から送信されたマルチメディアデータを受信するデータ受信部３０６と、受信したマルチメディアデータを復号するデータ復号部３０７と、ネットワーク１０４と接続されるネットワークインタフェース３０８と、復号したマルチメディアデータを表示する表示部３０９とを備える。【０１０４】
機器制御部３０１は、より詳細には、制御部３０２と、受信部３０３と、送信部３０４と、判定部３０５とを有する。【０１０５】
制御部３０２をより詳細に説明する。制御部３０２は、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどによって構成されている。ＲＯＭ、ＲＡＭおよび図示していない情報記憶部にはマイクロプロセッサにて動作するＯＳ、Ｊａｖａ  ＶＭプログラム、Ｊａｖａプログラムライブラリ、Ｊａｖａアプリケーションプログラムが保存されている。【０１０６】
マイクロプロセッサは、起動時にＯＳを読み込んで実行する。引き続いて、Ｊａｖａアプリケーション起動時に、Ｊａｖａ  ＶＭを読み込んで実行し、必要に応じてＪａｖａプログラムライブラリを読み込みながら、Ｊａｖａアプリケーションを実行する。制御部３０２は、図示していないユーザインタフェース部からユーザの要求を受け、Ｊａｖａアプリケーションにしたがって、受信部３０３と、送信部３０４と、判定部３０５と、データ受信部３０６と、データ復号部３０７と、表示部３０９との制御、およびこれらとの間のデータ送受信を行う。【０１０７】
受信部３０３は、ネットワークインタフェース３０８に接続されており、ネットワークインタフェース３０８に届いた該端末宛の情報を受信して、制御部３０２に引き渡す。受信部３０３は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。【０１０８】
送信部３０４は、ネットワークインタフェース３０８に接続されており、制御部３０２の指示を受けて動作し、制御部３０２から送られたデータを、制御部３０２が指示した宛先へのパケットに変化して、ネットワークインタフェース３０８を通じて送信するものである。送信部３０４は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。【０１０９】
判定部３０５は、制御部３０２の指示により、受信部３０３が受信したメッセージを解釈して、その中に含まれるマルチメディアデータの属性を検索して該マルチメディアデータが「出力中断中」であるか否かを判定し、その結果を制御部３０２に返すものである。判定部３０５は、代表的には、ＪａｖａライブラリもしくはＪａｖａアプリケーションプログラムに含まれるサブルーチンである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。【０１１０】
データ受信部３０６は、ネットワークインタフェース３０８と接続されており、制御部３０２の指示にしたがって、データ出力装置１０１から送信されたマルチメディアデータを受信して、データ復号部３０７に引き渡すものである。データ受信部３０６は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。【０１１１】
データ復号部３０７は、制御部３０２の指示にしたがって、送られてきたマルチメディアデータを復号するものである。上記の通り、マルチメディアデータは、ＭＰＥＧ２に代表される符号化方式によって符号化されている。データ復号部３０７は、このデータを復号し、表示部３０９へ復号したデータを送信する。データ復号部３０７は、代表的にはハードウェアデコーダとそのドライバソフトウェアで構成されるものである。【０１１２】
ネットワークインタフェース３０８は、上記のネットワークインタフェース２０９と同様の構成である。【０１１３】
表示部３０９は、モニタおよびスピーカから構成されるもの、もしくは、外部のモニタ、スピーカへ映像・音声信号を送出するものである。【０１１４】
以下、端末１０２および端末１０３の動作について、上記の通り、端末１０２へデータ通信中にデータ送信を中断し、端末１０３へ中断したデータ送信を再開する場合を例に説明する。なお、端末１０２および端末１０３は、少なくともデータ出力装置１０１がネットワーク１０４に接続されており、マルチメディアコンテンツデータを提供するサーバであることを、既に認識しているものとする。このような、ネットワーク上の機器の発見、および、その能力の検知は、ＵＰｎＰ  ＤＡ（Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に定義された方法にて行えるため、詳細な説明は省略する。【０１１５】
まず、端末１０２にて、映像再生の中断までの過程における動作について説明する。【０１１６】
制御部３０２は、ユーザからの要求により、コンテンツ一覧送信要求メッセージを作成して、送信部３０４に指示してデータ出力装置１０１へ送信する。さらに、受信部３０３によって、データ出力装置１０１から送信されたコンテンツ一覧メッセージを受信し、コンテンツのタイトルなどの情報をユーザに提示する。ユーザへの提示は、表示部３０９を用いて行っても良く、また、図示していない他の提示部によって行っても良い。【０１１７】
次に、制御部３０２は、ユーザから提示したコンテンツのひとつを選択した再生要求を受けると、データ送信要求メッセージを作成して、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信要求メッセージの一例は、上記のＲＴＳＰにおけるＰＬＡＹメッセージである。引き続いて、受信部３０３により、データ出力装置１０１から返答メッセージを受信する。返答メッセージの一例は、上記のＰＬＡＹメッセージに対する返答である。【０１１８】
返答メッセージが、送信開始であれば、制御部３０２は、データ受信部３０６に指示して、データ出力装置１０１から送信されたマルチメディアデータを受信させ、また、データ復号部３０７に指示して、受信したマルチメディアデータを復号させ、さらに、表示部３０９に指示して、復号したマルチメディアデータを表示させる。【０１１９】
また、制御部３０２は、返答メッセージが、送信不可であれば、それをユーザに提示する。【０１２０】
次に、制御部３０２は、ユーザから再生中断の要求を受けると、データ送信中断要求メッセージを作成し、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信中断要求メッセージの一例は、上記のＲＴＳＰにおけるＰＡＵＳＥメッセージである。【０１２１】
続いて、制御部３０２は、受信部３０３により、データ出力装置１０１からの返答メッセージを受信するとともに、データ受信部３０６にはマルチメディアデータの受信動作を、データ復号部３０７にはデータの復号を、表示部３０９にはデータの表示を、それぞれ指示して停止させる。【０１２２】
次に、端末１０３において、端末１０２で中断させた再生を再開する動作について説明する。【０１２３】
まず、制御部３０２は、ユーザの要求により、上記と同様の方法で、コンテンツ一覧メッセージをデータ出力装置１０１より取得する。【０１２４】
次に、制御部３０２は、上記と同様に、受信したコンテンツ一覧メッセージから、コンテンツのタイトルなどの情報をユーザに提示する。この際、制御部３０２は、判定部３０５に指示して、データ出力中断中のコンテンツを判定させ、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。【０１２５】
続いて、制御部３０２は、ユーザから出力中断中のコンテンツの再生再開要求を受けると、該コンテンツのデータ送信再開要求メッセージを作成し、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信再開要求メッセージの一例は、上記のＰＬＡＹメッセージに拡張ヘッダＸ−Ｒｅｓｔａｒｔを加えたものである。【０１２６】
続いて、受信部３０３により、データ出力装置１０１から返答メッセージを受信する。返答メッセージの一例は、上記のＸ−Ｒｅｓｔａｒｔヘッダ付ＰＬＡＹメッセージに対する返答である。【０１２７】
返答メッセージが、送信開始であれば、制御部３０２は、データ受信部３０６に指示して、データ出力装置１０１から送信されたマルチメディアデータを受信させ、また、データ復号部３０７に指示して、受信したマルチメディアデータを復号させ、さらに、表示部３０９に指示して、復号したマルチメディアデータを表示させる。【０１２８】
また、制御部３０２は、返答メッセージが、送信不可であれば、それをユーザに提示する。【０１２９】
なお、本実施の形態においては、ＲＴＳＰのコマンドメッセージを送信した端末が、データ出力装置１０１におけるデータの出力先としているため、端末１０３から送信先端末である出力先の明示的な指定を省略しているが、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。【０１３０】
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム１０５を構成するデータ出力装置１０１は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。【０１３１】
また、本実施の形態にかかる端末１０２および端末１０３は、あるマルチメディアデータが、データ出力装置１０１において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置１０１に、データ出力を再開させる機器制御部３０１を含むものである。この構成により、例えば、端末１０２にて、あるマルチメディアコンテンツの視聴を中断し、端末１０３にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。【０１３２】
（実施の形態１の変形例）
本発明の実施の形態１について説明してきたが、本発明は、上記の実施の形態１に限定されるものではない。以下のような場合も、本発明に含まれる。【０１３３】
（１）  データ出力装置１０１は、データ出力を中断するときに、この中断を識別する識別子を発行して、再開位置情報とともに記憶部２０７に記憶させ、コンテンツ一覧にこの識別子を含めて端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。図８に、この場合に記憶部２０７に記憶されるデータの一例を示す。【０１３４】
図８は、本発明の実施の形態１の第１の変形例における再開位置情報の一例を示す図である。図８に示すように、記憶部２０７には、再開位置情報８０１と、再開位置情報８０２と、再開位置情報８０３とが記憶されている例を示す。例えば、再開位置情報８０１は、識別子ＩＤ１の中断に関するものであり、ファイル名０００１．ｍ２ｔｓのマルチメディアデータを５０１２０バイト目から再開することを表している。【０１３５】
また、端末１０２および端末１０３の機器制御部３０１は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。【０１３６】
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図５において、ＰＡＵＳＥ要素の内容を、この識別子に設定し、ＰＡＵＳＥ要素があり、かつその内容が記述されている場合は出力中断状態であり、ＰＡＵＳＥ要素がないか、ＰＡＵＳＥ要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。【０１３７】
また、データ出力装置１０１が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。【０１３８】
また、データ出力装置１０１は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。【０１３９】
また、上記識別子は、端末からデータ出力装置１０１に提供されるものであっても良い。さらに、データ出力装置１０１は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。【０１４０】
（２）  端末１０２および端末１０３は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置１０１は、再開位置情報とともに前記出力先を記憶部２０７に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。この場合のデータ出力中断要求の一例としては、上記実施の形態におけるＰＡＵＳＥコマンドメッセージに、拡張ヘッダＸ―Ｒｅｏｐｅｎ―Ｔｅｒｍｉｎａｌを追加し、その値として特定端末を記述するものである。出力先としては、端末のＩＰアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、ＵＰｎＰ  ＤＡに定義された方法によって取得可能である。図９に、この場合に記憶部２０７に記憶されるデータの一例を示す。【０１４１】
図９は、本発明の実施の形態１の第２の変形例における再開位置情報一例を示す図である。図９に示すように、記憶部２０７には、再開位置情報９０１と、再開位置情報９０２とが記憶されている。例えば、再開位置情報９０１は、ファイル名０００１．ｍ２ｔｓのマルチメディアデータの出力を５０１２０バイト目から再開し、その出力先は端末Ｔ１であることを表している。【０１４２】
また、データ出力装置１０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。【０１４３】
また、データ出力装置１０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。【０１４４】
さらに、データ出力装置１０１は、データ出力中断要求とともにデータ出力再開時の出力先を受信する場合、データ出力再開時の出力先は、特定の出力先が選択されるだけでなく、候補となる出力先の一部または全部が選択できてもよい。【０１４５】
この場合、例えば、データ出力装置１０１がデータ出力中断要求とともに、出力再開時の出力先として特定の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する。また、データ出力装置１０１がデータ出力中断要求とともに、出力再開時の出力先として候補となる出力先の一部または全部を受信した場合、出力再開時の出力先として受信した出力先のいずれかである端末からの要求によってのみ、データ出力を再開する。【０１４６】
（３）  データ出力装置１０１は、更に外部からのデータを受信するデータ受信部を備え、蓄積部２０３に蓄積されたデータ、および、受信部が受信したデータを送信する構成であっても良い。図１０に、この場合の代表的な構成図を示す。【０１４７】
図１０は、本発明の実施の形態１の第３の変形例に係るデータ出力装置の構成の一例を示すブロック図である。【０１４８】
図１０に示すデータ出力装置は、データ受信部１００１と、受信インタフェース１００２と、制御手段２０１と、受信手段２０２と、蓄積手段２０３と、読出手段２０４と、第１出力手段２０５と、第２出力手段２０６と、記憶手段２０７と、書込手段２０８と、ネットワークインタフェース２０９とを備える。【０１４９】
データ受信部１００１は、受信インタフェース１００２が受信した信号からマルチメディアデータを抽出するもので、代表的には、デジタル放送のチューナなどである。この場合、受信インタフェース１００２はアンテナとなる。【０１５０】
また、図１０において、制御手段２０１と、受信手段２０２と、蓄積手段２０３と、読出手段２０４と、第１出力手段２０５と、第２出力手段２０６と、記憶手段２０７と、書込手段２０８と、ネットワークインタフェース２０９は、図２に示したものと同様のものであるが、制御部２０１は、さらに、データ受信部１００１を制御するものであり、第１出力部２０５および第２出力部２０６は、データ受信部１００１の出力であるマルチメディアデータを出力することも可能なものであり、また、書込部２０８は、データ受信部１００１が受信したマルチメディアデータを蓄積部２０３に書き込むことが可能なものである。【０１５１】
データ受信部１００１からのマルチメディアデータを出力中に、データ出力中断要求を受けた場合、制御部２０１は、出力している第１出力部２０５もしくは第２出力部２０６に出力を停止させるとともに、書込部２０８に指示して、引き続くデータ受信部１００１からの出力であるマルチメディアデータを蓄積部２０３に順次書き込ませる。【０１５２】
さらに、該マルチメディアデータの属性情報を作成して書き込ませるとともに、該マルチメディアデータのＵＲＩを作成して、ＵＲＩテーブル４２１を更新する。また、該マルチメディアデータを書き込むファイル名と、再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶部２０７に記憶させる。【０１５３】
以上により、該マルチメディアデータの出力再開要求を受けた場合、制御部２０１は、上記実施の形態にて説明したのと同様の方法によって、データ出力再開を行うことが可能である。【０１５４】
なお、上記においては、データ出力中断要求を受けたときに、引き続くデータを蓄積部２０３に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から蓄積部２０３に書き込んでおく構成であっても良い。この場合、出力再開位置情報は、上記実施の形態と同様の方法によって作成することが可能である。【０１５５】
また、データ出力装置１０１は、データ受信部１００１の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。【０１５６】
（４）  データ出力装置１０１は、さらに、マルチメディアデータを復号するデータ復号部と、復号されたマルチメディアデータを表示する表示部とを備えた構成であっても良い。図１１に、この場合の代表的な構成図を示す。【０１５７】
図１１は、本発明の実施の形態１の第４の変形例におけるデータ出力装置の構成を示すブロック図である。図１１に示すデータ出力装置は、制御手段２０１と、受信手段２０２と、蓄積手段２０３と、読出手段２０４と、第１出力手段２０５と、第２出力手段２０６と、記憶手段２０７と、書込手段２０８と、ネットワークインタフェース２０９と、データ復号部１１０１と、表示部１１０２とを備える。【０１５８】
制御手段２０１と、受信手段２０２と、蓄積手段２０３と、読出手段２０４と、第１出力手段２０５と、第２出力手段２０６と、記憶手段２０７と、書込手段２０８と、ネットワークインタフェース２０９とは、図２に示したものと同様のものであるが、制御部２０１は、さらに、データ復号部１１０１および表示部１１０２の制御も行うことのみが異なる。データ復号部１１０１は、端末１０２および端末１０３におけるデータ復号部３０７と同様のものであり、表示部１１０２は、表示部３０９と同様のものである。【０１５９】
また、図１１においては、第１出力部２０５がデータ復号部１１０１と接続されている。この構成においても、上記実施の形態と同様の処理により、データ復号部１１０１へのデータ出力である第１出力部２０５からの出力を中断し、別の第２出力部２０６からの出力として該データ出力を行うこと、および、第２出力部２０６へのデータ出力を中断し、データ復号部１１０１への出力である第１出力部２０５からの出力として再開すること、などが可能となる。【０１６０】
なお、上記実施の形態にも記載したが、受信部２０２は、赤外線通信などによる受信を併せ持ってもよく、制御部２０１は、ネットワーク１０４以外から送られる要求にしたがっても、各部を制御して動作させるものであっても良い。この場合、例えば、コンテンツ一覧や応答メッセージなどは、第１出力部２０５から出力するのではなく、適切なメッセージに変換されて、例えば表示部１１０２に表示するなどして、ユーザに提示される。【０１６１】
（５）  上記実施の形態においては、データ出力装置１０１が再開位置情報を記憶することとしたが、ネットワーク上の第３の機器が記憶しておく構成であっても良い。図１２に、この場合のマルチメディア配信システムの構成図を示す。【０１６２】
図１２は、本発明の実施の形態１の第５の変形例におけるマルチメディア配信システムの構成の一例を示す図である。【０１６３】
図１２に示すマルチメディア配信システム１２０６は、データ出力装置１２０１と、ネットワークを通じてデータ出力装置および端末を制御する制御装置１２０２と、第１の端末１２０３と、第２の端末１２０４と、ネットワーク１２０５とを備える。データ出力装置１２０１、制御装置１２０２、端末１２０３および端末１２０４は、ネットワーク１２０５に接続されており、ネットワーク１２０５を介して相互に通信可能である。【０１６４】
データ出力装置１２０１は、ネットワーク１２０５を通じて送信された、制御装置１２０２、端末１２０３および端末１２０４からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク１２０５を通じて制御装置１２０２へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク１２０５を通じて端末１２０３および端末１２０４へ送信するものである。また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。【０１６５】
また、データ出力装置１２０１は、実行中のデータ出力に対して、制御装置１２０２もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはＵＲＩとを、制御装置１２０２へネットワーク１２０５を通じて送信するものである。【０１６６】
なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはＵＲＩを送信しなくとも良い。【０１６７】
制御装置１２０２は、ユーザの要求によって動作するものである。【０１６８】
制御装置１２０２は、ネットワーク１２０５を通じて、端末１２０３および端末１２０４を制御し、データ出力装置１２０１からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はＵＰｎＰ  ＡＶに定義された方法により可能であるため、詳細は省略する。【０１６９】
また、制御装置１２０２は、データ出力装置１２０１へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末１２０３、端末１２０４もしくは制御装置１２０２自身の表示部によって、ユーザに提示する。また、ユーザから再生中断の要求を受けたとき、制御装置１２０２は、該再生を実行中の端末１２０３もしくは端末１２０４を制御して、データ出力装置１２０１へデータ送信中断要求を送信させるとともに、再生を中断させる。【０１７０】
さらに、制御装置１２０２は、データ出力装置１２０１と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはＵＲＩといった、該データを特定できる情報を受信し、再開位置情報として制御装置１２０２内に記憶する。【０１７１】
再開位置情報は、上記の実施の形態１および変形例に係る再開位置情報のいずれかと同様のものを用いることが可能である。【０１７２】
なお、該マルチメディアデータのＵＲＩは、制御装置１２０２が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。【０１７３】
制御装置１２０２は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置１２０１から受信させて再生させる。【０１７４】
端末１２０３および端末１２０４は、制御装置１２０２からネットワーク１２０５を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。【０１７５】
ネットワーク１２０５は、上記の実施の形態１におけるネットワーク１０４と同様のものである。【０１７６】
以上説明したとおり、本構成のマルチメディア配信システム１２０６では、制御装置１２０２が再開位置情報を管理することにより、例えば、端末１２０３で行っていたマルチメディアコンテンツの再生を中断し、端末１２０４で再開するといったことが可能となる。【０１７７】
なお、ここでは、制御装置１２０２は、データ出力装置１２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置１２０１が再開位置情報を作成し、制御装置１２０２はそれを受信して保存する構成であっても良い。【０１７８】
また、ここでは、制御装置１２０２は、データ出力装置１２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末１２０３もしくは端末１２０４から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。【０１７９】
また、ここでは、制御装置１２０２が、端末１２０３もしくは端末１２０４に要求を発行し、端末からデータ出力装置１２０１へデータ送信要求を送信する構成としたが、制御装置１２０２が、データ出力装置１２０１へ端末１２０３もしくは端末１２０４へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置１２０１からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によって行うことが可能である。【０１８０】
また、ここでは、ネットワーク上の独立の制御装置１２０２が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。【０１８１】
（６）  上記の実施の形態１においては、データ伝送のプロトコルとしてＲＴＰ／ＲＴＳＰを用いているが、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）など、他のプロトコルを用いて行っても良い。ＨＴＴＰを用いる場合のデータ出力中断要求は、ＨＴＴＰ−ＧＥＴのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、ＨＴＴＰを用いる場合のデータ出力再開要求は、ＨＴＴＰ−ＧＥＴに上記のＸ−Ｒｅｓｔａｒｔのような独自拡張ヘッダを用いて行っても良い。【０１８２】
（７）  上記の実施の形態１においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。【０１８３】
また、送信再開位置は、コンテンツのシーンの切り替わりなど、データに含まれるコンテンツを参照して、再開位置情報を作成されてもよい。例えば、コンテンツを中断した直前のコンテンツのシーンの切り替わり位置を再開位置情報とすることが具体例として挙げられる。【０１８４】
さらに、マルチメディアデータがＭＰＥＧ２符号化データの場合、Ｉフレーム、ＭＰＥＧ２−ＴＳにおけるＰＡＴ、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。【０１８５】
（８）  上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。【０１８６】
（９）  上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。【０１８７】
（１０）  本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。【０１８８】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。【０１８９】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。【０１９０】
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。【０１９１】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０１９２】
（１１）  上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。【０１９３】
（実施の形態２）
図１３は、本発明の実施の形態２におけるマルチメディア配信システムの構成の一例を示す図である。【０１９４】
図１３に示すマルチメディア配信システム１３０５は、データ出力装置１３０１と、第１の端末１３０２と、第２の端末１３０３と、ネットワーク１３０４とを備える。データ出力装置１３０１、端末１３０2および端末１３０３は、ネットワーク１３０４に接続されており、ネットワーク１３０４を介して相互に通信可能である。【０１９５】
本実施の形態におけるデータ出力装置１３０１は、ネットワークインタフェースと、マルチメディアデータを蓄積する蓄積部を備えた、デジタル放送を受信するＣＡＴＶ ＳＴＢ（Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）である。【０１９６】
データ出力装置１３０１は、受信したデジタル放送コンテンツのマルチメディアデータを、蓄積部に蓄積する。また、ネットワークインタフェースを通して、ネットワーク１３０４に接続されている。そして、ネットワーク１３０４を通じて送信された、端末１３０２および端末１３０３からの要求を受信する。そして、要求に応じて受信したデジタル放送のコンテンツ、もしくは、蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク１３０４を通じて端末１３０２および端末１３０３へ送信するものである。【０１９７】
データ出力装置１３０１は、実行中の蓄積したコンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。【０１９８】
また、実行中の受信したデジタル放送コンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、以降のデータを蓄積部に蓄積する。【０１９９】
さらに、該マルチメディアデータの属性とＵＲＩを作成する。該属性は「出力中断中」という情報が含まれている。そして、そのファイル名もしくはＵＲＩと、蓄積したファイルの先頭位置を再開位置情報として装置内部に記憶する。【０２００】
さらに、データ出力装置１３０１は、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。【０２０１】
端末１３０２および端末１３０３は、ユーザの要求により、データ出力装置１３０１へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク１３０４を通じて送信する。そして、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。端末１３０２および端末１３０３は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。【０２０２】
ネットワーク１３０４は、家庭内に施設されたホームネットワークであり、イーサネット、無線ＬＡＮなどによって構成されたＩＰネットワークである。【０２０３】
以下、データ出力装置１３０１と端末１３０２および端末１３０３の間の通信およびそれぞれの動作について説明する。【０２０４】
マルチメディアデータ送信の制御情報の通信は、ＲＴＳＰを用いて行う。まず、データ出力装置１０１と端末１０２との間の通信で、マルチメディアデータの送信から中断までを説明し、続いて、データ出力装置１３０１と端末１３０３との間の通信で、端末１３０２へ送信途中に中断したマルチメディアデータの送信を再開する、ことを例にとって説明する。【０２０５】
まず、端末１３０２へのデータ送信を中断するまでの過程における通信とそれぞれの動作を説明する。【０２０６】
データ出力装置１３０１および端末１３０２は、それぞれ、ネットワーク１３０４に接続された装置を検索し、各装置がどのような機能を持っているかを取得する。この通信は、ＵＰｎＰ  ＤＡ（Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）で定義されている方法により行えるため、詳細な説明は省略する。【０２０７】
これにより、データ出力装置１３０１は、端末１３０２がネットワーク１３０４に接続されていて、ネットワーク１３０４よりマルチメディアデータを受信して再生するプレーヤであることを認識できる。また、端末１３０２は、データ出力装置１３０１がネットワーク１３０４に接続されているマルチメディアサーバであることを認識できる。【０２０８】
まず、端末１３０２は、データ出力装置１３０１へ蓄積しているコンテンツ一覧もしくはＥＰＧの取得要求を発行する。データ出力装置１３０１は、それに応じて、蓄積しているコンテンツの一覧を作成もしくは受信したＥＰＧデータを通信する形式に変換して、端末１３０２へ送信する。【０２０９】
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのＵＲＩとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。【０２１０】
また、ＥＰＧデータは、少なくとも各番組のタイトルと、各番組もしくはそれを放送するチャンネルにアクセスするためのＵＲＩとを含んでいるものである。コンテンツ一覧もしくはＥＰＧの取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧およびＥＰＧのデータフォーマットは、ＵＰｎＰ  ＡＶに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。【０２１１】
コンテンツ一覧のフォーマットは、ＸＭＬによって定義されているため、ＸＭＬ  Ｎａｍｅｓｐａｃｅを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースＮａを使った要素ＰＡＵＳＥを各コンテンツの情報に追加し、このＰＡＵＳＥ要素の内容が「Ｙｅｓ」の場合は、出力中断中であることを表すことと出来る。【０２１２】
次に、端末１３０２は、受け取ったコンテンツ一覧もしくはＥＰＧデータから、コンテンツのタイトルなどの情報をユーザに提示する。さらに、ユーザからそのうちのひとつを選択した再生要求を受け付けると、端末１３０２は、マルチメディアデータの送信要求を発行する。例えば、コンテンツのＵＲＩがｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓのデータを、該マルチメディアデータの先頭から送信する要求を発行するの場合、ＲＴＳＰのＳＥＴＵＰメッセージに続いて、以下のＰＬＡＹメッセージが端末１３０２からデータ出力装置１３０１へ送信される。【０２１３】
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00【０２１４】
上記ＰＬＡＹメッセージを受け取ったデータ出力装置１３０１は、ＵＲＩに示されたマルチメディアデータが蓄積部に蓄積されたコンテンツの場合は、そのマルチメディアデータを蓄積部から読み出す。また、ＵＲＩがチャンネルを示している場合は、チューナによってそのチャンネルにチューニングを行う。そして、以下の返答メッセージを作成して、端末１３０２へ送信する。【０２１５】
RTSP/1.0 200 OK
CSeq: 2
Session: 12345
Range: smtpe=0:00:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts; seq=123123532; rtptime=53265【０２１６】
続いて、データ出力装置１３０１は、蓄積部から読み出したマルチメディアデータもしくはチューナによってチューニングし取得したマルチメディアデータを、順次、端末１３０２へ送信する。データ送信はＲＴＰに規定された方法で行われるため、詳細は省略する。【０２１７】
次に、端末１３０２は、ユーザからの指示により、再生中断要求を受け付けると、データ出力装置１３０１へデータ送信中断要求を発行する。データ送信中断はＰＡＵＳＥコマンドを用いて行うことが出来る。これは、以下のメッセージが端末１３０２からデータ出力装置１３０１へ送信される。【０２１８】
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
データ出力装置１３０１は、上記のＰＡＵＳＥコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末１３０２へ送信する。【０２１９】
RTSP/1.0 200 OK
CSeq: 3
Session: 12345【０２２０】
また、データ出力装置１３０１は、送信していたコンテンツが蓄積部に蓄積されていたものの場合、該コンテンツの属性情報に、出力中断中の属性を追加する。データ出力装置１３０１は、さらに、送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から５０１１９バイトのデータを送信した場合は、先頭から５０１２０バイト目となる。【０２２１】
データ出力装置１３０１は、この送信再開位置とマルチメディアデータを識別するもの、例えばコンテンツの識別子を組として、再開位置情報を作成し、記憶する。【０２２２】
なお、本実施の形態においては、送信済データ数を基に送信再開位置を求めたが、例えば、蓄積部からの、読出済データ数を基に求めるものであっても良い。【０２２３】
また、データ出力装置１３０１は、送信していたコンテンツがチューナから取得したマルチメディアデータであった場合、引き続くマルチメディアデータを蓄積部に順次書き込む。さらに、該マルチメディアデータの属性情報を作成して蓄積部に書き込むとともに、該マルチメディアデータのＵＲＩを作成し、端末からアクセス可能とする。また、該マルチメディアデータに識別子を発行し、該識別子と再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶する。【０２２４】
端末１３０２は、ユーザから終了の要求を受け付けると、セッションを切断するＴＥＡＲＤＯＷＮというコマンドメッセージを送信し、データ出力装置１３０１はこれを受けて返答メッセージを送信し、通信が終了する。本実施の形態では、ＴＥＡＲＤＯＷＮを行っても、上記再開位置情報および属性情報は更新しない。【０２２５】
なお、より明確に後に再開する中断であることを表すために、ＰＡＵＳＥもしくはＴＥＡＲＤＯＷＮを拡張して、再開位置情報の作成・保持および属性情報の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるＸ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓを用い、その値が「Ｙｅｓ」の場合に限り、再開位置情報を作成・保持および属性情報を更新・保持することとすれば、上記の端末１３０２からデータ出力装置１３０１へ送られるＰＡＵＳＥメッセージは以下のようになる。【０２２６】
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes【０２２７】
この場合、データ出力装置１３０１は、受信したＰＡＵＳＥメッセージに、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダがあり、かつその値が「Ｙｅｓ」であるので、再開位置情報を作成して保持し、また、属性情報を更新して保持する。Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダがないか、あっても値が「Ｙｅｓ」以外の場合は、データ出力装置１３０１は、再開位置情報を作成せず、また、属性情報を更新しない。【０２２８】
次に、端末１３０３との通信において、上記の中断したデータ送信を再開する過程の通信およびデータ出力装置１３０１と端末１３０３の動作を説明する。【０２２９】
まず、データ出力装置１３０１と端末１３０３における、ネットワークに接続された装置の検索および端末１３０３によるコンテンツ一覧もしくはＥＰＧの取得に関しては、上記と同様のため、説明を省略する。【０２３０】
端末１３０３は、データ出力装置１３０１から受け取ったコンテンツ一覧もしくはＥＰＧをユーザに提示する。コンテンツ一覧提示の際に、端末１３０３は、データ出力中断中のコンテンツを判定し、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。【０２３１】
端末１３０３は、ユーザが「データ出力中断中」のコンテンツ再生の再開要求を受け付けると、データ出力装置１３０１へ、中断したデータ送信の再開要求を発行する。この要求は、ＲＴＳＰのＰＬＡＹメッセージに、独自拡張ヘッダであるＸ−Ｒｅｓｔａｒｔを用い、その値を「Ｙｅｓ」とすることで行うものとする。この場合、端末１３０３から以下のメッセージがデータ出力装置１３０１へ送信される。【０２３２】
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes【０２３３】
データ出力装置１３０１では、まず、ＰＬＡＹメッセージで送られてきたＵＲＩのマルチメディアデータの再開位置情報を、記憶している再開位置情報から検索する。データ出力装置は、再開位置情報から、送信を再開するデータ位置を読み取り、蓄積部から該マルチメディアデータを読み込む。【０２３４】
データ出力装置１３０１は、続いて、以下の返答メッセージを作成し、端末１３０３へ送信する。なお、再開位置は、該マルチメディアデータの先頭から８分目としている。【０２３５】
RTSP/1.0 200 OK
CSeq: 2
Session: 54321
Range: smtpe=0:08:00-0:55:00
RTP-Info:url=rtsp://192.168.0.3/AVData/0001.m2ts; seq=123073412; rtptime=52865【０２３６】
続いて、データ出力装置１３０１は、ＰＬＡＹメッセージが端末１３０３から送られてきたことから、データの送信先を端末１３０３と判定し、読み出したデータを、順次、端末１３０３へ送信する。また、データ出力装置１３０１は、該当する再開位置情報を装置内部から削除するとともに、該マルチメディアデータの属性情報から、「出力中断中」の属性を削除して、属性情報を更新する。【０２３７】
なお、本実施の形態の場合、データ出力装置１３０１は、ＲＴＳＰメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末１３０３から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。【０２３８】
以上のように、本発明のデータ出力装置１３０１、端末１３０２、端末１３０３、およびマルチメディア配信システム１３０５においては、例えば端末１３０２にて受信中だったデータの送信を中断しても、別の端末１３０３において、的確にデータ通信を再開することが可能となる。【０２３９】
以下、本発明のマルチメディア配信システム１３０５を構成する、データ出力装置１３０１、端末１３０２および端末１３０３について、更に詳細に説明する。ここでは、端末１３０２へデータ通信中にデータ送信を中断し、端末１３０３へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。【０２４０】
また、ＲＴＳＰサーバは決まったポート番号で待ち受けしていることとする。このポート番号は、ＩＡＮＡ（Ｉｎｔｅｒｎｅｔ  Ａｓｓｉｇｎｅｄ  Ｎｕｍｂｅｒｓ  Ａｕｔｈｏｒｉｔｙ）で決められた５５４番を用いても良いし、ユーザがデータ出力装置１３０１、端末１３０２および端末１３０３に設定したものであっても良い。また、後述するメソッドにポート番号を指定する引数を追加する構成であっても良い。【０２４１】
まず、データ出力装置１３０１について説明する。【０２４２】
図１４は、本発明の実施の形態２におけるデータ出力装置１３０１の構成の一例を示すブロック図である。【０２４３】
本図に示すデータ出力装置１３０１は、入力部１４０１と、第１メモリ１４０２と、第２メモリ１４０３と、受信部１４０４と、多重分離部１４０５と、デスクランブラ１４０６と、ＴＳデコーダ１４０７と、映像出力部１４０８と、音声出力部１４０９と、ＴＳマルチプレクサ１４１０と、ネットワーク部１４１１と、ＣＰＵ１４１２とを備える。【０２４４】
入力部２０１は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネル選択等の指示を受け付ける。【０２４５】
図１５は、フロントパネルで実施の形態２に係る入力部１４０１を構成した場合の外観の一例を示す図である。【０２４６】
本図に示すフロントパネル１５００は、上カーソルボタン１５０１、下カーソルボタン１５０２、左カーソルボタン１５０３、右カーソルボタン１５０４、ＯＫボタン１５０５、取消ボタン１５０６、ＥＰＧボタン１５０７、および、シアターボタン１５０８の８つのボタンを備える。ユーザがボタンを押下すると、押下されたボタンの識別子が、ＣＰＵ１４１２に通知される。【０２４７】
第１メモリ１４０２は、ＲＡＭ等で構成され、ＣＰＵ１４２が一時的にデータを保存する際に使用される。【０２４８】
第２メモリ１４０３は、フラッシュメモリ、ハードディスク等で電源が停止しても情報を保持可能なデバイスで構成され、ＣＰＵ１４１２が実行するプログラムを保存する。第２メモリは、ＳＤメモリーカード等の取り外し可能な記憶デバイスを用いていてもよい。【０２４９】
受信部１４０４は、ＣＡＴＶ局からのケーブルに接続され放送波を受信し、ＣＰＵ１４１２から指定された周波数にチューニングし、ＭＰＥＧトラスポートストリームを抽出して、多重分離部１４０５に引き渡す。【０２５０】
多重分離部１４０５は、受信部１４０４からＭＰＥＧトラスポートストリームを受け取り、ＣＰＵ１４１２から指定された情報を抽出しＣＰＵ１４１２に引き渡す。またＭＰＥＧトラスポートストリームをそのままデスクランブラ１４０６に引き渡す。【０２５１】
デスクランブラ１４０６は、多重分離部１４０５から与えられたスクランブルされているＭＰＥＧトラスポートストリームをデスクランブル（＝復号）し、ＴＳデコーダ１４０７に引き渡す。デスクランブラ１４０６は、データ出力装置１３０１に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているＣａｂｌｅＣＡＲＤ（ＴＭ）でも実施可能である。ＣａｂｌｅＣＡＲＤの仕様は米国ＣａｂｌｅＬａｂｓが策定したＣａｂｌｅＣＡＲＤ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎに記載されており、ここでは説明を省略する。【０２５２】
ＴＳデコーダ１４０７は、ＣＰＵ１４１２から音声データ、映像データ、ＰＳＩ／ＳＩ情報などのセクションデータの識別子を受け取る。さらに、デスクランブラ１４０６から受け取ったデスクランブルされたストリームから、受け取った音声データ、映像データ、ＰＳＩ／ＳＩ情報などのセクションデータの識別子に対応するデータを抽出する、抽出した映像データを映像出力部１４０８に、音声データを音声出力部１４０９に引き渡す。また、その両方と、セクションデータを、ＴＳマルチプレクサ１４１０に引き渡す。【０２５３】
映像出力部１４０８は映像出力端子を含み、受け取った映像データを端子に対応した映像データに変換して出力する。端子の例としては、コンポジットケーブル端子などがある。【０２５４】
音声出力部１４０９は音声出力端子を含み、受け取った音声データを端子に対応した音声データに変換して出力する。端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。【０２５５】
ＴＳマルチプレクサ１４１０は、受け取った映像データ、音声データ、セクションデータからＭＰＥＧ２トランスポートストリームを構成し、該ＭＰＥＧ２トランスポートストリームをネットワーク部１４１１に引き渡す。ＰＳＩ／ＳＩ情報は必要に応じて書き換えられる。【０２５６】
ネットワーク部１４１１は、ネットワークインタフェースを含み、ＣＰＵ１４１２から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、ＩＰネットワークで規定されたパケットに変換して、ＣＰＵ１４１２へ引き渡す。【０２５７】
ＣＰＵ１４１２は、第２メモリ１４０３が記憶するプログラムを実行することで、受信部１４０４と、多重分離部１４０５と、デスクランブラ１４０６と、ＴＳデコーダ１４０７と、ＴＳマルチプレクサ１４１０と、ネットワーク部１４１１とを制御する。【０２５８】
図１６は、本発明の実施の形態２におけるデータ出力装置１３０１が保持し、実行するプログラムの構成の一例を示す図である。すなわち、本図は、データ出力装置１３０１の第２メモリ１４０３に記憶され、ＣＰＵ１４１２に実行されるプログラムの構成の一例を示す。【０２５９】
プログラム１６００は、複数のサブプログラムで構成され、具体的には、ＯＳ１６０１と、ＥＰＧ１６０２と、ＪａｖａＶＭ１６０３と、サービスマネージャ１６０４と、Ｊａｖａライブラリ１６０５とで構成される。【０２６０】
ＯＳ１６０１は、データ出力装置１３０１の電源が投入されると、ＣＰＵ１４１２が起動するサブプログラムである。ＯＳは、オペレーティングシステムの略であり、Ｌｉｎｕｘ（登録商標）等が一例である。【０２６１】
ＯＳ１６０１は、他のサブプログラムを平行して実行するカーネル１６０１ａ及びライブラリ１６０１ｂで構成される公知の技術の総称であり、詳細な説明は省略する。【０２６２】
本実施の形態においては、ＯＳ１６０１のカーネル１６０１ａは、ＥＰＧ１６０２とＪａｖａＶＭ１６０３をサブプログラムとして実行する。また、ライブラリ１６０１ｂは、これらサブプログラムに対して、データ出力装置１３０１が備える各部を制御するための複数の機能を提供する。【０２６３】
本実施の形態のライブラリ１６０１ｂは、機能として例えば、チューナ１６０１ｂ１、限定解除１６０１ｂ２、ＡＶ再生１６０１ｂ３、ＮＥＴ１６０１ｂ４を含む。【０２６４】
チューナ１６０１ｂ１は、他のサブプログラムやＪａｖａライブラリ１６０５のＴｕｎｅｒ１６０５ｃから周波数を含むチューニング情報を受け取り、受信部１４０４に引き渡す。【０２６５】
受信部１４０４は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部１４０５に引き渡すことができる。この結果、他のサブプログラム及びＪａｖａライブラリ１６０５のＴｕｎｅｒ１６０５ｃはライブラリ１６０１ｂを通して受信部１４０４を制御することができる。【０２６６】
限定解除１６０１ｂ２は、他のサブプログラムやＪａｖａライブラリ１６０５のＣＡ１６０５ｄから情報を受け取り、デスクランブラ１４０６に引き渡す。【０２６７】
ＡＶ再生１６０１ｂ３は、他のサブプログラムやＪａｖａライブラリ１６０５のＪＭＦ１６０５ａから、音声のパケットＩＤと映像のパケットＩＤを受け取る。受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ１４０７に与える。【０２６８】
この結果、ＴＳデコーダ１４０７は与えられたパケットＩＤに基づいて、フィルタリングを行い、映像・音声の再生を実現する。【０２６９】
ＮＥＴ１６０１ｂ４は、他のサブプログラムやＪａｖａライブラリ１６０５のネットワークライブラリ１６０５ｅから受け取ったデータを、ＩＰネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。アプリケーション層より下のプロトコルとは、例えばＴＣＰパケット、ＵＤＰパケット、ＩＰパケットなどである。【０２７０】
これをネットワーク部１４１１に引き渡すことで、ネットワーク１３０４を介して他の機器にメッセージおよびデータを送信する。また、ネットワーク１３０４を介して他の機器からメッセージを受信したときに、他のサブプログラムやＪａｖａライブラリ１６０５のネットワークライブラリ１６０５ｅに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＲＴＰなどである。【０２７１】
ＥＰＧ１６０２は、ユーザに番組一覧を表示及び、ユーザからの入力を受け付ける番組表示部１６０２ａと、チャンネル選局を行う再生部１６０２ｂで構成される。【０２７２】
ここで、ＥＰＧはＥｌｅｃｔｒｉｃ  Ｐｒｏｇｒａｍ  Ｇｕｉｄｅの略である。ＥＰＧ１６０２は、データ出力装置１３０１の電源が投入されると、カーネル１６０１ａによって起動される。起動されたＥＰＧ１６０２の内部では、番組表示部１６０２ａと再生部１６０２ｂが同時に起動される。【０２７３】
番組表示部１６０２ａは起動されると、データ出力装置１３０１の入力部１４０１を通して、ユーザからの入力を待つ。【０２７４】
ここで、入力部１４０１が図１５で示されるフロントパネルで構成されている場合、ユーザが、入力部１４０１のＥＰＧボタン１５０７を押下すると、ＥＰＧボタンの識別子がＣＰＵ１４１２に通知される。ＣＰＵ１４１２上で動作するサブプログラムであるＥＰＧ４０２の番組表示部４０２ａは、この識別子を受け取り、番組情報表示データを作成し、図示していないモニタ出力部によりモニタに出力する。モニタは、データ出力装置１３０１が備えるものであっても良いし、データ出力装置１３０１とコンポジットケーブルやＨＤＭＩケーブルなどで接続されたテレビであっても良い。モニタは、受信した番組情報表示データを表示する。【０２７５】
図１７（ａ）および（ｂ）は、それぞれ、本発明の実施の形態２に係るモニタに表示された番組表の例を示す図である。【０２７６】
図１７（ａ）を参照して、モニタに表示された番組表１７１０には、格子状に番組情報が表示されている。列１７０１には、時刻情報が表示されている。列１７０２には、チャンネル名「チャンネル１」と、列１７０１の時刻に対応する時間帯に放映される番組が表示されている。【０２７７】
「チャンネル１」では、９：００〜１０：３０に番組「ニュース９」が放映され、１０：３０〜１２：００は「映画ＡＡＡ」が放映されることを表す。列１７０３も列１７０２同様、チャンネル名「チャンネル２」と、列１７０１の時刻に対応する時間帯に放映される番組が表示されている。９：００〜１１：００に番組「映画ＢＢＢ」が放映され、１１：００〜１２：００は「ニュース１１」が放映される。【０２７８】
カーソル５３０は、フロントパネル３００の左カーソル３０３と右カーソル３０４を押下すると移動する。図１７（ａ）の状態で、右カーソル３０４を押下すると、カーソル５３０は右に移動し、図１７（ｂ）のようになる。また、図１７（ｂ）の状態で、左カーソル３０３を押下すると、カーソル５３０は左に移動し、図１７（ａ）のようになる。【０２７９】
図１７（ａ）の状態で、フロントパネル１５００のＯＫボタン１５０５が押下されると、番組表示部１６０２ａは、「チャンネル１」の識別子を再生部１６０２ｂに通知する。図１７（ｂ）の状態で、フロントパネル１５００のＯＫボタン１５０５が押下されると、番組表示部１６０２ａは、「チャンネル２」の識別子を再生部１６０２ｂに通知する。【０２８０】
また、番組表示部１６０２ａは、表示する番組情報を、多重分離部１４０５を通して定期的に、第２メモリ１４０３に記憶しておく。一般的に、放送局からの番組情報の取得は時間が掛かる。フロントパネル１５００のＥＰＧボタン１５０７が押下された時、第２メモリ１４０３に予め保存された番組情報を表示することで、素早く番組表を表示することができる。【０２８１】
図１８は、本発明の実施の形態２に係る第２メモリ１４０３に記憶されている番組情報の一例を示す図である。番組情報は表形式で格納されている。【０２８２】
列１８０１は、チャンネルの識別子である。列１８０２は、番組名である。列１８０３は番組の放送開始時間、列１８０４は放送終了時間である。列１８０５は、番組の音声種別を表しており、モノラル音声、ステレオ音声、５．１チャンネル音声をそれぞれ「モノラル」、「ステレオ」、「５．１」と表記している。列１８０６は、番組の種別を表している。通常番組は空欄であり、「映画」は映画、「スポ」はスポーツ番組を表す。【０２８３】
行１８１１〜１８１４の各行は、それぞれひとつの番組情報を表す。この例では、ひとつの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別の組となる。【０２８４】
例えば、行１８１１はチャンネル識別子が「１」、番組名が「ニュース９」、放送開始時間が「９：００」、放送終了時間が「１０：３０」、音声種別が「モノラル」、番組の種別は「通常」を含む組となっている。【０２８５】
再生部１６０２ｂは、受け取ったチャンネルの識別子を用いて、チャンネルを再生する。すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第２メモリ１４０３に予め格納されている。【０２８６】
図１９は、本発明の実施の形態２に係る第２メモリ１４０３に格納されているチャンネル情報の一例を示す図である。【０２８７】
チャンネル情報は表形式で格納されている。列１９０１は、チャンネルの識別子である。列１９０２は、チャンネル名である。列１９０３はチューニング情報である。ここで、チューニング情報は周波数や転送レート、符号化率などを含み、受信部１４０４に与える値である。列１９０４はプログラムナンバーである。【０２８８】
プログラムナンバーとは、ＭＰＥＧ２規格で規定されているＰＭＴを識別するための番号である。ＰＭＴに関しては、後述する。【０２８９】
行１９１１〜１９１４の各行は、各チャンネルの識別子、チャンネル名、チューニング情報の組となる。行１９１１は識別子が「１」、チャンネル名が「チャンネル１」、チューニング情報に周波数「１５０ＭＨｚ」、プログラムナンバーが「１０１」を含む組となっている。再生部１６０２ｂは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ１６０４に引き渡す。【０２９０】
また、再生部１６０２ｂは、再生中に、ユーザがフロントパネル１５００の上カーソル１５０１と下カーソル１５０２を押下すると、入力部１４０１からＣＰＵ１４１２を通して、押下された通知を受け取り、再生しているチャンネルを変更する。【０２９１】
上カーソル１５０１を押下すると、現在再生中のチャンネルよりもひとつ小さいチャンネル識別子を持つチャンネルを再生し、また下カーソル１５０２を押下すると、現在再生中のチャンネルよりもひとつ大きいチャンネル識別子を持つチャンネルを再生する。【０２９２】
まず、再生部１６０２ｂは、第２メモリ２０３に現在再生中のチャンネルの識別子を記憶する。【０２９３】
図２０（ａ）（ｂ）及び（ｃ）は、それぞれ、本発明の実施の形態２に係る第２メモリ１４０３に格納されているチャンネルの識別子の例を示す図である。【０２９４】
図２０（ａ）では識別子「３」が記憶されており、図１９を参照し、チャンネル名「ＴＶ  ３」のチャンネルが再生中であることを示す。【０２９５】
図２０（ａ）の状態で、ユーザが上カーソル３０１を押下すると再生部４０２ｂは、図１９のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ小さい識別子を持つチャンネルであるチャンネル名「チャンネル２」のチャンネルに再生を切り変えるため、サービスマネージャ１６０４にチャンネル名「チャンネル２」の識別子「２」を引き渡す。同時に、第２メモリ１４０３に記憶されているチャンネル識別子「２」に書き換える。【０２９６】
図２０（ｂ）は、チャンネル識別子が書き換えられた状態を表す。また、図２０（ａ）の状態で、ユーザが下カーソル１５０２を押下すると再生部１６０２ｂは、図１９のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ大きい識別子を持つチャンネルであるチャンネル名「ＴＶ  Ｊａｐａｎ」のチャンネルに再生を切り変えるため、サービスマネージャ１６０４にチャンネル名「ＴＶ  Ｊａｐａｎ」の識別子「４」を引き渡す。同時に、第２メモリ１４０３に記憶されているチャンネル識別子「４」に書き換える。【０２９７】
図２０（ｃ）は、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第２メモリ１４０３に記憶されているので、データ出力装置１３０１の電源が切られた際も保存されている。【０２９８】
さらに再生部１６０２ｂは、データ出力装置１３０１の電源が投入された際に、起動されると、第２メモリ１４０３に記憶されているチャンネル識別子を読み出す。そして、そのチャンネル識別子をサービスマネージャに引渡す。これにより、データ出力装置１３０１は、電源投入時に前回の稼動時に再生されていた最後のチャンネルの再生を開始することができる。【０２９９】
ＪａｖａＶＭ１６０３は、Ｊａｖａ（ＴＭ）言語で記述されたプログラムを逐次解析し実行するＪａｖａバーチャルマシンである。Ｊａｖａ言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Ｊａｖａバーチャルマシンは、このバイトコードを実行するインタープリタである。【０３００】
また、一部のＪａｖａバーチャルマシンは、バイトコードをＣＰＵ１４１２が理解可能な実行形式に翻訳してから、ＣＰＵ１４１２に引渡し、実行することも行う。【０３０１】
ＪａｖａＶＭ１６０３は、カーネル１６０１ａに実行するＪａｖａプログラムを指定され起動される。本実施の形態では、カーネル１６０１ａは、実行するＪａｖａプログラムとしてサービスマネージャ１６０４を指定する。【０３０２】
Ｊａｖａ言語の詳細は、書籍「Ｊａｖａ  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。【０３０３】
また、ＪａｖａＶＭ自体の詳細な動作などは、「Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１―Ｘ）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。【０３０４】
サービスマネージャ１６０４は、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ＪａｖａＶＭ１６０３によって逐次実行される。サービスマネージャ１６０４は、ＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）を通して、Ｊａｖａ言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。ＪＮＩに関しても、書籍「Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ」等の多くの書籍で解説されている。ここでは、その詳細を省略する。【０３０５】
まず、デジタル放送を受信し、受信したマルチメディアデータを再生する場合の処理について説明する。【０３０６】
サービスマネージャ１６０４は、ＪＮＩを通して、再生部１６０２ｂよりチャンネルの識別子を受け取る。【０３０７】
サービスマネージャ１６０４は、最初にＪａｖａライブラリ１６０５の中にあるＴｕｎｅｒ１６０５ｃに、チャンネルの識別子を引き渡し、チューニングを依頼する。Ｔｕｎｅｒ１６０５ｃは、第２メモリ１４０３が記憶するチャンネル情報を参照し、チューニング情報を獲得する。【０３０８】
今、サービスマネージャ１６０４がチャンネルの識別子「２」をＴｕｎｅｒ１６０５ｃに引き渡すと、Ｔｕｎｅｒ１６０５ｃは、図１９の行１９１２を参照して、対応するチューニング情報「１５６ＭＨｚ，」を獲得する。Ｔｕｎｅｒ１６０５ｃは、ＯＳ１６０１のライブラリ１６０１ｂのチューナ１６０１ｂ１を通して、受信部１４０４にチューニング情報を引き渡す。【０３０９】
受信部１４０４は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部１４０５に引き渡す。【０３１０】
次にサービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＣＡ１６０５ｄにデスクランブルを依頼する。ＣＡ１６０５ｄは、ＯＳ１６０１のライブラリ１６０１ｂの限定解除１６０１ｂ２を通して復号に必要な情報をデスクランブラ１４０６に与える。【０３１１】
デスクランブラ１４０６は、与えられた情報を元に、受信部１４０４から与えられた信号を復号しＴＳデコーダ１４０７に引き渡す。【０３１２】
サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＪＭＦ１６０５ａにチャンネルの識別子を与え、映像・音声の再生を依頼する。【０３１３】
まず、最初にＪＭＦ１６０５ａは、再生すべき映像と音声を特定するためのパケットＩＤをＰＡＴ、ＰＭＴから取得する。ＰＡＴやＰＭＴはＭＰＥＧ２規格で規定されている、ＭＰＥＧ２トランスポートストリーム内の番組構成を表現するテーブルであり、ＭＰＥＧ２トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。詳細は規格書を参照されたい。ここでは、概略のみ説明する。【０３１４】
ＰＡＴは、Ｐｒｏｇｒａｍ  Ａｓｓｏｃｉａｔｉｏｎ  Ｔａｂｌｅの略で、パケットＩＤ「０」のパケットに格納され送信されている。ＪＭＦ１６０５ａは、ＰＡＴを取得するため、ＯＳ１６０１のライブラリ１６０１ｂを通して、多重分離部１４０５にパケットＩＤ「０」を指定する。多重分離部１４０５がパケットＩＤ「０」でフィルタリングを行い、ＣＰＵ１４１２に引き渡すことでＪＭＦ１６０５ａは、ＰＡＴのパケットを収集する。【０３１５】
図２１は、収集したＰＡＴの情報の一例を模式的に示す図である。【０３１６】
列２１０１は、プログラムナンバーである。列２１０２は、パケットＩＤである。列２１０２のパケットＩＤはＰＭＴを取得するために用いられる。【０３１７】
行２１１１〜１２１３は、チャンネルのプログラムナンバーと対応するパケットＩＤの組である。ここでは、三つのチャンネルが定義されている。行２１１１はプログラムナンバー「１０１」とパケットＩＤ「５０１」の組が定義されている。【０３１８】
今、ＪＭＦ１６０５ａに与えられたチャンネルの識別子が「２」とすると、ＪＭＦ１６０５ａは、図２１の行２１１２を参照して、対応するプログラムナンバー「１０２」を獲得し、次に、図２１のＰＡＴの行２１１２を参照し、プログラムナンバー「１０２」に対応するパケットＩＤ「５０２」を獲得する。【０３１９】
ＰＭＴは、Ｐｒｏｇｒａｍ  Ｍａｐ  Ｔａｂｌｅの略で、ＰＡＴで規定されたパケットＩＤのパケットに格納され送信されている。ＪＭＦ１６０５ａは、ＰＭＴを取得するため、ＯＳ１６０１のライブラリ１６０１ｂを通して、多重分離集部１４０５にパケットＩＤを指定する。ここで、指定するパケットＩＤは「５０２」とする。多重分離集部１４０５がパケットＩＤ「５０２」でフィルタリングを行い、ＣＰＵ１４１２に引き渡すことでＪＭＦ１６０５ａは、ＰＭＴのパケットを収集する。【０３２０】
図２２は、収集したＰＭＴの情報の一例を模式的に示す図である。【０３２１】
列２２０１は、ストリーム種別であり。列２２０２は、パケットＩＤである。列２２０２で指定されるパケットＩＤのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列２２０３は補足情報である。【０３２２】
行２２１１〜２２１４はエレメンタリ−ストリームと呼ばれる、パケットＩＤと送信している情報の種別の組である。【０３２３】
行２２１１は、ストリーム種別「音声」とパケットＩＤ「５０１１」の組であり、パケットＩＤ「５０１１」のペイロードには音声が格納されていることを表す。ＪＭＦ１６０５ａは、ＰＭＴから再生する映像と音声のパケットＩＤを獲得する。図２２を参照して、ＪＭＦ１６０５ａは、行２２１１から音声のパケットＩＤ「５０１１」を、行２２１２から映像のパケットＩＤ「５０１２」を獲得する。【０３２４】
次に、ＪＭＦ１６０５ａは、ＯＳ１６０１のライブラリ１６０１ｂのＡＶ再生１６０１ｂ３に獲得した音声のパケットＩＤと映像のパケットＩＤを引き渡す。これを受けて、ＡＶ再生１６０１ｂ３は、受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ１４０７に与える。ＴＳデコーダ１４０７は与えられたパケットＩＤでフィルタリングを行う。【０３２５】
ここではパケットＩＤ「５０１１」のパケットを音声出力部１４０９に、パケットＩＤ「５０１２」のパケットを映像出力部１４０８に、それぞれ引き渡す。【０３２６】
音声出力部１４０９は、与えられたパケットを適宜変換し（例えばデジタル−アナログ変換）出力する。【０３２７】
映像出力部１４０８は、与えられたパケットを適宜変換し（例えばデジタル−アナログ変換）出力する。【０３２８】
最後にサービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＡＭ１６０５ｂにチャンネルの識別子を与え、データ放送再生を依頼する。【０３２９】
ここで、データ放送再生とは、ＭＰＥＧ２トランスポートストリームに含まれるＪａｖａプログラムを抽出し、ＪａｖａＶＭ１６０３に実行させることである。ＭＰＥＧ２トランスポートストリームにＪａｖａプログラムを埋め込む方法は、ＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−６に記述されたＤＳＭＣＣという方式を用いる。ここではＤＳＭＣＣの詳細な説明は省略する。ＤＳＭＣＣ方式は、ＭＰＥＧ２トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。【０３３０】
また、実行するＪａｖａプログラムの情報はＡＩＴと呼ばれる形式で、ＭＰＥＧ２トランスポートストリームのパケットの中に埋め込まれ送信されている。ＡＩＴは、ＤＶＢ−ＭＨＰ規格（正式には、ＥＴＳＩ  ＴＳ  １０１  ８１２  ＤＶＢ−ＭＨＰ仕様Ｖ１．０．２）の１０章に定義されている、Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅの略である。【０３３１】
ＡＭ１６０５ｂは、まず、ＡＩＴを獲得するため、ＪＭＦ１６０５ａ同様ＰＡＴ、ＰＭＴを取得し、ＡＩＴが格納されているパケットのパケットＩＤを獲得する。【０３３２】
今、与えられたチャンネルの識別子が「２」で、図２１のＰＡＴ、図２２のＰＭＴが送信されていると、ＪＭＦ１６０５ａと同様の手順で、図２２のＰＭＴを獲得する。ＡＭ１６０５ｂは、ＰＭＴからストリーム種別が「データ」で補足情報として「ＡＩＴ」を持つエレメンタリ−ストリームからパケットＩＤを抽出する。図２２を参照して、行１０１３のエレメンタリ−ストリームが該当し、パケットＩＤ「５０１３」を獲得する。【０３３３】
ＡＭ１６０５ｂは、ＯＳ１６０１のライブラリ１６０１ｂを通して多重分離部１４０５にＡＩＴのパケットＩＤを与える。多重分離部１４０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ１４１２に引き渡す。この結果、ＡＭ１６０５ｂは、ＡＩＴのパケットを収集することができる。【０３３４】
図２３は、収集したＡＩＴの情報の一例を模式的に示す図である。【０３３５】
列２３０１はＪａｖａプログラムの識別子である。【０３３６】
列２３０２はＪａｖａプログラムの制御情報である。制御情報には「ａｕｔｏｓｔａｒｔ」「ｐｒｅｓｅｎｔ」「ｋｉｌｌ」などがあり、「ａｕｔｏｓｔａｒｔ」は即時にデータ出力装置１０１がこのプログラムを自動的に実行することを意味し、「ｐｒｅｓｅｎｔ」は自動実行しないことを意味し、「ｋｉｌｌ」はプログラムを停止することを意味する。【０３３７】
列２３０３は、ＤＳＭＣＣ方式でＪａｖａプログラムを含んでいるパケットＩＤを抽出するためのＤＳＭＣＣ識別子である。【０３３８】
列２３０４はＪａｖａプログラムのプログラム名である。【０３３９】
行２３１１と２３１２とは、Ｊａｖａプログラムの情報の組である。行２３１１で定義されるＪａｖａプログラムは、識別子「３０１」、制御情報「ａｕｔｏｓｔａｒｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ａ／ＴｏｐＸｌｅｔ」の組である。行２３１２で定義されるＪａｖａプログラムは、識別子「３０２」、制御情報「ｐｒｅｓｅｎｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ｂ／ＧａｍｅＸｌｅｔ」の組である。【０３４０】
ここでふたつのＪａｖａプログラムは同じＤＳＭＣＣ識別子を持つが、これはひとつのＤＳＭＣＣ方式でエンコードされたファイルシステム内にふたつのＪａｖａプログラムが含まれていることを表す。ここでは、Ｊａｖａプログラムに対して４つの情報しか規定しないが、実際にはより多くの情報が定義される。詳細はＤＶＢ−ＭＨＰ規格を参照されたい。【０３４１】
ＡＭ１６０５ｂは、ＡＩＴの中から「ａｕｔｏｓｔａｒｔ」のＪａｖａプログラムを見つけ出し、対応するＤＳＭＣＣ識別子及びＪａｖａプログラム名を抽出する。図２３を参照して、ＡＭ１６０５ｂは行２３１１のＪａｖａプログラムを抽出し、ＤＳＭＣＣ識別子「１」及びＪａｖａプログラム名「ａ／ＴｏｐＸｌｅｔ」を獲得する。【０３４２】
次にＡＭ１６０５ｂは、ＡＩＴから取得したＤＳＭＣＣ識別子を用いて、ＪａｖａプログラムをＤＳＭＣＣ方式で格納しているパケットのパケットＩＤをＰＭＴから獲得する。具体的には、ＰＭＴの中でストリーム種別が「データ」で、補足情報のＤＳＭＣＣ識別子が合致するエレメンタリ−ストリームのパケットＩＤを取得する。【０３４３】
今、ＤＳＭＣＣ識別子が「１」であり、ＰＭＴが図２２とすると、行２２１４のエレメンタリ−ストリームが合致し、パケットＩＤ「５０１４」を取り出す。【０３４４】
ＡＭ１６０５ｂは、ＯＳ１６０１のライブラリ１６０１ｂを通して多重分離部１４０５にＤＳＭＣＣ方式でデータが埋めこめられたパケットのパケットＩＤを指定する。【０３４５】
ここでは、パケットＩＤ「５０１４」を与える。多重分離部１４０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ１４１２に引き渡す。この結果、ＡＭ１６０５ｂは、必要なパケットを収集することができる。ＡＭ１６０５ｂは、収集したパケットから、ＤＳＭＣＣ方式に従ってファイルシステムを復元し、第１メモリ１４０２あるいは第２メモリ１４０３に保存する。ファイルシステム等のデータを取り出し第１メモリ１４０２あるいは第２メモリ１４０３に保存することを以降、ダウンロードと呼ぶ。【０３４６】
図２４は、ダウンロードしたファイルシステムの一例を示す図である。【０３４７】
図中、丸はディレクトリを四角はファイルを表し、２４０１はルートディレクトリ、２４０２はディレクトリ「ａ」、２４０３はディレクトリ「ｂ」、２４０４はファイル「ＴｏｐＸｌｅｔ．ｃｌａｓｓ」、２４０５はファイル「ＧａｍｅＸｌｅｔ．ｃｌａｓｓ」である。【０３４８】
ここでは、ＭＰＥＧ２トランスポートストリームからファイルシステムをダウンロードする例を記載したが、ＯＣＡＰ仕様では、ＩＰネットワークを用いたダウンロードなども規定している。また、ＡＩＴではなくＸＡＩＴと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。【０３４９】
次にＡＭ１６０５ｂは、第１メモリ１４０２あるいは第２メモリ１４０３にダウンロードしたファイルシステム中から実行するＪａｖａプログラムをＪａｖａＶＭ１６０３に引き渡す。今、実行するＪａｖａプログラム名が「ａ／ＴｏｐＸｌｅｔ」とすると、Ｊａｖａプログラム名の最後に「．ｃｌａｓｓ」を付加したファイル「ａ／ＴｏｐＸｌｅｔ．ｃｌａｓｓ」が実行すべきファイルとなる。「／」はディレクトリやファイル名の区切りであり、図２４を参照して、ファイル２４０４が実行すべきＪａｖａプログラムである。次にＡＭ１６０５ｂは、ファイル２４０４をＪａｖａＶＭ１６０３に引き渡す。【０３５０】
ＪａｖａＶＭ１６０３は、引き渡されたＪａｖａプログラムを実行する。【０３５１】
サービスマネージャ１６０４は、他のチャンネルの識別子を受け取ると、Ｊａｖａライブラリ１６０５に含まれる各ライブラリを通して再生している映像・音声及びＪａｖａプログラムの実行を、同じくＪａｖａライブラリ１６０５に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネルの識別子に基づいて、映像・音声の再生及びＪａｖａプログラムの実行を行う。【０３５２】
また、サービスマネージャ１６０４は、再生部１６０２ｂだけでなく、ＪａｖａＶＭ１６０３上で実行されるＪａｖａプログラムからチャンネルの識別子を受け取る機能も備える。【０３５３】
具体的には、チャンネルの識別子を受け取るためのＪａｖａ言語のクラス及びそのメソッドを提供する。チャンネルの識別子を受け取ると、サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５に含まれる各ライブラリを通して現在再生している映像・音声及びＪａｖａプログラムの実行を、同じくＪａｖａライブラリ１６０５に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネルの識別子に基づいて、新しい映像・音声の再生及びＪａｖａプログラムの実行を行う。【０３５４】
次に、データ出力装置１３０１において、デジタル放送を受信して、そのマルチメディアデータを第２メモリ１４０３に蓄積する処理について説明する。【０３５５】
図２５は、データ出力装置１３０１が、第２メモリ１４０３にマルチメディアデータを蓄積する形態の一例を示す図である。【０３５６】
データ出力装置１３０１は、マルチメディアデータとその属性情報、属性情報テーブル、ＵＲＩテーブル、再開位置情報テーブルを第２メモリ１４０３に記憶する。図２５に示す第２メモリに記憶された情報は、マルチメディアデータ２５０１と、マルチメディアデータ２５０２と、マルチメディアデータの属性情報２５１１と、マルチメディアデータの属性情報２５１２と、属性情報テーブル２５２１と、ＵＲＩテーブル２５３１と、再開位置情報テーブル２５３２とを含む。【０３５７】
マルチメディアデータ２５０１と、マルチメディアデータ２５０２とは、ＭＰＥＧトランスポートストリーム形式の符号化されたマルチメディアデータである。属性情報２５１１と、属性情報２５１２とは、各マルチメディアデータのタイトルなどの付加的な情報である。ここでは、属性情報２５１１はマルチメディアデータ２５０１の属性情報を、属性情報２５１２はマルチメディアデータ２５０２の属性情報を、それぞれ表すこととする。【０３５８】
図２６は、本発明の実施の形態２における属性情報の一例を示す図である。本実施の形態においては、属性情報はＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ Ｌａｎｇｕａｇｅ）で定義されたテキストで表すものとする。【０３５９】
図２６では、ＣｏｎｔｅｎｔＩＤ要素で該コンテンツの識別子を、ＦｉｌｅＮａｍｅ要素で該マルチメディアデータのファイル名を、ＣｈａｎｎｅｌＩＤ要素で図１８の列１８０１で示されているような該番組が放送されたチャンネルの識別子を、ＰｒｏｇｒａｍＮｏ要素で図１９の列１９０４に示されているようなＰＭＴを検索するプログラムナンバーを、Ｔｉｔｌｅ要素で図１８の列１８０２で示されているような番組名を、Ｇｕｎｒｅ要素で図１８の列１８０６に示されているような番組の種別を、Ｄａｔｅ要素で該番組が放送された日時を、ＲｅｃｏｒｄＤａｔｅ要素で該番組が録画された日時を、ＰｌａｙｂａｃｋＴｉｍｅ要素で、該マルチメディアデータが再生もしくはネットワーク１０４に出力された回数を、ＬａｓｔＰｌａｙｂａｃｋＤａｔｅ要素で、該マルチメディアデータが最後に再生もしくはネットワークに出力された日時を、それぞれ表す。【０３６０】
なお、属性情報は、このようなＸＭＬによる構成に限るものではなく、他の形式、例えば、バイナリデータとして記録しても良い。属性情報テーブルは、コンテンツの識別子と、該識別子で表されるコンテンツの属性情報を記録したファイルとの対応表である。図２７にその一例を示す。【０３６１】
図２７は、本発明の実施の形態２における属性情報テーブルの一例を示す図である。【０３６２】
図２７において、列２７０１はコンテンツの識別子を表し、列２７０２は属性情報のファイル名を表す。行２７１１〜２７１３は、コンテンツの識別子と対応する属性情報のファイル名の組である。行２７１１からは、識別子１のコンテンツの属性情報はファイル０００１．ａｔｔｒに記録されていることを読み取ることができる。ＵＲＩテーブル２５３１と再開位置情報テーブルについては、後述する。【０３６３】
以下、蓄積する処理について説明する。まず、デスクランブルまでの動作は上記再生する場合と同様である。次に、サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中のＲｅｃ１６０５ｊに該マルチメディアデータの蓄積を依頼する。Ｒｅｃ１６０５ｊは、まず、上記ＪＭＦ１６０５ａおよびＡＭ１６０５ｂと同様に、ＰＡＴ、ＰＭＴを取得し、蓄積する番組に関する映像データ、音声データ、各セクションデータのパケットＩＤを取得する。今、与えられたチャンネルの識別子が「２」で、図２１のＰＡＴ、図２２のＰＭＴが送信されていると、ＪＭＦ１６０５ａと同様の手順で、図２２のＰＭＴを獲得する。蓄積するデータは、図２２のＰＭＴに記述された全てのデータである。【０３６４】
Ｒｅｃ１６０５ｊは、ＯＳ１６０１のライブラリ１６０１ｂを通してＴＳデコーダ１４０７に、これらのパケットＩＤを与え、ＴＳマルチプレクサ１４１０に出力させる。ＴＳデコーダ１４０７は、与えられたパケットＩＤでフィルタリングを行い、ＴＳマルチプレクサ１４１０に引き渡す。【０３６５】
なお、セクションデータに関しては、それぞれにバージョンナンバーがつけられており、ＴＳデコーダ１４０７は、同じ種類のデータは、各バージョンナンバーごとに１回のみ出力し、あとはフィルタリングする構成であっても良い。【０３６６】
また、Ｒｅｃ１６０５ｊは、ＯＳ１６０１のライブラリ１６０１ｂを通してＴＳマルチプレクサ１４１０に、何種類のデータが送られてくるかを与えて、ＴＳデコーダ１４０７から引き渡されたデータから、ＭＰＥＧ２トランスポートストリームを構成させる。ＴＳマルチプレクサ１４１０は、構成したＭＰＥＧトランスポートストリームを、ＣＰＵ１４１２に引き渡す。【０３６７】
さらに、Ｒｅｃ１６０５ｊは、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇに依頼して、ＣＰＵ１４１２がＴＳマルチプレクサから受け取ったＭＰＥＧトランスポートストリームを第２メモリに書き込む。さらに、Ｒｅｃ１６０５ｊは、サービスマネージャ１６０４に依頼して、該番組のチャンネル識別子を受け取り、ＩＯ１６０５ｇに依頼して、第２メモリ１４０３に記憶された図１８に示す番組情報のうち、蓄積したマルチメディアデータに対応するものの番組情報を読み取る。【０３６８】
さらに、該蓄積したマルチメディアデータに識別子を発行し、取得した番組情報と、マルチメディアデータを蓄積したファイル名から属性情報を作り、ＩＯ１６０３に依頼して、該属性情報を第２メモリ１４０３に書き込む。さらに、Ｒｅｃ１６０５ｊは、ＩＯ１６０５ｇに依頼して、属性情報テーブル読み出し、内容を更新して、ＩＯ１６０５ｇに依頼して第２メモリ１４０３に書き込むことにより、属性情報テーブルを更新する。【０３６９】
次に、受信したデジタル放送のマルチメディアデータを、ネットワーク部１４１１から出力する場合の処理について説明する。【０３７０】
まず、Ｊａｖａライブラリ１６０５の中にあるネットワークライブラリ１６０５ｅは、ネットワーク１３０４に接続された端末からの要求を受け、サービスマネージャ１６０４に要求されたチャンネルの識別子を与える。サービスマネージャ１６０４では、受け取ったチャンネルの識別子をＴｕｎｅｒ１６０５ｃに与えてチューニングを依頼し、さらにＣＡ１６０５ｄにデスクランブルを依頼する。続いて、サービスマネージャ１６０４は、ネットワークライブラリ１６０５ｅに処理を返す。【０３７１】
ネットワークライブラリ１６０５ｅでは、上記Ｒｅｃ１６０５ｊと同様に、ＴＳデコーダ１４０７、ＴＳマルチプレクサ１４１０を制御して、該番組の映像データ、音声データ、セクションデータよりＭＰＥＧトランスポートストリームを作成する。【０３７２】
さらに、ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂのＮＥＴ１６０１ｂ４に送信先のアドレスを与える。続いて、ネットワークライブラリ１６０５は、ＴＳマルチプレクサ１４１０から受け取ったＭＰＥＧ２トランスポートストリームを、送信するアプリケーションレベルのプロトコルに応じた形式に変換して、ＮＥＴ１６０１ｂ４に順次引き渡す。【０３７３】
アプリケーションレベルのプロトコルとは、例えば、ＨＴＴＰやＲＴＰといったものである。これにより、ＮＥＴ１６０１ｂ４は、送信先アドレスを参照して、引き渡されたデータをＩＰネットワークのパケットに変換し、ネットワーク部１４１１に引き渡す。ネットワーク部１４１１では、引き渡されたデータを、接続されたネットワークの物理メディアに応じた信号に変換して出力する。【０３７４】
次に、第２メモリ１４０３に蓄積したマルチメディアデータを再生する場合の処理について説明する。【０３７５】
サービスマネージャ１６０４は、コンテンツの識別子を受け取ると、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇに依頼して、第２メモリ１４０３から属性情報テーブル２５２１を読み出し、該識別子のコンテンツの属性情報を記録したファイルを検索する。図２７の属性情報テーブルにて、コンテンツの識別子が１の場合、該ファイルは０００１．ａｔｔｒにあたる。【０３７６】
続いて、サービスマネージャ１６０４は、ＩＯ１６０５ｇに依頼して、第２メモリ１４０３から該属性情報を記録したファイルを読み出す。読み出した属性情報から、該コンテンツのマルチメディアデータを記録したファイル名を取得する。図２６の属性情報の場合、このファイル名は０００１．ｍ２ｔｓが対応する。【０３７７】
続いて、サービスマネージャ１６０４は、ＩＯ１６０５ｇに依頼して、該マルチメディアデータのファイルからＭＰＥＧトランスポートストリームを読み出す。ＩＯ１６０５ｇは、ＯＳ１６０１のライブラリ１６０１ｂを通してデータを読み出し、ＣＰＵ１４１２に引き渡す。【０３７８】
サービスマネージャ１６０４は、ＯＳ１６０１のライブラリ１６０１ｂを通して、読み出したＭＰＥＧトランスポートストリームを多重分離部１４０５に引き渡す。【０３７９】
次にサービスマネージャ１６０４は、Ｊａｖａライブラリの中にあるＣＡ１６０５ｄに、デスクランブラはデータをデスクランブルせず、スルーするように依頼する。【０３８０】
ＣＡ１６０５ｄは、ＯＳ１６０１のライブラリ１６０１ｂの限定解除１６０１ｂ２を通してデスクランブラ１４０６に情報を与える。これにより、デスクランブラ１４０６は、多重分離部１４０５から引き渡されたデータを、そのままＴＳでコーダ１４０７に引き渡す。【０３８１】
次にサービスマネージャ１６０４は、読み出した属性情報からチャンネルの識別子もしくはプログラムナンバーを読み出し、Ｊａｖａライブラリ１６０５の中にあるＪＭＦ１６０５ａに与えて、再生を依頼する。以下、上記の放送から受信したコンテンツの場合と同様の処理によって、映像データ、音声データの再生が行える。【０３８２】
さらに、サービスマネージャ１６０４は、Ｊａｖａライブラリの中にあるＡＭ１６０５ｂにチャンネルの識別子もしくはプログラムナンバーを与えて、データ放送の再生を依頼する。以下、上記の放送から受信したコンテンツと同様の処理によって、データ放送の再生が行える。【０３８３】
Ｊａｖａライブラリ１６０５は、第２メモリ１４０３に格納されている複数のＪａｖａライブラリの集合である。本実施の形態では、Ｊａｖａライブラリ１６０５は、ＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、Ｔｕｎｅｒ１６０５ｃ、ＣＡ１６０５ｄ、ネットワークライブラリ１６０５ｅ、再生Ｌｉｂ１６０５ｆ、ＩＯ１６０５ｇ、ＡＷＴ１６０５ｈ、ＳＩ１６０５ｉ、および、Ｒｅｃ１６０５ｊ等を含んでいる。【０３８４】
ＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、Ｔｕｎｅｒ１６０５ｃ、ＣＡ１６０５ｄ、Ｒｅｃ４０５ｊの機能は、既に説明したため、ここでの説明は省略する。【０３８５】
再生Ｌｉｂ１６０５ｆは、第２メモリ１４０３が記憶している、現在再生しているチャンネルの識別子をＪａｖａプログラムに渡すためのＪａｖａ言語のクラスおよびメソッドを（以下Ｊａｖａ  ＡＰＩと記述）提供する。このＪａｖａ  ＡＰＩを利用することで、Ｊａｖａプログラムは、現在再生中のチャンネルを知ることができる。【０３８６】
ＩＯ１６０５ｇは、Ｊａｖａプログラムが第２メモリ１４０３にデータを書き込むためのＪａｖａ  ＡＰＩ、あるいは、その書き込んだデータを第２メモリ１４０３から読み込むためのＪａｖａ  ＡＰＩをＪａｖａプログラムに提供する。このＡＰＩを利用することで、Ｊａｖａプログラムは、任意のデータを第２メモリ１４０３に保存することができる。この保存されたデータはデータ出力装置１３０１の電源がオフになっても消えないので、データ出力装置１３０１の電源が投入された後、再びそのデータを読み込むことができる。【０３８７】
ＡＷＴ１６０５ｈは、Ｊａｖａプログラムが描画を行ったり、入力部１４０１からのキー入力通知を受け取るためのＪａｖａ  ＡＰＩを提供する。具体的には、「Ｔｈｅ  Ｊａｖａ  ｃｌａｓｓ  Ｌｉｂｒａｒｉｅｓ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ，Ｖｏｌｕｍｅ  ２」（ＩＳＢＮ０−２０１−３１００３−１）で既定されるｊａｖａ．ａｗｔパッケージ、ｊａｖａ．ａｗｔ．ｅｖｅｎｔパッケージ及びその他のｊａｖａ．ａｗｔのサブパッケージが相当する。ここでは、詳細な説明を省略する。【０３８８】
ＳＩ１６０５ｉは、Ｊａｖａプログラムがチャンネル情報や電子番組表情報を取得するＪａｖａ  ＡＰＩを提供する。具体的には、Ｊａｖａ  ＴＶ仕様などが存在する。また、生のバイナリデータを放送中のＭＰＥＧ２トランスポートストリームから取得するＭＰＥＧセクションフィルタＡＰＩがＯＣＡＰ仕様の中で定義されており、送信されてきた独自の電子番組データをＪａｖａアプリケーションが理解して取り扱うことも出来る。【０３８９】
ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂのＮＥＴ１６０１ｂ４を通して、ネットワーク１３０４に接続された、端末１３０２および端末１３０３と通信するものである。通信は、コンテンツ一覧やＥＰＧの送信、端末からのマルチメディアデータ送信や、送信中断、送信再開、送信終了要求の受信、およびマルチメディアデータの送信である。【０３９０】
図２８は、ネットワークライブラリ１６０５ｅの内部構成の一例を示すブロック図である。ネットワークライブラリ１６０５ｅは、制御部２８０１と、情報受信部２８０２と、データ出力部２８０３と、属性管理部２８０４と、データ受信部２８０５とを含む。なお、ネットワークライブラリ１６０５ｅは、ＩＰネットワークに関連する他の機能を含んでも良い。【０３９１】
制御部２８０１は、ダウンロードしたＪａｖａアプリケーションに対して、ネットワークライブラリ１６０５ｅが実現する機能を提供する。すなわち、制御部２８０１は、Ｊａｖａアプリケーションに対してＪａｖａ  ＡＰＩを提供し、Ｊａｖａアプリケーションが、このＡＰＩを呼び出すことで、ネットワークを利用した機能が実行できる。【０３９２】
制御部２８０１は、Ｊａｖａ  ＡＰＩが呼び出されると、適宜、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用して処理を行う。【０３９３】
また、制御部２８０１は、必要に応じて、Ｊａｖａアプリケーションのコールバック関数を用いて、Ｊａｖａアプリケーションに通知を行う。【０３９４】
図２９は、ネットワークライブラリ１６０５ｅの内部構成に含まれる制御部２８０１が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０３９５】
図２９（１）メソッドｃｏｌｌｅｃｔＤｅｖｉｃｅ（）は、ネットワーク１３０４に接続されている外部装置の情報を集め、その情報としてＮｅｔＤｅｖｉｃｅオブジェクトの配列を返す。失敗時にはｎｕｌｌを返す。本メソッドにより、ネットワーク１３０４に接続された機器の情報を得ることができる。【０３９６】
図３０は、ネットワークライブラリ１６０５ｅで使用されるＮｅｔＤｅｖｉｃｅクラスの構成の一例を示す図である。【０３９７】
図３０で、ａｄｄｒは該装置のネットワークアドレスを、ｆｒｉｅｎｄｌｙＮａｍｅは該装置につけたニックネームを、ｄＴｙｐｅは該装置の種別を表し、０がデジタル放送を受信可能なデータ出力装置、１がデジタル放送受信部を持たないデータ出力装置、２が端末を表すこととする。このような情報取得は、ＵＰｎＰ  ＤＡに定義された方法によって行うことが可能であるため、処理の詳細は省略する。【０３９８】
図２９（２）メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）は、引数ｈａｎｄｌｅｒで与えられた、ＳｅｒｖＨａｎｄｌｅｒインタフェースを実装したハンドラをシステムに登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｊａｖａアプリケーションは、該ハンドラを登録することにより、ネットワークライブラリ１６０５ｅからコールバックを受けることができる。【０３９９】
図３１は、ネットワークライブラリ１６０５ｅで使用されるＳｅｒｖＨａｎｄｌｅｒインタフェースの構成の一例を示す図である。【０４００】
図３１において、ＳｅｒｖＨａｎｄｌｅｒインタフェースのメソッドｎｏｔｉｆｙＣｈａｎｎｅｌＩＤ（）は、端末からマルチメディアデータ送信を要求されたチャンネルの識別子を、Ｊａｖａアプリケーションに通知するものである。【０４０１】
Ｊａｖａアプリケーションは、サービスマネージャ１６０４に該識別子を与えて、チャンネルのチューニング、デスクランブルを依頼し、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すことで、ネットワークライブラリ１６０５ｅに制御を返す。【０４０２】
なお、上記チャンネルの識別子は、ネットワークライブラリ１６０５ｅが、サービスマネージャ１６０４に直接引き渡して、チューニング、デスクランブルを依頼する構成であっても良い。【０４０３】
また、メソッドｎｏｔｉｆｙＲｅｃｏｒｄｉｎｇ（）は、Ｊａｖａアプリケーションにチャンネルの識別子を通知して、そのデータの蓄積を依頼するものであり、戻り値として、蓄積したコンテンツの識別子を受け取る。Ｊａｖａアプリケーションは、サービスマネージャ１６０４に該チャンネルの識別子を与えて、そのマルチメディアデータの蓄積を依頼し、コンテンツの識別子を受け取る。【０４０４】
サービスマネージャ１６０４は、上記の通り、Ｒｅｃ１６０５ｊを用いて該マルチメディアデータを蓄積する。なお、上記チャンネルの識別子は、ネットワークライブラリ１６０５ｅが、サービスマネージャ１６０４に直接引き渡して、蓄積を依頼する構成であっても良い。【０４０５】
図２９（３）メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、マルチメディアサーバ機能の起動および動作を依頼するものであり、正常に処理が終了すればｔｒｕｅを返し、異常がおこればｆａｌｓｅを返す。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅの制御部２８０１は、必要に応じて、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用し、またＪａｖａアプリケーションやサービスマネージャ１６０４へ通知を行うことで、マルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。【０４０６】
図２９（４）メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトで表されるネットワーク１３０４に接続された装置に対するマルチメディアサーバとして動作するように依頼するものであり、正常に処理が終了すればｔｒｕｅを返し、異常が起こればｆａｌｓｅを返す。【０４０７】
図３０は、ＲｅｍｏｔｅＤｅｖｉｃｅクラスの一例を示す図である。【０４０８】
図３０で、ＲｅｍｏｔｅＤｅｖｉｃｅクラスは、ＮｅｔＤｅｖｉｃｅクラスの拡張クラスとして定義される。【０４０９】
メンバ変数ｓは、ＮｅｔＤｅｖｉｃｅクラスのメンバ変数によって表される装置と通信するＳｏｃｋｅｔオブジェクトを表す。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅの制御部２８０１は、必要に応じて、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用し、またＪａｖａアプリケーションやサービスマネージャ１６０４へ通知を行うことで、与えられた装置へマルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。【０４１０】
図２９（５）メソッドｓｔｏｐＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）もしくはｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）によって起動されたマルチメディアサーバの終了を依頼するものである。ネットワークライブラリ１６０５ｅは、本メソッドが呼び出されれば、起動中のマルチメディアサーバの動作を終了させる。【０４１１】
図２９（６）メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）は、引数ｄｅｖで与えられたネットワーク１３０４に接続されている装置に、第２メモリ１４０３に蓄積しているマルチメディアデータの一覧を送信するものである。この通信は、ＵＰｎＰ  ＡＶに定義された方法にて実現できるため、詳細は省略する。【０４１２】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、属性情報テーブル２５２１を読み出し、また、読み出した属性情報テーブ２５２１から得られる各コンテンツの属性情報を順に読み出す。また、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いてＵＲＩテーブル２５３１を読み出す。【０４１３】
ネットワークライブラリ１６０５ｅは、ＵＲＩテーブル２５３１を検索することにより、各コンテンツにアクセスするためのＵＲＩを取得し、属性情報とあわせて、ＵＰｎＰ  ＡＶで決められたフォーマットのコンテンツ一覧を作成する。そして、ＯＳ１６０１のライブラリ１６０１ｂの中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、作成したコンテンツ一覧を送信する。送信には、後述のデータ出力部のメソッドｓｅｎｄＤａｔａ（）を用いても良い。【０４１４】
図３２は、本発明の実施の形態２におけるＵＲＩテーブル２５３１の構成の一例を示す図である。【０４１５】
図３２において、列３２０１は各コンテンツの識別子を示し、列３２０１は各コンテンツにアクセスするためのＵＲＩを表す。各行３２１１〜３２１３は、コンテンツの識別子とＵＲＩの組が表されている。例えば、行３２１１は、識別子１のコンテンツのＵＲＩは、ｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓであることを表している。【０４１６】
図２９（７）メソッドｓｅｎｄＥＰＧＤａｔａ（）は、引数ｄｅｖで与えられたネットワーク１３０４に接続されている装置に、ＥＰＧ情報を送信するものである。この通信は、メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）と同様に、ＵＰｎＰ  ＡＶに定義された方法にて実現できるため、詳細は省略する。【０４１７】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、第２メモリ１４０３に記憶されている、図１８に示したＥＰＧ情報を読み出し、ＵＰｎＰ  ＡＶで定義されたフォーマットに変換する。そして、ＯＳ１６０１のライブラリ１６０１ｂの中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、変換したＥＰＧ情報を送信する。【０４１８】
なお、ＵＲＩは各チャンネルごとに割り振られており、第２メモリ１４０３にＵＲＩテーブル２５３１と同じ形式で蓄積されており、そのテーブルを読み出すことで取得するものとする。送信には、後述のデータ出力部のメソッドｓｅｎｄＤａｔａ（）を用いても良い。また、第２メモリ１４０３に記憶している、図１８に示すＥＰＧ情報のデータをそのまま送信する構成であっても良い。【０４１９】
図２９（８）メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏで与えられた再開位置情報を、第２メモリ１４０３から削除するもので、もともと存在しないか、削除が成功すればｔｒｕｅを返し、削除に失敗すればｆａｌｓｅを返す。引数ｒＩｎｆｏは、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスのインスタンスである。【０４２０】
図３３は、ネットワークライブラリ１６０５ｅで使用されるＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。【０４２１】
図３３において、メンバ変数ｃｉｄは、図２６および図２７に示した、蓄積されたコンテンツの識別子を表すものであり、メンバ変数ｐｉｄは、本ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトによって表されるマルチメディアデータ送信の中断を特定する識別子を表すものであり、メンバ変数ｒｐは、マルチメディアデータの出力を再開するデータ位置を、該マルチメディアデータが書き込まれているファイルの先頭からのバイト位置で表したものであり、メンバ変数ｒｔｅｒｍは、該マルチメディアデータの出力を再開する場合の送信先端末が指定されている場合に、その端末を表すＮｅｔＤｅｖｉｃｅオブジェクトを表すものである。メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏとコンテンツ識別子および中断の識別子が一致する再開位置情報を削除する。再開位置情報は、図２５に示した通り、再開位置情報テーブル２５３２として、第２メモリ１４０３に記憶されている。【０４２２】
図３４は、本発明の実施の形態２における再開位置情報テーブル２５３２の構成の一例を示す図である。【０４２３】
図３４において、列３４０１はコンテンツの識別子を表し、列３４０２はデータ出力中断の識別子を表し、列３４０３はマルチメディアデータの出力を再開するデータ位置を表し、列３４０４は該マルチメディアデータの出力を再開する場合の送信先端末を表す。再開位置情報はこれらの組として表され、行３４１１〜３４１３がそれにあたる。【０４２４】
なお、行３４１１の再開位置情報では、データ出力再開時の端末が指定されているため、列３４０４に端末が示されているが、行３４１２および行３４１３の再開位置情報では、データ出力再開時の端末が指定されていないため、列３４０４には示されていない。【０４２５】
なお、ネットワークライブラリ１６０５ｅは、中断の識別子を割り振らない構成であっても良い。そのとき、本メソッドは、コンテンツ識別子が一致するものを削除する構成であっても良い。【０４２６】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まず、ＩＯ１６０５ｇを用いて、再開位置情報テーブル２５３２を読み出す。続いて、再開位置情報テーブル２５３２を検索し、列３４０１に記述されているコンテンツの識別子と、列３４０２に示されている中断の識別子とが、引数ｒＩｎｆｏのものと一致する行を検索する。【０４２７】
該行が見つかれば、再開位置情報テーブル２５３２からその行を削除する。続いて、ＩＯ１６０５ｇを用いて、更新した再開位置情報テーブル２５３２を第２メモリ１４０３に書き込む。さらに、後述する属性管理部のメソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）に該コンテンツの識別子と再開位置情報テーブル２５３２の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。【０４２８】
図２９（９）メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏで与えられた再開位置情報を、ＩＯ１６０５ｇを通して、第２メモリ１４０３に書き込むものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０４２９】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｒＩｎｆｏで与えられた再開位置情報の中断に識別子を発行して、ｒＩｎｆｏのメンバ変数ｐｉｄに設定する。続いて、ＩＯ１６０５ｇを用いて、再開位置情報テーブル２５３２を読み出す。読み出した再開位置情報テーブル２５３２に、ｒＩｎｆｏの内容を表す行を追加して更新する。続いて、ＩＯ１６０５ｇを用いて、更新した再開位置情報テーブル２５３２を第２メモリ１４０３に書き込む。【０４３０】
続いて、後述する属性管理部のメソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）に該コンテンツの識別子と再開位置情報テーブル２５３２の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。【０４３１】
図２９（１０）メソッドｇｅｔＰａｕｓｅＳｔａｔｕｓ（）は、第２メモリ１４０３から再開位置情報テーブル２５３２を読み出し、その内容をＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すものであり、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。【０４３２】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まず、ＩＯ１６０５ｇを用いて、第２メモリ１４０３から再開位置情報テーブル２５３２を読み出す。続いて、再開位置情報テーブル２５３２の各行ごとに、その内容を入れたＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを作成して、配列を作成する。すべての行の内容を含む配列を作り終わると、その配列を返す。また、再開位置情報テーブル２５３２が無いか、処理途中でエラーが起きればｎｕｌｌを返す。また、再開位置情報テーブル２５３２に行が全く無ければ、要素数が０の配列を返す。【０４３３】
図２９（１１）メソッドｓｅｔＳｅｒｖｅｒＳｔａｔｕｓ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、データ中断再開をサポートするか否かを設定する。引数にて０が与えられるとデータ中断再開をサポートしないマルチメディアサーバとして働き、引数にて非０が与えられると、データ中断再開をサポートするマルチメディアサーバとして働く。【０４３４】
情報受信部２８０２は、ＯＳ１６０１のライブラリ１６０１の中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、指定されたネットワーク１３０４に接続されている外部装置からの接続要求受け入れと、メッセージの受信を行うものである。【０４３５】
情報受信部２８０２は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０４３６】
図３５は、ネットワークライブラリ１６０５ｅの内部構成に含まれる情報受信部２８０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０４３７】
図３５（１）メソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）は、引数ｓで与えられるＳｏｃｋｅｔオブジェクトによって、外部装置からの待ち受けを行い、接続要求のあった装置との接続を確立して、該装置の情報と、該装置と通信するＳｏｃｋｅｔオブジェクトを含むＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返すものであり、成功すれば該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返し、失敗すればｎｕｌｌを返すものである。【０４３８】
例えば、端末からＲＴＳＰセッションの接続要求を受けた場合は、ＲＴＳＰメッセージを送受信するためのＳｏｃｋｅｔオブジェクトと該要求のあった端末のＩＰアドレスからＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成できる。【０４３９】
なお、本メソッドは、さらに、引数として、ＮｅｔＤｅｖｉｃｅオブジェクトの配列を与えられ、該配列の各要素で示される外部装置からの接続要求のみにこたえる構成であっても良い。また、本メソッドは、同様にＮｅｔＤｅｖｉｃｅオブジェクトの配列を引数として与えられ、該配列の各要素で示される外部装置からの接続要求の場合には、該当するＮｅｔＤｅｖｉｃｅオブジェクトと通信するＳｏｃｋｅｔオブジェクトからＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成する構成であっても良い。【０４４０】
図３５（２）メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置からのメッセージを、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて受信し、バイトデータの配列として返すものであり、成功すればメッセージのバイト列を返し、失敗すればｎｕｌｌを返す。【０４４１】
図３５（３）メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）は、引数ｄｅｖで与えられた外部装置からのＲＴＳＰのリクエストメッセージを、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて受信し、内容を解釈して、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトとして返すものであり、成功すれば該リクエストメッセージを表すＲｅｑｕｅｓｔＩｎｆｏオブジェクトを返し、失敗すればｎｕｌｌを返す。【０４４２】
図３６は、ネットワークライブラリ１６０５ｅで使用されるＲｅｑｕｅｓｔＩｎｆｏクラスの構成の一例を示す図である。図３６において、メンバ変数ｒｅｑｕｅｓｔＴｙｐｅは要求の種類を表し、０がＳＥＴＵＰを、１がＰＬＡＹを、２がＰＡＵＳＥを、３がＴＥＡＲＤＯＷＮをそれぞれ表すものとする。【０４４３】
また、メンバ変数ｓｅｑはＲＴＳＰリクエストのＳｅｑヘッダの値であるシーケンス番号を表す。メンバ変数ｓｅｓｓｉｏｎは、ＲＴＳＰリクエストのＳｅｓｓｉｏｎヘッダの値であるセッション番号を表す。メンバ変数ｃｏｎｔｅｎｔＵＲＩは、要求されているコンテンツのＵＲＩを表す文字列である。メンバ変数ｒａｎｇｅは、ＲＴＳＰリクエストのＲａｎｇｅヘッダの値である文字列である。メンバ変数ｅｘｔｅｎｔＨｅａｄｅｒは、ＲＴＳＰリクエストの拡張ヘッダを格納するＳｔｒｉｎｇオブジェクトの配列であり、拡張ヘッダ１個につき、１個のＳｔｒｉｎｇオブジェクトに格納する。【０４４４】
データ出力部２８０３は、ＯＳ１６０１のライブラリ１６０１の中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、指定されたネットワーク１３０４に接続されている外部装置に、指定されたデータを出力するものである。【０４４５】
データ出力部２８０３は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０４４６】
図３７は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ出力部２８０３が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０４４７】
図３７（１）メソッドｓｅｎｄＤａｔａ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｍｅｓで与えられたデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０４４８】
図３７（２）メソッドｓｅｎｄＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｒｅｓで与えられたＲＴＳＰメッセージを生成して送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。引数ｒｅｓは、ＲｅｓｐｏｎｓｅＩｎｆｏクラスのインスタンスで与えられる。【０４４９】
図３８は、ネットワークライブラリ１６０５ｅで使用されるＲｅｓｐｏｎｓｅＩｎｆｏクラスの構成の一例を示す図である。図３８において、メンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅはレスポンスコードを表し、例えば、レスポンスが２００  ＯＫのレスポンスであれば、ｒｅｓｐｏｎｓｅＣｏｄｅは２００となる。レスポンスコードについては、ＲＴＳＰのＲＦＣを参照されたい。【０４５０】
メンバ変数ｓｅｑは、ＲＴＳＰレスポンスのＳｅｑヘッダの値となるシーケンス番号である。メンバ変数ｓｅｓｓｉｏｎは、ＲＴＳＰレスポンスのＳｅｓｓｉｏｎヘッダの値であるセッション番号を表す。メンバ変数ｒａｎｇｅは、ＲＴＳＰレスポンスのＲａｎｇｅヘッダの値である文字列である。メンバ変数ｈｅａｄｅｒｓは、ＲＴＳＰレスポンスのほかのヘッダを格納するＳｔｒｉｎｇオブジェクトの配列であり、ヘッダ１個につき、１個のＳｔｒｉｎｇオブジェクトを格納する。【０４５１】
図３７（３）メソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、引数ｉｓで与えられたＩｎｐｕｔＳｔｒｅａｍからマルチメディアデータを読み出して、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、読み出したマルチメディアデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドは、ｉｓからＥＯＦを読み出すまで処理が行われる。引数ｄｅｖは、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰクラスのオブジェクトで与えられる。【０４５２】
図３０は、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰクラスの構成の一例を示す図である。本クラスは、ＮｅｔＤｅｖｉｃｅクラスの拡張クラスとして定義されている。メンバ変数ｄｓは、ＮｅｔＤｅｖｉｃｅクラスのメンバ変数によって表される装置とＵＤＰベースで通信するＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを表す。【０４５３】
図３７（４）メソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）は、引数ｄｅｖで与えられた装置へのマルチメディアデータの送信を停止させるもので、停止させるまでに送信したデータのバイト数を返すものである。【０４５４】
属性管理部２８０４は、第２メモリ１４０３に記憶したコンテンツの属性情報のうち、データ出力中断を表す属性を更新するものである。【０４５５】
属性管理部２８０４は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０４５６】
図３９は、ネットワークライブラリ１６０５ｅの内部構成に含まれる情報受信部２８０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０４５７】
図３９（１）ｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツの属性情報の「データ出力中断中」の値を、引数ｉｓＰａｕｓｅで与えられた値で設定するものである。すなわち、引数ｉｓＰａｕｓｅが、ｔｒｕｅであるならば、引数ｃｉｄで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性を与えるものであり、引数ｉｓＰａｕｓｅがｆａｌｓｅの場合は、引数ｃｉｄで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性があれば、それを削除するものである。成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０４５８】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、属性情報テーブル２５２１を読み出し、該コンテンツの識別子をもつ属性情報を検索する。続いて、ＩＯ１６０５ｇを用いて、該コンテンツの属性情報を記述したファイルから属性情報を読み出す。続いて、「データ出力中断中」の属性を削除して更新し、ＩＯ１６０５ｇを用いて、更新した属性情報を第２メモリ１４０３に書き込み、ｔｒｕｅを返して処理を終了する。【０４５９】
図３９（２）メソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツに関し、引数ｒＩｎｆｏで与えられた再開位置情報テーブル２５３２の内容から、該コンテンツの属性情報にある「データ出力中断中」の属性の更新を行うもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０４６０】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｒＩｎｆｏで与えられた再開位置情報テーブル２５３２の内容の中に、引数ｃｉｄで与えられた識別子のコンテンツに関する情報があるか否かを調べる。これは、図３４に示した再開位置情報テーブル２５３２の列３４０１を調べることによって行える。【０４６１】
再開位置情報テーブル２５３２の中に、該コンテンツに関する情報がある場合は、ネットワークライブラリ１６０５ｅは、引数としてｃｉｄの値とｔｒｕｅを与えてメソッドｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）を呼び出して、属性情報の更新を行う。また、再開位置情報テーブル２５３２の中に、該コンテンツに関する情報が無い場合は、ネットワークライブラリ１６０５ｅは、引数としてｃｉｄの値とｆａｌｓｅを与えてメソッドｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）を呼び出して、属性情報の更新を行う。いずれの場合も、ｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）の戻り値をそのまま返す。【０４６２】
データ受信部２８０５は、データ出力装置１３０１のＴＳデコーダ１４０７とＴＳマルチプレクサ１４１０をＯＳ１６０１のライブラリ１６０１ｂを通じて制御し、ＴＳデコーダ１４０７によってフィルタリングされた、映像、音声、セクションデータをＴＳマルチプレクサ１４１０によってＭＰＥＧ２トランスポートストリームに構成して読み出すものである。【０４６３】
データ受信部２８０５は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０４６４】
図４０は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ受信部２８０５が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０４６５】
図４０（１）メソッドｏｐｅｎＰｒｏｇｒａｍ（）は、ＴＳデコーダ１４０７およびＴＳマルチプレクサ１４１０を制御し、ＴＳマルチプレクサ１４１０が構成したＭＰＥＧ２トランスポートストリームを読み出すＩｎｐｕｔＳｔｒｅａｍのオブジェクトを返す。【０４６６】
なお、失敗時にはｎｕｌｌが返る。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｃｉｄで指定されたチャンネルの識別子から得られるＰＡＴ、ＰＭＴから、該チャンネルに対応する映像データ、音声データ、セクションデータのＰＩＤを取得し、ＯＳ１６０１のライブラリ１６０１ｂを通じてＴＳデコーダ１４０７に与えてフィルタリングさせ、該映像データ、音声データ、セクションデータをＴＳマルチプレクサ１４１０に引き渡させる。【０４６７】
このとき、セクションデータは各バージョンナンバーごとに１回のみ出力する構成であっても良い。さらに、ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂを通じてＴＳでＴＳマルチプレクサ１７１０を制御し、ＴＳデコーダ１４０７から引き渡されたデータから、ＭＰＥＧ２トランスポートを構成させ、ＣＰＵ１４１２へ引き渡させる。【０４６８】
ここで、制御部２８０１のメソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）とメソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）の処理の詳細について説明する。【０４６９】
まず、メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）について説明する。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まずｃｏｌｌｅｃｔＤｅｖｉｃｅ（）を呼び出し、ネットワークに接続された装置の認識を行う。また、Ｓｏｃｋｅｔオブジェクトを生成して、ＵＰｎＰ  ＤＡおよびＵＰｎＰ  ＡＶに定義された通信の待ち受けを行う。【０４７０】
これらは、別のスレッドもしくはプロセスを生成して行わせる。これにより、随時ＵＰｎＰ  ＤＡに規定された通信を行って、接続されている装置の一覧を更新する。また、ネットワークに接続された端末から、ＵＰｎＰ  ＡＶに定義されたコンテンツ一覧取得要求を受けた場合、メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）を呼び出して、該要求を発行した端末に、コンテンツ一覧を、ＵＰｎＰ  ＡＶの定義にしたがって送信する。【０４７１】
また、同様に、ネットワークに接続された端末から、ＥＰＧデータ送信要求を受けた場合、メソッドｓｅｎｄＥＰＧＤａｔａ（）を呼び出して、該要求を発行した端末に、ＥＰＧデータを、ＵＰｎＰ  ＡＶの定義にしたがって送信する。さらに、Ｓｏｃｋｅｔオブジェクトｓを生成し、ｓを引数として情報受信部２８０２のメソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）を呼び出すことにより、ネットワーク１３０４に接続された端末１３０２および端末１３０３からのＲＴＳＰセッションの接続要求を待ち受ける。メソッドａｃｃｅｐｔＣｏｎｎｅｔｉｏｎ（）が接続要求を受け入れ、ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返すと、該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）を呼び出すことで、接続要求のあった端末へのマルチメディアサーバとしての機能を実行する。【０４７２】
なお、本メソッドは、呼び出されたときに、スレッドもしくはプロセスを新規に生成し、その上で動作する構成であっても良い。また、メソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）により接続要求を受け入れると、スレッドもしくはプロセスを新規に生成し、その上でメソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）を呼び出す構成であっても良い。【０４７３】
次に、メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）の動作について説明する。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、情報受信部２８０２のメソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）を呼び出して、ＲＴＳＰリクエストメッセージを受信して解釈する。そして、リクエストの内容に応じて処理を行い、またＲＴＳＰレスポンスメッセージを作成して、情報受信部２８０２のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して、端末へ送信する。以下、ＲＴＳＰリクエストに応じた処理について、それぞれ説明する。【０４７４】
まず、ＲＴＳＰリクエストがＳＥＴＵＰであった場合、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇを用いて、ＵＲＩテーブル２５３１を読み出し、該リクエストに含まれるＵＲＩに対応するコンテンツを検索する。該コンテンツが第２メモリ１４０３に蓄積されているコンテンツの場合、ＩＯ１６０５ｇを用いて、該コンテンツのファイルを読み出すＩｎｐｕｔＳｔｒｅａｍオブジェクトを生成する。また、該リクエストが放送中のチャンネルを表している場合、メソッドｒｅｇｉｓｔａｒＨａｎｄｌｅｒ（）で登録されたＳｅｒｖＨａｎｄｌｅｒを実装したハンドラのメソッドｎｏｔｉｆｙＣｈａｎｎｅｌＩＤ（）を呼び出してチャンネルの識別子を与え、チューニングを依頼する。【０４７５】
さらに、データ受信部２８０５のメソッドｏｐｅｎＰｒｏｇｒａｍ（）を呼び出して、該コンテンツを読み出すＩｎｐｕｔＳｔｒｅａｍを作成する。いずれの場合も、ＩｎｐｕｔＳｔｒｅａｍが得られれば、ＲＴＳＰレスポンスメッセージを表すＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを作成し、メンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅには２００を設定し、メンバ変数ｓｅｑには、ＲＴＳＰリクエストと同じ値を設定する。【０４７６】
また、該ＲＴＳＰセッションのセッション番号を発行して、メンバ変数ｓｅｓｓｉｏｎに設定する。また、マルチメディアデータを通信するＲＴＰのポート番号を記述したヘッダを作成して、メンバ変数ｈｅａｄｅｒｓに設定する。さらに、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して、レスポンスメッセージを端末に送信する。さらに、受信したＲＴＳＰリクエストのヘッダＴｒａｎｓｐｏｒｔの値から、端末がデータ受信に使用するポート番号を取得し、さらに、データ出力装置１３０１がこのＳＥＴＵＰで設定されたコンテンツを送信するＲＴＰのポート番号を発行する。これらポート番号と本メソッドの引数のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトから、まずＲＴＰ通信に用いるＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを生成する。さらに生成したＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトと引数のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトから、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰオブジェクトを作成する。ＩｎｐｕｔＳｔｒｅａｍが得られなければ、対応のエラーコードを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを作成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。【０４７７】
次に、ＲＴＳＰリクエストがＳＥＴＵＰ済みのＵＲＩに対するＰＬＡＹであった場合、それが放送中のチャンネルに対するものであれば、まず、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、上記で取得したＩｎｐｕｔＳｔｒｅａｍオブジェクトと、上記で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。【０４７８】
また、ＰＬＡＹが第２メモリ１４０３に蓄積されているコンテンツに対するものであれば、メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）が返したＲｅｑｕｅｓｔＩｎｆｏオブジェクトのメンバ変数ｅｘｔｅｎｔＨｅａｄｅｒを調べ、Ｘ−Ｒｅｓｔａｒｔがあるか否かを検索する。Ｘ−Ｒｅｓｔａｒｔが無い場合、もしくは、あってもその値が「Ｙｅｓ」ではない場合は、次にメンバ変数ｒａｎｇｅの値に対応する分のデータを読み飛ばすように、ＳＥＴＵＰ時に取得したＩｎｐｕｔＳｔｒｅａｍをＳｅｅｋ機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。【０４７９】
さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、ＩｎｐｕｔＳｔｒｅａｍオブジェクトと、ＳＥＴＵＰ時で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。【０４８０】
また、Ｘ−Ｒｅｓｔａｒｔがあってその値が「Ｙｅｓ」の場合、ネットワークライブラリ１６０５ｅは、メソッドｇｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、再開位置情報テーブル２５３２を読み出す。取得したＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクト配列を検索し、該コンテンツの再開位置情報を検索する。該コンテンツの再開位置情報が無い場合は、上記したＸ−Ｒｅｓｔａｒｔが無い場合と同様の処理を行う。【０４８１】
該コンテンツの再開位置情報があれば、そのＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｒｐの値を読み取り、その値で示されるバイト数のデータを読み飛ばすように、ＳＥＴＵＰ時に取得したＩｎｐｕｔＳｔｒｅａｍをＳｅｅｋ機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。【０４８２】
さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、ＩｎｐｕｔＳｔｒｅａｍオブジェクトと、ＳＥＴＵＰ時で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。【０４８３】
さらに、メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、再開したデータ出力に関する再開位置情報を再開位置情報テーブル２５３２から削除し、またコンテンツの属性も更新させる。なお、この削除は、ユーザからの指示により行われる構成であっても良い。【０４８４】
さらに、後述する放送中のコンテンツをネットワークライブラリ１６０５ｅの処理によって蓄積したコンテンツの場合は、再開してすべて送信したあとに、そのコンテンツを第２メモリ１４０３から削除する構成であっても良い。また、このマルチメディアデータの削除は、ユーザからの指示により行われる構成であっても良い。また、Ｘ−Ｒｅｓｔａｒｔの値は、データ出力中断の識別子とし、該コンテンツの識別子と、データ出力中断の識別子とから、再開位置情報テーブル２５３３２を検索する構成であっても良い。また、再開位置情報に設定された再開時の送信先端末からの再開要求に対して、データ出力を再開し、それ以外の端末から再開要求が合った場合には、データ送信を行わないか、先頭もしくはＲａｎｇｅヘッダで指定された位置からのデータ送信を行う構成であっても良い。【０４８５】
次に、ＲＴＳＰリクエストが、データ送信に対するＰＡＵＳＥであった場合について説明する。まず、第２メモリ１４０３に蓄積したコンテンツの送信に対するＰＡＵＳＥの場合、ネットワークライブラリ１６０５ｅは、データ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させ、送信済みのデータ数を取得する。次に、記憶しておいた送信前に呼び飛ばしたデータ数と、送信済みのデータ数の和を取ることにより、再開時の開始点を求める。【０４８６】
続いて、この中断を識別する識別子を発行し、上記の再開開始点と該コンテンツの識別子とから、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを生成する。さらに、メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、この再開位置情報を再開位置テーブル２５３２へ追加するとともに、該コンテンツの属性情報を更新する。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。【０４８７】
また、放送中のチャンネルに対するＰＡＵＳＥの場合は、ネットワークライブラリ１６０５ｅは、まずデータ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させる。続いて、メソッドｒｅｇｉｓｔａｒＨａｎｄｌｅｒ（）で登録されたＳｅｒｖＨａｎｄｌｅｒを実装したハンドラのメソッドｎｏｔｉｆｙＲｅｃｏｒｄｉｎｇ（）を呼び出してチャンネルの識別子を与え、該コンテンツの蓄積を依頼し、コンテンツの識別子を受け取る。【０４８８】
続いて、この中断を識別する識別子を発行し、受け取ったコンテンツの識別子とから、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを生成する。なお、再開位置はファイルの先頭なので、メンバ変数ｒｐは０を設定する。【０４８９】
さらに、メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、この再開位置情報を再開位置テーブル２５３２へ追加するとともに、該コンテンツの属性情報を更新する。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。【０４９０】
なお、本実施の形態では、ＳｅｒｖＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＨａｎｌｄｅｒ（）を用いてＪａｖａアプリケーションに蓄積を依頼したが、ネットワークライブラリ１６０５ｅが、ＩＯ１６０５ｇを用いて、第２メモリ１４０３に書き込み、サービスマネージャ１６０４に該コンテンツの識別子と属性情報の作成を依頼する構成であっても良い。また、ＰＡＵＳＥリクエストにＸ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダを含み、その値が「Ｙｅｓ」の場合にのみ、上記のような再開位置情報の作成を行う構成であっても良い。また、ＰＡＵＳＥリクエストに拡張ヘッダとして、出力再開時の送信先端末が指定されており、ＲｅｓｔａｒｔＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｒｔｅｒｍに設定する構成であっても良い。【０４９１】
次に、ＲＴＳＰリクエストがＴＥＡＲＤＯＷＮであった場合、マルチメディアデータを送信中であれば、データ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させる。さらに、ＳＥＴＵＰ時に取得したマルチメディアデータを読み出すＩｎｐｕｔＳｔｒｅａｍオブジェクトをｃｌｏｓｅする。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。さらに、ｔｒｕｅを返して、処理を終了する。【０４９２】
上記以外のＲＴＳＰリクエストもしくは不正なリクエストを受けた場合、リクエストの内容に応じたエラーレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。【０４９３】
次に、端末１３０２および端末１３０３について説明する。【０４９４】
図４１は、本発明の実施の形態２における端末１３０２および端末１３０３の構成の一例を示すブロック図である。端末１３０２および端末１３０３は、それぞれ、入力部４１０１と、第１メモリ４１０２と、第２メモリ４１０３と、多重分離部４１０４と、ＴＳデコーダ４１０５と、映像出力部４１０６と、音声出力部４１０７と、ネットワーク部４１０８と、ＣＰＵ４１０９とを備える。【０４９５】
入力部４１０１、第１メモリ４１０２、第２メモリ４１０３は、上記した本実施の形態におけるデータ出力装置１３０１の入力部１４０１、第１メモリ１４０２、第２メモリ１４０３と同様のものである。なお、端末１３０２および端末１３０３は、第２メモリ４１０３に、データ出力装置１３０１から受信したコンテンツ一覧やＥＰＧデータなどの、マルチメディアデータの識別子、タイトル、放送日時、放送チャンネルなど番組情報を蓄積する。【０４９６】
多重分離部４１０４は、ＣＰＵ４１０９からＭＰＥＧトランスポートストリームを受け取り、ＣＰＵ４１０９から指定された情報を抽出し、ＣＰＵ４１０９に引き渡す。また、ＭＰＥＧトランスポートストリームをそのままＴＳデコーダ４１０５に引き渡す。【０４９７】
ＴＳデコーダ４１０５は、ＣＰＵ４１０９から、音声データ、映像データの識別子を受け取る。さらに、多重分離部４１０４から受け取ったストリームから、受け取った音声データ、映像データの識別子に対応するデータを抽出する。抽出した映像データを映像出力部４１０６に、音声データを音声出力部４１０７に、それぞれ引き渡す。【０４９８】
映像出力部４１０６、音声出力部４１０７は、上記した本実施の形態におけるデータ出力装置１３０１の映像出力部１４０８、音声出力部１４０９と同様のものである。【０４９９】
ネットワーク部４１０８は、ネットワークインタフェースを含み、ＣＰＵ４１０９から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、ＩＰネットワークで規定されたパケットに変換して、ＣＰＵ４１０９へ引き渡す。【０５００】
ＣＰＵ４１０９は、第２メモリ４１０３が記憶するプログラムを実行することで、多重分離部４１０４、ＴＳデコーダ４１０５、ネットワーク部４１０９を制御する。【０５０１】
図４２は、本発明の実施の形態２に係る端末１３０２および端末１３０３のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。本図は、第２メモリ４１０３に記憶され、ＣＰＵ４１０９に実行されるプログラムの構成の一例を示す。【０５０２】
プログラム４２００は、複数のサブプログラムで構成され、具体的にはＯＳ４２０１、ＪａｖａＶＭ４２０２、サービスマネージャ４２０３、Ｊａｖａライブラリ４２０４で構成される。【０５０３】
ＯＳ４２０１は、端末１３０２および端末１３０３の電源が投入されると、ＣＰＵ４１０９が起動するサブプログラムである。ＯＳは、オペレーティングシステムの略であり、Ｌｉｎｕｘ等が一例である。ＯＳ４２０１は、他のサブプログラムを平行して実行するカーネル４２０１ａ及びライブラリ４２０１ｂで構成される公知の技術の総称であり、詳細な説明は省略する。【０５０４】
本実施の形態においては、ＯＳ４２０１のカーネル４２０１ａは、ＪａｖａＶＭ４２０３をサブプログラムとして実行する。また、ライブラリ４２０１ｂは、これらサブプログラムに対して、端末１３０２および端末１３０３が保持する構成要素を制御するための複数の機能を提供する。【０５０５】
本実施の形態では、ライブラリ４２０１ｂは機能の一例として、限定解除４２０１ｂ１、ＡＶ再生４２０２ｂ２、ＮＥＴ４２０１ｂ３を含む。【０５０６】
限定解除４２０２ｂ１は、他のサブプログラムやＪａｖａライブラリ４２０４のＣＡ４２０４ｃから情報を受け取り、ネットワークから受信した暗号化データを復号したり、ＡＶ再生４２０１ｂ２を有効にして、ネットワークから受信したマルチメディアデータの再生を許可したりするものである。【０５０７】
ＡＶ再生４２０２ｂ２は、他のサブプログラムやＪａｖａライブラリ４２０４のＪＭＦ４２０４ａから、音声のパケットＩＤと映像のパケットＩＤを受け取る。受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ４１０５に与える。この結果、ＴＳデコーダ４１０５は与えられたパケットＩＤに基づいて、フィルタリングを行い、映像・音声の再生を実現する。【０５０８】
ＮＥＴ４２０１ｂ３は、他のサブプログラムやＪａｖａライブラリ４２０４のネットワークライブラリ４２０４ｄから受け取ったデータを、ＩＰネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。【０５０９】
アプリケーション層より下のプロトコルとは、例えばＴＣＰパケット、ＵＤＰパケット、ＩＰパケットなどである。これをネットワーク部４１０８に引き渡すことで、ネットワーク１３０４を介して他の機器にメッセージおよびデータを送信する。【０５１０】
また、ネットワーク１３０４を介して他の機器からのメッセージを受信したときに、他のサブプログラムやＪａｖａライブラリ４２０４のネットワークライブラリ４２０４ｄに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、ＨＴＴＰ、ＲＴＳＰやＲＴＰなどである。【０５１１】
ＪａｖａＶＭ４２０２は、上記した本実施の形態におけるデータ出力装置１３０１のＪａｖａＶＭ１６０３と同様のものである。【０５１２】
サービスマネージャ４２０３は、上記した本実施の形態におけるデータ出力装置１３０１のサービスマネージャ１６０４と、以下の相違点を除いて同様のものである。【０５１３】
サービスマネージャ１４０４はＥＰＧ１６０２の再生部１６０２ｂよりチャンネル識別子を受け取り、その識別子をＴｕｎｅｒ１６０５ｃに引き渡してチューニングさせ、さらにＣＡ１６０５ｄに依頼してデスクランブルを行い、ＪＭＦ１６０５ａにチャンネルの識別子を与えて映像・音声の再生を依頼するものであったが、サービスマネージャ４２０３は、Ｊａｖａライブラリ４２０４の中にあるＬｉｓｔ４２０４ｉからコンテンツの識別子を受け取り、ネットワークライブラリ４２０４ｄにコンテンツの識別子およびそれを蓄積している装置などの情報を引き渡して、該装置からストリームを受信し、続いて、Ｊａｖａライブラリ４２０４の中にあるＪＭＦ４２０４ａにコンテンツの識別子を与えることで、映像・音声の再生を依頼するものである。Ｌｉｓｔ４２０４ｉについては、後述する。【０５１４】
サービスマネージャ４２０３は、Ｊａｖａライブラリ４２０４の中にあるネットワークライブラリ４２０４ｄに、コンテンツの識別子とデータ出力装置１３０１のＩＰアドレスなどの情報、該コンテンツにアクセスするためのＵＲＩなどの情報を与えて、データ出力装置１３０１へのマルチメディアデータ送信要求発行と該マルチメディアデータの受信を依頼し、さらに、ネットワークライブラリ４２０４ｄに、データ出力装置１３０１から送信されたマルチメディアデータの受信を依頼する。ネットワークライブラリ４２０４ｄでは、依頼を受けると、データ出力装置１３０１と接続して、マルチメディアデータの送信要求を発行する。そして、ネットワークライブラリ４２０４ｄは、データ出力装置１３０１から送信されたデータをＣＰＵ４１０９へ引き渡す。これにより、受信したマルチメディアデータを多重分離部４１０４に引き渡すことが可能となり、該マルチメディアデータの再生が行える。【０５１５】
Ｊａｖａライブラリ４２０４は、第２メモリ４１０３に格納されている複数のＪａｖａライブラリの集合である。本実施の形態では、Ｊａｖａライブラリ４２０４は、ＪＭＦ４２０４ａと、ＡＭ４２０４ｂと、ＣＡ４２０４ｃと、ネットワークライブラリ４２０４ｄと、再生Ｌｉｂ４２０４ｅと、Ｌｉｓｔ４２０４ｉとを含んでいる。【０５１６】
ＪＭＦ４２０４ａと、ＡＭ４２０４ｂと、再生Ｌｉｂ４２０４ｅと、ＩＯ４２０４ｆと、ＡＷＴ４２０４ｇと、ＳＩ４２０４ｈとは、それぞれ、上記した本実施の形態におけるデータ出力装置１３０１のＪａｖａライブラリ１６０５の中のＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、再生Ｌｉｂ１６０５ｆ、ＩＯ１６０５ｇ、ＡＷＴ１６０５ｈ、ＳＩ１６０５ｉと同様のものである。【０５１７】
ＣＡ４２０４ｃは、ネットワーク１３０４経由で送信されてきたマルチメディアデータのコピー制御および課金など、該マルチメディアデータの権利処理を管理するものである。コピー制御は、送信されてきたトランスポートストリームのセクション情報に含まれているコピー制御情報を参照して、必要であれば書き換えを行う。また、課金などは、ネットワークライブラリ４２０４ｄを通して、データ出力装置１３０１と通信することによって行う。【０５１８】
Ｌｉｓｔ４２０４ｉは、データ出力装置１３０１におけるＥＰＧやデータ出力装置１３０１が蓄積しているマルチメディアコンテンツの一覧を表示し、入力部４１０１が受け付けたユーザ操作によって、一覧からひとつのマルチメディアコンテンツを選択し、サービスマネージャ４２０３に再生を依頼するものである。このとき、データ出力装置１３０１の情報もサービスマネージャ４２０３に引き渡す。また、データ出力装置１３０１におけるＥＰＧおよびデータ出力装置に蓄積されたコンテンツの一覧は、ネットワークライブラリ４２０４ｄを通して、取得することができる。これらの情報は、ＵＰｎＰ ＡＶに定義された方法によって実現できるため、詳細説明は省略する。【０５１９】
ネットワークライブラリ４２０４ｄは、ＯＳ４２０１ｂのＮＥＴ４２０１ｂ３を通して、ネットワーク１３０４に接続されたデータ出力装置１３０１と通信するものである。データ出力装置１３０１との通信は、マルチメディアデータの一覧送受信、およびマルチメディアデータの送信要求発行と該マルチメディアデータの受信である。【０５２０】
図４３は、ネットワークライブラリ４２０４ｄの内部構成の一例を示すブロック図である。【０５２１】
ネットワークライブラリ４２０４ｄは、制御部４３０１、情報送信部４３０２、情報受信部４３０３、判定部４３０４、データ受信部４３０５を含む。なお、ネットワークライブラリ４２０５ｄは、ＩＰネットワークに関連する他の機能を含んでも良い。【０５２２】
制御部４３０１は、ダウンロードしたＪａｖａアプリケーションに対して、ネットワークライブラリ４２０４ｄが実現する機能を提供する。すなわち、制御部４３０１は、ダウンロードしたＪａｖａアプリケーションに対してＪａｖａ  ＡＰＩを提供し、ＪａｖａアプリケーションがこのＡＰＩを呼び出すことで、ネットワークを利用した機能が実現できる。【０５２３】
制御部４３０１は、Ｊａｖａ  ＡＰＩが呼び出されると、適宜、情報送信部４３０２、情報受信部４３０３、判定部４３０４、データ受信部４３０５や、他のＪａｖａライブラリ４２０４およびＯＳ４２０１のライブラリ４２０１ｂを利用して処理を行う。【０５２４】
図４４は、ネットワークライブラリ４２０４ｄの内部構成に含まれる制御部４３０１が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０５２５】
図４４（１）メソッドｃｏｌｌｅｃｔＮｅｔＤｅｖｉｃｅ（）は、ネットワーク１３０４に接続されている外部装置の情報を集め、その情報としてＮｅｔＤｅｖｉｃｅオブジェクトの配列を返し、失敗時はｎｕｌｌを返す。本メソッドにより、ネットワーク１３０４に接続された機器の情報を得ることができる。ＮｅｔＤｅｖｉｃｅクラスは図３０に示したものと同様である。本メソッドの処理は、ＵＰｎＰ  ＤＡに定義された方法によって行うことが可能であるため、詳細説明は省略する。【０５２６】
図４４（２）メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、引数ｃｏｎｔで与えられたマルチメディアデータを、引数ｏｆｆｓｅｔで与えられた時間位置から受信し、引数ｏｓで与えられたＯｕｔｐｕｔＳｔｒｅａｍオブジェクトに出力する。【０５２７】
引数ｏｓは、受信したマルチメディアデータをＣＰＵ４１０９に渡す役割をするものである。引数ｏｆｆｓｅｔは、先頭を０とした時間位置を秒単位で与えるものである。また、開始点を指定しない場合は、引数ｏｆｆｓｅｔに負の値を与える。これは、処理としては、ｏｆｆｓｅｔに０が与えられた場合と同様の処理となる。【０５２８】
なお、本実施の形態においては、開始点のみ引数で与えることとしたが、引数を追加して、終了点の時間位置も与えても良い。この場合、終了点を指定しないときは、該引数に負の数を与えることで実現しても良い。また、ＲＴＳＰを使ったデータ通信の制御を行っているため開始点および終了点は時間位置としたが、他のプロトコル、例えばＨＴＴＰの場合、開始点および終了点はバイト位置を与えるものであっても良い。【０５２９】
引数ｃｏｎｔは、ＣｏｎｔｅｎｔＩｎｆｏクラスのオブジェクトとして与えられる。【０５３０】
図４５に、ネットワークライブラリ４２０４ｄで使用されるＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。【０５３１】
図４５において、メンバ変数ｄｅｖは、該マルチメディアデータを送信する装置をＮｅｔＤｅｖｉｃｅオブジェクトとして格納するものである。【０５３２】
また、メンバ変数ｃｉｄは、該マルチメディアデータのコンテンツの識別子を表すものである。また、メンバ変数ｃｏｎｔｅｎｔＵＲＩは、該マルチメディアデータにアクセスするためのＵＲＩを文字列で格納するものである。また、メンバ変数ｔｉｔｌｅは該コンテンツの題名を文字列で格納するものである。また、メンバ変数ｇｕｎｒｅは、映画などといった、該コンテンツの種別を文字列で格納するものである。【０５３３】
また、メンバ変数ｂｒｏａｄＤａｔｅは、該コンテンツが放送された日時を文字列で格納するものである。また、メンバ変数ｒｅｃＤａｔｅは、該コンテンツが録画・蓄積された日時を文字列で格納するものである。また、メンバ変数ｌａｓｔＰｌａｙＤａｔｅは、これまでに該コンテンツを再生もしくはデータ出力装置１３０１から送信した最後の日時を文字列で表すものである。【０５３４】
また、メンバ変数ｉｓＰａｕｓｅｄは、該マルチメディアデータの送信もしくは再生が途中で中断された状態の場合はｔｒｕｅを、そうでない場合はｆａｌｓｅをとるｂｏｏｌｅａｎ型の変数である。これらの情報は、データ出力装置１３０１から受信したコンテンツ一覧もしくはＥＰＧデータに含まれているものであり、後述のメソッドｇｅｔＣｏｎｔｅｎｔＬｉｓｔ（）およびｇｅｔＥＰＧＤａｔａ（）によって取得できる。【０５３５】
本メソッドは、あとでデータの受信に関する制御を行うために、引数ｃｏｎｔで与えられた情報、および、本メソッドにより開かれたＲＴＳＰセッションのセッション番号と、メッセージのシーケンス番号とを、ネットワークライブラリ４２０４ｄ内部で記憶・管理しておく。【０５３６】
また、本メソッドでは、該マルチメディアデータが出力中断中であるか否かを判定し、出力中断中の場合は、本メソッドの前に、後述のｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）によって設定されていれば、その設定により再開するか否かを決定する。また、設定されていなければ、後述のメソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって登録されたＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースを実装したハンドラオブジェクトを用いて、Ｊａｖａアプリケーションに、それを通知する。【０５３７】
Ｊａｖａアプリケーションでは、ユーザに提示してユーザ入力を受け付けるなどして、中断したデータ出力を再開するか否かを決定し、後述のメソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）を用いてネットワークライブラリ４２０４ｄに通知する。本メソッドの詳細については、後述する。【０５３８】
図４４（３）メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）は、Ｊａｖａアプリケーションから、ネットワークライブラリ４２０４ｄへ、マルチメディアデータの受信を中断する依頼を出すものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドが呼び出されると、ネットワークライブラリ４２０４ｄは、後述する情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）もしくはｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出して、ＰＡＵＳＥリクエストメッセージを送信する。【０５３９】
この場合、上記のＲＴＳＰセッション番号と、シーケンス番号を１だけ増やした値を引数として与える。シーケンス番号は更新される。そして、メソッドｎｏｔｉｆｙＰａｕｓｅ（）の戻り値を返す。【０５４０】
また、図４４（４）メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、後述の情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出して送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すものである。この場合も同様に、上記のＲＴＳＰセッション番号と、シーケンス番号を１だけ増やした値を引数として与え、シーケンス番号は更新される。【０５４１】
メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、図４４（５）のように、ＮｅｔＤｅｖｉｃｅオブジェクトを引数にとり、引数で与えられた装置を、出力再開時の送信先として拡張ヘッダに記述するＰＡＵＳＥリクエストを作成して送信する構成であっても良い。メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）、メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）の処理の詳細については後述する。【０５４２】
図４４（６）メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）は、引数ｈａｎｄｌｅｒで与えられた、ＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースを実装したオブジェクトをシステムに登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｊａｖａアプリケーションは、該オブジェクトをハンドラとして登録することにより、ネットワークライブラリ４２０４ｄからコールバックを受けることができる。【０５４３】
図４６は、ネットワークライブラリ４２０４ｄで使用されるＣｌｉｅｎｔＨａｎｌｄｅｒインタフェースの構成の一例を示す図である。【０５４４】
図４６において、ＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースのメソッドｎｏｒｉｆｙＰａｕｓｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツが出力中断中であることを、Ｊａｖａアプリケーションに通知するものである。【０５４５】
Ｊａｖａアプリケーションは、後述のメソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）を用いて、この中断を再開するのか、もしくは、該コンテンツを先頭もしくはユーザが指定した位置から取得するのかを設定することが可能となる。Ｊａｖａアプリケーションは、ユーザに該コンテンツが出力中断の状態であることを提示し、ユーザに出力を再開するか否かを問合せることが可能である。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。【０５４６】
また、メソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）は、引数ｃｉｄで表されるコンテンツの送信中断を行うことを、Ｊａｖａアプリケーションに通知するものである。【０５４７】
Ｊａｖａアプリケーションは、この中断を後に再開するか否かを、ユーザに提示して問合せることが可能であり、その内容を、後述のメソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）を用いて、この中断を後に再開するか否かを、ネットワークライブラリ４２０４ｄに通知することが可能となる。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。【０５４８】
また、メソッドａｓｋＲｅｏｐｅｎＤｅｖｉｃｅ（）は、Ｊａｖａアプリケーションに、中断したデータ送信を再開するときの出力先を登録するかどうかの問い合わせを通知するものである。【０５４９】
Ｊａｖａアプリケーションは、ネットワーク１３０４に接続された端末など再生再開可能な装置の一覧をユーザに提示し、ユーザの選択を問合せることが可能である。また、Ｊａｖａアプリケーションは、後述のメソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）によって、ユーザが選択した装置をネットワークライブラリ４２０４ｄに通知することが可能となる。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。【０５５０】
図４４（７）メソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）は、Ｊａｖａアプリケーションから、ネットワークライブラリ４２０４ｄへ、引数ｃｉｄで与えられた識別子のコンテンツに対し、出力中断中の場合に、中断位置からの送信を再開するか、もしくは、先頭あるいはユーザが指定した位置から送信を開始するかを、引数ｆｌａｇで与えられた値から設定するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すものである。引数ｆｌａｇにて０が与えられれば出力再開とし、正の値が与えられれば、出力再開ではなく先頭あるいはユーザが指定した位置からのデータ取得であると判定する。【０５５１】
また、負の値が与えられれば、その時点の設定をキャンセルし、未設定の状態に戻す。本メソッドは、上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＰａｕｓｅＣｏｎｔｅｎｔ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、本メソッドによる設定にしたがって動作する。【０５５２】
図４４（８）メソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）は、引数ｃｉｄで与えられた識別子のコンテンツのデータ送信を中断する際に、それを後に再開するか否かの状態を設定するもので、引数ｆｌａｇが０の場合は再開することを表し、正の値の場合は再開しないことを表す。【０５５３】
また、負の値の場合は、その時点の設定をキャンセルし、未設定の状態に戻す。処理が成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドは、上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。【０５５４】
図４４（９）メソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）は、引数ｄｅｖで与えられた装置を、引数ｃｉｄで与えられた識別子のコンテンツのデータ送信を中断し、それを再開する時の送信先として登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０５５５】
引数ｄｅｖでｎｕｌｌが与えられた場合は、未設定の状態に戻す。上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドａｓｋＲｅｏｐｅｎＤｅｖｉｃｅ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに送信先として登録する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。【０５５６】
図４４（１０）メソッドｇｅｔＣｏｎｔｅｎｔＬｉｓｔ（）は、引数ｄｅｖで与えられた装置から、コンテンツ一覧を取得してＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。また、引数ｄｅｖで与えられた装置に、ネットワーク１０４を通じて提供できるコンテンツがない場合は、要素数０のＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列を返す。この処理における通信は、ＵＰｎＰ  ＡＶで定義された方法によって行えるため、詳細は省略する。【０５５７】
図４４（１１）メソッドｇｅｔＥＰＧＤａｔａ（）は、引数ｄｅｖで与えられた装置から、ＥＰＧを取得してＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。この処理における通信は、ＵＰｎＰ  ＡＶで定義された方法によって行えるため、詳細は省略する。【０５５８】
情報送信部４３０２は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器へＲＴＳＰのリクエストメッセージの送信を行うものである。【０５５９】
情報送信部４３０２は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０５６０】
図４７は、ネットワークライブラリ４２０４ｄの内部構成に含まれる情報送信部４３０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０５６１】
図４７（１）メソッドｃｏｎｎｅｃｔＴｏＳｅｒｖｅｒ（）は、Ｓｏｃｋｅｔオブジェクトｓを生成し、Ｓｏｃｋｅｔオブジェクトｓを用いて引数ｄｅｖで与えられた装置とＴＣＰセッションを確立して、Ｓｏｃｋｅｔオブジェクトｓと引数ｄｅｖの内容とでＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成して返すものであり、成功すれば該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返し、失敗すればｎｕｌｌを返す。ＲｅｍｏｔｅＤｅｖｉｃｅクラスの構成は、図３０に示したものと同様である。このＴＣＰセッション上で、ＲＴＳＰセッションの通信が行われる。【０５６２】
図４７（２）メソッドｓｅｎｄＤａｔａ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｍｅｓで与えられたデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０５６３】
図４７（３）メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｒｅｑで与えられたＲＴＳＰリクエストメッセージを生成して送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。引数ｒｅｑはＲｅｑｕｅｓｔＩｎｆｏクラスのオブジェクトで与えられる。ＲｅｑｕｅｓｔＩｎｆｏクラスは図３６で示したものと同様である。【０５６４】
図４７（４）メソッドｎｏｔｉｆｙＰｌａｙ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎ、ｏｆｆｓｅｔ、ｒｅｓｔａｒｔで与えられた情報からＲＴＳＰのＰＬＡＹリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０５６５】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＬＡＹを表す１を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、引数ｏｆｆｓｅｔが０以上の値であれば、その値からＲａｎｇｅヘッダをＳｔｒｉｎｇオブジェクトで生成して、ｒｅｑのメンバ変数ｒａｎｇｅへ設定する。【０５６６】
また、引数ｒｅｓｔａｒｔがｔｒｕｅの場合は、Ｘ−Ｒｅｓｔａｒｔヘッダを、値を「Ｙｅｓ」として作成し、Ｓｔｒｉｎｇオブジェクトを作成してそこに格納する。さらに、必要に応じて拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＬＡＹリクエストメッセージを送信する。【０５６７】
図４７（５）メソッドｎｏｔｉｆｙＰａｕｓｅ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎで与えられた情報からＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。【０５６８】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、必要に応じて拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。【０５６９】
図４７（６）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎで与えられた情報から、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダ付きのＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダは、後に中断した送信を再開することをより明確に示す目的で使用する。【０５７０】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓ拡張ヘッダを、その値を「Ｙｅｓ」としてＳｔｒｉｎｇオブジェクトで生成する。また、必要に応じて他の拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、これらをＳｔｒｉｎｇオブジェクトの配列としてｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。【０５７１】
図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎ、ｒｔｅｒｍで与えられた情報から、送信再開時の送信先装置を拡張ヘッダに含んだＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。送信再開時の送信先装置を示す拡張ヘッダとして、Ｘ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌを用いることとする。【０５７２】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎｎａｌを用いて、送信再開時の送信先端末を記述したヘッダをＳｔｒｉｎｇオブジェクトで生成する。拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌの値は、引数ｒｔｅｒｍから得られる、該端末のＩＰアドレスであっても良いし、該端末のホスト名であっても良いし、該端末につけたニックネームであっても良い。ニックネームはＮｅｔＤｅｖｉｃｅオブジェクトｒｔｅｒｍのメンバ変数ｆｒｉｅｎｄｌｙＮａｍｅから得られる。さらに、必要に応じて他の拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、これらをＳｔｒｉｎｇオブジェクトの配列としてｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。本メッセージには、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓ拡張ヘッダを含む構成であっても良い。
情報受信部４３０３は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器からのＲＴＳＰのレスポンスメッセージの受信を行うものである。【０５７３】
情報受信部４３０３は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０５７４】
図４８は、ネットワークライブラリ４２０４ｄの内部構成に含まれる情報受信部４３０３が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０５７５】
図４８（１）メソッドｒｅｃｅｉｖｅＤａｔａ（）は、引数ｄｅｖで与えられた外部装置から、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いてメッセージを受信し、そのメッセージをバイト列で返すものであり、成功すれば該バイト列を返し、失敗すればｎｕｌｌを返すものである。【０５７６】
図４８（２）メソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置から、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、ＲＴＳＰのレスポンスメッセージを受信し、それを解釈してＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成して返すものであり、成功すれば該ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを返し、失敗すればｎｕｌｌを返す。ＲｅｓｐｏｎｓｅＩｎｆｏクラスは、図３８に示したものと同様である。【０５７７】
本メソッドが呼び出されると、まず、メソッドｒｅｃｅｉｖｅＤａｔａ（）を呼び出して、レスポンスメッセージを受信する。続いて、ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトｒｅｓを生成する。さらに、受信したレスポンスメッセージを解釈し、ｒｅｓのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅ、ｓｅｑ、ｓｅｓｓｉｏｎを設定する。また、レスポンスメッセージにＲａｎｇｅヘッダが含まれていれば、そのヘッダをＳｔｒｉｎｇオブジェクトとして、ｒｅｓのメンバ変数ｒａｎｇｅに設定する。Ｓｅｑヘッダ、Ｓｅｓｓｉｏｎヘッダ、Ｒａｎｇｅヘッダ以外のヘッダがあれば、各ヘッダごとに、ひとつのＳｔｒｉｎｇオブジェクトを生成して設定し、それらを配列として、ｒｅｓのメンバ変数ｈｅａｄｅｒｓに設定する。Ｓｅｑヘッダ、Ｓｅｓｓｉｏｎヘッダ、Ｒａｎｇｅヘッダ以外のヘッダがなければ、ｒｅｓのメンバ変数ｈｅａｄｅｒｓはｎｕｌｌに設定する。そして、ｒｅｓを返す。また、不正なレスポンスメッセージの場合やレスポンスメッセージの受信に失敗した場合は、ｎｕｌｌを返す。【０５７８】
判定部４３０４は、コンテンツの属性情報から、該コンテンツが出力中断中の属性を持っているか否かを判定するものである。【０５７９】
判定部４３０４は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０５８０】
図４９は、ネットワークライブラリ４２０４ｄの内部構成に含まれる判定部４３０４が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０５８１】
図４９（１）メソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）は、引数ｃｉｄによって与えられた識別子をもつコンテンツが、出力中断中であるか否かを判定するものであり、出力中断中と判定されればｔｒｕｅを返し、出力中断中でないと判定されるか、処理に失敗すればｆａｌｓｅを返す。【０５８２】
本メソッドが呼び出されると、ネットワークライブラリ４２０４ｄは、ＩＯ４２０４ｆを用いて、第２メモリ４１０３に記憶されているコンテンツ一覧を読み出す。読み出したコンテンツ一覧から、引数ｃｉｄで与えられた識別子をもつコンテンツを検索する。検索したコンテンツの属性情報を調べ、出力中断中の属性があれば、ｔｒｕｅを返して終了し、出力中断中の属性がなければｆａｌｓｅを返して終了する。また、第２メモリ４１０３からコンテンツ一覧を読み出せないか、もしくは、読み出したコンテンツ一覧に、引数ｃｉｄで与えられた識別子をもつコンテンツがない場合は、ｆａｌｓｅを返して終了する。【０５８３】
図４９（２）メソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）は、引数にＣｏｎｔｅｎｔＩｎｆｏオブジェクトをもつ構成である。本メソッドは、引数で与えられたＣｏｎｅｎｔＩｎｆｏオブジェクトのコンテンツが、出力中断中か否かを判定するものであり、出力中断中と判定されればｔｒｕｅを返し、出力中断中でないと判定されればｆａｌｓｅを返す。本メソッドは、引数で与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｉｓＰａｕｓｅの値を返す。【０５８４】
データ受信部４３０５は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器からマルチメディアデータを受信するものである。【０５８５】
データ受信部４３０５は、制御部４３０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。【０５８６】
図５０は、ネットワークライブラリ４２０４ｄの内部構成に含まれるデータ受信部４３０５が提供するＪａｖａ  ＡＰＩの一例を示す図である。【０５８７】
図５０（１）メソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）は、引数ｄｅｖで与えられた装置から、引数ｃｏｎｔで与えられたコンテンツの、マルチメディアデータを受信する通信路を確保し、ＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトで返すもので、成功時には該オブジェクトが、失敗時にはｎｕｌｌが返る。【０５８８】
図５１は、ネットワークライブラリ４２０４ｄで使用されるＲｅｍｏｔｅＰｒｏｇｒａｍクラスの構成の一例を示す図である。【０５８９】
図５１において、メンバ変数ｓｅｓｓｉｏｎは、このマルチメディアデータ通信を制御するＲＴＳＰセッションのセッション番号を表す。また、メンバ変数ｓは、マルチメディアデータを受信するＲＴＰのＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを表す。また、メソッドｇｅｔＤａｔａ（）は、ＲＴＰによりデータを受信し、ＲＴＰパケットからマルチメディアデータを抽出して返すものである。【０５９０】
メソッドｇｅｔＤａｔａ（）は、１回の呼び出しで、ＲＴＰパケット１個分のデータを返すとは限らないが、複数のＲＴＰパケットをまとめて返す場合は、必ず、パケット番号が連続の区間のデータを返すものである。メソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）が呼び出されると、ネットワークライブラリ４２０４ｄは、引数ｄｅｖで与えられた装置に、引数ｃｏｎｔで与えられたコンテンツに対する、ＲＴＳＰのＳＥＴＵＰメッセージを送信する。そして、レスポンスメッセージを受け取り、解釈して、ＳＥＴＵＰが成功していればＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトを作成して返し、失敗していればｎｕｌｌを返す。【０５９１】
また、ＴＣＰセッションが切断された場合などにより、ＳＥＴＵＰメッセージが送信できない、もしくは、レスポンスメッセージが受信できないといった異常が発生した場合もｎｕｌｌを返す。【０５９２】
以下、本メソッドの処理について、さらに詳しく説明する。まず、本メソッドが呼び出されると、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅを、ＳＥＴＵＰを表す０に設定する。メンバ変数ｓｅｑは１に設定する。【０５９３】
また、ＳＥＴＵＰリクエストでは、まだセッション番号は割り当てられていないため、メンバ変数ｓｅｓｓｉｏｎは任意の値でよい。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、メンバ変数のｃｏｎｔｅｎｔＵＲＩの値を読み出し、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩにＳｔｒｉｎｇオブジェクトとして設定する。ＳＥＴＵＰでは、Ｒａｎｇｅヘッダは送信しないため、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌとしておく。【０５９４】
さらに、マルチメディアデータを受信するＵＤＰのポート番号を発行し、その値を記述することでＴｒａｎｓｐｏｒｔヘッダを生成し、Ｓｔｒｉｎｇオブジェクトを生成して、Ｔｒａｎｓｐｏｒｔヘッダの文字列を設定する。さらに、要素数が、Ｔｒａｎｓｐｏｒｔヘッダを含んだＳｔｒｉｎｇオブジェクトのみの１個であるＳｔｒｉｎｇオブジェクトの配列を生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｔＨｅａｄｅｒに設定する。【０５９５】
そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、情報送信部４３０２のメソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出し、ＳＥＴＵＰメッセージを送信する。さらに、引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、情報受信部４３０３のメソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅＭｅｓｓａｇｅ（）を呼び出し、レスポンスメッセージを受信してＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを得る。【０５９６】
このＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトをｒｅｓとすると、まず、ｒｅｓのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅを調べ、ＯＫである２００であるか否かを調べる。２００でなければＳＥＴＵＰが失敗したことを表し、ｎｕｌｌを返して終了する。続いて、ＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトｒｐを生成する。【０５９７】
ｒｐのメンバ変数ｓｅｓｓｉｏｎには、ｒｅｓのメンバ変数ｓｅｓｓｉｏｎの値を設定する。また、ｒｅｓのメンバ変数ｈｅａｄｅｒｓを検索し、Ｔｒａｎｓｐｏｒｔヘッダを探す。Ｔｒａｎｓｐｏｒｔヘッダがなければ、ｎｕｌｌを返して終了する。Ｔｒａｎｓｐｏｒｔヘッダがあれば、そこから、ｓｅｒｖｅｒ＿ｐｏｒｔで表される、サーバがマルチメディアデータを出力するポート番号を得る。【０５９８】
このポート番号と、上記したネットワークライブラリ４２０４ｄがデータを受信するポート番号と、引数ｄｅｖから得られるサーバの情報から、ＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを生成してサーバとｃｏｎｎｅｃｔし、ｒｐのメンバ変数ｓに設定する。そして、ｒｐを返して、処理を終了する。【０５９９】
ここで、制御部４３０１のメソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の動作について、より詳細に説明する。本メソッドが呼び出されると、まず、引数ｃｏｎｔで与えられたコンテンツ情報をネットワークライブラリ４２０４ｄで記憶、管理する。【０６００】
ネットワークライブラリ４２０４ｄは、続いて、引数ｃｏｎｔのメンバ変数ｄｅｖを引数にあたえることにより、情報受信部４３０２のメソッドｃｏｎｎｅｃｔＴｏＳｅｖｅｒ（）を呼び出して、データ出力装置１３０１とＲＴＳＰメッセージを通信するＴＣＰセッションを確立し、戻り値としてＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを受け取る。このＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトをｒｄｅｖとする。ｒｄｅｖは、ネットワークライブラリ４３０４ｄによって記憶され管理される。【０６０１】
また、メソッドｒｄｅｖは、ｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって登録されたハンドラオブジェクトを用いたコールバックを行い、Ｊａｖａアプリケーションに与えて、Ｊａｖａアプリケーションが管理する構成であっても良い。具体的には、図４６に示したＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースにｐｕｂｌｉｃ  ｂｏｏｌｅａｎ  ｎｏｔｉｆｙＲｅｍｏｔｅ（ＲｅｍｏｔｅＤｅｖｉｃｅ  ｄｅｖ）というメソッドを追加し、引数にｒｄｅｖを与えて呼び出すことで、Ｊａｖａアプリケーションに与えることが可能となる。【０６０２】
続いて、ｒｄｅｖとｃｏｎｔを引数として、データ受信部４３０５のメソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）を呼び出し、ＲＴＳＰセッションを開始するとともに、マルチメディアデータを受信するＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトを受け取る。このＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトをｒｐとする。【０６０３】
続いて、ｃｏｎｔを引数として判定部４３０４のメソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）を呼び出すことにより、該マルチメディアデータが出力中断中か否かを判定する。出力中断中ではないと判定された場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出すことにより、データ出力装置１３０１にＰＬＡＹリクエストメッセージを発行する。【０６０４】
この場合の引数は、第１引数にはｒｄｅｖを、第２引数にはｃｏｎｔを、第３引数には２を、第４引数にはｒｐのメンバ変数ｓｅｓｓｉｏｎを、第５引数には引数ｏｆｆｓｅｔで与えられた値を、第６引数にはｆａｌｓｅを、それぞれ用いる。【０６０５】
第３引数は、ＲＴＳＰセッションのシーケンス番号であり、１はデータ受信部４３０５のメソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）の中で、ＳＥＴＵＰに用いられている。ネットワークライブラリ４２０４ｄは、このセッション番号を記憶して管理し、メソッドｎｏｔｉｆｙＰｌａｙ（）が呼び出された後は、記憶しているセッション番号は２となる。【０６０６】
該コンテンツが出力中断中であると判定された場合、ネットワークライブラリ４２０４ｄは、まず、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、該コンテンツに対して出力再開をするか否かの設定がなされているかを検索する。【０６０７】
出力再開をしないと設定されている場合は、上記と同様の処理を行い、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出す。出力を再開すると設定されていた場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を、上記と第５引数と第６引数を変えて呼び出す。この場合、第５引数には任意の負の値を、第６引数にはｔｒｕｅを与える。【０６０８】
また、出力再開に関して設定されていない場合は、メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）で設定されたハンドラｈのメソッドｎｏｔｉｆｙＣｏｎｔｅｎｔＰａｕｓｅ（）を呼び出し、Ｊａｖａアプリケーションに出力中断中のコンテンツであることを通知する。この場合に、引数はｃｏｎｔのメンバ変数ｃｉｄを与える。【０６０９】
Ｊａｖａアプリケーションは、メソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）によって設定を行ったあと、制御をネットワークライブラリ４２０４ｄに戻す。ネットワークライブラリ４２０４ｄは、Ｊａｖａアプリケーションによって行われた設定にしたがい、上記と同様に、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出す。このとき、Ｊａｖａアプリケーションによって未設定とされた場合は、出力再開を行わないとみなすこととする。【０６１０】
メソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出した後、さらに、情報受信部４３０３のメソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅ（）を、引数としてｒｄｅｖを与えることにより呼び出し、ＰＬＡＹリクエストに対するレスポンスメッセージを受信し、ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを受け取る。受け取ったＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトをｒｉとする。【０６１１】
ｒｉのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅを調べ、ＯＫを表す２００であれば、ｒｐのメソッドｇｅｔＤａｔａ（）を呼び出して、データ出力装置１３０１から送信されてきたデータを受信する。ｒｐのメソッドｇｅｔＤａｔａ（）からデータを受け取れば、それを引数ｏｓで与えられたＯｕｔｐｕｔＳｔｒｅａｍに出力し、以降、ＰＡＵＳＥメッセージを発行する制御部４３０１のメソッドが呼び出されるまで、ｒｐのメソッドｇｅｔＤａｔａ（）の呼び出しと受信したデータのｏｓへの出力を繰り返す。【０６１２】
ＰＡＵＳＥメッセージを発行する制御部４３０１のメソッドとは、ｐａｕｓｅＰｌａｙｂａｃｋ（）、ｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）であり、これが呼び出されると、繰り返しのループの中で参照するフラグをセットするなどして、データ受信とｏｓへの出力のループを停止させる。あるいは、本メソッドは別のスレッドもしくはプロセスを生成しそのスレッドもしくはプロセス上で動作するか、上記ループのみ別のスレッドもしくはプロセスで動作させ、例えば、該スレッドｎｏｔｉｆｙＴｅｒｍｉｎａｔｅ（）といったメソッドを用意して、このメソッドによって通知したり、プロセス間通信を用いて通知する構成であっても良い。ｒｉのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅが、２００でなければｆａｌｓｅを返して処理を終了する。【０６１３】
なお、メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の引数ｏｓに、ＩＯ４２０４ｆから受け取った第２メモリ４１０３のファイルへ出力するＯｕｔｐｕｔＳｔｒｅａｍを与えると、本メソッドによって、マルチメディアデータを第２メモリ４１０３上へ蓄積することが可能となる。【０６１４】
次に、メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）、メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）の処理について詳細に説明する。【０６１５】
メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）が呼び出されたときに、ネットワークライブラリ４２０４ｄは、まず、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、該コンテンツのデータ送信中断に対して出力再開を行うか否かの設定を検索する。【０６１６】
出力再開を行わないと設定されている場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）を呼び出す。この場合、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号とを、それぞれ、引数として与える。【０６１７】
また、出力再開を行うと設定されている場合は、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、出力再開時の送信先端末が設定されているか否かを検索する。【０６１８】
送信先端末が設定されている場合は、図４７（７）のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出す。このとき与える引数は、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号、および設定されている装置のＮｅｔＤｅｖｉｃｅオブジェクトである。【０６１９】
送信先端末が設定されていなければ、図４７（６）のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）が呼び出される。このとき与える引数は、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号である。【０６２０】
また、出力再開について未設定である場合は、メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって設定されたハンドラオブジェクトｈのメソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）を呼び出し、Ｊａｖａアプリケーションに送信停止処理を行うことを通知する。このとき与えられる引数はネットワークライブラリ４２０４ｄが管理しているＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｃｉｄである。【０６２１】
Ｊａｖａアプリケーションでは、メソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）を用いて、出力再開の設定要求を行うか否かを通知し、制御をネットワークライブラリ４２０４ｄに戻す。ネットワークライブラリ４２０４ｄでは、設定された内容に基づき、上記と同様に、情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出す。このとき、Ｊａｖａアプリケーションによって、未設定とされた場合は、出力再開を行わないとみなすこととする。【０６２２】
以上の処理の後、さらに、上記のメソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の受信動作を停止させる処理を行い、呼び出した情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）もしくは、ｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）の戻り値を返して、処理を終了する。【０６２３】
なお、出力再開時の端末が設定されていない場合は、ハンドラｈのメソッドｎｏｔｉｆｙＲｅｏｐｅｎＤｅｖｉｃｅ（）を呼び出して、Ｊａｖａアプリケーションに通知し、Ｊａｖａアプリケーションは、メソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）を用いて出力先端末を設定する構成であっても良い。この場合、Ｊａｖａアプリケーションによって出力先端末が未設定とされた場合は、出力先端末の指定を行わないとみなすこととする。【０６２４】
図４７（６）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、上記メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）において、出力再開を行うと設定されている場合の処理と同様である。【０６２５】
また、図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、上記メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）において、出力再開を行うと設定されていて、かつ、出力先端末が設定されている場合と、以下の点を除いての処理を行う。【０６２６】
相違点は、上記ｐａｕｓｅＰｌａｙｂａｃｋ（）では、図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出すときに、第５引数として設定された出力先端末のＮｅｔＤｅｖｉｃｅオブジェクトを用いたが、本メソッドでは、引数ｄｅｖで与えられたＮｅｔＤｅｖｉｃｅオブジェクトを用いることである。【０６２７】
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム１３０５を構成するデータ出力装置１３０１は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。【０６２８】
また、本実施の形態にかかる端末１３０２および端末１３０３は、あるマルチメディアデータが、データ出力装置１３０１において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置１３０１に、データ出力を再開させる機器制御部１５０１を含むものである。この構成により、例えば、端末１３０２にて、あるマルチメディアコンテンツの視聴を中断し、端末１３０３にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。【０６２９】
（実施の形態２の変形例）
本発明の実施の形態２について説明してきたが、本発明は、上記の実施の形態２に限定されるものではない。以下のような場合も、本発明に含まれる。【０６３０】
（１）  データ出力装置１３０１は、データ出力を中断するときに発行した、この中断を識別する識別子を、コンテンツ一覧に含める、ＳＥＴＵＰリクエストのレスポンスに拡張ヘッダとして含めるなどの方法によって端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。この識別子の通信は、ＰＬＡＹリクエストメッセージに拡張ヘッダを設けることであっても良いし、Ｘ−Ｒｅｓｔａｒｔヘッダの値として使っても良い。この場合、データ出力装置１３０１は、拡張ヘッダＸ−Ｒｅｓｔａｒｔがあれば、出力再開であると判定し、その中断の識別子とコンテンツの識別子とで再開位置情報を検索する。【０６３１】
また、端末１３０２および端末１３０３の機器制御部１５０１は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。【０６３２】
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図２６において、ＰＡＵＳＥ要素の内容を、この識別子に設定し、ＰＡＵＳＥ要素があり、かつその内容が記述されている場合は出力中断状態であり、ＰＡＵＳＥ要素がないか、ＰＡＵＳＥ要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。【０６３３】
また、データ出力装置１３０１が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。【０６３４】
また、データ出力装置１３０１は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。【０６３５】
また、上記識別子は、端末からデータ出力装置１３０１に提供されるものであっても良い。さらに、データ出力装置１３０１は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。【０６３６】
また、データ出力装置１３０１は、上記識別子を、中断した日時や、中断した端末と組にして管理する構成であっても良い。【０６３７】
（２）  端末１３０２および端末１３０３は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置１３０１は、再開位置情報とともに前記出力先を記憶部１４０７に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。【０６３８】
この場合のデータ出力中断要求の一例としては、上記実施の形態におけるＰＡＵＳＥリクエストメッセージに、拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌを追加し、その値として特定端末を記述するものである。出力先としては、端末のＩＰアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、ＵＰｎＰ ＤＡに定義された方法によって取得可能である。【０６３９】
また、データ出力装置１３０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。【０６４０】
また、データ出力装置１３０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。【０６４１】
（３）  上記実施の形態においては、データ出力装置１３０１は、デジタル放送を受信するＳＴＢとしたが、それに限るものではない。チューナを持たずに、ネットワークからコンテンツを受信して蓄積する構成であっても良い。この場合の構成は図４１と同様のものとなる。また、ネットワーク以外の部位によってデータを蓄積する構成であっても良い。【０６４２】
（４）  また、上記においては、データ出力中断要求を受けたときに、引き続くデータを第２メモリ１４０３に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から第２メモリ１４０３に書き込んでおく構成であっても良い。【０６４３】
この場合、出力再開位置情報は、上記実施の形態における第２メモリ１４０３に蓄積したコンテンツと同様の方法によって作成することが可能である。【０６４４】
また、データ出力装置１３０１は、ＴＳマルチプレクサ１４１０の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、第１メモリ１４０２もしくは図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。【０６４５】
（５）  データ出力装置１３０１は、さらに、データ出力装置１３０１上での再生を中断したマルチメディアデータに対して、再開位置情報を生成し記録する構成であっても良い。【０６４６】
この構成においても、上記実施の形態と同様の処理により、データ出力装置１３０１での再生を中断し、端末１３０２もしくは端末１３０３へ該データ出力再開を行うこと、および、端末１３０２もしくは端末１３０３への出力を中断し、データ出力装置１３０１上の再生として再開すること、などが可能となる。【０６４７】
（６）  上記実施の形態においては、データ出力装置１３０１が再開位置情報を記憶することとしたが、ネットワーク上の第３の機器が記憶しておく構成であっても良い。【０６４８】
図５２は、本発明の実施の形態２の第６の変形例におけるマルチメディア配信システムの構成を示す図である。【０６４９】
図５２に示すマルチメディア配信システム５２０６は、データ出力装置５２０１と、ネットワークを通じてデータ出力装置および端末を制御する制御装置５２０２と、第１の端末５２０３と、第２の端末５３０４と、ネットワーク５２０５とを備える。データ出力装置５２０１、制御装置５２０２、端末５２０３および端末５２０４は、ネットワーク５２０５に接続されており、ネットワーク５２０５を介して相互に通信可能である。【０６５０】
データ出力装置５２０１は、ネットワーク５２０５を通じて送信された、制御装置５２０２、端末５２０３および端末５２０４からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク５２０５を通じて制御装置５２０２へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク５２０５を通じて端末５２０３および端末５２０４へ送信するものである。【０６５１】
また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。【０６５２】
データ出力装置５２０１は、実行中のデータ出力に対して、制御装置５２０２もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはＵＲＩとを、制御装置５２０２へネットワーク５２０５を通じて送信するものである。なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはＵＲＩを送信しなくとも良い。【０６５３】
制御装置５２０２は、ユーザの要求によって動作するものである。制御装置５２０２は、ネットワーク５２０５を通じて、端末５２０３および端末５２０４を制御し、データ出力装置５２０１からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はＵＰｎＰ  ＡＶに定義された方法により可能であるため、詳細は省略する。【０６５４】
また、データ出力装置５２０１へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末５２０３、端末５２０４もしくは制御装置５２０２自身の表示部によって、ユーザに提示する。【０６５５】
また、ユーザから再生中断の要求を受けたとき、制御装置５２０２は、該再生を実行中の端末５２０３もしくは端末５２０４を制御して、データ出力装置５２０１へデータ送信中断要求を送信させるとともに、再生を中断させる。さらに、制御装置５２０２は、データ出力装置５２０１と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはＵＲＩといった、該データを特定できる情報を受信し、再開位置情報として制御装置５２０２内に記憶する。【０６５６】
再開位置情報は、上記実施の形態２のものと同様のものを用いることが可能である。【０６５７】
なお、該マルチメディアデータのＵＲＩは、制御装置５２０２が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。制御装置５２０２は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置５２０１から受信させて再生させる。【０６５８】
端末５２０３および端末５２０４は、制御装置５２０２からネットワーク５２０５を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。【０６５９】
ネットワーク５２０５は、上記実施の形態におけるネットワーク１３０４と同様のものである。【０６６０】
以上説明したとおり、本構成のマルチメディア配信システム５２０６では、制御装置５２０２が再開位置情報を管理することにより、例えば、端末５２０３で行っていたマルチメディアコンテンツの再生を中断し、端末５２０４で再開するといったことが可能となる。【０６６１】
なお、ここでは、制御装置５２０２は、データ出力装置５２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置５２０１が再開位置情報を作成し、制御装置５２０２はそれを受信して保存する構成であっても良い。【０６６２】
また、ここでは、制御装置５２０２は、データ出力装置５２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末５２０３もしくは端末５２０４から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。【０６６３】
また、ここでは、制御装置５２０２が、端末５２０３もしくは端末５２０４に要求を発行し、端末からデータ出力装置５２０１へデータ送信要求を送信する構成としたが、制御装置５２０２が、データ出力装置５２０１へ端末５２０３もしくは端末５２０４へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置５２０１からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によって行うことが可能である。【０６６４】
また、ここでは、ネットワーク上の独立の制御装置５２０２が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。【０６６５】
（７）  上記の実施の形態２においては、データ伝送のプロトコルとしてＲＴＰ／ＲＴＳＰを用いているが、ＨＴＴＰなど、他のプロトコルを用いて行っても良い。ＨＴＴＰを用いる場合のデータ出力中断要求は、ＨＴＴＰ−ＧＥＴのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、ＨＴＴＰを用いる場合のデータ出力再開要求は、ＨＴＴＰ−ＧＥＴに上記のＸ−Ｒｅｓｔａｒｔのような独自拡張ヘッダを用いて行っても良い。【０６６６】
（８）  上記の実施の形態２においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。また、マルチメディアデータがＭＰＥＧ２符号化データの場合、Ｉフレーム、ＭＰＥＧ２−ＴＳにおけるＰＡＴ、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。【０６６７】
（９）  上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。【０６６８】
（１０）  上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。【０６６９】
（１１）  本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。【０６７０】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。【０６７１】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。【０６７２】
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。【０６７３】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０６７４】
（１２）  上記実施の形態２及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０６７５】
本発明にかかるデータ出力装置、機器制御装置およびマルチメディア配信システムは、ネットワークを通じたマルチメディアコンテンツの再生などに関わるデータの通信において、中断したデータ通信を、受信する端末や装置を変更したとしても、的確に再開することが可能であるという優れた効果を有するため、ホームネットワークなどのネットワーク環境におけるマルチメディアコンテンツのサーバ装置、受信端末、機器制御装置、データ出力方法、機器制御方法などとして有用である。
【図１】
2007072680.tif 000003
【図２】
2007072680.tif 000004
【図３】
2007072680.tif 000005
【図４】
2007072680.tif 000006
【図５】
2007072680.tif 000007
【図６】
2007072680.tif 000008
【図７】
2007072680.tif 000009
【図８】
2007072680.tif 000010
【図９】
2007072680.tif 000011
【図１０】
2007072680.tif 000012
【図１１】
2007072680.tif 000013
【図１２】
2007072680.tif 000014
【図１３】
2007072680.tif 000015
【図１４】
2007072680.tif 000016
【図１５】
2007072680.tif 000017
【図１６】
2007072680.tif 000018
【図１７】
2007072680.tif 000019
【図１８】
2007072680.tif 000020
【図１９】
2007072680.tif 000021
【図２０】
2007072680.tif 000022
【図２１】
2007072680.tif 000023
【図２２】
2007072680.tif 000024
【図２３】
2007072680.tif 000025
【図２４】
2007072680.tif 000026
【図２５】
2007072680.tif 000027
【図２６】
2007072680.tif 000028
【図２７】
2007072680.tif 000029
【図２８】
2007072680.tif 000030
【図２９】
2007072680.tif 000031
【図３０】
2007072680.tif 000032
【図３１】
2007072680.tif 000033
【図３２】
2007072680.tif 000034
【図３３】
2007072680.tif 000035
【図３４】
2007072680.tif 000036
【図３５】
2007072680.tif 000037
【図３６】
2007072680.tif 000038
【図３７】
2007072680.tif 000039
【図３８】
2007072680.tif 000040
【図３９】
2007072680.tif 000041
【図４０】
2007072680.tif 000042
【図４１】
2007072680.tif 000043
【図４２】
2007072680.tif 000044
【図４３】
2007072680.tif 000045
【図４４】
2007072680.tif 000046
【図４５】
2007072680.tif 000047
【図４６】
2007072680.tif 000048
【図４７】
2007072680.tif 000049
【図４８】
2007072680.tif 000050
【図４９】
2007072680.tif 000051
【図５０】
2007072680.tif 000052
【図５１】
2007072680.tif 000053
【図５２】
2007072680.tif 000054
【手続補正書】
【提出日】平成20年6月6日(2008.6.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、
外部の装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された出力先に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える
ことを特徴とするデータ出力装置。
【請求項２】
前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、指定された前記複数の端末のいずれかを出力先として出力する
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項３】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項４】
前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項５】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断要求を受信したときの出力先とは異なる第２の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させたマルチメディアデータを、前記出力手段により、前記第2の出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項６】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項７】
さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断要求が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項８】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項７に記載のデータ出力装置。
【請求項９】
マルチメディアデータを蓄積している蓄積手段を備える装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
外部の制御装置からの信号を受信する受信ステップと、
前記蓄積手段からデータを読み出す読出ステップと、
前記マルチメディアデータを指定された出力先に出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。
【請求項１０】
さらに、Ｊａｖａ（登録商標）アプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションによって起動される
ことを特徴とする請求項１に記載のデータ出力装置。
【請求項１１】
前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断要求を受信したときの出力元とは異なる第２の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力元とは異なる出力先へ出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１２】
前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、ユーザにより指定された前記複数の端末のいずれかに、前記ネットワークを介して出力する
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１３】
前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１４】
前記制御手段は、さらに、
前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１５】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受けた場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる制御を行う
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１６】
さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断要求が受信された場合に、Ｊａｖａアプリケーションより、前記出力手段から前記再生手段への出力を中断したマルチメディアデータの再開位置情報を受け取って、前記記憶手段に記憶させ、
Ｊａｖａアプリケーションからマルチメディアデータの識別子を受け取り、前記記憶手段に記憶させたマルチメディアデータの再開位置情報を前記Ｊａｖａアプリケーションに引き渡す
ことを特徴とする請求項１０に記載のデータ出力装置。
【請求項１７】
さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、Ｊａｖａアプリケーションからの指示により、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
書き込ませたデータの再生位置情報を生成して前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項１６に記載のデータ出力装置。
【請求項１８】
マルチメディアデータを蓄積する蓄積手段と、
再開位置情報を記憶する記憶手段と、
Ｊａｖａアプリケーションを実行するＪａｖａ実行手段と、
Ｊａｖａアプリケーションによって起動される制御手段とを備えた、
ネットワークに接続された装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
前記ネットワークに接続された外部の制御装置からメッセージを受信する受信ステップと、
前記蓄積手段からマルチメディアデータを読み出す読出ステップと、
前記マルチメディアデータを、指定された出力先に、前記ネットワークを介して出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。
【請求項１９】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、
前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える
ことを特徴とする機器制御装置。
【請求項２０】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
Ｊａｖａアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる
ことを特徴とする請求項１９に記載の機器制御装置。
【請求項２１】
Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記中断要求と出力再開時の出力先とを受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記出力先を前記送信手段により送信させる
ことを特徴とする請求項１９に記載の機器制御装置。
【請求項２２】
映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、
前記データ出力装置から提供されるコンテンツの属性を受信する属性受信手段と、
前記データ出力装置に要求を送信する送信手段と、
ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える
ことを特徴とする機器制御装置。
【請求項２３】
前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、
前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記データ出力装置へ送信させる
ことを特徴とする請求項２２に記載の機器制御装置。
【請求項２４】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる
ことを特徴とする請求項２２に記載の機器制御装置。
【請求項２５】
前記制御手段は、出力中断の状態であると判定した場合に、さらに、Ｊａｖａアプリケーションに中断している出力を再開するか否かを問い合わせ、Ｊａｖａアプリケーションから再開すると指示を受ければ、前記送信手段に前記再開要求を前記データ出力装置に送信させる
ことを特徴とする請求項２４に記載の機器制御装置。
【請求項２６】
ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、
前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記データ出力装置と通信する通信手段と、
前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、
前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える
ことを特徴とする機器制御装置。
【請求項２７】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、
前記制御手段は、Ｊａｖａアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、
Ｊａｖａアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる
ことを特徴とする請求項２６に記載の機器制御装置。
【請求項２８】
映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置と、出力された前記マルチメディアデータを受信する複数の端末とがネットワークを介して接続されているマルチメディア配信システムであって、
前記データ出力装置は、
前記機器制御装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された前記端末に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段より、前記出力先へ出力させる制御手段とを備え、
前記端末は、
前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える
ことを特徴とするマルチメディア配信システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチメディアのデジタルコンテンツのネットワークなどへの出力およびその制御に関する。
【背景技術】
【０００２】
近年、ＢＳデジタル放送、ＣＳ１１０度デジタル放送および地上波デジタル放送などのデジタル放送が開始された。また、ＨＤＤレコーダ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）レコーダなどの普及が進んでいる。これらにより、家庭内で利用できる、デジタル化されたマルチメディアコンテンツが増加している。
【０００３】
また、一方で、ブロードバンド環境の整備により、家庭からのインターネットアクセスが普及している。それに伴い、家庭内の各部屋をＩＰネットワークで繋ぐ、いわゆるホームネットワークの普及も進んでいる。
【０００４】
このような状況により、家庭内のデジタル放送受信機で受信したデジタル放送、もしくは、レコーダに蓄積したデジタルコンテンツを、ホームネットワークを用いて、他の部屋で視聴することが行われるようになった。この際、ホームネットワーク上のサーバ（例えば、デジタル放送を受信するセットトップボックスやＨＤＤレコーダ）とクライアント（例えば、パーソナルコンピュータやデジタルプレーヤ）における、お互いの機器の認識や利用できるコンテンツの情報のやり取りには、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌａｇ  ａｎｄ  Ｐｌａｙ）に規定された方法が広く用いられている。また、マルチメディアデータの通信はＲＴＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｔｒａｓｎｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）などが、その制御にはＲＴＳＰ（Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ）などが用いられている。ＲＴＳＰはＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）によって規格化されている。（例えば、非特許文献１を参照）。
【０００５】
映画のような長時間のデジタルコンテンツを再生、視聴する場合、視聴を短時間中断したのち、続きを視聴するといったことが頻繁に行われる。ＲＴＳＰを用いたネットワーク経由での視聴では、ＲＴＳＰのＲＥＳＵＭＥ機能を用いるか、もしくは、クライアントが中断位置を記憶しておき、再開時にサーバに改めて中断位置以降のデータ送信を要求することで実現されている。ここで、ホームネットワークにより、複数の部屋での視聴が可能になることにより、例えばリビングで視聴していたコンテンツの続きを寝室で見る、といったニーズが出てきている。
【非特許文献１】ＲＦＣ２３２６  Ｒｅａｌ  Ｔｉｍｅ  Ｓｔｒｅａｍｉｎｇ  Ｐｒｏｔｏｃｏｌ  （ＲＴＳＰ）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＲＴＳＰでは、サーバ−クライアントの１対１通信を対象とし、別のクライアントへのデータ転送は考慮されておらず、上記の部屋を変えての視聴再開を実現することは出来ない。また、クライアントが変わるため、クライアントが中断位置を記憶するといった方法を用いることができない。
【０００７】
本発明は、上記の問題を解決するためになされたもので、同じクライアントだけでなく異なるクライアントからでも、コンテンツの中断位置からの視聴を可能とするデータ出力装置、機器制御装置およびマルチメディア配信システムの提供を目的とする。
【課題を解決するための手段】
【０００８】
従来の課題を解決するために、本発明のデータ出力装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、外部の装置から信号を受信する受信手段と、マルチメディアデータを蓄積している蓄積手段と、前記蓄積手段からデータを読み出す読出手段と、前記マルチメディアデータを指定された出力先に出力する出力手段と、前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える。
【０００９】
このように、本発明のデータ出力装置は、再開位置情報を記憶している。これにより、マルチメディアデータの出力先が変わっても、中断されたマルチメディアデータ出力を中断された続きから的確に再開することが可能になる。
【００１０】
好ましくは、前記データ出力装置は、ネットワークを介して複数の端末に接続されており、前記出力手段は、ユーザにより指定された前記複数の端末のいずれかを出力先として出力する。
【００１１】
このように、出力手段はネットワークを介して接続された複数の端末に出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
【００１２】
また好ましくは、前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる。
【００１３】
このように、出力手段は複数の端末のいずれかに出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
【００１４】
さらに好ましくは、前記制御手段は、前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる。
【００１５】
このように、記憶手段は再開位置情報と中断識別子とを記憶している。これにより、ユーザは中断識別子によって再開要求を指示することができ、利便性が向上する。
【００１６】
さらに好ましくは、前記制御手段は、さらに、前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる。
【００１７】
このように、記憶手段は再開位置情報と出力先とを記憶している。これにより、記憶している出力先から出力再開要求を受け付けた場合にのみ、出力を再開することが可能になる。これにより、例えば、再開位置情報と出力先との組み合わせを複数記憶しておくことにより、再開要求を受け付けた出力先に応じて、適切なコンテンツを適切な再開位置から出力することが可能になる。
【００１８】
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
【００１９】
このように、マルチメディアデータを受信しながら出力している場合に、中断要求を受け付けると、受信しているマルチメディアデータの続きを蓄積しておく。これにより、デジタル放送で放送中もしくはＶｏＤ（Ｖｉｄｅｏ  Ｏｎ  Ｄｅｍａｎｄ）で受信中など、出力中断時にすべて受信していないデータであっても、再開要求を受け付けたときに蓄積されているマルチメディアデータを出力することができる。そのため、再開要求を受け付けたときのマルチメディアデータの出力を的確に再開することが可能となる。
【００２０】
さらに好ましくは、さらに、マルチメディアデータを再生する再生手段を備え、前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、前記制御手段は、さらに、前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断要求が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる。
【００２１】
このように、データ出力装置自身が、マルチメディアデータを再生する再生手段を備え、再生手段を出力先として指定することができる。そのため、データ出力装置自身を出力先とすることが可能になる。
【００２２】
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
【００２３】
このように、データ出力装置は、マルチメディアデータを外部の装置から受信し、受信したマルチメディアデータを記憶手段に蓄積する。これにより、デジタル放送またはＶｏＤにより配信されるマルチメディアデータの出力を中断し、その再開要求を受け付けた場合であっても、そのマルチメディアデータの出力を的確に再開することが可能になる。
【００２４】
さらに好ましくは、さらに、Ｊａｖａ（登録商標）アプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、Ｊａｖａアプリケーションによって起動される。
【００２５】
このように、データ出力装置はＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションプログラム（以下、「Ｊａｖａアプリケーション」という。）を実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
【００２６】
また、第１９の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、前記データ出力装置へ要求を送信する送信手段と、前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える。
【００２７】
このように、機器制御装置は、中断要求とともに、特定した出力先をデータ出力装置に送信する。これにより、データ出力装置に、データ出力再開時の送信先を登録することが可能であり、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
【００２８】
好ましくは、さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記Ｊａｖａアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる。
【００２９】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
【００３０】
次に、第２２の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、前記データ出力装置から提供されるマルチメディアデータに含まれるコンテンツの属性を受信する属性受信手段と、前記データ出力装置に要求を送信する送信手段と、ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える。
【００３１】
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、マルチメディアデータに含まれるコンテンツの属性として、そのコンテンツの出力が中断されているか否かを判定し、出力が中断されていると判定した場合に、そのコンテンツが含まれるマルチメディアデータの出力の再開要求を送信する。これにより、出力が中断されている場合には、その続きから出力することができ、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
【００３２】
好ましくは、前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記マルチメディアサーバへ送信させる。
【００３３】
このように、コンテンツの属性には出力中断を表す識別子が含まれる。これにより、その識別子によってマルチメディアデータを特定し、その出力を再開させることが可能になる。
【００３４】
さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、前記Ｊａｖａアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記マルチメディアサーバへ送信させる。
【００３５】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
【００３６】
さらに、第２６の発明の機器制御装置は、ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記データ出力装置と通信する通信手段と、前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える。
【００３７】
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、再開位置情報を記憶している。これにより、ネットワークを介してデータ出力装置に再開要求とともに、出力を再開する位置を送信できる。そのため、データ装置によるマルチメディアデータの出力の再開を的確に制御することが可能になる。
【００３８】
好ましくは、さらに、Ｊａｖａアプリケーションを実行するＪａｖａ実行手段を備え、前記制御手段は、前記Ｊａｖａアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、Ｊａｖａアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる。
【００３９】
このように、機器制御装置は、さらにＪａｖａ実行手段を備える。これにより、Ｊａｖａにより記述されたアプリケーションを実行することができる。そのため、制御部は、Ｊａｖａアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
【００４０】
なお、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置として実現することができるだけでなく、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段をステップとする方法として実現したり、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記録媒体やインターネット等の通信ネットワークを介して流通させることができる。また、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置を備えるマルチメディア配信システムとして実現することもできる。
【発明の効果】
【００４１】
以上述べたように、本発明のデータ出力装置、機器制御装置、マルチメディア配信システムによれば、マルチメディアコンテンツの視聴・再生を中断して再開する場合に、ネットワーク上の別の端末で再開する場合においても、的確に再開することが可能となる。
【発明を実施するための最良の形態】
【００４２】
（実施の形態１）
以下本発明の実施の形態について、図面を参照しながら説明する。
【００４３】
図１は、本発明の実施の形態１におけるマルチメディア配信システムの構成図である。
【００４４】
図１に示すマルチメディア配信システム１０５は、データ出力装置１０１と、第１の端末１０２と、第２の端末１０２と、ネットワーク１０４とを備える。データ出力装置１０１、端末１０２および端末１０３は、ネットワーク１０４に接続されており、ネットワーク１０４を介して相互に通信可能である。
【００４５】
本実施の形態におけるデータ出力装置１０１は、ネットワーク１０４を通じて送信された、端末１０２および端末１０３からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク１０４を通じて端末１０２および端末１０３へ送信するものである。
【００４６】
データ出力装置１０１は、実行中のデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。そして、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
【００４７】
端末１０２および端末１０３は、ユーザの要求により、データ出力装置１０１へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク１０４を通じて送信する。そして、端末１０２および端末１０３は、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。
【００４８】
端末１０２および端末１０３は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
【００４９】
ネットワーク１０４は、家庭内に施設されたホームネットワークであり、イーサネット（登録商標）、無線ＬＡＮなどによって構成されたＩＰネットワークである。
【００５０】
以上のように、本発明のデータ出力装置１０１、端末１０２、端末１０３、およびマルチメディア配信システム１０５においては、例えば端末１０２にて受信中だったデータの送信を中断しても、別の端末１０３において、的確にデータ通信を再開することが可能となる。
【００５１】
以下、本発明のマルチメディア配信システム１０５を構成する、データ出力装置１０１、端末１０２および端末１０３について、更に詳細に説明する。ここでは、端末１０２へデータ通信中にデータ送信を中断し、端末１０３へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
【００５２】
まず、データ出力装置１０１について説明する。
【００５３】
図２は、本発明の実施の形態１におけるデータ出力装置１０１の構成の一例を示すブロック図である。
【００５４】
図２に示すデータ出力装置１０１は、制御部２０１と、外部の制御装置からの信号を受信する受信部２０２と、データを蓄積する蓄積部２０３と、制御部２０１からの指示に従い蓄積部２０３からデータ読み出す読出部２０４と、第１出力部２０５と、第２出力部２０６と、データ出力を中断したときに、該データおよびデータ出力中断位置から得られる再開位置情報を記憶する記憶部２０７と、蓄積部２０３にデータを書き込む書込部２０８と、ネットワーク１０４と接続されるネットワークインタフェース２０９とを備える。
【００５５】
制御部２０１をより詳細に説明する。制御部２０１は、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどによって構成されている。ＲＯＭ、ＲＡＭおよび図示していない情報記憶部にはマイクロプロセッサにて動作するＯＳ、Ｊａｖａ（登録商標）  ＶＭ（Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）プログラム、Ｊａｖａプログラムライブラリ、Ｊａｖａアプリケーションプログラムが保存されている。マイクロプロセッサは、起動時にＯＳを読み込んで実行する。引き続いて、Ｊａｖａアプリケーション起動時に、Ｊａｖａ  ＶＭを読み込んで実行し、必要に応じてＪａｖａプログラムライブラリを読み込みながら、Ｊａｖａアプリケーションを実行する。
【００５６】
制御部２０１は、受信部２０２からの信号を受け、Ｊａｖａアプリケーションにしたがって、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８との制御、およびこれらとの間のデータ送受信を行う。
【００５７】
受信部２０２は、ネットワークインタフェース２０９に接続されており、ネットワークインタフェース２０９に届いたデータ出力装置１０１宛の情報を受信して、制御部２０１に引き渡す。受信部２０２は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。
【００５８】
なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。また、ネットワークインタフェース２０９のほか、例えば赤外線通信を行う通信部など、別の通信部にも同時に接続されたものであっても良い。
【００５９】
蓄積部２０３は、ハードディスクドライブに代表される、大容量をもつデジタルデータの蓄積装置と、そのドライバソフトウェアから構成されるものである。
【００６０】
読出部２０４は、制御部２０１からの指示を受け、蓄積部２０３に蓄積されたデータファイルのうち、指定されたファイルの指定位置からのデータを順次読み出して、第１出力部２０５および第２出力部２０６へ転送する。
【００６１】
第１出力部２０５および第２出力部２０６は、ネットワークインタフェース２０９に接続されており、制御部２０１の指示を受けて動作し、制御部２０１もしくは読出部２０４から送られたデータを、制御部２０１が指示した宛先へのパケットに変換して、ネットワークインタフェース２０９を通じて出力するものである。第１出力部２０５および第２出力部２０６は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
【００６２】
記憶部２０７は、フラッシュメモリやＨＤＤなどの記憶装置もしくはその一部によって構成されるものであり、制御部２０１からの指示を受け、制御部２０１から受け取ったデータを記憶するものである。
【００６３】
書込部２０８は、制御部２０１からの指示を受け、蓄積部２０３にデータを書き込むものである。データの書き込みには、新規にデータを書き込む場合と、既存のデータに上書きする場合の２つがある。
【００６４】
ネットワークインタフェース２０９は、Ｅｔｈｅｒケーブルや無線ＬＡＮなどネットワークの物理メディアに応じたインタフェースを提供するハードウェアとそのドライバソフトウェアから構成されるものである。
【００６５】
以下、図を参照しながら、データ出力装置１０１の動作を、更に詳細に説明する。ここでは、説明を簡易にするために、第１出力部２０５は端末１０２へ出力するものであり、第２出力部２０６は端末１０３へ出力するものであるとするが、この構成に限らないことは言うまでもない。
【００６６】
図４は、本発明の実施の形態１における蓄積部２０３に蓄積されたデータの構成の一例を示す図である。
【００６７】
図４において、蓄積部２０３は、大きく分けて、マルチメディアデータ、マルチメディアデータの属性情報、マルチメディアデータのＵＲＩテーブルという３種類のデータ群を蓄積しており、マルチメディアデータ４０１と、マルチメディアデータ４０２と、属性情報４１１と、属性情報４１２と、マルチメディアデータのＵＲＩテーブル４２１とを含む例を示す。本実施の形態では、属性情報４１１はマルチメディアデータ４０１の属性情報を、属性情報４１２はマルチメディアデータ４０２の属性情報を、それぞれ表すこととする。蓄積部２０３が蓄積しているマルチメディアデータや属性情報は、それぞれ２つに限られない。
【００６８】
マルチメディアデータ４０１、４０２は、デジタル化されたマルチメディアコンテンツデータであり、代表的には、ＭＰＥＧ２によって符号化されたデータである。各マルチメディアデータ４０１、４０２は、それぞれ、蓄積部２０３上において、一つのファイルとして蓄積され、ファイル名が付けられている。
【００６９】
属性情報４１１、４１２は、マルチメディアデータ４０１、４０２に、例えば、コンテンツのタイトル、ジャンル、放送日時、録画日時、出力した回数、最後に出力した日時といった、付加的な情報を与えるものである。図５に、属性情報の一例を示す。
【００７０】
図５は、本発明の実施の形態１におけるマルチメディアデータの属性情報４１１の一例を示す図である。図５に示す属性情報は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）によって定義されたテキスト情報である。
【００７１】
ＵＲＩテーブル４２１は、各マルチメディアデータとそのＵＲＩの対応を記憶するものであり、図６にその一例を示す。
【００７２】
図６は、本発明の実施の形態１に係るＵＲＩテーブル４２１の一例を示す図である。図６において、ファイル名０００１．ｍ２ｔｓというマルチメディアデータのＵＲＩは、ｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓであることを表している。
【００７３】
なお、ＵＲＩテーブルは、必ずしも必要ではなく、データ出力装置１０１のＩＰアドレスもしくはホスト名と、マルチメディアデータのファイル名から、制御部２０１が都度作成する構成であっても良いし、ＵＲＩを付加情報として属性情報の中に記述する構成であっても良い。また、ＵＲＩテーブルはファイル名とＵＲＩとの対応に限るものではなく、タイトルや各マルチメディアデータに付加された識別子や番号などとＵＲＩとの対応であっても良い。
【００７４】
まず、端末１０２へのデータ送信を中断するまでの過程におけるデータ出力装置１０１の動作を説明する。
【００７５】
制御部２０１は、受信部２０２から受け取った端末１０２の要求がコンテンツ一覧取得であった場合、読取部２０４を制御して情報を読み出すことにより、蓄積部２０３に蓄積されたマルチメディアデータの一覧表を作成して、第１出力部２０５から端末１０２へ送信する。
【００７６】
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのＵＲＩとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
【００７７】
コンテンツ一覧の取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧のデータフォーマットは、ＵＰｎＰ  ＡＶに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。コンテンツ一覧のフォーマットは、ＸＭＬによって定義されているため、ＸＭＬ  Ｎａｍｅｓｐａｃｅを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースＮａを使った要素ＰＡＵＳＥを各コンテンツの情報に追加し、このＰＡＵＳＥ要素の内容が「Ｙｅｓ」の場合は、出力中断中であることを表すことと出来る。
【００７８】
また、制御部２０１は、受信部２０２から受け取った端末１０２の要求がデータ送信要求であった場合、読出部２０４に指示して要求されたマルチメディアデータを蓄積部２０３から読み出させ、第１出力部２０５に指示して読み出したデータを送信する。例えば、送信要求としてＲＴＳＰを使用して、ＵＲＩがｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓのデータを、先頭から送信する要求の場合、以下のメッセージが端末１０２からデータ出力装置１０１へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
【００７９】
制御部２０１は、上記メッセージを受け取ると、読出部２０４に読み出させたＵＲＩテーブル４２１を参照して、ＵＲＩがｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓであるマルチメディアデータを検索する。本実施の形態の場合、マルチメディアデータ４０１がそれに当たる。対応するマルチメディアデータが存在すれば、制御部２０１は、ＲＴＳＰに規定された以下のような返答メッセージを作成して、第１出力部２０５に指示して端末１０２へ送信させる。
RTSP/1.0 200 OK
CSeq: 2
Session: 12345
Range: smtpe=0:00:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts; seq=123123532; rtptime=53265
【００８０】
その後、読出部２０４に指示してマルチメディアデータ４０１の先頭から順次データを読み出させ、第１出力部２０５に指示して読み出したデータを端末１０２へ送信する。データ送信はＲＴＰに規定された方法で行われるため、詳細は省略する。
【００８１】
制御部２０１は、受信部２０２から受け取った端末１０２の要求がデータ送信中断であった場合、第１出力部２０５に指示してデータ送信を停止させるとともに、送信済データ数を第１出力部２０５より受け取る。また、読出部２０４に指示して、蓄積部２０３からのデータの読み出しを停止させる。ＲＴＳＰを用いる場合、データ送信中断はＰＡＵＳＥコマンドを用いて行うことが出来る。これは、以下のメッセージが端末１０２から送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
【００８２】
制御部２０１は、上記のＰＡＵＳＥコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、第１出力部２０５に送信させる。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
【００８３】
また、読出部２０４に指示して属性情報４１１を読み出し、出力中断中の属性を追加する。本実施の形態においては、図５に示した属性情報のうち、「ＰＡＵＳＥ」という要素で表すこととする。すなわち、ＰＡＵＳＥ要素があって、その内容が「Ｙｅｓ」の場合に限り、データ送信を中断している状態を表すこととする。
【００８４】
制御部２０１は、属性情報４１１を更新した後、書込部２０８に指示して、蓄積部２０３上の属性情報４１１に上書きさせる。
【００８５】
制御部２０１は、さらに、第１出力部２０５より受け取った送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から５０１１９バイトのデータを送信した場合は、先頭から５０１２０バイト目となる。
【００８６】
制御部２０１は、この送信再開位置とマルチメディアデータ４０１を識別する情報、例えばファイル名を組として、再開位置情報を作成して、記憶部２０７に記憶させる。図７にこの再開位置情報の一例を示す。
【００８７】
図７は、本発明の実施の形態１における再開位置情報の一例を示す図である。図７は、上記のデータ送信中断における再開位置情報７０１を表す。なお、本実施の形態においては、第１出力部２０５から受け取った送信済データ数を基に送信再開位置を求めたが、読出部２０４より受け取った、例えば、読出済データ数を基に求めるものであっても良い。
【００８８】
ＲＴＳＰでは、このあとに、セッションを切断するＴＥＡＲＤＯＷＮというコマンドが送受信されるが、本実施の形態では、ＴＥＡＲＤＯＷＮを行っても、上記の再開位置情報７０１および属性情報４１１は更新しない。
【００８９】
なお、より明確に後に再開する中断であることを表すために、ＰＡＵＳＥもしくはＴＥＡＲＤＯＷＮを拡張して、再開位置情報７０１の作成・保持および属性情報４１１の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるＸ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓを用い、その値が「Ｙｅｓ」の場合に限り、再開位置情報７０１を作成・保持および属性情報４１１を更新・保持することとすれば、上記のＰＡＵＳＥメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
【００９０】
この場合、制御部２０１は、受信したＰＡＵＳＥメッセージにＸ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓヘッダがあり、かつその値が「Ｙｅｓ」であるので、再開位置情報７０１を作成して保持し、また、属性情報４１１を更新して保持する。Ｘ―Ｋｅｅｐ―Ｐａｕｓｅ―Ｓｔａｔｕｓヘッダがないか、あっても値が「Ｙｅｓ」以外の場合は、制御部２０１は、再開位置情報７０１を作成せず、また、属性情報４１１を更新しない。
【００９１】
次に、端末１０３との通信において、上記の中断したデータ送信を再開する過程のデータ出力装置１０１の動作を説明する。
【００９２】
まず、コンテンツ一覧取得に関しては、上記と同様のため、説明を省略する。
【００９３】
制御部２０１は、受信部２０２から受け取った端末１０３の要求が中断したデータ送信の再開であった場合の処理を説明する。本実施の形態においては、この要求は、ＲＴＳＰのＰＬＡＹに、独自拡張ヘッダであるＸ−Ｒｅｓｔａｒｔを用い、その値を「Ｙｅｓ」とすることで行うものとする。この場合、端末１０３から以下のメッセージが送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
【００９４】
制御部２０１は、まず、ＵＲＩテーブル４２１を参照しながら、ＰＬＡＹメッセージで送られてきたＵＲＩのマルチメディアデータ（この場合はマルチメディアデータ４０１）の再開位置情報を、記憶部２０７に記憶された再開位置情報から検索する。この場合は、再開位置情報７０１が該当する。
【００９５】
制御部２０１は、再開位置情報７０１から、再開位置が先頭から５０１２０バイト目であることを読み取り、読出部２０４にマルチメディアデータ４０１の先頭から５０１２０バイト目から読み出すように指示を送る。読出部２０４は、指示を受けてデータの読み出しを開始する。
【００９６】
制御部２０１は、続いて、以下の返答メッセージを作成し、第２出力部２０６に指示して、端末１０３へ送信させる。なお、５０１２０バイト目は、マルチメディアデータ４０１の先頭から８分目としている。
RTSP/1.0 200 OK
CSeq: 2
Session: 54321
Range: smtpe=0:08:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts; seq= 123073412; rtptime=52865
【００９７】
続いて、制御部２０１は、ＰＬＡＹメッセージが端末１０３から送られてきたことから、データの送信先を端末１０３と判定し、第２出力部２０６に指示して、読出部２０４が読み出したデータを、端末１０３へ送信させる。また、制御部２０１は、再開位置情報７０１を記憶部から削除するとともに、属性情報４１１から、「出力中断中」の属性を削除して、属性情報４１１を更新する。
【００９８】
なお、本実施の形態の場合、制御部２０１は、ＲＴＳＰメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末１０３から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
【００９９】
次に、端末１０２および端末１０３について説明する。
【０１００】
図３は、本発明の実施の形態１における端末１０２および端末１０３の構成の一例を示すブロック図である。
【０１０１】
図３に示す端末１０２および端末１０３は、機器制御部３０１と、制御部３０２と、データ出力装置１０１から送信されたメッセージを受信する受信部３０３と、データ出力装置１０１に要求メッセージを送信する送信部３０４と、受信部３０３が受信したメッセージのうち、マルチメディアデータの属性を解釈して出力中断中であるかを判定する判定部３０５と、データ出力装置１０１から送信されたマルチメディアデータを受信するデータ受信部３０６と、受信したマルチメディアデータを復号するデータ復号部３０７と、ネットワーク１０４と接続されるネットワークインタフェース３０８と、復号したマルチメディアデータを表示する表示部３０９とを備える。
【０１０２】
機器制御部３０１は、より詳細には、制御部３０２と、受信部３０３と、送信部３０４と、判定部３０５とを有する。
【０１０３】
制御部３０２をより詳細に説明する。制御部３０２は、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどによって構成されている。ＲＯＭ、ＲＡＭおよび図示していない情報記憶部にはマイクロプロセッサにて動作するＯＳ、Ｊａｖａ  ＶＭプログラム、Ｊａｖａプログラムライブラリ、Ｊａｖａアプリケーションプログラムが保存されている。
【０１０４】
マイクロプロセッサは、起動時にＯＳを読み込んで実行する。引き続いて、Ｊａｖａアプリケーション起動時に、Ｊａｖａ  ＶＭを読み込んで実行し、必要に応じてＪａｖａプログラムライブラリを読み込みながら、Ｊａｖａアプリケーションを実行する。制御部３０２は、図示していないユーザインタフェース部からユーザの要求を受け、Ｊａｖａアプリケーションにしたがって、受信部３０３と、送信部３０４と、判定部３０５と、データ受信部３０６と、データ復号部３０７と、表示部３０９との制御、およびこれらとの間のデータ送受信を行う。
【０１０５】
受信部３０３は、ネットワークインタフェース３０８に接続されており、ネットワークインタフェース３０８に届いた該端末宛の情報を受信して、制御部３０２に引き渡す。受信部３０３は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
【０１０６】
送信部３０４は、ネットワークインタフェース３０８に接続されており、制御部３０２の指示を受けて動作し、制御部３０２から送られたデータを、制御部３０２が指示した宛先へのパケットに変化して、ネットワークインタフェース３０８を通じて送信するものである。送信部３０４は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
【０１０７】
判定部３０５は、制御部３０２の指示により、受信部３０３が受信したメッセージを解釈して、その中に含まれるマルチメディアデータの属性を検索して該マルチメディアデータが「出力中断中」であるか否かを判定し、その結果を制御部３０２に返すものである。判定部３０５は、代表的には、ＪａｖａライブラリもしくはＪａｖａアプリケーションプログラムに含まれるサブルーチンである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
【０１０８】
データ受信部３０６は、ネットワークインタフェース３０８と接続されており、制御部３０２の指示にしたがって、データ出力装置１０１から送信されたマルチメディアデータを受信して、データ復号部３０７に引き渡すものである。データ受信部３０６は、代表的には、ＯＳやＪａｖａライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
【０１０９】
データ復号部３０７は、制御部３０２の指示にしたがって、送られてきたマルチメディアデータを復号するものである。上記の通り、マルチメディアデータは、ＭＰＥＧ２に代表される符号化方式によって符号化されている。データ復号部３０７は、このデータを復号し、表示部３０９へ復号したデータを送信する。データ復号部３０７は、代表的にはハードウェアデコーダとそのドライバソフトウェアで構成されるものである。
【０１１０】
ネットワークインタフェース３０８は、上記のネットワークインタフェース２０９と同様の構成である。
【０１１１】
表示部３０９は、モニタおよびスピーカから構成されるもの、もしくは、外部のモニタ、スピーカへ映像・音声信号を送出するものである。
【０１１２】
以下、端末１０２および端末１０３の動作について、上記の通り、端末１０２へデータ通信中にデータ送信を中断し、端末１０３へ中断したデータ送信を再開する場合を例に説明する。なお、端末１０２および端末１０３は、少なくともデータ出力装置１０１がネットワーク１０４に接続されており、マルチメディアコンテンツデータを提供するサーバであることを、既に認識しているものとする。このような、ネットワーク上の機器の発見、および、その能力の検知は、ＵＰｎＰ  ＤＡ（Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）に定義された方法にて行えるため、詳細な説明は省略する。
【０１１３】
まず、端末１０２にて、映像再生の中断までの過程における動作について説明する。
【０１１４】
制御部３０２は、ユーザからの要求により、コンテンツ一覧送信要求メッセージを作成して、送信部３０４に指示してデータ出力装置１０１へ送信する。さらに、受信部３０３によって、データ出力装置１０１から送信されたコンテンツ一覧メッセージを受信し、コンテンツのタイトルなどの情報をユーザに提示する。ユーザへの提示は、表示部３０９を用いて行っても良く、また、図示していない他の提示部によって行っても良い。
【０１１５】
次に、制御部３０２は、ユーザから提示したコンテンツのひとつを選択した再生要求を受けると、データ送信要求メッセージを作成して、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信要求メッセージの一例は、上記のＲＴＳＰにおけるＰＬＡＹメッセージである。引き続いて、受信部３０３により、データ出力装置１０１から返答メッセージを受信する。返答メッセージの一例は、上記のＰＬＡＹメッセージに対する返答である。
【０１１６】
返答メッセージが、送信開始であれば、制御部３０２は、データ受信部３０６に指示して、データ出力装置１０１から送信されたマルチメディアデータを受信させ、また、データ復号部３０７に指示して、受信したマルチメディアデータを復号させ、さらに、表示部３０９に指示して、復号したマルチメディアデータを表示させる。
【０１１７】
また、制御部３０２は、返答メッセージが、送信不可であれば、それをユーザに提示する。
【０１１８】
次に、制御部３０２は、ユーザから再生中断の要求を受けると、データ送信中断要求メッセージを作成し、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信中断要求メッセージの一例は、上記のＲＴＳＰにおけるＰＡＵＳＥメッセージである。
【０１１９】
続いて、制御部３０２は、受信部３０３により、データ出力装置１０１からの返答メッセージを受信するとともに、データ受信部３０６にはマルチメディアデータの受信動作を、データ復号部３０７にはデータの復号を、表示部３０９にはデータの表示を、それぞれ指示して停止させる。
【０１２０】
次に、端末１０３において、端末１０２で中断させた再生を再開する動作について説明する。
【０１２１】
まず、制御部３０２は、ユーザの要求により、上記と同様の方法で、コンテンツ一覧メッセージをデータ出力装置１０１より取得する。
【０１２２】
次に、制御部３０２は、上記と同様に、受信したコンテンツ一覧メッセージから、コンテンツのタイトルなどの情報をユーザに提示する。この際、制御部３０２は、判定部３０５に指示して、データ出力中断中のコンテンツを判定させ、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
【０１２３】
続いて、制御部３０２は、ユーザから出力中断中のコンテンツの再生再開要求を受けると、該コンテンツのデータ送信再開要求メッセージを作成し、送信部３０４に指示してデータ出力装置１０１へ送信する。データ送信再開要求メッセージの一例は、上記のＰＬＡＹメッセージに拡張ヘッダＸ−Ｒｅｓｔａｒｔを加えたものである。
【０１２４】
続いて、受信部３０３により、データ出力装置１０１から返答メッセージを受信する。返答メッセージの一例は、上記のＸ−Ｒｅｓｔａｒｔヘッダ付ＰＬＡＹメッセージに対する返答である。
【０１２５】
返答メッセージが、送信開始であれば、制御部３０２は、データ受信部３０６に指示して、データ出力装置１０１から送信されたマルチメディアデータを受信させ、また、データ復号部３０７に指示して、受信したマルチメディアデータを復号させ、さらに、表示部３０９に指示して、復号したマルチメディアデータを表示させる。
【０１２６】
また、制御部３０２は、返答メッセージが、送信不可であれば、それをユーザに提示する。
【０１２７】
なお、本実施の形態においては、ＲＴＳＰのコマンドメッセージを送信した端末が、データ出力装置１０１におけるデータの出力先としているため、端末１０３から送信先端末である出力先の明示的な指定を省略しているが、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
【０１２８】
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム１０５を構成するデータ出力装置１０１は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
【０１２９】
また、本実施の形態にかかる端末１０２および端末１０３は、あるマルチメディアデータが、データ出力装置１０１において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置１０１に、データ出力を再開させる機器制御部３０１を含むものである。この構成により、例えば、端末１０２にて、あるマルチメディアコンテンツの視聴を中断し、端末１０３にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
【０１３０】
（実施の形態１の変形例）
本発明の実施の形態１について説明してきたが、本発明は、上記の実施の形態１に限定されるものではない。以下のような場合も、本発明に含まれる。
【０１３１】
（１）  データ出力装置１０１は、データ出力を中断するときに、この中断を識別する識別子を発行して、再開位置情報とともに記憶部２０７に記憶させ、コンテンツ一覧にこの識別子を含めて端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。図８に、この場合に記憶部２０７に記憶されるデータの一例を示す。
【０１３２】
図８は、本発明の実施の形態１の第１の変形例における再開位置情報の一例を示す図である。図８に示すように、記憶部２０７には、再開位置情報８０１と、再開位置情報８０２と、再開位置情報８０３とが記憶されている例を示す。例えば、再開位置情報８０１は、識別子ＩＤ１の中断に関するものであり、ファイル名０００１．ｍ２ｔｓのマルチメディアデータを５０１２０バイト目から再開することを表している。
【０１３３】
また、端末１０２および端末１０３の機器制御部３０１は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
【０１３４】
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図５において、ＰＡＵＳＥ要素の内容を、この識別子に設定し、ＰＡＵＳＥ要素があり、かつその内容が記述されている場合は出力中断状態であり、ＰＡＵＳＥ要素がないか、ＰＡＵＳＥ要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
【０１３５】
また、データ出力装置１０１が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
【０１３６】
また、データ出力装置１０１は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
【０１３７】
また、上記識別子は、端末からデータ出力装置１０１に提供されるものであっても良い。さらに、データ出力装置１０１は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
【０１３８】
（２）  端末１０２および端末１０３は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置１０１は、再開位置情報とともに前記出力先を記憶部２０７に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。この場合のデータ出力中断要求の一例としては、上記実施の形態におけるＰＡＵＳＥコマンドメッセージに、拡張ヘッダＸ―Ｒｅｏｐｅｎ―Ｔｅｒｍｉｎａｌを追加し、その値として特定端末を記述するものである。出力先としては、端末のＩＰアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、ＵＰｎＰ  ＤＡに定義された方法によって取得可能である。図９に、この場合に記憶部２０７に記憶されるデータの一例を示す。
【０１３９】
図９は、本発明の実施の形態１の第２の変形例における再開位置情報一例を示す図である。図９に示すように、記憶部２０７には、再開位置情報９０１と、再開位置情報９０２とが記憶されている。例えば、再開位置情報９０１は、ファイル名０００１．ｍ２ｔｓのマルチメディアデータの出力を５０１２０バイト目から再開し、その出力先は端末Ｔ１であることを表している。
【０１４０】
また、データ出力装置１０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
【０１４１】
また、データ出力装置１０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
【０１４２】
さらに、データ出力装置１０１は、データ出力中断要求とともにデータ出力再開時の出力先を受信する場合、データ出力再開時の出力先は、特定の出力先が選択されるだけでなく、候補となる出力先の一部または全部が選択できてもよい。
【０１４３】
この場合、例えば、データ出力装置１０１がデータ出力中断要求とともに、出力再開時の出力先として特定の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する。また、データ出力装置１０１がデータ出力中断要求とともに、出力再開時の出力先として候補となる出力先の一部または全部を受信した場合、出力再開時の出力先として受信した出力先のいずれかである端末からの要求によってのみ、データ出力を再開する。
【０１４４】
（３）  データ出力装置１０１は、更に外部からのデータを受信するデータ受信部を備え、蓄積部２０３に蓄積されたデータ、および、受信部が受信したデータを送信する構成であっても良い。図１０に、この場合の代表的な構成図を示す。
【０１４５】
図１０は、本発明の実施の形態１の第３の変形例に係るデータ出力装置の構成の一例を示すブロック図である。
【０１４６】
図１０に示すデータ出力装置は、データ受信部１００１と、データ受信インタフェース１００２と、制御部２０１と、受信部２０２と、蓄積部２０３と、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８と、ネットワークインタフェース２０９とを備える。
【０１４７】
データ受信部１００１は、データ受信インタフェース１００２が受信した信号からマルチメディアデータを抽出するもので、代表的には、デジタル放送のチューナなどである。この場合、データ受信インタフェース１００２はアンテナとなる。
【０１４８】
また、図１０において、制御部２０１と、受信部２０２と、蓄積部２０３と、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８と、ネットワークインタフェース２０９は、図２に示したものと同様のものであるが、制御部２０１は、さらに、データ受信部１００１を制御するものであり、第１出力部２０５および第２出力部２０６は、データ受信部１００１の出力であるマルチメディアデータを出力することも可能なものであり、また、書込部２０８は、データ受信部１００１が受信したマルチメディアデータを蓄積部２０３に書き込むことが可能なものである。
【０１４９】
データ受信部１００１からのマルチメディアデータを出力中に、データ出力中断要求を受けた場合、制御部２０１は、出力している第１出力部２０５もしくは第２出力部２０６に出力を停止させるとともに、書込部２０８に指示して、引き続くデータ受信部１００１からの出力であるマルチメディアデータを蓄積部２０３に順次書き込ませる。
【０１５０】
さらに、該マルチメディアデータの属性情報を作成して書き込ませるとともに、該マルチメディアデータのＵＲＩを作成して、ＵＲＩテーブル４２１を更新する。また、該マルチメディアデータを書き込むファイル名と、再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶部２０７に記憶させる。
【０１５１】
以上により、該マルチメディアデータの出力再開要求を受けた場合、制御部２０１は、上記実施の形態にて説明したのと同様の方法によって、データ出力再開を行うことが可能である。
【０１５２】
なお、上記においては、データ出力中断要求を受けたときに、引き続くデータを蓄積部２０３に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から蓄積部２０３に書き込んでおく構成であっても良い。この場合、出力再開位置情報は、上記実施の形態と同様の方法によって作成することが可能である。
【０１５３】
また、データ出力装置１０１は、データ受信部１００１の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
【０１５４】
（４）  データ出力装置１０１は、さらに、マルチメディアデータを復号するデータ復号部と、復号されたマルチメディアデータを表示する表示部とを備えた構成であっても良い。図１１に、この場合の代表的な構成図を示す。
【０１５５】
図１１は、本発明の実施の形態１の第４の変形例におけるデータ出力装置の構成を示すブロック図である。図１１に示すデータ出力装置は、制御部２０１と、受信部２０２と、蓄積部２０３と、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８と、ネットワークインタフェース２０９と、データ復号部１１０１と、表示部１１０２とを備える。
【０１５６】
制御部２０１と、受信部２０２と、蓄積部２０３と、読出部２０４と、第１出力部２０５と、第２出力部２０６と、記憶部２０７と、書込部２０８と、ネットワークインタフェース２０９とは、図２に示したものと同様のものであるが、制御部２０１は、さらに、データ復号部１１０１および表示部１１０２の制御も行うことのみが異なる。データ復号部１１０１は、端末１０２および端末１０３におけるデータ復号部３０７と同様のものであり、表示部１１０２は、表示部３０９と同様のものである。
【０１５７】
また、図１１においては、第１出力部２０５がデータ復号部１１０１と接続されている。この構成においても、上記実施の形態と同様の処理により、データ復号部１１０１へのデータ出力である第１出力部２０５からの出力を中断し、別の第２出力部２０６からの出力として該データ出力を行うこと、および、第２出力部２０６へのデータ出力を中断し、データ復号部１１０１への出力である第１出力部２０５からの出力として再開すること、などが可能となる。
【０１５８】
なお、上記実施の形態にも記載したが、受信部２０２は、赤外線通信などによる受信を併せ持ってもよく、制御部２０１は、ネットワーク１０４以外から送られる要求にしたがっても、各部を制御して動作させるものであっても良い。この場合、例えば、コンテンツ一覧や応答メッセージなどは、第１出力部２０５から出力するのではなく、適切なメッセージに変換されて、例えば表示部１１０２に表示するなどして、ユーザに提示される。
【０１５９】
（５）  上記実施の形態においては、データ出力装置１０１が再開位置情報を記憶することとしたが、ネットワーク上の第３の機器が記憶しておく構成であっても良い。図１２に、この場合のマルチメディア配信システムの構成図を示す。
【０１６０】
図１２は、本発明の実施の形態１の第５の変形例におけるマルチメディア配信システムの構成の一例を示す図である。
【０１６１】
図１２に示すマルチメディア配信システム１２０６は、データ出力装置１２０１と、ネットワークを通じてデータ出力装置および端末を制御する制御装置１２０２と、第１の端末１２０３と、第２の端末１２０４と、ネットワーク１２０５とを備える。データ出力装置１２０１、制御装置１２０２、端末１２０３および端末１２０４は、ネットワーク１２０５に接続されており、ネットワーク１２０５を介して相互に通信可能である。
【０１６２】
データ出力装置１２０１は、ネットワーク１２０５を通じて送信された、制御装置１２０２、端末１２０３および端末１２０４からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク１２０５を通じて制御装置１２０２へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク１２０５を通じて端末１２０３および端末１２０４へ送信するものである。また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
【０１６３】
また、データ出力装置１２０１は、実行中のデータ出力に対して、制御装置１２０２もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはＵＲＩとを、制御装置１２０２へネットワーク１２０５を通じて送信するものである。
【０１６４】
なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはＵＲＩを送信しなくとも良い。
【０１６５】
制御装置１２０２は、ユーザの要求によって動作するものである。
【０１６６】
制御装置１２０２は、ネットワーク１２０５を通じて、端末１２０３および端末１２０４を制御し、データ出力装置１２０１からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はＵＰｎＰ  ＡＶに定義された方法により可能であるため、詳細は省略する。
【０１６７】
また、制御装置１２０２は、データ出力装置１２０１へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末１２０３、端末１２０４もしくは制御装置１２０２自身の表示部によって、ユーザに提示する。また、ユーザから再生中断の要求を受けたとき、制御装置１２０２は、該再生を実行中の端末１２０３もしくは端末１２０４を制御して、データ出力装置１２０１へデータ送信中断要求を送信させるとともに、再生を中断させる。
【０１６８】
さらに、制御装置１２０２は、データ出力装置１２０１と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはＵＲＩといった、該データを特定できる情報を受信し、再開位置情報として制御装置１２０２内に記憶する。
【０１６９】
再開位置情報は、上記の実施の形態１および変形例に係る再開位置情報のいずれかと同様のものを用いることが可能である。
【０１７０】
なお、該マルチメディアデータのＵＲＩは、制御装置１２０２が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。
【０１７１】
制御装置１２０２は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置１２０１から受信させて再生させる。
【０１７２】
端末１２０３および端末１２０４は、制御装置１２０２からネットワーク１２０５を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
【０１７３】
ネットワーク１２０５は、上記の実施の形態１におけるネットワーク１０４と同様のものである。
【０１７４】
以上説明したとおり、本構成のマルチメディア配信システム１２０６では、制御装置１２０２が再開位置情報を管理することにより、例えば、端末１２０３で行っていたマルチメディアコンテンツの再生を中断し、端末１２０４で再開するといったことが可能となる。
【０１７５】
なお、ここでは、制御装置１２０２は、データ出力装置１２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置１２０１が再開位置情報を作成し、制御装置１２０２はそれを受信して保存する構成であっても良い。
【０１７６】
また、ここでは、制御装置１２０２は、データ出力装置１２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末１２０３もしくは端末１２０４から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
【０１７７】
また、ここでは、制御装置１２０２が、端末１２０３もしくは端末１２０４に要求を発行し、端末からデータ出力装置１２０１へデータ送信要求を送信する構成としたが、制御装置１２０２が、データ出力装置１２０１へ端末１２０３もしくは端末１２０４へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置１２０１からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によって行うことが可能である。
【０１７８】
また、ここでは、ネットワーク上の独立の制御装置１２０２が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
【０１７９】
（６）  上記の実施の形態１においては、データ伝送のプロトコルとしてＲＴＰ／ＲＴＳＰを用いているが、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）など、他のプロトコルを用いて行っても良い。ＨＴＴＰを用いる場合のデータ出力中断要求は、ＨＴＴＰ−ＧＥＴのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、ＨＴＴＰを用いる場合のデータ出力再開要求は、ＨＴＴＰ−ＧＥＴに上記のＸ−Ｒｅｓｔａｒｔのような独自拡張ヘッダを用いて行っても良い。
【０１８０】
（７）  上記の実施の形態１においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。
【０１８１】
また、送信再開位置は、コンテンツのシーンの切り替わりなど、データに含まれるコンテンツを参照して、再開位置情報を作成されてもよい。例えば、コンテンツを中断した直前のコンテンツのシーンの切り替わり位置を再開位置情報とすることが具体例として挙げられる。
【０１８２】
さらに、マルチメディアデータがＭＰＥＧ２符号化データの場合、Ｉフレーム、ＭＰＥＧ２−ＴＳにおけるＰＡＴ、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
【０１８３】
（８）  上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。
【０１８４】
（９）  上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０１８５】
（１０）  本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１８６】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１８７】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１８８】
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０１８９】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１９０】
（１１）  上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【０１９１】
（実施の形態２）
図１３は、本発明の実施の形態２におけるマルチメディア配信システムの構成の一例を示す図である。
【０１９２】
図１３に示すマルチメディア配信システム１３０５は、データ出力装置１３０１と、第１の端末１３０２と、第２の端末１３０３と、ネットワーク１３０４とを備える。データ出力装置１３０１、端末１３０２および端末１３０３は、ネットワーク１３０４に接続されており、ネットワーク１３０４を介して相互に通信可能である。
【０１９３】
本実施の形態におけるデータ出力装置１３０１は、ネットワークインタフェースと、マルチメディアデータを蓄積する蓄積部を備えた、デジタル放送を受信するＣＡＴＶＳＴＢ（Ｓｅｔ  Ｔｏｐ  Ｂｏｘ）である。
【０１９４】
データ出力装置１３０１は、受信したデジタル放送コンテンツのマルチメディアデータを、蓄積部に蓄積する。また、ネットワークインタフェースを通して、ネットワーク１３０４に接続されている。そして、ネットワーク１３０４を通じて送信された、端末１３０２および端末１３０３からの要求を受信する。そして、要求に応じて受信したデジタル放送のコンテンツ、もしくは、蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク１３０４を通じて端末１３０２および端末１３０３へ送信するものである。
【０１９５】
データ出力装置１３０１は、実行中の蓄積したコンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。
【０１９６】
また、実行中の受信したデジタル放送コンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、以降のデータを蓄積部に蓄積する。
【０１９７】
さらに、該マルチメディアデータの属性とＵＲＩを作成する。該属性は「出力中断中」という情報が含まれている。そして、そのファイル名もしくはＵＲＩと、蓄積したファイルの先頭位置を再開位置情報として装置内部に記憶する。
【０１９８】
さらに、データ出力装置１３０１は、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
【０１９９】
端末１３０２および端末１３０３は、ユーザの要求により、データ出力装置１３０１へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク１３０４を通じて送信する。そして、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。端末１３０２および端末１３０３は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
【０２００】
ネットワーク１３０４は、家庭内に施設されたホームネットワークであり、イーサネット、無線ＬＡＮなどによって構成されたＩＰネットワークである。
【０２０１】
以下、データ出力装置１３０１と端末１３０２および端末１３０３の間の通信およびそれぞれの動作について説明する。
【０２０２】
マルチメディアデータ送信の制御情報の通信は、ＲＴＳＰを用いて行う。まず、データ出力装置１０１と端末１０２との間の通信で、マルチメディアデータの送信から中断までを説明し、続いて、データ出力装置１３０１と端末１３０３との間の通信で、端末１３０２へ送信途中に中断したマルチメディアデータの送信を再開する、ことを例にとって説明する。
【０２０３】
まず、端末１３０２へのデータ送信を中断するまでの過程における通信とそれぞれの動作を説明する。
【０２０４】
データ出力装置１３０１および端末１３０２は、それぞれ、ネットワーク１３０４に接続された装置を検索し、各装置がどのような機能を持っているかを取得する。この通信は、ＵＰｎＰ  ＤＡ（Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）で定義されている方法により行えるため、詳細な説明は省略する。
【０２０５】
これにより、データ出力装置１３０１は、端末１３０２がネットワーク１３０４に接続されていて、ネットワーク１３０４よりマルチメディアデータを受信して再生するプレーヤであることを認識できる。また、端末１３０２は、データ出力装置１３０１がネットワーク１３０４に接続されているマルチメディアサーバであることを認識できる。
【０２０６】
まず、端末１３０２は、データ出力装置１３０１へ蓄積しているコンテンツ一覧もしくはＥＰＧの取得要求を発行する。データ出力装置１３０１は、それに応じて、蓄積しているコンテンツの一覧を作成もしくは受信したＥＰＧデータを通信する形式に変換して、端末１３０２へ送信する。
【０２０７】
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのＵＲＩとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
【０２０８】
また、ＥＰＧデータは、少なくとも各番組のタイトルと、各番組もしくはそれを放送するチャンネルにアクセスするためのＵＲＩとを含んでいるものである。コンテンツ一覧もしくはＥＰＧの取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧およびＥＰＧのデータフォーマットは、ＵＰｎＰ  ＡＶに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。
【０２０９】
コンテンツ一覧のフォーマットは、ＸＭＬによって定義されているため、ＸＭＬ  Ｎａｍｅｓｐａｃｅを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースＮａを使った要素ＰＡＵＳＥを各コンテンツの情報に追加し、このＰＡＵＳＥ要素の内容が「Ｙｅｓ」の場合は、出力中断中であることを表すことと出来る。
【０２１０】
次に、端末１３０２は、受け取ったコンテンツ一覧もしくはＥＰＧデータから、コンテンツのタイトルなどの情報をユーザに提示する。さらに、ユーザからそのうちのひとつを選択した再生要求を受け付けると、端末１３０２は、マルチメディアデータの送信要求を発行する。例えば、コンテンツのＵＲＩがｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓのデータを、該マルチメディアデータの先頭から送信する要求を発行するの場合、ＲＴＳＰのＳＥＴＵＰメッセージに続いて、以下のＰＬＡＹメッセージが端末１３０２からデータ出力装置１３０１へ送信される。
【０２１１】
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
【０２１２】
上記ＰＬＡＹメッセージを受け取ったデータ出力装置１３０１は、ＵＲＩに示されたマルチメディアデータが蓄積部に蓄積されたコンテンツの場合は、そのマルチメディアデータを蓄積部から読み出す。また、ＵＲＩがチャンネルを示している場合は、チューナによってそのチャンネルにチューニングを行う。そして、以下の返答メッセージを作成して、端末１３０２へ送信する。
【０２１３】
RTSP/1.0 200 OK
CSeq: 2
Session: 12345
Range: smtpe=0:00:00-0:55:00
RTP-Info: url=rtsp://192.168.0.3/AVData/0001.m2ts;seq=123123532; rtptime=53265
【０２１４】
続いて、データ出力装置１３０１は、蓄積部から読み出したマルチメディアデータもしくはチューナによってチューニングし取得したマルチメディアデータを、順次、端末１３０２へ送信する。データ送信はＲＴＰに規定された方法で行われるため、詳細は省略する。
【０２１５】
次に、端末１３０２は、ユーザからの指示により、再生中断要求を受け付けると、データ出力装置１３０１へデータ送信中断要求を発行する。データ送信中断はＰＡＵＳＥコマンドを用いて行うことが出来る。これは、以下のメッセージが端末１３０２からデータ出力装置１３０１へ送信される。
【０２１６】
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
データ出力装置１３０１は、上記のＰＡＵＳＥコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末１３０２へ送信する。
【０２１７】
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
【０２１８】
また、データ出力装置１３０１は、送信していたコンテンツが蓄積部に蓄積されていたものの場合、該コンテンツの属性情報に、出力中断中の属性を追加する。データ出力装置１３０１は、さらに、送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から５０１１９バイトのデータを送信した場合は、先頭から５０１２０バイト目となる。
【０２１９】
データ出力装置１３０１は、この送信再開位置とマルチメディアデータを識別するもの、例えばコンテンツの識別子を組として、再開位置情報を作成し、記憶する。
【０２２０】
なお、本実施の形態においては、送信済データ数を基に送信再開位置を求めたが、例えば、蓄積部からの、読出済データ数を基に求めるものであっても良い。
【０２２１】
また、データ出力装置１３０１は、送信していたコンテンツがチューナから取得したマルチメディアデータであった場合、引き続くマルチメディアデータを蓄積部に順次書き込む。さらに、該マルチメディアデータの属性情報を作成して蓄積部に書き込むとともに、該マルチメディアデータのＵＲＩを作成し、端末からアクセス可能とする。また、該マルチメディアデータに識別子を発行し、該識別子と再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶する。
【０２２２】
端末１３０２は、ユーザから終了の要求を受け付けると、セッションを切断するＴＥＡＲＤＯＷＮというコマンドメッセージを送信し、データ出力装置１３０１はこれを受けて返答メッセージを送信し、通信が終了する。本実施の形態では、ＴＥＡＲＤＯＷＮを行っても、上記再開位置情報および属性情報は更新しない。
【０２２３】
なお、より明確に後に再開する中断であることを表すために、ＰＡＵＳＥもしくはＴＥＡＲＤＯＷＮを拡張して、再開位置情報の作成・保持および属性情報の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるＸ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓを用い、その値が「Ｙｅｓ」の場合に限り、再開位置情報を作成・保持および属性情報を更新・保持することとすれば、上記の端末１３０２からデータ出力装置１３０１へ送られるＰＡＵＳＥメッセージは以下のようになる。
【０２２４】
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
【０２２５】
この場合、データ出力装置１３０１は、受信したＰＡＵＳＥメッセージに、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダがあり、かつその値が「Ｙｅｓ」であるので、再開位置情報を作成して保持し、また、属性情報を更新して保持する。Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダがないか、あっても値が「Ｙｅｓ」以外の場合は、データ出力装置１３０１は、再開位置情報を作成せず、また、属性情報を更新しない。
【０２２６】
次に、端末１３０３との通信において、上記の中断したデータ送信を再開する過程の通信およびデータ出力装置１３０１と端末１３０３の動作を説明する。
【０２２７】
まず、データ出力装置１３０１と端末１３０３における、ネットワークに接続された装置の検索および端末１３０３によるコンテンツ一覧もしくはＥＰＧの取得に関しては、上記と同様のため、説明を省略する。
【０２２８】
端末１３０３は、データ出力装置１３０１から受け取ったコンテンツ一覧もしくはＥＰＧをユーザに提示する。コンテンツ一覧提示の際に、端末１３０３は、データ出力中断中のコンテンツを判定し、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
【０２２９】
端末１３０３は、ユーザが「データ出力中断中」のコンテンツ再生の再開要求を受け付けると、データ出力装置１３０１へ、中断したデータ送信の再開要求を発行する。この要求は、ＲＴＳＰのＰＬＡＹメッセージに、独自拡張ヘッダであるＸ−Ｒｅｓｔａｒｔを用い、その値を「Ｙｅｓ」とすることで行うものとする。この場合、端末１３０３から以下のメッセージがデータ出力装置１３０１へ送信される。
【０２３０】
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
【０２３１】
データ出力装置１３０１では、まず、ＰＬＡＹメッセージで送られてきたＵＲＩのマルチメディアデータの再開位置情報を、記憶している再開位置情報から検索する。データ出力装置は、再開位置情報から、送信を再開するデータ位置を読み取り、蓄積部から該マルチメディアデータを読み込む。
【０２３２】
データ出力装置１３０１は、続いて、以下の返答メッセージを作成し、端末１３０３へ送信する。なお、再開位置は、該マルチメディアデータの先頭から８分目としている。
【０２３３】
RTSP/1.0 200 OK
CSeq: 2
Session: 54321
Range: smtpe=0:08:00-0:55:00
RTP-Info:url=rtsp://192.168.0.3/AVData/0001.m2ts;seq=123073412; rtptime=52865
【０２３４】
続いて、データ出力装置１３０１は、ＰＬＡＹメッセージが端末１３０３から送られてきたことから、データの送信先を端末１３０３と判定し、読み出したデータを、順次、端末１３０３へ送信する。また、データ出力装置１３０１は、該当する再開位置情報を装置内部から削除するとともに、該マルチメディアデータの属性情報から、「出力中断中」の属性を削除して、属性情報を更新する。
【０２３５】
なお、本実施の形態の場合、データ出力装置１３０１は、ＲＴＳＰメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末１３０３から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、ＵＰｎＰ  ＡＶに規定されている方法、もしくは、ＰＬＡＹメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
【０２３６】
以上のように、本発明のデータ出力装置１３０１、端末１３０２、端末１３０３、およびマルチメディア配信システム１３０５においては、例えば端末１３０２にて受信中だったデータの送信を中断しても、別の端末１３０３において、的確にデータ通信を再開することが可能となる。
【０２３７】
以下、本発明のマルチメディア配信システム１３０５を構成する、データ出力装置１３０１、端末１３０２および端末１３０３について、更に詳細に説明する。ここでは、端末１３０２へデータ通信中にデータ送信を中断し、端末１３０３へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
【０２３８】
また、ＲＴＳＰサーバは決まったポート番号で待ち受けしていることとする。このポート番号は、ＩＡＮＡ（Ｉｎｔｅｒｎｅｔ  Ａｓｓｉｇｎｅｄ  Ｎｕｍｂｅｒｓ  Ａｕｔｈｏｒｉｔｙ）で決められた５５４番を用いても良いし、ユーザがデータ出力装置１３０１、端末１３０２および端末１３０３に設定したものであっても良い。また、後述するメソッドにポート番号を指定する引数を追加する構成であっても良い。
【０２３９】
まず、データ出力装置１３０１について説明する。
【０２４０】
図１４は、本発明の実施の形態２におけるデータ出力装置１３０１の構成の一例を示すブロック図である。
【０２４１】
本図に示すデータ出力装置１３０１は、入力部１４０１と、第１メモリ１４０２と、第２メモリ１４０３と、受信部１４０４と、多重分離部１４０５と、デスクランブラ１４０６と、ＴＳデコーダ１４０７と、映像出力部１４０８と、音声出力部１４０９と、ＴＳマルチプレクサ１４１０と、ネットワーク部１４１１と、ＣＰＵ１４１２とを備える。
【０２４２】
入力部１４０１は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネル選択等の指示を受け付ける。
【０２４３】
図１５は、フロントパネルで実施の形態２に係る入力部１４０１を構成した場合の外観の一例を示す図である。
【０２４４】
本図に示すフロントパネル１５００は、上カーソルボタン１５０１、下カーソルボタン１５０２、左カーソルボタン１５０３、右カーソルボタン１５０４、ＯＫボタン１５０５、取消ボタン１５０６、ＥＰＧボタン１５０７、および、シアターボタン１５０８の８つのボタンを備える。ユーザがボタンを押下すると、押下されたボタンの識別子が、ＣＰＵ１４１２に通知される。
【０２４５】
第１メモリ１４０２は、ＲＡＭ等で構成され、ＣＰＵ１４１２が一時的にデータを保存する際に使用される。
【０２４６】
第２メモリ１４０３は、フラッシュメモリ、ハードディスク等で電源が停止しても情報を保持可能なデバイスで構成され、ＣＰＵ１４１２が実行するプログラムを保存する。第２メモリは、ＳＤメモリーカード等の取り外し可能な記憶デバイスを用いていてもよい。
【０２４７】
受信部１４０４は、ＣＡＴＶ局からのケーブルに接続され放送波を受信し、ＣＰＵ１４１２から指定された周波数にチューニングし、ＭＰＥＧトラスポートストリームを抽出して、多重分離部１４０５に引き渡す。
【０２４８】
多重分離部１４０５は、受信部１４０４からＭＰＥＧトラスポートストリームを受け取り、ＣＰＵ１４１２から指定された情報を抽出しＣＰＵ１４１２に引き渡す。またＭＰＥＧトラスポートストリームをそのままデスクランブラ１４０６に引き渡す。
【０２４９】
デスクランブラ１４０６は、多重分離部１４０５から与えられたスクランブルされているＭＰＥＧトラスポートストリームをデスクランブル（＝復号）し、ＴＳデコーダ１４０７に引き渡す。デスクランブラ１４０６は、データ出力装置１３０１に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているＣａｂｌｅＣＡＲＤ（ＴＭ）でも実施可能である。ＣａｂｌｅＣＡＲＤの仕様は米国ＣａｂｌｅＬａｂｓが策定したＣａｂｌｅＣＡＲＤ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎに記載されており、ここでは説明を省略する。
【０２５０】
ＴＳデコーダ１４０７は、ＣＰＵ１４１２から音声データ、映像データ、ＰＳＩ／ＳＩ情報などのセクションデータの識別子を受け取る。さらに、デスクランブラ１４０６から受け取ったデスクランブルされたストリームから、受け取った音声データ、映像データ、ＰＳＩ／ＳＩ情報などのセクションデータの識別子に対応するデータを抽出する、抽出した映像データを映像出力部１４０８に、音声データを音声出力部１４０９に引き渡す。また、その両方と、セクションデータを、ＴＳマルチプレクサ１４１０に引き渡す。
【０２５１】
映像出力部１４０８は映像出力端子を含み、受け取った映像データを端子に対応した映像データに変換して出力する。端子の例としては、コンポジットケーブル端子などがある。
【０２５２】
音声出力部１４０９は音声出力端子を含み、受け取った音声データを端子に対応した音声データに変換して出力する。端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。
【０２５３】
ＴＳマルチプレクサ１４１０は、受け取った映像データ、音声データ、セクションデータからＭＰＥＧ２トランスポートストリームを構成し、該ＭＰＥＧ２トランスポートストリームをネットワーク部１４１１に引き渡す。ＰＳＩ／ＳＩ情報は必要に応じて書き換えられる。
【０２５４】
ネットワーク部１４１１は、ネットワークインタフェースを含み、ＣＰＵ１４１２から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、ＩＰネットワークで規定されたパケットに変換して、ＣＰＵ１４１２へ引き渡す。
【０２５５】
ＣＰＵ１４１２は、第２メモリ１４０３が記憶するプログラムを実行することで、受信部１４０４と、多重分離部１４０５と、デスクランブラ１４０６と、ＴＳデコーダ１４０７と、ＴＳマルチプレクサ１４１０と、ネットワーク部１４１１とを制御する。
【０２５６】
図１６は、本発明の実施の形態２におけるデータ出力装置１３０１が保持し、実行するプログラムの構成の一例を示す図である。すなわち、本図は、データ出力装置１３０１の第２メモリ１４０３に記憶され、ＣＰＵ１４１２に実行されるプログラムの構成の一例を示す。
【０２５７】
プログラム１６００は、複数のサブプログラムで構成され、具体的には、ＯＳ１６０１と、ＥＰＧ１６０２と、ＪａｖａＶＭ１６０３と、サービスマネージャ１６０４と、Ｊａｖａライブラリ１６０５とで構成される。
【０２５８】
ＯＳ１６０１は、データ出力装置１３０１の電源が投入されると、ＣＰＵ１４１２が起動するサブプログラムである。ＯＳは、オペレーティングシステムの略であり、Ｌｉｎｕｘ（登録商標）等が一例である。
【０２５９】
ＯＳ１６０１は、他のサブプログラムを平行して実行するカーネル１６０１ａ及びライブラリ１６０１ｂで構成される公知の技術の総称であり、詳細な説明は省略する。
【０２６０】
本実施の形態においては、ＯＳ１６０１のカーネル１６０１ａは、ＥＰＧ１６０２とＪａｖａＶＭ１６０３をサブプログラムとして実行する。また、ライブラリ１６０１ｂは、これらサブプログラムに対して、データ出力装置１３０１が備える各部を制御するための複数の機能を提供する。
【０２６１】
本実施の形態のライブラリ１６０１ｂは、機能として例えば、チューナ１６０１ｂ１、限定解除１６０１ｂ２、ＡＶ再生１６０１ｂ３、ＮＥＴ１６０１ｂ４を含む。
【０２６２】
チューナ１６０１ｂ１は、他のサブプログラムやＪａｖａライブラリ１６０５のＴｕｎｅｒ１６０５ｃから周波数を含むチューニング情報を受け取り、受信部１４０４に引き渡す。
【０２６３】
受信部１４０４は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部１４０５に引き渡すことができる。この結果、他のサブプログラム及びＪａｖａライブラリ１６０５のＴｕｎｅｒ１６０５ｃはライブラリ１６０１ｂを通して受信部１４０４を制御することができる。
【０２６４】
限定解除１６０１ｂ２は、他のサブプログラムやＪａｖａライブラリ１６０５のＣＡ１６０５ｄから情報を受け取り、デスクランブラ１４０６に引き渡す。
【０２６５】
ＡＶ再生１６０１ｂ３は、他のサブプログラムやＪａｖａライブラリ１６０５のＪＭＦ１６０５ａから、音声のパケットＩＤと映像のパケットＩＤを受け取る。受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ１４０７に与える。
【０２６６】
この結果、ＴＳデコーダ１４０７は与えられたパケットＩＤに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
【０２６７】
ＮＥＴ１６０１ｂ４は、他のサブプログラムやＪａｖａライブラリ１６０５のネットワークライブラリ１６０５ｅから受け取ったデータを、ＩＰネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。アプリケーション層より下のプロトコルとは、例えばＴＣＰパケット、ＵＤＰパケット、ＩＰパケットなどである。
【０２６８】
これをネットワーク部１４１１に引き渡すことで、ネットワーク１３０４を介して他の機器にメッセージおよびデータを送信する。また、ネットワーク１３０４を介して他の機器からメッセージを受信したときに、他のサブプログラムやＪａｖａライブラリ１６０５のネットワークライブラリ１６０５ｅに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）やＲＴＰなどである。
【０２６９】
ＥＰＧ１６０２は、ユーザに番組一覧を表示及び、ユーザからの入力を受け付ける番組表示部１６０２ａと、チャンネル選局を行う再生部１６０２ｂで構成される。
【０２７０】
ここで、ＥＰＧはＥｌｅｃｔｒｉｃ  Ｐｒｏｇｒａｍ  Ｇｕｉｄｅの略である。ＥＰＧ１６０２は、データ出力装置１３０１の電源が投入されると、カーネル１６０１ａによって起動される。起動されたＥＰＧ１６０２の内部では、番組表示部１６０２ａと再生部１６０２ｂが同時に起動される。
【０２７１】
番組表示部１６０２ａは起動されると、データ出力装置１３０１の入力部１４０１を通して、ユーザからの入力を待つ。
【０２７２】
ここで、入力部１４０１が図１５で示されるフロントパネルで構成されている場合、ユーザが、入力部１４０１のＥＰＧボタン１５０７を押下すると、ＥＰＧボタンの識別子がＣＰＵ１４１２に通知される。ＣＰＵ１４１２上で動作するサブプログラムであるＥＰＧ１６０２の番組表示部１６０２ａは、この識別子を受け取り、番組情報表示データを作成し、図示していないモニタ出力部によりモニタに出力する。モニタは、データ出力装置１３０１が備えるものであっても良いし、データ出力装置１３０１とコンポジットケーブルやＨＤＭＩケーブルなどで接続されたテレビであっても良い。モニタは、受信した番組情報表示データを表示する。
【０２７３】
図１７（ａ）および（ｂ）は、それぞれ、本発明の実施の形態２に係るモニタに表示された番組表の例を示す図である。
【０２７４】
図１７（ａ）を参照して、モニタに表示された番組表１７１０には、格子状に番組情報が表示されている。列１７０１には、時刻情報が表示されている。列１７０２には、チャンネル名「チャンネル１」と、列１７０１の時刻に対応する時間帯に放映される番組が表示されている。
【０２７５】
「チャンネル１」では、９：００〜１０：３０に番組「ニュース９」が放映され、１０：３０〜１２：００は「映画ＡＡＡ」が放映されることを表す。列１７０３も列１７０２同様、チャンネル名「チャンネル２」と、列１７０１の時刻に対応する時間帯に放映される番組が表示されている。９：００〜１１：００に番組「映画ＢＢＢ」が放映され、１１：００〜１２：００は「サッカー」が放映される。
【０２７６】
カーソル５３０は、フロントパネル１５００の左カーソル１５０３と右カーソル１５０４を押下すると移動する。図１７（ａ）の状態で、右カーソル１５０４を押下すると、カーソル１７３０は右に移動し、図１７（ｂ）のようになる。また、図１７（ｂ）の状態で、左カーソル１５０３を押下すると、カーソル１７３０は左に移動し、図１７（ａ）のようになる。
【０２７７】
図１７（ａ）の状態で、フロントパネル１５００のＯＫボタン１５０５が押下されると、番組表示部１６０２ａは、「チャンネル１」の識別子を再生部１６０２ｂに通知する。図１７（ｂ）の状態で、フロントパネル１５００のＯＫボタン１５０５が押下されると、番組表示部１６０２ａは、「チャンネル２」の識別子を再生部１６０２ｂに通知する。
【０２７８】
また、番組表示部１６０２ａは、表示する番組情報を、多重分離部１４０５を通して定期的に、第２メモリ１４０３に記憶しておく。一般的に、放送局からの番組情報の取得は時間が掛かる。フロントパネル１５００のＥＰＧボタン１５０７が押下された時、第２メモリ１４０３に予め保存された番組情報を表示することで、素早く番組表を表示することができる。
【０２７９】
図１８は、本発明の実施の形態２に係る第２メモリ１４０３に記憶されている番組情報の一例を示す図である。番組情報は表形式で格納されている。
【０２８０】
列１８０１は、チャンネルの識別子である。列１８０２は、番組名である。列１８０３は番組の放送開始時間、列１８０４は放送終了時間である。列１８０５は、番組の音声種別を表しており、モノラル音声、ステレオ音声、５．１チャンネル音声をそれぞれ「モノラル」、「ステレオ」、「５．１」と表記している。列１８０６は、番組の種別を表している。通常番組は空欄であり、「映画」は映画、「スポ」はスポーツ番組を表す。
【０２８１】
行１８１１〜１８１４の各行は、それぞれひとつの番組情報を表す。この例では、ひとつの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別の組となる。
【０２８２】
例えば、行１８１１はチャンネル識別子が「１」、番組名が「ニュース９」、放送開始時間が「９：００」、放送終了時間が「１０：３０」、音声種別が「モノラル」、番組の種別は「通常」を含む組となっている。
【０２８３】
再生部１６０２ｂは、受け取ったチャンネルの識別子を用いて、チャンネルを再生する。すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第２メモリ１４０３に予め格納されている。
【０２８４】
図１９は、本発明の実施の形態２に係る第２メモリ１４０３に格納されているチャンネル情報の一例を示す図である。
【０２８５】
チャンネル情報は表形式で格納されている。列１９０１は、チャンネルの識別子である。列１９０２は、チャンネル名である。列１９０３はチューニング情報である。ここで、チューニング情報は周波数や転送レート、符号化率などを含み、受信部１４０４に与える値である。列１９０４はプログラムナンバーである。
【０２８６】
プログラムナンバーとは、ＭＰＥＧ２規格で規定されているＰＭＴを識別するための番号である。ＰＭＴに関しては、後述する。
【０２８７】
行１９１１〜１９１４の各行は、各チャンネルの識別子、チャンネル名、チューニング情報の組となる。行１９１１は識別子が「１」、チャンネル名が「チャンネル１」、チューニング情報に周波数「１５０ＭＨｚ」、プログラムナンバーが「１０１」を含む組となっている。再生部１６０２ｂは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ１６０４に引き渡す。
【０２８８】
また、再生部１６０２ｂは、再生中に、ユーザがフロントパネル１５００の上カーソル１５０１と下カーソル１５０２を押下すると、入力部１４０１からＣＰＵ１４１２を通して、押下された通知を受け取り、再生しているチャンネルを変更する。
【０２８９】
上カーソル１５０１を押下すると、現在再生中のチャンネルよりもひとつ小さいチャンネル識別子を持つチャンネルを再生し、また下カーソル１５０２を押下すると、現在再生中のチャンネルよりもひとつ大きいチャンネル識別子を持つチャンネルを再生する。
【０２９０】
まず、再生部１６０２ｂは、第２メモリ１４０３に現在再生中のチャンネルの識別子を記憶する。
【０２９１】
図２０（ａ）（ｂ）及び（ｃ）は、それぞれ、本発明の実施の形態２に係る第２メモリ１４０３に格納されているチャンネルの識別子の例を示す図である。
【０２９２】
図２０（ａ）では識別子「３」が記憶されており、図１９を参照し、チャンネル名「ＴＶ  ３」のチャンネルが再生中であることを示す。
【０２９３】
図２０（ａ）の状態で、ユーザが上カーソル１５０１を押下すると再生部１６０２ｂは、図１９のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ小さい識別子を持つチャンネルであるチャンネル名「チャンネル２」のチャンネルに再生を切り変えるため、サービスマネージャ１６０４にチャンネル名「チャンネル２」の識別子「２」を引き渡す。同時に、第２メモリ１４０３に記憶されているチャンネル識別子「２」に書き換える。
【０２９４】
図２０（ｂ）は、チャンネル識別子が書き換えられた状態を表す。また、図２０（ａ）の状態で、ユーザが下カーソル１５０２を押下すると再生部１６０２ｂは、図１９のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ大きい識別子を持つチャンネルであるチャンネル名「ＴＶ  Ｊａｐａｎ」のチャンネルに再生を切り変えるため、サービスマネージャ１６０４にチャンネル名「ＴＶ  Ｊａｐａｎ」の識別子「４」を引き渡す。同時に、第２メモリ１４０３に記憶されているチャンネル識別子「４」に書き換える。
【０２９５】
図２０（ｃ）は、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第２メモリ１４０３に記憶されているので、データ出力装置１３０１の電源が切られた際も保存されている。
【０２９６】
さらに再生部１６０２ｂは、データ出力装置１３０１の電源が投入された際に、起動されると、第２メモリ１４０３に記憶されているチャンネル識別子を読み出す。そして、そのチャンネル識別子をサービスマネージャに引渡す。これにより、データ出力装置１３０１は、電源投入時に前回の稼動時に再生されていた最後のチャンネルの再生を開始することができる。
【０２９７】
ＪａｖａＶＭ１６０３は、Ｊａｖａ（ＴＭ）言語で記述されたプログラムを逐次解析し実行するＪａｖａバーチャルマシンである。Ｊａｖａ言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Ｊａｖａバーチャルマシンは、このバイトコードを実行するインタープリタである。
【０２９８】
また、一部のＪａｖａバーチャルマシンは、バイトコードをＣＰＵ１４１２が理解可能な実行形式に翻訳してから、ＣＰＵ１４１２に引渡し、実行することも行う。
【０２９９】
ＪａｖａＶＭ１６０３は、カーネル１６０１ａに実行するＪａｖａプログラムを指定され起動される。本実施の形態では、カーネル１６０１ａは、実行するＪａｖａプログラムとしてサービスマネージャ１６０４を指定する。
【０３００】
Ｊａｖａ言語の詳細は、書籍「Ｊａｖａ  Ｌａｎｇｕａｇｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１−１）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【０３０１】
また、ＪａｖａＶＭ自体の詳細な動作などは、「Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＩＳＢＮ  ０−２０１−６３４５１―Ｘ）」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【０３０２】
サービスマネージャ１６０４は、Ｊａｖａ言語で書かれたＪａｖａプログラムであり、ＪａｖａＶＭ１６０３によって逐次実行される。サービスマネージャ１６０４は、ＪＮＩ（Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ）を通して、Ｊａｖａ言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。ＪＮＩに関しても、書籍「Ｊａｖａ  Ｎａｔｉｖｅ  Ｉｎｔｅｒｆａｃｅ」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
【０３０３】
まず、デジタル放送を受信し、受信したマルチメディアデータを再生する場合の処理について説明する。
【０３０４】
サービスマネージャ１６０４は、ＪＮＩを通して、再生部１６０２ｂよりチャンネルの識別子を受け取る。
【０３０５】
サービスマネージャ１６０４は、最初にＪａｖａライブラリ１６０５の中にあるＴｕｎｅｒ１６０５ｃに、チャンネルの識別子を引き渡し、チューニングを依頼する。Ｔｕｎｅｒ１６０５ｃは、第２メモリ１４０３が記憶するチャンネル情報を参照し、チューニング情報を獲得する。
【０３０６】
今、サービスマネージャ１６０４がチャンネルの識別子「２」をＴｕｎｅｒ１６０５ｃに引き渡すと、Ｔｕｎｅｒ１６０５ｃは、図１９の行１９１２を参照して、対応するチューニング情報「１５６ＭＨｚ，」を獲得する。Ｔｕｎｅｒ１６０５ｃは、ＯＳ１６０１のライブラリ１６０１ｂのチューナ１６０１ｂ１を通して、受信部１４０４にチューニング情報を引き渡す。
【０３０７】
受信部１４０４は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部１４０５に引き渡す。
【０３０８】
次にサービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＣＡ１６０５ｄにデスクランブルを依頼する。ＣＡ１６０５ｄは、ＯＳ１６０１のライブラリ１６０１ｂの限定解除１６０１ｂ２を通して復号に必要な情報をデスクランブラ１４０６に与える。
【０３０９】
デスクランブラ１４０６は、与えられた情報を元に、受信部１４０４から与えられた信号を復号しＴＳデコーダ１４０７に引き渡す。
【０３１０】
サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＪＭＦ１６０５ａにチャンネルの識別子を与え、映像・音声の再生を依頼する。
【０３１１】
まず、最初にＪＭＦ１６０５ａは、再生すべき映像と音声を特定するためのパケットＩＤをＰＡＴ、ＰＭＴから取得する。ＰＡＴやＰＭＴはＭＰＥＧ２規格で規定されている、ＭＰＥＧ２トランスポートストリーム内の番組構成を表現するテーブルであり、ＭＰＥＧ２トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。詳細は規格書を参照されたい。ここでは、概略のみ説明する。
【０３１２】
ＰＡＴは、Ｐｒｏｇｒａｍ  Ａｓｓｏｃｉａｔｉｏｎ  Ｔａｂｌｅの略で、パケットＩＤ「０」のパケットに格納され送信されている。ＪＭＦ１６０５ａは、ＰＡＴを取得するため、ＯＳ１６０１のライブラリ１６０１ｂを通して、多重分離部１４０５にパケットＩＤ「０」を指定する。多重分離部１４０５がパケットＩＤ「０」でフィルタリングを行い、ＣＰＵ１４１２に引き渡すことでＪＭＦ１６０５ａは、ＰＡＴのパケットを収集する。
【０３１３】
図２１は、収集したＰＡＴの情報の一例を模式的に示す図である。
【０３１４】
列２１０１は、プログラムナンバーである。列２１０２は、パケットＩＤである。列２１０２のパケットＩＤはＰＭＴを取得するために用いられる。
【０３１５】
行２１１１〜１２１３は、チャンネルのプログラムナンバーと対応するパケットＩＤの組である。ここでは、三つのチャンネルが定義されている。行２１１１はプログラムナンバー「１０１」とパケットＩＤ「５０１」の組が定義されている。
【０３１６】
今、ＪＭＦ１６０５ａに与えられたチャンネルの識別子が「２」とすると、ＪＭＦ１６０５ａは、図２１の行２１１２を参照して、対応するプログラムナンバー「１０２」を獲得し、次に、図２１のＰＡＴの行２１１２を参照し、プログラムナンバー「１０２」に対応するパケットＩＤ「５０２」を獲得する。
【０３１７】
ＰＭＴは、Ｐｒｏｇｒａｍ  Ｍａｐ  Ｔａｂｌｅの略で、ＰＡＴで規定されたパケットＩＤのパケットに格納され送信されている。ＪＭＦ１６０５ａは、ＰＭＴを取得するため、ＯＳ１６０１のライブラリ１６０１ｂを通して、多重分離部１４０５にパケットＩＤを指定する。ここで、指定するパケットＩＤは「５０２」とする。多重分離部１４０５がパケットＩＤ「５０２」でフィルタリングを行い、ＣＰＵ１４１２に引き渡すことでＪＭＦ１６０５ａは、ＰＭＴのパケットを収集する。
【０３１８】
図２２は、収集したＰＭＴの情報の一例を模式的に示す図である。
【０３１９】
列２２０１は、ストリーム種別であり。列２２０２は、パケットＩＤである。列２２０２で指定されるパケットＩＤのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列２２０３は補足情報である。
【０３２０】
行２２１１〜２２１４はエレメンタリ−ストリームと呼ばれる、パケットＩＤと送信している情報の種別の組である。
【０３２１】
行２２１１は、ストリーム種別「音声」とパケットＩＤ「５０１１」の組であり、パケットＩＤ「５０１１」のペイロードには音声が格納されていることを表す。ＪＭＦ１６０５ａは、ＰＭＴから再生する映像と音声のパケットＩＤを獲得する。図２２を参照して、ＪＭＦ１６０５ａは、行２２１１から音声のパケットＩＤ「５０１１」を、行２２１２から映像のパケットＩＤ「５０１２」を獲得する。
【０３２２】
次に、ＪＭＦ１６０５ａは、ＯＳ１６０１のライブラリ１６０１ｂのＡＶ再生１６０１ｂ３に獲得した音声のパケットＩＤと映像のパケットＩＤを引き渡す。これを受けて、ＡＶ再生１６０１ｂ３は、受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ１４０７に与える。ＴＳデコーダ１４０７は与えられたパケットＩＤでフィルタリングを行う。
【０３２３】
ここではパケットＩＤ「５０１１」のパケットを音声出力部１４０９に、パケットＩＤ「５０１２」のパケットを映像出力部１４０８に、それぞれ引き渡す。
【０３２４】
音声出力部１４０９は、与えられたパケットを適宜変換し（例えばデジタル−アナログ変換）出力する。
【０３２５】
映像出力部１４０８は、与えられたパケットを適宜変換し（例えばデジタル−アナログ変換）出力する。
【０３２６】
最後にサービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中にあるＡＭ１６０５ｂにチャンネルの識別子を与え、データ放送再生を依頼する。
【０３２７】
ここで、データ放送再生とは、ＭＰＥＧ２トランスポートストリームに含まれるＪａｖａプログラムを抽出し、ＪａｖａＶＭ１６０３に実行させることである。ＭＰＥＧ２トランスポートストリームにＪａｖａプログラムを埋め込む方法は、ＭＰＥＧ規格書  ＩＳＯ／ＩＥＣ１３８１８−６に記述されたＤＳＭＣＣという方式を用いる。ここではＤＳＭＣＣの詳細な説明は省略する。ＤＳＭＣＣ方式は、ＭＰＥＧ２トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。
【０３２８】
また、実行するＪａｖａプログラムの情報はＡＩＴと呼ばれる形式で、ＭＰＥＧ２トランスポートストリームのパケットの中に埋め込まれ送信されている。ＡＩＴは、ＤＶＢ−ＭＨＰ規格（正式には、ＥＴＳＩ  ＴＳ  １０１  ８１２  ＤＶＢ−ＭＨＰ仕様Ｖ１．０．２）の１０章に定義されている、Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅの略である。
【０３２９】
ＡＭ１６０５ｂは、まず、ＡＩＴを獲得するため、ＪＭＦ１６０５ａ同様ＰＡＴ、ＰＭＴを取得し、ＡＩＴが格納されているパケットのパケットＩＤを獲得する。
【０３３０】
今、与えられたチャンネルの識別子が「２」で、図２１のＰＡＴ、図２２のＰＭＴが送信されていると、ＪＭＦ１６０５ａと同様の手順で、図２２のＰＭＴを獲得する。ＡＭ１６０５ｂは、ＰＭＴからストリーム種別が「データ」で補足情報として「ＡＩＴ」を持つエレメンタリ−ストリームからパケットＩＤを抽出する。図２２を参照して、行１０１３のエレメンタリ−ストリームが該当し、パケットＩＤ「５０１３」を獲得する。
【０３３１】
ＡＭ１６０５ｂは、ＯＳ１６０１のライブラリ１６０１ｂを通して多重分離部１４０５にＡＩＴのパケットＩＤを与える。多重分離部１４０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ１４１２に引き渡す。この結果、ＡＭ１６０５ｂは、ＡＩＴのパケットを収集することができる。
【０３３２】
図２３は、収集したＡＩＴの情報の一例を模式的に示す図である。
【０３３３】
列２３０１はＪａｖａプログラムの識別子である。
【０３３４】
列２３０２はＪａｖａプログラムの制御情報である。制御情報には「ａｕｔｏｓｔａｒｔ」「ｐｒｅｓｅｎｔ」「ｋｉｌｌ」などがあり、「ａｕｔｏｓｔａｒｔ」は即時にデータ出力装置１０１がこのプログラムを自動的に実行することを意味し、「ｐｒｅｓｅｎｔ」は自動実行しないことを意味し、「ｋｉｌｌ」はプログラムを停止することを意味する。
【０３３５】
列２３０３は、ＤＳＭＣＣ方式でＪａｖａプログラムを含んでいるパケットＩＤを抽出するためのＤＳＭＣＣ識別子である。
【０３３６】
列２３０４はＪａｖａプログラムのプログラム名である。
【０３３７】
行２３１１と２３１２とは、Ｊａｖａプログラムの情報の組である。行２３１１で定義されるＪａｖａプログラムは、識別子「３０１」、制御情報「ａｕｔｏｓｔａｒｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ａ／ＴｏｐＸｌｅｔ」の組である。行２３１２で定義されるＪａｖａプログラムは、識別子「３０２」、制御情報「ｐｒｅｓｅｎｔ」、ＤＳＭＣＣ識別子「１」、プログラム名「ｂ／ＧａｍｅＸｌｅｔ」の組である。
【０３３８】
ここでふたつのＪａｖａプログラムは同じＤＳＭＣＣ識別子を持つが、これはひとつのＤＳＭＣＣ方式でエンコードされたファイルシステム内にふたつのＪａｖａプログラムが含まれていることを表す。ここでは、Ｊａｖａプログラムに対して４つの情報しか規定しないが、実際にはより多くの情報が定義される。詳細はＤＶＢ−ＭＨＰ規格を参照されたい。
【０３３９】
ＡＭ１６０５ｂは、ＡＩＴの中から「ａｕｔｏｓｔａｒｔ」のＪａｖａプログラムを見つけ出し、対応するＤＳＭＣＣ識別子及びＪａｖａプログラム名を抽出する。図２３を参照して、ＡＭ１６０５ｂは行２３１１のＪａｖａプログラムを抽出し、ＤＳＭＣＣ識別子「１」及びＪａｖａプログラム名「ａ／ＴｏｐＸｌｅｔ」を獲得する。
【０３４０】
次にＡＭ１６０５ｂは、ＡＩＴから取得したＤＳＭＣＣ識別子を用いて、ＪａｖａプログラムをＤＳＭＣＣ方式で格納しているパケットのパケットＩＤをＰＭＴから獲得する。具体的には、ＰＭＴの中でストリーム種別が「データ」で、補足情報のＤＳＭＣＣ識別子が合致するエレメンタリ−ストリームのパケットＩＤを取得する。
【０３４１】
今、ＤＳＭＣＣ識別子が「１」であり、ＰＭＴが図２２とすると、行２２１４のエレメンタリ−ストリームが合致し、パケットＩＤ「５０１４」を取り出す。
【０３４２】
ＡＭ１６０５ｂは、ＯＳ１６０１のライブラリ１６０１ｂを通して多重分離部１４０５にＤＳＭＣＣ方式でデータが埋めこめられたパケットのパケットＩＤを指定する。
【０３４３】
ここでは、パケットＩＤ「５０１４」を与える。多重分離部１４０５は、与えられたパケットＩＤでフィルタリングを行い、ＣＰＵ１４１２に引き渡す。この結果、ＡＭ１６０５ｂは、必要なパケットを収集することができる。ＡＭ１６０５ｂは、収集したパケットから、ＤＳＭＣＣ方式に従ってファイルシステムを復元し、第１メモリ１４０２あるいは第２メモリ１４０３に保存する。ファイルシステム等のデータを取り出し第１メモリ１４０２あるいは第２メモリ１４０３に保存することを以降、ダウンロードと呼ぶ。
【０３４４】
図２４は、ダウンロードしたファイルシステムの一例を示す図である。
【０３４５】
図中、丸はディレクトリを四角はファイルを表し、２４０１はルートディレクトリ、２４０２はディレクトリ「ａ」、２４０３はディレクトリ「ｂ」、２４０４はファイル「ＴｏｐＸｌｅｔ．ｃｌａｓｓ」、２４０５はファイル「ＧａｍｅＸｌｅｔ．ｃｌａｓｓ」である。
【０３４６】
ここでは、ＭＰＥＧ２トランスポートストリームからファイルシステムをダウンロードする例を記載したが、ＯＣＡＰ仕様では、ＩＰネットワークを用いたダウンロードなども規定している。また、ＡＩＴではなくＸＡＩＴと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。
【０３４７】
次にＡＭ１６０５ｂは、第１メモリ１４０２あるいは第２メモリ１４０３にダウンロードしたファイルシステム中から実行するＪａｖａプログラムをＪａｖａＶＭ１６０３に引き渡す。今、実行するＪａｖａプログラム名が「ａ／ＴｏｐＸｌｅｔ」とすると、Ｊａｖａプログラム名の最後に「．ｃｌａｓｓ」を付加したファイル「ａ／ＴｏｐＸｌｅｔ．ｃｌａｓｓ」が実行すべきファイルとなる。「／」はディレクトリやファイル名の区切りであり、図２４を参照して、ファイル２４０４が実行すべきＪａｖａプログラムである。次にＡＭ１６０５ｂは、ファイル２４０４をＪａｖａＶＭ１６０３に引き渡す。
【０３４８】
ＪａｖａＶＭ１６０３は、引き渡されたＪａｖａプログラムを実行する。
【０３４９】
サービスマネージャ１６０４は、他のチャンネルの識別子を受け取ると、Ｊａｖａライブラリ１６０５に含まれる各ライブラリを通して再生している映像・音声及びＪａｖａプログラムの実行を、同じくＪａｖａライブラリ１６０５に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネルの識別子に基づいて、映像・音声の再生及びＪａｖａプログラムの実行を行う。
【０３５０】
また、サービスマネージャ１６０４は、再生部１６０２ｂだけでなく、ＪａｖａＶＭ１６０３上で実行されるＪａｖａプログラムからチャンネルの識別子を受け取る機能も備える。
【０３５１】
具体的には、チャンネルの識別子を受け取るためのＪａｖａ言語のクラス及びそのメソッドを提供する。チャンネルの識別子を受け取ると、サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５に含まれる各ライブラリを通して現在再生している映像・音声及びＪａｖａプログラムの実行を、同じくＪａｖａライブラリ１６０５に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネルの識別子に基づいて、新しい映像・音声の再生及びＪａｖａプログラムの実行を行う。
【０３５２】
次に、データ出力装置１３０１において、デジタル放送を受信して、そのマルチメディアデータを第２メモリ１４０３に蓄積する処理について説明する。
【０３５３】
図２５は、データ出力装置１３０１が、第２メモリ１４０３にマルチメディアデータを蓄積する形態の一例を示す図である。
【０３５４】
データ出力装置１３０１は、マルチメディアデータとその属性情報、属性情報テーブル、ＵＲＩテーブル、再開位置情報テーブルを第２メモリ１４０３に記憶する。図２５に示す第２メモリに記憶された情報は、マルチメディアデータ２５０１と、マルチメディアデータ２５０２と、マルチメディアデータの属性情報２５１１と、マルチメディアデータの属性情報２５１２と、属性情報テーブル２５２１と、ＵＲＩテーブル２５３１と、再開位置情報テーブル２５３２とを含む。
【０３５５】
マルチメディアデータ２５０１と、マルチメディアデータ２５０２とは、ＭＰＥＧトランスポートストリーム形式の符号化されたマルチメディアデータである。属性情報２５１１と、属性情報２５１２とは、各マルチメディアデータのタイトルなどの付加的な情報である。ここでは、属性情報２５１１はマルチメディアデータ２５０１の属性情報を、属性情報２５１２はマルチメディアデータ２５０２の属性情報を、それぞれ表すこととする。
【０３５６】
図２６は、本発明の実施の形態２における属性情報の一例を示す図である。本実施の形態においては、属性情報はＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  ＭａｒｋｕｐＬａｎｇｕａｇｅ）で定義されたテキストで表すものとする。
【０３５７】
図２６では、ＣｏｎｔｅｎｔＩＤ要素で該コンテンツの識別子を、ＦｉｌｅＮａｍｅ要素で該マルチメディアデータのファイル名を、ＣｈａｎｎｅｌＩＤ要素で図１８の列１８０１で示されているような該番組が放送されたチャンネルの識別子を、ＰｒｏｇｒａｍＮｏ要素で図１９の列１９０４に示されているようなＰＭＴを検索するプログラムナンバーを、Ｔｉｔｌｅ要素で図１８の列１８０２で示されているような番組名を、Ｇｕｎｒｅ要素で図１８の列１８０６に示されているような番組の種別を、Ｄａｔｅ要素で該番組が放送された日時を、ＲｅｃｏｒｄＤａｔｅ要素で該番組が録画された日時を、ＰｌａｙｂａｃｋＴｉｍｅ要素で、該マルチメディアデータが再生もしくはネットワーク１０４に出力された回数を、ＬａｓｔＰｌａｙｂａｃｋＤａｔｅ要素で、該マルチメディアデータが最後に再生もしくはネットワークに出力された日時を、それぞれ表す。
【０３５８】
なお、属性情報は、このようなＸＭＬによる構成に限るものではなく、他の形式、例えば、バイナリデータとして記録しても良い。属性情報テーブルは、コンテンツの識別子と、該識別子で表されるコンテンツの属性情報を記録したファイルとの対応表である。図２７にその一例を示す。
【０３５９】
図２７は、本発明の実施の形態２における属性情報テーブルの一例を示す図である。
【０３６０】
図２７において、列２７０１はコンテンツの識別子を表し、列２７０２は属性情報のファイル名を表す。行２７１１〜２７１３は、コンテンツの識別子と対応する属性情報のファイル名の組である。行２７１１からは、識別子１のコンテンツの属性情報はファイル０００１．ａｔｔｒに記録されていることを読み取ることができる。ＵＲＩテーブル２５３１と再開位置情報テーブルについては、後述する。
【０３６１】
以下、蓄積する処理について説明する。まず、デスクランブルまでの動作は上記再生する場合と同様である。次に、サービスマネージャ１６０４は、Ｊａｖａライブラリ１６０５の中のＲｅｃ１６０５ｊに該マルチメディアデータの蓄積を依頼する。Ｒｅｃ１６０５ｊは、まず、上記ＪＭＦ１６０５ａおよびＡＭ１６０５ｂと同様に、ＰＡＴ、ＰＭＴを取得し、蓄積する番組に関する映像データ、音声データ、各セクションデータのパケットＩＤを取得する。今、与えられたチャンネルの識別子が「２」で、図２１のＰＡＴ、図２２のＰＭＴが送信されていると、ＪＭＦ１６０５ａと同様の手順で、図２２のＰＭＴを獲得する。蓄積するデータは、図２２のＰＭＴに記述された全てのデータである。
【０３６２】
Ｒｅｃ１６０５ｊは、ＯＳ１６０１のライブラリ１６０１ｂを通してＴＳデコーダ１４０７に、これらのパケットＩＤを与え、ＴＳマルチプレクサ１４１０に出力させる。ＴＳデコーダ１４０７は、与えられたパケットＩＤでフィルタリングを行い、ＴＳマルチプレクサ１４１０に引き渡す。
【０３６３】
なお、セクションデータに関しては、それぞれにバージョンナンバーがつけられており、ＴＳデコーダ１４０７は、同じ種類のデータは、各バージョンナンバーごとに１回のみ出力し、あとはフィルタリングする構成であっても良い。
【０３６４】
また、Ｒｅｃ１６０５ｊは、ＯＳ１６０１のライブラリ１６０１ｂを通してＴＳマルチプレクサ１４１０に、何種類のデータが送られてくるかを与えて、ＴＳデコーダ１４０７から引き渡されたデータから、ＭＰＥＧ２トランスポートストリームを構成させる。ＴＳマルチプレクサ１４１０は、構成したＭＰＥＧトランスポートストリームを、ＣＰＵ１４１２に引き渡す。
【０３６５】
さらに、Ｒｅｃ１６０５ｊは、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇに依頼して、ＣＰＵ１４１２がＴＳマルチプレクサから受け取ったＭＰＥＧトランスポートストリームを第２メモリに書き込む。さらに、Ｒｅｃ１６０５ｊは、サービスマネージャ１６０４に依頼して、該番組のチャンネル識別子を受け取り、ＩＯ１６０５ｇに依頼して、第２メモリ１４０３に記憶された図１８に示す番組情報のうち、蓄積したマルチメディアデータに対応するものの番組情報を読み取る。
【０３６６】
さらに、該蓄積したマルチメディアデータに識別子を発行し、取得した番組情報と、マルチメディアデータを蓄積したファイル名から属性情報を作り、ＩＯ１６０３に依頼して、該属性情報を第２メモリ１４０３に書き込む。さらに、Ｒｅｃ１６０５ｊは、ＩＯ１６０５ｇに依頼して、属性情報テーブル読み出し、内容を更新して、ＩＯ１６０５ｇに依頼して第２メモリ１４０３に書き込むことにより、属性情報テーブルを更新する。
【０３６７】
次に、受信したデジタル放送のマルチメディアデータを、ネットワーク部１４１１から出力する場合の処理について説明する。
【０３６８】
まず、Ｊａｖａライブラリ１６０５の中にあるネットワークライブラリ１６０５ｅは、ネットワーク１３０４に接続された端末からの要求を受け、サービスマネージャ１６０４に要求されたチャンネルの識別子を与える。サービスマネージャ１６０４では、受け取ったチャンネルの識別子をＴｕｎｅｒ１６０５ｃに与えてチューニングを依頼し、さらにＣＡ１６０５ｄにデスクランブルを依頼する。続いて、サービスマネージャ１６０４は、ネットワークライブラリ１６０５ｅに処理を返す。
【０３６９】
ネットワークライブラリ１６０５ｅでは、上記Ｒｅｃ１６０５ｊと同様に、ＴＳデコーダ１４０７、ＴＳマルチプレクサ１４１０を制御して、該番組の映像データ、音声データ、セクションデータよりＭＰＥＧトランスポートストリームを作成する。
【０３７０】
さらに、ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂのＮＥＴ１６０１ｂ４に送信先のアドレスを与える。続いて、ネットワークライブラリ１６０５は、ＴＳマルチプレクサ１４１０から受け取ったＭＰＥＧ２トランスポートストリームを、送信するアプリケーションレベルのプロトコルに応じた形式に変換して、ＮＥＴ１６０１ｂ４に順次引き渡す。
【０３７１】
アプリケーションレベルのプロトコルとは、例えば、ＨＴＴＰやＲＴＰといったものである。これにより、ＮＥＴ１６０１ｂ４は、送信先アドレスを参照して、引き渡されたデータをＩＰネットワークのパケットに変換し、ネットワーク部１４１１に引き渡す。ネットワーク部１４１１では、引き渡されたデータを、接続されたネットワークの物理メディアに応じた信号に変換して出力する。
【０３７２】
次に、第２メモリ１４０３に蓄積したマルチメディアデータを再生する場合の処理について説明する。
【０３７３】
サービスマネージャ１６０４は、コンテンツの識別子を受け取ると、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇに依頼して、第２メモリ１４０３から属性情報テーブル２５２１を読み出し、該識別子のコンテンツの属性情報を記録したファイルを検索する。図２７の属性情報テーブルにて、コンテンツの識別子が１の場合、該ファイルは０００１．ａｔｔｒにあたる。
【０３７４】
続いて、サービスマネージャ１６０４は、ＩＯ１６０５ｇに依頼して、第２メモリ１４０３から該属性情報を記録したファイルを読み出す。読み出した属性情報から、該コンテンツのマルチメディアデータを記録したファイル名を取得する。図２６の属性情報の場合、このファイル名は０００１．ｍ２ｔｓが対応する。
【０３７５】
続いて、サービスマネージャ１６０４は、ＩＯ１６０５ｇに依頼して、該マルチメディアデータのファイルからＭＰＥＧトランスポートストリームを読み出す。ＩＯ１６０５ｇは、ＯＳ１６０１のライブラリ１６０１ｂを通してデータを読み出し、ＣＰＵ１４１２に引き渡す。
【０３７６】
サービスマネージャ１６０４は、ＯＳ１６０１のライブラリ１６０１ｂを通して、読み出したＭＰＥＧトランスポートストリームを多重分離部１４０５に引き渡す。
【０３７７】
次にサービスマネージャ１６０４は、Ｊａｖａライブラリの中にあるＣＡ１６０５ｄに、デスクランブラはデータをデスクランブルせず、スルーするように依頼する。
【０３７８】
ＣＡ１６０５ｄは、ＯＳ１６０１のライブラリ１６０１ｂの限定解除１６０１ｂ２を通してデスクランブラ１４０６に情報を与える。これにより、デスクランブラ１４０６は、多重分離部１４０５から引き渡されたデータを、そのままＴＳデコーダ１４０７に引き渡す。
【０３７９】
次にサービスマネージャ１６０４は、読み出した属性情報からチャンネルの識別子もしくはプログラムナンバーを読み出し、Ｊａｖａライブラリ１６０５の中にあるＪＭＦ１６０５ａに与えて、再生を依頼する。以下、上記の放送から受信したコンテンツの場合と同様の処理によって、映像データ、音声データの再生が行える。
【０３８０】
さらに、サービスマネージャ１６０４は、Ｊａｖａライブラリの中にあるＡＭ１６０５ｂにチャンネルの識別子もしくはプログラムナンバーを与えて、データ放送の再生を依頼する。以下、上記の放送から受信したコンテンツと同様の処理によって、データ放送の再生が行える。
【０３８１】
Ｊａｖａライブラリ１６０５は、第２メモリ１４０３に格納されている複数のＪａｖａライブラリの集合である。本実施の形態では、Ｊａｖａライブラリ１６０５は、ＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、Ｔｕｎｅｒ１６０５ｃ、ＣＡ１６０５ｄ、ネットワークライブラリ１６０５ｅ、再生Ｌｉｂ１６０５ｆ、ＩＯ１６０５ｇ、ＡＷＴ１６０５ｈ、ＳＩ１６０５ｉ、および、Ｒｅｃ１６０５ｊ等を含んでいる。
【０３８２】
ＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、Ｔｕｎｅｒ１６０５ｃ、ＣＡ１６０５ｄ、Ｒｅｃ４０５ｊの機能は、既に説明したため、ここでの説明は省略する。
【０３８３】
再生Ｌｉｂ１６０５ｆは、第２メモリ１４０３が記憶している、現在再生しているチャンネルの識別子をＪａｖａプログラムに渡すためのＪａｖａ言語のクラスおよびメソッドを（以下Ｊａｖａ  ＡＰＩと記述）提供する。このＪａｖａ  ＡＰＩを利用することで、Ｊａｖａプログラムは、現在再生中のチャンネルを知ることができる。
【０３８４】
ＩＯ１６０５ｇは、Ｊａｖａプログラムが第２メモリ１４０３にデータを書き込むためのＪａｖａ  ＡＰＩ、あるいは、その書き込んだデータを第２メモリ１４０３から読み込むためのＪａｖａ  ＡＰＩをＪａｖａプログラムに提供する。このＡＰＩを利用することで、Ｊａｖａプログラムは、任意のデータを第２メモリ１４０３に保存することができる。この保存されたデータはデータ出力装置１３０１の電源がオフになっても消えないので、データ出力装置１３０１の電源が投入された後、再びそのデータを読み込むことができる。
【０３８５】
ＡＷＴ１６０５ｈは、Ｊａｖａプログラムが描画を行ったり、入力部１４０１からのキー入力通知を受け取るためのＪａｖａ  ＡＰＩを提供する。具体的には、「Ｔｈｅ  Ｊａｖａ  ｃｌａｓｓ  Ｌｉｂｒａｒｉｅｓ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ，Ｖｏｌｕｍｅ  ２」（ＩＳＢＮ０−２０１−３１００３−１）で既定されるｊａｖａ．ａｗｔパッケージ、ｊａｖａ．ａｗｔ．ｅｖｅｎｔパッケージ及びその他のｊａｖａ．ａｗｔのサブパッケージが相当する。ここでは、詳細な説明を省略する。
【０３８６】
ＳＩ１６０５ｉは、Ｊａｖａプログラムがチャンネル情報や電子番組表情報を取得するＪａｖａ  ＡＰＩを提供する。具体的には、Ｊａｖａ  ＴＶ仕様などが存在する。また、生のバイナリデータを放送中のＭＰＥＧ２トランスポートストリームから取得するＭＰＥＧセクションフィルタＡＰＩがＯＣＡＰ仕様の中で定義されており、送信されてきた独自の電子番組データをＪａｖａアプリケーションが理解して取り扱うことも出来る。
【０３８７】
ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂのＮＥＴ１６０１ｂ４を通して、ネットワーク１３０４に接続された、端末１３０２および端末１３０３と通信するものである。通信は、コンテンツ一覧やＥＰＧの送信、端末からのマルチメディアデータ送信や、送信中断、送信再開、送信終了要求の受信、およびマルチメディアデータの送信である。
【０３８８】
図２８は、ネットワークライブラリ１６０５ｅの内部構成の一例を示すブロック図である。ネットワークライブラリ１６０５ｅは、制御部２８０１と、情報受信部２８０２と、データ出力部２８０３と、属性管理部２８０４と、データ受信部２８０５とを含む。なお、ネットワークライブラリ１６０５ｅは、ＩＰネットワークに関連する他の機能を含んでも良い。
【０３８９】
制御部２８０１は、ダウンロードしたＪａｖａアプリケーションに対して、ネットワークライブラリ１６０５ｅが実現する機能を提供する。すなわち、制御部２８０１は、Ｊａｖａアプリケーションに対してＪａｖａ  ＡＰＩを提供し、Ｊａｖａアプリケーションが、このＡＰＩを呼び出すことで、ネットワークを利用した機能が実行できる。
【０３９０】
制御部２８０１は、Ｊａｖａ  ＡＰＩが呼び出されると、適宜、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用して処理を行う。
【０３９１】
また、制御部２８０１は、必要に応じて、Ｊａｖａアプリケーションのコールバック関数を用いて、Ｊａｖａアプリケーションに通知を行う。
【０３９２】
図２９は、ネットワークライブラリ１６０５ｅの内部構成に含まれる制御部２８０１が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０３９３】
図２９（１）メソッドｃｏｌｌｅｃｔＤｅｖｉｃｅ（）は、ネットワーク１３０４に接続されている外部装置の情報を集め、その情報としてＮｅｔＤｅｖｉｃｅオブジェクトの配列を返す。失敗時にはｎｕｌｌを返す。本メソッドにより、ネットワーク１３０４に接続された機器の情報を得ることができる。
【０３９４】
図３０は、ネットワークライブラリ１６０５ｅで使用されるＮｅｔＤｅｖｉｃｅクラスの構成の一例を示す図である。
【０３９５】
図３０で、ａｄｄｒは該装置のネットワークアドレスを、ｆｒｉｅｎｄｌｙＮａｍｅは該装置につけたニックネームを、ｄＴｙｐｅは該装置の種別を表し、０がデジタル放送を受信可能なデータ出力装置、１がデジタル放送受信部を持たないデータ出力装置、２が端末を表すこととする。このような情報取得は、ＵＰｎＰ  ＤＡに定義された方法によって行うことが可能であるため、処理の詳細は省略する。
【０３９６】
図２９（２）メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）は、引数ｈａｎｄｌｅｒで与えられた、ＳｅｒｖＨａｎｄｌｅｒインタフェースを実装したハンドラをシステムに登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｊａｖａアプリケーションは、該ハンドラを登録することにより、ネットワークライブラリ１６０５ｅからコールバックを受けることができる。
【０３９７】
図３１は、ネットワークライブラリ１６０５ｅで使用されるＳｅｒｖＨａｎｄｌｅｒインタフェースの構成の一例を示す図である。
【０３９８】
図３１において、ＳｅｒｖＨａｎｄｌｅｒインタフェースのメソッドｎｏｔｉｆｙＣｈａｎｎｅｌＩＤ（）は、端末からマルチメディアデータ送信を要求されたチャンネルの識別子を、Ｊａｖａアプリケーションに通知するものである。
【０３９９】
Ｊａｖａアプリケーションは、サービスマネージャ１６０４に該識別子を与えて、チャンネルのチューニング、デスクランブルを依頼し、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すことで、ネットワークライブラリ１６０５ｅに制御を返す。
【０４００】
なお、上記チャンネルの識別子は、ネットワークライブラリ１６０５ｅが、サービスマネージャ１６０４に直接引き渡して、チューニング、デスクランブルを依頼する構成であっても良い。
【０４０１】
また、メソッドｎｏｔｉｆｙＲｅｃｏｒｄｉｎｇ（）は、Ｊａｖａアプリケーションにチャンネルの識別子を通知して、そのデータの蓄積を依頼するものであり、戻り値として、蓄積したコンテンツの識別子を受け取る。Ｊａｖａアプリケーションは、サービスマネージャ１６０４に該チャンネルの識別子を与えて、そのマルチメディアデータの蓄積を依頼し、コンテンツの識別子を受け取る。
【０４０２】
サービスマネージャ１６０４は、上記の通り、Ｒｅｃ１６０５ｊを用いて該マルチメディアデータを蓄積する。なお、上記チャンネルの識別子は、ネットワークライブラリ１６０５ｅが、サービスマネージャ１６０４に直接引き渡して、蓄積を依頼する構成であっても良い。
【０４０３】
図２９（３）メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、マルチメディアサーバ機能の起動および動作を依頼するものであり、正常に処理が終了すればｔｒｕｅを返し、異常がおこればｆａｌｓｅを返す。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅの制御部２８０１は、必要に応じて、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用し、またＪａｖａアプリケーションやサービスマネージャ１６０４へ通知を行うことで、マルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
【０４０４】
図２９（４）メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトで表されるネットワーク１３０４に接続された装置に対するマルチメディアサーバとして動作するように依頼するものであり、正常に処理が終了すればｔｒｕｅを返し、異常が起こればｆａｌｓｅを返す。
【０４０５】
図３０は、ＲｅｍｏｔｅＤｅｖｉｃｅクラスの一例を示す図である。
【０４０６】
図３０で、ＲｅｍｏｔｅＤｅｖｉｃｅクラスは、ＮｅｔＤｅｖｉｃｅクラスの拡張クラスとして定義される。
【０４０７】
メンバ変数ｓは、ＮｅｔＤｅｖｉｃｅクラスのメンバ変数によって表される装置と通信するＳｏｃｋｅｔオブジェクトを表す。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅの制御部２８０１は、必要に応じて、情報通信部２８０２、データ出力部２８０３、属性管理部２８０４、データ受信部２８０５や、他のＪａｖａライブラリ１６０５およびＯＳ１６０１のライブラリ１６０１ｂを利用し、またＪａｖａアプリケーションやサービスマネージャ１６０４へ通知を行うことで、与えられた装置へマルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
【０４０８】
図２９（５）メソッドｓｔｏｐＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）もしくはｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）によって起動されたマルチメディアサーバの終了を依頼するものである。ネットワークライブラリ１６０５ｅは、本メソッドが呼び出されれば、起動中のマルチメディアサーバの動作を終了させる。
【０４０９】
図２９（６）メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）は、引数ｄｅｖで与えられたネットワーク１３０４に接続されている装置に、第２メモリ１４０３に蓄積しているマルチメディアデータの一覧を送信するものである。この通信は、ＵＰｎＰ  ＡＶに定義された方法にて実現できるため、詳細は省略する。
【０４１０】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、属性情報テーブル２５２１を読み出し、また、読み出した属性情報テーブ２５２１から得られる各コンテンツの属性情報を順に読み出す。また、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いてＵＲＩテーブル２５３１を読み出す。
【０４１１】
ネットワークライブラリ１６０５ｅは、ＵＲＩテーブル２５３１を検索することにより、各コンテンツにアクセスするためのＵＲＩを取得し、属性情報とあわせて、ＵＰｎＰ  ＡＶで決められたフォーマットのコンテンツ一覧を作成する。そして、ＯＳ１６０１のライブラリ１６０１ｂの中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、作成したコンテンツ一覧を送信する。送信には、後述のデータ出力部のメソッドｓｅｎｄＤａｔａ（）を用いても良い。
【０４１２】
図３２は、本発明の実施の形態２におけるＵＲＩテーブル２５３１の構成の一例を示す図である。
【０４１３】
図３２において、列３２０１は各コンテンツの識別子を示し、列３２０１は各コンテンツにアクセスするためのＵＲＩを表す。各行３２１１〜３２１３は、コンテンツの識別子とＵＲＩの組が表されている。例えば、行３２１１は、識別子１のコンテンツのＵＲＩは、ｒｔｓｐ：／／１９２．１６８．０．３／ＡＶＤａｔａ／０００１．ｍ２ｔｓであることを表している。
【０４１４】
図２９（７）メソッドｓｅｎｄＥＰＧＤａｔａ（）は、引数ｄｅｖで与えられたネットワーク１３０４に接続されている装置に、ＥＰＧ情報を送信するものである。この通信は、メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）と同様に、ＵＰｎＰ  ＡＶに定義された方法にて実現できるため、詳細は省略する。
【０４１５】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、第２メモリ１４０３に記憶されている、図１８に示したＥＰＧ情報を読み出し、ＵＰｎＰ  ＡＶで定義されたフォーマットに変換する。そして、ＯＳ１６０１のライブラリ１６０１ｂの中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、変換したＥＰＧ情報を送信する。
【０４１６】
なお、ＵＲＩは各チャンネルごとに割り振られており、第２メモリ１４０３にＵＲＩテーブル２５３１と同じ形式で蓄積されており、そのテーブルを読み出すことで取得するものとする。送信には、後述のデータ出力部のメソッドｓｅｎｄＤａｔａ（）を用いても良い。また、第２メモリ１４０３に記憶している、図１８に示すＥＰＧ情報のデータをそのまま送信する構成であっても良い。
【０４１７】
図２９（８）メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏで与えられた再開位置情報を、第２メモリ１４０３から削除するもので、もともと存在しないか、削除が成功すればｔｒｕｅを返し、削除に失敗すればｆａｌｓｅを返す。引数ｒＩｎｆｏは、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスのインスタンスである。
【０４１８】
図３３は、ネットワークライブラリ１６０５ｅで使用されるＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【０４１９】
図３３において、メンバ変数ｃｉｄは、図２６および図２７に示した、蓄積されたコンテンツの識別子を表すものであり、メンバ変数ｐｉｄは、本ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトによって表されるマルチメディアデータ送信の中断を特定する識別子を表すものであり、メンバ変数ｒｐは、マルチメディアデータの出力を再開するデータ位置を、該マルチメディアデータが書き込まれているファイルの先頭からのバイト位置で表したものであり、メンバ変数ｒｔｅｒｍは、該マルチメディアデータの出力を再開する場合の送信先端末が指定されている場合に、その端末を表すＮｅｔＤｅｖｉｃｅオブジェクトを表すものである。メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏとコンテンツ識別子および中断の識別子が一致する再開位置情報を削除する。再開位置情報は、図２５に示した通り、再開位置情報テーブル２５３２として、第２メモリ１４０３に記憶されている。
【０４２０】
図３４は、本発明の実施の形態２における再開位置情報テーブル２５３２の構成の一例を示す図である。
【０４２１】
図３４において、列３４０１はコンテンツの識別子を表し、列３４０２はデータ出力中断の識別子を表し、列３４０３はマルチメディアデータの出力を再開するデータ位置を表し、列３４０４は該マルチメディアデータの出力を再開する場合の送信先端末を表す。再開位置情報はこれらの組として表され、行３４１１〜３４１３がそれにあたる。
【０４２２】
なお、行３４１１の再開位置情報では、データ出力再開時の端末が指定されているため、列３４０４に端末が示されているが、行３４１２および行３４１３の再開位置情報では、データ出力再開時の端末が指定されていないため、列３４０４には示されていない。
【０４２３】
なお、ネットワークライブラリ１６０５ｅは、中断の識別子を割り振らない構成であっても良い。そのとき、本メソッドは、コンテンツ識別子が一致するものを削除する構成であっても良い。
【０４２４】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まず、ＩＯ１６０５ｇを用いて、再開位置情報テーブル２５３２を読み出す。続いて、再開位置情報テーブル２５３２を検索し、列３４０１に記述されているコンテンツの識別子と、列３４０２に示されている中断の識別子とが、引数ｒＩｎｆｏのものと一致する行を検索する。
【０４２５】
該行が見つかれば、再開位置情報テーブル２５３２からその行を削除する。続いて、ＩＯ１６０５ｇを用いて、更新した再開位置情報テーブル２５３２を第２メモリ１４０３に書き込む。さらに、後述する属性管理部のメソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）に該コンテンツの識別子と再開位置情報テーブル２５３２の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
【０４２６】
図２９（９）メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）は、引数ｒＩｎｆｏで与えられた再開位置情報を、ＩＯ１６０５ｇを通して、第２メモリ１４０３に書き込むものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０４２７】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｒＩｎｆｏで与えられた再開位置情報の中断に識別子を発行して、ｒＩｎｆｏのメンバ変数ｐｉｄに設定する。続いて、ＩＯ１６０５ｇを用いて、再開位置情報テーブル２５３２を読み出す。読み出した再開位置情報テーブル２５３２に、ｒＩｎｆｏの内容を表す行を追加して更新する。続いて、ＩＯ１６０５ｇを用いて、更新した再開位置情報テーブル２５３２を第２メモリ１４０３に書き込む。
【０４２８】
続いて、後述する属性管理部のメソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）に該コンテンツの識別子と再開位置情報テーブル２５３２の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
【０４２９】
図２９（１０）メソッドｇｅｔＰａｕｓｅＳｔａｔｕｓ（）は、第２メモリ１４０３から再開位置情報テーブル２５３２を読み出し、その内容をＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すものであり、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。
【０４３０】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まず、ＩＯ１６０５ｇを用いて、第２メモリ１４０３から再開位置情報テーブル２５３２を読み出す。続いて、再開位置情報テーブル２５３２の各行ごとに、その内容を入れたＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを作成して、配列を作成する。すべての行の内容を含む配列を作り終わると、その配列を返す。また、再開位置情報テーブル２５３２が無いか、処理途中でエラーが起きればｎｕｌｌを返す。また、再開位置情報テーブル２５３２に行が全く無ければ、要素数が０の配列を返す。
【０４３１】
図２９（１１）メソッドｓｅｔＳｅｒｖｅｒＳｔａｔｕｓ（）は、Ｊａｖａアプリケーションからネットワークライブラリ１６０５ｅへ、データ中断再開をサポートするか否かを設定する。引数にて０が与えられるとデータ中断再開をサポートしないマルチメディアサーバとして働き、引数にて非０が与えられると、データ中断再開をサポートするマルチメディアサーバとして働く。
【０４３２】
情報受信部２８０２は、ＯＳ１６０１のライブラリ１６０１の中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、指定されたネットワーク１３０４に接続されている外部装置からの接続要求受け入れと、メッセージの受信を行うものである。
【０４３３】
情報受信部２８０２は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０４３４】
図３５は、ネットワークライブラリ１６０５ｅの内部構成に含まれる情報受信部２８０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０４３５】
図３５（１）メソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）は、引数ｓで与えられるＳｏｃｋｅｔオブジェクトによって、外部装置からの待ち受けを行い、接続要求のあった装置との接続を確立して、該装置の情報と、該装置と通信するＳｏｃｋｅｔオブジェクトを含むＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返すものであり、成功すれば該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返し、失敗すればｎｕｌｌを返すものである。
【０４３６】
例えば、端末からＲＴＳＰセッションの接続要求を受けた場合は、ＲＴＳＰメッセージを送受信するためのＳｏｃｋｅｔオブジェクトと該要求のあった端末のＩＰアドレスからＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成できる。
【０４３７】
なお、本メソッドは、さらに、引数として、ＮｅｔＤｅｖｉｃｅオブジェクトの配列を与えられ、該配列の各要素で示される外部装置からの接続要求のみにこたえる構成であっても良い。また、本メソッドは、同様にＮｅｔＤｅｖｉｃｅオブジェクトの配列を引数として与えられ、該配列の各要素で示される外部装置からの接続要求の場合には、該当するＮｅｔＤｅｖｉｃｅオブジェクトと通信するＳｏｃｋｅｔオブジェクトからＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成する構成であっても良い。
【０４３８】
図３５（２）メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置からのメッセージを、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて受信し、バイトデータの配列として返すものであり、成功すればメッセージのバイト列を返し、失敗すればｎｕｌｌを返す。
【０４３９】
図３５（３）メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）は、引数ｄｅｖで与えられた外部装置からのＲＴＳＰのリクエストメッセージを、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて受信し、内容を解釈して、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトとして返すものであり、成功すれば該リクエストメッセージを表すＲｅｑｕｅｓｔＩｎｆｏオブジェクトを返し、失敗すればｎｕｌｌを返す。
【０４４０】
図３６は、ネットワークライブラリ１６０５ｅで使用されるＲｅｑｕｅｓｔＩｎｆｏクラスの構成の一例を示す図である。図３６において、メンバ変数ｒｅｑｕｅｓｔＴｙｐｅは要求の種類を表し、０がＳＥＴＵＰを、１がＰＬＡＹを、２がＰＡＵＳＥを、３がＴＥＡＲＤＯＷＮをそれぞれ表すものとする。
【０４４１】
また、メンバ変数ｓｅｑはＲＴＳＰリクエストのＳｅｑヘッダの値であるシーケンス番号を表す。メンバ変数ｓｅｓｓｉｏｎは、ＲＴＳＰリクエストのＳｅｓｓｉｏｎヘッダの値であるセッション番号を表す。メンバ変数ｃｏｎｔｅｎｔＵＲＩは、要求されているコンテンツのＵＲＩを表す文字列である。メンバ変数ｒａｎｇｅは、ＲＴＳＰリクエストのＲａｎｇｅヘッダの値である文字列である。メンバ変数ｅｘｔｅｎｔＨｅａｄｅｒは、ＲＴＳＰリクエストの拡張ヘッダを格納するＳｔｒｉｎｇオブジェクトの配列であり、拡張ヘッダ１個につき、１個のＳｔｒｉｎｇオブジェクトに格納する。
【０４４２】
データ出力部２８０３は、ＯＳ１６０１のライブラリ１６０１の中のＮＥＴ１６０１ｂ４を通じてネットワーク部１４１１を制御し、指定されたネットワーク１３０４に接続されている外部装置に、指定されたデータを出力するものである。
【０４４３】
データ出力部２８０３は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０４４４】
図３７は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ出力部２８０３が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０４４５】
図３７（１）メソッドｓｅｎｄＤａｔａ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｍｅｓで与えられたデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０４４６】
図３７（２）メソッドｓｅｎｄＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｒｅｓで与えられたＲＴＳＰメッセージを生成して送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。引数ｒｅｓは、ＲｅｓｐｏｎｓｅＩｎｆｏクラスのインスタンスで与えられる。
【０４４７】
図３８は、ネットワークライブラリ１６０５ｅで使用されるＲｅｓｐｏｎｓｅＩｎｆｏクラスの構成の一例を示す図である。図３８において、メンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅはレスポンスコードを表し、例えば、レスポンスが２００  ＯＫのレスポンスであれば、ｒｅｓｐｏｎｓｅＣｏｄｅは２００となる。レスポンスコードについては、ＲＴＳＰのＲＦＣを参照されたい。
【０４４８】
メンバ変数ｓｅｑは、ＲＴＳＰレスポンスのＳｅｑヘッダの値となるシーケンス番号である。メンバ変数ｓｅｓｓｉｏｎは、ＲＴＳＰレスポンスのＳｅｓｓｉｏｎヘッダの値であるセッション番号を表す。メンバ変数ｒａｎｇｅは、ＲＴＳＰレスポンスのＲａｎｇｅヘッダの値である文字列である。メンバ変数ｈｅａｄｅｒｓは、ＲＴＳＰレスポンスのほかのヘッダを格納するＳｔｒｉｎｇオブジェクトの配列であり、ヘッダ１個につき、１個のＳｔｒｉｎｇオブジェクトを格納する。
【０４４９】
図３７（３）メソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、引数ｉｓで与えられたＩｎｐｕｔＳｔｒｅａｍからマルチメディアデータを読み出して、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、読み出したマルチメディアデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドは、ｉｓからＥＯＦを読み出すまで処理が行われる。引数ｄｅｖは、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰクラスのオブジェクトで与えられる。
【０４５０】
図３０は、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰクラスの構成の一例を示す図である。本クラスは、ＮｅｔＤｅｖｉｃｅクラスの拡張クラスとして定義されている。メンバ変数ｄｓは、ＮｅｔＤｅｖｉｃｅクラスのメンバ変数によって表される装置とＵＤＰベースで通信するＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを表す。
【０４５１】
図３７（４）メソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）は、引数ｄｅｖで与えられた装置へのマルチメディアデータの送信を停止させるもので、停止させるまでに送信したデータのバイト数を返すものである。
【０４５２】
属性管理部２８０４は、第２メモリ１４０３に記憶したコンテンツの属性情報のうち、データ出力中断を表す属性を更新するものである。
【０４５３】
属性管理部２８０４は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０４５４】
図３９は、ネットワークライブラリ１６０５ｅの内部構成に含まれる情報受信部２８０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０４５５】
図３９（１）ｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツの属性情報の「データ出力中断中」の値を、引数ｉｓＰａｕｓｅで与えられた値で設定するものである。すなわち、引数ｉｓＰａｕｓｅが、ｔｒｕｅであるならば、引数ｃｉｄで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性を与えるものであり、引数ｉｓＰａｕｓｅがｆａｌｓｅの場合は、引数ｃｉｄで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性があれば、それを削除するものである。成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０４５６】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、ＩＯ１６０５ｇを用いて、属性情報テーブル２５２１を読み出し、該コンテンツの識別子をもつ属性情報を検索する。続いて、ＩＯ１６０５ｇを用いて、該コンテンツの属性情報を記述したファイルから属性情報を読み出す。続いて、「データ出力中断中」の属性を削除して更新し、ＩＯ１６０５ｇを用いて、更新した属性情報を第２メモリ１４０３に書き込み、ｔｒｕｅを返して処理を終了する。
【０４５７】
図３９（２）メソッドｕｐｄａｔｅＡｔｔｒｉｂｕｔｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツに関し、引数ｒＩｎｆｏで与えられた再開位置情報テーブル２５３２の内容から、該コンテンツの属性情報にある「データ出力中断中」の属性の更新を行うもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０４５８】
本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｒＩｎｆｏで与えられた再開位置情報テーブル２５３２の内容の中に、引数ｃｉｄで与えられた識別子のコンテンツに関する情報があるか否かを調べる。これは、図３４に示した再開位置情報テーブル２５３２の列３４０１を調べることによって行える。
【０４５９】
再開位置情報テーブル２５３２の中に、該コンテンツに関する情報がある場合は、ネットワークライブラリ１６０５ｅは、引数としてｃｉｄの値とｔｒｕｅを与えてメソッドｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）を呼び出して、属性情報の更新を行う。また、再開位置情報テーブル２５３２の中に、該コンテンツに関する情報が無い場合は、ネットワークライブラリ１６０５ｅは、引数としてｃｉｄの値とｆａｌｓｅを与えてメソッドｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）を呼び出して、属性情報の更新を行う。いずれの場合も、ｓｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅ（）の戻り値をそのまま返す。
【０４６０】
データ受信部２８０５は、データ出力装置１３０１のＴＳデコーダ１４０７とＴＳマルチプレクサ１４１０をＯＳ１６０１のライブラリ１６０１ｂを通じて制御し、ＴＳデコーダ１４０７によってフィルタリングされた、映像、音声、セクションデータをＴＳマルチプレクサ１４１０によってＭＰＥＧ２トランスポートストリームに構成して読み出すものである。
【０４６１】
データ受信部２８０５は、制御部２８０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０４６２】
図４０は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ受信部２８０５が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０４６３】
図４０（１）メソッドｏｐｅｎＰｒｏｇｒａｍ（）は、ＴＳデコーダ１４０７およびＴＳマルチプレクサ１４１０を制御し、ＴＳマルチプレクサ１４１０が構成したＭＰＥＧ２トランスポートストリームを読み出すＩｎｐｕｔＳｔｒｅａｍのオブジェクトを返す。
【０４６４】
なお、失敗時にはｎｕｌｌが返る。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、引数ｃｉｄで指定されたチャンネルの識別子から得られるＰＡＴ、ＰＭＴから、該チャンネルに対応する映像データ、音声データ、セクションデータのＰＩＤを取得し、ＯＳ１６０１のライブラリ１６０１ｂを通じてＴＳデコーダ１４０７に与えてフィルタリングさせ、該映像データ、音声データ、セクションデータをＴＳマルチプレクサ１４１０に引き渡させる。
【０４６５】
このとき、セクションデータは各バージョンナンバーごとに１回のみ出力する構成であっても良い。さらに、ネットワークライブラリ１６０５ｅは、ＯＳ１６０１のライブラリ１６０１ｂを通じてＴＳでＴＳマルチプレクサ１７１０を制御し、ＴＳデコーダ１４０７から引き渡されたデータから、ＭＰＥＧ２トランスポートを構成させ、ＣＰＵ１４１２へ引き渡させる。
【０４６６】
ここで、制御部２８０１のメソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）とメソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）の処理の詳細について説明する。
【０４６７】
まず、メソッドａｃｔＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）について説明する。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、まずｃｏｌｌｅｃｔＤｅｖｉｃｅ（）を呼び出し、ネットワークに接続された装置の認識を行う。また、Ｓｏｃｋｅｔオブジェクトを生成して、ＵＰｎＰ  ＤＡおよびＵＰｎＰ  ＡＶに定義された通信の待ち受けを行う。
【０４６８】
これらは、別のスレッドもしくはプロセスを生成して行わせる。これにより、随時ＵＰｎＰ  ＤＡに規定された通信を行って、接続されている装置の一覧を更新する。また、ネットワークに接続された端末から、ＵＰｎＰ  ＡＶに定義されたコンテンツ一覧取得要求を受けた場合、メソッドｓｅｎｄＣｏｎｔｅｎｔＬｉｓｔ（）を呼び出して、該要求を発行した端末に、コンテンツ一覧を、ＵＰｎＰ  ＡＶの定義にしたがって送信する。
【０４６９】
また、同様に、ネットワークに接続された端末から、ＥＰＧデータ送信要求を受けた場合、メソッドｓｅｎｄＥＰＧＤａｔａ（）を呼び出して、該要求を発行した端末に、ＥＰＧデータを、ＵＰｎＰ  ＡＶの定義にしたがって送信する。さらに、Ｓｏｃｋｅｔオブジェクトｓを生成し、ｓを引数として情報受信部２８０２のメソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）を呼び出すことにより、ネットワーク１３０４に接続された端末１３０２および端末１３０３からのＲＴＳＰセッションの接続要求を待ち受ける。メソッドａｃｃｅｐｔＣｏｎｎｅｔｉｏｎ（）が接続要求を受け入れ、ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返すと、該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）を呼び出すことで、接続要求のあった端末へのマルチメディアサーバとしての機能を実行する。
【０４７０】
なお、本メソッドは、呼び出されたときに、スレッドもしくはプロセスを新規に生成し、その上で動作する構成であっても良い。また、メソッドａｃｃｅｐｔＣｏｎｎｅｃｔｉｏｎ（）により接続要求を受け入れると、スレッドもしくはプロセスを新規に生成し、その上でメソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）を呼び出す構成であっても良い。
【０４７１】
次に、メソッドｄｏＭｕｌｔｉｍｅｄｉａＳｅｒｖｅｒ（）の動作について説明する。本メソッドが呼び出されると、ネットワークライブラリ１６０５ｅは、情報受信部２８０２のメソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）を呼び出して、ＲＴＳＰリクエストメッセージを受信して解釈する。そして、リクエストの内容に応じて処理を行い、またＲＴＳＰレスポンスメッセージを作成して、情報受信部２８０２のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して、端末へ送信する。以下、ＲＴＳＰリクエストに応じた処理について、それぞれ説明する。
【０４７２】
まず、ＲＴＳＰリクエストがＳＥＴＵＰであった場合、Ｊａｖａライブラリ１６０５の中のＩＯ１６０５ｇを用いて、ＵＲＩテーブル２５３１を読み出し、該リクエストに含まれるＵＲＩに対応するコンテンツを検索する。該コンテンツが第２メモリ１４０３に蓄積されているコンテンツの場合、ＩＯ１６０５ｇを用いて、該コンテンツのファイルを読み出すＩｎｐｕｔＳｔｒｅａｍオブジェクトを生成する。また、該リクエストが放送中のチャンネルを表している場合、メソッドｒｅｇｉｓｔａｒＨａｎｄｌｅｒ（）で登録されたＳｅｒｖＨａｎｄｌｅｒを実装したハンドラのメソッドｎｏｔｉｆｙＣｈａｎｎｅｌＩＤ（）を呼び出してチャンネルの識別子を与え、チューニングを依頼する。
【０４７３】
さらに、データ受信部２８０５のメソッドｏｐｅｎＰｒｏｇｒａｍ（）を呼び出して、該コンテンツを読み出すＩｎｐｕｔＳｔｒｅａｍを作成する。いずれの場合も、ＩｎｐｕｔＳｔｒｅａｍが得られれば、ＲＴＳＰレスポンスメッセージを表すＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを作成し、メンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅには２００を設定し、メンバ変数ｓｅｑには、ＲＴＳＰリクエストと同じ値を設定する。
【０４７４】
また、該ＲＴＳＰセッションのセッション番号を発行して、メンバ変数ｓｅｓｓｉｏｎに設定する。また、マルチメディアデータを通信するＲＴＰのポート番号を記述したヘッダを作成して、メンバ変数ｈｅａｄｅｒｓに設定する。さらに、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して、レスポンスメッセージを端末に送信する。さらに、受信したＲＴＳＰリクエストのヘッダＴｒａｎｓｐｏｒｔの値から、端末がデータ受信に使用するポート番号を取得し、さらに、データ出力装置１３０１がこのＳＥＴＵＰで設定されたコンテンツを送信するＲＴＰのポート番号を発行する。これらポート番号と本メソッドの引数のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトから、まずＲＴＰ通信に用いるＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを生成する。さらに生成したＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトと引数のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトから、ＲｅｍｏｔｅＤｅｖｉｃｅＵＤＰオブジェクトを作成する。ＩｎｐｕｔＳｔｒｅａｍが得られなければ、対応のエラーコードを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを作成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。
【０４７５】
次に、ＲＴＳＰリクエストがＳＥＴＵＰ済みのＵＲＩに対するＰＬＡＹであった場合、それが放送中のチャンネルに対するものであれば、まず、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、上記で取得したＩｎｐｕｔＳｔｒｅａｍオブジェクトと、上記で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。
【０４７６】
また、ＰＬＡＹが第２メモリ１４０３に蓄積されているコンテンツに対するものであれば、メソッドｒｅｃｅｉｖｅＲｅｑｕｅｓｔ（）が返したＲｅｑｕｅｓｔＩｎｆｏオブジェクトのメンバ変数ｅｘｔｅｎｔＨｅａｄｅｒを調べ、Ｘ−Ｒｅｓｔａｒｔがあるか否かを検索する。Ｘ−Ｒｅｓｔａｒｔが無い場合、もしくは、あってもその値が「Ｙｅｓ」ではない場合は、次にメンバ変数ｒａｎｇｅの値に対応する分のデータを読み飛ばすように、ＳＥＴＵＰ時に取得したＩｎｐｕｔＳｔｒｅａｍをＳｅｅｋ機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
【０４７７】
さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、ＩｎｐｕｔＳｔｒｅａｍオブジェクトと、ＳＥＴＵＰ時で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。
【０４７８】
また、Ｘ−Ｒｅｓｔａｒｔがあってその値が「Ｙｅｓ」の場合、ネットワークライブラリ１６０５ｅは、メソッドｇｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、再開位置情報テーブル２５３２を読み出す。取得したＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクト配列を検索し、該コンテンツの再開位置情報を検索する。該コンテンツの再開位置情報が無い場合は、上記したＸ−Ｒｅｓｔａｒｔが無い場合と同様の処理を行う。
【０４７９】
該コンテンツの再開位置情報があれば、そのＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｒｐの値を読み取り、その値で示されるバイト数のデータを読み飛ばすように、ＳＥＴＵＰ時に取得したＩｎｐｕｔＳｔｒｅａｍをＳｅｅｋ機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
【０４８０】
さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。続いて、ＩｎｐｕｔＳｔｒｅａｍオブジェクトと、ＳＥＴＵＰ時で生成したＲＴＰ通信用のＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、データ出力部２８０３のメソッドｓｅｎｄＭｕｌｔｉｍｅｄｉａＤａｔａ（）を呼び出し、データ送信を開始させる。
【０４８１】
さらに、メソッドｒｅｍｏｖｅＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、再開したデータ出力に関する再開位置情報を再開位置情報テーブル２５３２から削除し、またコンテンツの属性も更新させる。なお、この削除は、ユーザからの指示により行われる構成であっても良い。
【０４８２】
さらに、後述する放送中のコンテンツをネットワークライブラリ１６０５ｅの処理によって蓄積したコンテンツの場合は、再開してすべて送信したあとに、そのコンテンツを第２メモリ１４０３から削除する構成であっても良い。また、このマルチメディアデータの削除は、ユーザからの指示により行われる構成であっても良い。また、Ｘ−Ｒｅｓｔａｒｔの値は、データ出力中断の識別子とし、該コンテンツの識別子と、データ出力中断の識別子とから、再開位置情報テーブル２５３３２を検索する構成であっても良い。また、再開位置情報に設定された再開時の送信先端末からの再開要求に対して、データ出力を再開し、それ以外の端末から再開要求が合った場合には、データ送信を行わないか、先頭もしくはＲａｎｇｅヘッダで指定された位置からのデータ送信を行う構成であっても良い。
【０４８３】
次に、ＲＴＳＰリクエストが、データ送信に対するＰＡＵＳＥであった場合について説明する。まず、第２メモリ１４０３に蓄積したコンテンツの送信に対するＰＡＵＳＥの場合、ネットワークライブラリ１６０５ｅは、データ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させ、送信済みのデータ数を取得する。次に、記憶しておいた送信前に呼び飛ばしたデータ数と、送信済みのデータ数の和を取ることにより、再開時の開始点を求める。
【０４８４】
続いて、この中断を識別する識別子を発行し、上記の再開開始点と該コンテンツの識別子とから、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを生成する。さらに、メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、この再開位置情報を再開位置テーブル２５３２へ追加するとともに、該コンテンツの属性情報を更新する。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。
【０４８５】
また、放送中のチャンネルに対するＰＡＵＳＥの場合は、ネットワークライブラリ１６０５ｅは、まずデータ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させる。続いて、メソッドｒｅｇｉｓｔａｒＨａｎｄｌｅｒ（）で登録されたＳｅｒｖＨａｎｄｌｅｒを実装したハンドラのメソッドｎｏｔｉｆｙＲｅｃｏｒｄｉｎｇ（）を呼び出してチャンネルの識別子を与え、該コンテンツの蓄積を依頼し、コンテンツの識別子を受け取る。
【０４８６】
続いて、この中断を識別する識別子を発行し、受け取ったコンテンツの識別子とから、ＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏオブジェクトを生成する。なお、再開位置はファイルの先頭なので、メンバ変数ｒｐは０を設定する。
【０４８７】
さらに、メソッドｓｅｔＰａｕｓｅＳｔａｔｕｓ（）を呼び出して、この再開位置情報を再開位置テーブル２５３２へ追加するとともに、該コンテンツの属性情報を更新する。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。
【０４８８】
なお、本実施の形態では、ＳｅｒｖＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＨａｎｌｄｅｒ（）を用いてＪａｖａアプリケーションに蓄積を依頼したが、ネットワークライブラリ１６０５ｅが、ＩＯ１６０５ｇを用いて、第２メモリ１４０３に書き込み、サービスマネージャ１６０４に該コンテンツの識別子と属性情報の作成を依頼する構成であっても良い。また、ＰＡＵＳＥリクエストにＸ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダを含み、その値が「Ｙｅｓ」の場合にのみ、上記のような再開位置情報の作成を行う構成であっても良い。また、ＰＡＵＳＥリクエストに拡張ヘッダとして、出力再開時の送信先端末が指定されており、ＲｅｓｔａｒｔＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｒｔｅｒｍに設定する構成であっても良い。
【０４８９】
次に、ＲＴＳＰリクエストがＴＥＡＲＤＯＷＮであった場合、マルチメディアデータを送信中であれば、データ出力部２８０３のメソッドｔｅｒｍｉｎａｔｅＴｒａｎｓｆｅｒ（）を呼び出して、データ送信を停止させる。さらに、ＳＥＴＵＰ時に取得したマルチメディアデータを読み出すＩｎｐｕｔＳｔｒｅａｍオブジェクトをｃｌｏｓｅする。さらに、２００  ＯＫのレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。さらに、ｔｒｕｅを返して、処理を終了する。
【０４９０】
上記以外のＲＴＳＰリクエストもしくは不正なリクエストを受けた場合、リクエストの内容に応じたエラーレスポンスメッセージを設定したＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成し、データ出力部２８０３のメソッドｓｅｎｄＭｅｓｓａｇｅ（）を呼び出して端末に送信する。
【０４９１】
次に、端末１３０２および端末１３０３について説明する。
【０４９２】
図４１は、本発明の実施の形態２における端末１３０２および端末１３０３の構成の一例を示すブロック図である。端末１３０２および端末１３０３は、それぞれ、入力部４１０１と、第１メモリ４１０２と、第２メモリ４１０３と、多重分離部４１０４と、ＴＳデコーダ４１０５と、映像出力部４１０６と、音声出力部４１０７と、ネットワーク部４１０８と、ＣＰＵ４１０９とを備える。
【０４９３】
入力部４１０１、第１メモリ４１０２、第２メモリ４１０３は、上記した本実施の形態におけるデータ出力装置１３０１の入力部１４０１、第１メモリ１４０２、第２メモリ１４０３と同様のものである。なお、端末１３０２および端末１３０３は、第２メモリ４１０３に、データ出力装置１３０１から受信したコンテンツ一覧やＥＰＧデータなどの、マルチメディアデータの識別子、タイトル、放送日時、放送チャンネルなど番組情報を蓄積する。
【０４９４】
多重分離部４１０４は、ＣＰＵ４１０９からＭＰＥＧトランスポートストリームを受け取り、ＣＰＵ４１０９から指定された情報を抽出し、ＣＰＵ４１０９に引き渡す。また、ＭＰＥＧトランスポートストリームをそのままＴＳデコーダ４１０５に引き渡す。
【０４９５】
ＴＳデコーダ４１０５は、ＣＰＵ４１０９から、音声データ、映像データの識別子を受け取る。さらに、多重分離部４１０４から受け取ったストリームから、受け取った音声データ、映像データの識別子に対応するデータを抽出する。抽出した映像データを映像出力部４１０６に、音声データを音声出力部４１０７に、それぞれ引き渡す。
【０４９６】
映像出力部４１０６、音声出力部４１０７は、上記した本実施の形態におけるデータ出力装置１３０１の映像出力部１４０８、音声出力部１４０９と同様のものである。
【０４９７】
ネットワーク部４１０８は、ネットワークインタフェースを含み、ＣＰＵ４１０９から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、ＩＰネットワークで規定されたパケットに変換して、ＣＰＵ４１０９へ引き渡す。
【０４９８】
ＣＰＵ４１０９は、第２メモリ４１０３が記憶するプログラムを実行することで、多重分離部４１０４、ＴＳデコーダ４１０５、ネットワーク部４１０８を制御する。
【０４９９】
図４２は、本発明の実施の形態２に係る端末１３０２および端末１３０３のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。本図は、第２メモリ４１０３に記憶され、ＣＰＵ４１０９に実行されるプログラムの構成の一例を示す。
【０５００】
プログラム４２００は、複数のサブプログラムで構成され、具体的にはＯＳ４２０１、ＪａｖａＶＭ４２０２、サービスマネージャ４２０３、Ｊａｖａライブラリ４２０４で構成される。
【０５０１】
ＯＳ４２０１は、端末１３０２および端末１３０３の電源が投入されると、ＣＰＵ４１０９が起動するサブプログラムである。ＯＳは、オペレーティングシステムの略であり、Ｌｉｎｕｘ等が一例である。ＯＳ４２０１は、他のサブプログラムを平行して実行するカーネル４２０１ａ及びライブラリ４２０１ｂで構成される公知の技術の総称であり、詳細な説明は省略する。
【０５０２】
本実施の形態においては、ＯＳ４２０１のカーネル４２０１ａは、ＪａｖａＶＭ４２０３をサブプログラムとして実行する。また、ライブラリ４２０１ｂは、これらサブプログラムに対して、端末１３０２および端末１３０３が保持する構成要素を制御するための複数の機能を提供する。
【０５０３】
本実施の形態では、ライブラリ４２０１ｂは機能の一例として、限定解除４２０１ｂ１、ＡＶ再生４２０２ｂ２、ＮＥＴ４２０１ｂ３を含む。
【０５０４】
限定解除４２０２ｂ１は、他のサブプログラムやＪａｖａライブラリ４２０４のＣＡ４２０４ｃから情報を受け取り、ネットワークから受信した暗号化データを復号したり、ＡＶ再生４２０１ｂ２を有効にして、ネットワークから受信したマルチメディアデータの再生を許可したりするものである。
【０５０５】
ＡＶ再生４２０２ｂ２は、他のサブプログラムやＪａｖａライブラリ４２０４のＪＭＦ４２０４ａから、音声のパケットＩＤと映像のパケットＩＤを受け取る。受け取った音声のパケットＩＤと映像のパケットＩＤを、ＴＳデコーダ４１０５に与える。この結果、ＴＳデコーダ４１０５は与えられたパケットＩＤに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
【０５０６】
ＮＥＴ４２０１ｂ３は、他のサブプログラムやＪａｖａライブラリ４２０４のネットワークライブラリ４２０４ｄから受け取ったデータを、ＩＰネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。
【０５０７】
アプリケーション層より下のプロトコルとは、例えばＴＣＰパケット、ＵＤＰパケット、ＩＰパケットなどである。これをネットワーク部４１０８に引き渡すことで、ネットワーク１３０４を介して他の機器にメッセージおよびデータを送信する。
【０５０８】
また、ネットワーク１３０４を介して他の機器からのメッセージを受信したときに、他のサブプログラムやＪａｖａライブラリ４２０４のネットワークライブラリ４２０４ｄに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、ＨＴＴＰ、ＲＴＳＰやＲＴＰなどである。
【０５０９】
ＪａｖａＶＭ４２０２は、上記した本実施の形態におけるデータ出力装置１３０１のＪａｖａＶＭ１６０３と同様のものである。
【０５１０】
サービスマネージャ４２０３は、上記した本実施の形態におけるデータ出力装置１３０１のサービスマネージャ１６０４と、以下の相違点を除いて同様のものである。
【０５１１】
サービスマネージャ１６０４はＥＰＧ１６０２の再生部１６０２ｂよりチャンネル識別子を受け取り、その識別子をＴｕｎｅｒ１６０５ｃに引き渡してチューニングさせ、さらにＣＡ１６０５ｄに依頼してデスクランブルを行い、ＪＭＦ１６０５ａにチャンネルの識別子を与えて映像・音声の再生を依頼するものであったが、サービスマネージャ４２０３は、Ｊａｖａライブラリ４２０４の中にあるＬｉｓｔ４２０４ｉからコンテンツの識別子を受け取り、ネットワークライブラリ４２０４ｄにコンテンツの識別子およびそれを蓄積している装置などの情報を引き渡して、該装置からストリームを受信し、続いて、Ｊａｖａライブラリ４２０４の中にあるＪＭＦ４２０４ａにコンテンツの識別子を与えることで、映像・音声の再生を依頼するものである。Ｌｉｓｔ４２０４ｉについては、後述する。
【０５１２】
サービスマネージャ４２０３は、Ｊａｖａライブラリ４２０４の中にあるネットワークライブラリ４２０４ｄに、コンテンツの識別子とデータ出力装置１３０１のＩＰアドレスなどの情報、該コンテンツにアクセスするためのＵＲＩなどの情報を与えて、データ出力装置１３０１へのマルチメディアデータ送信要求発行と該マルチメディアデータの受信を依頼し、さらに、ネットワークライブラリ４２０４ｄに、データ出力装置１３０１から送信されたマルチメディアデータの受信を依頼する。ネットワークライブラリ４２０４ｄでは、依頼を受けると、データ出力装置１３０１と接続して、マルチメディアデータの送信要求を発行する。そして、ネットワークライブラリ４２０４ｄは、データ出力装置１３０１から送信されたデータをＣＰＵ４１０９へ引き渡す。これにより、受信したマルチメディアデータを多重分離部４１０４に引き渡すことが可能となり、該マルチメディアデータの再生が行える。
【０５１３】
Ｊａｖａライブラリ４２０４は、第２メモリ４１０３に格納されている複数のＪａｖａライブラリの集合である。本実施の形態では、Ｊａｖａライブラリ４２０４は、ＪＭＦ４２０４ａと、ＡＭ４２０４ｂと、ＣＡ４２０４ｃと、ネットワークライブラリ４２０４ｄと、再生Ｌｉｂ４２０４ｅと、Ｌｉｓｔ４２０４ｉとを含んでいる。
【０５１４】
ＪＭＦ４２０４ａと、ＡＭ４２０４ｂと、再生Ｌｉｂ４２０４ｅと、ＩＯ４２０４ｆと、ＡＷＴ４２０４ｇと、ＳＩ４２０４ｈとは、それぞれ、上記した本実施の形態におけるデータ出力装置１３０１のＪａｖａライブラリ１６０５の中のＪＭＦ１６０５ａ、ＡＭ１６０５ｂ、再生Ｌｉｂ１６０５ｆ、ＩＯ１６０５ｇ、ＡＷＴ１６０５ｈ、ＳＩ１６０５ｉと同様のものである。
【０５１５】
ＣＡ４２０４ｃは、ネットワーク１３０４経由で送信されてきたマルチメディアデータのコピー制御および課金など、該マルチメディアデータの権利処理を管理するものである。コピー制御は、送信されてきたトランスポートストリームのセクション情報に含まれているコピー制御情報を参照して、必要であれば書き換えを行う。また、課金などは、ネットワークライブラリ４２０４ｄを通して、データ出力装置１３０１と通信することによって行う。
【０５１６】
Ｌｉｓｔ４２０４ｉは、データ出力装置１３０１におけるＥＰＧやデータ出力装置１３０１が蓄積しているマルチメディアコンテンツの一覧を表示し、入力部４１０１が受け付けたユーザ操作によって、一覧からひとつのマルチメディアコンテンツを選択し、サービスマネージャ４２０３に再生を依頼するものである。このとき、データ出力装置１３０１の情報もサービスマネージャ４２０３に引き渡す。また、データ出力装置１３０１におけるＥＰＧおよびデータ出力装置に蓄積されたコンテンツの一覧は、ネットワークライブラリ４２０４ｄを通して、取得することができる。これらの情報は、ＵＰｎＰＡＶに定義された方法によって実現できるため、詳細説明は省略する。
【０５１７】
ネットワークライブラリ４２０４ｄは、ＯＳ４２０１ｂのＮＥＴ４２０１ｂ３を通して、ネットワーク１３０４に接続されたデータ出力装置１３０１と通信するものである。データ出力装置１３０１との通信は、マルチメディアデータの一覧送受信、およびマルチメディアデータの送信要求発行と該マルチメディアデータの受信である。
【０５１８】
図４３は、ネットワークライブラリ４２０４ｄの内部構成の一例を示すブロック図である。
【０５１９】
ネットワークライブラリ４２０４ｄは、制御部４３０１、情報送信部４３０２、情報受信部４３０３、判定部４３０４、データ受信部４３０５を含む。なお、ネットワークライブラリ４２０５ｄは、ＩＰネットワークに関連する他の機能を含んでも良い。
【０５２０】
制御部４３０１は、ダウンロードしたＪａｖａアプリケーションに対して、ネットワークライブラリ４２０４ｄが実現する機能を提供する。すなわち、制御部４３０１は、ダウンロードしたＪａｖａアプリケーションに対してＪａｖａ  ＡＰＩを提供し、ＪａｖａアプリケーションがこのＡＰＩを呼び出すことで、ネットワークを利用した機能が実現できる。
【０５２１】
制御部４３０１は、Ｊａｖａ  ＡＰＩが呼び出されると、適宜、情報送信部４３０２、情報受信部４３０３、判定部４３０４、データ受信部４３０５や、他のＪａｖａライブラリ４２０４およびＯＳ４２０１のライブラリ４２０１ｂを利用して処理を行う。
【０５２２】
図４４は、ネットワークライブラリ４２０４ｄの内部構成に含まれる制御部４３０１が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０５２３】
図４４（１）メソッドｃｏｌｌｅｃｔＮｅｔＤｅｖｉｃｅ（）は、ネットワーク１３０４に接続されている外部装置の情報を集め、その情報としてＮｅｔＤｅｖｉｃｅオブジェクトの配列を返し、失敗時はｎｕｌｌを返す。本メソッドにより、ネットワーク１３０４に接続された機器の情報を得ることができる。ＮｅｔＤｅｖｉｃｅクラスは図３０に示したものと同様である。本メソッドの処理は、ＵＰｎＰ  ＤＡに定義された方法によって行うことが可能であるため、詳細説明は省略する。
【０５２４】
図４４（２）メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、引数ｃｏｎｔで与えられたマルチメディアデータを、引数ｏｆｆｓｅｔで与えられた時間位置から受信し、引数ｏｓで与えられたＯｕｔｐｕｔＳｔｒｅａｍオブジェクトに出力する。
【０５２５】
引数ｏｓは、受信したマルチメディアデータをＣＰＵ４１０９に渡す役割をするものである。引数ｏｆｆｓｅｔは、先頭を０とした時間位置を秒単位で与えるものである。また、開始点を指定しない場合は、引数ｏｆｆｓｅｔに負の値を与える。これは、処理としては、ｏｆｆｓｅｔに０が与えられた場合と同様の処理となる。
【０５２６】
なお、本実施の形態においては、開始点のみ引数で与えることとしたが、引数を追加して、終了点の時間位置も与えても良い。この場合、終了点を指定しないときは、該引数に負の数を与えることで実現しても良い。また、ＲＴＳＰを使ったデータ通信の制御を行っているため開始点および終了点は時間位置としたが、他のプロトコル、例えばＨＴＴＰの場合、開始点および終了点はバイト位置を与えるものであっても良い。
【０５２７】
引数ｃｏｎｔは、ＣｏｎｔｅｎｔＩｎｆｏクラスのオブジェクトとして与えられる。
【０５２８】
図４５に、ネットワークライブラリ４２０４ｄで使用されるＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【０５２９】
図４５において、メンバ変数ｄｅｖは、該マルチメディアデータを送信する装置をＮｅｔＤｅｖｉｃｅオブジェクトとして格納するものである。
【０５３０】
また、メンバ変数ｃｉｄは、該マルチメディアデータのコンテンツの識別子を表すものである。また、メンバ変数ｃｏｎｔｅｎｔＵＲＩは、該マルチメディアデータにアクセスするためのＵＲＩを文字列で格納するものである。また、メンバ変数ｔｉｔｌｅは該コンテンツの題名を文字列で格納するものである。また、メンバ変数ｇｕｎｒｅは、映画などといった、該コンテンツの種別を文字列で格納するものである。
【０５３１】
また、メンバ変数ｂｒｏａｄＤａｔｅは、該コンテンツが放送された日時を文字列で格納するものである。また、メンバ変数ｒｅｃＤａｔｅは、該コンテンツが録画・蓄積された日時を文字列で格納するものである。また、メンバ変数ｌａｓｔＰｌａｙＤａｔｅは、これまでに該コンテンツを再生もしくはデータ出力装置１３０１から送信した最後の日時を文字列で表すものである。
【０５３２】
また、メンバ変数ｉｓＰａｕｓｅｄは、該マルチメディアデータの送信もしくは再生が途中で中断された状態の場合はｔｒｕｅを、そうでない場合はｆａｌｓｅをとるｂｏｏｌｅａｎ型の変数である。これらの情報は、データ出力装置１３０１から受信したコンテンツ一覧もしくはＥＰＧデータに含まれているものであり、後述のメソッドｇｅｔＣｏｎｔｅｎｔＬｉｓｔ（）およびｇｅｔＥＰＧＤａｔａ（）によって取得できる。
【０５３３】
本メソッドは、あとでデータの受信に関する制御を行うために、引数ｃｏｎｔで与えられた情報、および、本メソッドにより開かれたＲＴＳＰセッションのセッション番号と、メッセージのシーケンス番号とを、ネットワークライブラリ４２０４ｄ内部で記憶・管理しておく。
【０５３４】
また、本メソッドでは、該マルチメディアデータが出力中断中であるか否かを判定し、出力中断中の場合は、本メソッドの前に、後述のｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）によって設定されていれば、その設定により再開するか否かを決定する。また、設定されていなければ、後述のメソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって登録されたＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースを実装したハンドラオブジェクトを用いて、Ｊａｖａアプリケーションに、それを通知する。
【０５３５】
Ｊａｖａアプリケーションでは、ユーザに提示してユーザ入力を受け付けるなどして、中断したデータ出力を再開するか否かを決定し、後述のメソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）を用いてネットワークライブラリ４２０４ｄに通知する。本メソッドの詳細については、後述する。
【０５３６】
図４４（３）メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）は、Ｊａｖａアプリケーションから、ネットワークライブラリ４２０４ｄへ、マルチメディアデータの受信を中断する依頼を出すものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドが呼び出されると、ネットワークライブラリ４２０４ｄは、後述する情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）もしくはｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出して、ＰＡＵＳＥリクエストメッセージを送信する。
【０５３７】
この場合、上記のＲＴＳＰセッション番号と、シーケンス番号を１だけ増やした値を引数として与える。シーケンス番号は更新される。そして、メソッドｎｏｔｉｆｙＰａｕｓｅ（）の戻り値を返す。
【０５３８】
また、図４４（４）メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、後述の情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出して送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すものである。この場合も同様に、上記のＲＴＳＰセッション番号と、シーケンス番号を１だけ増やした値を引数として与え、シーケンス番号は更新される。
【０５３９】
メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、図４４（５）のように、ＮｅｔＤｅｖｉｃｅオブジェクトを引数にとり、引数で与えられた装置を、出力再開時の送信先として拡張ヘッダに記述するＰＡＵＳＥリクエストを作成して送信する構成であっても良い。メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）、メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）の処理の詳細については後述する。
【０５４０】
図４４（６）メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）は、引数ｈａｎｄｌｅｒで与えられた、ＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースを実装したオブジェクトをシステムに登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｊａｖａアプリケーションは、該オブジェクトをハンドラとして登録することにより、ネットワークライブラリ４２０４ｄからコールバックを受けることができる。
【０５４１】
図４６は、ネットワークライブラリ４２０４ｄで使用されるＣｌｉｅｎｔＨａｎｌｄｅｒインタフェースの構成の一例を示す図である。
【０５４２】
図４６において、ＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースのメソッドｎｏｒｉｆｙＰａｕｓｅ（）は、引数ｃｉｄで与えられた識別子のコンテンツが出力中断中であることを、Ｊａｖａアプリケーションに通知するものである。
【０５４３】
Ｊａｖａアプリケーションは、後述のメソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）を用いて、この中断を再開するのか、もしくは、該コンテンツを先頭もしくはユーザが指定した位置から取得するのかを設定することが可能となる。Ｊａｖａアプリケーションは、ユーザに該コンテンツが出力中断の状態であることを提示し、ユーザに出力を再開するか否かを問合せることが可能である。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。
【０５４４】
また、メソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）は、引数ｃｉｄで表されるコンテンツの送信中断を行うことを、Ｊａｖａアプリケーションに通知するものである。
【０５４５】
Ｊａｖａアプリケーションは、この中断を後に再開するか否かを、ユーザに提示して問合せることが可能であり、その内容を、後述のメソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）を用いて、この中断を後に再開するか否かを、ネットワークライブラリ４２０４ｄに通知することが可能となる。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。
【０５４６】
また、メソッドａｓｋＲｅｏｐｅｎＤｅｖｉｃｅ（）は、Ｊａｖａアプリケーションに、中断したデータ送信を再開するときの出力先を登録するかどうかの問い合わせを通知するものである。
【０５４７】
Ｊａｖａアプリケーションは、ネットワーク１３０４に接続された端末など再生再開可能な装置の一覧をユーザに提示し、ユーザの選択を問合せることが可能である。また、Ｊａｖａアプリケーションは、後述のメソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）によって、ユーザが選択した装置をネットワークライブラリ４２０４ｄに通知することが可能となる。Ｊａｖａアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ４２０４ｄに制御を戻す。
【０５４８】
図４４（７）メソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）は、Ｊａｖａアプリケーションから、ネットワークライブラリ４２０４ｄへ、引数ｃｉｄで与えられた識別子のコンテンツに対し、出力中断中の場合に、中断位置からの送信を再開するか、もしくは、先頭あるいはユーザが指定した位置から送信を開始するかを、引数ｆｌａｇで与えられた値から設定するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返すものである。引数ｆｌａｇにて０が与えられれば出力再開とし、正の値が与えられれば、出力再開ではなく先頭あるいはユーザが指定した位置からのデータ取得であると判定する。
【０５４９】
また、負の値が与えられれば、その時点の設定をキャンセルし、未設定の状態に戻す。本メソッドは、上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＰａｕｓｅＣｏｎｔｅｎｔ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）は、本メソッドによる設定にしたがって動作する。
【０５５０】
図４４（８）メソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）は、引数ｃｉｄで与えられた識別子のコンテンツのデータ送信を中断する際に、それを後に再開するか否かの状態を設定するもので、引数ｆｌａｇが０の場合は再開することを表し、正の値の場合は再開しないことを表す。
【０５５１】
また、負の値の場合は、その時点の設定をキャンセルし、未設定の状態に戻す。処理が成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。本メソッドは、上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。
【０５５２】
図４４（９）メソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）は、引数ｄｅｖで与えられた装置を、引数ｃｉｄで与えられた識別子のコンテンツのデータ送信を中断し、それを再開する時の送信先として登録するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０５５３】
引数ｄｅｖでｎｕｌｌが与えられた場合は、未設定の状態に戻す。上記のＣｌｉｅｎｔＨａｎｄｌｅｒのメソッドａｓｋＲｅｏｐｅｎＤｅｖｉｃｅ（）によるコールバックの返答としてＪａｖａアプリケーションから呼び出される場合の他に、システムに送信先として登録する場合に用いられる。この設定は第１メモリ４１０２もしくは第２メモリ４１０３に保存される。
【０５５４】
図４４（１０）メソッドｇｅｔＣｏｎｔｅｎｔＬｉｓｔ（）は、引数ｄｅｖで与えられた装置から、コンテンツ一覧を取得してＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。また、引数ｄｅｖで与えられた装置に、ネットワーク１０４を通じて提供できるコンテンツがない場合は、要素数０のＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列を返す。この処理における通信は、ＵＰｎＰ  ＡＶで定義された方法によって行えるため、詳細は省略する。
【０５５５】
図４４（１１）メソッドｇｅｔＥＰＧＤａｔａ（）は、引数ｄｅｖで与えられた装置から、ＥＰＧを取得してＣｏｎｔｅｎｔＩｎｆｏオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればｎｕｌｌを返す。この処理における通信は、ＵＰｎＰ  ＡＶで定義された方法によって行えるため、詳細は省略する。
【０５５６】
情報送信部４３０２は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器へＲＴＳＰのリクエストメッセージの送信を行うものである。
【０５５７】
情報送信部４３０２は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０５５８】
図４７は、ネットワークライブラリ４２０４ｄの内部構成に含まれる情報送信部４３０２が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０５５９】
図４７（１）メソッドｃｏｎｎｅｃｔＴｏＳｅｒｖｅｒ（）は、Ｓｏｃｋｅｔオブジェクトｓを生成し、Ｓｏｃｋｅｔオブジェクトｓを用いて引数ｄｅｖで与えられた装置とＴＣＰセッションを確立して、Ｓｏｃｋｅｔオブジェクトｓと引数ｄｅｖの内容とでＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを生成して返すものであり、成功すれば該ＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを返し、失敗すればｎｕｌｌを返す。ＲｅｍｏｔｅＤｅｖｉｃｅクラスの構成は、図３０に示したものと同様である。このＴＣＰセッション上で、ＲＴＳＰセッションの通信が行われる。
【０５６０】
図４７（２）メソッドｓｅｎｄＤａｔａ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｍｅｓで与えられたデータを送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０５６１】
図４７（３）メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置へ、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、引数ｒｅｑで与えられたＲＴＳＰリクエストメッセージを生成して送信するものであり、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。引数ｒｅｑはＲｅｑｕｅｓｔＩｎｆｏクラスのオブジェクトで与えられる。ＲｅｑｕｅｓｔＩｎｆｏクラスは図３６で示したものと同様である。
【０５６２】
図４７（４）メソッドｎｏｔｉｆｙＰｌａｙ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎ、ｏｆｆｓｅｔ、ｒｅｓｔａｒｔで与えられた情報からＲＴＳＰのＰＬＡＹリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０５６３】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＬＡＹを表す１を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、引数ｏｆｆｓｅｔが０以上の値であれば、その値からＲａｎｇｅヘッダをＳｔｒｉｎｇオブジェクトで生成して、ｒｅｑのメンバ変数ｒａｎｇｅへ設定する。
【０５６４】
また、引数ｒｅｓｔａｒｔがｔｒｕｅの場合は、Ｘ−Ｒｅｓｔａｒｔヘッダを、値を「Ｙｅｓ」として作成し、Ｓｔｒｉｎｇオブジェクトを作成してそこに格納する。さらに、必要に応じて拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＬＡＹリクエストメッセージを送信する。
【０５６５】
図４７（５）メソッドｎｏｔｉｆｙＰａｕｓｅ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎで与えられた情報からＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。
【０５６６】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、必要に応じて拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。
【０５６７】
図４７（６）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎで与えられた情報から、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダ付きのＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓヘッダは、後に中断した送信を再開することをより明確に示す目的で使用する。
【０５６８】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓ拡張ヘッダを、その値を「Ｙｅｓ」としてＳｔｒｉｎｇオブジェクトで生成する。また、必要に応じて他の拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、これらをＳｔｒｉｎｇオブジェクトの配列としてｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。
【０５６９】
図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、引数ｃｏｎｔ、ｓｅｑ、ｓｅｓｓｉｏｎ、ｒｔｅｒｍで与えられた情報から、送信再開時の送信先装置を拡張ヘッダに含んだＲＴＳＰのＰＡＵＳＥリクエストメッセージを生成し、引数ｄｅｖで与えられた装置に送信するもので、成功すればｔｒｕｅを返し、失敗すればｆａｌｓｅを返す。送信再開時の送信先装置を示す拡張ヘッダとして、Ｘ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌを用いることとする。
【０５７０】
本メソッドは、まず、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅに、ＰＡＵＳＥを表す２を設定する。続いて、引数ｓｅｑと引数ｓｅｓｓｉｏｎで与えられた値を、それぞれｒｅｑのメンバ変数ｓｅｑ、ｓｅｓｓｉｏｎに設定する。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、そのメンバ変数ｃｏｎｔｅｎｔＵＲＩを読み出して、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩに設定する。さらに、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌに設定する。さらに、拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎｎａｌを用いて、送信再開時の送信先端末を記述したヘッダをＳｔｒｉｎｇオブジェクトで生成する。拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌの値は、引数ｒｔｅｒｍから得られる、該端末のＩＰアドレスであっても良いし、該端末のホスト名であっても良いし、該端末につけたニックネームであっても良い。ニックネームはＮｅｔＤｅｖｉｃｅオブジェクトｒｔｅｒｍのメンバ変数ｆｒｉｅｎｄｌｙＮａｍｅから得られる。さらに、必要に応じて他の拡張ヘッダなど他のヘッダをＳｔｒｉｎｇオブジェクトとして生成し、これらをＳｔｒｉｎｇオブジェクトの配列としてｒｅｑのメンバ変数ｅｘｔｅｎｄＨｅａｄｅｒに設定する。そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、メソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出すことにより、ＰＡＵＳＥリクエストメッセージを送信する。本メッセージには、Ｘ−Ｋｅｅｐ−Ｐａｕｓｅ−Ｓｔａｔｕｓ拡張ヘッダを含む構成であっても良い。
情報受信部４３０３は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器からのＲＴＳＰのレスポンスメッセージの受信を行うものである。
【０５７１】
情報受信部４３０３は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０５７２】
図４８は、ネットワークライブラリ４２０４ｄの内部構成に含まれる情報受信部４３０３が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０５７３】
図４８（１）メソッドｒｅｃｅｉｖｅＤａｔａ（）は、引数ｄｅｖで与えられた外部装置から、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いてメッセージを受信し、そのメッセージをバイト列で返すものであり、成功すれば該バイト列を返し、失敗すればｎｕｌｌを返すものである。
【０５７４】
図４８（２）メソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅＭｅｓｓａｇｅ（）は、引数ｄｅｖで与えられた外部装置から、引数ｄｅｖで与えられたＳｏｃｋｅｔオブジェクトを用いて、ＲＴＳＰのレスポンスメッセージを受信し、それを解釈してＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを生成して返すものであり、成功すれば該ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを返し、失敗すればｎｕｌｌを返す。ＲｅｓｐｏｎｓｅＩｎｆｏクラスは、図３８に示したものと同様である。
【０５７５】
本メソッドが呼び出されると、まず、メソッドｒｅｃｅｉｖｅＤａｔａ（）を呼び出して、レスポンスメッセージを受信する。続いて、ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトｒｅｓを生成する。さらに、受信したレスポンスメッセージを解釈し、ｒｅｓのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅ、ｓｅｑ、ｓｅｓｓｉｏｎを設定する。また、レスポンスメッセージにＲａｎｇｅヘッダが含まれていれば、そのヘッダをＳｔｒｉｎｇオブジェクトとして、ｒｅｓのメンバ変数ｒａｎｇｅに設定する。Ｓｅｑヘッダ、Ｓｅｓｓｉｏｎヘッダ、Ｒａｎｇｅヘッダ以外のヘッダがあれば、各ヘッダごとに、ひとつのＳｔｒｉｎｇオブジェクトを生成して設定し、それらを配列として、ｒｅｓのメンバ変数ｈｅａｄｅｒｓに設定する。Ｓｅｑヘッダ、Ｓｅｓｓｉｏｎヘッダ、Ｒａｎｇｅヘッダ以外のヘッダがなければ、ｒｅｓのメンバ変数ｈｅａｄｅｒｓはｎｕｌｌに設定する。そして、ｒｅｓを返す。また、不正なレスポンスメッセージの場合やレスポンスメッセージの受信に失敗した場合は、ｎｕｌｌを返す。
【０５７６】
判定部４３０４は、コンテンツの属性情報から、該コンテンツが出力中断中の属性を持っているか否かを判定するものである。
【０５７７】
判定部４３０４は、ネットワークライブラリ４２０４ｄおよびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０５７８】
図４９は、ネットワークライブラリ４２０４ｄの内部構成に含まれる判定部４３０４が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０５７９】
図４９（１）メソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）は、引数ｃｉｄによって与えられた識別子をもつコンテンツが、出力中断中であるか否かを判定するものであり、出力中断中と判定されればｔｒｕｅを返し、出力中断中でないと判定されるか、処理に失敗すればｆａｌｓｅを返す。
【０５８０】
本メソッドが呼び出されると、ネットワークライブラリ４２０４ｄは、ＩＯ４２０４ｆを用いて、第２メモリ４１０３に記憶されているコンテンツ一覧を読み出す。読み出したコンテンツ一覧から、引数ｃｉｄで与えられた識別子をもつコンテンツを検索する。検索したコンテンツの属性情報を調べ、出力中断中の属性があれば、ｔｒｕｅを返して終了し、出力中断中の属性がなければｆａｌｓｅを返して終了する。また、第２メモリ４１０３からコンテンツ一覧を読み出せないか、もしくは、読み出したコンテンツ一覧に、引数ｃｉｄで与えられた識別子をもつコンテンツがない場合は、ｆａｌｓｅを返して終了する。
【０５８１】
図４９（２）メソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）は、引数にＣｏｎｔｅｎｔＩｎｆｏオブジェクトをもつ構成である。本メソッドは、引数で与えられたＣｏｎｅｎｔＩｎｆｏオブジェクトのコンテンツが、出力中断中か否かを判定するものであり、出力中断中と判定されればｔｒｕｅを返し、出力中断中でないと判定されればｆａｌｓｅを返す。本メソッドは、引数で与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｉｓＰａｕｓｅの値を返す。
【０５８２】
データ受信部４３０５は、ＯＳ４２０１のライブラリ４２０１のＮＥＴ４２０１ｂ３を通じてネットワーク部４１０８を制御し、指定されたネットワーク１３０４に接続されている外部機器からマルチメディアデータを受信するものである。
【０５８３】
データ受信部４３０５は、制御部４３０１およびダウンロードしたＪａｖａアプリケーションにＪａｖａ  ＡＰＩを提供する。
【０５８４】
図５０は、ネットワークライブラリ４２０４ｄの内部構成に含まれるデータ受信部４３０５が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【０５８５】
図５０（１）メソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）は、引数ｄｅｖで与えられた装置から、引数ｃｏｎｔで与えられたコンテンツの、マルチメディアデータを受信する通信路を確保し、ＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトで返すもので、成功時には該オブジェクトが、失敗時にはｎｕｌｌが返る。
【０５８６】
図５１は、ネットワークライブラリ４２０４ｄで使用されるＲｅｍｏｔｅＰｒｏｇｒａｍクラスの構成の一例を示す図である。
【０５８７】
図５１において、メンバ変数ｓｅｓｓｉｏｎは、このマルチメディアデータ通信を制御するＲＴＳＰセッションのセッション番号を表す。また、メンバ変数ｓは、マルチメディアデータを受信するＲＴＰのＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを表す。また、メソッドｇｅｔＤａｔａ（）は、ＲＴＰによりデータを受信し、ＲＴＰパケットからマルチメディアデータを抽出して返すものである。
【０５８８】
メソッドｇｅｔＤａｔａ（）は、１回の呼び出しで、ＲＴＰパケット１個分のデータを返すとは限らないが、複数のＲＴＰパケットをまとめて返す場合は、必ず、パケット番号が連続の区間のデータを返すものである。メソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）が呼び出されると、ネットワークライブラリ４２０４ｄは、引数ｄｅｖで与えられた装置に、引数ｃｏｎｔで与えられたコンテンツに対する、ＲＴＳＰのＳＥＴＵＰメッセージを送信する。そして、レスポンスメッセージを受け取り、解釈して、ＳＥＴＵＰが成功していればＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトを作成して返し、失敗していればｎｕｌｌを返す。
【０５８９】
また、ＴＣＰセッションが切断された場合などにより、ＳＥＴＵＰメッセージが送信できない、もしくは、レスポンスメッセージが受信できないといった異常が発生した場合もｎｕｌｌを返す。
【０５９０】
以下、本メソッドの処理について、さらに詳しく説明する。まず、本メソッドが呼び出されると、ＲｅｑｕｅｓｔＩｎｆｏオブジェクトｒｅｑを生成する。そして、ｒｅｑのメンバ変数ｒｅｑｕｅｓｔＴｙｐｅを、ＳＥＴＵＰを表す０に設定する。メンバ変数ｓｅｑは１に設定する。
【０５９１】
また、ＳＥＴＵＰリクエストでは、まだセッション番号は割り当てられていないため、メンバ変数ｓｅｓｓｉｏｎは任意の値でよい。さらに、引数ｃｏｎｔで与えられたＣｏｎｔｅｎｔＩｎｆｏオブジェクトから、メンバ変数のｃｏｎｔｅｎｔＵＲＩの値を読み出し、ｒｅｑのメンバ変数ｃｏｎｔｅｎｔＵＲＩにＳｔｒｉｎｇオブジェクトとして設定する。ＳＥＴＵＰでは、Ｒａｎｇｅヘッダは送信しないため、ｒｅｑのメンバ変数ｒａｎｇｅはｎｕｌｌとしておく。
【０５９２】
さらに、マルチメディアデータを受信するＵＤＰのポート番号を発行し、その値を記述することでＴｒａｎｓｐｏｒｔヘッダを生成し、Ｓｔｒｉｎｇオブジェクトを生成して、Ｔｒａｎｓｐｏｒｔヘッダの文字列を設定する。さらに、要素数が、Ｔｒａｎｓｐｏｒｔヘッダを含んだＳｔｒｉｎｇオブジェクトのみの１個であるＳｔｒｉｎｇオブジェクトの配列を生成し、ｒｅｑのメンバ変数ｅｘｔｅｎｔＨｅａｄｅｒに設定する。
【０５９３】
そして、ｒｅｑと引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、情報送信部４３０２のメソッドｓｅｎｄＲｅｑｕｅｓｔＭｅｓｓａｇｅ（）を呼び出し、ＳＥＴＵＰメッセージを送信する。さらに、引数ｄｅｖで与えられたＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを引数として、情報受信部４３０３のメソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅＭｅｓｓａｇｅ（）を呼び出し、レスポンスメッセージを受信してＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを得る。
【０５９４】
このＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトをｒｅｓとすると、まず、ｒｅｓのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅを調べ、ＯＫである２００であるか否かを調べる。２００でなければＳＥＴＵＰが失敗したことを表し、ｎｕｌｌを返して終了する。続いて、ＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトｒｐを生成する。
【０５９５】
ｒｐのメンバ変数ｓｅｓｓｉｏｎには、ｒｅｓのメンバ変数ｓｅｓｓｉｏｎの値を設定する。また、ｒｅｓのメンバ変数ｈｅａｄｅｒｓを検索し、Ｔｒａｎｓｐｏｒｔヘッダを探す。Ｔｒａｎｓｐｏｒｔヘッダがなければ、ｎｕｌｌを返して終了する。Ｔｒａｎｓｐｏｒｔヘッダがあれば、そこから、ｓｅｒｖｅｒ＿ｐｏｒｔで表される、サーバがマルチメディアデータを出力するポート番号を得る。
【０５９６】
このポート番号と、上記したネットワークライブラリ４２０４ｄがデータを受信するポート番号と、引数ｄｅｖから得られるサーバの情報から、ＤａｔａｇｒａｍＳｏｃｋｅｔオブジェクトを生成してサーバとｃｏｎｎｅｃｔし、ｒｐのメンバ変数ｓに設定する。そして、ｒｐを返して、処理を終了する。
【０５９７】
ここで、制御部４３０１のメソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の動作について、より詳細に説明する。本メソッドが呼び出されると、まず、引数ｃｏｎｔで与えられたコンテンツ情報をネットワークライブラリ４２０４ｄで記憶、管理する。
【０５９８】
ネットワークライブラリ４２０４ｄは、続いて、引数ｃｏｎｔのメンバ変数ｄｅｖを引数にあたえることにより、情報受信部４３０２のメソッドｃｏｎｎｅｃｔＴｏＳｅｖｅｒ（）を呼び出して、データ出力装置１３０１とＲＴＳＰメッセージを通信するＴＣＰセッションを確立し、戻り値としてＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトを受け取る。このＲｅｍｏｔｅＤｅｖｉｃｅオブジェクトをｒｄｅｖとする。ｒｄｅｖは、ネットワークライブラリ４３０４ｄによって記憶され管理される。
【０５９９】
また、メソッドｒｄｅｖは、ｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって登録されたハンドラオブジェクトを用いたコールバックを行い、Ｊａｖａアプリケーションに与えて、Ｊａｖａアプリケーションが管理する構成であっても良い。具体的には、図４６に示したＣｌｉｅｎｔＨａｎｄｌｅｒインタフェースにｐｕｂｌｉｃ  ｂｏｏｌｅａｎ  ｎｏｔｉｆｙＲｅｍｏｔｅ（ＲｅｍｏｔｅＤｅｖｉｃｅ  ｄｅｖ）というメソッドを追加し、引数にｒｄｅｖを与えて呼び出すことで、Ｊａｖａアプリケーションに与えることが可能となる。
【０６００】
続いて、ｒｄｅｖとｃｏｎｔを引数として、データ受信部４３０５のメソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）を呼び出し、ＲＴＳＰセッションを開始するとともに、マルチメディアデータを受信するＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトを受け取る。このＲｅｍｏｔｅＰｒｏｇｒａｍオブジェクトをｒｐとする。
【０６０１】
続いて、ｃｏｎｔを引数として判定部４３０４のメソッドｉｓＣｏｎｔｅｎｔＰａｕｓｅ（）を呼び出すことにより、該マルチメディアデータが出力中断中か否かを判定する。出力中断中ではないと判定された場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出すことにより、データ出力装置１３０１にＰＬＡＹリクエストメッセージを発行する。
【０６０２】
この場合の引数は、第１引数にはｒｄｅｖを、第２引数にはｃｏｎｔを、第３引数には２を、第４引数にはｒｐのメンバ変数ｓｅｓｓｉｏｎを、第５引数には引数ｏｆｆｓｅｔで与えられた値を、第６引数にはｆａｌｓｅを、それぞれ用いる。
【０６０３】
第３引数は、ＲＴＳＰセッションのシーケンス番号であり、１はデータ受信部４３０５のメソッドｏｐｅｎＲｅｍｏｔｅＰｒｏｇｒａｍ（）の中で、ＳＥＴＵＰに用いられている。ネットワークライブラリ４２０４ｄは、このセッション番号を記憶して管理し、メソッドｎｏｔｉｆｙＰｌａｙ（）が呼び出された後は、記憶しているセッション番号は２となる。
【０６０４】
該コンテンツが出力中断中であると判定された場合、ネットワークライブラリ４２０４ｄは、まず、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、該コンテンツに対して出力再開をするか否かの設定がなされているかを検索する。
【０６０５】
出力再開をしないと設定されている場合は、上記と同様の処理を行い、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出す。出力を再開すると設定されていた場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を、上記と第５引数と第６引数を変えて呼び出す。この場合、第５引数には任意の負の値を、第６引数にはｔｒｕｅを与える。
【０６０６】
また、出力再開に関して設定されていない場合は、メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）で設定されたハンドラｈのメソッドｎｏｔｉｆｙＣｏｎｔｅｎｔＰａｕｓｅ（）を呼び出し、Ｊａｖａアプリケーションに出力中断中のコンテンツであることを通知する。この場合に、引数はｃｏｎｔのメンバ変数ｃｉｄを与える。
【０６０７】
Ｊａｖａアプリケーションは、メソッドｓｅｔＴｒａｎｓｆｅｒＭｏｄｅ（）によって設定を行ったあと、制御をネットワークライブラリ４２０４ｄに戻す。ネットワークライブラリ４２０４ｄは、Ｊａｖａアプリケーションによって行われた設定にしたがい、上記と同様に、情報送信部４３０２のメソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出す。このとき、Ｊａｖａアプリケーションによって未設定とされた場合は、出力再開を行わないとみなすこととする。
【０６０８】
メソッドｎｏｔｉｆｙＰｌａｙ（）を呼び出した後、さらに、情報受信部４３０３のメソッドｒｅｃｅｉｖｅＲｅｓｐｏｎｓｅ（）を、引数としてｒｄｅｖを与えることにより呼び出し、ＰＬＡＹリクエストに対するレスポンスメッセージを受信し、ＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトを受け取る。受け取ったＲｅｓｐｏｎｓｅＩｎｆｏオブジェクトをｒｉとする。
【０６０９】
ｒｉのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅを調べ、ＯＫを表す２００であれば、ｒｐのメソッドｇｅｔＤａｔａ（）を呼び出して、データ出力装置１３０１から送信されてきたデータを受信する。ｒｐのメソッドｇｅｔＤａｔａ（）からデータを受け取れば、それを引数ｏｓで与えられたＯｕｔｐｕｔＳｔｒｅａｍに出力し、以降、ＰＡＵＳＥメッセージを発行する制御部４３０１のメソッドが呼び出されるまで、ｒｐのメソッドｇｅｔＤａｔａ（）の呼び出しと受信したデータのｏｓへの出力を繰り返す。
【０６１０】
ＰＡＵＳＥメッセージを発行する制御部４３０１のメソッドとは、ｐａｕｓｅＰｌａｙｂａｃｋ（）、ｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）であり、これが呼び出されると、繰り返しのループの中で参照するフラグをセットするなどして、データ受信とｏｓへの出力のループを停止させる。あるいは、本メソッドは別のスレッドもしくはプロセスを生成しそのスレッドもしくはプロセス上で動作するか、上記ループのみ別のスレッドもしくはプロセスで動作させ、例えば、該スレッドｎｏｔｉｆｙＴｅｒｍｉｎａｔｅ（）といったメソッドを用意して、このメソッドによって通知したり、プロセス間通信を用いて通知する構成であっても良い。ｒｉのメンバ変数ｒｅｓｐｏｎｓｅＣｏｄｅが、２００でなければｆａｌｓｅを返して処理を終了する。
【０６１１】
なお、メソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の引数ｏｓに、ＩＯ４２０４ｆから受け取った第２メモリ４１０３のファイルへ出力するＯｕｔｐｕｔＳｔｒｅａｍを与えると、本メソッドによって、マルチメディアデータを第２メモリ４１０３上へ蓄積することが可能となる。
【０６１２】
次に、メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）、メソッドｐａｕｓｅＦｏｒＲｅｏｐｅｎ（）の処理について詳細に説明する。
【０６１３】
メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）が呼び出されたときに、ネットワークライブラリ４２０４ｄは、まず、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、該コンテンツのデータ送信中断に対して出力再開を行うか否かの設定を検索する。
【０６１４】
出力再開を行わないと設定されている場合は、情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）を呼び出す。この場合、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号とを、それぞれ、引数として与える。
【０６１５】
また、出力再開を行うと設定されている場合は、ＩＯ４２０４ｆを用いて第１メモリ４１０２もしくは第２メモリ４１０３を検索し、出力再開時の送信先端末が設定されているか否かを検索する。
【０６１６】
送信先端末が設定されている場合は、図４７（７）のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出す。このとき与える引数は、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号、および設定されている装置のＮｅｔＤｅｖｉｃｅオブジェクトである。
【０６１７】
送信先端末が設定されていなければ、図４７（６）のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）が呼び出される。このとき与える引数は、ネットワークライブラリ４２０４ｄが管理している、サーバのＲｅｍｏｔｅＤｅｖｉｃｅオブジェクト、データ受信を行っているコンテンツに対応するＣｏｎｔｅｎｔＩｎｆｏオブジェクト、ＲＴＳＰのシーケンス番号とセッション番号である。
【０６１８】
また、出力再開について未設定である場合は、メソッドｒｅｇｉｓｔｅｒＨａｎｄｌｅｒ（）によって設定されたハンドラオブジェクトｈのメソッドｎｏｔｉｆｙＰａｕｓｅＡｃｔｉｏｎ（）を呼び出し、Ｊａｖａアプリケーションに送信停止処理を行うことを通知する。このとき与えられる引数はネットワークライブラリ４２０４ｄが管理しているＣｏｎｔｅｎｔＩｎｆｏオブジェクトのメンバ変数ｃｉｄである。
【０６１９】
Ｊａｖａアプリケーションでは、メソッドｓｅｔＲｅｏｐｅｎＳｔａｔｕｓ（）を用いて、出力再開の設定要求を行うか否かを通知し、制御をネットワークライブラリ４２０４ｄに戻す。ネットワークライブラリ４２０４ｄでは、設定された内容に基づき、上記と同様に、情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出す。このとき、Ｊａｖａアプリケーションによって、未設定とされた場合は、出力再開を行わないとみなすこととする。
【０６２０】
以上の処理の後、さらに、上記のメソッドｇｅｔＭｕｌｔｉｍｅｄｉａＤａｔａ（）の受信動作を停止させる処理を行い、呼び出した情報送信部４３０２のメソッドｎｏｔｉｆｙＰａｕｓｅ（）もしくは、ｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）の戻り値を返して、処理を終了する。
【０６２１】
なお、出力再開時の端末が設定されていない場合は、ハンドラｈのメソッドｎｏｔｉｆｙＲｅｏｐｅｎＤｅｖｉｃｅ（）を呼び出して、Ｊａｖａアプリケーションに通知し、Ｊａｖａアプリケーションは、メソッドｓｅｔＲｅｏｐｅｎＴｅｒｍｉｎａｌ（）を用いて出力先端末を設定する構成であっても良い。この場合、Ｊａｖａアプリケーションによって出力先端末が未設定とされた場合は、出力先端末の指定を行わないとみなすこととする。
【０６２２】
図４７（６）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、上記メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）において、出力再開を行うと設定されている場合の処理と同様である。
【０６２３】
また、図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）は、上記メソッドｐａｕｓｅＰｌａｙｂａｃｋ（）において、出力再開を行うと設定されていて、かつ、出力先端末が設定されている場合と、以下の点を除いての処理を行う。
【０６２４】
相違点は、上記ｐａｕｓｅＰｌａｙｂａｃｋ（）では、図４７（７）メソッドｎｏｔｉｆｙＰａｕｓｅＦｏｒＲｅｏｐｅｎ（）を呼び出すときに、第５引数として設定された出力先端末のＮｅｔＤｅｖｉｃｅオブジェクトを用いたが、本メソッドでは、引数ｄｅｖで与えられたＮｅｔＤｅｖｉｃｅオブジェクトを用いることである。
【０６２５】
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム１３０５を構成するデータ出力装置１３０１は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
【０６２６】
また、本実施の形態にかかる端末１３０２および端末１３０３は、あるマルチメディアデータが、データ出力装置１３０１において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置１３０１に、データ出力を再開させる機器制御部１５０１を含むものである。この構成により、例えば、端末１３０２にて、あるマルチメディアコンテンツの視聴を中断し、端末１３０３にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
【０６２７】
（実施の形態２の変形例）
本発明の実施の形態２について説明してきたが、本発明は、上記の実施の形態２に限定されるものではない。以下のような場合も、本発明に含まれる。
【０６２８】
（１）  データ出力装置１３０１は、データ出力を中断するときに発行した、この中断を識別する識別子を、コンテンツ一覧に含める、ＳＥＴＵＰリクエストのレスポンスに拡張ヘッダとして含めるなどの方法によって端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。この識別子の通信は、ＰＬＡＹリクエストメッセージに拡張ヘッダを設けることであっても良いし、Ｘ−Ｒｅｓｔａｒｔヘッダの値として使っても良い。この場合、データ出力装置１３０１は、拡張ヘッダＸ−Ｒｅｓｔａｒｔがあれば、出力再開であると判定し、その中断の識別子とコンテンツの識別子とで再開位置情報を検索する。
【０６２９】
また、端末１３０２および端末１３０３の機器制御部１５０１は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
【０６３０】
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図２６において、ＰＡＵＳＥ要素の内容を、この識別子に設定し、ＰＡＵＳＥ要素があり、かつその内容が記述されている場合は出力中断状態であり、ＰＡＵＳＥ要素がないか、ＰＡＵＳＥ要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
【０６３１】
また、データ出力装置１３０１が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
【０６３２】
また、データ出力装置１３０１は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
【０６３３】
また、上記識別子は、端末からデータ出力装置１３０１に提供されるものであっても良い。さらに、データ出力装置１３０１は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
【０６３４】
また、データ出力装置１３０１は、上記識別子を、中断した日時や、中断した端末と組にして管理する構成であっても良い。
【０６３５】
（２）  端末１３０２および端末１３０３は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置１３０１は、再開位置情報とともに前記出力先を記憶部１４０７に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。
【０６３６】
この場合のデータ出力中断要求の一例としては、上記実施の形態におけるＰＡＵＳＥリクエストメッセージに、拡張ヘッダＸ−Ｒｅｏｐｅｎ−Ｔｅｒｍｉｎａｌを追加し、その値として特定端末を記述するものである。出力先としては、端末のＩＰアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、ＵＰｎＰＤＡに定義された方法によって取得可能である。
【０６３７】
また、データ出力装置１３０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
【０６３８】
また、データ出力装置１３０１は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
【０６３９】
（３）  上記実施の形態においては、データ出力装置１３０１は、デジタル放送を受信するＳＴＢとしたが、それに限るものではない。チューナを持たずに、ネットワークからコンテンツを受信して蓄積する構成であっても良い。この場合の構成は図４１と同様のものとなる。また、ネットワーク以外の部位によってデータを蓄積する構成であっても良い。
【０６４０】
（４）  また、上記においては、データ出力中断要求を受けたときに、引き続くデータを第２メモリ１４０３に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から第２メモリ１４０３に書き込んでおく構成であっても良い。
【０６４１】
この場合、出力再開位置情報は、上記実施の形態における第２メモリ１４０３に蓄積したコンテンツと同様の方法によって作成することが可能である。
【０６４２】
また、データ出力装置１３０１は、ＴＳマルチプレクサ１４１０の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、第１メモリ１４０２もしくは図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
【０６４３】
（５）  データ出力装置１３０１は、さらに、データ出力装置１３０１上での再生を中断したマルチメディアデータに対して、再開位置情報を生成し記録する構成であっても良い。
【０６４４】
この構成においても、上記実施の形態と同様の処理により、データ出力装置１３０１での再生を中断し、端末１３０２もしくは端末１３０３へ該データ出力再開を行うこと、および、端末１３０２もしくは端末１３０３への出力を中断し、データ出力装置１３０１上の再生として再開すること、などが可能となる。
【０６４５】
（６）  上記実施の形態においては、データ出力装置１３０１が再開位置情報を記憶することとしたが、ネットワーク上の第３の機器が記憶しておく構成であっても良い。
【０６４６】
図５２は、本発明の実施の形態２の第６の変形例におけるマルチメディア配信システムの構成を示す図である。
【０６４７】
図５２に示すマルチメディア配信システム５２０６は、データ出力装置５２０１と、ネットワークを通じてデータ出力装置および端末を制御する制御装置５２０２と、第１の端末５２０３と、第２の端末５２０４と、ネットワーク５２０５とを備える。データ出力装置５２０１、制御装置５２０２、端末５２０３および端末５２０４は、ネットワーク５２０５に接続されており、ネットワーク５２０５を介して相互に通信可能である。
【０６４８】
データ出力装置５２０１は、ネットワーク５２０５を通じて送信された、制御装置５２０２、端末５２０３および端末５２０４からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク５２０５を通じて制御装置５２０２へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク５２０５を通じて端末５２０３および端末５２０４へ送信するものである。
【０６４９】
また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
【０６５０】
データ出力装置５２０１は、実行中のデータ出力に対して、制御装置５２０２もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはＵＲＩとを、制御装置５２０２へネットワーク５２０５を通じて送信するものである。なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはＵＲＩを送信しなくとも良い。
【０６５１】
制御装置５２０２は、ユーザの要求によって動作するものである。制御装置５２０２は、ネットワーク５２０５を通じて、端末５２０３および端末５２０４を制御し、データ出力装置５２０１からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はＵＰｎＰ  ＡＶに定義された方法により可能であるため、詳細は省略する。
【０６５２】
また、データ出力装置５２０１へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末５２０３、端末５２０４もしくは制御装置５２０２自身の表示部によって、ユーザに提示する。
【０６５３】
また、ユーザから再生中断の要求を受けたとき、制御装置５２０２は、該再生を実行中の端末５２０３もしくは端末５２０４を制御して、データ出力装置５２０１へデータ送信中断要求を送信させるとともに、再生を中断させる。さらに、制御装置５２０２は、データ出力装置５２０１と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはＵＲＩといった、該データを特定できる情報を受信し、再開位置情報として制御装置５２０２内に記憶する。
【０６５４】
再開位置情報は、上記実施の形態２のものと同様のものを用いることが可能である。
【０６５５】
なお、該マルチメディアデータのＵＲＩは、制御装置５２０２が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。制御装置５２０２は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置５２０１から受信させて再生させる。
【０６５６】
端末５２０３および端末５２０４は、制御装置５２０２からネットワーク５２０５を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
【０６５７】
ネットワーク５２０５は、上記実施の形態におけるネットワーク１３０４と同様のものである。
【０６５８】
以上説明したとおり、本構成のマルチメディア配信システム５２０６では、制御装置５２０２が再開位置情報を管理することにより、例えば、端末５２０３で行っていたマルチメディアコンテンツの再生を中断し、端末５２０４で再開するといったことが可能となる。
【０６５９】
なお、ここでは、制御装置５２０２は、データ出力装置５２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置５２０１が再開位置情報を作成し、制御装置５２０２はそれを受信して保存する構成であっても良い。
【０６６０】
また、ここでは、制御装置５２０２は、データ出力装置５２０１から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末５２０３もしくは端末５２０４から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
【０６６１】
また、ここでは、制御装置５２０２が、端末５２０３もしくは端末５２０４に要求を発行し、端末からデータ出力装置５２０１へデータ送信要求を送信する構成としたが、制御装置５２０２が、データ出力装置５２０１へ端末５２０３もしくは端末５２０４へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置５２０１からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）によって行うことが可能である。
【０６６２】
また、ここでは、ネットワーク上の独立の制御装置５２０２が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
【０６６３】
（７）  上記の実施の形態２においては、データ伝送のプロトコルとしてＲＴＰ／ＲＴＳＰを用いているが、ＨＴＴＰなど、他のプロトコルを用いて行っても良い。ＨＴＴＰを用いる場合のデータ出力中断要求は、ＨＴＴＰ−ＧＥＴのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、ＨＴＴＰを用いる場合のデータ出力再開要求は、ＨＴＴＰ−ＧＥＴに上記のＸ−Ｒｅｓｔａｒｔのような独自拡張ヘッダを用いて行っても良い。
【０６６４】
（８）  上記の実施の形態２においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。また、マルチメディアデータがＭＰＥＧ２符号化データの場合、Ｉフレーム、ＭＰＥＧ２−ＴＳにおけるＰＡＴ、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
【０６６５】
（９）  上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。
【０６６６】
（１０）  上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０６６７】
（１１）  本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０６６８】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０６６９】
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０６７０】
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０６７１】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０６７２】
（１２）  上記実施の形態２及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０６７３】
本発明にかかるデータ出力装置、機器制御装置およびマルチメディア配信システムは、ネットワークを通じたマルチメディアコンテンツの再生などに関わるデータの通信において、中断したデータ通信を、受信する端末や装置を変更したとしても、的確に再開することが可能であるという優れた効果を有するため、ホームネットワークなどのネットワーク環境におけるマルチメディアコンテンツのサーバ装置、受信端末、機器制御装置、データ出力方法、機器制御方法などとして有用である。
【図面の簡単な説明】
【０６７４】
【図１】図１は、本発明の実施の形態１におけるマルチメディア配信システムの構成図である。
【図２】図２は、本発明の実施の形態１におけるデータ出力装置の構成の一例を示すブロック図である。
【図３】図３は、本発明の実施の形態１における端末および端末の構成の一例を示すブロック図である。
【図４】図４は、本発明の実施の形態１における蓄積部に蓄積されたデータの構成の一例を示す図である。
【図５】図５は、本発明の実施の形態１におけるマルチメディアデータの属性情報の一例を示す図である。
【図６】図６は、本発明の実施の形態１におけるＵＲＩテーブルの一例を示す図である。
【図７】図７は、本発明の実施の形態１における再開位置情報の一例を示す図である。
【図８】図８は、本発明の実施の形態１の第１の変形例における再開位置情報の一例を示す図である。
【図９】図９は、本発明の実施の形態１の第２の変形例における再開位置情報の一例を示す図である。
【図１０】図１０は、本発明の実施の形態１の第３の変形例におけるデータ出力装置の構成の一例を示すブロック図である。
【図１１】図１１は、本発明の実施の形態１の第４の変形例におけるデータ出力装置の構成の一例を示すブロック図である。
【図１２】図１２は、本発明の実施の形態１の第５の変形例におけるマルチメディア配信システムの構成の一例を示す図である。
【図１３】図１３は、本発明の実施の形態２におけるマルチメディア配信システムの構成の一例を示す図である。
【図１４】図１４は、本発明の実施の形態２おけるデータ出力装置の構成の一例を示すブロック図である。
【図１５】図１５は、フロントパネルで実施の形態２に係る入力部を構成した場合の外観の一例を示す図である。
【図１６】図１６は、本発明の実施の形態２におけるデータ出力装置が保持し、実行するプログラムの構成の一例を示す図である。
【図１７】図１７は、本発明の実施の形態２に係るモニタに表示された番組表の例を示す図である。
【図１８】図１８は、本発明の実施の形態２に係る第２メモリに記憶されている番組情報の一例を示す図である。
【図１９】図１９は、本発明の実施の形態２に係る第２メモリに格納されているチャンネル情報の一例を示す図である。
【図２０】図２０は、本発明の実施の形態２に係る第２メモリに格納されているチャンネルの識別子の例を示す図である。
【図２１】図２１は、収集したＰＡＴの情報の一例を模式的に示す図である。
【図２２】図２２は、収集したＰＭＴの情報の一例を模式的に示す図である。
【図２３】図２３は、収集したＡＩＴの情報の一例を模式的に示す図である。
【図２４】図２４は、ダウンロードしたファイルシステムの一例を示す図である。
【図２５】図２５は、データ出力装置が、第２メモリにマルチメディアデータを蓄積する形態の一例を示す図である。
【図２６】図２６は、本発明の実施の形態２における属性情報の一例を示す図である。
【図２７】図２７は、本発明の実施の形態２における属性情報テーブルの一例を示す図である。
【図２８】図２８は、ネットワークライブラリの内部構成の一例を示す図である。
【図２９】図２９は、ネットワークライブラリの内部構成に含まれる制御部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図３０】図３０は、ネットワークライブラリで使用されるＮｅｔＤｅｖｉｃｅクラスの構成の一例を示す図である。
【図３１】図３１は、ネットワークライブラリで使用されるＳｅｒｖＨａｎｄｌｅｒインタフェースの構成の一例を示す図である。
【図３２】図３２は、本発明の実施の形態２におけるＵＲＩテーブルの構成の一例を示す図である。
【図３３】図３３は、ネットワークライブラリで使用されるＲｅｏｐｅｎＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【図３４】図３４は、本発明の実施の形態２における再開位置情報テーブルの構成の一例を示す図である。
【図３５】図３５は、ネットワークライブラリの内部構成に含まれる情報受信部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図３６】図３６は、ネットワークライブラリで使用されるＲｅｑｕｅｓｔＩｎｆｏクラスの構成の一例を示す図である。
【図３７】図３７は、ネットワークライブラリの内部構成に含まれるデータ出力部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図３８】図３８は、ネットワークライブラリで使用されるＲｅｓｐｏｎｓｅＩｎｆｏクラスの構成の一例を示す図である。
【図３９】図３９は、ネットワークライブラリの内部構成に含まれる情報受信部が提供する、ネットワークライブラリが備えるＪａｖａ  ＡＰＩの一例を示す図である。
【図４０】図４０は、ネットワークライブラリ１６０５ｅの内部構成に含まれるデータ受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４１】図４１は、本発明の実施の形態２おける端末の構成の一例を示すブロック図である。
【図４２】図４２は、本発明の実施の形態２に係る端末のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。
【図４３】図４３は、ネットワークライブラリの内部構成の一例を示すブロック図である。
【図４４】図４４は、ネットワークライブラリの内部構成に含まれる制御部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４５】図４５は、ネットワークライブラリで使用されるＣｏｎｔｅｎｔＩｎｆｏクラスの構成の一例を示す図である。
【図４６】図４６は、ネットワークライブラリで使用されるＣｌｉｅｎｔＨａｎｌｄｅｒインタフェースの構成の一例を示す図である。
【図４７】図４７は、ネットワークライブラリの内部構成に含まれる情報送信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４８】図４８は、ネットワークライブラリの内部構成に含まれる情報受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図４９】図４９は、ネットワークライブラリの内部構成に含まれる判定部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図５０】図５０は、ネットワークライブラリの内部構成に含まれるデータ受信部が提供するＪａｖａ  ＡＰＩの一例を示す図である。
【図５１】図５１は、ネットワークライブラリ３００４ｄで使用されるＲｅｍｏｔｅＰｒｏｇｒａｍクラスの構成の一例を示す図である。
【図５２】図５２は、本発明の実施の形態２の第６の変形例におけるマルチメディア配信システムの構成を示す図である。
【符号の説明】
【０６７５】
１０１、１３０１  データ出力装置
１０２、１０３、１２０３、１２０４、１３０２、１３０３、５２０３、５２０４  端末
１０４、１２０５、１３０４、５２０５  ネットワーク
１０５、１２０６、１３０５、５２０６  マルチメディア配信システム
２０１  制御部
２０２、１４０４  受信部
２０３  蓄積部
２０４  読出部
２０５  第１出力部
２０６  第２出力部
２０７  記憶部
２０８  書込部
２０９  ネットワークインタフェース
３０１  機器制御部
３０２  制御部
３０３  受信部
３０４  送信部
３０５  判定部
３０６  データ受信部
３０７  データ復号部
３０８  ネットワークインタフェース
３０９  表示部
４０１  マルチメディアデータ
４０２  マルチメディアデータ
４１１  マルチメディアデータ４０１の属性情報
４１２  マルチメディアデータ４０２の属性情報
４２１  マルチメディアデータのＵＲＩテーブル
７０１  再開位置情報
８０１  再開位置情報
８０２  再開位置情報
８０３  再開位置情報
９０１  再開位置情報
９０２  再開位置情報
１００１  データ受信部
１００２  データ受信インタフェース
１１０１  データ復号部
１１０２  表示部
１２０１、５２０１  データ出力装置
１２０２、５２０２  制御装置
１４０１、４１０１  入力部
１４０２、４１０２  第１メモリ
１４０３、４１０３  第２メモリ
１４０５、４１０４  多重分離部
１４０６  デスクランブラ
１４０７、４１０５  ＴＳデコーダ
１４０８、４１０６  映像出力部
１４０９、４１０７  音声出力部
１４１０  ＴＳマルチプレクサ
１４１１、４１０８  ネットワーク部
１４１２、４１０９  ＣＰＵ
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007072680.tif 000055
【図２】
2007072680.tif 000056
【図３】
2007072680.tif 000057
【図４】
2007072680.tif 000058
【図５】
2007072680.tif 000059
【図６】
2007072680.tif 000060
【図７】
2007072680.tif 000061
【図８】
2007072680.tif 000062
【図９】
2007072680.tif 000063
【図１０】
2007072680.tif 000064
【図１１】
2007072680.tif 000065
【図１２】
2007072680.tif 000066
【図１３】
2007072680.tif 000067
【図１４】
2007072680.tif 000068
【図１５】
2007072680.tif 000069
【図１６】
2007072680.tif 000070
【図１７】
2007072680.tif 000071
【図１８】
2007072680.tif 000072
【図１９】
2007072680.tif 000073
【図２０】
2007072680.tif 000074
【図２１】
2007072680.tif 000075
【図２２】
2007072680.tif 000076
【図２３】
2007072680.tif 000077
【図２４】
2007072680.tif 000078
【図２５】
2007072680.tif 000079
【図２６】
2007072680.tif 000080
【図２７】
2007072680.tif 000081
【図２８】
2007072680.tif 000082
【図２９】
2007072680.tif 000083
【図３０】
2007072680.tif 000084
【図３１】
2007072680.tif 000085
【図３２】
2007072680.tif 000086
【図３３】
2007072680.tif 000087
【図３４】
2007072680.tif 000088
【図３５】
2007072680.tif 000089
【図３６】
2007072680.tif 000090
【図３７】
2007072680.tif 000091
【図３８】
2007072680.tif 000092
【図３９】
2007072680.tif 000093
【図４０】
2007072680.tif 000094
【図４１】
2007072680.tif 000095
【図４２】
2007072680.tif 000096
【図４３】
2007072680.tif 000097
【図４４】
2007072680.tif 000098
【図４５】
2007072680.tif 000099
【図４６】
2007072680.tif 000100
【図４７】
2007072680.tif 000101
【図４８】
2007072680.tif 000102
【図４９】
2007072680.tif 000103
【図５０】
2007072680.tif 000104
【図５１】
2007072680.tif 000105
【図５２】
2007072680.tif 000106
【国際調査報告】
2007072680.tif 000107
2007072680.tif 000108
2007072680.tif 000109