JPWO2007072821A1 - 機器連携装置及び機器連携方法 - Google Patents
機器連携装置及び機器連携方法 Download PDFInfo
- Publication number
- JPWO2007072821A1 JPWO2007072821A1 JP2007551098A JP2007551098A JPWO2007072821A1 JP WO2007072821 A1 JPWO2007072821 A1 JP WO2007072821A1 JP 2007551098 A JP2007551098 A JP 2007551098A JP 2007551098 A JP2007551098 A JP 2007551098A JP WO2007072821 A1 JPWO2007072821 A1 JP WO2007072821A1
- Authority
- JP
- Japan
- Prior art keywords
- hdmi
- program
- java
- message
- cec
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 170
- 238000004891 communication Methods 0.000 claims description 77
- 238000006243 chemical reaction Methods 0.000 claims description 38
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 110
- 238000007726 management method Methods 0.000 description 80
- 238000012545 processing Methods 0.000 description 62
- 230000005540 biological transmission Effects 0.000 description 42
- 230000008569 process Effects 0.000 description 40
- 230000006870 function Effects 0.000 description 30
- 230000005236 sound signal Effects 0.000 description 26
- 239000000284 extract Substances 0.000 description 22
- 238000001914 filtration Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 239000002131 composite material Substances 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 230000000153 supplemental effect Effects 0.000 description 4
- 241001025261 Neoraja caerulea Species 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L12/2805—Home Audio Video Interoperability [HAVI] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L12/2816—Controlling appliance services of a home automation network by calling their functionalities
- H04L12/282—Controlling appliance services of a home automation network by calling their functionalities based on user interaction within the home
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L2012/2847—Home automation networks characterised by the type of home appliance used
- H04L2012/2849—Audio/video appliances
Landscapes
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Computer And Data Communications (AREA)
Abstract
複数の機器がHDMIで接続されている場合に、ある機器に対して制御コマンドを送出すると、HDMI−CECメッセージに変換して送出することで、アプリケーションプログラムからはHDMI−CECを考慮することなく機器を操作することができる。
Description
本発明は、例えばテレビやアンプなどの機器の連携を制御する機器連携装置に関する。
近年、デジタル放送あるいはケーブルテレビ(以下、CATVという)放送を受信するセットトップボックス(以下、STBという)、テレビ、アンプ、スピーカ、およびDVD(Digital Versatile Disk)プレーヤを組み合わせたホームシアターシステムが家庭に本格普及しつつある。これらの機器は、それぞれに対してリモコンを用いて設定を行うことにより、マルチチャンネル音声、例えば5.1チャンネル音声の再生を実現することができる(例えば、非特許文献1参照)。
また、アンプの電源スイッチのオン/オフ操作に連動して、音声をテレビ受信装置だけから出力するか、アンプに接続されているスピーカからも出力するかを切り換える技術(機器連携装置)が提案されている(例えば、特許文献1参照)。
例えば、上記特許文献1の機器連携装置は、テレビ受信装置と組み合わせてサラウンドシステムを構成することが可能なAVアンプに備えられている。つまり、上記特許文献1の機器連携装置は、サラウンドシステムの利用と、テレビ受信装置単独の利用との切り換えを行うことができる。
図1は、上記特許文献1のAVアンプのブロック図を示す。
このようなAVアンプ40の機器連携装置は、サラウンドシステムの利用時には、AVアンプ40の電源スイッチ41がオンにされると、切り換えスイッチ50をセンタ音声増幅回路48側に切り換える。その結果、AVアンプ40に接続された例えばVTR(Video Tape Recorder)やLD(Laser Disc)などの再生機器、またはテレビ受信装置から音声入力端子43に供給されている音声信号がDSP45を介して音声出力端子49を経て周囲のスピーカに供給される。また、このようなAVアンプ40の機器連携装置は、テレビ受信装置単独での利用時に、AVアンプ40の電源スイッチ41がオフにされると、切り替えスイッチ50をテレビ音声入力端子51側に切り換える。その結果、テレビ受信装置の増幅回路で処理されたテレビ音声が、AVアンプ40を介してテレビ受信装置のスピーカに供給される。
High Definition Multimedia Interface specification Version 1.2 特開平5−153520号公報
High Definition Multimedia Interface specification Version 1.2
しかしながら、上記特許文献1の機器連携装置では、サラウンドシステムの使用および不使用を切り換えるために、わざわざAVアンプの電源を操作しなければならないという問題がある。つまり、ユーザは、AVアンプ40に接続されたスピーカに音声を出力させるときには、AVアンプ40の電源をオンにしなければならず、そのスピーカ以外のテレビ受信装置に備えられたスピーカに音声を出力させるときには、AVアンプ40の電源をオフにしなければならない。
そこで、本発明は、かかる問題に鑑みてなされたものであって、ユーザによる操作負担を軽減して適切に機器を連携させる機器連携装置を提供することを目的とする。
上記目的を達成するために、本発明に係る機器連携装置は、複数の機器の動作を連携させる機器連携装置であって、アプリケーションプログラムを含む放送波を受信する受信手段と、前記アプリケーションプログラムを実行するプログラム実行手段と、複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信手段と、前記プログラム実行手段により実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信手段によって通信されるデータとの間の変換を行う変換手段とを備えることを特徴とする。
これにより、アプリケーションプログラムが複数の機器のうちの何れかの機器の動作を制御するために制御データを出力すると、その制御データが、通信手段によって通信されるHDMI−CECメッセージに変換されてその機器に送信されるため、その機器がHDMI−CECに対応した機器であれば、アプリケーションプログラムは、HDMI−CECを考慮することなく、制御データを出力して機器を自由に制御することができる。ここで、アプリケーションプログラムがJava(登録商標)で記述されたプログラムである場合には、例えば、そのプログラムは、Java APIであるメソッドを呼び出すことで上述の制御データを出力する。また、何れかの機器から送信されたHDMI−CECメッセージが、アプリケーションプログラムによって扱われるデータに変換されるため、アプリケーションプログラムは、HDMI−CECを考慮することなく機器からメッセージを受け取ることができ、その機器の制御に利用することができる。その結果、本発明では、アプリケーションプログラムによって各機器を自由に制御することができるため、ユーザによる操作負担を軽減して適切に機器を連携させることができる。
また、前記変換手段は、前記アプリケーションプログラムからバイナリーデータを取得して、前記バイナリーデータを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記複数の機器のうちの何れかの機器に送信することを特徴としてもよい。または、前記通信手段は、前記複数の機器のうちの何れかの機器から、前記HDMI−CECに従ったメッセージを受信し、前記変換手段は、前記通信手段によって受信されたメッセージをバイナリーデータに変換し、前記バイナリーデータを前記アプリケーションプログラムに引き渡すことを特徴としてもよい。
例えば、テレビやアンプなどの機器の間で連携した機能を実現させるためのハードウェアやソフトウェアは、予めその機器に組み込まれた状態で出荷される。その後、ハードウェアやソフトウェアに対して改良や変更が行われ、その変更されたハードウェアやソフトウェアが組み込まれた新たな機器が発売される。その結果、新たに発売された機器と既存の機器との間では、連携機能を実現することができない場合が発生する。そこで、本発明では、アプリケーションプログラムによって扱われるバイナリーデータと、通信手段によって通信されるHDMI−CECメッセージとの間の変換が行われるため、例えば、実行されるアプリケーションプログラムを入れ替えるだけで、機器連携装置そのものを改変することなく、新たに発売された機器を適切に制御して、その新たに発売された機器を含む複数の機器の動作を連携させることができる。
また、前記アプリケーションプログラムはJava(登録商標)で記述されたプログラムであって、前記変換手段は、前記アプリケーションプログラムからリスナーの登録を受け付けることで、前記リスナーを登録し、前記リスナーのメソッドを呼び出すことで、前記アプリケーションプログラムに前記バイナリーデータを引き渡すことを特徴としてもよい。
これにより、アプリケーションプログラムは、機器からのメッセージをバイナリーデータで確実に受け取ることができる。
また、前記変換手段は、さらに、前記アプリケーションプログラムからリスナーの削除を受け付けることで、登録された前記リスナーを削除することを特徴としてもよい。
これにより、アプリケーションプログラムは、機器からのメッセージの受け取りを拒否することができる。
また、前記複数の機器は、映像および音声を出力する第1の機器と、音声を出力する第2の機器とを含み、前記変換手段は、前記第1の機器が音声出力を抑えて映像を出力するとともに前記第2の機器が音声を出力するように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第1および第2の機器に送信することを特徴としてもよい。
これにより、例えばテレビなどの第1の機器が映像だけを出力して、アンプなどの第2の機器のスピーカが音声を出力するようなシアターモードをアプリケーションプログラムが指示すれば、その指示をテレビとアンプが適切に受け取ることができ、その結果、シアターモードで音声が出力されるように、ユーザによる操作負担を軽減してテレビおよびアンプを適切に連携させることができる。
また、前記機器連携装置は、さらに、前記第1および第2の機器が前記通信手段との間で通信可能なように前記通信手段と接続されているか否かを判別し、判別の結果を前記アプリケーションプログラムに通知する通知手段を備えることを特徴としてもよい。
これにより、アプリケーションプログラムは第1および第2の機器が通信手段に接続されているか否かを知ることができ、その結果、アプリケーションプログラムは、第1および第2の機器が接続されていれば、音声出力状態をシアターモードにすることができることをユーザに通知したり、第1および第2の機器が接続されていなければ、シアターモードの指示を省くことができ、アプリケーションプログラムの処理の自由度を高めることができる。
また、前記変換手段は、モノラル、ステレオ、および5.1チャンネルの何れかの状態で前記第2の機器から音声が出力されるように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第2の機器に送信することを特徴としてもよい。
これにより、モノラル、ステレオ、および5.1チャンネルの何れかの再生モードをアプリケーションプログラムが指示すれば、その指示をアンプが適切に受け取ることができ、その結果、指定された再生モードで音声が出力されるように、ユーザによる操作負担を軽減してアンプを適切に操作することができる。
また、前記変換手段は、前記第2の機器から出力される音声の音場を指定するデータを、前記アプリケーションプログラムから受け付けると、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第2の機器に送信することを特徴としてもよい。
これにより、例えばシネマモードやスポーツモードなどの音場モードをアプリケーションプログラムが指示すれば、その指示をアンプが適切に受け取ることができ、その結果、指定された音場モードで音声が出力されるように、ユーザによる操作負担を軽減してアンプを適切に操作することができる。
なお、本発明は、このような機器連携装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の機器連携は、ユーザによる操作負担を軽減して適切に機器を連携させることができるという作用効果を奏する。
104 STB
201 入力手段
202 第1メモリ
203 第2メモリ
204 受信部
205 多重分離部
206 デスクランブラ
207 TSデコーダ
208 映像出力部
209 音声出力部
210 HDMI部
211 CPU
201 入力手段
202 第1メモリ
203 第2メモリ
204 受信部
205 多重分離部
206 デスクランブラ
207 TSデコーダ
208 映像出力部
209 音声出力部
210 HDMI部
211 CPU
以下、本発明の実施の形態に係る機器連携装置について、図面を用いて説明する。
図2Aは、本実施の形態における機器連携装置を含むシステムの構成を示す構成図である。
このシステムは、本実施の形態における機器連携装置Aと、n個の機器B1,B2,…,Bnとから構成されている。この機器連携装置Aは、ユーザによる操作負担を軽減して適切に機器B1,B2,…,Bnの動作を連携させる。つまり、本実施の形態における機器連携装置Aによる機器B1,B2,…,Bnの制御によって、これらの機器B1,B2,…,Bnが連携した処理を実行する。
例えば、本実施の形態にかかる機器連携装置Aは、CATVを受信するSTB(セットトップボックス)として構成され、テレビやアンプをそれぞれ上述の機器として連携させる。このようなSTB、テレビ、アンプ、およびスピーカからホームシアターシステムが構成される。
図2Bは、本実施の形態に係るホームシアターシステムの構成を表すブロック図である。
図2Bに示すように、ホームシアターシステムは、テレビ101、アンプ102、スピーカ103、および機器連携装置たるSTB104で構成される。
本実施の形態におけるSTB104、テレビ101、およびアンプ102は、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)コマンドを送受信するHDMI−CEC通信部を保持し、そのコマンドであるHDMI−CECメッセージを用いて、STB104によって受信されたアプリケーションプログラムが自動的に音声出力状態などを制御する。
また、本実施の形態では、STB104、テレビ101、およびアンプ102などの機器間の通信基本機能を、ミドルウエア、具体的にはJava(登録商標)ミドルウエアを用いて実現している。個別の機器連携機能を、Javaアプリケーションプログラムとして実現することで、常に最新の機器連携機能を実現できる。
なお、HDMI仕様の詳細は、High Definition Multimedia Interface specification Version 1.2に記載されており、また、HDMI−CEC仕様は、同仕様書のAppendix「supplemental 1 Consumer Electronics Control」において規定されている。HDMI規格は、映像/音声の非圧縮デジタルデータを機器間で伝送するための伝送規格であり、伝送にはHDMI規格に準拠した一本のケーブルが用いられる。HDMI−CECは、そのケーブル(HDMIケーブル)を介して機器間で双方向に機器制御コマンドを伝送するための仕様が規定されている。2005年11月現在、www.hdmi.orgからHDMI仕様書をダウンロードすることで取得できる。
テレビ101は、HDMI端子を保持し、アンプ102とHDMIラインで接続されている。テレビ101は、アンプ102から送られてきた映像・音声を再生することが出来る。また、テレビ101は、HDMIラインを通して送られてきたHDMI−CECのメッセージ(コマンド)を受け取り、そのメッセージ(コマンド)に対応する処理を行う。
図3は、テレビ101の構成を示す構成図である。
図3に示すように、テレビ1は、メモリ101aと、リモコン受信部101bと、マイクロコンピュータ(以下、マイコンという)101cと、HDMI−CEC通信部101dと、チューナ101eと、デコーダ101fと、ディスプレイ101gと、スピーカ101hとから構成されている。
テレビ101は、ユーザによって直接操作されたり、リモートコントロール装置(図示せず)(以下、テレビ用リモコンという)を用いても操作される。
マイコン101cは、リモコン受信部101bがテレビ用リモコンから発信されたコマンドを受信すると、そのコマンドに応じた処理を行い、チューナ101eの選局切換や、デコーダ101fの処理を制御する。デコーダ101fは、チューナ101eやHDMI−CEC通信部101dから入力された映像・音声信号を、マイコン101cの指示に応じて、ディスプレイ101gやスピーカ101hに出力する。また、マイコン101cは、HDMI−CEC通信部101dから入力されたHDMI−CECコマンドに応じて、各設定や制御を行う。
また、テレビ101は、本体フロントパネル等に、ボタン等を有する入力部(図示せず)を具備し、この入力部からの入力によって、テレビ用リモコンを用いた操作と同様の操作を受け付ける。
アンプ102は、HDMI端子を保持し、テレビ101及びSTB104とHDMIラインで接続されている。また、アンプ102は、スピーカ103とスピーカ用ラインで接続されている。アンプ102は、STB104から映像・音声を受け取る。アンプ102は、受け取った映像・音声をテレビ101に送信する。また、シネマモード、スポーツモード、音楽モード、ドラマモードなどの所定の音場モードがアンプ102に設定されている場合には、アンプ102は、STB104から受け取った音声信号に、その音場モードに対応する音場特性を付加し、その音声信号をスピーカ103に送信する。もちろん、アンプ102は、音場特性を付加せずに音声信号を送信してもよい。ここで、音場特性の付加は、より具体的には、反射音の大きさや、数、残響音の大きさ、残響時間などの残響特性パラメータと周波数特性パラメータとに基づいた音声信号処理であり、従来の技術により実現可能である。なお、音場は、スピーカ103から出力される音声の状態や質であって、反射音の大きさ、数、残響音の大きさ、残響時間、周波数特性によって、上述のシネマモードやスポーツモードなどの各音場モードに分類される。
アンプ102は、HDMIラインを通して送られてきたHDMI−CECのメッセージ(コマンド)を受け取り、そのメッセージ(コマンド)に対応する処理を行う。この処理には、上述の音場モードを設定する処理も含まれる。
図4は、アンプ102の構成を示す構成図である。
図4に示すように、アンプ102は、HDMI−CEC通信部102aと、マクロコンピュータ(以下、マイコンという)102bと、HDMI−CEC通信部102cと、セレクター102dと、外部入力部e102と、スピーカ出力部102fと、リモコン受信部102gとから構成されている。
アンプ102は、ユーザによって直接操作されたり、リモートコントロール装置(図示せず)(以下、アンプ用リモコンという)を用いても操作される。
マイコン102bは、リモコン受信部102gがアンプ用リモコンから発信されたコマンドを受信すると、そのコマンドに応じた処理を行う。また、マイコン102bは、HDMI−CEC通信部102aまたはHDMI−CEC通信部102cにより受信されたHDMI−CECコマンドに応じた処理を行う。
セレクター102dは、マイコン102bからの指示に応じて、HDMI-CEC通信部102cから出力される音声信号と、外部入力部102eから出力される音声信号とを切り換え、切り換えられた音声信号をスピーカ出力部102fに出力する。ここで、セレクター102dは、音声信号に付加された音場特性たるフォーマット(ステレオ音声のフォーマットや、5.1チャンネル音声のフォーマットなど)に応じた態様で、その音声信号をスピーカ3に出力する。
また、アンプ102は、本体フロントパネル等に、ボタン等を有する入力部(図示せず)を具備し、この入力部からの入力によって、アンプ用リモコンを用いた操作と同様の操作を受け付ける。
スピーカ103は、映画館で臨場感のある音響効果を再現するためのマルチチャンネル音声の再生、例えば5.1チャンネル再生を行うスピーカの集合である。スピーカ103は、実際には、6つのスピーカ(図示せず)から構成される。つまり、スピーカ103は、ユーザに対して、正面、右前方、左前方、右後方、および左後方に配置される5つのスピーカと、低音出力用スピーカとで構成される。スピーカ3は、アンプ102から音声信号を受け取り、出力する。
STB104は、CATV放送の受信・再生を行う。また、STB104は、再生した映像音声を出力するためのHDMI端子を備えている。
図5は、本実施の形態に係るSTB104の構成を表したブロック図である。
STB104は、入力部201、第1メモリ202、第2メモリ203、受信部204、多重分離部205、デスクランブラ206、TSデコーダ207、映像出力部208、音声出力部209、HDMI部210、およびCPU211で構成される。
入力部201は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネルの選択等の指示を受け付ける。
図6は、入力部201として構成されたフロントパネルの一例を示す図である。
このフロントパネル300は、上カーソルボタン301、下カーソルボタン302、左カーソルボタン303、右カーソルボタン304、OKボタン305、取消ボタン306、EPGボタン307、およびシアターボタン308の8つのボタンを備えている。ユーザがボタンを押下すると、押下されたボタンの識別子がCPU211に通知される。
第1メモリ202は、RAM(Random Access Memory)等で構成され、CPU211が一時的にデータを保存する際に使用される。
第2メモリ203は、フラッシュメモリーやハードディスク等、電源供給が停止しても情報を保持可能なデバイスで構成され、CPU211が実行するプログラムを保存する。第2メモリ203を、SD(Secure Digital:登録商標)メモリーカード等の取り外し可能な記憶デバイスとして構成してもよい。
受信部204は、ケーブルテレビ局からのケーブルに接続され、放送波を受信し、CPU211から指定された周波数にチューニングし、MPEGトラスポートストリームを抽出して多重分離部205に引き渡す。
多重分離部205は、受信部204からMPEGトラスポートストリームを受け取り、CPU211から指定された情報をそのMPEGトラスポートストリームから抽出してCPU211に引渡す。また、多重分離部205は、MPEGトラスポートストリームをそのままデスクランブラ206に引き渡す。
デスクランブラ206は、多重分離部205から与えられたスクランブルされているMPEGトラスポートストリームをデスクランブル(=復号)し、TSデコーダ207に引き渡す。デスクランブラ206は、STB104に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているCableCARD(登録商標)でもよい。CableCARDの仕様は米国CableLabsが策定したCableCARD Interface Specificationに記載されており、ここでは説明を省略する。
TSデコーダ207は、CPU211から音声データと映像データの識別子を受け取る。さらに、TSデコーダ207は、デスクランブラ206から受け取ったデスクランブルされたストリームから、受け取った音声データと映像データの識別子に対応する音声データと映像データを抽出する。そして、TSデコーダ207は、抽出した映像データを映像出力部208に引き渡し、音声データを音声出力部209に引き渡す。また、TSデコーダ207は、その両方(映像データおよび音声データ)を、HDMI部210に引き渡す。
映像出力部208は、映像出力端子を含み、受け取った映像データをその映像出力端子に対応した映像データに変換して出力する。映像出力端子の例としては、コンポジットケーブル端子などがある。
音声出力部209は、音声出力端子を含み、受け取った音声データをその音声出力端子に対応した音声データに変換して出力する。音声出力端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。
HDMI部210は、HDMI端子を含み、受け取った映像データおよび音声データをHDMI仕様に基づいた映像音声データ形式に変換して出力する。また、HDMI部210は、CPU211からHDMI−CECメッセージ送信の指示を受け取ると、所定のコマンドをHDMI仕様に基づいたデータ形式に変換してそのメッセージを出力する。また、HDMI部210は、HDMI端子を通して受け取ったHDMI−CECメッセージをCPU211に引き渡す。
CPU211は、第2メモリ203が記憶するプログラムを実行することで、受信部204、多重分離部205、デスクランブラ206、TSデコーダ207、およびHDMI部210を制御する。
図7は、第2メモリ203に記憶され、CPU211に実行されるプログラムの構成図である。
プログラム400は、複数のサブプログラムで構成され、OS401、EPG402、JavaVM403、サービスマネージャ404、およびJavaライブラリ405で構成される(Javaは登録商標)。
OS401は、STB104の電源が投入されるときにCPU211が起動するためのサブプログラムである。OS401の「OS」はオペレーティングシステムの略であり、OS401は例えばLinux等である。このようなOS401は、他のサブプログラムを並行して実行するカーネル401a及びライブラリ401bで構成される。本実施の形態においては、OS401のカーネル401aは、EPG402とJavaVM403をサブプログラムとして実行する。また、ライブラリ401bは、これらサブプログラムに対して、STB104が保持する構成要素を制御するための複数の機能を提供する。
本実施の形態では、ライブラリ401bは、チューナ401b1、限定解除部401b2、CEC401b4、およびAV再生部402b3を含む。チューナ401b1は、他のサブプログラムやJavaライブラリ405のTuner405cから周波数を含むチューニング情報を受け取り、受信部204に引き渡す。受信部204は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部205に引き渡すことができる。この結果、他のサブプログラム及びJavaライブラリ405のTuner405cはライブラリ401bを通して受信部204を制御することができる。
CEC401b4は、他のサブプログラムやJavaライブラリ405の機器制御ライブラリ405eから必要な情報を受け取り、HDMI−CECで規定されるメッセージを作成する。CEC401b4は、作成されたメッセージをHDMI部210に引き渡すことで、HDMIラインを介して他の機器にHDMI−CECのメッセージを送信する。また、CEC401b4は、HDMIラインを介して他の機器からHDMI−CECのメッセージを受け取り、他のサブプログラムやJavaライブラリ405の機器制御ライブラリ405eに通知する。
AV再生部401b3は、他のサブプログラムやJavaライブラリ405のJMF405aから、音声のパケットIDと映像のパケットIDを受け取る。AV再生部401b3は、その受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ207に与える。この結果、TSデコーダ207は与えられたパケットIDに基づいて、フィルタリングを行い、映像および音声の再生を実現する。
EPG402は、ユーザにテレビ番組の一覧を表示するとともに、ユーザからの入力を受け付ける番組表示部402aと、チャンネルの選局を行う再生部402bとで構成される。ここで、EPGはElectric Program Guideの略である。EPG402は、STB104の電源が投入されると、カーネル401aによって起動される。起動されたEPG402の内部では、番組表示部402aと再生部402bが同時に起動される。番組表示部402aは起動されると、STB104の入力部201を通して、ユーザからの入力を待つ。ここで、入力部201が図6で示されるフロントパネル300として構成されている場合、ユーザがフロントパネル300のEPGボタン307を押下すると、EPGボタンの識別子がCPU211に通知される。CPU211上で動作するサブプログラムであるEPG402の番組表示部402aは、この識別子を受け取ると、番組情報表示データを作成してHDMI部210に出力する。テレビ101は、アンプ102を介してその番組情報表示データを受け取り、上述のテレビ番組の一覧である電子番組表を表示する。
図8Aおよび図8Bは、テレビ101に表示された電子番組表の一例を示す図である。
図8Aに示すように、テレビ101には、電子番組表が格子状に表示されている。列501には、時刻情報が表示されている。列502には、チャンネル名「チャンネル1」と、列501の時刻に対応する時間帯に放映される番組の名称とが表示されている。チャンネル名「チャンネル1」では、9:00〜10:30に番組「ニュース9」が放映され、10:30〜12:00に番組「映画AAA」が放映されることが表されている。列503にも、列502と同様、チャンネル名「チャンネル2」と、列501の時刻に対応する時間帯に放映される番組の名称とが表示されている。9:00〜11:00に番組「映画BBB」が放映され、11:00〜12:00に番組「サッカー」が放映されることが表されている。カーソル530は、フロントパネル300の左カーソルボタン303と右カーソルボタン304が押下されると移動する。図8Aの状態で、右カーソルボタン304が押下されると、図8Bに示すように、カーソル530は右に移動する。また、図8Bの状態で、左カーソルボタン303が押下されると、図8Aに示すように、カーソル530は左に移動する。
図8Aの状態で、フロントパネル300のOKボタン305が押下されると、番組表示部402aは、「チャンネル1」の識別子を再生部402bに通知する。図8Bの状態で、フロントパネル300のOKボタン305が押下されると、番組表示部402aは、「チャンネル2」の識別子を再生部402bに通知する。
また、番組表示部402aは、放送波に重畳された番組情報表示データを、多重分離部205を通して定期的に、第2メモリ203に記録しておく。一般的に、放送局からの番組情報表示データの取得には時間が掛かる。フロントパネル300のEPGボタン307が押下された時、番組表示部402aは、第2メモリ203に予め保存された番組情報表示データを読み出することで、素早く電子番組表を表示することができる。
図9は、第2メモリ203に記憶されている番組情報表示データの一例を示す図である。
番組情報表示データに含まれる各番組情報は表形式で格納されている。列601は、チャンネルの識別子である。列602は、番組名である。列603は番組の放送開始時間、列604は放送終了時間である。列605は、番組の音声種別を表しており、モノラル音声、ステレオ音声、および5.1チャンネル音声をそれぞれ「モノラル」、「ステレオ」、および「5.1」と表記している。列606は、番組の種別を表している。通常番組の種別は空欄で示され、映画番組の種別は「映画」で示され、スポーツ番組の種別は「スポ」で表される。行611〜614の各行は、それぞれ1つの番組情報を表す。この例では、1つの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別、および番組の種別の組となる。例えば、行611は、チャンネル識別子が「1」、番組名が「ニュース9」、放送開始時間が「9:00」、放送終了時間が「10:30」、音声種別が「モノラル」、番組の種別が「通常」であることを示す組となっている。
再生部402bは、受け取ったチャンネルの識別子を用いて、そのチャンネルの番組を再生する、すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第2メモリ203に予め格納されている。
図10は、第2メモリ203に格納されているチャンネル情報の一例を示す図である。
チャンネル情報は表形式で格納されている。つまり、第2メモリ203には、表形式で複数のチャンネル情報を示すチャンネル情報テーブル700が格納されている。列701は、チャンネルの識別子である。列702は、チャンネル名である。列703はチューニング情報である。ここで、チューニング情報は、周波数や転送レート、符号化率などを含み、受信部204に与える値である。列704はプログラムナンバーである。プログラムナンバーとは、MPEG2規格で規定されているPMT(Program Map Table)を識別するための番号である。PMTに関しては、後述する。行711〜714の各行は、各チャンネルの識別子、チャンネル名、チューニング情報、およびプログラムナンバーの組となる。行711は、識別子が「1」、チャンネル名が「チャンネル1」、チューニング情報が周波数「150MHz」、プログラムナンバーが「101」であることを示す組となっている。再生部402bは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ404に引き渡す。
また、再生部402bは、再生中に、ユーザがフロントパネル300の上カーソルボタン301と下カーソルボタン302を押下すると、入力部201からCPU211を通して、その押下に応じた通知を受け取り、再生している番組のチャンネルを変更する。つまり、ユーザが上カーソルボタン301を押下すると、再生部402bは、現在再生中の番組のチャンネルよりも一つ小さいチャンネル識別子を持つチャンネルの番組を再生し、ユーザが下カーソルボタン302を押下すると、現在再生中の番組のチャンネルよりも一つ大きいチャンネル識別子を持つチャンネルの番組を再生する。そして、再生部402bは、第2メモリ203に現在再生中の番組のチャンネル識別子を記録する。
図11A、図11Bおよび図11Cは、第2メモリ203に保存しているチャンネル識別子の例を示す図である。
図11Aに示すように、チャンネル識別子「3」が記憶されている場合、図10に示すように、そのチャンネル識別子は、チャンネル名「TV 3」のチャンネルの番組が再生中であることを示す。図11Aの状態で、ユーザが上カーソルボタン301を押下すると、再生部402bは、図10のチャンネル情報テーブル700を参照し、表中で現在再生中のチャンネルよりも一つ小さいチャンネル識別子を持つチャンネルであるチャンネル名「チャンネル2」のチャンネルの番組に再生を切り変えるため、サービスマネージャ404にチャンネル名「チャンネル2」のチャンネル識別子「2」を引き渡す。同時に、再生部402bは、第2メモリ203に記憶されているチャンネル識別子を「2」に書き換える。図11Bは、チャンネル識別子が書き換えられた状態を表す。また、図11Aの状態で、ユーザが下カーソルボタン302を押下すると、再生部402bは、図10のチャンネル情報テーブル700を参照し、表中で現在再生中のチャンネルよりも一つ大きいチャンネル識別子を持つチャンネルであるチャンネル名「TV Japan」のチャンネルの番組に再生を切り変えるため、サービスマネージャ404にチャンネル名「TV Japan」のチャンネル識別子「4」を引き渡す。同時に、再生部402bは、第2メモリ203に記憶されているチャンネル識別子を「4」に書き換える。図11Cは、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第2メモリ203に記憶されているので、STB104の電源が切られた際も保存されている。
更に再生部402bは、STB104の電源が投入された際に、起動されると、第2メモリ203に記憶されているチャンネル識別子を読み出す。そして、再生部402bは、そのチャンネル識別子をサービスマネージャ404に引渡す。これにより、STB104は、電源投入時に前回の稼動時に再生されていた最後の番組のチャンネルの再生を開始することができる。
JavaVM403は、プログラム実行手段として構成され、Java(登録商標)言語で記述されたプログラムを逐次解析し実行するJavaバーチャルマシンである。Java言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Javaバーチャルマシンは、このバイトコードを実行するインタープリタである。また、一部のJavaバーチャルマシンは、バイトコードをCPU211が理解可能な実行形式に翻訳してから、CPU211に引渡し、実行することも行う。JavaVM403は、カーネル401aに実行するJavaプログラムを指定されて起動される。本実施の形態では、カーネル401aは、実行するJavaプログラムとしてサービスマネージャ404を指定する。Java言語の詳細は、書籍「Java Language Specification(ISBN 0−201−63451−1)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。また、JavaVM自体の詳細な動作などは、「Java Virtual Machine Specification(ISBN 0−201−63451―X)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ404は、Java言語で書かれたJavaプログラムであり、JavaVM403によって逐次実行される。サービスマネージャ404は、JNI(Java Native Interface)を通して、Java言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。JNIに関しても、書籍「Java Native Interface」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ404は、JNIを通して、再生部402bよりチャンネル識別子を受け取る。
サービスマネージャ404は、最初にJavaライブラリ405の中にあるTuner405cに、チャンネル識別子を引き渡し、チューニングを依頼する。Tuner405cは、第2メモリ203が記憶するチャンネル情報テーブル700を参照し、チューニング情報を獲得する。今、サービスマネージャ404がチャンネル識別子「2」をTuner405cに引き渡すと、Tuner405cは、図10に示すチャンネル情報テーブル700の行712を参照して、対応するチューニング情報「156MHz」を獲得する。Tuner405cは、OS401のライブラリ401bのチューナ401b1を通して、受信部204にチューニング情報を引き渡す。受信部204は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部205に引き渡す。
次に、サービスマネージャ404は、Javaライブラリ405の中にあるCA405dにデスクランブルを依頼する。CA405dは、OS401のライブラリ401bの限定解除部401b2を通して復号に必要な情報をデスクランブラ206に与える。デスクランブラ206は、与えられた情報を元に、受信部204から与えられた信号を復号しTSデコーダ207に引き渡す。
次に、サービスマネージャ404は、Javaライブラリ405の中にあるJMF405aにチャンネル識別子を与え、映像および音声の再生を依頼する。
まず、JMF405aは、再生すべき映像と音声を特定するためのパケットIDをPATおよびPMTから取得する。PATやPMTは、MPEG2規格で規定されている、MPEG2トランスポートストリーム内の番組構成を表現するテーブルであり、MPEG2トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。PATは、Program Association Tableの略で、パケットID「0」のパケットに格納され送信されている。JMF405aは、PATを取得するため、OS401のライブラリ401bを通して、多重分離部205にパケットID「0」を指定する。多重分離部205がパケットID「0」でフィルタリングを行い、CPU211に引き渡すことで、JMF405aは、PATのパケットを収集する。
図12は、収集したPATの一例を模式的に表した図である。
列901は、プログラムナンバーである。列902は、パケットIDである。列902のパケットIDはPMTを取得するために用いられる。行911〜913は、チャンネルのプログラムナンバーとそのプログラムナンバーに対応するパケットIDとの組である。ここでは、3つのチャンネルが定義されている。行911は、プログラムナンバー「101」とパケットID「501」の組が定義されている。今、JMF405aに与えられたチャンネル識別子が「2」とすると、JMF405aは、図12のPATの行912を参照して、対応するプログラムナンバー「102」を獲得し、次に、図12のPATの行912を参照し、プログラムナンバー「102」に対応するパケットID「502」を獲得する。
PMTは、Program Map Tableの略で、PATで規定されたパケットIDのパケットに格納され送信されている。JMF405aは、PMTを取得するため、OS401のライブラリ401bを通して、多重分離部205にパケットIDを指定する。ここで、指定するパケットIDは「502」とする。多重分離部205がパケットID「502」でフィルタリングを行い、CPU211に引き渡すことで、JMF405aは、PMTのパケットを収集する。
図13は、収集したPMTの一例を模式的に表した図である。
列1001は、ストリーム種別であり、列1002は、パケットIDである。列1002で指定されるパケットIDのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列1003は補足情報である。行1011〜1014は、それぞれエレメンタリーストリームのパケットIDと、送信している情報の種別との組である。行1011は、ストリーム種別「音声」とパケットID「5011」の組であり、パケットID「5011」のペイロードには音声が格納されていることを表す。JMF405aは、PMTから再生する映像と音声のパケットIDを獲得する。JMF405aは、図13に示すPMTを参照して、行1011から音声のパケットID「5011」を獲得し、行1012から映像のパケットID「5012」を獲得する。
次に、JMF405aは、OS401のライブラリ401bのAV再生部401b3に、獲得した音声のパケットIDと映像のパケットIDを引き渡す。AV再生部401b3は、受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ207に与える。TSデコーダ207は与えられたパケットIDでフィルタリングを行う。ここでは、JMF405aは、パケットID「5011」のパケットを音声出力部208およびHDMI部210に引き渡し、パケットID「5012」のパケットを映像出力部208およびHDMI部210に引き渡す。音声出力部208は、与えられたパケットを適宜変換して(例えばデジタル−アナログ変換)出力する。映像出力部208は、与えられたパケットを適宜変換して(例えばデジタル−アナログ変換)出力する。HDMI部210は、HDMI仕様に基づき、受け取った音声データおよび映像データのパケットデータを変換して出力する。
最後にサービスマネージャ404は、Javaライブラリ405の中にあるAM405bにチャンネル識別子を与え、データ放送再生を依頼する。ここで、データ放送再生とは、MPEG2トランスポートストリームに含まれるJavaプログラムを抽出し、JavaVM403に実行させることである。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の略である。
AM405bは、まず、AITを獲得するため、JMF405aと同様に、PATおよびPMTを取得し、AITが格納されているパケットのパケットIDを獲得する。今、与えられたチャンネル識別子が「2」で、図12に示すPATと図13に示すPMTが送信されている場合、AM405bは、JMF405aと同様の手順で、図13のPMTを獲得する。AM405bは、PMTから、ストリーム種別「データ」および補足情報「AIT」に該当するエレメンタリーストリームのパケットIDを抽出する。例えば、AM405bは、図13のPMTを参照して、行1013のエレメンタリーストリームのパケットID「5013」を獲得する。
AM405bは、OS401のライブラリ401bを通して多重分離部205にAITのパケットIDを与える。多重分離部205は、与えられたパケットIDでフィルタリングを行い、CPU211に引き渡す。この結果、AM405bは、AITのパケットを収集することができる。
図14は、収集したAITの一例を模式的に表した図である。
列1101はJavaプログラムの識別子である。列1102はJavaプログラムの制御情報である。制御情報には「autostart」、「present」および「kill」などがある。「autostart」は、即時にSTB104がこのプログラムを自動的に実行することを意味し、「present」は、自動実行しないことを意味し、「kill」は、プログラムを停止することを意味する。列1103は、DSMCC方式でJavaプログラムを含んでいるパケットIDを抽出するためのDSMCC識別子である。列1104はJavaプログラムのプログラム名である。行1111と1112は、Javaプログラムの情報の組である。行1111で定義されるJavaプログラムは、識別子「301」、制御情報「autostart」、DSMCC識別子「1」、およびプログラム名「a/TopXlet」の組である。行1112で定義されるJavaプログラムは、識別子「302」、制御情報「present」、DSMCC識別子「1」、およびプログラム名「b/GameXlet」の組である。ここで2つのJavaプログラムは同じDSMCC識別子を持つが、これは1つのDSMCC方式でエンコードされたファイルシステム内に2つのJavaプログラムが含まれていることを表す。ここでは、Javaプログラムに対して4つの情報しか規定されていないが、実際にはより多くの情報が定義される(DVB−MHP規格参照)。
AM405bは、AITの中から「autostart」のJavaプログラムを見つけ出し、対応するDSMCC識別子及びJavaプログラム名を抽出する。AM405bは、例えば図14に示すAITを参照して、行1111のJavaプログラムを抽出し、DSMCC識別子「1」及びJavaプログラム名「a/TopXlet」を獲得する。
次に、AM405bは、AITから取得したDSMCC識別子を用いて、JavaプログラムをDSMCC方式で格納しているパケットのパケットIDをPMTから獲得する。具体的には、AM405bは、PMTの中で、ストリーム種別が「データ」で、補足情報のDSMCC識別子が上述の取得したDSMCC識別子に合致するエレメンタリーストリームのパケットIDを取得する。
今、AITから取得したDSMCC識別子が「1」であり、PMTが図13に示すPMTである場合、AM405bは、DSMCC識別子が「1」である行1014のエレメンタリーストリームのパケットID「5014」を取り出す。
AM405bは、OS401のライブラリ401bを通して多重分離部205に、DSMCC方式でデータが埋めこめられたパケットのパケットIDを指定する。ここでは、AM405bは、パケットID「5014」を指定する。多重分離部205は、与えられたパケットIDでフィルタリングを行い、パケットをCPU211に引き渡す。この結果、AM405bは、必要なパケットを収集することができる。AM405bは、収集したパケットから、DSMCC方式に従ってファイルシステムを復元し、第1メモリ202あるいは第2メモリ203に保存する。ファイルシステム等のデータを取り出して第1メモリ202あるいは第2メモリ203に保存することを以降、ダウンロードと呼ぶ。
図15は、ダウンロードしたファイルシステムの一例を示す図である。なお、図15中、丸はディレクトリを表し、四角はファイルを表す。
このファイルシステムは、ルートディレクトリ1201と、「a」で示されるディレクトリ1202と、「b」で示されるディレクトリ1203と、「TopXlet.class」で示されるファイル1204と、「GameXlet.class」で示されるファイル1205とを有する。
ここでは、MPEG2トランスポートストリームからファイルシステムをダウンロードする例を記載したが、OCAP仕様では、IPネットワークを用いたダウンロードなども規定している。また、AITではなくXAITと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。
次にAM405bは、第1メモリ202あるいは第2メモリ203にダウンロードしたファイルシステム中から実行するJavaプログラムをJavaVM403に引き渡す。今、実行するJavaプログラム名が「a/TopXlet」とすると、Javaプログラム名の最後に「.class」を付加したファイル「a/TopXlet.class」が実行すべきファイルとなる。「/」はディレクトリやファイル名の区切りである。図15に示すように、ファイル1204が実行すべきJavaプログラムである。次にAM405bは、ファイル1204をJavaVM403に引き渡す。
JavaVM403は、引き渡されたJavaプログラムを実行する。
サービスマネージャ404は、他のチャンネル識別子を受け取ると、Javaライブラリ405に含まれる各ライブラリを通して再生している映像および音声と実行しているJavaプログラムとを、同じくJavaライブラリ405に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネル識別子に基づいて、映像および音声の再生及びJavaプログラムの実行を行う。
また、サービスマネージャ404は、再生部402bだけでなく、JavaVM403上で実行されるJavaプログラムからチャンネル識別子を受け取る機能も備える。具体的には、サービスマネージャ404は、チャンネル識別子を受け取るためのJava言語のクラス及びそのメソッドを提供する。サービスマネージャ404は、チャンネル識別子を受け取ると、Javaライブラリ405に含まれる各ライブラリを通して現在再生している映像および音声と実行しているJavaプログラムとを、同じくJavaライブラリ405に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネル識別子に基づいて、新しい映像および音声の再生及びJavaプログラムの実行を行う。
Javaライブラリ405は、第2メモリ203に格納されている複数のJavaライブラリの集合である。本実施の形態では、ここでは、Javaライブラリ405は、JMF405a、AM405b、Tuner405c、CA405d、機器制御ライブラリ405e、再生Lib405f、IO405g、AWT405h等を含んでいる。
JMF405a、AM405b、Tuner405c、およびCA405dの機能は、既に記述されているので省略する。
再生Lib405fは、第2メモリ203が記憶している、現在再生しているチャンネルの識別子をJavaプログラムに渡すためのJava言語のクラスおよびメソッド(以下Java APIと記述)を提供する。このJava APIを利用することで、Javaプログラムは、現在再生中のチャンネルを知ることができる。なお、APIは、Application Program Interfaceのことである。
IO405gは、Javaプログラムが第2メモリ203にデータを書き込むためのJava API、あるいは、その書き込んだデータを第2メモリ203から読み込むためのJava APIをJavaプログラムに提供する。このAPIを利用することで、Javaプログラムは、任意のデータを第2メモリ203に保存することができる。この保存されたデータはSTB104の電源がオフになっても消えないので、Javaプログラムは、STB104の電源が投入された後、再びそのデータを読み込むことができる。
AWT405hは、Javaプログラムが描画を行ったり、入力部201からのキー入力通知を受け取るためのJava APIを提供する。具体的には、AWT405hは、「The Java class Libraries Second Edition,Volume 2」(ISBN0−201−31003−1)で既定されるjava.awtパッケージ、java.awt.eventパッケージ及びその他のjava.awtのサブパッケージが相当する。ここでは、詳細な説明を省略する。
SI405iは、Javaプログラムがチャンネル情報や番組情報表示データを取得するJava APIを提供する。具体的には、Java TV仕様などが存在する。また、生のバイナリーデータを放送中のMPEG2トランスポートストリームから取得するMPEGセクションフィルターAPIがOCAP仕様の中で定義されており、送信されてきた独自の番組情報表示データをJavaアプリケーションプログラム(以下、Javaアプリケーションまたはアプリケーションという)が理解して取り扱うことも出来る。
機器制御ライブラリ405eは、OS401のライブラリ401bのCEC401b4を通して、HDMI部210を制御し、HDMI部210をインターフェースとして用い、STB104に接続されている他の機器の制御などを行う。
図16は、機器制御ライブラリ405eの内部構成の一例を表すブロック図である。
機器制御ライブラリ405eは、接続機器管理部1301、電源制御部1302、音場制御部1303、低レベル送信部1304、および低レベル受信部1305を備える。なお、ここで機器制御ライブラリ405eは、STB104に接続されたアンプ102やテレビ101などの接続機器を制御する他の機能を含んでいても良い。また、本実施の形態では、機器制御ライブラリ405eおよびCEC401b4から通信手段および変換手段が構成されている。つまり、機器制御ライブラリ405eおよびCEC401b4は、Javaアプリケーションによってテレビ101およびアンプ102が制御されるように、Javaアプリケーションによって扱われるデータと、CEC401b4によって通信されるデータとの間の変換を行う。
接続機器管理部1301は、STB104のHDMI部210にHDMIラインで接続されているアンプ102やテレビ101などの機器を管理する。HDMI対応機器は、HDMIラインに接続されると、HDMI−CEC規格に基づき物理アドレスが割り当てられる。HDMI対応機器でHDMI−CECに対応しているアンプ102やテレビ101などの機器は、更にHDMI−CEC規格に基づき論理アドレスが割り当てられる。HDMI−CECメッセージは、この論理アドレスを用いて送信先を指定する。論理アドレスにより機器の種別、例えば、テレビやDVDプレーヤなど、を特定できるように仕様が規定されている。接続機器管理部1301は、接続されているHDMI対応機器の物理アドレスおよび論理アドレス、つまりアンプ102およびテレビ101の物理アドレスおよび論理アドレスを機器管理情報として第1メモリ202に格納する。
図17は、図2Bに示された機器接続が行われている場合に、STB104の接続機器管理部1301が、第1メモリ202に格納している機器管理情報の一例を示す図である。
機器管理情報は列1401と列1402を有し、列1401は、接続されている機器の物理アドレスを示し、列1402は、接続されている機器の論理アドレスを示す。ここでは、テレビ101およびアンプ102に対応する2つの情報が機器管理情報として保存されている。行1411は、テレビ101の情報を表し、この例では、テレビ101の物理アドレス「0000」を示すとともに、HDMI−CEC規格における定義に基づきテレビを表す「0」を論理アドレスとして示している。行1412は、アンプ102の情報を表し、この例では、アンプ102の物理アドレス「1000」を示すとともに、HDMI−CEC規格における定義に基づきAudio systemを表す「5」を論理アドレスとして示している。
接続機器管理部1301は、ダウンロードしたJavaアプリケーションに対して、API(Application Program Interface)を提供する。このAPIによって、接続されている機器の物理アドレス、論理アドレス、および状態を検索することができる。これにより、Javaアプリケーションは、接続されているHDMI対応機器の情報を獲得することが出来る。
図18は、接続機器管理部1301に備えられるAPIの例を示す図である。
図18の(1)に示すgetDevices()メソッドは、接続されている機器の数に対応するHDMIDeviceオブジェクトを配列で返すJava APIである。ここで、1つのHDMIDeviceオブジェクトは、1つの接続機器を表す。HDMIDeviceオブジェクトは、2つのメソッドを有する。図18の(2)に示す、その2つのメソッドのうちの1つであるgetPhysicalDeviceNumber()メソッドは、HDMIDeviceの物理アドレスを取得するJava APIである。図18の(3)に示す、その2つのメソッドのうちの他の1つであるgetLogicalDeviceNumber()メソッドは、HDMIDeviceの論理アドレスを取得するJava APIである。
電源制御部1302は、STB104のHDMI部210にHDMIラインで接続されている機器に対して、電源をONまたはOFFするためのHDMI−CECメッセージを送信する。電源をONするには、HDMI―CEC仕様が規定するメッセージ<User Control Pressed>[“Power”]を接続されている機器に送信する。このメッセージを送信することで、テレビ101の電源をONにすることができる。実際には、電源制御部1302は、このメッセージを送信する前に、接続されている機器の状態をメッセージの送受信を行うことで確認し、電源がONになっていなければ、電源ONのメッセージを送信する。また、電源制御部1302は、電源ONのメッセージを送信した後、接続機器の電源がONになったことを示すメッセージを受け取ることで、接続機器の電源が投入されたことを確認する。
電源制御部1302は、ダウンロードしたJavaアプリケーションに対して、APIを提供する。ここでは4つのAPIの例を取り上げる。
図19は、電源制御部1302に備えられるAPIの例を示す図である。
図19の(1)に示すAllDevicePowerOn()は、接続されている全ての機器の電源をONするJava APIである。成功するとtrueが返り、失敗するとfalseが返る。Javaアプリケーションが、このAPIを呼び出すことで、接続されている全てのHDMI対応機器の電源をONにすることができる。図2Bに示すように、STB104上で実行されているJavaアプリケーションがこのAPIを呼び出すと、テレビ101およびアンプ102の2つの機器の電源を1度に投入することが出来る。
電源制御部1302は、接続機器管理部1301を参照して、接続されているHDMI対応機器に対してそれぞれメッセージを送信するか、全機器に一斉にメッセージを送信するbroadcastメッセージ送信を行う。
図19の(2)に示すDevicePowerOn()は、特定の機器の電源をONするJava APIである。引数には、機器を表現するHDMIDeviceオブジェクトを与える。あるいは、機器を特定するための情報(機器の物理アドレスや論理アドレス等)を、このAPIに与えてもよい。このAPIを呼び出すことで、指定した機器の電源をONすることができる。
図19の(3)に示すAllDevicePowerOff()は、全ての機器の電源をOFFするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、接続されている全ての機器の電源をOFFすることができる。
図19の(4)に示すDevicePowerOff()は、特定の機器の電源をOFFするJava APIである。引数には、機器を表現するHDMIDeviceオブジェクトを与える。あるいは、機器を特定するための情報(機器の物理アドレスや論理アドレス等)を、このAPIに与えてもよい。このAPIを呼び出すことで、指定した機器の電源をOFFすることができる。
音場制御部1303は、テレビ101とアンプ102にHDMI−CECメッセージを送信し、シアターモードを実現する。シアターモードは、テレビ101の音声出力がミュートされ、かつ、アンプ102を介してスピーカ103からSTB104の音声が出力されている状態である。
図20は、音場制御部1303が音声出力状態をシアターモードに切り替える処理の流れを示す流れ図である。
音場制御部1303は、テレビ101に対して、テレビ101の音声出力をミュートするように要求するHDMI−CECコマンドを送信する(ステップS1504)。この場合、HDMI−CECコマンドはアンプ102を介してテレビ101に伝送されることになるが、これはHDMI−CEC仕様に従い行われる。
また、音場制御部1303は、アンプ102に対して、STB104から受信した音声をスピーカ103へ出力させることを伝えるHDMI−CECコマンドを送信する(ステップS1505)。
テレビ101は、ステップS1504で送信されたHDMI−CECコマンドをHDMI−CEC通信部101dで受信して、テレビ101からの出力音声をミュートする(ステップS1506)。
アンプ102は、ステップ1105で送信されたHDMI−CECコマンドをHDMI−CEC通信部102cで受信して、STB104から受信した音声をスピーカ103へ出力する(ステップS1507)。ここで、STB104から出力される音声がモノラルであれば、アンプ102は、モノラルとしてその音声を出力する。アンプ102は、音声がステレオであれば、ステレオとしてその音声を出力し、音声が5.1チャンネルであれば、5.1チャンネルとしてその音声を出力する。また、アンプ102は、ステレオの音声を擬似的に5.1チャンネル音声に変換して出力したり、その逆に、5.1チャンネルの音声を擬似的にステレオの音声に変換して出力してもよい。
以上のステップS1504〜S1507の処理により、音場制御部1303は音声出力の状態をシアターモードに切り替える。
また、逆に、音場制御部1303は、上述と同様の方法により、シアターモードを終了して、アンプ102によるスピーカ103からの出力音声を停止し、テレビ101から音声出力させるように、音声出力状態を切り替える。
また、音場制御部1303は、スピーカ103における音声再生方法を制御することが出来る。例えば、音場制御部1303は、スピーカ103によって形成される音場モードを、スポーツモードやシネマモードやドラマモードや音楽モードなどの視聴しているコンテンツに最適な音場モードに設定することが出来る。ここで、音場制御は、より具体的には、反射音の大きさや、数、残響音の大きさ、残響時間などの残響特性パラメータと、周波数特性パラメータとに基づいた音声信号処理を行うことであり、従来の技術により実現可能である。
音場制御部1303は、ダウンロードしたJavaアプリケーションに対して、APIを提供する。
図21は、音場制御部1303に備えられるAPIの例を示す図である。
図21の(1)に示すHomeTheaterON()メソッドは、シアターモードをONにするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、シアターモードをON、つまりテレビ101の音声出力を停止し、アンプによる音声出力を開始することができる。
図21の(2)に示すHomeTheaterOFF()メソッドは、シアターモードをOFFにするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、シアターモードをOFFにすることができる。
図21の(3)に示すsetPlayMode()メソッドは、再生チャンネル数(再生モード)を指定するJava APIである。Javaアプリケーションは、引数に対応するモードを指定すると、音源に関係なく、音声の再生モードを、指定されたモード、例えばモノラル再生、ステレオ再生、または5.1チャンネル再生に切り替えることが出来る。例えば、音源が5.1チャンネルであっても、Javaアプリケーションは、ステレオ再生を行うことが出来る。
図21の(4)に示すsetSoundMode()メソッドは、音場モードを設定するJava APIである。Javaアプリケーションは、このAPIの引数に所望の音場(音場モード)を与えることで、引数に応じた音場モードを指示するHDMI−CECメッセージをアンプ102に送信する。これにより、Javaアプリケーションは、アンプ102に対してスポーツモードやシネマモードやドラマモードや音楽モードなどの音場モードの設定を実施することが出来る。
低レベル送信部1304は、ダウンロードしたJavaアプリケーションに対して、そのアプリケーションがHDMI−CECメッセージをバイナリー形式で指定して送信するためのAPIを提供する。
図22は、低レベル送信部1304に備えられるAPIの例を示す図である。
図22の(1)に示すsend()メソッドは、データを送信するJava APIである。Javaアプリケーションが、メッセージであるバイナリー形式のデータ(バイナリーデータ)をこのAPIの引数に与えると、低レベル送信部1304は、そのバイナリーデータを送信する。バイナリーデータは、送信先の論理アドレス、またはBroadcast送信などの情報を含む。このバイナリーデータのフォーマットは、HDMI−CEC仕様で定義されたコマンドであっても良いし、HDMI−CEC仕様で定義されたベンダー独自コマンドのフォーマットに基づき、必要とする情報を含んだフォーマットであってもよい。
図22の(2)に示すsend()メソッドは、特定の機器に対してデータを送信するJava APIである。Javaアプリケーションは、メッセージの送信先となる機器を表すHDMIDeviceオブジェクトと送信メッセージをこのAPIの引数に与える。
低レベル受信部1305は、ダウンロードしたJavaアプリケーションに対して、そのアプリケーションがHDMI−CECメッセージをバイナリー形式で受け取るためのAPIを提供する。低レベル受信部1305は、ダウンロードしたJavaアプリケーションから、予め、受信したHDMI−CECメッセージを配信するためのリスナー(コールバック関数)を受け付ける。
図23は、低レベル受信部1305に備えられるAPIの例を示す図である。
図23の(1)に示すaddListener()メソッドは、リスナーを受け付けるためのJava APIである。低レベル受信部1305は、HDMI−CECメッセージを受信すると、Javaアプリケーションが登録したリスナーに配信する。
図23の(2)に示すreceive()メソッドは、リスナーに定義された受信メッセージを受け取るためのJava APIである。ここで、低レベル受信部1305は、リスナーの受付と同時に、メッセージ配信の条件の指定を受け付けても良い。例えば、低レベル受信部1305は、物理アドレスや論理アドレス等の指定とメッセージ配信の条件の指定を受付け、その条件に合致するメッセージのみを、Javaアプリケーションが登録したリスナーに配信する。
図23の(3)に示すaddListenerメソッドは、メッセージ配信の条件とリスナーを受け付けるためのJava APIである。低レベル受信部1305は、このAPIによって、リスナーとメッセージ配信の条件を表すバイトデータとを受け取る。
次に、ダウンロードされたJavaアプリケーションが、機器制御ライブラリ405eを用いて、図2Bで構成されるホームシアターシステムを制御する例を説明する。
Javaアプリケーションは、Javaライブラリ405やサービスマネージャ404の機能を利用して、様々なサービスをSTB104上で実現することが出来る。ダウンロードしたJavaアプリケーションは、図8Aまたは図8Bで示した電子番組表の表示も、ダウンロードEPGアプリケーションとして実行することが出来る。ダウンロードEPGアプリケーションは、SI405iを用いて番組情報表示データを取得し、AWT405hを用いてディスプレイ上に電子番組表を表示することが出来る。また、ダウンロードEPGアプリケーションは、ユーザからのキー入力を、同じくAWT405hを通して受け取り、電子番組表上のカーソル移動などを実行することができる。番組表上でユーザが番組を選択すると、ダウンロードEPGアプリケーションは、サービスマネージャ404にサービス選択(番組選択)を依頼することで、チャンネルの変更を実行する。
ダウンロードEPGアプリケーションは、サービスマネージャ404による番組選択と同時に、選択した番組の番組情報を用いて、機器制御ライブラリ405eを呼び出すことで、テレビ101およびアンプ102を制御してホームシアターシステムの起動や制御を行うことが出来る。例えば、ダウンロードEPGアプリケーションは、図9に示す番組情報表示データを参照して、ユーザからの指示に従い、行612に対応するチャンネルを再生することとする。ダウンロードEPGアプリケーションは、図9に示す行612を参照して、この番組の種別が映画であることから、まず、電源制御部1302を呼び出し、接続されている機器の全ての電源をONにする。
本実施の形態においては、ダウンロードEPGアプリケーションは、図19の(1)に示すAllDevicePowerOn()メソッドを呼び出す。この結果、テレビ101やアンプ102に電源が入っていなければ、それらの電源がONになる。次に、ダウンロードEPGアプリケーションは、音場制御部1303を呼び出し、シアターモードを実現する。本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(1)に示すHomeTheaterON()メソッドを呼び出すことで、テレビの音声出力を停止し、STB104の音声を、アンプ102を通してスピーカ103から出力する。ダウンロードEPGアプリケーションの、この一連の処理により、ユーザが映画を選んだだけで、自動的にシアターモードが起動し、ユーザはホームシアター環境で映画を視聴することが出来る。更に、ダウンロードEPGアプリケーションは、番組の種別が「映画」であることから、音場制御部1303を呼び出し、シネマモードをセットすることが出来る。
本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(4)に示すsetSoundMode()メソッドにシネマモードを表す数値(例えば1)を引数に与えることで、シネマモードに設定する。また、番組種別が「スポーツ」の時は、ダウンロードEPGアプリケーションは、音場制御部1303を呼び出し、スポーツモードを設定することが出来る。この結果、視聴者は最適な音場で番組を視聴することが可能である。
音声出力状態がシアターモードである状態から、視聴者がニュースのチャンネルを選んだ際は、ダウンロードEPGアプリケーションは、シアターモードを終了させる。本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(2)に示すHomeTheaterOFF()メソッドを呼び出すことで、アンプ102によるスピーカ103からの音声出力を停止し、テレビ101からの音声出力を再開する。この結果、通常の音声再生で視聴者はニュースを視聴できる。
一方、視聴者がチャンネルを頻繁に変更するたびに音声出力状態が変更されると、視聴者が不快になる可能性もある。そこで、本実施の形態では、視聴者自身に音声出力状態を選択させてもよい。ダウンロードEPGアプリケーションは、接続機器管理部1301を参照し、ホームシアターシステムを構成するテレビ101とアンプ102の両方がSTB104に接続されているかどうかを判断する。その両方が接続され、視聴者が選択した番組が映画やスポーツであった場合、ダウンロードEPGアプリケーションは、画面上にシアターモードへの変更を促すメッセージを表示する。
図24は、画面上にシアターモードへの変更を促すメッセージの一例を示す図である。
画面左上にメッセージ「シアター」が表示され、視聴者にシアターモードへの変更を促している。ここで、視聴者が図6に示すシアターボタン308を押すと、ダウンロードEPGアプリケーションは、先に記載したとおり、電源のON、シアターモードの設定、及び音場モード設定を行うことが可能である。なお、シアターボタン308は、画面上のグラフィカルユーザインターフェースとして実現することも可能である。
ここで、接続機器管理部1301は、ダウンロードEPGアプリケーションがテレビ101とアンプ102の両方に接続されているかどうかをそのアプリケーションが容易に判断するためのJava APIを備える。
図25は、接続機器管理部1301に備えられるAPIの他の例を示す図である。
IsHomeTheater()メソッドは、ホームシアターシステムを実現するためのテレビ101及びアンプ102がSTB104に接続されていることを調べるJava APIである。このAPIは、図17に示された機器管理情報のような、接続されている機器の一覧を参照し、テレビ101及びアンプ102が接続されているかどうかを調べる。接続機器管理部1301は、このようなAPIが呼び出されると、テレビ101及びアンプ102の両方が接続されており、ホームシアターシステムを構成できる場合は、trueを返し、構成できない場合はfalseを返す。接続機器管理部1301がこのJava APIを備えることにより、Javaアプリケーションは、容易にホームシアターシステムが実現できるか否かを判断することができる。
一方、再生している番組が映画でも、視聴者はモノラル音声で聞きたいかもしれない。あるいは、ステレオ音声を5.1チャンネル再生したい場合もある。そこで、ダウンロードEPGアプリケーションは、これらの要望を受け付けて、その受け付けた要望に対応する設定を行う。
なお、本実施の形態では、電源制御と音場制御を行なった。これらの制御は、機器制御ライブラリ405eが複数のHDMI−CECメッセージの送受信を組み合わせることで実現される。この2つの処理以外にも、本実施の形態のSTB104は、HDMIラインを用いて接続されたDVDレコーダに、STB104が再生する映像音声を記録するなどの処理を行ってもよい。この場合、機器制御ライブラリ405eはレコーダ制御部を持ち、レコーダ制御部は、複数のHDMI−CECメッセージの送受信を組み合わせて所望の機能を実現する。
一方、新しい機能を持ったHDMI対応機器が出現すると、その機能を使うための機能が機器制御ライブラリ405eに無い場合が考えられる。例えば、HDMI−CEC規格の論理アドレスで規定されていないBD(Blue−ray Disc)プレーヤが普及した場合などが考えられる。この際、ダウンロードされたJavaアプリケーションが最新のHDMI−CECメッセージを把握し、新しい機器との連携を実現することで、新規の機器に対応することが可能となる。これを実現するため、機器連携ライブラリ405eは、低レベル送信部1304と低レベル受信部1305を備えている。Javaアプリケーションは、これらのAPIを用いて、HDMI−CECメッセージを直接送受信することで、新規の機器との連携を実現することができる。
また、HDMI−CECでは、同一のベンダーIDを知る機器間のメッセージ通信で、独自のメッセージの送受信を認めている。低レベル送信部1304と低レベル受信部1305は、この独自メッセージの送受信にも使用できる。Javaアプリケーションが、接続された機器の独自メッセージを知っていれば、低レベル送信部1304と低レベル受信部1305を介して、HDMI−CECメッセージの送受信を行うことで、機器連携を実現できる。
以下、本発明の中核をなす機器接続ライブラリ405eの動作をまとめる。
図26は、接続機器管理部1301が備える図18の(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getDevices()メソッドを呼び出する(ステップS2201)。接続機器管理部1301は、第1メモリ202が記憶する機器管理情報(接続機器一覧)を取得する(ステップS2202)。次に、接続機器管理部1301は、取得した接続機器一覧に示される各機器に対応するHDMIDeviceオブジェクトを作成する(ステップS2203)。HDMIDeviceオブジェクトは内部に、物理アドレス及び論理アドレスを保持する。接続機器管理部1301は、作成したHDMIDeviceオブジェクトを配列に格納する(ステップS2204)。最後に、接続機器管理部1301は、APIを呼び出したJavaアプリケーションにHDMIDeviceオブジェクトの配列を返す(ステップS2205)。
図27は、HDMIDeviceクラスの定義例を示す図である。
内部メンバ変数paddに物理アドレスが格納され、内部メンバ変数laddに論理アドレスが格納される。
図28は、接続機器管理部1301が備える図18の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getPhysicalDeviceNumber()メソッドを呼び出す(ステップS2401)。ここで、getPhysicalDeviceNumber()メソッドが図27で示されるHDMIDeviceクラスに定義されているとすると、接続機器管理部1301は、内部メンバ変数paddに格納されている値をJavaアプリケーションに返す(ステップS2402)。ここで、getPhysicalDeviceNumber()メソッドを実装しているオブジェクトが内部に物理アドレスを保持していない場合は、接続機器管理部1301は、第1メモリ202を参照して、物理アドレスを取り出してJavaアプリケーションに返しても良い。
図29は、接続機器管理部1301が備える図18の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getLogicalDeviceNumber()メソッドを呼び出す(ステップS2501)。ここで、getLogicalDeviceNumber()メソッドが図27で示されるHDMIDeviceクラスに定義されているとすると、接続機器管理部1301は、内部メンバ変数laddに格納されている値をJavaアプリケーションに返す(ステップS2502)。ここで、getLogicalDeviceNumber()メソッドを実装しているオブジェクトが内部に論理アドレスを保持していない場合は、接続機器管理部1301は、第1メモリ202を参照して、論理アドレスを取り出してJavaアプリケーションに返しても良い。
図30は、電源制御部1302が備える図19の(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、AllDevicePowerOn()メソッドを呼び出す(ステップS2601)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、1つの接続機器の情報を取り出す(ステップS2602)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2603)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2604)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2605)、電源が入っていなければ、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2606)。
そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2607)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2608)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2609)、OFFであれば、電源ONの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2610)、全ての処理を終了する。電源制御部1302は、全ての機器に対して、ステップS2602からステップS2609の処理が終了したか否かを判別し(ステップS2611)、終了していないと判別すると、ステップS2602からの制御を繰り返し実行する。一方、電源制御部1302は、全ての機器に対して処理が終了したと判別すると、Javaアプリケーションにtrueを返して(ステップS2612)、全ての処理を終了する。ここで、ステップS2607からステップS2609の処理を、電源がONになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図31は、電源制御部1302が備える図19の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、DevicePowerOn()メソッドを呼び出す(ステップS2701)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、指定された接続機器の情報を取り出す(ステップS2702)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2703)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2704)。
電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2705)、電源が入っていなければ、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2706)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2707)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2708)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2709)、OFFであれば、電源ONの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2710)、全ての処理を終了する。一方、ONであれば、電源制御部1302は、Javaアプリケーションにtrueを返して(ステップS2711)、全ての処理を終了する。ここで、ステップS2707からステップS2709の処理を、電源がONになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図32は、電源制御部1302が備える図19の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、AllDevicePowerOff()メソッドを呼び出す(ステップS2801)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、1つの接続機器の情報を取り出す(ステップS2802)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2803)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2804)。
電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2805)、電源が入っていれば、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2806)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2807)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2808)。電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2809)、ONであれば、電源OFFの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2810)、全ての処理を終了する。電源制御部1302は、全ての機器に対して、ステップS2802からステップS2809の処理が終了したか否かを判別し(ステップS2811)、終了していないと判別すると、ステップS2802からの制御を繰り返し実行する。一方、電源制御部1302は、全ての機器に対して処理が終了したと判別すると、Javaアプリケーションにtrueを返して(ステップS2812)、全ての処理を終了する。ここで、ステップS2807からステップS2809の処理を、電源がOFFになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図33は、電源制御部1302が備える図19の(4)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、DevicePowerOff()メソッドを呼び出す(ステップS2901)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、指定された接続機器の情報を取り出す(ステップS2902)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2903)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2904)。
電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2905)、電源が入っていれば、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2906)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2907)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2908)。電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2909)、ONであれば、電源OFFの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2910)、全ての処理を終了する。一方、OFFであれば、電源制御部1302は、Javaアプリケーションにtrueを返して(ステップS2911)、全ての処理を終了する。ここで、ステップS2907からステップS2909の処理を、電源がOFFになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図34は、音場制御部1303が備える図21(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、HomeTheaterON()メソッドを呼び出す(ステップS3001)。音場制御部1303は、接続機器管理部1301を参照し、ホームシアターシステムを構成する機器が接続されているかどうか調べる(ステップS3002)。ホームシアターシステムを構成する機器の具体例としては、テレビ101とアンプ102である。ホームシアターシステムを構成する機器が接続されていなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3008)。一方、ホームシアターシステムを構成する機器が接続されていたら、音場制御部1303は、AllDevicePowerOn()メソッドを呼び出すことで、全ての接続機器の電源をONにする(ステップS3003)。ここで、電源のONに失敗したら、音場制御部1303はJavaアプリケーションにfalseを返して処理を終了する(ステップS3008)。次に、音場制御部1303は、テレビ101に対して音声出力をミュートするように要求するHDMI−CECメッセージ(コマンド)を送信する(ステップS3004)。次に、音場制御部1303は、アンプ102に対して、STB104からの音声を出力するように要求するHDMI−CECメッセージ(コマンド)を送る(ステップS3005)。最後に、音場制御部1303は、シアターモードになっていることを第1メモリ202に記録し(ステップS3006)、Javaアプリケーションにtrueを返して処理を終了する(ステップS3007)。
ここで、音場制御部1303は、ステップS3003で全ての接続機器の電源をONにしているが、ホームシアターシステムを構成する機器だけの電源をONにしてもよい。この場合、図30のフローチャートにおいて、ステップS2611では、全機器の処理が終了したか否かを判別する代わりに、ホームシアターシステムを構成する各機器の処理が終了したか否かを判別する。
図35は、音場制御部1303が備える図21の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、HomeTheaterOFF()メソッドを呼び出す(ステップS3101)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3102)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3107)。一方、シアターモードであれば、音場制御部1303は、DevicePowerOff()メソッドを呼び出すことで、アンプ102の電源をOFFにする(ステップS3103)。次に、音場制御部1303は、テレビ101に対して、アンプ102からの音声を出力するように要求するHDMI−CECメッセージ(コマンド)を送信する(ステップS3104)。最後に、音場制御部1303は、シアターモードになっていないことを第1メモリ202に記録し(ステップS3105)、Javaアプリケーションにtrueを返して処理を終了する(ステップS3106)。
図36は、音場制御部1303が備える図21の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、SetPlayMode()メソッドを呼び出す(ステップS3201)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3202)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3205)。一方、シアターモードであれば、音場制御部1303は、Javaアプリケーションによって与えられた再生モードに応じてHDMI−CECメッセージをアンプ102に送信する(ステップS3203)。最後に、音場制御部1303は、Javaアプリケーションにtrueを返して処理を終了する(ステップS3204)。
図37は、音場制御部1303が備える図21の(4)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、SetSoundMode()メソッドを呼び出す(ステップS3301)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3302)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3305)。一方、シアターモードであれば、音場制御部1303は、Javaアプリケーションによって与えられた音場モードに応じてHDMI−CECメッセージをアンプ102に送信する(ステップS3303)。最後に、音場制御部1303は、Javaアプリケーションにtrueを返して処理を終了する(ステップS3304)。
図38は、低レベル送信部1304が備える図22の(1)または(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、send()メソッドを呼び出す(ステップS3401)。低レベル送信部1304は、そのメソッドの呼び出しによって受け取ったバイナリーデータを用いてHDMI−CECメッセージを作成して送信する(ステップS3402)。
図39は、低レベル受信部1305が備える図23の(1)または(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、addListener()メソッドを呼び出す(ステップS3501)。低レベル受信部1305は、そのメソッドの呼び出しによって受け取ったリスナーを第1メモリ202に記録する(ステップS3502)。
図40は、低レベル受信部1305がHDMI−CECメッセージを受け取った時の動作を表すフローチャートである。
まず、低レベル受信部1305はHDMI−CECメッセージを受け取る(ステップS3601)。低レベル受信部1305は、第1メモリ202を参照してリスナーが記録されているか否かを判別する(ステップS3602)。低レベル受信部1305は、記録されていると判別すると、受け取ったHDMI−CECメッセージをバイナリデータに変換し、リスナーのreceiveメソッドを呼び出すことで、変換したバイナリーデータを引き渡す。
ここで、低レベル受信部1305は、登録したリスナーを削除するremoveListener()メソッドを備えても良い。図27に、HDMI対応機器を表現するHDMIDeviceクラス定義の例を示す。ここに、setListener()メソッドと同様、removeListener()メソッドが定義されている。removeListener()メソッドが呼び出されると、第1メモリ202に記憶されているリスナーが削除される。
このように本実施の形態では、Javaアプリケーションがテレビ101またはアンプ102を制御するために制御データを出力すると、つまりJava APIのメソッドを呼び出すと、その制御データが、CEC401b4およびHDMI部210によって通信されるHDMI−CECメッセージに変換されてそのテレビ101またはアンプ102に送信される。したがって、そのテレビ101またはアンプ102がHDMI−CECに対応した機器であれば、Javaアプリケーションは、HDMI−CECを考慮することなく、メソッドを呼び出してテレビ101またはアンプ102を自由に制御することができる。また、テレビ101またはアンプ102から送信されたHDMI−CECメッセージが、Javaアプリケーションによって扱われるデータに変換されるため、アプリケーションプログラムは、HDMI−CECを考慮することなく機器からメッセージを受け取ることができ、その機器の制御に利用することができる。その結果、本発明では、Javaアプリケーションによって各機器を自由に制御することができるため、ユーザによる操作負担を軽減して適切に機器を連携させることができる。
なお、図5に示すSTB104の構成要素のうちの全てまたは一部をLSI(Large Scale Integration)などの半導体集積回路として構成してもよい。
本発明の機器連携装置は、ユーザによる操作負担を軽減して適切に機器を連携させることができるという効果を奏し、例えば、STBなどの放送受信機や、放送受信可能な携帯電話、携帯端末、車載端末、インターネットを介して音声映像データを受信するパーソナルコンピュータ等に適用することができる。
本発明は、例えばテレビやアンプなどの機器の連携を制御する機器連携装置に関する。
近年、デジタル放送あるいはケーブルテレビ(以下、CATVという)放送を受信するセットトップボックス(以下、STBという)、テレビ、アンプ、スピーカ、およびDVD(Digital Versatile Disk)プレーヤを組み合わせたホームシアターシステムが家庭に本格普及しつつある。これらの機器は、それぞれに対してリモコンを用いて設定を行うことにより、マルチチャンネル音声、例えば5.1チャンネル音声の再生を実現することができる(例えば、非特許文献1参照)。
また、アンプの電源スイッチのオン/オフ操作に連動して、音声をテレビ受信装置だけから出力するか、アンプに接続されているスピーカからも出力するかを切り換える技術(機器連携装置)が提案されている(例えば、特許文献1参照)。
例えば、上記特許文献1の機器連携装置は、テレビ受信装置と組み合わせてサラウンドシステムを構成することが可能なAVアンプに備えられている。つまり、上記特許文献1の機器連携装置は、サラウンドシステムの利用と、テレビ受信装置単独の利用との切り換えを行うことができる。
図1は、上記特許文献1のAVアンプのブロック図を示す。
このようなAVアンプ40の機器連携装置は、サラウンドシステムの利用時には、AVアンプ40の電源スイッチ41がオンにされると、切り換えスイッチ50をセンタ音声増幅回路48側に切り換える。その結果、AVアンプ40に接続された例えばVTR(Video Tape Recorder)やLD(Laser Disc)などの再生機器、またはテレビ受信装置から音声入力端子43に供給されている音声信号がDSP45を介して音声出力端子49を経て周囲のスピーカに供給される。また、このようなAVアンプ40の機器連携装置は、テレビ受信装置単独での利用時に、AVアンプ40の電源スイッチ41がオフにされると、切り替えスイッチ50をテレビ音声入力端子51側に切り換える。その結果、テレビ受信装置の増幅回路で処理されたテレビ音声が、AVアンプ40を介してテレビ受信装置のスピーカに供給される。
High Definition Multimedia Interface specification Version 1.2 特開平5−153520号公報
High Definition Multimedia Interface specification Version 1.2
しかしながら、上記特許文献1の機器連携装置では、サラウンドシステムの使用および不使用を切り換えるために、わざわざAVアンプの電源を操作しなければならないという問題がある。つまり、ユーザは、AVアンプ40に接続されたスピーカに音声を出力させるときには、AVアンプ40の電源をオンにしなければならず、そのスピーカ以外のテレビ受信装置に備えられたスピーカに音声を出力させるときには、AVアンプ40の電源をオフにしなければならない。
そこで、本発明は、かかる問題に鑑みてなされたものであって、ユーザによる操作負担を軽減して適切に機器を連携させる機器連携装置を提供することを目的とする。
上記目的を達成するために、本発明に係る機器連携装置は、複数の機器の動作を連携させる機器連携装置であって、アプリケーションプログラムを含む放送波を受信する受信手段と、前記アプリケーションプログラムを実行するプログラム実行手段と、複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信手段と、前記プログラム実行手段により実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信手段によって通信されるデータとの間の変換を行う変換手段とを備えることを特徴とする。
これにより、アプリケーションプログラムが複数の機器のうちの何れかの機器の動作を制御するために制御データを出力すると、その制御データが、通信手段によって通信されるHDMI−CECメッセージに変換されてその機器に送信されるため、その機器がHDMI−CECに対応した機器であれば、アプリケーションプログラムは、HDMI−CECを考慮することなく、制御データを出力して機器を自由に制御することができる。ここで、アプリケーションプログラムがJava(登録商標)で記述されたプログラムである場合には、例えば、そのプログラムは、Java APIであるメソッドを呼び出すことで上述の制御データを出力する。また、何れかの機器から送信されたHDMI−CECメッセージが、アプリケーションプログラムによって扱われるデータに変換されるため、アプリケーションプログラムは、HDMI−CECを考慮することなく機器からメッセージを受け取ることができ、その機器の制御に利用することができる。その結果、本発明では、アプリケーションプログラムによって各機器を自由に制御することができるため、ユーザによる操作負担を軽減して適切に機器を連携させることができる。
また、前記変換手段は、前記アプリケーションプログラムからバイナリーデータを取得して、前記バイナリーデータを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記複数の機器のうちの何れかの機器に送信することを特徴としてもよい。または、前記通信手段は、前記複数の機器のうちの何れかの機器から、前記HDMI−CECに従ったメッセージを受信し、前記変換手段は、前記通信手段によって受信されたメッセージをバイナリーデータに変換し、前記バイナリーデータを前記アプリケーションプログラムに引き渡すことを特徴としてもよい。
例えば、テレビやアンプなどの機器の間で連携した機能を実現させるためのハードウェアやソフトウェアは、予めその機器に組み込まれた状態で出荷される。その後、ハードウェアやソフトウェアに対して改良や変更が行われ、その変更されたハードウェアやソフトウェアが組み込まれた新たな機器が発売される。その結果、新たに発売された機器と既存の機器との間では、連携機能を実現することができない場合が発生する。そこで、本発明では、アプリケーションプログラムによって扱われるバイナリーデータと、通信手段によって通信されるHDMI−CECメッセージとの間の変換が行われるため、例えば、実行されるアプリケーションプログラムを入れ替えるだけで、機器連携装置そのものを改変することなく、新たに発売された機器を適切に制御して、その新たに発売された機器を含む複数の機器の動作を連携させることができる。
また、前記アプリケーションプログラムはJava(登録商標)で記述されたプログラムであって、前記変換手段は、前記アプリケーションプログラムからリスナーの登録を受け付けることで、前記リスナーを登録し、前記リスナーのメソッドを呼び出すことで、前記アプリケーションプログラムに前記バイナリーデータを引き渡すことを特徴としてもよい。
これにより、アプリケーションプログラムは、機器からのメッセージをバイナリーデータで確実に受け取ることができる。
また、前記変換手段は、さらに、前記アプリケーションプログラムからリスナーの削除を受け付けることで、登録された前記リスナーを削除することを特徴としてもよい。
これにより、アプリケーションプログラムは、機器からのメッセージの受け取りを拒否することができる。
また、前記複数の機器は、映像および音声を出力する第1の機器と、音声を出力する第2の機器とを含み、前記変換手段は、前記第1の機器が音声出力を抑えて映像を出力するとともに前記第2の機器が音声を出力するように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第1および第2の機器に送信することを特徴としてもよい。
これにより、例えばテレビなどの第1の機器が映像だけを出力して、アンプなどの第2の機器のスピーカが音声を出力するようなシアターモードをアプリケーションプログラムが指示すれば、その指示をテレビとアンプが適切に受け取ることができ、その結果、シアターモードで音声が出力されるように、ユーザによる操作負担を軽減してテレビおよびアンプを適切に連携させることができる。
また、前記機器連携装置は、さらに、前記第1および第2の機器が前記通信手段との間で通信可能なように前記通信手段と接続されているか否かを判別し、判別の結果を前記アプリケーションプログラムに通知する通知手段を備えることを特徴としてもよい。
これにより、アプリケーションプログラムは第1および第2の機器が通信手段に接続されているか否かを知ることができ、その結果、アプリケーションプログラムは、第1および第2の機器が接続されていれば、音声出力状態をシアターモードにすることができることをユーザに通知したり、第1および第2の機器が接続されていなければ、シアターモードの指示を省くことができ、アプリケーションプログラムの処理の自由度を高めることができる。
また、前記変換手段は、モノラル、ステレオ、および5.1チャンネルの何れかの状態で前記第2の機器から音声が出力されるように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第2の機器に送信することを特徴としてもよい。
これにより、モノラル、ステレオ、および5.1チャンネルの何れかの再生モードをアプリケーションプログラムが指示すれば、その指示をアンプが適切に受け取ることができ、その結果、指定された再生モードで音声が出力されるように、ユーザによる操作負担を軽減してアンプを適切に操作することができる。
また、前記変換手段は、前記第2の機器から出力される音声の音場を指定するデータを、前記アプリケーションプログラムから受け付けると、前記データを前記HDMI−CECに従ったメッセージに変換し、前記通信手段は、前記メッセージを前記第2の機器に送信することを特徴としてもよい。
これにより、例えばシネマモードやスポーツモードなどの音場モードをアプリケーションプログラムが指示すれば、その指示をアンプが適切に受け取ることができ、その結果、指定された音場モードで音声が出力されるように、ユーザによる操作負担を軽減してアンプを適切に操作することができる。
なお、本発明は、このような機器連携装置として実現することができるだけでなく、その方法やプログラム、そのプログラムを格納する記憶媒体、集積回路としても実現することができる。
本発明の機器連携は、ユーザによる操作負担を軽減して適切に機器を連携させることができるという作用効果を奏する。
以下、本発明の実施の形態に係る機器連携装置について、図面を用いて説明する。
図2Aは、本実施の形態における機器連携装置を含むシステムの構成を示す構成図である。
このシステムは、本実施の形態における機器連携装置Aと、n個の機器B1,B2,…,Bnとから構成されている。この機器連携装置Aは、ユーザによる操作負担を軽減して適切に機器B1,B2,…,Bnの動作を連携させる。つまり、本実施の形態における機器連携装置Aによる機器B1,B2,…,Bnの制御によって、これらの機器B1,B2,…,Bnが連携した処理を実行する。
例えば、本実施の形態にかかる機器連携装置Aは、CATVを受信するSTB(セットトップボックス)として構成され、テレビやアンプをそれぞれ上述の機器として連携させる。このようなSTB、テレビ、アンプ、およびスピーカからホームシアターシステムが構成される。
図2Bは、本実施の形態に係るホームシアターシステムの構成を表すブロック図である。
図2Bに示すように、ホームシアターシステムは、テレビ101、アンプ102、スピーカ103、および機器連携装置たるSTB104で構成される。
本実施の形態におけるSTB104、テレビ101、およびアンプ102は、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)コマンドを送受信するHDMI−CEC通信部を保持し、そのコマンドであるHDMI−CECメッセージを用いて、STB104によって受信されたアプリケーションプログラムが自動的に音声出力状態などを制御する。
また、本実施の形態では、STB104、テレビ101、およびアンプ102などの機器間の通信基本機能を、ミドルウエア、具体的にはJava(登録商標)ミドルウエアを用いて実現している。個別の機器連携機能を、Javaアプリケーションプログラムとして実現することで、常に最新の機器連携機能を実現できる。
なお、HDMI仕様の詳細は、High Definition Multimedia Interface specification Version 1.2に記載されており、また、HDMI−CEC仕様は、同仕様書のAppendix「supplemental 1 Consumer Electronics Control」において規定されている。HDMI規格は、映像/音声の非圧縮デジタルデータを機器間で伝送するための伝送規格であり、伝送にはHDMI規格に準拠した一本のケーブルが用いられる。HDMI−CECは、そのケーブル(HDMIケーブル)を介して機器間で双方向に機器制御コマンドを伝送するための仕様が規定されている。2005年11月現在、www.hdmi.orgからHDMI仕様書をダウンロードすることで取得できる。
テレビ101は、HDMI端子を保持し、アンプ102とHDMIラインで接続されている。テレビ101は、アンプ102から送られてきた映像・音声を再生することが出来る。また、テレビ101は、HDMIラインを通して送られてきたHDMI−CECのメッセージ(コマンド)を受け取り、そのメッセージ(コマンド)に対応する処理を行う。
図3は、テレビ101の構成を示す構成図である。
図3に示すように、テレビ1は、メモリ101aと、リモコン受信部101bと、マイクロコンピュータ(以下、マイコンという)101cと、HDMI−CEC通信部101dと、チューナ101eと、デコーダ101fと、ディスプレイ101gと、スピーカ101hとから構成されている。
テレビ101は、ユーザによって直接操作されたり、リモートコントロール装置(図示せず)(以下、テレビ用リモコンという)を用いても操作される。
マイコン101cは、リモコン受信部101bがテレビ用リモコンから発信されたコマンドを受信すると、そのコマンドに応じた処理を行い、チューナ101eの選局切換や、デコーダ101fの処理を制御する。デコーダ101fは、チューナ101eやHDMI−CEC通信部101dから入力された映像・音声信号を、マイコン101cの指示に応じて、ディスプレイ101gやスピーカ101hに出力する。また、マイコン101cは、HDMI−CEC通信部101dから入力されたHDMI−CECコマンドに応じて、各設定や制御を行う。
また、テレビ101は、本体フロントパネル等に、ボタン等を有する入力部(図示せず)を具備し、この入力部からの入力によって、テレビ用リモコンを用いた操作と同様の操作を受け付ける。
アンプ102は、HDMI端子を保持し、テレビ101及びSTB104とHDMIラインで接続されている。また、アンプ102は、スピーカ103とスピーカ用ラインで接続されている。アンプ102は、STB104から映像・音声を受け取る。アンプ102は、受け取った映像・音声をテレビ101に送信する。また、シネマモード、スポーツモード、音楽モード、ドラマモードなどの所定の音場モードがアンプ102に設定されている場合には、アンプ102は、STB104から受け取った音声信号に、その音場モードに対応する音場特性を付加し、その音声信号をスピーカ103に送信する。もちろん、アンプ102は、音場特性を付加せずに音声信号を送信してもよい。ここで、音場特性の付加は、より具体的には、反射音の大きさや、数、残響音の大きさ、残響時間などの残響特性パラメータと周波数特性パラメータとに基づいた音声信号処理であり、従来の技術により実現可能である。なお、音場は、スピーカ103から出力される音声の状態や質であって、反射音の大きさ、数、残響音の大きさ、残響時間、周波数特性によって、上述のシネマモードやスポーツモードなどの各音場モードに分類される。
アンプ102は、HDMIラインを通して送られてきたHDMI−CECのメッセージ(コマンド)を受け取り、そのメッセージ(コマンド)に対応する処理を行う。この処理には、上述の音場モードを設定する処理も含まれる。
図4は、アンプ102の構成を示す構成図である。
図4に示すように、アンプ102は、HDMI−CEC通信部102aと、マクロコンピュータ(以下、マイコンという)102bと、HDMI−CEC通信部102cと、セレクター102dと、外部入力部e102と、スピーカ出力部102fと、リモコン受信部102gとから構成されている。
アンプ102は、ユーザによって直接操作されたり、リモートコントロール装置(図示せず)(以下、アンプ用リモコンという)を用いても操作される。
マイコン102bは、リモコン受信部102gがアンプ用リモコンから発信されたコマンドを受信すると、そのコマンドに応じた処理を行う。また、マイコン102bは、HDMI−CEC通信部102aまたはHDMI−CEC通信部102cにより受信されたHDMI−CECコマンドに応じた処理を行う。
セレクター102dは、マイコン102bからの指示に応じて、HDMI-CEC通信部102cから出力される音声信号と、外部入力部102eから出力される音声信号とを切り換え、切り換えられた音声信号をスピーカ出力部102fに出力する。ここで、セレクター102dは、音声信号に付加された音場特性たるフォーマット(ステレオ音声のフォーマットや、5.1チャンネル音声のフォーマットなど)に応じた態様で、その音声信号をスピーカ3に出力する。
また、アンプ102は、本体フロントパネル等に、ボタン等を有する入力部(図示せず)を具備し、この入力部からの入力によって、アンプ用リモコンを用いた操作と同様の操作を受け付ける。
スピーカ103は、映画館で臨場感のある音響効果を再現するためのマルチチャンネル音声の再生、例えば5.1チャンネル再生を行うスピーカの集合である。スピーカ103は、実際には、6つのスピーカ(図示せず)から構成される。つまり、スピーカ103は、ユーザに対して、正面、右前方、左前方、右後方、および左後方に配置される5つのスピーカと、低音出力用スピーカとで構成される。スピーカ3は、アンプ102から音声信号を受け取り、出力する。
STB104は、CATV放送の受信・再生を行う。また、STB104は、再生した映像音声を出力するためのHDMI端子を備えている。
図5は、本実施の形態に係るSTB104の構成を表したブロック図である。
STB104は、入力部201、第1メモリ202、第2メモリ203、受信部204、多重分離部205、デスクランブラ206、TSデコーダ207、映像出力部208、音声出力部209、HDMI部210、およびCPU211で構成される。
入力部201は、フロントパネルやリモコン受光器等で構成され、ユーザからのチャンネルの選択等の指示を受け付ける。
図6は、入力部201として構成されたフロントパネルの一例を示す図である。
このフロントパネル300は、上カーソルボタン301、下カーソルボタン302、左カーソルボタン303、右カーソルボタン304、OKボタン305、取消ボタン306、EPGボタン307、およびシアターボタン308の8つのボタンを備えている。ユーザがボタンを押下すると、押下されたボタンの識別子がCPU211に通知される。
第1メモリ202は、RAM(Random Access Memory)等で構成され、CPU211が一時的にデータを保存する際に使用される。
第2メモリ203は、フラッシュメモリーやハードディスク等、電源供給が停止しても情報を保持可能なデバイスで構成され、CPU211が実行するプログラムを保存する。第2メモリ203を、SD(Secure Digital:登録商標)メモリーカード等の取り外し可能な記憶デバイスとして構成してもよい。
受信部204は、ケーブルテレビ局からのケーブルに接続され、放送波を受信し、CPU211から指定された周波数にチューニングし、MPEGトラスポートストリームを抽出して多重分離部205に引き渡す。
多重分離部205は、受信部204からMPEGトラスポートストリームを受け取り、CPU211から指定された情報をそのMPEGトラスポートストリームから抽出してCPU211に引渡す。また、多重分離部205は、MPEGトラスポートストリームをそのままデスクランブラ206に引き渡す。
デスクランブラ206は、多重分離部205から与えられたスクランブルされているMPEGトラスポートストリームをデスクランブル(=復号)し、TSデコーダ207に引き渡す。デスクランブラ206は、STB104に内蔵されたモジュールでも良いし、北米ケーブル受信機で導入されているCableCARD(登録商標)でもよい。CableCARDの仕様は米国CableLabsが策定したCableCARD Interface Specificationに記載されており、ここでは説明を省略する。
TSデコーダ207は、CPU211から音声データと映像データの識別子を受け取る。さらに、TSデコーダ207は、デスクランブラ206から受け取ったデスクランブルされたストリームから、受け取った音声データと映像データの識別子に対応する音声データと映像データを抽出する。そして、TSデコーダ207は、抽出した映像データを映像出力部208に引き渡し、音声データを音声出力部209に引き渡す。また、TSデコーダ207は、その両方(映像データおよび音声データ)を、HDMI部210に引き渡す。
映像出力部208は、映像出力端子を含み、受け取った映像データをその映像出力端子に対応した映像データに変換して出力する。映像出力端子の例としては、コンポジットケーブル端子などがある。
音声出力部209は、音声出力端子を含み、受け取った音声データをその音声出力端子に対応した音声データに変換して出力する。音声出力端子の例としては、イヤホン端子や、コンポジットケーブル端子などがある。
HDMI部210は、HDMI端子を含み、受け取った映像データおよび音声データをHDMI仕様に基づいた映像音声データ形式に変換して出力する。また、HDMI部210は、CPU211からHDMI−CECメッセージ送信の指示を受け取ると、所定のコマンドをHDMI仕様に基づいたデータ形式に変換してそのメッセージを出力する。また、HDMI部210は、HDMI端子を通して受け取ったHDMI−CECメッセージをCPU211に引き渡す。
CPU211は、第2メモリ203が記憶するプログラムを実行することで、受信部204、多重分離部205、デスクランブラ206、TSデコーダ207、およびHDMI部210を制御する。
図7は、第2メモリ203に記憶され、CPU211に実行されるプログラムの構成図である。
プログラム400は、複数のサブプログラムで構成され、OS401、EPG402、JavaVM403、サービスマネージャ404、およびJavaライブラリ405で構成される(Javaは登録商標)。
OS401は、STB104の電源が投入されるときにCPU211が起動するためのサブプログラムである。OS401の「OS」はオペレーティングシステムの略であり、OS401は例えばLinux等である。このようなOS401は、他のサブプログラムを並行して実行するカーネル401a及びライブラリ401bで構成される。本実施の形態においては、OS401のカーネル401aは、EPG402とJavaVM403をサブプログラムとして実行する。また、ライブラリ401bは、これらサブプログラムに対して、STB104が保持する構成要素を制御するための複数の機能を提供する。
本実施の形態では、ライブラリ401bは、チューナ401b1、限定解除部401b2、CEC401b4、およびAV再生部402b3を含む。チューナ401b1は、他のサブプログラムやJavaライブラリ405のTuner405cから周波数を含むチューニング情報を受け取り、受信部204に引き渡す。受信部204は与えられたチューニング情報に基づき復調処理を行い、復調したデータを多重分離部205に引き渡すことができる。この結果、他のサブプログラム及びJavaライブラリ405のTuner405cはライブラリ401bを通して受信部204を制御することができる。
CEC401b4は、他のサブプログラムやJavaライブラリ405の機器制御ライブラリ405eから必要な情報を受け取り、HDMI−CECで規定されるメッセージを作成する。CEC401b4は、作成されたメッセージをHDMI部210に引き渡すことで、HDMIラインを介して他の機器にHDMI−CECのメッセージを送信する。また、CEC401b4は、HDMIラインを介して他の機器からHDMI−CECのメッセージを受け取り、他のサブプログラムやJavaライブラリ405の機器制御ライブラリ405eに通知する。
AV再生部401b3は、他のサブプログラムやJavaライブラリ405のJMF405aから、音声のパケットIDと映像のパケットIDを受け取る。AV再生部401b3は、その受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ207に与える。この結果、TSデコーダ207は与えられたパケットIDに基づいて、フィルタリングを行い、映像および音声の再生を実現する。
EPG402は、ユーザにテレビ番組の一覧を表示するとともに、ユーザからの入力を受け付ける番組表示部402aと、チャンネルの選局を行う再生部402bとで構成される。ここで、EPGはElectric Program Guideの略である。EPG402は、STB104の電源が投入されると、カーネル401aによって起動される。起動されたEPG402の内部では、番組表示部402aと再生部402bが同時に起動される。番組表示部402aは起動されると、STB104の入力部201を通して、ユーザからの入力を待つ。ここで、入力部201が図6で示されるフロントパネル300として構成されている場合、ユーザがフロントパネル300のEPGボタン307を押下すると、EPGボタンの識別子がCPU211に通知される。CPU211上で動作するサブプログラムであるEPG402の番組表示部402aは、この識別子を受け取ると、番組情報表示データを作成してHDMI部210に出力する。テレビ101は、アンプ102を介してその番組情報表示データを受け取り、上述のテレビ番組の一覧である電子番組表を表示する。
図8Aおよび図8Bは、テレビ101に表示された電子番組表の一例を示す図である。
図8Aに示すように、テレビ101には、電子番組表が格子状に表示されている。列501には、時刻情報が表示されている。列502には、チャンネル名「チャンネル1」と、列501の時刻に対応する時間帯に放映される番組の名称とが表示されている。チャンネル名「チャンネル1」では、9:00〜10:30に番組「ニュース9」が放映され、10:30〜12:00に番組「映画AAA」が放映されることが表されている。列503にも、列502と同様、チャンネル名「チャンネル2」と、列501の時刻に対応する時間帯に放映される番組の名称とが表示されている。9:00〜11:00に番組「映画BBB」が放映され、11:00〜12:00に番組「サッカー」が放映されることが表されている。カーソル530は、フロントパネル300の左カーソルボタン303と右カーソルボタン304が押下されると移動する。図8Aの状態で、右カーソルボタン304が押下されると、図8Bに示すように、カーソル530は右に移動する。また、図8Bの状態で、左カーソルボタン303が押下されると、図8Aに示すように、カーソル530は左に移動する。
図8Aの状態で、フロントパネル300のOKボタン305が押下されると、番組表示部402aは、「チャンネル1」の識別子を再生部402bに通知する。図8Bの状態で、フロントパネル300のOKボタン305が押下されると、番組表示部402aは、「チャンネル2」の識別子を再生部402bに通知する。
また、番組表示部402aは、放送波に重畳された番組情報表示データを、多重分離部205を通して定期的に、第2メモリ203に記録しておく。一般的に、放送局からの番組情報表示データの取得には時間が掛かる。フロントパネル300のEPGボタン307が押下された時、番組表示部402aは、第2メモリ203に予め保存された番組情報表示データを読み出することで、素早く電子番組表を表示することができる。
図9は、第2メモリ203に記憶されている番組情報表示データの一例を示す図である。
番組情報表示データに含まれる各番組情報は表形式で格納されている。列601は、チャンネルの識別子である。列602は、番組名である。列603は番組の放送開始時間、列604は放送終了時間である。列605は、番組の音声種別を表しており、モノラル音声、ステレオ音声、および5.1チャンネル音声をそれぞれ「モノラル」、「ステレオ」、および「5.1」と表記している。列606は、番組の種別を表している。通常番組の種別は空欄で示され、映画番組の種別は「映画」で示され、スポーツ番組の種別は「スポ」で表される。行611〜614の各行は、それぞれ1つの番組情報を表す。この例では、1つの番組情報は、チャンネルの識別子、番組名、放送開始時間、放送終了時間、番組の音声種別、および番組の種別の組となる。例えば、行611は、チャンネル識別子が「1」、番組名が「ニュース9」、放送開始時間が「9:00」、放送終了時間が「10:30」、音声種別が「モノラル」、番組の種別が「通常」であることを示す組となっている。
再生部402bは、受け取ったチャンネルの識別子を用いて、そのチャンネルの番組を再生する、すなわちチャンネルを構成する映像と音声を再生する。チャンネルの識別子とチャンネルの関係は、チャンネル情報として、第2メモリ203に予め格納されている。
図10は、第2メモリ203に格納されているチャンネル情報の一例を示す図である。
チャンネル情報は表形式で格納されている。つまり、第2メモリ203には、表形式で複数のチャンネル情報を示すチャンネル情報テーブル700が格納されている。列701は、チャンネルの識別子である。列702は、チャンネル名である。列703はチューニング情報である。ここで、チューニング情報は、周波数や転送レート、符号化率などを含み、受信部204に与える値である。列704はプログラムナンバーである。プログラムナンバーとは、MPEG2規格で規定されているPMT(Program Map Table)を識別するための番号である。PMTに関しては、後述する。行711〜714の各行は、各チャンネルの識別子、チャンネル名、チューニング情報、およびプログラムナンバーの組となる。行711は、識別子が「1」、チャンネル名が「チャンネル1」、チューニング情報が周波数「150MHz」、プログラムナンバーが「101」であることを示す組となっている。再生部402bは、チャンネルの再生を行うため、受け取ったチャンネルの識別子をそのままサービスマネージャ404に引き渡す。
また、再生部402bは、再生中に、ユーザがフロントパネル300の上カーソルボタン301と下カーソルボタン302を押下すると、入力部201からCPU211を通して、その押下に応じた通知を受け取り、再生している番組のチャンネルを変更する。つまり、ユーザが上カーソルボタン301を押下すると、再生部402bは、現在再生中の番組のチャンネルよりも一つ小さいチャンネル識別子を持つチャンネルの番組を再生し、ユーザが下カーソルボタン302を押下すると、現在再生中の番組のチャンネルよりも一つ大きいチャンネル識別子を持つチャンネルの番組を再生する。そして、再生部402bは、第2メモリ203に現在再生中の番組のチャンネル識別子を記録する。
図11A、図11Bおよび図11Cは、第2メモリ203に保存しているチャンネル識別子の例を示す図である。
図11Aに示すように、チャンネル識別子「3」が記憶されている場合、図10に示すように、そのチャンネル識別子は、チャンネル名「TV 3」のチャンネルの番組が再生中であることを示す。図11Aの状態で、ユーザが上カーソルボタン301を押下すると、再生部402bは、図10のチャンネル情報テーブル700を参照し、表中で現在再生中のチャンネルよりも一つ小さいチャンネル識別子を持つチャンネルであるチャンネル名「チャンネル2」のチャンネルの番組に再生を切り変えるため、サービスマネージャ404にチャンネル名「チャンネル2」のチャンネル識別子「2」を引き渡す。同時に、再生部402bは、第2メモリ203に記憶されているチャンネル識別子を「2」に書き換える。図11Bは、チャンネル識別子が書き換えられた状態を表す。また、図11Aの状態で、ユーザが下カーソルボタン302を押下すると、再生部402bは、図10のチャンネル情報テーブル700を参照し、表中で現在再生中のチャンネルよりも一つ大きいチャンネル識別子を持つチャンネルであるチャンネル名「TV Japan」のチャンネルの番組に再生を切り変えるため、サービスマネージャ404にチャンネル名「TV Japan」のチャンネル識別子「4」を引き渡す。同時に、再生部402bは、第2メモリ203に記憶されているチャンネル識別子を「4」に書き換える。図11Cは、チャンネル識別子が書き換えられた状態を表す。チャンネル識別子は、第2メモリ203に記憶されているので、STB104の電源が切られた際も保存されている。
更に再生部402bは、STB104の電源が投入された際に、起動されると、第2メモリ203に記憶されているチャンネル識別子を読み出す。そして、再生部402bは、そのチャンネル識別子をサービスマネージャ404に引渡す。これにより、STB104は、電源投入時に前回の稼動時に再生されていた最後の番組のチャンネルの再生を開始することができる。
JavaVM403は、プログラム実行手段として構成され、Java(登録商標)言語で記述されたプログラムを逐次解析し実行するJavaバーチャルマシンである。Java言語で記述されたプログラムはバイトコードと呼ばれる、ハードウェアに依存しない中間コードにコンパイルされる。Javaバーチャルマシンは、このバイトコードを実行するインタープリタである。また、一部のJavaバーチャルマシンは、バイトコードをCPU211が理解可能な実行形式に翻訳してから、CPU211に引渡し、実行することも行う。JavaVM403は、カーネル401aに実行するJavaプログラムを指定されて起動される。本実施の形態では、カーネル401aは、実行するJavaプログラムとしてサービスマネージャ404を指定する。Java言語の詳細は、書籍「Java Language Specification(ISBN 0−201−63451−1)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。また、JavaVM自体の詳細な動作などは、「Java Virtual Machine Specification(ISBN 0−201−63451―X)」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ404は、Java言語で書かれたJavaプログラムであり、JavaVM403によって逐次実行される。サービスマネージャ404は、JNI(Java Native Interface)を通して、Java言語で記述されていない他のサブプログラムを呼び出したり、または、呼び出されたりすることが可能である。JNIに関しても、書籍「Java Native Interface」等の多くの書籍で解説されている。ここでは、その詳細を省略する。
サービスマネージャ404は、JNIを通して、再生部402bよりチャンネル識別子を受け取る。
サービスマネージャ404は、最初にJavaライブラリ405の中にあるTuner405cに、チャンネル識別子を引き渡し、チューニングを依頼する。Tuner405cは、第2メモリ203が記憶するチャンネル情報テーブル700を参照し、チューニング情報を獲得する。今、サービスマネージャ404がチャンネル識別子「2」をTuner405cに引き渡すと、Tuner405cは、図10に示すチャンネル情報テーブル700の行712を参照して、対応するチューニング情報「156MHz」を獲得する。Tuner405cは、OS401のライブラリ401bのチューナ401b1を通して、受信部204にチューニング情報を引き渡す。受信部204は与えられたチューニング情報に従って放送局から送信されてきた信号を復調し、多重分離部205に引き渡す。
次に、サービスマネージャ404は、Javaライブラリ405の中にあるCA405dにデスクランブルを依頼する。CA405dは、OS401のライブラリ401bの限定解除部401b2を通して復号に必要な情報をデスクランブラ206に与える。デスクランブラ206は、与えられた情報を元に、受信部204から与えられた信号を復号しTSデコーダ207に引き渡す。
次に、サービスマネージャ404は、Javaライブラリ405の中にあるJMF405aにチャンネル識別子を与え、映像および音声の再生を依頼する。
まず、JMF405aは、再生すべき映像と音声を特定するためのパケットIDをPATおよびPMTから取得する。PATやPMTは、MPEG2規格で規定されている、MPEG2トランスポートストリーム内の番組構成を表現するテーブルであり、MPEG2トランスポートストリームに含まれるパケットのペイロードに埋め込まれて、音声や映像と共に送信されるものである。PATは、Program Association Tableの略で、パケットID「0」のパケットに格納され送信されている。JMF405aは、PATを取得するため、OS401のライブラリ401bを通して、多重分離部205にパケットID「0」を指定する。多重分離部205がパケットID「0」でフィルタリングを行い、CPU211に引き渡すことで、JMF405aは、PATのパケットを収集する。
図12は、収集したPATの一例を模式的に表した図である。
列901は、プログラムナンバーである。列902は、パケットIDである。列902のパケットIDはPMTを取得するために用いられる。行911〜913は、チャンネルのプログラムナンバーとそのプログラムナンバーに対応するパケットIDとの組である。ここでは、3つのチャンネルが定義されている。行911は、プログラムナンバー「101」とパケットID「501」の組が定義されている。今、JMF405aに与えられたチャンネル識別子が「2」とすると、JMF405aは、図12のPATの行912を参照して、対応するプログラムナンバー「102」を獲得し、次に、図12のPATの行912を参照し、プログラムナンバー「102」に対応するパケットID「502」を獲得する。
PMTは、Program Map Tableの略で、PATで規定されたパケットIDのパケットに格納され送信されている。JMF405aは、PMTを取得するため、OS401のライブラリ401bを通して、多重分離部205にパケットIDを指定する。ここで、指定するパケットIDは「502」とする。多重分離部205がパケットID「502」でフィルタリングを行い、CPU211に引き渡すことで、JMF405aは、PMTのパケットを収集する。
図13は、収集したPMTの一例を模式的に表した図である。
列1001は、ストリーム種別であり、列1002は、パケットIDである。列1002で指定されるパケットIDのパケットには、ストリーム種別で指定された情報がペイロードに格納され送信されている。列1003は補足情報である。行1011〜1014は、それぞれエレメンタリーストリームのパケットIDと、送信している情報の種別との組である。行1011は、ストリーム種別「音声」とパケットID「5011」の組であり、パケットID「5011」のペイロードには音声が格納されていることを表す。JMF405aは、PMTから再生する映像と音声のパケットIDを獲得する。JMF405aは、図13に示すPMTを参照して、行1011から音声のパケットID「5011」を獲得し、行1012から映像のパケットID「5012」を獲得する。
次に、JMF405aは、OS401のライブラリ401bのAV再生部401b3に、獲得した音声のパケットIDと映像のパケットIDを引き渡す。AV再生部401b3は、受け取った音声のパケットIDと映像のパケットIDを、TSデコーダ207に与える。TSデコーダ207は与えられたパケットIDでフィルタリングを行う。ここでは、JMF405aは、パケットID「5011」のパケットを音声出力部208およびHDMI部210に引き渡し、パケットID「5012」のパケットを映像出力部208およびHDMI部210に引き渡す。音声出力部208は、与えられたパケットを適宜変換して(例えばデジタル−アナログ変換)出力する。映像出力部208は、与えられたパケットを適宜変換して(例えばデジタル−アナログ変換)出力する。HDMI部210は、HDMI仕様に基づき、受け取った音声データおよび映像データのパケットデータを変換して出力する。
最後にサービスマネージャ404は、Javaライブラリ405の中にあるAM405bにチャンネル識別子を与え、データ放送再生を依頼する。ここで、データ放送再生とは、MPEG2トランスポートストリームに含まれるJavaプログラムを抽出し、JavaVM403に実行させることである。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の略である。
AM405bは、まず、AITを獲得するため、JMF405aと同様に、PATおよびPMTを取得し、AITが格納されているパケットのパケットIDを獲得する。今、与えられたチャンネル識別子が「2」で、図12に示すPATと図13に示すPMTが送信されている場合、AM405bは、JMF405aと同様の手順で、図13のPMTを獲得する。AM405bは、PMTから、ストリーム種別「データ」および補足情報「AIT」に該当するエレメンタリーストリームのパケットIDを抽出する。例えば、AM405bは、図13のPMTを参照して、行1013のエレメンタリーストリームのパケットID「5013」を獲得する。
AM405bは、OS401のライブラリ401bを通して多重分離部205にAITのパケットIDを与える。多重分離部205は、与えられたパケットIDでフィルタリングを行い、CPU211に引き渡す。この結果、AM405bは、AITのパケットを収集することができる。
図14は、収集したAITの一例を模式的に表した図である。
列1101はJavaプログラムの識別子である。列1102はJavaプログラムの制御情報である。制御情報には「autostart」、「present」および「kill」などがある。「autostart」は、即時にSTB104がこのプログラムを自動的に実行することを意味し、「present」は、自動実行しないことを意味し、「kill」は、プログラムを停止することを意味する。列1103は、DSMCC方式でJavaプログラムを含んでいるパケットIDを抽出するためのDSMCC識別子である。列1104はJavaプログラムのプログラム名である。行1111と1112は、Javaプログラムの情報の組である。行1111で定義されるJavaプログラムは、識別子「301」、制御情報「autostart」、DSMCC識別子「1」、およびプログラム名「a/TopXlet」の組である。行1112で定義されるJavaプログラムは、識別子「302」、制御情報「present」、DSMCC識別子「1」、およびプログラム名「b/GameXlet」の組である。ここで2つのJavaプログラムは同じDSMCC識別子を持つが、これは1つのDSMCC方式でエンコードされたファイルシステム内に2つのJavaプログラムが含まれていることを表す。ここでは、Javaプログラムに対して4つの情報しか規定されていないが、実際にはより多くの情報が定義される(DVB−MHP規格参照)。
AM405bは、AITの中から「autostart」のJavaプログラムを見つけ出し、対応するDSMCC識別子及びJavaプログラム名を抽出する。AM405bは、例えば図14に示すAITを参照して、行1111のJavaプログラムを抽出し、DSMCC識別子「1」及びJavaプログラム名「a/TopXlet」を獲得する。
次に、AM405bは、AITから取得したDSMCC識別子を用いて、JavaプログラムをDSMCC方式で格納しているパケットのパケットIDをPMTから獲得する。具体的には、AM405bは、PMTの中で、ストリーム種別が「データ」で、補足情報のDSMCC識別子が上述の取得したDSMCC識別子に合致するエレメンタリーストリームのパケットIDを取得する。
今、AITから取得したDSMCC識別子が「1」であり、PMTが図13に示すPMTである場合、AM405bは、DSMCC識別子が「1」である行1014のエレメンタリーストリームのパケットID「5014」を取り出す。
AM405bは、OS401のライブラリ401bを通して多重分離部205に、DSMCC方式でデータが埋めこめられたパケットのパケットIDを指定する。ここでは、AM405bは、パケットID「5014」を指定する。多重分離部205は、与えられたパケットIDでフィルタリングを行い、パケットをCPU211に引き渡す。この結果、AM405bは、必要なパケットを収集することができる。AM405bは、収集したパケットから、DSMCC方式に従ってファイルシステムを復元し、第1メモリ202あるいは第2メモリ203に保存する。ファイルシステム等のデータを取り出して第1メモリ202あるいは第2メモリ203に保存することを以降、ダウンロードと呼ぶ。
図15は、ダウンロードしたファイルシステムの一例を示す図である。なお、図15中、丸はディレクトリを表し、四角はファイルを表す。
このファイルシステムは、ルートディレクトリ1201と、「a」で示されるディレクトリ1202と、「b」で示されるディレクトリ1203と、「TopXlet.class」で示されるファイル1204と、「GameXlet.class」で示されるファイル1205とを有する。
ここでは、MPEG2トランスポートストリームからファイルシステムをダウンロードする例を記載したが、OCAP仕様では、IPネットワークを用いたダウンロードなども規定している。また、AITではなくXAITと呼ばれる情報を用いてファイルシステムの存在位置を特定し、ファイルシステムをダウンロードする方法も規定されている。
次にAM405bは、第1メモリ202あるいは第2メモリ203にダウンロードしたファイルシステム中から実行するJavaプログラムをJavaVM403に引き渡す。今、実行するJavaプログラム名が「a/TopXlet」とすると、Javaプログラム名の最後に「.class」を付加したファイル「a/TopXlet.class」が実行すべきファイルとなる。「/」はディレクトリやファイル名の区切りである。図15に示すように、ファイル1204が実行すべきJavaプログラムである。次にAM405bは、ファイル1204をJavaVM403に引き渡す。
JavaVM403は、引き渡されたJavaプログラムを実行する。
サービスマネージャ404は、他のチャンネル識別子を受け取ると、Javaライブラリ405に含まれる各ライブラリを通して再生している映像および音声と実行しているJavaプログラムとを、同じくJavaライブラリ405に含まれる各ライブラリを通して停止し、新たに受け取ったチャンネル識別子に基づいて、映像および音声の再生及びJavaプログラムの実行を行う。
また、サービスマネージャ404は、再生部402bだけでなく、JavaVM403上で実行されるJavaプログラムからチャンネル識別子を受け取る機能も備える。具体的には、サービスマネージャ404は、チャンネル識別子を受け取るためのJava言語のクラス及びそのメソッドを提供する。サービスマネージャ404は、チャンネル識別子を受け取ると、Javaライブラリ405に含まれる各ライブラリを通して現在再生している映像および音声と実行しているJavaプログラムとを、同じくJavaライブラリ405に含まれる各ライブラリを通して停止し、その後、新たに受け取ったチャンネル識別子に基づいて、新しい映像および音声の再生及びJavaプログラムの実行を行う。
Javaライブラリ405は、第2メモリ203に格納されている複数のJavaライブラリの集合である。本実施の形態では、ここでは、Javaライブラリ405は、JMF405a、AM405b、Tuner405c、CA405d、機器制御ライブラリ405e、再生Lib405f、IO405g、AWT405h等を含んでいる。
JMF405a、AM405b、Tuner405c、およびCA405dの機能は、既に記述されているので省略する。
再生Lib405fは、第2メモリ203が記憶している、現在再生しているチャンネルの識別子をJavaプログラムに渡すためのJava言語のクラスおよびメソッド(以下Java APIと記述)を提供する。このJava APIを利用することで、Javaプログラムは、現在再生中のチャンネルを知ることができる。なお、APIは、Application Program Interfaceのことである。
IO405gは、Javaプログラムが第2メモリ203にデータを書き込むためのJava API、あるいは、その書き込んだデータを第2メモリ203から読み込むためのJava APIをJavaプログラムに提供する。このAPIを利用することで、Javaプログラムは、任意のデータを第2メモリ203に保存することができる。この保存されたデータはSTB104の電源がオフになっても消えないので、Javaプログラムは、STB104の電源が投入された後、再びそのデータを読み込むことができる。
AWT405hは、Javaプログラムが描画を行ったり、入力部201からのキー入力通知を受け取るためのJava APIを提供する。具体的には、AWT405hは、「The Java class Libraries Second Edition,Volume 2」(ISBN0−201−31003−1)で既定されるjava.awtパッケージ、java.awt.eventパッケージ及びその他のjava.awtのサブパッケージが相当する。ここでは、詳細な説明を省略する。
SI405iは、Javaプログラムがチャンネル情報や番組情報表示データを取得するJava APIを提供する。具体的には、Java TV仕様などが存在する。また、生のバイナリーデータを放送中のMPEG2トランスポートストリームから取得するMPEGセクションフィルターAPIがOCAP仕様の中で定義されており、送信されてきた独自の番組情報表示データをJavaアプリケーションプログラム(以下、Javaアプリケーションまたはアプリケーションという)が理解して取り扱うことも出来る。
機器制御ライブラリ405eは、OS401のライブラリ401bのCEC401b4を通して、HDMI部210を制御し、HDMI部210をインターフェースとして用い、STB104に接続されている他の機器の制御などを行う。
図16は、機器制御ライブラリ405eの内部構成の一例を表すブロック図である。
機器制御ライブラリ405eは、接続機器管理部1301、電源制御部1302、音場制御部1303、低レベル送信部1304、および低レベル受信部1305を備える。なお、ここで機器制御ライブラリ405eは、STB104に接続されたアンプ102やテレビ101などの接続機器を制御する他の機能を含んでいても良い。また、本実施の形態では、機器制御ライブラリ405eおよびCEC401b4から通信手段および変換手段が構成されている。つまり、機器制御ライブラリ405eおよびCEC401b4は、Javaアプリケーションによってテレビ101およびアンプ102が制御されるように、Javaアプリケーションによって扱われるデータと、CEC401b4によって通信されるデータとの間の変換を行う。
接続機器管理部1301は、STB104のHDMI部210にHDMIラインで接続されているアンプ102やテレビ101などの機器を管理する。HDMI対応機器は、HDMIラインに接続されると、HDMI−CEC規格に基づき物理アドレスが割り当てられる。HDMI対応機器でHDMI−CECに対応しているアンプ102やテレビ101などの機器は、更にHDMI−CEC規格に基づき論理アドレスが割り当てられる。HDMI−CECメッセージは、この論理アドレスを用いて送信先を指定する。論理アドレスにより機器の種別、例えば、テレビやDVDプレーヤなど、を特定できるように仕様が規定されている。接続機器管理部1301は、接続されているHDMI対応機器の物理アドレスおよび論理アドレス、つまりアンプ102およびテレビ101の物理アドレスおよび論理アドレスを機器管理情報として第1メモリ202に格納する。
図17は、図2Bに示された機器接続が行われている場合に、STB104の接続機器管理部1301が、第1メモリ202に格納している機器管理情報の一例を示す図である。
機器管理情報は列1401と列1402を有し、列1401は、接続されている機器の物理アドレスを示し、列1402は、接続されている機器の論理アドレスを示す。ここでは、テレビ101およびアンプ102に対応する2つの情報が機器管理情報として保存されている。行1411は、テレビ101の情報を表し、この例では、テレビ101の物理アドレス「0000」を示すとともに、HDMI−CEC規格における定義に基づきテレビを表す「0」を論理アドレスとして示している。行1412は、アンプ102の情報を表し、この例では、アンプ102の物理アドレス「1000」を示すとともに、HDMI−CEC規格における定義に基づきAudio systemを表す「5」を論理アドレスとして示している。
接続機器管理部1301は、ダウンロードしたJavaアプリケーションに対して、API(Application Program Interface)を提供する。このAPIによって、接続されている機器の物理アドレス、論理アドレス、および状態を検索することができる。これにより、Javaアプリケーションは、接続されているHDMI対応機器の情報を獲得することが出来る。
図18は、接続機器管理部1301に備えられるAPIの例を示す図である。
図18の(1)に示すgetDevices()メソッドは、接続されている機器の数に対応するHDMIDeviceオブジェクトを配列で返すJava APIである。ここで、1つのHDMIDeviceオブジェクトは、1つの接続機器を表す。HDMIDeviceオブジェクトは、2つのメソッドを有する。図18の(2)に示す、その2つのメソッドのうちの1つであるgetPhysicalDeviceNumber()メソッドは、HDMIDeviceの物理アドレスを取得するJava APIである。図18の(3)に示す、その2つのメソッドのうちの他の1つであるgetLogicalDeviceNumber()メソッドは、HDMIDeviceの論理アドレスを取得するJava APIである。
電源制御部1302は、STB104のHDMI部210にHDMIラインで接続されている機器に対して、電源をONまたはOFFするためのHDMI−CECメッセージを送信する。電源をONするには、HDMI―CEC仕様が規定するメッセージ<User Control Pressed>[“Power”]を接続されている機器に送信する。このメッセージを送信することで、テレビ101の電源をONにすることができる。実際には、電源制御部1302は、このメッセージを送信する前に、接続されている機器の状態をメッセージの送受信を行うことで確認し、電源がONになっていなければ、電源ONのメッセージを送信する。また、電源制御部1302は、電源ONのメッセージを送信した後、接続機器の電源がONになったことを示すメッセージを受け取ることで、接続機器の電源が投入されたことを確認する。
電源制御部1302は、ダウンロードしたJavaアプリケーションに対して、APIを提供する。ここでは4つのAPIの例を取り上げる。
図19は、電源制御部1302に備えられるAPIの例を示す図である。
図19の(1)に示すAllDevicePowerOn()は、接続されている全ての機器の電源をONするJava APIである。成功するとtrueが返り、失敗するとfalseが返る。Javaアプリケーションが、このAPIを呼び出すことで、接続されている全てのHDMI対応機器の電源をONにすることができる。図2Bに示すように、STB104上で実行されているJavaアプリケーションがこのAPIを呼び出すと、テレビ101およびアンプ102の2つの機器の電源を1度に投入することが出来る。
電源制御部1302は、接続機器管理部1301を参照して、接続されているHDMI対応機器に対してそれぞれメッセージを送信するか、全機器に一斉にメッセージを送信するbroadcastメッセージ送信を行う。
図19の(2)に示すDevicePowerOn()は、特定の機器の電源をONするJava APIである。引数には、機器を表現するHDMIDeviceオブジェクトを与える。あるいは、機器を特定するための情報(機器の物理アドレスや論理アドレス等)を、このAPIに与えてもよい。このAPIを呼び出すことで、指定した機器の電源をONすることができる。
図19の(3)に示すAllDevicePowerOff()は、全ての機器の電源をOFFするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、接続されている全ての機器の電源をOFFすることができる。
図19の(4)に示すDevicePowerOff()は、特定の機器の電源をOFFするJava APIである。引数には、機器を表現するHDMIDeviceオブジェクトを与える。あるいは、機器を特定するための情報(機器の物理アドレスや論理アドレス等)を、このAPIに与えてもよい。このAPIを呼び出すことで、指定した機器の電源をOFFすることができる。
音場制御部1303は、テレビ101とアンプ102にHDMI−CECメッセージを送信し、シアターモードを実現する。シアターモードは、テレビ101の音声出力がミュートされ、かつ、アンプ102を介してスピーカ103からSTB104の音声が出力されている状態である。
図20は、音場制御部1303が音声出力状態をシアターモードに切り替える処理の流れを示す流れ図である。
音場制御部1303は、テレビ101に対して、テレビ101の音声出力をミュートするように要求するHDMI−CECコマンドを送信する(ステップS1504)。この場合、HDMI−CECコマンドはアンプ102を介してテレビ101に伝送されることになるが、これはHDMI−CEC仕様に従い行われる。
また、音場制御部1303は、アンプ102に対して、STB104から受信した音声をスピーカ103へ出力させることを伝えるHDMI−CECコマンドを送信する(ステップS1505)。
テレビ101は、ステップS1504で送信されたHDMI−CECコマンドをHDMI−CEC通信部101dで受信して、テレビ101からの出力音声をミュートする(ステップS1506)。
アンプ102は、ステップ1105で送信されたHDMI−CECコマンドをHDMI−CEC通信部102cで受信して、STB104から受信した音声をスピーカ103へ出力する(ステップS1507)。ここで、STB104から出力される音声がモノラルであれば、アンプ102は、モノラルとしてその音声を出力する。アンプ102は、音声がステレオであれば、ステレオとしてその音声を出力し、音声が5.1チャンネルであれば、5.1チャンネルとしてその音声を出力する。また、アンプ102は、ステレオの音声を擬似的に5.1チャンネル音声に変換して出力したり、その逆に、5.1チャンネルの音声を擬似的にステレオの音声に変換して出力してもよい。
以上のステップS1504〜S1507の処理により、音場制御部1303は音声出力の状態をシアターモードに切り替える。
また、逆に、音場制御部1303は、上述と同様の方法により、シアターモードを終了して、アンプ102によるスピーカ103からの出力音声を停止し、テレビ101から音声出力させるように、音声出力状態を切り替える。
また、音場制御部1303は、スピーカ103における音声再生方法を制御することが出来る。例えば、音場制御部1303は、スピーカ103によって形成される音場モードを、スポーツモードやシネマモードやドラマモードや音楽モードなどの視聴しているコンテンツに最適な音場モードに設定することが出来る。ここで、音場制御は、より具体的には、反射音の大きさや、数、残響音の大きさ、残響時間などの残響特性パラメータと、周波数特性パラメータとに基づいた音声信号処理を行うことであり、従来の技術により実現可能である。
音場制御部1303は、ダウンロードしたJavaアプリケーションに対して、APIを提供する。
図21は、音場制御部1303に備えられるAPIの例を示す図である。
図21の(1)に示すHomeTheaterON()メソッドは、シアターモードをONにするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、シアターモードをON、つまりテレビ101の音声出力を停止し、アンプによる音声出力を開始することができる。
図21の(2)に示すHomeTheaterOFF()メソッドは、シアターモードをOFFにするJava APIである。Javaアプリケーションは、このAPIを呼び出すことで、シアターモードをOFFにすることができる。
図21の(3)に示すsetPlayMode()メソッドは、再生チャンネル数(再生モード)を指定するJava APIである。Javaアプリケーションは、引数に対応するモードを指定すると、音源に関係なく、音声の再生モードを、指定されたモード、例えばモノラル再生、ステレオ再生、または5.1チャンネル再生に切り替えることが出来る。例えば、音源が5.1チャンネルであっても、Javaアプリケーションは、ステレオ再生を行うことが出来る。
図21の(4)に示すsetSoundMode()メソッドは、音場モードを設定するJava APIである。Javaアプリケーションは、このAPIの引数に所望の音場(音場モード)を与えることで、引数に応じた音場モードを指示するHDMI−CECメッセージをアンプ102に送信する。これにより、Javaアプリケーションは、アンプ102に対してスポーツモードやシネマモードやドラマモードや音楽モードなどの音場モードの設定を実施することが出来る。
低レベル送信部1304は、ダウンロードしたJavaアプリケーションに対して、そのアプリケーションがHDMI−CECメッセージをバイナリー形式で指定して送信するためのAPIを提供する。
図22は、低レベル送信部1304に備えられるAPIの例を示す図である。
図22の(1)に示すsend()メソッドは、データを送信するJava APIである。Javaアプリケーションが、メッセージであるバイナリー形式のデータ(バイナリーデータ)をこのAPIの引数に与えると、低レベル送信部1304は、そのバイナリーデータを送信する。バイナリーデータは、送信先の論理アドレス、またはBroadcast送信などの情報を含む。このバイナリーデータのフォーマットは、HDMI−CEC仕様で定義されたコマンドであっても良いし、HDMI−CEC仕様で定義されたベンダー独自コマンドのフォーマットに基づき、必要とする情報を含んだフォーマットであってもよい。
図22の(2)に示すsend()メソッドは、特定の機器に対してデータを送信するJava APIである。Javaアプリケーションは、メッセージの送信先となる機器を表すHDMIDeviceオブジェクトと送信メッセージをこのAPIの引数に与える。
低レベル受信部1305は、ダウンロードしたJavaアプリケーションに対して、そのアプリケーションがHDMI−CECメッセージをバイナリー形式で受け取るためのAPIを提供する。低レベル受信部1305は、ダウンロードしたJavaアプリケーションから、予め、受信したHDMI−CECメッセージを配信するためのリスナー(コールバック関数)を受け付ける。
図23は、低レベル受信部1305に備えられるAPIの例を示す図である。
図23の(1)に示すaddListener()メソッドは、リスナーを受け付けるためのJava APIである。低レベル受信部1305は、HDMI−CECメッセージを受信すると、Javaアプリケーションが登録したリスナーに配信する。
図23の(2)に示すreceive()メソッドは、リスナーに定義された受信メッセージを受け取るためのJava APIである。ここで、低レベル受信部1305は、リスナーの受付と同時に、メッセージ配信の条件の指定を受け付けても良い。例えば、低レベル受信部1305は、物理アドレスや論理アドレス等の指定とメッセージ配信の条件の指定を受付け、その条件に合致するメッセージのみを、Javaアプリケーションが登録したリスナーに配信する。
図23の(3)に示すaddListenerメソッドは、メッセージ配信の条件とリスナーを受け付けるためのJava APIである。低レベル受信部1305は、このAPIによって、リスナーとメッセージ配信の条件を表すバイトデータとを受け取る。
次に、ダウンロードされたJavaアプリケーションが、機器制御ライブラリ405eを用いて、図2Bで構成されるホームシアターシステムを制御する例を説明する。
Javaアプリケーションは、Javaライブラリ405やサービスマネージャ404の機能を利用して、様々なサービスをSTB104上で実現することが出来る。ダウンロードしたJavaアプリケーションは、図8Aまたは図8Bで示した電子番組表の表示も、ダウンロードEPGアプリケーションとして実行することが出来る。ダウンロードEPGアプリケーションは、SI405iを用いて番組情報表示データを取得し、AWT405hを用いてディスプレイ上に電子番組表を表示することが出来る。また、ダウンロードEPGアプリケーションは、ユーザからのキー入力を、同じくAWT405hを通して受け取り、電子番組表上のカーソル移動などを実行することができる。番組表上でユーザが番組を選択すると、ダウンロードEPGアプリケーションは、サービスマネージャ404にサービス選択(番組選択)を依頼することで、チャンネルの変更を実行する。
ダウンロードEPGアプリケーションは、サービスマネージャ404による番組選択と同時に、選択した番組の番組情報を用いて、機器制御ライブラリ405eを呼び出すことで、テレビ101およびアンプ102を制御してホームシアターシステムの起動や制御を行うことが出来る。例えば、ダウンロードEPGアプリケーションは、図9に示す番組情報表示データを参照して、ユーザからの指示に従い、行612に対応するチャンネルを再生することとする。ダウンロードEPGアプリケーションは、図9に示す行612を参照して、この番組の種別が映画であることから、まず、電源制御部1302を呼び出し、接続されている機器の全ての電源をONにする。
本実施の形態においては、ダウンロードEPGアプリケーションは、図19の(1)に示すAllDevicePowerOn()メソッドを呼び出す。この結果、テレビ101やアンプ102に電源が入っていなければ、それらの電源がONになる。次に、ダウンロードEPGアプリケーションは、音場制御部1303を呼び出し、シアターモードを実現する。本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(1)に示すHomeTheaterON()メソッドを呼び出すことで、テレビの音声出力を停止し、STB104の音声を、アンプ102を通してスピーカ103から出力する。ダウンロードEPGアプリケーションの、この一連の処理により、ユーザが映画を選んだだけで、自動的にシアターモードが起動し、ユーザはホームシアター環境で映画を視聴することが出来る。更に、ダウンロードEPGアプリケーションは、番組の種別が「映画」であることから、音場制御部1303を呼び出し、シネマモードをセットすることが出来る。
本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(4)に示すsetSoundMode()メソッドにシネマモードを表す数値(例えば1)を引数に与えることで、シネマモードに設定する。また、番組種別が「スポーツ」の時は、ダウンロードEPGアプリケーションは、音場制御部1303を呼び出し、スポーツモードを設定することが出来る。この結果、視聴者は最適な音場で番組を視聴することが可能である。
音声出力状態がシアターモードである状態から、視聴者がニュースのチャンネルを選んだ際は、ダウンロードEPGアプリケーションは、シアターモードを終了させる。本実施の形態においては、ダウンロードEPGアプリケーションは、図21の(2)に示すHomeTheaterOFF()メソッドを呼び出すことで、アンプ102によるスピーカ103からの音声出力を停止し、テレビ101からの音声出力を再開する。この結果、通常の音声再生で視聴者はニュースを視聴できる。
一方、視聴者がチャンネルを頻繁に変更するたびに音声出力状態が変更されると、視聴者が不快になる可能性もある。そこで、本実施の形態では、視聴者自身に音声出力状態を選択させてもよい。ダウンロードEPGアプリケーションは、接続機器管理部1301を参照し、ホームシアターシステムを構成するテレビ101とアンプ102の両方がSTB104に接続されているかどうかを判断する。その両方が接続され、視聴者が選択した番組が映画やスポーツであった場合、ダウンロードEPGアプリケーションは、画面上にシアターモードへの変更を促すメッセージを表示する。
図24は、画面上にシアターモードへの変更を促すメッセージの一例を示す図である。
画面左上にメッセージ「シアター」が表示され、視聴者にシアターモードへの変更を促している。ここで、視聴者が図6に示すシアターボタン308を押すと、ダウンロードEPGアプリケーションは、先に記載したとおり、電源のON、シアターモードの設定、及び音場モード設定を行うことが可能である。なお、シアターボタン308は、画面上のグラフィカルユーザインターフェースとして実現することも可能である。
ここで、接続機器管理部1301は、ダウンロードEPGアプリケーションがテレビ101とアンプ102の両方に接続されているかどうかをそのアプリケーションが容易に判断するためのJava APIを備える。
図25は、接続機器管理部1301に備えられるAPIの他の例を示す図である。
IsHomeTheater()メソッドは、ホームシアターシステムを実現するためのテレビ101及びアンプ102がSTB104に接続されていることを調べるJava APIである。このAPIは、図17に示された機器管理情報のような、接続されている機器の一覧を参照し、テレビ101及びアンプ102が接続されているかどうかを調べる。接続機器管理部1301は、このようなAPIが呼び出されると、テレビ101及びアンプ102の両方が接続されており、ホームシアターシステムを構成できる場合は、trueを返し、構成できない場合はfalseを返す。接続機器管理部1301がこのJava APIを備えることにより、Javaアプリケーションは、容易にホームシアターシステムが実現できるか否かを判断することができる。
一方、再生している番組が映画でも、視聴者はモノラル音声で聞きたいかもしれない。あるいは、ステレオ音声を5.1チャンネル再生したい場合もある。そこで、ダウンロードEPGアプリケーションは、これらの要望を受け付けて、その受け付けた要望に対応する設定を行う。
なお、本実施の形態では、電源制御と音場制御を行なった。これらの制御は、機器制御ライブラリ405eが複数のHDMI−CECメッセージの送受信を組み合わせることで実現される。この2つの処理以外にも、本実施の形態のSTB104は、HDMIラインを用いて接続されたDVDレコーダに、STB104が再生する映像音声を記録するなどの処理を行ってもよい。この場合、機器制御ライブラリ405eはレコーダ制御部を持ち、レコーダ制御部は、複数のHDMI−CECメッセージの送受信を組み合わせて所望の機能を実現する。
一方、新しい機能を持ったHDMI対応機器が出現すると、その機能を使うための機能が機器制御ライブラリ405eに無い場合が考えられる。例えば、HDMI−CEC規格の論理アドレスで規定されていないBD(Blue−ray Disc)プレーヤが普及した場合などが考えられる。この際、ダウンロードされたJavaアプリケーションが最新のHDMI−CECメッセージを把握し、新しい機器との連携を実現することで、新規の機器に対応することが可能となる。これを実現するため、機器連携ライブラリ405eは、低レベル送信部1304と低レベル受信部1305を備えている。Javaアプリケーションは、これらのAPIを用いて、HDMI−CECメッセージを直接送受信することで、新規の機器との連携を実現することができる。
また、HDMI−CECでは、同一のベンダーIDを知る機器間のメッセージ通信で、独自のメッセージの送受信を認めている。低レベル送信部1304と低レベル受信部1305は、この独自メッセージの送受信にも使用できる。Javaアプリケーションが、接続された機器の独自メッセージを知っていれば、低レベル送信部1304と低レベル受信部1305を介して、HDMI−CECメッセージの送受信を行うことで、機器連携を実現できる。
以下、本発明の中核をなす機器接続ライブラリ405eの動作をまとめる。
図26は、接続機器管理部1301が備える図18の(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getDevices()メソッドを呼び出す(ステップS2201)。接続機器管理部1301は、第1メモリ202が記憶する機器管理情報(接続機器一覧)を取得する(ステップS2202)。次に、接続機器管理部1301は、取得した接続機器一覧に示される各機器に対応するHDMIDeviceオブジェクトを作成する(ステップS2203)。HDMIDeviceオブジェクトは内部に、物理アドレス及び論理アドレスを保持する。接続機器管理部1301は、作成したHDMIDeviceオブジェクトを配列に格納する(ステップS2204)。最後に、接続機器管理部1301は、APIを呼び出したJavaアプリケーションにHDMIDeviceオブジェクトの配列を返す(ステップS2205)。
図27は、HDMIDeviceクラスの定義例を示す図である。
内部メンバ変数paddに物理アドレスが格納され、内部メンバ変数laddに論理アドレスが格納される。
図28は、接続機器管理部1301が備える図18の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getPhysicalDeviceNumber()メソッドを呼び出す(ステップS2401)。ここで、getPhysicalDeviceNumber()メソッドが図27で示されるHDMIDeviceクラスに定義されているとすると、接続機器管理部1301は、内部メンバ変数paddに格納されている値をJavaアプリケーションに返す(ステップS2402)。ここで、getPhysicalDeviceNumber()メソッドを実装しているオブジェクトが内部に物理アドレスを保持していない場合は、接続機器管理部1301は、第1メモリ202を参照して、物理アドレスを取り出してJavaアプリケーションに返しても良い。
図29は、接続機器管理部1301が備える図18の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、getLogicalDeviceNumber()メソッドを呼び出す(ステップS2501)。ここで、getLogicalDeviceNumber()メソッドが図27で示されるHDMIDeviceクラスに定義されているとすると、接続機器管理部1301は、内部メンバ変数laddに格納されている値をJavaアプリケーションに返す(ステップS2502)。ここで、getLogicalDeviceNumber()メソッドを実装しているオブジェクトが内部に論理アドレスを保持していない場合は、接続機器管理部1301は、第1メモリ202を参照して、論理アドレスを取り出してJavaアプリケーションに返しても良い。
図30は、電源制御部1302が備える図19の(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、AllDevicePowerOn()メソッドを呼び出す(ステップS2601)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、1つの接続機器の情報を取り出す(ステップS2602)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2603)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2604)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2605)、電源が入っていなければ、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2606)。
そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2607)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2608)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2609)、OFFであれば、電源ONの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2610)、全ての処理を終了する。電源制御部1302は、全ての機器に対して、ステップS2602からステップS2609の処理が終了したか否かを判別し(ステップS2611)、終了していないと判別すると、ステップS2602からの制御を繰り返し実行する。一方、電源制御部1302は、全ての機器に対して処理が終了したと判別すると、Javaアプリケーションにtrueを返して(ステップS2612)、全ての処理を終了する。ここで、ステップS2607からステップS2609の処理を、電源がONになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図31は、電源制御部1302が備える図19の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、DevicePowerOn()メソッドを呼び出す(ステップS2701)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、指定された接続機器の情報を取り出す(ステップS2702)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2703)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2704)。
電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2705)、電源が入っていなければ、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2706)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2707)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2708)。電源制御部1302は、このメッセージを参照し、電源がONになっているかどうかを調べ(ステップS2709)、OFFであれば、電源ONの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2710)、全ての処理を終了する。一方、ONであれば、電源制御部1302は、Javaアプリケーションにtrueを返して(ステップS2711)、全ての処理を終了する。ここで、ステップS2707からステップS2709の処理を、電源がONになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図32は、電源制御部1302が備える図19の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、AllDevicePowerOff()メソッドを呼び出す(ステップS2801)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、1つの接続機器の情報を取り出す(ステップS2802)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2803)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2804)。
電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2805)、電源が入っていれば、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2806)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2807)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2808)。電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2809)、ONであれば、電源OFFの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2810)、全ての処理を終了する。電源制御部1302は、全ての機器に対して、ステップS2802からステップS2809の処理が終了したか否かを判別し(ステップS2811)、終了していないと判別すると、ステップS2802からの制御を繰り返し実行する。一方、電源制御部1302は、全ての機器に対して処理が終了したと判別すると、Javaアプリケーションにtrueを返して(ステップS2812)、全ての処理を終了する。ここで、ステップS2807からステップS2809の処理を、電源がOFFになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図33は、電源制御部1302が備える図19の(4)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、DevicePowerOff()メソッドを呼び出す(ステップS2901)。電源制御部1302は、第1メモリ202が記憶している機器管理情報の中から、指定された接続機器の情報を取り出す(ステップS2902)。この情報とは、HDMI−CECメッセージを作る際に必要となる機器の物理アドレス及び論理アドレスなどである。電源制御部1302は、その接続機器に対してHDMI−CECメッセージ<Give Device Power Status>を送信する(ステップS2903)。次に、電源制御部1302は、メッセージを送った接続機器から、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2904)。
電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2905)、電源が入っていれば、HDMI−CECメッセージ<User Control Pressed>[“Power”]を接続機器に送信する(ステップS2906)。そして電源制御部1302は、再度、HDMI−CECメッセージ<Give Device Power Status>を送信し(ステップS2907)、HDMI−CECメッセージ<Report Power Status>を受け取る(ステップS2908)。電源制御部1302は、このメッセージを参照し、電源がOFFになっているかどうかを調べ(ステップS2909)、ONであれば、電源OFFの処理に失敗したとして、Javaアプリケーションにfalseを返して(ステップS2910)、全ての処理を終了する。一方、OFFであれば、電源制御部1302は、Javaアプリケーションにtrueを返して(ステップS2911)、全ての処理を終了する。ここで、ステップS2907からステップS2909の処理を、電源がOFFになるまで一定の回数、あるいは一定の時間だけ繰り返してもよい。
図34は、音場制御部1303が備える図21(1)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、HomeTheaterON()メソッドを呼び出す(ステップS3001)。音場制御部1303は、接続機器管理部1301を参照し、ホームシアターシステムを構成する機器が接続されているかどうか調べる(ステップS3002)。ホームシアターシステムを構成する機器の具体例としては、テレビ101とアンプ102である。ホームシアターシステムを構成する機器が接続されていなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3008)。一方、ホームシアターシステムを構成する機器が接続されていたら、音場制御部1303は、AllDevicePowerOn()メソッドを呼び出すことで、全ての接続機器の電源をONにする(ステップS3003)。ここで、電源のONに失敗したら、音場制御部1303はJavaアプリケーションにfalseを返して処理を終了する(ステップS3008)。次に、音場制御部1303は、テレビ101に対して音声出力をミュートするように要求するHDMI−CECメッセージ(コマンド)を送信する(ステップS3004)。次に、音場制御部1303は、アンプ102に対して、STB104からの音声を出力するように要求するHDMI−CECメッセージ(コマンド)を送る(ステップS3005)。最後に、音場制御部1303は、シアターモードになっていることを第1メモリ202に記録し(ステップS3006)、Javaアプリケーションにtrueを返して処理を終了する(ステップS3007)。
ここで、音場制御部1303は、ステップS3003で全ての接続機器の電源をONにしているが、ホームシアターシステムを構成する機器だけの電源をONにしてもよい。この場合、図30のフローチャートにおいて、ステップS2611では、全機器の処理が終了したか否かを判別する代わりに、ホームシアターシステムを構成する各機器の処理が終了したか否かを判別する。
図35は、音場制御部1303が備える図21の(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、HomeTheaterOFF()メソッドを呼び出す(ステップS3101)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3102)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3107)。一方、シアターモードであれば、音場制御部1303は、DevicePowerOff()メソッドを呼び出すことで、アンプ102の電源をOFFにする(ステップS3103)。次に、音場制御部1303は、テレビ101に対して、アンプ102からの音声を出力するように要求するHDMI−CECメッセージ(コマンド)を送信する(ステップS3104)。最後に、音場制御部1303は、シアターモードになっていないことを第1メモリ202に記録し(ステップS3105)、Javaアプリケーションにtrueを返して処理を終了する(ステップS3106)。
図36は、音場制御部1303が備える図21の(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、SetPlayMode()メソッドを呼び出す(ステップS3201)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3202)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3205)。一方、シアターモードであれば、音場制御部1303は、Javaアプリケーションによって与えられた再生モードに応じてHDMI−CECメッセージをアンプ102に送信する(ステップS3203)。最後に、音場制御部1303は、Javaアプリケーションにtrueを返して処理を終了する(ステップS3204)。
図37は、音場制御部1303が備える図21の(4)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、SetSoundMode()メソッドを呼び出す(ステップS3301)。音場制御部1303は、第1メモリ202を参照してシアターモードかどうかを調べる(ステップS3302)。シアターモードでなければ、音場制御部1303は、Javaアプリケーションにfalseを返して処理を終了する(ステップS3305)。一方、シアターモードであれば、音場制御部1303は、Javaアプリケーションによって与えられた音場モードに応じてHDMI−CECメッセージをアンプ102に送信する(ステップS3303)。最後に、音場制御部1303は、Javaアプリケーションにtrueを返して処理を終了する(ステップS3304)。
図38は、低レベル送信部1304が備える図22の(1)または(2)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、send()メソッドを呼び出す(ステップS3401)。低レベル送信部1304は、そのメソッドの呼び出しによって受け取ったバイナリーデータを用いてHDMI−CECメッセージを作成して送信する(ステップS3402)。
図39は、低レベル受信部1305が備える図23の(1)または(3)に示すJava APIに基づく動作を表すフローチャートである。
まず、Javaアプリケーションは、addListener()メソッドを呼び出す(ステップS3501)。低レベル受信部1305は、そのメソッドの呼び出しによって受け取ったリスナーを第1メモリ202に記録する(ステップS3502)。
図40は、低レベル受信部1305がHDMI−CECメッセージを受け取った時の動作を表すフローチャートである。
まず、低レベル受信部1305はHDMI−CECメッセージを受け取る(ステップS3601)。低レベル受信部1305は、第1メモリ202を参照してリスナーが記録されているか否かを判別する(ステップS3602)。低レベル受信部1305は、記録されていると判別すると、受け取ったHDMI−CECメッセージをバイナリデータに変換し、リスナーのreceiveメソッドを呼び出すことで、変換したバイナリーデータを引き渡す。
ここで、低レベル受信部1305は、登録したリスナーを削除するremoveListener()メソッドを備えても良い。図27に、HDMI対応機器を表現するHDMIDeviceクラス定義の例を示す。ここに、setListener()メソッドと同様、removeListener()メソッドが定義されている。removeListener()メソッドが呼び出されると、第1メモリ202に記憶されているリスナーが削除される。
このように本実施の形態では、Javaアプリケーションがテレビ101またはアンプ102を制御するために制御データを出力すると、つまりJava APIのメソッドを呼び出すと、その制御データが、CEC401b4およびHDMI部210によって通信されるHDMI−CECメッセージに変換されてそのテレビ101またはアンプ102に送信される。したがって、そのテレビ101またはアンプ102がHDMI−CECに対応した機器であれば、Javaアプリケーションは、HDMI−CECを考慮することなく、メソッドを呼び出してテレビ101またはアンプ102を自由に制御することができる。また、テレビ101またはアンプ102から送信されたHDMI−CECメッセージが、Javaアプリケーションによって扱われるデータに変換されるため、アプリケーションプログラムは、HDMI−CECを考慮することなく機器からメッセージを受け取ることができ、その機器の制御に利用することができる。その結果、本発明では、Javaアプリケーションによって各機器を自由に制御することができるため、ユーザによる操作負担を軽減して適切に機器を連携させることができる。
なお、図5に示すSTB104の構成要素のうちの全てまたは一部をLSI(Large Scale Integration)などの半導体集積回路として構成してもよい。
本発明の機器連携装置は、ユーザによる操作負担を軽減して適切に機器を連携させることができるという効果を奏し、例えば、STBなどの放送受信機や、放送受信可能な携帯電話、携帯端末、車載端末、インターネットを介して音声映像データを受信するパーソナルコンピュータ等に適用することができる。
104 STB
201 入力手段
202 第1メモリ
203 第2メモリ
204 受信部
205 多重分離部
206 デスクランブラ
207 TSデコーダ
208 映像出力部
209 音声出力部
210 HDMI部
211 CPU
201 入力手段
202 第1メモリ
203 第2メモリ
204 受信部
205 多重分離部
206 デスクランブラ
207 TSデコーダ
208 映像出力部
209 音声出力部
210 HDMI部
211 CPU
Claims (13)
- 複数の機器の動作を連携させる機器連携装置であって、
アプリケーションプログラムを含む放送波を受信する受信手段と、
前記アプリケーションプログラムを実行するプログラム実行手段と、
複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信手段と、
前記プログラム実行手段により実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信手段によって通信されるデータとの間の変換を行う変換手段と
を備えることを特徴とする機器連携装置。 - 前記変換手段は、前記アプリケーションプログラムからバイナリーデータを取得して、前記バイナリーデータを前記HDMI−CECに従ったメッセージに変換し、
前記通信手段は、前記メッセージを前記複数の機器のうちの何れかの機器に送信する
ことを特徴とする請求項1記載の機器連携装置。 - 前記通信手段は、前記複数の機器のうちの何れかの機器から、前記HDMI−CECに従ったメッセージを受信し、
前記変換手段は、前記通信手段によって受信されたメッセージをバイナリーデータに変換し、前記バイナリーデータを前記アプリケーションプログラムに引き渡す
ことを特徴とする請求項1記載の機器連携装置。 - 前記アプリケーションプログラムはJava(登録商標)で記述されたプログラムであって、
前記変換手段は、前記アプリケーションプログラムからリスナーの登録を受け付けることで、前記リスナーを登録し、前記リスナーのメソッドを呼び出すことで、前記アプリケーションプログラムに前記バイナリーデータを引き渡す
ことを特徴とする請求項3記載の機器連携装置。 - 前記変換手段は、さらに、前記アプリケーションプログラムからリスナーの削除を受け付けることで、登録された前記リスナーを削除する
ことを特徴とする請求項4記載の機器連携装置。 - 前記複数の機器は、映像および音声を出力する第1の機器と、音声を出力する第2の機器とを含み、
前記変換手段は、前記第1の機器が音声出力を抑えて映像を出力するとともに前記第2の機器が音声を出力するように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、
前記通信手段は、前記メッセージを前記第1および第2の機器に送信する
ことを特徴とする請求項1記載の機器連携装置。 - 前記機器連携装置は、さらに、
前記第1および第2の機器が前記通信手段との間で通信可能なように前記通信手段と接続されているか否かを判別し、判別の結果を前記アプリケーションプログラムに通知する通知手段を備える
ことを特徴とする請求項6記載の機器連携装置。 - 前記変換手段は、モノラル、ステレオ、および5.1チャンネルの何れかの状態で前記第2の機器から音声が出力されるように指示するデータを、前記アプリケーションプログラムから取得して、前記データを前記HDMI−CECに従ったメッセージに変換し、
前記通信手段は、前記メッセージを前記第2の機器に送信する
ことを特徴とする請求項6記載の機器連携装置。 - 前記変換手段は、前記第2の機器から出力される音声の音場を指定するデータを、前記アプリケーションプログラムから受け付けると、前記データを前記HDMI−CECに従ったメッセージに変換し、
前記通信手段は、前記メッセージを前記第2の機器に送信する
ことを特徴とする請求項6記載の機器連携装置。 - 前記変換手段は、
前記アプリケーションプログラムからバイナリーデータを取得したときには、前記バイナリーデータを前記HDMI−CECに従ったメッセージに変換し、
前記複数の機器のうちの何れかの機器から、前記HDMI−CECに従ったメッセージを前記通信手段が受信したときには、前記メッセージをバイナリーデータに変換して前記アプリケーションプログラムに引き渡し、
前記通信手段は、前記変換手段による変換によって生成されたメッセージを前記複数の機器のうちの何れかの機器に送信するとともに、前記複数の機器のうちの何れかの機器から、前記HDMI−CECに従ったメッセージを受信する
ことを特徴とする請求項1記載の機器連携装置。 - 複数の機器の動作を連携させる機器連携方法であって、
アプリケーションプログラムを含む放送波を受信する受信ステップと、
前記アプリケーションプログラムを実行するプログラム実行ステップと、
複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信ステップと、
前記プログラム実行ステップで実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信ステップで通信されるデータとの間の変換を行う変換ステップと
を含むことを特徴とする機器連携方法。 - 複数の機器の動作を連携させるためのプログラムであって、
アプリケーションプログラムを含む放送波を受信する受信ステップと、
前記アプリケーションプログラムを実行するプログラム実行ステップと、
複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信ステップと、
前記プログラムステップで実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信ステップで通信されるデータとの間の変換を行う変換ステップと
をコンピュータに実行させることを特徴とするプログラム。 - 複数の機器の動作を連携させる集積回路であって、
アプリケーションプログラムを含む放送波を受信する受信手段と、
前記アプリケーションプログラムを実行するプログラム実行手段と、
複数の機器のそれぞれとの間で、HDMI(High Definition Multimedia Interface)−CEC(Consumer Electronics Control)に従った通信を行う通信手段と、
前記プログラム実行手段により実行される前記アプリケーションプログラムによって前記複数の機器が制御されるように、前記アプリケーションプログラムによって扱われるデータと、前記通信手段によって通信されるデータとの間の変換を行う変換手段と
を備えることを特徴とする集積回路。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005367001 | 2005-12-20 | ||
JP2005367001 | 2005-12-20 | ||
PCT/JP2006/325281 WO2007072821A1 (ja) | 2005-12-20 | 2006-12-19 | 機器連携装置及び機器連携方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2007072821A1 true JPWO2007072821A1 (ja) | 2009-05-28 |
Family
ID=38188599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007551098A Pending JPWO2007072821A1 (ja) | 2005-12-20 | 2006-12-19 | 機器連携装置及び機器連携方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8330862B2 (ja) |
JP (1) | JPWO2007072821A1 (ja) |
CN (1) | CN101341750B (ja) |
WO (1) | WO2007072821A1 (ja) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4921376B2 (ja) * | 2006-02-24 | 2012-04-25 | パナソニック株式会社 | 放送番組表示装置、放送番組表示方法および放送番組表示システム |
JP5109978B2 (ja) | 2006-11-07 | 2012-12-26 | ソニー株式会社 | 電子機器、制御情報送信方法および制御情報受信方法 |
CN103533269B (zh) * | 2006-11-07 | 2017-01-11 | 索尼株式会社 | 发送设备和发送方法 |
JP2008252452A (ja) * | 2007-03-30 | 2008-10-16 | Toshiba Corp | 接続状況確認装置および接続状況確認方法 |
KR20090002809A (ko) * | 2007-07-04 | 2009-01-09 | 삼성전자주식회사 | 어플리케이션에서 생성된 데이터를 hdmi cec에 따라송수신하는 방법 |
JP4331249B2 (ja) | 2007-07-31 | 2009-09-16 | 株式会社東芝 | 映像表示装置 |
WO2009016934A1 (en) * | 2007-07-31 | 2009-02-05 | Kabushiki Kaisha Toshiba | Video display device |
WO2009020332A2 (en) * | 2007-08-06 | 2009-02-12 | Samsung Electronics Co, . Ltd. | Method and apparatus for providing/receiving web-based service of plurality of service providers |
JP2009141720A (ja) | 2007-12-07 | 2009-06-25 | Hitachi Ltd | 映像表示装置、表示パネル及び映像処理装置 |
JP4334590B2 (ja) | 2007-12-12 | 2009-09-30 | 株式会社東芝 | 情報再生装置及び情報再生方法 |
JP4535161B2 (ja) | 2008-04-01 | 2010-09-01 | ソニー株式会社 | 電子機器、通信システム、通信方法、およびプログラム |
JP4683067B2 (ja) * | 2008-04-17 | 2011-05-11 | ソニー株式会社 | 音声処理装置、音声処理方法およびプログラム |
JP5262526B2 (ja) * | 2008-09-30 | 2013-08-14 | 株式会社Jvcケンウッド | 映像音声再生システム、av増幅装置およびプログラム |
KR20100054048A (ko) * | 2008-11-13 | 2010-05-24 | 삼성전자주식회사 | 디지털 방송 수신기에서 채널스캔 방법 및 장치 |
TWI387341B (zh) * | 2008-12-15 | 2013-02-21 | Wistron Corp | 電視機及其操作方法 |
US8644304B2 (en) * | 2009-01-22 | 2014-02-04 | Samsung Electronics Co., Ltd. | IP telephony on a home network device |
JP2010191302A (ja) * | 2009-02-20 | 2010-09-02 | Sharp Corp | 音声出力装置 |
JP5515389B2 (ja) * | 2009-04-22 | 2014-06-11 | ソニー株式会社 | オーディオ処理装置及びオーディオ処理方法 |
US8218090B2 (en) * | 2009-09-17 | 2012-07-10 | Sony Corporation | Integrated user interface and control in HDMI/CEC |
JP5458894B2 (ja) | 2010-01-04 | 2014-04-02 | ソニー株式会社 | 機器制御装置、機器制御方法及びプログラム |
JP5205439B2 (ja) * | 2010-11-26 | 2013-06-05 | 株式会社日立製作所 | 映像表示装置 |
CN103262526A (zh) * | 2010-12-09 | 2013-08-21 | 汤姆逊许可公司 | 中断高清多媒体接口消费者电子控制广播消息的方法和装置 |
JP5783736B2 (ja) * | 2011-02-02 | 2015-09-24 | キヤノン株式会社 | 通信装置 |
TWI545955B (zh) * | 2011-04-28 | 2016-08-11 | Sony Corp | Signal receiving apparatus and method, a signal transmission apparatus and method, and program |
JP2013005407A (ja) * | 2011-06-21 | 2013-01-07 | Funai Electric Co Ltd | 映像表示装置 |
JP2013013138A (ja) * | 2012-09-14 | 2013-01-17 | Toshiba Corp | 電子機器 |
JP5444435B2 (ja) * | 2012-10-03 | 2014-03-19 | 株式会社東芝 | 電子機器、消費電力制御方法 |
JP5548791B2 (ja) * | 2013-02-18 | 2014-07-16 | 日立コンシューマエレクトロニクス株式会社 | モニタ装置及び映像処理装置 |
JP5650816B1 (ja) * | 2013-07-17 | 2015-01-07 | 三菱電機株式会社 | 通信システム、通信装置、通信方法、及び、プログラム |
JP2015076837A (ja) * | 2013-10-11 | 2015-04-20 | ソニー株式会社 | 機器制御装置および機器制御方法 |
JP6305883B2 (ja) * | 2014-09-08 | 2018-04-04 | シャープ株式会社 | 通知装置、出力装置、情報通知システム、通知装置の制御方法、および制御プログラム |
JP6646214B2 (ja) * | 2016-02-10 | 2020-02-14 | 富士通株式会社 | 情報処理システム、情報処理装置、情報処理方法および情報処理プログラム |
CN106210578B (zh) * | 2016-07-05 | 2019-06-25 | 青岛海信电器股份有限公司 | 声音模式控制方法及激光电视 |
US10571991B2 (en) * | 2018-04-30 | 2020-02-25 | Centurylink Intellectual Property Llc | Method and system for implementing auto-switching or auto-playing video content |
CN108549244A (zh) * | 2018-05-09 | 2018-09-18 | 东莞维升电子制品有限公司 | 智能连动控制方法及其系统 |
JP7181116B2 (ja) * | 2019-02-12 | 2022-11-30 | 株式会社Nttドコモ | 制御システム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05153520A (ja) | 1991-11-28 | 1993-06-18 | Sony Corp | Avアンプ |
GB0208317D0 (en) * | 2002-04-11 | 2002-05-22 | Koninkl Philips Electronics Nv | Controlling a home electronics system |
GB0210488D0 (en) | 2002-05-08 | 2002-06-12 | Koninkl Philips Electronics Nv | Control of an AV content source component |
US7653928B2 (en) * | 2002-08-30 | 2010-01-26 | Sony Corporation | Remote user interface for media player |
CN2655454Y (zh) * | 2003-10-15 | 2004-11-10 | 连展科技(深圳)有限公司 | 叠式多媒体数字传输连接器 |
US20050120383A1 (en) * | 2003-12-02 | 2005-06-02 | Ozaki Arthur H. | System for saving settings of an audiovisual system |
US20060095596A1 (en) * | 2004-11-03 | 2006-05-04 | Yung Lin C | Solution for consumer electronics control |
US7499462B2 (en) * | 2005-03-15 | 2009-03-03 | Radiospire Networks, Inc. | System, method and apparatus for wireless delivery of content from a generalized content source to a generalized content sink |
-
2006
- 2006-12-19 JP JP2007551098A patent/JPWO2007072821A1/ja active Pending
- 2006-12-19 US US12/158,250 patent/US8330862B2/en not_active Expired - Fee Related
- 2006-12-19 CN CN2006800478924A patent/CN101341750B/zh not_active Expired - Fee Related
- 2006-12-19 WO PCT/JP2006/325281 patent/WO2007072821A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN101341750B (zh) | 2010-09-22 |
WO2007072821A1 (ja) | 2007-06-28 |
CN101341750A (zh) | 2009-01-07 |
US8330862B2 (en) | 2012-12-11 |
US20090174821A1 (en) | 2009-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2007072821A1 (ja) | 機器連携装置及び機器連携方法 | |
US8310603B2 (en) | Device linkage apparatus | |
US9264757B2 (en) | Service executing apparatus | |
US8001208B2 (en) | Information processing apparatus | |
US20090222867A1 (en) | Broadcast receiving apparatus, video storing apparatus, and multimedia delivering system | |
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 | |
US20090300231A1 (en) | Data output device, equipment control device, and multimedia delivery system | |
US7950039B2 (en) | Multimedia data transmitting apparatus and multimedia data receiving apparatus | |
JP2008546221A (ja) | 放送録画再生装置および方法 | |
JP2009520380A (ja) | コンテンツ管理システム | |
WO2006022304A1 (ja) | コンテンツ起動制御装置 | |
KR20080020632A (ko) | 프로그램 실행 장치 및 실행 방법 | |
CN101406058A (zh) | 数据输出装置、设备控制装置以及多媒体通信系统 | |
JP2009094702A (ja) | 操作履歴を記憶する情報処理装置 | |
JP2007288357A (ja) | 映像再生装置 | |
JP2005073239A (ja) | サービス実行装置 | |
JP4635531B2 (ja) | 受信装置及び情報配信システム等 | |
KR20170026329A (ko) | 시청각 콘텐츠 스트림을 mpeg2 사설 섹션내에 캡슐화하는 방법, mpeg2 전송 스트림 내에 멀티플렉스되어질 mpeg2 사설 섹션내에 시청각 콘텐츠를 캡슐화하는 장치, 디지털 tv용의 양방향 어플리케이션, 사용자 장치, 시청각 콘텐츠 또는 데이터의 전송을 위한 방법 및 데이터 네트워크를 위한 통신 프로토콜 | |
CN114286168A (zh) | 节目列表的处理方法、显示设备及存储介质 | |
JP2023183745A (ja) | 放送システム、受信機、受信方法、及びプログラム | |
WO2013175519A1 (ja) | 番組情報送信装置、番組情報受信装置および番組情報送信方法 | |
JP2006345505A (ja) | 放送蓄積端末 | |
JP2006109134A (ja) | ディジタル放送受信装置及び映像再生装置 |