JP5610709B2 - エラー訂正用データの生成装置、及び生成方法 - Google Patents

エラー訂正用データの生成装置、及び生成方法 Download PDF

Info

Publication number
JP5610709B2
JP5610709B2 JP2009135315A JP2009135315A JP5610709B2 JP 5610709 B2 JP5610709 B2 JP 5610709B2 JP 2009135315 A JP2009135315 A JP 2009135315A JP 2009135315 A JP2009135315 A JP 2009135315A JP 5610709 B2 JP5610709 B2 JP 5610709B2
Authority
JP
Japan
Prior art keywords
data
packets
packet
error
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009135315A
Other languages
English (en)
Other versions
JP2010283606A5 (ja
JP2010283606A (ja
Inventor
高久 雅彦
雅彦 高久
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2009135315A priority Critical patent/JP5610709B2/ja
Priority to US12/784,901 priority patent/US8429505B2/en
Publication of JP2010283606A publication Critical patent/JP2010283606A/ja
Publication of JP2010283606A5 publication Critical patent/JP2010283606A5/ja
Application granted granted Critical
Publication of JP5610709B2 publication Critical patent/JP5610709B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Description

本発明は、エラーした保護対象データのエラー訂正をするためのエラー訂正用データの生成方法に関する。
インターネットなどの通信網を用いた映像伝送の普及にともない、RTP(A Transport Protocol for Real−Time Applications)といったリアルタイム性を持った通信プロトコルが本格的に利用されてきている。RTPは、高速かつ軽量な伝送特性を持つUDP(User Datagram Protocol)上に実装されることを想定しており、動画や音声などの大容量データを連続的に伝送する目的で設計されたものである。
このような通信プロトコルで送信される通信データのエラーに対する耐性を強化する方法として、たとえば再送制御やFEC(Forward Error Correction、前方誤り訂正)が知られている。特にFECは、送信側で、通信データと共に、通信データのエラーを訂正するために用いる冗長データを送信し、エラーした通信データの訂正を受信側で行うことができる。
FECには様々な方法があるが、比較的処理負荷が小さく広く知られたものに、一般にクロスFEC(または2D−FEC)と呼ばれる排他的論理和を用いた方法がある(例えば、[非特許文献1])。
クロスFECでは、伝送するパケットをたとえばL列D行の行列に整列し、列方向および行方向にそれぞれ排他的論理和を計算し、結果として得られたデータを冗長データとする。この冗長データをパケット化して伝送することにより、冗長データを含む列方向または行方向のパケット群からひとつのパケットロスが発生しても、排他的論理和の計算を適用することにより、回復することが可能となる。
図10は、典型的なクロスFEC適用の従来例である。この例では、伝送するパケットを5列7行の行列に整列して12個の冗長パケットを生成している。それぞれの矩形は伝送パケットである。そして、例えばデータパケット1〜5を用いて行方向のFECパケットf1が生成され、データパケット1、6、11、16、21、26、31を用いて列方向のFECパケットF1が生成される。すなわち、FECパケットF1〜F5は、列方向のFECパケット(冗長パケット)であり、FECパケットf1〜f7は、行方向のFECパケット(冗長パケット)である。
クロスFEC方式は、データパケットと共に、行方向のFECパケットと列方向のFECパケットを送信する。そして、例えば、ある行のデータパケットのうちの1つにエラーが発生しても、当該行のエラーが発生していないデータパケットと、当該行で生成された行方向のFECパケットを用いてエラーを訂正することができる。列についても同様である。たとえば、データパケット7が損失した場合、FECパケットF2と第2列のデータパケット群、あるいは、FECパケットf2と第2行のデータパケット群よりこれを回復することが出来る。
また、列方向の冗長パケットのみ、あるいは、行方向の冗長パケットのみを適用してFECを構成することもできる。これを2D−FECに対して1D−FECと呼ぶ場合もある。
Pro−MPEG Code of Practice #3 release 2、Pro−MPEG Forum、2004年7月
しかしながら、エラーの発生パターンによっては、冗長データによるエラーの訂正ができない場合があった。
例えば、図10のデータパケット7、9、12、14がエラーした場合について説明する。このとき、エラーしたデータパケット7、9は、冗長パケットf2を用いて排他的論理和演算をしてもエラー訂正できない。また、エラーしたデータパケット7と12は、冗長パケットF2を用いて排他的論理和演算をしてもエラー訂正できない。同様に、データパケット14もエラー訂正できない。
また、例えば、図10のデータパケット1〜8がエラーした場合、データパケット4と5は、それぞれ冗長パケットF4とF5を用いてエラー訂正することができるが、データパケット1〜3とデータパケット6〜8は、冗長パケットによるエラー訂正できない。
例えば、通信経路上において、上記のような周期的なエラーや連続的なエラーが発生すると、冗長データによるエラー訂正ができない場合があった。尚、ここでは、排他的論理和を用いた方法で冗長パケットを生成した場合について説明しているが、たとえばリードソロモン符号のようなより冗長性に優れた方式を用いたとしても、回復可能な上限数を超えてパケットロスが発生すればエラー訂正不可能である。
本発明は、上述した問題を解決するためになされたものであり、その目的は、データ損失の発生パターンにより対応したエラー訂正用データの生成方法を提供することである。
上記課題を解決するために、本発明のエラー訂正用データの生成装置は、例えば、以下の構成を有する。即ち、エラーした保護対象データを訂正するために用いる訂正用データの生成装置であって、保護対象データを入力する入力手段と、前記入力手段により入力された所定パケット数に対応する保護対象データのエラーを訂正するための訂正用データを生成する生成手段であって、前記所定パケット数のパケットのうちあるパケットが前記エラーした場合に当該エラーパケットに対応する第1の保護対象データのエラーを訂正するために用いられる第1の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番がN個間隔となる複数のパケットに対応する保護対象データを用いて生成すると共に、前記入力手段により入力された前記所定パケット数に対応する保護対象データのうち前記エラーパケットが前記エラーした場合に前記エラーパケットに対応する前記第1の保護対象データのエラーを訂正するために用いられる第2の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番が前記N個間隔とは異なるM個間隔となる複数のパケットに対応する保護対象データを用いて生成する生成手段とを有し、前記生成手段は、前記NとMの最小公倍数が前記所定パケット数以上の数になる前記NとMで前記訂正用データを生成する
本発明によれば、データ損失の発生パターンにより対応したエラー訂正用データを生成することができる。
システム機能ブロック図 サーバー101の構成ブロック図 冗長パケットの生成パターンの例 サーバー101における処理の1例を示すフローチャート 冗長パケットの生成パターン変更処理の1例を示すフローチャート 行列情報参照テーブルの例 実施形態におけるFECパケットの構造の例 冗長パケットの生成パターンの別の例 記録媒体への適用例の模式図 クロスFEC適用の従来例
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
<実施形態1>
本実施形態の映像伝送システムの構成について、図1のシステム機能ブロック図を参照して説明する。
図1において、サーバー101は、映像データを伝送する通信機能を備えたサーバーであり、単一もしくは複数のコンピュータ装置で実現してもよいし、例えば、通信機能を備えたカメラ(撮像装置)であってもよい。サーバー101は、クライアント102に送信するデータパケットを用いてエラー訂正用の冗長パケットを生成し、クライアント102に送信する。即ち、サーバー101は、エラーしたデータパケット(保護対象データ)を訂正するために用いる冗長パケット(訂正用データ)を生成する生成装置である。尚、本形態では、映像データのデータパケットをクライアント102に送信する場合について説明するが、音声データやメタデータなどに本発明を適用することも可能である。
クライアント102は、サーバー101より伝送された映像データを受信する通信機能を備えたクライアントであり、単一もしくは複数のコンピュータ装置で実現してもよいし、例えば、通信機能を備えたストレージ装置やテレビであってもよい。これらサーバー101とクライアント102は、互いに通信可能なようにネットワーク103で接続されている。
サーバー101は、映像取得部104、データパケット生成部105、FEC生成部106、送受信部107を含んで構成されている。また、クライアント102は、送受信部108、再構成部109、映像処理部110を含んで構成されている。
サーバー101の映像取得部104は、クライアント102に対して送信する映像データを取得する。映像取得部104は、例えば、映像センサと符号化モジュールなどから構成されるカメラ機能を含み、クライアント102に送信する映像データを取得する。また、例えば、符号化された映像データを記録する記録装置から読み出しを行うことによって映像データを取得する。
データパケット生成部105は、映像取得部104により取得された映像データを通信に適したサイズに分割し、データパケット(保護対象データ)を生成する。より具体的には、例えば、ネットワーク103がIPネットワークであり、通信プロトコルとしてRTPを用いる場合、データパケットは、一般に1500バイト程度のRTPパケットとして生成される。そして、データパケット生成部105は、生成したデータパケットを入力する。即ち、データパケット生成部105は、データパケット(保護対象データ)を入力する。ただし、本形態では、データパケットに含まれる、例えばクライアント102の宛先に関する情報などは、冗長パケットによってエラーを訂正するための保護対象データに含まない。
FEC生成部106は、データパケット生成部105により入力された1つ以上のデータパケットを用いて冗長パケット(FECパケット)を生成する。ここで、冗長パケット(FECパケット)は、クライアント102が正常に受信しなかったデータパケットのエラーを訂正するために用いるエラー訂正用パケットである。本形態では、排他的論理和による冗長パケットを生成する場合について説明するが、リードソロモン符号化などの方法を用いることも可能である。
送受信部107は、データパケット生成部105により生成されたデータパケット、及び、FEC生成部106により生成された冗長パケットを送信する。即ち、送受信部107は、入力されたデータパケット(保護対象データ)と生成された訂正用データをクライアント102(受信装置)に対して送信する。また、送受信部107は、クライアント102が送信した通信情報パケットを受信する。
クライアント102の送受信部108は、ネットワーク103を介してサーバー101からのデータパケットと冗長パケットを受信する。また、送受信部108は、サーバー101に対して、パケットの受信状況を示す通信状況パケットを送信する。
再構成部109は、送受信部108によって受信されたパケットを、データパケットと冗長パケットに分けて映像データを再構成する。また、再構成部109は、必要に応じて、通信途中などにおけるデータパケットのエラーを、冗長データと正常に受信されたデータパケットを用いて訂正する。
映像処理部110は、再構成部109によって再構成された映像データを処理する。例えば、映像処理部110は、記録装置に映像データを記録したり、映像データを復号化して表示デバイスに表示させる。
図2は、サーバー101を、通信機能を有する撮像装置に適用した場合における装置構成の例を示した図である。尚、図2を用いて説明する以下の処理は、CPU(Central Processing Unit)214が、ROM(Read Only Memory)213に格納された制御プログラム(ファームウェア)に基づいて各部を制御することにより実行される。ただし、この形態に限らず、例えば、以下の処理の少なくとも一部を、DMA(Direct Memory Access)回路を利用した高速なメモリ210のアクセスにより実行するようにしても良い。
まず、撮影しようとする被写体の画像は、光学系からなる撮影レンズユニット201を通って光学センサ205に結像する。撮影レンズユニット201の制御は、撮影レンズユニット駆動回路202によって行われる。この時、絞りを含む絞りユニット203が絞りユニット駆動回路204によって操作され、結像する光は適切に光量調整される。光学センサ205は、固体撮像素子(CCDやCMOSセンサなど)によって構成され、入射した光を光量に応じて電荷に変換、蓄積する。この電荷を読み出し、A/Dコンバータ207でデジタル化することにより、圧縮されていないデジタル画像データが生成される。生成されたデジタル画像データは、画像信号処理回路208でホワイトバランス補正やガンマ補正といった補正が行われ、符号圧縮回路209に受け渡される。
符号圧縮回路209は、補正処理後のデジタル画像データを動画像の符号化のアルゴリズムにより圧縮処理する。動画像の符号化アルゴリズムとして、たとえば、連続したJPEG(ISO/IEC 10918)符号化による、いわゆるモーションJPEGを用いることが可能である。また、動画像の符号化アルゴリズムとして、MPEG−2(ISO/IEC 13818)やMPEG−4(ISO/IEC 14496)などのフレーム間予測を行う形式を用いても良い。圧縮処理されて得られた映像データは、メモリ210に一時保存される。
ここまでの一連の処理が、図1における映像取得部104が行う処理に対応する。
CPU214は、メモリ210に一時保存された映像データを通信に適した形式に整形してクライアント102に送信されるデータパケットを生成する。そして、生成したデータパケットをメモリ210に一時保存する。すなわち、CPU214は、クライアント102に送信する映像データのデータパケットを生成する。この処理は、データパケット生成部105の処理に対応する。CPU214は、メモリ210に格納されたデータパケットに対し、冗長パケットを生成し、メモリ210に保存を行う。この処理は、FEC生成部106の処理に対応する。CPU214は、生成されたデータパケットおよび冗長パケットを、ネットワークコントローラ211を介してクライアント102へ送信する。
尚、本形態では、図2を用いて説明した処理のうち、冗長パケットの生成を、CPU214ではなく、冗長化回路215によって行う。これは、以下の理由による。すなわち、CPU214によって冗長パケットを生成すると、冗長パケットの生成パターンや、冗長度によっては、処理コストが大きくなり、他の処理に影響を与えることがある。従って、本形態のサーバー101では、冗長パケットの生成をCPU214とは別の冗長化回路215によって行う。ただし、冗長パケットの生成処理をCPU214によって行うようにしても良い。また、冗長パケットの生成パターンや冗長度に基づいてコストを予測し、冗長パケットを冗長化回路215を用いて生成するか、CPU214で生成するかを切り替えるようにしても良い。
また、通信パケットに関する処理を通信回路212上で行ってもよい。近年、主たるCPUの処理負荷を軽減するため、通信回路上にサブCPUを配置し、このサブCPU上で通信に関する処理を行うといったオフローディングと呼ばれる機構が実際に実装されている。本構成はこのような通信のオフローディングにより実現されてもよい。
次に、冗長パケット(FECパケット)によるエラー訂正の原理について説明する。尚、冗長パケットによるエラー訂正の方式には、リードソロモン符号化など様々な方法が知られているが、ここでは、排他的論理和による方法について説明する。
たとえば、2バイト(16ビット)からなる2つのデータAとBが存在するものと仮定する。このAとBの2つのデータの排他的論理和を演算し、その結果をデータCとする。これらA、B、Cの3つのデータのうち、AまたはBが失われた場合、残された2つのデータであるBとC、またはAとCの排他的論理和を演算した結果は、この失われたAまたはBとなる。
今、2つのデータAとBを仮定して説明したが、もし、N個のデータであっても同様に演算を行うことが出来る。排他的論理和の結果となる冗長データを含むN+1個のデータのうちのひとつが失われたとしても、同様に演算により失われたデータを回復することが出来る。
リードソロモン符号を応用した方式では、ひとつではなく、複数のデータが失われた場合でも回復が可能である。このような方式では、回復は更に容易となるが、基本的な回復の仕組みは排他的論理和の場合と同様に理解することができる。
次に図3を用いて、本実施形態における冗長パケットの生成パターンと、冗長パケットによるエラー訂正処理について説明する。
本形態においては、データパケットのグループ(データパケット1〜35)を、複数の異なるカラム数(列数)の論理的な行列形式に整列する。図3では、データパケット1〜35を5列7行の行列301と7列5行の行列303の2つの行列として整列している。尚、データパケット1〜35は、図10におけるデータパケット1〜35に対応する。また、この番号に基づいて、データパケットの送信順序が決定される。つまり、データパケット2は、データパケット1よりも後に送信される。また、データパケット35は、データパケット1〜35の中で、最後に送信される。
FEC生成部106は、これら5列7行の行列301と7列5行の行列303に整列されたデータパケットのそれぞれについて、列方向、すなわち縦方向に冗長パケット(FECパケット)を生成する。すなわち、FEC生成部106は、行列301の1列目のデータパケット1、6、11、16、21、26、31を用いて、冗長パケットFa1を生成する。上記したように、冗長パケットFa1は、データパケット1、6、11、16、21、26、31のうちのいずれか1つがエラーしても、それ以外のデータパケットと、冗長パケットFa1で排他的論理和の演算を実行することにより、エラーを訂正することができる。即ち、FEC生成部106は、エラーしたデータパケット1(第1の保護対象データ)を訂正するために用いる冗長パケットFa1(第1の訂正用データ)を、データパケット1と、データパケット6(第2の保護対象データ)を用いて生成する。尚、データパケット6は、データパケット1(第1の保護対象データ)の次の保護対象データ(データパケット2)よりも後の保護対象データである。
また、FEC生成部106は、冗長パケットFa1と同様にして、冗長パケットFa2〜Fa5を生成する。
さらに、FEC生成部106は、行列303の1列目のデータパケット1、8、15、22、29を用いて、冗長パケットFb1を生成する。即ち、FEC生成部106は、エラーしたデータパケット1を訂正するために用いる冗長パケットFb1(第2の訂正用データ)を、以下のように生成する。つまり、FEC生成部106は、冗長パケットFb1を、データパケット6(第2の保護対象データ)を用いずに、データパケット1と、データパケット8(第3の保護対象データ)を用いて生成する。尚、データパケット8(第3の保護対象データ)は、データパケット6(第2の保護対象データ)よりも後の保護対象データである。
また、FEC生成部106は、冗長パケットFb1と同様にして、冗長パケットFb2〜Fb7を生成する。
尚、データパケット1〜35、及び、冗長パケットFa1〜Fa5、冗長パケットFb1〜Fb7の送信順序を、図3の通信パケット群305として示す。同図に示すように、送受信部107は、データパケット1〜29を順次送信し、その次に冗長パケットFb1を送信する。つまり、送受信部107は、冗長パケットFb1を送信するために用いるデータパケットを送信した後に、冗長パケットFb1を送信する。
また、通信パケット群305で示すように、送受信部107は、35個のデータパケットに対して生成された12個の冗長パケットを送信する。つまり、送信されるパケットの数は、47個である。これは、図10で送信されるパケットの数と同じである。
ここで、仮に、ネットワーク103に相当する通信経路やネットワーク103に送り出す通信回路上などで、データパケット11、23、24、25、26、29、30が欠落したとする。図3において、これらは、太枠の矩形として記載している。
この場合、クライアント102の再構成部109は、5列7行の行列301については、冗長パケットFa3を用いてデータパケット23のエラーを訂正(回復)する。一方、7列5行の行列303については、冗長パケットFb1、Fb3、Fb5を用いてそれぞれ、データパケット29、24、26のエラーが訂正される。
さらに、エラー訂正されたデータパケット26を用いて、行列301により、データパケット11のエラーが訂正される。同様に、行列303により、データパケット30、25のエラーが訂正される。
以上の手順により、すべてのデータパケットのエラーを訂正(回復)することができる。
なお、図10で示した従来手法によれば、同様のデータパケットが欠落した場合、データパケット24、25、29、30のエラーを訂正することができない。
同様に、データパケット7、9、12、14がエラーした場合、図10の構成で生成された冗長パケットでは、エラー訂正することができないが、本形態の図3の構成で生成された冗長パケットを用いれば、エラー訂正することができる。また、データパケット1〜8がエラーした場合、図10の構成で生成された冗長パケットでは、データパケット1〜3と6〜8をエラー訂正することができないが、図3の構成で生成された冗長パケットを用いれば、すべてエラー訂正することができる。
このように、本形態のエラー訂正用データの生成方法によれば、図10に示した従来の方法と冗長度(データパケット数と冗長パケット数の比)が同じであるにも関わらず、より多くのデータパケットのエラーを訂正することができる。
尚、図3に示した例では、行列における列数(カラム数)は、5と7であり、共約数(互いに割り切れる数)が1以外に存在していない。このため、一方の行列で同じ列にある番号の組が、もう一方の行列で同じ列に存在する周期性は、5と7の乗数である35まで発生しない。
例えば、図3の行列301において、データパケット1と同じ列に配置されているデータパケット6、11、16、21、26、31は、行列303において、データパケット1と同じ列には配置されない。ただし、もし、データパケット36が存在する場合、行列301と行列303において、同じ列(1列目)に、データパケット1とデータパケット36が配置されることになる。別な表現を用いれば、5と7の最小公倍数である35個までは、同じデータパケットの組が同じ行列に配置されないことになる。
これに対し、例えば、カラム数を4と8にした場合、最小公倍数である8個までは、同じデータパケットの組が同じ行列に配置されないが、データパケット9〜12が、データパケット1〜4とそれぞれ同じ列に配置されることになってしまう。従って、例えば、データパケット1と9がエラーした場合、カラム数を5と7にしていればエラー訂正できるが、カラム数が4と8の場合はエラー訂正できない。
このように、列数を5と7にした場合と、列数を4と8にした場合では、データパケット数に対する冗長パケット数は同じであるが、列数を5と7にした場合のほうが、より高い確率でエラーを訂正することができるようになる。
従って、本形態のFEC生成部106は、冗長度(データパケット数に対する冗長パケットの数)に応じて取り得る列数(カラム数)の値の範囲から、最小公倍数ができるだけ大きくなるように、複数の行列の列数を決定する。
図4は、本発明におけるサーバー101における処理の1例を示すフローチャートである。
ステップS401において、FEC生成部106は、初期パラメータ410を読み出して、それを行列情報とする。初期パラメータ410は、行列の行数と列数のデフォルト値であり、たとえば、図3において例示した、5列7行の行列301と7列5行の行列303を生成するための、(5,7)および(7,5)といった情報である。
ステップS402において、データパケット生成部105は、映像取得部104によって取得された映像データ411を読み出す。映像データ411が全体としてたとえばMPEG−4形式で圧縮された圧縮動画像であれば、その1フレームや1ビデオパケット(再同期マーカーで区切られた映像データの1つ)が読み出される。本形態では、1フレームごとに処理を行う場合について説明する。
ステップS403において、データパケット生成部105は、ステップS402で読み出された映像データに基づいて、データパケット412を生成する。ここでは、1フレーム分のデータパケットが生成される。尚、フローチャート上では、データパケット412は、映像データ411が格納されている記憶領域とは異なる記憶領域に出力するように記載されているが、これに限らない。すなわち、映像データ411を通信パケットとして取り扱うための区切り位置を、映像データ411を格納しているメモリ210上のアドレスとして記録するといった方法であってもよい。
ステップS404において、FEC生成部106は、クライアント102から送信された通信情報パケットの内容(通信情報413)に応じて、初期パラメータに基づいて生成された行列情報を修正する。つまり、ステップS404において、FEC生成部106は、通信情報413に応じて、初期パラメータに基づく行数と列数を修正する。ただし、例えば、通信情報413があらかじめ取得済みであれば、ステップS401で、通信情報413に応じた行数と列数を求められるため、ステップS404の処理を省略できる。ステップS404の詳細は後述する。
ステップS405(入力手順)において、データパケット生成部105は、ステップS403で生成したデータパケットをFEC生成部106に入力する。即ち、ステップS405において、データパケット生成部105は、データパケット(保護対象データ)を入力する。そして、FEC生成部106は、入力されたデータパケットの行列を生成する。
ステップS406(生成手順)において、FEC生成部106は、ステップS405で生成された行列に基づいて、冗長パケット414を生成する。冗長パケットの生成方法については、図3を用いて説明した通りである。
即ち、ステップS406で、FEC生成部106は、エラーしたデータパケット1(第1の保護対象データ)を訂正するために用いる冗長パケットFa1(第1の訂正用データ)を、データパケット1と、データパケット6を用いて生成する。ここで、データパケット6(第2の保護対象データ)は、データパケット1の次のデータパケット2よりも後のデータパケットである。
また、ステップS406で、FEC生成部106は、エラーしたデータパケット1を訂正するために用いる冗長パケットFb1(第2の訂正用データ)を、データパケット6(第2の保護対象データ)を用いずに、データパケット1と8を用いて生成する。ここで、データパケット8(第3の保護対象データ)は、データパケット6(第2の保護対象データ)よりも後のデータパケットである。
より詳細には、FEC生成部106は、データパケット生成部105から入力された順番が5個間隔(N個間隔)のデータパケット1、6、11、16、・・・31を、複数の保護対象データとして用いて冗長パケットFa1(第1の訂正用データ)を生成する。また、FEC生成部106は、データパケット生成部105から入力された順番が7個間隔(M個間隔)のデータパケット1、8、15、・・・29を、複数の保護対象データとして用いて冗長パケットFb1(第2の保護対象データ)を生成する。
尚、この処理は、行列の個数分だけ行われることになる。図3で示した例では、2つの行列(行列301と行列303)があるため、2個分、行われる。
ステップS407において、送受信部107は、複数の行列のすべてにおいて冗長パケットの生成が完了したか否かを判定する。
そして、ステップS407において冗長パケットの生成が完了したと判定されると、ステップS408において、送受信部107は、データパケットと冗長パケットを送信する。つまり、ステップS407において、1フレーム分の冗長パケットの生成が2個の行列分、完了したと判定されると、送受信部107は、そのフレームのデータパケットと冗長パケットをクライアント102に対して送信する。
ステップS409において、送受信部107は、データパケットの送信処理を完了するか否かを判定する。例えば、送受信部107が、クライアント102から映像の配信を終了することを示す終了パケットを受信すると、データパケットの送信処理を完了すると判定し、図4の処理を終了する。一方、図4の処理を継続する場合は、ステップS402に戻り、次のフレームの映像データの取得が行われる。
本フローチャートは、処理の1例であって、実装上は一部処理が前後したり並列化して処理されたりしてもよい。たとえば冗長パケット414は実際には、カラム(列)数分だけ存在するため、それらのひとつひとつが生成される度にパケット送信が行われてもよい。あるいは、データパケットをあらかじめ送信した後、メモリ210に残されたデータパケットを用いて冗長パケットを生成してもよい。あるいはまた、複数の行列が存在する時、そのそれぞれの行列に対する冗長パケット生成S406を並列処理で行ってもよい。
次に、ステップS404における行列情報の修正処理の詳細について説明する。尚、ステップS404は、初期パラメータに基づく行列情報(行数と列数)を、クライアント102(受信装置)からの通信情報413に基づいて修正する処理である。
図5は、ステップS404の処理内容の1例を示すフローチャートである。
以下の説明では、説明をより具体的にするため、通信情報413として、バーストエラー長を用いて説明する。ここに、バーストエラー長とは、連続して損失した通信パケットの数である。
通信情報413のほかの例としては、通信エラー率や有効帯域、あるいは、帯域と関連した冗長化率(データパケット全体に対する冗長パケットの割合)など様々な例がある。
本形態のFEC生成部106は、次に示す3つの条件を満たすように、行数と列数(行列情報)を修正する。すなわち、1つ目の条件として、FEC生成部106は、複数の行列の列数の最小公倍数が、ステップS403で生成されるデータパケット数の最大値(最大パケット数)以上となるように、行数と列数を修正する。本形態では、ステップS403において、1フレームごとにデータパケットを生成しているので、複数の行列の列数の最小公倍数が1フレーム当たりのデータパケット数の最大値以上となるように、行数と列数が修正される。
尚、1フレーム当たりのデータパケットの最大値は、過去のフレームに対して生成されたデータパケット数の最大値(最大パケット数)である。つまり、フレームごとに、生成されるデータパケット数は異なるが、過去に最も多くのデータパケットが生成されたフレームのデータパケット数が最大パケット数511として、メモリ210に記憶されている。尚、例えば、最近、処理した所定数のフレーム(例えば100フレーム)のうち、生成されるデータパケット数が最も多かったフレームのデータパケット数を最大パケット数511としても良い。
即ち、FEC生成部106は、第1の個数(最大パケット数)の保護対象データ(データパケット)が入力された場合、以下のように、冗長パケットを生成する。すなわち、データパケット1(第1の保護対象データ)と、その5個後(N個後)のデータパケット6を用いて冗長パケットFa1(第1の訂正用データ)を生成する。また、FEC生成部106は、データパケット1と、その6個後(M個後)のデータパケット8を用いて冗長パケットFb1(第2の訂正用データ)を生成する。このとき、FEC生成部106は、NとMの最小公倍数が、最大パケット数以上となるように、NとMを決定する。
上述したように、列数の最小公倍数までは、同じデータパケットの組み合わせが複数の行列の同じ列に配置されない。従って、列数の最小公倍数をステップS403で生成されるデータパケット数の最大値以上とすることにより、同じデータパケットの組み合わせが、複数の行列の同じ列に配置されなくなるようにすることができる。
このように、FEC生成部106は、入力された保護対象データの個数(最大パケット数)に基づいて、冗長パケットFa1を生成するために用いるデータパケットの組み合わせを決定する。
また、2つ目の条件として、FEC生成部106は、複数の行列の列数の最小値がバーストエラー長以上となるように、行数と列数を修正する。ここで、バーストエラー長は、クライアント102によって送信された通信情報413に基づいて決定される。即ち、FEC生成部106は、通信状況情報(通信情報413)によって示される通信状況(バーストエラー長)に応じて、冗長パケットFa1(第1の訂正用データ)を生成するためにデータパケット1と共に用いるデータパケットを決定する。
具体的には、FEC生成部106は、例えば、バーストエラー長が6であった場合(受信装置が、連続する6個のデータパケットの受信に失敗した場合)、最小の列数を7にし、バーストエラー長が8であった場合、最小の列数を9にする。即ち、FEC生成部106は、受信装置が、連続する6個のデータパケットの受信に失敗した場合、冗長パケットFa1を生成するために用いるデータパケットを、データパケット1の6個後(N個後)のデータパケット7とする。また、FEC生成部106は、受信装置が、連続する8個のデータパケットの受信に失敗した場合、冗長パケットFa1を生成するために用いるデータパケットを、データパケット1の8個後(M個後)のデータパケット9とする。このように、複数の行列のすべての列数をバーストエラー長よりも大きくすることで、バーストエラーに対するエラー耐性をより向上させることができる。
また、3つ目の条件として、FEC生成部106は、列数の最大値が、ステップS403で生成されるデータパケット数の最小値を2で除算した商以下となるように、行数と列数を決定する。これは、冗長パケットが2つ以上のデータパケットを用いて生成されるようにするためである。本形態のFEC生成部106は、過去のフレームに対して生成されたデータパケット数の最小値(最小パケット数)を、最大パケット数と同様に、記憶している。
本形態のFEC生成部106は、ステップS404において、初期パラメータにより決定された行列情報(行数と列数)が、上記の3つの条件を満たしている場合は、行列情報を修正せず、行列情報が3つの条件を満たしていない場合は、行列情報を修正する。ただし、行列情報を3つ条件を満たすようにすることは、必須ではない。
図5のステップS501において、FEC生成部106は、初期パラメータ410に基づいてステップS401で決定された行列情報を読み出し、それを初期の行列情報として設定する。
ステップS502において、FEC生成部106は、送受信部107によって受信された通信情報413に基づいて、バーストエラー長を取得する。ここで、通信情報413に、バーストエラー長の情報が含まれていれば、その値を用いる。また、バーストエラー長の情報は含まれていないが、エラーが発生した通信パケット(データパケット、冗長パケット)の識別情報(シーケンスナンバーなど)が含まれている場合は、その情報に基づいて、バーストエラー長を取得する。尚、複数のバーストエラーが発生している場合は、各バーストエラー長の平均値を採用しても良いし、最も長いバーストエラー長を採用しても良いし、統計的に最も頻度の高いバーストエラー長を採用するなどが可能である。
ステップS503において、FEC生成部106は、1つの行列を構成するデータパケット数の最大値(最大パケット数)を決定する。上述のように、最大パケット数は、過去に処理したフレームにおける、1フレーム当たりに生成されたデータパケット数の最大値である。また、最大パケット数は、メモリ210に記憶されている。FEC生成部106は最大パケット数511を読み出し、その値を最大パケット数とする。
ただし、最大パケット数を決定するための他の方法として、例えば、ステップS402で読み出された映像データ長を、データパケット長で除算して得られた数を採用する方法がある。
また、例えばメモリ上の制約により、冗長パケットを生成するために利用するデータパケット数に上限値が設定される場合がある。そのような場合は、メモリ210から読み出された最大パケット数と、設定されているデータパケット数の上限値のうち、小さいほうを最大パケット数となるようにしても良い。例えば最大パケット数511から読み出された最大パケット数と、設定されている上限値のうち、小さい値となるように決定しても良い。
そして、ステップS504において、FEC生成部106は、初期の行列情報の列数の最小公倍数(LCM)を算出する。
ステップS505において、FEC生成部106は、ステップS503で決定された最大パケット数が、ステップS504で算出された最小公倍数(LCM)以下であるかどうかを判定する。すなわち、FEC生成部106は、ステップS505において、初期の行列情報が、上記の1つ目の条件を満たしているか否かを判定する。尚、初期の行列情報は、ステップS501で設定された、初期パラメータに基づく行列情報(行数と列数)である。初期の行列情報が1つ目の条件を満たしていると判定された場合はステップS506に進み、満たしていないと判定された場合はステップS507に進む。ステップS506において、FEC生成部106は、ステップS502で取得されたバーストエラー長が、列数の最小値min(Nc)より小さいかどうかを判定する。
すなわち、ステップS506において、FEC生成部106は、初期の行列情報が、上記の2つ目の条件を満たしているか否かを判定する。初期の行列情報が2つ目の条件を満たしていると判定された場合はステップS510に進み、満たしていないと判定された場合はステップS507に進む。
尚、図5では、3つ目の条件が満たされているかを判定していないが、ステップS506とステップS510の間で判定するようにしても良い。つまり、FEC生成部106は、2つ目の条件を満たしていると判定したあとに、初期の行列情報に基づく複数の行列の列数の最大値が、最小データパケット数を2で除算した商以下となるか否かを判定するようにしても良い。そして、FEC生成部106は、3つ目の条件を満たしていると判定した場合はステップS510へ進み、満たしていないと判定した場合はステップS507に進んで行列情報の修正に関する処理を行う。
ステップS507において、FEC生成部106は、ステップS502で取得されたバーストエラー長と、ステップS503で決定された最大パケット数に基づいて、上記の条件1、2、3を満たすような列数の範囲を算出する。たとえば、複数の行列における列数の最小値は、バーストエラー長が設定される(条件2)。また、列数の最大値は、パケット数を2で除算した商が設定される(条件3)。尚、列数の範囲を算出することは、必須ではない。
ステップS508において、FEC生成部106は、列数の範囲に適合する行列情報を算出する。
ステップS508におけるFEC生成部106の具体的な処理例を説明する。尚、本形態では、2つの行列を生成する場合について説明する。
まず、FEC生成部106は、最大パケット数の平方根を計算する。そして、平方根以下で、かつバーストエラー長より大きい素数のうち、最も大きな素数を第1のカラム数候補(第1の列数候補)とする。
次に、FEC生成部106は、最大パケット数を第1のカラム数候補で除算し、第1のカラム数候補が割り切れた場合には、その商を第2のカラム数候補とする。このようにして得られた第1のカラム数候補と第2のカラム数候補は、そのまま、行列情報における列数として採用される。もし、最大パケット数が割り切れなかった場合は、列数の最小値(バーストエラー長)より大きく、商以下の条件にあてはまる最も大きな素数を第2のカラム数候補とする。この第2のカラム数候補を用いて最大パケット数を除算し、第1のカラム数候補をその商に1加えた値に変更する。
各処理において、素数が存在しなかった場合には、素数の代わりに各条件にあった最大の整数を採用する。このようにすることで、行列の条件を満たす列数が計算される。行数は、互いの列数を採用すればよい。ただし、冗長パケットをより多く生成する必要がある場合は、行数を小さく設定することも可能である。
尚、上記の算出方法によれば、得られる列数がなるべく近い値になるように、2つの列数が決定される。このようにすることにより、データパケット数に対して生成される冗長パケット数を少なくすることができる。ただし、冗長パケットをより多く生成できる環境にある場合は、2つの列数が大きく異なるようにしても良い。
また、上記の算出方法において、最大パケット数の平方根がバーストエラー長よりも小さい値であった場合は、第1のカラム数候補をバーストエラー長に設定し、それよりも大きい列数が第2のカラム数候補となるように2つの列数を決定することができる。
上記例は、列数の算出方法の一例であり、この方法に限らない。すなわち、ポラード・ロー素因数分解法等を用いて、パケット数を素因数分解し、共役数が存在しない行列数分の因数としてまとめなおすことによって列数を計算してもよい。
また、本フローチャートでは、最小公倍数が最大パケット数以上であるように設定しているが、最小公倍数ではなく、単に公倍数であってもよい。その場合には、公倍数を最小公倍数で除算した商に相当する周期性についてエラー耐性が低下することになる。
ところで、ステップS404の処理は、行列情報のテーブルを用いることで簡略化することが出来る。図6は、行列情報のテーブルの例である。
尚、図6では、最小公倍数LCMが35から132までの値について、例示している。また、各最小公倍数の値に対して別の列数の組み合わせも存在する。
図6に示した行列情報テーブルには、最小公倍数(LCM)601、カラム(1)602、カラム(2)603、カラム(3)604、最小冗長率605のデータが格納されている。カラム(1)602、カラム(2)603、カラム(3)604はそれぞれ、行列の列数であり、LCM601が35のエントリを参照すると、列数が7と列数が5の行列が記載されている。
FEC生成部106は、ステップS503で取得した最大パケット長が、行列情報テーブルのLCM601以下となるように、エントリを選択することにより、各行列の列数(カラム数)を決定することができる。たとえば、最大パケット数が38であった場合、FEC生成部106は、LCM601が38以上のエントリを選択する。ここでは、例えば、LCM601が40のエントリが選択される。
最小冗長率605は、各エントリにおける列数で行列を構成した場合に生成される冗長パケット414の総数を、データパケット数で除算した結果である。ただし、前に記載したように、冗長率を高めるために行数を変更することができるため、冗長率はより大きなものとなる可能性がある。
ここで、ステップS503で取得される最大パケット数が36の場合を例にとって、修正に用いる行列情報を決定する処理を具体的に説明する。
まず、平方根の計算によって求める方法について説明する。まず、FEC生成部106は、最大パケット数36の平方根を計算する。結果は、正確に6である。FEC生成部106は、6より小さい素数として5を採用する。これにより、第1のカラム数候補は、5となる。次に、FEC生成部106は、最大パケット数36を第1のカラム数候補5で除算し、7.2を得る。7.2より小さな素数として7が得られることから、7が第2のカラム数候補となる。FEC生成部106は、最大パケット数36を第2のカラム数候補7で除算することにより5あまり1となることから、5に1を加えた6を第1のカラム数候補にする。結果として、取得されたカラム数は、7と6である。
次に、素因数分解法を用いる場合の列数の算出手順について説明する。FEC生成部106は、最大パケット数36を素因数分解することにより、2x2x3x3を得る。これにより得られる列数の組み合わせを(A,B)の形式であらわすと、(2,18)、(3,12)、(4,9)、(6,6)の4つが得られる。しかし、(6,6)は2つの行列が同一となるため排除される。(2,18)と(3,12)は、最小公倍数が36とならないため、これも対象外である。結果として得られたカラム数は、4と9である。
即ち、本形態のFEC生成部106は、入力された保護対象データの個数(最大パケット数)を素因数分解することによって得られた値に基づいて、冗長パケットFa1(第1の訂正用データ)を生成するために用いるデータパケットの組み合わせを決定する。
ここで注目すべき点は、4と9の組合せに含まれる4がバーストエラー長よりも大きいかどうかである。バーストエラー長が4よりも大きい場合は、バーストエラー長以上となる素数を第1のカラム数候補とし、最大パケット数と第1のカラム数候補の値から第2のカラム数を決定するようにすることが可能である。
また、行列が正方形に近くなるような組合せとすることで、生成される冗長パケットの数を少なくすることができる。そこで、例えば、算出された複数の列数の組み合わせのうち、最も2つの行列が正方形に近くなる列数を採用するようにしても良い。
一方、2つの行列の形が大きく異なるようにすると、冗長パケットの数は多くなるが、1つの行列でエラーを訂正できる可能性が高くなる。1つの行列でエラー訂正すれば、2つの行列を組み合わせてエラー訂正するよりも、よりエラー訂正にかかる時間を短くすることができる。そこで、冗長データを多く生成できる環境にある場合は、例えば、算出された複数の列数の組み合わせのうち、2つの行列の形が大きく異なる列数を採用するようにしてもよい。
また、生成する複数の行列の形を、近い形にするか、大きく異なる形にするかを、許容する遅延時間に基づいて決定するようにしても良い。すなわち、サーバー101がデータパケットを送信してから、クライアント102がそのデータパケットを再生するまでの時間が短い場合は、より短い時間でエラー訂正ができるように、複数の行列のうち一部の列数を大きくすることが可能である。一方、サーバー101がデータパケットを送信してから、クライアント102がそのデータパケットを再生するまでの時間が十分に長い場合や、クライアント102はデータパケットを記録するだけの場合は、複数の行列の形が近くなるようにすることが可能である。このようにすることで、送信されるパケット数を少なくすることができる。
次に、最大パケット数が36の場合において、図6の行列情報テーブルを参照して列数を決定する手順について説明する。FEC生成部106は、最大パケット数36以上のエントリを参照することで、列数を決定する。例えば、LCM601が36のエントリにある9と4を列数として採用することができる。また、2つの列数をなるべく近い組合せを採用する場合、LCM601が42となるエントリにある7と6を列数として採用してもよい。
以上説明してきたように、本発明の訂正用データの生成方法によれば、2D−FECと同水準の冗長データ量で、より高いエラーの訂正率を実現することが可能となる。
次に、RTPに本発明を適用する場合について説明する。
IETF(Internet Engineering Task Force)が提案するRTPによる映像伝送においては、FECを適用する場合、通常のRTPパケットとは異なるセッションで、FECパケットを伝送するように標準化されている。ここに、RTPパケットは、本説明におけるデータパケット412であり、FECパケットは本説明における冗長パケット414に相当する。
IETFによるFECパケットには、当該FECパケットを生成するために用いられるRTPパケットのうち、最も小さな順序番号(シーケンスナンバー)と共に、列数に基づく情報が記録される。尚、列数に基づく情報は、ビットマスクとして記録される。そして、その後にFEC演算された結果が格納される。
たとえば、あるFECパケットを生成するために用いられる複数のRTPパケットの順序番号のうち、最も小さい順序番号が123であり、列数が5である場合、当該FECパケットのヘッダには、123と、(00001)bの繰り返しからなるマスクが記録される。ここで、繰り返し数は、行数に一致する。すなわち、行数が7の場合は、123と、(00001000010000100001000010000100001)bが記録される。また、次のFECパケットには、124と、(00001)bの繰り返しからなるマスクが記録される。なお、()bの形式で記載した値は、バイナリ、すなわちビット列であることを示す。
本形態においては、5列の行列と同時に7列の行列を生成するため、123と、(0000001)bの繰り返しからなるマスクを設定したFECパケットも生成される。
クライアント102は、RTPパケットのロスやビットエラーを検出した場合、エラーしたRTPパケットに対応するFECパケットを、上記のようなヘッダ情報から検索し、エラー訂正処理を実行することができる。
このように、従来の方式に基づいてFECパケットヘッダを生成すると、特に、列数が大きい場合に、FECパケットヘッダが大きくなりすぎてしまうという問題がある。そこで、本形態のFEC生成部106は、ビットマスクの代わりに、列数と行数を指定することによってFECパケットヘッダの情報を生成する。
そのような例を図7に示す。図7は、列数と行数によるFECパケットの構造の例である。
SN Base701は、対応するRTPパケットの最も小さな順序番号を示している。これは、従来のFECパケットにも存在するデータである。COL702は、行列の列数を示している。ROW703は、行数を示している。
例えば、FEC生成部106は、列数が5、行数が7の行列に基づいて生成されたFECパケットには、SN Base701に順序番号をセットすると共に、COL702に5の値をセットし、ROW703に7の値をセットする。そして、クライアント102は、受信したFECパケットが、SN Base701の順序番号を持つRTPパケットと、それよりも5パケットずつ後のRTPパケットを7個用いて生成されたFECパケットであることがわかる。
このように、本形態のFEC生成部106は、従来のマスクの代わりに、列数と行数を記録することで、FECパケットのデータ量を少なくすることができる。
<実施形態2>
本発明は、排他的論理和以外の冗長パケット生成にも適用することが可能である。実施形態1においては、冗長パケットの生成例として、背景技術にも記載した排他的論理和を用いた方式を暗黙に適用してきた。しかしながら、先に説明したように、リードソロモン符号化などのその他のFEC技術を用いても本発明を実施することが出来る。
リードソロモン符号化は、その誤り訂正能力の高さから、衛星通信やDVDなど多くの誤り訂正に応用されている符号化技術である。リードソロモン符号化は、その適用方法によっては、対応する複数のパケットがエラーしてもそれを訂正することができる。このように、エラー訂正能力の高い方式に本発明を適用することによって、よりエラー耐性を高くすることができる。
<実施形態3>
実施形態1では、複数の列方向の冗長パケットを生成する例について説明したが、本発明は、行方向の冗長パケットを生成に適用することが可能である。
行方向の冗長パケットを生成する場合の例を図8に示す。同図において、例えば、データパケット11、15、21、25がエラーした場合、図10のような2D−FECではエラー訂正することができないが、図8のように複数の行列のそれぞれについて行方向の冗長データを生成することで、エラー訂正できる。つまり、エラーしたデータパケット11と25が、それぞれ、行列802の冗長パケットFa2、Fa4を用いてエラー訂正される。その後、エラーしたデータパケット15、25が、それぞれ、行列801の冗長パケットFb3、Fb5を用いてエラー訂正される。
尚、本形態も、図1で説明したサーバー101と同様の構成によって実現可能である。即ち、本形態のデータパケット生成部105は、データパケット(保護対象データ)を入力する。そして、FEC生成部106は、図8の行列構成において、エラーしたデータパケット1(第1の保護対象データ)を訂正するために用いる冗長パケットFb1(第1の訂正用データ)を、データパケット1と、データパケット2〜5を用いて生成する。尚、データパケット2〜5は、データパケット1(第1の保護対象データ)に連続する4個(N個)の保護対象データである。
また、FEC生成部106は、エラーしたデータパケット1を訂正するために用いる冗長パケットFa1(第2の訂正用データ)を、以下のように生成する。つまり、FEC生成部106は、冗長パケットFa1を、データパケット1(第1の保護対象データ)と、データパケット2〜7を用いて生成する。尚、データパケット2〜7は、データパケット1(第1の保護対象データ)に連続する6個(M個)の保護対象データである。
以上説明したように、本形態のように、複数の行列のそれぞれについて行方向のFECパケットを生成する場合にも、エラー訂正能力を向上させる効果がある。
<実施形態4>
本発明は、IPネットワークなどを介したデータ伝送などの用途のみならず、記録媒体などへのデータ記録にも適用することが可能である。
通常、記録媒体にデータを記録する際には、データ全体を連続的に記録するのではなく、2048バイトといった固定長の記録媒体固有の記録単位でデータを分割して記録する。これをひとつのデータとみなすために、これらの記録単位を連結する情報を別途記録するようになっている。本発明をこのような記録媒体に適用する場合のひとつの方法は、この記録媒体固有の記録単位をデータパケット412とみなすことによって実現される。
このような記録媒体への適用例を図9に示す。
図9において、記録媒体は、2つのディスク装置から構成されている。第1のディスク装置901は、一般的なファイルシステムで構成されており、論理的なファイルテーブル903と記録媒体固有の記録単位で記録されたデータ群904が格納されている。第2のディスク装置902は、記録媒体固有の記録単位で記録された第1の冗長データ群905と第2の冗長データ群906が格納されている。
本形態において、データ群904は、単一のファイルの連続したデータではない。論理的なファイルテーブル903には、File−AからFile−Cの3つの論理ファイルが記録されており、そのテーブルエントリの後に記録された番号とxの付与された記号によりデータ群904のデータへと結び付けられている。たとえば、File−Aは、1番から4個の記録単位が連続しており、その後、10番から8個の記録単位が連続しているとなっている。
図9は、説明を明確にするために、図3と極力同じ構成となるように記載している。図9のデータ群904は、図3の5列7行の行列301や7列5行の行列303と同じように考えることが可能である。同様に、第1の冗長データ群905と第2の冗長データ群906は、5列7行の冗長パケット302と7列5行の冗長パケット304と同一のものとみなすことが出来る。
この訂正用データの生成方法は、実施形態1におけるサーバー101と同様である。ただし、本形態のサーバー101は、データパケットに基づいて映像を表示するクライアント102に送信せずに、サーバー101内の記録領域に、生成した冗長データ群を記録する。即ち、本形態のFEC生成部106は、実施形態1のステップS408において、生成された訂正用データ(冗長データ群905、906)を記録部に記録させる。つまり、FEC生成部106は、記録制御部として動作する。
尚、データパケット生成部105は、入力された保護対象データ(データ群904)を記録部に記録させている。また、クライアント102のような外部の機器に記録させるようにしても良い。本実施形態によれば、記録データのエラー耐性を向上させることができる。
<その他の実施形態>
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体(記憶媒体)等としての実施態様をとることが可能である。具体的には、複数の機器(例えば、ホストコンピュータ、インタフェース機器、撮像装置、webアプリケーション等)から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、コンピュータ読取可能であり、実施形態において図4ならびに図5に示したフローチャートに対応したプログラムである。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。

Claims (12)

  1. エラーした保護対象データを訂正するために用いる訂正用データの生成装置であって、
    保護対象データを入力する入力手段と、
    前記入力手段により入力された所定パケット数に対応する保護対象データのエラーを訂正するための訂正用データを生成する生成手段であって、前記所定パケット数のパケットのうちあるパケットが前記エラーした場合に当該エラーパケットに対応する第1の保護対象データのエラーを訂正するために用いられる第1の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番がN個間隔となる複数のパケットに対応する保護対象データを用いて生成すると共に、
    前記入力手段により入力された前記所定パケット数に対応する保護対象データのうち前記エラーパケットが前記エラーした場合に前記エラーパケットに対応する前記第1の保護対象データのエラーを訂正するために用いられる第2の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番が前記N個間隔とは異なるM個間隔となる複数のパケットに対応する保護対象データを用いて生成する生成手段と
    を有し、
    前記生成手段は、前記NとMの最小公倍数が前記所定パケット数以上の数になる前記NとMで前記訂正用データを生成することを特徴とする訂正用データの生成装置。
  2. 前記入力された保護対象データと前記生成された訂正用データを受信装置に対して送信する送信手段
    を有することを特徴とする請求項1記載の訂正用データの生成装置。
  3. 前記入力された保護対象データと前記生成された訂正用データを記録部に記録させる記録制御手段
    を有することを特徴とする請求項1記載の訂正用データの生成装置。
  4. 前記生成手段は、
    前記NとMの最小公倍数が前記所定パケット数以上の数になり、且つ、前記入力された保護対象データのデータ量に対する訂正用データのデータ量の設定に応じたデータ量の訂正用データを生成するための前記NとMの取り得る値の組み合わせのうち、前記NとMの最小公倍数が最大となる前記NとMの組み合わせで訂正用データを生成する
    ことを特徴とする請求項1記載の訂正用データの生成装置。
  5. 前記保護対象データは映像データであり、
    前記生成手段は、
    前記NとMの最小公倍数が前記映像データのフレーム当たりのパケット数である前記所定パケット数よりも大きな値となるように、前記MとNを決定する
    ことを特徴とする請求項1記載の訂正用データの生成装置。
  6. 前記入力された保護対象データと前記生成された訂正用データを受信装置に対して送信する送信手段と、
    前記受信装置から通信状況を示す通信状況情報を受信する受信手段とを有し、
    前記生成手段は、前記通信状況情報によって示される通信状況に応じて、前記NとMの値を修正する
    ことを特徴とする請求項1記載の訂正用データの生成装置。
  7. 前記生成手段は、前記入力された保護対象データに対応する前記所定パケット数を素因数分解することによって得られた値に基づいて、前記NとMの値を決定する
    ことを特徴とする請求項1記載の訂正用データの生成装置。
  8. エラーした保護対象データを訂正するために用いる訂正用データの生成装置が行う生成方法であって、
    保護対象データを入力する入力工程と、
    前記入力工程により入力された所定パケット数に対応する保護対象データのエラーを訂正するための訂正用データを生成する生成工程であって、前記所定パケット数のパケットのうちあるパケットが前記エラーした場合に当該エラーパケットに対応する第1の保護対象データのエラーを訂正するために用いられる第1の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番がN個間隔となる複数のパケットに対応する保護対象データを用いて生成すると共に、
    前記入力工程により入力された前記所定パケット数に対応する保護対象データのうち前記エラーパケットが前記エラーした場合に前記エラーパケットに対応する前記第1の保護対象データのエラーを訂正するために用いられる第2の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む、前記入力の順番が前記N個間隔とは異なるM個間隔となる複数のパケットに対応する保護対象データを用いて生成する生成工程と
    を有し、
    前記生成工程は、前記NとMの最小公倍数が前記所定パケット数以上の数になる前記NとMで前記訂正用データを生成することを特徴とする訂正用データの生成方法。
  9. 前記生成工程は、
    前記NとMの最小公倍数が前記所定パケット数以上の数になり、且つ、前記入力された保護対象データのデータ量に対する訂正用データのデータ量の設定に応じたデータ量の訂正用データを生成するための前記NとMの取り得る値の組み合わせのうち、前記NとMの最小公倍数が最大となる前記NとMの組み合わせで保護対象データを生成する
    ことを特徴とする請求項8記載の訂正用データの生成方法。
  10. 前記保護対象データは映像データであり、
    前記生成工程は、
    前記NとMの最小公倍数が前記映像データのフレーム当たりのパケット数である前記所定パケット数よりも大きな値となるように、前記MとNを決定する
    ことを特徴とする請求項8記載の訂正用データの生成方法。
  11. 前記入力された保護対象データと前記生成された訂正用データを受信装置に対して送信する送信工程と、
    前記受信装置から通信状況を示す通信状況情報を受信する受信工程とを有し、
    前記生成工程は、前記通信状況情報によって示される通信状況に応じて、前記NとMの値を修正する
    ことを特徴とする請求項8記載の訂正用データの生成方法。
  12. エラーした保護対象データを訂正するために用いる訂正用データを生成するコンピュータに、
    保護対象データを入力する入力手順と、
    前記入力手順により入力された所定パケット数に対応する保護対象データのエラーを訂正するための訂正用データを生成する生成手順であって、前記所定パケット数のパケットのうちあるパケットが前記エラーした場合に当該エラーパケットに対応する第1の保護対象データのエラーを訂正するために用いられる第1の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番がM個間隔となる複数のパケットに対応する保護対象データを用いて生成すると共に、
    前記入力手順により入力された前記所定パケット数に対応する保護対象データのうち前記エラーパケットが前記エラーした場合に前記エラーパケットに対応する前記第1の保護対象データのエラーを訂正するために用いられる第2の訂正用データを、前記エラーパケットに対応する前記第1の保護対象データを含む前記入力の順番が前記M個間隔とは異なるN個間隔となる複数のパケットに対応する保護対象データを用いて生成する生成手順と
    を実行させることを特徴とするプログラム。
JP2009135315A 2009-06-04 2009-06-04 エラー訂正用データの生成装置、及び生成方法 Expired - Fee Related JP5610709B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009135315A JP5610709B2 (ja) 2009-06-04 2009-06-04 エラー訂正用データの生成装置、及び生成方法
US12/784,901 US8429505B2 (en) 2009-06-04 2010-05-21 Error-correction data generation apparatus and generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009135315A JP5610709B2 (ja) 2009-06-04 2009-06-04 エラー訂正用データの生成装置、及び生成方法

Publications (3)

Publication Number Publication Date
JP2010283606A JP2010283606A (ja) 2010-12-16
JP2010283606A5 JP2010283606A5 (ja) 2012-07-19
JP5610709B2 true JP5610709B2 (ja) 2014-10-22

Family

ID=43301634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009135315A Expired - Fee Related JP5610709B2 (ja) 2009-06-04 2009-06-04 エラー訂正用データの生成装置、及び生成方法

Country Status (2)

Country Link
US (1) US8429505B2 (ja)
JP (1) JP5610709B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230316B2 (en) 2008-01-25 2012-07-24 Nevion Usa, Inc. Forward error correction for burst and random packet loss for real-time multi-media communication
US8972815B1 (en) * 2012-03-20 2015-03-03 Xilinx, Inc. Recovery of media datagrams
US9116896B2 (en) * 2012-03-31 2015-08-25 Bitcentral, Inc. Nonlinear proxy-based editing system and method with improved media file ingestion and management
EP3029870B1 (en) * 2013-07-30 2022-07-20 Sony Group Corporation Information processing device, information processing method, and program
JP6673604B2 (ja) * 2016-06-14 2020-03-25 三菱電機株式会社 ログデータ転送方式及びログデータ転送システム
CN110519004B (zh) * 2018-05-21 2021-12-14 华为技术有限公司 一种编码方法及相关设备
JP2020010180A (ja) * 2018-07-06 2020-01-16 日本電信電話株式会社 送信装置、受信装置、および伝送システム
CN111181700A (zh) * 2020-01-07 2020-05-19 广州华多网络科技有限公司 数据传输方法、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4031136B2 (ja) * 1999-01-14 2008-01-09 株式会社東芝 符号化・復号化装置及びディスク記憶装置
FR2869744A1 (fr) * 2004-04-29 2005-11-04 Thomson Licensing Sa Methode de transmission de paquets de donnees numeriques et appareil implementant la methode
JP4532505B2 (ja) * 2004-12-09 2010-08-25 三菱電機株式会社 データ送信装置、データ受信装置、およびデータ配信システム
US7539926B1 (en) * 2006-02-14 2009-05-26 Xilinx, Inc. Method of correcting errors stored in a memory array
JP4250654B2 (ja) * 2006-11-17 2009-04-08 株式会社東芝 通信装置、通信方法および通信プログラム

Also Published As

Publication number Publication date
US20100313093A1 (en) 2010-12-09
US8429505B2 (en) 2013-04-23
JP2010283606A (ja) 2010-12-16

Similar Documents

Publication Publication Date Title
JP5610709B2 (ja) エラー訂正用データの生成装置、及び生成方法
CN102469272B (zh) 图像输出装置、图像处理装置及其方法和图像拾取装置
US8473833B2 (en) Forward error correction method
US8503444B2 (en) Transmission device, transmission method, and program for the same
TWI686085B (zh) 攝像裝置及圖像感測器之資料傳送方法、資訊處理裝置及資訊處理方法以及程式
JP4559126B2 (ja) 映像送信方法、映像送信装置、映像送信用プログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP6519474B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP5553663B2 (ja) 映像送信装置、映像受信装置、映像伝送システム
US20120151291A1 (en) Receiving apparatus and processing method for receiving apparatus
KR102383892B1 (ko) 미디어 콘텐츠 기반의 자가 적응 시스템 코드 fec의 코딩 및 디코딩 방법, 장치, 시스템 및 매체
JP2017143355A (ja) 画像符号化装置及び方法及び撮像装置
CN101517950A (zh) 减少数据分组的数目以增加纠错分组的数目
JP5377040B2 (ja) 送信装置及び送信方法
JP6643424B2 (ja) パケット伝送順序を再配列するための映像エンコーディング装置及びその動作方法
RU2668064C2 (ru) Устройство обработки информации, способ обработки информации и программа
US20180270507A1 (en) Method for encoding streams of video data based on groups of pictures (gop)
TWI520528B (zh) 增壓碼
CN113114427B (zh) 基于媒体内容的自适应系统码fec编码方法、译码方法
JP2010136279A (ja) 符号化装置、復号装置、生成行列の作成方法及びコンピュータプログラム
US11418218B2 (en) Receiving device and receiving method
JP2008017330A (ja) 映像音声配信装置
JP2009044702A (ja) 情報伝送システム、送信装置、受信装置、生成行列の作成方法及びコンピュータプログラム
JP6412741B2 (ja) 通信装置、通信方法及びプログラム
JP2009049463A (ja) 情報伝送システム、受信装置、データ復号方法、コンピュータプログラム及びデータ構造
JP2010273229A (ja) 映像伝送システム、映像送信装置、映像受信装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130924

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140630

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140708

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: 20140805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140902

R151 Written notification of patent or utility model registration

Ref document number: 5610709

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees