以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態による配信システム10の構成を示す概略ブロック図である。配信システム10は、制御メッセージ生成装置11、複数の映像送出装置12、複数の音声送出装置13、複数のデータ送出装置14、多重装置15、配信装置16、受信装置17、出力装置18を含んで構成される。配信システム10は、IPデータフローを用いて、受信装置17にコンテンツを配信する。なお、IPデータフローは、例えば、UDP/IPを用いたマルチキャストのフローであり、送信元のIPアドレスと、宛先のIPアドレスと、宛先のポート番号とで決まる。また、IPデータフローは、インターネットなどの双方向の伝送路により伝送されてもよいし、地上デジタル放送や衛星デジタル放送などの片方向の伝送路により伝送されてもよい。
制御メッセージ生成装置11は、MMT(MPEG Media Transport)の制御メッセージ(Signaling Message)を生成し、多重装置15に入力する。本実施形態において、制御メッセージ生成装置11が生成する制御メッセージは、MPテーブル(MMT Package table)と、パッケージリストテーブルとを含むPAメッセージ(Package Access message)と、MPテーブルのみを含むPAメッセージである。MPテーブルは、対象のパッケージのパッケージIDと、該パッケージを構成するアセットへの参照情報(MMT_general_location_info)を格納している。パッケージリストテーブルは、当該パッケージリストテーブルを伝送しているデータフローに含まれるパッケージ各々のMPテーブルへの参照情報(パケットIDなど)を格納している。本実施形態では、パッケージリストテーブルは、当該パッケージリストテーブルとともにPAメッセージに含まれているMPテーブルへの参照情報を含んでいないが、含んでいてもよい。
PAメッセージは、MMTにおける制御メッセージ(Signaling Message)の一種である。アセットとは、映像ストリーム、音声ストリーム、データストリーム、ハイパーテキストファイル、画像ファイルなどのメディアである。パッケージは、コンテンツを構成する1つまたは複数のアセットの集合である。例えば、ある映画のパッケージを構成するアセットは、映像ストリームと、音声ストリームと、字幕のデータストリームである。なお、映像ストリームに、モバイル用の低解像度のものと、据え置き型用の高解像度のものとがあるときには、パッケージには、両方が含まれる。なお、パッケージを構成するアセットの一部は、配信装置16とは異なる装置から、配信装置16と受信装置17との間の伝送路とは異なる伝送路を用いて配信されてもよい。なお、MPテーブル、パッケージリストテーブル、PAメッセージの詳細は、後述する。
映像送出装置12は、コンテンツを構成するアセットのうち、映像のストリームを生成し、多重装置15に入力する。音声送出装置13は、コンテンツを構成するアセットのうち、音声のストリームを生成し、多重装置15に入力する。データ送出装置14は、コンテンツを構成するアセットの内、データのストリームを生成し、多重装置15に入力する。データのストリームは、例えば、映像に付随して表示される情報や、映像に重畳する字幕などである。
多重装置15は、入力された制御メッセージ、映像のストリーム、音声のストリーム、データのストリームを、それぞれMMTパケットに格納し、該MMTパケットを時系列に並べて多重化する。多重装置15は、MMTパケットのパケットIDを、格納しているストリームや制御メッセージ毎に予め設定された値とする。特に、多重装置15は、MMTパケットのうち、MPテーブルとパッケージリストテーブルとの両方を格納しているPAメッセージを格納したもののパケットIDを「0」とする。配信装置16は、多重装置15が多重化したMMTパケットを、IPパケットに格納してIPデータフローを生成し、配信する。
受信装置17は、配信装置16が配信したIPデータフローを受信する。受信装置17は、受信したIPデータフローに含まれるコンテンツの復号信号を生成し、出力装置18に入力する。出力装置18は、例えば、液晶ディスプレイと、スピーカとを備え、入力された復号信号が表す映像を液晶ディスプレイに表示し、該復号信号が表す音声をスピーカから出力する。
図2は、制御メッセージ生成装置11の構成を示す概略ブロック図である。制御メッセージ生成装置11は、MPテーブル生成部21、パッケージリストテーブル生成部22、PAメッセージ生成部23を含んで構成される。MPテーブル生成部21は、配信装置16が送信するパッケージ各々のMPテーブルを生成する。パッケージリストテーブル生成部22は、MPテーブル生成部21が生成するMPテーブル各々に対応するパッケージIDと、該MPテーブルを格納するMMTパケットのパケットIDとを含むパッケージリストテーブルを生成する。なお、パッケージリストテーブルは、当該パッケージリストテーブルと同じPAメッセージに格納するMPテーブルのパッケージIDと、パケットIDとを含んでいなくてもよい。
PAメッセージ生成部23(制御メッセージ生成部)は、MPテーブル生成部21が生成したMPテーブルを格納したPAメッセージを生成する。ただし、特定のMPテーブルを格納したPAメッセージには、PAメッセージ生成部23は、パッケージリストテーブル生成部22が生成したパッケージリストテーブルも格納する。PAメッセージ生成部23は、生成したPAメッセージを多重装置15に入力する。
図3は、受信装置17の構成を示す概略ブロック図である。受信装置17は、受信部70、分離部71、指定取得部72、受信制御部73、制御メッセージ処理部74、映像デコード部75、音声デコード部76、データレンダリング部77、映像合成部78、音声合成部79を含んで構成される。
受信部70は、受信制御決定部73からの指示に従い、配信装置16により配信されたIPデータフローを受信する。分離部71は、受信部70が受信したIPデータフローから、パケットIDが「0」のMMTパケットに含まれるPAメッセージを分離し、制御メッセージ処理部74に入力する。また、分離部71は、受信部70が受信したIPデータフローから、制御メッセージ処理部74に指定された制御メッセージと、映像ストリームと、音声ストリームと、データストリームとを分離する。分離部71は、分離した制御メッセージを、制御メッセージ処理部74に入力する。分離部71は、分離した映像ストリームを、映像デコード部75に入力し、分離した音声ストリームを、音声デコード部76に入力する。分離部71は、分離したデータストリームを、データレンダリング部77に入力する。
指定取得部72は、リモートコントローラなどの入力デバイスを用いてユーザが入力した、受信するサービスの指定を取得する。サービスの指定は、例えば、サービスID(サービス識別子)をユーザが入力することで行われる。受信制御部73は、指定取得部72が取得したサービスを伝送しているIPデータフローの受信を受信部70に指示する。また、受信制御部73は、指定取得部72が取得したサービスのパッケージIDを、制御メッセージ処理部74に通知する。例えば、パッケージIDの下位16ビットは、サービスIDと一致している。
制御メッセージ処理部74は、分離部71が分離した制御メッセージから、受信制御部73から通知されたパッケージIDのMPテーブルを取得する。制御メッセージ処理部74は、取得したMPテーブルを参照して、再生する映像ストリーム、音声ストリーム、データストリームを決定し、決定したストリームを分離部71に指定する。受信制御部73から通知されたパッケージIDのMPテーブル取得方法の詳細は後述する。
映像デコード部75は、分離部71から入力された映像ストリームを復号し、映像信号を生成する。音声デコード部76は、分離部71から入力された音声ストリームを復号し、音声信号を生成する。データレンダリング部77は、分離部71から入力されたデータストリームをレンダリングして、映像信号と、音声信号とを生成する。また、データレンダリング部77は、生成した映像信号と、映像デコード部75が生成した映像信号との合成方法を指定する信号も、データストリームをレンダリングすることで生成する。
例えば、データストリームが字幕のデータストリームであれば、データレンダリング部77が生成する信号が指定する合成方法は、映像デコード部75が生成した映像信号が表す映像に、データレンダリング部77が生成した映像信号が表す字幕を重畳するという方法となる。また、データストリームが、映像デコード部75が生成した映像信号が表す映像の左外側と、下外側とに情報を表示するものであれば、データレンダリング部77が生成する信号が指定する合成方法は、映像デコード部75が生成した映像信号が表す映像を縮小し、該縮小した映像の左外側と下外側とに、データレンダリング部77が生成した映像信号が表す映像を配置するという方法となる。
映像合成部78は、映像デコード部75が生成した映像信号と、データレンダリング部77が生成した映像信号とを、データレンダリング部77が生成した合成方法を指定する信号に従い合成して、出力装置18に表示させる映像の映像信号を生成する。音声合成部79は、音声デコード部76が生成した音声信号と、データレンダリング部77が生成した音声信号とを重畳して、出力装置18に出力させる音声の音声信号を生成する。
図4は、配信装置16が配信するIPデータフローの構成を示す概念図である。図4に示す例は、複数のパッケージが一つのIPデータフローDFにより伝送されている。IPデータフローDFは、例えば、伝送媒体が放送波であればTLV(Type Length Value)ストリームにより伝送され、伝送媒体がLAN(Local Area Network)であればIPパケットによって伝送される。
IPデータフローDFには、PAメッセージPA1、PA2、映像ストリームV1、V2、音声ストリームA1、A2、データストリームD1、D2が含まれる。これらのうち、映像ストリームV1、音声ストリームA1、データストリームD1で、1つ目のパッケージを構成している。また、映像ストリームV2、音声ストリームA2、データストリームD2で、2つ目のパッケージを構成している。
PAメッセージPA1は、1つ目のパッケージのMPテーブルMP1と、パッケージリストテーブルPL1とを格納している。MPテーブルMP1は、1つ目のパッケージのパッケージIDと、該パッケージを構成するアセットである映像ストリームV1、音声ストリームA1、データストリームD1の各々を伝送するMMTパケットのパケットIDを格納している。
パッケージリストテーブルPL1は、IPデータフローDFにて伝送されているパッケージのMPテーブル(例えば、MPテーブルMP2)を格納しているPAメッセージ(例えば、PAメッセージPA2)各々を伝送するMMTパケットのパケットIDを格納している。そして、2つ目以降のパッケージのMPテーブル(例えば、MPテーブルMP2)各々は、該パッケージのパッケージIDと、該パッケージを構成するアセット(例えば、映像ストリームV2、音声ストリームA2、データストリームD2)各々を伝送するMMTパケットのパケットIDを格納している。
なお、PAメッセージPA1は、予め決められたパケットID(例えば、「0」)のMMTパケットに格納されているので、分離部71は、参照情報なしに、IPデータフローDFから分離することができる。IPデータフローDFは、このような構成となっているので、受信装置17は、1つ目のパッケージを受信する際には、パケットIDが「0」のMMTパケットからPAメッセージPA1を抽出し、さらに該PAメッセージPA1からMPテーブルMP1を抽出することで、1つ目のパッケージの構成を把握し、受信することができる。
また、2つ目のパッケージを受信する際には、受信装置17は、パケットIDが「0」のMMTパケットからPAメッセージPA1を抽出し、さらに該PAメッセージPA1からパッケージリストテーブルPL1を抽出することで、該パッケージのMPテーブルMP2を格納するMMTパケットのパケットIDを得る。受信装置17は、このパケットIDのMMTパケットからPAメッセージPA2を抽出し、さらに該PAメッセージPA2からMPテーブルMP2を抽出することで、2つ目のパッケージの構成を把握し、受信することができる。3つ目以降のパッケージを受信する際にも、受信装置17は、2つ目のときと同様にすることで、該パッケージの構成を把握し、受信することができる。
図5は、PAメッセージのデータ構造を示す表である。本実施形態におけるPAメッセージのデータ構造は、ISO/IEC 23008−1に従っている。該表において、No.は、該表における行の通し番号を示す欄である。データ構造は、PAメッセージのデータ構造を示す欄である。ビット数は、該データ構造のビット数を示す欄である。ビット列表記は、該ビット数のデータ構造のデータ形式を示す欄である。ビット列表記のuimsbfは、unsigned integer most significant bit firstの略であり、符号無し整数、最上位ビットが先頭を意味する。
図5において、No.1の「PA_message(){」は、以降、No.18の「}」までが、PAメッセージのデータ構造であることを表す。当該メッセージの先頭に配置されているNo.2の「message_id」は、PAメッセージのID(Identifier)を示す16ビットの領域である。次に配置されているNo.3の「version」は、PAメッセージのバージョン番号を示す8ビットの領域である。次に配置されているNo.4の「length」は、当該領域以降のPAメッセージのバイト数を示す32ビットの領域である。次のNo.5の「extension{」は、以降、No.12までが制御メッセージに共通のデータ構造に対する、PAメッセージ特有の拡張部分であることを示す。次に配置されているNo.6の「number_of_tables」は、当該PAメッセージに格納されているテーブルの数Nを示す8ビットの領域である。
次のNo.7の「for(i=0;i<N;i++){」は、以降、「}」であるNo.11までを、N回、すなわち格納されているテーブルの数分繰り返すことを示す。次に配置されているNo.8の「table_id」は、当該PAメッセージに格納されているテーブルのIDを示す8ビットの領域である。
次に配置されているNo.9の「table_version」は、直前のNo.8のテーブルIDが示すテーブルのバージョン番号を示す8ビットの領域である。次に配置されているNo.10の「table_length」は、直前のNo.8のテーブルIDが示すテーブルの長さを示す8ビットの領域である。次のNo.11の「}」は、No.7の「{」に対応し、No.12の「}」は、No.5の「{」に対応する。
次のNo.13の「message_payload{」は、以降、No.17までに、当該PAメッセージのペイロードが格納されることを示す。次のNo.14の「for(i=0;i<N1;i++){」は、以降、「}」であるNo.16までを、N回、すなわち格納されているテーブルの数分繰り返すことを示す。次のNo.15の「table()」は、テーブルを配置する領域である。なお、テーブルの配置順は、No.8の「table_id」の配置順と同じである。次のNo.16の「}」は、No.14の「{」に対応し、No.17の「}」は、No.13の「{」に対応し、No.18の「}」は、No.1の「{」に対応する。
図6から図8は、MPテーブルのデータ構造を示す表である。本実施形態におけるMPテーブルのデータ構造は、ISO/IEC 23008−1に従っている。該表において、No.は、該表における行の通し番号を示す欄である。データ構造は、MPテーブルのデータ構造を示す欄である。ビット数は、該データ構造のビット数を示す欄である。値は、該ビット数のデータ構造がとる値を示す欄である。ビット列表記は、該ビット数のデータ構造のデータ形式を示す欄である。ビット列表記のuimsbfは、unsigned integer most significant bit firstの略であり、符号無し整数、最上位ビットが先頭を意味する。また、ビット列表記のbslbfは、bit string left bit firstの略であり、ビット列、左ビットが先頭を意味する。
図6において、No.1の「MPT(){」は、以降、No.60の「}」までが、MPテーブルのデータ構造であることを表す。当該テーブルの先頭に配置されているNo.2の「table_id」は、MPテーブルのIDを示す8ビットの領域である。本実施形態では、MPテーブルのIDとして、Complete MPTを表す「0x40」を用いる。次に配置されているNo.3の「version」は、MPテーブルのバージョン番号を示す8ビットの領域である。次に配置されているNo.4の「length」は、当該領域以降のMPテーブルのバイト数を示す16ビットの領域である。
次に配置されているNo.5の「reserved」は、6ビットの予約領域である。
次に配置されているNo.6の「MPT_mode」は、MPテーブルがサブセットであるときの処理モードを示す2ビットの領域である。ISO/IEC 23008−1の規定に従うが、詳細な説明は省略する。次のNo.7の「If(table_id==SUBSET_0_MPT_TABLE_ID){」は、No.2の「table_id」の値が、「SUBSET_0_MPT_TABLE_ID」であるときに、No.20までの領域が配置されることを示す。
次のNo.8の「MMT_package_id{」は、以降、No.13の「}」までがパッケージIDに関する領域であることを示す。次に配置されているNo.9の「MMT_package_id_length」は、パッケージIDのバイト数N1を示す8ビットの領域である。次のNo.10の「for(i=0;i<N1;i++){」は、以降、No.12までの領域をN1回、すなわちパッケージIDのバイト数分繰り返すことを示す。次に配置されているNo.11の「MMT_package_id_byte」は、パッケージID中の1バイトを示す領域である。次のNo.12の「}」は、No.10の「{」に対応し、No13の「}」は、No.8の「{」に対応する。
次のNo.14の「MPT_descriptors{」は、以降、No.19の「}」までがMPテーブルに関する記述子(descriptor)に関する領域であることを示す。次に配置されているNo.15の「MPT_descriptors_length」は、配置されている記述子の長さの合計N2を示す16ビットの領域である。次のNo.16の「for(i=0;i<N2;i++){」は、以降、No.18までの領域をN2回、すなわち記述子の長さの合計分繰り返すことを示す。次に配置されているNo.17の「MPT_descriptors_byte」は、記述子中の1バイトを示す領域である。次のNo.18の「}」は、No.16の「{」に対応し、No.19の「}」は、No.14の「{」に対応し、No.20の「}」は、No.7の「{」に対応する。
次に配置されている図7におけるNo.21の「number_of_assets」は、当該MPテーブルで情報が提供されているアセットの数を示す8ビットの領域である。次のNo.22の「for(i=0;i<N3;i++){」は、以降、図8におけるNo.59までの領域をN3回、すなわち当該MPテーブルで情報が提供されているアセットの数分繰り返すことを示す。
次のNo.23の「asset{」は、以降、No.29の「}」までがアセットIDに関する領域であることを示す。次に配置されているNo.24の「asset_id_length」は、配置されているアセットIDのバイト数N4を示す8ビットの領域である。次のNo.25の「for(i=0;i<N4;i++){」は、以降、No.27までの領域をN4回、すなわちアセットIDのバイト数分繰り返すことを示す。次に配置されているNo.26の「asset_id_byte」は、アセットID中の1バイトを示す領域である。次のNo.27の「}」は、No.25の「{」に対応する。
次に配置されているNo.28の「mime_type」は、アセットIDが示されたアセットのMIME(Multipurpose Internet Mail Extension)タイプを示す32ビットの領域である。次のNo.29の「}」は、No.23の「{」に対応する。次のNo.30の「If(asset_scheme_code==“GURL”){」は、「asset_scheme_code」の値が「GURL」であるときに、No.36までの領域が配置されることを示す。
次に配置されているNo.31の「packet_id」は、GFD(General
File Delivery)セッションのIDを示す32ビットの領域である。次に配置されているNo.32の「number_of_codepoints」は、当該GFDセッションのコードポイント(codepoint)の数N8を示す8ビットの領域である。次のNo.33の「for(i=0;i<N8;i++){」は、以降、No.35までの領域をN8回、すなわちコードポイントの数分繰り返すことを示す。次に配置されているNo.34の「CodePoint()」は、コードポイントテーブルを示す領域である。次のNo.35の「}」は、No.33の「{」に対応し、No.36の「}」は、No.30の「{」に対応する。
次に配置されているNo.37の「reserved」は、7ビットの予約領域である。次に配置されているNo.38の「asset_clock_relation_flag」は、当該アセットがクロックの参照先として、NTP(Network Time Protocol)を用いるか否かを示す1ビットの領域である。次のNo.39の「if(asset_clock_relation_flag==1){」は、No.38の「asset_clock_relation_flag」の値が「1」であるときに、No.46までの領域が配置されることを示す。
次に配置されているNo.40の「asset_clock_relation_id」は、当該アセットが参照するクロックのIDを示す8ビットの領域である。次に配置されている図8におけるNo.41の「reserved」は、7ビットの予約領域である。次に配置されているNo.42の「asset_timescale_flag」は、「asset_timescale」が配置されているか否かを示すフラグである。
次のNo.43の「if(asset_timescale_flag==1){」は、No.42の「asset_timescale_flag」の値が「1」であるときに、No.45までの領域が配置されることを示す。次に配置されているNo.44の「asset_timescale」は、当該アセットが参照するクロックの周波数を示す32ビットの領域である。次のNo.45の「}」は、No.43の「{」に対応し、No.46の「}」は、No.39の「{」に対応する。
次のNo.47の「asset_location{」は、以降、No.52の「}」までが、当該アセットの参照情報(ロケーション情報ともいう)に関する領域であることを示す。次に配置されているNo.48の「location_count」は、当該アセットに関する参照情報の数N6を示す8ビットの領域である。次のNo.49の「for(i=0;i<N6;i++){」は、以降、No.51までの領域をN6回、すなわち参照情報の数分繰り返すことを示す。次に配置されているNo.50の「MMT_general_location_info()」は、当該アセットに関する参照情報(ロケーション情報ともいう)である。詳細は、後述する。次のNo.51の「}」は、No.49の「{」に対応し、No.52の「}」は、No.47の「{」に対応する。
次のNo.53の「asset_descriptors{」は、以降、No.58の「}」までが、当該アセットに関する記述子の領域であることを示す。次に配置されているNo.54の「asset_descriptors_length」は、当該アセットに関する記述子の長さの合計N5を示す16ビットの領域である。次のNo.55の「for(i=0;i<N5;i++){」は、以降、No.57までの領域をN5回、すなわち記述子の長さの合計分繰り返すことを示す。次に配置されているNo.56の「asset_descriptors_byte」は、記述子中の1バイトを示す領域である。次のNo.57の「}」は、No.55の「{」に対応し、No.58の「}」は、No.53の「{」に対応し、No.59の「}」は、No.22の「{」に対応し、No.60の「}」は、No.1の「{」に対応する。
図9から図11は、参照情報のデータ構造を示す表である。本実施形態における参照情報(general_location_info)のデータ構造は、ISO/IEC
23008−1に従っている。該表において、No.は、該表における行の通し番号を示す欄である。データ構造は、参照情報のデータ構造を示す欄である。ビット数は、該データ構造のビット数を示す欄である。値は、該ビット数のデータ構造がとる値を示す欄である。ビット列表記は、該ビット数のデータ構造のデータ形式を示す欄である。ビット列表記のuimsbfは、unsigned integer most significant bit firstの略であり、符号無し整数、最上位ビットが先頭を意味する。また、ビット列表記のbslbfは、bit string left bit firstの略であり、ビット列、左ビットが先頭を意味する。また、ビット列表記のcharは、文字を意味する。
図9において、No.1の「MMT_general_location_info(){」は、以降、図11のNo.63の「}」までが、参照情報のデータ構造であることを表す。次に配置されているNo.2の「location_type」は、参照情報のタイプを示す8ビットの領域である。なお、「location_type」が「0x00」であるときは、ロケーション(データパス)が、この「location_type」を伝送しているIPデータフローと同一のIPデータフローであることを示す。なお、0xは、以降の文字列が16進数であることを示す。
「location_type」が「0x01」であるときは、ロケーションが、UDP/IP(バージョン4)であることを示す。「location_type」が「0x02」であるときは、ロケーションが、UDP/IP(バージョン6)であることを示す。「location_type」が「0x03」であるときは、ロケーションが、ブロードキャストネットワークで配信されているMPEG−2TSであることを示す。「location_type」が「0x04」であるときは、ロケーションが、IPブロードキャストネットワークで配信されているMPEG−2TS内のエレメンタリーストリームであることを示す。
「location_type」が「0x05」であるときは、ロケーションが、URL(Uniform Resource Locator)であることを示す。「location_type」が「0x06」であるときは、ロケーションが、URLで指定されたファイル中の連続した領域であることを示す。「location_type」が「0x07」であるときは、ロケーションが、この「location_type」を伝送している制御メッセージ内であることを示す。「location_type」が「0x08」であるときは、ロケーションが、この「location_type」を伝送しているデータパスにより伝送されている制御メッセージであることを示す。
「location_type」が「0x09」であるときは、この「location_type」を伝送しているUDP/IPのデータフローにより伝送されている制御メッセージであることを示す。「location_type」が「0x0A」であるときは、UDP/IP(バージョン4)のデータフローにより伝送されている制御メッセージであることを示す。「location_type」が「0x0B」であるときは、UDP/IP(バージョン6)のデータフローにより伝送されている制御メッセージであることを示す。「location_type」が「0x0C」であるときは、IP(バージョン6)のブロードキャストネットワークで配信されているMPEG2−TS内のエレメンタリーストリームであることを示す。
次のNo.3の「if(location_type==0x00){」は、No.2の「location_type」の値が「0x00」であるときに、No.4の領域が配置されることを示す。次に配置されているNo.4の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。
次のNo.5の「}else if(location_type==0x01){」は、No.2の「location_type」の値が「0x01」であるときに、No.9までの領域が配置されることを示す。次に配置されているNo.6の「ipv4_src_addr」は、送信元のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.7の「ipv4_dst_addr」は、宛先のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.8の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されているNo.9の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。
次のNo.10の「}else if(location_type==0x02){」は、No.2の「location_type」の値が「0x02」であるときに、No.14までの領域が配置されることを示す。次に配置されているNo.11の「ipv6_src_addr」は、送信元のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.12の「ipv6_dst_addr」は、宛先のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.13の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されているNo.14の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。
次のNo.15の「}else if(location_type==0x03){」は、No.2の「location_type」の値が「0x03」であるときに、No.19までの領域が配置されることを示す。次に配置されているNo.16の「network_id」は、MPEG2−TSを伝送しているブロードキャストネットワークのIDを示す16ビットの領域である。次に配置されているNo.17の「MPEG_2_transport_stream_id」は、MPEG2−TSのIDである。次に配置されているNo.18の「reserved」は、3ビットの予約領域である。次に配置されているNo.19の「MPEG_2_PID」は、エレメンタリーストリームを伝送しているMPEG2−TSパケットのPIDである。
次のNo.20の「}else if(location_type==0x04){」は、No.2の「location_type」の値が「0x04」であるときに、図10におけるNo.25までの領域が配置されることを示す。次に配置されているNo.21の「ipv6_src_addr」は、送信元のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.22の「ipv6_dst_addr」は、宛先のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.23の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されている図10のおけるNo.24の「reserved」は、3ビットの予約領域である。次に配置されているNo.25の「MPEG_2_PID」は、エレメンタリーストリームを伝送しているMPEG2−TSパケットのPIDである。
次のNo.26の「}else if(location_type==0x05){」は、No.2の「location_type」の値が「0x05」であるときに、No.30までの領域が配置されることを示す。次に配置されているNo.27の「URL_length」は、URLのバイト数N1を示す8ビットの領域である。次のNo.28の「for(i=0;i<N1;i++){」は、以降、No.30までの領域をN1回、すなわちURLのバイト数分繰り返すことを示す。次に配置されているNo.29の「URL_byte」は、URL中の1バイトを示す領域である。次のNo.30の「}」は、No.28の「{」に対応する。
次のNo.31の「}else if(location_type==0x06){」は、No.2の「location_type」の値が「0x06」であるときに、No.37までの領域が配置されることを示す。次に配置されているNo.32の「URL_length」は、URLのバイト数N2を示す8ビットの領域である。次のNo.33の「for(i=0;i<N2;i++){」は、以降、No.35までの領域をN2回、すなわちURLのバイト数分繰り返すことを示す。次に配置されているNo.34の「URL_byte」は、URL中の1バイトを示す領域である。次のNo.35の「}」は、No.33の「{」に対応する。次に配置されているNo.36の「byte_offset」は、URLで示されるファイルの先頭からのオフセット位置を示す16ビットの領域である。次に配置されているNo.37の「length」は、オフセット位置からのバイト数を示す16ビットの領域である。
次のNo.38の「}else if(location_type==0x07){」は、No.2の「location_type」の値が「0x07」であるときに、何も配置されないことを示す。
次のNo.39の「}else if(location_type==0x08){」は、No.2の「location_type」の値が「0x08」であるときに、No.40の領域が配置されることを示す。次に配置されているNo.40の「message_id」は、制御メッセージのIDを示す8ビットの領域である。
次のNo.41の「}else if(location_type==0x09){」は、No.2の「location_type」の値が「0x09」であるときに、No.43までの領域が配置されることを示す。次に配置されているNo.42の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。次に配置されているNo.43の「message_id」は、制御メッセージのIDを示す8ビットの領域である。
次のNo.44の「}else if(location_type==0x0A){」は、No.2の「location_type」の値が「0x0A」であるときに、図11におけるNo.49までの領域が配置されることを示す。次に配置されているNo.45の「ipv4_src_addr」は、送信元のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.46の「ipv4_dst_addr」は、宛先のIPv4のアドレスを示す32ビットの領域である。次に配置されている図11におけるNo.47の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されているNo.48の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。次に配置されているNo.49の「message_id」は、制御メッセージのIDを示す8ビットの領域である。
次のNo.50の「}else if(location_type==0x0B){」は、No.2の「location_type」の値が「0x0B」であるときに、No.55までの領域が配置されることを示す。次に配置されているNo.51の「ipv6_src_addr」は、送信元のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.52の「ipv6_dst_addr」は、宛先のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.53の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されているNo.54の「packet_id」は、MMTパケットのパケットIDを示す16ビットの領域である。次に配置されているNo.55の「message_id」は、制御メッセージのIDを示す8ビットの領域である。
次のNo.56の「}else if(location_type==0x0C){」は、No.2の「location_type」の値が「0x0C」であるときに、No.62までの領域が配置されることを示す。次に配置されているNo.57の「ipv4_src_addr」は、送信元のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.58の「ipv4_dst_addr」は、宛先のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.58の「dst_port」は、宛先のポート番号を示す16ビットの領域である。次に配置されているNo.60の「reserved」は、3ビットの予約領域である。次に配置されているNo.61の「MPEG_2_PID」は、エレメンタリーストリームを伝送しているMPEG2−TSパケットのPIDである。次のNo.62の「}」は、No.56の「{」に対応する。次のNo.63の「}」は、No.1の「{」に対応する。
図12、図13は、パッケージリストテーブルのデータ構造を示す表である。該表において、No.は、該表における行の通し番号を示す欄である。データ構造は、パッケージリストテーブルのデータ構造を示す欄である。ビット数は、該データ構造のビット数を示す欄である。値は、該ビット数のデータ構造がとる値を示す欄である。ビット列表記は、該ビット数のデータ構造のデータ形式を示す欄である。ビット列表記のuimsbfは、unsigned integer most significant bit firstの略であり、符号無し整数、最上位ビットが先頭を意味する。また、ビット列表記のcharは、文字を意味する。
図12において、No.1の「Package_List_Table(){」は、以降、図13におけるNo.30の「}」までが、パッケージリストテーブルのデータ構造であることを表す。当該テーブルの先頭に配置されているNo.2の「table_id」は、パッケージリストテーブルのIDを示す8ビットの領域である。次に配置されているNo.3の「version」は、パッケージリストテーブルのバージョン番号を示す8ビットの領域である。次に配置されているNo.4の「length」は、当該領域以降のパッケージリストテーブルのバイト数を示す16ビットの領域である。
次に配置されているNo.5の「num_of_package」は、当該パッケージリストテーブルに参照情報を記載するパッケージの数N2を示す8ビットの領域である。
次のNo.6の「for(i=0;i<N2;i++){」は、以降、No.9までの領域をN2回、すなわち参照情報を記載するパッケージの数分繰り返すことを示す。次に配置されているNo.7の「package_id」は、MPテーブルへの参照情報を記載するパッケージのパッケージIDを示す16ビットの領域である。なお、このNo.7の「package_id」に変えて、図6のNo.9からNo.12と同様の領域を配置して、任意長のパッケージIDを記載できるようにしてもよい。次に配置されているNo.8の「MMT_general_location_info()」は、MPテーブルへの参照情報であり、図9から図11にて示した参照情報を示す領域である。パッケージリストテーブルは、これら、No.7とNo.8とにより、パッケージIDとMPテーブルへの参照情報(パケットID)とを対応付けている。次のNo.9の「}」は、No.6の「{」に対応する。
次に配置されているNo.10の「num_of_ip_delivery」は、この参照情報を記載するIPサービスの数N3を示す8ビットの領域である。次のNo.11の「for(i=0;i<N3;i++){」は、以降、図13におけるNo.29までの領域をN3回、すなわち参照情報を記載するIPサービスの数分繰り返すことを示す。
次に配置されているNo.12の「transport_file_id」は、IPサービスで伝送するファイルを一意に識別するためのラベルを示す32ビットの領域である。
次に配置されているNo.13の「location_type」は、参照情報のタイプを示す8ビットの領域である。「location_type」が「0x01」であるときは、IPv4のデータフローであることを示す。「location_type」が「0x02」であるときは、ロケーションが、UDP/IP(バージョン6)であることを示す。
次のNo.14の「if(location_type==0x01){」は、No.13の「location_type」の値が「0x01」であるときに、No.17までの領域が配置されることを示す。次に配置されているNo.15の「ipv4_src_addr」は、送信元のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.16の「ipv4_dst_addr」は、宛先のIPv4のアドレスを示す32ビットの領域である。次に配置されているNo.17の「dst_port」は、宛先のポート番号を示す16ビットの領域である。
次のNo.18の「if(location_type==0x02){」は、No.13の「location_type」の値が「0x02」であるときに、No.21までの領域が配置されることを示す。次に配置されているNo.19の「ipv6_src_addr」は、送信元のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.20の「ipv6_dst_addr」は、宛先のIPv6のアドレスを示す128ビットの領域である。次に配置されているNo.21の「dst_port」は、宛先のポート番号を示す16ビットの領域である。
次の図13におけるNo.22の「if(location_type==0x05){」は、図12におけるNo.13の「location_type」の値が「0x05」であるときに、No.27までの領域が配置されることを示す。次に配置されているNo.23の「URL_length」は、URLのバイト数N1を示す8ビットの領域である。次のNo.24の「for(i=0;i<N1;i++){」は、以降、No.26までの領域をN1回、すなわちURLのバイト数分繰り返すことを示す。次に配置されているNo.25の「URL_byte」は、URL中の1バイトを示す領域である。次のNo.26の「}」は、No.24の「{」に対応し、次のNo.27の「}」は、No.22の「{」に対応する。
次に配置されているNo.28の「descriptors()」は、IPサービスに関する記述子を示す領域である。次のNo.29の「}」は、図12におけるNo.11の「{」に対応し、次のNo.30の「}」は、図12におけるNo.1の「{」に対応する。
図14は、指定取得部72、受信制御部73、制御メッセージ処理部74の動作を説明するフローチャートである。まず、指定取得部72は、所望のサービスの指定を取得する(Sa1)。次に、受信制御部73は、該所望のサービスを伝送しているIPデータフローの受信を、受信部70に指示する(Sa2)。なお、サービスと、IPデータフローとの対応は、受信制御部73が予め記憶していてもよいし、AMT(Address Map Table)など、該対応を示す情報がサービス提供側から配信されてもよい(非特許文献1、2参照)。
受信部70が、指示に従いIPデータフローを受信すると、分離部71は、該IPデータフローからパケットIDが「0」のMMTパケットに格納されているPAメッセージを分離する。制御メッセージ処理部74は、分離部71が分離した該PAメッセージを取得する(Sa3)。次に、制御メッセージ処理部74は、取得したPAメッセージ内のMPテーブルを取得し(Sa4)、該MPTテーブルのパッケージIDが、ステップSa1にて指定取得部72が取得した所望のサービスのパッケージIDと一致しているか否かを判定する(Sa5)。
なお、制御メッセージ処理部74は、例えば、サービスと、パッケージIDとの対応付けを予め記憶しておき、該対応付けを参照することで、所望のサービスのパッケージIDを取得してもよい。あるいは、サービスとパッケージIDとの対応付けを示す情報がサービス提供側から配信されており、制御メッセージ処理部74は、該情報を参照することで、所望のサービスのパッケージIDを取得してもよい。
ステップSa5にて一致していないと判定したときは(Sa5−No)、ステップSa11に進む。制御メッセージ処理部74は、ステップSa3にて取得したPAメッセージ内のパッケージリストテーブルを取得する(Sa11)。次に、制御メッセージ処理部74は、取得したパッケージリストテーブルを参照して、所望のサービスのパッケージIDと対応付けられたパケットIDを取得する(Sa12)。
制御メッセージ処理部74は、取得したパケットIDのPAメッセージの分離を分離部74に指示する。分離部74は、指示されたパケットIDのPAメッセージを、受信部70が受信しているIPデータフローから分離する。制御メッセージ処理部74は、分離されたPAメッセージを取得する。すなわち、制御メッセージ処理部74は、ステップSa12にて取得したパケットIDのPAメッセージを取得する(Sa13)。
次に、制御メッセージ処理部74は、取得したPAメッセージ内のMPテーブルを取得し(Sa14)、ステップSa6に進む。一方、ステップSa5にて一致していると判定したときは(Sa5−Yes)、そのままステップSa6に進む。
ステップSa6では、制御メッセージ処理部74は、取得したMPテーブルに記載されたアセットの分離を分離部71に指示する。分離部71は、該指示にしたがい、分離したアセットのうち、映像ストリームは、映像デコード部75に入力し、音声ストリームは、音声デコード部76に入力し、データストリームは、データレンダリング部77に入力する。これにより、出力装置18が、該パッケージの映像の表示や、音声の出力を行うようになる。
所望のサービスのMPテーブルは、受信しているIPデータフローにより繰り返し伝送されてくるので、制御メッセージ処理部74は、該MPテーブルを監視する(Sa7)。
制御メッセージ処理部74は、伝送されてきたMPテーブルに、以前のものからの変更があるか否かを判定する(Sa8)。変更があると判定したときは(Sa8−Yes)、制御メッセージ処理部74は、MPテーブルを再取得し(Sa9)、ステップSa6に戻る。
ステップSa8にて、変更がないと判定したときは(Sa8−No)、指定取得部72が、所望のサービスが変更されたか否かを判定する(Sa10)。所望のサービスが変更されていないときは(Sa10−No)、ステップSa7に戻る。また、所望のサービスが変更されているときは、ステップSa1に戻る。
このように、配信システム10は、制御メッセージ生成装置11と、配信装置16と、受信装置17とを有する。制御メッセージ生成装置11は、第1のパッケージを構成するアセット各々への参照情報を含む第1のMPテーブル(第1のテーブル)と、第2のMPテーブル(第2のテーブル)への参照情報を含むパッケージリストテーブルとを含む第1のPAメッセージ(第1の制御メッセージ)を生成する。また、制御メッセージ生成装置11は、第2のMPテーブルを含む第2のPAメッセージ(第2の制御メッセージ)を生成する。配信装置16は、制御メッセージ生成装置11が生成した第1および第2のPAメッセージを、IPデータフロー(データフロー)を用いて配信する。受信装置17は、該データフローを受信する。
これにより、配信システム10は、受信装置17が、第1のパッケージについては、第1の制御メッセージのみを取得すれば、すなわち、1ホップで受信可能となるようにすることができる。また、第2のパッケージについては、第1の制御メッセージと、第2の制御メッセージとを取得すれば、すなわち、2ホップで受信可能となるようにすることができる。したがって、パッケージを受信可能になるまでのホップ数の期待値を抑えることが出来る。
また、受信装置17は、指定取得部72と、受信部70と、分離部71と、制御メッセージ処理部74とを具備する。指定取得部72は、所望のパッケージを指定する情報を取得する。受信部70は、IPデータフローを受信する。分離部71は、IPデータフローから第1のPAメッセージを分離する。制御メッセージ処理部74は、第1のPAメッセージに含まれる第1のMPテーブルを参照して、第1のパッケージが所望のパッケージと一致しているときは、第1のMPパッケージの分離を分離部71に指示する。
これにより、受信装置17は、第1のパッケージを1ホップで受信することができる。
また、制御メッセージ処理部74は、第1のPAメッセージに含まれる第1のMPテーブルを参照して、第1のパッケージが所望のパッケージと一致していないときは、第1のPAメッセージに含まれるパッケージリストテーブルを参照して、所望のパッケージに対応する第2のMPテーブルへの参照情報を取得し、取得した参照情報を用いて、所望のパッケージに対応する第2のMPテーブルを含む第2のPAメッセージの分離を分離部71に指示する。
これにより、受信装置17は、第2のパッケージを2ホップで受信することができる。
なお、上述の実施形態において、IPデータフロー中に、同時に含まれるパッケージが一つのときは、パケットIDが「0」のPAメッセージに、パッケージリストテーブルを含めなくてもよいし、IPデータフロー中に含まれる一つのパッケージに関する情報のみを含むパッケージリストテーブルを含めてもよいし、「num_of_package」の値を「0」にし、パッケージに関する参照情報を含まないパッケージリストテーブルを生成するようにしてもよい。
また、上述の実施形態において、MPテーブルと、パッケージリストテーブルとは、PAメッセージに格納されるとして説明したが、その他の制御メッセージに格納されてもよい。ただし、MPテーブルとともに、パッケージリストテーブルを格納する制御メッセージは、パケットIDが「0」のPAメッセージであることが望ましい。パケットIDが「0」のPAメッセージは、受信装置17が最初に取得する制御メッセージとするからである。
[実施形態の変形例1]
上述の実施形態では、制御メッセージ生成装置11は、パッケージリストテーブルを、パケットIDが「0」のPAメッセージにのみ格納しているが、その他のPAメッセージにも格納するようにしてもよい。図15は、変形例1におけるIPデータフローの構成を示す概念図である。同図において、図4の各部に対応する部分には、同一の符号を付し、説明を省略する。
IPデータフローDFaには、図4のIPデータフローDFとは、PAメッセージPAに変えて、PAメッセージPA2を含む点が異なる。PAメッセージPA2は、MPテーブルMP2に加えて、パッケージリストテーブルPL2を含む。このパッケージリストテーブルPL2には、MPテーブルMP2以外のMPテーブルへの参照情報を少なくとも含んでいる。なお、パッケージリストテーブルPL1、PL2ともに、IPデータフローDFaにて伝送されている全てのMPテーブルへの参照情報を含むようにしてもよい。
[実施形態の変形例2]
以下、図面を参照して、実施形態の変形例2について説明する。本変形例は、上述の実施形態と、MPテーブル、参照情報(MMT_general_location_info())、パッケージリストテーブルのデータ構造が異なる。図16、図17、図18は、本変形例におけるMPテーブルのデータ構造を示す表である。これらの図で示すデータ構造は、図6、図7、図8に示すデータ構造とは、以下の4点が異なる。
1点目は、本変形例のMPテーブルにおいて、図16のNo.2の「table_id」の値が「0x20」であることである。2点目は、本変形例のMPテーブルが、図7のNo.23からNo.28に代えて、図17のNo.23からNo.28を有する点である。3点目は、本変形例のMPテーブルが、図7のNo.28に代えて、図17のNo.29に「asset_type」を有する点である。4点目は、本変形例のMPテーブルが、図7のNo.30からNo.36を有さない点である。
以下、上記の2点目について説明する。図17のNo.23の「identifier_type」は、識別子タイプともいい、以降に格納されるMMTPパケットフローのID体系を示す8ビットの領域である。ここでは、「identifier_type」の値は、アセットIDが格納されることを示す「0x00」である。No.24の「asset_id_scheme」は、アセットID形式ともいい、以降に格納されるアセットIDの形式を示す32ビットの領域である。No.25の「asset_id_length」は、アセットID長ともいい、以降に格納されるアセットIDバイトの長さをバイト単位で示す8ビットの領域である。次のNo.26の「for(i=0;i<N4;i++){」は、以降、No.28までの領域をN4回、すなわちアセットID長の数だけ繰り返すことを示す。次に配置されているNo.27の「asset_id_byte」は、アセットIDバイトともいい、アセットID中の1バイトを示す領域である。次のNo.28の「}」は、No.26の「{」に対応する。
以下、上記の3点目について説明する。図17のNo.29の「asset_type」は、アセットタイプともいい、No.27のアセットIDバイトで示されたアセットの種類を示す32ビットの領域である。「asset_type」は、値が「hvc1」であるときは、アセットの種類がITUT−T勧告H.265で規定されるHEVCであることを示す。また「asset_type」は、値が「mp4a」であるときは、アセットの種類がISO/IEC14496−3の音声であることを示す。
また「asset_type」は、値が「stpp」であるときは、アセットの種類がタイムドテキスト(字幕・文字スーパー)であることを示す。また「asset_type」は、値が「aapp」であるときは、アセットの種類がアプリケーションであることを示す。また「asset_type」は、値が「asgd」であるときは、アセットの種類が同期型汎用データであることを示す。また「asset_type」は、値が「aagd」であるときは、アセットの種類が非同期型汎用データであることを示す。
図19、図20は、本変形例における参照情報(MMT_general_location_info())のデータ構造を示す表である。これらの図で示すデータ構造は、図9、図10、図11に示すデータ構造とは、以下の4点が異なる。図10のNo.31からNo.46および図11のNo.47からNo.62を有しない点が異なる。
図21、図22は、本変形例におけるパッケージリストテーブルのデータ構造を示す表である。これらの図で示すデータ構造は、図12、図13に示すデータ構造とは、以下の2点が異なる。1点目は、本変形例におけるパッケージリストテーブルが、図12のNo.7に代えて、図21のNo.7からNo.10を有する点である。図21のNo.7の「MMT_package_id_length」は、パッケージID長ともいい、以降に格納されるパッケージIDバイトの長さをバイト単位で示す8ビットの領域である。次のNo.8の「for(j=0;j<M;j++){」は、No.9の領域をM回、すなわちパッケージIDバイトの長さだけ繰り返すことを示す。次に配置されているNo.9の「MMT_package_id_byte」は、パッケージIDバイトともいい、パッケージID中の1バイトを示す8ビットの領域である。次のNo.10の「}」は、No.8の「{」に対応する。
2点目は、本変形例におけるパッケージリストテーブルが、図13のNo.28に代えて、図22のNo.32からNo.34を有する点である。図22のNo.32の「descriptor_loop_length」は、記述子長ともいい、以降に格納される記述子の全バイト長を示す16ビットの領域である。次のNo.33の「for(j=0;j<M;j++){」は、No.33の領域をM回、すなわち記述子長だけ繰り返すことを示す。次のNo.34の「descriptor()」は、記述子領域ともいい、IPサービスの詳細な情報を示す記述子のための領域中の1バイトである。次のNo.34の「}」は、No.32の「{」に対応する。
なお、上述の変形例1におけるMPテーブル、MMT_general_loation_info()、パッケージリストテーブルのうち、いずれかまたは全てが、変形例2と同様にであってもよい。
また、上述の変形例2では、MPテーブル、MMT_general_loation_info()、パッケージリストテーブルの全てが、上述の実施形態と異なっていたが、異なっているのは、MPテーブル、MMT_general_loation_info()、パッケージリストテーブルの一部であってもよい。
また、図1における制御メッセージ生成装置11、受信装置17の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりこれらの装置を実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
また、上述した図2における制御メッセージ生成装置11、図3における受信装置17の各機能ブロックは個別にチップ化してもよいし、一部、または全部を集積してチップ化してもよい。また、集積回路化の手法はLSIに限らず、専用回路、または汎用プロセッサで実現しても良い。ハイブリッド、モノリシックのいずれでも良い。一部は、ハードウェアにより、一部はソフトウェアにより機能を実現させても良い。
また、半導体技術の進歩により、LSIに代替する集積回路化等の技術が出現した場合、当該技術による集積回路を用いることも可能である。
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。