JP4088956B2 - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP4088956B2 JP4088956B2 JP2002322087A JP2002322087A JP4088956B2 JP 4088956 B2 JP4088956 B2 JP 4088956B2 JP 2002322087 A JP2002322087 A JP 2002322087A JP 2002322087 A JP2002322087 A JP 2002322087A JP 4088956 B2 JP4088956 B2 JP 4088956B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- information processing
- processing apparatus
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Detection And Prevention Of Errors In Transmission (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Description
【発明の属する技術分野】
本発明は情報処理装置に関し、特に、より好適にパケットデータを取得し、データの再生を行うことができるようにした、情報処理装置に関する。
【0002】
【従来の技術】
近年、ブロードバンド通信網の発達などにより、インターネットに代表されるネットワークを介して、ユニキャストやマルチキャストでの、音声や映像等のデータのストリーミング配信やリアルタイムな放送などが数多く行われるようになってきた。
【0003】
従来、このようなネットワークを介した通信において、UDP/IP(User Datagram Protocol/Internet Protocol)を用いたユニキャストやマルチキャスト等の配信に、ブロック内のデータ誤りを検出し訂正するブロック符号の1つであるリードソロモン符号等を用いたFEC(Forward Error Correction)を併用した配信方式が提案されている(例えば、非特許文献1乃至3参照)。
【0004】
リードソロモン符号によるパケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0005】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0006】
しかしながら、この場合、ガロア体上の加減算、乗算、または除算が必要であり、復元等の処理に要する負荷が大きくなってしまう場合があった。
【0007】
一方、FECの符号化方式として、リードソロモン符号方式の代わりに、EOR(exclusive OR)演算を用いて冗長パケットを生成する方式がある(例えば、特許文献1参照)。
【0008】
EOR演算を用いた、パケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、EOR演算を用いて、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0009】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0010】
【非特許文献1】
米山 清二郎、外2名、“Reliable Multicast - Using FEC on IP version6”、[online]、平成11年12月15日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL:http://www.internetconference.org/ic99/program.html>
【0011】
【非特許文献2】
窪 貴志、“信頼性マルチキャストを用いた実時間メディア伝送に関する考察”、[online]、平成13年2月18日、奈良先端科学技術大学院大学修士論文・課題研究発表会、[平成14年10月8日検索]、インターネット,<URL: http://isw3.aist-nara.ac.jp/IS/MasterThesis/2001/0051031.html>
【0012】
【非特許文献3】
米山 清二郎、“FEC on IPv6 for Reliable Multicast”、[online]、平成12年11月1日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL: http://www.csl.sony.co.jp/ic2000/papers/S03_01.pdf>
【0013】
【特許文献1】
特開2001−189665号公報(第25−26ページ、図3)
【0014】
【発明が解決しようとする課題】
しかしながら、以上のような方法においては、実際にロスしたパケットの復元処理を実行するまで復元可能であるか否かを判定することができず、再送処理の必要が生じた場合の遅延時間が長くなってしまうという課題があった。
【0015】
特に、ストリーミング配信やリアルタイムのデータ配信において、受信側の装置は、順次送信されるデータを受信し、再生しなければならず、復元処理を短時間で行わなければならない。従って、上述したような遅延時間の増大は、再生能力に大きく影響する。
【0016】
本発明はこのような状況に鑑みてなされたものであり、より好適にパケットデータを取得し、データの再生を行うことができるようにしたものである。
【0017】
【課題を解決するための手段】
本発明の第1の情報処理装置は、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、受信手段により受信できなかったデータパケットが復元可能であるか否かを判定する可能性判定手段と、可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送を他の情報処理装置に要求する要求手段と、可能性判定手段による判定結果に基づいて、復元可能である場合、受信手段により受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットを復元する復元手段とを備え、復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、連立一次方程式を解くことを特徴とする。
【0018】
前記冗長パケットは、所定の大きさに分割された配信用データであるブロック毎に、同一のブロックに対応する、任意に選択された複数のデータパケットを用いて生成されるようにすることができる。
【0019】
前記データパケットおよび冗長パケットは、ブロック単位で他の情報処理装置より送信されるようにすることができる。
【0020】
前記受信手段は、同一のブロックのデータパケットおよび冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備えるようにすることができる。
【0021】
前記受信手段により受信できなかったデータパケットが存在するか否かを判定する存在判定手段をさらに備えるようにすることができる。
【0022】
前記冗長パケットの生成に関する情報を他の情報処理装置と共有するようにすることができる。
【0023】
前記可能性判定手段は、連立一次方程式の係数を表す行列の成分に基づいて、受信手段により受信できなかったデータパケットを復元可能であるか否かを判定するようにすることができる。
【0024】
前記可能性判定手段により復元不可能と判定されたデータパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、要求手段は、余裕判定手段により再送処理を行う余裕があると判定された場合、受信できなかったデータパケットの再送を他の情報処理装置に要求するようにすることができる。
【0025】
本発明の第2の情報処理装置は、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、受信手段により受信できなかったデータパケットが復元可能であるか否かを判定する可能性判定手段と、可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送を他の情報処理装置に要求する要求手段と、可能性判定手段による判定結果に基づいて、復元可能である場合、受信手段により受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットを復元する復元手段とを備え、復元手段は、行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、連立一次方程式を解くことを特徴とする。
【0026】
前記冗長パケットは、所定の大きさに分割された配信用データであるブロック毎に、同一のブロックに対応する、任意に選択された複数のデータパケットを用いて生成されるようにすることができる。
【0027】
前記データパケットおよび冗長パケットは、ブロック単位で他の情報処理装置より送信されるようにすることができる。
【0028】
前記受信手段は、同一のブロックのデータパケットおよび冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備えるようにすることができる。
前記受信手段により受信できなかったデータパケットが存在するか否かを判定する存在判定手段をさらに備えるようにすることができる。
前記冗長パケットの生成に関する情報を他の情報処理装置と共有するようにすることができる。
前記可能性判定手段は、連立一次方程式の係数を表す行列の成分に基づいて、受信手段により受信できなかったデータパケットを復元可能であるか否かを判定するようにすることができる。
前記可能性判定手段により復元不可能と判定されたデータパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、要求手段は、余裕判定手段により再送処理を行う余裕があると判定された場合、受信できなかったデータパケットの再送を他の情報処理装置に要求するようにすることができる。
【0029】
本発明の第1の情報処理装置においては、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットが受信され、受信できなかったデータパケットが復元可能であるか否かが判定され、その判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送が他の情報処理装置に要求され、復元可能である場合、受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法で解くことによって、受信できなかったデータパケットが復元される。
本発明の第2の情報処理装置においては、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットが受信され、受信できなかったデータパケットが復元可能であるか否かが判定され、その判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送が他の情報処理装置に要求され、復元可能である場合、受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を、行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法で解くことによって、受信できなかったデータパケットが復元される。
【0030】
【発明の実施の形態】
図1は、本発明を適用したデータ配信システムの基本的な構成例を表す図である。
【0031】
図1において、サーバ1は、ストリーミング配信用の、画像や音声等のストリーミングデータを蓄積しており、インターネット等に代表されるネットワーク2を介して、配信を要求したクライアント3−1または3−2に対して、ストリーミング配信サービスを提供する。サーバ1は、クライアント3−1または3−2より供給された配信要求に基づいて、ユニキャストまたはマルチキャストでデータを配信する。
【0032】
また、サーバ1は、カメラやマイク等の図示せぬ外部入力装置を介して入力された画像や音声等のデータを送信用のデータに変換し、配信を要求したクライアント3−1または3−2に、ネットワーク2を介してリアルタイムに配信(以下、LIVE配信と称する)する。
【0033】
クライアント3−1および3−2は、ユーザに操作され、ネットワーク2を介してサーバ1にアクセスし、ユーザに指示されたデータの配信を要求する。そして、その要求に基づいて、サーバ1が要求されたデータのストリーミング配信またはLIVE配信を行うと、クライアント3−1および3−2は、そのデータを受信し、処理を行い、受信したデータに対応する画像をディスプレイに表示したり、受信したデータに対応する音声をスピーカより出力したりする。
【0034】
なお、クライアント3−1,3−2を個々に区別する必要がない場合、単にクライアント3と称する。
【0035】
サーバ1は、後述するように、上述したストリーミング配信やLIVE配信において、UDP(User Datagram Protocol)/IP(Internet Protocol)プロトコルに、EORによって形成された冗長パケットによるFECと再送制御を併用して、データを配信する。すなわち、サーバ1は、データをパケット化するとともに、パケット化されたデータ(以下、データパケットと称する)より誤り訂正用の冗長パケットを生成し、それらのデータパケットおよび冗長パケットをクライアント3に配信する。
【0036】
データパケットおよび冗長パケットを受信したクライアント3は、誤り訂正処理を行い、受信したパケットからロスしたデータパケットを復元する。復元不可能であり、かつ、再送が可能な場合、クライアント3は、そのデータパケットの再送を、ネットワーク2を介してサーバ1に要求する。サーバ1は、その再送要求を取得すると、要求されたデータパケットを要求元であるクライアント3に再送する。クライアント3は、再送されたデータパケットと、既に取得されている他のデータパケットを用いて、データを再生する。
【0037】
図2は、図1に示すサーバ1の構成例を示すブロック図である。
【0038】
図2において、CPU(Central Processing Unit)11は、ROM(Read Only Memory)12に記憶されているプログラム、または記憶部33からRAM(Random Access Memory)13にロードされたプログラムに従って各種の処理を実行する。RAM13にはまた、CPU11が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0039】
パケット生成部14は、CPU11に制御され、記憶部33または通信部34より供給された配信用のデータ(以下、配信データと称する)をパケット化してデータパケットを生成し、そのデータパケットを通信部34に供給する。また、パケット生成部14は、CPU11に制御され、後述するように、EOR演算を用いて、生成したデータパケットより誤り訂正用の冗長パケットを生成する。
【0040】
CPU11、ROM12、RAM13、およびパケット生成部14は、バス20を介して相互に接続されている。このバス20にはまた、入出力インタフェース30も接続されている。
【0041】
入出力インタフェース30には、キーボードやマウスなどよりなる入力部31、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、およびスピーカなどよりなる出力部32、ハードディスクなどにより構成される記憶部33、並びに、モデム、LANカード、およびターミナルアダプタなどにより構成される通信部34が接続されている。
【0042】
記憶部33には、入力部31または通信部34を介して取得された配信データ、並びに、各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0043】
通信部34は、ネットワーク2を介しての通信処理を行う。例えば、通信部34は、CPU11に制御され、パケット生成部14より供給されたストリーミング配信用データパケットを、UDPやRTP(Real-time Transport Protocol)/RTSP(Real Time Streaming Protocol)等の所定のプロトコルを用いて配信する。また、通信部34は、CPU11に制御され、接続された外部入力装置より供給されるデータを取得し、RAM13、パケット生成部14、または記憶部33に供給する。
【0044】
入出力インタフェース30にはまた、必要に応じてドライブ40が接続され、磁気ディスク41、光ディスク42、光磁気ディスク43、或いは半導体メモリ44などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部33にインストールされる。
【0045】
以上において、バス20に接続されるパケット生成部14がデータパケットおよび冗長パケットの生成処理を行うように説明したが、これに限らず、パケット生成部14において行われるパケット生成処理の全部または一部が、通信部64またはCPU11において実行されるようにしてもよい。
【0046】
図3は、図1に示すクライアント3の構成例を示すブロック図である。
【0047】
図3において、CPU61は、ROM62に記憶されているプログラム、または記憶部83からRAM63にロードされたプログラムに従って各種の処理を実行する。RAM63にはまた、CPU61が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0048】
データ再生部64は、CPU61に制御され、通信部84において受信したデータパケット、およびパケット復元部65において復元されたデータパケットより配信データを再構成し、MPEG(Moving Picture Experts Group)方式やATRAC3(Adaptive TRansform Acoustic Coding 3)(登録商標)方式等でデータがエンコードされている場合、対応する方式でデコードするなどしてデータを再生し、その再生されたデータ(以下、再生データと称する)をCPU61、RAM62、出力部82、または記憶部83に供給する。
【0049】
パケット復元部65は、CPU61に制御され、後述するように、通信部84において受信した冗長パケットを用いて、ロスしたデータパケットの復元処理を行う。そして、パケット復元部65は、復元したデータパケットをCPU61、RAM63、または、データ再生部64に供給する。また、パケット復元部65は、復元処理の前に、ロスしたパケットが復元可能であるか否かの判定処理も行い、判定結果をCPU61に供給する。
【0050】
CPU61、ROM62、RAM63、データ再生部64、およびパケット復元部65は、バス70を介して相互に接続されている。このバス70にはまた、入出力インタフェース80も接続されている。
【0051】
入出力インタフェース80には、キーボードやマウスなどよりなる入力部81、CRTやLCDなどよりなるディスプレイ、およびスピーカなどよりなる出力部82、ハードディスクなどにより構成される記憶部83、並びに、モデム、LANカード、およびターミナルアダプタなどにより構成される通信部84が接続されている。
【0052】
入力部81は、キーボードやマウスなどにより構成され、ユーザからの要求を受け付け、その情報をCPU61やRAM62に供給する。出力部82は、データ再生部64などより供給されたデータに対応する画像をディスプレイに表示したり、供給されたデータに対応する音声をスピーカより出力したりする。
【0053】
記憶部83には、入力部31または通信部34を介して供給された各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0054】
通信部84は、ネットワーク2を介しての通信処理を行う。例えば、通信部84は、ネットワーク2を介して、サーバ1よりストリーミング配信されたデータパケットや冗長パケットを、UDPやRTP/RTSP等の所定のプロトコルを用いて受信し、受信したパケットをCPU61、RAM63、データ再生部64、またはパケット復元部65等に供給する。また、通信部84は、配信要求やパケットの再送要求などの、CPU61などより供給された各種の情報を、ネットワーク2を介してサーバ1に供給する。
【0055】
入出力インタフェース80にはまた、必要に応じてドライブ90が接続され、磁気ディスク91、光ディスク92、光磁気ディスク93、或いは半導体メモリ94などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部83にインストールされる。
【0056】
以上において、バス70に接続されたデータ再生部64において、配信データの再構成やデコード等の再生処理が行われるように説明したが、これに限らず、上述したデータ再生部64が行う処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0057】
同様に、バス70に接続されたパケット復元部65において行われる、ロスしたパケットの復元処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0058】
次に、サーバ1による配信データのストリーミング配信処理について説明する。クライアント3より配信要求を、ネットワーク2を介して取得したサーバ1のCPU11は、要求された配信データを記憶部33より取得し、パケット生成部14に供給し、データ送信処理を開始する。図4のフローチャートを参照して、サーバ1によるデータ送信処理を説明する。
【0059】
配信データを供給されたパケット生成部14は、取得した配信データを、所定の大きさのブロック単位で処理する。パケット生成部14は、ステップS1において、1ブロック分の配信データを分割してパケット化し、データパケットを生成する。
【0060】
図5は、パケット生成部14において生成される1ブロック分のデータパケットおよび冗長パケットの構成例を示す模式図である。図5においてEOR演算は、「+」を用いて表す。
【0061】
図5において、データパケット101は、パケット101−1乃至101−Nにより構成される。各パケットには、1ブロック分の配信データが所定の大きさで分割されたデータD1乃至DNが1つずつ含まれている。
【0062】
すなわち、図4のステップS1において、パケット生成部14は、1ブロック分の配信データDをN個のデータD1乃至DNに分割し、各データをパケット化してパケット101−1乃至パケット101−Nを生成する。
【0063】
そして、パケット生成部14は、処理をステップS2に進め、生成したデータパケット101の中から任意に複数のパケットを選択し、それらのパケットに含まれるデータのEOR演算を行い、誤り訂正用の冗長パケットを生成する。
【0064】
図5において、冗長パケット102は、パケット102−1乃至102−Mにより構成される。パケット生成部14は、データD1乃至DNの中から複数個のデータを選択し、それらの値のEOR演算を行う。パケット生成部14は、この処理をM回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のパケットであるパケット102−1乃至102−Mを生成する。
【0065】
すなわち、パケット生成部14は、図4のステップS1およびステップS2の処理において、供給された1ブロック分の配信データDをN個に分割してデータD1乃至DNを生成した後、以下の式(1)に示されるような演算を行い、誤り訂正用のM個のデータを生成して、送信データS1乃至SN+Mを算出する。
【0066】
【数1】
【0067】
式(1)において、右辺第1項はN+M行N列の行列であり、その第1行乃至第N行はデータパケット101に対応する送信データS1乃至SNを生成するための係数であり、第N+1行乃至第N+M行は冗長パケット102に対応する送信データSN+1乃至SN+Mを生成するための係数である。この第N+1行乃至第N+M行の各成分の値は、「0」または「1」のいずれかが任意に設定される。なお、式(1)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0068】
式(1)の左辺の送信データS1乃至SNは、それぞれ、右辺第2項のデータD1乃至DNに対応し、送信データSN+1乃至SN+Mは、それぞれ、データD1乃至DNより任意に選択されたデータのEOR演算結果である。
【0069】
式(1)の右辺第1項の行列は、パケット生成部14により生成される。この行列の第1行乃至第N行の各成分は、N行N列の単位行列を形成するように構成され、第N+1行乃至第N+M行の各成分は、例えば、ランダム関数等を用いて、「0」または「1」のいずれかの値がランダムに設定される。なお、EOR演算されるデータの個数はいくつであってもでもよいが、データDN+1乃至DN+Mの各データ間でその個数を統一したり、所定の個数以上に限定したりする等、個数の範囲に制限を設けるようにしてもよい。
【0070】
なお、式(1)の右辺第1項の行列は、演算に用いられるまでに生成されていれば、どのようなタイミングで生成されてもよく、データ送信処理を行う前より予め準備されていてもよいし、演算の際に算出されるようにしてもよい。また、この行列は、ブロック毎に異なる成分の行列を使用するようにしてもよいし、全てのブロックにおいて共通の行列を使用するようにしてもよい。
【0071】
さらに、演算に使用された式(1)の右辺第1項の行列は、後述するように、データを受信するクライアント3によるパケット復元処理においても使用される。すなわち、データの授受を行うサーバ1およびクライアント3において、同じブロックに対しては、共通の行列を用いて処理できるように、式(1)の右辺第1項の行列に関する情報を共有する必要がある。この情報の共有は、クライアント3がサーバ1にデータの配信を要求する際に行うようにしてもよいし、サーバ1で使用された式(1)の右辺第1項の行列に関する情報をデータパケット101や冗長パケット102に付加することによって行うようにしてもよいし、上述した以外の方法であってもよい。
【0072】
この、式(1)の右辺第1項の行列に関する情報は、その行列の各成分の内容を直接表す情報であってもよいし、間接的に行列の各成分の内容を表す情報であってももちろんよい。例えば、その行列の各成分がランダム関数によって決定されている場合、そのランダム関数の「種」を表す情報を式(1)の右辺第1項の行列に関する情報とすることも可能である。
【0073】
なお、EOR演算するデータの選択方法(すなわち、式(1)の右辺第1項の行列の第N+1行乃至第N+M行の各成分の値の決定方法)は、上述したランダムに選択する以外の方法であってもよく、例えば、複数の所定の組み合わせを用いる等、どのような方法であってもよい。さらに、パケット生成部14が生成した誤り訂正用のパケットの性能評価を行い、それらの中から性能の良いパケットの組み合わせを選択し、冗長パケット102として採用するようにしてもよい。
【0074】
また、生成される冗長パケット102のパケット数(M個)は、実用的な範囲であればいくつであってもよいが、1ブロックのデータに対して冗長パケット数を増加させると、データパケットの復元能力が上がるとともに、配信されるデータ量や処理に必要な負荷が増加するという特徴があり、システムやネットワーク等の環境や配信データの内容等に合わせて、最適な冗長パケット数を選択するのが望ましい。
【0075】
以上のようにして、式(1)の演算により誤り訂正用のデータを生成したパケット生成部14は、生成された各データをパケット化し、冗長パケット102を生成する。
【0076】
図4に戻り、ステップS2の処理を行い、冗長パケット102を生成したパケット生成部14は、CPU11に制御され、生成されたデータパケット101および冗長パケット102を通信部34に供給する。
【0077】
ステップS3において、通信部34は、取得したデータパケット101および冗長パケット102を、所定のプロトコルに従い、ネットワーク2を介して配信先のクライアント3に送信する。
【0078】
そして、ステップS4においてCPU11は、データ送信処理を終了するか否かを判定する。未送信の配信データが存在し、終了しないと判定した場合、CPU11は、ステップS1に処理を戻し、次のブロックに対して、上述した処理を繰り返す。また、例えば、要求された配信データの送信が完了したり、ユーザやクライアント3より配信停止の指示を取得したりして、データ送信処理を終了すると判定した場合、CPU11は、データ送信処理を終了する。
【0079】
以上のように、配信データは、サーバ1により、所定のブロックごとにデータ送信処理を施され、パケット単位でクライアント3に配信される。
【0080】
図6は、サーバ1よりクライアント3に送信されるパケットの様子の例を示す模式図である。図6Aに示されるように、サーバ1は、ブロック毎に生成されたデータパケットおよび冗長パケットを、ブロック毎に送信する。
【0081】
すなわち、サーバ1は、第(T−1)ブロックの最後の冗長パケット111−Mに続いて、第Tブロックのデータパケット112−1乃至112−N、および冗長パケット113−1乃至113−Mを送信する。
【0082】
そして、サーバ1は、第Tブロックの最後の冗長パケット113−Mを送信すると、次のブロックである第(T+1)ブロックのデータパケットを、データパケット114−1、114−2、・・・という具合に順次送信する。
【0083】
パケットの送信先であるクライアント3は、通信部84において各パケットを受信するが、ネットワーク2等のパケット転送経路上において、図6Bに示されるようなクライアント3に受信されたパケットをブロック毎に整列させた例のように、一部のパケットをロスしている場合がある。図6Bにおいて、クライアント3は、第Tブロックのデータパケット112−1乃至112−4、並びに冗長パケット113−2をロスしている。
【0084】
クライアント3は、後述するようにデータ受信処理を行い、受信した冗長パケット113−1、113−3乃至113−Mを用いて、このようにロスしたデータパケット112−1乃至112−4を復元することが可能か否かを判定し、可能である場合は復元処理を行い、不可能である場合はサーバ1にロスしたパケットの再送を要求する。
【0085】
図6Bの第Tブロックに対する処理を例にして、クライアント3によるデータ受信処理を、図7のフローチャートを参照して説明する。
【0086】
配信データの送信先であるクライアント3の通信部84は、ステップS21において、パケットの受信制御処理を行い、ネットワーク2を介してサーバ1より供給された第Tブロックのデータパケット112−5乃至112−N、並びに冗長パケット113−1、113−3乃至113−Mを順次取得し、バス70を介してデータ再生部64に供給する。
【0087】
なお、受信されたパケットは、通信部84に内蔵されるRAMに一時保持され、後述するステップS22の処理において、対象ブロックのパケット受信が完了したと判定された場合に、ブロック毎にデータ再生部64に供給されるようにしてもよい。また、受信されたパケットがCPU61に内蔵されるRAM、RAM63、または記憶部83に保持されるようにしてももちろんよい。さらに、受信されたパケットは、データ再生部64に供給される際に、パケット復元部65にも供給されるようにしてもよい。
【0088】
ステップS22において、CPU61は、通信部84を制御して、受信対象ブロックのパケット受信が完了したか否かを判定する。受信対象ブロックについて未受信のパケットが存在し、受信対象ブロックのパケット受信が完了していないと判定した場合、CPU61は、処理をステップS21に戻し、パケットの受信制御処理を繰り返す。
【0089】
ステップS22において、受信対象ブロックのパケットを全て受信し、受信が完了したと判定した場合、CPU61は、ステップS23に処理を進める。
【0090】
なお、パケットが受信される順番はパケットの到着順であり、送信された順序でパケットが受信されるとは限らない。従って、CPU61は、予め定められた所定の時間内において上述したようにステップS22の判定処理を行う。ステップS21およびS22の処理を繰り返し、所定の時間が経過した場合、CPU61は、ステップS22において、受信対象ブロックのパケット受信が完了したと判定し、処理をステップS23に進める。
【0091】
例えば、図6Bに示されるように、第Tブロックのデータパケット112−1乃至112−4をロスしており、所定の時間が経過しても、受信対象ブロックについて未受信のパケットが存在する場合、CPU61は、それらのパケットをロスしたと判定し、対象ブロックのパケット受信が完了したと判定し、ステップS23に処理を進める。
【0092】
ステップS23において、CPU61に制御されたデータ再生部64は、供給されたデータパケットが1ブロック分揃っているかを確認し、ロスしたデータパケットが存在するか否かを判定する。ロスしたデータパケットが存在すると判定した場合、データ再生部64は、取得したデータパケットおよび冗長パケット、並びに、式(1)の右辺第1項に関する情報をパケット復元部65に供給し、処理をステップS24に進める。
【0093】
ステップS24において、データ再生部64より各種のデータを取得したパケット復元部65は、ロスしたデータパケットについてパケット復元可能性判定処理を行い、処理結果をCPU61に供給する。パケット復元可能性判定処理の詳細については、図8乃至図10のフローチャートを参照して後述する。
【0094】
CPU61は、ステップS25において、取得したパケット復元可能性判定処理結果に基づいて、ロスしたデータパケットが復元可能であるか否かを判定し、復元可能であると判定した場合、CPU61は、処理をステップS26に進める。
【0095】
ステップS26において、パケット復元部65は、CPU61に制御され、ロスしたデータパケット復元処理を行う。データパケット復元処理の詳細については、図11および図12のフローチャートを参照して説明する。
【0096】
データパケット復元処理によりロスしたデータパケットを復元すると、パケット復元部65は、復元したデータパケットをデータ再生部64に供給する。
【0097】
CPU61に制御されたデータ再生部64は、ステップS27において、取得したデータパケット群より1ブロック分の配信データを再生し、出力部82等に供給する。配信データを供給された出力部82は、取得した配信データに対応する画像や音声等を所定の出力方法で出力する。
【0098】
CPU61は、ステップS28において、データ受信処理を終了するか否かを判定し、配信されるデータの受信が完了しておらず、終了しないと判定した場合、処理をステップS21に戻し、次のブロックに対して、それ以降の処理を繰り返す。
【0099】
ステップS28において、配信データの受信が完了したり、ユーザより処理中止の指示を受け付けたりしてデータ受信処理を終了すると判定した場合、CPU61は、ステップS29に処理を進めて終了処理を行った後、データ受信処理を終了する。
【0100】
ステップS23において、対象ブロックのデータパケットを全て受信しており、ロスしたデータパケットが存在しないと判定した場合、データ再生部64は、処理をステップS26に進め、データパケット復元処理を実行する。
【0101】
CPU61は、ステップS25において、例えば、ロスしたパケットが多すぎる場合等、ロスしたパケットが復元可能でないと判定した場合、処理をステップS30に進め、ロスしたパケットの再送が可能であるか否かを判定する。
【0102】
ストリーミング配信において、通常、パケットの転送レートは、数回の再送が有り得ることを前提に設定されている。従って、サーバ1やネットワーク2の負荷状況等が良好であり、かつ、対象ブロックに対するパケット受信制御処理を終了するまでの時間(ステップS22において考慮される所定の時間)が十分残されている場合、クライアント1は、ロスしたデータパケットの再送を要求することができる。
【0103】
ステップS30において、例えば、要求するデータパケット数が予め定められた所定の回数以上である場合、サーバ1やネットワーク2の負荷が大きい場合、または、再送に必要な時間が残されていない場合等において、再送が不可能であると判定した場合、CPU61は、処理をステップS27に戻し、それ以降の処理を繰り返す。なお、この場合、対象ブロックのデータパケットが揃っていないので、このブロックの再生処理はエラーになり、例えば、画像データの場合、次のブロックのデータが再生されるまで、その再生画像はフリーズしたりする。
【0104】
また、ステップS30において、再送が可能であると判定された場合、CPU61は、処理をステップS31に進め、通信部84を制御して、ロスしたデータパケットの再送を要求する。そして、CPU61は、処理をステップS21に戻し、要求したデータパケットを受信するために、現在の対象ブロックに対して、それ以降の処理を繰り返す。
【0105】
以上のようにして、クライアント3は、サーバ1より供給されるパケットを受信し、サーバ1によるストリーミング配信やライブ放送などを出力することができる。
【0106】
次に、図7のステップS24において実行されるパケット復元可能性判定処理について説明する。
【0107】
受信したデータパケットおよび冗長パケットを取得したパケット復元部65は、ロスしたデータパケットを復元する前に、復元が可能であるか否かを判定する。
【0108】
クライアント3がK個のデータパケット、および、サーバ1より送信されたM個の冗長パケットのうち、L個の冗長パケットをロスしたものとし、ロスしたデータパケットに含まれるデータをP1乃至PKとすると、パケット復元部65によるデータパケットの復元は、以下に示す式(2)の連立一次方程式において、P1乃至PKの解を求めることによって行われる。
【0109】
【数2】
【0110】
なお、式(2)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0111】
式(2)において、右辺第1項の行列の成分Q1乃至QM-Lは、後述するように、受信したデータパケットおよび冗長パケットに含まれるデータより算出された変数である。
【0112】
式(2)の左辺第1項は、サーバ1と共有している式(1)の右辺第1項に関する情報に基づいて生成されたM−L行K列の行列であり、P1乃至PKの係数を表す行列である。
【0113】
パケット復元部65は、サーバ1と共有する式(1)の右辺第1項に関する情報に基づいて、式(1)の右辺第1項の行列の成分の中から、ロスしたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(2)の左辺第1項の行列を生成する。
【0114】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(1)の右辺第1項の行列の、第N+1行並びに第N+3行乃至第N+M行の、第1列乃至第4列を成分とする行列を生成する。
【0115】
この式(2)の左辺第1項の行列の各成分は、上述したように、P1乃至PKの係数を表している。従って、この式(2)の左辺第1項の行列において、全ての成分の値が「0」である列が存在する場合、対応する変数P1乃至PKの解を求めることができない。また、この式(2)の左辺第1項の行列の列数Kが行数M−Lより大きい場合、方程式の数より変数の数が多いことになり、パケット復元部65は、変数Pの解を求めることができない。
【0116】
このように、パケット復元部65は、式(2)の左辺第1項の行列に基づいて、簡易的に変数P1乃至PKの解を算出可能か否かを判定することができる。
【0117】
図8のフローチャートを参照して、上述したパケット復元可能性判定処理の詳細について説明する。なお、以下において、式(2)の左辺第1項の行列の行数をM−Lとし、列数をKとし、X行Y列の成分の値をAXYとする。
【0118】
最初に、ステップS51において、パケット復元部65は、式(2)の左辺第1項の行列の、行数M−Lの値が列数Kの値以上であるか否かを判定し、行数M−Lの値が列数Kの値以上であると判定した場合、処理をステップS52に進める。
【0119】
パケット復元部65は、ステップS52において、変数Yの値を「0」に設定し、ステップS53において、変数Xの値を「0」に設定し、初期化する。
【0120】
ステップS54において、パケット復元部65は、式(2)の左辺第1項の行列について、成分AXYの値が「1」であるか否かを判定する。成分AXYの値が「0」であり、値が「1」でないと判定した場合、パケット復元部65は、処理をステップS55に進め、変数Xの値に「1」を加算し、対象を次の行の成分に変更する。
【0121】
そして、パケット復元部65は、ステップS56において、変数Xの値が行数M−L以下であるか否かを判定し、成分AXYが存在するか否かを判定する。変数Xの値が行数M−L以下であると判定した場合、パケット復元部65は、処理をステップS54に戻し、新たな行の成分AXYについてそれ以降の処理を繰り返す。
【0122】
パケット復元部65は、ステップS56において、変数Xの値がM−Lより大きいと判定した場合、第Y列には、値が「1」である成分AXYが存在しないので、処理をステップS57に進め、復元不可能フラグを立てる。そして、パケット復元部65は、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0123】
また、ステップS51において、式(2)の左辺第1項の行列の列数Kが行数M−Lより大きく、M−LがK以上ではないと判定した場合、パケット復元部65は、処理をステップS57に進め、復元不可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0124】
上述したステップS24において、成分AXYの値が「1」であると判定した場合、パケット復元部65は、処理をステップS58に進め、変数Yの値に「1」を加算し、対象とする列を次の列に変更する。そして、パケット復元部65は、ステップS59において、変数Yの値は列数K以下か否かを判定し、成分AXYが存在するか否かを判定する。
【0125】
変数Yの値が列数K以下であると判定した場合、パケット復元部65は、処理をステップS53に戻し、次の列に対して、それ以降の処理を繰り返す。
【0126】
変数Yの値が列数Kより大きいと判定した場合、全ての列について値が「1」である成分AXYが存在するので、パケット復元部65は、ステップS60において、復元可能フラグを立てる。そして、パケット復元部65は、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0127】
以上のようにして、パケット復元部65は、データパケット復元処理の前にパケット復元可能性判定処理を行う。これにより、クライアント3は、データパケット復元処理を行う前に、サーバ1に対してロスしたデータパケットの再送を要求することができる。
【0128】
以上において、パケット復元部65は、式(2)に示される連立一次方程式を解くことによってロスしたデータパケットを復元するように説明したが、その際、パケット復元部65は、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を利用して解を求める。ピボット選択を用いたガウス消去法は、前進消去および後退代入などのプロセスにより、方程式に含まれる変数を減らすことにより、解を算出する方法である。
【0129】
この場合、パケット復元部65が、このピボット選択を用いたガウス消去法を用いたデータパケット復元処理の一部を行いながら、ロスしたデータパケットの復元可能性判定処理を行うようにしてもよい。
【0130】
図9のフローチャートを参照して、ピボット選択を用いたガウス消去法を用いたパケット復元可能性判定処理を説明する。
【0131】
最初に、パケット復元部65は、ステップS81において、式(2)の左辺第1項の行列の、行数M−Lの値が列数Kの値以上であるか否かを判定し、行数M−Lの値が列数Kの値以上であると判定した場合、処理をステップS82に進め、変数Yの値を「0」に設定し、初期化する。
【0132】
そして、パケット復元部65は、ステップS83において、第Y列の各成分について、値が「1」である成分を検出し、ステップS84において、その検出結果に基づいて、対象となるY列に値が「1」の成分が存在するか否かを判定する。
【0133】
対象となるY列に値が「1」の成分が存在すると判定した場合、パケット復元部65は、処理をステップS85に進め、その値が「1」となる成分が複数存在するか否かを判定する。
【0134】
複数存在すると判定した場合、パケット復元部65は、ステップS86において、2番目以降に検出された成分を含む行と、最初に検出された成分を含む行との間で、各成分についてEOR演算処理を行い、その演算結果を、演算に用いた2番目以降に検出された成分を含む行に置き換える。すなわち、パケット復元部65は、前進消去のプロセスを行い、対象の列について、最初に検出された成分を含む行以外の行の成分の値を全て「0」にする。
【0135】
例えば、式(2)の左辺第1項の行列の第1行、第3行、第4行、第6行において、値が「1」の成分が検出された場合、パケット復元部65は、第1行と第3行、第1行と第4行、第1行と第6行で、各成分についてEOR演算を行い、それらの演算結果を、それぞれ、元の第3行、第4行、第6行と置き換える。これにより、対象列の第3行、第4行、および第6行の各成分の値は、全て「0」になる。
【0136】
パケット復元部65は、ステップS87において、今回最初に検出された成分を含む行が、次の列に対する処理においてEOR演算処理の対象とならないように、最初に検出された成分を含む行を削除する。
【0137】
ステップS87の処理が完了すると、パケット復元部65は、ステップS88において、変数Yの値に「1」を加算し、対象列を変更し、ステップS89において、変数Yの値が列数K以下であるか否かを判定する。変数Yの値が、列数K以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS83に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0138】
ステップS89において、変数Yの値がKより大きい場合、すなわち、成分AXYが存在しないと判定した場合、全ての列において前進消去の処理を行うことができるので、パケット復元部65は、データパケットの復元処理を行うことができると判定し、処理をステップS90に進め、復元可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0139】
また、ステップS81において、式(2)の左辺第1項の行列の列数Kが行数M−Lより大きく、M−LがK以上ではないと判定した場合、パケット復元部65は、データパケットの復元処理を行うことができないと判定し、処理をステップS91に進め、復元不可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0140】
同様に、ステップS84において、対象の列において、全ての行の成分の値が「0」であり、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、処理をステップS91に進め、復元不可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0141】
さらに、ステップS85において、対象の列において、値が「1」の成分が1つしか存在しないと判定した場合、パケット復元部65は、ステップS86の処理を省略し、ステップS87に処理を進める。
【0142】
以上のようにして、パケット復元部65は、ガウス消去法を利用してパケット復元の可能性を判定する。
【0143】
なお、ステップS87において、削除された行は、パケット復元部65等において保持されるようにし、図7のステップS26におけるデータパケット復元処理の際に利用できるようにしてもよい。
【0144】
また、以上の処理において最後の列については省略するようにしてもよい。すなわち、ステップS89の処理において、パケット復元部65が、変数Yの値がK−1以下であるか否かを判定するようにしてもよい。
【0145】
以上において、パケット復元部65が、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を利用して、式(2)に示される連立一次方程式の解を求めるように説明したが、これに限らず、パケット復元部65が、ガウス消去法を応用した応用ガウス消去法を用いて、式(2)に示される連立一次方程式の解を求めるようにしてもよい。応用ガウス消去法は、後述するように、式(2)に示される全ての連立一次方程式から変数を1つずつ減らしていき、残った最後の変数の解を用いて全ての解を算出する方法である。
【0146】
この場合、パケット復元部65が、この応用ガウス消去法を用いたデータパケット復元処理の一部を行いながら、ロスしたデータパケットの復元可能性判定処理を行うようにしてもよい。
【0147】
図10のフローチャートを参照して、応用ガウス消去法を用いたパケット復元可能性判定処理を説明する。
【0148】
最初に、パケット復元部65は、ステップS111において、式(2)の左辺第1項の行列の、行数M−Lの値が列数Kの値以上であるか否かを判定し、行数M−Lの値が列数Kの値以上であると判定した場合、処理をステップS112に進め、変数Yの値を「0」に設定し、初期化する。
【0149】
そして、パケット復元部65は、ステップS113において、第Y列の各成分について、値が「1」である成分を検出し、ステップS114において、その検出結果に基づいて、対象となるY列に値が「1」の成分が存在するか否かを判定する。
【0150】
対象となるY列に値が「1」の成分が存在すると判定した場合、パケット復元部65は、処理をステップS115に進め、その値が「1」となる成分が複数存在するか否かを判定する。
【0151】
複数存在すると判定した場合、パケット復元部65は、ステップS116において、検出された順番が連続する2つの成分をそれぞれ含む2行間で、各成分についてEOR演算処理を行い、その演算結果を、演算に用いた行のうち、検出された順番が後の行に置き換える。なお、最初に検出された行は、最後に検出された行とのEOR演算処理結果に置き換えられる。すなわち、パケット復元部65は、対象の列の成分の値を全て「0」にする。
【0152】
例えば、式(2)の左辺第1項の行列の第1行、第3行、第4行、第6行において、値が「1」の成分が検出された場合、パケット復元部65は、第1行と第3行、第3行と第4行、第4行と第6行、第6行と第1行で、各成分についてEOR演算を行い、それらの演算結果を、それぞれ、元の第3行、第4行、第6行、第1行と置き換える。これにより、対象列の成分の値は、全て「0」になる。
【0153】
ステップS116の処理が完了すると、パケット復元部65は、ステップS117において、変数Yの値に「1」を加算し、対象列を変更し、ステップS118において、変数Yの値が列数K以下であるか否かを判定する。変数Yの値が、列数K以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS113に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0154】
ステップS118において、変数Yの値がKより大きい場合、すなわち、成分AXYが存在しないと判定した場合、全ての列において以上の処理を行うことができるので、パケット復元部65は、データパケットの復元処理を行うことができると判定し、処理をステップS119に進め、復元可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0155】
また、ステップS111において、式(2)の左辺第1項の行列の列数Kが行数M−Lより大きく、M−LがK以上ではないと判定した場合、パケット復元部65は、データパケットの復元処理を行うことができないと判定し、処理をステップS120に進め、復元不可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0156】
同様に、ステップS114において、対象の列において、全ての行の成分の値が「0」であり、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、処理をステップS120に進め、復元不可能フラグを立てた後、判定結果としてフラグの状態をCPU61に出力し、図7のステップS25に処理を進める。
【0157】
さらに、ステップS115において、対象の列において、値が「1」の成分が1つしか存在しないと判定した場合、パケット復元部65は、ステップS116の処理を省略し、ステップS117に処理を進める。
【0158】
以上のようにして、パケット復元部65は、応用ガウス消去法を利用してパケット復元の可能性を判定する。
【0159】
なお、ステップS116において、最初に検出された行は、パケット復元部65等において保持されるようにし、図7のステップS26におけるデータパケット復元処理の際に利用できるようにしてもよい。
【0160】
また、以上の処理において最後の列については省略するようにしてもよい。すなわち、ステップS118の処理において、パケット復元部65が、変数Yの値がK−1以下であるか否かを判定するようにしてもよい。
【0161】
次に、図7のステップS26において実行されるデータパケット復元処理について説明する。
【0162】
データパケットの復元処理は、上述したように、ピボット選択を用いたガウス消去法、または応用ガウス消去法を利用して、式(2)の連立一次方程式のP1乃至PKの解を求めることによって行われる。このとき、式(2)の右辺第1項の行列の各成分Q1乃至QM-Lは、以下に示す式(3)により算出される。
【0163】
【数3】
【0164】
なお、式(3)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0165】
式(3)において、定数Mはサーバ1より送信されたデータパケット数であり、定数Kはクライアント3がロスしたデータパケット数であり、定数Mはサーバ1より送信された冗長パケット数であり、定数Lはクライアント3がロスした冗長パケット数である。また、式(3)において、R1乃至RN-Kはクライアント3が受信した各データパケットに含まれているデータを表し、J1乃至JM-Lはクライアント3が受信した各冗長パケットに含まれているデータを表す。
【0166】
式(3)の右辺第1項は、サーバ1と共有している式(1)の右辺第1項に関する情報に基づいて生成されたM−L行N−K列の行列であり、R1乃至RN-Kの係数を表す行列である。
【0167】
パケット復元部65は、サーバ1と共有する式(1)の右辺第1項に関する情報に基づいて、式(1)の右辺第1項の行列の成分の中から、受信されたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(3)の右第1項の行列を生成する。
【0168】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(1)の右辺第1項の行列の、第N+1行並びに第N+3行乃至第N+M行の、第5列乃至第N列を成分とする行列を生成する。
【0169】
パケット復元部65は、以上のような式(3)を演算することにより、左辺第1項の行列の各成分Q1乃至QM-Lを算出し、それらの値を式(2)に代入して、P1乃至PKの解を求める。その際、パケット復元部65は、ピボット選択を用いたガウス消去法、または応用ガウス消去法のうち、図7のステップS24のパケット復元可能性判定処理において利用した方法を用いて解を算出する。
【0170】
すなわち、パケット復元部65は、図7のステップS24において、図9に示されるフローチャートのような、ピボット選択を用いたガウス消去法を利用した処理を行った場合、このデータパケット復元処理においても同様に、ピボット選択を用いたガウス消去法を利用した処理を行う。
【0171】
また、パケット復元部65は、図7のステップS24において、図10に示されるフローチャートのような、応用ガウス消去法を利用した処理を行った場合、このデータパケット復元処理においても同様に、応用ガウス消去法を利用した処理を行う。
【0172】
なお、パケット復元部65が図8に示されるフローチャートのような処理を行った場合、データ復元処理に利用される方法は、ピボット選択を用いたガウス消去法であってもよいし、応用ガウス消去法であってもよい。
【0173】
次に、図11のフローチャートを参照して、クライアント3によるデータパケット復元処理を説明する。
【0174】
最初に、パケット復元部65は、ステップS131において、式(3)の演算を行い、Q1乃至QM-Lを算出して、式(2)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0175】
そして、パケット復元部65は、ステップS132において、変数Yの値を「0」に設定して初期化し、ステップS133において、式(2)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0176】
その検出結果に基づいて、パケット復元部65は、ステップS134において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS135に進める。
【0177】
ステップS135において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS136に進める。
【0178】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS136において、2番目以降に検出された成分を含む方程式と、最初に検出された成分を含む方程式との間で、各項についてEOR演算を行い、その演算結果を、演算に用いた2番目以降に検出された成分を含む行に置き換える。すなわち、パケット復元部65は、前進消去のプロセスを行い、対象のY列について、最初に検出された成分を含む行以外の行の成分の値を全て「0」にする。
【0179】
そして、パケット復元部65は、ステップS137において、最初に検出された成分を含む方程式を求解用に抽出し、保持する。すなわち、この後ステップS136の処理が繰り返される際のEOR演算は、抽出した方程式を対象とせずに、抽出されずに残された方程式の中で行われる。
【0180】
ステップS137の処理を終えたパケット復元部65は、ステップS138に処理を進め、変数Yの値に「1」を加算し、ステップS139において、その変数Yの値が列数K以下であるか否かを判定する。変数Yの値が、列数K以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS133に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0181】
ステップS139において、変数Yの値がKより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS140に進め、変数Yの値を「K」に設定する。
【0182】
そして、ステップS141において、パケット復元部65は、ステップS137の処理により求解用に保持されている方程式を用いて、PYの解を算出し、ステップS142において、変数Yの値より「1」を減算し、ステップS143において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS141に戻し、それ以降の処理を繰り返す。
【0183】
そして、ステップS143において、変数Yの値が「0」であると判定した場合、パケット復元部65は、P1乃至PKの解を算出したので、データパケット復元処理を終了し、図7のステップS27に処理を進める。
【0184】
また、ステップS134において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS27に処理を進める。
【0185】
さらに、ステップS135において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在すると判定した場合、パケット復元部65は、ステップS136の処理を省略し、ステップS137に処理を進める。
【0186】
以上のようにして、パケット復元部65は、ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0187】
次に、図12のフローチャートを参照して、クライアント3によるデータパケット復元処理の応用ガウス消去法を利用した他の例について説明する。
【0188】
最初に、パケット復元部65は、ステップS161において、式(3)の演算を行い、Q1乃至QM-Lを算出して、式(2)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0189】
そして、パケット復元部65は、ステップS162において、変数Yの値を「0」に設定して初期化し、ステップS163において、式(2)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0190】
その検出結果に基づいて、パケット復元部65は、ステップS164において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS165に進める。
【0191】
ステップS165において、パケット復元部65は、最初に検出された成分を含む方程式を求解用に保持する。そして、ステップS166において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS167に進める。
【0192】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS167において、検出された順番が連続する2つの成分をそれぞれ含む2つの方程式間で、各項についてEOR演算処理を行い、その演算結果を、演算に用いた方程式のうち、検出された順番が後の方程式に置き換える。なお、最初に検出された方程式は、最後に検出された方程式とのEOR演算処理結果に置き換えられる。
【0193】
そして、パケット復元部65は、ステップS168において、変数Yの値に「1」を加算するし、ステップS169において、その変数Yの値が列数K以下であるか否かを判定する。変数Yの値が、列数K以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS163に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0194】
ステップS169において、変数Yの値がKより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS170に進め、変数Yの値を「K」に設定する。
【0195】
そして、ステップS171において、パケット復元部65は、ステップS165の処理により求解用に保持されている方程式を用いて、PYの解を算出し、ステップS172において、変数Yの値より「1」を減算し、ステップS173において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS171に戻し、それ以降の処理を繰り返す。
【0196】
そして、ステップS173において、変数Yの値が「0」であると判定した場合、パケット復元部65は、P1乃至PKの解を算出したので、データパケット復元処理を終了し、図7のステップS27に処理を進める。
【0197】
また、ステップS164において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS27に処理を進める。
【0198】
さらに、ステップS166において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在すると判定した場合、パケット復元部65は、ステップS167の処理を省略し、ステップS168に処理を進める。
【0199】
以上のようにして、パケット復元部65は、応用ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0200】
以上のように、クライアント3において、ロスしたデータパケットを復元する処理を行うようにしたので、データパケットの再送を要求する回数を減らすことができる。さらに、データパケット復元処理を行う前に、ロスしたデータパケットが復元可能であるか否かを判定するようにしたので、再送の必要がある場合も、即座に再送の要求を行うことができる。このような処理は、処理時間に制限のあるストリーミング配信やライブ放送等において特に有効である。
【0201】
なお、図1においては、1つのネットワーク2にサーバ1並びにクライアント3−1および3−2が接続されているシステムについて説明したが、システムの構成は、これ以外にも、例えば、複数のサーバがネットワーク2に接続されるようにしてもよいし、さらに多くのクライアント3が接続されるようにしてもよい。また、サーバ1が複数のネットワーク、さらには中継局等の他の装置を介してクライアント3に接続されるようにしてもよい。その場合、本発明を適用した配信処理は、例えば、サーバ1と中継局との間、または、中継局とクライアント3との間における配信処理であってもよい。
【0202】
また、図1において、サーバ1およびクライアント3は、有線を介してネットワーク2に接続されており、有線通信を行うように説明したが、これに限らず、サーバ1およびクライアント3が無線通信機能を有し、無線通信によりネットワーク2とそれぞれ接続し、ネットワーク2を介して通信を行うようにしてもよい。その際、利用される通信規格は、通信キャリアを介した電話回線経由の通信以外にも、IEEE(Institute of Electrical and Electronic Engineers)802.11x、ブルートゥース、赤外線を用いたIrDA(InfraRed Data Association)等の近距離無線通信であってもよい。
【0203】
さらに、図2において示されるサーバ1の内部の構成例における各ブロックは、その機能の一部または全部が、他のブロックと一体化されて構成されていてもよいし、1つのブロックとして示した機能が複数のブロックとして構成されていてもよい。図3において示されるクライアント3についても同様である。
【0204】
なお、サーバ1およびクライアント3は、上述したパーソナルコンピュータ以外にも、例えば、携帯電話機、デジタルビデオカメラ、あるいはテレビジョン受像機などの電子機器に広く適用することができる。
【0205】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0206】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図2または図3に示されるように、磁気ディスク41または91(フレキシブルディスクを含む)、光ディスク42または92(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク43または93(MD(Mini-Disc)(登録商標)を含む)、もしくは半導体メモリ44または94などよりなるパッケージメディア、または、プログラムが一時的もしくは永続的に記録されるROM12または62などにより構成される。記録媒体へのプログラムの記録は、必要に応じてルータ、モデムなどのインターフェースを介して、公衆回線網、ローカルエリアネットワーク、またはインターネットなどのネットワーク、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0207】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0208】
【発明の効果】
以上のように、本発明によれば、他の装置より供給されたパケットデータを取得することができる。特に、より好適にパケットデータを取得し、データの再生を行うことができる。
【図面の簡単な説明】
【図1】本発明を適用したデータ伝送システムの基本的な構成例を示す図である。
【図2】図1のサーバの内部の構成例を示すブロック図である。
【図3】図1のクライアントの内部の構成例を示すブロック図である。
【図4】図1のサーバによるデータ伝送処理を説明するフローチャートである。
【図5】図1のサーバが生成するパケットの例を示す模式図である。
【図6】図1のデータ伝送システムにおいて、サーバより送信され、クライアントによって受信されるパケットの様子を示す模式図である。
【図7】図1のクライアントによるデータ受信処理を説明するフローチャートである。
【図8】図7のステップS24において実行されるパケット復元可能性判定処理の例について説明するフローチャートである。
【図9】図7のステップS24において実行されるパケット復元可能性判定処理の他の例について説明するフローチャートである。
【図10】図7のステップS24において実行されるパケット復元可能性判定処理の、さらに他の例について説明するフローチャートである。
【図11】図7のステップS26において実行されるデータパケット復元処理の例について説明するフローチャートである。
【図12】図7のステップS26において実行されるデータパケット復元処理の他の例について説明するフローチャートである。
【符号の説明】
1 サーバ, 2 ネットワーク, 3−1および3−2 クライアント, 14 パケット生成部, 64 データ再生部, 65 パケット復元部, 101 データパケット, 102 冗長パケット
Claims (16)
- 他の情報処理装置から配信用データを受信する情報処理装置において、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、および複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、
前記受信手段により受信できなかった前記データパケットが復元可能であるか否かを判定する可能性判定手段と、
前記可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する要求手段と、
前記可能性判定手段による判定結果に基づいて、復元可能である場合、前記受信手段により受信された前記データパケットおよび前記冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかった前記データパケットを復元する復元手段と
を備え、
前記復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、前記連立一次方程式を解く
ことを特徴とする情報処理装置。 - 前記冗長パケットは、所定の大きさに分割された前記配信用データであるブロック毎に、同一の前記ブロックに対応する、任意に選択された複数の前記データパケットを用いて生成される
ことを特徴とする請求項1に記載の情報処理装置。 - 前記データパケットおよび前記冗長パケットは、前記ブロック単位で前記他の情報処理装置より送信される
ことを特徴とする請求項2に記載の情報処理装置。 - 前記受信手段は、同一の前記ブロックの前記データパケットおよび前記冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備える
ことを特徴とする請求項3に記載の情報処理装置。 - 前記受信手段により受信できなかった前記データパケットが存在するか否かを判定する存在判定手段をさらに備える
ことを特徴とする請求項1に記載の情報処理装置。 - 前記冗長パケットの生成に関する情報を前記他の情報処理装置と共有する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記可能性判定手段は、前記連立一次方程式の係数を表す行列の成分に基づいて、前記受信手段により受信できなかった前記データパケットを復元可能であるか否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記可能性判定手段により復元不可能と判定された前記データパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、
前記要求手段は、前記余裕判定手段により前記再送処理を行う余裕があると判定された場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する
ことを特徴とする請求項1に記載の情報処理装置。 - 他の情報処理装置から配信用データを受信する情報処理装置において、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、および複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、
前記受信手段により受信できなかった前記データパケットが復元可能であるか否かを判定する可能性判定手段と、
前記可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する要求手段と、
前記可能性判定手段による判定結果に基づいて、復元可能である場合、前記受信手段により受信された前記データパケットおよび前記冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかった前記データパケットを復元する復元手段と
を備え、
前記復元手段は、前記行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、前記連立一次方程式を解く
ことを特徴とする情報処理装置。 - 前記冗長パケットは、所定の大きさに分割された前記配信用データであるブロック毎に、同一の前記ブロックに対応する、任意に選択された複数の前記データパケットを用いて生成される
ことを特徴とする請求項9に記載の情報処理装置。 - 前記データパケットおよび前記冗長パケットは、前記ブロック単位で前記他の情報処理装置より送信される
ことを特徴とする請求項10に記載の情報処理装置。 - 前記受信手段は、同一の前記ブロックの前記データパケットおよび前記冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備える
ことを特徴とする請求項11に記載の情報処理装置。 - 前記受信手段により受信できなかった前記データパケットが存在するか否かを判定する存在判定手段をさらに備える
ことを特徴とする請求項9に記載の情報処理装置。 - 前記冗長パケットの生成に関する情報を前記他の情報処理装置と共有する
ことを特徴とする請求項9に記載の情報処理装置。 - 前記可能性判定手段は、前記連立一次方程式の係数を表す行列の成分に基づいて、前記受信手段により受信できなかった前記データパケットを復元可能であるか否かを判定する
ことを特徴とする請求項9に記載の情報処理装置。 - 前記可能性判定手段により復元不可能と判定された前記データパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、
前記要求手段は、前記余裕判定手段により前記再送処理を行う余裕があると判定された場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する
ことを特徴とする請求項9に記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002322087A JP4088956B2 (ja) | 2002-11-06 | 2002-11-06 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002322087A JP4088956B2 (ja) | 2002-11-06 | 2002-11-06 | 情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004159042A JP2004159042A (ja) | 2004-06-03 |
JP4088956B2 true JP4088956B2 (ja) | 2008-05-21 |
Family
ID=32802371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002322087A Expired - Fee Related JP4088956B2 (ja) | 2002-11-06 | 2002-11-06 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4088956B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4814315B2 (ja) * | 2005-05-04 | 2011-11-16 | シーメンス エンタープライズ コミュニケーションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディートゲゼルシャフト | 訂正記号に割り当てられたインデックスを求める方法および装置 |
JP4808758B2 (ja) * | 2008-11-10 | 2011-11-02 | 株式会社エヌ・ティ・ティ・ドコモ | データ受信装置、及び、データ受信方法 |
JP5408981B2 (ja) | 2008-12-09 | 2014-02-05 | キヤノン株式会社 | 通信装置、及び通信方法、プログラム |
US8265099B2 (en) | 2008-12-22 | 2012-09-11 | Gn Resound A/S | Error correction scheme in a hearing system wireless network |
JP5409032B2 (ja) | 2009-02-06 | 2014-02-05 | キヤノン株式会社 | 送信装置、及び、方法、プログラム |
JP5677070B2 (ja) * | 2010-12-14 | 2015-02-25 | キヤノン株式会社 | 受信装置及び、受信装置による処理方法 |
CN107431571B (zh) | 2015-03-24 | 2021-02-09 | 索尼公司 | 数据接收设备、数据传输系统、数据接收方法和数据传输方法 |
WO2019008748A1 (ja) * | 2017-07-07 | 2019-01-10 | 株式会社Asj | データ処理システムおよびこれを用いた分散データシステム |
JP6300293B1 (ja) * | 2017-07-07 | 2018-03-28 | 株式会社Asj | エンコード・デコード構造およびこれを用いた分散データシステム |
-
2002
- 2002-11-06 JP JP2002322087A patent/JP4088956B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004159042A (ja) | 2004-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004165922A (ja) | 情報処理装置および方法、並びにプログラム | |
CN109729439B (zh) | 实时视频传输方法 | |
US6665726B1 (en) | Method and system for fault tolerant media streaming over the internet | |
US7792982B2 (en) | System and method for distributing streaming content through cooperative networking | |
JP4690387B2 (ja) | 好ましくはストリーミング・システムに適用される配布方法 | |
US9490850B1 (en) | Method and apparatus for decoding packetized data | |
JP4506185B2 (ja) | 受信装置および方法、並びにプログラム | |
US10230651B2 (en) | Effective intra-frame refresh in multimedia communications over packet networks | |
US20120151291A1 (en) | Receiving apparatus and processing method for receiving apparatus | |
JP4088956B2 (ja) | 情報処理装置 | |
US8930755B2 (en) | Distribution apparatus and distribution method | |
CN111093083A (zh) | 数据传输方法及装置 | |
JP5344541B2 (ja) | データ送信装置、送信方法及びプログラム | |
JP6305398B2 (ja) | 送信機に関連する情報を用いたエラー回復のための方法及び装置 | |
CN109688425A (zh) | 直播数据推流方法 | |
US9246631B2 (en) | Communication devices that encode and transmit data, methods of controlling such communication devices, and computer-readable storage media storing instructions for controlling such communication devices | |
CN106792265A (zh) | 一种网络实时流媒体传输方法和系统 | |
JP3927486B2 (ja) | ストリーミング配信装置、ストリーミング配信システム、及びストリーミング配信方法 | |
CN114158089A (zh) | 音频传输方法、终端、电子设备及存储介质 | |
KR101588549B1 (ko) | 네트워크 코딩을 구현할 수 있는 tcp 기반 네트워크 라우팅 노드 및 네트워크 코딩을 구현하는 tcp 기반 데이터 스트리밍 시스템 | |
JP6614145B2 (ja) | 受信装置、受信方法およびコンピュータプログラム | |
CN112671784A (zh) | 一种数据传输方法、装置、设备及存储介质 | |
Al-Taee et al. | A testbed for experimental evaluation of efficient multimedia delivery over lossy networks | |
KR20220170688A (ko) | Sdp 프로토콜 처리 방법 | |
JP2023508744A (ja) | 複数の信頼性のないチャネルを介したパケット化データ通信 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051104 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070815 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071001 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080217 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |