本発明の一態様に係る送信方法は、MP4フォーマットのファイルを構成する、(1)映像信号または音声信号が符号化されたデータであるサンプルデータ、(2)前記サンプルデータを復号するための第1のメタデータ、及び、(3)前記サンプルデータの生成後にのみ生成可能なデータを含む、前記サンプルデータを復号するための第2のメタデータ、のそれぞれをパケット化するパケット化ステップと、パケット化された前記第1のメタデータ、パケット化された前記サンプルデータ、及びパケット化された前記第2のメタデータをこの順に送信する送信ステップとを含む。
これにより、MP4フォーマットのファイルの送信におけるEnd−to−End遅延を低減することができる。
また、前記サンプルデータの生成後にのみ生成可能なデータは、前記MP4フォーマットにおけるmdatに格納されるデータのうち、前記サンプルデータ以外のデータの少なくとも一部であってもよい。
また、前記第1のメタデータは、MPU(Media Processing Unit)メタデータであり、前記第2のメタデータは、ムービーフラグメントメタデータであってもよい。
また、前記パケット化ステップにおいては、MMT(MPEG Media Transport)方式でパケット化を行ってもよい。
また、本発明の一態様に係る受信方法は、パケット化された第1のメタデータ、パケット化されたサンプルデータ、及びパケット化された第2のメタデータをこの順に受信する受信ステップと、受信された前記第1のメタデータ、受信された前記第2のメタデータ、及び受信された前記サンプルデータを含むMP4フォーマットのファイルを再構成する再構成ステップと、再構成された前記MP4フォーマットのファイルに含まれる前記サンプルデータを、前記第1のメタデータ及び前記第2のメタデータ用いてを復号する復号ステップとを含み、前記第2のメタデータは、送信側において前記サンプルデータの生成後にのみ生成可能なデータを含む。
本発明の一態様に係る送信装置は、MP4フォーマットのファイルを構成する、(1)映像信号または音声信号が符号化されたデータであるサンプルデータ、(2)前記サンプルデータを復号するための第1のメタデータ、及び、(3)前記サンプルデータの生成後にのみ生成可能なデータを含む、前記サンプルデータを復号するための第2のメタデータ、のそれぞれをパケット化する多重化部と、パケット化された前記第1のメタデータ、パケット化された前記サンプルデータ、及びパケット化された前記第2のメタデータをこの順に送信する送信部とを備える。
本発明の一態様に係る受信装置は、パケット化された第1のメタデータ、パケット化されたサンプルデータ、及びパケット化された第2のメタデータをこの順に受信する受信部と、受信された前記第1のメタデータ、受信された前記第2のメタデータ、及び受信された前記サンプルデータを含むMP4フォーマットのファイルを再構成する再構成部と、再構成された前記MP4フォーマットのファイルに含まれる前記サンプルデータを、前記第1のメタデータ及び前記第2のメタデータ用いてを復号する復号部とを含み、前記第2のメタデータは、送信側において前記サンプルデータの生成後にのみ生成可能なデータを含む。
本発明の一態様に係る送信方法は、映像信号を符号化して複数のアクセスユニットを含む符号化データを生成し、前記複数のアクセスユニットを、アクセスユニット単位、またはアクセスユニットを分割した単位でパケットに格納してパケット群を生成し、生成された前記パケット群をデータとして送信し、前記複数のアクセスユニットのうち最初に提示されるアクセスユニットの提示時刻を示す第1の情報と、前記複数のアクセスユニットの復号時刻の算出に用いられる第2の情報とを生成し、生成された前記第1の情報及び前記第2の情報を制御情報として送信する。
本発明の一態様に係る受信方法は、前記第2の情報は、前記複数のアクセスユニットのうちの一部の復号時刻の算出に用いられる情報である。
本発明の一態様に係る送信装置は、複数のアクセスユニットを含む符号化データがアクセスユニット単位またはアクセスユニットを分割した単位でパケット化されたパケット群を受信し、前記複数のアクセスユニットのうち最初に提示されるアクセスユニットの提示時刻を示す第1の情報と、前記複数のアクセスユニットの復号時刻の算出に用いられる第2の情報とを含む制御情報を受信し、受信されたパケット群に含まれる前記アクセスユニットを、前記第1の情報及び前記第2の情報に基づいて復号する。
本発明の一態様に係る受信装置は、映像信号を符号化して複数のアクセスユニットを含む符号化データを生成する符号化部と、前記複数のアクセスユニットを、アクセスユニット単位、またはアクセスユニットを分割した単位でパケットに格納してパケット群を生成するパケット生成部と、生成された前記パケット群をデータとして送信する第1送信部と、前記複数のアクセスユニットのうち最初に提示されるアクセスユニットの提示時刻を示す第1の情報と、前記複数のアクセスユニットの復号時刻の算出に用いられる第2の情報とを生成する情報生成部と、生成された前記第1の情報及び前記第2の情報を制御情報として送信する第2送信部とを備える。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(本発明の基礎となった知見)
近年、TV、スマートフォン、又はタブレット端末などのディスプレイの高解像度化が進んでいる。特に日本国内の放送においては2020年に8K4K(解像度が8K×4K)のサービスが予定されている。8K4Kなどの超高解像度の動画像においては、単一の復号器では実時間での復号が困難であるため、複数の復号器を用いて並列に復号処理を行う手法が検討されている。
符号化データはMPEG−2 TSやMMTなどの多重化方式に基づいて多重化して送信されるため、受信装置は、復号に先立って、多重化データから動画の符号化データを分離する必要がある。以下、多重化データから符号化データを分離する処理を逆多重化と呼ぶ。
復号処理を並列化する際には、各復号器のそれぞれに対して、復号対象となる符号化データを振り分ける必要がある。符号化データを振り分ける際には、符号化データそのものを解析する必要があり、特に8Kなどのコンテンツにおいてはビットレートが非常に高いことから、解析に係る処理負荷が大きい。したがって、逆多重化の部分がボトルネックとなり実時間での再生が行えないという課題があった。
ところで、MPEGとITUにより規格化されたH.264及びH.265などの動画像符号化方式においては、送信装置は、ピクチャをスライス又はスライスセグメントと呼ばれる複数の領域に分割し、分割したそれぞれの領域を独立に復号できるように符号化することができる。従って、例えば、H.265の場合には、放送を受信する受信装置は、受信データからスライスセグメント毎のデータを分離し、各スライスセグメントのデータを別々の復号器に出力することで、復号処理の並列化を実現できる。
図1は、HEVCにおいて、1つのピクチャを4つのスライスセグメントに分割する例を示す図である。例えば、受信装置は4つの復号器を備え、各復号器が4つのスライスセグメントのうちいずれかを復号する。
従来の放送においては、送信装置は、1枚のピクチャ(MPEGシステム規格におけるアクセスユニット)を1つのPESパケットに格納し、PESパケットをTSパケット列に多重化する。このため、受信装置は、PESパケットのペイロードを分離したうえで、ペイロードに格納されたアクセスユニットのデータを解析することで、各スライスセグメントを分離し、分離された各スライスセグメントのデータを復号器に出力する必要があった。
しかしながら、アクセスユニットのデータを解析してスライスセグメントを分離する際の処理量が大きいため、この処理を実時間で行うことが困難であるという課題があることを本発明者は見出した。
図2は、スライスセグメントに分割されたピクチャのデータが、PESパケットのペイロードに格納される例を示す図である。
図2に示すように、例えば、複数のスライスセグメント(スライスセグメント1〜4)のデータが1つのPESパケットのペイロードに格納される。また、PESパケットはTSパケット列に多重化される。
(実施の形態1)
以下では、動画像の符号化方式としてH.265を用いる場合を例に説明するが、H.264など他の符号化方式を用いる場合にも本実施の形態を適用できる。
図3は、本実施の形態におけるアクセスユニット(ピクチャ)を分割単位に分割した例を示す図である。アクセスユニットは、H.265によって導入されたタイルと呼ばれる機能により、水平及び垂直方向にそれぞれ2等分され、合計4つのタイルに分割される。また、スライスセグメントとタイルは1対1に対応付けられる。
このように水平及び垂直方向に2等分する理由について説明する。まず、復号時には、一般的に水平1ラインのデータを格納するラインメモリが必要となるが、8K4Kなどの超高解像度になると、水平方向のサイズが大きくなるためラインメモリのサイズが増加する。受信装置の実装においては、ラインメモリのサイズを低減できることが望ましい。ラインメモリのサイズを低減するためには垂直方向の分割が必要となる。垂直方向の分割にはタイルというデータ構造が必要である。これらの理由により、タイルが用いられる。
一方で、画像は一般的に水平方向の相関が高いため、水平方向に広い範囲を参照できるほうが符号化効率は向上する。従って、符号化効率の観点ではアクセスユニットが水平方向に分割されることが望ましい。
アクセスユニットが水平及び垂直方向に2等分されることで、これら2つの特性を両立させ、実装面、及び符号化効率の両面を考慮できる。単一の復号器が4K2Kの動画像を実時間での復号が可能の場合には、8K4Kの画像が4等分され、各々のスライスセグメントが4K2Kとなるように分割されることで、受信装置は、8K4Kの画像を実時間で復号できる。
次に、アクセスユニットが水平及び垂直方向に分割されることで得られたタイルとスライスセグメントとを1対1に対応付ける理由について説明する。H.265においては、アクセスユニットは複数のNAL(Network Adaptation Layer)ユニットと呼ばれる単位から構成される。
NALユニットのペイロードは、アクセスユニットの開始位置を示すアクセスユニットデリミタ、シーケンス単位で共通に用いられる復号時の初期化情報であるSPS(Sequence Parameter Set)、ピクチャ内で共通に用いられる復号時の初期化情報であるPPS(Picture Parameter Set)、復号処理自体には不要であるが復号結果の処理及び表示などにおいて必要となるSEI(Supplemental Enhancement Information)、並びに、スライスセグメントの符号化データなどのいずれかを格納する。NALユニットのヘッダは、ペイロードに格納されるデータを識別するためのタイプ情報を含む。
ここで、送信装置は、符号化データをMPEG−2 TS、MMT(MPEG Media Transport)、MPEG DASH(Dynamic Adaptive
Streaming over HTTP)、又は、RTP(Real−time Transport Protocol)などの多重化フォーマットによって多重化する際には、基本単位をNALユニットに設定できる。1つのスライスセグメントを1つのNALユニットに格納するためには、アクセスユニットを領域に分割する際に、スライスセグメント単位に分割することが望ましい。このような理由から、送信装置は、タイルとスライスセグメントとを1対1に対応付ける。
なお、図4に示すように、送信装置は、タイル1からタイル4までをまとめて1つのスライスセグメントに設定することも可能である。しかし、この場合には、1つのNALユニットに全てのタイルが格納されることになり、受信装置が、多重化レイヤにおいてタイルを分離することが困難である。
なお、スライスセグメントには独立に復号可能な独立スライスセグメントと、独立スライスセグメントを参照する参照スライスセグメントとが存在するが、ここでは独立スライスセグメントが用いられる場合を説明する。
図5は、図3に示すようにタイルとスライスセグメントとの境界が一致するように分割されたアクセスユニットのデータの例を示す図である。アクセスユニットのデータは、先頭に配置されたアクセスユニットデリミタが格納されるNALユニットと、その後に配置されるSPS、PPS、及びSEIのNALユニットと、その後に配置されるタイル1からタイル4までのデータが格納されたスライスセグメントのデータとを含む。なお、アクセスユニットのデータは、SPS、PPS及びSEIのNALユニットの一部又は全てを含まなくてもよい。
次に、本実施の形態に係る送信装置100の構成を説明する。図6は、本実施の形態に係る送信装置100の構成例を示すブロック図である。この送信装置100は、符号化部101と、多重化部102と、変調部103と、送信部104とを備える。
符号化部101は、入力画像を、例えば、H.265に従い符号化することで符号化データを生成する。また、符号化部101は、例えば、図3に示すように、アクセスユニットを4つのスライスセグメント(タイル)に分割し、各スライスセグメントを符号化する。
多重化部102は、符号化部101により生成された符号化データを多重化する。変調部103は、多重化により得られたデータを変調する。送信部104は、変調後のデータを放送信号として送信する。
次に、本実施の形態に係る受信装置200の構成を説明する。図7は、本実施の形態に係る受信装置200の構成例を示すブロック図である。この受信装置200は、チューナー201と、復調部202と、逆多重化部203と、複数の復号部204A〜204Dと、表示部205とを備える。
チューナー201は、放送信号を受信する。復調部202は、受信された放送信号を復調する。復調後のデータは逆多重化部203に入力される。
逆多重化部203は、復調後のデータを分割単位に分離し、分割単位毎のデータを復号部204A〜204Dに出力する。ここで、分割単位とは、アクセスユニットが分割されることで得られた分割領域であり、例えば、H.265におけるスライスセグメントである。また、ここでは、8K4Kの画像が4つの4K2Kの画像に分割される。よって、4つの復号部204A〜204Dが存在する。
複数の復号部204A〜204Dは、所定の基準クロックに基づいて互いに同期して動作する。各復号部は、アクセスユニットのDTS(Decoding Time Stamp)に従って分割単位の符号化データを復号し、復号結果を表示部205に出力する。
表示部205は、複数の復号部204A〜204Dから出力された複数の復号結果を統合することで8K4Kの出力画像を生成する。表示部205は、別途取得したアクセスユニットのPTS(Presentation Time Stamp)に従って、生成された出力画像を表示する。なお、表示部205は、復号結果を統合する際に、タイルの境界など、互いに隣接する分割単位の境界領域において、当該境界が視覚的に目立たなくなるようにデブロックフィルタなどのフィルタ処理を行ってもよい。
なお、上記では、放送の送信又は受信を行う送信装置100及び受信装置200を例に説明したが、コンテンツは通信ネットワーク経由で送信及び受信されてもよい。受信装置200が、通信ネットワーク経由でコンテンツを受信する場合には、受信装置200は、イーサーネットなどのネットワークにより受信したIPパケットから多重化データを分離する。
放送においては、放送信号が送信されてから受信装置200に届くまでの間の伝送路遅延は一定である。一方、インターネットなどの通信ネットワークにおいては輻輳の影響により、サーバーから送信されたデータが受信装置200に届くまでの伝送路遅延は一定でない。従って、受信装置200は、放送のMPEG−2 TSにおけるPCRのような基準クロックに基づいた厳密な同期再生を行わないことが多い。そのため、受信装置200は、各復号部を厳密に同期させることはせずに、表示部において8K4Kの出力画像をPTSに従って表示してもよい。
また、通信ネットワークの輻輳などにより、全ての分割単位の復号処理がアクセスユニットのPTSで示される時刻において完了していない場合がある。この場合には、受信装置200は、アクセスユニットの表示をスキップする、又は、少なくとも4つの分割単位の復号が終了し、8K4Kの画像の生成が完了するまで表示を遅延させる。
なお、放送と通信とを併用してコンテンツが送信及び受信されてもよい。また、ハードディスク又はメモリなどの記録媒体に格納された多重化データを再生する際にも本手法を適用可能である。
次に、多重化方式としてMMTが用いられる場合の、スライスセグメントに分割されたアクセスユニットの多重化方法にについて説明する。
図8は、HEVCのアクセスユニットのデータを、MMTにパケット化する際の例を示す図である。SPS、PPS及びSEIなどはアクセスユニットに必ずしも含まれる必要はないが、ここでは存在する場合について例示する。
アクセスユニットデリミタ、SPS、PPS、及びSEIなどのアクセスユニット内で先頭のスライスセグメントよりも前に配置されるNALユニットは一纏めにしてMMTパケット#1に格納される。後続のスライスセグメントは、スライスセグメント毎に別々のMMTパケットに格納される。
なお、図9に示すように、アクセスユニット内で先頭のスライスセグメントよりも前に配置されるNALユニットが、先頭のスライスセグメントと同一のMMTパケットに格納されてもよい。
また、シーケンス又はストリームの終端を示す、End−of−Sequence又はEnd−of−BitstreamなどのNALユニットが最終スライスセグメントの後に付加される場合には、これらは、最終スライスセグメントと同一のMMTパケットに格納される。ただし、End−of−Sequence又はEnd−of−BitstreamなどのNALユニットは、復号処理の終了ポイント、又は2本のストリームの接続ポイントなどに挿入されるため、受信装置200が、これらのNALユニットを、多重化レイヤにおいて容易に取得できることが望ましい場合がある。この場合には、これらのNALユニットは、スライスセグメントとは別のMMTパケットに格納されてもよい。これにより、受信装置200は、多重化レイヤにおいてこれらのNALユニットを容易に分離できる。
なお、多重化方式として、TS、DASH又はRTPなどが用いられてもよい。これらの方式においても、送信装置100は、異なるスライスセグメントをそれぞれ異なるパケットに格納する。これにより、受信装置200が多重化レイヤにおいてスライスセグメントを分離できることを保証できる。
例えば、TSが用いられる場合、スライスセグメント単位で符号化データがPESパケット化される。RTPが用いられる場合、スライスセグメント単位で符号化データがRTPパケット化される。これらの場合においても、図8に示すMMTパケット#1のように、スライスセグメントよりも前に配置されるNALユニットとスライスセグメントとが別々にパケット化されてもよい。
TSが用いられる場合、送信装置100は、data alignment記述子を用いることなどにより、PESパケットに格納されるデータの単位を示す。また、DASHはセグメントと呼ばれるMP4形式のデータ単位をHTTPなどによりダウンロードする方式であるため、送信装置100は、送信にあたって符号化データのパケット化は行わない。このため、送信装置100は、受信装置200がMP4において多重化レイヤでスライスセグメントを検出できるように、スライスセグメント単位でサブサンプルを作成し、サブサンプルの格納位置を示す情報をMP4のヘッダに格納してもよい。
以下、スライスセグメントのMMTパケット化について、詳細に説明する。
図8に示すように、符号化データがパケット化されることで、SPS及びPPSなどのアクセスユニット内の全スライスセグメントの復号時に共通に参照されるデータがMMTパケット#1に格納される。この場合、受信装置200は、MMTパケット#1のペイロードデータと各スライスセグメントのデータとを連結し、得られたデータを復号部に出力する。このように、受信装置200は、複数のMMTパケットのペイロードを連結することで、復号部への入力データを容易に生成できる。
図10は、図8に示すMMTパケットから復号部204A〜204Dへの入力データが生成される例を示す図である。逆多重化部203は、MMTパケット#1とMMTパケット#2とのペイロードデータを連結させることで、復号部204Aが、スライスセグメント1を復号するために必要なデータを生成する。逆多重化部203は、復号部204Bから復号部204Dについても、同様に入力データを生成する。つまり、逆多重化部203は、MMTパケット#1とMMTパケット#3とのペイロードデータを連結させることで、復号部204Bの入力データを生成する。逆多重化部203は、MMTパケット#1とMMTパケット#4とのペイロードデータを連結させることで、復号部204Cの入力データを生成する。逆多重化部203は、MMTパケット#1とMMTパケット#5とのペイロードデータを連結させることで、復号部204Dの入力データを生成する。
なお、逆多重化部203は、アクセスユニットデリミタ及びSEIなど、復号処理に必要ではないNALユニットを、MMTパケット#1のペイロードデータから除去し、復号処理に必要であるSPS及びPPSのNALユニットのみを分離してスライスセグメントのデータに付加してもよい。
図9に示すように符号化データがパケット化される場合には、逆多重化部203は、多重化レイヤにおいてアクセスユニットの先頭データを含むMMTパケット#1を1番目の
復号部204Aに出力する。また、逆多重化部203は、多重化レイヤにおいてアクセスユニットの先頭データを含むMMTパケットを解析し、SPS及びPPSのNALユニットを分離し、分離したSPS及びPPSのNALユニットを2番目以降のスライスセグメントのデータの各々に付加することで2番目以降の復号部の各々に対する入力データを生成する。
さらに、受信装置200が、MMTパケットのヘッダに含まれる情報を用いて、MMTペイロードに格納されるデータのタイプ、及び、ペイロードにスライスセグメントが格納されている場合のアクセスユニット内における当該スライスセグメントのインデックス番号を識別できることが望ましい。ここで、データのタイプとは、スライスセグメント前データ(アクセスユニット内で先頭スライスセグメントよりも前に配置されるNALユニットをまとめて、このように呼ぶことにする)、及び、スライスセグメントのデータのいずれである。MMTパケットに、スライスセグメントなどのMPUをフラグメント化した単位を格納する場合には、MFU(Media Fragment Unit)を格納するためのモードが用いられる。送信装置100は、本モードを用いる場合には、例えば、MFUにおけるデータの基本単位であるData Unitを、サンプル(MMTにおけるデータ単位であり、アクセスユニットに相当する)、又は、サブサンプル(サンプルを分割した単位)に設定できる。
このとき、MMTパケットのヘッダは、Fragmentation indicatorと呼ばれるフィールドと、Fragment counterと呼ばれるフィールドとを含む。
Fragmentation indicatorは、MMTパケットのペイロードに格納されるデータが、Data unitをフラグメント化したものであるかどうか、フラグメント化したものである場合には、当該フラグメントがData unitにおける先頭或いは最終のフラグメント、又は、先頭と最終とのどちらでもないフラグメントであるかを示す。言い換えると、あるパケットのヘッダに含まれるFragmentation indicatorは、(1)基本データ単位であるData unitに当該パケットのみが含まれる、(2)Data unitが複数のパケットに分割して格納され、かつ、当該パケットがData unitの先頭のパケットである、(3)Data unitが複数のパケットに分割して格納され、かつ、当該パケットがData unitの先頭及び最後以外のパケットである、及び、(4)Data unitが複数のパケットに分割して格納され、かつ、当該パケットがData unitの最後のパケットである、のいずれであるかを示す識別情報である。
Fragment counterは、MMTパケットに格納されるデータが、Data unitにおいて何番目のフラグメントに相当するかを示すインデックス番号である。
従って、送信装置100が、MMTにおけるサンプルをData unitに設定し、スライスセグメント前データ、及び、各スライスセグメントを、それぞれData unitのフラグメント単位に設定することで、受信装置200は、MMTパケットのヘッダに含まれる情報を用いて、ペイロードに格納されるデータのタイプが識別できる。つまり、逆多重化部203は、MMTパケットのヘッダを参照して、各復号部204A〜204Dへの入力データを生成できる。
図11は、サンプルがData unitに設定され、スライスセグメント前データ、及び、スライスセグメントがData unitのフラグメントとしてパケット化される場合の例を示す図である。
スライスセグメント前データ、及びスライスセグメントは、フラグメント#1からフラグメント#5までの5つのフラグメントに分割される。各フラグメントは個別のMMTパケットに格納される。このとき、MMTパケットのヘッダに含まれるFragmentation indicator及びFragment counterの値は図示する通りである。
例えば、Fragment indicatorは、2進数の2ビット値である。Data unitの先頭であるMMTパケット#1のFragment indicator、最終であるMMTパケット#5のFragment indicator、及び、その間のパケットであるMMTパケット#2からMMTパケット#4までのFragment indicatorは、それぞれ別の値に設定される。具体的には、Data unitの先頭であるMMTパケット#1のFragment indicatorは01に設定され、最終であるMMTパケット#5のFragment indicatorは11に設定され、その間のパケットであるMMTパケット#2からMMTパケット#4までのFragment indicatorは10に設定される。なお、Data unitに一つのMMTパケットのみが含まれる場合には、Fragment indicatorは00に設定される。
また、Fragment counterは、MMTパケット#1においてはフラグメントの総数である5から1を減算した値である4であり、後続パケットにおいては順に1ずつ減少し、最後のMMTパケット#5においては0である。
従って、受信装置200は、スライスセグメント前データを格納するMMTパケットを、Fragment indicator、及び、Fragment counterのいずれかを用いて識別できる。また、受信装置200は、N番目のスライスセグメントを格納するMMTパケットを、Fragment counterを参照することにより識別できる。
MMTパケットのヘッダは、別途、Data unitが属するMovie FragmentのMPU内でのシーケンス番号と、MPU自体のシーケンス番号と、Data unitが属するサンプルのMovie Fragment内におけるシーケンス番号とを含む。逆多重化部203は、これらを参照することで、Data unitが属するサンプルを一意に決定できる。
更に、逆多重化部203は、Data unit内におけるフラグメントのインデックス番号をFragment counterなどから決定できるため、パケットロスが発生した場合にも、フラグメントに格納されるスライスセグメントを一意に特定できる。例えば、逆多重化部203は、図11に示すフラグメント#4がパケットロスにより取得できなかった場合でも、フラグメント#3の次に受信したフラグメントがフラグメント#5であることが分かるため、フラグメント#5に格納されるスライスセグメント4を、復号部204Cではなく復号部204Dに正しく出力することができる。
なお、パケットロスが発生しないことが保証される伝送路が使用される場合には、逆多重化部203は、MMTパケットのヘッダを参照してMMTパケットに格納されるデータのタイプ、又はスライスセグメントのインデックス番号を決定せずに、到着したパケットを周期的に処理すればよい。例えば、アクセスユニットが、スライス前データ、及び、4つのスライスセグメントの計5つのMMTパケットにより送信される場合には、受信装置200は、復号を開始するアクセスユニットのスライス前データを決定した後は、受信したMMTパケットを順に処理することで、スライス前データ、及び、4つのスライスセグメントのデータを順に取得できる。
以下、パケット化の変形例について説明する。
スライスセグメントは、必ずしもアクセスユニットの面内を水平方向と垂直方向との両方に分割されたものである必要はなく、図1に示すように、アクセスユニットを水平方向のみに分割されたものでもよいし、垂直方向のみに分割されたものでもよい。
また、水平方向のみにアクセスユニットが分割される場合には、タイルが用いられる必要はない。
また、アクセスユニットにおける面内の分割数は任意であり、4つに限定されるものではない。但し、スライスセグメント及びタイルの領域サイズはH.265などの符号化規格の下限以上である必要がある。
送信装置100は、アクセスユニットにおける面内の分割方法を示す識別情報を、MMTメッセージ、又はTSのデスクリプタなどに格納してもよい。例えば、面内における水平方向と垂直方向との分割数とをそれぞれ示す情報が格納されてもよい。または、図3に示すように水平方向及び垂直方向にそれぞれ2等分されている、又は、図1に示すように水平方向に4等分されているなど、分割方法に対して固有の識別情報が割り当てられてもよい。例えば、図3に示すようにアクセスユニットが分割されている場合は、識別情報はモード1を示し、図1に示すようにアクセスユニットが分割されている場合には、識別情報はモード1を示す。
また、面内の分割方法に関連する符号化条件の制約を示す情報が、多重化レイヤに含まれてもよい。例えば、1つのスライスセグメントが1つのタイルから構成されること示す情報が用いられてもよい。または、スライスセグメント或いはタイルの復号時に動き補償を行う場合の参照ブロックが、画面内の同一位置のスライスセグメント或いはタイルに制限される、又は、隣接スライスセグメントにおける所定の範囲内のブロックに限定されることなどを示す情報が用いられてもよい。
また、送信装置100は、動画像の解像度に応じて、アクセスユニットを複数のスライスセグメントに分割するかどうかを切替えてもよい。例えば、送信装置100は、処理対象の動画像が4K2Kの解像度の場合には面内の分割を行わずに、処理対象の動画像が8K4Kの場合にはアクセスユニットを4つに分割してもよい。8K4Kの動画像の場合の分割方法を予め規定しておくことにより、受信装置200は、受信する動画像の解像度を取得することで、面内の分割の有無、及び分割方法を決定し、復号動作を切替えることができる。
また、受信装置200は、面内の分割の有無を、MMTパケットのヘッダを参照することにより検出できる。例えば、アクセスユニットが分割されない場合には、MMTのData unitがサンプルに設定されていれば、Data unitのフラグメントは行われない。従って、受信装置200は、MMTパケットのヘッダに含まれるFragment counterの値が常にゼロの場合には、アクセスユニットは分割されないと判定できる。または、受信装置200は、Fragmentation indicatorの値が常に01であるかどうかを検出してもよい。受信装置200は、Fragmentation indicatorの値が常に01の場合もアクセスユニットは分割されないと判定できる。
また、受信装置200は、アクセスユニットにおける面内の分割数と復号部の数とが一致しない場合にも対応できる。例えば、受信装置200が、8K2Kの符号化データを実時間で復号できる2つの復号部204A及び204Bを備える場合には、逆多重化部203は、復号部204Aに対して、8K4Kの符号化データを構成する4つのスライスセグメントのうちの2つを出力する。
図12は、図8に示すようにMMTパケット化されたデータが、2つの復号部204A及び204Bに入力される場合の動作例を示す図である。ここで、受信装置200は、復号部204A及び204Bにおける復号結果を、そのまま統合して出力できることが望ましい。よって、逆多重化部203は、復号部204A及び204Bの各々の復号結果が空間的に連続するように、復号部204A及び204Bの各々に出力するスライスセグメントを選択する。
また、逆多重化部203は、動画像の符号化データの解像度又はフレームレートなどに応じて、使用する復号部を選択してもよい。例えば、受信装置200が4K2Kの復号部を4つ備える場合には、入力画像の解像度が8K4Kであれば、受信装置200は、4つ全ての復号部を用いて復号処理を行う。また、受信装置200は、入力画像の解像度が4K2Kであれば1つの復号部のみを用いて復号処理を行う。または、逆多重化部203は、面内が4つに分割されていても、8K4Kを単一の復号部により実時間で復号できる場合には、全ての分割単位を統合して一つの復号部に出力する。
さらに、受信装置200は、フレームレートを考慮して使用する復号部を決定してもよい。例えば、受信装置200が、解像度が8K4Kである場合に実時間で復号可能なフレームレートの上限が60fpsである復号部を2台備える場合に、8K4Kで120fpsの符号化データが入力されるケースがある。このとき、面内が4つの分割単位から構成されるとすると、図12の例と同様に、スライスセグメント1とスライスセグメント2とが復号部204Aに入力され、スライスセグメント3とスライスセグメント4とが復号部204Bに入力される。各々の復号部204A及び204Bは、8K2K(解像度が8K4Kの半分)であれば120fpsまで実時間で復号できるため、これら2台の復号部204A及び204Bにより復号処理が行われる。
また、解像度及びフレームレートが同一であっても、符号化方式におけるプロファイル、或いはレベル、又は、H.264或いはH.265など符号化方式自体が異なると処理量が異なる。よって、受信装置200は、これらの情報に基づいて使用する復号部を選択してもよい。なお、受信装置200は、放送又は通信により受信した符号化データを全て復号することができない場合、又は、ユーザーが選択した領域を構成する全てのスライスセグメント又はタイルが復号できない場合には、復号部の処理範囲内で復号可能なスライスセグメント又はタイルを自動的に決定してもよい。または、受信装置200は、ユーザーが復号する領域を選択するためのユーザインタフェースを提供してもよい。このとき、受信装置200は、全て領域を復号できないことを示す警告メッセージを表示してもよいし、復号可能な領域、スライスセグメント又はタイルの個数を示す情報を表示してもよい。
また、上記方法は、同一符号化データのスライスセグメントを格納するMMTパケットが、放送及び通信など複数の伝送路を用いて送信及び受信される場合にも適用できる。
また、送信装置100は、分割単位の境界を目立たなくするために、各スライスセグメントの領域がオーバーラップするように符号化を行ってもよい。図13に示す例では、8K4Kのピクチャが4つのスライスセグメント1〜4に分割される。スライスセグメント1〜3の各々は、例えば、8K×1.1Kであり、スライスセグメント4は8K×1Kである。また、隣接するスライスセグメントは互いにオーバーラップする。こうすることで、点線で示す4分割した場合の境界においては、符号化時の動き補償が効率的に実行できるため、境界部分の画質が向上する。このように、境界部分の画質劣化が低減される。
この場合、表示部205は、8K×1.1Kの領域から、8K×1Kの領域を切り出し、得られた領域を統合する。なお、送信装置100は、スライスセグメントがオーバーラップして符号化されているかどうか、及び、オーバーラップの範囲を示す情報を、多重化レイヤ、又は、符号化データ内に含めて、別途送信してもよい。
なお、タイルが使用される場合にも、同様の手法を適用可能である。
以下、送信装置100の動作の流れを説明する。図14は、送信装置100の動作例を示すフローチャートである。
まず、符号化部101は、ピクチャ(アクセスユニット)を複数の領域である複数のスライスセグメント(タイル)に分割する(S101)。次に、符号化部101は、複数のスライスセグメントの各々を独立して復号が可能なように符号化することで、複数のスライスセグメントの各々に対応する符号化データを生成する(S102)。なお、符号化部101は、複数のスライスセグメントを単一の符号化部で符号化してもよし、複数の符号化部で並列処理してもよい。
次に、多重化部102は、符号化部101で生成された複数の符号化データを、複数のMMTパケットに格納することで、複数の符号化データを多重化する(S103)。具体的には、図8及び図9に示すように、多重化部102は、一つのMMTパケットに、異なるスライスセグメントに対応する符号化データが格納されないように、複数の符号化データを複数のMMTパケットに格納する。また、多重化部102は、図8に示すように、ピクチャ内の全ての復号単位に対して共通に用いられる制御情報を、複数の符号化データが格納される複数のMMTパケット#2〜#5とは異なるMMTパケット#1に格納する。ここで制御情報は、アクセスユニットデリミタ、SPS,PPS及びSEIのうち少なくとも一つを含む。
なお、多重化部102は、制御情報を、複数の符号化データが格納される複数のMMTパケットのいずれかと同じMMTパケットに格納してもよい。例えば、図9に示すように、多重化部102は、制御情報を、複数の符号化データが格納される複数のMMTパケットのうちの先頭のMMTパケット(図9のMMTパケット#1)に格納してもよい。
最後に、送信装置100は、複数のMMTパケットを送信する。具体的には、変調部103は、多重化により得られたデータを変調し、送信部104は、変調後のデータを送信する(S104)。
図15は、受信装置200の構成例を示すブロック図であり、図7に示す逆多重化部203及びその後段の構成を詳細に示す図である。図15に示すように、受信装置200は、さらに、復号命令部206を備える。また、逆多重化部203は、タイプ判別部211と、制御情報取得部212と、スライス情報取得部213と、復号データ生成部214とを備える。
以下、受信装置200の動作の流れを説明する。図16は、受信装置200の動作例を示すフローチャートである。ここでは、1つのアクセスユニットに対する動作を示す。複数のアクセスユニットの復号処理が実行される場合には、本フローチャートの処理が繰り返される。
まず、受信装置200は、は、例えば、送信装置100により生成された複数のパケット(MMTパケット)を受信する(S201)。
次に、タイプ判別部211は、受信パケットのヘッダを解析することで、受信パケットに格納されている符号化データのタイプを取得する(S202)。
次に、タイプ判別部211は、取得された符号化データのタイプに基づき、受信パケットに格納されているデータがスライスセグメント前データであるか、スライスセグメントのデータであるかを判定する(S203)。
受信パケットに格納されているデータがスライスセグメント前データである場合(S203でYes)、制御情報取得部212は、受信パケットのペイロードから処理対象のアクセスユニットのスライスセグメント前データを取得し、当該スライスセグメント前データをメモリに格納する(S204)。
一方、受信パケットに格納されているデータがスライスセグメントのデータである場合(S203でNo)、受信装置200は、受信パケットのヘッダ情報を用いて、当該受信パケットに格納されているデータが、複数の領域のうちいずれの領域の符号化データであるかを判定する。具体的には、スライス情報取得部213は、受信パケットのヘッダを解析することで、受信パケットに格納されているスライスセグメントのインデックス番号Idxを取得する(S205)。具体的には、インデックス番号Idxは、アクセスユニット(MMTにおけるサンプル)のMovie Fragment内におけるインデックス番号である。
なお、このステップS205の処理は、ステップS202においてまとめて行われてもよい。
次に、復号データ生成部214は、当該スライスセグメントを復号する復号部を決定する(S206)。具体的には、インデックス番号Idxと複数の復号部とは予め対応付けられており、復号データ生成部214は、ステップS205で取得されたインデックス番号Idxに対応する復号部を、当該スライスセグメントを復号する復号部を決定する。
なお、復号データ生成部214は、図12の例において説明したように、アクセスユニット(ピクチャ)の解像度、アクセスユニットの複数のスライスセグメント(タイル)への分割方法、及び受信装置200が備える複数の復号部の処理能力の少なくとも一つに基づき、当該スライスセグメントを復号する復号部を決定してもよい。例えば、復号データ生成部214は、アクセスユニットの分割方法を、MMTのメッセージ、又はTSのセクションなどのデスクリプタにおける識別情報に基づいて判別する。
次に、復号データ生成部214は、複数のパケットのいずれかに含まれる、ピクチャ内の全ての復号単位に対して共通に用いられる制御情報と、複数のスライスセグメントの複数の符号化データの各々とを結合することで、複数の復号部へ入力される複数の入力データ(結合データ)を生成する。具体的には、復号データ生成部214は、受信パケットのペイロードからスライスセグメントのデータを取得する。復号データ生成部214は、ステップS204でメモリに格納されたスライスセグメント前データと、取得されたスライスセグメントのデータとを結合することで、ステップS206で決定された復号部への入力データを生成する(S207)。
ステップS204又はS207の後、受信パケットのデータがアクセスユニットの最終データでない場合(S208でNo)、ステップS201以降の処理が再度行われる。つまり、アクセスユニットに含まれる全てのスライスセグメントに対応する、複数の復号部204A〜204Dへの入力データが生成されるまで、上記処理が繰り返される。
なお、パケットが受信されるタイミングは、図16に示すタイミングに限らず、予め又は順次複数のパケットが受信され、メモリ等に格納されてもよい。
一方、受信パケットのデータがアクセスユニットの最終データである場合(S208でYes)、復号命令部206は、ステップS207で生成された、複数の入力データを、対応する復号部204A〜204Dへ出力する(S209)。
次に、複数の復号部204A〜204Dは、アクセスユニットのDTSに従い、複数の入力データを並列に復号することで、複数の復号画像を生成する(S210)。
最後に、表示部205は、複数の復号部204A〜204Dで生成された複数の復号画像を結合することで表示画像を生成し、アクセスユニットのPTSに従い当該表示画像を表示する(S211)。
なお、受信装置200は、アクセスユニットのDTS及びPTSを、MPUのヘッダ情報、又は、Movie Fragmentのヘッダ情報を格納するMMTパケットのペイロードデータを解析することにより取得する。また、受信装置200は、多重化方式としてTSが使用されている場合にはPESパケットのヘッダからアクセスユニットのDTS及びPTSを取得する。受信装置200は、多重化方式としてRTPが使用されている場合にはRTPパケットのヘッダからアクセスユニットのDTS及びPTSを取得する。
また、表示部205は、複数の復号部の復号結果を統合する際に、隣接する分割単位の境界においてデブロックフィルタなどのフィルタ処理を行ってもよい。なお、単一の復号部の復号結果を表示する場合にはフィルタ処理は不要であるため、表示部205は、複数の復号部の復号結果の境界にフィルタ処理を行うかどうかに応じて処理を切替えてもよい。フィルタ処理が必要かどうかは、分割の有無などに応じて予め規定されていてもよい。または、フィルタ処理が必要かどうかを示す情報が、多重化レイヤに別途格納されてもよい。また、フィルタ係数などフィルタ処理に必要な情報は、SPS、PPS、SEI、又はスライスセグメント内に格納される場合がある。復号部204A〜204D、又は逆多重化部203がSEIを解析することによりこれらの情報を取得し、取得された情報を表示部205に出力する。表示部205は、これらの情報を用いてフィルタ処理を行う。なお、これらの情報がスライスセグメント内に格納される場合には、復号部204A〜204Dがこれらの情報を取得することが望ましい。
なお、上記説明では、フラグメントに格納されるデータの種類がスライスセグメント前データとスライスセグメントとの2種類である場合の例を示したが、データの種類は3種類以上であってもよい。この場合には、ステップS203においてタイプに応じた場合分けが行われる。
また、送信装置100は、スライスセグメントのデータサイズが大きい場合にスライスセグメントをフラグメント化してMMTパケットに格納してもよい。つまり、送信装置100は、スライスセグメント前データ及びスライスセグメントをフラグメント化してもよい。この場合に、図11に示したパケット化の例のようにアクセスユニットとData unitとを等しく設定すると以下の問題が生じる。
例えばスライスセグメント1が3つのフラグメントに分割される場合、スライスセグメント1がFragment counter値が1から3の3つのパケットに分割して送信される。また、スライスセグメント2以降では、Fragment counter値が4以上となり、Fragment counterの値とペイロードに格納されるデータとの対応付けが取れなくなる。従って、受信装置200は、MMTパケットのヘッダの情報から、スライスセグメントの先頭データを格納するパケットを特定できない。
このような場合には、受信装置200は、MMTパケットのペイロードのデータを解析して、スライスセグメントの開始位置を特定してもよい。ここで、H.264又はH.265においてNALユニットを多重化レイヤに格納する形式として、NALユニットヘッダの直前に特定のビット列からなるスタートコードが付加されるバイトストリームフォーマットと呼ばれる形式と、NALユニットのサイズを示すフィールドが付加されるNALサイズフォーマットと呼ばれる形式との2種類がある。
バイトストリームフォーマットは、MPEG−2システム及びRTPなどにおいて用いられる。NALサイズフォーマットは、MP4、並びにMP4を使用するDASH及びMMTなどにおいて用いられる。
バイトストリームフォーマットが用いられる場合、受信装置200は、パケットの先頭データがスタートコードと一致するかどうかを解析する。受信装置200は、パケットの先頭データがスタートコードと一致していれば、その後に続くNALユニットヘッダからNALユニットのタイプを取得することで、当該パケットに含まれるデータがスライスセグメントのデータであるかどうかを検出できる。
一方、NALサイズフォーマットの場合には、受信装置200は、ビット列に基づいてNALユニットの開始位置を検出できない。従って、受信装置200は、NALユニットの開始位置を取得するために、アクセスユニットの先頭NALユニットから順に、NALユニットのサイズ分だけデータの読出すことでポインタをシフトさせていく必要がある。
但し、MMTにおけるMPU又はMovie Fragmentのヘッダにおいて、サブサンプル単位のサイズが示され、サブサンプルがスライス前データ又はスライスセグメントに対応する場合には、受信装置200は、サブサンプルのサイズ情報に基づいて各NALユニットの開始位置を特定できる。そのため、送信装置100は、サブサンプル単位の情報がMPU又はMovie Fragmentに存在するかどうかを示す情報を、MMTにおけるMPTなどの、受信装置200がデータの受信開始時に取得する情報に含めてもよい。
なお、MPUのデータはMP4フォーマットをベースに拡張したものである。MP4においては、H.264又はH.265のSPS及びPPSなどのパラメータセットをサンプルデータとして格納可能なモードと、格納できないモードとがある。また、このモードを特定するための情報がSampleEntryのエントリ名として示される。格納可能なモードが用いられており、パラメータセットがサンプルに含まれる場合には、受信装置200は、上述した方法によりパラメータセットを取得する。
一方、格納できないモードが用いられている場合には、パラメータセットは、SampleEntry内のDecoder Specific Informationとして格納される、又は、パラメータセット用のストリームを用いて格納される。ここで、パラメータセット用のストリームは一般的には使用されていないので、送信装置100は、Decoder Specific Informationにパラメータセットを格納することが望ましい。この場合には、受信装置200は、MMTパケットにおいてMPUのメタデータ、又は、Movie Fragmentのメタデータとしてとして送信されるSampleEntryを解析して、アクセスユニットが参照するパラメータセットを取得する。
パラメータセットがサンプルデータとして格納される場合には、受信装置200は、SampleEntryを参照せずにサンプルデータのみを参照すれば復号に必要なパラメータセットが取得できる。このとき、送信装置100は、SampleEntryにパラメータセットを格納しなくてもよい。こうすることで、送信装置100は、異なるMPUにおいて同一のSampleEntryを用いることができるので、MPU生成時の送信装置100の処理負荷を低減できる。さらに、受信装置200がSampleEntry内のパラメータセットを参照する必要がなくなるというメリットがある。
または、送信装置100は、SampleEntryにデフォルトのパラメータセットを1つ格納し、アクセスユニットが参照するパラメータセットをサンプルデータに格納してもよい。従来のMP4においては、SampleEntryにパラメータセットを格納するのが一般的であったため、SampleEntryにパラメータセットが存在しない場合、再生を停止する受信装置が存在する可能性がある。上記の方法を用いることで、この問題を解決できる。
または、送信装置100は、デフォルトのパラメータセットとは異なるパラメータセットが使用される場合にのみ、サンプルデータにパラメータセットを格納してもよい。
なお、両モード共に、パラメータセットをSampleEntryに格納することは可能であるため、送信装置100は、パラメータセットを常にVisualSampleEntryに格納し、受信装置200は常にVisualSampleEntryからパラメータセットを取得してもよい。
なお、MMT規格においては、Moov及びMoofなどMP4のヘッダ情報は、MPUメタデータ、或いはムービーフラグメントメタデータとして伝送されるが、送信装置100は、MPUメタデータ、および、ムービーフラグメントメタデータを必ずしも送信しなくてもよい。さらに、受信装置200は、ARIB(Association of Radio Industries and Businesses)規格のサービス、アセットのタイプ、又は、MPUメタの伝送有無などに基づいて、サンプルデータ内にSPS及びPPSが格納されるかどうかを判定することも可能である。
図17は、スライスセグメント前データ及び各スライスセグメントが、それぞれ異なるData unitに設定される場合の例を示す図である。
図17に示す例では、スライスセグメント前データ、及びスライスセグメント1からスライスセグメント4までのデータサイズは、それぞれLength#1からLength#5である。MMTパケットのヘッダに含まれるFragmentation indicator、Fragment counter、及び、Offsetの各フィールド値は図中に示す通りである。
ここで、Offsetは、ペイロードデータが属するサンプル(アクセスユニット又はピクチャ)の符号化データの先頭から、当該MMTパケットに含まれるペイロードデータ(符号化データ)の先頭バイトまでのビット長(オフセット)を示すオフセット情報である。なお、Fragment counterの値はフラグメントの総数から1を減算した値から開始するとして説明するが、他の値から開始してもよい。
図18は、Data unitがフラグメント化される場合の例を示す図である。図18に示す例では、スライスセグメント1が3つのフラグメントに分割され、それぞれMMTパケット#2からMMTパケット#4に格納される。このときも、各フラグメントのデータサイズを、それぞれLength#2_1からLength#2_3とすると、各フィールドの値は図中に示す通りである。
このように、スライスセグメントなどのデータ単位がData unitに設定される場合、アクセスユニットの先頭、及びスライスセグメントの先頭は、MMTパケットヘッダのフィールド値に基づいて以下のように決定できる。
Offsetの値が0であるパケットにおけるペイロードの先頭は、アクセスユニットの先頭である。
Offsetの値が0とは異なる値であり、かつ、Fragmentation indcatorno値が00又は01であるパケットのペイロードの先頭が、スライスセグメントの先頭である。
また、Data unitのフラグメント化が発生せず、パケットロスも発生しない場合には、受信装置200は、アクセスユニットの先頭を検出した後に取得したスライスセグメントの数に基づいて、MMTパケットに格納されるスライスセグメントのインデックス番号を特定できる。
また、スライスセグメント前データのData unitがフラグメント化される場合においても、同様に、受信装置200は、アクセスユニット、及びスライスセグメントの先頭を検出できる。
また、パケットロスが発生した場合、又は、スライスセグメント前データに含まれるSPS、PPS及びSEIが別々のData unitに設定された場合においても、受信装置200は、MMTヘッダの解析結果に基づいてスライスセグメントの先頭データを格納したMMTパケットを特定し、その後、スライスセグメントのヘッダを解析することで、ピクチャ(アクセスユニット)内におけるスライスセグメント又はタイルの開始位置を特定できる。スライスヘッダの解析に係る処理量は小さく、処理負荷は問題とならない。
このように、複数のスライスセグメントの複数の符号化データの各々は、1以上のパケットに格納されるデータの単位である基本データ単位(Data unit)と一対一で対応付けられている。また、複数の符号化データの各々は、1以上のMMTパケットに格納される。
各MMTパケットのヘッダ情報は、Fragmentation indicator(識別情報)及びOffset(オフセット情報)を含む。
受信装置200は、受信装置200は、値が00又は01であるFragmentation indicatorが含まれるヘッダ情報を有するパケットに含まれるペイロードデータの先頭を、各スライスセグメントの符号化データの先頭であると判定する。具体的には、値が0でないOffsetと、値が00又は01であるFragmentation indicatorとが含まれるヘッダ情報を有するパケットに含まれるペイロードデータの先頭を、各スライスセグメントの符号化データの先頭であると判定する。
また、図17の例では、Data unitの先頭は、アクセスユニットの先頭、又は、スライスセグメントの先頭のいずれかであり、Fragmentation indicatorの値は00又は01である。さらに、受信装置200は、NALユニットのタイプを参照して、Data Unitの先頭がアクセスユニットデリミタ、又は、スライスセグメントのどちらであるかを判定することで、Offsetを参照せずに、アクセスユニットの先頭、又は、スライスセグメントの先頭を検出することも可能である。
このように、送信装置100が、NALユニットの先頭が必ずMMTパケットのペイロードの先頭から開始されるようにパケット化を行うことで、スライスセグメント前データが複数のData unitに分割される場合も含めて、受信装置200は、Fragmentation indicator及びNALユニットヘッダを解析することにより、アクセスユニット、又は、スライスセグメントの先頭を検出できる。NALユニットのタイプは、NALユニットヘッダの先頭バイトに存在する。従って、受信装置200は、MMTパケットのヘッダ部を解析する際に、追加で1バイト分のデータを解析することによりNALユニットのタイプが取得できる。 オーディオの場合には、受信装置200は、アクセスユニットの先頭が検出できればよく、Fragmentation indicatorの値が00又は01であるかどうかに基づいて判定すればよい。
また、上述したように、分割復号ができるように符号化された符号化データをMPEG−2 TSのPESパケットに格納する場合には、送信装置100は、data alignment記述子を用いることが可能である。以下、符号化データのPESパケットへの格納方法の例について詳細に説明する。
例えば、HEVCにおいては、送信装置100は、data alignment記述子を用いることにより、PESパケットに格納されるデータがアクセスユニット、スライスセグメント、及び、タイルのいずれであるかを示すことができる。HEVCにおけるアラインメントのタイプは、次のように規定されている。
アラインメントのタイプ=8は、HEVCのスライスセグメントを示す。アラインメントのタイプ=9は、HEVCのスライスセグメント又はアクセスユニットを示す。アラインメントのタイプ=12は、HEVCのスライスセグメント又はタイルを示す。
よって、送信装置100は、例えば、タイプ9を用いることで、PESパケットのデータがスライスセグメント又はスライスセグメント前データのいずれかであることを示すことができる。スライスセグメントではなく、スライスを示すタイプも別途規定されているため、送信装置100は、スライスセグメントではなくスライスを示すタイプを使用してもよい。
また、PESパケットのヘッダに含まれるDTS及びPTSは、アクセスユニットの先頭データを含むPESパケットにおいてのみ設定される。従って、受信装置200は、タイプが9であり、かつ、PESパケットにDTS又はPTSのフィールドが存在すれば、PESパケットにはアクセスユニット全体、又は、アクセスユニットにおける先頭の分割単位が格納されると判定できる。
また、送信装置100は、アクセスユニットの先頭データを含むPESパケットを格納するTSパケットの優先度を示すtransport_priorityなどのフィールドを用いて、受信装置200がパケットに含まれるデータを区別できるようにしてもよい。また、受信装置200は、PESパケットのペイロードがアクセスユニットデリミタであるかどうかを解析することでパケットに含まれるデータを判定してもよい。また、PESパケットヘッダのdata_alignment_indicatorは、これらのタイプに従ってPESパケットにデータが格納されているかどうかを示す。このフラグ(data_alignment_indicator)が1にセットされていれば、PESパケットに格納されているデータはdata alignment記述子に示されるタイプに従うことが保証される。
また、送信装置100は、スライスセグメントなどの分割復号可能な単位でPESパケット化する場合にのみdata alignment記述子を使用してもよい。これにより、受信装置200は、data alignment記述子が存在する場合には、符号化データが分割復号可能な単位でPESパケット化されていると判断でき、data alignment記述子が存在しなければ、符号化データがアクセスユニット単位でPESパケット化されていると判断できる。なお、data_alignment_indicatorが1にセットされており、data alignment記述子が存在しない場合には、PESパケット化の単位がアクセスユニットであることはMPEG−2 TS規格において規定されている。
受信装置200は、PMT内にdata alignment記述子が含まれていれば、分割復号可能な単位でPESパケット化されていると判定し、パケット化された単位に基づいて、各復号部への入力データを生成することができる。また、受信装置200は、PMT内にdata alignment記述子が含まれておらず、番組情報、又はその他の記述子の情報に基づいて、符号化データの並列復号が必要と判定される場合には、スライスセグメントのスライスヘッダなどを解析することにより、各復号部への入力データを生成する。また、符号化データを単一の復号部により復号可能である場合には、受信装置200は、アクセスユニット全体のデータを当該の復号部で復号する。なお、符号化データがスライスセグメント又はタイルなどの分割復号可能な単位から構成されるかどうかを示す情報が、PMTの記述子などにより別途示されている場合、受信装置200は、当該記述子の解析結果に基づいて符号化データを並列復号できるかどうかを判定してもよい。
また、PESパケットのヘッダに含まれるDTS及びPTSは、アクセスユニットの先頭データを含むPESパケットにおいてのみ設定されるため、アクセスユニットが分割されてPESパケット化される場合には、2番目以降のPESパケットにはアクセスユニットのDTS及びPTSを示す情報は含まれない。従って、復号処理を並列に行う場合、各復号部204A〜204D及び表示部205は、アクセスユニットの先頭データを含むPESパケットのヘッダに格納されるDTS及びPTSを使用する。
(実施の形態2)
実施の形態2では、MMTにおいて、NALサイズフォーマットのデータをMP4フォーマットベースのMPUに格納する方法について説明する。なお、以下では、一例として、MMTに用いられるMPUへの格納方法について説明するが、このような格納方法は、同じMP4フォーマットベースであるDASHにも適用可能である。
[MPUへの格納方法]
MP4フォーマットでは、複数のアクセスユニットをまとめて、一つのMP4ファイルに格納する。MMTに用いられるMPUは、メディア毎のデータが一つのMP4ファイルに格納され、データには任意の数のアクセスユニットを含むことができる。MPUは、単体で復号可能な単位であるため、例えば、MPUにはGOP単位のアクセスユニットが格納される。
図19は、MPUの構成を示す図である。MPUの先頭は、ftyp、mmpu、及びmoovであり、これらは、まとめてMPUメタデータと定義される。moovには、ファイルに共通の初期化情報、及びMMTヒントトラックが格納される。
また、moofには、サンプルやサブサンプル毎の初期化情報及びサイズ、提示時刻(PTS)及び復号時刻(DTS)を特定できる情報(sample_duration、sample_size、sample_composition_time_offset)、並びにデータの位置を示すdata_offsetなどが格納される。
また、複数のアクセスユニットは、それぞれサンプルとしてmdat(mdat box)に格納される。moof及びmdatのうちサンプルを除くデータは、ムービーフラグメントメタデータ(以降では、MFメタデータと記載する。)と定義され、mdatのサンプルデータは、メディアデータと定義される。
図20は、MFメタデータの構成を示す図である。図20に示されるように、MFメタデータは、より詳細には、moof box(moof)の、type、length、及びdataと、mdat box(mdat)のtype及びlengthとからなる。
アクセスユニットをMP4データに格納する際には、H.264やH.265のSPS、及び、PPSなどのパラメータセットをサンプルデータとして格納可能なモードと、格納できないモードがある。
ここで、上記格納できないモードにおいては、パラメータセットは、moovにおけるSampleEntryのDecoder Specific Informationに格納される。また、上記格納できるモードにおいては、パラメータセットは、サンプル内に含められる。
MPUメタデータ、MFメタデータ、及びメディアデータは、それぞれMMTペイロードに格納され、これらのデータを識別可能な識別子として、MMTペイロードのヘッダには、フラグメントタイプ(FT)が格納される。FT=0は、MPUメタデータであることを示し、FT=1は、MFメタデータであることを示し、FT=2はメディアデータであることを示す。
なお、図19では、MPUメタデータ単位及びMFメタデータ単位がデータユニットとしてMMTペイロードに格納される例が図示されているが、ftyp、mmpu、moov、及びmoofなどの単位がデータユニットとして、データユニット単位でMMTペイロードに格納されてもよい。同様に、図19では、サンプル単位がデータユニットとしてMMTペイロードに格納される例が図示されている。しかしながら、サンプル単位やNALユニット単位でデータユニットが構成され、このようなデータユニットがデータユニット単位でMMTペイロードに格納されてもよい。このようなデータユニットがさらにフラグメントされた単位でMMTペイロードに格納されてもよい。
[従来の送信方法と課題]
従来、複数のアクセスユニットをMP4フォーマットにカプセル化する際、MP4に格納されるサンプルがすべて揃った時点でmoov及びmoofが作成されていた。
MP4フォーマットを放送などを用いてリアルタイムに伝送する場合、例えば1つのMP4ファイルに格納するサンプルがGOP単位であるとすると、GOP単位の時間サンプルが蓄積された後にmoov及びmoofが作成されるため、カプセル化に伴う遅延が発生する。このような送信側におけるカプセル化により、End−to−End遅延が常にGOP単位時間分長くなる。これにより、リアルタイムにサービスの提供を行うことが困難となり、特に、ライブコンテンツが伝送される場合には視聴者に対するサービスの劣化につながる。
図21は、データの送信順序を説明するための図である。MMTを放送に適用する場合、図21の(a)に示されるように、MPUの構成順にMMTパケットに載せて送信(MMTパケット#1、#2、#3、#4、#5、#6の順に送信)すると、MMTパケットの送信にはカプセル化による遅延が生じる。
このカプセル化による遅延を防ぐために、図21の(b)に示されるように、MPUメタデータ及びMFメタデータなどのMPUヘッダ情報を送らない(パケット#1及び#2を送信せず、パケット#3−#6をこの順に送信する)方法が提案されている。また、図20の(c)に示されるように、MPUヘッダ情報の作成を待たずにメディアデータを先に送信し、メディアデータの送信後にMPUヘッダ情報を送信する(#3−#6、#1、#2の順で送信する)方法が考えられる。
受信装置は、MPUヘッダ情報が送信されていない場合、MPUヘッダ情報を用いずに復号する、また、受信装置は、MPUヘッダ情報がメディアデータに対して後送りされている場合には、MPUヘッダ情報の取得を待ってから復号する。
しかしながら、従来のMP4準拠の受信装置では、MPUヘッダ情報を用いずに復号することが保証されていない。また、受信装置が特別な処理によりMPUヘッダを用いずに復号を行う場合に従来の送信方法を用いると復号処理が煩雑となり、実時間の復号が困難となる可能性が高い。また、受信装置がMPUヘッダ情報の取得を待ってから復号を行う場合には、受信装置がヘッダ情報を取得するまでの間メディアデータのバッファリングが必要であるが、バッファモデルが規定されておらず、復号が保証されていなかった。
そこで、実施の形態2に係る送信装置は、図20の(d)に示されるように、MPUメタデータに共通の情報のみを格納することで、MPUメタデータをメディアデータより先に送信する。そして、実施の形態2に係る送信装置は、生成に遅延が発生するMFメタデータをメディアデータより後に送信する。これにより、メディアデータの復号を保証できる送信方法或いは受信方法を提供する。
以下、図21の(a)−(d)の各送信方法を用いた場合の受信方法について説明する。
図21に示される各送信方法では、まず、MPUメタデータ、MFUメタデータ、メディアデータの順にMPUデータを構成する。
MPUデータを構成した後、送信装置が図21の(a)に示されるように、MPUメタデータ、MFメタデータ、メディアデータの順にデータを送信する場合、受信装置は、下記の(A−1)及び(A−2)のいずれかの方法で復号を行うことができる。
(A−1)受信装置は、MPUヘッダ情報(MPUメタデータ及びMFメタデータ)を取得後、MPUヘッダ情報を用いてメディアデータを復号する。
(A−2)受信装置は、MPUヘッダ情報を用いずに、メディアデータを復号する。
このような方法はいずれも、送信側でカプセル化による遅延が発生するが、受信装置において、MPUヘッダ取得のためにメディアデータをバッファリングする必要がない利点がある。バッファリングをしない場合、バッファリングのためのメモリの搭載の必要はなく、さらにバッファリング遅延は発生しない。また、(A−1)の方法は、MPUヘッダ情報を用いて復号を行うため、従来の受信装置にも適用可能ある。
送信装置が図21の(b)に示されるように、メディアデータのみを送信する場合、受信装置は下記の(B−1)の方法で復号を行うことができる。
(B−1)受信装置は、MPUヘッダ情報を用いずに、メディアデータを復号する。
また、図示しないが、図21の(b)のメディアデータの送信よりも先にMPUメタデータが送信されている場合、下記の(B−2)の方法で復号を行うことができる。
(B−2)受信装置は、MPUメタデータを用いてメディアデータを復号する。
上記(B−1)及び(B−2)の方法はいずれも、送信側でカプセル化による遅延が発生せず、かつ、MPUヘッダ取得のためにメディアデータをバッファリングする必要がない点が利点である。しかしながら、(B−1)及び(B−2)の方法はいずれも、MPUヘッダ情報を用いた復号を行わないため、復号に特別な処理が必要となる可能性がある。
送信装置が図21の(c)に示されるように、メディアデータ、MPUメタデータ、MFメタデータの順にデータを送信する場合、受信装置は下記の(C−1)及び(C−2)のいずれかの方法で復号を行うことができる。
(C−1)受信装置は、MPUヘッダ情報(MPUメタデータ及びMFメタデータ)を取得後、メディアデータを復号する。
(C−2)受信装置は、MPUヘッダ情報を用いずに、メディアデータを復号する。
上記(C−1)の方法が用いられる場合は、MPUヘッダ情報の取得のためにメディアデータをバッファリングする必要がある。これに対し、上記(C−2)の方法が用いられる場合は、MPUヘッダ情報の取得のためのバッファリングを行う必要はない。
また、上記(C−1)及び(C−2)のいずれの方法も、送信側においてカプセル化による遅延は発生しない。また、(C−2)の方法は、MPUヘッダ情報を用いないため、特別な処理が必要となる可能性がある。
送信装置が、図21の(d)に示されるように、MPUメタデータ、メディアデータ、MFメタデータの順にデータを送信する場合、受信装置は、下記の(D−1)及び(D−2)のいずれかの方法で復号を行うことができる。
(D−1)受信装置は、MPUメタデータを取得後、さらにMFメタデータを取得し、その後、メディアデータを復号する。
(D−2)受信装置は、MPUメタデータを取得後、MFメタデータを用いずにメディアデータを復号する。
上記(D−1)の方法が用いられる場合は、MFメタデータ取得のためにメディアデータをバッファリングする必要があるが、上記(D−2)の方法の場合は、MFメタデータ取得のためのバッファリングを行う必要はない。
上記(D−2)の方法は、MFメタデータを用いた復号を行わないため、特別な処理が必要となる可能性がある。
以上説明したように、MPUメタデータ及びMFメタデータを用いて復号できる場合は、従来のMP4受信装置でも復号できるというメリットがある。
なお、図21では、MPUデータは、MPUメタデータ、MFUメタデータ、メディアデータの順に構成されており、moofにおいては、この構成に基づいてサンプルやサブサンプル毎の位置情報(オフセット)が定められている。また、MFメタデータには、mdat boxにおけるメディアデータ以外のデータ(boxのサイズやタイプ)も含まれている。
このため、受信装置がMFメタデータに基づいてメディアデータを特定する場合には、受信装置は、データが送信された順番にかかわらず、MPUデータを構成した際の順番にデータを再構成した後、MPUメタデータのmoov或いはMFメタデータのmoofを用いて復号を行う。
なお、図21では、MPUデータは、MPUメタデータ、MFUメタデータ、メディアデータの順に構成されるが、図21とは異なる順番でMPUデータが構成され、位置情報(オフセット)が定められてもよい。
例えば、MPUデータがMPUメタデータ、メディアデータ、MFメタデータの順に構成され、MFメタデータにおいて負の位置情報(オフセット)が示されてもよい。この場合も、データが送信される順番にかかわらず、受信装置は、送信側においてMPUデータが構成された際の順番にデータを再構成した後、moov或いはmoofを用いて復号を行う。
なお、送信装置は、MPUデータを構成する際の順番を示す情報をシグナリングし、受信装置は、シグナリングされた情報に基づいてデータを再構成してもよい。
以上説明したように、受信装置は、図21の(d)に示されるように、パケット化されたMPUメタデータ、パケット化されたメディアデータ(サンプルデータ)、パケット化されたMFメタデータをこの順に受信する。ここで、MPUメタデータは、第1のメタデータの一例であり、MFメタデータは、第2のメタデータの一例である。
次に、受信装置は、受信されたMPUメタデータ、受信されたMFメタデータ、及び受信されたサンプルデータを含むMPUデータ(MP4フォーマットのファイル)を再構成する。そして、再構成されたMPUデータに含まれるサンプルデータを、MPUメタデータ及びMFメタデータを用いて復号する。MFメタデータは、送信側においてサンプルデータの生成後にのみ生成可能なデータ(例えば、mboxに格納されるlength)を含むメタデータである。
なお、上記受信装置の動作は、より詳細には、受信装置を構成する各構成要素によって行われる。例えば、受信装置は、上記データの受信を行う受信部と、上記MPUデータの再構成を行う再構成部と、上記MPUデータの復号を行う復号部とを備える。なお、受信部、生成部、及び復号部のそれぞれは、マイクロコンピュータ、プロセッサ、専用回路などによって実現される。
[ヘッダ情報を用いずに復号を行う方法]
次に、ヘッダ情報を用いずに復号を行う方法について説明する。ここでは、送信側でヘッダ情報を送るか送らないかにかかわらず、受信装置においてヘッダ情報を用いずに復号する方法を説明する。すなわち、この方法は、図21を用いて説明したいずれの送信方法を用いた場合においても適用可能である。ただし、一部の復号方法は、特定の送信方法の場合にのみ適用可能な復号方法である。
図22は、ヘッダ情報を用いずに復号を行う方法の例を示す図である。図22では、メディアデータのみが含まれるMMTペイロード及びMMTパケットのみが図示されており、MPUメタデータやMFメタデータが含まれるMMTペイロード及びMMTパケットは図示されていない。また、以下の図22の説明においては、同じMPUに属するメディアデータは連続して伝送されるものとする。また、メディアデータとしてペイロードにサンプルが格納されている場合を例に説明するが、以下の図22の説明においては、当然NALユニットが格納されていてもよいし、フラグメントされたNALユニットが格納されていてもよい。
メディアデータを復号するためには、受信装置は、まず、復号に必要な初期化情報を取得しなければならない。また、メディアがビデオであれば、受信装置は、サンプル毎の初期化情報を取得したり、ランダムアクセス単位であるMPUの開始位置を特定し、サンプル及びNALユニットの開始位置を取得しなければならない。また、受信装置は、それぞれサンプルの復号時刻(DTS)や提示時刻(PTS)を特定する必要がある。
そこで、受信装置は、例えば、下記の方法を用いてヘッダ情報を用いずに復号を行うことができる。なお、ペイロードにNALユニット単位またはNALユニットをフラグメントした単位が格納される場合は、下記説明において「サンプル」を、「サンプルにおけるNALユニット」に読み替えればよい。
<ランダムアクセス(=MPUの先頭サンプルを特定)>
ヘッダ情報が送信されない場合に、受信装置がMPUの先頭サンプルを特定するには、下記方法1と方法2がある。なお、ヘッダ情報が送信される場合には、方法3を用いることができる。
[方法1]受信装置は、MMTパケットヘッダにおいて、’RAP_flag=1’であるMMTパケットに含まれるサンプルを取得する。
[方法2]受信装置は、MMTペイロードヘッダにおいて、’sample number=0’であるサンプルを取得する。
[方法3]受信装置は、メディアデータの前及び後ろの少なくともどちらか一方に、MPUメタデータ及びMFメタデータの少なくともどちらか一方が送信されている場合、受信装置は、MMTペイロードヘッダにおけるフラグメントタイプ(FT)がメディアデータへ切り替わったMMTペイロードに含まれるサンプルを取得する。
なお、方法1及び方法2において、1つのペイロードに異なるMPUに属する複数のサンプルが混在する場合、どのNALユニットがランダムアクセスポイント(RAP_flag=1或いはsample number=0)であるか判定不能である。このため、1つのペイロードに異なるMPUのサンプルを混在させないといった制約、または、1つのペイロードに異なるMPUのサンプルが混在する場合は、最後(或いは最初)のサンプルがランダムアクセスポイントである場合に、RAP_flagを1とするといった制約などが必要である。
また、受信装置がNALユニットの開始位置を取得するためには、サンプルの先頭NALユニットから順に、NALユニットのサイズ分だけデータの読出しポインタをシフトさせていく必要がある。
データがフラグメントされている場合は、受信装置は、fragment_indicatorやfragment_numberを参照することで、データユニットを特定できる。
<サンプルのDTSの決定>
サンプルのDTSの決定方法には、下記方法1と方法2がある。
[方法1]受信装置は、予測構造に基づいて先頭サンプルのDTSを決定する。ただし、この方法には符号化データの解析が必要であり、実時間での復号が困難である可能性があるため、次の方法2が望ましい。
[方法2]受信装置は、先頭サンプルのDTSを別途送信し、送信された先頭サンプルのDTSを取得する。先頭サンプルのDTSの送信方法は、例えば、MPU先頭サンプルのDTSを、MMT−SIを用いて送信する方法や、サンプル毎のDTSをMMTパケットヘッダ拡張領域を用いて送信する方法などがある。なお、DTSは、絶対値でもよいし、PTSに対する相対値であってもよい。また、送信側において先頭サンプルのDTSが含まれているかどうかをシグナリングしてもよい。
なお、方法1、方法2ともに、以降のサンプルのDTSは、固定フレームレートであるとして算出する。
サンプル毎のDTSをパケットヘッダに格納する方法として、拡張領域を用いる以外に、MMTパケットヘッダにおける32bitのNTPタイムスタンプフィールドに、当該MMTパケットに含まれるサンプルのDTSを格納する方法がある。1つのパケットヘッダのビット数(32bit)でDTSを表現できない場合は、DTSは、複数のパケットヘッダを用いて表現されてもよい。また、DTSは、パケットヘッダのNTPタイムスタンプフィールドと拡張領域とを組み合わせて表現されてもよい。DTS情報が含まれない場合は既知の値(例えばALL0)とされる。
<サンプルのPTSの決定>
受信装置は、先頭サンプルのPTSを、MPUに含まれるアセット毎のMPUタイムスタンプ記述子から取得する。受信装置は、以降のサンプルPTSについては、固定フレームレートであるものとして、POC等のサンプルの表示順を示すパラメータなどから算出する。このように、ヘッダ情報を用いずにDTS、及びPTSを算出するためには、固定フレームレートによる送信が必須となる。
また、MFメタデータが送信されている場合、受信装置は、MFメタデータに示される先頭サンプルからのDTSやPTSの相対時刻情報と、MPUタイムスタンプ記述子に示されるMPU先頭サンプルのタイムスタンプの絶対値とからDTS及びPTSの絶対値を算出できる。
なお、符号化データ解析してDTS及びPTSを算出する際には、受信装置は、アクセスユニットに含まれるSEI情報を用いて算出してもよい。
<初期化情報(パラメータセット)>
[ビデオの場合]
ビデオの場合、パラメータセットは、サンプルデータに格納される。また、MPUメタデータ及びMFメタデータが送信されない場合は、サンプルデータのみを参照することにより復号に必要なパラメータセットを取得できることを保証する。
また、図21の(a)及び(d)のように、MPUメタデータがメディアデータよりも先に送信される場合、SampleEntryにはパラメータセットは格納しないと規定されてもよい。この場合、受信装置は、SampleEntryのパラメータセットは参照せずにサンプル内のパラメータセットのみを参照する。
また、MPUメタデータがメディアデータよりも先に送信される場合、SampleEntryにはMPUに共通のパラメータセットやデフォルトのパラメータセットが格納され、受信装置は、SampleEntryのパラメータセット及びサンプル内のパラメータセットを参照してもよい。SampleEntryにパラメータセットが格納されることにより、SampleEntryにパラメータセットが存在しないと再生できない従来の受信装置でも復号を行うことが可能となる。
[オーディオの場合]
オーディオの場合、復号にはLATMヘッダが必要であり、MP4では、LATMヘッダがサンプルエントリに含められることが必須である。しかし、ヘッダ情報が送信されない場合は、受信装置がLATMヘッダを取得することは困難であるため、別途SIなどの制御情報にLATMヘッダが含められる。なお、LATMヘッダは、メッセージ、テーブル、または記述子に含められてもよい。なお、LATMヘッダはサンプル内に含められることもある。
受信装置は、復号開始前にSIなどからLATMヘッダを取得し、オーディオの復号を開始する。或いは、図21の(a)及び図21の(d)に示されるように、MPUメタデータがメディアデータよりも先に送信される場合は、受信装置は、LATMヘッダをメディアデータより先に受信可能である。したがって、MPUメタデータがメディアデータよりも先に送信される場合は、従来の受信装置を用いても復号を行うことが可能となる。
<その他>
送信順序や送信順序のタイプは、MMTパケットヘッダやペイロードヘッダ、或いは、MPTやその他のテーブル、メッセージ、記述子などの制御情報として通知されてもよい。なお、ここでの送信順序のタイプとは、例えば、図21の(a)〜(d)の4つのタイプの送信順序であり、それぞれのタイプを識別するための識別子が復号開始前に取得できる場所に格納されればよい。
また、送信順序のタイプは、オーディオとビデオとで異なるタイプが用いられてもよいし、オーディオとビデオとで共通のタイプが用いられてもよい。具体的には、例えば、オーディオは、図21の(a)に示されるように、MPUメタデータ、MFメタデータ、メディアデータの順番で送信され、ビデオは、図21の(d)に示されるように、MPUメタデータ、メディアデータ、MFメタデータの順番で送信されてもよい。
以上説明したような方法により、受信装置は、ヘッダ情報を用いずに復号を行うことが可能である。また、MPUメタデータがメディアデータよりも先に送信されている場合(図21の(a)及び図21の(d))は、従来の受信装置でも復号を行うことが可能になる。
特に、MFメタデータがメディアデータより後に送信されること(図21の(d))により、カプセル化による遅延を発生させず、かつ従来の受信装置でも復号を行うことが可能となる。
[送信装置の構成及び動作]
次に、送信装置の構成及び動作について説明する。図23は、実施の形態2に係る送信装置のブロック図であり、図24は、実施の形態2に係る送信方法のフローチャートである。
図23に示されるように、送信装置15は、符号化部16と、多重化部17と、送信部18とを備える。
符号化部16は、符号化対象のビデオまたはオーディオを、例えば、H.265に従い符号化することで符号化データを生成する(S10)。
多重化部17は、符号化部16により生成された符号化データを多重化(パケット化)する(S11)。具体的には、多重化部17は、MP4フォーマットのファイルを構成する、サンプルデータ、MPUメタデータ、及び、MFメタデータ、のそれぞれをパケット化する。サンプルデータは、映像信号または音声信号が符号化されたデータであり、MPUメタデータは、第1のメタデータの一例であり、MFメタデータは、第2のメタデータの一例である。第1のメタデータと第2のメタデータとは、いずれもサンプルデータの復号に用いられるメタデータであるが、これらの違いは、第2のメタデータがサンプルデータの生成後にのみ生成可能なデータを含むことである。
ここで、サンプルデータの生成後にのみ生成可能なデータは、例えば、MP4フォーマットにおけるmdatに格納されるサンプルデータ以外のデータ(mdatのヘッダ内のデータ。つまり、図20に図示されるtype及びlength。)である。ここで、第2のメタデータには、このデータのうち少なくとも一部であるlengthが含まれればよい。
送信部18は、パケット化したMP4フォーマットのファイルを送信する(S12)。送信部18は、例えば、図21の(d)に示される方法でMP4フォーマットのファイルを送信する。つまり、パケット化されたMPUメタデータ、パケット化されたサンプルデータ、パケット化されたMFメタデータをこの順に送信する。
なお、符号化部16、多重化部17、及び送信部18のそれぞれは、マイクロコンピュータ、プロセッサ、または専用回路などによって実現される。
[受信装置の構成]
次に、受信装置の構成及び動作について説明する。図25は、実施の形態2に係る受信装置のブロック図である。
図25に示されるように、受信装置20は、パケットフィルタリング部21と、送信順序タイプ判別部22と、ランダムアクセス部23と、制御情報取得部24と、データ取得部25と、PTS、DTS算出部26と、初期化情報取得部27と、復号命令部28と、復号部29と、提示部30とを備える。
[受信装置の動作1]
まず、メディアがビデオである場合に、受信装置20が、MPU先頭位置及びNALユニット位置を特定するための動作について説明する。図26は、受信装置20のこのような動作のフローチャートである。なお、ここでは、MPUデータの送信順序タイプは、送信装置15(多重化部17)によってSI情報に格納されているとする。
まず、パケットフィルタリング部21は、受信したファイルに対してパケットフィルタリングを行う。送信順序タイプ判別部22は、パケットフィルタリングによって得られるSI情報を解析して、MPUデータの送信順序タイプを取得する(S21)。
次に、送信順序タイプ判別部22は、パケットフィルタリング後のデータにMPUヘッダ情報(MPUメタデータ或いはMFメタデータの少なくとも一方)が含まれているか否かを判定(判別)する(S22)。MPUヘッダ情報(が含まれている場合(S22でYes)には、ランダムアクセス部23は、MMTペイロードヘッダのフラグメントタイプがメディアデータへ切り替わることを検出することで、MPU先頭サンプルを特定する(S23)。
一方、MPUヘッダ情報が含まれていない場合(S22でNo)には、ランダムアクセス部23は、MMTパケットヘッダのRAP_flag或いはMMTペイロードヘッダのsample numberに基づいてMPU先頭サンプルを特定する(S24)。
また、送信順序タイプ判別部22は、パケットフィルタリングされたデータに、MFメタデータが含まれているか否かを判定する(S25)。MFメタデータが含まれていると判定された場合(S25でYes)には、データ取得部25は、MFメタデータに含まれるサンプル、サブサンプルのオフセット、及びサイズ情報に基づいてNALユニットを読み出すことによりNALユニットを取得する(S26)。一方、MFメタデータが含まれていないと判定された場合(S25でNo)には、データ取得部25は、サンプルの先頭NALユニットから順に、NALユニットのサイズのデータを読み出すことでNALユニットを取得する(S27)。
なお、受信装置20は、ステップS22において、MPUヘッダ情報が含まれていると判別された場合でも、ステップS23ではなくステップS24の処理を用いてMPU先頭サンプルを特定してもよい。また、MPUヘッダ情報が含まれていると判別された場合に、ステップS23の処理とステップS24の処理とが併用されてもよい。
また、受信装置20は、ステップS25において、MFメタデータが含まれていると判定された場合でも、ステップS26の処理を用いずにステップS27の処理を用いてNALユニットを取得してもよい。また、MFメタデータが含まれていると判定された場合に、ステップS23の処理とステップS24の処理とが併用されてもよい。
また、ステップS25においてMFメタデータが含まれていると判定された場合であって、MFデータがメディアデータより後に送信されている場合が想定される。この場合、受信装置20は、メディアデータをバッファリングし、MFメタデータを取得するまで待ってからステップS26の処理を行ってもよいし、受信装置20は、MFメタデータの取得を待たずにステップS27の処理を行うか否かを判定してもよい。
例えば、受信装置20は、メディアデータをバッファリングすることが可能なバッファサイズのバッファを保有しているかどうかに基づいてMFメタデータの取得を待つか否かを判定してもよい。また、受信装置20は、End−to−End遅延が小さくなるかどうかに基づいて、MFメタデータの取得を待つか否かを判定してもよい。また、受信装置20は、主としてステップS26の処理を用いて復号処理を実施し、パケットロスなどが発生したときの処理モードの場合にステップS27の処理を用いてもよい。
なお、送信順序タイプがあらかじめ定められている場合は、ステップS22及びステップS26は省略されてもよいし、この場合、受信装置20は、バッファサイズやEnd−to−End遅延を考慮して、MPU先頭サンプルの特定方法、及び、NALユニットの特定方法を決定してもよい。
なお、あらかじめ送信順序タイプが既知である場合は、受信装置20において送信タイプ順序判別部22は、不要である。
また、上記図26においては説明されないが、復号命令部28は、PTS、DTS算出部26において算出されたPTS及びDTS、初期化情報取得部27において取得された初期化情報に基づいて、データ取得部において取得されたデータを復号部29に出力する。復号部29は、データを復号し、提示部30は、復号後のデータを提示する。
[受信装置の動作2]
次に、受信装置20が、送信順序タイプに基づいて初期化情報を取得し、初期化情報に基づいてメディアデータを復号する動作について説明する。図27は、このような動作のフローチャートである。
まず、パケットフィルタリング部21は、受信したファイルに対してパケットフィルタリングを行う。送信順序タイプ判別部22は、パケットフィルタリングによって得られるSI情報を解析し、送信順序タイプを取得する(S301)。
次に、送信タイプ順序判別部22は、MPUメタデータが送信されているか否かを判定する(S302)。MPUメタデータが送信されていると判定された場合(S302でYes)、送信タイプ順序判別部22は、ステップS301の解析の結果、MPUメタデータがメディアデータより先に送信されているかどうかを判定する(S303)。MPUメタデータがメディアデータより先に送信されている場合(S303でYes)、初期化情報取得部27は、MPUメタデータに含まれる共通な初期化情報、及び、サンプルデータの初期化情報に基づいてメディアデータを復号する(S304)。
一方、MPUメタデータがメディアデータより後に送信されていると判定された場合(S303でNo)には、データ取得部25は、MPUメタデータが取得されるまでメディアデータをバッファリングし(S305)、MPUメタデータが取得された後にステップS304の処理を実施する。
また、ステップS302において、MPUメタデータが送信されていないと判定された場合(S302でNo)には、初期化情報取得部27は、サンプルデータの初期化情報のみに基づいてメディアデータを復号する(S306)。
なお、送信側においてサンプルデータの初期化情報に基づく場合のみメディアデータの復号が保証されている場合は、ステップS302、及びステップS303の判定に基づく処理を行わず、ステップS306の処理が用いられる。
また、受信装置20は、ステップS305の前に、メディアデータをバッファリングするか否かの判定を行ってもよい。この場合、受信装置20は、メディアデータをバッファリングすると判定した場合にはステップS305の処理へ移行し、メディアデータをバッファリングしないと判定した場合には、ステップS306の処理へ移行する。メディアデータをバッファリングするか否かの判定は、受信装置20のバッファサイズ、占有量に基づいて行われてもよいし、例えば、End−to−End遅延の小さい方が選択されるなど、End−to−End遅延を考慮して判定が行われてもよい。
[受信装置の動作3]
ここでは、MFメタデータがメディアデータよりも後に送信される場合(図21の(c)、及び図21の(d))における送信方法や受信方法の詳細について説明する。以下では、図21の(d)の場合を例に説明する。なお、送信においては、図21の(d)の方法のみが用いられ、送信順序タイプのシグナリングは行われないものとする。
先述のとおり、図21の(d)に示されるように、MPUメタデータ、メディアデータ、MFメタデータの順でデータを送信する場合、
(D−1)受信装置20は、MPUメタデータを取得した後、さらにMFメタデータを取得した後にメディアデータを復号する。
(D−2)受信装置20は、MPUメタデータを取得した後、MFメタデータを用いずにメディアデータを復号する。
の2通りの復号方法が可能である。
ここで、D−1は、MFメタデータ取得のためのメディアデータのバッファリングが必要となるが、MPUヘッダ情報を用いて復号を行うことができるため、従来のMP4準拠の受信装置で復号可能となる。また、D−2は、MFメタデータ取得のためのメディアデータのバッファリングを必要としないが、MFメタデータを用いて復号できないため、復号に特別な処理が必要となる。
また、図21の(d)の方法は、MFメタデータは、メディアデータより後で送信されるため、カプセル化による遅延は発生せず、End−to−End遅延を低減できるという利点を有する。
受信装置20は、受信装置20の能力や、受信装置20が提供するサービス品質に応じて、上記2通りの復号方法を選択することができる。
送信装置15は、受信装置20における復号動作において、バッファのオーバーフローやアンダーフローの発生を低減して復号できることを保証しなければならない。D−1の方法を用いて復号する場合のデコーダモデルを規定するための要素としては、例えば下記のパラメータを用いることができる。
・MPUを再構成するためのバッファサイズ(MPUバッファ)
例えば、バッファサイズ=最大レート×最大MPU時間×αであり、最大レートとは、符号化データのプロファイル、レベルの上限レート+MPUヘッダのオーバーヘッドである。また、最大MPU時間は、1MPU=1GOP(ビデオ)とした場合のGOPの最大時間長である。
ここで、オーディオは、上記ビデオに共通のGOP単位としてもよいし、別の単位でもよい。αは、オーバーフローを起こさないためのマージンであり、最大レート×最大MPU時間に対して、乗算されてもよいし、加算されてもよい。乗算される場合は、α≧1であり、加算される場合は、α≧0である。
・MPUバッファへデータが入力されてから復号されるまでの復号遅延時間の上限。(MPEG−TSのSTDにおけるTSTD_delay)
例えば、送信時には、最大MPU時間、及び、復号遅延時間の上限値を考慮して、受信機におけるMPUデータの取得完了時刻<=DTSとなるようにDTSが設定される。
また、送信装置15は、D−1の方法を用いて復号する場合のデコーダモデルに従い、DTS及びPTSを付与してもよい。これにより、送信装置15は、D−1の方法を用いて復号を行う受信装置の当該復号を保証すると同時に、D−2の方法を用いて復号が行われる場合に必要な補助情報を送信してもよい。
例えば、送信装置15は、D−2の方法を用いて復号する場合のデコーダバッファにおけるプリバッファリング時間をシグナリングすることにより、D−2の方法を用いて復号する受信装置の動作を保証できる。
プリバッファリング時間は、メッセージ、テーブル、記述子などのSI制御情報に含められてもよいし、MMTパケット、MMTペイロードのヘッダに含められてもよい。また、符号化データ内のSEIが上書きされてもよい。D−1の方法を用いて復号するためのDTS及びPTSは、MPUタイムスタンプ記述子、SamplleEntryに格納され、D−2の方法を用いて復号するためのDTS及びPTS、またはプリバッファリング時間がSEIにおいて記述されてもよい。
受信装置20は、当該受信装置20がMPUヘッダを用いたMP4準拠の復号動作のみに対応している場合は、復号方法D−1を選択し、D−1およびD−2の両方に対応している場合は、どちらか一方を選択してもよい。
送信装置15は、一方(本説明では、D−1)の復号動作を保証できるようにDTS、及びPTSを付与し、さらに一方の復号動作を補助するための補助情報を送信してもよい。
また、D−2の方法が用いられる場合、D−1の方法が用いられる場合と比較して、MFメタデータのプリバッファリングに起因する遅延により、End−to−End遅延が大きくなる可能性が高い。したがって、受信装置20は、End−to−End遅延を小さくしたいときは、D−2の方法を選択して復号してもよい。例えば、受信装置20は、常にEnd−to−End遅延を削減したい場合に、常にD−2の方法を用いてもよい。また、受信装置20は、ライブコンテンツや、選局、ザッピング動作など、低遅延で提示したい、低遅延提示モードで動作している場合のみD−2の方法を用いてもよい。
図28は、このような受信方法のフローチャートである。
まず、受信装置20は、MMTパケットを受信し、MPUデータを取得する(S401)。そして、受信装置20(送信順序タイプ判別部22)は、当該プログラムを低遅延提示モードで提示するかどうかの判定を行う(S402)。
プログラムを低遅延提示モードで提示しない場合(S402でNo)、受信装置20(ランダムアクセス部23及び初期化情報取得部27)は、ヘッダ情報を用いてランダムアクセス、初期化情報を取得する(S405)。また、受信装置20(PTS、DTS算出部26、復号命令部28、復号部29、提示部30)は、送信側で付与されたPTS、DTSに基づいてデコード及び提示処理を行う(S406)。
一方、プログラムを低遅延提示モードで提示する場合(S402でYes)、受信装置20(ランダムアクセス部23及び初期化情報取得部27)は、ヘッダ情報を用いない復号方法を用いて、ランダムアクセス、初期化情報を取得する(S403)。また、受信装置20は、送信側で付与されたPTS、DTS及びヘッダ情報を用いずに復号するための補助情報に基づいてデコード及び提示処理を行う(S404)。なお、ステップS403、及びステップS404において、MPUメタデータを用いて処理が行われてもよい。
[補助データを用いた送受信方法]
以上、MFメタデータがメディアデータより後に送信される場合(図21の(c)、及び図21の(d)の場合)における送受信動作について説明した。次に、送信装置15がMFメタデータの一部の機能を有する補助データを送信することにより、より早く復号を開始でき、End−to−End遅延を削減できる方法について説明する。ここでは、図21の(d)に示される送信方法に基づいて補助データがさらに送信される例について説明されるが、補助データを用いる方法は、図21の(a)〜(c)に示される送信方法においても適用可能である。
図29の(a)は、図21の(d)に示される方法を用いて送信されたMMTパケットを示す図である。つまり、データは、MPUメタデータ、メディアデータ、MFメタデータの順で送信される。
ここで、サンプル#1、サンプル#2、サンプル#3、サンプル#4はメディアデータに含まれるサンプルである。なお、ここではメディアデータは、サンプル単位でMMTパケットに格納される例について説明されるが、メディアデータは、NALユニット単位でMMTパケットに格納されてもよいし、NALユニットを分割した単位で格納されてもよい。なお、複数のNALユニットがアグリゲーションされてMMTパケットに格納される場合もある。
先述のD−1で説明したように、図21の(d)に示される方法の場合、つまり、MPUメタデータ、メディアデータ、MFメタデータの順でデータが送信される場合、MPUメタデータを取得後、さらにMFメタデータを取得し、その後、メディアデータを復号する方法がある。このようなD−1の方法では、MFメタデータ取得のためのメディアデータのバッファリングが必要となるが、MPUヘッダ情報を用いて復号が行われるため、従来のMP4準拠の受信装置にもD−1の方法は適用可能である利点がある。一方で、受信装置20は、MFメタデータ取得まで、復号開始を待たなければならない欠点がある。
これに対し、図29の(b)に示されるように、補助データを用いる手法においては、MFメタデータより先に、補助データが送信される。
MFメタデータには、ムービーフラグメントに含まれる全てのサンプルのDTSやPTS、オフセットやサイズを示す情報が含まれている。これに対し、補助データには、ムービーフラグメントに含まれるサンプルのうち、一部のサンプルのDTSやPTS、オフセットやサイズを示す情報が含まれる。
例えば、MFメタデータには、すべてのサンプル(サンプル#1−サンプル#4)の情報が含まれるのに対し、補助データには一部のサンプル(サンプル#1−#2)の情報が含まれる。
図29の(b)に示される場合は、補助データが用いられることでサンプル#1、及びサンプル#2の復号が可能となるため、D−1の送信方法に対して、End−to−Ent遅延が小さくなる。なお、補助データには、どのようにサンプルの情報が組み合わされて含められてもよいし、補助データは、繰り返し送信されてもよい。
例えば、図29の(c)において、Aのタイミングで補助情報を送信する場合は、送信装置15は、補助情報にサンプル#1の情報を含め、Bのタイミングで補助情報を送信する場合は、補助情報にサンプル#1及びサンプル#2の情報を含める。送信装置15は、Cのタイミングで補助情報を送信する場合は、補助情報にはサンプル#1、サンプル#2、及びサンプル#3の情報を含める。
なお、MFメタデータには、サンプル#1、サンプル#2、サンプル#3、及び、サンプル#4の情報(ムービーフラグメントの中の全サンプルの情報)が含まれる。
補助データは、必ずしも生成後、ただちに送信される必要はない。
なお、MMTパケットやMMTペイロードのヘッダにおいては、補助データが格納されていることを示すタイプが指定される。
例えば、補助データがMMTペイロードにMPUモードを用いて格納される場合は、fragment_typeフィールド値(例えば、FT=3)として、補助データであることを示すデータタイプが指定される。補助データは、moofの構成に基づくデータであってもよいし、その他の構成であってもよい。
補助データが、MMTペイロードに制御信号(記述子、テーブル、メッセージ)として格納される場合は、補助データであることを示す記述子タグ、テーブルID、及びメッセージIDなどが指定される。
また、MMTパケットやMMTペイロードのヘッダにPTSまたはDTSが格納されてもよい。
[補助データの生成例]
以下、送信装置がmoofの構成に基づいて補助データを生成する例について説明する。図30は、送信装置がmoofの構成に基づいて補助データを生成する例を説明するための図である。
通常のMP4では、図20に示されるように、ムービーフラグメントに対してmoofが作成される。moofには、ムービーフラグメントに含まれるサンプルのDTSやPTS、オフセットやサイズを示す情報が含まれている。
ここでは、送信装置15は、MPUを構成するサンプルデータの中で、一部のサンプルデータのみを用いてMP4(MP4ファイル)を構成し、補助データを生成する。
例えば、図30の(a)に示されるように、送信装置15は、MPUを構成するサンプル#1−#4のうち、サンプル#1のみを用いてMP4を生成し、そのうち、moof+mdatのヘッダを補助データとする。
次に、図30の(b)に示されるように、送信装置15は、MPUを構成するサンプル#1−#4のうち、サンプル#1及びサンプル#2を用いてMP4を生成し、そのうち、moof+mdatのヘッダを次の補助データとする。
次に、図30の(c)に示されるように、送信装置15は、MPUを構成するサンプル#1−#4のうち、サンプル#1、サンプル#2、及びサンプル#3を用いてMP4を生成し、そのうち、moof+mdatのヘッダを次の補助データとする。
次に、図30の(d)に示されるように、送信装置15は、MPUを構成するサンプル#1−#4のうち、すべてのMP4を生成し、そのうち、moof+mdatのヘッダがムービーフラグメントメタデータとなる。
なお、ここでは、送信装置15は、1サンプル毎に補助データを生成したが、Nサンプル毎に補助データを生成してもよい。Nの値は任意の数字であり、例えば、一つのMPUを送信するときに補助データをM回送信する場合、N=全サンプル/Mとされてもよい。
なお、moofにおけるサンプルのオフセットを示す情報は、後続のサンプル数のサンプルエントリ領域がNULL領域として確保された後のオフセット値であってもよい。
なお、MFメタデータをフラグメントする構成となるように補助データが生成されてもよい。
[補助データを用いた受信動作例]
図30で説明したように生成された補助データの受信について説明する。図31は、補助データの受信を説明するための図である。なお、図31の(a)では、MPUを構成するサンプル数は30であり、10サンプル毎に補助データが生成され、送信されるものとする。
図30の(a)において、補助データ#1には、サンプル#1−#10、補助データ#2には、サンプル#1−#20、MFメタデータには、サンプル#1−#30のサンプル情報がそれぞれ含まれる。
なお、サンプル#1−#10、サンプル#11−#20、及びサンプル#21−#30は、一つのMMTペイロードに格納されているが、サンプル単位やNAL単位で格納されてもよいし、フラグメントやアグリゲーションした単位で格納されてもよい。
受信装置20は、MPUメタ、サンプル、MFメタ、及び補助データのパケットをそれぞれ受信する。
受信装置20は、サンプルデータを受信順に(後ろに)連結し、最新の補助データを受信した後に、これまでの補助データを更新する。また、受信装置20は、最後に補助データをMFメタデータに置き換えることにより、完全なMPUを構成できる。
受信装置20は、補助データ#1を受信した時点では、図31の(b)の上段のようにデータを連結し、MP4を構成する。これにより、受信装置20は、MPUメタデータ、及び補助データ#1の情報を用いてサンプル#1−#10をパースすることができ、補助データに含まれるPTS、DTS、オフセット、及びサイズの情報に基づいて復号を行うことができる。
また、受信装置20は、補助データ#2を受信した時点では、図31の(b)の中段のようにデータを連結し、MP4を構成する。これにより、受信装置20は、MPUメタデータ、及び補助データ#2の情報を用いてサンプル#1−#20をパースすることができ、補助データに含まれるPTS、DTS、オフセット、サイズの情報に基づいて復号を行うことができる。
また、受信装置20は、MFメタデータを受信した時点では、図31の(b)の下段のようにデータを連結し、MP4を構成する。これにより、受信装置20は、MPUメタデータ、及びMFメタデータを用いてサンプル#1−#30をパースすることができ、MFメタデータに含まれるPTS、DTS、オフセット、及びサイズの情報に基づいて復号を行うことができる。
補助データが無い場合は、受信装置20は、MFメタデータの受信後にはじめてサンプルの情報を取得できるため、MFメタデータの受信後に復号を開始する必要があった。しかしながら、送信装置15が補助データを生成し、送信することにより、受信装置20は、MFメタデータの受信を待たずに、補助データを用いてサンプルの情報を取得できるため、復号開始時間を早めることができる。さらに、送信装置15が図30を用いて説明したmoofに基づく補助データを生成することにより、受信装置20は、従来のMP4のパーサーをそのまま利用し、パースすることが可能である。
また、新たに生成する補助データやMFメタデータは、過去に送信した補助データと重複するサンプルの情報を含む。このため、パケットロスなどにより過去の補助データを取得できなかった場合でも、新たに取得する補助データやMFメタデータを用いることで、MP4を再構成し、サンプルの情報(PTS、DTS、サイズ、及びオフセット)を取得することが可能である。
なお、補助データは、必ずしも過去のサンプルデータの情報を含む必要はない。たとえば、補助データ#1は、サンプルデータ#1−#10に対応し、補助データ#2は、サンプルデータ#11−#20に対応してもよい。例えば、図31の(c)に示されるように、送信装置15は、完全なMFメタデータをデータユニットとして、データユニットをフラグメントした単位を補助データとして順次送出してもよい。
また、送信装置15は、パケットロス対策のために、補助データを繰り返し伝送してもよいし、MFメタデータを繰り返し伝送してもよい。
なお、補助データが格納されるMMTパケット及びMMTペイロードには、MPUメタデータ、MFメタデータ、及びサンプルデータと同様に、MPUシーケンス番号、及びアセットIDが含まれる。
以上のような補助データを用いた受信動作について図32のフローチャートを用いて説明する。図32は、補助データを用いた受信動作のフローチャートである。
まず、受信装置20は、MMTパケットを受信し、パケットヘッダやペイロードヘッダを解析する(S501)。次に、受信装置20は、フラグメントタイプが補助データか、MFメタデータかを解析し(S502)、フラグメントタイプが補助データである場合には、過去の補助データを上書きして更新する(S503)。このとき、同一MPUの過去の補助データがない場合には、受信装置20は、受信した補助データをそのまま新規の補助データとする。そして、受信装置20は、MPUメタデータ、補助データ、及びサンプルデータに基づき、サンプルを取得し、復号を行う(S507)。
一方、フラグメントタイプがMFメタデータである場合には、受信装置20は、ステップS505において、過去の補助データをMFメタデータで上書きする(S505)。そして、受信装置20は、MPUメタデータ、MFメタデータ、及びサンプルデータに基づきサンプルを完全なMPUの形で取得し、復号を行う(S506)。
なお、図32において図示されないが、ステップS502において、受信装置20は、フラグメントタイプがMPUメタデータである場合には、データをバッファに格納し、サンプルデータである場合には、サンプル毎に後ろに連結したデータをバッファに格納する。
パケットロスにより補助データが取得できなかった場合は、受信装置20は、最新の補助データにより上書きを行うか、あるいは過去の補助データを用いることによりサンプルを復号することができる。
なお、補助データの送出周期及び送出回数はあらかじめ定められた値であってもよい。送出周期や回数(カウント、カウンドダウン)の情報は、データと一緒に送信されてもよい。例えば、データユニットヘッダに、送出周期、送出回数、及びinitial_cpb_removal_delayなどのタイムスタンプが格納されてもよい。
MPUの初めのサンプルの情報を含む補助データをinitial_cpb_removal_delayより先に1回以上送信することにより、CPBバッファモデルに従うことが可能となる。このとき、MPUタイムスタンプ記述子には、picture timing SEIに基づいた値を格納される。
なお、このような補助データが使用される受信動作における伝送方式は、MMT方式に限定されず、MPEG−DASHなど、ISOBMFFファイルフォーマットで構成されるパケットをストリーミング伝送する場合などに適用可能である。
[1つのMPUが複数のムービーフラグメントで構成される場合の送信方法]
上記図19以降の説明においては、1つのMPUが、1つのムービーフラグメントで構成されたが、ここでは、1つのMPUが複数のムービーフラグメントで構成される場合について説明する。図33は、複数のムービーフラグメントで構成されるMPUの構成を示す図である。
図33では、1つのMPUに格納されるサンプル(#1−#6)は、2つのムービーフラグメントに分けて格納される。第1のムービーフラグメントは、サンプル#1−#3に基づいて生成され、対応するmoofボックスが生成される。第2のムービーフラグメントは、サンプル#4−#6に基づいて生成され、対応するmoofボックスが生成される。
第1のムービーフラグメントにおけるmoofボックス及びmdatボックスのヘッダは、ムービーフラグメントメタデータ#1としてMMTペイロード及びMMTパケットに格納される。一方、第2のムービーフラグメントにおけるmoofボックス及びmdatボックスのヘッダは、ムービーフラグメントメタデータ#2としてMMTペイロード及びMMTパケットに格納される。なお、図33において、ムービーフラグメントメタデータが格納されたMMTペイロードは、ハッチングされている。
なお、MPUを構成するサンプル数や、ムービーフラグメントを構成するサンプル数は任意である。例えば、MPUを構成するサンプル数をGOP単位のサンプル数とし、GOP単位の2分の1のサンプル数をムービーフラグメントとして、2つのムービーフラグメントが構成されてもよい。
なお、ここでは、一つのMPUに2つのムービーフラグメント(moofボックス及びmdatボックス)を含む例を示すが、1つのMPUに含むムービーフラグメントは2つでなくとも、3つ以上であってもよい。また、ムービーフラグメントに格納するサンプルは等分したサンプル数でなく、任意のサンプル数に分割してもよい。
なお、図33では、MPUメタデータ単位及びMFメタデータ単位がそれぞれデータユニットとしてMMTペイロードに格納されている。しかしながら、送信装置15は、ftyp、mmpu、moov、及びmoofなどの単位をデータユニットとして、データユニット単位でMMTペイロードに格納してもよいし、データユニットをフラグメントした単位でMMTペイロードに格納してもよい。また、送信装置15は、データユニットをアグリゲーションした単位でMMTペイロードに格納してもよい。
また、図33では、サンプルは、サンプル単位でMMTペイロードに格納されている。しかしながら、送信装置15は、サンプル単位でなくともNALユニット単位または複数のNALユニットをまとめた単位でデータユニットを構成し、データユニット単位でMMTペイロードに格納してもよい。また、送信装置15は、データユニットをフラグメントした単位でMMTペイロードに格納してもよいし、データユニットをアグリゲーションした単位でMMTペイロードに格納してもよい。
なお、図33では、moof#1、mdat#1、moof#2、mdat#2の順にMPUが構成され、moof#1には、対応するmdat#1が後ろについているものとしてoffsetが付与されている。しかしながら、mdat#1がmoof#1より前についているものしてoffsetが付与されてもよい。ただし、この場合、moof+mdatの形でムービーフラグメントメタデータを生成することはできず、moof及びmdatのヘッダはそれぞれ別々に伝送される。
次に、図33で説明した構成のMPUが伝送される場合のMMTパケットの送信順序について説明する。図34は、MMTパケットの送信順序を説明するための図である。
図34の(a)は、図33に示されるMPUの構成順序でMMTパケットを送信する場合の送信順序を示している。図34の(a)は、具体的には、MPUメタ、MFメタ#1、メディアデータ#1(サンプル#1−#3)、MFメタ#2、メディアデータ#2(サンプル#4−#6)の順に送信する例を示す。
図34の(b)は、MPUメタ、メディアデータ#1(サンプル#1−#3)、MFメタ#1、メディアデータ#2(サンプル#4−#6)、MFメタ#2の順に送信する例を示す。
図34の(c)は、メディアデータ#1(サンプル#1−#3)、MPUメタ、MFメタ#1、メディアデータ#2(サンプル#4−#6)、MFメタ#2の順に送信する例を示す。
MFメタ#1は、サンプル#1−#3を用いて生成され、MFメタ#2はサンプル#4−#6を用いて生成される。このため、図34の(a)の送信方法が用いられる場合には、サンプルデータの送信にはカプセル化による遅延が発生する。
これに対し、図34の(b)及び図34の(c)の送信方法が用いられる場合には、MFメタを生成するのを待たずにサンプルを送信可能であるため、カプセル化による遅延は発生せず、End−to−End遅延を低減できる。
また、図34の(a)送信順序においても、1つのMPUが複数のムービーフラグメントに分割され、MFメタに格納されるサンプル数が図19の場合に対して小さくなっているため、図19の場合よりもカプセル化による遅延量を小さくすることができる。
なお、ここで示した方法以外に、例えば、送信装置15は、MFメタ#1及びMFメタ#2を連結し、MPUの最後にまとめて送信してもよい。この場合、異なるムービーフラグメントのMFメタがアグリゲーションされて、一つのMMTペイロードに格納されてもよい。また、異なるMPUのMFメタがまとめてアグリゲーションされてMMTペイロードに格納されてもよい。
[1つのMPUが複数のムービーフラグメントで構成される場合の受信方法]
ここでは、図34の(b)で説明した送信順序で送信されたMMTパケットを受信して復号する受信装置20の動作例について説明する。図35及び図36は、このような動作例を説明するための図である。
受信装置20は、図35に示されるような送信順序で送信された、MPUメタ、サンプル、及びMFメタを含むMMTパケットをそれぞれ受信する。サンプルデータは、受信順に連結される。
受信装置20は、MFメタ#1を受信した時刻であるT1に、図36の(1)に示されるようにデータを連結し、MP4を構成する。これにより、受信装置20は、MPUメタデータ、及びMFメタ#1の情報に基づいてサンプル#1−#3を取得することができ、MFメタに含まれるPTS、DTS、オフセット、及びサイズの情報に基づいて復号を行うことができる。
また、受信装置20は、MFメタ#2を受信した時刻であるT2に、図36の(2)に示されるようにデータを連結し、MP4を構成する。これにより、受信装置20は、MPUメタデータ、及びMFメタ#2の情報を基づいてサンプル#4−#6を取得することができ、MFメタのPTS、DTS、オフセット、及びサイズの情報に基づいて復号を行うことができる。また、受信装置20は、図36の(3)に示されるようにデータを連結し、MP4を構成することでMFメタ#1及びMFメタ#2の情報に基づいてサンプル#1−#6を取得してもよい。
1つのMPUが複数のムービーフラグメントに分割することで、MPUの中で初めのMFメタを取得するまでの時間が短縮されるため、復号開始時間を早めることができる。また、復号前のサンプルを蓄積するためのバッファサイズを小さくすることができる。
なお、送信装置15は、ムービーフラグメントにおける初めのサンプルを送信(或いは受信)してからムービーフラグメントに対応するMFメタを送信(或いは受信)するまでの時間が、エンコーダで指定されるinitial_cpb_removal_delayより短い時間となるようにムービーフラグメントの分割単位を設定してもよい。このように設定することにより、受信バッファはcpbバッファに従うことができ、低遅延の復号を実現できる。この場合、PTS及びDTSにはinitial_cpb_removal_delayに基づいた絶対時刻を用いることができる。
また、送信装置15は、ムービーフラグメントの分割を等間隔、或いは、後続のムービーフラグメントを前のムービーフラグメントより短い間隔で分割してもよい。これにより、受信装置20は、サンプルの復号前に必ず当該サンプルの情報を含むMFメタを受信することができ、連続した復号が可能となる。
PTS、及びDTSの絶対時刻の算出方法は、下記の2通りの方法を用いることができる。
(1)PTS及びDTSの絶対時刻は、MFメタ#1やMFメタ#2の受信時刻(T1或いはT2)、及びMFメタに含まれるPTS及びDTSの相対時刻に基づいて決定される。
(2)PTS及びDTSの絶対時刻は、MPUタイムスタンプ記述子等、送信側からシグナリングされる絶対時刻、及びMFメタに含まれるPTS及びDTSの相対時刻に基づいて決定される。
また、(2−A)送信装置15がシグナリングする絶対時刻は、エンコーダから指定されるinitial_cpb_removal_delayに基づいて算出された絶対時刻であってもよい。
また、(2−B)送信装置15がシグナリングする絶対時刻は、MFメタの受信時刻の予測値に基づいて算出された絶対時刻であってもよい。
なお、MFメタ#1及びMFメタ#2は、繰り返し伝送されてもよい。MFメタ#1及びMFメタ#2が繰り返し伝送されることにより、受信装置20は、MFメタをパケットロス等により取得できなかった場合でも、もう一度取得することができる。
ムービーフラグメントを構成するサンプルを含むMFUのペイロードヘッダには、ムービーフラグメントの順番を示す識別子を格納することができる。一方、ムービーフラグメントを構成するMFメタの順番を示す識別子はMMTペイロードには含まれない。このため、受信装置20は、packet_sequence_numberでMFメタの順番を識別する。或いは、送信装置15は、MFメタが何番目のムービーフラグメントに属するかを示す識別子を、制御情報(メッセージ、テーブル、記述子)、MMTヘッダ、MMTペイロードヘッダ、またはデータユニットヘッダに格納してシグナリングしてもよい。
なお、送信装置15は、MPUメタ、MFメタ、及びサンプルを、あらかじめ定められた所定の送信順序で送信し、受信装置20は、あらかじめ定められた所定の送信順序に基づいて受信処理を実施してもよい。また、送信装置15は、送信順序をシグナリングし、シグナリング情報に基づいて受信装置20が受信処理を選択(判断)してもよい。
上記のような受信方法について、図37を用いて説明する。図37は、図35及び図36で説明した受信方法の動作のフローチャートである。
まず、受信装置20は、MMTペイロードに示されるフラグメントタイプにより、ペイロードに含まれるデータが、MPUメタデータ、MFメタデータであるか、サンプルデータ(MFU)であるかを判別(識別)する(S601、S602)。データがサンプルデータである場合には、受信装置20は、サンプルをバッファリングし、当該サンプルに対応するMFメタデータの受信、及び復号開始を待つ(S603)。
一方、ステップS602において、データがMFメタデータである場合には、受信装置20は、MFメタデータよりサンプルの情報(PTS、DTS、位置情報、及びサイズ)を取得し、取得したサンプルの情報に基づいてサンプルを取得し、PTS及びDTSに基づいてサンプルを復号、提示する(S604)。
なお、図示されないが、データがMPUメタデータである場合、MPUメタデータには、復号に必要な初期化情報が含まれている。このため、受信装置20はこれを蓄積し、ステップS604においてサンプルデータの復号に用いる。
なお、受信装置20は、受信したMPUのデータ(MPUメタデータ、MFメタデータ、及びサンプルデータ)を蓄積装置に蓄積する場合には、図19または図33で説明した、MPUの構成に並び替えた後に、蓄積する。
なお、送信側においては、MMTパケットには、同一のパケットIDを持つパケットに対して、パケットシーケンス番号を付与する。このとき、MPUメタデータ、MFメタデータ、サンプルデータを含むMMTパケットが送信順序に並び替えられた後にパケットシーケンス番号が付与されてもよいし、並び替える前の順序でパケットシーケンス番号が付与されてもよい。
並び替える前の順序でパケットシーケンス番号が付与される場合には、受信装置20において、パケットシーケンス番号に基づいて、データをMPUの構成順序に並び替えることができ、蓄積が容易となる。
[アクセスユニットの先頭及びスライスセグメントの先頭を検出する方法]
MMTパケットヘッダ、及びMMTペイロードヘッダの情報に基づき、アクセスユニットの先頭やスライスセグメントの先頭を検出する方法について説明する。
ここでは、非VCL NALユニット(アクセスユニットデリミタ、VPS、SPS、PPS、及びSEIなど)を、まとめてデータユニットとしてMMTペイロードに格納する場合、及び、非VCL NALユニットをそれぞれデータユニットとし、データユニットをアグリゲーションして1つのMMTペイロードに格納する場合の2つの例を示す。
図38は、非VCL NALユニットを、個別にデータユニットとし、アグリゲーションする場合を示す図である。
図38の場合、アクセスユニットの先頭は、fragment_type値がMFUであるMMTパケットであり、かつ、aggregation_flag値が1であり、かつoffset値が0であるデータユニットを含むMMTペイロードの先頭データである。このとき、Fragmentation_indicator値は0である。
また、図38の場合、スライスセグメントの先頭は、fragment_type値がMFUであるMMTパケットであり、かつaggregation_flag値が0、fragmentation_indicator値が00或いは01であるMMTペイロードの先頭データである。
図39は、非VCL NALユニットを、まとめてデータユニットとする場合を示す図である。なお、パケットヘッダのフィールド値は、図17(または図18)で示した通りである。
図39の場合、アクセスユニットの先頭は、Offset値が0であるパケットにおけるペイロードの先頭データが、アクセスユニットの先頭となる。
また、図39の場合、スライスセグメントの先頭は、Offset値が0とは異なる値であり、fragmentation indicator値が00或いは01であるパケットのペイロードの先頭データが、スライスセグメントの先頭となる。
[パケットロスが発生した場合の受信処理]
通常、パケットロスが発生する環境において、MP4形式のデータを伝送する場合、受信装置20は、ALFEC(Application Layer FEC)や、パケット再送制御等によりパケットを復元する。
しかし、放送のようなストリーミングにおいてAL−FECを用いられない場合にパケットロスが発生した場合には、パケットを復元できない。
受信装置20は、パケットロスによりデータが失われた後、再び映像や音声の復号を再開させる必要がある。そのためには、受信装置20は、アクセスユニットやNALユニットの先頭を検出し、アクセスユニットやNALユニットの先頭から復号を開始する必要がある。
しかし、MP4形式のNALユニットの先頭には、スタートコードがついていないため、受信装置20は、ストリームを解析しても、アクセスユニットやNALユニットの先頭を検出できない。
図40は、パケットロスが発生した場合の受信装置20の動作のフローチャートである。
受信装置20は、MMTパケットやMMTペイロードのヘッダにおけるPacketsequence numberや、packet counter、fragment counterなどによりパケットロスを検出し(S701)、前後の関係から、どのパケットが消失したかを判定する(S702)。
受信装置20は、パケットロスが発生していないと判定された場合(S702でNo)には、MP4ファイルを構成し、アクセスユニット或いはNALユニットを復号する(S703)。
受信装置20は、パケットロスが発生したと判定された場合(S702でYes)には、パケットロスしたNALユニットに相当するNALユニットをダミーデータにより生成し、MP4ファイルを構成する(S704)。受信装置20は、NALユニットにダミーデータを入れる場合には、NALユニットのタイプにダミーデータであることを示す。
また、受信装置20は、図17、図18、図38、及び図39で説明した方法に基づいて、次のアクセスユニットやNALユニットの先頭を検出し、先頭データからデコーダに入力することで、復号を再開することができる(S705)。
なお、パケットロスが発生した場合には、受信装置20は、パケットヘッダに基づいて検出された情報に基づいてアクセスユニット及びNALユニットの先頭から復号を再開してもよいし、ダミーデータのNALユニットを含む、再構成されたMP4ファイルのヘッダ情報に基づいてアクセスユニット及びNALユニットの先頭から復号を再開してもよい。
受信装置20は、MP4ファイル(MPU)を蓄積する際には、パケットロスにより消失したパケットデータ(NALユニットなど)は、放送や通信から別途取得して蓄積(置き換え)してもよい。
このとき、受信装置20は、消失したパケットを通信から取得する場合には、消失したパケットの情報(パケットIDや、MPUシーケンス番号、パケットシーケンス番号、IPデータフロー番号、及びIPアドレスなど)をサーバーに通知し、当該パケットを取得する。受信装置20は、消失したパケットのみに限らず、消失したパケット前後のパケット群を同時に取得してもよい。
[ムービーフラグメントの構成方法]
ここでは、ムービーフラグメントの構成方法について詳細に説明する。
図33で説明されたように、ムービーフラグメントを構成するサンプル数、及び、1つのMPUを構成するムービーフラグメント数は、任意である。例えば、ムービーフラグメントを構成するサンプル数、及び、1つのMPUを構成するムービーフラグメント数は、固定的に定められた所定の数であってもよいし、動的に決定されてもよい。
ここで、送信側(送信装置15)において下記の条件を満たすようにムービーフラグメントが構成されることで、受信装置20における低遅延の復号を保証することができる。
その条件とは、以下の通りである。
送信装置15は、受信装置20が、任意のサンプル(Sample(i))の復号時刻(DTS(i))より前には必ず当該サンプルの情報を含むMFメタを受信できるように、サンプルデータを分割した単位をムービーフラグメントとしてMFメタを生成・送信する。
具体的には、送信装置15は、DTS(i)より前に符号化済のサンプル(i番目のサンプルを含む)を用いてムービーフラグメントを構成する。
低遅延の復号を保証するように、ムービーフラグメントを構成するサンプル数や1つのMPUを構成するムービーフラグメント数を動的に決定する方法としては、例えば、下記の方法が用いられる。
(1)復号開始時、GOP先頭のサンプルSample(0)の復号時刻DTS(0)は、initial_cpb_removal_delayに基づいた時刻である。送信装置は、DTS(0)より前の時刻に、符号化完了済のサンプルを用いて第1のムービーフラグメントを構成する。また、送信装置15は、第1のムービーフラグメントに対応するMFメタデータを生成し、DTS(0)より前の時刻に送信する。
(2)送信装置15は、以降のサンプルにおいても、上記の条件を満たすようにムービーフラグメントを構成する。
例えば、ムービーフラグメントの先頭のサンプルがk番目のサンプルであるとしたとき、k番目のサンプルを含むムービーフラグメントのMFメタは、k番目のサンプルの復号時刻DTS(k)までに送信される。送信装置15は、l番目のサンプルの符号化完了時刻がDTS(k)より前であり、(l+1)番目のサンプルの符号化完了時刻がDTS(k)より後である場合には、k番目のサンプルからl番目のサンプルを用いてムービーフラグメントを構成する。
なお、送信装置15は、k番目のサンプルから、l番目に満たないサンプルまでを用いてムービーフラグメントを構成してもよい。
(3)送信装置15は、MPU最後のサンプルの符号化完了後、残りのサンプルを用いてムービーフラグメントを構成し、当該ムービーフラグメントに対応するMFメタデータを生成し、送信する。
なお、送信装置15は、符号化完了済のすべてのサンプルを用いてムービーフラグメントを構成せずに、符号化完了済の一部のサンプルを用いてムービーフラグメントを構成してもよい。
なお、上記では、低遅延の復号を保証するように、上記条件に基づいて動的に、ムービーフラグメントを構成するサンプル数、及び、1つのMPUを構成するムービーフラグメント数が決定される例を示した。しかしながら、サンプル数及びムービーフラグメント数の決定方法は、このような方法に限定されるものではない。例えば、1つのMPUを構成するムービーフラグメント数が所定の値に固定され、上記条件を満たすようにサンプル数が決定されてもよい。また、1つのMPUを構成するムービーフラグメント数、及びムービーフラグメントを分割する時刻(或いはムービーフラグメントの符号量)が所定の値に固定され、上記条件を満たすようにサンプル数が決定されてもよい。
また、MPUが複数のムービーフラグメントに分割されている場合、MPUが複数のムービーフラグメントに分割されているかどうかを示す情報、分割されたムービーフラグメントの属性、または分割されたムービーフラグメントに対するMFメタの属性が送信されてもよい。
ここで、ムービーフラグメントの属性とは、ムービーフラグメントが、MPUの先頭のムービーフラグメントであるか、MPUの最後のムービーフラグメントであるか、それ以外のムービーフラグメントであるか等を示す情報である。
また、MFメタの属性とは、MFメタが、MPUの先頭のムービーフラグメントに対応するMFメタであるか、MPUの最後のムービーフラグメントに対応するMFメタであるか、それ以外のムービーフラグメントに対応するMFメタであるか等を示す情報である。
なお、送信装置15は、ムービーフラグメントを構成するサンプル数、及び、1つのMPUを構成するムービーフラグメント数を制御情報として格納し、送信してもよい。
[受信装置の動作]
上記のように構成されたムービーフラグメントに基づく受信装置20の動作について説明する。
受信装置20は、PTS及びDTSのそれぞれの絶対時刻を、MPUタイムスタンプ記述子等、送信側からシグナリングされる絶対時刻、及びMFメタに含まれるPTS及びDTSの相対時刻に基づいて決定する。
受信装置20は、MPUが複数のムービーフラグメントに分割されているかどうかの情報に基づいて、MPUが分割されている場合は、分割されたムービーフラグメントの属性に基づいて、下記のように処理をする。
(1)受信装置20は、ムービーフラグメントがMPUの先頭のムービーフラグメントである場合、MPUタイムスタンプ記述子に含まれる先頭サンプルのPTSの絶対時刻、及びMFメタに含まれるPTS及びDTSの相対時刻を用いて、PTS及びDTSの絶対時刻を生成する。
(2)受信装置20は、ムービーフラグメントがMPUの先頭のムービーフラグメントでない場合、MPUタイムスタンプ記述子の情報を用いずに、MFメタに含まれるPTS及びDTSの相対時刻を用いて、PTS及びDTSの絶対時刻を生成する。
(3)受信装置20は、ムービーフラグメントがMPUの最後のムービーフラグメントである場合、すべてのサンプルのPTS及びDTSの絶対時刻を算出後、PTS及びDTSの計算処理(相対時刻の加算処理)をリセットする。なお、リセット処理は、MPU先頭のムービーフラグメントにおいて実施してもよい。
受信装置20は、下記のようにムービーフラグメントが分割されているかどうかの判定を行ってもよい。また、受信装置20は、下記のようにムービーフラグメントの属性情報を取得してもよい。
例えば、受信装置20は、MMTPペイロードヘッダに示されるムービーフラグメントの順番を示す識別子movie_fragment_sequence_numberフィールド値に基づいて分割されているかどうかを判定してもよい。
具体的には、受信装置20は、1つのMPUに含まれるムービーフラグメントの数が1であり、かつ、movie_fragment_sequence_numberフィールド値が1であり、かつ、当該フィールド値が2以上の値が存在する場合に、当該MPUは複数のムービーフラグメントに分割されていると判定してもよい。
また、受信装置20は、1つのMPUに含まれるムービーフラグメントの数が1であり、かつ、movie_fragment_sequence_numberフィールド値が0であり、かつ、当該フィールド値が0以外の値が存在する場合に、当該MPUは複数のムービーフラグメントに分割されていると判定してもよい。
ムービーフラグメントの属性情報も同様に、movie_fragment_sequence_numberに基づいて判定されてもよい。
なお、movie_freagment_sequence_numberを用いずとも、一つMPUに含まれるムービーフラグメントやMFメタの送信をカウントすることにより、ムービーフラグメントが分割されているかどうかや、ムービーフラグメントの属性情報を判定されてもよい。
以上説明したような送信装置15および受信装置20の構成により、受信装置20は、MPUよりも短い間隔でムービーフラグメントメタデータを受信でき、低遅延での復号開始が可能となる。また、MP4パースの方法に基づいた復号処理を用いて、低遅延での復号を行うことが可能となる。
以上説明したようにMPUが複数のムービーフラグメントに分割されている場合の受信動作について、フローチャートを用いて説明する。図41は、MPUが複数のムービーフラグメントに分割されている場合の受信動作のフローチャートである。なお、このフローチャートは、図37のステップS604の動作をより詳細に図示するものである。
まず、受信装置20は、MMTPペイロードヘッダに示されるデータ種別に基づいて、データ種別がMFメタである場合に、MFメタデータを取得する(S801)。
次に、受信装置20は、MPUが複数のムービーフラグメントに分割されているかどうかを判定し(S802)、MPUが複数のムービーフラグメントに分割されている場合(S802でYes)には、受信したMFメタデータがMPU先頭のメタデータであるかどうかを判定する(S803)。受信装置20は、受信したMFメタデータがMPU先頭のMFメタデータである場合(S803でYes)には、MPUタイムスタンプ記述子に示されるPTSの絶対時刻、並びにMFメタデータに示されるPTS及びDTSの相対時刻よりPTS及びDTSの絶対時刻を算出し(S804)、MPUの最後のメタデータであるかどうかの判定を行う(S805)。
一方、受信装置20は、受信したMFメタデータがMPU先頭のMFメタデータでない場合(S803でNo)には、MPUタイムスタンプ記述子の情報は用いずMFメタデータに示されるPTS及びDTSの相対時刻を用いてPTS及びDTSの絶対時刻を算出し(S808)、ステップS805の処理に移行する。
ステップS805において、MPU最後のMFメタデータであると判定された場合(S805でYes)、受信装置20は、すべてのサンプルのPTS及びDTSの絶対時刻を算出後、PTS及びDTSの計算処理をリセットする。ステップS805においてMPU最後のMFメタデータでないと判定された場合(S805でNo)、受信装置20は処理を終了する。
また、ステップS802においてMPUが複数のムービーフラグメントに分割されていないと判定された場合(S802でNo)には、受信装置20は、MPUの後に送信されるMFメタデータに基づき、サンプルデータを取得し、PTS及びDTSを決定する(S807)。
そして、図示されないが、受信装置20は、最後に、決定したPTS及びDTSに基づいて復号処理、提示処理を実施する。
[ムービーフラグメントを分割したときに発生する課題、及び、その解決策]
これまで、ムービーフラグメントを分割することによりEnd−to−End遅延を短縮する方法について説明してきた。ここからは、ムービーフラグメントを分割したときに新たに発生する課題、及び、その解決策について説明する。
まず、背景として、符号化データにおけるピクチャ構造について説明する。図42は、時間スケーラビリティを実現する際の各TemporalIdにおけるピクチャの予測構造の例を示す図である。
MPEG−4 AVCやHEVC(High Efficiency Video Coding)などの符号化方式においては、他のピクチャから参照可能なBピクチャ(双方向参照予測ピクチャ)を用いることにより時間方向のスケーラビリティ(時間スケーラビリティ)が実現できる。
図42の(a)に示されるTemporalIdとは、符号化構造の階層の識別子であり、TemporalIdは、値が大きくなるほど深い階層であることを示す。四角のブロックはピクチャを示し、ブロック内のIxは、Iピクチャ(画面内予測ピクチャ)、Pxは、Pピクチャ(前方参照予測ピクチャ)、Bx及びbxは、Bピクチャ(双方向参照予測ピクチャ)を示す。Ix/Px/Bxのxは表示オーダーを示し、ピクチャを表示する順番を表わす。ピクチャ間の矢印は参照関係を示し、例えば、B4のピクチャはI0、B8を参照画像として予測画像を生成することを示す。ここで、一のピクチャが、自らのTemporalIdより大きいTemporalIdを持つ他のピクチャを参照画像として使うことは禁止されている。階層が規定されているのは時間スケーラビリティを持たせるためであり、例えば、図42において全てのピクチャを復号すると120fps(frame per second)の映像が得られるが、TemporalIdが0から3までの階層のみを復号すると60fpsの映像が得られる。
図43は、図42の各ピクチャにおける復号時刻(DTS)と表示時刻(PTS)との関係を示す図である。例えば、図43に示されるピクチャI0は、復号及び表示においてギャップが発生しないように、B4の復号完了後に表示される。
図43に示されるように、予測構造にBピクチャが含まれる場合などには、復号順と表示順とが異なるため、受信装置20においてピクチャを復号後にピクチャの遅延処理、及び、ピクチャの並び替え(リオーダ)処理が必要となる。
以上、時間方向のスケーラビリティにおけるピクチャの予測構造の例について説明したが、時間方向のスケーラビリティが用いられない場合においても、予測構造によっては、ピクチャの遅延処理、及び、リオーダ処理が必要となる場合がある。図44は、ピクチャの遅延処理、及び、リオーダ処理が必要となるピクチャの予測構造の一例を示す図である。なお、図44における数字は、復号順を示す。
図44に示されるように、予測構造によっては、復号順において先頭となるサンプルと、提示順において先頭となるサンプルが異なる場合があり、図44では、提示順で先頭となるサンプルは、復号順で4番目のサンプルとなる。なお、図44は、予測構造の一例を示すものであり、予測構造はこのような構造に限定されるものではない。他の予測構造においても、復号順において先頭となるサンプルと、提示順において先頭となるサンプルとが異なる場合がある。
図45は、図33と同様に、MP4形式で構成されるMPUが複数のムービーフラグメントに分割されて、MMTPペイロード、MMTPパケットに格納される例を示す図である。なお、MPUを構成するサンプル数や、ムービーフラグメントを構成するサンプル数は任意である。例えば、MPUを構成するサンプル数をGOP単位のサンプル数とし、GOP単位の2分の1のサンプル数をムービーフラグメントとして、2つのムービーフラグメントが構成されてもよい。1サンプルが1つのムービーフラグメントとされてもよいし、MPUを構成するサンプルが分割されなくてもよい。
図45では、1つのMPUに2つのムービーフラグメント(moofボックス及びmdatボックス)が含まれる例が示されているが、1つのMPUに含まれるムービーフラグメントは2つでなくてもよい。1つのMPUに含まれるムービーフラグメントは、3つ以上であってもよいし、MPUに含まれるサンプル数であってもよい。また、ムービーフラグメントに格納されるサンプルは等分したサンプル数でなく、任意のサンプル数に分割されてもよい。
ムービーフラグメントメタデータ(MFメタデータ)には、ムービーフラグメントに含まれるサンプルのPTS、DTS、オフセット、及びサイズの情報が含まれており、受信装置20は、サンプルを復号する際には、当該サンプルの情報を含むMFメタからPTS及びDTSを抽出し、復号タイミングや提示タイミングを決定する。
ここからは、詳細説明のために、iサンプルの復号時刻の絶対値をDTS(i)と記載し、提示時刻の絶対値をPTS(i)と記載する。
MFメタにおけるmoof内に格納されているタイムスタンプ情報のうちi番目のサンプルの情報は、具体的には、i番目のサンプルと(i+1)番目のサンプルの復号時刻の相対値、及び、i番目のサンプルの復号時刻と提示時刻の相対値であり、これらを以降DT(i)及びCT(i)と記載する。
ムービーフラグメントメタデータ#1には、サンプル#1−#3のDT(i)及びCT(i)が含まれており、ムービーフラグメントメタデータ#2には、サンプル#4−#6のDT(i)及びCT(i)が含まれている。
また、MPU先頭のアクセスユニットのPTS絶対値は、MPUタイムスタンプ記述子などに格納されており、受信装置20は、MPU先頭のアクセスユニットのPTS_MPUと、CT及びDTとに基づいてPTS及びDTSを算出する。
図46は、#1−#10のサンプルによりMPUが構成される場合のPTS及びDTSの算出方法と課題とを説明するための図である。
図46の(a)は、MPUがムービーフラグメントに分割されない例を示し、図46の(b)は、MPUが5サンプル単位の2つのムービーフラグメントに分割される例を示し、図46の(c)は、MPUがサンプル単位に10のムービーフラグメントに分割される例を示す。
図45で説明したように、MPUタイムスタンプ記述子と、MP4内のタイムスタンプ情報(CT及びDT)とを用いてPTS及びDTSが算出される場合において、図44における提示順で先頭となるサンプルは、復号順で4番目である。このため、MPUタイムスタンプ記述子に格納されているPTSは、復号順で4番目のサンプルのPTS(絶対値)となる。なお、以降では、このサンプルをAサンプルと呼ぶ。また、復号順で先頭のサンプルをBサンプルと呼ぶ。
タイムスタンプに係る絶対時刻情報は、MPUタイムスタンプ記述子の情報のみであるため、受信装置20は、Aサンプルが到着するまで、その他のサンプルのPTS(絶対時刻)及びDTS(絶対時刻)を算出できない。受信装置20は、BサンプルのPTS及びDTSも算出できない。
図46の(a)の例では、Aサンプルは、Bサンプルと同じムービーフラグメントに含まれ、一つのMFメタに格納される。このため、受信装置20は、当該MFメタを受信後、すぐにBサンプルのDTSを決定できる。
図46の(b)の例では、Aサンプルは、Bサンプルと同じムービーフラグメントに含まれ、一つのMFメタに格納される。このため、受信装置20は、当該MFメタを受信後、すぐにBサンプルのDTSを決定できる。
図46の(c)の例では、Aサンプルは、Bサンプルと異なるムービーフラグメントに含まれる。このため、受信装置20は、Aサンプルを含むムービーフラグメントのCT及びDTを含むMFメタを受信後でなければ、BサンプルのDTSを決定できない。
したがって、図46の(c)の例の場合には、受信装置20は、Bサンプルの到着後、すぐに復号を開始できない。
このように、Bサンプルを含むムービーフラグメントに、Aサンプルが含まれない場合には、受信装置20は、Aサンプルを含むムービーフラグメントに係るMFメタを受信した後でなければ、Bサンプルの復号を開始できない。
提示順で先頭のサンプルと、デコード順で先頭のサンプルとが一致しない場合において、AサンプルとBサンプルとが同一ムービーフラグメントに格納されなくなるまでにムービーフラグメントが分割されることにより、この課題は発生する。また、MFメタが後送りであるか先送りであるかにかかわらず、この課題は発生する。
このように、提示順で先頭のサンプルと、デコード順で先頭のサンプルとが一致しない場合において、Aサンプルと、Bサンプルとが同一ムービーフラグメントに格納されない場合には、Bサンプルの受信後、すぐにDTSを決定できない。そこで、送信装置15は、別途、BサンプルのDTS(絶対値)、或いはBサンプルのDTS(絶対値)を受信側において算出可能な情報を送信する。このような情報は、制御情報やパケットヘッダ等を用いて送信されてもよい。
受信装置20は、このような情報を用いてBサンプルのDTS(絶対値)を算出する。図47は、このような情報を用いてDTSが算出される場合の受信動作のフローチャートである。
受信装置20は、MPU先頭のムービーフラグメントを受信し(S901)、AサンプルとBサンプルとが同一ムービーフラグメントに格納されているかどうかを判定する(S902)。同一ムービーフラグメントに格納されている場合(S902でYes)は、受信装置20は、BサンプルのDTS(絶対時刻)を用いず、MFメタの情報のみを用いてDTSを算出し、復号を開始する(S904)。なお、ステップS904において、受信装置20は、BサンプルのDTSを用いてDTSを決定してもよい。
一方、ステップS902においてAサンプルとBサンプルとが同一ムービーフラグメントに格納されていない場合(S902でNo)、受信装置20は、BサンプルのDTS(絶対時刻)を取得し、DTSを決定し、復号を開始する(S903)。
なお、以上の説明では、MMT規格におけるMFメタ(MP4形式のmoof内に格納されているタイムスタンプ情報)を用いて、各サンプルの復号時刻の絶対値と、提示時刻の絶対値とを算出する例について説明したが、MFメタを、各サンプルの復号時刻の絶対値と、提示時刻の絶対値を算出に用いることができる任意の制御情報に置き換えて実施しても良いことは言うまでもない。このような制御情報の例としては、上述したi番目のサンプルと(i+1)番目のサンプルの復号時刻の相対値CT(i)を、i番目のサンプルと(i+1)番目のサンプルの提示時刻の相対値に置き換えた制御情報や、i番目のサンプルと(i+1)番目のサンプルの復号時刻の相対値CT(i)とi番目のサンプルと(i+1)番目のサンプルの提示時刻の相対値との両方を含む制御情報などがある。
[補足]
以上のように、BサンプルのDTS(絶対値)、或いはBサンプルのDTS(絶対値)を受信側において算出可能な情報を制御情報として送信する送信装置は、図48のように構成することも可能である。図48は、送信装置の構成の別の例を示す図である。
送信装置300は、符号化データ生成部301と、パケット生成部302と、第1送信部303と、情報生成部304と、第2送信部305とを備える。なお、図48に示されるように、パケット生成部302及び情報生成部304は、1つの生成部306として実現されてもよいし、第1送信部303と第2送信部305とは1つの送信部307として実現されてもよい。
符号化部301は、映像信号を符号化して複数のアクセスユニットを含む符号化データを生成する。
パケット生成部302は、複数のアクセスユニットを、アクセスユニット単位、またはアクセスユニットを分割した単位でパケットに格納してパケット群を生成する。
第1送信部303は、生成されたパケット群をデータとして送信する。
情報生成部304は、複数のアクセスユニットのうち最初に提示されるアクセスユニットの提示時刻を示す第1の情報と、複数のアクセスユニットの復号時刻の算出に用いられる第2の情報とを生成する。ここで、第1の情報は、例えば、MPUタイムスタンプ記述子であり、第2の情報は、例えば、MFメタデータのタイムスタンプ情報(または、タイムスタンプ情報が一部修正された情報)などの補助情報である。
第2送信部305は、生成された第1の情報及び第2の情報を制御情報として送信する。
また、送信装置300に対応する受信装置は、例えば、図49のように構成されてもよい。図49は、受信装置の構成の別の例を示す図である。
受信装置400は、第1受信部401と、第2受信部402と、復号部403とを備える。なお、図49に示されるように、第1受信部401及び第2受信部402は、1つの受信部404として実現されてもよい。
第1受信部401は、複数のアクセスユニットを含む符号化データがアクセスユニット単位またはアクセスユニットを分割した単位でパケット化されたパケット群を受信する。
第2受信部402は、複数のアクセスユニットのうち最初に提示されるアクセスユニットの提示時刻を示す第1の情報と、複数のアクセスユニットの復号時刻の算出に用いられる第2の情報とを含む制御情報を受信する。
復号部403は、受信されたパケット群に含まれるアクセスユニットを、第1の情報及び第2の情報に基づいて復号する。
(その他の実施の形態)
以上、実施の形態に係る送信装置、受信装置、送信方法及び受信方法ついて説明したが、本発明は、この実施の形態に限定されるものではない。
また、上記実施の形態に係る送信装置及び受信装置に含まれる各処理部は典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。
また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU又はプロセッサなどのプログラム実行部が、ハードディスク又は半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
言い換えると、送信装置及び受信装置は、処理回路(processing circuitry)と、当該処理回路に電気的に接続された(当該制御回路からアクセス可能な)記憶装置(storage)とを備える。処理回路は、専用のハードウェア及びプログラム実行部の少なくとも一方を含む。また、記憶装置は、処理回路がプログラム実行部を含む場合には、当該プログラム実行部により実行されるソフトウェアプログラムを記憶する。処理回路は、記憶装置を用いて、上記実施の形態に係る送信方法又は受信方法を実行する。
さらに、本発明は上記ソフトウェアプログラムであってもよいし、上記プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記で用いた数字は、全て本発明を具体的に説明するために例示するものであり、本発明は例示された数字に制限されない。
また、ブロック図における機能ブロックの分割は一例であり、複数の機能ブロックを一つの機能ブロックとして実現したり、一つの機能ブロックを複数に分割したり、一部の機能を他の機能ブロックに移してもよい。また、類似する機能を有する複数の機能ブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。
また、上記の送信方法又は受信方法に含まれるステップが実行される順序は、本発明を具体的に説明するために例示するためのものであり、上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。
以上、本発明の一つ又は複数の態様に係る送信装置、受信装置、送信方法及び受信方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つ又は複数の態様の範囲内に含まれてもよい。