以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
[番組配信システムの概要]
図1は、本発明の実施の形態に係る番組配信システムの構成を示す図である。
図2は、本発明の実施の形態に係る番組配信システムにおいて送信されるパケットの一例を示す図である。
図1を参照して、番組配信システム10は、配信装置(ストリーム送信装置)20と、番組受信装置40とを備える。番組受信装置40は、ネットワーク11を介して配信装置20と接続されている。
配信装置20は、1または複数の番組の情報を複数のパケットに分割したストリームを送信する。配信装置20は、たとえばIPTVに対応するサーバであり、番組受信装置40を使用するユーザによりある番組の情報を要求されると、当該番組の情報を含むパケットを配信するVODサービスを行う。
配信装置20は、たとえばIPを利用することにより、当該番組の情報を含むストリームを、インターネット等のネットワーク11経由で番組受信装置40へ配信する。
番組受信装置40は、ユーザが要求した番組の情報を含むストリームを、たとえばIPによりネットワーク11経由で配信装置20から受信し、受信した上記ストリームを処理することにより、当該番組の情報を取得する。そして、番組受信装置40は、取得した番組の情報を表示装置12において再生する。なお、番組受信装置40および表示装置12は、一体であってもよい。
配信装置20が配信する番組の情報は、MPEG2(Moving Picture Experts Group 2)またはH.264/AVC(Advanced Video Coding)に従った方式により符号化される。符号化された番組の情報は、MPEG2−TS(Transport Stream)形式における、たとえば図2の(A)に示す複数のTSパケットに格納される。
TSパケットは、188バイトの大きさを持ち、TSヘッダおよびTSペイロードを含む。番組の情報は、たとえば複数のTSパケットにおけるペイロードに分割して含められる。また、TSヘッダは、当該TSヘッダを含むTSパケットの識別子であるPID(Packet Identifier)を含み、PIDは、当該TSパケットのペイロードに含まれる情報に対応した値が割り当てられる。
TSパケットには、再生対象であるビデオTSパケットおよびオーディオTSパケットと、番組に対応して生成され、対応の番組の再生対象パケットを再生するための制御情報を含むPSI(Program Specific Information)を示すパケット等がある。ビデオTSパケットは、番組の画像データを格納し、オーディオTSパケットは、番組の音声データを格納する。
配信装置20は、上記TSパケットを多重化した1つのデータ列であるストリームにより、番組の情報をたとえば番組受信装置40へ配信する。なお、ストリームには、複数の番組の情報を含めてもよい。
PSIを示すパケットは、具体的にはPAT(Program Association Table)パケットおよびPMT(Program Map Table)パケットである。PATパケットおよびPMTパケットは、複数種類ある制御パケットの一例である。PATパケットは、番組関連パケットであり、ストリームに含まれる1または複数の番組すなわち現在放送中である1または複数の番組の識別子であるチャンネルID、および各放送チャンネルの情報を含むPMTパケットのPID等を含む。また、PATパケットのPIDは、16進数表記における0x0000である。
PMTパケットは、番組マップパケットであり、番組に対応して生成され、対応の番組の再生対象パケットであるビデオTSパケットおよびオーディオTSパケットの識別子であるPIDを含む。PATパケットおよびPMTパケットは、当該PATパケットおよび当該PMTパケットの内容が切替わるまで、配信装置20から繰り返し再送される場合がある。
そして、配信装置20は、番組の情報を含むTSパケットにより構成されるストリームをIPにより送信する際に、上記ストリームに対して以下の処理を行う。すなわち、配信装置20は、送信するストリームに含まれるTSパケットにおいて、当該TSパケットがデコードタイミング調整用のヌルパケットである場合、当該TSパケットを削除する。
また、配信装置20がパケットを送信するタイミングを調節しながらパケットをIPにより番組受信装置40へ送信しても、IPではパケット毎に伝送時間のばらつきが生じるので、番組受信装置40がパケットを受信するタイミングは、配信装置20により調節されたタイミングと異なってしまう。
すなわち、IPによるパケットの送信では、配信装置20におけるパケットを送信するタイミングを、番組受信装置40において再現することができない。これに対処するために、配信装置20は、送信するストリームに含まれるTSパケットを、受信側の装置においてデコーダへ投入すべきタイミングを示すタイムスタンプ情報を含めたTTS(Timestamped TS)パケットへ変換する。このため、たとえば図2の(A)に示す複数のTSパケットは、図2の(B)に示す複数のTTSパケットへ変換される。
配信装置20は、複数のTTSパケットを、所定個数のTTSパケットにより構成される複数のグループに分割し、各グループをRTP(Realtime Transport Protocol)パケットのペイロードに含める。なお、上記所定個数は、たとえば非特許文献1において7個が推奨されている。このため、たとえば図2の(B)に示す35個のTTSパケットは、図2の(C)に示すRTPパケット1からRTPパケット5までの5個のRTPパケットに含められる。
RTPパケットのヘッダは、シーケンス番号を格納するフィールドを有する。配信装置20は、たとえばRTPパケット1からRTPパケット5までのシーケンス番号のフィールドに連続した番号を付与した後、番組受信装置40へ送信する。
なお、本発明の実施の形態では、配信装置20は、上記のように複数のTTSパケットを1つのRTPパケットに含める。このため、以下では、PATパケットまたはPMTパケットを少なくとも1個含むRTPパケットを制御パケットと称し、また、PATパケットまたはPMTパケットを含まないRTPパケットを再生対象パケットと称する。
配信装置20は、上記RTPパケットをたとえばネットワーク11経由で番組受信装置40へ送信することにより、番組の情報を番組受信装置40へ送信する。番組受信装置40は、上記RTPパケットを受信すると、受信したRTPパケットからTTSパケットを取得し、取得したTTSパケットにおけるタイムスタンプ情報を参照することにより、当該TTSパケットを適切なタイミングでデコーダへ投入することができる。これにより、番組受信装置40は、デコーダにおいて抽出した番組の情報を、たとえば表示装置12において適切なタイミングで再生することができる。
また、番組受信装置40は、配信装置20からRTPパケットを受信すると、受信したRTPパケットのシーケンス番号を確認することにより、当該RTPパケットを受信した順序が逆転している場合における当該順序の回復、および当該RTPパケットの伝送経路での消失の検出を行うことができる。
[RTPパケットの欠損補償]
番組受信装置40は、配信装置20から受信したRTPパケットの順序が逆転している場合には、RTPパケットの順序を並べ替えることにより、RTPパケットの順序を容易に回復することができる。
一方、番組受信装置40は、配信装置20から受信したRTPパケットに欠損がある場合には、欠損したRTPパケットを容易に復元することができない。このため、配信装置20は、たとえばPro−MPEG(the Professional-MPEG) 1D FEC方式に準拠した処理を行うことにより、伝送経路の途中で欠損したRTPパケットを番組受信装置40において復元できるようにする。
図3は、本発明の実施の形態に係るパケットの欠損補償の一例を示す図である。
図3を参照して、配信装置20は、たとえばRTP01からRTP25までの25個のRTPパケットを送信する場合、シーケンス番号順に並べた当該25個のRTPパケットを構成要素とする、図3の(A)に示すソースブロックを作成する。
そして、配信装置20は、ソースブロックの各列におけるRTPパケットのビットストリングに対して排他的論理和を計算し、計算した排他的論理和、すなわち各ビットストリングの冗長データをペイロードに含む復元用パケットであるFECパケットを作成する。以下、ソースブロックに対応する複数のFECパケットを、FEC符号化ブロックと称する。
具体的には、配信装置20は、図3の(A)に示すソースブロックの1列目を構成するRTP01、RTP06、RTP11、RTP16およびRTP21の各ビットストリングに対して排他的論理和を計算することにより、冗長データを得る。そして、配信装置20は、上記冗長データにFECヘッダおよびRTPヘッダを付加することにより、FECパケットである図3の(B)に示すFEC01を作成する。FECヘッダには、たとえばPro−MPEG 1D FECといったFEC方式、ソースブロックのサイズおよびFEC符号化ブロックのサイズが含められる。
なお、上記サイズは、ソースブロックまたはFEC符号化ブロックの行数および列数の積を示す。従って、ソースブロックのサイズは、当該ソースブロックに収容されるRTPパケットの個数を示す。また、FEC符号化ブロックのサイズは、当該FEC符号化ブロックに収容されるFECパケットの個数を示す。
配信装置20は、図3の(A)に示すソースブロックの2列目から5列目について同様の処理を行い、図3の(B)に示すFEC02からFEC05を作成する。図3の(B)に示すFEC01からFEC05までのFECパケットは、図3の(A)に示すソースブロックに対応するFEC符号化ブロックを形成する。
配信装置20は、たとえば図3の(A)に示すソースブロックを構成するRTPパケット、および図3の(B)に示すFEC符号化ブロックを構成するFECパケットを、それぞれ異なるポート番号を付与した別々のストリームに含めて番組受信装置40へ送信する。
番組受信装置40は、上記RTPパケットおよび上記FECパケットを受信すると、まず、FECパケットのヘッダを参照することにより、FEC方式、ソースブロックのサイズおよびFEC符号化ブロックのサイズを取得する。そして、番組受信装置40は、取得したブロックの大きさに基づいて、図3の(C)に示すソースブロック、および図3の(D)に示すFEC符号化ブロックを再生する。
番組受信装置40は、図3の(C)に示すソースブロックを再生する際に、RTP11およびRTP13の間のRTPパケットが欠損していることを検出する。このような場合においても、番組受信装置40は、図3の(C)に示すソースブロックにおいて「欠損1」により示される位置に対応する列に属するRTPパケット、および当該列に対応するFECパケットに基づいて、欠損したRTPパケットを復元する。
具体的には、番組受信装置40は、図3の(E)に示すように、RTPパケットが欠損した列に属するRTP02、RTP07、RTP17およびRTP22の各ビットストリングおよび当該列に対応するFECパケットであるFEC02のビットストリングに対して排他的論理和を計算する。計算した排他的論理和は、欠損したRTP12のビットストリングと同じであるので、番組受信装置40は、計算した排他的論理和に基づいて、欠損したRTPパケットであるRTP12を復元する。
上記のようなソースブロックおよび当該ソースブロックに対応するFEC符号化ブロックに基づいて、RTPパケットの欠損の検出処理および欠損したRTPパケットの復元処理を、以下、FECデコードと称する。
番組受信装置40は、FECデコードを行った、RTP01からRTP25までのRTPパケットから取得したTTSパケットに基づいて、番組の画像を再生する。
なお、番組受信装置40は、FECデコードを完了するより以前に、RTPパケットを次の処理へ移すことは好ましくない。番組受信装置40は、ソースブロックにおいて、たとえば1行目に属するRTPパケットを復元するためには、当該RTPパケットと同一列に属するRTPパケット全てが到着するまで待たなければならない。従って、番組受信装置40は、最終行に属するRTPパケットが到着するより以前に到着したRTPパケットを次の処理へ移すことはできない。
また、番組受信装置40は、ソースブロックにおいて、たとえば最終行に属するRTPパケットを復元するためには、当該RTPパケットと同一列のRTPパケット全てが必要となるので、最終行に属するRTPパケットが到着するより以前に、当該RTPパケットと同一列のRTPパケットを次の処理へ移すことはできない。
従って、番組受信装置40は、RTPパケットの欠損の有無に関わらず、FECデコードが完了するまでは、RTPパケットを次の処理へ移すことができない。また、番組受信装置40は、RTPパケットの複製を作成することにより、FECデコード処理を行いながらRTPパケットを次の処理へ移すことも考えられるが、RTPパケットを複製するために余分なメモリが必要となるので、好ましくない。
[RTPパケットの欠損補償を行う際に生ずる問題点]
図4は、TTSパケットを含むRTPパケットにより構成されるソースブロックおよびFEC符号化ブロックの一例を示す図である。
まず、非特許文献1に記載の技術による配信装置60において作成されるソースブロックおよびFEC符号化ブロックを、比較例として説明する。
図4を参照して、図4の(A)は、配信装置60が作成するソースブロックの一例を示す。図4の(A)において示される「V」、「A」、「PAT」および「PMT」は、以下、それぞれビデオTTSパケットを含むRTPパケット、オーディオTTSパケットを含むRTPパケット、PATパケットを含むRTPパケットおよびPMTパケットを含むRTPパケットを示す。
この例では、「V」および「A」は、再生対象パケットに相当し、また、「PAT」および「PMT」は、制御パケットに相当する。
図4の(B)は、配信装置60が作成するFEC符号化ブロックの一例を示す。また、図4の(B)において示される「FEC」は、以下、FECパケットを示す。なお。「V」、「A」および「FEC」は、各パケットを識別するための添え字が付与されている。
配信装置60は、たとえば図4の(A)に示すソースブロック、および当該ソースブロックに対応する図4の(B)に示すFEC符号化ブロックを作成する。そして、配信装置60は、作成したソースブロックに含まれるRTPパケットおよびFEC符号化ブロックに含まれるFECパケットを番組受信装置40へ送信する。
番組受信装置40は、受信したRTPパケットおよびFECパケットに基づいて、図4の(A)に示すソースブロックおよび図4の(B)に示すFEC符号化ブロックを再生する。そして、番組受信装置40は、FECデコードを行うことにより、欠損したRTPパケットを必要に応じて復元した後、上記ソースブロックに含まれるRTPパケットからビデオTTSパケット、オーディオTTSパケット、PATパケットおよびPMTパケットを取得する。
そして、番組受信装置40は、取得したPATパケットおよびPMTパケットを解析し、たとえば再生する番組の情報を含むビデオTTSパケットおよびオーディオTTSパケットのPID、およびビデオTTSパケットに含まれる画像データの符号化方式を取得する。
番組受信装置40は、解析した結果に基づいて、上記PIDを有するTTSパケットが流れてきた際に当該TTSパケットを取得する条件の設定、および上記符号化方式に対応できるデコーダプログラムの読み出し等の番組を再生させるための準備を行う。
番組受信装置40は、番組の情報を再生させるための準備が完了した後、上記条件に基づいてTTSパケットを取得し、取得したTTSパケットのタイムスタンプ情報に基づいたタイミングにおいて上記パケットをデコーダへ投入することにより、上記番組の情報を再生する。
上記のように、番組受信装置40は、FECデコードを行った後、PMTパケットに基づいて番組の情報を再生させるための準備を行う。たとえば、10行10列のサイズのソースブロックのFECデコードに用いるパケットを蓄積するために要する時間は、8Mbpsの通信速度において概ね100ミリ秒である。また、この番組の情報を再生させるための準備には、ある程度の時間が必要である。
従って、番組受信装置40がRTPパケットを受信してから当該RTPパケットに含まれるTTSパケットをデコーダへ投入するまでの遅延時間が長くなってしまうという問題がある。
これに対して、本発明の実施の形態に係る配信装置20は、たとえばPATパケットまたはPMTパケットを含む制御パケットを、再生対象パケットに先んじて番組受信装置40においてFECデコードし得るようにしておく。これにより、以下のように遅延時間を短縮することができる。
図5は、本発明の実施の形態に係るTTSパケットを含むRTPパケットにより構成されるソースブロックおよびFEC符号化ブロックの一例を示す図である。
図5において示される「V」、「A」、「PAT」、「PMT」および「FEC」の見方は、図4と同様である。
図5を参照して、図5の(A)および(B)は、配信装置20が作成するソースブロックの一例を示す。また、図5の(C)および(D)は、配信装置20が作成するFEC符号化ブロックの一例を示す。
すなわち、再生対象パケットに先んじて制御パケットをFECデコードすることにより取得したPATパケットおよびPMTパケットに基づいて番組の情報を再生させるための準備と、制御パケットに続く再生対象パケットのFECデコードとを並行して処理することにより、番組受信装置40における上記遅延時間を短縮することができる。
具体的には、本実施の形態における配信装置20は、「PAT」または「PMT」により示される制御パケットを「V」または「A」により示される再生対象パケットに先んじて番組受信装置40においてFECデコードできるように、図5の(A)に示すソースブロック、および当該ソースブロックに対応する図5の(C)に示すFEC符号化ブロックを作成する。
そして、配信装置20は、制御パケットに続く再生対象パケットにより構成される、図5の(B)に示すソースブロック、および当該ソースブロックに対応する図5の(D)に示すFEC符号化ブロックを作成する。配信装置20は、このようなソースブロックおよびFEC符号化ブロックを作成することにより上記問題を解決する。
[配信装置の構成]
図6は、本発明の実施の形態に係る配信装置の構成を示す図である。
図6を参照して、配信装置20は、番組配信制御部21と、ストリーム作成部22と、記憶部23と、RTPパケット作成部24と、FECパケット作成部(ソースブロック作成部および復元用パケット作成部)25と、通信部26とを備える。なお、記憶部23は、配信装置20の外部に設けられていてもよい。
通信部28は、たとえばインターネット等のネットワーク11を介して番組受信装置40とパケットの送受信を行う。
記憶部23は、HDD(Hard Disk Drive)等の記憶装置であり、番組の情報を含むストリームを保持する。
番組配信制御部21は、番組の情報の配信の制御を行う。具体的には、番組配信制御部21は、たとえばある番組の再生要求を通信部28経由で番組受信装置40から受信すると、当該番組の再生命令をストリーム作成部22へ出力する。
ストリーム作成部22は、番組配信制御部21から再生命令を受けると、受けた再生命令に対応する番組を含む、MPEG2−TS形式のストリームを記憶部23から読み出す。そして、ストリーム作成部22は、読み出したストリームに基づいて、IPによる配信に適した配信用ストリームを作成する。
より詳細には、ストリーム作成部22は、読み出したストリームからTSパケットを取得する。そして、ストリーム作成部22は、取得したTSパケットがデコードタイミング調整用のヌルパケットである場合、当該ヌルパケットを削除する。また、ストリーム作成部22は、取得したTSパケットがヌルパケットでない場合、当該TSパケットにタイムスタンプ情報を付加することによりTTSパケットへ変換する。そして、ストリーム作成部22は、上記TTSパケットをRTPパケット作成部24へ送信順に出力する。
RTPパケット作成部24は、ストリーム作成部22からTTSパケットを送信順に受けると、当該TTSパケットがたとえば送信順に7個ずつペイロードに含まれるようにRTPパケットを順次作成する。
そして、RTPパケット作成部24は、作成したRTPパケットのヘッダにパケット作成順すなわち送信順にシーケンス番号を付与し、当該RTPパケットをFECパケット作成部25へ出力する。
FECパケット作成部25は、RTPパケット作成部24からRTPパケットを受けると、受けたRTPパケットを図示しないバッファにシーケンス番号順すなわち送信順に蓄積する。この際、FECパケット作成部25は、制御パケットを検索し、検索した結果に基づいて、ソースブロックの終端パケットを決定する。
具体的には、FECパケット作成部25は、たとえば所定サイズのソースブロックを満たすまでRTPパケットをバッファに蓄積しながら検索を行い、当該検索の結果、バッファに蓄積されたRTPパケットの中に制御パケットが存在しない場合、以下の処理を行う。
すなわち、FECパケット作成部25は、最後にバッファに蓄積したRTPパケットを終端パケットとして決定する。そして、FECパケット作成部25は、バッファにおいて送信順に並べられたRTPパケットを1つのソースブロックとしてまとめる。
また、FECパケット作成部25は、所定サイズのソースブロックを満たす個数までRTPパケットをバッファに蓄積しながら検索を行い、当該検索の結果、バッファに蓄積されたRTPパケットの中に制御パケットが存在することを把握すると、以下の処理を行う。
すなわち、FECパケット作成部25は、当該制御パケットを終端パケットとして決定する。なお、FECパケット作成部25は、制御パケットが連続する場合は、連続した制御パケットにおける最後部の制御パケットを終端パケットとして決定する。
そして、FECパケット作成部25は、バッファにおいて、最初に蓄積されたRTPパケットから終端パケットまでを1つのソースブロックとしてまとめ、終端パケットより後ろのRTPパケットを次のソースブロックに含める。
上記のように、FECパケット作成部25は、送信順に並べられた再生対象パケットおよび制御パケットについて、制御パケットから数えてn(nはゼロ以上の整数)個後の終端パケットまでをソースブロックに含める。そして、FECパケット作成部25は、上記終端パケットより後のRTPパケットを次のソースブロックに含める。
図7は、本発明の実施の形態に係るRTPパケットおよびソースブロックの対応関係の一例を示す図である。
図7を参照して、(A)から(J)において示される「V」、「A」、「PAT」および「PMT」の見方は、図4と同様である。また、(A)、(E)および(H)は、RTPパケット作成部24が出力するRTPパケットの一例を示す。
具体的には、FECパケット作成部25は、たとえば図7の(A)に示す送信順に並べられたRTPパケットをRTPパケット作成部24から受けると、V01からV10までの10個の再生対象パケットであるRTPパケットをバッファに蓄積しながら検索を行う。
次に、FECパケット作成部25は、PATにより示されるRTPパケットを受けると、検索により当該RTPパケットが制御パケットであることを把握し、当該制御パケットを終端パケットとして決定する。
これにより、FECパケット作成部25は、図7の(B)に示すように上記10個の再生対象パケットおよび当該制御パケットをソースブロック1としてまとめる。
次に、FECパケット作成部25は、後続するV11からV14までの4個の再生対象パケットであるRTPパケットをバッファに蓄積しながら検索を行い、更にPMTにより示されるRTPパケットを受けると、検索により当該RTPパケットが制御パケットであることを把握する。
そして、FECパケット作成部25は、当該制御パケットを終端パケットとして決定し、図7の(C)に示すように、上記4個の再生対象パケットおよび当該制御パケットをソースブロック2としてまとめる。
そして、FECパケット作成部25は、所定サイズのソースブロックを満たす個数まで、後続するV15以降のRTPパケットをバッファに蓄積しながら検索を行い、検索により制御パケットが存在しないことを把握すると、蓄積したRTPパケットを図7の(D)に示すようにソースブロック3としてまとめる。
また、FECパケット作成部25は、たとえば、検索により制御パケットの存在を把握するとさらに検索を継続し、当該制御パケットから数えて所定個数以内のRTPパケットの中に他の種類の制御パケットが存在することを把握すると、当該他の種類の制御パケットを終端パケットとして決定する。
この場合における、「他の種類の制御パケット」は、たとえば上記制御パケットすなわちRTPパケットがPMTパケットを含む場合、PATパケットを含むRTPパケットが該当し、また、上記制御パケットすなわちRTPパケットがPATパケットを含む場合、PMTパケットを含むRTPパケットが該当する。
一方、FECパケット作成部25は、上記制御パケットから数えて所定個数以内のRTPパケットにおいて他の種類の制御パケットが存在しない場合には、上記制御パケットを終端パケットとして決定する。
そして、FECパケット作成部25は、終端パケットまでを1つのソースブロックとしてまとめ、当該終端パケットより後ろのRTPパケットを次のソースブロックに含める。
具体的には、FECパケット作成部25は、たとえば図7の(E)に示す送信順に並べられたRTPパケットをRTPパケット作成部24から受けると、V01からA07までの7個の再生対象パケットであるRTPパケットをバッファに蓄積しながら検索を行う。
次に、FECパケット作成部25は、PATにより示されるRTPパケットを受けると、検索により当該RTPパケットが制御パケットであることを把握する。
そして、FECパケット作成部25は、当該制御パケットから、たとえば所定個数としてRTPパケット4個分の範囲においてさらに検索を継続し、他の種類の制御パケットであるPMTパケットを含むRTPパケットを検索する。
FECパケット作成部25は、検索の結果、上記制御パケットから3個目においてPMTパケットを含むRTPパケットすなわち他の種類の制御パケットが存在することを把握すると、以下の処理を行う。
すなわち、FECパケット作成部25は、当該他の種類の制御パケットを終端パケットとして決定し、図7の(F)に示すように、PMTにより示されるRTPパケットまでをソースブロック4としてまとめる。
そして、FECパケット作成部25は、後続するV10以降のRTPパケットを所定サイズのソースブロックを満たす個数までバッファに蓄積しながら検索を行い、検索により制御パケットが存在しないことを把握すると、蓄積したRTPパケットを図7の(G)に示すようにソースブロック5としてまとめる。
また、FECパケット作成部25は、PATパケットまたはPMTパケットを含む制御パケットの直後をソースブロックの区切りとすることに限定されない。たとえば、FECパケット作成部25は、上記区切りを数パケット分後方へずらすことにより、ソースブロックを満たすことができる場合、上記区切りを当該数パケット分後方へずらす構成であってもよい。
すなわち、たとえばソースブロックのサイズが12である場合、FECパケット作成部25は、図7の(H)に示す送信順に並べられたRTPパケットをRTPパケット作成部24から受けると、V01からV09までの9個の再生対象パケットであるRTPパケットをバッファに蓄積しながら検索を行う。
次に、FECパケット作成部25は、PATにより示されるRTPパケットを受けると、検索により当該RTPパケットが制御パケットであることを把握する。そして、FECパケット作成部25は、当該制御ブロックを終端パケットとせずにバッファに蓄積し、さらに2個のRTPパケットをバッファに蓄積する。
すなわち、FECパケット作成部25は、当該制御パケットに続くPMTで示されるRTPパケットおよびV10で示されるRTPパケットをバッファに蓄積する。
そして、FECパケット作成部25は、蓄積したRTPパケットを図7の(I)に示すようにソースブロック6としてまとめる。これにより、FECパケット作成部25は、所定サイズのソースブロックに対応した個数のRTPパケットを当該ソースブロックに含めることができる。
FECパケット作成部25は、後続するV11以降のRTPパケットを、所定サイズのソースブロックを満たす個数までバッファに蓄積しながら検索を行い、検索により制御パケットが存在しないことを把握すると、蓄積したRTPパケットを図7の(J)に示すようにソースブロック7としてまとめる。
再び図6を参照して、FECパケット作成部25は、作成したソースブロックの各列に属するRTPパケットに基づいて、番組受信装置40においてソースブロックを復元するための復元用パケットであるFECパケットを作成する。FECパケット作成部25は、作成したFECパケットをまとめることによりFEC符号化ブロックを作成する。
これにより、FECパケット作成部25は、PATパケットまたはPMTパケットを含む制御パケットであるRTPパケットの送信順での後方を区切りとするソースブロックおよびFEC符号化ブロックを作成する。
そして、FECパケット作成部25は、作成したFEC符号化ブロックに含まれるFECパケットおよびソースブロックに含まれるRTPパケットを、通信部26を介してたとえば番組受信装置40へ送信する。
[PATまたはPMTによりソースブロックを区切る場合における動作]
配信装置20は、以下に示す各フローチャートの各ステップを図示しないメモリから読み出して実行する。このプログラムは、外部からインストールすることができる。このインストールされるプログラムは、たとえば記録媒体に格納された状態で流通する。
図8は、本発明の実施の形態に係る配信装置におけるソースブロックおよびFEC符号化ブロックの作成処理を行う際の動作手順の一例を定めたフローチャートである。
図8を参照して、まず、FECパケット作成部25は、カウントしたパケット数を示す変数PCNTを0に初期化する(ステップS102)。
次に、FECパケット作成部25は、選択された番組のストリームに含まれるTSパケットを含むRTPパケットを、RTPパケット作成部24から1個取得し、図示しないバッファに蓄積する(ステップS104)。
次に、FECパケット作成部25は、変数PCNTをインクリメントする(ステップS106)。
次に、FECパケット作成部25は、変数PCNTが示すパケット数が所定値未満、すなわち所定サイズのソースブロックに格納できるパケット数未満である場合(ステップS108でNO)、取得したRTPパケットに含まれるTSパケットの種別を確認する。
次に、FECパケット作成部25は、確認したTSパケットの種別にPATパケットまたはPMTパケットが含まれない場合(ステップS110でNO)、次のRTPパケットを1個取得する(ステップS104)。
一方、FECパケット作成部25は、確認したTSパケットの種別にPATパケットまたはPMTパケットが含まれる場合(ステップS110でYES)、取得したRTPパケットが制御パケットであると把握し、当該制御パケットが終端パケットとして適切であるかどうかを判断する(ステップS112)。
FECパケット作成部25は、取得したRTPパケットの次のRTPパケットを参照し、当該RTPパケットがPATパケットまたはPMTパケットを含む制御パケットである場合、取得したRTPパケットが終端パケットとして適切でないと判断し(ステップS112でNO)、次のRTPパケットを1個取得する(ステップS104)。
一方、FECパケット作成部25は、取得したRTPパケットの次のRTPパケットを参照し、当該RTPパケットがPATパケットまたはPMTパケットを含まない再生対象パケットである場合、取得したRTPパケットが終端パケットとして適切であると判断し(ステップS112でYES)、以下の処理を行う。
すなわち、FECパケット作成部25は、変数PCNTが示すパケット数に基づいてソースブロックのサイズを決定し、決定したサイズのソースブロックを作成する。そして、FECパケット作成部25は、作成したソースブロックにおいて、これまでにバッファに蓄積したRTPパケットを割当てる(ステップS114)。
一方、FECパケット作成部25は、変数PCNTが上記所定値である場合(ステップS108でYES)、所定サイズのソースブロックを作成し、作成したソースブロックにおいて、これまでにバッファに蓄積したRTPパケットを割当てる(ステップS114)。
次に、FECパケット作成部25は、作成したソースブロックに基づいてFECパケットを算出し、算出したFECパケットを構成要素に持つFEC符号化ブロックを作成する(ステップS116)。
次に、FECパケット作成部25は、ストリームの最後に到達していない場合(ステップS118でNO)、変数PCNTを0に初期化し(ステップS102)、次のRTPパケットを1個取得する(ステップS104)。
一方、FECパケット作成部25は、ストリームの最後に到達した場合(ステップS118でYES)、ソースブロックおよびFEC符号化ブロックの作成処理を終了する。
以上の動作により、配信装置20におけるソースブロックおよびFEC符号化ブロックの作成処理が行われる。
FECパケット作成部25は、上記ステップS112において、PATパケットまたはPMTパケットを含む制御パケット、およびPATパケットまたはPMTパケットを含まない再生対象パケットの間において、ソースブロックを区切る。
これにより、ソースブロックに含まれるRTPパケットを受信する番組受信装置40は、PATパケットまたはPMTパケットを含むソースブロックを先んじてFECデコードすることができる。
また、番組受信装置40は、上記区切りより後ろに位置するソースブロックのFECデコード処理、および受信したPATパケットおよびPMTパケットに基づく番組を再生させるための準備を並行して行うことができる。
これにより、番組受信装置40は、RTPパケットを受信してから当該RTPパケットに含まれるTSパケットをデコーダへ投入するまでの遅延時間が増大してしまうことを防ぐことができる。
また、FECパケット作成部25は、PATパケットまたはPMTパケットを含む制御パケットの直後をソースブロックの区切りとせずに、たとえば、上記区切りを所定個数以内のRTPパケットに相当する分後方へずらすことにより適切な区切りが得られる場合、上記区切りを後方へずらしてもよい。
図9は、本発明の実施の形態に係る配信装置におけるソースブロックおよびFEC符号化ブロックの作成処理を行う際の動作手順の他の一例を定めたフローチャートである。
図9を参照して、まず、FECパケット作成部25は、カウントしたパケット数を示す変数PCNTを0に初期化する(ステップS202)。
次に、FECパケット作成部25は、選択された番組のストリームに含まれるTSパケットを含むRTPパケットを、RTPパケット作成部24から1個取得し、図示しないバッファに蓄積する(ステップS204)。
次に、FECパケット作成部25は、変数PCNTをインクリメントする(ステップS206)。
次に、FECパケット作成部25は、変数PCNTが示すパケット数が所定値未満、すなわち所定サイズのソースブロックに格納できるパケット数未満である場合(ステップS208でNO)、取得したRTPパケットに含まれるTSパケットの種別を確認する。
次に、FECパケット作成部25は、確認したTSパケットの種別にPATパケットまたはPMTパケットが含まれない場合(ステップS210でNO)、次のRTPパケットを1個取得する(ステップS204)。
一方、FECパケット作成部25は、確認したTSパケットの種別にPATパケットまたはPMTパケットが含まれる場合(ステップS210でYES)、取得したRTPパケットが制御パケットであると把握し、当該制御パケットが終端パケットとして適切であるかどうかを判断する(ステップS212)。
FECパケット作成部25は、取得したRTPパケットの次のRTPパケットを参照し、当該RTPパケットがPATパケットまたはPMTパケットを含む制御パケットである場合、取得したRTPパケットが終端パケットとして適切でないと判断し(ステップS212でNO)、次のRTPパケットを1個取得する(ステップS204)。
一方、FECパケット作成部25は、取得したRTPパケットの次のRTPパケットを参照し、当該RTPパケットがPATパケットまたはPMTパケットを含まない再生対象パケットである場合(ステップS212でYES)、以下の処理を行う。
すなわち、FECパケット作成部25は、所定個数以内のRTPパケットに相当する分上記区切り位置を後方へ移すことにより、好ましい区切り位置が得られる場合(ステップS214でYES)、以下の処理を行う。
すなわち、FECパケット作成部25は、上記区切り位置から好ましい区切り位置までのRTPパケットをRTPパケット作成部24から取得し、取得したRTPパケットの最後部のRTPパケットを終端パケットとして決定する(ステップS216)。この際、FECパケット作成部25は、取得したRTPパケットの個数分変数PCNTを増加させた後、当該RTPパケットをバッファに蓄積する。
次に、FECパケット作成部25は、変数PCNTが示すパケット数に基づいてソースブロックのサイズを決定し、決定したサイズのソースブロックを作成する。そして、FECパケット作成部25は、作成したソースブロックにおいて、これまでにバッファに蓄積したRTPパケットを割当てる(ステップS218)。
一方、FECパケット作成部25は、所定個数以内のRTPパケットに相当する分上記区切り位置を後方へ移しても、好ましい区切り位置が得られない場合(ステップS214でNO)、上記制御パケットを終端パケットとし、変数PCNTが示すパケット数に基づいてソースブロックのサイズを決定し、決定したサイズのソースブロックを作成する。そして、FECパケット作成部25は、作成したソースブロックにおいて、これまでにバッファに蓄積したRTPパケットを割当てる(ステップS218)。
一方、FECパケット作成部25は、変数PCNTが上記所定値である場合(ステップS208でYES)、所定サイズのソースブロックを作成し、作成したソースブロックにおいて、これまでにバッファに蓄積したRTPパケットを割当てる(ステップS218)。
次に、FECパケット作成部25は、作成したソースブロックに基づいてFECパケットを算出し、算出したFECパケットを構成要素に持つFEC符号化ブロックを作成する(ステップS220)。
次に、FECパケット作成部25は、ストリームの最後に到達していない場合(ステップS222でNO)、変数PCNTを0に初期化し(ステップS202)、次のRTPパケットを1個取得する(ステップS204)。
一方、FECパケット作成部25は、ストリームの最後に到達した場合(ステップS222でYES)、ソースブロックおよびFEC符号化ブロックの作成処理を終了する。
以上の動作により、配信装置20におけるソースブロックおよびFEC符号化ブロックの作成処理が行われる。
FECパケット作成部25は、上記ステップS214において、PATパケットまたはPMTパケットを含む制御パケット、およびPATパケットまたはPMTパケットを含まない再生対象パケットの間においてソースブロックを区切らずに、当該ソースブロックに更にRTPパケットを加えるかどうかを判断する。
たとえば、FECパケット作成部25は、当該制御パケットから数えて所定個数以内のRTPパケットを検索し、検索により他の種類の制御パケットの存在を把握すると、当該他の種類の制御パケットを終端パケットとして決定する。
これにより、複数種類の制御パケットが互いに近い位置に存在している場合において、上記複数種類の制御パケットを1つのソースブロックにまとめることができる。
また、FECパケット作成部25は、たとえば所定個数以下のRTPパケットを更に加えることにより所定サイズのソースブロックを埋めることができる場合、上記ソースブロックが埋まるまでRTPパケットをバッファに蓄積する。これにより、配信装置20は、ソースブロックのサイズを変更することなく、ソースブロックを作成することができる。
また、上記ステップS212において設定した区切り位置に基づいて作成したソースブロックに含まれるRTPパケットの個数がたとえば素数である場合、上記ソースブロックにおいて埋まらない領域が発生する場合がある。このような場合、上記埋まらない領域において、たとえばヌルパケットにより構成されるRTPパケットが埋められる。
FECパケット作成部25は、たとえば所定個数以下のRTPパケットを更に加えることにより上記埋まらない領域にRTPパケットを埋めることができると、ヌルパケットにより構成されるRTPパケットを上記領域に埋めたり、ヌルパケットのビット列を計算に含めたりする余分な処理の発生を防ぐことができる。
ところで、非特許文献1に記載の技術では、番組受信装置40は、ある範囲のRTPパケットの受信を完了するまで受信したRTPパケットの復元処理を実行できない。このため、番組受信装置40は、RTPパケットを受信してから当該RTPパケットに含まれるTTSパケットをデコーダへ投入するまでの遅延時間が長くなってしまうという問題がある。
これに対して、本発明の実施の形態に係るストリーム送信装置では、FECパケット作成部25は、再生対象パケットまたは制御パケットである複数のRTPパケットを1または複数のソースブロックとしてまとめ、番組受信装置40において上記ソースブロックを復元するためのFECパケットを、上記ソースブロックに基づいて作成する。そして、FECパケット作成部25は、上記複数のRTPパケットから制御パケットを検索し、検索した結果に基づいて、上記ソースブロックの終端パケットを決定する。
このような構成により、複数のRTPパケットにおける制御パケットの位置に応じた適切な位置の終端パケットを決定することができる。
たとえば、ある制御パケットに対応する再生対象パケットより早いタイミングで当該制御パケットを送信できるようにソースブロックを作成することにより、番組受信装置40は、先んじて受信した制御パケットに基づく番組の情報を再生させるための準備、および再生対象パケットの復元処理を並行して行うことができる。
これにより、ソースブロックに含まれるRTPパケットの受信が完了するまでRTPパケットの復元処理を実行できない番組受信装置40において、RTPパケットを受信してから、受信したRTPパケットに含まれる番組の情報を再生するまでの遅延時間の増大を防ぐことができる。
また、本発明の実施の形態に係るストリーム送信装置では、FECパケット作成部25は、送信順に並べられた再生対象パケットおよび制御パケットについて、制御パケットから数えてn(nはゼロ以上の整数)個後のRTPパケットである終端パケットまでを上記ソースブロックに含め、終端パケットより後のRTPパケットを次のソースブロックに含める。
このような構成により、再生対象パケットを含むソースブロックを送信する前に、対応の制御パケットを含む別のソースブロックを送信することができる。
これにより、番組受信装置40は、再生対象パケットに先んじて制御パケットを受信することができる。
また、本発明の実施の形態に係るストリーム送信装置では、FECパケット作成部25は、送信順に並べられた再生対象パケットおよび制御パケットについて、制御パケットまでを上記ソースブロックに含め、制御パケットより後のRTPパケットを次のソースブロックに含める。
このような構成により、複数のRTPパケットを、制御パケットの直後の位置において区切られた、2つの連続したソースブロックにまとめることができる。
これにより、番組受信装置40は、制御パケットを含むソースブロックから当該制御パケットを取得する場合に、当該ソースブロックの最後尾における1または複数のパケットを取得するだけで、制御パケットを容易に取得することができる。
また、本発明の実施の形態に係るストリーム送信装置では、FECパケット作成部25は、送信順に並べられた複数のRTPパケットから制御パケットを検索する。そして、FECパケット作成部25は、検索した制御パケットから数えて所定個数以内に他の種類の制御パケットが存在する場合には、当該他の種類の制御パケットを終端パケットとし、検索した制御パケットから数えて所定個数以内に他の種類の制御パケットが存在しない場合には、検索した制御パケットを終端パケットとする。
このような構成により、複数種類の制御パケットが連続している、または互いに近い位置に存在している場合において、上記複数種類の制御パケットを1つのソースブロックにまとめることができる。
これにより、配信装置20および番組受信装置40は、一方の種類の制御パケットを含むソースブロック、およびもう一方の種類の制御パケットを含むソースブロックの、2つのソースブロックの処理を、1つのソースブロックの処理にまとめることができるので、処理を軽減することができる。
また、本発明の実施の形態に係るストリーム送信装置では、複数種類の制御パケットは、番組に対応して生成され、対応の番組の再生対象パケットの識別子を含むPMTパケット、および1または複数のPMTパケットの識別子を含むPATパケットを含む。
このように、PATパケットに基づいてPMTパケットを特定し、特定したPMTパケットに基づいて上記番組の情報を再生させるための準備をおこなうことができる。
これにより、番組受信装置40は、上記PMTパケットに基づく上記番組の再生の準備、および再生対象パケットの復元処理を並行して行うことができる。
なお、本発明の実施の形態に係るストリーム送信装置は、1または複数の番組の情報を含む複数のTTSパケットをRTPパケットに含めた上で、当該RTPパケットを受信側の装置へ送信する構成であるとしたが、これに限定するものではない。たとえば、ストリーム送信装置は、複数のTTSパケットをRTPパケットに含めずに、当該TTSパケットを受信側の装置へ送信してもよい。この場合における制御パケットは、PATパケットおよびPMTパケットとなり、また、再生対象パケットは、PATパケットおよびPMTパケット以外のパケットとなる。
また、本発明の実施の形態に係るストリーム送信装置は、ストリームの通常再生における処理を行なう構成であるとしたが、これに限定するものではない。ストリーム送信装置は、たとえばIフレームTS方式による早送り再生または巻き戻し再生等のトリック再生における処理を行う構成であってもよい。
また、本発明の実施の形態に係るストリーム送信装置は、所定サイズのソースブロックを用いる構成であるとしたが、これに限定するものではない。ストリーム送信装置は、たとえば画像データの種類に応じてソースブロックのサイズを変更できるような構成であってもよい。
また、本発明の実施の形態に係るストリーム送信装置は、IPTVに対応するサーバであり、番組の情報を含むパケットを配信するVODサービスを行う構成であるとしたが、これに限定するものではない。ストリーム送信装置は、パケット単位でFEC処理が行われる系であれば、上記構成でなくてもよい。
また、本発明の実施の形態に係るストリーム送信装置は、PATパケットまたはPMTパケットに基づいてソースブロックを区切る位置を判断したが、これに限定するものではない。ストリーム送信装置は、たとえば同じ内容のPATパケットまたはPMTパケットが再送される場合において、送信済みであるPATパケットまたはPMTパケットを、ソースブロックを区切る位置の判断に用いない構成であってもよい。
また、本発明の実施の形態に係るストリーム送信装置は、MPEG2−TS規格に従うストリームの処理を行なう構成であるとしたが、これに限定するものではない。他の規格に従うストリームの処理を行なう構成であってもよい。
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。