JP2004159042A - Information processor, information processing method, and program - Google Patents

Information processor, information processing method, and program Download PDF

Info

Publication number
JP2004159042A
JP2004159042A JP2002322087A JP2002322087A JP2004159042A JP 2004159042 A JP2004159042 A JP 2004159042A JP 2002322087 A JP2002322087 A JP 2002322087A JP 2002322087 A JP2002322087 A JP 2002322087A JP 2004159042 A JP2004159042 A JP 2004159042A
Authority
JP
Japan
Prior art keywords
packet
data
data packet
information processing
restoration
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.)
Granted
Application number
JP2002322087A
Other languages
Japanese (ja)
Other versions
JP4088956B2 (en
Inventor
Toshiharu Kobayashi
稔治 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2002322087A priority Critical patent/JP4088956B2/en
Publication of JP2004159042A publication Critical patent/JP2004159042A/en
Application granted granted Critical
Publication of JP4088956B2 publication Critical patent/JP4088956B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To more suitably acquire packet data and to reproduce data. <P>SOLUTION: When a lost packet is judged to exist in a step S23, a data reproduction part of a client supplies the acquired packet and information to a packet restoration part. The packet restoration part performs a packet restorability judging processing in a step S24. A CPU judges in a step S25 whether restoration is possible or not based on the judged result in the step S24. When restoration is possible, the packet restoration part performs a data packet restoration processing and restores lost data packet in a step S26. When the restoration is impossible, the CPU requests retransmission of the lost packet from a server through a communication part. The invention can be applied to a streaming data distribution system. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、より好適にパケットデータを取得し、データの再生を行うことができるようにした、情報処理装置および方法、並びにプログラムに関する。
【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】
【課題を解決するための手段】
本発明の情報処理装置は、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、受信手段により受信できなかったデータパケットが復元可能であるか否かを判定する可能性判定手段と、可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送を他の情報処理装置に要求する要求手段と、可能性判定手段による判定結果に基づいて、復元可能である場合、受信手段により受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットを復元する復元手段とを備えることを特徴とする。
【0018】
前記冗長パケットは、所定の大きさに分割された配信用データであるブロック毎に、同一のブロックに対応する、任意に選択された複数のデータパケットを用いて生成されるようにすることができる。
【0019】
前記データパケットおよび冗長パケットは、ブロック単位で他の情報処理装置より送信されるようにすることができる。
【0020】
前記受信手段は、同一のブロックのデータパケットおよび冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備えるようにすることができる。
【0021】
前記受信手段により受信できなかったデータパケットが存在するか否かを判定する存在判定手段をさらに備えるようにすることができる。
【0022】
前記冗長パケットの生成に関する情報を他の情報処理装置と共有するようにすることができる。
【0023】
前記可能性判定手段は、連立一次方程式の係数を表す行列の成分に基づいて、受信手段により受信できなかったデータパケットを復元可能であるか否かを判定するようにすることができる。
【0024】
前記可能性判定手段により復元不可能と判定されたデータパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、要求手段は、余裕判定手段により再送処理を行う余裕があると判定された場合、受信できなかったデータパケットの再送を他の情報処理装置に要求するようにすることができる。
【0025】
前記復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、連立一次方程式を解くようにすることができる。
【0026】
前記復元手段は、行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、連立一次方程式を解くようにすることができる。
【0027】
本発明の情報処理方法は、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットが復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送を他の情報処理装置に要求する要求ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットを復元する復元ステップとを含むことを特徴とする。
【0028】
本発明のプログラムは、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットが復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送を他の情報処理装置に要求する要求ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットを復元する復元ステップとをコンピュータに実現させることを特徴とする。
【0029】
本発明の情報処理装置および方法、並びにプログラムにおいては、他の情報処理装置により送信された、配信用データのデータパケット、および複数のデータパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットが受信され、受信できなかったデータパケットが復元可能であるか否かが判定され、その判定結果に基づいて、復元不可能である場合、受信できなかったデータパケットの再送が他の情報処理装置に要求され、復元可能である場合、受信されたデータパケットおよび冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかったデータパケットが復元される。
【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ブロック分の配信データが所定の大きさで分割されたデータD乃至Dが1つずつ含まれている。
【0062】
すなわち、図4のステップS1において、パケット生成部14は、1ブロック分の配信データDをN個のデータD乃至Dに分割し、各データをパケット化してパケット101−1乃至パケット101−Nを生成する。
【0063】
そして、パケット生成部14は、処理をステップS2に進め、生成したデータパケット101の中から任意に複数のパケットを選択し、それらのパケットに含まれるデータのEOR演算を行い、誤り訂正用の冗長パケットを生成する。
【0064】
図5において、冗長パケット102は、パケット102−1乃至102−Mにより構成される。パケット生成部14は、データD乃至Dの中から複数個のデータを選択し、それらの値のEOR演算を行う。パケット生成部14は、この処理をM回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のパケットであるパケット102−1乃至102−Mを生成する。
【0065】
すなわち、パケット生成部14は、図4のステップS1およびステップS2の処理において、供給された1ブロック分の配信データDをN個に分割してデータD乃至Dを生成した後、以下の式(1)に示されるような演算を行い、誤り訂正用のM個のデータを生成して、送信データS乃至SN+Mを算出する。
【0066】
【数1】

Figure 2004159042
【0067】
式(1)において、右辺第1項はN+M行N列の行列であり、その第1行乃至第N行はデータパケット101に対応する送信データS乃至Sを生成するための係数であり、第N+1行乃至第N+M行は冗長パケット102に対応する送信データSN+1乃至SN+Mを生成するための係数である。この第N+1行乃至第N+M行の各成分の値は、「0」または「1」のいずれかが任意に設定される。なお、式(1)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0068】
式(1)の左辺の送信データS乃至Sは、それぞれ、右辺第2項のデータD乃至Dに対応し、送信データSN+1乃至SN+Mは、それぞれ、データD乃至Dより任意に選択されたデータの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個の冗長パケットをロスしたものとし、ロスしたデータパケットに含まれるデータをP乃至Pとすると、パケット復元部65によるデータパケットの復元は、以下に示す式(2)の連立一次方程式において、P乃至Pの解を求めることによって行われる。
【0109】
【数2】
Figure 2004159042
【0110】
なお、式(2)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0111】
式(2)において、右辺第1項の行列の成分Q乃至QM−Lは、後述するように、受信したデータパケットおよび冗長パケットに含まれるデータより算出された変数である。
【0112】
式(2)の左辺第1項は、サーバ1と共有している式(1)の右辺第1項に関する情報に基づいて生成されたM−L行K列の行列であり、P乃至Pの係数を表す行列である。
【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項の行列の各成分は、上述したように、P乃至Pの係数を表している。従って、この式(2)の左辺第1項の行列において、全ての成分の値が「0」である列が存在する場合、対応する変数P乃至Pの解を求めることができない。また、この式(2)の左辺第1項の行列の列数Kが行数M−Lより大きい場合、方程式の数より変数の数が多いことになり、パケット復元部65は、変数Pの解を求めることができない。
【0116】
このように、パケット復元部65は、式(2)の左辺第1項の行列に基づいて、簡易的に変数P乃至Pの解を算出可能か否かを判定することができる。
【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)の連立一次方程式のP乃至Pの解を求めることによって行われる。このとき、式(2)の右辺第1項の行列の各成分Q乃至QM−Lは、以下に示す式(3)により算出される。
【0163】
【数3】
Figure 2004159042
【0164】
なお、式(3)において、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0165】
式(3)において、定数Mはサーバ1より送信されたデータパケット数であり、定数Kはクライアント3がロスしたデータパケット数であり、定数Mはサーバ1より送信された冗長パケット数であり、定数Lはクライアント3がロスした冗長パケット数である。また、式(3)において、R乃至RN−Kはクライアント3が受信した各データパケットに含まれているデータを表し、J乃至JM−Lはクライアント3が受信した各冗長パケットに含まれているデータを表す。
【0166】
式(3)の右辺第1項は、サーバ1と共有している式(1)の右辺第1項に関する情報に基づいて生成されたM−L行N−K列の行列であり、R乃至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項の行列の各成分Q乃至QM−Lを算出し、それらの値を式(2)に代入して、P乃至Pの解を求める。その際、パケット復元部65は、ピボット選択を用いたガウス消去法、または応用ガウス消去法のうち、図7のステップS24のパケット復元可能性判定処理において利用した方法を用いて解を算出する。
【0170】
すなわち、パケット復元部65は、図7のステップS24において、図9に示されるフローチャートのような、ピボット選択を用いたガウス消去法を利用した処理を行った場合、このデータパケット復元処理においても同様に、ピボット選択を用いたガウス消去法を利用した処理を行う。
【0171】
また、パケット復元部65は、図7のステップS24において、図10に示されるフローチャートのような、応用ガウス消去法を利用した処理を行った場合、このデータパケット復元処理においても同様に、応用ガウス消去法を利用した処理を行う。
【0172】
なお、パケット復元部65が図8に示されるフローチャートのような処理を行った場合、データ復元処理に利用される方法は、ピボット選択を用いたガウス消去法であってもよいし、応用ガウス消去法であってもよい。
【0173】
次に、図11のフローチャートを参照して、クライアント3によるデータパケット復元処理を説明する。
【0174】
最初に、パケット復元部65は、ステップS131において、式(3)の演算を行い、Q乃至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の処理により求解用に保持されている方程式を用いて、Pの解を算出し、ステップS142において、変数Yの値より「1」を減算し、ステップS143において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS141に戻し、それ以降の処理を繰り返す。
【0183】
そして、ステップS143において、変数Yの値が「0」であると判定した場合、パケット復元部65は、P乃至Pの解を算出したので、データパケット復元処理を終了し、図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)の演算を行い、Q乃至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の処理により求解用に保持されている方程式を用いて、Pの解を算出し、ステップS172において、変数Yの値より「1」を減算し、ステップS173において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS171に戻し、それ以降の処理を繰り返す。
【0196】
そして、ステップS173において、変数Yの値が「0」であると判定した場合、パケット復元部65は、P乃至Pの解を算出したので、データパケット復元処理を終了し、図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 冗長パケット[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an information processing apparatus, method, and program, and more particularly to an information processing apparatus, method, and program that can more appropriately acquire packet data and reproduce the data.
[0002]
[Prior art]
2. Description of the Related Art In recent years, with the development of broadband communication networks and the like, streaming and real-time broadcasting of data such as audio and video by a unicast or a multicast have been performed via a network represented by the Internet. .
[0003]
Conventionally, in communication via such a network, one of block codes for detecting and correcting a data error in a block has been used for delivery of unicast or multicast using UDP / IP (User Datagram Protocol / Internet Protocol). A distribution method using FEC (Forward Error Correction) using a Reed-Solomon code or the like has been proposed (for example, see Non-Patent Documents 1 to 3).
[0004]
In the error correction processing for the packet loss by the Reed-Solomon code, on the transmission side, an error correction code of transmission data is generated for each block unit having a predetermined size, a redundant packet is generated from the error correction code, and the generation is performed. Redundant packets are distributed together with the packetized transmission data.
[0005]
Then, on the receiving side, the redundant packet is also received together with the packetized transmission data, and when a packet of the transmission data is lost, the packet is restored using the received redundant packet. If restoration of the lost packet is not possible, the transmitting side is requested to retransmit the lost packet.
[0006]
However, in this case, addition, subtraction, multiplication, or division on the Galois field is required, and the load required for processing such as restoration may increase.
[0007]
On the other hand, as an FEC encoding method, there is a method of generating a redundant packet by using an EOR (exclusive OR) operation instead of the Reed-Solomon encoding method (for example, see Patent Document 1).
[0008]
In the error correction processing for packet loss using the EOR operation, the transmission side generates an error correction code for transmission data using the EOR operation for each block unit having a predetermined size, and uses the EOR operation to generate a redundant code from the error correction code. A packet is generated, and the generated redundant packet is distributed together with the packetized transmission data.
[0009]
Then, on the receiving side, the redundant packet is also received together with the packetized transmission data, and when a packet of the transmission data is lost, the packet is restored using the received redundant packet. If restoration of the lost packet is not possible, the transmitting side is requested to retransmit the lost packet.
[0010]
[Non-patent document 1]
Seijiro Yoneyama, 2 outsiders, "Reliable Multicast-Using FEC on IP version 6," [online], December 15, 1999, Internet Conference, [October 8, 2002 Search], Internet, <URL: http /// www. internetconference. org / ic99 / program. html>
[0011]
[Non-patent document 2]
Takashi Kubo, "A Study on Real-Time Media Transmission Using Reliable Multicast", [online], February 18, 2001, Nara Institute of Science and Technology Master's thesis / problem research presentation, [October 2002 8th search], Internet, <URL: http: // isw3. aist-nara. ac. jp / IS / MasterThesis / 2001/0051031. html>
[0012]
[Non-Patent Document 3]
Seijiro Yoneyama, “FEC on IPv6 for Reliable Multicast”, [online], November 1, 2000, Internet Conference, [Search October 8, 2002], Internet, <URL: http: // www. csl. sony. co. jp / ic2000 / papers / S03_01. pdf>
[0013]
[Patent Document 1]
JP 2001-189665 A (pages 25 to 26, FIG. 3)
[0014]
[Problems to be solved by the invention]
However, in the above-described method, it is not possible to determine whether or not restoration is possible until the restoration processing of the actually lost packet is executed, and the delay time when the retransmission processing becomes necessary becomes longer. There was a problem that it would be.
[0015]
In particular, in streaming distribution or real-time data distribution, a receiving-side apparatus must receive and reproduce sequentially transmitted data, and must perform restoration processing in a short time. Therefore, the increase in the delay time as described above greatly affects the reproduction performance.
[0016]
The present invention has been made in view of such circumstances, and has been made in such a manner that packet data can be more appropriately acquired and data can be reproduced.
[0017]
[Means for Solving the Problems]
The information processing apparatus of the present invention receives a data packet of distribution data and a redundant packet including an exclusive OR operation result of each data included in a plurality of data packets transmitted by another information processing apparatus. Means, a possibility judging means for judging whether or not the data packet which could not be received by the receiving means can be restored, and if the data packet could not be restored based on the judgment result by the possibility judging means, the data packet could not be received. Request means for requesting another information processing apparatus to retransmit the data packet, and based on the determination result by the possibility determination means, if the data packet and the redundant packet received by the reception means can be restored, Restoring means for restoring a data packet that could not be received by solving a simultaneous linear equation using exclusive OR operation It is characterized in.
[0018]
The redundant packet may be generated using a plurality of arbitrarily selected data packets corresponding to the same block for each block that is distribution data divided into a predetermined size. .
[0019]
The data packet and the redundant packet can be transmitted from another information processing device in block units.
[0020]
The receiving means may further include a monitoring means for monitoring whether or not the reception processing of the data packet and the redundant packet of the same block has been completed.
[0021]
The information processing apparatus may further include presence determining means for determining whether there is a data packet that cannot be received by the receiving means.
[0022]
Information on the generation of the redundant packet can be shared with another information processing device.
[0023]
The possibility determining means may determine whether or not a data packet that could not be received by the receiving means can be restored, based on a matrix element representing a coefficient of the simultaneous linear equation.
[0024]
The apparatus further includes a margin determining unit that determines whether there is a margin for performing a retransmission process of the data packet determined to be unrecoverable by the possibility determining unit, wherein the request unit has a margin for performing the retransmission process by the margin determining unit. If it is determined that there is, it is possible to request another information processing device to retransmit the data packet that could not be received.
[0025]
The restoration means may solve a system of linear equations by using a Gaussian elimination method using pivot selection, which is a processing method for selecting a coefficient having a value other than 0.
[0026]
The restoration means uses an applied Gaussian elimination method of calculating an exclusive OR for each term between adjacent equations among equations including a coefficient whose value is not 0 with respect to a predetermined column of the matrix. Can be solved.
[0027]
The information processing method according to the present invention is a method for receiving a data packet of distribution data and a redundant packet including an exclusive OR operation result of each data included in a plurality of data packets, which are transmitted by another information processing apparatus. A control step, a possibility determining step of determining whether or not a data packet that could not be received by the processing of the receiving control step is recoverable, and, based on a determination result of the processing of the possibility determining step, In some cases, based on the determination result of the requesting step of requesting another information processing device to retransmit the unreceivable data packet to another information processing device and the possibility of the possibility determination step, if the data packet can be restored, the data packet is To solve simultaneous linear equations using exclusive OR operation I, characterized in that it comprises a restoration step for restoring the not received data packets.
[0028]
The program according to the present invention includes a receiving control step of receiving a data packet of distribution data and a redundant packet including an exclusive OR operation result of each data included in the plurality of data packets, transmitted by another information processing apparatus. A possibility determining step of determining whether or not a data packet that could not be received by the processing of the receiving control step can be restored; and a case where the data packet cannot be restored based on the determination result of the processing of the possibility determining step. A request step for requesting another information processing apparatus to retransmit a data packet that could not be received, and, based on a determination result obtained by the processing of the possibility determining step, if the data packet can be restored, the data packet is received by the processing of the reception control step. By solving simultaneous linear equations using exclusive OR operation using data packets and redundant packets Te, characterized in that to achieve a restoration step of restoring the not received data packets to the computer.
[0029]
The information processing apparatus and method and the program according to the present invention include a data packet of distribution data transmitted by another information processing apparatus and an exclusive OR operation result of each data included in the plurality of data packets. A redundant packet is received, and it is determined whether the data packet that could not be received can be recovered. If the data packet cannot be recovered based on the result of the determination, retransmission of the data packet that could not be received is performed using other information. If requested by the processing device and can be recovered, the received data packet and the redundant packet are used to solve a system of linear equations using an exclusive OR operation, thereby recovering the data packet that could not be received. .
[0030]
BEST MODE FOR CARRYING OUT THE INVENTION
FIG. 1 is a diagram illustrating a basic configuration example of a data distribution system to which the present invention has been applied.
[0031]
In FIG. 1, a server 1 stores streaming data such as images and sounds for streaming distribution, and requests a client 3-1 or 3-2 that has requested distribution via a network 2 represented by the Internet or the like. To provide a streaming distribution service. The server 1 distributes data by unicast or multicast based on a distribution request supplied from the client 3-1 or 3-2.
[0032]
The server 1 converts data such as an image and a sound input via an external input device (not shown) such as a camera or a microphone into data for transmission, and requests the client 3-1 or 3-2 for distribution. Then, it is distributed in real time via the network 2 (hereinafter referred to as LIVE distribution).
[0033]
The clients 3-1 and 3-2 are operated by the user, access the server 1 via the network 2, and request distribution of the data specified by the user. Then, based on the request, when the server 1 performs streaming distribution or LIVE distribution of the requested data, the clients 3-1 and 3-2 receive the data, perform processing, and respond to the received data. An image to be displayed is displayed on a display, and a sound corresponding to the received data is output from a speaker.
[0034]
When it is not necessary to distinguish the clients 3-1 and 3-2 individually, they are simply referred to as clients 3.
[0035]
As will be described later, the server 1 uses the UDP (User Datagram Protocol) / IP (Internet Protocol) protocol in combination with the FEC and the retransmission control using the redundant packet formed by the EOR in the streaming distribution and the LIVE distribution described above. Distribute data. That is, the server 1 packetizes the data, generates a redundant packet for error correction from the packetized data (hereinafter, referred to as a data packet), and distributes the data packet and the redundant packet to the client 3. .
[0036]
The client 3 receiving the data packet and the redundant packet performs an error correction process and restores the lost data packet from the received packet. If restoration is not possible and retransmission is possible, the client 3 requests the server 1 via the network 2 to retransmit the data packet. When the server 1 acquires the retransmission request, the server 1 retransmits the requested data packet to the requesting client 3. The client 3 reproduces data using the retransmitted data packet and another data packet that has already been acquired.
[0037]
FIG. 2 is a block diagram showing a configuration example of the server 1 shown in FIG.
[0038]
In FIG. 2, a CPU (Central Processing Unit) 11 executes various processes according to a program stored in a ROM (Read Only Memory) 12 or a program loaded from a storage unit 33 into a RAM (Random Access Memory) 13. I do. The RAM 13 also appropriately stores data necessary for the CPU 11 to execute various processes.
[0039]
The packet generation unit 14 is controlled by the CPU 11 to packetize data for distribution (hereinafter referred to as distribution data) supplied from the storage unit 33 or the communication unit 34 to generate a data packet. 34. Further, the packet generator 14 is controlled by the CPU 11 and generates a redundant packet for error correction from the generated data packet by using an EOR operation, as described later.
[0040]
The CPU 11, the ROM 12, the RAM 13, and the packet generator 14 are mutually connected via a bus 20. The bus 20 is also connected to an input / output interface 30.
[0041]
The input / output interface 30 includes an input unit 31 such as a keyboard and a mouse, a display such as a CRT (Cathode Ray Tube) or an LCD (Liquid Crystal Display), an output unit 32 such as a speaker, and a hard disk. A storage unit 33 and a communication unit 34 including a modem, a LAN card, a terminal adapter, and the like are connected.
[0042]
The storage unit 33 stores distribution data obtained via the input unit 31 or the communication unit 34, and data and programs for executing various processes. The data and programs are stored in each unit. Supply.
[0043]
The communication unit 34 performs a communication process via the network 2. For example, the communication unit 34 is controlled by the CPU 11 and converts the data packet for streaming distribution supplied from the packet generation unit 14 into a predetermined protocol such as UDP, RTP (Real-time Transport Protocol) / RTSP (Real Time Streaming Protocol). Deliver using. The communication unit 34 is controlled by the CPU 11 to acquire data supplied from a connected external input device and supply the acquired data to the RAM 13, the packet generation unit 14, or the storage unit 33.
[0044]
A drive 40 is connected to the input / output interface 30 as necessary, and a magnetic disk 41, an optical disk 42, a magneto-optical disk 43, a semiconductor memory 44, or the like is appropriately mounted, and a computer program read out from these is It is installed in the storage unit 33 as needed.
[0045]
In the above description, the packet generation unit 14 connected to the bus 20 performs the generation processing of the data packet and the redundant packet. However, the present invention is not limited to this, and all or a part of the packet generation processing performed by the packet generation unit 14 is performed. May be executed by the communication unit 64 or the CPU 11.
[0046]
FIG. 3 is a block diagram showing a configuration example of the client 3 shown in FIG.
[0047]
In FIG. 3, a CPU 61 executes various processes according to a program stored in a ROM 62 or a program loaded from a storage unit 83 into a RAM 63. The RAM 63 also stores data and the like necessary for the CPU 61 to execute various processes.
[0048]
The data reproducing unit 64 is controlled by the CPU 61 and reconstructs distribution data from the data packet received by the communication unit 84 and the data packet restored by the packet restoring unit 65, and uses the MPEG (Moving Picture Experts Group) method or ATRAC3 ( If the data is encoded in the Adaptive Transform Acoustic Coding 3) (registered trademark) method or the like, the data is reproduced by decoding the data in a corresponding method, and the reproduced data (hereinafter, referred to as reproduced data) is transmitted to the CPU 61. , RAM 62, output unit 82, or storage unit 83.
[0049]
The packet restoration unit 65 is controlled by the CPU 61 and performs restoration processing of a lost data packet using the redundant packet received by the communication unit 84, as described later. Then, the packet restoration unit 65 supplies the restored data packet to the CPU 61, the RAM 63, or the data reproduction unit 64. Before the restoration processing, the packet restoration section 65 also performs a judgment processing as to whether or not the lost packet can be restored, and supplies the CPU 61 with the judgment result.
[0050]
The CPU 61, the ROM 62, the RAM 63, the data reproducing unit 64, and the packet restoring unit 65 are mutually connected via a bus 70. An input / output interface 80 is also connected to the bus 70.
[0051]
The input / output interface 80 includes an input unit 81 including a keyboard and a mouse, a display including a CRT and an LCD, an output unit 82 including a speaker, a storage unit 83 including a hard disk, a modem, a LAN card, and the like. , And a communication unit 84 composed of a terminal adapter and the like.
[0052]
The input unit 81 includes a keyboard, a mouse, and the like, receives a request from a user, and supplies the information to the CPU 61 and the RAM 62. The output unit 82 displays an image corresponding to the data supplied from the data reproducing unit 64 or the like on a display, and outputs a sound corresponding to the supplied data from a speaker.
[0053]
The storage unit 83 stores data, programs, and the like for executing various processes supplied through the input unit 31 or the communication unit 34, and supplies the data and programs to each unit.
[0054]
The communication unit 84 performs communication processing via the network 2. For example, the communication unit 84 receives a data packet or a redundant packet stream-distributed from the server 1 via the network 2 by using a predetermined protocol such as UDP or RTP / RTSP, and receives the received packet by the CPU 61 and the RAM 63. , The data reproducing unit 64 or the packet restoring unit 65. Further, the communication unit 84 supplies various kinds of information supplied from the CPU 61 and the like, such as a distribution request and a packet retransmission request, to the server 1 via the network 2.
[0055]
A drive 90 is connected to the input / output interface 80 as necessary, and a magnetic disk 91, an optical disk 92, a magneto-optical disk 93, a semiconductor memory 94, or the like is appropriately mounted. It is installed in the storage unit 83 as needed.
[0056]
In the above, it has been described that the data reproduction unit 64 connected to the bus 70 performs reproduction processing such as reconstruction and decoding of distribution data. However, the present invention is not limited to this. All or a part may be executed by the communication unit 84 or the CPU 61.
[0057]
Similarly, all or a part of the restoration processing of the lost packet performed by the packet restoration unit 65 connected to the bus 70 may be executed by the communication unit 84 or the CPU 61.
[0058]
Next, the streaming distribution processing of the distribution data by the server 1 will be described. The CPU 11 of the server 1 that has obtained the distribution request from the client 3 via the network 2 obtains the requested distribution data from the storage unit 33, supplies it to the packet generation unit 14, and starts the data transmission process. The data transmission processing by the server 1 will be described with reference to the flowchart in FIG.
[0059]
The packet generation unit 14 supplied with the distribution data processes the obtained distribution data in units of blocks of a predetermined size. In step S1, the packet generation unit 14 divides one block of distribution data into packets to generate data packets.
[0060]
FIG. 5 is a schematic diagram illustrating a configuration example of a data packet and a redundant packet for one block generated by the packet generation unit 14. In FIG. 5, the EOR operation is represented using “+”.
[0061]
In FIG. 5, a data packet 101 is composed of packets 101-1 to 101-N. In each packet, data D obtained by dividing distribution data for one block by a predetermined size 1 Or D N Are included one by one.
[0062]
That is, in step S1 of FIG. 4, the packet generation unit 14 converts the distribution data D for one block into N data D 1 Or D N , And packetizes each data to generate packets 101-1 to 101-N.
[0063]
Then, the packet generation unit 14 advances the process to step S2, arbitrarily selects a plurality of packets from the generated data packets 101, performs an EOR operation on the data included in those packets, and performs a redundant operation for error correction. Generate a packet.
[0064]
In FIG. 5, the redundant packet 102 includes packets 102-1 to 102-M. The packet generator 14 generates the data D 1 Or D N Are selected from among the data, and EOR operation of those values is performed. The packet generating unit 14 repeats this process M times to generate redundant data for error correction, and further generates packets to generate packets 102-1 to 102-M, which are packets for error correction.
[0065]
That is, in the processing of steps S1 and S2 in FIG. 4, the packet generation unit 14 1 Or D N Is generated, an operation as shown in the following equation (1) is performed to generate M data for error correction, and the transmission data S 1 Or S N + M Is calculated.
[0066]
(Equation 1)
Figure 2004159042
[0067]
In equation (1), the first term on the right side is a matrix of N + M rows and N columns. 1 Or S N Is a coefficient for generating the transmission data S corresponding to the redundant packet 102. N + 1 Or S N + M Is a coefficient for generating. The value of each component in the (N + 1) th row to the (N + M) th row is arbitrarily set to either “0” or “1”. In equation (1), the addition of each component is performed using an EOR operation for each corresponding bit.
[0068]
Transmission data S on the left side of equation (1) 1 Or S N Is the data D of the second term on the right side, respectively. 1 Or D N And the transmission data S N + 1 Or S N + M Is the data D 1 Or D N It is an EOR operation result of data arbitrarily selected.
[0069]
The matrix of the first term on the right side of Expression (1) is generated by the packet generation unit 14. Each component of the first row to the Nth row of this matrix is configured to form a unit matrix of N rows and N columns, and each component of the (N + 1) th row to the (N + M) th row is, for example, using a random function or the like. , “0” or “1” is set at random. The number of data to be subjected to the EOR operation may be any number. N + 1 Or D N + M The number range may be limited, for example, by unifying the number of the data or limiting the number to a predetermined number or more.
[0070]
Note that the matrix of the first term on the right side of Expression (1) may be generated at any timing as long as it is generated before being used in the operation, and is prepared in advance before performing the data transmission process. Alternatively, it may be calculated at the time of calculation. Further, as this matrix, a matrix of different components may be used for each block, or a common matrix may be used for all blocks.
[0071]
Further, the matrix of the first term on the right side of Expression (1) used in the calculation is also used in a packet restoration process by the client 3 that receives the data, as described later. That is, the server 1 and the client 3 that exchange data need to share information about the matrix of the first term on the right side of the equation (1) so that the same block can be processed using a common matrix. is there. This information sharing may be performed when the client 3 requests the server 1 to distribute data, or the information about the matrix of the first term on the right side of the equation (1) used in the server 1 may be shared with a data packet. It may be performed by adding to the packet 101 or the redundant packet 102, or may be a method other than the method described above.
[0072]
The information on the matrix of the first term on the right side of the equation (1) may be information directly representing the content of each component of the matrix, or information indirectly representing the content of each component of the matrix. Of course it is good. For example, when each component of the matrix is determined by a random function, information representing the “seed” of the random function can be used as information relating to the matrix of the first term on the right side of Expression (1).
[0073]
Note that the method of selecting data to be subjected to the EOR operation (that is, the method of determining the values of the components in the (N + 1) th to (N + M) th rows of the matrix of the first term on the right side of Equation (1)) is not limited to the above-described random selection The method may be any method, for example, using a plurality of predetermined combinations. Further, the performance of the packet for error correction generated by the packet generation unit 14 may be evaluated, and a combination of packets having a high performance may be selected from among them and adopted as the redundant packet 102.
[0074]
The number (M) of redundant packets 102 to be generated may be any number as long as it is within a practical range. The feature is that the amount of data to be distributed and the load required for processing increase as well as the ability to restore data. Is desirable.
[0075]
As described above, the packet generator 14 that has generated the error correction data by the operation of the equation (1) packetizes the generated data and generates the redundant packet 102.
[0076]
Returning to FIG. 4, the packet generation unit 14 that has performed the processing of step S <b> 2 and generated the redundant packet 102 is controlled by the CPU 11 and supplies the generated data packet 101 and redundant packet 102 to the communication unit 34.
[0077]
In step S3, the communication unit 34 transmits the obtained data packet 101 and the obtained redundant packet 102 to the distribution destination client 3 via the network 2 according to a predetermined protocol.
[0078]
Then, in step S4, the CPU 11 determines whether to end the data transmission process. When there is untransmitted distribution data and it is determined that the transmission is not to be ended, the CPU 11 returns the processing to step S1, and repeats the above-described processing for the next block. Further, for example, when the transmission of the requested distribution data is completed, or when an instruction to stop distribution is obtained from the user or the client 3 and it is determined that the data transmission processing is to be ended, the CPU 11 ends the data transmission processing. I do.
[0079]
As described above, the distribution data is subjected to data transmission processing for each predetermined block by the server 1 and distributed to the client 3 in packet units.
[0080]
FIG. 6 is a schematic diagram illustrating an example of a state of a packet transmitted from the server 1 to the client 3. As shown in FIG. 6A, the server 1 transmits a data packet and a redundant packet generated for each block, for each block.
[0081]
That is, the server 1 transmits the data packets 112-1 to 112-N and the redundant packets 113-1 to 113-M of the Tth block following the last redundant packet 111-M of the (T-1) th block. Send.
[0082]
Then, when the server 1 transmits the last redundant packet 113-M of the T-th block, the data packet of the (T + 1) -th block, which is the next block, is referred to as data packets 114-1, 114-2,. Transmit them sequentially.
[0083]
The client 3 that is the destination of the packet receives each packet in the communication unit 84, but arranges the packets received by the client 3 as shown in FIG. 6B on a packet transfer path such as the network 2 for each block. In some cases, some packets are lost, as in the example shown. In FIG. 6B, the client 3 has lost the data packets 112-1 to 112-4 of the T-th block and the redundant packet 113-2.
[0084]
The client 3 performs data reception processing as described later, and restores the lost data packets 112-1 to 112-4 using the received redundant packets 113-1 and 113-3 to 113-M. It is determined whether or not it is possible, and if it is possible, a restoration process is performed. If it is impossible, the server 1 is requested to retransmit the lost packet.
[0085]
The data reception process by the client 3 will be described with reference to the flowchart of FIG.
[0086]
In step S21, the communication unit 84 of the client 3 that is the transmission destination of the distribution data performs packet reception control processing, and the data packets 112-5 to 112- of the T-th block supplied from the server 1 via the network 2. N and the redundant packets 113-1 and 113-3 to 113-M are sequentially acquired and supplied to the data reproducing unit 64 via the bus 70.
[0087]
The received packet is temporarily stored in a RAM incorporated in the communication unit 84. If it is determined in step S22 described later that the packet reception of the target block has been completed, the data reproducing unit 64 may be supplied. Also, the received packet may be held in the RAM, the RAM 63, or the storage unit 83 incorporated in the CPU 61. Further, when the received packet is supplied to the data reproducing unit 64, it may be supplied to the packet restoring unit 65.
[0088]
In step S22, the CPU 61 controls the communication unit 84 to determine whether or not packet reception of the reception target block has been completed. When there is an unreceived packet for the reception target block and it is determined that the packet reception of the reception target block has not been completed, the CPU 61 returns the processing to step S21 and repeats the packet reception control processing.
[0089]
In step S22, when all the packets of the reception target block have been received and it is determined that the reception has been completed, the CPU 61 proceeds to step S23.
[0090]
The order in which the packets are received is the order in which the packets arrive, and the packets are not necessarily received in the order in which they were transmitted. Therefore, the CPU 61 performs the determination processing of step S22 as described above within a predetermined time. If the predetermined time has elapsed after repeating the processing of steps S21 and S22, the CPU 61 determines in step S22 that the packet reception of the reception target block has been completed, and advances the processing to step S23.
[0091]
For example, as shown in FIG. 6B, when data packets 112-1 to 112-4 of the T-th block are lost, and there is an unreceived packet for the reception target block even after a predetermined time has elapsed. , The CPU 61 determines that those packets have been lost, determines that the packet reception of the target block has been completed, and proceeds to step S23.
[0092]
In step S23, the data reproducing unit 64 controlled by the CPU 61 checks whether the supplied data packets are arranged for one block, and determines whether there is a lost data packet. If it is determined that there is a lost data packet, the data reproducing unit 64 supplies the acquired data packet and the redundant packet, and information on the first term on the right side of the equation (1) to the packet restoring unit 65, and executes the process. Proceed to S24.
[0093]
In step S24, the packet restoration unit 65 that has obtained various data from the data reproduction unit 64 performs packet restoration possibility determination processing on the lost data packet, and supplies the processing result to the CPU 61. The details of the packet restoration possibility determination processing will be described later with reference to the flowcharts of FIGS.
[0094]
In step S25, the CPU 61 determines whether or not the lost data packet can be restored based on the obtained packet restoration possibility determination processing result. If the CPU 61 determines that the lost data packet can be restored, the CPU 61 proceeds to step S25. Proceed to step S26.
[0095]
In step S26, the packet restoration unit 65 is controlled by the CPU 61 to perform a lost data packet restoration process. Details of the data packet restoration processing will be described with reference to the flowcharts of FIGS.
[0096]
When the lost data packet is restored by the data packet restoration process, the packet restoration unit 65 supplies the restored data packet to the data reproduction unit 64.
[0097]
In step S27, the data reproducing unit 64 controlled by the CPU 61 reproduces one block of distribution data from the acquired data packet group and supplies the data to the output unit 82 and the like. The output unit 82 to which the distribution data is supplied outputs an image, a sound, or the like corresponding to the obtained distribution data by a predetermined output method.
[0098]
In step S28, the CPU 61 determines whether or not to end the data reception process. If it is determined that the reception of the distributed data has not been completed and does not end, the process returns to step S21, and the next block And the subsequent processing is repeated.
[0099]
If the CPU 61 determines in step S28 that the reception of the distribution data is completed or that the user has received an instruction to stop the process and ends the data receiving process, the CPU 61 advances the process to step S29 and performs an end process. Then, the data reception process ends.
[0100]
In step S23, when it is determined that all the data packets of the target block have been received and there is no lost data packet, the data reproducing unit 64 advances the process to step S26, and executes the data packet restoration process.
[0101]
If the CPU 61 determines in step S25 that the lost packet is not recoverable, for example, if there are too many lost packets, the process proceeds to step S30, and determines whether retransmission of the lost packet is possible. judge.
[0102]
In streaming distribution, the transfer rate of a packet is usually set on the assumption that there may be several retransmissions. Therefore, when the load condition of the server 1 or the network 2 is good, and a sufficient time (predetermined time considered in step S22) until the packet reception control processing for the target block is completed is left. The client 1 can request retransmission of the lost data packet.
[0103]
In step S30, for example, when the number of requested data packets is equal to or more than a predetermined number, when the load on the server 1 or the network 2 is large, or when the time required for retransmission is not left If it is determined that retransmission is not possible, the CPU 61 returns the process to step S27 and repeats the subsequent processes. In this case, since the data packets of the target block are not aligned, the reproduction processing of this block results in an error. For example, in the case of image data, the reproduced image freezes until the data of the next block is reproduced. Or
[0104]
If it is determined in step S30 that retransmission is possible, the CPU 61 advances the process to step S31, controls the communication unit 84, and requests retransmission of the lost data packet. Then, the CPU 61 returns the process to step S21, and repeats the subsequent processes on the current target block in order to receive the requested data packet.
[0105]
As described above, the client 3 can receive the packet supplied from the server 1 and output a streaming distribution or a live broadcast by the server 1.
[0106]
Next, the packet restoration possibility determination process executed in step S24 of FIG. 7 will be described.
[0107]
The packet restoration unit 65 that has obtained the received data packet and the redundant packet determines whether restoration is possible before restoring the lost data packet.
[0108]
It is assumed that the client 3 has lost L redundant packets out of the K data packets and the M redundant packets transmitted from the server 1, and considers the data contained in the lost data packets as P 1 Or P K Then, the restoration of the data packet by the packet restoration unit 65 is represented by P in the simultaneous linear equation of the following equation (2). 1 Or P K This is done by finding the solution of
[0109]
(Equation 2)
Figure 2004159042
[0110]
In equation (2), the addition of each component is performed using an EOR operation for each corresponding bit.
[0111]
In equation (2), the component Q of the matrix of the first term on the right side 1 Or Q ML Is a variable calculated from the data included in the received data packet and the redundant packet as described later.
[0112]
The first term on the left side of the equation (2) is a matrix of ML rows and K columns generated based on information on the first term on the right side of the equation (1) shared with the server 1; 1 Or P K Is a matrix representing the coefficients of
[0113]
The packet restoring unit 65, based on the information on the first term on the right side of Expression (1) shared with the server 1, selects the lost data packet from the components of the matrix of the first term on the right side of Expression (1) and the received data packet. The components corresponding to both of the obtained redundant packets are extracted, and the matrix of the first term on the left side of Expression (2) is generated.
[0114]
For example, in the case of the example illustrated in FIG. 6B, the packet restoration unit 65 determines that the N + 1-th row and the (N + 3) -th to (N + M) -th rows of the matrix of the first term on the right side of Expression (1) used for the operation in the server 1 A matrix having the first to fourth columns of a row as components is generated.
[0115]
As described above, each component of the matrix of the first term on the left side of the equation (2) is P 1 Or P K Represents the coefficient. Therefore, if there is a column in which the values of all components are “0” in the matrix of the first term on the left side of the equation (2), the corresponding variable P 1 Or P K Cannot find the solution of When the number of columns K of the matrix of the first term on the left side of the equation (2) is larger than the number of rows ML, the number of variables is larger than the number of equations, and the packet restoration unit 65 Cannot find a solution.
[0116]
As described above, the packet restoration unit 65 simply calculates the variable P based on the matrix of the first term on the left side of Expression (2). 1 Or P K It can be determined whether or not the solution of can be calculated.
[0117]
The details of the above-described packet restoration possibility determination processing will be described with reference to the flowchart in FIG. In the following, the number of rows of the matrix of the first term on the left side of Equation (2) is ML, the number of columns is K, and the value of the component of X rows and Y columns is A XY And
[0118]
First, in step S51, the packet restoration unit 65 determines whether or not the value of the number of rows ML of the matrix of the first term on the left side of the equation (2) is equal to or greater than the value of the number of columns K. If it is determined that the value of the number ML is equal to or larger than the value of the column number K, the process proceeds to step S52.
[0119]
The packet restoration unit 65 sets the value of the variable Y to “0” in step S52, and sets the value of the variable X to “0” in step S53 and initializes the value.
[0120]
In step S54, the packet restoring unit 65 calculates the component A of the matrix of the first term on the left side of Expression (2). XY It is determined whether or not the value of is “1”. Component A XY Is “0” and the value is not “1”, the packet restoration unit 65 advances the processing to step S55, adds “1” to the value of the variable X, and sets the target to the next line. Change the ingredients to
[0121]
Then, in step S56, the packet restoration unit 65 determines whether or not the value of the variable X is equal to or less than the number of rows ML, and XY It is determined whether or not exists. If it is determined that the value of the variable X is equal to or less than the number of rows ML, the packet restoring unit 65 returns the processing to step S54 and returns to the component A of the new row. XY And the subsequent processing is repeated.
[0122]
If the packet restoration unit 65 determines in step S56 that the value of the variable X is larger than M−L, the component A having the value “1” is stored in the Yth column. XY Does not exist, the process proceeds to step S57, and a restoration impossible flag is set. Then, the packet restoration unit 65 outputs the state of the flag as the determination result to the CPU 61, and proceeds to step S25 in FIG.
[0123]
If it is determined in step S51 that the number of columns K of the matrix of the first term on the left side of the equation (2) is greater than the number of rows ML and ML is not greater than K, the packet restoration unit 65 performs To the step S57, and after setting the restoration impossible flag, outputs the state of the flag to the CPU 61 as a determination result, and proceeds to the step S25 in FIG.
[0124]
In step S24 described above, the component A XY Is determined to be "1", the packet restoring unit 65 advances the processing to step S58, adds "1" to the value of the variable Y, and changes the target column to the next column. Then, in step S59, the packet restoration unit 65 determines whether the value of the variable Y is equal to or less than the number of columns K, and XY It is determined whether or not exists.
[0125]
When determining that the value of the variable Y is equal to or smaller than the number of columns K, the packet restoration unit 65 returns the process to step S53, and repeats the subsequent processes for the next column.
[0126]
If it is determined that the value of the variable Y is greater than the number K of columns, the component A having a value of “1” for all columns XY Exists, the packet restoration unit 65 sets a restoration enable flag in step S60. Then, the packet restoration unit 65 outputs the state of the flag as the determination result to the CPU 61, and proceeds to step S25 in FIG.
[0127]
As described above, the packet restoration unit 65 performs the packet restoration possibility determination process before the data packet restoration process. This allows the client 3 to request the server 1 to retransmit the lost data packet before performing the data packet restoration process.
[0128]
In the above, the packet restoration unit 65 has been described to restore the lost data packet by solving the simultaneous linear equation shown in Expression (2). At this time, the packet restoration unit 65 sets the value to “0”. The solution is obtained by using a Gaussian elimination method using pivot selection, which is a processing method for selecting a coefficient that is not the same. The Gaussian elimination method using pivot selection is a method of calculating a solution by reducing variables included in an equation by processes such as forward elimination and back substitution.
[0129]
In this case, the packet restoration unit 65 may perform the restoration possibility determination processing of the lost data packet while performing a part of the data packet restoration processing using the Gaussian elimination method using the pivot selection.
[0130]
With reference to the flowchart of FIG. 9, a description will be given of a packet restoration possibility determination process using a Gaussian elimination method using pivot selection.
[0131]
First, in step S81, the packet restoration unit 65 determines whether or not the value of the number of rows ML of the matrix of the first term on the left side of Expression (2) is equal to or greater than the value of the number of columns K. If it is determined that the value of the number ML is equal to or greater than the value of the column number K, the process proceeds to step S82, where the value of the variable Y is set to “0” and initialized.
[0132]
Then, in step S83, the packet restoration unit 65 detects a component whose value is “1” for each component in the Y-th column, and in step S84, based on the detection result, assigns a value to the target Y column. It is determined whether or not a component having “1” exists.
[0133]
When it is determined that a component having a value of “1” exists in the target Y column, the packet restoration unit 65 advances the process to step S85, and determines whether there are a plurality of components having the value of “1”. judge.
[0134]
When it is determined that there are a plurality of components, the packet restoration unit 65 performs the EOR operation processing on each component between the row including the component detected after the second and the row including the component detected first in step S86. Is performed, and the result of the operation is replaced with a row containing the second and subsequent components used in the operation. That is, the packet restoration unit 65 performs the forward erasure process, and sets all the values of the components of the target column other than the row including the component detected first to “0”.
[0135]
For example, when a component having a value of “1” is detected in the first row, the third row, the fourth row, and the sixth row of the matrix of the first term on the left side of Expression (2), the packet restoration unit 65 The first and third rows, the first and fourth rows, and the first and sixth rows perform an EOR operation on each component, and calculate the results of the EOR operation on the original third and fourth rows, respectively. , Line 6. As a result, the values of the components in the third row, the fourth row, and the sixth row of the target column all become “0”.
[0136]
In step S87, the packet restoration unit 65 deletes the row including the component detected first so that the row including the component detected first this time is not subjected to the EOR operation in the processing for the next column. .
[0137]
When the process of step S87 is completed, the packet restoration unit 65 adds “1” to the value of the variable Y in step S88 to change the target column, and in step S89, the value of the variable Y is It is determined whether or not there is. When the value of the variable Y is equal to or less than the number of columns K and the component A XY When it is determined that there is a packet, the packet restoring unit 65 returns the process to step S83, and repeats the subsequent processes on a new column.
[0138]
In step S89, if the value of the variable Y is larger than K, that is, the component A XY If it is determined that there is no data, since the forward erasure process can be performed in all columns, the packet restoration unit 65 determines that the restoration process of the data packet can be performed, and advances the process to step S90. After setting the restoration enable flag, the state of the flag is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG.
[0139]
If it is determined in step S81 that the number of columns K of the matrix of the first term on the left side of equation (2) is greater than the number of rows ML and ML is not greater than or equal to K, the packet restoration unit 65 It is determined that the packet restoration process cannot be performed, and the process proceeds to step S91. After setting the restoration impossible flag, the state of the flag is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG. .
[0140]
Similarly, in step S84, if it is determined in the target column that the values of the components in all the rows are “0” and there is no component having a value of “1”, the packet restoration unit 65 performs the process in step S84. Proceeding to S91, after setting the restoration impossible flag, the state of the flag is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG.
[0141]
Further, in step S85, when it is determined that there is only one component having a value of “1” in the target column, the packet restoration unit 65 skips step S86 and proceeds to step S87.
[0142]
As described above, the packet restoration unit 65 determines the possibility of packet restoration using the Gaussian elimination method.
[0143]
In step S87, the deleted row may be retained in the packet restoration unit 65 or the like, and may be used in the data packet restoration processing in step S26 in FIG.
[0144]
In the above processing, the last column may be omitted. That is, in the process of step S89, the packet restoration unit 65 may determine whether the value of the variable Y is equal to or smaller than K-1.
[0145]
In the above, the packet restoration unit 65 uses the Gaussian elimination method using pivot selection, which is a processing method for selecting a coefficient whose value is not “0”, to solve the simultaneous linear equation shown in Expression (2). However, the present invention is not limited to this, and the packet restoration unit 65 obtains the solution of the simultaneous linear equation shown in Expression (2) by using the applied Gaussian elimination method to which the Gaussian elimination method is applied. Is also good. The applied Gaussian elimination method is, as described later, a method in which variables are reduced one by one from all simultaneous linear equations shown in Expression (2), and all solutions are calculated using the solutions of the last remaining variables. It is.
[0146]
In this case, the packet restoration unit 65 may perform the restoration possibility determination processing of the lost data packet while performing a part of the data packet restoration processing using the applied Gaussian elimination method.
[0147]
With reference to the flowchart of FIG. 10, a description will be given of the packet restoration possibility determination process using the applied Gaussian elimination method.
[0148]
First, in step S111, the packet restoration unit 65 determines whether or not the value of the number of rows ML of the matrix of the first term on the left side of Expression (2) is equal to or greater than the value of the number of columns K. If it is determined that the value of the number ML is equal to or greater than the value of the column number K, the process proceeds to step S112, where the value of the variable Y is set to “0” and initialized.
[0149]
Then, in step S113, the packet restoration unit 65 detects a component whose value is “1” for each component in the Y-th column, and in step S114, based on the detection result, assigns a value to the target Y-column. It is determined whether or not a component having “1” exists.
[0150]
When it is determined that the component having the value “1” exists in the target Y column, the packet restoration unit 65 advances the process to step S115, and determines whether there are a plurality of components having the value “1”. judge.
[0151]
If it is determined that there are a plurality of components, in step S116, the packet restoration unit 65 performs EOR operation processing on each component between two rows each including two components whose detection order is continuous, and converts the operation result into an operation. Of the used lines, the line in the order of detection is replaced with the line after. Note that the first detected row is replaced with the result of the EOR operation with the last detected row. That is, the packet restoration unit 65 sets all component values of the target column to “0”.
[0152]
For example, when a component having a value of “1” is detected in the first row, the third row, the fourth row, and the sixth row of the matrix of the first term on the left side of Expression (2), the packet restoration unit 65 In the first and third rows, the third and fourth rows, the fourth and sixth rows, the sixth and first rows, an EOR operation is performed on each component, and the results of these operations are expressed as , The third row, the fourth row, the sixth row, and the first row. As a result, the values of the components in the target column all become “0”.
[0153]
When the process of step S116 is completed, the packet restoration unit 65 adds “1” to the value of the variable Y in step S117 to change the target column. In step S118, the packet restoration unit 65 determines that the value of the variable Y is less than or equal to the number K of columns. It is determined whether or not there is. When the value of the variable Y is equal to or less than the number of columns K and the component A XY When it is determined that there is a packet, the packet restoration unit 65 returns the process to step S113, and repeats the subsequent processes on a new column.
[0154]
In step S118, when the value of the variable Y is larger than K, that is, the component A XY If it is determined that the data packet does not exist, the above process can be performed on all the columns, so that the packet reconstructing unit 65 determines that the reconstructing process of the data packet can be performed, advances the process to step S119, and After setting the possible flag, the state of the flag is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG.
[0155]
If it is determined in step S111 that the number of columns K of the matrix of the first term on the left side of equation (2) is greater than the number of rows ML and ML is not greater than or equal to K, the packet restoration unit 65 It is determined that the packet restoration process cannot be performed, the process proceeds to step S120, and after setting a non-restoration flag, the flag status is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG. .
[0156]
Similarly, in step S114, if it is determined in the target column that the values of the components of all the rows are “0” and there is no component having the value of “1”, the packet restoration unit 65 proceeds to step S114. Proceeding to S120, after setting the restoration impossible flag, the status of the flag is output to the CPU 61 as a determination result, and the process proceeds to step S25 in FIG.
[0157]
Further, in step S115, when it is determined that there is only one component having the value “1” in the target column, the packet restoration unit 65 skips the processing of step S116 and proceeds to step S117.
[0158]
As described above, the packet restoration unit 65 determines the possibility of packet restoration using the applied Gaussian elimination method.
[0159]
The row detected first in step S116 may be held in the packet restoration unit 65 or the like, and may be used in the data packet restoration processing in step S26 in FIG.
[0160]
In the above processing, the last column may be omitted. That is, in the process of step S118, the packet restoration unit 65 may determine whether the value of the variable Y is equal to or smaller than K-1.
[0161]
Next, the data packet restoration process executed in step S26 of FIG. 7 will be described.
[0162]
As described above, the data packet restoration process uses the Gaussian elimination method using pivot selection or the applied Gaussian elimination method to calculate the P of the simultaneous linear equation of Expression (2). 1 Or P K This is done by finding the solution of At this time, each component Q of the matrix of the first term on the right side of equation (2) 1 Or Q ML Is calculated by the following equation (3).
[0163]
[Equation 3]
Figure 2004159042
[0164]
In equation (3), the addition of each component is performed using an EOR operation for each corresponding bit.
[0165]
In the equation (3), the constant M is the number of data packets transmitted from the server 1, the constant K is the number of data packets lost by the client 3, the constant M is the number of redundant packets transmitted from the server 1, The constant L is the number of redundant packets lost by the client 3. In the formula (3), R 1 Or R NK Represents data included in each data packet received by the client 3, and J 1 Or J ML Represents data included in each redundant packet received by the client 3.
[0166]
The first term on the right side of the equation (3) is a matrix of ML rows and NK columns generated based on information on the first term on the right side of the equation (1) shared with the server 1, and R 1 Or R NK Is a matrix representing the coefficients of
[0167]
The packet restoring unit 65, based on the information on the first term on the right side of Equation (1) shared with the server 1, selects the received data packet from the matrix components of the first term on the right side of Equation (1), and The components corresponding to both of the received redundant packets are extracted, and the matrix of the first term on the right side of Expression (3) is generated.
[0168]
For example, in the case of the example illustrated in FIG. 6B, the packet restoration unit 65 determines that the N + 1-th row and the (N + 3) -th to (N + M) -th rows of the matrix of the first term on the right side of Expression (1) used for the operation in the server 1 A matrix having components of the fifth to Nth columns of the row is generated.
[0169]
The packet restoration unit 65 computes each component Q of the matrix of the first term on the left side by calculating the above equation (3). 1 Or Q ML Is calculated, and their values are substituted into equation (2) to obtain P 1 Or P K Find the solution of At this time, the packet restoration unit 65 calculates a solution using the method used in the packet restoration possibility determination processing in step S24 in FIG. 7 among the Gaussian elimination method using pivot selection and the applied Gaussian elimination method.
[0170]
That is, if the packet restoration unit 65 performs the process using the Gaussian elimination method using the pivot selection as shown in the flowchart in FIG. 9 in step S24 of FIG. 7, the same applies to the data packet restoration process. Then, a process using a Gaussian elimination method using pivot selection is performed.
[0171]
Also, when performing the process using the applied Gaussian elimination method as shown in the flowchart of FIG. 10 in step S24 of FIG. 7, the packet restoration unit 65 similarly applies the applied Gaussian in this data packet restoration process. Perform processing using the elimination method.
[0172]
When the packet restoration unit 65 performs the processing as shown in the flowchart in FIG. 8, the method used for the data restoration processing may be a Gaussian elimination method using pivot selection, or an applied Gaussian elimination method. It may be a law.
[0173]
Next, a data packet restoration process by the client 3 will be described with reference to a flowchart of FIG.
[0174]
First, in step S131, the packet restoration unit 65 performs the operation of Expression (3), 1 Or Q ML Is calculated, and a simultaneous linear equation for restoring a lost data packet, such as equation (2), is established.
[0175]
Then, in step S132, the packet restoring unit 65 sets the value of the variable Y to “0” and initializes it. In step S133, the packet restoring unit 65 calculates the value of each component of the Y-th column of the matrix of the first term on the left side of Expression (2). , A component having a value of “1” is detected.
[0176]
Based on the detection result, in step S134, the packet restoration unit 65 determines whether or not there is a component whose value is “1”. If it is determined that there is a component, the packet restoration unit 65 performs the process in step S135. Proceed to
[0177]
In step S135, the packet restoration unit 65 determines whether or not there are a plurality of components having the value “1”. If it is determined that there are a plurality of components, the process proceeds to step S136.
[0178]
When there are a plurality of components having the value “1”, the packet restoration unit 65 determines in step S136 between the equation including the component detected after the second and the equation including the component detected first. An EOR operation is performed on each term, and the operation result is replaced with a row containing the second and subsequent components used in the operation. That is, the packet restoration unit 65 performs the forward erasure process, and sets all the values of the components of the target Y column other than the row including the component detected first to “0”.
[0179]
Then, in step S137, the packet restoring unit 65 extracts an equation including the component detected first for solution, and holds the equation. In other words, the EOR operation when the process of step S136 is repeated thereafter is performed not on the extracted equations but on the equations left unextracted.
[0180]
The packet restoration unit 65 that has completed the processing in step S137 proceeds to step S138, adds “1” to the value of the variable Y, and determines in step S139 whether the value of the variable Y is equal to or less than the number of columns K. Is determined. When the value of the variable Y is equal to or less than the number of columns K and the component A XY If it is determined that there is a packet, the packet restoration unit 65 returns the process to step S133, and repeats the subsequent processes on a new column.
[0181]
In step S139, if the value of the variable Y is larger than K, XY If it is determined that does not exist, the packet restoring unit 65 advances the process to step S140, and sets the value of the variable Y to “K”.
[0182]
Then, in step S141, the packet restoration unit 65 uses the equation held for solution by the processing in step S137 to Y Is calculated, in step S142, "1" is subtracted from the value of the variable Y, and in step S143, it is determined whether the value of the variable Y is "0". When determining that the value is not “0”, the packet restoration unit 65 returns the process to step S141 and repeats the subsequent processes.
[0183]
Then, in step S143, when it is determined that the value of the variable Y is “0”, the packet restoring unit 65 1 Or P K Has been calculated, the data packet restoration process ends, and the process proceeds to step S27 in FIG.
[0184]
If it is determined in step S134 that the component having the value “1” does not exist in the Y-th column of the matrix of the first term on the left side of Expression (2), the packet restoration unit 65 ends the data packet restoration processing. Then, the process proceeds to step S27 in FIG.
[0185]
Further, if it is determined in step S135 that there are a plurality of components having the value “1” for the Y-th column of the matrix of the first term on the left side of the equation (2), the packet restoration unit 65 omits the processing in step S136. Then, the process proceeds to step S137.
[0186]
As described above, the packet restoration unit 65 restores the data included in the lost data packet by using the Gaussian elimination method.
[0187]
Next, another example using the applied Gaussian elimination method of the data packet restoration processing by the client 3 will be described with reference to the flowchart of FIG.
[0188]
First, in step S161, the packet restoration unit 65 performs the operation of Expression (3), 1 Or Q ML Is calculated, and a simultaneous linear equation for restoring a lost data packet, such as equation (2), is established.
[0189]
Then, in step S162, the packet restoring unit 65 sets the value of the variable Y to “0” and initializes it. , A component having a value of “1” is detected.
[0190]
Based on the detection result, the packet restoration unit 65 determines in step S164 whether or not a component having a value of “1” exists. If it determines that there is a component, the packet restoration unit 65 performs the process in step S165. Proceed to
[0191]
In step S165, the packet restoration unit 65 holds the equation including the component detected first for solving. Then, in step S166, the packet restoration unit 65 determines whether or not there are a plurality of components having the value “1”. If it is determined that there are a plurality of components, the process proceeds to step S167.
[0192]
If there are a plurality of components having the value “1”, in step S167, the packet restoration unit 65 performs EOR operation processing on each term between two equations each including two components whose detection order is continuous. The result of the calculation is replaced with the later equation in the order of detection among the equations used for the calculation. Note that the equation detected first is replaced with the result of the EOR operation with the equation detected last.
[0193]
Then, the packet restoration unit 65 adds “1” to the value of the variable Y in step S168, and determines whether or not the value of the variable Y is equal to or less than the number of columns K in step S169. When the value of the variable Y is equal to or less than the number of columns K and the component A XY When it is determined that there is a packet, the packet restoration unit 65 returns the process to step S163, and repeats the subsequent processes on a new column.
[0194]
In step S169, if the value of the variable Y is larger than K, that is, the component A XY If it is determined that does not exist, the packet restoring unit 65 advances the processing to step S170, and sets the value of the variable Y to “K”.
[0195]
Then, in step S171, the packet restoration unit 65 uses the equation held for solution by the processing in step S165 to calculate P Y Is calculated, and in step S172, “1” is subtracted from the value of the variable Y, and in step S173, it is determined whether the value of the variable Y is “0”. When determining that the value is not “0”, the packet restoring unit 65 returns the process to step S171, and repeats the subsequent processes.
[0196]
Then, in step S173, if it is determined that the value of the variable Y is “0”, the packet restoring unit 65 1 Or P K Has been calculated, the data packet restoration process ends, and the process proceeds to step S27 in FIG.
[0197]
If it is determined in step S164 that the component having the value “1” does not exist in the Y-th column of the matrix of the first term on the left side of Expression (2), the packet restoration unit 65 ends the data packet restoration processing. Then, the process proceeds to step S27 in FIG.
[0198]
Furthermore, in step S166, when it is determined that there are a plurality of components having the value “1” for the Y-th column of the matrix of the first term on the left side of Expression (2), the packet restoration unit 65 omits the processing of step S167. Then, the process proceeds to step S168.
[0199]
As described above, the packet restoration unit 65 restores the data included in the lost data packet by using the applied Gaussian elimination method.
[0200]
As described above, since the processing for restoring the lost data packet is performed in the client 3, the number of times of requesting the retransmission of the data packet can be reduced. Further, before performing the data packet restoration process, it is determined whether or not the lost data packet can be restored. Therefore, when retransmission is necessary, a request for retransmission can be made immediately. Such a process is particularly effective in streaming distribution or live broadcasting with a limited processing time.
[0201]
In FIG. 1, a system in which the server 1 and the clients 3-1 and 3-2 are connected to one network 2 has been described. The connection may be made to the network 2 or more clients 3 may be connected. In addition, the server 1 may be connected to the client 3 via a plurality of networks, or another device such as a relay station. In this case, the distribution process to which the present invention is applied may be, for example, a distribution process between the server 1 and the relay station or between the relay station and the client 3.
[0202]
Further, in FIG. 1, the server 1 and the client 3 are connected to the network 2 via a wire, and the wired communication is described. However, the present invention is not limited to this, and the server 1 and the client 3 have a wireless communication function. And may be connected to the network 2 by wireless communication to perform communication via the network 2. At this time, communication standards used include not only communication via a telephone line via a communication carrier but also IEEE (Institute of Electrical and Electronic Engineers) 802.11x, Bluetooth, IrDA (InfraRed Data Association) using infrared light, and the like. Short-range wireless communication.
[0203]
Furthermore, each block in the internal configuration example of the server 1 shown in FIG. 2 may be configured such that part or all of its function is integrated with another block, or is shown as one block. The function may be configured as a plurality of blocks. The same applies to the client 3 shown in FIG.
[0204]
The server 1 and the client 3 can be widely applied to electronic devices such as a mobile phone, a digital video camera, and a television receiver other than the personal computer described above.
[0205]
The series of processes described above can be executed by hardware, but can also be executed by software. When a series of processing is executed by software, a program constituting the software may execute various functions by installing a computer built into dedicated hardware or installing various programs. It is installed from a recording medium into a possible general-purpose personal computer or the like.
[0206]
As shown in FIG. 2 or FIG. 3, a recording medium for recording a program installed in a computer and made executable by the computer includes a magnetic disk 41 or 91 (including a flexible disk), an optical disk 42 or 92 ( CD-ROM (compact disc-read only memory), DVD (including digital versatile disc), magneto-optical disk 43 or 93 (including MD (mini-disc) (registered trademark)), or semiconductor memory 44 or 94 And a ROM 12 or 62 in which a program is temporarily or permanently recorded. Use a wired or wireless communication medium, such as a public line network, local area network, or the Internet, or a digital satellite broadcast, via a router, modem, or other interface as necessary to record the program on the recording medium. It is done.
[0207]
In this specification, a step of describing a program recorded on a recording medium may be performed in chronological order according to the described order, or may be performed in parallel or not necessarily in chronological order. This also includes processes executed individually.
[0208]
【The invention's effect】
As described above, according to the present invention, packet data supplied from another device can be acquired. In particular, it is possible to more suitably acquire packet data and reproduce data.
[Brief description of the drawings]
FIG. 1 is a diagram showing a basic configuration example of a data transmission system to which the present invention is applied.
FIG. 2 is a block diagram illustrating an example of the internal configuration of a server in FIG. 1;
FIG. 3 is a block diagram illustrating an example of the internal configuration of a client in FIG. 1;
FIG. 4 is a flowchart illustrating a data transmission process by the server in FIG. 1;
FIG. 5 is a schematic diagram illustrating an example of a packet generated by the server of FIG. 1;
FIG. 6 is a schematic diagram showing a state of a packet transmitted from a server and received by a client in the data transmission system of FIG. 1;
FIG. 7
3 is a flowchart illustrating a data reception process performed by the client in FIG. 1.
FIG. 8
8 is a flowchart illustrating an example of a packet restoration possibility determination process executed in step S24 of FIG. 7.
FIG. 9
8 is a flowchart illustrating another example of the packet restoration possibility determination process executed in step S24 of FIG. 7.
FIG. 10
8 is a flowchart illustrating still another example of the packet restoration possibility determination process executed in step S24 of FIG. 7.
FIG. 11
8 is a flowchart illustrating an example of a data packet restoration process performed in step S26 of FIG.
FIG.
8 is a flowchart illustrating another example of the data packet restoration process performed in step S26 of FIG.
[Explanation of symbols]
1 server, 2 networks, 3-1 and 3-2 clients, 14 packet generator, 64 data reproducer, 65 packet restorer, 101 data packet, 102 redundant packet

Claims (12)

他の情報処理装置から配信用データを受信する情報処理装置において、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、および複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信手段と、
前記受信手段により受信できなかった前記データパケットが復元可能であるか否かを判定する可能性判定手段と、
前記可能性判定手段による判定結果に基づいて、復元不可能である場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する要求手段と、
前記可能性判定手段による判定結果に基づいて、復元可能である場合、前記受信手段により受信された前記データパケットおよび前記冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかった前記データパケットを復元する復元手段と
を備えることを特徴とする情報処理装置。
In an information processing device that receives distribution data from another information processing device,
A receiving unit that receives a data packet of the data for distribution and a redundant packet including an exclusive OR operation result of each data included in the plurality of data packets, transmitted by the other information processing apparatus,
Possibility determining means for determining whether the data packet that could not be received by the receiving means is recoverable,
Request means for requesting the other information processing device to retransmit the data packet that could not be received, based on the determination result by the possibility determining means, if restoration is not possible,
Solving a simultaneous linear equation using an exclusive-OR operation using the data packet and the redundant packet received by the receiving means, when restoration is possible, based on the determination result by the possibility determining means; And a restoring means for restoring the data packet that could not be received.
前記冗長パケットは、所定の大きさに分割された前記配信用データであるブロック毎に、同一の前記ブロックに対応する、任意に選択された複数の前記データパケットを用いて生成される
ことを特徴とする請求項1に記載の情報処理装置。
The redundant packet is generated by using a plurality of arbitrarily selected data packets corresponding to the same block for each block which is the distribution data divided into a predetermined size. The information processing apparatus according to claim 1.
前記データパケットおよび前記冗長パケットは、前記ブロック単位で前記他の情報処理装置より送信される
ことを特徴とする請求項2に記載の情報処理装置。
The information processing apparatus according to claim 2, wherein the data packet and the redundant packet are transmitted from the another information processing apparatus in the block unit.
前記受信手段は、同一の前記ブロックの前記データパケットおよび前記冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備える
ことを特徴とする請求項3に記載の情報処理装置。
The information processing apparatus according to claim 3, wherein the receiving unit further includes a monitoring unit that monitors whether reception processing of the data packet and the redundant packet of the same block is completed.
前記受信手段により受信できなかった前記データパケットが存在するか否かを判定する存在判定手段をさらに備える
ことを特徴とする請求項1に記載の情報処理装置。
2. The information processing apparatus according to claim 1, further comprising an existence determination unit configured to determine whether the data packet that cannot be received by the reception unit exists.
前記冗長パケットの生成に関する情報を前記他の情報処理装置と共有する
ことを特徴とする請求項1に記載の情報処理装置。
The information processing apparatus according to claim 1, wherein information on the generation of the redundant packet is shared with the another information processing apparatus.
前記可能性判定手段は、前記連立一次方程式の係数を表す行列の成分に基づいて、前記受信手段により受信できなかった前記データパケットを復元可能であるか否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。
The said possibility judgment means judges whether the said data packet which could not be received by the said receiving means can be restored based on the component of the matrix showing the coefficient of the said simultaneous linear equation. Item 2. The information processing device according to item 1.
前記可能性判定手段により復元不可能と判定された前記データパケットの再送処理を行う余裕があるか否かを判定する余裕判定手段をさらに備え、
前記要求手段は、前記余裕判定手段により前記再送処理を行う余裕があると判定された場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する
ことを特徴とする請求項1に記載の情報処理装置。
The apparatus further includes a margin determining unit that determines whether there is a margin for performing a retransmission process of the data packet determined to be unrecoverable by the possibility determining unit,
The request means, if the margin determination means determines that there is enough time to perform the retransmission processing, requests the other information processing apparatus to retransmit the data packet that could not be received. 2. The information processing device according to 1.
前記復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、前記連立一次方程式を解く
ことを特徴とする請求項1に記載の情報処理装置。
2. The information processing apparatus according to claim 1, wherein the restoration unit solves the simultaneous linear equations using a Gaussian elimination method using pivot selection, which is a processing method for selecting a coefficient whose value is not 0. 3. apparatus.
前記復元手段は、前記行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、前記連立一次方程式を解く
ことを特徴とする請求項1に記載の情報処理装置。
The restoration means uses an applied Gaussian elimination method for calculating an exclusive OR of adjacent terms among equations including coefficients whose values are not 0 with respect to a predetermined column of the matrix, and The information processing apparatus according to claim 1, wherein the equation is solved.
他の情報処理装置と配信用データの授受を行う情報処理装置の情報処理方法であって、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、および複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信制御ステップと、
前記受信制御ステップの処理により受信できなかった前記データパケットが復元可能であるか否かを判定する可能性判定ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する要求ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかった前記データパケットを復元する復元ステップと
を含むことを特徴とする情報処理方法。
An information processing method for an information processing apparatus that performs transmission and reception of distribution data with another information processing apparatus,
A reception control step of receiving a data packet of the data for distribution and a redundant packet including an exclusive OR operation result of each data included in the plurality of data packets, transmitted by the other information processing apparatus,
Possibility determination step of determining whether the data packet that could not be received by the processing of the reception control step is recoverable,
A requesting step of requesting the other information processing apparatus to retransmit the data packet that could not be received, based on the determination result obtained by the processing of the possibility determining step, if the data packet cannot be restored,
If restoration is possible based on the result of the determination in the possibility determination step, simultaneous use of the data packet and the redundant packet received in the processing of the reception control step using an exclusive OR operation Recovering the data packet that could not be received by solving a linear equation.
他の情報処理装置と配信用データの授受を行う処理をコンピュータに行わせるプログラムにおいて、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、および複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む冗長パケットを受信する受信制御ステップと、
前記受信制御ステップの処理により受信できなかった前記データパケットが復元可能であるか否かを判定する可能性判定ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信できなかった前記データパケットの再送を前記他の情報処理装置に要求する要求ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記冗長パケットを用いて、排他的論理和演算を用いた連立一次方程式を解くことによって、受信できなかった前記データパケットを復元する復元ステップと
を含むことを特徴とするプログラム。
In a program that causes a computer to perform a process of transmitting and receiving distribution data with another information processing device,
A reception control step of receiving a data packet of the data for distribution and a redundant packet including an exclusive OR operation result of each data included in the plurality of data packets, transmitted by the other information processing apparatus,
Possibility determination step of determining whether the data packet that could not be received by the processing of the reception control step is recoverable,
A requesting step of requesting the other information processing apparatus to retransmit the data packet that could not be received, based on the determination result obtained by the processing of the possibility determining step, if the data packet cannot be restored,
If restoration is possible based on the result of the determination in the possibility determination step, simultaneous use of the data packet and the redundant packet received in the processing of the reception control step using an exclusive OR operation Restoring the data packet that could not be received by solving a linear equation.
JP2002322087A 2002-11-06 2002-11-06 Information processing device Expired - Fee Related JP4088956B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002322087A JP4088956B2 (en) 2002-11-06 2002-11-06 Information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002322087A JP4088956B2 (en) 2002-11-06 2002-11-06 Information processing device

Publications (2)

Publication Number Publication Date
JP2004159042A true JP2004159042A (en) 2004-06-03
JP4088956B2 JP4088956B2 (en) 2008-05-21

Family

ID=32802371

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002322087A Expired - Fee Related JP4088956B2 (en) 2002-11-06 2002-11-06 Information processing device

Country Status (1)

Country Link
JP (1) JP4088956B2 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008541526A (en) * 2005-05-04 2008-11-20 シーメンス エンタープライズ コミュニケーションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディートゲゼルシャフト Method and apparatus for determining an index assigned to a correction symbol
JP2010114844A (en) * 2008-11-10 2010-05-20 Ntt Docomo Inc Data receiving device, and method of receiving data
EP2200207A1 (en) * 2008-12-22 2010-06-23 GN Resound A/S Error correction scheme in a hearing system wireless network
JP2012129751A (en) * 2010-12-14 2012-07-05 Canon Inc Receiver and method for processing by receiver
US8312352B2 (en) 2008-12-09 2012-11-13 Canon Kabushiki Kaisha Communication apparatus and communication method
US8503444B2 (en) 2009-02-06 2013-08-06 Canon Kabushiki Kaisha Transmission device, transmission method, and program for the same
JP6300293B1 (en) * 2017-07-07 2018-03-28 株式会社Asj Encoding / decoding structure and distributed data system using the same
US10038509B2 (en) 2015-03-24 2018-07-31 Sony Corporation Data reception apparatus, data transmission system, data reception method, and data transmission method
WO2019008792A1 (en) * 2017-07-07 2019-01-10 株式会社Asj Encoding/decoding structure, and distribution data system using same

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4814315B2 (en) * 2005-05-04 2011-11-16 シーメンス エンタープライズ コミュニケーションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディートゲゼルシャフト Method and apparatus for determining an index assigned to a correction symbol
JP2008541526A (en) * 2005-05-04 2008-11-20 シーメンス エンタープライズ コミュニケーションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディートゲゼルシャフト Method and apparatus for determining an index assigned to a correction symbol
JP2010114844A (en) * 2008-11-10 2010-05-20 Ntt Docomo Inc Data receiving device, and method of receiving data
US8312352B2 (en) 2008-12-09 2012-11-13 Canon Kabushiki Kaisha Communication apparatus and communication method
US8265099B2 (en) 2008-12-22 2012-09-11 Gn Resound A/S Error correction scheme in a hearing system wireless network
EP2200207A1 (en) * 2008-12-22 2010-06-23 GN Resound A/S Error correction scheme in a hearing system wireless network
US8503444B2 (en) 2009-02-06 2013-08-06 Canon Kabushiki Kaisha Transmission device, transmission method, and program for the same
JP2012129751A (en) * 2010-12-14 2012-07-05 Canon Inc Receiver and method for processing by receiver
US10038509B2 (en) 2015-03-24 2018-07-31 Sony Corporation Data reception apparatus, data transmission system, data reception method, and data transmission method
US10447416B2 (en) 2015-03-24 2019-10-15 Sony Corporation Data reception apparatus, data transmission system, data reception method, and data transmission method
US10873408B2 (en) 2015-03-24 2020-12-22 Sony Corporation Data reception apparatus, data transmission system, data reception method, and data transmission method
JP6300293B1 (en) * 2017-07-07 2018-03-28 株式会社Asj Encoding / decoding structure and distributed data system using the same
WO2019008792A1 (en) * 2017-07-07 2019-01-10 株式会社Asj Encoding/decoding structure, and distribution data system using same
WO2019008748A1 (en) * 2017-07-07 2019-01-10 株式会社Asj Data processing system and distribution data system using same
US11064024B1 (en) 2017-07-07 2021-07-13 Asj Inc. Encoding/decoding structure and distributed data system using the same

Also Published As

Publication number Publication date
JP4088956B2 (en) 2008-05-21

Similar Documents

Publication Publication Date Title
JP2004165922A (en) Apparatus, method, and program for information processing
US7792982B2 (en) System and method for distributing streaming content through cooperative networking
US6665726B1 (en) Method and system for fault tolerant media streaming over the internet
US7185084B2 (en) Server-side measurement of client-perceived quality of service
US20060026294A1 (en) Media transrating over a bandwidth-limited network
JP4690387B2 (en) Distribution method preferably applied to streaming system
US9490850B1 (en) Method and apparatus for decoding packetized data
US20210218788A1 (en) Media playback apparatus and method including delay prevention system
US20120151291A1 (en) Receiving apparatus and processing method for receiving apparatus
JP4506185B2 (en) Receiving apparatus and method, and program
US8392955B2 (en) Apparatus and method for representing a sequence of content as projections for reconstructing the sequence at full or lower quality
US8930755B2 (en) Distribution apparatus and distribution method
KR101942270B1 (en) Media playback apparatus and method including delay prevention system
JP4088956B2 (en) Information processing device
Chakareski Wireless streaming of interactive multi-view video via network compression and path diversity
CN111093083A (en) Data transmission method and device
JP5344541B2 (en) Data transmission apparatus, transmission method and program
JP6305398B2 (en) Method and apparatus for error recovery using information associated with a transmitter
US11818501B2 (en) Transmitting content during a networked conference
JP3927486B2 (en) Streaming distribution apparatus, streaming distribution system, and streaming distribution method
Shabrina et al. The Usage of CDN for Live Video Streaming to Improve QoS. Case Study: 1231 Provider.
Al-Taee et al. A testbed for experimental evaluation of efficient multimedia delivery over lossy networks
JP6412741B2 (en) COMMUNICATION DEVICE, COMMUNICATION METHOD, AND PROGRAM
Yuan et al. Efficient allocation of packet-level forward error correction in video streaming over the Internet
JP6614145B2 (en) Receiving device, receiving method, and computer program

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