JPWO2007072680A1 - データ出力装置、機器制御装置およびマルチメディア配信システム - Google Patents
データ出力装置、機器制御装置およびマルチメディア配信システム Download PDFInfo
- Publication number
- JPWO2007072680A1 JPWO2007072680A1 JP2007551029A JP2007551029A JPWO2007072680A1 JP WO2007072680 A1 JPWO2007072680 A1 JP WO2007072680A1 JP 2007551029 A JP2007551029 A JP 2007551029A JP 2007551029 A JP2007551029 A JP 2007551029A JP WO2007072680 A1 JPWO2007072680 A1 JP WO2007072680A1
- Authority
- JP
- Japan
- Prior art keywords
- output
- data
- multimedia data
- request
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17309—Transmission or handling of upstream communications
- H04N7/17318—Direct or substantially direct transmission and handling of requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/432—Content retrieval operation from a local storage medium, e.g. hard-disk
- H04N21/4325—Content retrieval operation from a local storage medium, e.g. hard-disk by playing back content from the storage medium
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4333—Processing operations in response to a pause request
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8193—Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8543—Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
ネットワークに接続されたマルチメディアコンテンツサーバと複数の端末から構成されるマルチメディア配信システムにおいて、ある端末において中断したコンテンツの再生を、別の端末から再開する。
Description
本発明は、マルチメディアのデジタルコンテンツのネットワークなどへの出力およびその制御に関する。
近年、BSデジタル放送、CS110度デジタル放送および地上波デジタル放送などのデジタル放送が開始された。また、HDDレコーダ、DVD(Digital Versatile Disc)レコーダなどの普及が進んでいる。これらにより、家庭内で利用できる、デジタル化されたマルチメディアコンテンツが増加している。
また、一方で、ブロードバンド環境の整備により、家庭からのインターネットアクセスが普及している。それに伴い、家庭内の各部屋をIPネットワークで繋ぐ、いわゆるホームネットワークの普及も進んでいる。
このような状況により、家庭内のデジタル放送受信機で受信したデジタル放送、もしくは、レコーダに蓄積したデジタルコンテンツを、ホームネットワークを用いて、他の部屋で視聴することが行われるようになった。この際、ホームネットワーク上のサーバ(例えば、デジタル放送を受信するセットトップボックスやHDDレコーダ)とクライアント(例えば、パーソナルコンピュータやデジタルプレーヤ)における、お互いの機器の認識や利用できるコンテンツの情報のやり取りには、UPnP(Universal Plag and Play)に規定された方法が広く用いられている。また、マルチメディアデータの通信はRTP(Real Time Trasnport Protocol)などが、その制御にはRTSP(Real Time Streaming Protocol)などが用いられている。RTSPはIETF(Internet Engineering Task Force)によって規格化されている。(例えば、非特許文献1を参照)。
映画のような長時間のデジタルコンテンツを再生、視聴する場合、視聴を短時間中断したのち、続きを視聴するといったことが頻繁に行われる。RTSPを用いたネットワーク経由での視聴では、RTSPのRESUME機能を用いるか、もしくは、クライアントが中断位置を記憶しておき、再開時にサーバに改めて中断位置以降のデータ送信を要求することで実現されている。ここで、ホームネットワークにより、複数の部屋での視聴が可能になることにより、例えばリビングで視聴していたコンテンツの続きを寝室で見る、といったニーズが出てきている。
RFC2326 Real Time Streaming Protocol (RTSP)
RFC2326 Real Time Streaming Protocol (RTSP)
しかしながら、RTSPでは、サーバ−クライアントの1対1通信を対象とし、別のクライアントへのデータ転送は考慮されておらず、上記の部屋を変えての視聴再開を実現することは出来ない。また、クライアントが変わるため、クライアントが中断位置を記憶するといった方法を用いることができない。
本発明は、上記の問題を解決するためになされたもので、同じクライアントだけでなく異なるクライアントからでも、コンテンツの中断位置からの視聴を可能とするデータ出力装置、機器制御装置およびマルチメディア配信システムの提供を目的とする。
従来の課題を解決するために、本発明のデータ出力装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、外部の装置から信号を受信する受信手段と、マルチメディアデータを蓄積している蓄積手段と、前記蓄積手段からデータを読み出す読出手段と、前記マルチメディアデータを指定された出力先に出力する出力手段と、前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える。
このように、本発明のデータ出力装置は、再開位置情報を記憶している。これにより、マルチメディアデータの出力先が変わっても、中断されたマルチメディアデータ出力を中断された続きから的確に再開することが可能になる。
好ましくは、前記データ出力装置は、ネットワークを介して複数の端末に接続されており、前記出力手段は、ユーザにより指定された前記複数の端末のいずれかを出力先として出力する。
このように、出力手段はネットワークを介して接続された複数の端末に出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
また好ましくは、前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる。
このように、出力手段は複数の端末のいずれかに出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
さらに好ましくは、前記制御手段は、前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる。
このように、記憶手段は再開位置情報と中断識別子とを記憶している。これにより、ユーザは中断識別子によって再開要求を指示することができ、利便性が向上する。
さらに好ましくは、前記制御手段は、さらに、前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる。
このように、記憶手段は再開位置情報と出力先とを記憶している。これにより、記憶している出力先から出力再開要求を受け付けた場合にのみ、出力を再開することが可能になる。これにより、例えば、再開位置情報と出力先との組み合わせを複数記憶しておくことにより、再開要求を受け付けた出力先に応じて、適切なコンテンツを適切な再開位置から出力することが可能になる。
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
このように、マルチメディアデータを受信しながら出力している場合に、中断要求を受け付けると、受信しているマルチメディアデータの続きを蓄積しておく。これにより、デジタル放送で放送中もしくはVoD(Video On Demand)で受信中など、出力中断時にすべて受信していないデータであっても、再開要求を受け付けたときに蓄積されているマルチメディアデータを出力することができる。そのため、再開要求を受け付けたときのマルチメディアデータの出力を的確に再開することが可能となる。
さらに好ましくは、さらに、マルチメディアデータを再生する再生手段を備え、前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、前記制御手段は、さらに、前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる。
このように、データ出力装置自身が、マルチメディアデータを再生する再生手段を備え、再生手段を出力先として指定することができる。そのため、データ出力装置自身を出力先とすることが可能になる。
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
このように、データ出力装置は、マルチメディアデータを外部の装置から受信し、受信したマルチメディアデータを記憶手段に蓄積する。これにより、デジタル放送またはVoDにより配信されるマルチメディアデータの出力を中断し、その再開要求を受け付けた場合であっても、そのマルチメディアデータの出力を的確に再開することが可能になる。
さらに好ましくは、さらに、Java(登録商標)アプリケーションを実行するJava実行手段を備え、前記制御手段は、Javaアプリケーションによって起動される。
このように、データ出力装置はJava実行手段を備える。これにより、Javaにより記述されたアプリケーションプログラム(以下、「Javaアプリケーション」という。)を実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
また、第19の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、前記データ出力装置へ要求を送信する送信手段と、前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える。
このように、機器制御装置は、中断要求とともに、特定した出力先をデータ出力装置に送信する。これにより、データ出力装置に、データ出力再開時の送信先を登録することが可能であり、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
好ましくは、さらに、Javaアプリケーションを実行するJava実行手段を備え、前記Javaアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
次に、第22の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、前記データ出力装置から提供されるマルチメディアデータに含まれるコンテンツの属性を受信する属性受信手段と、前記データ出力装置に要求を送信する送信手段と、ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える。
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、マルチメディアデータに含まれるコンテンツの属性として、そのコンテンツの出力が中断されているか否かを判定し、出力が中断されていると判定した場合に、そのコンテンツが含まれるマルチメディアデータの出力の再開要求を送信する。これにより、出力が中断されている場合には、その続きから出力することができ、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
好ましくは、前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記マルチメディアサーバへ送信させる。
このように、コンテンツの属性には出力中断を表す識別子が含まれる。これにより、その識別子によってマルチメディアデータを特定し、その出力を再開させることが可能になる。
さらに、Javaアプリケーションを実行するJava実行手段を備え、前記制御手段は、前記Javaアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記マルチメディアサーバへ送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
さらに、第26の発明の機器制御装置は、ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記データ出力装置と通信する通信手段と、前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える。
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、再開位置情報を記憶している。これにより、ネットワークを介してデータ出力装置に再開要求とともに、出力を再開する位置を送信できる。そのため、データ装置によるマルチメディアデータの出力の再開を的確に制御することが可能になる。
好ましくは、さらに、Javaアプリケーションを実行するJava実行手段を備え、前記制御手段は、前記Javaアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、Javaアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
なお、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置として実現することができるだけでなく、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段をステップとする方法として実現したり、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc−Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができる。また、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置を備えるマルチメディア配信システムとして実現することもできる。
以上述べたように、本発明のデータ出力装置、機器制御装置、マルチメディア配信システムによれば、マルチメディアコンテンツの視聴・再生を中断して再開する場合に、ネットワーク上の別の端末で再開する場合においても、的確に再開することが可能となる。
101、1301 データ出力装置
102、103、1203、1204、1302、1303、5203、5204 端末
104、1205、1304、5205 ネットワーク
105、1206、1305、5206 マルチメディア配信システム
201 制御部
202、1404 受信部
203 蓄積部
204 読出部
205 第1出力部
206 第2出力部
207 記憶部
208 書込部
209 ネットワークインタフェース
301 機器制御部
302 制御部
303 受信部
304 送信部
305 判定部
306 データ受信部
307 データ復号部
308 ネットワークインタフェース
309 表示部
401 マルチメディアデータ
402 マルチメディアデータ
411 マルチメディアデータ401の属性情報
412 マルチメディアデータ402の属性情報
421 マルチメディアデータのURIテーブル
701 再開位置情報
801 再開位置情報
802 再開位置情報
803 再開位置情報
901 再開位置情報
902 再開位置情報
1001 データ受信部
1002 データ受信インタフェース
1101 データ復号部
1102 表示部
1201、5201 データ出力装置
1202、5202 制御装置
1401、4101 入力部
1402、4102 第1メモリ
1403、4103 第2メモリ
1405、4104 多重分離部
1406 デスクランブラ
1407、4105 TSデコーダ
1408、4106 映像出力部
1409、4107 音声出力部
1410 TSマルチプレクサ
1411、4108 ネットワーク部
1412、4109 CPU
102、103、1203、1204、1302、1303、5203、5204 端末
104、1205、1304、5205 ネットワーク
105、1206、1305、5206 マルチメディア配信システム
201 制御部
202、1404 受信部
203 蓄積部
204 読出部
205 第1出力部
206 第2出力部
207 記憶部
208 書込部
209 ネットワークインタフェース
301 機器制御部
302 制御部
303 受信部
304 送信部
305 判定部
306 データ受信部
307 データ復号部
308 ネットワークインタフェース
309 表示部
401 マルチメディアデータ
402 マルチメディアデータ
411 マルチメディアデータ401の属性情報
412 マルチメディアデータ402の属性情報
421 マルチメディアデータのURIテーブル
701 再開位置情報
801 再開位置情報
802 再開位置情報
803 再開位置情報
901 再開位置情報
902 再開位置情報
1001 データ受信部
1002 データ受信インタフェース
1101 データ復号部
1102 表示部
1201、5201 データ出力装置
1202、5202 制御装置
1401、4101 入力部
1402、4102 第1メモリ
1403、4103 第2メモリ
1405、4104 多重分離部
1406 デスクランブラ
1407、4105 TSデコーダ
1408、4106 映像出力部
1409、4107 音声出力部
1410 TSマルチプレクサ
1411、4108 ネットワーク部
1412、4109 CPU
(実施の形態1)
以下本発明の実施の形態について、図面を参照しながら説明する。
以下本発明の実施の形態について、図面を参照しながら説明する。
図1は、本発明の実施の形態1におけるマルチメディア配信システムの構成図である。
図1に示すマルチメディア配信システム105は、データ出力装置101と、第1の端末102と、第2の端末102と、ネットワーク104とを備える。データ出力装置101、端末102および端末103は、ネットワーク104に接続されており、ネットワーク104を介して相互に通信可能である。
本実施の形態におけるデータ出力装置101は、ネットワーク104を通じて送信された、端末102および端末103からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク104を通じて端末102および端末103へ送信するものである。
データ出力装置101は、実行中のデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはURI(Uniform Resource Identifier)と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。そして、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
端末102および端末103は、ユーザの要求により、データ出力装置101へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク104を通じて送信する。そして、端末102および端末103は、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。
端末102および端末103は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
ネットワーク104は、家庭内に施設されたホームネットワークであり、イーサネット(登録商標)、無線LANなどによって構成されたIPネットワークである。
以上のように、本発明のデータ出力装置101、端末102、端末103、およびマルチメディア配信システム105においては、例えば端末102にて受信中だったデータの送信を中断しても、別の端末103において、的確にデータ通信を再開することが可能となる。
以下、本発明のマルチメディア配信システム105を構成する、データ出力装置101、端末102および端末103について、更に詳細に説明する。ここでは、端末102へデータ通信中にデータ送信を中断し、端末103へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
まず、データ出力装置101について説明する。
図2は、本発明の実施の形態1におけるデータ出力装置101の構成の一例を示すブロック図である。
図2に示すデータ出力装置101は、制御部201と、外部の制御装置からの信号を受信する受信部202と、データを蓄積する蓄積部203と、制御部201からの指示に従い蓄積部203からデータ読み出す読出部204と、第1出力部205と、第2出力部206と、データ出力を中断したときに、該データおよびデータ出力中断位置から得られる再開位置情報を記憶する記憶部207と、蓄積部203にデータを書き込む書込部208と、ネットワーク104と接続されるネットワークインタフェース209とを備える。
制御部201をより詳細に説明する。制御部201は、マイクロプロセッサ、ROM、RAMなどによって構成されている。ROM、RAMおよび図示していない情報記憶部にはマイクロプロセッサにて動作するOS、Java(登録商標) VM(Java Virtual Machine)プログラム、Javaプログラムライブラリ、Javaアプリケーションプログラムが保存されている。マイクロプロセッサは、起動時にOSを読み込んで実行する。引き続いて、Javaアプリケーション起動時に、Java VMを読み込んで実行し、必要に応じてJavaプログラムライブラリを読み込みながら、Javaアプリケーションを実行する。
制御部201は、受信部202からの信号を受け、Javaアプリケーションにしたがって、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208との制御、およびこれらとの間のデータ送受信を行う。
受信部202は、ネットワークインタフェース209に接続されており、ネットワークインタフェース209に届いたデータ出力装置101宛の情報を受信して、制御部201に引き渡す。受信部202は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。
なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。また、ネットワークインタフェース209のほか、例えば赤外線通信を行う通信部など、別の通信部にも同時に接続されたものであっても良い。
蓄積部203は、ハードディスクドライブに代表される、大容量をもつデジタルデータの蓄積装置と、そのドライバソフトウェアから構成されるものである。
読出部204は、制御部201からの指示を受け、蓄積部203に蓄積されたデータファイルのうち、指定されたファイルの指定位置からのデータを順次読み出して、第1出力部205および第2出力部206へ転送する。
第1出力部205および第2出力部206は、ネットワークインタフェース209に接続されており、制御部201の指示を受けて動作し、制御部201もしくは読出部204から送られたデータを、制御部201が指示した宛先へのパケットに変換して、ネットワークインタフェース209を通じて出力するものである。第1出力部205および第2出力部206は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
記憶部207は、フラッシュメモリやHDDなどの記憶装置もしくはその一部によって構成されるものであり、制御部201からの指示を受け、制御部201から受け取ったデータを記憶するものである。
書込部208は、制御部201からの指示を受け、蓄積部203にデータを書き込むものである。データの書き込みには、新規にデータを書き込む場合と、既存のデータに上書きする場合の2つがある。
ネットワークインタフェース209は、Etherケーブルや無線LANなどネットワークの物理メディアに応じたインタフェースを提供するハードウェアとそのドライバソフトウェアから構成されるものである。
以下、図を参照しながら、データ出力装置101の動作を、更に詳細に説明する。ここでは、説明を簡易にするために、第1出力部205は端末102へ出力するものであり、第2出力部206は端末103へ出力するものであるとするが、この構成に限らないことは言うまでもない。
図4は、本発明の実施の形態1における蓄積部203に蓄積されたデータの構成の一例を示す図である。
図4において、蓄積部203は、大きく分けて、マルチメディアデータ、マルチメディアデータの属性情報、マルチメディアデータのURIテーブルという3種類のデータ群を蓄積しており、マルチメディアデータ401と、マルチメディアデータ402と、属性情報411と、属性情報412と、マルチメディアデータのURIテーブル421とを含む例を示す。本実施の形態では、属性情報411はマルチメディアデータ401の属性情報を、属性情報412はマルチメディアデータ402の属性情報を、それぞれ表すこととする。蓄積部203が蓄積しているマルチメディアデータや属性情報は、それぞれ2つに限られない。
マルチメディアデータ401、402は、デジタル化されたマルチメディアコンテンツデータであり、代表的には、MPEG2によって符号化されたデータである。各マルチメディアデータ401、402は、それぞれ、蓄積部203上において、一つのファイルとして蓄積され、ファイル名が付けられている。
属性情報411、412は、マルチメディアデータ401、402に、例えば、コンテンツのタイトル、ジャンル、放送日時、録画日時、出力した回数、最後に出力した日時といった、付加的な情報を与えるものである。図5に、属性情報の一例を示す。
図5は、本発明の実施の形態1におけるマルチメディアデータの属性情報411の一例を示す図である。図5に示す属性情報は、XML(Extensible Markup Language)によって定義されたテキスト情報である。
URIテーブル421は、各マルチメディアデータとそのURIの対応を記憶するものであり、図6にその一例を示す。
図6は、本発明の実施の形態1に係るURIテーブル421の一例を示す図である。図6において、ファイル名0001.m2tsというマルチメディアデータのURIは、rtsp://192.168.0.3/AVData/0001.m2tsであることを表している。
なお、URIテーブルは、必ずしも必要ではなく、データ出力装置101のIPアドレスもしくはホスト名と、マルチメディアデータのファイル名から、制御部201が都度作成する構成であっても良いし、URIを付加情報として属性情報の中に記述する構成であっても良い。また、URIテーブルはファイル名とURIとの対応に限るものではなく、タイトルや各マルチメディアデータに付加された識別子や番号などとURIとの対応であっても良い。
まず、端末102へのデータ送信を中断するまでの過程におけるデータ出力装置101の動作を説明する。
制御部201は、受信部202から受け取った端末102の要求がコンテンツ一覧取得であった場合、読取部204を制御して情報を読み出すことにより、蓄積部203に蓄積されたマルチメディアデータの一覧表を作成して、第1出力部205から端末102へ送信する。
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのURIとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
コンテンツ一覧の取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧のデータフォーマットは、UPnP AVに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。コンテンツ一覧のフォーマットは、XMLによって定義されているため、XML Namespaceを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースNaを使った要素PAUSEを各コンテンツの情報に追加し、このPAUSE要素の内容が「Yes」の場合は、出力中断中であることを表すことと出来る。
また、制御部201は、受信部202から受け取った端末102の要求がデータ送信要求であった場合、読出部204に指示して要求されたマルチメディアデータを蓄積部203から読み出させ、第1出力部205に指示して読み出したデータを送信する。例えば、送信要求としてRTSPを使用して、URIが rtsp://192.168.0.3/AVData/0001.m2tsのデータを、先頭から送信する要求の場合、以下のメッセージが端末102からデータ出力装置101へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
制御部201は、上記メッセージを受け取ると、読出部204に読み出させたURIテーブル421を参照して、URIが rtsp://192.168.0.3/AVData/0001.m2tsであるマルチメディアデータを検索する。本実施の形態の場合、マルチメディアデータ401がそれに当たる。対応するマルチメディアデータが存在すれば、制御部201は、RTSPに規定された以下のような返答メッセージを作成して、第1出力部205に指示して端末102へ送信させる。
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
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
その後、読出部204に指示してマルチメディアデータ401の先頭から順次データを読み出させ、第1出力部205に指示して読み出したデータを端末102へ送信する。データ送信はRTPに規定された方法で行われるため、詳細は省略する。
制御部201は、受信部202から受け取った端末102の要求がデータ送信中断であった場合、第1出力部205に指示してデータ送信を停止させるとともに、送信済データ数を第1出力部205より受け取る。また、読出部204に指示して、蓄積部203からのデータの読み出しを停止させる。RTSPを用いる場合、データ送信中断はPAUSEコマンドを用いて行うことが出来る。これは、以下のメッセージが端末102から送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
制御部201は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、第1出力部205に送信させる。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
また、読出部204に指示して属性情報411を読み出し、出力中断中の属性を追加する。本実施の形態においては、図5に示した属性情報のうち、「PAUSE」という要素で表すこととする。すなわち、PAUSE要素があって、その内容が「Yes」の場合に限り、データ送信を中断している状態を表すこととする。
制御部201は、属性情報411を更新した後、書込部208に指示して、蓄積部203上の属性情報411に上書きさせる。
制御部201は、さらに、第1出力部205より受け取った送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から50119バイトのデータを送信した場合は、先頭から50120バイト目となる。
制御部201は、この送信再開位置とマルチメディアデータ401を識別する情報、例えばファイル名を組として、再開位置情報を作成して、記憶部207に記憶させる。図7にこの再開位置情報の一例を示す。
図7は、本発明の実施の形態1における再開位置情報の一例を示す図である。図7は、上記のデータ送信中断における再開位置情報701を表す。なお、本実施の形態においては、第1出力部205から受け取った送信済データ数を基に送信再開位置を求めたが、読出部204より受け取った、例えば、読出済データ数を基に求めるものであっても良い。
RTSPでは、このあとに、セッションを切断するTEARDOWNというコマンドが送受信されるが、本実施の形態では、TEARDOWNを行っても、上記の再開位置情報701および属性情報411は更新しない。
なお、より明確に後に再開する中断であることを表すために、PAUSEもしくはTEARDOWNを拡張して、再開位置情報701の作成・保持および属性情報411の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるX―Keep―Pause―Statusを用い、その値が「Yes」の場合に限り、再開位置情報701を作成・保持および属性情報411を更新・保持することとすれば、上記のPAUSEメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
この場合、制御部201は、受信したPAUSEメッセージにX―Keep―Pause―Statusヘッダがあり、かつその値が「Yes」であるので、再開位置情報701を作成して保持し、また、属性情報411を更新して保持する。X―Keep―Pause―Statusヘッダがないか、あっても値が「Yes」以外の場合は、制御部201は、再開位置情報701を作成せず、また、属性情報411を更新しない。
次に、端末103との通信において、上記の中断したデータ送信を再開する過程のデータ出力装置101の動作を説明する。
まず、コンテンツ一覧取得に関しては、上記と同様のため、説明を省略する。
制御部201は、受信部202から受け取った端末103の要求が中断したデータ送信の再開であった場合の処理を説明する。本実施の形態においては、この要求は、RTSPのPLAYに、独自拡張ヘッダであるX−Restartを用い、その値を「Yes」とすることで行うものとする。この場合、端末103から以下のメッセージが送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
制御部201は、まず、URIテーブル421を参照しながら、PLAYメッセージで送られてきたURIのマルチメディアデータ(この場合はマルチメディアデータ401)の再開位置情報を、記憶部207に記憶された再開位置情報から検索する。この場合は、再開位置情報701が該当する。
制御部201は、再開位置情報701から、再開位置が先頭から50120バイト目であることを読み取り、読出部204にマルチメディアデータ401の先頭から50120バイト目から読み出すように指示を送る。読出部204は、指示を受けてデータの読み出しを開始する。
制御部201は、続いて、以下の返答メッセージを作成し、第2出力部206に指示して、端末103へ送信させる。なお、50120バイト目は、マルチメディアデータ401の先頭から8分目としている。
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
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
続いて、制御部201は、PLAYメッセージが端末103から送られてきたことから、データの送信先を端末103と判定し、第2出力部206に指示して、読出部204が読み出したデータを、端末103へ送信させる。また、制御部201は、再開位置情報701を記憶部から削除するとともに、属性情報411から、「出力中断中」の属性を削除して、属性情報411を更新する。
なお、本実施の形態の場合、制御部201は、RTSPメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末103から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
次に、端末102および端末103について説明する。
図3は、本発明の実施の形態1における端末102および端末103の構成の一例を示すブロック図である。
図3に示す端末102および端末103は、機器制御部301と、制御部302と、データ出力装置101から送信されたメッセージを受信する受信部303と、データ出力装置101に要求メッセージを送信する送信部304と、受信部303が受信したメッセージのうち、マルチメディアデータの属性を解釈して出力中断中であるかを判定する判定部305と、データ出力装置101から送信されたマルチメディアデータを受信するデータ受信部306と、受信したマルチメディアデータを復号するデータ復号部307と、ネットワーク104と接続されるネットワークインタフェース308と、復号したマルチメディアデータを表示する表示部309とを備える。
機器制御部301は、より詳細には、制御部302と、受信部303と、送信部304と、判定部305とを有する。
制御部302をより詳細に説明する。制御部302は、マイクロプロセッサ、ROM、RAMなどによって構成されている。ROM、RAMおよび図示していない情報記憶部にはマイクロプロセッサにて動作するOS、Java VMプログラム、Javaプログラムライブラリ、Javaアプリケーションプログラムが保存されている。
マイクロプロセッサは、起動時にOSを読み込んで実行する。引き続いて、Javaアプリケーション起動時に、Java VMを読み込んで実行し、必要に応じてJavaプログラムライブラリを読み込みながら、Javaアプリケーションを実行する。制御部302は、図示していないユーザインタフェース部からユーザの要求を受け、Javaアプリケーションにしたがって、受信部303と、送信部304と、判定部305と、データ受信部306と、データ復号部307と、表示部309との制御、およびこれらとの間のデータ送受信を行う。
受信部303は、ネットワークインタフェース308に接続されており、ネットワークインタフェース308に届いた該端末宛の情報を受信して、制御部302に引き渡す。受信部303は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
送信部304は、ネットワークインタフェース308に接続されており、制御部302の指示を受けて動作し、制御部302から送られたデータを、制御部302が指示した宛先へのパケットに変化して、ネットワークインタフェース308を通じて送信するものである。送信部304は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
判定部305は、制御部302の指示により、受信部303が受信したメッセージを解釈して、その中に含まれるマルチメディアデータの属性を検索して該マルチメディアデータが「出力中断中」であるか否かを判定し、その結果を制御部302に返すものである。判定部305は、代表的には、JavaライブラリもしくはJavaアプリケーションプログラムに含まれるサブルーチンである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
データ受信部306は、ネットワークインタフェース308と接続されており、制御部302の指示にしたがって、データ出力装置101から送信されたマルチメディアデータを受信して、データ復号部307に引き渡すものである。データ受信部306は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
データ復号部307は、制御部302の指示にしたがって、送られてきたマルチメディアデータを復号するものである。上記の通り、マルチメディアデータは、MPEG2に代表される符号化方式によって符号化されている。データ復号部307は、このデータを復号し、表示部309へ復号したデータを送信する。データ復号部307は、代表的にはハードウェアデコーダとそのドライバソフトウェアで構成されるものである。
ネットワークインタフェース308は、上記のネットワークインタフェース209と同様の構成である。
表示部309は、モニタおよびスピーカから構成されるもの、もしくは、外部のモニタ、スピーカへ映像・音声信号を送出するものである。
以下、端末102および端末103の動作について、上記の通り、端末102へデータ通信中にデータ送信を中断し、端末103へ中断したデータ送信を再開する場合を例に説明する。なお、端末102および端末103は、少なくともデータ出力装置101がネットワーク104に接続されており、マルチメディアコンテンツデータを提供するサーバであることを、既に認識しているものとする。このような、ネットワーク上の機器の発見、および、その能力の検知は、UPnP DA(Device Architecture)に定義された方法にて行えるため、詳細な説明は省略する。
まず、端末102にて、映像再生の中断までの過程における動作について説明する。
制御部302は、ユーザからの要求により、コンテンツ一覧送信要求メッセージを作成して、送信部304に指示してデータ出力装置101へ送信する。さらに、受信部303によって、データ出力装置101から送信されたコンテンツ一覧メッセージを受信し、コンテンツのタイトルなどの情報をユーザに提示する。ユーザへの提示は、表示部309を用いて行っても良く、また、図示していない他の提示部によって行っても良い。
次に、制御部302は、ユーザから提示したコンテンツのひとつを選択した再生要求を受けると、データ送信要求メッセージを作成して、送信部304に指示してデータ出力装置101へ送信する。データ送信要求メッセージの一例は、上記のRTSPにおけるPLAYメッセージである。引き続いて、受信部303により、データ出力装置101から返答メッセージを受信する。返答メッセージの一例は、上記のPLAYメッセージに対する返答である。
返答メッセージが、送信開始であれば、制御部302は、データ受信部306に指示して、データ出力装置101から送信されたマルチメディアデータを受信させ、また、データ復号部307に指示して、受信したマルチメディアデータを復号させ、さらに、表示部309に指示して、復号したマルチメディアデータを表示させる。
また、制御部302は、返答メッセージが、送信不可であれば、それをユーザに提示する。
次に、制御部302は、ユーザから再生中断の要求を受けると、データ送信中断要求メッセージを作成し、送信部304に指示してデータ出力装置101へ送信する。データ送信中断要求メッセージの一例は、上記のRTSPにおけるPAUSEメッセージである。
続いて、制御部302は、受信部303により、データ出力装置101からの返答メッセージを受信するとともに、データ受信部306にはマルチメディアデータの受信動作を、データ復号部307にはデータの復号を、表示部309にはデータの表示を、それぞれ指示して停止させる。
次に、端末103において、端末102で中断させた再生を再開する動作について説明する。
まず、制御部302は、ユーザの要求により、上記と同様の方法で、コンテンツ一覧メッセージをデータ出力装置101より取得する。
次に、制御部302は、上記と同様に、受信したコンテンツ一覧メッセージから、コンテンツのタイトルなどの情報をユーザに提示する。この際、制御部302は、判定部305に指示して、データ出力中断中のコンテンツを判定させ、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
続いて、制御部302は、ユーザから出力中断中のコンテンツの再生再開要求を受けると、該コンテンツのデータ送信再開要求メッセージを作成し、送信部304に指示してデータ出力装置101へ送信する。データ送信再開要求メッセージの一例は、上記のPLAYメッセージに拡張ヘッダX−Restartを加えたものである。
続いて、受信部303により、データ出力装置101から返答メッセージを受信する。返答メッセージの一例は、上記のX−Restartヘッダ付PLAYメッセージに対する返答である。
返答メッセージが、送信開始であれば、制御部302は、データ受信部306に指示して、データ出力装置101から送信されたマルチメディアデータを受信させ、また、データ復号部307に指示して、受信したマルチメディアデータを復号させ、さらに、表示部309に指示して、復号したマルチメディアデータを表示させる。
また、制御部302は、返答メッセージが、送信不可であれば、それをユーザに提示する。
なお、本実施の形態においては、RTSPのコマンドメッセージを送信した端末が、データ出力装置101におけるデータの出力先としているため、端末103から送信先端末である出力先の明示的な指定を省略しているが、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム105を構成するデータ出力装置101は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
また、本実施の形態にかかる端末102および端末103は、あるマルチメディアデータが、データ出力装置101において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置101に、データ出力を再開させる機器制御部301を含むものである。この構成により、例えば、端末102にて、あるマルチメディアコンテンツの視聴を中断し、端末103にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
(実施の形態1の変形例)
本発明の実施の形態1について説明してきたが、本発明は、上記の実施の形態1に限定されるものではない。以下のような場合も、本発明に含まれる。
本発明の実施の形態1について説明してきたが、本発明は、上記の実施の形態1に限定されるものではない。以下のような場合も、本発明に含まれる。
(1) データ出力装置101は、データ出力を中断するときに、この中断を識別する識別子を発行して、再開位置情報とともに記憶部207に記憶させ、コンテンツ一覧にこの識別子を含めて端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。図8に、この場合に記憶部207に記憶されるデータの一例を示す。
図8は、本発明の実施の形態1の第1の変形例における再開位置情報の一例を示す図である。図8に示すように、記憶部207には、再開位置情報801と、再開位置情報802と、再開位置情報803とが記憶されている例を示す。例えば、再開位置情報801は、識別子ID1の中断に関するものであり、ファイル名0001.m2tsのマルチメディアデータを50120バイト目から再開することを表している。
また、端末102および端末103の機器制御部301は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図5において、PAUSE要素の内容を、この識別子に設定し、PAUSE要素があり、かつその内容が記述されている場合は出力中断状態であり、PAUSE要素がないか、PAUSE要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
また、データ出力装置101が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
また、データ出力装置101は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、上記識別子は、端末からデータ出力装置101に提供されるものであっても良い。さらに、データ出力装置101は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
(2) 端末102および端末103は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置101は、再開位置情報とともに前記出力先を記憶部207に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。この場合のデータ出力中断要求の一例としては、上記実施の形態におけるPAUSEコマンドメッセージに、拡張ヘッダX―Reopen―Terminalを追加し、その値として特定端末を記述するものである。出力先としては、端末のIPアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、UPnP DAに定義された方法によって取得可能である。図9に、この場合に記憶部207に記憶されるデータの一例を示す。
図9は、本発明の実施の形態1の第2の変形例における再開位置情報一例を示す図である。図9に示すように、記憶部207には、再開位置情報901と、再開位置情報902とが記憶されている。例えば、再開位置情報901は、ファイル名0001.m2tsのマルチメディアデータの出力を50120バイト目から再開し、その出力先は端末T1であることを表している。
また、データ出力装置101は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
また、データ出力装置101は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
さらに、データ出力装置101は、データ出力中断要求とともにデータ出力再開時の出力先を受信する場合、データ出力再開時の出力先は、特定の出力先が選択されるだけでなく、候補となる出力先の一部または全部が選択できてもよい。
この場合、例えば、データ出力装置101がデータ出力中断要求とともに、出力再開時の出力先として特定の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する。また、データ出力装置101がデータ出力中断要求とともに、出力再開時の出力先として候補となる出力先の一部または全部を受信した場合、出力再開時の出力先として受信した出力先のいずれかである端末からの要求によってのみ、データ出力を再開する。
(3) データ出力装置101は、更に外部からのデータを受信するデータ受信部を備え、蓄積部203に蓄積されたデータ、および、受信部が受信したデータを送信する構成であっても良い。図10に、この場合の代表的な構成図を示す。
図10は、本発明の実施の形態1の第3の変形例に係るデータ出力装置の構成の一例を示すブロック図である。
図10に示すデータ出力装置は、データ受信部1001と、受信インタフェース1002と、制御手段201と、受信手段202と、蓄積手段203と、読出手段204と、第1出力手段205と、第2出力手段206と、記憶手段207と、書込手段208と、ネットワークインタフェース209とを備える。
データ受信部1001は、受信インタフェース1002が受信した信号からマルチメディアデータを抽出するもので、代表的には、デジタル放送のチューナなどである。この場合、受信インタフェース1002はアンテナとなる。
また、図10において、制御手段201と、受信手段202と、蓄積手段203と、読出手段204と、第1出力手段205と、第2出力手段206と、記憶手段207と、書込手段208と、ネットワークインタフェース209は、図2に示したものと同様のものであるが、制御部201は、さらに、データ受信部1001を制御するものであり、第1出力部205および第2出力部206は、データ受信部1001の出力であるマルチメディアデータを出力することも可能なものであり、また、書込部208は、データ受信部1001が受信したマルチメディアデータを蓄積部203に書き込むことが可能なものである。
データ受信部1001からのマルチメディアデータを出力中に、データ出力中断要求を受けた場合、制御部201は、出力している第1出力部205もしくは第2出力部206に出力を停止させるとともに、書込部208に指示して、引き続くデータ受信部1001からの出力であるマルチメディアデータを蓄積部203に順次書き込ませる。
さらに、該マルチメディアデータの属性情報を作成して書き込ませるとともに、該マルチメディアデータのURIを作成して、URIテーブル421を更新する。また、該マルチメディアデータを書き込むファイル名と、再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶部207に記憶させる。
以上により、該マルチメディアデータの出力再開要求を受けた場合、制御部201は、上記実施の形態にて説明したのと同様の方法によって、データ出力再開を行うことが可能である。
なお、上記においては、データ出力中断要求を受けたときに、引き続くデータを蓄積部203に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から蓄積部203に書き込んでおく構成であっても良い。この場合、出力再開位置情報は、上記実施の形態と同様の方法によって作成することが可能である。
また、データ出力装置101は、データ受信部1001の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
(4) データ出力装置101は、さらに、マルチメディアデータを復号するデータ復号部と、復号されたマルチメディアデータを表示する表示部とを備えた構成であっても良い。図11に、この場合の代表的な構成図を示す。
図11は、本発明の実施の形態1の第4の変形例におけるデータ出力装置の構成を示すブロック図である。図11に示すデータ出力装置は、制御手段201と、受信手段202と、蓄積手段203と、読出手段204と、第1出力手段205と、第2出力手段206と、記憶手段207と、書込手段208と、ネットワークインタフェース209と、データ復号部1101と、表示部1102とを備える。
制御手段201と、受信手段202と、蓄積手段203と、読出手段204と、第1出力手段205と、第2出力手段206と、記憶手段207と、書込手段208と、ネットワークインタフェース209とは、図2に示したものと同様のものであるが、制御部201は、さらに、データ復号部1101および表示部1102の制御も行うことのみが異なる。データ復号部1101は、端末102および端末103におけるデータ復号部307と同様のものであり、表示部1102は、表示部309と同様のものである。
また、図11においては、第1出力部205がデータ復号部1101と接続されている。この構成においても、上記実施の形態と同様の処理により、データ復号部1101へのデータ出力である第1出力部205からの出力を中断し、別の第2出力部206からの出力として該データ出力を行うこと、および、第2出力部206へのデータ出力を中断し、データ復号部1101への出力である第1出力部205からの出力として再開すること、などが可能となる。
なお、上記実施の形態にも記載したが、受信部202は、赤外線通信などによる受信を併せ持ってもよく、制御部201は、ネットワーク104以外から送られる要求にしたがっても、各部を制御して動作させるものであっても良い。この場合、例えば、コンテンツ一覧や応答メッセージなどは、第1出力部205から出力するのではなく、適切なメッセージに変換されて、例えば表示部1102に表示するなどして、ユーザに提示される。
(5) 上記実施の形態においては、データ出力装置101が再開位置情報を記憶することとしたが、ネットワーク上の第3の機器が記憶しておく構成であっても良い。図12に、この場合のマルチメディア配信システムの構成図を示す。
図12は、本発明の実施の形態1の第5の変形例におけるマルチメディア配信システムの構成の一例を示す図である。
図12に示すマルチメディア配信システム1206は、データ出力装置1201と、ネットワークを通じてデータ出力装置および端末を制御する制御装置1202と、第1の端末1203と、第2の端末1204と、ネットワーク1205とを備える。データ出力装置1201、制御装置1202、端末1203および端末1204は、ネットワーク1205に接続されており、ネットワーク1205を介して相互に通信可能である。
データ出力装置1201は、ネットワーク1205を通じて送信された、制御装置1202、端末1203および端末1204からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク1205を通じて制御装置1202へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク1205を通じて端末1203および端末1204へ送信するものである。また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
また、データ出力装置1201は、実行中のデータ出力に対して、制御装置1202もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはURIとを、制御装置1202へネットワーク1205を通じて送信するものである。
なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはURIを送信しなくとも良い。
制御装置1202は、ユーザの要求によって動作するものである。
制御装置1202は、ネットワーク1205を通じて、端末1203および端末1204を制御し、データ出力装置1201からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はUPnP AVに定義された方法により可能であるため、詳細は省略する。
また、制御装置1202は、データ出力装置1201へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末1203、端末1204もしくは制御装置1202自身の表示部によって、ユーザに提示する。また、ユーザから再生中断の要求を受けたとき、制御装置1202は、該再生を実行中の端末1203もしくは端末1204を制御して、データ出力装置1201へデータ送信中断要求を送信させるとともに、再生を中断させる。
さらに、制御装置1202は、データ出力装置1201と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはURIといった、該データを特定できる情報を受信し、再開位置情報として制御装置1202内に記憶する。
再開位置情報は、上記の実施の形態1および変形例に係る再開位置情報のいずれかと同様のものを用いることが可能である。
なお、該マルチメディアデータのURIは、制御装置1202が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。
制御装置1202は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置1201から受信させて再生させる。
端末1203および端末1204は、制御装置1202からネットワーク1205を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
ネットワーク1205は、上記の実施の形態1におけるネットワーク104と同様のものである。
以上説明したとおり、本構成のマルチメディア配信システム1206では、制御装置1202が再開位置情報を管理することにより、例えば、端末1203で行っていたマルチメディアコンテンツの再生を中断し、端末1204で再開するといったことが可能となる。
なお、ここでは、制御装置1202は、データ出力装置1201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置1201が再開位置情報を作成し、制御装置1202はそれを受信して保存する構成であっても良い。
また、ここでは、制御装置1202は、データ出力装置1201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末1203もしくは端末1204から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
また、ここでは、制御装置1202が、端末1203もしくは端末1204に要求を発行し、端末からデータ出力装置1201へデータ送信要求を送信する構成としたが、制御装置1202が、データ出力装置1201へ端末1203もしくは端末1204へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置1201からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、FTP(File Transfer Protocol)によって行うことが可能である。
また、ここでは、ネットワーク上の独立の制御装置1202が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
(6) 上記の実施の形態1においては、データ伝送のプロトコルとしてRTP/RTSPを用いているが、HTTP(HyperText Transport Protocol)など、他のプロトコルを用いて行っても良い。HTTPを用いる場合のデータ出力中断要求は、HTTP−GETのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、HTTPを用いる場合のデータ出力再開要求は、HTTP−GETに上記のX−Restartのような独自拡張ヘッダを用いて行っても良い。
(7) 上記の実施の形態1においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。
また、送信再開位置は、コンテンツのシーンの切り替わりなど、データに含まれるコンテンツを参照して、再開位置情報を作成されてもよい。例えば、コンテンツを中断した直前のコンテンツのシーンの切り替わり位置を再開位置情報とすることが具体例として挙げられる。
さらに、マルチメディアデータがMPEG2符号化データの場合、Iフレーム、MPEG2−TSにおけるPAT、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
(8) 上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(9) 上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(10) 本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(11) 上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(実施の形態2)
図13は、本発明の実施の形態2におけるマルチメディア配信システムの構成の一例を示す図である。
図13は、本発明の実施の形態2におけるマルチメディア配信システムの構成の一例を示す図である。
図13に示すマルチメディア配信システム1305は、データ出力装置1301と、第1の端末1302と、第2の端末1303と、ネットワーク1304とを備える。データ出力装置1301、端末1302および端末1303は、ネットワーク1304に接続されており、ネットワーク1304を介して相互に通信可能である。
本実施の形態におけるデータ出力装置1301は、ネットワークインタフェースと、マルチメディアデータを蓄積する蓄積部を備えた、デジタル放送を受信するCATV STB(Set Top Box)である。
データ出力装置1301は、受信したデジタル放送コンテンツのマルチメディアデータを、蓄積部に蓄積する。また、ネットワークインタフェースを通して、ネットワーク1304に接続されている。そして、ネットワーク1304を通じて送信された、端末1302および端末1303からの要求を受信する。そして、要求に応じて受信したデジタル放送のコンテンツ、もしくは、蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク1304を通じて端末1302および端末1303へ送信するものである。
データ出力装置1301は、実行中の蓄積したコンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはURI(Uniform Resource Identifier)と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。
また、実行中の受信したデジタル放送コンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、以降のデータを蓄積部に蓄積する。
さらに、該マルチメディアデータの属性とURIを作成する。該属性は「出力中断中」という情報が含まれている。そして、そのファイル名もしくはURIと、蓄積したファイルの先頭位置を再開位置情報として装置内部に記憶する。
さらに、データ出力装置1301は、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
端末1302および端末1303は、ユーザの要求により、データ出力装置1301へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク1304を通じて送信する。そして、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。端末1302および端末1303は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
ネットワーク1304は、家庭内に施設されたホームネットワークであり、イーサネット、無線LANなどによって構成されたIPネットワークである。
以下、データ出力装置1301と端末1302および端末1303の間の通信およびそれぞれの動作について説明する。
マルチメディアデータ送信の制御情報の通信は、RTSPを用いて行う。まず、データ出力装置101と端末102との間の通信で、マルチメディアデータの送信から中断までを説明し、続いて、データ出力装置1301と端末1303との間の通信で、端末1302へ送信途中に中断したマルチメディアデータの送信を再開する、ことを例にとって説明する。
まず、端末1302へのデータ送信を中断するまでの過程における通信とそれぞれの動作を説明する。
データ出力装置1301および端末1302は、それぞれ、ネットワーク1304に接続された装置を検索し、各装置がどのような機能を持っているかを取得する。この通信は、UPnP DA(Device Architecture)で定義されている方法により行えるため、詳細な説明は省略する。
これにより、データ出力装置1301は、端末1302がネットワーク1304に接続されていて、ネットワーク1304よりマルチメディアデータを受信して再生するプレーヤであることを認識できる。また、端末1302は、データ出力装置1301がネットワーク1304に接続されているマルチメディアサーバであることを認識できる。
まず、端末1302は、データ出力装置1301へ蓄積しているコンテンツ一覧もしくはEPGの取得要求を発行する。データ出力装置1301は、それに応じて、蓄積しているコンテンツの一覧を作成もしくは受信したEPGデータを通信する形式に変換して、端末1302へ送信する。
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのURIとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
また、EPGデータは、少なくとも各番組のタイトルと、各番組もしくはそれを放送するチャンネルにアクセスするためのURIとを含んでいるものである。コンテンツ一覧もしくはEPGの取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧およびEPGのデータフォーマットは、UPnP AVに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。
コンテンツ一覧のフォーマットは、XMLによって定義されているため、XML Namespaceを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースNaを使った要素PAUSEを各コンテンツの情報に追加し、このPAUSE要素の内容が「Yes」の場合は、出力中断中であることを表すことと出来る。
次に、端末1302は、受け取ったコンテンツ一覧もしくはEPGデータから、コンテンツのタイトルなどの情報をユーザに提示する。さらに、ユーザからそのうちのひとつを選択した再生要求を受け付けると、端末1302は、マルチメディアデータの送信要求を発行する。例えば、コンテンツのURIがrtsp://192.168.0.3/AVData/0001.m2tsのデータを、該マルチメディアデータの先頭から送信する要求を発行するの場合、RTSPのSETUPメッセージに続いて、以下のPLAYメッセージが端末1302からデータ出力装置1301へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
上記PLAYメッセージを受け取ったデータ出力装置1301は、URIに示されたマルチメディアデータが蓄積部に蓄積されたコンテンツの場合は、そのマルチメディアデータを蓄積部から読み出す。また、URIがチャンネルを示している場合は、チューナによってそのチャンネルにチューニングを行う。そして、以下の返答メッセージを作成して、端末1302へ送信する。
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
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
続いて、データ出力装置1301は、蓄積部から読み出したマルチメディアデータもしくはチューナによってチューニングし取得したマルチメディアデータを、順次、端末1302へ送信する。データ送信はRTPに規定された方法で行われるため、詳細は省略する。
次に、端末1302は、ユーザからの指示により、再生中断要求を受け付けると、データ出力装置1301へデータ送信中断要求を発行する。データ送信中断はPAUSEコマンドを用いて行うことが出来る。これは、以下のメッセージが端末1302からデータ出力装置1301へ送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
データ出力装置1301は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末1302へ送信する。
CSeq: 3
Session: 12345
データ出力装置1301は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末1302へ送信する。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
CSeq: 3
Session: 12345
また、データ出力装置1301は、送信していたコンテンツが蓄積部に蓄積されていたものの場合、該コンテンツの属性情報に、出力中断中の属性を追加する。データ出力装置1301は、さらに、送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から50119バイトのデータを送信した場合は、先頭から50120バイト目となる。
データ出力装置1301は、この送信再開位置とマルチメディアデータを識別するもの、例えばコンテンツの識別子を組として、再開位置情報を作成し、記憶する。
なお、本実施の形態においては、送信済データ数を基に送信再開位置を求めたが、例えば、蓄積部からの、読出済データ数を基に求めるものであっても良い。
また、データ出力装置1301は、送信していたコンテンツがチューナから取得したマルチメディアデータであった場合、引き続くマルチメディアデータを蓄積部に順次書き込む。さらに、該マルチメディアデータの属性情報を作成して蓄積部に書き込むとともに、該マルチメディアデータのURIを作成し、端末からアクセス可能とする。また、該マルチメディアデータに識別子を発行し、該識別子と再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶する。
端末1302は、ユーザから終了の要求を受け付けると、セッションを切断するTEARDOWNというコマンドメッセージを送信し、データ出力装置1301はこれを受けて返答メッセージを送信し、通信が終了する。本実施の形態では、TEARDOWNを行っても、上記再開位置情報および属性情報は更新しない。
なお、より明確に後に再開する中断であることを表すために、PAUSEもしくはTEARDOWNを拡張して、再開位置情報の作成・保持および属性情報の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるX−Keep−Pause−Statusを用い、その値が「Yes」の場合に限り、再開位置情報を作成・保持および属性情報を更新・保持することとすれば、上記の端末1302からデータ出力装置1301へ送られるPAUSEメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
この場合、データ出力装置1301は、受信したPAUSEメッセージに、X−Keep−Pause−Statusヘッダがあり、かつその値が「Yes」であるので、再開位置情報を作成して保持し、また、属性情報を更新して保持する。X−Keep−Pause−Statusヘッダがないか、あっても値が「Yes」以外の場合は、データ出力装置1301は、再開位置情報を作成せず、また、属性情報を更新しない。
次に、端末1303との通信において、上記の中断したデータ送信を再開する過程の通信およびデータ出力装置1301と端末1303の動作を説明する。
まず、データ出力装置1301と端末1303における、ネットワークに接続された装置の検索および端末1303によるコンテンツ一覧もしくはEPGの取得に関しては、上記と同様のため、説明を省略する。
端末1303は、データ出力装置1301から受け取ったコンテンツ一覧もしくはEPGをユーザに提示する。コンテンツ一覧提示の際に、端末1303は、データ出力中断中のコンテンツを判定し、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
端末1303は、ユーザが「データ出力中断中」のコンテンツ再生の再開要求を受け付けると、データ出力装置1301へ、中断したデータ送信の再開要求を発行する。この要求は、RTSPのPLAYメッセージに、独自拡張ヘッダであるX−Restartを用い、その値を「Yes」とすることで行うものとする。この場合、端末1303から以下のメッセージがデータ出力装置1301へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
CSeq: 2
Session: 54321
X-Restart: Yes
データ出力装置1301では、まず、PLAYメッセージで送られてきたURIのマルチメディアデータの再開位置情報を、記憶している再開位置情報から検索する。データ出力装置は、再開位置情報から、送信を再開するデータ位置を読み取り、蓄積部から該マルチメディアデータを読み込む。
データ出力装置1301は、続いて、以下の返答メッセージを作成し、端末1303へ送信する。なお、再開位置は、該マルチメディアデータの先頭から8分目としている。
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
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
続いて、データ出力装置1301は、PLAYメッセージが端末1303から送られてきたことから、データの送信先を端末1303と判定し、読み出したデータを、順次、端末1303へ送信する。また、データ出力装置1301は、該当する再開位置情報を装置内部から削除するとともに、該マルチメディアデータの属性情報から、「出力中断中」の属性を削除して、属性情報を更新する。
なお、本実施の形態の場合、データ出力装置1301は、RTSPメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末1303から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
以上のように、本発明のデータ出力装置1301、端末1302、端末1303、およびマルチメディア配信システム1305においては、例えば端末1302にて受信中だったデータの送信を中断しても、別の端末1303において、的確にデータ通信を再開することが可能となる。
以下、本発明のマルチメディア配信システム1305を構成する、データ出力装置1301、端末1302および端末1303について、更に詳細に説明する。ここでは、端末1302へデータ通信中にデータ送信を中断し、端末1303へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
また、RTSPサーバは決まったポート番号で待ち受けしていることとする。このポート番号は、IANA(Internet Assigned Numbers Authority)で決められた554番を用いても良いし、ユーザがデータ出力装置1301、端末1302および端末1303に設定したものであっても良い。また、後述するメソッドにポート番号を指定する引数を追加する構成であっても良い。
まず、データ出力装置1301について説明する。
図14は、本発明の実施の形態2におけるデータ出力装置1301の構成の一例を示すブロック図である。
本図に示すデータ出力装置1301は、入力部1401と、第1メモリ1402と、第2メモリ1403と、受信部1404と、多重分離部1405と、デスクランブラ1406と、TSデコーダ1407と、映像出力部1408と、音声出力部1409と、TSマルチプレクサ1410と、ネットワーク部1411と、CPU1412とを備える。
入力部201は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネル選択等の指示を受け付ける。
図15は、フロントパネルで実施の形態2に係る入力部1401を構成した場合の外観の一例を示す図である。
本図に示すフロントパネル1500は、上カーソルボタン1501、下カーソルボタン1502、左カーソルボタン1503、右カーソルボタン1504、OKボタン1505、取消ボタン1506、EPGボタン1507、および、シアターボタン1508の8つのボタンを備える。ユーザがボタンを押下すると、押下されたボタンの識別子が、CPU1412に通知される。
第1メモリ1402は、RAM等で構成され、CPU142が一時的にデータを保存する際に使用される。
第2メモリ1403は、フラッシュメモリ、ハードディスク等で電源が停止しても情報を保持可能なデバイスで構成され、CPU1412が実行するプログラムを保存する。第2メモリは、SDメモリーカード等の取り外し可能な記憶デバイスを用いていてもよい。
受信部1404は、CATV局からのケーブルに接続され放送波を受信し、CPU1412から指定された周波数にチューニングし、MPEGトラスポートストリームを抽出して、多重分離部1405に引き渡す。
多重分離部1405は、受信部1404からMPEGトラスポートストリームを受け取り、CPU1412から指定された情報を抽出しCPU1412に引き渡す。またMPEGトラスポートストリームをそのままデスクランブラ1406に引き渡す。
デスクランブラ1406は、多重分離部1405から与えられたスクランブルされているMPEGトラスポートストリームをデスクランブル(=復号)し、TSデコーダ1407に引き渡す。デスクランブラ1406は、データ出力装置1301に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているCableCARD(TM)でも実施可能である。CableCARDの仕様は米国CableLabsが策定したCableCARD Interface Specificationに記載されており、ここでは説明を省略する。
TSデコーダ1407は、CPU1412から音声データ、映像データ、PSI/SI情報などのセクションデータの識別子を受け取る。さらに、デスクランブラ1406から受け取ったデスクランブルされたストリームから、受け取った音声データ、映像データ、PSI/SI情報などのセクションデータの識別子に対応するデータを抽出する、抽出した映像データを映像出力部1408に、音声データを音声出力部1409に引き渡す。また、その両方と、セクションデータを、TSマルチプレクサ1410に引き渡す。
映像出力部1408は映像出力端子を含み、受け取った映像データを端子に対応した映像データに変換して出力する。端子の例としては、コンポジットケーブル端子などがある。
音声出力部1409は音声出力端子を含み、受け取った音声データを端子に対応した音声データに変換して出力する。端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。
TSマルチプレクサ1410は、受け取った映像データ、音声データ、セクションデータからMPEG2トランスポートストリームを構成し、該MPEG2トランスポートストリームをネットワーク部1411に引き渡す。PSI/SI情報は必要に応じて書き換えられる。
ネットワーク部1411は、ネットワークインタフェースを含み、CPU1412から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、IPネットワークで規定されたパケットに変換して、CPU1412へ引き渡す。
CPU1412は、第2メモリ1403が記憶するプログラムを実行することで、受信部1404と、多重分離部1405と、デスクランブラ1406と、TSデコーダ1407と、TSマルチプレクサ1410と、ネットワーク部1411とを制御する。
図16は、本発明の実施の形態2におけるデータ出力装置1301が保持し、実行するプログラムの構成の一例を示す図である。すなわち、本図は、データ出力装置1301の第2メモリ1403に記憶され、CPU1412に実行されるプログラムの構成の一例を示す。
プログラム1600は、複数のサブプログラムで構成され、具体的には、OS1601と、EPG1602と、JavaVM1603と、サービスマネージャ1604と、Javaライブラリ1605とで構成される。
OS1601は、データ出力装置1301の電源が投入されると、CPU1412が起動するサブプログラムである。OSは、オペレーティングシステムの略であり、Linux(登録商標)等が一例である。
OS1601は、他のサブプログラムを平行して実行するカーネル1601a及びライブラリ1601bで構成される公知の技術の総称であり、詳細な説明は省略する。
本実施の形態においては、OS1601のカーネル1601aは、EPG1602とJavaVM1603をサブプログラムとして実行する。また、ライブラリ1601bは、これらサブプログラムに対して、データ出力装置1301が備える各部を制御するための複数の機能を提供する。
本実施の形態のライブラリ1601bは、機能として例えば、チューナ1601b1、限定解除1601b2、AV再生1601b3、NET1601b4を含む。
チューナ1601b1は、他のサブプログラムやJavaライブラリ1605のTuner1605cから周波数を含むチューニング情報を受け取り、受信部1404に引き渡す。
受信部1404は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部1405に引き渡すことができる。この結果、他のサブプログラム及びJavaライブラリ1605のTuner1605cはライブラリ1601bを通して受信部1404を制御することができる。
限定解除1601b2は、他のサブプログラムやJavaライブラリ1605のCA1605dから情報を受け取り、デスクランブラ1406に引き渡す。
AV再生1601b3は、他のサブプログラムやJavaライブラリ1605のJMF1605aから、音声のパケットIDと映像のパケットIDを受け取る。受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ1407に与える。
この結果、TSデコーダ1407は与えられたパケットIDに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
NET1601b4は、他のサブプログラムやJavaライブラリ1605のネットワークライブラリ1605eから受け取ったデータを、IPネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。アプリケーション層より下のプロトコルとは、例えばTCPパケット、UDPパケット、IPパケットなどである。
これをネットワーク部1411に引き渡すことで、ネットワーク1304を介して他の機器にメッセージおよびデータを送信する。また、ネットワーク1304を介して他の機器からメッセージを受信したときに、他のサブプログラムやJavaライブラリ1605のネットワークライブラリ1605eに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、HTTP(Hypertext Transfer Protocol)やRTPなどである。
EPG1602は、ユーザに番組一覧を表示及び、ユーザからの入力を受け付ける番組表示部1602aと、チャンネル選局を行う再生部1602bで構成される。
ここで、EPGはElectric Program Guideの略である。EPG1602は、データ出力装置1301の電源が投入されると、カーネル1601aによって起動される。起動されたEPG1602の内部では、番組表示部1602aと再生部1602bが同時に起動される。
番組表示部1602aは起動されると、データ出力装置1301の入力部1401を通して、ユーザからの入力を待つ。
ここで、入力部1401が図15で示されるフロントパネルで構成されている場合、ユーザが、入力部1401のEPGボタン1507を押下すると、EPGボタンの識別子がCPU1412に通知される。CPU1412上で動作するサブプログラムであるEPG402の番組表示部402aは、この識別子を受け取り、番組情報表示データを作成し、図示していないモニタ出力部によりモニタに出力する。モニタは、データ出力装置1301が備えるものであっても良いし、データ出力装置1301とコンポジットケーブルやHDMIケーブルなどで接続されたテレビであっても良い。モニタは、受信した番組情報表示データを表示する。
図17(a)および(b)は、それぞれ、本発明の実施の形態2に係るモニタに表示された番組表の例を示す図である。
図17(a)を参照して、モニタに表示された番組表1710には、格子状に番組情報が表示されている。列1701には、時刻情報が表示されている。列1702には、チャンネル名「チャンネル1」と、列1701の時刻に対応する時間帯に放映される番組が表示されている。
「チャンネル1」では、9:00〜10:30に番組「ニュース9」が放映され、10:30〜12:00は「映画AAA」が放映されることを表す。列1703も列1702同様、チャンネル名「チャンネル2」と、列1701の時刻に対応する時間帯に放映される番組が表示されている。9:00〜11:00に番組「映画BBB」が放映され、11:00〜12:00は「ニュース11」が放映される。
カーソル530は、フロントパネル300の左カーソル303と右カーソル304を押下すると移動する。図17(a)の状態で、右カーソル304を押下すると、カーソル530は右に移動し、図17(b)のようになる。また、図17(b)の状態で、左カーソル303を押下すると、カーソル530は左に移動し、図17(a)のようになる。
図17(a)の状態で、フロントパネル1500のOKボタン1505が押下されると、番組表示部1602aは、「チャンネル1」の識別子を再生部1602bに通知する。図17(b)の状態で、フロントパネル1500のOKボタン1505が押下されると、番組表示部1602aは、「チャンネル2」の識別子を再生部1602bに通知する。
また、番組表示部1602aは、表示する番組情報を、多重分離部1405を通して定期的に、第2メモリ1403に記憶しておく。一般的に、放送局からの番組情報の取得は時間が掛かる。フロントパネル1500のEPGボタン1507が押下された時、第2メモリ1403に予め保存された番組情報を表示することで、素早く番組表を表示することができる。
図18は、本発明の実施の形態2に係る第2メモリ1403に記憶されている番組情報の一例を示す図である。番組情報は表形式で格納されている。
列1801は、チャンネルの識別子である。列1802は、番組名である。列1803は番組の放送開始時間、列1804は放送終了時間である。列1805は、番組の音声種別を表しており、モノラル音声、ステレオ音声、5.1チャンネル音声をそれぞれ「モノラル」、「ステレオ」、「5.1」と表記している。列1806は、番組の種別を表している。通常番組は空欄であり、「映画」は映画、「スポ」はスポーツ番組を表す。
行1811〜1814の各行は、それぞれひとつの番組情報を表す。この例では、ひとつの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別の組となる。
例えば、行1811はチャンネル識別子が「1」、番組名が「ニュース9」、放送開始時間が「9:00」、放送終了時間が「10:30」、音声種別が「モノラル」、番組の種別は「通常」を含む組となっている。
再生部1602bは、受け取ったチャンネルの識別子を用いて、チャンネルを再生する。すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第2メモリ1403に予め格納されている。
図19は、本発明の実施の形態2に係る第2メモリ1403に格納されているチャンネル情報の一例を示す図である。
チャンネル情報は表形式で格納されている。列1901は、チャンネルの識別子である。列1902は、チャンネル名である。列1903はチューニング情報である。ここで、チューニング情報は周波数や転送レート、符号化率などを含み、受信部1404に与える値である。列1904はプログラムナンバーである。
プログラムナンバーとは、MPEG2規格で規定されているPMTを識別するための番号である。PMTに関しては、後述する。
行1911〜1914の各行は、各チャンネルの識別子、チャンネル名、チューニング情報の組となる。行1911は識別子が「1」、チャンネル名が「チャンネル1」、チューニング情報に周波数「150MHz」、プログラムナンバーが「101」を含む組となっている。再生部1602bは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ1604に引き渡す。
また、再生部1602bは、再生中に、ユーザがフロントパネル1500の上カーソル1501と下カーソル1502を押下すると、入力部1401からCPU1412を通して、押下された通知を受け取り、再生しているチャンネルを変更する。
上カーソル1501を押下すると、現在再生中のチャンネルよりもひとつ小さいチャンネル識別子を持つチャンネルを再生し、また下カーソル1502を押下すると、現在再生中のチャンネルよりもひとつ大きいチャンネル識別子を持つチャンネルを再生する。
まず、再生部1602bは、第2メモリ203に現在再生中のチャンネルの識別子を記憶する。
図20(a)(b)及び(c)は、それぞれ、本発明の実施の形態2に係る第2メモリ1403に格納されているチャンネルの識別子の例を示す図である。
図20(a)では識別子「3」が記憶されており、図19を参照し、チャンネル名「TV 3」のチャンネルが再生中であることを示す。
図20(a)の状態で、ユーザが上カーソル301を押下すると再生部402bは、図19のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ小さい識別子を持つチャンネルであるチャンネル名「チャンネル2」のチャンネルに再生を切り変えるため、サービスマネージャ1604にチャンネル名「チャンネル2」の識別子「2」を引き渡す。同時に、第2メモリ1403に記憶されているチャンネル識別子「2」に書き換える。
図20(b)は、チャンネル識別子が書き換えられた状態を表す。また、図20(a)の状態で、ユーザが下カーソル1502を押下すると再生部1602bは、図19のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ大きい識別子を持つチャンネルであるチャンネル名「TV Japan」のチャンネルに再生を切り変えるため、サービスマネージャ1604にチャンネル名「TV Japan」の識別子「4」を引き渡す。同時に、第2メモリ1403に記憶されているチャンネル識別子「4」に書き換える。
図20(c)は、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第2メモリ1403に記憶されているので、データ出力装置1301の電源が切られた際も保存されている。
さらに再生部1602bは、データ出力装置1301の電源が投入された際に、起動されると、第2メモリ1403に記憶されているチャンネル識別子を読み出す。そして、そのチャンネル識別子をサービスマネージャに引渡す。これにより、データ出力装置1301は、電源投入時に前回の稼動時に再生されていた最後のチャンネルの再生を開始することができる。
JavaVM1603は、Java(TM)言語で記述されたプログラムを逐次解析し実行するJavaバーチャルマシンである。Java言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Javaバーチャルマシンは、このバイトコードを実行するインタープリタである。
また、一部のJavaバーチャルマシンは、バイトコードをCPU1412が理解可能な実行形式に翻訳してから、CPU1412に引渡し、実行することも行う。
JavaVM1603は、カーネル1601aに実行するJavaプログラムを指定され起動される。本実施の形態では、カーネル1601aは、実行するJavaプログラムとしてサービスマネージャ1604を指定する。
Java言語の詳細は、書籍「Java Language Specification(ISBN 0−201−63451−1)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
また、JavaVM自体の詳細な動作などは、「Java Virtual Machine Specification(ISBN 0−201−63451―X)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ1604は、Java言語で書かれたJavaプログラムであり、JavaVM1603によって逐次実行される。サービスマネージャ1604は、JNI(Java Native Interface)を通して、Java言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。JNIに関しても、書籍「Java Native Interface」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
まず、デジタル放送を受信し、受信したマルチメディアデータを再生する場合の処理について説明する。
サービスマネージャ1604は、JNIを通して、再生部1602bよりチャンネルの識別子を受け取る。
サービスマネージャ1604は、最初にJavaライブラリ1605の中にあるTuner1605cに、チャンネルの識別子を引き渡し、チューニングを依頼する。Tuner1605cは、第2メモリ1403が記憶するチャンネル情報を参照し、チューニング情報を獲得する。
今、サービスマネージャ1604がチャンネルの識別子「2」をTuner1605cに引き渡すと、Tuner1605cは、図19の行1912を参照して、対応するチューニング情報「156MHz,」を獲得する。Tuner1605cは、OS1601のライブラリ1601bのチューナ1601b1を通して、受信部1404にチューニング情報を引き渡す。
受信部1404は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部1405に引き渡す。
次にサービスマネージャ1604は、Javaライブラリ1605の中にあるCA1605dにデスクランブルを依頼する。CA1605dは、OS1601のライブラリ1601bの限定解除1601b2を通して復号に必要な情報をデスクランブラ1406に与える。
デスクランブラ1406は、与えられた情報を元に、受信部1404から与えられた信号を復号しTSデコーダ1407に引き渡す。
サービスマネージャ1604は、Javaライブラリ1605の中にあるJMF1605aにチャンネルの識別子を与え、映像・音声の再生を依頼する。
まず、最初にJMF1605aは、再生すべき映像と音声を特定するためのパケットIDをPAT、PMTから取得する。PATやPMTはMPEG2規格で規定されている、MPEG2トランスポートストリーム内の番組構成を表現するテーブルであり、MPEG2トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。詳細は規格書を参照されたい。ここでは、概略のみ説明する。
PATは、Program Association Tableの略で、パケットID「0」のパケットに格納され送信されている。JMF1605aは、PATを取得するため、OS1601のライブラリ1601bを通して、多重分離部1405にパケットID「0」を指定する。多重分離部1405がパケットID「0」でフィルタリングを行い、CPU1412に引き渡すことでJMF1605aは、PATのパケットを収集する。
図21は、収集したPATの情報の一例を模式的に示す図である。
列2101は、プログラムナンバーである。列2102は、パケットIDである。列2102のパケットIDはPMTを取得するために用いられる。
行2111〜1213は、チャンネルのプログラムナンバーと対応するパケットIDの組である。ここでは、三つのチャンネルが定義されている。行2111はプログラムナンバー「101」とパケットID「501」の組が定義されている。
今、JMF1605aに与えられたチャンネルの識別子が「2」とすると、JMF1605aは、図21の行2112を参照して、対応するプログラムナンバー「102」を獲得し、次に、図21のPATの行2112を参照し、プログラムナンバー「102」に対応するパケットID「502」を獲得する。
PMTは、Program Map Tableの略で、PATで規定されたパケットIDのパケットに格納され送信されている。JMF1605aは、PMTを取得するため、OS1601のライブラリ1601bを通して、多重分離集部1405にパケットIDを指定する。ここで、指定するパケットIDは「502」とする。多重分離集部1405がパケットID「502」でフィルタリングを行い、CPU1412に引き渡すことでJMF1605aは、PMTのパケットを収集する。
図22は、収集したPMTの情報の一例を模式的に示す図である。
列2201は、ストリーム種別であり。列2202は、パケットIDである。列2202で指定されるパケットIDのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列2203は補足情報である。
行2211〜2214はエレメンタリ−ストリームと呼ばれる、パケットIDと送信している情報の種別の組である。
行2211は、ストリーム種別「音声」とパケットID「5011」の組であり、パケットID「5011」のペイロードには音声が格納されていることを表す。JMF1605aは、PMTから再生する映像と音声のパケットIDを獲得する。図22を参照して、JMF1605aは、行2211から音声のパケットID「5011」を、行2212から映像のパケットID「5012」を獲得する。
次に、JMF1605aは、OS1601のライブラリ1601bのAV再生1601b3に獲得した音声のパケットIDと映像のパケットIDを引き渡す。これを受けて、AV再生1601b3は、受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ1407に与える。TSデコーダ1407は与えられたパケットIDでフィルタリングを行う。
ここではパケットID「5011」のパケットを音声出力部1409に、パケットID「5012」のパケットを映像出力部1408に、それぞれ引き渡す。
音声出力部1409は、与えられたパケットを適宜変換し(例えばデジタル−アナログ変換)出力する。
映像出力部1408は、与えられたパケットを適宜変換し(例えばデジタル−アナログ変換)出力する。
最後にサービスマネージャ1604は、Javaライブラリ1605の中にあるAM1605bにチャンネルの識別子を与え、データ放送再生を依頼する。
ここで、データ放送再生とは、MPEG2トランスポートストリームに含まれるJavaプログラムを抽出し、JavaVM1603に実行させることである。MPEG2トランスポートストリームにJavaプログラムを埋め込む方法は、MPEG規格書 ISO/IEC13818−6に記述されたDSMCCという方式を用いる。ここではDSMCCの詳細な説明は省略する。DSMCC方式は、MPEG2トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。
また、実行するJavaプログラムの情報はAITと呼ばれる形式で、MPEG2トランスポートストリームのパケットの中に埋め込まれ送信されている。AITは、DVB−MHP規格(正式には、ETSI TS 101 812 DVB−MHP仕様V1.0.2)の10章に定義されている、Application Information Tableの略である。
AM1605bは、まず、AITを獲得するため、JMF1605a同様PAT、PMTを取得し、AITが格納されているパケットのパケットIDを獲得する。
今、与えられたチャンネルの識別子が「2」で、図21のPAT、図22のPMTが送信されていると、JMF1605aと同様の手順で、図22のPMTを獲得する。AM1605bは、PMTからストリーム種別が「データ」で補足情報として「AIT」を持つエレメンタリ−ストリームからパケットIDを抽出する。図22を参照して、行1013のエレメンタリ−ストリームが該当し、パケットID「5013」を獲得する。
AM1605bは、OS1601のライブラリ1601bを通して多重分離部1405にAITのパケットIDを与える。多重分離部1405は、与えられたパケットIDでフィルタリングを行い、CPU1412に引き渡す。この結果、AM1605bは、AITのパケットを収集することができる。
図23は、収集したAITの情報の一例を模式的に示す図である。
列2301はJavaプログラムの識別子である。
列2302はJavaプログラムの制御情報である。制御情報には「autostart」「present」「kill」などがあり、「autostart」は即時にデータ出力装置101がこのプログラムを自動的に実行することを意味し、「present」は自動実行しないことを意味し、「kill」はプログラムを停止することを意味する。
列2303は、DSMCC方式でJavaプログラムを含んでいるパケットIDを抽出するためのDSMCC識別子である。
列2304はJavaプログラムのプログラム名である。
行2311と2312とは、Javaプログラムの情報の組である。行2311で定義されるJavaプログラムは、識別子「301」、制御情報「autostart」、DSMCC識別子「1」、プログラム名「a/TopXlet」の組である。行2312で定義されるJavaプログラムは、識別子「302」、制御情報「present」、DSMCC識別子「1」、プログラム名「b/GameXlet」の組である。
ここでふたつのJavaプログラムは同じDSMCC識別子を持つが、これはひとつのDSMCC方式でエンコードされたファイルシステム内にふたつのJavaプログラムが含まれていることを表す。ここでは、Javaプログラムに対して4つの情報しか規定しないが、実際にはより多くの情報が定義される。詳細はDVB−MHP規格を参照されたい。
AM1605bは、AITの中から「autostart」のJavaプログラムを見つけ出し、対応するDSMCC識別子及びJavaプログラム名を抽出する。図23を参照して、AM1605bは行2311のJavaプログラムを抽出し、DSMCC識別子「1」及びJavaプログラム名「a/TopXlet」を獲得する。
次にAM1605bは、AITから取得したDSMCC識別子を用いて、JavaプログラムをDSMCC方式で格納しているパケットのパケットIDをPMTから獲得する。具体的には、PMTの中でストリーム種別が「データ」で、補足情報のDSMCC識別子が合致するエレメンタリ−ストリームのパケットIDを取得する。
今、DSMCC識別子が「1」であり、PMTが図22とすると、行2214のエレメンタリ−ストリームが合致し、パケットID「5014」を取り出す。
AM1605bは、OS1601のライブラリ1601bを通して多重分離部1405にDSMCC方式でデータが埋めこめられたパケットのパケットIDを指定する。
ここでは、パケットID「5014」を与える。多重分離部1405は、与えられたパケットIDでフィルタリングを行い、CPU1412に引き渡す。この結果、AM1605bは、必要なパケットを収集することができる。AM1605bは、収集したパケットから、DSMCC方式に従ってファイルシステムを復元し、第1メモリ1402あるいは第2メモリ1403に保存する。ファイルシステム等のデータを取り出し第1メモリ1402あるいは第2メモリ1403に保存することを以降、ダウンロードと呼ぶ。
図24は、ダウンロードしたファイルシステムの一例を示す図である。
図中、丸はディレクトリを四角はファイルを表し、2401はルートディレクトリ、2402はディレクトリ「a」、2403はディレクトリ「b」、2404はファイル「TopXlet.class」、2405はファイル「GameXlet.class」である。
ここでは、MPEG2トランスポートストリームからファイルシステムをダウンロードする例を記載したが、OCAP仕様では、IPネットワークを用いたダウンロードなども規定している。また、AITではなくXAITと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。
次にAM1605bは、第1メモリ1402あるいは第2メモリ1403にダウンロードしたファイルシステム中から実行するJavaプログラムをJavaVM1603に引き渡す。今、実行するJavaプログラム名が「a/TopXlet」とすると、Javaプログラム名の最後に「.class」を付加したファイル「a/TopXlet.class」が実行すべきファイルとなる。「/」はディレクトリやファイル名の区切りであり、図24を参照して、ファイル2404が実行すべきJavaプログラムである。次にAM1605bは、ファイル2404をJavaVM1603に引き渡す。
JavaVM1603は、引き渡されたJavaプログラムを実行する。
サービスマネージャ1604は、他のチャンネルの識別子を受け取ると、Javaライブラリ1605に含まれる各ライブラリを通して再生している映像・音声及びJavaプログラムの実行を、同じくJavaライブラリ1605に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネルの識別子に基づいて、映像・音声の再生及びJavaプログラムの実行を行う。
また、サービスマネージャ1604は、再生部1602bだけでなく、JavaVM1603上で実行されるJavaプログラムからチャンネルの識別子を受け取る機能も備える。
具体的には、チャンネルの識別子を受け取るためのJava言語のクラス及びそのメソッドを提供する。チャンネルの識別子を受け取ると、サービスマネージャ1604は、Javaライブラリ1605に含まれる各ライブラリを通して現在再生している映像・音声及びJavaプログラムの実行を、同じくJavaライブラリ1605に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネルの識別子に基づいて、新しい映像・音声の再生及びJavaプログラムの実行を行う。
次に、データ出力装置1301において、デジタル放送を受信して、そのマルチメディアデータを第2メモリ1403に蓄積する処理について説明する。
図25は、データ出力装置1301が、第2メモリ1403にマルチメディアデータを蓄積する形態の一例を示す図である。
データ出力装置1301は、マルチメディアデータとその属性情報、属性情報テーブル、URIテーブル、再開位置情報テーブルを第2メモリ1403に記憶する。図25に示す第2メモリに記憶された情報は、マルチメディアデータ2501と、マルチメディアデータ2502と、マルチメディアデータの属性情報2511と、マルチメディアデータの属性情報2512と、属性情報テーブル2521と、URIテーブル2531と、再開位置情報テーブル2532とを含む。
マルチメディアデータ2501と、マルチメディアデータ2502とは、MPEGトランスポートストリーム形式の符号化されたマルチメディアデータである。属性情報2511と、属性情報2512とは、各マルチメディアデータのタイトルなどの付加的な情報である。ここでは、属性情報2511はマルチメディアデータ2501の属性情報を、属性情報2512はマルチメディアデータ2502の属性情報を、それぞれ表すこととする。
図26は、本発明の実施の形態2における属性情報の一例を示す図である。本実施の形態においては、属性情報はXML(Extensible Markup Language)で定義されたテキストで表すものとする。
図26では、ContentID要素で該コンテンツの識別子を、FileName要素で該マルチメディアデータのファイル名を、ChannelID要素で図18の列1801で示されているような該番組が放送されたチャンネルの識別子を、ProgramNo要素で図19の列1904に示されているようなPMTを検索するプログラムナンバーを、Title要素で図18の列1802で示されているような番組名を、Gunre要素で図18の列1806に示されているような番組の種別を、Date要素で該番組が放送された日時を、RecordDate要素で該番組が録画された日時を、PlaybackTime要素で、該マルチメディアデータが再生もしくはネットワーク104に出力された回数を、LastPlaybackDate要素で、該マルチメディアデータが最後に再生もしくはネットワークに出力された日時を、それぞれ表す。
なお、属性情報は、このようなXMLによる構成に限るものではなく、他の形式、例えば、バイナリデータとして記録しても良い。属性情報テーブルは、コンテンツの識別子と、該識別子で表されるコンテンツの属性情報を記録したファイルとの対応表である。図27にその一例を示す。
図27は、本発明の実施の形態2における属性情報テーブルの一例を示す図である。
図27において、列2701はコンテンツの識別子を表し、列2702は属性情報のファイル名を表す。行2711〜2713は、コンテンツの識別子と対応する属性情報のファイル名の組である。行2711からは、識別子1のコンテンツの属性情報はファイル0001.attrに記録されていることを読み取ることができる。URIテーブル2531と再開位置情報テーブルについては、後述する。
以下、蓄積する処理について説明する。まず、デスクランブルまでの動作は上記再生する場合と同様である。次に、サービスマネージャ1604は、Javaライブラリ1605の中のRec1605jに該マルチメディアデータの蓄積を依頼する。Rec1605jは、まず、上記JMF1605aおよびAM1605bと同様に、PAT、PMTを取得し、蓄積する番組に関する映像データ、音声データ、各セクションデータのパケットIDを取得する。今、与えられたチャンネルの識別子が「2」で、図21のPAT、図22のPMTが送信されていると、JMF1605aと同様の手順で、図22のPMTを獲得する。蓄積するデータは、図22のPMTに記述された全てのデータである。
Rec1605jは、OS1601のライブラリ1601bを通してTSデコーダ1407に、これらのパケットIDを与え、TSマルチプレクサ1410に出力させる。TSデコーダ1407は、与えられたパケットIDでフィルタリングを行い、TSマルチプレクサ1410に引き渡す。
なお、セクションデータに関しては、それぞれにバージョンナンバーがつけられており、TSデコーダ1407は、同じ種類のデータは、各バージョンナンバーごとに1回のみ出力し、あとはフィルタリングする構成であっても良い。
また、Rec1605jは、OS1601のライブラリ1601bを通してTSマルチプレクサ1410に、何種類のデータが送られてくるかを与えて、TSデコーダ1407から引き渡されたデータから、MPEG2トランスポートストリームを構成させる。TSマルチプレクサ1410は、構成したMPEGトランスポートストリームを、CPU1412に引き渡す。
さらに、Rec1605jは、Javaライブラリ1605の中のIO1605gに依頼して、CPU1412がTSマルチプレクサから受け取ったMPEGトランスポートストリームを第2メモリに書き込む。さらに、Rec1605jは、サービスマネージャ1604に依頼して、該番組のチャンネル識別子を受け取り、IO1605gに依頼して、第2メモリ1403に記憶された図18に示す番組情報のうち、蓄積したマルチメディアデータに対応するものの番組情報を読み取る。
さらに、該蓄積したマルチメディアデータに識別子を発行し、取得した番組情報と、マルチメディアデータを蓄積したファイル名から属性情報を作り、IO1603に依頼して、該属性情報を第2メモリ1403に書き込む。さらに、Rec1605jは、IO1605gに依頼して、属性情報テーブル読み出し、内容を更新して、IO1605gに依頼して第2メモリ1403に書き込むことにより、属性情報テーブルを更新する。
次に、受信したデジタル放送のマルチメディアデータを、ネットワーク部1411から出力する場合の処理について説明する。
まず、Javaライブラリ1605の中にあるネットワークライブラリ1605eは、ネットワーク1304に接続された端末からの要求を受け、サービスマネージャ1604に要求されたチャンネルの識別子を与える。サービスマネージャ1604では、受け取ったチャンネルの識別子をTuner1605cに与えてチューニングを依頼し、さらにCA1605dにデスクランブルを依頼する。続いて、サービスマネージャ1604は、ネットワークライブラリ1605eに処理を返す。
ネットワークライブラリ1605eでは、上記Rec1605jと同様に、TSデコーダ1407、TSマルチプレクサ1410を制御して、該番組の映像データ、音声データ、セクションデータよりMPEGトランスポートストリームを作成する。
さらに、ネットワークライブラリ1605eは、OS1601のライブラリ1601bのNET1601b4に送信先のアドレスを与える。続いて、ネットワークライブラリ1605は、TSマルチプレクサ1410から受け取ったMPEG2トランスポートストリームを、送信するアプリケーションレベルのプロトコルに応じた形式に変換して、NET1601b4に順次引き渡す。
アプリケーションレベルのプロトコルとは、例えば、HTTPやRTPといったものである。これにより、NET1601b4は、送信先アドレスを参照して、引き渡されたデータをIPネットワークのパケットに変換し、ネットワーク部1411に引き渡す。ネットワーク部1411では、引き渡されたデータを、接続されたネットワークの物理メディアに応じた信号に変換して出力する。
次に、第2メモリ1403に蓄積したマルチメディアデータを再生する場合の処理について説明する。
サービスマネージャ1604は、コンテンツの識別子を受け取ると、Javaライブラリ1605の中のIO1605gに依頼して、第2メモリ1403から属性情報テーブル2521を読み出し、該識別子のコンテンツの属性情報を記録したファイルを検索する。図27の属性情報テーブルにて、コンテンツの識別子が1の場合、該ファイルは0001.attrにあたる。
続いて、サービスマネージャ1604は、IO1605gに依頼して、第2メモリ1403から該属性情報を記録したファイルを読み出す。読み出した属性情報から、該コンテンツのマルチメディアデータを記録したファイル名を取得する。図26の属性情報の場合、このファイル名は0001.m2tsが対応する。
続いて、サービスマネージャ1604は、IO1605gに依頼して、該マルチメディアデータのファイルからMPEGトランスポートストリームを読み出す。IO1605gは、OS1601のライブラリ1601bを通してデータを読み出し、CPU1412に引き渡す。
サービスマネージャ1604は、OS1601のライブラリ1601bを通して、読み出したMPEGトランスポートストリームを多重分離部1405に引き渡す。
次にサービスマネージャ1604は、Javaライブラリの中にあるCA1605dに、デスクランブラはデータをデスクランブルせず、スルーするように依頼する。
CA1605dは、OS1601のライブラリ1601bの限定解除1601b2を通してデスクランブラ1406に情報を与える。これにより、デスクランブラ1406は、多重分離部1405から引き渡されたデータを、そのままTSでコーダ1407に引き渡す。
次にサービスマネージャ1604は、読み出した属性情報からチャンネルの識別子もしくはプログラムナンバーを読み出し、Javaライブラリ1605の中にあるJMF1605aに与えて、再生を依頼する。以下、上記の放送から受信したコンテンツの場合と同様の処理によって、映像データ、音声データの再生が行える。
さらに、サービスマネージャ1604は、Javaライブラリの中にあるAM1605bにチャンネルの識別子もしくはプログラムナンバーを与えて、データ放送の再生を依頼する。以下、上記の放送から受信したコンテンツと同様の処理によって、データ放送の再生が行える。
Javaライブラリ1605は、第2メモリ1403に格納されている複数のJavaライブラリの集合である。本実施の形態では、Javaライブラリ1605は、JMF1605a、AM1605b、Tuner1605c、CA1605d、ネットワークライブラリ1605e、再生Lib1605f、IO1605g、AWT1605h、SI1605i、および、Rec1605j等を含んでいる。
JMF1605a、AM1605b、Tuner1605c、CA1605d、Rec405jの機能は、既に説明したため、ここでの説明は省略する。
再生Lib1605fは、第2メモリ1403が記憶している、現在再生しているチャンネルの識別子をJavaプログラムに渡すためのJava言語のクラスおよびメソッドを(以下Java APIと記述)提供する。このJava APIを利用することで、Javaプログラムは、現在再生中のチャンネルを知ることができる。
IO1605gは、Javaプログラムが第2メモリ1403にデータを書き込むためのJava API、あるいは、その書き込んだデータを第2メモリ1403から読み込むためのJava APIをJavaプログラムに提供する。このAPIを利用することで、Javaプログラムは、任意のデータを第2メモリ1403に保存することができる。この保存されたデータはデータ出力装置1301の電源がオフになっても消えないので、データ出力装置1301の電源が投入された後、再びそのデータを読み込むことができる。
AWT1605hは、Javaプログラムが描画を行ったり、入力部1401からのキー入力通知を受け取るためのJava APIを提供する。具体的には、「The Java class Libraries Second Edition,Volume 2」(ISBN0−201−31003−1)で既定されるjava.awtパッケージ、java.awt.eventパッケージ及びその他のjava.awtのサブパッケージが相当する。ここでは、詳細な説明を省略する。
SI1605iは、Javaプログラムがチャンネル情報や電子番組表情報を取得するJava APIを提供する。具体的には、Java TV仕様などが存在する。また、生のバイナリデータを放送中のMPEG2トランスポートストリームから取得するMPEGセクションフィルタAPIがOCAP仕様の中で定義されており、送信されてきた独自の電子番組データをJavaアプリケーションが理解して取り扱うことも出来る。
ネットワークライブラリ1605eは、OS1601のライブラリ1601bのNET1601b4を通して、ネットワーク1304に接続された、端末1302および端末1303と通信するものである。通信は、コンテンツ一覧やEPGの送信、端末からのマルチメディアデータ送信や、送信中断、送信再開、送信終了要求の受信、およびマルチメディアデータの送信である。
図28は、ネットワークライブラリ1605eの内部構成の一例を示すブロック図である。ネットワークライブラリ1605eは、制御部2801と、情報受信部2802と、データ出力部2803と、属性管理部2804と、データ受信部2805とを含む。なお、ネットワークライブラリ1605eは、IPネットワークに関連する他の機能を含んでも良い。
制御部2801は、ダウンロードしたJavaアプリケーションに対して、ネットワークライブラリ1605eが実現する機能を提供する。すなわち、制御部2801は、Javaアプリケーションに対してJava APIを提供し、Javaアプリケーションが、このAPIを呼び出すことで、ネットワークを利用した機能が実行できる。
制御部2801は、Java APIが呼び出されると、適宜、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用して処理を行う。
また、制御部2801は、必要に応じて、Javaアプリケーションのコールバック関数を用いて、Javaアプリケーションに通知を行う。
図29は、ネットワークライブラリ1605eの内部構成に含まれる制御部2801が提供するJava APIの一例を示す図である。
図29(1)メソッドcollectDevice()は、ネットワーク1304に接続されている外部装置の情報を集め、その情報としてNetDeviceオブジェクトの配列を返す。失敗時にはnullを返す。本メソッドにより、ネットワーク1304に接続された機器の情報を得ることができる。
図30は、ネットワークライブラリ1605eで使用されるNetDeviceクラスの構成の一例を示す図である。
図30で、addrは該装置のネットワークアドレスを、friendlyNameは該装置につけたニックネームを、dTypeは該装置の種別を表し、0がデジタル放送を受信可能なデータ出力装置、1がデジタル放送受信部を持たないデータ出力装置、2が端末を表すこととする。このような情報取得は、UPnP DAに定義された方法によって行うことが可能であるため、処理の詳細は省略する。
図29(2)メソッドregisterHandler()は、引数handlerで与えられた、ServHandlerインタフェースを実装したハンドラをシステムに登録するもので、成功すればtrueを返し、失敗すればfalseを返す。Javaアプリケーションは、該ハンドラを登録することにより、ネットワークライブラリ1605eからコールバックを受けることができる。
図31は、ネットワークライブラリ1605eで使用されるServHandlerインタフェースの構成の一例を示す図である。
図31において、ServHandlerインタフェースのメソッドnotifyChannelID()は、端末からマルチメディアデータ送信を要求されたチャンネルの識別子を、Javaアプリケーションに通知するものである。
Javaアプリケーションは、サービスマネージャ1604に該識別子を与えて、チャンネルのチューニング、デスクランブルを依頼し、成功すればtrueを返し、失敗すればfalseを返すことで、ネットワークライブラリ1605eに制御を返す。
なお、上記チャンネルの識別子は、ネットワークライブラリ1605eが、サービスマネージャ1604に直接引き渡して、チューニング、デスクランブルを依頼する構成であっても良い。
また、メソッドnotifyRecording()は、Javaアプリケーションにチャンネルの識別子を通知して、そのデータの蓄積を依頼するものであり、戻り値として、蓄積したコンテンツの識別子を受け取る。Javaアプリケーションは、サービスマネージャ1604に該チャンネルの識別子を与えて、そのマルチメディアデータの蓄積を依頼し、コンテンツの識別子を受け取る。
サービスマネージャ1604は、上記の通り、Rec1605jを用いて該マルチメディアデータを蓄積する。なお、上記チャンネルの識別子は、ネットワークライブラリ1605eが、サービスマネージャ1604に直接引き渡して、蓄積を依頼する構成であっても良い。
図29(3)メソッドactMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、マルチメディアサーバ機能の起動および動作を依頼するものであり、正常に処理が終了すればtrueを返し、異常がおこればfalseを返す。本メソッドが呼び出されると、ネットワークライブラリ1605eの制御部2801は、必要に応じて、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用し、またJavaアプリケーションやサービスマネージャ1604へ通知を行うことで、マルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
図29(4)メソッドdoMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、引数devで与えられたRemoteDeviceオブジェクトで表されるネットワーク1304に接続された装置に対するマルチメディアサーバとして動作するように依頼するものであり、正常に処理が終了すればtrueを返し、異常が起こればfalseを返す。
図30は、RemoteDeviceクラスの一例を示す図である。
図30で、RemoteDeviceクラスは、NetDeviceクラスの拡張クラスとして定義される。
メンバ変数sは、NetDeviceクラスのメンバ変数によって表される装置と通信するSocketオブジェクトを表す。本メソッドが呼び出されると、ネットワークライブラリ1605eの制御部2801は、必要に応じて、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用し、またJavaアプリケーションやサービスマネージャ1604へ通知を行うことで、与えられた装置へマルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
図29(5)メソッドstopMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、メソッドactMultimediaServer()もしくはdoMultimediaServer()によって起動されたマルチメディアサーバの終了を依頼するものである。ネットワークライブラリ1605eは、本メソッドが呼び出されれば、起動中のマルチメディアサーバの動作を終了させる。
図29(6)メソッドsendContentList()は、引数devで与えられたネットワーク1304に接続されている装置に、第2メモリ1403に蓄積しているマルチメディアデータの一覧を送信するものである。この通信は、UPnP AVに定義された方法にて実現できるため、詳細は省略する。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、属性情報テーブル2521を読み出し、また、読み出した属性情報テーブ2521から得られる各コンテンツの属性情報を順に読み出す。また、ネットワークライブラリ1605eは、IO1605gを用いてURIテーブル2531を読み出す。
ネットワークライブラリ1605eは、URIテーブル2531を検索することにより、各コンテンツにアクセスするためのURIを取得し、属性情報とあわせて、UPnP AVで決められたフォーマットのコンテンツ一覧を作成する。そして、OS1601のライブラリ1601bの中のNET1601b4を通じてネットワーク部1411を制御し、作成したコンテンツ一覧を送信する。送信には、後述のデータ出力部のメソッドsendData()を用いても良い。
図32は、本発明の実施の形態2におけるURIテーブル2531の構成の一例を示す図である。
図32において、列3201は各コンテンツの識別子を示し、列3201は各コンテンツにアクセスするためのURIを表す。各行3211〜3213は、コンテンツの識別子とURIの組が表されている。例えば、行3211は、識別子1のコンテンツのURIは、rtsp://192.168.0.3/AVData/0001.m2tsであることを表している。
図29(7)メソッドsendEPGData()は、引数devで与えられたネットワーク1304に接続されている装置に、EPG情報を送信するものである。この通信は、メソッドsendContentList()と同様に、UPnP AVに定義された方法にて実現できるため、詳細は省略する。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、第2メモリ1403に記憶されている、図18に示したEPG情報を読み出し、UPnP AVで定義されたフォーマットに変換する。そして、OS1601のライブラリ1601bの中のNET1601b4を通じてネットワーク部1411を制御し、変換したEPG情報を送信する。
なお、URIは各チャンネルごとに割り振られており、第2メモリ1403にURIテーブル2531と同じ形式で蓄積されており、そのテーブルを読み出すことで取得するものとする。送信には、後述のデータ出力部のメソッドsendData()を用いても良い。また、第2メモリ1403に記憶している、図18に示すEPG情報のデータをそのまま送信する構成であっても良い。
図29(8)メソッドremovePauseStatus()は、引数rInfoで与えられた再開位置情報を、第2メモリ1403から削除するもので、もともと存在しないか、削除が成功すればtrueを返し、削除に失敗すればfalseを返す。引数rInfoは、ReopenContentInfoクラスのインスタンスである。
図33は、ネットワークライブラリ1605eで使用されるReopenContentInfoクラスの構成の一例を示す図である。
図33において、メンバ変数cidは、図26および図27に示した、蓄積されたコンテンツの識別子を表すものであり、メンバ変数pidは、本ReopenContentInfoオブジェクトによって表されるマルチメディアデータ送信の中断を特定する識別子を表すものであり、メンバ変数rpは、マルチメディアデータの出力を再開するデータ位置を、該マルチメディアデータが書き込まれているファイルの先頭からのバイト位置で表したものであり、メンバ変数rtermは、該マルチメディアデータの出力を再開する場合の送信先端末が指定されている場合に、その端末を表すNetDeviceオブジェクトを表すものである。メソッドremovePauseStatus()は、引数rInfoとコンテンツ識別子および中断の識別子が一致する再開位置情報を削除する。再開位置情報は、図25に示した通り、再開位置情報テーブル2532として、第2メモリ1403に記憶されている。
図34は、本発明の実施の形態2における再開位置情報テーブル2532の構成の一例を示す図である。
図34において、列3401はコンテンツの識別子を表し、列3402はデータ出力中断の識別子を表し、列3403はマルチメディアデータの出力を再開するデータ位置を表し、列3404は該マルチメディアデータの出力を再開する場合の送信先端末を表す。再開位置情報はこれらの組として表され、行3411〜3413がそれにあたる。
なお、行3411の再開位置情報では、データ出力再開時の端末が指定されているため、列3404に端末が示されているが、行3412および行3413の再開位置情報では、データ出力再開時の端末が指定されていないため、列3404には示されていない。
なお、ネットワークライブラリ1605eは、中断の識別子を割り振らない構成であっても良い。そのとき、本メソッドは、コンテンツ識別子が一致するものを削除する構成であっても良い。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、まず、IO1605gを用いて、再開位置情報テーブル2532を読み出す。続いて、再開位置情報テーブル2532を検索し、列3401に記述されているコンテンツの識別子と、列3402に示されている中断の識別子とが、引数rInfoのものと一致する行を検索する。
該行が見つかれば、再開位置情報テーブル2532からその行を削除する。続いて、IO1605gを用いて、更新した再開位置情報テーブル2532を第2メモリ1403に書き込む。さらに、後述する属性管理部のメソッドupdateAttribute()に該コンテンツの識別子と再開位置情報テーブル2532の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
図29(9)メソッドsetPauseStatus()は、引数rInfoで与えられた再開位置情報を、IO1605gを通して、第2メモリ1403に書き込むものであり、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数rInfoで与えられた再開位置情報の中断に識別子を発行して、rInfoのメンバ変数pidに設定する。続いて、IO1605gを用いて、再開位置情報テーブル2532を読み出す。読み出した再開位置情報テーブル2532に、rInfoの内容を表す行を追加して更新する。続いて、IO1605gを用いて、更新した再開位置情報テーブル2532を第2メモリ1403に書き込む。
続いて、後述する属性管理部のメソッドupdateAttribute()に該コンテンツの識別子と再開位置情報テーブル2532の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
図29(10)メソッドgetPauseStatus()は、第2メモリ1403から再開位置情報テーブル2532を読み出し、その内容をReopenContentInfoオブジェクトの配列として返すものであり、成功すれば該配列を返し、失敗すればnullを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、まず、IO1605gを用いて、第2メモリ1403から再開位置情報テーブル2532を読み出す。続いて、再開位置情報テーブル2532の各行ごとに、その内容を入れたReopenContentInfoオブジェクトを作成して、配列を作成する。すべての行の内容を含む配列を作り終わると、その配列を返す。また、再開位置情報テーブル2532が無いか、処理途中でエラーが起きればnullを返す。また、再開位置情報テーブル2532に行が全く無ければ、要素数が0の配列を返す。
図29(11)メソッドsetServerStatus()は、Javaアプリケーションからネットワークライブラリ1605eへ、データ中断再開をサポートするか否かを設定する。引数にて0が与えられるとデータ中断再開をサポートしないマルチメディアサーバとして働き、引数にて非0が与えられると、データ中断再開をサポートするマルチメディアサーバとして働く。
情報受信部2802は、OS1601のライブラリ1601の中のNET1601b4を通じてネットワーク部1411を制御し、指定されたネットワーク1304に接続されている外部装置からの接続要求受け入れと、メッセージの受信を行うものである。
情報受信部2802は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図35は、ネットワークライブラリ1605eの内部構成に含まれる情報受信部2802が提供するJava APIの一例を示す図である。
図35(1)メソッドacceptConnection()は、引数sで与えられるSocketオブジェクトによって、外部装置からの待ち受けを行い、接続要求のあった装置との接続を確立して、該装置の情報と、該装置と通信するSocketオブジェクトを含むRemoteDeviceオブジェクトを返すものであり、成功すれば該RemoteDeviceオブジェクトを返し、失敗すればnullを返すものである。
例えば、端末からRTSPセッションの接続要求を受けた場合は、RTSPメッセージを送受信するためのSocketオブジェクトと該要求のあった端末のIPアドレスからRemoteDeviceオブジェクトを生成できる。
なお、本メソッドは、さらに、引数として、NetDeviceオブジェクトの配列を与えられ、該配列の各要素で示される外部装置からの接続要求のみにこたえる構成であっても良い。また、本メソッドは、同様にNetDeviceオブジェクトの配列を引数として与えられ、該配列の各要素で示される外部装置からの接続要求の場合には、該当するNetDeviceオブジェクトと通信するSocketオブジェクトからRemoteDeviceオブジェクトを生成する構成であっても良い。
図35(2)メソッドreceiveRequestMessage()は、引数devで与えられた外部装置からのメッセージを、引数devで与えられたSocketオブジェクトを用いて受信し、バイトデータの配列として返すものであり、成功すればメッセージのバイト列を返し、失敗すればnullを返す。
図35(3)メソッドreceiveRequest()は、引数devで与えられた外部装置からのRTSPのリクエストメッセージを、引数devで与えられたSocketオブジェクトを用いて受信し、内容を解釈して、RequestInfoオブジェクトとして返すものであり、成功すれば該リクエストメッセージを表すRequestInfoオブジェクトを返し、失敗すればnullを返す。
図36は、ネットワークライブラリ1605eで使用されるRequestInfoクラスの構成の一例を示す図である。図36において、メンバ変数requestTypeは要求の種類を表し、0がSETUPを、1がPLAYを、2がPAUSEを、3がTEARDOWNをそれぞれ表すものとする。
また、メンバ変数seqはRTSPリクエストのSeqヘッダの値であるシーケンス番号を表す。メンバ変数sessionは、RTSPリクエストのSessionヘッダの値であるセッション番号を表す。メンバ変数contentURIは、要求されているコンテンツのURIを表す文字列である。メンバ変数rangeは、RTSPリクエストのRangeヘッダの値である文字列である。メンバ変数extentHeaderは、RTSPリクエストの拡張ヘッダを格納するStringオブジェクトの配列であり、拡張ヘッダ1個につき、1個のStringオブジェクトに格納する。
データ出力部2803は、OS1601のライブラリ1601の中のNET1601b4を通じてネットワーク部1411を制御し、指定されたネットワーク1304に接続されている外部装置に、指定されたデータを出力するものである。
データ出力部2803は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図37は、ネットワークライブラリ1605eの内部構成に含まれるデータ出力部2803が提供するJava APIの一例を示す図である。
図37(1)メソッドsendData()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数mesで与えられたデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。
図37(2)メソッドsendMessage()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数resで与えられたRTSPメッセージを生成して送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。引数resは、ResponseInfoクラスのインスタンスで与えられる。
図38は、ネットワークライブラリ1605eで使用されるResponseInfoクラスの構成の一例を示す図である。図38において、メンバ変数responseCodeはレスポンスコードを表し、例えば、レスポンスが200 OKのレスポンスであれば、responseCodeは200となる。レスポンスコードについては、RTSPのRFCを参照されたい。
メンバ変数seqは、RTSPレスポンスのSeqヘッダの値となるシーケンス番号である。メンバ変数sessionは、RTSPレスポンスのSessionヘッダの値であるセッション番号を表す。メンバ変数rangeは、RTSPレスポンスのRangeヘッダの値である文字列である。メンバ変数headersは、RTSPレスポンスのほかのヘッダを格納するStringオブジェクトの配列であり、ヘッダ1個につき、1個のStringオブジェクトを格納する。
図37(3)メソッドsendMultimediaData()は、引数isで与えられたInputStreamからマルチメディアデータを読み出して、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、読み出したマルチメディアデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。本メソッドは、isからEOFを読み出すまで処理が行われる。引数devは、RemoteDeviceUDPクラスのオブジェクトで与えられる。
図30は、RemoteDeviceUDPクラスの構成の一例を示す図である。本クラスは、NetDeviceクラスの拡張クラスとして定義されている。メンバ変数dsは、NetDeviceクラスのメンバ変数によって表される装置とUDPベースで通信するDatagramSocketオブジェクトを表す。
図37(4)メソッドterminateTransfer()は、引数devで与えられた装置へのマルチメディアデータの送信を停止させるもので、停止させるまでに送信したデータのバイト数を返すものである。
属性管理部2804は、第2メモリ1403に記憶したコンテンツの属性情報のうち、データ出力中断を表す属性を更新するものである。
属性管理部2804は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図39は、ネットワークライブラリ1605eの内部構成に含まれる情報受信部2802が提供するJava APIの一例を示す図である。
図39(1)setAttributeValue()は、引数cidで与えられた識別子のコンテンツの属性情報の「データ出力中断中」の値を、引数isPauseで与えられた値で設定するものである。すなわち、引数isPauseが、trueであるならば、引数cidで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性を与えるものであり、引数isPauseがfalseの場合は、引数cidで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性があれば、それを削除するものである。成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、属性情報テーブル2521を読み出し、該コンテンツの識別子をもつ属性情報を検索する。続いて、IO1605gを用いて、該コンテンツの属性情報を記述したファイルから属性情報を読み出す。続いて、「データ出力中断中」の属性を削除して更新し、IO1605gを用いて、更新した属性情報を第2メモリ1403に書き込み、trueを返して処理を終了する。
図39(2)メソッドupdateAttribute()は、引数cidで与えられた識別子のコンテンツに関し、引数rInfoで与えられた再開位置情報テーブル2532の内容から、該コンテンツの属性情報にある「データ出力中断中」の属性の更新を行うもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数rInfoで与えられた再開位置情報テーブル2532の内容の中に、引数cidで与えられた識別子のコンテンツに関する情報があるか否かを調べる。これは、図34に示した再開位置情報テーブル2532の列3401を調べることによって行える。
再開位置情報テーブル2532の中に、該コンテンツに関する情報がある場合は、ネットワークライブラリ1605eは、引数としてcidの値とtrueを与えてメソッドsetAttributeValue()を呼び出して、属性情報の更新を行う。また、再開位置情報テーブル2532の中に、該コンテンツに関する情報が無い場合は、ネットワークライブラリ1605eは、引数としてcidの値とfalseを与えてメソッドsetAttributeValue()を呼び出して、属性情報の更新を行う。いずれの場合も、setAttributeValue()の戻り値をそのまま返す。
データ受信部2805は、データ出力装置1301のTSデコーダ1407とTSマルチプレクサ1410をOS1601のライブラリ1601bを通じて制御し、TSデコーダ1407によってフィルタリングされた、映像、音声、セクションデータをTSマルチプレクサ1410によってMPEG2トランスポートストリームに構成して読み出すものである。
データ受信部2805は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図40は、ネットワークライブラリ1605eの内部構成に含まれるデータ受信部2805が提供するJava APIの一例を示す図である。
図40(1)メソッドopenProgram()は、TSデコーダ1407およびTSマルチプレクサ1410を制御し、TSマルチプレクサ1410が構成したMPEG2トランスポートストリームを読み出すInputStreamのオブジェクトを返す。
なお、失敗時にはnullが返る。本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数cidで指定されたチャンネルの識別子から得られるPAT、PMTから、該チャンネルに対応する映像データ、音声データ、セクションデータのPIDを取得し、OS1601のライブラリ1601bを通じてTSデコーダ1407に与えてフィルタリングさせ、該映像データ、音声データ、セクションデータをTSマルチプレクサ1410に引き渡させる。
このとき、セクションデータは各バージョンナンバーごとに1回のみ出力する構成であっても良い。さらに、ネットワークライブラリ1605eは、OS1601のライブラリ1601bを通じてTSでTSマルチプレクサ1710を制御し、TSデコーダ1407から引き渡されたデータから、MPEG2トランスポートを構成させ、CPU1412へ引き渡させる。
ここで、制御部2801のメソッドactMultimediaServer()とメソッドdoMultimediaServer()の処理の詳細について説明する。
まず、メソッドactMultimediaServer()について説明する。本メソッドが呼び出されると、ネットワークライブラリ1605eは、まずcollectDevice()を呼び出し、ネットワークに接続された装置の認識を行う。また、Socketオブジェクトを生成して、UPnP DAおよびUPnP AVに定義された通信の待ち受けを行う。
これらは、別のスレッドもしくはプロセスを生成して行わせる。これにより、随時UPnP DAに規定された通信を行って、接続されている装置の一覧を更新する。また、ネットワークに接続された端末から、UPnP AVに定義されたコンテンツ一覧取得要求を受けた場合、メソッドsendContentList()を呼び出して、該要求を発行した端末に、コンテンツ一覧を、UPnP AVの定義にしたがって送信する。
また、同様に、ネットワークに接続された端末から、EPGデータ送信要求を受けた場合、メソッドsendEPGData()を呼び出して、該要求を発行した端末に、EPGデータを、UPnP AVの定義にしたがって送信する。さらに、Socketオブジェクトsを生成し、sを引数として情報受信部2802のメソッドacceptConnection()を呼び出すことにより、ネットワーク1304に接続された端末1302および端末1303からのRTSPセッションの接続要求を待ち受ける。メソッドacceptConnetion()が接続要求を受け入れ、RemoteDeviceオブジェクトを返すと、該RemoteDeviceオブジェクトを引数として、メソッドdoMultimediaServer()を呼び出すことで、接続要求のあった端末へのマルチメディアサーバとしての機能を実行する。
なお、本メソッドは、呼び出されたときに、スレッドもしくはプロセスを新規に生成し、その上で動作する構成であっても良い。また、メソッドacceptConnection()により接続要求を受け入れると、スレッドもしくはプロセスを新規に生成し、その上でメソッドdoMultimediaServer()を呼び出す構成であっても良い。
次に、メソッドdoMultimediaServer()の動作について説明する。本メソッドが呼び出されると、ネットワークライブラリ1605eは、情報受信部2802のメソッドreceiveRequest()を呼び出して、RTSPリクエストメッセージを受信して解釈する。そして、リクエストの内容に応じて処理を行い、またRTSPレスポンスメッセージを作成して、情報受信部2802のメソッドsendMessage()を呼び出して、端末へ送信する。以下、RTSPリクエストに応じた処理について、それぞれ説明する。
まず、RTSPリクエストがSETUPであった場合、Javaライブラリ1605の中のIO1605gを用いて、URIテーブル2531を読み出し、該リクエストに含まれるURIに対応するコンテンツを検索する。該コンテンツが第2メモリ1403に蓄積されているコンテンツの場合、IO1605gを用いて、該コンテンツのファイルを読み出すInputStreamオブジェクトを生成する。また、該リクエストが放送中のチャンネルを表している場合、メソッドregistarHandler()で登録されたServHandlerを実装したハンドラのメソッドnotifyChannelID()を呼び出してチャンネルの識別子を与え、チューニングを依頼する。
さらに、データ受信部2805のメソッドopenProgram()を呼び出して、該コンテンツを読み出すInputStreamを作成する。いずれの場合も、InputStreamが得られれば、RTSPレスポンスメッセージを表すResponseInfoオブジェクトを作成し、メンバ変数responseCodeには200を設定し、メンバ変数seqには、RTSPリクエストと同じ値を設定する。
また、該RTSPセッションのセッション番号を発行して、メンバ変数sessionに設定する。また、マルチメディアデータを通信するRTPのポート番号を記述したヘッダを作成して、メンバ変数headersに設定する。さらに、データ出力部2803のメソッドsendMessage()を呼び出して、レスポンスメッセージを端末に送信する。さらに、受信したRTSPリクエストのヘッダTransportの値から、端末がデータ受信に使用するポート番号を取得し、さらに、データ出力装置1301がこのSETUPで設定されたコンテンツを送信するRTPのポート番号を発行する。これらポート番号と本メソッドの引数のRemoteDeviceオブジェクトから、まずRTP通信に用いるDatagramSocketオブジェクトを生成する。さらに生成したDatagramSocketオブジェクトと引数のRemoteDeviceオブジェクトから、RemoteDeviceUDPオブジェクトを作成する。InputStreamが得られなければ、対応のエラーコードを設定したResponseInfoオブジェクトを作成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
次に、RTSPリクエストがSETUP済みのURIに対するPLAYであった場合、それが放送中のチャンネルに対するものであれば、まず、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、上記で取得したInputStreamオブジェクトと、上記で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
また、PLAYが第2メモリ1403に蓄積されているコンテンツに対するものであれば、メソッドreceiveRequest()が返したRequestInfoオブジェクトのメンバ変数extentHeaderを調べ、X−Restartがあるか否かを検索する。X−Restartが無い場合、もしくは、あってもその値が「Yes」ではない場合は、次にメンバ変数rangeの値に対応する分のデータを読み飛ばすように、SETUP時に取得したInputStreamをSeek機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、InputStreamオブジェクトと、SETUP時で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
また、X−Restartがあってその値が「Yes」の場合、ネットワークライブラリ1605eは、メソッドgetPauseStatus()を呼び出して、再開位置情報テーブル2532を読み出す。取得したReopenContentInfoオブジェクト配列を検索し、該コンテンツの再開位置情報を検索する。該コンテンツの再開位置情報が無い場合は、上記したX−Restartが無い場合と同様の処理を行う。
該コンテンツの再開位置情報があれば、そのReopenContentInfoオブジェクトのメンバ変数rpの値を読み取り、その値で示されるバイト数のデータを読み飛ばすように、SETUP時に取得したInputStreamをSeek機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、InputStreamオブジェクトと、SETUP時で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
さらに、メソッドremovePauseStatus()を呼び出して、再開したデータ出力に関する再開位置情報を再開位置情報テーブル2532から削除し、またコンテンツの属性も更新させる。なお、この削除は、ユーザからの指示により行われる構成であっても良い。
さらに、後述する放送中のコンテンツをネットワークライブラリ1605eの処理によって蓄積したコンテンツの場合は、再開してすべて送信したあとに、そのコンテンツを第2メモリ1403から削除する構成であっても良い。また、このマルチメディアデータの削除は、ユーザからの指示により行われる構成であっても良い。また、X−Restartの値は、データ出力中断の識別子とし、該コンテンツの識別子と、データ出力中断の識別子とから、再開位置情報テーブル25332を検索する構成であっても良い。また、再開位置情報に設定された再開時の送信先端末からの再開要求に対して、データ出力を再開し、それ以外の端末から再開要求が合った場合には、データ送信を行わないか、先頭もしくはRangeヘッダで指定された位置からのデータ送信を行う構成であっても良い。
次に、RTSPリクエストが、データ送信に対するPAUSEであった場合について説明する。まず、第2メモリ1403に蓄積したコンテンツの送信に対するPAUSEの場合、ネットワークライブラリ1605eは、データ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させ、送信済みのデータ数を取得する。次に、記憶しておいた送信前に呼び飛ばしたデータ数と、送信済みのデータ数の和を取ることにより、再開時の開始点を求める。
続いて、この中断を識別する識別子を発行し、上記の再開開始点と該コンテンツの識別子とから、ReopenContentInfoオブジェクトを生成する。さらに、メソッドsetPauseStatus()を呼び出して、この再開位置情報を再開位置テーブル2532へ追加するとともに、該コンテンツの属性情報を更新する。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
また、放送中のチャンネルに対するPAUSEの場合は、ネットワークライブラリ1605eは、まずデータ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させる。続いて、メソッドregistarHandler()で登録されたServHandlerを実装したハンドラのメソッドnotifyRecording()を呼び出してチャンネルの識別子を与え、該コンテンツの蓄積を依頼し、コンテンツの識別子を受け取る。
続いて、この中断を識別する識別子を発行し、受け取ったコンテンツの識別子とから、ReopenContentInfoオブジェクトを生成する。なお、再開位置はファイルの先頭なので、メンバ変数rpは0を設定する。
さらに、メソッドsetPauseStatus()を呼び出して、この再開位置情報を再開位置テーブル2532へ追加するとともに、該コンテンツの属性情報を更新する。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
なお、本実施の形態では、ServHandlerのメソッドnotifyHanlder()を用いてJavaアプリケーションに蓄積を依頼したが、ネットワークライブラリ1605eが、IO1605gを用いて、第2メモリ1403に書き込み、サービスマネージャ1604に該コンテンツの識別子と属性情報の作成を依頼する構成であっても良い。また、PAUSEリクエストにX−Keep−Pause−Statusヘッダを含み、その値が「Yes」の場合にのみ、上記のような再開位置情報の作成を行う構成であっても良い。また、PAUSEリクエストに拡張ヘッダとして、出力再開時の送信先端末が指定されており、RestartContentInfoオブジェクトのメンバ変数rtermに設定する構成であっても良い。
次に、RTSPリクエストがTEARDOWNであった場合、マルチメディアデータを送信中であれば、データ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させる。さらに、SETUP時に取得したマルチメディアデータを読み出すInputStreamオブジェクトをcloseする。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。さらに、trueを返して、処理を終了する。
上記以外のRTSPリクエストもしくは不正なリクエストを受けた場合、リクエストの内容に応じたエラーレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
次に、端末1302および端末1303について説明する。
図41は、本発明の実施の形態2における端末1302および端末1303の構成の一例を示すブロック図である。端末1302および端末1303は、それぞれ、入力部4101と、第1メモリ4102と、第2メモリ4103と、多重分離部4104と、TSデコーダ4105と、映像出力部4106と、音声出力部4107と、ネットワーク部4108と、CPU4109とを備える。
入力部4101、第1メモリ4102、第2メモリ4103は、上記した本実施の形態におけるデータ出力装置1301の入力部1401、第1メモリ1402、第2メモリ1403と同様のものである。なお、端末1302および端末1303は、第2メモリ4103に、データ出力装置1301から受信したコンテンツ一覧やEPGデータなどの、マルチメディアデータの識別子、タイトル、放送日時、放送チャンネルなど番組情報を蓄積する。
多重分離部4104は、CPU4109からMPEGトランスポートストリームを受け取り、CPU4109から指定された情報を抽出し、CPU4109に引き渡す。また、MPEGトランスポートストリームをそのままTSデコーダ4105に引き渡す。
TSデコーダ4105は、CPU4109から、音声データ、映像データの識別子を受け取る。さらに、多重分離部4104から受け取ったストリームから、受け取った音声データ、映像データの識別子に対応するデータを抽出する。抽出した映像データを映像出力部4106に、音声データを音声出力部4107に、それぞれ引き渡す。
映像出力部4106、音声出力部4107は、上記した本実施の形態におけるデータ出力装置1301の映像出力部1408、音声出力部1409と同様のものである。
ネットワーク部4108は、ネットワークインタフェースを含み、CPU4109から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、IPネットワークで規定されたパケットに変換して、CPU4109へ引き渡す。
CPU4109は、第2メモリ4103が記憶するプログラムを実行することで、多重分離部4104、TSデコーダ4105、ネットワーク部4109を制御する。
図42は、本発明の実施の形態2に係る端末1302および端末1303のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。本図は、第2メモリ4103に記憶され、CPU4109に実行されるプログラムの構成の一例を示す。
プログラム4200は、複数のサブプログラムで構成され、具体的にはOS4201、JavaVM4202、サービスマネージャ4203、Javaライブラリ4204で構成される。
OS4201は、端末1302および端末1303の電源が投入されると、CPU4109が起動するサブプログラムである。OSは、オペレーティングシステムの略であり、Linux等が一例である。OS4201は、他のサブプログラムを平行して実行するカーネル4201a及びライブラリ4201bで構成される公知の技術の総称であり、詳細な説明は省略する。
本実施の形態においては、OS4201のカーネル4201aは、JavaVM4203をサブプログラムとして実行する。また、ライブラリ4201bは、これらサブプログラムに対して、端末1302および端末1303が保持する構成要素を制御するための複数の機能を提供する。
本実施の形態では、ライブラリ4201bは機能の一例として、限定解除4201b1、AV再生4202b2、NET4201b3を含む。
限定解除4202b1は、他のサブプログラムやJavaライブラリ4204のCA4204cから情報を受け取り、ネットワークから受信した暗号化データを復号したり、AV再生4201b2を有効にして、ネットワークから受信したマルチメディアデータの再生を許可したりするものである。
AV再生4202b2は、他のサブプログラムやJavaライブラリ4204のJMF4204aから、音声のパケットIDと映像のパケットIDを受け取る。受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ4105に与える。この結果、TSデコーダ4105は与えられたパケットIDに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
NET4201b3は、他のサブプログラムやJavaライブラリ4204のネットワークライブラリ4204dから受け取ったデータを、IPネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。
アプリケーション層より下のプロトコルとは、例えばTCPパケット、UDPパケット、IPパケットなどである。これをネットワーク部4108に引き渡すことで、ネットワーク1304を介して他の機器にメッセージおよびデータを送信する。
また、ネットワーク1304を介して他の機器からのメッセージを受信したときに、他のサブプログラムやJavaライブラリ4204のネットワークライブラリ4204dに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、HTTP、RTSPやRTPなどである。
JavaVM4202は、上記した本実施の形態におけるデータ出力装置1301のJavaVM1603と同様のものである。
サービスマネージャ4203は、上記した本実施の形態におけるデータ出力装置1301のサービスマネージャ1604と、以下の相違点を除いて同様のものである。
サービスマネージャ1404はEPG1602の再生部1602bよりチャンネル識別子を受け取り、その識別子をTuner1605cに引き渡してチューニングさせ、さらにCA1605dに依頼してデスクランブルを行い、JMF1605aにチャンネルの識別子を与えて映像・音声の再生を依頼するものであったが、サービスマネージャ4203は、Javaライブラリ4204の中にあるList4204iからコンテンツの識別子を受け取り、ネットワークライブラリ4204dにコンテンツの識別子およびそれを蓄積している装置などの情報を引き渡して、該装置からストリームを受信し、続いて、Javaライブラリ4204の中にあるJMF4204aにコンテンツの識別子を与えることで、映像・音声の再生を依頼するものである。List4204iについては、後述する。
サービスマネージャ4203は、Javaライブラリ4204の中にあるネットワークライブラリ4204dに、コンテンツの識別子とデータ出力装置1301のIPアドレスなどの情報、該コンテンツにアクセスするためのURIなどの情報を与えて、データ出力装置1301へのマルチメディアデータ送信要求発行と該マルチメディアデータの受信を依頼し、さらに、ネットワークライブラリ4204dに、データ出力装置1301から送信されたマルチメディアデータの受信を依頼する。ネットワークライブラリ4204dでは、依頼を受けると、データ出力装置1301と接続して、マルチメディアデータの送信要求を発行する。そして、ネットワークライブラリ4204dは、データ出力装置1301から送信されたデータをCPU4109へ引き渡す。これにより、受信したマルチメディアデータを多重分離部4104に引き渡すことが可能となり、該マルチメディアデータの再生が行える。
Javaライブラリ4204は、第2メモリ4103に格納されている複数のJavaライブラリの集合である。本実施の形態では、Javaライブラリ4204は、JMF4204aと、AM4204bと、CA4204cと、ネットワークライブラリ4204dと、再生Lib4204eと、List4204iとを含んでいる。
JMF4204aと、AM4204bと、再生Lib4204eと、IO4204fと、AWT4204gと、SI4204hとは、それぞれ、上記した本実施の形態におけるデータ出力装置1301のJavaライブラリ1605の中のJMF1605a、AM1605b、再生Lib1605f、IO1605g、AWT1605h、SI1605iと同様のものである。
CA4204cは、ネットワーク1304経由で送信されてきたマルチメディアデータのコピー制御および課金など、該マルチメディアデータの権利処理を管理するものである。コピー制御は、送信されてきたトランスポートストリームのセクション情報に含まれているコピー制御情報を参照して、必要であれば書き換えを行う。また、課金などは、ネットワークライブラリ4204dを通して、データ出力装置1301と通信することによって行う。
List4204iは、データ出力装置1301におけるEPGやデータ出力装置1301が蓄積しているマルチメディアコンテンツの一覧を表示し、入力部4101が受け付けたユーザ操作によって、一覧からひとつのマルチメディアコンテンツを選択し、サービスマネージャ4203に再生を依頼するものである。このとき、データ出力装置1301の情報もサービスマネージャ4203に引き渡す。また、データ出力装置1301におけるEPGおよびデータ出力装置に蓄積されたコンテンツの一覧は、ネットワークライブラリ4204dを通して、取得することができる。これらの情報は、UPnP AVに定義された方法によって実現できるため、詳細説明は省略する。
ネットワークライブラリ4204dは、OS4201bのNET4201b3を通して、ネットワーク1304に接続されたデータ出力装置1301と通信するものである。データ出力装置1301との通信は、マルチメディアデータの一覧送受信、およびマルチメディアデータの送信要求発行と該マルチメディアデータの受信である。
図43は、ネットワークライブラリ4204dの内部構成の一例を示すブロック図である。
ネットワークライブラリ4204dは、制御部4301、情報送信部4302、情報受信部4303、判定部4304、データ受信部4305を含む。なお、ネットワークライブラリ4205dは、IPネットワークに関連する他の機能を含んでも良い。
制御部4301は、ダウンロードしたJavaアプリケーションに対して、ネットワークライブラリ4204dが実現する機能を提供する。すなわち、制御部4301は、ダウンロードしたJavaアプリケーションに対してJava APIを提供し、JavaアプリケーションがこのAPIを呼び出すことで、ネットワークを利用した機能が実現できる。
制御部4301は、Java APIが呼び出されると、適宜、情報送信部4302、情報受信部4303、判定部4304、データ受信部4305や、他のJavaライブラリ4204およびOS4201のライブラリ4201bを利用して処理を行う。
図44は、ネットワークライブラリ4204dの内部構成に含まれる制御部4301が提供するJava APIの一例を示す図である。
図44(1)メソッドcollectNetDevice()は、ネットワーク1304に接続されている外部装置の情報を集め、その情報としてNetDeviceオブジェクトの配列を返し、失敗時はnullを返す。本メソッドにより、ネットワーク1304に接続された機器の情報を得ることができる。NetDeviceクラスは図30に示したものと同様である。本メソッドの処理は、UPnP DAに定義された方法によって行うことが可能であるため、詳細説明は省略する。
図44(2)メソッドgetMultimediaData()は、引数contで与えられたマルチメディアデータを、引数offsetで与えられた時間位置から受信し、引数osで与えられたOutputStreamオブジェクトに出力する。
引数osは、受信したマルチメディアデータをCPU4109に渡す役割をするものである。引数offsetは、先頭を0とした時間位置を秒単位で与えるものである。また、開始点を指定しない場合は、引数offsetに負の値を与える。これは、処理としては、offsetに0が与えられた場合と同様の処理となる。
なお、本実施の形態においては、開始点のみ引数で与えることとしたが、引数を追加して、終了点の時間位置も与えても良い。この場合、終了点を指定しないときは、該引数に負の数を与えることで実現しても良い。また、RTSPを使ったデータ通信の制御を行っているため開始点および終了点は時間位置としたが、他のプロトコル、例えばHTTPの場合、開始点および終了点はバイト位置を与えるものであっても良い。
引数contは、ContentInfoクラスのオブジェクトとして与えられる。
図45に、ネットワークライブラリ4204dで使用されるContentInfoクラスの構成の一例を示す図である。
図45において、メンバ変数devは、該マルチメディアデータを送信する装置をNetDeviceオブジェクトとして格納するものである。
また、メンバ変数cidは、該マルチメディアデータのコンテンツの識別子を表すものである。また、メンバ変数contentURIは、該マルチメディアデータにアクセスするためのURIを文字列で格納するものである。また、メンバ変数titleは該コンテンツの題名を文字列で格納するものである。また、メンバ変数gunreは、映画などといった、該コンテンツの種別を文字列で格納するものである。
また、メンバ変数broadDateは、該コンテンツが放送された日時を文字列で格納するものである。また、メンバ変数recDateは、該コンテンツが録画・蓄積された日時を文字列で格納するものである。また、メンバ変数lastPlayDateは、これまでに該コンテンツを再生もしくはデータ出力装置1301から送信した最後の日時を文字列で表すものである。
また、メンバ変数isPausedは、該マルチメディアデータの送信もしくは再生が途中で中断された状態の場合はtrueを、そうでない場合はfalseをとるboolean型の変数である。これらの情報は、データ出力装置1301から受信したコンテンツ一覧もしくはEPGデータに含まれているものであり、後述のメソッドgetContentList()およびgetEPGData()によって取得できる。
本メソッドは、あとでデータの受信に関する制御を行うために、引数contで与えられた情報、および、本メソッドにより開かれたRTSPセッションのセッション番号と、メッセージのシーケンス番号とを、ネットワークライブラリ4204d内部で記憶・管理しておく。
また、本メソッドでは、該マルチメディアデータが出力中断中であるか否かを判定し、出力中断中の場合は、本メソッドの前に、後述のsetTransferMode()によって設定されていれば、その設定により再開するか否かを決定する。また、設定されていなければ、後述のメソッドregisterHandler()によって登録されたClientHandlerインタフェースを実装したハンドラオブジェクトを用いて、Javaアプリケーションに、それを通知する。
Javaアプリケーションでは、ユーザに提示してユーザ入力を受け付けるなどして、中断したデータ出力を再開するか否かを決定し、後述のメソッドsetTransferMode()を用いてネットワークライブラリ4204dに通知する。本メソッドの詳細については、後述する。
図44(3)メソッドpausePlayback()は、Javaアプリケーションから、ネットワークライブラリ4204dへ、マルチメディアデータの受信を中断する依頼を出すものであり、成功すればtrueを返し、失敗すればfalseを返す。本メソッドが呼び出されると、ネットワークライブラリ4204dは、後述する情報送信部4302のメソッドnotifyPause()もしくはnotifyPauseForReopen()を呼び出して、PAUSEリクエストメッセージを送信する。
この場合、上記のRTSPセッション番号と、シーケンス番号を1だけ増やした値を引数として与える。シーケンス番号は更新される。そして、メソッドnotifyPause()の戻り値を返す。
また、図44(4)メソッドpauseForReopen()は、後述の情報送信部4302のメソッドnotifyPauseForReopen()を呼び出して送信するもので、成功すればtrueを返し、失敗すればfalseを返すものである。この場合も同様に、上記のRTSPセッション番号と、シーケンス番号を1だけ増やした値を引数として与え、シーケンス番号は更新される。
メソッドpauseForReopen()は、図44(5)のように、NetDeviceオブジェクトを引数にとり、引数で与えられた装置を、出力再開時の送信先として拡張ヘッダに記述するPAUSEリクエストを作成して送信する構成であっても良い。メソッドpausePlayback()、メソッドpauseForReopen()の処理の詳細については後述する。
図44(6)メソッドregisterHandler()は、引数handlerで与えられた、ClientHandlerインタフェースを実装したオブジェクトをシステムに登録するもので、成功すればtrueを返し、失敗すればfalseを返す。Javaアプリケーションは、該オブジェクトをハンドラとして登録することにより、ネットワークライブラリ4204dからコールバックを受けることができる。
図46は、ネットワークライブラリ4204dで使用されるClientHanlderインタフェースの構成の一例を示す図である。
図46において、ClientHandlerインタフェースのメソッドnorifyPause()は、引数cidで与えられた識別子のコンテンツが出力中断中であることを、Javaアプリケーションに通知するものである。
Javaアプリケーションは、後述のメソッドsetTransferMode()を用いて、この中断を再開するのか、もしくは、該コンテンツを先頭もしくはユーザが指定した位置から取得するのかを設定することが可能となる。Javaアプリケーションは、ユーザに該コンテンツが出力中断の状態であることを提示し、ユーザに出力を再開するか否かを問合せることが可能である。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
また、メソッドnotifyPauseAction()は、引数cidで表されるコンテンツの送信中断を行うことを、Javaアプリケーションに通知するものである。
Javaアプリケーションは、この中断を後に再開するか否かを、ユーザに提示して問合せることが可能であり、その内容を、後述のメソッドsetReopenStatus()を用いて、この中断を後に再開するか否かを、ネットワークライブラリ4204dに通知することが可能となる。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
また、メソッドaskReopenDevice()は、Javaアプリケーションに、中断したデータ送信を再開するときの出力先を登録するかどうかの問い合わせを通知するものである。
Javaアプリケーションは、ネットワーク1304に接続された端末など再生再開可能な装置の一覧をユーザに提示し、ユーザの選択を問合せることが可能である。また、Javaアプリケーションは、後述のメソッドsetReopenTerminal()によって、ユーザが選択した装置をネットワークライブラリ4204dに通知することが可能となる。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
図44(7)メソッドsetTransferMode()は、Javaアプリケーションから、ネットワークライブラリ4204dへ、引数cidで与えられた識別子のコンテンツに対し、出力中断中の場合に、中断位置からの送信を再開するか、もしくは、先頭あるいはユーザが指定した位置から送信を開始するかを、引数flagで与えられた値から設定するもので、成功すればtrueを返し、失敗すればfalseを返すものである。引数flagにて0が与えられれば出力再開とし、正の値が与えられれば、出力再開ではなく先頭あるいはユーザが指定した位置からのデータ取得であると判定する。
また、負の値が与えられれば、その時点の設定をキャンセルし、未設定の状態に戻す。本メソッドは、上記のClientHandlerのメソッドnotifyPauseContent()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。メソッドgetMultimediaData()は、本メソッドによる設定にしたがって動作する。
図44(8)メソッドsetReopenStatus()は、引数cidで与えられた識別子のコンテンツのデータ送信を中断する際に、それを後に再開するか否かの状態を設定するもので、引数flagが0の場合は再開することを表し、正の値の場合は再開しないことを表す。
また、負の値の場合は、その時点の設定をキャンセルし、未設定の状態に戻す。処理が成功すればtrueを返し、失敗すればfalseを返す。本メソッドは、上記のClientHandlerのメソッドnotifyPauseAction()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。
図44(9)メソッドsetReopenTerminal()は、引数devで与えられた装置を、引数cidで与えられた識別子のコンテンツのデータ送信を中断し、それを再開する時の送信先として登録するもので、成功すればtrueを返し、失敗すればfalseを返す。
引数devでnullが与えられた場合は、未設定の状態に戻す。上記のClientHandlerのメソッドaskReopenDevice()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに送信先として登録する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。
図44(10)メソッドgetContentList()は、引数devで与えられた装置から、コンテンツ一覧を取得してContentInfoオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればnullを返す。また、引数devで与えられた装置に、ネットワーク104を通じて提供できるコンテンツがない場合は、要素数0のContentInfoオブジェクトの配列を返す。この処理における通信は、UPnP AVで定義された方法によって行えるため、詳細は省略する。
図44(11)メソッドgetEPGData()は、引数devで与えられた装置から、EPGを取得してContentInfoオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればnullを返す。この処理における通信は、UPnP AVで定義された方法によって行えるため、詳細は省略する。
情報送信部4302は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器へRTSPのリクエストメッセージの送信を行うものである。
情報送信部4302は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図47は、ネットワークライブラリ4204dの内部構成に含まれる情報送信部4302が提供するJava APIの一例を示す図である。
図47(1)メソッドconnectToServer()は、Socketオブジェクトsを生成し、Socketオブジェクトsを用いて引数devで与えられた装置とTCPセッションを確立して、Socketオブジェクトsと引数devの内容とでRemoteDeviceオブジェクトを生成して返すものであり、成功すれば該RemoteDeviceオブジェクトを返し、失敗すればnullを返す。RemoteDeviceクラスの構成は、図30に示したものと同様である。このTCPセッション上で、RTSPセッションの通信が行われる。
図47(2)メソッドsendData()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数mesで与えられたデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。
図47(3)メソッドsendRequestMessage()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数reqで与えられたRTSPリクエストメッセージを生成して送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。引数reqはRequestInfoクラスのオブジェクトで与えられる。RequestInfoクラスは図36で示したものと同様である。
図47(4)メソッドnotifyPlay()は、引数cont、seq、session、offset、restartで与えられた情報からRTSPのPLAYリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PLAYを表す1を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、引数offsetが0以上の値であれば、その値からRangeヘッダをStringオブジェクトで生成して、reqのメンバ変数rangeへ設定する。
また、引数restartがtrueの場合は、X−Restartヘッダを、値を「Yes」として作成し、Stringオブジェクトを作成してそこに格納する。さらに、必要に応じて拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、reqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PLAYリクエストメッセージを送信する。
図47(5)メソッドnotifyPause()は、引数cont、seq、sessionで与えられた情報からRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、必要に応じて拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、reqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。
図47(6)メソッドnotifyPauseForReopen()は、引数cont、seq、sessionで与えられた情報から、X−Keep−Pause−Statusヘッダ付きのRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。X−Keep−Pause−Statusヘッダは、後に中断した送信を再開することをより明確に示す目的で使用する。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、X−Keep−Pause−Status拡張ヘッダを、その値を「Yes」としてStringオブジェクトで生成する。また、必要に応じて他の拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、これらをStringオブジェクトの配列としてreqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。
図47(7)メソッドnotifyPauseForReopen()は、引数cont、seq、session、rtermで与えられた情報から、送信再開時の送信先装置を拡張ヘッダに含んだRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。送信再開時の送信先装置を示す拡張ヘッダとして、X−Reopen−Terminalを用いることとする。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、拡張ヘッダX−Reopen−Terminnalを用いて、送信再開時の送信先端末を記述したヘッダをStringオブジェクトで生成する。拡張ヘッダX−Reopen−Terminalの値は、引数rtermから得られる、該端末のIPアドレスであっても良いし、該端末のホスト名であっても良いし、該端末につけたニックネームであっても良い。ニックネームはNetDeviceオブジェクトrtermのメンバ変数friendlyNameから得られる。さらに、必要に応じて他の拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、これらをStringオブジェクトの配列としてreqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。本メッセージには、X−Keep−Pause−Status拡張ヘッダを含む構成であっても良い。
情報受信部4303は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からのRTSPのレスポンスメッセージの受信を行うものである。
情報受信部4303は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からのRTSPのレスポンスメッセージの受信を行うものである。
情報受信部4303は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図48は、ネットワークライブラリ4204dの内部構成に含まれる情報受信部4303が提供するJava APIの一例を示す図である。
図48(1)メソッドreceiveData()は、引数devで与えられた外部装置から、引数devで与えられたSocketオブジェクトを用いてメッセージを受信し、そのメッセージをバイト列で返すものであり、成功すれば該バイト列を返し、失敗すればnullを返すものである。
図48(2)メソッドreceiveResponseMessage()は、引数devで与えられた外部装置から、引数devで与えられたSocketオブジェクトを用いて、RTSPのレスポンスメッセージを受信し、それを解釈してResponseInfoオブジェクトを生成して返すものであり、成功すれば該ResponseInfoオブジェクトを返し、失敗すればnullを返す。ResponseInfoクラスは、図38に示したものと同様である。
本メソッドが呼び出されると、まず、メソッドreceiveData()を呼び出して、レスポンスメッセージを受信する。続いて、ResponseInfoオブジェクトresを生成する。さらに、受信したレスポンスメッセージを解釈し、resのメンバ変数responseCode、seq、sessionを設定する。また、レスポンスメッセージにRangeヘッダが含まれていれば、そのヘッダをStringオブジェクトとして、resのメンバ変数rangeに設定する。Seqヘッダ、Sessionヘッダ、Rangeヘッダ以外のヘッダがあれば、各ヘッダごとに、ひとつのStringオブジェクトを生成して設定し、それらを配列として、resのメンバ変数headersに設定する。Seqヘッダ、Sessionヘッダ、Rangeヘッダ以外のヘッダがなければ、resのメンバ変数headersはnullに設定する。そして、resを返す。また、不正なレスポンスメッセージの場合やレスポンスメッセージの受信に失敗した場合は、nullを返す。
判定部4304は、コンテンツの属性情報から、該コンテンツが出力中断中の属性を持っているか否かを判定するものである。
判定部4304は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図49は、ネットワークライブラリ4204dの内部構成に含まれる判定部4304が提供するJava APIの一例を示す図である。
図49(1)メソッドisContentPause()は、引数cidによって与えられた識別子をもつコンテンツが、出力中断中であるか否かを判定するものであり、出力中断中と判定されればtrueを返し、出力中断中でないと判定されるか、処理に失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ4204dは、IO4204fを用いて、第2メモリ4103に記憶されているコンテンツ一覧を読み出す。読み出したコンテンツ一覧から、引数cidで与えられた識別子をもつコンテンツを検索する。検索したコンテンツの属性情報を調べ、出力中断中の属性があれば、trueを返して終了し、出力中断中の属性がなければfalseを返して終了する。また、第2メモリ4103からコンテンツ一覧を読み出せないか、もしくは、読み出したコンテンツ一覧に、引数cidで与えられた識別子をもつコンテンツがない場合は、falseを返して終了する。
図49(2)メソッドisContentPause()は、引数にContentInfoオブジェクトをもつ構成である。本メソッドは、引数で与えられたConentInfoオブジェクトのコンテンツが、出力中断中か否かを判定するものであり、出力中断中と判定されればtrueを返し、出力中断中でないと判定されればfalseを返す。本メソッドは、引数で与えられたContentInfoオブジェクトのメンバ変数isPauseの値を返す。
データ受信部4305は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からマルチメディアデータを受信するものである。
データ受信部4305は、制御部4301およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図50は、ネットワークライブラリ4204dの内部構成に含まれるデータ受信部4305が提供するJava APIの一例を示す図である。
図50(1)メソッドopenRemoteProgram()は、引数devで与えられた装置から、引数contで与えられたコンテンツの、マルチメディアデータを受信する通信路を確保し、RemoteProgramオブジェクトで返すもので、成功時には該オブジェクトが、失敗時にはnullが返る。
図51は、ネットワークライブラリ4204dで使用されるRemoteProgramクラスの構成の一例を示す図である。
図51において、メンバ変数sessionは、このマルチメディアデータ通信を制御するRTSPセッションのセッション番号を表す。また、メンバ変数sは、マルチメディアデータを受信するRTPのDatagramSocketオブジェクトを表す。また、メソッドgetData()は、RTPによりデータを受信し、RTPパケットからマルチメディアデータを抽出して返すものである。
メソッドgetData()は、1回の呼び出しで、RTPパケット1個分のデータを返すとは限らないが、複数のRTPパケットをまとめて返す場合は、必ず、パケット番号が連続の区間のデータを返すものである。メソッドopenRemoteProgram()が呼び出されると、ネットワークライブラリ4204dは、引数devで与えられた装置に、引数contで与えられたコンテンツに対する、RTSPのSETUPメッセージを送信する。そして、レスポンスメッセージを受け取り、解釈して、SETUPが成功していればRemoteProgramオブジェクトを作成して返し、失敗していればnullを返す。
また、TCPセッションが切断された場合などにより、SETUPメッセージが送信できない、もしくは、レスポンスメッセージが受信できないといった異常が発生した場合もnullを返す。
以下、本メソッドの処理について、さらに詳しく説明する。まず、本メソッドが呼び出されると、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeを、SETUPを表す0に設定する。メンバ変数seqは1に設定する。
また、SETUPリクエストでは、まだセッション番号は割り当てられていないため、メンバ変数sessionは任意の値でよい。さらに、引数contで与えられたContentInfoオブジェクトから、メンバ変数のcontentURIの値を読み出し、reqのメンバ変数contentURIにStringオブジェクトとして設定する。SETUPでは、Rangeヘッダは送信しないため、reqのメンバ変数rangeはnullとしておく。
さらに、マルチメディアデータを受信するUDPのポート番号を発行し、その値を記述することでTransportヘッダを生成し、Stringオブジェクトを生成して、Transportヘッダの文字列を設定する。さらに、要素数が、Transportヘッダを含んだStringオブジェクトのみの1個であるStringオブジェクトの配列を生成し、reqのメンバ変数extentHeaderに設定する。
そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、情報送信部4302のメソッドsendRequestMessage()を呼び出し、SETUPメッセージを送信する。さらに、引数devで与えられたRemoteDeviceオブジェクトを引数として、情報受信部4303のメソッドreceiveResponseMessage()を呼び出し、レスポンスメッセージを受信してResponseInfoオブジェクトを得る。
このResponseInfoオブジェクトをresとすると、まず、resのメンバ変数responseCodeを調べ、OKである200であるか否かを調べる。200でなければSETUPが失敗したことを表し、nullを返して終了する。続いて、RemoteProgramオブジェクトrpを生成する。
rpのメンバ変数sessionには、resのメンバ変数sessionの値を設定する。また、resのメンバ変数headersを検索し、Transportヘッダを探す。Transportヘッダがなければ、nullを返して終了する。Transportヘッダがあれば、そこから、server_portで表される、サーバがマルチメディアデータを出力するポート番号を得る。
このポート番号と、上記したネットワークライブラリ4204dがデータを受信するポート番号と、引数devから得られるサーバの情報から、DatagramSocketオブジェクトを生成してサーバとconnectし、rpのメンバ変数sに設定する。そして、rpを返して、処理を終了する。
ここで、制御部4301のメソッドgetMultimediaData()の動作について、より詳細に説明する。本メソッドが呼び出されると、まず、引数contで与えられたコンテンツ情報をネットワークライブラリ4204dで記憶、管理する。
ネットワークライブラリ4204dは、続いて、引数contのメンバ変数devを引数にあたえることにより、情報受信部4302のメソッドconnectToSever()を呼び出して、データ出力装置1301とRTSPメッセージを通信するTCPセッションを確立し、戻り値としてRemoteDeviceオブジェクトを受け取る。このRemoteDeviceオブジェクトをrdevとする。rdevは、ネットワークライブラリ4304dによって記憶され管理される。
また、メソッドrdevは、registerHandler()によって登録されたハンドラオブジェクトを用いたコールバックを行い、Javaアプリケーションに与えて、Javaアプリケーションが管理する構成であっても良い。具体的には、図46に示したClientHandlerインタフェースにpublic boolean notifyRemote(RemoteDevice dev)というメソッドを追加し、引数にrdevを与えて呼び出すことで、Javaアプリケーションに与えることが可能となる。
続いて、rdevとcontを引数として、データ受信部4305のメソッドopenRemoteProgram()を呼び出し、RTSPセッションを開始するとともに、マルチメディアデータを受信するRemoteProgramオブジェクトを受け取る。このRemoteProgramオブジェクトをrpとする。
続いて、contを引数として判定部4304のメソッドisContentPause()を呼び出すことにより、該マルチメディアデータが出力中断中か否かを判定する。出力中断中ではないと判定された場合は、情報送信部4302のメソッドnotifyPlay()を呼び出すことにより、データ出力装置1301にPLAYリクエストメッセージを発行する。
この場合の引数は、第1引数にはrdevを、第2引数にはcontを、第3引数には2を、第4引数にはrpのメンバ変数sessionを、第5引数には引数offsetで与えられた値を、第6引数にはfalseを、それぞれ用いる。
第3引数は、RTSPセッションのシーケンス番号であり、1はデータ受信部4305のメソッドopenRemoteProgram()の中で、SETUPに用いられている。ネットワークライブラリ4204dは、このセッション番号を記憶して管理し、メソッドnotifyPlay()が呼び出された後は、記憶しているセッション番号は2となる。
該コンテンツが出力中断中であると判定された場合、ネットワークライブラリ4204dは、まず、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、該コンテンツに対して出力再開をするか否かの設定がなされているかを検索する。
出力再開をしないと設定されている場合は、上記と同様の処理を行い、情報送信部4302のメソッドnotifyPlay()を呼び出す。出力を再開すると設定されていた場合は、情報送信部4302のメソッドnotifyPlay()を、上記と第5引数と第6引数を変えて呼び出す。この場合、第5引数には任意の負の値を、第6引数にはtrueを与える。
また、出力再開に関して設定されていない場合は、メソッドregisterHandler()で設定されたハンドラhのメソッドnotifyContentPause()を呼び出し、Javaアプリケーションに出力中断中のコンテンツであることを通知する。この場合に、引数はcontのメンバ変数cidを与える。
Javaアプリケーションは、メソッドsetTransferMode()によって設定を行ったあと、制御をネットワークライブラリ4204dに戻す。ネットワークライブラリ4204dは、Javaアプリケーションによって行われた設定にしたがい、上記と同様に、情報送信部4302のメソッドnotifyPlay()を呼び出す。このとき、Javaアプリケーションによって未設定とされた場合は、出力再開を行わないとみなすこととする。
メソッドnotifyPlay()を呼び出した後、さらに、情報受信部4303のメソッドreceiveResponse()を、引数としてrdevを与えることにより呼び出し、PLAYリクエストに対するレスポンスメッセージを受信し、ResponseInfoオブジェクトを受け取る。受け取ったResponseInfoオブジェクトをriとする。
riのメンバ変数responseCodeを調べ、OKを表す200であれば、rpのメソッドgetData()を呼び出して、データ出力装置1301から送信されてきたデータを受信する。rpのメソッドgetData()からデータを受け取れば、それを引数osで与えられたOutputStreamに出力し、以降、PAUSEメッセージを発行する制御部4301のメソッドが呼び出されるまで、rpのメソッドgetData()の呼び出しと受信したデータのosへの出力を繰り返す。
PAUSEメッセージを発行する制御部4301のメソッドとは、pausePlayback()、pauseForReopen()であり、これが呼び出されると、繰り返しのループの中で参照するフラグをセットするなどして、データ受信とosへの出力のループを停止させる。あるいは、本メソッドは別のスレッドもしくはプロセスを生成しそのスレッドもしくはプロセス上で動作するか、上記ループのみ別のスレッドもしくはプロセスで動作させ、例えば、該スレッドnotifyTerminate()といったメソッドを用意して、このメソッドによって通知したり、プロセス間通信を用いて通知する構成であっても良い。riのメンバ変数responseCodeが、200でなければfalseを返して処理を終了する。
なお、メソッドgetMultimediaData()の引数osに、IO4204fから受け取った第2メモリ4103のファイルへ出力するOutputStreamを与えると、本メソッドによって、マルチメディアデータを第2メモリ4103上へ蓄積することが可能となる。
次に、メソッドpausePlayback()、メソッドpauseForReopen()の処理について詳細に説明する。
メソッドpausePlayback()が呼び出されたときに、ネットワークライブラリ4204dは、まず、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、該コンテンツのデータ送信中断に対して出力再開を行うか否かの設定を検索する。
出力再開を行わないと設定されている場合は、情報送信部4302のメソッドnotifyPause()を呼び出す。この場合、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号とを、それぞれ、引数として与える。
また、出力再開を行うと設定されている場合は、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、出力再開時の送信先端末が設定されているか否かを検索する。
送信先端末が設定されている場合は、図47(7)のメソッドnotifyPauseForReopen()を呼び出す。このとき与える引数は、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号、および設定されている装置のNetDeviceオブジェクトである。
送信先端末が設定されていなければ、図47(6)のメソッドnotifyPauseForReopen()が呼び出される。このとき与える引数は、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号である。
また、出力再開について未設定である場合は、メソッドregisterHandler()によって設定されたハンドラオブジェクトhのメソッドnotifyPauseAction()を呼び出し、Javaアプリケーションに送信停止処理を行うことを通知する。このとき与えられる引数はネットワークライブラリ4204dが管理しているContentInfoオブジェクトのメンバ変数cidである。
Javaアプリケーションでは、メソッドsetReopenStatus()を用いて、出力再開の設定要求を行うか否かを通知し、制御をネットワークライブラリ4204dに戻す。ネットワークライブラリ4204dでは、設定された内容に基づき、上記と同様に、情報送信部4302のメソッドnotifyPauseForReopen()を呼び出す。このとき、Javaアプリケーションによって、未設定とされた場合は、出力再開を行わないとみなすこととする。
以上の処理の後、さらに、上記のメソッドgetMultimediaData()の受信動作を停止させる処理を行い、呼び出した情報送信部4302のメソッドnotifyPause()もしくは、notifyPauseForReopen()の戻り値を返して、処理を終了する。
なお、出力再開時の端末が設定されていない場合は、ハンドラhのメソッドnotifyReopenDevice()を呼び出して、Javaアプリケーションに通知し、Javaアプリケーションは、メソッドsetReopenTerminal()を用いて出力先端末を設定する構成であっても良い。この場合、Javaアプリケーションによって出力先端末が未設定とされた場合は、出力先端末の指定を行わないとみなすこととする。
図47(6)メソッドnotifyPauseForReopen()は、上記メソッドpausePlayback()において、出力再開を行うと設定されている場合の処理と同様である。
また、図47(7)メソッドnotifyPauseForReopen()は、上記メソッドpausePlayback()において、出力再開を行うと設定されていて、かつ、出力先端末が設定されている場合と、以下の点を除いての処理を行う。
相違点は、上記pausePlayback()では、図47(7)メソッドnotifyPauseForReopen()を呼び出すときに、第5引数として設定された出力先端末のNetDeviceオブジェクトを用いたが、本メソッドでは、引数devで与えられたNetDeviceオブジェクトを用いることである。
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム1305を構成するデータ出力装置1301は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
また、本実施の形態にかかる端末1302および端末1303は、あるマルチメディアデータが、データ出力装置1301において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置1301に、データ出力を再開させる機器制御部1501を含むものである。この構成により、例えば、端末1302にて、あるマルチメディアコンテンツの視聴を中断し、端末1303にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
(実施の形態2の変形例)
本発明の実施の形態2について説明してきたが、本発明は、上記の実施の形態2に限定されるものではない。以下のような場合も、本発明に含まれる。
本発明の実施の形態2について説明してきたが、本発明は、上記の実施の形態2に限定されるものではない。以下のような場合も、本発明に含まれる。
(1) データ出力装置1301は、データ出力を中断するときに発行した、この中断を識別する識別子を、コンテンツ一覧に含める、SETUPリクエストのレスポンスに拡張ヘッダとして含めるなどの方法によって端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。この識別子の通信は、PLAYリクエストメッセージに拡張ヘッダを設けることであっても良いし、X−Restartヘッダの値として使っても良い。この場合、データ出力装置1301は、拡張ヘッダX−Restartがあれば、出力再開であると判定し、その中断の識別子とコンテンツの識別子とで再開位置情報を検索する。
また、端末1302および端末1303の機器制御部1501は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図26において、PAUSE要素の内容を、この識別子に設定し、PAUSE要素があり、かつその内容が記述されている場合は出力中断状態であり、PAUSE要素がないか、PAUSE要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
また、データ出力装置1301が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
また、データ出力装置1301は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、上記識別子は、端末からデータ出力装置1301に提供されるものであっても良い。さらに、データ出力装置1301は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、データ出力装置1301は、上記識別子を、中断した日時や、中断した端末と組にして管理する構成であっても良い。
(2) 端末1302および端末1303は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置1301は、再開位置情報とともに前記出力先を記憶部1407に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。
この場合のデータ出力中断要求の一例としては、上記実施の形態におけるPAUSEリクエストメッセージに、拡張ヘッダX−Reopen−Terminalを追加し、その値として特定端末を記述するものである。出力先としては、端末のIPアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、UPnP DAに定義された方法によって取得可能である。
また、データ出力装置1301は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
また、データ出力装置1301は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
(3) 上記実施の形態においては、データ出力装置1301は、デジタル放送を受信するSTBとしたが、それに限るものではない。チューナを持たずに、ネットワークからコンテンツを受信して蓄積する構成であっても良い。この場合の構成は図41と同様のものとなる。また、ネットワーク以外の部位によってデータを蓄積する構成であっても良い。
(4) また、上記においては、データ出力中断要求を受けたときに、引き続くデータを第2メモリ1403に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から第2メモリ1403に書き込んでおく構成であっても良い。
この場合、出力再開位置情報は、上記実施の形態における第2メモリ1403に蓄積したコンテンツと同様の方法によって作成することが可能である。
また、データ出力装置1301は、TSマルチプレクサ1410の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、第1メモリ1402もしくは図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
(5) データ出力装置1301は、さらに、データ出力装置1301上での再生を中断したマルチメディアデータに対して、再開位置情報を生成し記録する構成であっても良い。
この構成においても、上記実施の形態と同様の処理により、データ出力装置1301での再生を中断し、端末1302もしくは端末1303へ該データ出力再開を行うこと、および、端末1302もしくは端末1303への出力を中断し、データ出力装置1301上の再生として再開すること、などが可能となる。
(6) 上記実施の形態においては、データ出力装置1301が再開位置情報を記憶することとしたが、ネットワーク上の第3の機器が記憶しておく構成であっても良い。
図52は、本発明の実施の形態2の第6の変形例におけるマルチメディア配信システムの構成を示す図である。
図52に示すマルチメディア配信システム5206は、データ出力装置5201と、ネットワークを通じてデータ出力装置および端末を制御する制御装置5202と、第1の端末5203と、第2の端末5304と、ネットワーク5205とを備える。データ出力装置5201、制御装置5202、端末5203および端末5204は、ネットワーク5205に接続されており、ネットワーク5205を介して相互に通信可能である。
データ出力装置5201は、ネットワーク5205を通じて送信された、制御装置5202、端末5203および端末5204からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク5205を通じて制御装置5202へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク5205を通じて端末5203および端末5204へ送信するものである。
また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
データ出力装置5201は、実行中のデータ出力に対して、制御装置5202もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはURIとを、制御装置5202へネットワーク5205を通じて送信するものである。なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはURIを送信しなくとも良い。
制御装置5202は、ユーザの要求によって動作するものである。制御装置5202は、ネットワーク5205を通じて、端末5203および端末5204を制御し、データ出力装置5201からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はUPnP AVに定義された方法により可能であるため、詳細は省略する。
また、データ出力装置5201へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末5203、端末5204もしくは制御装置5202自身の表示部によって、ユーザに提示する。
また、ユーザから再生中断の要求を受けたとき、制御装置5202は、該再生を実行中の端末5203もしくは端末5204を制御して、データ出力装置5201へデータ送信中断要求を送信させるとともに、再生を中断させる。さらに、制御装置5202は、データ出力装置5201と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはURIといった、該データを特定できる情報を受信し、再開位置情報として制御装置5202内に記憶する。
再開位置情報は、上記実施の形態2のものと同様のものを用いることが可能である。
なお、該マルチメディアデータのURIは、制御装置5202が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。制御装置5202は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置5201から受信させて再生させる。
端末5203および端末5204は、制御装置5202からネットワーク5205を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
ネットワーク5205は、上記実施の形態におけるネットワーク1304と同様のものである。
以上説明したとおり、本構成のマルチメディア配信システム5206では、制御装置5202が再開位置情報を管理することにより、例えば、端末5203で行っていたマルチメディアコンテンツの再生を中断し、端末5204で再開するといったことが可能となる。
なお、ここでは、制御装置5202は、データ出力装置5201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置5201が再開位置情報を作成し、制御装置5202はそれを受信して保存する構成であっても良い。
また、ここでは、制御装置5202は、データ出力装置5201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末5203もしくは端末5204から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
また、ここでは、制御装置5202が、端末5203もしくは端末5204に要求を発行し、端末からデータ出力装置5201へデータ送信要求を送信する構成としたが、制御装置5202が、データ出力装置5201へ端末5203もしくは端末5204へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置5201からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、FTP(File Transfer Protocol)によって行うことが可能である。
また、ここでは、ネットワーク上の独立の制御装置5202が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
(7) 上記の実施の形態2においては、データ伝送のプロトコルとしてRTP/RTSPを用いているが、HTTPなど、他のプロトコルを用いて行っても良い。HTTPを用いる場合のデータ出力中断要求は、HTTP−GETのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、HTTPを用いる場合のデータ出力再開要求は、HTTP−GETに上記のX−Restartのような独自拡張ヘッダを用いて行っても良い。
(8) 上記の実施の形態2においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。また、マルチメディアデータがMPEG2符号化データの場合、Iフレーム、MPEG2−TSにおけるPAT、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
(9) 上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(10) 上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(11) 本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(12) 上記実施の形態2及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明にかかるデータ出力装置、機器制御装置およびマルチメディア配信システムは、ネットワークを通じたマルチメディアコンテンツの再生などに関わるデータの通信において、中断したデータ通信を、受信する端末や装置を変更したとしても、的確に再開することが可能であるという優れた効果を有するため、ホームネットワークなどのネットワーク環境におけるマルチメディアコンテンツのサーバ装置、受信端末、機器制御装置、データ出力方法、機器制御方法などとして有用である。
本発明は、マルチメディアのデジタルコンテンツのネットワークなどへの出力およびその制御に関する。
近年、BSデジタル放送、CS110度デジタル放送および地上波デジタル放送などのデジタル放送が開始された。また、HDDレコーダ、DVD(Digital Versatile Disc)レコーダなどの普及が進んでいる。これらにより、家庭内で利用できる、デジタル化されたマルチメディアコンテンツが増加している。
また、一方で、ブロードバンド環境の整備により、家庭からのインターネットアクセスが普及している。それに伴い、家庭内の各部屋をIPネットワークで繋ぐ、いわゆるホームネットワークの普及も進んでいる。
このような状況により、家庭内のデジタル放送受信機で受信したデジタル放送、もしくは、レコーダに蓄積したデジタルコンテンツを、ホームネットワークを用いて、他の部屋で視聴することが行われるようになった。この際、ホームネットワーク上のサーバ(例えば、デジタル放送を受信するセットトップボックスやHDDレコーダ)とクライアント(例えば、パーソナルコンピュータやデジタルプレーヤ)における、お互いの機器の認識や利用できるコンテンツの情報のやり取りには、UPnP(Universal Plag and Play)に規定された方法が広く用いられている。また、マルチメディアデータの通信はRTP(Real Time Trasnport Protocol)などが、その制御にはRTSP(Real Time Streaming Protocol)などが用いられている。RTSPはIETF(Internet Engineering Task Force)によって規格化されている。(例えば、非特許文献1を参照)。
映画のような長時間のデジタルコンテンツを再生、視聴する場合、視聴を短時間中断したのち、続きを視聴するといったことが頻繁に行われる。RTSPを用いたネットワーク経由での視聴では、RTSPのRESUME機能を用いるか、もしくは、クライアントが中断位置を記憶しておき、再開時にサーバに改めて中断位置以降のデータ送信を要求することで実現されている。ここで、ホームネットワークにより、複数の部屋での視聴が可能になることにより、例えばリビングで視聴していたコンテンツの続きを寝室で見る、といったニーズが出てきている。
RFC2326 Real Time Streaming Protocol (RTSP)
RFC2326 Real Time Streaming Protocol (RTSP)
しかしながら、RTSPでは、サーバ−クライアントの1対1通信を対象とし、別のクライアントへのデータ転送は考慮されておらず、上記の部屋を変えての視聴再開を実現することは出来ない。また、クライアントが変わるため、クライアントが中断位置を記憶するといった方法を用いることができない。
本発明は、上記の問題を解決するためになされたもので、同じクライアントだけでなく異なるクライアントからでも、コンテンツの中断位置からの視聴を可能とするデータ出力装置、機器制御装置およびマルチメディア配信システムの提供を目的とする。
従来の課題を解決するために、本発明のデータ出力装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、外部の装置から信号を受信する受信手段と、マルチメディアデータを蓄積している蓄積手段と、前記蓄積手段からデータを読み出す読出手段と、前記マルチメディアデータを指定された出力先に出力する出力手段と、前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える。
このように、本発明のデータ出力装置は、再開位置情報を記憶している。これにより、マルチメディアデータの出力先が変わっても、中断されたマルチメディアデータ出力を中断された続きから的確に再開することが可能になる。
好ましくは、前記データ出力装置は、ネットワークを介して複数の端末に接続されており、前記出力手段は、ユーザにより指定された前記複数の端末のいずれかを出力先として出力する。
このように、出力手段はネットワークを介して接続された複数の端末に出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
また好ましくは、前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる。
このように、出力手段は複数の端末のいずれかに出力できる。そのため、それらの端末のいずれかが指定された場合には、その指定された端末に出力を再開することができる。したがって、中断したデータを異なる出力先に出力することが可能になる。
さらに好ましくは、前記制御手段は、前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる。
このように、記憶手段は再開位置情報と中断識別子とを記憶している。これにより、ユーザは中断識別子によって再開要求を指示することができ、利便性が向上する。
さらに好ましくは、前記制御手段は、さらに、前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる。
このように、記憶手段は再開位置情報と出力先とを記憶している。これにより、記憶している出力先から出力再開要求を受け付けた場合にのみ、出力を再開することが可能になる。これにより、例えば、再開位置情報と出力先との組み合わせを複数記憶しておくことにより、再開要求を受け付けた出力先に応じて、適切なコンテンツを適切な再開位置から出力することが可能になる。
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
このように、マルチメディアデータを受信しながら出力している場合に、中断要求を受け付けると、受信しているマルチメディアデータの続きを蓄積しておく。これにより、デジタル放送で放送中もしくはVoD(Video On Demand)で受信中など、出力中断時にすべて受信していないデータであっても、再開要求を受け付けたときに蓄積されているマルチメディアデータを出力することができる。そのため、再開要求を受け付けたときのマルチメディアデータの出力を的確に再開することが可能となる。
さらに好ましくは、さらに、マルチメディアデータを再生する再生手段を備え、前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、前記制御手段は、さらに、前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断要求が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる。
このように、データ出力装置自身が、マルチメディアデータを再生する再生手段を備え、再生手段を出力先として指定することができる。そのため、データ出力装置自身を出力先とすることが可能になる。
さらに好ましくは、さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、前記制御手段は、さらに、前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる。
このように、データ出力装置は、マルチメディアデータを外部の装置から受信し、受信したマルチメディアデータを記憶手段に蓄積する。これにより、デジタル放送またはVoDにより配信されるマルチメディアデータの出力を中断し、その再開要求を受け付けた場合であっても、そのマルチメディアデータの出力を的確に再開することが可能になる。
さらに好ましくは、さらに、Java(登録商標)アプリケーションを実行するJava実行手段を備え、前記制御手段は、Javaアプリケーションによって起動される。
このように、データ出力装置はJava実行手段を備える。これにより、Javaにより記述されたアプリケーションプログラム(以下、「Javaアプリケーション」という。)を実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
また、第19の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、前記データ出力装置へ要求を送信する送信手段と、前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える。
このように、機器制御装置は、中断要求とともに、特定した出力先をデータ出力装置に送信する。これにより、データ出力装置に、データ出力再開時の送信先を登録することが可能であり、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
好ましくは、さらに、Javaアプリケーションを実行するJava実行手段を備え、前記Javaアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
次に、第22の発明の機器制御装置は、映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、前記データ出力装置から提供されるマルチメディアデータに含まれるコンテンツの属性を受信する属性受信手段と、前記データ出力装置に要求を送信する送信手段と、ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える。
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、マルチメディアデータに含まれるコンテンツの属性として、そのコンテンツの出力が中断されているか否かを判定し、出力が中断されていると判定した場合に、そのコンテンツが含まれるマルチメディアデータの出力の再開要求を送信する。これにより、出力が中断されている場合には、その続きから出力することができ、データ出力装置に適切な出力先に適切な再生位置からのマルチメディアデータを出力させることが可能になる。
好ましくは、前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記マルチメディアサーバへ送信させる。
このように、コンテンツの属性には出力中断を表す識別子が含まれる。これにより、その識別子によってマルチメディアデータを特定し、その出力を再開させることが可能になる。
さらに、Javaアプリケーションを実行するJava実行手段を備え、前記制御手段は、前記Javaアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記マルチメディアサーバへ送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
さらに、第26の発明の機器制御装置は、ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、前記データ出力装置と通信する通信手段と、前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える。
このように、機器制御装置はネットワークを介してデータ出力装置を制御し、また、再開位置情報を記憶している。これにより、ネットワークを介してデータ出力装置に再開要求とともに、出力を再開する位置を送信できる。そのため、データ装置によるマルチメディアデータの出力の再開を的確に制御することが可能になる。
好ましくは、さらに、Javaアプリケーションを実行するJava実行手段を備え、前記制御手段は、前記Javaアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、Javaアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる。
このように、機器制御装置は、さらにJava実行手段を備える。これにより、Javaにより記述されたアプリケーションを実行することができる。そのため、制御部は、Javaアプリケーションを実行することによって発揮される機能により、データ出力装置が備える各手段を制御することが可能になる。
なお、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置として実現することができるだけでなく、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段をステップとする方法として実現したり、データ出力装置および機器制御装置のそれぞれに含まれる特徴的な手段としてコンピュータを機能させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc−Read Only Memory)等の記録媒体やインターネット等の通信ネットワークを介して流通させることができる。また、本発明は、このような特徴的な手段を備えるデータ出力装置および機器制御装置を備えるマルチメディア配信システムとして実現することもできる。
以上述べたように、本発明のデータ出力装置、機器制御装置、マルチメディア配信システムによれば、マルチメディアコンテンツの視聴・再生を中断して再開する場合に、ネットワーク上の別の端末で再開する場合においても、的確に再開することが可能となる。
(実施の形態1)
以下本発明の実施の形態について、図面を参照しながら説明する。
以下本発明の実施の形態について、図面を参照しながら説明する。
図1は、本発明の実施の形態1におけるマルチメディア配信システムの構成図である。
図1に示すマルチメディア配信システム105は、データ出力装置101と、第1の端末102と、第2の端末102と、ネットワーク104とを備える。データ出力装置101、端末102および端末103は、ネットワーク104に接続されており、ネットワーク104を介して相互に通信可能である。
本実施の形態におけるデータ出力装置101は、ネットワーク104を通じて送信された、端末102および端末103からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク104を通じて端末102および端末103へ送信するものである。
データ出力装置101は、実行中のデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはURI(Uniform Resource Identifier)と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。そして、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
端末102および端末103は、ユーザの要求により、データ出力装置101へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク104を通じて送信する。そして、端末102および端末103は、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。
端末102および端末103は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
ネットワーク104は、家庭内に施設されたホームネットワークであり、イーサネット(登録商標)、無線LANなどによって構成されたIPネットワークである。
以上のように、本発明のデータ出力装置101、端末102、端末103、およびマルチメディア配信システム105においては、例えば端末102にて受信中だったデータの送信を中断しても、別の端末103において、的確にデータ通信を再開することが可能となる。
以下、本発明のマルチメディア配信システム105を構成する、データ出力装置101、端末102および端末103について、更に詳細に説明する。ここでは、端末102へデータ通信中にデータ送信を中断し、端末103へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
まず、データ出力装置101について説明する。
図2は、本発明の実施の形態1におけるデータ出力装置101の構成の一例を示すブロック図である。
図2に示すデータ出力装置101は、制御部201と、外部の制御装置からの信号を受信する受信部202と、データを蓄積する蓄積部203と、制御部201からの指示に従い蓄積部203からデータ読み出す読出部204と、第1出力部205と、第2出力部206と、データ出力を中断したときに、該データおよびデータ出力中断位置から得られる再開位置情報を記憶する記憶部207と、蓄積部203にデータを書き込む書込部208と、ネットワーク104と接続されるネットワークインタフェース209とを備える。
制御部201をより詳細に説明する。制御部201は、マイクロプロセッサ、ROM、RAMなどによって構成されている。ROM、RAMおよび図示していない情報記憶部にはマイクロプロセッサにて動作するOS、Java(登録商標) VM(Java Virtual Machine)プログラム、Javaプログラムライブラリ、Javaアプリケーションプログラムが保存されている。マイクロプロセッサは、起動時にOSを読み込んで実行する。引き続いて、Javaアプリケーション起動時に、Java VMを読み込んで実行し、必要に応じてJavaプログラムライブラリを読み込みながら、Javaアプリケーションを実行する。
制御部201は、受信部202からの信号を受け、Javaアプリケーションにしたがって、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208との制御、およびこれらとの間のデータ送受信を行う。
受信部202は、ネットワークインタフェース209に接続されており、ネットワークインタフェース209に届いたデータ出力装置101宛の情報を受信して、制御部201に引き渡す。受信部202は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。
なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。また、ネットワークインタフェース209のほか、例えば赤外線通信を行う通信部など、別の通信部にも同時に接続されたものであっても良い。
蓄積部203は、ハードディスクドライブに代表される、大容量をもつデジタルデータの蓄積装置と、そのドライバソフトウェアから構成されるものである。
読出部204は、制御部201からの指示を受け、蓄積部203に蓄積されたデータファイルのうち、指定されたファイルの指定位置からのデータを順次読み出して、第1出力部205および第2出力部206へ転送する。
第1出力部205および第2出力部206は、ネットワークインタフェース209に接続されており、制御部201の指示を受けて動作し、制御部201もしくは読出部204から送られたデータを、制御部201が指示した宛先へのパケットに変換して、ネットワークインタフェース209を通じて出力するものである。第1出力部205および第2出力部206は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
記憶部207は、フラッシュメモリやHDDなどの記憶装置もしくはその一部によって構成されるものであり、制御部201からの指示を受け、制御部201から受け取ったデータを記憶するものである。
書込部208は、制御部201からの指示を受け、蓄積部203にデータを書き込むものである。データの書き込みには、新規にデータを書き込む場合と、既存のデータに上書きする場合の2つがある。
ネットワークインタフェース209は、Etherケーブルや無線LANなどネットワークの物理メディアに応じたインタフェースを提供するハードウェアとそのドライバソフトウェアから構成されるものである。
以下、図を参照しながら、データ出力装置101の動作を、更に詳細に説明する。ここでは、説明を簡易にするために、第1出力部205は端末102へ出力するものであり、第2出力部206は端末103へ出力するものであるとするが、この構成に限らないことは言うまでもない。
図4は、本発明の実施の形態1における蓄積部203に蓄積されたデータの構成の一例を示す図である。
図4において、蓄積部203は、大きく分けて、マルチメディアデータ、マルチメディアデータの属性情報、マルチメディアデータのURIテーブルという3種類のデータ群を蓄積しており、マルチメディアデータ401と、マルチメディアデータ402と、属性情報411と、属性情報412と、マルチメディアデータのURIテーブル421とを含む例を示す。本実施の形態では、属性情報411はマルチメディアデータ401の属性情報を、属性情報412はマルチメディアデータ402の属性情報を、それぞれ表すこととする。蓄積部203が蓄積しているマルチメディアデータや属性情報は、それぞれ2つに限られない。
マルチメディアデータ401、402は、デジタル化されたマルチメディアコンテンツデータであり、代表的には、MPEG2によって符号化されたデータである。各マルチメディアデータ401、402は、それぞれ、蓄積部203上において、一つのファイルとして蓄積され、ファイル名が付けられている。
属性情報411、412は、マルチメディアデータ401、402に、例えば、コンテンツのタイトル、ジャンル、放送日時、録画日時、出力した回数、最後に出力した日時といった、付加的な情報を与えるものである。図5に、属性情報の一例を示す。
図5は、本発明の実施の形態1におけるマルチメディアデータの属性情報411の一例を示す図である。図5に示す属性情報は、XML(Extensible Markup Language)によって定義されたテキスト情報である。
URIテーブル421は、各マルチメディアデータとそのURIの対応を記憶するものであり、図6にその一例を示す。
図6は、本発明の実施の形態1に係るURIテーブル421の一例を示す図である。図6において、ファイル名0001.m2tsというマルチメディアデータのURIは、rtsp://192.168.0.3/AVData/0001.m2tsであることを表している。
なお、URIテーブルは、必ずしも必要ではなく、データ出力装置101のIPアドレスもしくはホスト名と、マルチメディアデータのファイル名から、制御部201が都度作成する構成であっても良いし、URIを付加情報として属性情報の中に記述する構成であっても良い。また、URIテーブルはファイル名とURIとの対応に限るものではなく、タイトルや各マルチメディアデータに付加された識別子や番号などとURIとの対応であっても良い。
まず、端末102へのデータ送信を中断するまでの過程におけるデータ出力装置101の動作を説明する。
制御部201は、受信部202から受け取った端末102の要求がコンテンツ一覧取得であった場合、読取部204を制御して情報を読み出すことにより、蓄積部203に蓄積されたマルチメディアデータの一覧表を作成して、第1出力部205から端末102へ送信する。
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのURIとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
コンテンツ一覧の取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧のデータフォーマットは、UPnP AVに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。コンテンツ一覧のフォーマットは、XMLによって定義されているため、XML Namespaceを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースNaを使った要素PAUSEを各コンテンツの情報に追加し、このPAUSE要素の内容が「Yes」の場合は、出力中断中であることを表すことと出来る。
また、制御部201は、受信部202から受け取った端末102の要求がデータ送信要求であった場合、読出部204に指示して要求されたマルチメディアデータを蓄積部203から読み出させ、第1出力部205に指示して読み出したデータを送信する。例えば、送信要求としてRTSPを使用して、URIがrtsp://192.168.0.3/AVData/0001.m2tsのデータを、先頭から送信する要求の場合、以下のメッセージが端末102からデータ出力装置101へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
制御部201は、上記メッセージを受け取ると、読出部204に読み出させたURIテーブル421を参照して、URIがrtsp://192.168.0.3/AVData/0001.m2tsであるマルチメディアデータを検索する。本実施の形態の場合、マルチメディアデータ401がそれに当たる。対応するマルチメディアデータが存在すれば、制御部201は、RTSPに規定された以下のような返答メッセージを作成して、第1出力部205に指示して端末102へ送信させる。
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
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
その後、読出部204に指示してマルチメディアデータ401の先頭から順次データを読み出させ、第1出力部205に指示して読み出したデータを端末102へ送信する。データ送信はRTPに規定された方法で行われるため、詳細は省略する。
制御部201は、受信部202から受け取った端末102の要求がデータ送信中断であった場合、第1出力部205に指示してデータ送信を停止させるとともに、送信済データ数を第1出力部205より受け取る。また、読出部204に指示して、蓄積部203からのデータの読み出しを停止させる。RTSPを用いる場合、データ送信中断はPAUSEコマンドを用いて行うことが出来る。これは、以下のメッセージが端末102から送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
制御部201は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、第1出力部205に送信させる。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
また、読出部204に指示して属性情報411を読み出し、出力中断中の属性を追加する。本実施の形態においては、図5に示した属性情報のうち、「PAUSE」という要素で表すこととする。すなわち、PAUSE要素があって、その内容が「Yes」の場合に限り、データ送信を中断している状態を表すこととする。
制御部201は、属性情報411を更新した後、書込部208に指示して、蓄積部203上の属性情報411に上書きさせる。
制御部201は、さらに、第1出力部205より受け取った送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から50119バイトのデータを送信した場合は、先頭から50120バイト目となる。
制御部201は、この送信再開位置とマルチメディアデータ401を識別する情報、例えばファイル名を組として、再開位置情報を作成して、記憶部207に記憶させる。図7にこの再開位置情報の一例を示す。
図7は、本発明の実施の形態1における再開位置情報の一例を示す図である。図7は、上記のデータ送信中断における再開位置情報701を表す。なお、本実施の形態においては、第1出力部205から受け取った送信済データ数を基に送信再開位置を求めたが、読出部204より受け取った、例えば、読出済データ数を基に求めるものであっても良い。
RTSPでは、このあとに、セッションを切断するTEARDOWNというコマンドが送受信されるが、本実施の形態では、TEARDOWNを行っても、上記の再開位置情報701および属性情報411は更新しない。
なお、より明確に後に再開する中断であることを表すために、PAUSEもしくはTEARDOWNを拡張して、再開位置情報701の作成・保持および属性情報411の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるX―Keep―Pause―Statusを用い、その値が「Yes」の場合に限り、再開位置情報701を作成・保持および属性情報411を更新・保持することとすれば、上記のPAUSEメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
この場合、制御部201は、受信したPAUSEメッセージにX―Keep―Pause―Statusヘッダがあり、かつその値が「Yes」であるので、再開位置情報701を作成して保持し、また、属性情報411を更新して保持する。X―Keep―Pause―Statusヘッダがないか、あっても値が「Yes」以外の場合は、制御部201は、再開位置情報701を作成せず、また、属性情報411を更新しない。
次に、端末103との通信において、上記の中断したデータ送信を再開する過程のデータ出力装置101の動作を説明する。
まず、コンテンツ一覧取得に関しては、上記と同様のため、説明を省略する。
制御部201は、受信部202から受け取った端末103の要求が中断したデータ送信の再開であった場合の処理を説明する。本実施の形態においては、この要求は、RTSPのPLAYに、独自拡張ヘッダであるX−Restartを用い、その値を「Yes」とすることで行うものとする。この場合、端末103から以下のメッセージが送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
制御部201は、まず、URIテーブル421を参照しながら、PLAYメッセージで送られてきたURIのマルチメディアデータ(この場合はマルチメディアデータ401)の再開位置情報を、記憶部207に記憶された再開位置情報から検索する。この場合は、再開位置情報701が該当する。
制御部201は、再開位置情報701から、再開位置が先頭から50120バイト目であることを読み取り、読出部204にマルチメディアデータ401の先頭から50120バイト目から読み出すように指示を送る。読出部204は、指示を受けてデータの読み出しを開始する。
制御部201は、続いて、以下の返答メッセージを作成し、第2出力部206に指示して、端末103へ送信させる。なお、50120バイト目は、マルチメディアデータ401の先頭から8分目としている。
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
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
続いて、制御部201は、PLAYメッセージが端末103から送られてきたことから、データの送信先を端末103と判定し、第2出力部206に指示して、読出部204が読み出したデータを、端末103へ送信させる。また、制御部201は、再開位置情報701を記憶部から削除するとともに、属性情報411から、「出力中断中」の属性を削除して、属性情報411を更新する。
なお、本実施の形態の場合、制御部201は、RTSPメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末103から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
次に、端末102および端末103について説明する。
図3は、本発明の実施の形態1における端末102および端末103の構成の一例を示すブロック図である。
図3に示す端末102および端末103は、機器制御部301と、制御部302と、データ出力装置101から送信されたメッセージを受信する受信部303と、データ出力装置101に要求メッセージを送信する送信部304と、受信部303が受信したメッセージのうち、マルチメディアデータの属性を解釈して出力中断中であるかを判定する判定部305と、データ出力装置101から送信されたマルチメディアデータを受信するデータ受信部306と、受信したマルチメディアデータを復号するデータ復号部307と、ネットワーク104と接続されるネットワークインタフェース308と、復号したマルチメディアデータを表示する表示部309とを備える。
機器制御部301は、より詳細には、制御部302と、受信部303と、送信部304と、判定部305とを有する。
制御部302をより詳細に説明する。制御部302は、マイクロプロセッサ、ROM、RAMなどによって構成されている。ROM、RAMおよび図示していない情報記憶部にはマイクロプロセッサにて動作するOS、Java VMプログラム、Javaプログラムライブラリ、Javaアプリケーションプログラムが保存されている。
マイクロプロセッサは、起動時にOSを読み込んで実行する。引き続いて、Javaアプリケーション起動時に、Java VMを読み込んで実行し、必要に応じてJavaプログラムライブラリを読み込みながら、Javaアプリケーションを実行する。制御部302は、図示していないユーザインタフェース部からユーザの要求を受け、Javaアプリケーションにしたがって、受信部303と、送信部304と、判定部305と、データ受信部306と、データ復号部307と、表示部309との制御、およびこれらとの間のデータ送受信を行う。
受信部303は、ネットワークインタフェース308に接続されており、ネットワークインタフェース308に届いた該端末宛の情報を受信して、制御部302に引き渡す。受信部303は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
送信部304は、ネットワークインタフェース308に接続されており、制御部302の指示を受けて動作し、制御部302から送られたデータを、制御部302が指示した宛先へのパケットに変化して、ネットワークインタフェース308を通じて送信するものである。送信部304は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
判定部305は、制御部302の指示により、受信部303が受信したメッセージを解釈して、その中に含まれるマルチメディアデータの属性を検索して該マルチメディアデータが「出力中断中」であるか否かを判定し、その結果を制御部302に返すものである。判定部305は、代表的には、JavaライブラリもしくはJavaアプリケーションプログラムに含まれるサブルーチンである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
データ受信部306は、ネットワークインタフェース308と接続されており、制御部302の指示にしたがって、データ出力装置101から送信されたマルチメディアデータを受信して、データ復号部307に引き渡すものである。データ受信部306は、代表的には、OSやJavaライブラリが提供するソケットインタフェースもしくはソケットインタフェースを利用したプログラムである。なお、このようなソフトウェアで構成されるものに限らず、ハードウェアで構成されるものであっても良い。
データ復号部307は、制御部302の指示にしたがって、送られてきたマルチメディアデータを復号するものである。上記の通り、マルチメディアデータは、MPEG2に代表される符号化方式によって符号化されている。データ復号部307は、このデータを復号し、表示部309へ復号したデータを送信する。データ復号部307は、代表的にはハードウェアデコーダとそのドライバソフトウェアで構成されるものである。
ネットワークインタフェース308は、上記のネットワークインタフェース209と同様の構成である。
表示部309は、モニタおよびスピーカから構成されるもの、もしくは、外部のモニタ、スピーカへ映像・音声信号を送出するものである。
以下、端末102および端末103の動作について、上記の通り、端末102へデータ通信中にデータ送信を中断し、端末103へ中断したデータ送信を再開する場合を例に説明する。なお、端末102および端末103は、少なくともデータ出力装置101がネットワーク104に接続されており、マルチメディアコンテンツデータを提供するサーバであることを、既に認識しているものとする。このような、ネットワーク上の機器の発見、および、その能力の検知は、UPnP DA(Device Architecture)に定義された方法にて行えるため、詳細な説明は省略する。
まず、端末102にて、映像再生の中断までの過程における動作について説明する。
制御部302は、ユーザからの要求により、コンテンツ一覧送信要求メッセージを作成して、送信部304に指示してデータ出力装置101へ送信する。さらに、受信部303によって、データ出力装置101から送信されたコンテンツ一覧メッセージを受信し、コンテンツのタイトルなどの情報をユーザに提示する。ユーザへの提示は、表示部309を用いて行っても良く、また、図示していない他の提示部によって行っても良い。
次に、制御部302は、ユーザから提示したコンテンツのひとつを選択した再生要求を受けると、データ送信要求メッセージを作成して、送信部304に指示してデータ出力装置101へ送信する。データ送信要求メッセージの一例は、上記のRTSPにおけるPLAYメッセージである。引き続いて、受信部303により、データ出力装置101から返答メッセージを受信する。返答メッセージの一例は、上記のPLAYメッセージに対する返答である。
返答メッセージが、送信開始であれば、制御部302は、データ受信部306に指示して、データ出力装置101から送信されたマルチメディアデータを受信させ、また、データ復号部307に指示して、受信したマルチメディアデータを復号させ、さらに、表示部309に指示して、復号したマルチメディアデータを表示させる。
また、制御部302は、返答メッセージが、送信不可であれば、それをユーザに提示する。
次に、制御部302は、ユーザから再生中断の要求を受けると、データ送信中断要求メッセージを作成し、送信部304に指示してデータ出力装置101へ送信する。データ送信中断要求メッセージの一例は、上記のRTSPにおけるPAUSEメッセージである。
続いて、制御部302は、受信部303により、データ出力装置101からの返答メッセージを受信するとともに、データ受信部306にはマルチメディアデータの受信動作を、データ復号部307にはデータの復号を、表示部309にはデータの表示を、それぞれ指示して停止させる。
次に、端末103において、端末102で中断させた再生を再開する動作について説明する。
まず、制御部302は、ユーザの要求により、上記と同様の方法で、コンテンツ一覧メッセージをデータ出力装置101より取得する。
次に、制御部302は、上記と同様に、受信したコンテンツ一覧メッセージから、コンテンツのタイトルなどの情報をユーザに提示する。この際、制御部302は、判定部305に指示して、データ出力中断中のコンテンツを判定させ、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
続いて、制御部302は、ユーザから出力中断中のコンテンツの再生再開要求を受けると、該コンテンツのデータ送信再開要求メッセージを作成し、送信部304に指示してデータ出力装置101へ送信する。データ送信再開要求メッセージの一例は、上記のPLAYメッセージに拡張ヘッダX−Restartを加えたものである。
続いて、受信部303により、データ出力装置101から返答メッセージを受信する。返答メッセージの一例は、上記のX−Restartヘッダ付PLAYメッセージに対する返答である。
返答メッセージが、送信開始であれば、制御部302は、データ受信部306に指示して、データ出力装置101から送信されたマルチメディアデータを受信させ、また、データ復号部307に指示して、受信したマルチメディアデータを復号させ、さらに、表示部309に指示して、復号したマルチメディアデータを表示させる。
また、制御部302は、返答メッセージが、送信不可であれば、それをユーザに提示する。
なお、本実施の形態においては、RTSPのコマンドメッセージを送信した端末が、データ出力装置101におけるデータの出力先としているため、端末103から送信先端末である出力先の明示的な指定を省略しているが、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム105を構成するデータ出力装置101は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
また、本実施の形態にかかる端末102および端末103は、あるマルチメディアデータが、データ出力装置101において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置101に、データ出力を再開させる機器制御部301を含むものである。この構成により、例えば、端末102にて、あるマルチメディアコンテンツの視聴を中断し、端末103にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
(実施の形態1の変形例)
本発明の実施の形態1について説明してきたが、本発明は、上記の実施の形態1に限定されるものではない。以下のような場合も、本発明に含まれる。
本発明の実施の形態1について説明してきたが、本発明は、上記の実施の形態1に限定されるものではない。以下のような場合も、本発明に含まれる。
(1) データ出力装置101は、データ出力を中断するときに、この中断を識別する識別子を発行して、再開位置情報とともに記憶部207に記憶させ、コンテンツ一覧にこの識別子を含めて端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。図8に、この場合に記憶部207に記憶されるデータの一例を示す。
図8は、本発明の実施の形態1の第1の変形例における再開位置情報の一例を示す図である。図8に示すように、記憶部207には、再開位置情報801と、再開位置情報802と、再開位置情報803とが記憶されている例を示す。例えば、再開位置情報801は、識別子ID1の中断に関するものであり、ファイル名0001.m2tsのマルチメディアデータを50120バイト目から再開することを表している。
また、端末102および端末103の機器制御部301は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図5において、PAUSE要素の内容を、この識別子に設定し、PAUSE要素があり、かつその内容が記述されている場合は出力中断状態であり、PAUSE要素がないか、PAUSE要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
また、データ出力装置101が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
また、データ出力装置101は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、上記識別子は、端末からデータ出力装置101に提供されるものであっても良い。さらに、データ出力装置101は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
(2) 端末102および端末103は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置101は、再開位置情報とともに前記出力先を記憶部207に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。この場合のデータ出力中断要求の一例としては、上記実施の形態におけるPAUSEコマンドメッセージに、拡張ヘッダX―Reopen―Terminalを追加し、その値として特定端末を記述するものである。出力先としては、端末のIPアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、UPnP DAに定義された方法によって取得可能である。図9に、この場合に記憶部207に記憶されるデータの一例を示す。
図9は、本発明の実施の形態1の第2の変形例における再開位置情報一例を示す図である。図9に示すように、記憶部207には、再開位置情報901と、再開位置情報902とが記憶されている。例えば、再開位置情報901は、ファイル名0001.m2tsのマルチメディアデータの出力を50120バイト目から再開し、その出力先は端末T1であることを表している。
また、データ出力装置101は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
また、データ出力装置101は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
さらに、データ出力装置101は、データ出力中断要求とともにデータ出力再開時の出力先を受信する場合、データ出力再開時の出力先は、特定の出力先が選択されるだけでなく、候補となる出力先の一部または全部が選択できてもよい。
この場合、例えば、データ出力装置101がデータ出力中断要求とともに、出力再開時の出力先として特定の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する。また、データ出力装置101がデータ出力中断要求とともに、出力再開時の出力先として候補となる出力先の一部または全部を受信した場合、出力再開時の出力先として受信した出力先のいずれかである端末からの要求によってのみ、データ出力を再開する。
(3) データ出力装置101は、更に外部からのデータを受信するデータ受信部を備え、蓄積部203に蓄積されたデータ、および、受信部が受信したデータを送信する構成であっても良い。図10に、この場合の代表的な構成図を示す。
図10は、本発明の実施の形態1の第3の変形例に係るデータ出力装置の構成の一例を示すブロック図である。
図10に示すデータ出力装置は、データ受信部1001と、データ受信インタフェース1002と、制御部201と、受信部202と、蓄積部203と、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208と、ネットワークインタフェース209とを備える。
データ受信部1001は、データ受信インタフェース1002が受信した信号からマルチメディアデータを抽出するもので、代表的には、デジタル放送のチューナなどである。この場合、データ受信インタフェース1002はアンテナとなる。
また、図10において、制御部201と、受信部202と、蓄積部203と、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208と、ネットワークインタフェース209は、図2に示したものと同様のものであるが、制御部201は、さらに、データ受信部1001を制御するものであり、第1出力部205および第2出力部206は、データ受信部1001の出力であるマルチメディアデータを出力することも可能なものであり、また、書込部208は、データ受信部1001が受信したマルチメディアデータを蓄積部203に書き込むことが可能なものである。
データ受信部1001からのマルチメディアデータを出力中に、データ出力中断要求を受けた場合、制御部201は、出力している第1出力部205もしくは第2出力部206に出力を停止させるとともに、書込部208に指示して、引き続くデータ受信部1001からの出力であるマルチメディアデータを蓄積部203に順次書き込ませる。
さらに、該マルチメディアデータの属性情報を作成して書き込ませるとともに、該マルチメディアデータのURIを作成して、URIテーブル421を更新する。また、該マルチメディアデータを書き込むファイル名と、再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶部207に記憶させる。
以上により、該マルチメディアデータの出力再開要求を受けた場合、制御部201は、上記実施の形態にて説明したのと同様の方法によって、データ出力再開を行うことが可能である。
なお、上記においては、データ出力中断要求を受けたときに、引き続くデータを蓄積部203に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から蓄積部203に書き込んでおく構成であっても良い。この場合、出力再開位置情報は、上記実施の形態と同様の方法によって作成することが可能である。
また、データ出力装置101は、データ受信部1001の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
(4) データ出力装置101は、さらに、マルチメディアデータを復号するデータ復号部と、復号されたマルチメディアデータを表示する表示部とを備えた構成であっても良い。図11に、この場合の代表的な構成図を示す。
図11は、本発明の実施の形態1の第4の変形例におけるデータ出力装置の構成を示すブロック図である。図11に示すデータ出力装置は、制御部201と、受信部202と、蓄積部203と、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208と、ネットワークインタフェース209と、データ復号部1101と、表示部1102とを備える。
制御部201と、受信部202と、蓄積部203と、読出部204と、第1出力部205と、第2出力部206と、記憶部207と、書込部208と、ネットワークインタフェース209とは、図2に示したものと同様のものであるが、制御部201は、さらに、データ復号部1101および表示部1102の制御も行うことのみが異なる。データ復号部1101は、端末102および端末103におけるデータ復号部307と同様のものであり、表示部1102は、表示部309と同様のものである。
また、図11においては、第1出力部205がデータ復号部1101と接続されている。この構成においても、上記実施の形態と同様の処理により、データ復号部1101へのデータ出力である第1出力部205からの出力を中断し、別の第2出力部206からの出力として該データ出力を行うこと、および、第2出力部206へのデータ出力を中断し、データ復号部1101への出力である第1出力部205からの出力として再開すること、などが可能となる。
なお、上記実施の形態にも記載したが、受信部202は、赤外線通信などによる受信を併せ持ってもよく、制御部201は、ネットワーク104以外から送られる要求にしたがっても、各部を制御して動作させるものであっても良い。この場合、例えば、コンテンツ一覧や応答メッセージなどは、第1出力部205から出力するのではなく、適切なメッセージに変換されて、例えば表示部1102に表示するなどして、ユーザに提示される。
(5) 上記実施の形態においては、データ出力装置101が再開位置情報を記憶することとしたが、ネットワーク上の第3の機器が記憶しておく構成であっても良い。図12に、この場合のマルチメディア配信システムの構成図を示す。
図12は、本発明の実施の形態1の第5の変形例におけるマルチメディア配信システムの構成の一例を示す図である。
図12に示すマルチメディア配信システム1206は、データ出力装置1201と、ネットワークを通じてデータ出力装置および端末を制御する制御装置1202と、第1の端末1203と、第2の端末1204と、ネットワーク1205とを備える。データ出力装置1201、制御装置1202、端末1203および端末1204は、ネットワーク1205に接続されており、ネットワーク1205を介して相互に通信可能である。
データ出力装置1201は、ネットワーク1205を通じて送信された、制御装置1202、端末1203および端末1204からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク1205を通じて制御装置1202へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク1205を通じて端末1203および端末1204へ送信するものである。また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
また、データ出力装置1201は、実行中のデータ出力に対して、制御装置1202もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはURIとを、制御装置1202へネットワーク1205を通じて送信するものである。
なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはURIを送信しなくとも良い。
制御装置1202は、ユーザの要求によって動作するものである。
制御装置1202は、ネットワーク1205を通じて、端末1203および端末1204を制御し、データ出力装置1201からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はUPnP AVに定義された方法により可能であるため、詳細は省略する。
また、制御装置1202は、データ出力装置1201へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末1203、端末1204もしくは制御装置1202自身の表示部によって、ユーザに提示する。また、ユーザから再生中断の要求を受けたとき、制御装置1202は、該再生を実行中の端末1203もしくは端末1204を制御して、データ出力装置1201へデータ送信中断要求を送信させるとともに、再生を中断させる。
さらに、制御装置1202は、データ出力装置1201と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはURIといった、該データを特定できる情報を受信し、再開位置情報として制御装置1202内に記憶する。
再開位置情報は、上記の実施の形態1および変形例に係る再開位置情報のいずれかと同様のものを用いることが可能である。
なお、該マルチメディアデータのURIは、制御装置1202が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。
制御装置1202は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置1201から受信させて再生させる。
端末1203および端末1204は、制御装置1202からネットワーク1205を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
ネットワーク1205は、上記の実施の形態1におけるネットワーク104と同様のものである。
以上説明したとおり、本構成のマルチメディア配信システム1206では、制御装置1202が再開位置情報を管理することにより、例えば、端末1203で行っていたマルチメディアコンテンツの再生を中断し、端末1204で再開するといったことが可能となる。
なお、ここでは、制御装置1202は、データ出力装置1201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置1201が再開位置情報を作成し、制御装置1202はそれを受信して保存する構成であっても良い。
また、ここでは、制御装置1202は、データ出力装置1201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末1203もしくは端末1204から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
また、ここでは、制御装置1202が、端末1203もしくは端末1204に要求を発行し、端末からデータ出力装置1201へデータ送信要求を送信する構成としたが、制御装置1202が、データ出力装置1201へ端末1203もしくは端末1204へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置1201からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、FTP(File Transfer Protocol)によって行うことが可能である。
また、ここでは、ネットワーク上の独立の制御装置1202が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
(6) 上記の実施の形態1においては、データ伝送のプロトコルとしてRTP/RTSPを用いているが、HTTP(HyperText Transport Protocol)など、他のプロトコルを用いて行っても良い。HTTPを用いる場合のデータ出力中断要求は、HTTP−GETのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、HTTPを用いる場合のデータ出力再開要求は、HTTP−GETに上記のX−Restartのような独自拡張ヘッダを用いて行っても良い。
(7) 上記の実施の形態1においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。
また、送信再開位置は、コンテンツのシーンの切り替わりなど、データに含まれるコンテンツを参照して、再開位置情報を作成されてもよい。例えば、コンテンツを中断した直前のコンテンツのシーンの切り替わり位置を再開位置情報とすることが具体例として挙げられる。
さらに、マルチメディアデータがMPEG2符号化データの場合、Iフレーム、MPEG2−TSにおけるPAT、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
(8) 上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(9) 上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(10) 本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(11) 上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(実施の形態2)
図13は、本発明の実施の形態2におけるマルチメディア配信システムの構成の一例を示す図である。
図13は、本発明の実施の形態2におけるマルチメディア配信システムの構成の一例を示す図である。
図13に示すマルチメディア配信システム1305は、データ出力装置1301と、第1の端末1302と、第2の端末1303と、ネットワーク1304とを備える。データ出力装置1301、端末1302および端末1303は、ネットワーク1304に接続されており、ネットワーク1304を介して相互に通信可能である。
本実施の形態におけるデータ出力装置1301は、ネットワークインタフェースと、マルチメディアデータを蓄積する蓄積部を備えた、デジタル放送を受信するCATVSTB(Set Top Box)である。
データ出力装置1301は、受信したデジタル放送コンテンツのマルチメディアデータを、蓄積部に蓄積する。また、ネットワークインタフェースを通して、ネットワーク1304に接続されている。そして、ネットワーク1304を通じて送信された、端末1302および端末1303からの要求を受信する。そして、要求に応じて受信したデジタル放送のコンテンツ、もしくは、蓄積しているコンテンツごとの情報や属性もしくはマルチメディアデータを、ネットワーク1304を通じて端末1302および端末1303へ送信するものである。
データ出力装置1301は、実行中の蓄積したコンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置を、該データのファイル名もしくはURI(Uniform Resource Identifier)と組み合わせて再開位置情報として装置内部に記憶するとともに、該データに「出力中断中」といった属性を付与する。
また、実行中の受信したデジタル放送コンテンツのデータ出力に対して、送信先端末より中断要求を受信すると、以降のデータを蓄積部に蓄積する。
さらに、該マルチメディアデータの属性とURIを作成する。該属性は「出力中断中」という情報が含まれている。そして、そのファイル名もしくはURIと、蓄積したファイルの先頭位置を再開位置情報として装置内部に記憶する。
さらに、データ出力装置1301は、端末からデータ送信再開要求を受信したときに、記憶しておいた再開位置情報を参照し、指定された端末へ、未送信のデータの先頭からデータ送信を再開するものである。
端末1302および端末1303は、ユーザの要求により、データ出力装置1301へマルチメディアデータもしくはコンテンツの属性の送信要求を、ネットワーク1304を通じて送信する。そして、コンテンツの属性を受信した場合は、必要に応じてユーザに提示し、マルチメディアデータを受信した場合は、そのデータを再生して表示するものである。端末1302および端末1303は、コンテンツの属性から、そのコンテンツが「出力中断中」であるかの判定を行えるものであり、ユーザの要求に応じて、データ送信再開の要求を発行するものである。
ネットワーク1304は、家庭内に施設されたホームネットワークであり、イーサネット、無線LANなどによって構成されたIPネットワークである。
以下、データ出力装置1301と端末1302および端末1303の間の通信およびそれぞれの動作について説明する。
マルチメディアデータ送信の制御情報の通信は、RTSPを用いて行う。まず、データ出力装置101と端末102との間の通信で、マルチメディアデータの送信から中断までを説明し、続いて、データ出力装置1301と端末1303との間の通信で、端末1302へ送信途中に中断したマルチメディアデータの送信を再開する、ことを例にとって説明する。
まず、端末1302へのデータ送信を中断するまでの過程における通信とそれぞれの動作を説明する。
データ出力装置1301および端末1302は、それぞれ、ネットワーク1304に接続された装置を検索し、各装置がどのような機能を持っているかを取得する。この通信は、UPnP DA(Device Architecture)で定義されている方法により行えるため、詳細な説明は省略する。
これにより、データ出力装置1301は、端末1302がネットワーク1304に接続されていて、ネットワーク1304よりマルチメディアデータを受信して再生するプレーヤであることを認識できる。また、端末1302は、データ出力装置1301がネットワーク1304に接続されているマルチメディアサーバであることを認識できる。
まず、端末1302は、データ出力装置1301へ蓄積しているコンテンツ一覧もしくはEPGの取得要求を発行する。データ出力装置1301は、それに応じて、蓄積しているコンテンツの一覧を作成もしくは受信したEPGデータを通信する形式に変換して、端末1302へ送信する。
コンテンツ一覧とは、各コンテンツに対し、少なくともコンテンツのタイトル、コンテンツにアクセスするためのURIとを含んでいるものである。また、マルチメディアデータの出力を中断している場合は、その属性も含まれているものである。その他、必要に応じて、各マルチメディアデータごとにその属性情報を読み出し、その内容を付加して送信する。
また、EPGデータは、少なくとも各番組のタイトルと、各番組もしくはそれを放送するチャンネルにアクセスするためのURIとを含んでいるものである。コンテンツ一覧もしくはEPGの取得要求とそれに対する返信のプロトコル、および、コンテンツ一覧およびEPGのデータフォーマットは、UPnP AVに規定されている方法を利用できるため、詳細は省略する。ただし、マルチメディアデータ出力中断の属性は、独自にこのフォーマットを拡張したものを用いる。
コンテンツ一覧のフォーマットは、XMLによって定義されているため、XML Namespaceを用いることにより、矛盾なくフォーマットを拡張可能である。例えば、独自のネームスペースNaを使った要素PAUSEを各コンテンツの情報に追加し、このPAUSE要素の内容が「Yes」の場合は、出力中断中であることを表すことと出来る。
次に、端末1302は、受け取ったコンテンツ一覧もしくはEPGデータから、コンテンツのタイトルなどの情報をユーザに提示する。さらに、ユーザからそのうちのひとつを選択した再生要求を受け付けると、端末1302は、マルチメディアデータの送信要求を発行する。例えば、コンテンツのURIがrtsp://192.168.0.3/AVData/0001.m2tsのデータを、該マルチメディアデータの先頭から送信する要求を発行するの場合、RTSPのSETUPメッセージに続いて、以下のPLAYメッセージが端末1302からデータ出力装置1301へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
CSeq: 2
Session: 12345
Range: smtpe=0:00:00
上記PLAYメッセージを受け取ったデータ出力装置1301は、URIに示されたマルチメディアデータが蓄積部に蓄積されたコンテンツの場合は、そのマルチメディアデータを蓄積部から読み出す。また、URIがチャンネルを示している場合は、チューナによってそのチャンネルにチューニングを行う。そして、以下の返答メッセージを作成して、端末1302へ送信する。
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
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
続いて、データ出力装置1301は、蓄積部から読み出したマルチメディアデータもしくはチューナによってチューニングし取得したマルチメディアデータを、順次、端末1302へ送信する。データ送信はRTPに規定された方法で行われるため、詳細は省略する。
次に、端末1302は、ユーザからの指示により、再生中断要求を受け付けると、データ出力装置1301へデータ送信中断要求を発行する。データ送信中断はPAUSEコマンドを用いて行うことが出来る。これは、以下のメッセージが端末1302からデータ出力装置1301へ送信される。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
データ出力装置1301は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末1302へ送信する。
CSeq: 3
Session: 12345
データ出力装置1301は、上記のPAUSEコマンドを受信すると、データ送信を停止させて、以下の返答メッセージを作成し、端末1302へ送信する。
RTSP/1.0 200 OK
CSeq: 3
Session: 12345
CSeq: 3
Session: 12345
また、データ出力装置1301は、送信していたコンテンツが蓄積部に蓄積されていたものの場合、該コンテンツの属性情報に、出力中断中の属性を追加する。データ出力装置1301は、さらに、送信済データ数から、データ送信の再開時の先頭となる送信再開位置を求める。これは、例えば、先頭から50119バイトのデータを送信した場合は、先頭から50120バイト目となる。
データ出力装置1301は、この送信再開位置とマルチメディアデータを識別するもの、例えばコンテンツの識別子を組として、再開位置情報を作成し、記憶する。
なお、本実施の形態においては、送信済データ数を基に送信再開位置を求めたが、例えば、蓄積部からの、読出済データ数を基に求めるものであっても良い。
また、データ出力装置1301は、送信していたコンテンツがチューナから取得したマルチメディアデータであった場合、引き続くマルチメディアデータを蓄積部に順次書き込む。さらに、該マルチメディアデータの属性情報を作成して蓄積部に書き込むとともに、該マルチメディアデータのURIを作成し、端末からアクセス可能とする。また、該マルチメディアデータに識別子を発行し、該識別子と再開位置である該ファイルの先頭とから再開位置情報を作成し、記憶する。
端末1302は、ユーザから終了の要求を受け付けると、セッションを切断するTEARDOWNというコマンドメッセージを送信し、データ出力装置1301はこれを受けて返答メッセージを送信し、通信が終了する。本実施の形態では、TEARDOWNを行っても、上記再開位置情報および属性情報は更新しない。
なお、より明確に後に再開する中断であることを表すために、PAUSEもしくはTEARDOWNを拡張して、再開位置情報の作成・保持および属性情報の更新・保持を要求する構成であっても良い。例えば、独自拡張ヘッダであるX−Keep−Pause−Statusを用い、その値が「Yes」の場合に限り、再開位置情報を作成・保持および属性情報を更新・保持することとすれば、上記の端末1302からデータ出力装置1301へ送られるPAUSEメッセージは以下のようになる。
PAUSE rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
CSeq: 3
Session: 12345
X-Keep-Pause-Status: Yes
この場合、データ出力装置1301は、受信したPAUSEメッセージに、X−Keep−Pause−Statusヘッダがあり、かつその値が「Yes」であるので、再開位置情報を作成して保持し、また、属性情報を更新して保持する。X−Keep−Pause−Statusヘッダがないか、あっても値が「Yes」以外の場合は、データ出力装置1301は、再開位置情報を作成せず、また、属性情報を更新しない。
次に、端末1303との通信において、上記の中断したデータ送信を再開する過程の通信およびデータ出力装置1301と端末1303の動作を説明する。
まず、データ出力装置1301と端末1303における、ネットワークに接続された装置の検索および端末1303によるコンテンツ一覧もしくはEPGの取得に関しては、上記と同様のため、説明を省略する。
端末1303は、データ出力装置1301から受け取ったコンテンツ一覧もしくはEPGをユーザに提示する。コンテンツ一覧提示の際に、端末1303は、データ出力中断中のコンテンツを判定し、その情報もともに提示する。データ出力中断中の提示は、例えば、コンテンツのタイトルのところにマークをつける、コンテンツのタイトルを別の色で表示する、別途中断中の一覧を作って提示する、などの方法により行える。
端末1303は、ユーザが「データ出力中断中」のコンテンツ再生の再開要求を受け付けると、データ出力装置1301へ、中断したデータ送信の再開要求を発行する。この要求は、RTSPのPLAYメッセージに、独自拡張ヘッダであるX−Restartを用い、その値を「Yes」とすることで行うものとする。この場合、端末1303から以下のメッセージがデータ出力装置1301へ送信される。
PLAY rtsp://192.168.0.3/AVData/0001.m2ts RTSP/1.0
CSeq: 2
Session: 54321
X-Restart: Yes
CSeq: 2
Session: 54321
X-Restart: Yes
データ出力装置1301では、まず、PLAYメッセージで送られてきたURIのマルチメディアデータの再開位置情報を、記憶している再開位置情報から検索する。データ出力装置は、再開位置情報から、送信を再開するデータ位置を読み取り、蓄積部から該マルチメディアデータを読み込む。
データ出力装置1301は、続いて、以下の返答メッセージを作成し、端末1303へ送信する。なお、再開位置は、該マルチメディアデータの先頭から8分目としている。
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
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
続いて、データ出力装置1301は、PLAYメッセージが端末1303から送られてきたことから、データの送信先を端末1303と判定し、読み出したデータを、順次、端末1303へ送信する。また、データ出力装置1301は、該当する再開位置情報を装置内部から削除するとともに、該マルチメディアデータの属性情報から、「出力中断中」の属性を削除して、属性情報を更新する。
なお、本実施の形態の場合、データ出力装置1301は、RTSPメッセージが送られてきた端末を、送信先端末と判定することとしたため、端末1303から送信先端末である出力先の明示的な指定を省略している。この場合、出力先は受信パケットやソケットインタフェースから得ることができる。また、UPnP AVに規定されている方法、もしくは、PLAYメッセージに、独自拡張を加えることなどにより、送信先を指定する構成であっても良い。
以上のように、本発明のデータ出力装置1301、端末1302、端末1303、およびマルチメディア配信システム1305においては、例えば端末1302にて受信中だったデータの送信を中断しても、別の端末1303において、的確にデータ通信を再開することが可能となる。
以下、本発明のマルチメディア配信システム1305を構成する、データ出力装置1301、端末1302および端末1303について、更に詳細に説明する。ここでは、端末1302へデータ通信中にデータ送信を中断し、端末1303へ中断したデータ送信を再開する場合を例に説明するが、他の場合も同様である。
また、RTSPサーバは決まったポート番号で待ち受けしていることとする。このポート番号は、IANA(Internet Assigned Numbers Authority)で決められた554番を用いても良いし、ユーザがデータ出力装置1301、端末1302および端末1303に設定したものであっても良い。また、後述するメソッドにポート番号を指定する引数を追加する構成であっても良い。
まず、データ出力装置1301について説明する。
図14は、本発明の実施の形態2におけるデータ出力装置1301の構成の一例を示すブロック図である。
本図に示すデータ出力装置1301は、入力部1401と、第1メモリ1402と、第2メモリ1403と、受信部1404と、多重分離部1405と、デスクランブラ1406と、TSデコーダ1407と、映像出力部1408と、音声出力部1409と、TSマルチプレクサ1410と、ネットワーク部1411と、CPU1412とを備える。
入力部1401は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネル選択等の指示を受け付ける。
図15は、フロントパネルで実施の形態2に係る入力部1401を構成した場合の外観の一例を示す図である。
本図に示すフロントパネル1500は、上カーソルボタン1501、下カーソルボタン1502、左カーソルボタン1503、右カーソルボタン1504、OKボタン1505、取消ボタン1506、EPGボタン1507、および、シアターボタン1508の8つのボタンを備える。ユーザがボタンを押下すると、押下されたボタンの識別子が、CPU1412に通知される。
第1メモリ1402は、RAM等で構成され、CPU1412が一時的にデータを保存する際に使用される。
第2メモリ1403は、フラッシュメモリ、ハードディスク等で電源が停止しても情報を保持可能なデバイスで構成され、CPU1412が実行するプログラムを保存する。第2メモリは、SDメモリーカード等の取り外し可能な記憶デバイスを用いていてもよい。
受信部1404は、CATV局からのケーブルに接続され放送波を受信し、CPU1412から指定された周波数にチューニングし、MPEGトラスポートストリームを抽出して、多重分離部1405に引き渡す。
多重分離部1405は、受信部1404からMPEGトラスポートストリームを受け取り、CPU1412から指定された情報を抽出しCPU1412に引き渡す。またMPEGトラスポートストリームをそのままデスクランブラ1406に引き渡す。
デスクランブラ1406は、多重分離部1405から与えられたスクランブルされているMPEGトラスポートストリームをデスクランブル(=復号)し、TSデコーダ1407に引き渡す。デスクランブラ1406は、データ出力装置1301に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているCableCARD(TM)でも実施可能である。CableCARDの仕様は米国CableLabsが策定したCableCARD Interface Specificationに記載されており、ここでは説明を省略する。
TSデコーダ1407は、CPU1412から音声データ、映像データ、PSI/SI情報などのセクションデータの識別子を受け取る。さらに、デスクランブラ1406から受け取ったデスクランブルされたストリームから、受け取った音声データ、映像データ、PSI/SI情報などのセクションデータの識別子に対応するデータを抽出する、抽出した映像データを映像出力部1408に、音声データを音声出力部1409に引き渡す。また、その両方と、セクションデータを、TSマルチプレクサ1410に引き渡す。
映像出力部1408は映像出力端子を含み、受け取った映像データを端子に対応した映像データに変換して出力する。端子の例としては、コンポジットケーブル端子などがある。
音声出力部1409は音声出力端子を含み、受け取った音声データを端子に対応した音声データに変換して出力する。端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。
TSマルチプレクサ1410は、受け取った映像データ、音声データ、セクションデータからMPEG2トランスポートストリームを構成し、該MPEG2トランスポートストリームをネットワーク部1411に引き渡す。PSI/SI情報は必要に応じて書き換えられる。
ネットワーク部1411は、ネットワークインタフェースを含み、CPU1412から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、IPネットワークで規定されたパケットに変換して、CPU1412へ引き渡す。
CPU1412は、第2メモリ1403が記憶するプログラムを実行することで、受信部1404と、多重分離部1405と、デスクランブラ1406と、TSデコーダ1407と、TSマルチプレクサ1410と、ネットワーク部1411とを制御する。
図16は、本発明の実施の形態2におけるデータ出力装置1301が保持し、実行するプログラムの構成の一例を示す図である。すなわち、本図は、データ出力装置1301の第2メモリ1403に記憶され、CPU1412に実行されるプログラムの構成の一例を示す。
プログラム1600は、複数のサブプログラムで構成され、具体的には、OS1601と、EPG1602と、JavaVM1603と、サービスマネージャ1604と、Javaライブラリ1605とで構成される。
OS1601は、データ出力装置1301の電源が投入されると、CPU1412が起動するサブプログラムである。OSは、オペレーティングシステムの略であり、Linux(登録商標)等が一例である。
OS1601は、他のサブプログラムを平行して実行するカーネル1601a及びライブラリ1601bで構成される公知の技術の総称であり、詳細な説明は省略する。
本実施の形態においては、OS1601のカーネル1601aは、EPG1602とJavaVM1603をサブプログラムとして実行する。また、ライブラリ1601bは、これらサブプログラムに対して、データ出力装置1301が備える各部を制御するための複数の機能を提供する。
本実施の形態のライブラリ1601bは、機能として例えば、チューナ1601b1、限定解除1601b2、AV再生1601b3、NET1601b4を含む。
チューナ1601b1は、他のサブプログラムやJavaライブラリ1605のTuner1605cから周波数を含むチューニング情報を受け取り、受信部1404に引き渡す。
受信部1404は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部1405に引き渡すことができる。この結果、他のサブプログラム及びJavaライブラリ1605のTuner1605cはライブラリ1601bを通して受信部1404を制御することができる。
限定解除1601b2は、他のサブプログラムやJavaライブラリ1605のCA1605dから情報を受け取り、デスクランブラ1406に引き渡す。
AV再生1601b3は、他のサブプログラムやJavaライブラリ1605のJMF1605aから、音声のパケットIDと映像のパケットIDを受け取る。受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ1407に与える。
この結果、TSデコーダ1407は与えられたパケットIDに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
NET1601b4は、他のサブプログラムやJavaライブラリ1605のネットワークライブラリ1605eから受け取ったデータを、IPネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。アプリケーション層より下のプロトコルとは、例えばTCPパケット、UDPパケット、IPパケットなどである。
これをネットワーク部1411に引き渡すことで、ネットワーク1304を介して他の機器にメッセージおよびデータを送信する。また、ネットワーク1304を介して他の機器からメッセージを受信したときに、他のサブプログラムやJavaライブラリ1605のネットワークライブラリ1605eに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、HTTP(Hypertext Transfer Protocol)やRTPなどである。
EPG1602は、ユーザに番組一覧を表示及び、ユーザからの入力を受け付ける番組表示部1602aと、チャンネル選局を行う再生部1602bで構成される。
ここで、EPGはElectric Program Guideの略である。EPG1602は、データ出力装置1301の電源が投入されると、カーネル1601aによって起動される。起動されたEPG1602の内部では、番組表示部1602aと再生部1602bが同時に起動される。
番組表示部1602aは起動されると、データ出力装置1301の入力部1401を通して、ユーザからの入力を待つ。
ここで、入力部1401が図15で示されるフロントパネルで構成されている場合、ユーザが、入力部1401のEPGボタン1507を押下すると、EPGボタンの識別子がCPU1412に通知される。CPU1412上で動作するサブプログラムであるEPG1602の番組表示部1602aは、この識別子を受け取り、番組情報表示データを作成し、図示していないモニタ出力部によりモニタに出力する。モニタは、データ出力装置1301が備えるものであっても良いし、データ出力装置1301とコンポジットケーブルやHDMIケーブルなどで接続されたテレビであっても良い。モニタは、受信した番組情報表示データを表示する。
図17(a)および(b)は、それぞれ、本発明の実施の形態2に係るモニタに表示された番組表の例を示す図である。
図17(a)を参照して、モニタに表示された番組表1710には、格子状に番組情報が表示されている。列1701には、時刻情報が表示されている。列1702には、チャンネル名「チャンネル1」と、列1701の時刻に対応する時間帯に放映される番組が表示されている。
「チャンネル1」では、9:00〜10:30に番組「ニュース9」が放映され、10:30〜12:00は「映画AAA」が放映されることを表す。列1703も列1702同様、チャンネル名「チャンネル2」と、列1701の時刻に対応する時間帯に放映される番組が表示されている。9:00〜11:00に番組「映画BBB」が放映され、11:00〜12:00は「サッカー」が放映される。
カーソル530は、フロントパネル1500の左カーソル1503と右カーソル1504を押下すると移動する。図17(a)の状態で、右カーソル1504を押下すると、カーソル1730は右に移動し、図17(b)のようになる。また、図17(b)の状態で、左カーソル1503を押下すると、カーソル1730は左に移動し、図17(a)のようになる。
図17(a)の状態で、フロントパネル1500のOKボタン1505が押下されると、番組表示部1602aは、「チャンネル1」の識別子を再生部1602bに通知する。図17(b)の状態で、フロントパネル1500のOKボタン1505が押下されると、番組表示部1602aは、「チャンネル2」の識別子を再生部1602bに通知する。
また、番組表示部1602aは、表示する番組情報を、多重分離部1405を通して定期的に、第2メモリ1403に記憶しておく。一般的に、放送局からの番組情報の取得は時間が掛かる。フロントパネル1500のEPGボタン1507が押下された時、第2メモリ1403に予め保存された番組情報を表示することで、素早く番組表を表示することができる。
図18は、本発明の実施の形態2に係る第2メモリ1403に記憶されている番組情報の一例を示す図である。番組情報は表形式で格納されている。
列1801は、チャンネルの識別子である。列1802は、番組名である。列1803は番組の放送開始時間、列1804は放送終了時間である。列1805は、番組の音声種別を表しており、モノラル音声、ステレオ音声、5.1チャンネル音声をそれぞれ「モノラル」、「ステレオ」、「5.1」と表記している。列1806は、番組の種別を表している。通常番組は空欄であり、「映画」は映画、「スポ」はスポーツ番組を表す。
行1811〜1814の各行は、それぞれひとつの番組情報を表す。この例では、ひとつの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別の組となる。
例えば、行1811はチャンネル識別子が「1」、番組名が「ニュース9」、放送開始時間が「9:00」、放送終了時間が「10:30」、音声種別が「モノラル」、番組の種別は「通常」を含む組となっている。
再生部1602bは、受け取ったチャンネルの識別子を用いて、チャンネルを再生する。すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第2メモリ1403に予め格納されている。
図19は、本発明の実施の形態2に係る第2メモリ1403に格納されているチャンネル情報の一例を示す図である。
チャンネル情報は表形式で格納されている。列1901は、チャンネルの識別子である。列1902は、チャンネル名である。列1903はチューニング情報である。ここで、チューニング情報は周波数や転送レート、符号化率などを含み、受信部1404に与える値である。列1904はプログラムナンバーである。
プログラムナンバーとは、MPEG2規格で規定されているPMTを識別するための番号である。PMTに関しては、後述する。
行1911〜1914の各行は、各チャンネルの識別子、チャンネル名、チューニング情報の組となる。行1911は識別子が「1」、チャンネル名が「チャンネル1」、チューニング情報に周波数「150MHz」、プログラムナンバーが「101」を含む組となっている。再生部1602bは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ1604に引き渡す。
また、再生部1602bは、再生中に、ユーザがフロントパネル1500の上カーソル1501と下カーソル1502を押下すると、入力部1401からCPU1412を通して、押下された通知を受け取り、再生しているチャンネルを変更する。
上カーソル1501を押下すると、現在再生中のチャンネルよりもひとつ小さいチャンネル識別子を持つチャンネルを再生し、また下カーソル1502を押下すると、現在再生中のチャンネルよりもひとつ大きいチャンネル識別子を持つチャンネルを再生する。
まず、再生部1602bは、第2メモリ1403に現在再生中のチャンネルの識別子を記憶する。
図20(a)(b)及び(c)は、それぞれ、本発明の実施の形態2に係る第2メモリ1403に格納されているチャンネルの識別子の例を示す図である。
図20(a)では識別子「3」が記憶されており、図19を参照し、チャンネル名「TV 3」のチャンネルが再生中であることを示す。
図20(a)の状態で、ユーザが上カーソル1501を押下すると再生部1602bは、図19のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ小さい識別子を持つチャンネルであるチャンネル名「チャンネル2」のチャンネルに再生を切り変えるため、サービスマネージャ1604にチャンネル名「チャンネル2」の識別子「2」を引き渡す。同時に、第2メモリ1403に記憶されているチャンネル識別子「2」に書き換える。
図20(b)は、チャンネル識別子が書き換えられた状態を表す。また、図20(a)の状態で、ユーザが下カーソル1502を押下すると再生部1602bは、図19のチャンネル情報を参照し、表中で現在再生中のチャンネルよりもひとつ大きい識別子を持つチャンネルであるチャンネル名「TV Japan」のチャンネルに再生を切り変えるため、サービスマネージャ1604にチャンネル名「TV Japan」の識別子「4」を引き渡す。同時に、第2メモリ1403に記憶されているチャンネル識別子「4」に書き換える。
図20(c)は、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第2メモリ1403に記憶されているので、データ出力装置1301の電源が切られた際も保存されている。
さらに再生部1602bは、データ出力装置1301の電源が投入された際に、起動されると、第2メモリ1403に記憶されているチャンネル識別子を読み出す。そして、そのチャンネル識別子をサービスマネージャに引渡す。これにより、データ出力装置1301は、電源投入時に前回の稼動時に再生されていた最後のチャンネルの再生を開始することができる。
JavaVM1603は、Java(TM)言語で記述されたプログラムを逐次解析し実行するJavaバーチャルマシンである。Java言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Javaバーチャルマシンは、このバイトコードを実行するインタープリタである。
また、一部のJavaバーチャルマシンは、バイトコードをCPU1412が理解可能な実行形式に翻訳してから、CPU1412に引渡し、実行することも行う。
JavaVM1603は、カーネル1601aに実行するJavaプログラムを指定され起動される。本実施の形態では、カーネル1601aは、実行するJavaプログラムとしてサービスマネージャ1604を指定する。
Java言語の詳細は、書籍「Java Language Specification(ISBN 0−201−63451−1)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
また、JavaVM自体の詳細な動作などは、「Java Virtual Machine Specification(ISBN 0−201−63451―X)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ1604は、Java言語で書かれたJavaプログラムであり、JavaVM1603によって逐次実行される。サービスマネージャ1604は、JNI(Java Native Interface)を通して、Java言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。JNIに関しても、書籍「Java Native Interface」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
まず、デジタル放送を受信し、受信したマルチメディアデータを再生する場合の処理について説明する。
サービスマネージャ1604は、JNIを通して、再生部1602bよりチャンネルの識別子を受け取る。
サービスマネージャ1604は、最初にJavaライブラリ1605の中にあるTuner1605cに、チャンネルの識別子を引き渡し、チューニングを依頼する。Tuner1605cは、第2メモリ1403が記憶するチャンネル情報を参照し、チューニング情報を獲得する。
今、サービスマネージャ1604がチャンネルの識別子「2」をTuner1605cに引き渡すと、Tuner1605cは、図19の行1912を参照して、対応するチューニング情報「156MHz,」を獲得する。Tuner1605cは、OS1601のライブラリ1601bのチューナ1601b1を通して、受信部1404にチューニング情報を引き渡す。
受信部1404は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部1405に引き渡す。
次にサービスマネージャ1604は、Javaライブラリ1605の中にあるCA1605dにデスクランブルを依頼する。CA1605dは、OS1601のライブラリ1601bの限定解除1601b2を通して復号に必要な情報をデスクランブラ1406に与える。
デスクランブラ1406は、与えられた情報を元に、受信部1404から与えられた信号を復号しTSデコーダ1407に引き渡す。
サービスマネージャ1604は、Javaライブラリ1605の中にあるJMF1605aにチャンネルの識別子を与え、映像・音声の再生を依頼する。
まず、最初にJMF1605aは、再生すべき映像と音声を特定するためのパケットIDをPAT、PMTから取得する。PATやPMTはMPEG2規格で規定されている、MPEG2トランスポートストリーム内の番組構成を表現するテーブルであり、MPEG2トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。詳細は規格書を参照されたい。ここでは、概略のみ説明する。
PATは、Program Association Tableの略で、パケットID「0」のパケットに格納され送信されている。JMF1605aは、PATを取得するため、OS1601のライブラリ1601bを通して、多重分離部1405にパケットID「0」を指定する。多重分離部1405がパケットID「0」でフィルタリングを行い、CPU1412に引き渡すことでJMF1605aは、PATのパケットを収集する。
図21は、収集したPATの情報の一例を模式的に示す図である。
列2101は、プログラムナンバーである。列2102は、パケットIDである。列2102のパケットIDはPMTを取得するために用いられる。
行2111〜1213は、チャンネルのプログラムナンバーと対応するパケットIDの組である。ここでは、三つのチャンネルが定義されている。行2111はプログラムナンバー「101」とパケットID「501」の組が定義されている。
今、JMF1605aに与えられたチャンネルの識別子が「2」とすると、JMF1605aは、図21の行2112を参照して、対応するプログラムナンバー「102」を獲得し、次に、図21のPATの行2112を参照し、プログラムナンバー「102」に対応するパケットID「502」を獲得する。
PMTは、Program Map Tableの略で、PATで規定されたパケットIDのパケットに格納され送信されている。JMF1605aは、PMTを取得するため、OS1601のライブラリ1601bを通して、多重分離部1405にパケットIDを指定する。ここで、指定するパケットIDは「502」とする。多重分離部1405がパケットID「502」でフィルタリングを行い、CPU1412に引き渡すことでJMF1605aは、PMTのパケットを収集する。
図22は、収集したPMTの情報の一例を模式的に示す図である。
列2201は、ストリーム種別であり。列2202は、パケットIDである。列2202で指定されるパケットIDのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列2203は補足情報である。
行2211〜2214はエレメンタリ−ストリームと呼ばれる、パケットIDと送信している情報の種別の組である。
行2211は、ストリーム種別「音声」とパケットID「5011」の組であり、パケットID「5011」のペイロードには音声が格納されていることを表す。JMF1605aは、PMTから再生する映像と音声のパケットIDを獲得する。図22を参照して、JMF1605aは、行2211から音声のパケットID「5011」を、行2212から映像のパケットID「5012」を獲得する。
次に、JMF1605aは、OS1601のライブラリ1601bのAV再生1601b3に獲得した音声のパケットIDと映像のパケットIDを引き渡す。これを受けて、AV再生1601b3は、受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ1407に与える。TSデコーダ1407は与えられたパケットIDでフィルタリングを行う。
ここではパケットID「5011」のパケットを音声出力部1409に、パケットID「5012」のパケットを映像出力部1408に、それぞれ引き渡す。
音声出力部1409は、与えられたパケットを適宜変換し(例えばデジタル−アナログ変換)出力する。
映像出力部1408は、与えられたパケットを適宜変換し(例えばデジタル−アナログ変換)出力する。
最後にサービスマネージャ1604は、Javaライブラリ1605の中にあるAM1605bにチャンネルの識別子を与え、データ放送再生を依頼する。
ここで、データ放送再生とは、MPEG2トランスポートストリームに含まれるJavaプログラムを抽出し、JavaVM1603に実行させることである。MPEG2トランスポートストリームにJavaプログラムを埋め込む方法は、MPEG規格書 ISO/IEC13818−6に記述されたDSMCCという方式を用いる。ここではDSMCCの詳細な説明は省略する。DSMCC方式は、MPEG2トランスポートストリームのパケットの中に、コンピュータで使用されているディレクトリやファイルで構成されるファイルシステムをエンコードする方法を規定している。
また、実行するJavaプログラムの情報はAITと呼ばれる形式で、MPEG2トランスポートストリームのパケットの中に埋め込まれ送信されている。AITは、DVB−MHP規格(正式には、ETSI TS 101 812 DVB−MHP仕様V1.0.2)の10章に定義されている、Application Information Tableの略である。
AM1605bは、まず、AITを獲得するため、JMF1605a同様PAT、PMTを取得し、AITが格納されているパケットのパケットIDを獲得する。
今、与えられたチャンネルの識別子が「2」で、図21のPAT、図22のPMTが送信されていると、JMF1605aと同様の手順で、図22のPMTを獲得する。AM1605bは、PMTからストリーム種別が「データ」で補足情報として「AIT」を持つエレメンタリ−ストリームからパケットIDを抽出する。図22を参照して、行1013のエレメンタリ−ストリームが該当し、パケットID「5013」を獲得する。
AM1605bは、OS1601のライブラリ1601bを通して多重分離部1405にAITのパケットIDを与える。多重分離部1405は、与えられたパケットIDでフィルタリングを行い、CPU1412に引き渡す。この結果、AM1605bは、AITのパケットを収集することができる。
図23は、収集したAITの情報の一例を模式的に示す図である。
列2301はJavaプログラムの識別子である。
列2302はJavaプログラムの制御情報である。制御情報には「autostart」「present」「kill」などがあり、「autostart」は即時にデータ出力装置101がこのプログラムを自動的に実行することを意味し、「present」は自動実行しないことを意味し、「kill」はプログラムを停止することを意味する。
列2303は、DSMCC方式でJavaプログラムを含んでいるパケットIDを抽出するためのDSMCC識別子である。
列2304はJavaプログラムのプログラム名である。
行2311と2312とは、Javaプログラムの情報の組である。行2311で定義されるJavaプログラムは、識別子「301」、制御情報「autostart」、DSMCC識別子「1」、プログラム名「a/TopXlet」の組である。行2312で定義されるJavaプログラムは、識別子「302」、制御情報「present」、DSMCC識別子「1」、プログラム名「b/GameXlet」の組である。
ここでふたつのJavaプログラムは同じDSMCC識別子を持つが、これはひとつのDSMCC方式でエンコードされたファイルシステム内にふたつのJavaプログラムが含まれていることを表す。ここでは、Javaプログラムに対して4つの情報しか規定しないが、実際にはより多くの情報が定義される。詳細はDVB−MHP規格を参照されたい。
AM1605bは、AITの中から「autostart」のJavaプログラムを見つけ出し、対応するDSMCC識別子及びJavaプログラム名を抽出する。図23を参照して、AM1605bは行2311のJavaプログラムを抽出し、DSMCC識別子「1」及びJavaプログラム名「a/TopXlet」を獲得する。
次にAM1605bは、AITから取得したDSMCC識別子を用いて、JavaプログラムをDSMCC方式で格納しているパケットのパケットIDをPMTから獲得する。具体的には、PMTの中でストリーム種別が「データ」で、補足情報のDSMCC識別子が合致するエレメンタリ−ストリームのパケットIDを取得する。
今、DSMCC識別子が「1」であり、PMTが図22とすると、行2214のエレメンタリ−ストリームが合致し、パケットID「5014」を取り出す。
AM1605bは、OS1601のライブラリ1601bを通して多重分離部1405にDSMCC方式でデータが埋めこめられたパケットのパケットIDを指定する。
ここでは、パケットID「5014」を与える。多重分離部1405は、与えられたパケットIDでフィルタリングを行い、CPU1412に引き渡す。この結果、AM1605bは、必要なパケットを収集することができる。AM1605bは、収集したパケットから、DSMCC方式に従ってファイルシステムを復元し、第1メモリ1402あるいは第2メモリ1403に保存する。ファイルシステム等のデータを取り出し第1メモリ1402あるいは第2メモリ1403に保存することを以降、ダウンロードと呼ぶ。
図24は、ダウンロードしたファイルシステムの一例を示す図である。
図中、丸はディレクトリを四角はファイルを表し、2401はルートディレクトリ、2402はディレクトリ「a」、2403はディレクトリ「b」、2404はファイル「TopXlet.class」、2405はファイル「GameXlet.class」である。
ここでは、MPEG2トランスポートストリームからファイルシステムをダウンロードする例を記載したが、OCAP仕様では、IPネットワークを用いたダウンロードなども規定している。また、AITではなくXAITと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。
次にAM1605bは、第1メモリ1402あるいは第2メモリ1403にダウンロードしたファイルシステム中から実行するJavaプログラムをJavaVM1603に引き渡す。今、実行するJavaプログラム名が「a/TopXlet」とすると、Javaプログラム名の最後に「.class」を付加したファイル「a/TopXlet.class」が実行すべきファイルとなる。「/」はディレクトリやファイル名の区切りであり、図24を参照して、ファイル2404が実行すべきJavaプログラムである。次にAM1605bは、ファイル2404をJavaVM1603に引き渡す。
JavaVM1603は、引き渡されたJavaプログラムを実行する。
サービスマネージャ1604は、他のチャンネルの識別子を受け取ると、Javaライブラリ1605に含まれる各ライブラリを通して再生している映像・音声及びJavaプログラムの実行を、同じくJavaライブラリ1605に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネルの識別子に基づいて、映像・音声の再生及びJavaプログラムの実行を行う。
また、サービスマネージャ1604は、再生部1602bだけでなく、JavaVM1603上で実行されるJavaプログラムからチャンネルの識別子を受け取る機能も備える。
具体的には、チャンネルの識別子を受け取るためのJava言語のクラス及びそのメソッドを提供する。チャンネルの識別子を受け取ると、サービスマネージャ1604は、Javaライブラリ1605に含まれる各ライブラリを通して現在再生している映像・音声及びJavaプログラムの実行を、同じくJavaライブラリ1605に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネルの識別子に基づいて、新しい映像・音声の再生及びJavaプログラムの実行を行う。
次に、データ出力装置1301において、デジタル放送を受信して、そのマルチメディアデータを第2メモリ1403に蓄積する処理について説明する。
図25は、データ出力装置1301が、第2メモリ1403にマルチメディアデータを蓄積する形態の一例を示す図である。
データ出力装置1301は、マルチメディアデータとその属性情報、属性情報テーブル、URIテーブル、再開位置情報テーブルを第2メモリ1403に記憶する。図25に示す第2メモリに記憶された情報は、マルチメディアデータ2501と、マルチメディアデータ2502と、マルチメディアデータの属性情報2511と、マルチメディアデータの属性情報2512と、属性情報テーブル2521と、URIテーブル2531と、再開位置情報テーブル2532とを含む。
マルチメディアデータ2501と、マルチメディアデータ2502とは、MPEGトランスポートストリーム形式の符号化されたマルチメディアデータである。属性情報2511と、属性情報2512とは、各マルチメディアデータのタイトルなどの付加的な情報である。ここでは、属性情報2511はマルチメディアデータ2501の属性情報を、属性情報2512はマルチメディアデータ2502の属性情報を、それぞれ表すこととする。
図26は、本発明の実施の形態2における属性情報の一例を示す図である。本実施の形態においては、属性情報はXML(Extensible MarkupLanguage)で定義されたテキストで表すものとする。
図26では、ContentID要素で該コンテンツの識別子を、FileName要素で該マルチメディアデータのファイル名を、ChannelID要素で図18の列1801で示されているような該番組が放送されたチャンネルの識別子を、ProgramNo要素で図19の列1904に示されているようなPMTを検索するプログラムナンバーを、Title要素で図18の列1802で示されているような番組名を、Gunre要素で図18の列1806に示されているような番組の種別を、Date要素で該番組が放送された日時を、RecordDate要素で該番組が録画された日時を、PlaybackTime要素で、該マルチメディアデータが再生もしくはネットワーク104に出力された回数を、LastPlaybackDate要素で、該マルチメディアデータが最後に再生もしくはネットワークに出力された日時を、それぞれ表す。
なお、属性情報は、このようなXMLによる構成に限るものではなく、他の形式、例えば、バイナリデータとして記録しても良い。属性情報テーブルは、コンテンツの識別子と、該識別子で表されるコンテンツの属性情報を記録したファイルとの対応表である。図27にその一例を示す。
図27は、本発明の実施の形態2における属性情報テーブルの一例を示す図である。
図27において、列2701はコンテンツの識別子を表し、列2702は属性情報のファイル名を表す。行2711〜2713は、コンテンツの識別子と対応する属性情報のファイル名の組である。行2711からは、識別子1のコンテンツの属性情報はファイル0001.attrに記録されていることを読み取ることができる。URIテーブル2531と再開位置情報テーブルについては、後述する。
以下、蓄積する処理について説明する。まず、デスクランブルまでの動作は上記再生する場合と同様である。次に、サービスマネージャ1604は、Javaライブラリ1605の中のRec1605jに該マルチメディアデータの蓄積を依頼する。Rec1605jは、まず、上記JMF1605aおよびAM1605bと同様に、PAT、PMTを取得し、蓄積する番組に関する映像データ、音声データ、各セクションデータのパケットIDを取得する。今、与えられたチャンネルの識別子が「2」で、図21のPAT、図22のPMTが送信されていると、JMF1605aと同様の手順で、図22のPMTを獲得する。蓄積するデータは、図22のPMTに記述された全てのデータである。
Rec1605jは、OS1601のライブラリ1601bを通してTSデコーダ1407に、これらのパケットIDを与え、TSマルチプレクサ1410に出力させる。TSデコーダ1407は、与えられたパケットIDでフィルタリングを行い、TSマルチプレクサ1410に引き渡す。
なお、セクションデータに関しては、それぞれにバージョンナンバーがつけられており、TSデコーダ1407は、同じ種類のデータは、各バージョンナンバーごとに1回のみ出力し、あとはフィルタリングする構成であっても良い。
また、Rec1605jは、OS1601のライブラリ1601bを通してTSマルチプレクサ1410に、何種類のデータが送られてくるかを与えて、TSデコーダ1407から引き渡されたデータから、MPEG2トランスポートストリームを構成させる。TSマルチプレクサ1410は、構成したMPEGトランスポートストリームを、CPU1412に引き渡す。
さらに、Rec1605jは、Javaライブラリ1605の中のIO1605gに依頼して、CPU1412がTSマルチプレクサから受け取ったMPEGトランスポートストリームを第2メモリに書き込む。さらに、Rec1605jは、サービスマネージャ1604に依頼して、該番組のチャンネル識別子を受け取り、IO1605gに依頼して、第2メモリ1403に記憶された図18に示す番組情報のうち、蓄積したマルチメディアデータに対応するものの番組情報を読み取る。
さらに、該蓄積したマルチメディアデータに識別子を発行し、取得した番組情報と、マルチメディアデータを蓄積したファイル名から属性情報を作り、IO1603に依頼して、該属性情報を第2メモリ1403に書き込む。さらに、Rec1605jは、IO1605gに依頼して、属性情報テーブル読み出し、内容を更新して、IO1605gに依頼して第2メモリ1403に書き込むことにより、属性情報テーブルを更新する。
次に、受信したデジタル放送のマルチメディアデータを、ネットワーク部1411から出力する場合の処理について説明する。
まず、Javaライブラリ1605の中にあるネットワークライブラリ1605eは、ネットワーク1304に接続された端末からの要求を受け、サービスマネージャ1604に要求されたチャンネルの識別子を与える。サービスマネージャ1604では、受け取ったチャンネルの識別子をTuner1605cに与えてチューニングを依頼し、さらにCA1605dにデスクランブルを依頼する。続いて、サービスマネージャ1604は、ネットワークライブラリ1605eに処理を返す。
ネットワークライブラリ1605eでは、上記Rec1605jと同様に、TSデコーダ1407、TSマルチプレクサ1410を制御して、該番組の映像データ、音声データ、セクションデータよりMPEGトランスポートストリームを作成する。
さらに、ネットワークライブラリ1605eは、OS1601のライブラリ1601bのNET1601b4に送信先のアドレスを与える。続いて、ネットワークライブラリ1605は、TSマルチプレクサ1410から受け取ったMPEG2トランスポートストリームを、送信するアプリケーションレベルのプロトコルに応じた形式に変換して、NET1601b4に順次引き渡す。
アプリケーションレベルのプロトコルとは、例えば、HTTPやRTPといったものである。これにより、NET1601b4は、送信先アドレスを参照して、引き渡されたデータをIPネットワークのパケットに変換し、ネットワーク部1411に引き渡す。ネットワーク部1411では、引き渡されたデータを、接続されたネットワークの物理メディアに応じた信号に変換して出力する。
次に、第2メモリ1403に蓄積したマルチメディアデータを再生する場合の処理について説明する。
サービスマネージャ1604は、コンテンツの識別子を受け取ると、Javaライブラリ1605の中のIO1605gに依頼して、第2メモリ1403から属性情報テーブル2521を読み出し、該識別子のコンテンツの属性情報を記録したファイルを検索する。図27の属性情報テーブルにて、コンテンツの識別子が1の場合、該ファイルは0001.attrにあたる。
続いて、サービスマネージャ1604は、IO1605gに依頼して、第2メモリ1403から該属性情報を記録したファイルを読み出す。読み出した属性情報から、該コンテンツのマルチメディアデータを記録したファイル名を取得する。図26の属性情報の場合、このファイル名は0001.m2tsが対応する。
続いて、サービスマネージャ1604は、IO1605gに依頼して、該マルチメディアデータのファイルからMPEGトランスポートストリームを読み出す。IO1605gは、OS1601のライブラリ1601bを通してデータを読み出し、CPU1412に引き渡す。
サービスマネージャ1604は、OS1601のライブラリ1601bを通して、読み出したMPEGトランスポートストリームを多重分離部1405に引き渡す。
次にサービスマネージャ1604は、Javaライブラリの中にあるCA1605dに、デスクランブラはデータをデスクランブルせず、スルーするように依頼する。
CA1605dは、OS1601のライブラリ1601bの限定解除1601b2を通してデスクランブラ1406に情報を与える。これにより、デスクランブラ1406は、多重分離部1405から引き渡されたデータを、そのままTSデコーダ1407に引き渡す。
次にサービスマネージャ1604は、読み出した属性情報からチャンネルの識別子もしくはプログラムナンバーを読み出し、Javaライブラリ1605の中にあるJMF1605aに与えて、再生を依頼する。以下、上記の放送から受信したコンテンツの場合と同様の処理によって、映像データ、音声データの再生が行える。
さらに、サービスマネージャ1604は、Javaライブラリの中にあるAM1605bにチャンネルの識別子もしくはプログラムナンバーを与えて、データ放送の再生を依頼する。以下、上記の放送から受信したコンテンツと同様の処理によって、データ放送の再生が行える。
Javaライブラリ1605は、第2メモリ1403に格納されている複数のJavaライブラリの集合である。本実施の形態では、Javaライブラリ1605は、JMF1605a、AM1605b、Tuner1605c、CA1605d、ネットワークライブラリ1605e、再生Lib1605f、IO1605g、AWT1605h、SI1605i、および、Rec1605j等を含んでいる。
JMF1605a、AM1605b、Tuner1605c、CA1605d、Rec405jの機能は、既に説明したため、ここでの説明は省略する。
再生Lib1605fは、第2メモリ1403が記憶している、現在再生しているチャンネルの識別子をJavaプログラムに渡すためのJava言語のクラスおよびメソッドを(以下Java APIと記述)提供する。このJava APIを利用することで、Javaプログラムは、現在再生中のチャンネルを知ることができる。
IO1605gは、Javaプログラムが第2メモリ1403にデータを書き込むためのJava API、あるいは、その書き込んだデータを第2メモリ1403から読み込むためのJava APIをJavaプログラムに提供する。このAPIを利用することで、Javaプログラムは、任意のデータを第2メモリ1403に保存することができる。この保存されたデータはデータ出力装置1301の電源がオフになっても消えないので、データ出力装置1301の電源が投入された後、再びそのデータを読み込むことができる。
AWT1605hは、Javaプログラムが描画を行ったり、入力部1401からのキー入力通知を受け取るためのJava APIを提供する。具体的には、「The Java class Libraries Second Edition,Volume 2」(ISBN0−201−31003−1)で既定されるjava.awtパッケージ、java.awt.eventパッケージ及びその他のjava.awtのサブパッケージが相当する。ここでは、詳細な説明を省略する。
SI1605iは、Javaプログラムがチャンネル情報や電子番組表情報を取得するJava APIを提供する。具体的には、Java TV仕様などが存在する。また、生のバイナリデータを放送中のMPEG2トランスポートストリームから取得するMPEGセクションフィルタAPIがOCAP仕様の中で定義されており、送信されてきた独自の電子番組データをJavaアプリケーションが理解して取り扱うことも出来る。
ネットワークライブラリ1605eは、OS1601のライブラリ1601bのNET1601b4を通して、ネットワーク1304に接続された、端末1302および端末1303と通信するものである。通信は、コンテンツ一覧やEPGの送信、端末からのマルチメディアデータ送信や、送信中断、送信再開、送信終了要求の受信、およびマルチメディアデータの送信である。
図28は、ネットワークライブラリ1605eの内部構成の一例を示すブロック図である。ネットワークライブラリ1605eは、制御部2801と、情報受信部2802と、データ出力部2803と、属性管理部2804と、データ受信部2805とを含む。なお、ネットワークライブラリ1605eは、IPネットワークに関連する他の機能を含んでも良い。
制御部2801は、ダウンロードしたJavaアプリケーションに対して、ネットワークライブラリ1605eが実現する機能を提供する。すなわち、制御部2801は、Javaアプリケーションに対してJava APIを提供し、Javaアプリケーションが、このAPIを呼び出すことで、ネットワークを利用した機能が実行できる。
制御部2801は、Java APIが呼び出されると、適宜、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用して処理を行う。
また、制御部2801は、必要に応じて、Javaアプリケーションのコールバック関数を用いて、Javaアプリケーションに通知を行う。
図29は、ネットワークライブラリ1605eの内部構成に含まれる制御部2801が提供するJava APIの一例を示す図である。
図29(1)メソッドcollectDevice()は、ネットワーク1304に接続されている外部装置の情報を集め、その情報としてNetDeviceオブジェクトの配列を返す。失敗時にはnullを返す。本メソッドにより、ネットワーク1304に接続された機器の情報を得ることができる。
図30は、ネットワークライブラリ1605eで使用されるNetDeviceクラスの構成の一例を示す図である。
図30で、addrは該装置のネットワークアドレスを、friendlyNameは該装置につけたニックネームを、dTypeは該装置の種別を表し、0がデジタル放送を受信可能なデータ出力装置、1がデジタル放送受信部を持たないデータ出力装置、2が端末を表すこととする。このような情報取得は、UPnP DAに定義された方法によって行うことが可能であるため、処理の詳細は省略する。
図29(2)メソッドregisterHandler()は、引数handlerで与えられた、ServHandlerインタフェースを実装したハンドラをシステムに登録するもので、成功すればtrueを返し、失敗すればfalseを返す。Javaアプリケーションは、該ハンドラを登録することにより、ネットワークライブラリ1605eからコールバックを受けることができる。
図31は、ネットワークライブラリ1605eで使用されるServHandlerインタフェースの構成の一例を示す図である。
図31において、ServHandlerインタフェースのメソッドnotifyChannelID()は、端末からマルチメディアデータ送信を要求されたチャンネルの識別子を、Javaアプリケーションに通知するものである。
Javaアプリケーションは、サービスマネージャ1604に該識別子を与えて、チャンネルのチューニング、デスクランブルを依頼し、成功すればtrueを返し、失敗すればfalseを返すことで、ネットワークライブラリ1605eに制御を返す。
なお、上記チャンネルの識別子は、ネットワークライブラリ1605eが、サービスマネージャ1604に直接引き渡して、チューニング、デスクランブルを依頼する構成であっても良い。
また、メソッドnotifyRecording()は、Javaアプリケーションにチャンネルの識別子を通知して、そのデータの蓄積を依頼するものであり、戻り値として、蓄積したコンテンツの識別子を受け取る。Javaアプリケーションは、サービスマネージャ1604に該チャンネルの識別子を与えて、そのマルチメディアデータの蓄積を依頼し、コンテンツの識別子を受け取る。
サービスマネージャ1604は、上記の通り、Rec1605jを用いて該マルチメディアデータを蓄積する。なお、上記チャンネルの識別子は、ネットワークライブラリ1605eが、サービスマネージャ1604に直接引き渡して、蓄積を依頼する構成であっても良い。
図29(3)メソッドactMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、マルチメディアサーバ機能の起動および動作を依頼するものであり、正常に処理が終了すればtrueを返し、異常がおこればfalseを返す。本メソッドが呼び出されると、ネットワークライブラリ1605eの制御部2801は、必要に応じて、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用し、またJavaアプリケーションやサービスマネージャ1604へ通知を行うことで、マルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
図29(4)メソッドdoMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、引数devで与えられたRemoteDeviceオブジェクトで表されるネットワーク1304に接続された装置に対するマルチメディアサーバとして動作するように依頼するものであり、正常に処理が終了すればtrueを返し、異常が起こればfalseを返す。
図30は、RemoteDeviceクラスの一例を示す図である。
図30で、RemoteDeviceクラスは、NetDeviceクラスの拡張クラスとして定義される。
メンバ変数sは、NetDeviceクラスのメンバ変数によって表される装置と通信するSocketオブジェクトを表す。本メソッドが呼び出されると、ネットワークライブラリ1605eの制御部2801は、必要に応じて、情報通信部2802、データ出力部2803、属性管理部2804、データ受信部2805や、他のJavaライブラリ1605およびOS1601のライブラリ1601bを利用し、またJavaアプリケーションやサービスマネージャ1604へ通知を行うことで、与えられた装置へマルチメディアデータを提供するマルチメディアサーバとして処理を行う。詳細については、後述する。
図29(5)メソッドstopMultimediaServer()は、Javaアプリケーションからネットワークライブラリ1605eへ、メソッドactMultimediaServer()もしくはdoMultimediaServer()によって起動されたマルチメディアサーバの終了を依頼するものである。ネットワークライブラリ1605eは、本メソッドが呼び出されれば、起動中のマルチメディアサーバの動作を終了させる。
図29(6)メソッドsendContentList()は、引数devで与えられたネットワーク1304に接続されている装置に、第2メモリ1403に蓄積しているマルチメディアデータの一覧を送信するものである。この通信は、UPnP AVに定義された方法にて実現できるため、詳細は省略する。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、属性情報テーブル2521を読み出し、また、読み出した属性情報テーブ2521から得られる各コンテンツの属性情報を順に読み出す。また、ネットワークライブラリ1605eは、IO1605gを用いてURIテーブル2531を読み出す。
ネットワークライブラリ1605eは、URIテーブル2531を検索することにより、各コンテンツにアクセスするためのURIを取得し、属性情報とあわせて、UPnP AVで決められたフォーマットのコンテンツ一覧を作成する。そして、OS1601のライブラリ1601bの中のNET1601b4を通じてネットワーク部1411を制御し、作成したコンテンツ一覧を送信する。送信には、後述のデータ出力部のメソッドsendData()を用いても良い。
図32は、本発明の実施の形態2におけるURIテーブル2531の構成の一例を示す図である。
図32において、列3201は各コンテンツの識別子を示し、列3201は各コンテンツにアクセスするためのURIを表す。各行3211〜3213は、コンテンツの識別子とURIの組が表されている。例えば、行3211は、識別子1のコンテンツのURIは、rtsp://192.168.0.3/AVData/0001.m2tsであることを表している。
図29(7)メソッドsendEPGData()は、引数devで与えられたネットワーク1304に接続されている装置に、EPG情報を送信するものである。この通信は、メソッドsendContentList()と同様に、UPnP AVに定義された方法にて実現できるため、詳細は省略する。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、第2メモリ1403に記憶されている、図18に示したEPG情報を読み出し、UPnP AVで定義されたフォーマットに変換する。そして、OS1601のライブラリ1601bの中のNET1601b4を通じてネットワーク部1411を制御し、変換したEPG情報を送信する。
なお、URIは各チャンネルごとに割り振られており、第2メモリ1403にURIテーブル2531と同じ形式で蓄積されており、そのテーブルを読み出すことで取得するものとする。送信には、後述のデータ出力部のメソッドsendData()を用いても良い。また、第2メモリ1403に記憶している、図18に示すEPG情報のデータをそのまま送信する構成であっても良い。
図29(8)メソッドremovePauseStatus()は、引数rInfoで与えられた再開位置情報を、第2メモリ1403から削除するもので、もともと存在しないか、削除が成功すればtrueを返し、削除に失敗すればfalseを返す。引数rInfoは、ReopenContentInfoクラスのインスタンスである。
図33は、ネットワークライブラリ1605eで使用されるReopenContentInfoクラスの構成の一例を示す図である。
図33において、メンバ変数cidは、図26および図27に示した、蓄積されたコンテンツの識別子を表すものであり、メンバ変数pidは、本ReopenContentInfoオブジェクトによって表されるマルチメディアデータ送信の中断を特定する識別子を表すものであり、メンバ変数rpは、マルチメディアデータの出力を再開するデータ位置を、該マルチメディアデータが書き込まれているファイルの先頭からのバイト位置で表したものであり、メンバ変数rtermは、該マルチメディアデータの出力を再開する場合の送信先端末が指定されている場合に、その端末を表すNetDeviceオブジェクトを表すものである。メソッドremovePauseStatus()は、引数rInfoとコンテンツ識別子および中断の識別子が一致する再開位置情報を削除する。再開位置情報は、図25に示した通り、再開位置情報テーブル2532として、第2メモリ1403に記憶されている。
図34は、本発明の実施の形態2における再開位置情報テーブル2532の構成の一例を示す図である。
図34において、列3401はコンテンツの識別子を表し、列3402はデータ出力中断の識別子を表し、列3403はマルチメディアデータの出力を再開するデータ位置を表し、列3404は該マルチメディアデータの出力を再開する場合の送信先端末を表す。再開位置情報はこれらの組として表され、行3411〜3413がそれにあたる。
なお、行3411の再開位置情報では、データ出力再開時の端末が指定されているため、列3404に端末が示されているが、行3412および行3413の再開位置情報では、データ出力再開時の端末が指定されていないため、列3404には示されていない。
なお、ネットワークライブラリ1605eは、中断の識別子を割り振らない構成であっても良い。そのとき、本メソッドは、コンテンツ識別子が一致するものを削除する構成であっても良い。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、まず、IO1605gを用いて、再開位置情報テーブル2532を読み出す。続いて、再開位置情報テーブル2532を検索し、列3401に記述されているコンテンツの識別子と、列3402に示されている中断の識別子とが、引数rInfoのものと一致する行を検索する。
該行が見つかれば、再開位置情報テーブル2532からその行を削除する。続いて、IO1605gを用いて、更新した再開位置情報テーブル2532を第2メモリ1403に書き込む。さらに、後述する属性管理部のメソッドupdateAttribute()に該コンテンツの識別子と再開位置情報テーブル2532の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
図29(9)メソッドsetPauseStatus()は、引数rInfoで与えられた再開位置情報を、IO1605gを通して、第2メモリ1403に書き込むものであり、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数rInfoで与えられた再開位置情報の中断に識別子を発行して、rInfoのメンバ変数pidに設定する。続いて、IO1605gを用いて、再開位置情報テーブル2532を読み出す。読み出した再開位置情報テーブル2532に、rInfoの内容を表す行を追加して更新する。続いて、IO1605gを用いて、更新した再開位置情報テーブル2532を第2メモリ1403に書き込む。
続いて、後述する属性管理部のメソッドupdateAttribute()に該コンテンツの識別子と再開位置情報テーブル2532の内容を与えて呼び出すことにより、該コンテンツの属性を更新し、その戻り値を返して、処理を終了する。
図29(10)メソッドgetPauseStatus()は、第2メモリ1403から再開位置情報テーブル2532を読み出し、その内容をReopenContentInfoオブジェクトの配列として返すものであり、成功すれば該配列を返し、失敗すればnullを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、まず、IO1605gを用いて、第2メモリ1403から再開位置情報テーブル2532を読み出す。続いて、再開位置情報テーブル2532の各行ごとに、その内容を入れたReopenContentInfoオブジェクトを作成して、配列を作成する。すべての行の内容を含む配列を作り終わると、その配列を返す。また、再開位置情報テーブル2532が無いか、処理途中でエラーが起きればnullを返す。また、再開位置情報テーブル2532に行が全く無ければ、要素数が0の配列を返す。
図29(11)メソッドsetServerStatus()は、Javaアプリケーションからネットワークライブラリ1605eへ、データ中断再開をサポートするか否かを設定する。引数にて0が与えられるとデータ中断再開をサポートしないマルチメディアサーバとして働き、引数にて非0が与えられると、データ中断再開をサポートするマルチメディアサーバとして働く。
情報受信部2802は、OS1601のライブラリ1601の中のNET1601b4を通じてネットワーク部1411を制御し、指定されたネットワーク1304に接続されている外部装置からの接続要求受け入れと、メッセージの受信を行うものである。
情報受信部2802は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図35は、ネットワークライブラリ1605eの内部構成に含まれる情報受信部2802が提供するJava APIの一例を示す図である。
図35(1)メソッドacceptConnection()は、引数sで与えられるSocketオブジェクトによって、外部装置からの待ち受けを行い、接続要求のあった装置との接続を確立して、該装置の情報と、該装置と通信するSocketオブジェクトを含むRemoteDeviceオブジェクトを返すものであり、成功すれば該RemoteDeviceオブジェクトを返し、失敗すればnullを返すものである。
例えば、端末からRTSPセッションの接続要求を受けた場合は、RTSPメッセージを送受信するためのSocketオブジェクトと該要求のあった端末のIPアドレスからRemoteDeviceオブジェクトを生成できる。
なお、本メソッドは、さらに、引数として、NetDeviceオブジェクトの配列を与えられ、該配列の各要素で示される外部装置からの接続要求のみにこたえる構成であっても良い。また、本メソッドは、同様にNetDeviceオブジェクトの配列を引数として与えられ、該配列の各要素で示される外部装置からの接続要求の場合には、該当するNetDeviceオブジェクトと通信するSocketオブジェクトからRemoteDeviceオブジェクトを生成する構成であっても良い。
図35(2)メソッドreceiveRequestMessage()は、引数devで与えられた外部装置からのメッセージを、引数devで与えられたSocketオブジェクトを用いて受信し、バイトデータの配列として返すものであり、成功すればメッセージのバイト列を返し、失敗すればnullを返す。
図35(3)メソッドreceiveRequest()は、引数devで与えられた外部装置からのRTSPのリクエストメッセージを、引数devで与えられたSocketオブジェクトを用いて受信し、内容を解釈して、RequestInfoオブジェクトとして返すものであり、成功すれば該リクエストメッセージを表すRequestInfoオブジェクトを返し、失敗すればnullを返す。
図36は、ネットワークライブラリ1605eで使用されるRequestInfoクラスの構成の一例を示す図である。図36において、メンバ変数requestTypeは要求の種類を表し、0がSETUPを、1がPLAYを、2がPAUSEを、3がTEARDOWNをそれぞれ表すものとする。
また、メンバ変数seqはRTSPリクエストのSeqヘッダの値であるシーケンス番号を表す。メンバ変数sessionは、RTSPリクエストのSessionヘッダの値であるセッション番号を表す。メンバ変数contentURIは、要求されているコンテンツのURIを表す文字列である。メンバ変数rangeは、RTSPリクエストのRangeヘッダの値である文字列である。メンバ変数extentHeaderは、RTSPリクエストの拡張ヘッダを格納するStringオブジェクトの配列であり、拡張ヘッダ1個につき、1個のStringオブジェクトに格納する。
データ出力部2803は、OS1601のライブラリ1601の中のNET1601b4を通じてネットワーク部1411を制御し、指定されたネットワーク1304に接続されている外部装置に、指定されたデータを出力するものである。
データ出力部2803は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図37は、ネットワークライブラリ1605eの内部構成に含まれるデータ出力部2803が提供するJava APIの一例を示す図である。
図37(1)メソッドsendData()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数mesで与えられたデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。
図37(2)メソッドsendMessage()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数resで与えられたRTSPメッセージを生成して送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。引数resは、ResponseInfoクラスのインスタンスで与えられる。
図38は、ネットワークライブラリ1605eで使用されるResponseInfoクラスの構成の一例を示す図である。図38において、メンバ変数responseCodeはレスポンスコードを表し、例えば、レスポンスが200 OKのレスポンスであれば、responseCodeは200となる。レスポンスコードについては、RTSPのRFCを参照されたい。
メンバ変数seqは、RTSPレスポンスのSeqヘッダの値となるシーケンス番号である。メンバ変数sessionは、RTSPレスポンスのSessionヘッダの値であるセッション番号を表す。メンバ変数rangeは、RTSPレスポンスのRangeヘッダの値である文字列である。メンバ変数headersは、RTSPレスポンスのほかのヘッダを格納するStringオブジェクトの配列であり、ヘッダ1個につき、1個のStringオブジェクトを格納する。
図37(3)メソッドsendMultimediaData()は、引数isで与えられたInputStreamからマルチメディアデータを読み出して、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、読み出したマルチメディアデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。本メソッドは、isからEOFを読み出すまで処理が行われる。引数devは、RemoteDeviceUDPクラスのオブジェクトで与えられる。
図30は、RemoteDeviceUDPクラスの構成の一例を示す図である。本クラスは、NetDeviceクラスの拡張クラスとして定義されている。メンバ変数dsは、NetDeviceクラスのメンバ変数によって表される装置とUDPベースで通信するDatagramSocketオブジェクトを表す。
図37(4)メソッドterminateTransfer()は、引数devで与えられた装置へのマルチメディアデータの送信を停止させるもので、停止させるまでに送信したデータのバイト数を返すものである。
属性管理部2804は、第2メモリ1403に記憶したコンテンツの属性情報のうち、データ出力中断を表す属性を更新するものである。
属性管理部2804は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図39は、ネットワークライブラリ1605eの内部構成に含まれる情報受信部2802が提供するJava APIの一例を示す図である。
図39(1)setAttributeValue()は、引数cidで与えられた識別子のコンテンツの属性情報の「データ出力中断中」の値を、引数isPauseで与えられた値で設定するものである。すなわち、引数isPauseが、trueであるならば、引数cidで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性を与えるものであり、引数isPauseがfalseの場合は、引数cidで与えられた識別子のコンテンツの属性情報に「データ出力中断中」の属性があれば、それを削除するものである。成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、IO1605gを用いて、属性情報テーブル2521を読み出し、該コンテンツの識別子をもつ属性情報を検索する。続いて、IO1605gを用いて、該コンテンツの属性情報を記述したファイルから属性情報を読み出す。続いて、「データ出力中断中」の属性を削除して更新し、IO1605gを用いて、更新した属性情報を第2メモリ1403に書き込み、trueを返して処理を終了する。
図39(2)メソッドupdateAttribute()は、引数cidで与えられた識別子のコンテンツに関し、引数rInfoで与えられた再開位置情報テーブル2532の内容から、該コンテンツの属性情報にある「データ出力中断中」の属性の更新を行うもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数rInfoで与えられた再開位置情報テーブル2532の内容の中に、引数cidで与えられた識別子のコンテンツに関する情報があるか否かを調べる。これは、図34に示した再開位置情報テーブル2532の列3401を調べることによって行える。
再開位置情報テーブル2532の中に、該コンテンツに関する情報がある場合は、ネットワークライブラリ1605eは、引数としてcidの値とtrueを与えてメソッドsetAttributeValue()を呼び出して、属性情報の更新を行う。また、再開位置情報テーブル2532の中に、該コンテンツに関する情報が無い場合は、ネットワークライブラリ1605eは、引数としてcidの値とfalseを与えてメソッドsetAttributeValue()を呼び出して、属性情報の更新を行う。いずれの場合も、setAttributeValue()の戻り値をそのまま返す。
データ受信部2805は、データ出力装置1301のTSデコーダ1407とTSマルチプレクサ1410をOS1601のライブラリ1601bを通じて制御し、TSデコーダ1407によってフィルタリングされた、映像、音声、セクションデータをTSマルチプレクサ1410によってMPEG2トランスポートストリームに構成して読み出すものである。
データ受信部2805は、制御部2801およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図40は、ネットワークライブラリ1605eの内部構成に含まれるデータ受信部2805が提供するJava APIの一例を示す図である。
図40(1)メソッドopenProgram()は、TSデコーダ1407およびTSマルチプレクサ1410を制御し、TSマルチプレクサ1410が構成したMPEG2トランスポートストリームを読み出すInputStreamのオブジェクトを返す。
なお、失敗時にはnullが返る。本メソッドが呼び出されると、ネットワークライブラリ1605eは、引数cidで指定されたチャンネルの識別子から得られるPAT、PMTから、該チャンネルに対応する映像データ、音声データ、セクションデータのPIDを取得し、OS1601のライブラリ1601bを通じてTSデコーダ1407に与えてフィルタリングさせ、該映像データ、音声データ、セクションデータをTSマルチプレクサ1410に引き渡させる。
このとき、セクションデータは各バージョンナンバーごとに1回のみ出力する構成であっても良い。さらに、ネットワークライブラリ1605eは、OS1601のライブラリ1601bを通じてTSでTSマルチプレクサ1710を制御し、TSデコーダ1407から引き渡されたデータから、MPEG2トランスポートを構成させ、CPU1412へ引き渡させる。
ここで、制御部2801のメソッドactMultimediaServer()とメソッドdoMultimediaServer()の処理の詳細について説明する。
まず、メソッドactMultimediaServer()について説明する。本メソッドが呼び出されると、ネットワークライブラリ1605eは、まずcollectDevice()を呼び出し、ネットワークに接続された装置の認識を行う。また、Socketオブジェクトを生成して、UPnP DAおよびUPnP AVに定義された通信の待ち受けを行う。
これらは、別のスレッドもしくはプロセスを生成して行わせる。これにより、随時UPnP DAに規定された通信を行って、接続されている装置の一覧を更新する。また、ネットワークに接続された端末から、UPnP AVに定義されたコンテンツ一覧取得要求を受けた場合、メソッドsendContentList()を呼び出して、該要求を発行した端末に、コンテンツ一覧を、UPnP AVの定義にしたがって送信する。
また、同様に、ネットワークに接続された端末から、EPGデータ送信要求を受けた場合、メソッドsendEPGData()を呼び出して、該要求を発行した端末に、EPGデータを、UPnP AVの定義にしたがって送信する。さらに、Socketオブジェクトsを生成し、sを引数として情報受信部2802のメソッドacceptConnection()を呼び出すことにより、ネットワーク1304に接続された端末1302および端末1303からのRTSPセッションの接続要求を待ち受ける。メソッドacceptConnetion()が接続要求を受け入れ、RemoteDeviceオブジェクトを返すと、該RemoteDeviceオブジェクトを引数として、メソッドdoMultimediaServer()を呼び出すことで、接続要求のあった端末へのマルチメディアサーバとしての機能を実行する。
なお、本メソッドは、呼び出されたときに、スレッドもしくはプロセスを新規に生成し、その上で動作する構成であっても良い。また、メソッドacceptConnection()により接続要求を受け入れると、スレッドもしくはプロセスを新規に生成し、その上でメソッドdoMultimediaServer()を呼び出す構成であっても良い。
次に、メソッドdoMultimediaServer()の動作について説明する。本メソッドが呼び出されると、ネットワークライブラリ1605eは、情報受信部2802のメソッドreceiveRequest()を呼び出して、RTSPリクエストメッセージを受信して解釈する。そして、リクエストの内容に応じて処理を行い、またRTSPレスポンスメッセージを作成して、情報受信部2802のメソッドsendMessage()を呼び出して、端末へ送信する。以下、RTSPリクエストに応じた処理について、それぞれ説明する。
まず、RTSPリクエストがSETUPであった場合、Javaライブラリ1605の中のIO1605gを用いて、URIテーブル2531を読み出し、該リクエストに含まれるURIに対応するコンテンツを検索する。該コンテンツが第2メモリ1403に蓄積されているコンテンツの場合、IO1605gを用いて、該コンテンツのファイルを読み出すInputStreamオブジェクトを生成する。また、該リクエストが放送中のチャンネルを表している場合、メソッドregistarHandler()で登録されたServHandlerを実装したハンドラのメソッドnotifyChannelID()を呼び出してチャンネルの識別子を与え、チューニングを依頼する。
さらに、データ受信部2805のメソッドopenProgram()を呼び出して、該コンテンツを読み出すInputStreamを作成する。いずれの場合も、InputStreamが得られれば、RTSPレスポンスメッセージを表すResponseInfoオブジェクトを作成し、メンバ変数responseCodeには200を設定し、メンバ変数seqには、RTSPリクエストと同じ値を設定する。
また、該RTSPセッションのセッション番号を発行して、メンバ変数sessionに設定する。また、マルチメディアデータを通信するRTPのポート番号を記述したヘッダを作成して、メンバ変数headersに設定する。さらに、データ出力部2803のメソッドsendMessage()を呼び出して、レスポンスメッセージを端末に送信する。さらに、受信したRTSPリクエストのヘッダTransportの値から、端末がデータ受信に使用するポート番号を取得し、さらに、データ出力装置1301がこのSETUPで設定されたコンテンツを送信するRTPのポート番号を発行する。これらポート番号と本メソッドの引数のRemoteDeviceオブジェクトから、まずRTP通信に用いるDatagramSocketオブジェクトを生成する。さらに生成したDatagramSocketオブジェクトと引数のRemoteDeviceオブジェクトから、RemoteDeviceUDPオブジェクトを作成する。InputStreamが得られなければ、対応のエラーコードを設定したResponseInfoオブジェクトを作成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
次に、RTSPリクエストがSETUP済みのURIに対するPLAYであった場合、それが放送中のチャンネルに対するものであれば、まず、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、上記で取得したInputStreamオブジェクトと、上記で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
また、PLAYが第2メモリ1403に蓄積されているコンテンツに対するものであれば、メソッドreceiveRequest()が返したRequestInfoオブジェクトのメンバ変数extentHeaderを調べ、X−Restartがあるか否かを検索する。X−Restartが無い場合、もしくは、あってもその値が「Yes」ではない場合は、次にメンバ変数rangeの値に対応する分のデータを読み飛ばすように、SETUP時に取得したInputStreamをSeek機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、InputStreamオブジェクトと、SETUP時で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
また、X−Restartがあってその値が「Yes」の場合、ネットワークライブラリ1605eは、メソッドgetPauseStatus()を呼び出して、再開位置情報テーブル2532を読み出す。取得したReopenContentInfoオブジェクト配列を検索し、該コンテンツの再開位置情報を検索する。該コンテンツの再開位置情報が無い場合は、上記したX−Restartが無い場合と同様の処理を行う。
該コンテンツの再開位置情報があれば、そのReopenContentInfoオブジェクトのメンバ変数rpの値を読み取り、その値で示されるバイト数のデータを読み飛ばすように、SETUP時に取得したInputStreamをSeek機能を使って制御する。呼び飛ばしたデータのバイト数は記憶しておく。
さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。続いて、InputStreamオブジェクトと、SETUP時で生成したRTP通信用のRemoteDeviceオブジェクトを引数として、データ出力部2803のメソッドsendMultimediaData()を呼び出し、データ送信を開始させる。
さらに、メソッドremovePauseStatus()を呼び出して、再開したデータ出力に関する再開位置情報を再開位置情報テーブル2532から削除し、またコンテンツの属性も更新させる。なお、この削除は、ユーザからの指示により行われる構成であっても良い。
さらに、後述する放送中のコンテンツをネットワークライブラリ1605eの処理によって蓄積したコンテンツの場合は、再開してすべて送信したあとに、そのコンテンツを第2メモリ1403から削除する構成であっても良い。また、このマルチメディアデータの削除は、ユーザからの指示により行われる構成であっても良い。また、X−Restartの値は、データ出力中断の識別子とし、該コンテンツの識別子と、データ出力中断の識別子とから、再開位置情報テーブル25332を検索する構成であっても良い。また、再開位置情報に設定された再開時の送信先端末からの再開要求に対して、データ出力を再開し、それ以外の端末から再開要求が合った場合には、データ送信を行わないか、先頭もしくはRangeヘッダで指定された位置からのデータ送信を行う構成であっても良い。
次に、RTSPリクエストが、データ送信に対するPAUSEであった場合について説明する。まず、第2メモリ1403に蓄積したコンテンツの送信に対するPAUSEの場合、ネットワークライブラリ1605eは、データ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させ、送信済みのデータ数を取得する。次に、記憶しておいた送信前に呼び飛ばしたデータ数と、送信済みのデータ数の和を取ることにより、再開時の開始点を求める。
続いて、この中断を識別する識別子を発行し、上記の再開開始点と該コンテンツの識別子とから、ReopenContentInfoオブジェクトを生成する。さらに、メソッドsetPauseStatus()を呼び出して、この再開位置情報を再開位置テーブル2532へ追加するとともに、該コンテンツの属性情報を更新する。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
また、放送中のチャンネルに対するPAUSEの場合は、ネットワークライブラリ1605eは、まずデータ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させる。続いて、メソッドregistarHandler()で登録されたServHandlerを実装したハンドラのメソッドnotifyRecording()を呼び出してチャンネルの識別子を与え、該コンテンツの蓄積を依頼し、コンテンツの識別子を受け取る。
続いて、この中断を識別する識別子を発行し、受け取ったコンテンツの識別子とから、ReopenContentInfoオブジェクトを生成する。なお、再開位置はファイルの先頭なので、メンバ変数rpは0を設定する。
さらに、メソッドsetPauseStatus()を呼び出して、この再開位置情報を再開位置テーブル2532へ追加するとともに、該コンテンツの属性情報を更新する。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
なお、本実施の形態では、ServHandlerのメソッドnotifyHanlder()を用いてJavaアプリケーションに蓄積を依頼したが、ネットワークライブラリ1605eが、IO1605gを用いて、第2メモリ1403に書き込み、サービスマネージャ1604に該コンテンツの識別子と属性情報の作成を依頼する構成であっても良い。また、PAUSEリクエストにX−Keep−Pause−Statusヘッダを含み、その値が「Yes」の場合にのみ、上記のような再開位置情報の作成を行う構成であっても良い。また、PAUSEリクエストに拡張ヘッダとして、出力再開時の送信先端末が指定されており、RestartContentInfoオブジェクトのメンバ変数rtermに設定する構成であっても良い。
次に、RTSPリクエストがTEARDOWNであった場合、マルチメディアデータを送信中であれば、データ出力部2803のメソッドterminateTransfer()を呼び出して、データ送信を停止させる。さらに、SETUP時に取得したマルチメディアデータを読み出すInputStreamオブジェクトをcloseする。さらに、200 OKのレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。さらに、trueを返して、処理を終了する。
上記以外のRTSPリクエストもしくは不正なリクエストを受けた場合、リクエストの内容に応じたエラーレスポンスメッセージを設定したResponseInfoオブジェクトを生成し、データ出力部2803のメソッドsendMessage()を呼び出して端末に送信する。
次に、端末1302および端末1303について説明する。
図41は、本発明の実施の形態2における端末1302および端末1303の構成の一例を示すブロック図である。端末1302および端末1303は、それぞれ、入力部4101と、第1メモリ4102と、第2メモリ4103と、多重分離部4104と、TSデコーダ4105と、映像出力部4106と、音声出力部4107と、ネットワーク部4108と、CPU4109とを備える。
入力部4101、第1メモリ4102、第2メモリ4103は、上記した本実施の形態におけるデータ出力装置1301の入力部1401、第1メモリ1402、第2メモリ1403と同様のものである。なお、端末1302および端末1303は、第2メモリ4103に、データ出力装置1301から受信したコンテンツ一覧やEPGデータなどの、マルチメディアデータの識別子、タイトル、放送日時、放送チャンネルなど番組情報を蓄積する。
多重分離部4104は、CPU4109からMPEGトランスポートストリームを受け取り、CPU4109から指定された情報を抽出し、CPU4109に引き渡す。また、MPEGトランスポートストリームをそのままTSデコーダ4105に引き渡す。
TSデコーダ4105は、CPU4109から、音声データ、映像データの識別子を受け取る。さらに、多重分離部4104から受け取ったストリームから、受け取った音声データ、映像データの識別子に対応するデータを抽出する。抽出した映像データを映像出力部4106に、音声データを音声出力部4107に、それぞれ引き渡す。
映像出力部4106、音声出力部4107は、上記した本実施の形態におけるデータ出力装置1301の映像出力部1408、音声出力部1409と同様のものである。
ネットワーク部4108は、ネットワークインタフェースを含み、CPU4109から受け取ったデータを、ネットワークインタフェースが接続されたネットワークの物理メディアに応じた信号に変換して出力する。また、ネットワークインタフェースから信号を受信し、IPネットワークで規定されたパケットに変換して、CPU4109へ引き渡す。
CPU4109は、第2メモリ4103が記憶するプログラムを実行することで、多重分離部4104、TSデコーダ4105、ネットワーク部4108を制御する。
図42は、本発明の実施の形態2に係る端末1302および端末1303のそれぞれに保持され、実行されるプログラムの構成の一例を示す図である。本図は、第2メモリ4103に記憶され、CPU4109に実行されるプログラムの構成の一例を示す。
プログラム4200は、複数のサブプログラムで構成され、具体的にはOS4201、JavaVM4202、サービスマネージャ4203、Javaライブラリ4204で構成される。
OS4201は、端末1302および端末1303の電源が投入されると、CPU4109が起動するサブプログラムである。OSは、オペレーティングシステムの略であり、Linux等が一例である。OS4201は、他のサブプログラムを平行して実行するカーネル4201a及びライブラリ4201bで構成される公知の技術の総称であり、詳細な説明は省略する。
本実施の形態においては、OS4201のカーネル4201aは、JavaVM4203をサブプログラムとして実行する。また、ライブラリ4201bは、これらサブプログラムに対して、端末1302および端末1303が保持する構成要素を制御するための複数の機能を提供する。
本実施の形態では、ライブラリ4201bは機能の一例として、限定解除4201b1、AV再生4202b2、NET4201b3を含む。
限定解除4202b1は、他のサブプログラムやJavaライブラリ4204のCA4204cから情報を受け取り、ネットワークから受信した暗号化データを復号したり、AV再生4201b2を有効にして、ネットワークから受信したマルチメディアデータの再生を許可したりするものである。
AV再生4202b2は、他のサブプログラムやJavaライブラリ4204のJMF4204aから、音声のパケットIDと映像のパケットIDを受け取る。受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ4105に与える。この結果、TSデコーダ4105は与えられたパケットIDに基づいて、フィルタリングを行い、映像・音声の再生を実現する。
NET4201b3は、他のサブプログラムやJavaライブラリ4204のネットワークライブラリ4204dから受け取ったデータを、IPネットワークで規定されるアプリケーション層より下のプロトコルのパケットを作成する。
アプリケーション層より下のプロトコルとは、例えばTCPパケット、UDPパケット、IPパケットなどである。これをネットワーク部4108に引き渡すことで、ネットワーク1304を介して他の機器にメッセージおよびデータを送信する。
また、ネットワーク1304を介して他の機器からのメッセージを受信したときに、他のサブプログラムやJavaライブラリ4204のネットワークライブラリ4204dに、アプリケーション層のプロトコルのパケットに変換して引き渡す。アプリケーション層のプロトコルとは、例えば、HTTP、RTSPやRTPなどである。
JavaVM4202は、上記した本実施の形態におけるデータ出力装置1301のJavaVM1603と同様のものである。
サービスマネージャ4203は、上記した本実施の形態におけるデータ出力装置1301のサービスマネージャ1604と、以下の相違点を除いて同様のものである。
サービスマネージャ1604はEPG1602の再生部1602bよりチャンネル識別子を受け取り、その識別子をTuner1605cに引き渡してチューニングさせ、さらにCA1605dに依頼してデスクランブルを行い、JMF1605aにチャンネルの識別子を与えて映像・音声の再生を依頼するものであったが、サービスマネージャ4203は、Javaライブラリ4204の中にあるList4204iからコンテンツの識別子を受け取り、ネットワークライブラリ4204dにコンテンツの識別子およびそれを蓄積している装置などの情報を引き渡して、該装置からストリームを受信し、続いて、Javaライブラリ4204の中にあるJMF4204aにコンテンツの識別子を与えることで、映像・音声の再生を依頼するものである。List4204iについては、後述する。
サービスマネージャ4203は、Javaライブラリ4204の中にあるネットワークライブラリ4204dに、コンテンツの識別子とデータ出力装置1301のIPアドレスなどの情報、該コンテンツにアクセスするためのURIなどの情報を与えて、データ出力装置1301へのマルチメディアデータ送信要求発行と該マルチメディアデータの受信を依頼し、さらに、ネットワークライブラリ4204dに、データ出力装置1301から送信されたマルチメディアデータの受信を依頼する。ネットワークライブラリ4204dでは、依頼を受けると、データ出力装置1301と接続して、マルチメディアデータの送信要求を発行する。そして、ネットワークライブラリ4204dは、データ出力装置1301から送信されたデータをCPU4109へ引き渡す。これにより、受信したマルチメディアデータを多重分離部4104に引き渡すことが可能となり、該マルチメディアデータの再生が行える。
Javaライブラリ4204は、第2メモリ4103に格納されている複数のJavaライブラリの集合である。本実施の形態では、Javaライブラリ4204は、JMF4204aと、AM4204bと、CA4204cと、ネットワークライブラリ4204dと、再生Lib4204eと、List4204iとを含んでいる。
JMF4204aと、AM4204bと、再生Lib4204eと、IO4204fと、AWT4204gと、SI4204hとは、それぞれ、上記した本実施の形態におけるデータ出力装置1301のJavaライブラリ1605の中のJMF1605a、AM1605b、再生Lib1605f、IO1605g、AWT1605h、SI1605iと同様のものである。
CA4204cは、ネットワーク1304経由で送信されてきたマルチメディアデータのコピー制御および課金など、該マルチメディアデータの権利処理を管理するものである。コピー制御は、送信されてきたトランスポートストリームのセクション情報に含まれているコピー制御情報を参照して、必要であれば書き換えを行う。また、課金などは、ネットワークライブラリ4204dを通して、データ出力装置1301と通信することによって行う。
List4204iは、データ出力装置1301におけるEPGやデータ出力装置1301が蓄積しているマルチメディアコンテンツの一覧を表示し、入力部4101が受け付けたユーザ操作によって、一覧からひとつのマルチメディアコンテンツを選択し、サービスマネージャ4203に再生を依頼するものである。このとき、データ出力装置1301の情報もサービスマネージャ4203に引き渡す。また、データ出力装置1301におけるEPGおよびデータ出力装置に蓄積されたコンテンツの一覧は、ネットワークライブラリ4204dを通して、取得することができる。これらの情報は、UPnPAVに定義された方法によって実現できるため、詳細説明は省略する。
ネットワークライブラリ4204dは、OS4201bのNET4201b3を通して、ネットワーク1304に接続されたデータ出力装置1301と通信するものである。データ出力装置1301との通信は、マルチメディアデータの一覧送受信、およびマルチメディアデータの送信要求発行と該マルチメディアデータの受信である。
図43は、ネットワークライブラリ4204dの内部構成の一例を示すブロック図である。
ネットワークライブラリ4204dは、制御部4301、情報送信部4302、情報受信部4303、判定部4304、データ受信部4305を含む。なお、ネットワークライブラリ4205dは、IPネットワークに関連する他の機能を含んでも良い。
制御部4301は、ダウンロードしたJavaアプリケーションに対して、ネットワークライブラリ4204dが実現する機能を提供する。すなわち、制御部4301は、ダウンロードしたJavaアプリケーションに対してJava APIを提供し、JavaアプリケーションがこのAPIを呼び出すことで、ネットワークを利用した機能が実現できる。
制御部4301は、Java APIが呼び出されると、適宜、情報送信部4302、情報受信部4303、判定部4304、データ受信部4305や、他のJavaライブラリ4204およびOS4201のライブラリ4201bを利用して処理を行う。
図44は、ネットワークライブラリ4204dの内部構成に含まれる制御部4301が提供するJava APIの一例を示す図である。
図44(1)メソッドcollectNetDevice()は、ネットワーク1304に接続されている外部装置の情報を集め、その情報としてNetDeviceオブジェクトの配列を返し、失敗時はnullを返す。本メソッドにより、ネットワーク1304に接続された機器の情報を得ることができる。NetDeviceクラスは図30に示したものと同様である。本メソッドの処理は、UPnP DAに定義された方法によって行うことが可能であるため、詳細説明は省略する。
図44(2)メソッドgetMultimediaData()は、引数contで与えられたマルチメディアデータを、引数offsetで与えられた時間位置から受信し、引数osで与えられたOutputStreamオブジェクトに出力する。
引数osは、受信したマルチメディアデータをCPU4109に渡す役割をするものである。引数offsetは、先頭を0とした時間位置を秒単位で与えるものである。また、開始点を指定しない場合は、引数offsetに負の値を与える。これは、処理としては、offsetに0が与えられた場合と同様の処理となる。
なお、本実施の形態においては、開始点のみ引数で与えることとしたが、引数を追加して、終了点の時間位置も与えても良い。この場合、終了点を指定しないときは、該引数に負の数を与えることで実現しても良い。また、RTSPを使ったデータ通信の制御を行っているため開始点および終了点は時間位置としたが、他のプロトコル、例えばHTTPの場合、開始点および終了点はバイト位置を与えるものであっても良い。
引数contは、ContentInfoクラスのオブジェクトとして与えられる。
図45に、ネットワークライブラリ4204dで使用されるContentInfoクラスの構成の一例を示す図である。
図45において、メンバ変数devは、該マルチメディアデータを送信する装置をNetDeviceオブジェクトとして格納するものである。
また、メンバ変数cidは、該マルチメディアデータのコンテンツの識別子を表すものである。また、メンバ変数contentURIは、該マルチメディアデータにアクセスするためのURIを文字列で格納するものである。また、メンバ変数titleは該コンテンツの題名を文字列で格納するものである。また、メンバ変数gunreは、映画などといった、該コンテンツの種別を文字列で格納するものである。
また、メンバ変数broadDateは、該コンテンツが放送された日時を文字列で格納するものである。また、メンバ変数recDateは、該コンテンツが録画・蓄積された日時を文字列で格納するものである。また、メンバ変数lastPlayDateは、これまでに該コンテンツを再生もしくはデータ出力装置1301から送信した最後の日時を文字列で表すものである。
また、メンバ変数isPausedは、該マルチメディアデータの送信もしくは再生が途中で中断された状態の場合はtrueを、そうでない場合はfalseをとるboolean型の変数である。これらの情報は、データ出力装置1301から受信したコンテンツ一覧もしくはEPGデータに含まれているものであり、後述のメソッドgetContentList()およびgetEPGData()によって取得できる。
本メソッドは、あとでデータの受信に関する制御を行うために、引数contで与えられた情報、および、本メソッドにより開かれたRTSPセッションのセッション番号と、メッセージのシーケンス番号とを、ネットワークライブラリ4204d内部で記憶・管理しておく。
また、本メソッドでは、該マルチメディアデータが出力中断中であるか否かを判定し、出力中断中の場合は、本メソッドの前に、後述のsetTransferMode()によって設定されていれば、その設定により再開するか否かを決定する。また、設定されていなければ、後述のメソッドregisterHandler()によって登録されたClientHandlerインタフェースを実装したハンドラオブジェクトを用いて、Javaアプリケーションに、それを通知する。
Javaアプリケーションでは、ユーザに提示してユーザ入力を受け付けるなどして、中断したデータ出力を再開するか否かを決定し、後述のメソッドsetTransferMode()を用いてネットワークライブラリ4204dに通知する。本メソッドの詳細については、後述する。
図44(3)メソッドpausePlayback()は、Javaアプリケーションから、ネットワークライブラリ4204dへ、マルチメディアデータの受信を中断する依頼を出すものであり、成功すればtrueを返し、失敗すればfalseを返す。本メソッドが呼び出されると、ネットワークライブラリ4204dは、後述する情報送信部4302のメソッドnotifyPause()もしくはnotifyPauseForReopen()を呼び出して、PAUSEリクエストメッセージを送信する。
この場合、上記のRTSPセッション番号と、シーケンス番号を1だけ増やした値を引数として与える。シーケンス番号は更新される。そして、メソッドnotifyPause()の戻り値を返す。
また、図44(4)メソッドpauseForReopen()は、後述の情報送信部4302のメソッドnotifyPauseForReopen()を呼び出して送信するもので、成功すればtrueを返し、失敗すればfalseを返すものである。この場合も同様に、上記のRTSPセッション番号と、シーケンス番号を1だけ増やした値を引数として与え、シーケンス番号は更新される。
メソッドpauseForReopen()は、図44(5)のように、NetDeviceオブジェクトを引数にとり、引数で与えられた装置を、出力再開時の送信先として拡張ヘッダに記述するPAUSEリクエストを作成して送信する構成であっても良い。メソッドpausePlayback()、メソッドpauseForReopen()の処理の詳細については後述する。
図44(6)メソッドregisterHandler()は、引数handlerで与えられた、ClientHandlerインタフェースを実装したオブジェクトをシステムに登録するもので、成功すればtrueを返し、失敗すればfalseを返す。Javaアプリケーションは、該オブジェクトをハンドラとして登録することにより、ネットワークライブラリ4204dからコールバックを受けることができる。
図46は、ネットワークライブラリ4204dで使用されるClientHanlderインタフェースの構成の一例を示す図である。
図46において、ClientHandlerインタフェースのメソッドnorifyPause()は、引数cidで与えられた識別子のコンテンツが出力中断中であることを、Javaアプリケーションに通知するものである。
Javaアプリケーションは、後述のメソッドsetTransferMode()を用いて、この中断を再開するのか、もしくは、該コンテンツを先頭もしくはユーザが指定した位置から取得するのかを設定することが可能となる。Javaアプリケーションは、ユーザに該コンテンツが出力中断の状態であることを提示し、ユーザに出力を再開するか否かを問合せることが可能である。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
また、メソッドnotifyPauseAction()は、引数cidで表されるコンテンツの送信中断を行うことを、Javaアプリケーションに通知するものである。
Javaアプリケーションは、この中断を後に再開するか否かを、ユーザに提示して問合せることが可能であり、その内容を、後述のメソッドsetReopenStatus()を用いて、この中断を後に再開するか否かを、ネットワークライブラリ4204dに通知することが可能となる。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
また、メソッドaskReopenDevice()は、Javaアプリケーションに、中断したデータ送信を再開するときの出力先を登録するかどうかの問い合わせを通知するものである。
Javaアプリケーションは、ネットワーク1304に接続された端末など再生再開可能な装置の一覧をユーザに提示し、ユーザの選択を問合せることが可能である。また、Javaアプリケーションは、後述のメソッドsetReopenTerminal()によって、ユーザが選択した装置をネットワークライブラリ4204dに通知することが可能となる。Javaアプリケーションは、このような処理を行った後、処理の成否に応じて戻り値を返し、ネットワークライブラリ4204dに制御を戻す。
図44(7)メソッドsetTransferMode()は、Javaアプリケーションから、ネットワークライブラリ4204dへ、引数cidで与えられた識別子のコンテンツに対し、出力中断中の場合に、中断位置からの送信を再開するか、もしくは、先頭あるいはユーザが指定した位置から送信を開始するかを、引数flagで与えられた値から設定するもので、成功すればtrueを返し、失敗すればfalseを返すものである。引数flagにて0が与えられれば出力再開とし、正の値が与えられれば、出力再開ではなく先頭あるいはユーザが指定した位置からのデータ取得であると判定する。
また、負の値が与えられれば、その時点の設定をキャンセルし、未設定の状態に戻す。本メソッドは、上記のClientHandlerのメソッドnotifyPauseContent()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。メソッドgetMultimediaData()は、本メソッドによる設定にしたがって動作する。
図44(8)メソッドsetReopenStatus()は、引数cidで与えられた識別子のコンテンツのデータ送信を中断する際に、それを後に再開するか否かの状態を設定するもので、引数flagが0の場合は再開することを表し、正の値の場合は再開しないことを表す。
また、負の値の場合は、その時点の設定をキャンセルし、未設定の状態に戻す。処理が成功すればtrueを返し、失敗すればfalseを返す。本メソッドは、上記のClientHandlerのメソッドnotifyPauseAction()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに設定する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。
図44(9)メソッドsetReopenTerminal()は、引数devで与えられた装置を、引数cidで与えられた識別子のコンテンツのデータ送信を中断し、それを再開する時の送信先として登録するもので、成功すればtrueを返し、失敗すればfalseを返す。
引数devでnullが与えられた場合は、未設定の状態に戻す。上記のClientHandlerのメソッドaskReopenDevice()によるコールバックの返答としてJavaアプリケーションから呼び出される場合の他に、システムに送信先として登録する場合に用いられる。この設定は第1メモリ4102もしくは第2メモリ4103に保存される。
図44(10)メソッドgetContentList()は、引数devで与えられた装置から、コンテンツ一覧を取得してContentInfoオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればnullを返す。また、引数devで与えられた装置に、ネットワーク104を通じて提供できるコンテンツがない場合は、要素数0のContentInfoオブジェクトの配列を返す。この処理における通信は、UPnP AVで定義された方法によって行えるため、詳細は省略する。
図44(11)メソッドgetEPGData()は、引数devで与えられた装置から、EPGを取得してContentInfoオブジェクトの配列として返すもので、成功すれば該配列を返し、失敗すればnullを返す。この処理における通信は、UPnP AVで定義された方法によって行えるため、詳細は省略する。
情報送信部4302は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器へRTSPのリクエストメッセージの送信を行うものである。
情報送信部4302は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図47は、ネットワークライブラリ4204dの内部構成に含まれる情報送信部4302が提供するJava APIの一例を示す図である。
図47(1)メソッドconnectToServer()は、Socketオブジェクトsを生成し、Socketオブジェクトsを用いて引数devで与えられた装置とTCPセッションを確立して、Socketオブジェクトsと引数devの内容とでRemoteDeviceオブジェクトを生成して返すものであり、成功すれば該RemoteDeviceオブジェクトを返し、失敗すればnullを返す。RemoteDeviceクラスの構成は、図30に示したものと同様である。このTCPセッション上で、RTSPセッションの通信が行われる。
図47(2)メソッドsendData()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数mesで与えられたデータを送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。
図47(3)メソッドsendRequestMessage()は、引数devで与えられた外部装置へ、引数devで与えられたSocketオブジェクトを用いて、引数reqで与えられたRTSPリクエストメッセージを生成して送信するものであり、成功すればtrueを返し、失敗すればfalseを返す。引数reqはRequestInfoクラスのオブジェクトで与えられる。RequestInfoクラスは図36で示したものと同様である。
図47(4)メソッドnotifyPlay()は、引数cont、seq、session、offset、restartで与えられた情報からRTSPのPLAYリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PLAYを表す1を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、引数offsetが0以上の値であれば、その値からRangeヘッダをStringオブジェクトで生成して、reqのメンバ変数rangeへ設定する。
また、引数restartがtrueの場合は、X−Restartヘッダを、値を「Yes」として作成し、Stringオブジェクトを作成してそこに格納する。さらに、必要に応じて拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、reqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PLAYリクエストメッセージを送信する。
図47(5)メソッドnotifyPause()は、引数cont、seq、sessionで与えられた情報からRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、必要に応じて拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、reqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。
図47(6)メソッドnotifyPauseForReopen()は、引数cont、seq、sessionで与えられた情報から、X−Keep−Pause−Statusヘッダ付きのRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。X−Keep−Pause−Statusヘッダは、後に中断した送信を再開することをより明確に示す目的で使用する。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、X−Keep−Pause−Status拡張ヘッダを、その値を「Yes」としてStringオブジェクトで生成する。また、必要に応じて他の拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、これらをStringオブジェクトの配列としてreqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。
図47(7)メソッドnotifyPauseForReopen()は、引数cont、seq、session、rtermで与えられた情報から、送信再開時の送信先装置を拡張ヘッダに含んだRTSPのPAUSEリクエストメッセージを生成し、引数devで与えられた装置に送信するもので、成功すればtrueを返し、失敗すればfalseを返す。送信再開時の送信先装置を示す拡張ヘッダとして、X−Reopen−Terminalを用いることとする。
本メソッドは、まず、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeに、PAUSEを表す2を設定する。続いて、引数seqと引数sessionで与えられた値を、それぞれreqのメンバ変数seq、sessionに設定する。さらに、引数contで与えられたContentInfoオブジェクトから、そのメンバ変数contentURIを読み出して、reqのメンバ変数contentURIに設定する。さらに、reqのメンバ変数rangeはnullに設定する。さらに、拡張ヘッダX−Reopen−Terminnalを用いて、送信再開時の送信先端末を記述したヘッダをStringオブジェクトで生成する。拡張ヘッダX−Reopen−Terminalの値は、引数rtermから得られる、該端末のIPアドレスであっても良いし、該端末のホスト名であっても良いし、該端末につけたニックネームであっても良い。ニックネームはNetDeviceオブジェクトrtermのメンバ変数friendlyNameから得られる。さらに、必要に応じて他の拡張ヘッダなど他のヘッダをStringオブジェクトとして生成し、これらをStringオブジェクトの配列としてreqのメンバ変数extendHeaderに設定する。そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、メソッドsendRequestMessage()を呼び出すことにより、PAUSEリクエストメッセージを送信する。本メッセージには、X−Keep−Pause−Status拡張ヘッダを含む構成であっても良い。
情報受信部4303は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からのRTSPのレスポンスメッセージの受信を行うものである。
情報受信部4303は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からのRTSPのレスポンスメッセージの受信を行うものである。
情報受信部4303は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図48は、ネットワークライブラリ4204dの内部構成に含まれる情報受信部4303が提供するJava APIの一例を示す図である。
図48(1)メソッドreceiveData()は、引数devで与えられた外部装置から、引数devで与えられたSocketオブジェクトを用いてメッセージを受信し、そのメッセージをバイト列で返すものであり、成功すれば該バイト列を返し、失敗すればnullを返すものである。
図48(2)メソッドreceiveResponseMessage()は、引数devで与えられた外部装置から、引数devで与えられたSocketオブジェクトを用いて、RTSPのレスポンスメッセージを受信し、それを解釈してResponseInfoオブジェクトを生成して返すものであり、成功すれば該ResponseInfoオブジェクトを返し、失敗すればnullを返す。ResponseInfoクラスは、図38に示したものと同様である。
本メソッドが呼び出されると、まず、メソッドreceiveData()を呼び出して、レスポンスメッセージを受信する。続いて、ResponseInfoオブジェクトresを生成する。さらに、受信したレスポンスメッセージを解釈し、resのメンバ変数responseCode、seq、sessionを設定する。また、レスポンスメッセージにRangeヘッダが含まれていれば、そのヘッダをStringオブジェクトとして、resのメンバ変数rangeに設定する。Seqヘッダ、Sessionヘッダ、Rangeヘッダ以外のヘッダがあれば、各ヘッダごとに、ひとつのStringオブジェクトを生成して設定し、それらを配列として、resのメンバ変数headersに設定する。Seqヘッダ、Sessionヘッダ、Rangeヘッダ以外のヘッダがなければ、resのメンバ変数headersはnullに設定する。そして、resを返す。また、不正なレスポンスメッセージの場合やレスポンスメッセージの受信に失敗した場合は、nullを返す。
判定部4304は、コンテンツの属性情報から、該コンテンツが出力中断中の属性を持っているか否かを判定するものである。
判定部4304は、ネットワークライブラリ4204dおよびダウンロードしたJavaアプリケーションにJava APIを提供する。
図49は、ネットワークライブラリ4204dの内部構成に含まれる判定部4304が提供するJava APIの一例を示す図である。
図49(1)メソッドisContentPause()は、引数cidによって与えられた識別子をもつコンテンツが、出力中断中であるか否かを判定するものであり、出力中断中と判定されればtrueを返し、出力中断中でないと判定されるか、処理に失敗すればfalseを返す。
本メソッドが呼び出されると、ネットワークライブラリ4204dは、IO4204fを用いて、第2メモリ4103に記憶されているコンテンツ一覧を読み出す。読み出したコンテンツ一覧から、引数cidで与えられた識別子をもつコンテンツを検索する。検索したコンテンツの属性情報を調べ、出力中断中の属性があれば、trueを返して終了し、出力中断中の属性がなければfalseを返して終了する。また、第2メモリ4103からコンテンツ一覧を読み出せないか、もしくは、読み出したコンテンツ一覧に、引数cidで与えられた識別子をもつコンテンツがない場合は、falseを返して終了する。
図49(2)メソッドisContentPause()は、引数にContentInfoオブジェクトをもつ構成である。本メソッドは、引数で与えられたConentInfoオブジェクトのコンテンツが、出力中断中か否かを判定するものであり、出力中断中と判定されればtrueを返し、出力中断中でないと判定されればfalseを返す。本メソッドは、引数で与えられたContentInfoオブジェクトのメンバ変数isPauseの値を返す。
データ受信部4305は、OS4201のライブラリ4201のNET4201b3を通じてネットワーク部4108を制御し、指定されたネットワーク1304に接続されている外部機器からマルチメディアデータを受信するものである。
データ受信部4305は、制御部4301およびダウンロードしたJavaアプリケーションにJava APIを提供する。
図50は、ネットワークライブラリ4204dの内部構成に含まれるデータ受信部4305が提供するJava APIの一例を示す図である。
図50(1)メソッドopenRemoteProgram()は、引数devで与えられた装置から、引数contで与えられたコンテンツの、マルチメディアデータを受信する通信路を確保し、RemoteProgramオブジェクトで返すもので、成功時には該オブジェクトが、失敗時にはnullが返る。
図51は、ネットワークライブラリ4204dで使用されるRemoteProgramクラスの構成の一例を示す図である。
図51において、メンバ変数sessionは、このマルチメディアデータ通信を制御するRTSPセッションのセッション番号を表す。また、メンバ変数sは、マルチメディアデータを受信するRTPのDatagramSocketオブジェクトを表す。また、メソッドgetData()は、RTPによりデータを受信し、RTPパケットからマルチメディアデータを抽出して返すものである。
メソッドgetData()は、1回の呼び出しで、RTPパケット1個分のデータを返すとは限らないが、複数のRTPパケットをまとめて返す場合は、必ず、パケット番号が連続の区間のデータを返すものである。メソッドopenRemoteProgram()が呼び出されると、ネットワークライブラリ4204dは、引数devで与えられた装置に、引数contで与えられたコンテンツに対する、RTSPのSETUPメッセージを送信する。そして、レスポンスメッセージを受け取り、解釈して、SETUPが成功していればRemoteProgramオブジェクトを作成して返し、失敗していればnullを返す。
また、TCPセッションが切断された場合などにより、SETUPメッセージが送信できない、もしくは、レスポンスメッセージが受信できないといった異常が発生した場合もnullを返す。
以下、本メソッドの処理について、さらに詳しく説明する。まず、本メソッドが呼び出されると、RequestInfoオブジェクトreqを生成する。そして、reqのメンバ変数requestTypeを、SETUPを表す0に設定する。メンバ変数seqは1に設定する。
また、SETUPリクエストでは、まだセッション番号は割り当てられていないため、メンバ変数sessionは任意の値でよい。さらに、引数contで与えられたContentInfoオブジェクトから、メンバ変数のcontentURIの値を読み出し、reqのメンバ変数contentURIにStringオブジェクトとして設定する。SETUPでは、Rangeヘッダは送信しないため、reqのメンバ変数rangeはnullとしておく。
さらに、マルチメディアデータを受信するUDPのポート番号を発行し、その値を記述することでTransportヘッダを生成し、Stringオブジェクトを生成して、Transportヘッダの文字列を設定する。さらに、要素数が、Transportヘッダを含んだStringオブジェクトのみの1個であるStringオブジェクトの配列を生成し、reqのメンバ変数extentHeaderに設定する。
そして、reqと引数devで与えられたRemoteDeviceオブジェクトを引数として、情報送信部4302のメソッドsendRequestMessage()を呼び出し、SETUPメッセージを送信する。さらに、引数devで与えられたRemoteDeviceオブジェクトを引数として、情報受信部4303のメソッドreceiveResponseMessage()を呼び出し、レスポンスメッセージを受信してResponseInfoオブジェクトを得る。
このResponseInfoオブジェクトをresとすると、まず、resのメンバ変数responseCodeを調べ、OKである200であるか否かを調べる。200でなければSETUPが失敗したことを表し、nullを返して終了する。続いて、RemoteProgramオブジェクトrpを生成する。
rpのメンバ変数sessionには、resのメンバ変数sessionの値を設定する。また、resのメンバ変数headersを検索し、Transportヘッダを探す。Transportヘッダがなければ、nullを返して終了する。Transportヘッダがあれば、そこから、server_portで表される、サーバがマルチメディアデータを出力するポート番号を得る。
このポート番号と、上記したネットワークライブラリ4204dがデータを受信するポート番号と、引数devから得られるサーバの情報から、DatagramSocketオブジェクトを生成してサーバとconnectし、rpのメンバ変数sに設定する。そして、rpを返して、処理を終了する。
ここで、制御部4301のメソッドgetMultimediaData()の動作について、より詳細に説明する。本メソッドが呼び出されると、まず、引数contで与えられたコンテンツ情報をネットワークライブラリ4204dで記憶、管理する。
ネットワークライブラリ4204dは、続いて、引数contのメンバ変数devを引数にあたえることにより、情報受信部4302のメソッドconnectToSever()を呼び出して、データ出力装置1301とRTSPメッセージを通信するTCPセッションを確立し、戻り値としてRemoteDeviceオブジェクトを受け取る。このRemoteDeviceオブジェクトをrdevとする。rdevは、ネットワークライブラリ4304dによって記憶され管理される。
また、メソッドrdevは、registerHandler()によって登録されたハンドラオブジェクトを用いたコールバックを行い、Javaアプリケーションに与えて、Javaアプリケーションが管理する構成であっても良い。具体的には、図46に示したClientHandlerインタフェースにpublic boolean notifyRemote(RemoteDevice dev)というメソッドを追加し、引数にrdevを与えて呼び出すことで、Javaアプリケーションに与えることが可能となる。
続いて、rdevとcontを引数として、データ受信部4305のメソッドopenRemoteProgram()を呼び出し、RTSPセッションを開始するとともに、マルチメディアデータを受信するRemoteProgramオブジェクトを受け取る。このRemoteProgramオブジェクトをrpとする。
続いて、contを引数として判定部4304のメソッドisContentPause()を呼び出すことにより、該マルチメディアデータが出力中断中か否かを判定する。出力中断中ではないと判定された場合は、情報送信部4302のメソッドnotifyPlay()を呼び出すことにより、データ出力装置1301にPLAYリクエストメッセージを発行する。
この場合の引数は、第1引数にはrdevを、第2引数にはcontを、第3引数には2を、第4引数にはrpのメンバ変数sessionを、第5引数には引数offsetで与えられた値を、第6引数にはfalseを、それぞれ用いる。
第3引数は、RTSPセッションのシーケンス番号であり、1はデータ受信部4305のメソッドopenRemoteProgram()の中で、SETUPに用いられている。ネットワークライブラリ4204dは、このセッション番号を記憶して管理し、メソッドnotifyPlay()が呼び出された後は、記憶しているセッション番号は2となる。
該コンテンツが出力中断中であると判定された場合、ネットワークライブラリ4204dは、まず、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、該コンテンツに対して出力再開をするか否かの設定がなされているかを検索する。
出力再開をしないと設定されている場合は、上記と同様の処理を行い、情報送信部4302のメソッドnotifyPlay()を呼び出す。出力を再開すると設定されていた場合は、情報送信部4302のメソッドnotifyPlay()を、上記と第5引数と第6引数を変えて呼び出す。この場合、第5引数には任意の負の値を、第6引数にはtrueを与える。
また、出力再開に関して設定されていない場合は、メソッドregisterHandler()で設定されたハンドラhのメソッドnotifyContentPause()を呼び出し、Javaアプリケーションに出力中断中のコンテンツであることを通知する。この場合に、引数はcontのメンバ変数cidを与える。
Javaアプリケーションは、メソッドsetTransferMode()によって設定を行ったあと、制御をネットワークライブラリ4204dに戻す。ネットワークライブラリ4204dは、Javaアプリケーションによって行われた設定にしたがい、上記と同様に、情報送信部4302のメソッドnotifyPlay()を呼び出す。このとき、Javaアプリケーションによって未設定とされた場合は、出力再開を行わないとみなすこととする。
メソッドnotifyPlay()を呼び出した後、さらに、情報受信部4303のメソッドreceiveResponse()を、引数としてrdevを与えることにより呼び出し、PLAYリクエストに対するレスポンスメッセージを受信し、ResponseInfoオブジェクトを受け取る。受け取ったResponseInfoオブジェクトをriとする。
riのメンバ変数responseCodeを調べ、OKを表す200であれば、rpのメソッドgetData()を呼び出して、データ出力装置1301から送信されてきたデータを受信する。rpのメソッドgetData()からデータを受け取れば、それを引数osで与えられたOutputStreamに出力し、以降、PAUSEメッセージを発行する制御部4301のメソッドが呼び出されるまで、rpのメソッドgetData()の呼び出しと受信したデータのosへの出力を繰り返す。
PAUSEメッセージを発行する制御部4301のメソッドとは、pausePlayback()、pauseForReopen()であり、これが呼び出されると、繰り返しのループの中で参照するフラグをセットするなどして、データ受信とosへの出力のループを停止させる。あるいは、本メソッドは別のスレッドもしくはプロセスを生成しそのスレッドもしくはプロセス上で動作するか、上記ループのみ別のスレッドもしくはプロセスで動作させ、例えば、該スレッドnotifyTerminate()といったメソッドを用意して、このメソッドによって通知したり、プロセス間通信を用いて通知する構成であっても良い。riのメンバ変数responseCodeが、200でなければfalseを返して処理を終了する。
なお、メソッドgetMultimediaData()の引数osに、IO4204fから受け取った第2メモリ4103のファイルへ出力するOutputStreamを与えると、本メソッドによって、マルチメディアデータを第2メモリ4103上へ蓄積することが可能となる。
次に、メソッドpausePlayback()、メソッドpauseForReopen()の処理について詳細に説明する。
メソッドpausePlayback()が呼び出されたときに、ネットワークライブラリ4204dは、まず、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、該コンテンツのデータ送信中断に対して出力再開を行うか否かの設定を検索する。
出力再開を行わないと設定されている場合は、情報送信部4302のメソッドnotifyPause()を呼び出す。この場合、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号とを、それぞれ、引数として与える。
また、出力再開を行うと設定されている場合は、IO4204fを用いて第1メモリ4102もしくは第2メモリ4103を検索し、出力再開時の送信先端末が設定されているか否かを検索する。
送信先端末が設定されている場合は、図47(7)のメソッドnotifyPauseForReopen()を呼び出す。このとき与える引数は、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号、および設定されている装置のNetDeviceオブジェクトである。
送信先端末が設定されていなければ、図47(6)のメソッドnotifyPauseForReopen()が呼び出される。このとき与える引数は、ネットワークライブラリ4204dが管理している、サーバのRemoteDeviceオブジェクト、データ受信を行っているコンテンツに対応するContentInfoオブジェクト、RTSPのシーケンス番号とセッション番号である。
また、出力再開について未設定である場合は、メソッドregisterHandler()によって設定されたハンドラオブジェクトhのメソッドnotifyPauseAction()を呼び出し、Javaアプリケーションに送信停止処理を行うことを通知する。このとき与えられる引数はネットワークライブラリ4204dが管理しているContentInfoオブジェクトのメンバ変数cidである。
Javaアプリケーションでは、メソッドsetReopenStatus()を用いて、出力再開の設定要求を行うか否かを通知し、制御をネットワークライブラリ4204dに戻す。ネットワークライブラリ4204dでは、設定された内容に基づき、上記と同様に、情報送信部4302のメソッドnotifyPauseForReopen()を呼び出す。このとき、Javaアプリケーションによって、未設定とされた場合は、出力再開を行わないとみなすこととする。
以上の処理の後、さらに、上記のメソッドgetMultimediaData()の受信動作を停止させる処理を行い、呼び出した情報送信部4302のメソッドnotifyPause()もしくは、notifyPauseForReopen()の戻り値を返して、処理を終了する。
なお、出力再開時の端末が設定されていない場合は、ハンドラhのメソッドnotifyReopenDevice()を呼び出して、Javaアプリケーションに通知し、Javaアプリケーションは、メソッドsetReopenTerminal()を用いて出力先端末を設定する構成であっても良い。この場合、Javaアプリケーションによって出力先端末が未設定とされた場合は、出力先端末の指定を行わないとみなすこととする。
図47(6)メソッドnotifyPauseForReopen()は、上記メソッドpausePlayback()において、出力再開を行うと設定されている場合の処理と同様である。
また、図47(7)メソッドnotifyPauseForReopen()は、上記メソッドpausePlayback()において、出力再開を行うと設定されていて、かつ、出力先端末が設定されている場合と、以下の点を除いての処理を行う。
相違点は、上記pausePlayback()では、図47(7)メソッドnotifyPauseForReopen()を呼び出すときに、第5引数として設定された出力先端末のNetDeviceオブジェクトを用いたが、本メソッドでは、引数devで与えられたNetDeviceオブジェクトを用いることである。
以上、説明したとおり、実施の形態にかかるマルチメディア配信システム1305を構成するデータ出力装置1301は、データ出力中に端末からデータ出力中断要求を受け取ると、出力を中断したマルチメディアデータおよび出力中断位置から得られる再開位置情報を装置内部に記憶し、端末からのデータ出力再開要求と出力先端末を受け取ると、記憶した再開位置情報を読み出して、データ出力を再開するものである。
また、本実施の形態にかかる端末1302および端末1303は、あるマルチメディアデータが、データ出力装置1301において、出力中断中であると判定した場合に、データ出力再開要求と出力先端末を送信することにより、データ出力装置1301に、データ出力を再開させる機器制御部1501を含むものである。この構成により、例えば、端末1302にて、あるマルチメディアコンテンツの視聴を中断し、端末1303にて、そのマルチメディアコンテンツの視聴を、中断した位置から再開する、といったことが可能となる。
(実施の形態2の変形例)
本発明の実施の形態2について説明してきたが、本発明は、上記の実施の形態2に限定されるものではない。以下のような場合も、本発明に含まれる。
本発明の実施の形態2について説明してきたが、本発明は、上記の実施の形態2に限定されるものではない。以下のような場合も、本発明に含まれる。
(1) データ出力装置1301は、データ出力を中断するときに発行した、この中断を識別する識別子を、コンテンツ一覧に含める、SETUPリクエストのレスポンスに拡張ヘッダとして含めるなどの方法によって端末に送信し、データ出力再開要求とともにこの識別子を受信したときに、データ出力を再開する構成であっても良い。この識別子の通信は、PLAYリクエストメッセージに拡張ヘッダを設けることであっても良いし、X−Restartヘッダの値として使っても良い。この場合、データ出力装置1301は、拡張ヘッダX−Restartがあれば、出力再開であると判定し、その中断の識別子とコンテンツの識別子とで再開位置情報を検索する。
また、端末1302および端末1303の機器制御部1501は、上記識別子を取得したとき、データ出力再開要求とともに、上記識別子を送信する構成であっても良い。
また、上記識別子を、出力中断中の属性値として用いても良い。すなわち、図26において、PAUSE要素の内容を、この識別子に設定し、PAUSE要素があり、かつその内容が記述されている場合は出力中断状態であり、PAUSE要素がないか、PAUSE要素があっても内容を持たない空要素の場合は、出力中断状態ではない、としても良い。
また、データ出力装置1301が出力するコンテンツ一覧にて出力中断を表す属性の値として、上記の識別子を用いることとしても良い。
また、データ出力装置1301は、上記識別子をデータ出力中断要求の返答にて端末へ返信し、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合は、識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、上記識別子は、端末からデータ出力装置1301に提供されるものであっても良い。さらに、データ出力装置1301は、コンテンツ一覧には、上記識別子を含めない構成であっても良い。この場合も、同様に識別子を知っているユーザのみが、出力を再開できるため、セキュリティ向上などの効果が得られる。
また、データ出力装置1301は、上記識別子を、中断した日時や、中断した端末と組にして管理する構成であっても良い。
(2) 端末1302および端末1303は、データ出力中断要求を送信するときに、データ出力再開時の出力先も送信する構成であり、データ出力装置1301は、再開位置情報とともに前記出力先を記憶部1407に保存し、該データのデータ出力再開要求を受け付けたときに、前記出力先へ該データを出力する構成であっても良い。
この場合のデータ出力中断要求の一例としては、上記実施の形態におけるPAUSEリクエストメッセージに、拡張ヘッダX−Reopen−Terminalを追加し、その値として特定端末を記述するものである。出力先としては、端末のIPアドレスであっても良いし、各端末のホスト名であっても良いし、各端末につけたニックネームであっても良い。これらの情報は、UPnPDAに定義された方法によって取得可能である。
また、データ出力装置1301は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、該当出力先である端末からの要求によってのみ、データ出力を再開する構成であってもよい。
また、データ出力装置1301は、データ出力中断要求とともに、データ出力再開時の出力先を受信した場合、データ出力再開要求とともに出力先も受信して、記憶している出力先と照合し、一致した場合のみ、データ出力を再開する構成であってもよい。
(3) 上記実施の形態においては、データ出力装置1301は、デジタル放送を受信するSTBとしたが、それに限るものではない。チューナを持たずに、ネットワークからコンテンツを受信して蓄積する構成であっても良い。この場合の構成は図41と同様のものとなる。また、ネットワーク以外の部位によってデータを蓄積する構成であっても良い。
(4) また、上記においては、データ出力中断要求を受けたときに、引き続くデータを第2メモリ1403に書き込むこととしたが、データ出力中断要求を待たず、予め、該マルチメディアデータの先頭から第2メモリ1403に書き込んでおく構成であっても良い。
この場合、出力再開位置情報は、上記実施の形態における第2メモリ1403に蓄積したコンテンツと同様の方法によって作成することが可能である。
また、データ出力装置1301は、TSマルチプレクサ1410の出力であるマルチメディアデータのうち、常に一定時間もしくは一定容量分のデータを、第1メモリ1402もしくは図示していないバッファ領域に入れておき、データ出力中断要求を受けたときに、このバッファ領域にあるデータを含めて書き込むこととしても良い。また、データ出力再開位置を、このバッファ領域にあるデータを含めて算出しても良いし、含めなくても良い。
(5) データ出力装置1301は、さらに、データ出力装置1301上での再生を中断したマルチメディアデータに対して、再開位置情報を生成し記録する構成であっても良い。
この構成においても、上記実施の形態と同様の処理により、データ出力装置1301での再生を中断し、端末1302もしくは端末1303へ該データ出力再開を行うこと、および、端末1302もしくは端末1303への出力を中断し、データ出力装置1301上の再生として再開すること、などが可能となる。
(6) 上記実施の形態においては、データ出力装置1301が再開位置情報を記憶することとしたが、ネットワーク上の第3の機器が記憶しておく構成であっても良い。
図52は、本発明の実施の形態2の第6の変形例におけるマルチメディア配信システムの構成を示す図である。
図52に示すマルチメディア配信システム5206は、データ出力装置5201と、ネットワークを通じてデータ出力装置および端末を制御する制御装置5202と、第1の端末5203と、第2の端末5204と、ネットワーク5205とを備える。データ出力装置5201、制御装置5202、端末5203および端末5204は、ネットワーク5205に接続されており、ネットワーク5205を介して相互に通信可能である。
データ出力装置5201は、ネットワーク5205を通じて送信された、制御装置5202、端末5203および端末5204からの要求を受信する。そして、要求に応じて蓄積しているコンテンツごとの情報や属性を、ネットワーク5205を通じて制御装置5202へ送信し、また、要求に応じて蓄積しているコンテンツのマルチメディアデータを、ネットワーク5205を通じて端末5203および端末5204へ送信するものである。
また、マルチメディアデータの送信は、要求に応じて任意の場所から送出することが可能である。
データ出力装置5201は、実行中のデータ出力に対して、制御装置5202もしくは送信先端末より中断要求を受信すると、最後に送信したデータ位置の次の位置といった出力を再開するデータ位置と、該マルチメディアデータのファイル名もしくはURIとを、制御装置5202へネットワーク5205を通じて送信するものである。なお、後述の通り、必ずしも、この場合に該マルチメディアデータのファイル名もしくはURIを送信しなくとも良い。
制御装置5202は、ユーザの要求によって動作するものである。制御装置5202は、ネットワーク5205を通じて、端末5203および端末5204を制御し、データ出力装置5201からマルチメディアデータを受信させ、再生させる制御を行う。このような制御はUPnP AVに定義された方法により可能であるため、詳細は省略する。
また、データ出力装置5201へ要求することにより、コンテンツのタイトルなどといった情報や属性を受信し、端末5203、端末5204もしくは制御装置5202自身の表示部によって、ユーザに提示する。
また、ユーザから再生中断の要求を受けたとき、制御装置5202は、該再生を実行中の端末5203もしくは端末5204を制御して、データ出力装置5201へデータ送信中断要求を送信させるとともに、再生を中断させる。さらに、制御装置5202は、データ出力装置5201と通信して、出力を再開させるデータ位置と該マルチメディアデータのファイル名もしくはURIといった、該データを特定できる情報を受信し、再開位置情報として制御装置5202内に記憶する。
再開位置情報は、上記実施の形態2のものと同様のものを用いることが可能である。
なお、該マルチメディアデータのURIは、制御装置5202が再生要求を発行するときに用いるため、再生中断時には既知であり、必ずしも、再生中断時にデータ出力装置から受信しなくともよい。制御装置5202は、さらに、ユーザから再生再開要求と再生する端末が指定されると、前記再開位置情報を読み出し、該端末に再開位置からのデータをデータ出力装置5201から受信させて再生させる。
端末5203および端末5204は、制御装置5202からネットワーク5205を介して送信される要求にしたがって、指定サーバから、指定マルチメディアデータの、指定範囲のデータを受信し、再生、表示するものである。
ネットワーク5205は、上記実施の形態におけるネットワーク1304と同様のものである。
以上説明したとおり、本構成のマルチメディア配信システム5206では、制御装置5202が再開位置情報を管理することにより、例えば、端末5203で行っていたマルチメディアコンテンツの再生を中断し、端末5204で再開するといったことが可能となる。
なお、ここでは、制御装置5202は、データ出力装置5201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、データ出力装置5201が再開位置情報を作成し、制御装置5202はそれを受信して保存する構成であっても良い。
また、ここでは、制御装置5202は、データ出力装置5201から少なくとも出力を再開させるデータ位置を受信して再開位置情報を作成することとしたが、再生を実行していた端末5203もしくは端末5204から、少なくとも最後に再生したデータ位置などを受信して、再開位置情報を作成する構成であっても良い。
また、ここでは、制御装置5202が、端末5203もしくは端末5204に要求を発行し、端末からデータ出力装置5201へデータ送信要求を送信する構成としたが、制御装置5202が、データ出力装置5201へ端末5203もしくは端末5204へのデータ送信要求を発行し、さらに、該端末へは、データ出力装置5201からのデータ受信要求を発行する構成であっても良い。このような、データ転送制御は、FTP(File Transfer Protocol)によって行うことが可能である。
また、ここでは、ネットワーク上の独立の制御装置5202が、再開位置情報を保存するとしたが、ネットワーク上の任意の記憶部を持つ機器が再開位置情報を保存し、データ出力装置、機器制御装置、端末のいずれかが、その再開位置情報を取得、解釈するとしても良い。
(7) 上記の実施の形態2においては、データ伝送のプロトコルとしてRTP/RTSPを用いているが、HTTPなど、他のプロトコルを用いて行っても良い。HTTPを用いる場合のデータ出力中断要求は、HTTP−GETのセッションを切ることで行っても良いし、別セッションの通信で行っても良い。また、HTTPを用いる場合のデータ出力再開要求は、HTTP−GETに上記のX−Restartのような独自拡張ヘッダを用いて行っても良い。
(8) 上記の実施の形態2においては、送信再開位置として、最後の送信済データの次のデータ位置としたが、特定数のデータをさかのぼった位置としても良い。また、マルチメディアデータがMPEG2符号化データの場合、Iフレーム、MPEG2−TSにおけるPAT、など、復号するのに不可欠なものであって、送信済のデータの中の最後のものの先頭などとしても良い。また、マルチメディアデータが他の符号化データであっても、同様である。
(9) 上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(10) 上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(11) 本発明のデータ出力装置、機器制御装置は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明のデータ出力装置、機器制御装置は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(12) 上記実施の形態2及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明にかかるデータ出力装置、機器制御装置およびマルチメディア配信システムは、ネットワークを通じたマルチメディアコンテンツの再生などに関わるデータの通信において、中断したデータ通信を、受信する端末や装置を変更したとしても、的確に再開することが可能であるという優れた効果を有するため、ホームネットワークなどのネットワーク環境におけるマルチメディアコンテンツのサーバ装置、受信端末、機器制御装置、データ出力方法、機器制御方法などとして有用である。
101、1301 データ出力装置
102、103、1203、1204、1302、1303、5203、5204 端末
104、1205、1304、5205 ネットワーク
105、1206、1305、5206 マルチメディア配信システム
201 制御部
202、1404 受信部
203 蓄積部
204 読出部
205 第1出力部
206 第2出力部
207 記憶部
208 書込部
209 ネットワークインタフェース
301 機器制御部
302 制御部
303 受信部
304 送信部
305 判定部
306 データ受信部
307 データ復号部
308 ネットワークインタフェース
309 表示部
401 マルチメディアデータ
402 マルチメディアデータ
411 マルチメディアデータ401の属性情報
412 マルチメディアデータ402の属性情報
421 マルチメディアデータのURIテーブル
701 再開位置情報
801 再開位置情報
802 再開位置情報
803 再開位置情報
901 再開位置情報
902 再開位置情報
1001 データ受信部
1002 データ受信インタフェース
1101 データ復号部
1102 表示部
1201、5201 データ出力装置
1202、5202 制御装置
1401、4101 入力部
1402、4102 第1メモリ
1403、4103 第2メモリ
1405、4104 多重分離部
1406 デスクランブラ
1407、4105 TSデコーダ
1408、4106 映像出力部
1409、4107 音声出力部
1410 TSマルチプレクサ
1411、4108 ネットワーク部
1412、4109 CPU
102、103、1203、1204、1302、1303、5203、5204 端末
104、1205、1304、5205 ネットワーク
105、1206、1305、5206 マルチメディア配信システム
201 制御部
202、1404 受信部
203 蓄積部
204 読出部
205 第1出力部
206 第2出力部
207 記憶部
208 書込部
209 ネットワークインタフェース
301 機器制御部
302 制御部
303 受信部
304 送信部
305 判定部
306 データ受信部
307 データ復号部
308 ネットワークインタフェース
309 表示部
401 マルチメディアデータ
402 マルチメディアデータ
411 マルチメディアデータ401の属性情報
412 マルチメディアデータ402の属性情報
421 マルチメディアデータのURIテーブル
701 再開位置情報
801 再開位置情報
802 再開位置情報
803 再開位置情報
901 再開位置情報
902 再開位置情報
1001 データ受信部
1002 データ受信インタフェース
1101 データ復号部
1102 表示部
1201、5201 データ出力装置
1202、5202 制御装置
1401、4101 入力部
1402、4102 第1メモリ
1403、4103 第2メモリ
1405、4104 多重分離部
1406 デスクランブラ
1407、4105 TSデコーダ
1408、4106 映像出力部
1409、4107 音声出力部
1410 TSマルチプレクサ
1411、4108 ネットワーク部
1412、4109 CPU
Claims (28)
- 映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置であって、
外部の装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された出力先に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる制御手段とを備える
ことを特徴とするデータ出力装置。 - 前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、指定された前記複数の端末のいずれかを出力先として出力する
ことを特徴とする請求項1に記載のデータ出力装置。 - 前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記受信手段により、前記再開要求と前記複数の出力先のいずれかとが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記受信手段により受信された出力先へ出力させる
ことを特徴とする請求項1に記載のデータ出力装置。 - 前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項1に記載のデータ出力装置。 - 前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断信号を受信したときの出力先とは異なる第2の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させたマルチメディアデータを、前記出力手段により、前記第2の出力先へ出力させる
ことを特徴とする請求項1に記載のデータ出力装置。 - さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項1に記載のデータ出力装置。 - さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報を前記記憶手段に記憶させる ことを特徴とする請求項1に記載のデータ出力装置。 - さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項7に記載のデータ出力装置。 - マルチメディアデータを蓄積している蓄積手段を備える装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
外部の制御装置からの信号を受信する受信ステップと、
前記蓄積手段からデータを読み出す読出ステップと、
前記マルチメディアデータを指定された出力先に出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。 - さらに、Java(登録商標)アプリケーションを実行するJava実行手段を備え、
前記制御手段は、Javaアプリケーションによって起動される ことを特徴とする請求項1に記載のデータ出力装置。 - 前記出力手段は、前記マルチメディアデータを、複数の出力先のいずれかに出力し、
前記制御手段は、前記再開要求と、前記中断信号を受信したときの出力元とは異なる第2の出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力元とは異なる出力先へ出力させる
ことを特徴とする請求項10に記載のデータ出力装置。 - 前記データ出力装置は、ネットワークを介して複数の端末に接続されており、
前記出力手段は、ユーザにより指定された前記複数の端末のいずれかに、前記ネットワークを介して出力する
ことを特徴とする請求項10に記載のデータ出力装置。 - 前記制御手段は、
前記受信手段により前記中断要求が受信された場合に、前記再開位置情報と、前記中断要求を識別する中断識別子とを生成し、生成した前記再開位置情報と前記中断識別子とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求と、前記出力先と、前記中断識別子とが受信された場合に、前記中断識別子に対応する前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項10に記載のデータ出力装置。 - 前記制御手段は、さらに、
前記受信手段により前記中断要求と、出力を再開するときの出力先とが受信された場合に、前記再開位置情報を生成し、前記生成した前記再開位置情報と前記出力先とを前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記再開位置情報と前記出力先とを前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記記憶手段から読み出された前記出力先へ、前記出力手段により出力させる
ことを特徴とする請求項10に記載のデータ出力装置。 - さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が出力しているときに、前記中断要求を受けた場合に、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
前記受信手段により前記再開要求と前記出力先とが受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる制御を行う
ことを特徴とする請求項10に記載のデータ出力装置。 - さらに、マルチメディアデータを再生する再生手段を備え、
前記出力手段は、前記マルチメディアデータを、複数の出力先および前記再生手段のいずれかへ出力し、
前記制御手段は、さらに、
前記出力手段が前記再生手段に出力しているときに、前記受信手段により、前記中断信号が受信された場合に、Javaアプリケーションより、前記出力手段から前記再生手段への出力を中断したマルチメディアデータの再開位置情報を受け取って、前記記憶手段に記憶させ、
Javaアプリケーションからマルチメディアデータの識別子を受け取り、前記記憶手段に記憶させたマルチメディアデータの再開位置情報を前記Javaアプリケーションに引き渡す
ことを特徴とする請求項10に記載のデータ出力装置。 - さらに、外部の装置からマルチメディアデータを受信するデータ受信手段と、
前記データ受信手段が受信したマルチメディアデータを前記蓄積手段に書き込む書込手段とを備え、
前記制御手段は、さらに、
前記データ受信手段が受信しつつ、マルチメディアデータを出力手段が前記再生手段に出力しているときに、前記中断要求を受信した場合に、Javaアプリケーションからの指示により、前記データ受信手段に前記マルチメディアデータの続きを受信させ、受信させた前記マルチメディアデータの続きを前記書込手段によって、前記蓄積手段に書き込ませ、
書き込ませたデータの再生位置情報を生成して前記記憶手段に記憶させ、
前記受信手段により前記再開要求が受信された場合に、前記書込手段によって前記蓄積手段に書き込まれた前記マルチメディアデータの続きを前記読出手段に読み出させ、読み出させた前記マルチメディアデータの続きを、前記出力手段により、前記出力先へ出力させる
ことを特徴とする請求項16に記載のデータ出力装置。 - マルチメディアデータを蓄積する蓄積手段と、
再開位置情報を記憶する記憶手段と、
Javaアプリケーションを実行するJava実行手段と、
Javaアプリケーションによって起動される制御手段とを備えた、
ネットワークに接続された装置において実行され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力方法であって、
前記ネットワークに接続された外部の制御装置からメッセージを受信する受信ステップと、
前記蓄積手段からマルチメディアデータを読み出す読出ステップと、
前記マルチメディアデータを、指定された出力先に、前記ネットワークを介して出力する出力ステップと、
前記受信ステップにおいて、前記出力ステップによる出力を中断する要求である中断要求が受信された場合に、前記出力ステップによる出力を中断したマルチメディアデータと出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を生成し、生成した前記再開位置情報を記憶手段に記憶させ、
前記受信ステップにおいて、前記出力ステップにおける出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出ステップにおいて読み出させ、読み出させた前記マルチメディアデータを、前記出力ステップにおいて、前記出力先へ出力させる制御ステップとを含む
ことを特徴とするデータ出力方法。 - 映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置に要求を発行する機器制御装置であって、 前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える ことを特徴とする機器制御装置。 - さらに、Javaアプリケーションを実行するJava実行手段を備え、
Javaアプリケーションから前記中断要求を受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる
ことを特徴とする請求項19に記載の機器制御装置。 - Javaアプリケーションを実行するJava実行手段を備え、
前記制御手段は、Javaアプリケーションから前記中断要求と出力再開時の出力先とを受け取ると、前記中断要求を前記データ出力装置へ送るときに、前記送信先を前記送信手段により送信させる
ことを特徴とする請求項19に記載の機器制御装置。 - 映像および音声の少なくとも一方を含むマルチメディアデータを提供するデータ出力装置とネットワークを介して接続され、ユーザの操作によって動作する機器制御装置であって、
前記データ出力装置から提供されるコンテンツの属性を受信する属性受信手段と、
前記データ出力装置に要求を送信する送信手段と、
ユーザの操作に基づいて、コンテンツデータの出力を再開する要求である再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツの出力が中断されているか否かを判定し、該コンテンツの出力が中断されていると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる制御手段とを備える
ことを特徴とする機器制御装置。 - 前記属性受信手段は、コンテンツ個別の出力中断を表す識別子を含む前記コンテンツの属性を受信し、
前記制御手段は、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求と前記識別子とを前記データ出力装置へ送信させる
ことを特徴とする請求項22に記載の機器制御装置。 - さらに、Javaアプリケーションを実行するJava実行手段を備え、
前記制御手段は、Javaアプリケーションから前記再開要求を受けたときに、前記属性受信手段が受信した該コンテンツの属性より、該コンテンツが出力中断の状態か否かを判定し、出力中断の状態であると判定した場合に、前記送信手段に前記再開要求を前記データ出力装置へ送信させる
ことを特徴とする請求項22に記載の機器制御装置。 - 前記制御手段は、出力中断の状態であると判定した場合に、さらに、Javaアプリケーションに中断している出力を再開するか否かを問い合わせ、Javaアプリケーションから再開すると指示を受ければ、前記送信手段に前記再開要求を前記マルチメディアサーバに送信させる
ことを特徴とする請求項24に記載の機器制御装置。 - ネットワークに接続され、映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置を制御する機器制御装置であって、
前記データ出力装置へ出力中断要求を出したときに、出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記データ出力装置と通信する通信手段と、
前記データ出力装置から前記再開位置情報を受信して前記記憶手段に記憶させ、
前記データ出力装置へ出力再開要求を出す場合に、前記記憶手段が記憶している前記再開位置情報および出力先を前記データ出力装置へ送信する制御手段とを備える
ことを特徴とする機器制御装置。 - さらに、Javaアプリケーションを実行するJava実行手段を備え、
前記制御手段は、Javaアプリケーションから前記データ出力装置へ中断要求を受けたときに、前記通信手段により、前記データ出力装置へ中断要求を送信し、出力を中断したマルチメディアデータおよび出力中断位置より得られる再開位置情報を、前記通信手段により前記データ出力装置から受信して前記記憶手段に記憶させ、
Javaアプリケーションから前記データ出力装置へ再開要求を受けたときに、前記記憶手段に記憶した前記再開位置情報を読み出し、出力再開要求および出力先とともに前記再開位置情報を、前記通信手段により前記データ出力装置へ送信させる
ことを特徴とする請求項26に記載の機器制御装置。 - 映像および音声の少なくとも一方を含むマルチメディアデータを出力するデータ出力装置と、出力された前記マルチメディアデータを受信する複数の端末とがネットワークを介して接続されているマルチメディア配信システムであって、
前記データ出力装置は、
前記機器制御装置から信号を受信する受信手段と、
マルチメディアデータを蓄積している蓄積手段と、
前記蓄積手段からデータを読み出す読出手段と、
前記マルチメディアデータを指定された前記端末に出力する出力手段と、
前記出力手段による出力を中断したマルチメディアデータと、当該マルチメディアデータの出力を中断した位置とから得られ、出力を再開する位置を示す再開位置情報を記憶している記憶手段と、
前記受信手段により、前記出力手段による出力を中断する要求である中断要求が受信された場合に、前記再開位置情報を生成し、生成した前記再開位置情報を前記記憶手段に記憶させ、前記受信手段により前記出力手段による出力を再開する要求である再開要求と出力先とが受信された場合に、前記再開位置情報を前記記憶手段から読み出し、当該再開位置情報により示される再開位置からのマルチメディアデータを、前記蓄積手段から前記読出手段に読み出させ、読み出させた前記マルチメディアデータを、前記出力手段より、前記出力先へ出力させる制御手段とを備え、
前記端末は、
前記データ出力装置へ要求を送信する送信手段と、
前記データ出力装置によるマルチメディアデータの出力を中断する要求である中断要求を前記データ出力装置へ送るときに、前記データ出力装置がデータ出力を再開する場合の出力先を特定し、特定した前記出力先を前記送信手段により送信させる制御手段とを備える
ことを特徴とするマルチメディア配信システム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005367003 | 2005-12-20 | ||
JP2005367003 | 2005-12-20 | ||
JP2005376596 | 2005-12-27 | ||
JP2005376596 | 2005-12-27 | ||
PCT/JP2006/324329 WO2007072680A1 (ja) | 2005-12-20 | 2006-12-06 | データ出力装置、機器制御装置およびマルチメディア配信システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2007072680A1 true JPWO2007072680A1 (ja) | 2009-05-28 |
Family
ID=38188461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007551029A Withdrawn JPWO2007072680A1 (ja) | 2005-12-20 | 2006-12-06 | データ出力装置、機器制御装置およびマルチメディア配信システム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20090300231A1 (ja) |
JP (1) | JPWO2007072680A1 (ja) |
KR (1) | KR20080078838A (ja) |
CA (1) | CA2633582A1 (ja) |
WO (1) | WO2007072680A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7957414B2 (en) * | 2006-05-29 | 2011-06-07 | Kyocera Corporation | Transmitting apparatus and transmission rate control method |
JP2009124445A (ja) * | 2007-11-14 | 2009-06-04 | Toshiba Corp | 多チャンネル録画再生サーバとその制御方法 |
US8055784B2 (en) * | 2008-07-07 | 2011-11-08 | Disney Enterprises, Inc. | Content navigation module for managing delivery of content to computing devices and method therefor |
JP5396821B2 (ja) * | 2008-11-05 | 2014-01-22 | ソニー株式会社 | 情報処理装置、情報処理方法及びプログラム |
US8244829B2 (en) * | 2009-03-25 | 2012-08-14 | Panasonic Corporation | Data transmitting apparatus, data receiving apparatus, data transmitting method and data receiving method |
CN102447959A (zh) * | 2010-10-01 | 2012-05-09 | 日立民用电子株式会社 | 接收机 |
ITTO20110272A1 (it) * | 2011-03-28 | 2012-09-29 | Istituto Superiore Mario Boella Sul Le Tecnologie | Procedimento per il controllo remoto di un set top box |
US9489488B2 (en) * | 2011-09-23 | 2016-11-08 | Roche Diabetes Care, Inc. | Protocol independent interface supporting general communications interface debugging and testing tool |
KR101368136B1 (ko) * | 2012-04-10 | 2014-02-28 | 주식회사 엘지유플러스 | 콘텐츠 심리스 제공 방법, 장치, 및 기록 매체 |
KR101964927B1 (ko) * | 2012-07-17 | 2019-04-03 | 삼성전자 주식회사 | 캐싱 프록시 방법 및 장치 |
KR20140039504A (ko) * | 2012-09-24 | 2014-04-02 | 삼성전자주식회사 | 블루레이 디스크 재생 장치 및 블루레이 디스크 로딩 방법 |
CN103065662A (zh) * | 2013-01-22 | 2013-04-24 | 中兴通讯股份有限公司 | 一种媒体资源在设备中续播的方法及系统 |
JP6520242B2 (ja) * | 2015-03-12 | 2019-05-29 | ソニー株式会社 | 情報処理装置、通信システム、情報処理方法およびプログラム |
KR102485166B1 (ko) * | 2015-09-22 | 2023-01-06 | 엘지전자 주식회사 | 디스플레이 장치 및 그의 동작 방법 |
US10362354B2 (en) | 2017-10-26 | 2019-07-23 | Rovi Guides, Inc. | Systems and methods for providing pause position recommendations |
US10057630B1 (en) | 2017-10-26 | 2018-08-21 | Rovi Guides, Inc. | Systems and methods for resuming playback of media content |
CN113301598B (zh) * | 2021-05-24 | 2021-12-21 | 中国电信集团系统集成有限责任公司 | 一种基站及核心网的资源管理方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6259707B1 (en) * | 1998-10-30 | 2001-07-10 | Sony Corporation | Synchronizing a data driven interaction controller and a non-data driven interaction controller |
SG97830A1 (en) * | 2000-01-07 | 2003-08-20 | Matsushita Electric Ind Co Ltd | Time based multimedia objects streaming apparatus and method |
CN101707693B (zh) * | 2000-10-11 | 2017-04-26 | 乐威指南公司 | 提供数据存储到点播媒体传递系统中服务器上的系统和方法 |
WO2002037217A2 (en) * | 2000-11-02 | 2002-05-10 | Sony Electronics, Inc. | Content and application download based on a home network system configuration profile |
EP1472697A4 (en) * | 2002-02-08 | 2005-10-26 | Ucentric Holdings Inc | CENTRALIZED DIGITAL VIDEO RECORDING SYSTEM WITH BOOKMARKS AND PLAYING MULTIPLE PLACES |
US7155109B2 (en) * | 2002-06-14 | 2006-12-26 | Microsoft Corporation | Programmable video recorder having flexible trick play |
US20040133914A1 (en) * | 2003-01-03 | 2004-07-08 | Broadq, Llc | Digital media system and method therefor |
US7836473B2 (en) * | 2003-10-31 | 2010-11-16 | Microsoft Corporation | Interface strategies for creating and invoking marks |
US20050251835A1 (en) * | 2004-05-07 | 2005-11-10 | Microsoft Corporation | Strategies for pausing and resuming the presentation of programs |
-
2006
- 2006-12-06 JP JP2007551029A patent/JPWO2007072680A1/ja not_active Withdrawn
- 2006-12-06 US US12/097,821 patent/US20090300231A1/en not_active Abandoned
- 2006-12-06 CA CA002633582A patent/CA2633582A1/en not_active Abandoned
- 2006-12-06 KR KR1020087014727A patent/KR20080078838A/ko not_active Application Discontinuation
- 2006-12-06 WO PCT/JP2006/324329 patent/WO2007072680A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20080078838A (ko) | 2008-08-28 |
WO2007072680A1 (ja) | 2007-06-28 |
CA2633582A1 (en) | 2007-06-28 |
US20090300231A1 (en) | 2009-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2007072680A1 (ja) | データ出力装置、機器制御装置およびマルチメディア配信システム | |
US7950039B2 (en) | Multimedia data transmitting apparatus and multimedia data receiving apparatus | |
US8244829B2 (en) | Data transmitting apparatus, data receiving apparatus, data transmitting method and data receiving method | |
US20080172712A1 (en) | Multimedia data transmitting apparatus, multimedia data receiving apparatus, multimedia data transmitting method, and multimedia data receiving method | |
US20080250101A1 (en) | Multimedia data transmitting apparatus and multimedia data receiving apparatus | |
US20090193101A1 (en) | Multimedia data transmitting apparatus and multimedia data management method | |
US9264757B2 (en) | Service executing apparatus | |
US20090222867A1 (en) | Broadcast receiving apparatus, video storing apparatus, and multimedia delivering system | |
US20090106801A1 (en) | Content processing device and content processing method | |
US20060193597A1 (en) | Broadcast recording apparatus | |
US20080141323A1 (en) | Content information outputting apparatus, content information receiving apparatus, content information outputting method, content information receiving method | |
US20090199232A1 (en) | Recording and playing system, client terminal and server terminal | |
KR20110103982A (ko) | 비실시간 서비스 처리 방법 및 방송 수신기 | |
JP2009520380A (ja) | コンテンツ管理システム | |
CN101406058A (zh) | 数据输出装置、设备控制装置以及多媒体通信系统 | |
JP2000032423A (ja) | データ伝達制御方法 | |
JP4378778B2 (ja) | 受信装置および受信方法 | |
JP2022183548A (ja) | 受信装置、クライアント端末装置、およびプログラム | |
WO2013061364A1 (ja) | 映像信号の送受信方法、表示装置、及び送信装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091007 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091204 |