KR20050056886A - 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램 - Google Patents

송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램

Info

Publication number
KR20050056886A
KR20050056886A KR1020040103604A KR20040103604A KR20050056886A KR 20050056886 A KR20050056886 A KR 20050056886A KR 1020040103604 A KR1020040103604 A KR 1020040103604A KR 20040103604 A KR20040103604 A KR 20040103604A KR 20050056886 A KR20050056886 A KR 20050056886A
Authority
KR
South Korea
Prior art keywords
packet
fec
error correction
packets
transmission
Prior art date
Application number
KR1020040103604A
Other languages
English (en)
Inventor
야마네겐지
Original Assignee
소니 가부시끼 가이샤
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 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20050056886A publication Critical patent/KR20050056886A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • 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
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • 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
    • H03M13/2909Product codes
    • H03M13/2915Product codes with an error detection code in one dimension
    • 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • 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/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • 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/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • 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
    • 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/152Bose-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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming 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)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

본 발명은 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및 프로그램에 관한 것으로서, 통신망 상태에 따라, 용장(冗長) 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행한다.
폭주/비폭주 판정부(105)는 통신망이 폭주 상태인지 여부를 판정한다. FEC 패킷 생성부(84)는 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성한다. FEC 송신 제어부(86)는 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 에러 정정 패킷의 생성을 제어한다. 본 발명은 원격 텔레비전 회의 시스템에 적용할 수 있다.

Description

송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및 프로그램 {TRANSMITTING DEVICE AND METHOD, RECEIVING DEVICE AND METHOD, RECORDING MEDIA, AND PROGRAM}
본 발명은 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및 프로그램에 관한 것이며, 특히, 통신망 상태에 따라, 용장(冗長) 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행할 수 있도록 한 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및 프로그램에 관한 것이다.
요즈음, 인터넷 등 각종 통신 매체를 통해 화상 데이터 또는 음성 데이터를 전송하여 제공하는 서비스가 일반적으로 행해지고 있다. 특히, 최근, 다운로드형 전송 방식의 서비스에 더하여, 스트림형 전송 방식의 서비스가 보다 많이 제공되게 되었다.
스트림형 전송 방식의 서비스에서는, 송신 장치가 데이터를 차례로 송신하고, 수신 장치가 송신 장치로부터 송신되어 오는 데이터를 수신하는 동시에, 이와 병행하여, 수신된 데이터를 기초로 화상 또는 음성을 재생한다. 스트림형 전송 방식은 인터넷 전화, 원격 텔레비전 회의, 또는 비디오 온디맨드 등 인터넷 서비스에 이용되고 있다.
스트림형 전송 방식에 있어서, 송신 장치로부터 송신되어 오는 데이터를, 일반적으로, 스트리밍 데이터라고 칭한다.
그러나, 인터넷 등 데이터의 도달이 보증되지 않는 전송로를 통해 동화상 또는 음성의 스트리밍 데이터를 전송하면, 전송 부하의 증대에 의해 패킷 로스가 생기는 경우가 있다.
패킷 로스가 생기면, 수신측에서 재생되는 동화상이 흐트러지거나 음성이 중단되거나 하여 버린다.
이 문제를 해결하기 위해, 스트리밍 데이터와 함께 용장 데이터를 송신하고, 수신측에서 로스된 패킷의 에러를 정정하는 방법이 이용되고 있다. 그 일례로서, FEC(Forward Error Correction) 방식이 있다. FEC 방식에서는, 복수개의 패킷으로 이루어지는 집합에 대하여 용장 패킷을 복수 생성하고, 집합과 함께 용장 패킷이 송신된다. 수신측에서는, 집합에 속하는 패킷에 패킷 로스가 생긴 경우, 용장 패킷을 사용하여 로스된 패킷의 에러가 정정된다.
예를 들면, 도 1에서 나타낸 바와 같이, 송신측은 데이터 패킷 1-1 내지 데이터 패킷 1-5의 5개의 패킷으로 이루어지는 집합에, FEC 패킷 2-1 및 FEC 패킷 2-2의 2개의 용장 패킷을 부가하여 수신측에 송신한다. FEC 패킷 2-1 및 FEC 패킷 2-2는 데이터 패킷 1-1 내지 데이터 패킷 1-5의 소정 조합에 대하여 배타적 논리합(exclusive-OR)의 연산을 적용함으로써 생성된다.
예를 들면, 전송로에서 데이터 패킷 1-2이 로스된 경우, 수신측에서 데이터 패킷 1-1과 FEC 패킷 2-1에 배타적 논리합의 연산이 적용됨으로써, 데이터 패킷 1-2이 복원된다.
도 1에 나타낸 예에서, FEC 패킷 2-1 및 FEC 패킷 2-2의 수와 동일수가 로스된 패킷의 에러를 정정할 수 있다. 즉, 데이터 패킷 1-1 내지 데이터 패킷 1-5 중, 1개 또는 2개가 로스되어도, 그 패킷을 회복할 수 있다.
FEC 방식에 의해, 1 프레임의 집합에 대하여 용장 데이터를 생성하는 것이 고려되지만, 용장 데이터의 생성을 소프트웨어로 실행하면, 매우 부하가 높은 처리가 되어 버린다고 하는 문제가 있다.
도 2는 데이터 패킷 1-1 내지 데이터 패킷 1-5로 이루어지는 집합, 및 FEC 패킷 2-1 및 FEC 패킷 2-2의 용장 패킷 송신의 순서를 설명하는 도면이다. 도 2의 가로 방향은 시간을 나타낸다.
데이터 패킷 1-1 내지 데이터 패킷 1-5의 집합, 및 FEC 패킷 2-1 및 FEC 패킷 2-2의 용장 패킷 송신에 있어서, 최초에, 데이터 패킷 1-1 내지 데이터 패킷 1-5가 차례로 송신되고, 그 후, FEC 패킷 2-1 및 FEC 패킷 2-2가 차례로 송신된다.
도 3은 종래의 FEC 패킷을 부가한 송신 처리를 설명하는 플로 차트이다. 스텝 S11에서, 송신 장치는 내장하고 있는 타이머를 초기화한다.
스텝 S12에서, 송신 장치는 타이머의 값을 기초로, 타이머가 종료되었는지 여부를 판정하고, 타이머가 종료되어 있지 않은 경우, 스텝 S12로 되돌아가, 타이머가 종료될 때까지 판정의 처리를 반복한다.
스텝 S12에서, 타이머가 종료되었다고 판정된 경우, 1개의 프레임에 대응하는 기간이 경과했으므로, 스텝 S13으로 진행하고, 송신 장치는 공급된 화상 데이터를 캡처한다. 스텝 S14에서, 송신 장치는 캡처된 화상 데이터를 인코드(부호화)한다.
스텝 S15에서, 송신 장치는 부호화된 화상 데이터를 저장하는 데이터 패킷인 RTP(Real-time Transport Protoco1) 패킷을 생성한다. 스텝 S16에서, 송신 장치는 RTP 패킷을 상대에게 송신한다.
스텝 S17에서, 송신 장치는 RTP 패킷을 기초로 FEC 패킷을 생성한다. 스텝 S18에서, 송신 장치는 FEC 패킷을 상대에게 송신한다.
스텝 S19에서, 송신 장치는 RTP 패킷에 부가하는 타임 스탬프를 갱신한다. 스텝 S20에서, 송신 장치는 내장하고 있는 타이머를 세트하고, 스텝 S12로 되돌아가, 전술한 처리를 반복한다.
또, 송신측에서는, 각 패킷의 정보 블록을 선행 패킷 및 후속 패킷의 정보 블록과의 공통 부분을 가지도록 구성하고, 에러 정정 부호로 부호화하여 송신하고, 공통 부분의 크기는 전송로 상태에 따라 변화시키고, 한편, 수신측에서는, 그 정보 블록을 복호 및 에러 정정 부호의 기능에 의해 에러 정정하고, 복호에 실패한 경우에는, 정보 블록의 공통 부분을 선행 패킷의 것과 치환하고, 이 공통 부분이 치환된 정보 블록을, 재차, 복호 및 에러 정정하도록 하고 있는 것도 있다(일본국 특개 2000-224226호 공보 참조).
또한, 패킷 전송에 있어서, 네트 워크 감시부에 의해 감시되는 네트 워크 상황에 따라 에러 정정 제어를 실행하는 시스템도 있다(일본국 특개 2003-179580호 공보 참조). 이 시스템에서는, FEC에 의한 에러 제어, 재송신 요구 처리(ARQ)에 따른 에러 제어 등의 양태를 네트 워크에 있어서의 패킷 손실, 에러 발생 상황에 따라 동적으로 변경하여 패킷 전송을 실행하고, RTT(Round-Trip Time)가 짧으면, ARQ에 의한 에러 정정 선택, RTT가 긴 상황인 경우에는, ARQ가 아니고 FEC에 의한 에러 정정을 선택한다고 하는 동적인 에러 정정 제어가 가능해진다.
그러나, 항상 스트리밍 데이터와 함께 용장 패킷을 송신하면, 쓸데없는 데이터를 송신하여 버리게 된다.
또, 통신망에 있어서, 패킷 로스가 어느 정도 발생하고 있는지 모르기 때문에, 용장 패킷을 몇 개 송신하여 좋은가 모른다고 하는 문제가 있었다.
본 발명의 송신 장치는 통신망이 폭주 상태인지 여부를 판정하는 판정 수단과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 수단과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 수단을 구비하는 것을 특징으로 한다.
제어 수단은 폭주 상태라고 판정된 경우, 생성 수단에 소정 수의 에러 정정 패킷을 생성시키고, 폭주 상태가 아니라고 판정된 경우, 생성 수단의 에러 정정 패킷의 생성을 억제하도록 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
제어 수단은 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 직전의 폭주 상태에 있어서의 송신 패킷의 수신 상태를 기초로, 에러 정정 패킷의 수를 변경하도록 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
제어 수단은 소정 기간에 있어서의 1개 또는 복수개의 송신 패킷으로 이루어지는 에러 정정 단위로서, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 수신 상태를 기초로, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 어느 하나에 있어서, 에러 정정 패킷의 수가 부족한 경우, 에러 정정 패킷의 수를 증가시키도록, 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
판정 수단은 제1 시각으로부터 현재 시각까지의 기간에 있어서의 송신 패킷의 상대에의 전송에 요하는 지연 시간에 의존하는 단기 의존 지연 시간과, 제1 시각보다 과거의 제2 시각으로부터 현재 시각까지의 기간에 있어서의 상기 송신 패킷의 상대에의 지연 시간에 의존하는 장기 의존 지연 시간을 기초로, 폭주 상태인지 여부를 판정하도록 할 수 있다.
본 발명의 송신 방법은 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 스텝에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 스텝을 포함하는 것을 특징으로 한다.
본 발명의 기록 매체의 프로그램은 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 스텝에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 스텝을 포함하는 것을 특징으로 한다.
본 발명의 프로그램은 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 스텝에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 스텝을 컴퓨터에 실행시키는 것을 특징으로 한다.
송신 장치는 독립된 장치라도 되고, 통신 장치의 송신 처리를 실행하는 블록 이라도 된다.
본 발명의 수신 장치는 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 수단과, 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 수단을 구비하는 것을 특징으로 한다.
판정 수단은 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하도록 할 수 있다.
판정 수단은 1개 또는 복수개의 송신 패킷으로 이루어지는 에러 정정 단위마다, 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하고, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위에 대한 판정 결과를 기초로, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 어느 하나에 있어서, 에러 정정 패킷의 수가 부족하다고 판정된 경우, 상대에의 통지에 에러 정정 패킷의 수가 부족하다는 취지를 설정하는 설정 수단을 추가로 설치할 수 있다.
수신 장치는 판정 결과에 따른 통지를 저장하는 피드백 패킷을 생성하는 생성 수단과, 생성 수단에 의해 생성된 피드백 패킷의 상대에의 송신을 제어하는 송신 제어 수단을 추가로 설치할 수 있다.
본 발명의 수신 방법은 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과, 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝을 포함하는 것을 특징으로 한다.
본 발명의 기록 매체의 프로그램은 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과, 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝을 포함하는 것을 특징으로 한다.
본 발명의 프로그램은 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과, 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝을 컴퓨터에 실행시키는 것을 특징으로 한다.
수신 장치는 독립된 장치라도 되고, 통신 장치의 수신 처리를 실행하는 블록이라도 된다.
본 발명의 송신 장치 및 방법, 기록 매체, 및 프로그램에서는, 통신망이 폭주 상태인지 여부가 판정되고, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷이 생성되고, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 에러 정정 패킷의 생성이 제어된다.
본 발명의 수신 장치 및 방법, 기록 매체, 및 프로그램에서는, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷이 수신되고, 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부가 판정된다.
이하에 본 발명의 실시예를 설명하지만, 본 명세서에 기재된 발명과 발명의 실시예와의 대응 관계를 예시하면, 다음과 같이 된다. 이 기재는 본 명세서에 기재되어 있는 발명을 서포트하는 실시예가 본 명세서에 기재되어 있는 것을 확인하기 위한 것이다. 따라서, 발명의 실시예 중에는 기재되어 있지만, 발명에 대응하는 것으로서, 여기에는 기재되어 있지 않은 실시예가 있다고 해도, 그것은 그 실시예가, 그 발명에 대응하는 것이 아닌 것을 의미하는 것은 아니다. 역으로, 실시예가 발명에 대응하는 것으로서 여기에 기재되어 있다고 해도, 그것은 그 실시예가, 그 발명 이외의 발명에는 대응하지 않는 것인 것을 의미하는 것도 아니다.
또한, 이 기재는 본 명세서에 기재되어 있는 발명의 모두를 의미하는 것은 아니다. 환언하면, 이 기재는 본 명세서에 기재되어 있는 발명으로서, 이 출원에서는 청구되어 있지 않은 발명의 존재, 즉, 장래, 분할 출원되거나, 보정에 의해 출현, 추가 되는 발명의 존재를 부정하는 것은 아니다.
본 발명에 의하면, 송신 장치가 제공된다. 이 송신 장치[예를 들면, 도 4의 서버(12)]는 통신망이 폭주 상태인지 여부를 판정하는 판정 수단[예를 들면, 도 6의 폭주/비폭주 판정부(105)]과 송신 패킷(예를 들면, 도 8의 RTP 패킷 집합 181-1)에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있다
에러 정정 패킷(예를 들면, 도 8의 FEC 패킷 집합 182-1)을 생성하는 생성 수단[예를 들면, 도 6의 FEC 패킷 생성부(84)]과 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 수단[예를 들면, 도 6의 FEC 송신 제어부(86)]을 구비한다.
이 송신 장치는 제어 수단[예를 들면, 도 6의 FEC 송신 제어부(86)]이 폭주 상태라고 판정된 경우, 생성 수단[예를 들면, 도 6의 FEC 패킷 생성부(84)]에 소정 수의 에러 정정 패킷(예를 들면, 도 8의 FEC 패킷 집합 182-1)을 생성시키고, 폭주 상태가 아니라고 판정된 경우, 생성 수단의 에러 정정 패킷의 생성을 억제하도록 생성 수단에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
이 송신 장치는 제어 수단[예를 들면, 도 6의 FEC 송신 제어부(86)]이, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 직전의 폭주 상태에 있어서의 송신 패킷의 수신 상태를 기초로, 에러 정정 패킷의 수를 변경하도록 생성 수단[예를 들면, 도 6의 FEC 패킷 생성부(84)]에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
이 송신 장치는 제어 수단[예를 들면, 도 6의 FEC 송신 제어부(86)]이 소정 기간에 있어서의 1개 또는 복수개의 송신 패킷으로 이루어지는 에러 정정 단위(예를 들면, 도 8의 FEC 블록 171-1)로서, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 수신 상태를 기초로, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 어느 하나에 있어서, 에러 정정 패킷의 수가 부족한 경우, 에러 정정 패킷의 수를 증가시키도록, 생성 수단[예를 들면, 도 6의 FEC 패킷 생성부(84)]에 있어서의 에러 정정 패킷의 생성을 제어하도록 할 수 있다.
이 송신 장치는 판정 수단[예를 들면, 도 6의 폭주/비폭주 판정부(105)]이 제1 시각으로부터 현재 시각까지의 기간에 있어서의 송신 패킷의 상대에의 전송에 요하는 지연 시간에 의존하는 단기 의존 지연 시간과, 제1 시각보다 과거의 제2 시각으로부터 현재 시각까지의 기간에 있어서의 지연 시간에 의존하는 장기 의존 지연 시간을 기초로, 폭주 상태인지 여부를 판정하도록 할 수 있다.
또, 본 발명에 의하면, 송신 방법이 제공된다. 이 송신 방법은 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝(예를 들면, 도 12의 스텝 S87의 처리)과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝(예를 들면, 도 10의 스텝 S59의 처리)과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 스텝에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 스텝(예를 들면, 도 12의 스텝 S91의 처리)을 포함한다.
또, 본 발명에 의하면, 프로그램이 제공된다. 이 프로그램은 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝(예를 들면, 도 12의 스텝 S87의 처리)과, 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝(예를 들면, 도 10의 스텝 S59의 처리)과, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성 스텝에 있어서의 에러 정정 패킷의 생성을 제어하는 제어 스텝(예를 들면, 도 12의 스텝 S91의 처리)을 컴퓨터에 실행시킨다.
이 프로그램은 기록 매체[예를 들면, 도 5의 자기 디스크(51)]에 기록할 수 있다.
본 발명에 의하면, 수신 장치가 제공된다. 이 수신 장치[예를 들면, 도 4의 클라이언트(14)]는 송신 패킷(예를 들면, 도 8의 RTP 패킷 집합 181-1)에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷(예를 들면, 도 8의 FEC 패킷 집합 182-1)을 수신하는 수신 제어 수단[예를 들면, 도 7의 수신부(151)]과, 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 수단[예를 들면, 도 7의 FEC 처리부(135)]을 구비한다.
이 수신 장치는 판정 수단[예를 들면, 도 7의 FEC 처리부(135)]이, 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하도록 할 수 있다.
이 수신 장치는 판정 수단[예를 들면, 도 7의 FEC 처리부(135)]이 1개 또는 복수개의 송신 패킷으로 이루어지는 에러 정정 단위(예를 들면, 도 8의 FEC 블록 171-1)마다 수신된 에러 정정 패킷(예를 들면, 도 8의 FEC 패킷 집합 182-1)의 수가 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하고, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위에 대한 판정 결과를 기초로, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 어느 하나에 있어서, 에러 정정 패킷의 수가 부족하다고 판정된 경우, 상대에의 통지에 에러 정정 패킷의 수가 부족하다는 취지를 설정하는 설정 수단[예를 들면, 도 7의 통지 FEC 상태 유지부(137)]을 설치할 수 있다.
이 수신 장치는 판정 결과에 따른 통지를 저장하는 피드백 패킷을 생성하는 생성 수단[예를 들면, 도 7의 FEC 피드백 패킷 생성부(153)]과, 생성 수단에 의해 생성된 피드백 패킷의 상대에의 송신을 제어하는 송신 제어 수단[예를 들면, 도 7의 송신부(152)]을 추가로 설치할 수 있다.
또, 본 발명에 의하면, 수신 방법이 제공된다. 이 수신 방법은 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝(예를 들면, 도 18의 스텝 S172의 처리)과, 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝(예를 들면, 도 22의 스텝 S221의 처리)을 포함한다.
또, 본 발명에 의하면, 프로그램이 제공된다. 이 프로그램은 송신 패킷에 저장되어 있는 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝(예를 들면, 도 18의 스텝 S172의 처리)과, 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝(예를 들면, 도 22의 스텝 S221의 처리)을 컴퓨터에 실행시킨다.
이 프로그램은 기록 매체[예를 들면, 도 5의 자기 디스크(51)]에 기록할 수 있다.
본 발명은 예를 들면, 인터넷 전화, 원격 텔레비전 회의 시스템, 라이브 영상 스트리밍 분배 시스템, 또는 텔레비전 전화 등 리얼 타임으로 스트리밍 데이터를 전송하는 통신 시스템에 적용할 수 있다.
도 4는 본 발명에 관한 통신 시스템의 일 실시예를 나타낸 도면이다. 카메라(11)는 화상을 촬상하고, 촬상한 화상에 대응하는 화상 데이터를 서버(12)에 공급한다. 예를 들면, 카메라(11)는 동화상을 촬상하여, 동화상에 대응하는 화상 데이터를 서버(12)에 공급한다.
화상 데이터는 스트리밍 데이터의 일례이다. 스트리밍 데이터는 음성의 데이터, 또는 리얼 타임 제어 데이터 등, 시간의 경과에 대응하여 차례로 송신 또는 수신이 요구되는 데이터이면 된다.
서버(12)는 카메라(11)로부터 공급된 화상 데이터를 패킷에 저장하고, 패킷을 통신망(13)을 통해 클라이언트(14)에게 송신한다. 서버(12)는 화상을 저장한 패킷을 정정하기 위한 용장 데이터를 생성하고, 용장 데이터를 저장한 패킷을 통신망(13)을 통해 클라이언트(14)에게 송신한다.
통신망(13)은 유선 또는 무선의 통신 회선, 네트 워크, 또는 인터넷 등으로 되는 전송로이며, 서버(12)로부터 송신된 패킷을 클라이언트(14)까지 전송한다.
클라이언트(14)는 통신망(13)을 통해 서버(12)로부터 송신되어 온 각종 패킷을 수신한다.
클라이언트(14)는 스트리밍 데이터가 저장되어 있는 패킷을 정상적으로 수신할 수 없는 경우, 용장 데이터를 저장한 패킷을 기초로, 정상적으로 수신할 수 없는 화상 데이터를 저장하는 패킷의 에러를 정정한다.
클라이언트(14)는 서버(12)로부터 통신망(13)을 통해 송신되어 온 패킷의 수신 상태를 서버(12)에 통지한다. 서버(12)는 통신망(13)의 전송 상태를 취득한다. 예를 들면, 서버(12)는 왕복 지연 시간(RTT)을 기초로, 통신망(13)의 폭주 상태를 취득한다. 서버(12)는 클라이언트(14)로부터의 통지 및 통신망(13)의 전송 상태에 따라, 클라이언트(14)에게 송신하는 용장 데이터를 저장한 패킷수를 변경한다.
도 5는 서버(12) 구성의 예를 나타낸 블록도이다. CPU(Central Processing Unit)(31)는 R0M(Read 0nly Memory)(32), 또는 기록부(38)에 기록되어 있는 프로그램에 따라 각종 처리를 실행한다. RAM(Random Access Memory)(33)에는 CPU(31)가 실행하는 프로그램이나 데이터 등이 적당히 기억된다. 이들 CPU(31), R0M(32), 및 RAM(33)은 버스(34)에 의해 서로 접속되어 있다.
CPU(31)에는 또, 버스(34)를 통해 입출력 인터페이스(35)가 접속되어 있다. 입출력 인터페이스(35)에는 키보드, 마우스, 스위치 등으로 이루어지는 입력부(36), 디스플레이, 스피커, 램프 등으로 이루어지는 출력부(37)가 접속되어 있다. CPU(31)는 입력부(36)로부터 입력되는 지령에 대응하여 각종 처리를 실행한다.
입출력 인터페이스(35)에 접속되어 있는 기록부(38)는, 예를 들면 하드 디스크 등으로 구성되며, CPU(31)가 실행하는 프로그램이나 각종 데이터를 기록한다. 통신부(39)는 인터넷, 그 밖의 네트 워크 등의 통신망(13)을 통해 클라이언트(14) 등의 외부 장치와 통신한다.
또, 통신부(39)를 통해 프로그램을 취득하여, 기록부(38)에 기록해도 된다.
입출력 인터페이스(35)에 접속되어 있는 드라이브(40)는 자기 디스크(51), 광 디스크(52), 광자기 디스크(53), 또는 반도체 메모리(54) 등이 장착되었을 때, 그들을 구동하여, 거기에 기록되어 있는 프로그램이나 데이터 등을 취득한다. 취득된 프로그램이나 데이터는 필요에 따라 기록부(38)에 전송되어 기록된다.
그리고, 클라이언트(14)는 서버(12)와 동일하게 구성되므로, 그 설명은 생략한다.
도 6은 본 발명에 관한 서버(12)의 일 실시예의 구성을 나타낸 블록도이다.
서버(12)는 통신부(39), 인코더(81), 버퍼(82), RTP 패킷 생성부(83), FEC 패킷 생성부(84), RTT 계측부(85), FEC 송신 제어부(86), FEC 패킷수 증감 상태 유지부(87), FEC 송신 모드 기억부(88), 및 FEC 패킷수 유지부(89)를 포함하도록 구성된다.
인코더(81)는 카메라(11)로부터 공급된 스트리밍 데이터의 일례인 화상 데이터를 인코드(부호화)하고, 인코드된 화상 데이터를 버퍼(82)에 공급한다.
버퍼(82)는 인코더(81)로부터 공급된 화상 데이터를 일시적으로 기억한다.
RTP 패킷 생성부(83)는 버퍼(82)로부터 인코드된 화상 데이터를 취득한다. RTP 패킷 생성부(83)는 취득한 화상 데이터를 RTP 방식의 패킷에 저장함으로써 RTP 패킷을 생성하고, 생성한 RTP 패킷을 통신부(39)에 공급한다.
RTP 패킷은 IETF RFC(Internet Engineering Task Force Request For Comments)(1889)로 규정되어 있는 프로토콜인 RTP에 따른 방식의 패킷이다.
또, RTP 패킷 생성부(83)는 생성된 RTP 패킷에 저장되어 있는 RTP 패킷의 데이터를 FEC 패킷 생성부(84)에 공급한다.
FEC 패킷 생성부(84)는 FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그를 참조하여, FEC 송신 모드인 경우, RTP 패킷 생성부(83)로부터 공급된 RTP 패킷의 데이터를 기초로, 소정 에러 정정 방식에 의해, FEC 패킷수 유지부(89)로부터 공급된 FEC 패킷수로 나타나는 수의 FEC 패킷을 생성한다. FEC 패킷 생성부(84)는 생성한 FEC 패킷을 통신부(39)에 공급한다.
FEC 패킷 생성부(84)는 FEC 송신 모드가 아닌 경우, FEC 패킷을 생성하지 않는다.
통신부(39)는 각종 패킷을 송신하는 송신부(101) 및 각종 패킷을 수신하는 수신부(102)를 구비하고 있으며, 통신망(13)을 통해 패킷의 송수신을 실행한다.
통신부(39)의 송신부(101)는 RTP 패킷 생성부(83)로부터 공급된 RTP 패킷 및 FEC 패킷 생성부(84)로부터 공급된 FEC 패킷을, 통신망(13)을 통해 클라이언트(14)에게 송신한다.
보다 상세하게는, 통신부(39)의 송신부(101)는 RTP 패킷 생성부(83)로부터 공급된 RTP 패킷 및 FEC 패킷 생성부(84)로부터 공급된 FEC 패킷을 일시적으로 유지하고, 동일한 FEC 블록 ID를 포함하는 RTP 패킷 및 FEC 패킷을 1개의 FEC 블록으로 하여, 예를 들면, 버스트 전송 방식 등의 소정 방식에 의해 통신망(13)을 통해 클라이언트(14)에게 송신한다. FEC 블록을 특정하는 FEC 블록 ID의 상세한 것은 후술한다.
또, 통신부(39)의 송신부(101)는 RTT 계측부(85)로부터 공급된 RTT 계측 패킷을, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
통신부(39)의 수신부(102)는 통신망(13)을 통해 클라이언트(14)로부터 송신되어 온 RTT 계측 패킷을 RTT 계측부(85)에 공급한다. 또, 통신부(39)의 수신부(102)는 통신망(13)을 통해 클라이언트(14)로부터 송신되어 온 FEC 피드백 패킷을 FEC 송신 제어부(86)에 공급한다.
RTT 계측부(85)는 RTT 계측 패킷을 생성하고, 생성한 RTT 계측 패킷을 통신부(39)에 공급한다. RTT 계측부(85)는 통신부(39)에 수신되고 통신부(39)로부터 공급된 RTT 계측 패킷을 기초로 지연 시간(RTT)을 계산한다.
RTT 계측부(85)는 장기 의존 RTT를 계산하는 장기 의존 RTT 연산부(103) 및 단기 의존 RTT를 계산하는 단기 의존 RTT 연산부(104)를 구비하고 있다. RTT 계측부(85)의 장기 의존 RTT 연산부(103)는 RTT 계측부(85)에 의해 계산된 지연 시간을 기초로, 장기 의존 RTT를 계산한다. RTT 계측부(85)의 단기 의존 RTT 연산부(104)는 RTT 계측부(85)에 의해 계산된 지연 시간을 기초로, 단기 의존 RTT를 계산한다. 장기 의존 RTT 및 단기 의존 RTT의 상세한 것은 후술한다.
또한, RTT 계측부(85)는 장기 의존 RTT 연산부(103)에 의해 계산된 장기 의존 RTT 및 단기 의존 RTT 연산부(104)에 의해 계산된 단기 의존 RTT를 FEC 송신 제어부(86)에 공급한다.
FEC 송신 제어부(86)는 FEC 패킷 생성부(84)의 FEC 패킷 생성을 제어한다. FEC 송신 제어부(86)는 통신망(13)이 폭주 상태인지 여부를 판정하는 폭주/비폭주 판정부(105)를 구비하고 있다.
FEC 송신 제어부(86)의 폭주/비폭주 판정부(105)는 RTT 계측부(85)로부터 공급된 장기 의존 RTT 및 단기 의존 RTT를 기초로, 통신망(13)이 폭주 상태인지 여부를 판정하고, 폭주 상태인지 여부의 판정 결과를 기억한다. FEC 송신 제어부(86)는 판정 결과가 폭주 상태인 취지의 판정 결과인 경우, FEC 송신 모드 기억부(88)의 FEC 송신 모드 플래그를 세트하고(예를 들면, "1"을 설정함), 폭주 상태가 아닌 취지의 판정 결과인 경우, 즉 비폭주 상태인 취지의 판정 결과인 경우, FEC 송신 모드 기억부(88)의 FEC 송신 모드 플래그를 리세트한다(예를 들면, "O"을 설정함).
또, FEC 송신 제어부(86)는 통신부(39)가 수신하고, 통신부(39)로부터 공급된 FEC 피드백 패킷을 기초로, FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태를 갱신한다. 여기에서, FEC 패킷수 증감 상태는 FEC 패킷의 수를 증가시키는가, 감소시키는가, 또는 유지하는가를 나타내는 상태이다. FEC 패킷수 증감 상태 변경 처리의 상세한 것은 후술한다.
또한, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태를 판독하여, FEC 패킷수 유지부(89)에 유지되어 있는 FEC 패킷수를 변경한다. FEC 패킷수 변경 처리의 상세한 것은 후술한다.
FEC 패킷수 증감 상태 유지부(87)는 FEC 송신 제어부(86)으로부터 공급된 FEC 패킷수 증감 상태를 유지(기억)한다.
FEC 송신 모드 기억부(88)는 FEC 송신 모드인지 여부를 나타내는 FEC 송신 모드 플래그를 기억한다. 세트되어 있는(예를 들면, "1"이 설정되어 있는) FEC 송신 모드 플래그는 FEC 송신 모드인 것을 나타내고, 리세트되어 있는(예를 들면, "O"이 설정되어 있는) FEC 송신 모드 플래그는 FEC 송신 모드가 아닌 것을 나타낸다. FEC 송신 모드인 경우, FEC 패킷 생성부(84)는 FEC 패킷을 생성하고, FEC 송신 모드가 아닌 경우, FEC 패킷 생성부(84)는 FEC 패킷을 생성하지 않는다.
FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그는 통신망(13)이 폭주 상태인 경우, FEC 송신 제어부(86)에 의해 세트된다. 또, 통신망(13)이 비폭주 상태인 경우, FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그는 FEC 송신 제어부(86)에 의해 리세트된다.
즉, 통신망(13)이 폭주 상태인 경우, FEC 송신 모드가 되므로, FEC 패킷이 생성되어 FEC 패킷이 송신되고, 통신망(13)이 폭주 상태가 아닌 경우, FEC 송신 모드는 아니기 때문에, FEC 패킷은 생성되지 않아 FEC 패킷은 송신되지 않는다.
FEC 패킷수 유지부(89)는 FEC 송신 제어부(86)로부터 공급된 FEC 패킷수를 유지한다. FEC 패킷수 유지부(89)는 FEC 송신 제어부(86)로부터 FEC 패킷수가 공급되면, 공급된 FEC 패킷수를 FEC 패킷 생성부(84)에 공급한다.
그리고, FEC 패킷수 증감 상태 유지부(87), FEC 송신 모드 기억부(88), 및 FEC 패킷수 유지부(89)가 FEC 패킷 생성부(84)에 포함되는 구성으로 하는 것도 가능하다.
도 7은 본 발명에 관한 클라이언트(14)의 일 실시예의 구성을 나타낸 블록도이다
클라이언트(14)는 통신부(131), RTP 처리부(132), 버퍼(133), 디코더(134), FEC 처리부(135), FEC 블록 정보 유지부(136), 통지 FEC 상태 유지부(137), 및 RTT 계측부(138)를 포함하도록 구성된다.
통신부(131)는 서버(12)의 통신부(39)에 대응하고, 패킷의 수신을 제어하는 수신부(151) 및 패킷 송신을 제어하는 송신부(152)를 구비하고 있다. 통신부(131)의 수신부(151)은 통신망(13)을 통해 송신되어 온 각종 패킷을 수신하고, 수신한 패킷을 RTP 처리부(132) 또는 RTT 계측부(138)에 공급한다. 통신부(131)의 송신부(152)는 통신망(13)을 통해 각종 패킷을 송신한다.
RTP 처리부(132)는 통신부(131)에 수신되고 통신부(131)로부터 공급된 RTP 패킷 및 FEC 패킷을 검사한다. RTP 처리부(132)는 정상적인 FEC 패킷이 수신된 경우, 수신된 FEC 패킷을 FEC 처리부(135)에 공급하는 동시에, FEC 헤더 정보를 FEC 블록 정보 유지부(136)에 공급한다. RTP 처리부(132)는 정상이 아닌 FEC 패킷이 수신된 경우, 수신된 FEC 패킷을 파기한다.
또, RTP 처리부(132)는 정상적인 RTP 패킷이 수신된 경우, 수신된 RTP 패킷을 일시적으로 유지하는 동시에, RTP 헤더 정보를 FEC 블록 정보 유지부(136)에 공급한다. RTP 처리부(132)는 정상이 아닌 RTP 패킷이 수신된 경우, 수신한 RTP 패킷에 포함되는 FEC 블록 ID와 동일한 FEC 블록 ID를 포함하는 FEC 패킷을 수신했을 때, 정상이 아닌 RTP 패킷의 복원을 지시하는 신호를 FEC 처리부(135)에 공급한다.
RTP 처리부(132)는 정상이 아닌 RTP 패킷이 수신된 경우, 수신한 RTP 패킷에 포함되는 FEC 블록 ID와 동일한 FEC 블록 ID를 포함하는 FEC 패킷을 수신하고 있지 않을 때, RTP 패킷을 파기한다.
RTP 처리부(132)는 RTP 패킷의 복원을 지시하는 신호를 FEC 처리부(135)에 공급하지 않은 경우, 패킷의 수신이 완료되면, 일시적으로 유지하고 있는 RTP 패킷을 버퍼(133)에 공급한다.
또, RTP 처리부(132)는 RTP 패킷의 복원을 지시하는 신호를 FEC 처리부(135)에 공급한 경우, 패킷의 수신이 완료되고, FEC 처리부(135)로부터 복원된 RTP 패킷이 공급되기 때문에, 유지하고 있는 RTP 패킷 및 복원된 RTP 패킷을 버퍼(133)에 공급한다.
또한, RTP 처리부(132)는 RTP 패킷 또는 FEC 패킷이 정상적으로 수신된 경우, FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보인 FEC 블록 정보 테이블의 수신 패킷수를 인크리먼트한다. RTP 처리부(136)은 수신된 RTP 패킷 또는 FEC 패킷에 포함되는 FEC 블록 ID가 변화된 경우, FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보를 갱신한다. FEC 블록 정보 테이블의 상세 및 FEC 블록 정보 갱신 처리의 상세한 것은 후술한다.
버퍼(133)는 RTP 처리부(132)로부터 공급된 RTP 패킷을 일시적으로 기억한다.
디코더(134)는 버퍼(133)에 기억되어 있는 RTP 패킷을 차례로 취득하고, 취득한 RTP 패킷으로부터 화상 데이터를 추출한다. 그리고, 디코더(134)는 인코더(81)에 대응하는 복호 방식으로, 추출된 화상 데이터를 디코드(복호)하고, 디코드된 화상 데이터를 출력한다.
FEC 처리부(135)는 FEC 피드백 패킷을 생성하는 FEC 피드백 패킷 생성부(153)를 구비하고 있다.
FEC 처리부(135)는 RTP 처리부(132)로부터 공급된 FEC 패킷을 일시적으로 유지한다. FEC 처리부(135)는 정상이 아닌 RTP 패킷의 복원을 지시하는 신호가 RTP 처리부(132)로부터 공급된 경우, FEC 패킷을 기초로 RTP 패킷을 복원하고, 복원한 RTP 패킷을 RTP 처리부(132)에 공급한다.
보다 구체적으로는, 예를 들면, FEC 처리부(135)는 RTP 처리부(132)에 일시적으로 기억되어 있는 정상적으로 수신된 RTP 패킷으로서 복원의 처리에 요하는 RTP 패킷을 RTP 처리부(132)로부터 취득하고, 취득한 RTP 패킷 및 FEC 패킷을 기초로, 정상적으로 수신 되지 않은 RTP 패킷을 복원한다.
또, FEC 처리부(135)는 정상이 아닌 RTP 패킷의 복원을 지시하는 신호가 RTP 처리부(132)로부터 공급되지 않은 경우, 패킷의 수신이 완료되면, 유지하고 있는 FEC 패킷을 파기한다.
그리고, RTP 처리부(132)가 RTP 패킷의 복원을 실행하는 구성으로 해도 된다.
FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블에 기록되어 있는 FEC 블록 ID가 변화된 경우, FEC 블록 정보를 기초로, FEC 블록 정보 유지부(136)에 유지(기록)되어 있는 FEC 패킷의 수가 적정한지 여부를 나타내는 FEC 블록 상태를 갱신한다. FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보를 판독하여, 통지 FEC 상태 유지부(137)에 유지되어 있는 통지 FEC 상태를 갱신한다. FEC 블록 상태 갱신 처리 및 통지 FEC 상태 갱신 처리의 상세한 것은 후술한다.
또, FEC 처리부(135)의 FEC 피드백 패킷 생성부(153)는 통지 FEC 상태 유지부(137)에 유지되어 있는 통지 FEC 상태를 기초로, FEC 피드백 패킷을 생성하고, FEC 처리부(135)는 생성된 FEC 피드백 패킷을 통신부(131)에 공급한다. FEC 피드백 패킷의 상세한 것은 후술한다.
FEC 블록 정보 유지부(136)는 RTP 처리부(132) 및 FEC 처리부(135)에 의해 갱신되는 FEC 블록 정보를 유지(기록)하고 있다.
통지 FEC 상태 유지부(137)는 FEC 처리부(135)에 의해 갱신되는 통지 FEC 상태를 유지하고 있다.
RTT 계측부(138)는 통신부(131)에 수신되고 통신부(131)로부터 공급된 RTT 계측 패킷을 취득한다. RTT 계측부(138)는 취득한 RTT 계측 패킷의 데이터부와 동일 데이터부를 포함하는 RTT 계측 패킷을 생성하고, 생성한 RTT 계측 패킷을 통신부(131)에 공급한다.
그리고, 도 6 또는 도 7에서 나타내는 서버(12) 또는 클라이언트(14)의 기능은 하드웨어에 의해 실현하도록 해도 되고, 소프트웨어(프로그램)에 의해 실현하도록 해도 된다.
다음에, 도 8의 타임 차트를 참조하여, 서버(12)에 의한 FEC 블록 송신 처리를 설명한다.
도 8에서의 가로 방향은 시간을 나타낸다. 도 8에서, 시각 t1로부터 시각 t2까지의 기간 D1 및 시각 t3로부터 시각 t4까지의 기간 D3은 통신망(13)이 폭주 상태인 기간을 나타낸다. 또, 시각 t2로부터 시각 t3까지의 기간 D2는 통신망(13)이 비폭주 상태인 기간을 나타낸다.
서버(12)는 통신망(13)이 폭주 상태인 경우, FEC 패킷 집합을 포함하는 FEC 블록을 송신하고, 통신망(13)이 비폭주 상태인 경우에는, FEC 패킷 집합을 포함하지 않는 FEC 블록을 송신한다. 또한, 서버(12)는 통신망(13)을 통해 클라이언트(14)로부터 수신한 FEC 피드백 패킷을 기초로, FEC 패킷 집합에 포함되는 FEC 패킷의 수를 변경한다. 즉, 시각 t11에서, 통신망(13)이 폭주 상태이기 때문에, 서버(12)는 동일한 FEC 블록 ID를 포함하는 RTP 패킷 및 FEC 패킷을 1개의 FEC 블록으로 하여 클라이언트(14)에게 송신한다.
보다 상세하게 설명하면, 서버(12)는, 예를 들면, 도 8에서, 1개의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-1의 4개의 RTP 패킷에 저장한다. 또, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터의 용장 데이터를 FEC 블록 171-1의 2개의 FEC 패킷에 저장한다. 그리고, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터가 저장된, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-1 및 2개의 FEC 패킷으로 이루어지는 FEC 패킷 집합 182-1을 FEC 블록 171-1로 하여 통신망(13)을 통해 클라이언트(14)에게 송신한다.
클라이언트(14)는 통신망(13)을 통해 서버(12)로부터 송신되어 온 FEC 블록 171-1을 시각 t21에 수신한다.
마찬가지로, 서버(12)는 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-2의 4개의 RTP 패킷에 저장한다. 또, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터의 용장 데이터를 FEC 블록 171-2의 2개의 FEC 패킷에 저장한다. 그리고, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터가 저장된, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-2 및 2개의 FEC 패킷으로 이루어지는 FEC 패킷 집합 182-2을 FEC 블록 171-2로 하여 통신망(13)을 통해 클라이언트(14)에게 송신한다.
서버(12)는 또한 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-3의 4개의 RTP 패킷에 저장한다. 또, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터의 용장 데이터를 FEC 블록 171-3의 2개의 FEC 패킷에 저장한다. 그리고, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터가 저장된, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-3 및 2개의 FEC 패킷으로 이루어지는 FEC 패킷 집합 182-3을 FEC 블록 171-3으로 하여 통신망(13)을 통해 클라이언트(14)에게 송신한다.
시각 t2에서, 통신망(13)이 폭주 상태로부터 비폭주 상태로 변화했으므로, 시각 t2 이후에 있어서, 서버(12)는 통신망(13)을 통해 클라이언트(14) 앞으로 FEC 패킷을 포함하지 않은 FEC 블록을 송신한다.
서버(12)는 FEC 블록 171-3의 프레임 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-4의 4개의 RTP 패킷에 저장하고, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-4을 FEC 블록 171-4로 하여 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다. 서버(12)는 다시 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-5의 4개의 RTP 패킷에 저장하고, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-5를 FEC 블록 171-5로 하여, 통신망(13)을 통해 클라이언트(14)에게 송신한다. 서버(12)는 다시 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-6의 4개의 RTP 패킷에 저장하고, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-6을 FEC 블록 171-6으로 하여, 통신망(13)을 통해 클라이언트(14)에게 송신한다.
시각 t3에 있어서, 통신망(13)이 비폭주 상태로부터 폭주 상태로 변화했으므로, 시각 t3 이후에 있어서, 서버(12)는 통신망(13)을 통해 스트리밍 데이터와 함께 용장 데이터를 클라이언트(14) 앞으로 송신한다.
즉, 서버(12)는 FEC 블록 171-6의 프레임 다음의 하나의 프레임을 재생하기 위한 화상 데이터인 스트리밍 데이터를 FEC 블록 171-7의 4개의 RTP 패킷에 저장한다. 또, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터의 용장 데이터를 FEC 블록 171-7의 2개의 FEC 패킷에 저장한다. 그리고, 서버(12)는 그 프레임을 재생하기 위한 스트리밍 데이터가 저장된, 4개의 RTP 패킷으로 이루어지는 RTP 패킷 집합 181-7 및 2개의 FEC 패킷으로 이루어지는 FEC 패킷 집합 182-4를 FEC 블록 171-7로 하여 통신망(13)을 통해 클라이언트(14)에게 송신한다.
시각 t21로부터 시각 t23까지의 기간 T1, 시각 t23으로부터 시각 t24까지의 기간 T2, 시각 t24로부터 시각 t25까지의 기간 T3, 및 시각 t25로부터 시각 t26까지의 기간 T4의 각각은 클라이언트(14)에 있어서의 FEC 피드백 패킷 송신 처리를 실행하는 시간 간격이며, 타이머로 정해진다. 즉, 클라이언트(14)는 타이머가 종료되는 시각인 시각 t23, 시각 t24, 시각 t25, 및 시각 t26의 각각의 시각에 FEC 피드백 패킷을 생성하고, 생성한 FEC 피드백 패킷을, 통신망(13)을 통해 서버(12) 앞으로 송신한다.
이하, FEC 블록 171-1 내지 FEC 블록 171-7을 개개로 구별할 필요가 없을 때, 단지 FEC 블록(171)이라고 칭한다. 마찬가지로, 이하, RTP 패킷 집합 181-1 내지 RTP 패킷 집합 181-7을 개개로 구별할 필요가 없을 때, 단지 RTP 패킷 집합(181)이라고 칭하고, FEC 패킷 집합 182-1 내지 FEC 패킷 집합 182-4를 개개로 구별할 필요가 없을 때, 단지 FEC 패킷 집합(182)이라고 칭한다.
클라이언트(14)는 통신망(13)을 통해 서버(12)로부터 송신되어 온 FEC 블록(171)을 수신하면, FEC 블록 정보를 기록한다. FEC 블록 정보는, 예를 들면, 도 9에서 나타낸 FEC 블록 정보 테이블에 기록된다.
클라이언트(14)는 FEC 블록(171)을 수신하면, FEC 블록(171)에 고유의 식별 번호인 FEC 블록 ID, FEC 블록(171)에 포함되는 RTP 패킷의 수를 나타내는 오리지널 데이터 패킷수, FEC 블록(171)에 포함되는 RTP 패킷수 및 FEC 패킷수의 합계인 총 패킷수, 정상적으로 수신된 패킷수를 나타내는 수신 패킷수, 및 수신된 FEC 패킷의 수가 로스 패킷을 복원하는 경우에, 부족한가, 적정한가, 또는 과다한가를 나타내는 FEC 블록 상태를 각각 FEC 블록 정보 테이블에 기록한다.
도 9는 FEC 블록 정보 테이블의 예를 나타낸 도면이다.
여기에서, 예를 들면, 도 9에서, FEC 블록 ID1의 FEC 블록(171)은 총 패킷수가 6인 데 대하여, 수신 패킷수가 4이며, 2개의 패킷을 로스하고 있다. 또, FEC 블로그 ID1의 FEC 블록(171)의 총 패킷수가 6인 데 대하여, 오리지널 패킷수는 4이기 때문에, FEC 블록 ID1의 FEC 블록(171)에는 2개의 FEC 패킷이 포함되는 것을 알 수 있다.
FEC 패킷 1개에 대하여 RTP 패킷 1개를 복원할 수 있으므로, FEC 블록 ID1의 FEC 블록(171)에 포함되는 2개의 FEC 패킷을 사용함으로써, 2개의 로스 패킷을 회복할 수 있다. 따라서, FEC 블록 ID1에 포함되는 FEC 패킷의 수는 과다하지도 않고, 부족하지도 않기 때문에, FEC 블록 상태는 적정 상태로 설정된다.
마찬가지로, FEC 블록 ID2의 FEC 블록(171)에서는, FEC 블록(171)에 포함되는 FEC 패킷이 2개인 데 대하여, 로스 패킷은 3개이기 때문에, 3개의 로스 패킷 중, 1개의 로스 패킷은 회복할 수 없다. 즉, FEC 패킷이 1개 부족하므로, FEC 블록 상태는 부족 상태로 설정된다.
또, FEC 블록 ID3의 FEC 블록(171)에 있어서는, FEC 블록(171)에 포함되는 FEC 패킷이 2개인 데 대하여, 로스 패킷은 O이기 때문에, 2개의 FEC 패킷이 사용되지 않고 파기되게 된다. 따라서, FEC 패킷이 2개 과다하므로, FEC 블록 상태는 과다 상태로 설정된다.
도 8의 타임 차트의 설명으로 되돌아가, 예를 들면, 시각 t22에서, 클라이언트(14)는 FEC 블록 171-2에서 3개 패킷의 패킷 로스를 검지한다. 그리고, 클라이언트(14)는 FEC 블록 171-2의 FEC 블록 상태를 부족 상태로 설정한다. 시각 t23에 기간 T1이 경과했으므로(타이머가 종료되었으므로), 클라이언트(14)는 시각 t21로부터 시각 t23까지 수신된 FEC 블록(171) 각각의 FEC 블록 상태를 기초로, 예를 들면, FEC 패킷이 부족하다는 취지의 FEC 피드백 패킷을 생성하고, 생성된 FEC 피드백 패킷을, 통신망(13)을 통해 서버(12) 앞으로 송신한다. FEC 피드백 패킷의 상세한 것은 후술한다.
또, 클라이언트(14)는 기간 T2 및 기간 T3의 각각의 종료 시각 t24 및 시각 t25의 각각에 있어서, 통신망(13)을 통해 서버(12) 앞으로 FEC 피드백 패킷을 송신한다.
시각 t3에서, 통신망(13)이 비폭주 상태로부터 폭주 상태로 변화했으므로, 서버(12)는 시각 t1로부터 시각 t3까지, 통신망(13)을 통해 클라이언트(14)로부터 수신된 피드백 패킷을 기초로, FEC 블록(171)에 포함되는 FEC 패킷의 수를 변경하고, 예를 들면, 시각 tl2에 3개의 FEC 패킷이 포함되는 FEC 블록 171-7을, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
이와 같이, 서버(12)는 통신망(13)에서의 폭주 상태 및 클라이언트(14)로부터 송신되어 온 FEC 피드백 패킷을 기초로, FEC 블록(171)에 포함되는 FEC 패킷의 수를 변경하고, FEC 블록(171)을 송신한다.
다음에, 도 10의 플로 차트를 참조하여, 서버 프로그램을 실행하는 서버(12)에 의한 데이터 송신 처리를 설명한다.
스텝 S51에서, 서버(12)는 송신 처리에 필요한 데이터를 초기화한다. 예를 들면, 스텝 S51에서, 인코더(81)는 내장하고 있는 타이머의 값을 0ms에 세트하고, RTP 패킷 생성부(83)는 타임 스탬프 및 시퀀스 번호를 초기화하고, FEC 블록 ID의 값을 1에 설정한다.
스텝 S52에서, 인코더(81)는 내장하고 있는 타이머의 값을 기초로, 타이머가 종료되었는지 여부를 판정하고, 타이머가 종료되어 있지 않은 경우, 스텝 S52로 되돌아가, 타이머가 종료되었다고 판정될 때까지, 판정의 처리를 반복한다.
스텝 S52에서, 타이머가 종료되었다고 판정된 경우, 처리는 스텝 S53으로 진행한다.
예를 들면, 화상 데이터의 프레임수가 1초당 30인 경우, 타이머가 시간 경과에 대응하여 값을 증가시킬 때, 스텝 S52에서, 인코더(81)는 33ms 등의 소정 값과 타이머의 값을 비교함으로써 타이머가 종료되었는지 여부를 판정한다.
예를 들면, 스텝 S51에 있어서, 타이머의 값을 33ms에 세트하고, 타이머의 값이 시간의 경과에 대응하여 값을 감소시킬 때, 인코더(81)는 타이머의 값과 Oms를 비교함으로써 타이머가 종료되었는지 여부를 판정한다.
이 경우에 있어서의, 타이머의 값과 비교되는 0ms 또는 33ms는 프레임의 수가 1초당 30인 경우의 예이며, 본 발명을 한정하는 것은 아니다.
이하에 설명하는 타이머에 관한 처리에서, 동일하다.
스텝 S53에서, 인코더(81)는 카메라(11)로부터 공급된 화상 데이터를 1 프레임분 캡처한다. 예를 들면, 스텝 S53에서, 인코더(81)는 카메라(11)로부터 공급된 화상 데이터를 차례로 취득하고, 취득한 화상 데이터 중, 1 프레임분을 캡처한다.
스텝 S54에서, 인코더(81)는 캡처된 화상 데이터를 인코드한다. 예를 들면, 스텝 S54에서, 인코더(81)는 캡처된 화상 데이터를 MPEG(Moving Picture Experts Group)(1, 2, 4, 7, 또는 21), JPEG(Joint Photographic Experts Group), JPEG 2000, 또는 모션 JPEG 등의 방식에 의해 인코드한다.
스텝 S55에서, 인코더(81)는 인코드된 화상 데이터를 버퍼(82)에 공급하고, 버퍼(82)에 인코드된 화상 데이터를 저장(기억)시킨다.
스텝 S56에서, RTP 패킷 생성부(83)는 디코드된 화상 데이터를 버퍼(82)로부터 취득하고, 취득한 화상 데이터를 저장하는 RTP 패킷을 생성한다.
도 11은 RTP 패킷을 설명하는 도면이다. RTP 패킷의 선두에는, 도 11에서 "V"로 표시되는 2비트의 버젼 정보가 배치된다. 버젼 정보는 RTP 패킷의 버젼을 나타낸다.
버젼 정보의 다음에 도 11 중의 "P"로 표시되는 1비트의 패딩이 배치되고, 패딩에 계속해서, 1비트의 확장 정보가 RTP 패킷에 배치된다. 확장 정보는 도 11에서, "X"로 표시된다. 확장 정보는 RTP 패킷에 확장 헤더를 배치하는 경우에, 소정 값으로 설정된다.
확장 정보에 계속해서, CSRC(Contributing Source) 카운트가 RTP 패킷에 배치된다. CSRC 카운트는 도 11 중에서, "CC"로 표시된다. CSRC 카운트는 CSRC 식별자의 수를 나타낸다.
CSRC 카운트에 계속해서 배치되는 1비트의 마커 정보(marker information)는 프로파일에 의해 정의된다. 마커 정보는 도 11 중에서 "m"으로 표시된다.
마커 정보에 계속해서 배치되는 7비트의 페이로드 타입은 RTP 패킷의 포맷을 정의하기 위한 정보이다. 페이로드 타입은 도 11 중에서, "PT"로 표시된다. RTP 패킷에서, 페이로드 타입은 33이 된다.
시퀀스 번호는 페이로드 타입의 다음에 배치되는 16비트의 정보이다. 시퀀스 번호는 RTP 패킷의 재생 순번을 나타내는 번호이며, 송신 때마다, 하나씩 증가한다.
시퀀스 번호의 다음에 배치되는 32비트의 타임 스탬프는 그 RTP 패킷에 저장되어 있는 스트리밍 데이터의 최초의 옥텟(octet)이 샘플된 시각을 나타내는 정보이다. 또, 타임 스탬프에 의해, 수신측에서 RTP 패킷의 전개 시에 처리 시간의 제어가 실행되어, 리얼 타임 화상, 또는 음성의 재생 제어를 실행하는 것이 가능해진다. 타임 스탬프는 1개의 화상 프레임에 속하는 복수개의 RTP 패킷에 공통의 타임 스탬프가 설정된다.
SSRC(Synchronization Source) 식별자는 타임 스탬프의 다음에 배치되는 32비트의 정보로서, RTP 패킷에 저장되는 스트리밍 데이터의 소스를 나타낸다.
RTP 패킷에서, SSRC 식별자의 다음에는 FEC 블록 ID가 배치된다. FEC 블록 ID는 서버(12)가 통신망(13)을 통해 클라이언트(14) 앞으 송신하는 RTP 패킷 및 FEC 패킷의 집합인 FEC 블록(171)을 식별하는 번호이다. 예를 들면, 도 8에서, RTP 패킷 집합(181)에 속하는 RTP 패킷에는, 동일한 FEC 블록 ID가 부여된다. 그리고, 1개의 FEC 블록(171)의 FEC 패킷 집합(182)에 속하는 FEC 패킷에는, 그 FEC 블록(171)의 RTP 패킷 집합(181)에 속하는 RTP 패킷의 FEC 블록 ID와 동일한 FEC 블록 ID가 저장된다.
FEC 블록 ID에 계속해서, 총 패킷수가 RTP 패킷에 배치된다. 총 패킷수는 도 11에서 "N"으로 표시되며, 1개의 FEC 블록(171)에 포함되는 RTP 패킷수 및 FEC 패킷수의 합계이다.
RTP 패킷에서, 총 패킷수의 다음에는 오리지널 데이터 패킷수가 배치된다. 오리지널 데이터 패킷수는 도 11에서, "K"로 표시되며, 1개의 FEC 블록(171)에 포함되는 RTP 패킷의 수이다.
오리지널 데이터 패킷수의 다음에, 도 11 중의 "R"로 표현되는 용장 패킷수가 배치된다. 용장 패킷수는 1개의 FEC 블록에 포함되는 FEC 패킷의 수를 나타낸다.
용장 패킷수에 계속해서, 데이터량을 조정하기 위한, 도 11 중의 "P"로 표시되는 패딩이 배치된다. 패딩에 계속해서 스트리밍 데이터가 저장된다. 도 11에서, "Original Data"는 스트리밍 데이터를 나타낸다.
그리고, FEC 패킷은 RTP 패킷과 동일하게 구성할 수 있다. 이 경우, FEC 패킷의 페이로드 타입은 예를 들면, 34가 된다.
도 10으로 되돌아가, 스텝 S57에서, RTP 패킷 생성부(83)는 생성된 RTP 패킷을 통신부(39)에 공급하고, 통신부(39)는 공급된 RTP 패킷을, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
스텝 S58에서, FEC 패킷 생성부(84)는 FEC 송신 모드인지 여부를 판정한다. 예를 들면, 스텝 S58에서, FEC 패킷 생성부(84)는 FEC 송신 모드 기억부(88)의 FEC 송신 모드 플래그 세트 또는 리세트의 설정을 기초로, FEC 송신 모드인지 여부를 판정한다.
스텝 S58에서, FEC 송신 모드라고 판정된 경우, 통신망(13)은 폭주 상태이기 때문에, 패킷 로스가 발생할 가능성이 높다. 그래서, FEC 패킷을 클라이언트(14) 앞으로 송신하기 위해, 처리는 스텝 S59로 진행한다.
스텝 S59에서, FEC 패킷 생성부(84)는 RTP 패킷 생성부(83)로부터 공급된 RTP 패킷의 데이터를 기초로, FEC 패킷수 유지부(89)로부터 공급된 FEC 패킷수로 나타나는 수의 FEC 패킷을 생성한다.
예를 들면, 스텝 S59에서, FEC 패킷 생성부(84)는 RTP 패킷 생성부(83)로부터 공급된 RTP 패킷에 저장되는 데이터에 배타적 논리합의 연산을 적용함으로써, FEC 패킷의 데이터를 생성하고, 생성한 데이터에 소정 헤더를 부가함으로써, FEC 패킷을 생성한다.
여기에서, FEC 패킷에 부가되는 헤더는, 예를 들면, 도 11에서 나타낸 RTP 패킷의 헤더와 동일 포맷의 헤더가 부가된다. RTP 패킷 및 FEC 패킷의 식별은 FEC 패킷의 헤더에서, 예를 들면, 도 11 중의 "X"로 표시되는 확장 정보를 1로 함으로써, RTP 패킷 및 FEC 패킷이 식별된다. 또, 예를 들면, FEC 패킷에서, 페이로드 타입은 34가 되며, FEC 패킷에서, 도 11 중의 "0riginal Data"로 표시되는 영역에는, 에러 정정을 위한 용장 데이터가 저장된다.
그리고, FEC 패킷 생성부(84)에 의해 생성되는 FEC 패킷의 에러 정정 방식(용장 데이터 방식)은 배타적 논리합의 연산에 의한 것에 한정되지 않고, 예를 들면, 해밍 부호 등의 선형 부호, 순회 부호, BCH(Bose-Chaudhuri-Hocquenghem) 부호 또는 리드 솔로몬(Reed Solomon)부호 등의 대수적 부호, 또는 다수결 논리 부호 등 어느 방식이라도 된다.
스텝 S60에서, FEC 패킷 생성부(84)는 생성된 FEC 패킷을 통신부(39)에 공급하고, 통신부(39)는 통신망(13)을 통해 공급된 FEC 패킷을 클라이언트(14) 앞으로 송신하고, 수속은 스텝 S61로 진행한다.
보다 상세하게는, 통신부(39)는 스텝 S57에서, RTP 패킷 생성부(83)로부터 공급된 RTP 패킷을 일시적으로 유지한다. 그리고, 스텝 S60에서, 통신부(39)는 유지하고 있는 RTP 패킷에 포함되는 FEC 블록 ID와 동일한 FEC 블록 ID를 포함하는 FEC 패킷이 FEC 패킷 생성부(84)로부터 공급되면, 유지하고 있는 RTP 패킷 및 FEC 패킷 생성부(84)로부터 공급된 FEC 패킷을 하나의 FEC 블록(171)으로 하여, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
예를 들면, 도 8의 시각 t1로부터 시각 t2에서, 서버(12)는 통신망(13)이 폭주 상태(FEC 패킷 송신 모드)이므로, RTP 패킷과 함께 FEC 패킷을, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
한편, 스텝 S58에서, FEC 송신 모드가 아니라고 판정된 경우, 통신망(13)은 비폭주 상태이기 때문에, 패킷 로스가 발생할 가능성은 낮다. 그래서, FEC 패킷의 클라이언트(14)에의 송신을 억제하기 위해, 스텝 S59 및 스텝 S60의 처리는 스킵되고, 수속은 스텝 S61로 진행한다.
그리고, 스텝 S58에서, FEC 송신 모드가 아니라고 판정된 경우, FEC 패킷 송신은 억제되므로, 통신부(39)는 스텝 S57에서, RTP 패킷 생성부(83)로부터 공급된 RTP 패킷을 하나의 FEC 블록(171)으로 하여, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
예를 들면, 도 8의 시각 t2로부터 시각 t3에서, 서버(12)는 통신망(13)이 비폭주 상태이므로, RTP 패킷 집합(181)을 하나의 FEC 블록(171)으로 하여, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다. 환언하면, 서버(12)는 FEC 패킷 송신 모드가 아니므로, FEC 패킷의 클라이언트(14)에의 송신을 억제한다.
스텝 S61에서, RTP 패킷 생성부(83)는 FEC 블록 ID를 갱신한다. 예를 들면, 스텝 S61에서, RTP 패킷 생성부(83)는 패킷에 저장되는 FEC 블록 ID를 인크리먼트한다.
스텝 S62에서, RTP 패킷 생성부(83)는 타임 스탬프를 갱신한다.
그리고, FEC 패킷 생성부(84)는 RTP 패킷 생성부(83)로부터 공급되는 RTP 헤더 정보에 포함되는 FEC 블록 ID 및 타임 스탬프를 기초로, FEC 패킷을 생성하도록 해도 되고, 자기 자신이 RTP 타임 스탬프 및 FEC 블록 ID를 유지하고, 갱신하도록 해도 된다.
스텝 S63에서, 인코더(81)는 내장하고 있는 타이머를 세트하고, 스텝 S52로 되돌아가, 데이터 송신 처리를 반복한다.
예를 들면, 스텝 S63에서, 인코더(81)는 타이머의 값을 0ms에 세트한다
이와 같이 하여, 서버(12)는 FEC 블록(171)마다 FEC 블록 ID를 부가하고, 통신망(13)이 폭주 상태인 경우, 통신망(13)을 통해 RTP 패킷 및 FEC 패킷을 클라이언트(14) 앞으로 송신하고, 통신망(13)이 비폭주 상태인 경우, 통신망(13)을 통해 RTP 패킷을 클라이언트(14) 앞으로 송신하고, FEC 패킷 송신은 억제한다.
도 12의 플로 차트를 참조하여, 서버 프로그램을 실행하는 서버(12)에 의한 FEC 패킷 송신의 제어 처리를 설명한다.
스텝 S81에서, 서버(12)는 FEC 패킷 송신의 제어 처리에 필요한 데이터를 초기화한다. 예를 들면, 스텝 S81에서, RTT 계측부(85)는 내장하고 있는 타이머의 값을 Oms에 세트한다.
스텝 S82에서, FEC 송신 제어부(86)는 FEC 피드백 패킷을 수신했는지 여부를 판정하고, FEC 피드백 패킷을 수신했다고 판정된 경우, 스텝 S83으로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태의 갱신 처리를 행하여, FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태를 갱신한다. FEC 패킷수 증감 상태의 갱신 처리가 종료되면, 스텝 S82로 되돌아가, FEC 패킷 송신의 제어 처리를 반복한다.
그리고, FEC 패킷수 증감 상태 갱신 처리의 상세한 것은 후술한다.
한편, 스텝 S82에서, FEC 피드백 패킷이 수신 되지 않았다고 판정된 경우, 스텝 S84로 진행하고, RTT 계측부(85)는 RTT 계측 패킷을 수신했는지 여부를 판정한다.
스텝 S84에서, RTT 계측 패킷이 수신되었다고 판정된 경우, 스텝 S85로 진행하고, RTT 계측부(85)는 수신된 RTT 계측 패킷을 기초로, 지연 시간(RTT)을 계산한다. 그리고, 계산된 지연 시간을 기초로, RTT 계측부(85)의 장기 의존 RTT 연산부(103)는 장기 의존 RTT를 계산하고, RTT 계측부(85)의 단기 의존 RTT 연산부(104)는 단기 의존 RTT를 계산한다. RTT 계측부(85)는 계산된 장기 의존 RTT 및 단기 의존 RTT를 FEC 송신 제어부(86)의 폭주/비폭주 판정부(105)에 공급한다.
예를 들면, 스텝 S85에서, RTT 계측부(85)는 식 (1)에 의해 지연 시간을 계산한다.
지연 시간 =
(RTT 계측 패킷의 수신 시각) - RTT 계측 패킷의 송신 시각) … (1)
여기에서, RTT 계측 패킷의 수신 시각은 RTT 계측부(85)가 RTT 계측 패킷을 수신했을 때, 내장하고 있는 RTC(Real Time Clock)로부터 취득한 시각이다. 또, RTT 계측 패킷의 송신 시각은 수신된 RTT 계측 패킷에 저장되어 있는 RTT 계측 패킷의 송신 시각이다.
또, 예를 들면, 스텝 S85에서, RTT 계측부(85)의 장기 의존 RTT 연산부(103)는 식 (2)에 의해 장기 의존 RTT를 계산한다.
장기 의존 RTT =
0.9 × (전회 계산된 장기 의존 RTT) + O.1 × (지연 시간) … (2)
여기에서, 전회 계산된 장기 의존 RTT는 전회의 스텝 S85의 처리에 의해 계산된 장기 의존 RTT이다. 또, 지연 시간은 RTT 계측부(85)에 의해 계산된 지연 시간이다.
또, 예를 들면, 스텝 S85에서, RTT 계측부(85)의 단기 의존 RTT 연산부(104)는 식 (3)에 의해 단기 의존 RTT를 계산한다.
단기 의존 RTT =
O.5 × (전회 계산된 단기 의존 RTT) + 0.5 × (지연 시간) … (3)
여기에서, 전회 계산된 단기 의존 RTT는 전회의 스텝 S85의 처리에 의해 계산된 단기 의존 RTT이다. 또, 지연 시간은 RTT 계측부(85)에 의해 계산된 지연 시간에 있다.
예를 들면, RTT 계측부(85)의 장기 의존 RTT 연산부(103) 및 단기 의존 RTT 연산부(104)는 각각 스텝 S85의 처리에 있어서, 계산된 장기 의존 RTT 및 단기 의존 RTT를 기억하고, 차회의 스텝 S85의 처리에서, 기억되어 있는 장기 의존 RTT 및 단기 의존 RTT를 이용함으로써, 다음의 장기 의존 RTT 및 단기 의존 RTT를 계산한다.
그리고, 장기 의존 RTT는, 예를 들면, 5초간의 평균 지연 시간으로 해도 된다. 또, 단기 의존 RTT는, 예를 들면, 1초간의 평균 지연 시간으로 해도 된다.
스텝 S86에서, FEC 송신 제어부(86)의 폭주/비폭주 판정부(105)는 RTT 계측부(85)로부터 공급된 장기 의존 RTT와 단기 의존 RTT를 비교한다.
예를 들면, 스텝 S86에서, 폭주/비폭주 판정부(105)는 RTT 계측부(85)로부터 공급된 장기 의존 RTT 및 단기 의존 RTT를 기초로, 식 (4)에서 나타내는 계산을 함으로써, 장기 의존 RTT와 단기 의존 RTT를 비교한다.
(단기 의존 RTT)/(장기 의존 RTT) > 1 … (4)
스텝 S87에서, 폭주/비폭주 판정부(105F)는 스텝 S86에서 계산된 식 (4)의 계산 결과를 기초로, 통신망(13)이 폭주 상태인지 여부를 판정한다.
예를 들면, 스텝 S87에서, 폭주/비폭주 판정부(105)는 RTT 계측부(85)로부터 공급된 장기 의존 RTT 및 단기 의존 RTT가 식 (4)를 만족시키는 경우, 통신망(13)이 폭주 상태라고 판정하고, RTT 계측부(85)로부터 공급된 장기 의존 RTT 및 단기 의존 RTT가 식 (4)를 만족시키지 않는 경우, 통신망(13)이 폭주 상태가 아니라고 판정한다.
여기에서, 폭주 상태란, 통신망(13)의 트래픽이 증가하여 패킷의 전송에 지장이 발생하는 상태를 말한다. 예를 들면, 폭주 상태에서는, 정상적으로 패킷의 전송을 할 수 없게 되는 경우가 있다. 폭주 상태인지 여부의 통신망(13) 상태는, 예를 들면, 통신망(13)의 노드에서의 버퍼의 큐 길이에 의해 나타낼 수 있다. 예를 들면, 노드에서의 버퍼의 큐 길이가 긴 경우, 전송되지 않고 전송을 대기하고 있는 패킷이 많으므로, 통신망(13)은 서로 붐비고 있다고 할 수 있다. 역으로, 노드에서의 큐 길이가 짧은 경우, 전송을 대기하는 패킷이 적으므로, 통신망(13)은 붐비고 있지 않다고 할 수 있다.
예를 들면, 버퍼의 큐 길이에 대하여, 소정 임계값을 설정하고, 버퍼에서의 큐 길이가 임계값보다 큰 경우, 폭주 상태라고 판정하고, 버퍼에서의 큐 길이가 임계값보다 작은 경우, 비폭주 상태라고 판정할 수 있다.
통신망(13)에 있어서의 노드의 큐 길이는, 예를 들면, SNMP(Simple Network Management Protocol) 등을 사용하여 관측할 수 있다.
본 출원인이 노드에서의 큐 길이, 장기 의존 RTT, 및 단기 의존 RTT의 측정을 행한 결과, 노드에서의 큐 길이, 장기 의존 RTT, 및 단기 의존 RTT의 사이에는 일정한 관계가 만족되는 것이 인정되었다.
도 13은 노드에서의 큐 길이, 장기 의존 RTT, 및 단기 의존 RTT의 관계를 설명하는 도면이다.
도 13에서, 가로 방향은 시간을 나타낸다. 도 13에서, 실선은 장기 의존 RTT를 나타내고, 점선은 단기 의존 RTT를 나타내고, 일점 쇄선은 노드에서의 큐 길이을 나타낸다.
도 13에서 나타낸 바와 같이, 단기 의존 RTT가 장기 의존 RTT보다 큰 상태로부터, 장기 의존 RTT가 단기 의존 RTT보다 큰 상태로 변화했을 때, 노드에서의 큐 길이가 급격하게 작아지고 있는 것을 알 수 있다. 예를 들면, 도 13의 시각 t52에서, 단기 의존 RTT가 장기 의존 RTT보다 큰 상태로부터, 장기 의존 RTT가 단기 의존 RTT보다 큰 상태로 변화되고, 노드에서의 큐 길이가 급격하게 작아지고 있는 것을 알 수 있다.
역으로 단기 의존 RTT가 장기 의존 RTT보다 작은 상태로부터, 단기 의존 RTT가 장기 의존 RTT보다 큰 상태로 변화했을 때, 노드에서의 큐 길이가 커지고 있는 것을 알 수 있다. 예를 들면, 도 13의 시각 t53에서, 단기 의존 RTT가 장기 의존 RTT보다 작은 상태로부터, 단기 의존 RTT가 장기 의존 RTT보다 큰 상태로 변화했을 때, 노드에서의 큐 길이가 커지고 있는 것을 알 수 있다.
따라서, 단기 의존 RTT가 장기 의존 RTT보다 큰지 여부로, 통신망(13)이 폭주 상태인지 여부를 판정할 수 있다. 환언하면, 장기 의존 RTT 및 단기 의존 RTT에 의해 식 (4)가 만족되는 경우, 통신망(13)은 폭주 상태라고 판정하고, 식 (4)가 만족되지 않은 경우, 통신망(13)은 비폭주 상태라고 판정할 수 있다.
예를 들면, 도 13에서, 시각 t51로부터 시각 t52까지의 기간은 통신망(13)이 폭주 상태라고 판정하고, 시각 t52로부터 시각 t53까지의 기간은 통신망(13)이 비폭주 상태라고 판정할 수 있다.
도 12의 플로 차트로 되돌아가, 스텝 S87에서, 통신망(13)이 폭주 상태라고 판정된 경우, 스텝 S88로 진행하고, 폭주/비폭주 판정부(105)는 통신망(13)이 폭주 상태인 취지를 폭주/비폭주 상태로서 기억하고, FEC 송신 제어부(86)에 통신망(13)이 폭주 상태인 취지의 신호를 공급한다.
그리고, 스텝 S87에서의 판정 처리는 장기 의존 RTT 및 단기 의존 RTT에 따른 것에 한정되지 않고, 예를 들면, 통신망(13)의 트래픽 상태를 관측하는 SNMP, 지터, 또는 패킷의 로스율 등을 사용하여, 폭주 상태인지 여부를 판정하도록 해도 된다.
스텝 S89에서, FEC 송신 제어부(86)는 폭주/비폭주 판정부(105)로부터 통신망(13)이 폭주 상태인 취지의 신호를 취득하면, FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그를 세트한다.
여기에서, FEC 송신 모드란, FEC 패킷을 송신하는 모드이다. 즉, FEC 송신 제어부(86)는 스텝 S87에서, 통신망(13)이 폭주 상태라고 판정된 경우, FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그를 세트함으로써, FEC 송신 모드가 되어, FEC 블록(171)의 송신에서 FEC 패킷이 송신된다.
스텝 S90에서, FEC 송신 제어부(86)는 통신망(13)이 비폭주 상태로부터 폭주 상태로 변화했는지 여부를 판정한다.
예를 들면, 스텝 S90에서, FEC 송신 제어부(86)는 폭주/비폭주 판정부(105)에 기억되어 있는 폭주/비폭주 상태를 참조함으로써, 통신망(13)이 비폭주 상태로부터 폭주 상태로 변화했는지 여부를 판정한다.
또, 예를 들면, 스텝 S90에서, FEC 송신 제어부(86)는 FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그를 기초로, 통신망(13)이 비폭주 상태로부터 폭주 상태로 변화했는지 여부를 판정하도록 해도 된다.
스텝 S90에서, 비폭주 상태로부터 폭주 상태로 변화했다고 판정된 경우, 스텝 S91로 진행하고, FEC 송신 제어부(86)는 스텝 S83의 처리에 의해 갱신되어, FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태를 판독한다.
예를 들면, FEC 패킷수 증감 상태 유지부(87)에는, FEC 패킷수 증감 상태로서의 증가 상태, 유지 상태, 및 삭감 상태의 3개 상태 중, 어느 하나의 상태가 유지되어 있다. 즉, 증가 상태는 서버(12)가 통신망(13)을 통해 클라이언트(14) 앞으로 송신하는 FEC 블록(171)에 포함되는 FEC 패킷의 수를 증가시키는 것을 나타내고, 유지 상태는 서버(12)가 통신망(13)을 통해 클라이언트(14) 앞으로 송신하는 FEC 블록(171)에 포함되는 FEC 패킷의 수를 유지시키는(변화시키지 않는) 것을 나타내고, 삭감 상태는 서버(12)가 통신망(13)을 통해 클라이언트(14) 앞으로 송신하는 FEC 블록(171)에 포함되는 FEC 패킷의 수를 삭감시키는 것을 나타낸다.
그리고, FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태는 통신망(13)을 통해 클라이언트(14)로부터 FEC 피드백 패킷을 수신할 때마다 갱신된다.
스텝 S92에서, FEC 송신 제어부(86)는 판독한 FEC 패킷수 증감 상태를 기초로, FEC 패킷수 변경 처리를 실행한다. FEC 패킷수 변경 처리의 상세한 것은 후술한다.
여기에서, FEC 패킷수란, 서버(12)가 통신망(13)을 통해 클라이언트(14) 앞으로 송신하는 하나의 FEC 블록(171)에 포함되는 FEC 패킷의 수이다. 예를 들면, 도 8에서, 시각 t1로부터 시각 t2까지의 기간에 있어서의 서버(12)의 FEC 패킷수는 2이다.
스텝 S93에서, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 상태를 초기화하고, 처리는 스텝 S82로 되돌아가, FEC 패킷 송신의 제어 처리를 반복한다.
예를 들면, 스텝 S93에서, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태에 유지 상태를 설정함으로써 FEC 패킷수 상태를 초기화한다.
한편, 스텝 S90에서, 비폭주 상태로부터 폭주 상태로 변화했다고 판정되지 않은 경우, 스텝 S91 내지 스텝 S93의 처리는 스킵되고, 처리는 스텝 S82로 되돌아가, FEC 패킷 송신의 제어 처리를 반복한다.
또, 스텝 S87에서, 통신망(13)이 폭주 상태가 아니라고 판정된 경우, 스텝 S94로 진행하고, 폭주/비폭주 판정부(105)는 통신망(13)이 비폭주 상태인 취지를 폭주/비폭주 상태로서 기억하여, FEC 송신 제어부(86)에 통신망(13)이 비폭주 상태인 취지의 신호를 공급한다.
스텝 S95에서, FEC 송신 제어부(86)는 폭주/비폭주 판정부(105)로부터 통신망(13)이 비폭주 상태인 취지의 신호를 취득하면, FEC 송신 모드 기억부(88)에 기억되어 있는 FEC 송신 모드 플래그를 리세트한다. FEC 송신 모드 기억부(88)의 FEC 송신 모드 플래그가 리세트됨으로써, FEC 송신 모드가 아니게 되어, FEC 블록(171)의 송신에서 FEC 패킷은 송신되지 않게 된다.
FEC 송신 제어부(86)가 FEC 송신 모드 플래그를 리세트하면, 처리는 스텝 S82로 되돌아가, FEC 패킷 송신의 제어 처리를 반복한다.
스텝 S84에서, RTT 계측부(85)가 RTT 계측 패킷을 수신하지 않았다고 판정된 경우, 스텝 S96으로 진행하고, RTT 계측부(85)는 내장하고 있는 타이머가 종료되었는지 여부를 판정한다.
예를 들면, 스텝 S96에서, RTT 계측부(85)는 타이머의 값과 10ms 등의 소정값을 비교함으로써, 타이머가 종료되었는지 여부를 판정한다.
스텝 S96에서, 타이머가 종료되어 있지 않다고 판정된 경우, 스텝 S82로 되돌아가, FEC 패킷 송신의 제어 처리를 반복한다.
한편, 스텝 S96에서, 타이머가 종료되었다고 판정된 경우, 스텝 S97로 진행하고, RTT 계측부(85)는 RTT 계측 패킷을 생성하고, 생성한 RTT 계측 패킷을, 통신망(13)을 통해 클라이언트(14) 앞으로 송신한다.
예를 들면, 스텝 S97에서, RTT 계측부(85)는 내장하고 있는 RTC로부터 현재 시각을 취득하고, 도 14에서 나타낸 RTT 계측 패킷을 생성한다.
도 14는 RTT 계측 패킷을 설명하는 도면이다. 버젼 정보, 패딩, 및 SSRC는 도 11에서 나타낸 RTP 패킷의 경우와 동일하므로, 그 설명은 생략한다.
RTT 계측 패킷에서, 패딩에 계속하여 5비트의 서브타입이 배치된다.
RTT 계측 패킷에서, 페이로드 타입은 205가 된다. 페이로드 타입의 다음에 배치되는 16비트의 메시지 길이는 RTT 계측 패킷의 길이(사이즈)를 나타내는 정보이다.
32비트의 SSRC에 계속해서, 32비트의 이름이 배치된다. 이름은, 예를 들면, RTT 계측 패킷을 취급하는 애플리케이션 프로그램의 이름이다.
RTT 계측 패킷에서, 이름 다음에 배치되는 송신 시각은 서버(12)가 클라이언트(14)에게, 그 RTT 계측 패킷을 송신한 시각을 나타낸다. 예를 들면, 송신 시각에는, 스텝 S97에서, RTT 계측부(85)가 내장하고 있는 RTC로부터 취득한 시각이 저장된다.
도 12의 플로 차트로 되돌아가, 스텝 S98에서, RTT 계측부(85)는 내장하고 있는 타이머를 세트하고, 처리는 스텝 S82로 되돌아가, 전술한 처리를 반복한다.
예를 들면, 스텝 S98에서, RTT 계측부(85)는 내장하고 있는 타이머의 값을 0s에 세트한다.
이와 같이 하여, 서버(12)는 FEC 패킷 송신의 제어 처리를 실행한다.
다음에, 도 15의 플로 차트를 참조하여, 도 12의 스텝 S83의 처리에 대응하는 FEC 패킷수 증감 상태의 갱신 처리에 대하여 설명한다.
스텝 S111에서, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태가 증가 상태인지 여부를 판정한다.
스텝 S111에서, FEC 패킷수 증감 상태가 증가 상태라고 판정된 경우, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태의 설정을 갱신하지 않고, FEC 패킷수 증감 상태의 갱신 처리는 종료한다.
한편, 스텝 S111에서, 증가 상태가 아니라고 판정된 경우, 스텝 S112로 진행하고, FEC 송신 제어부(86)는 FEC 패킷의 부족 상태를 나타내는 FEC 피드백 패킷을 수신했는지 여부를 판정한다.
여기에서, FEC 피드백 패킷은 통신망(13)을 통해 클라이언트(14)로부터 송신되어 오는 패킷이다. 예를 들면, 도 8에서, 클라이언트(14)는 시각 t23, 시각 t24, 시각 t25, 및 시각 t26의 각각에서, 통신망(13)을 통해 서버(12) 앞으로 FEC 피드백 패킷을 송신한다.
또, FEC 피드백 패킷에는, 클라이언트(14)에서 수신된 FEC 패킷이 로스 패킷을 복원하는 데 부족 상태인가, 적정 상태인가, 및 과다 상태인가의 어느 쪽인가를 나타내는 통지 FEC 상태가 저장되어 있다.
스텝 S112에서, FEC 패킷의 부족 상태를 나타내는 FEC 피드백 패킷을 수신했다고 판정된 경우, 스텝 S113으로 진행하고, 클라이언트(14)에서, FEC 패킷이 부족하므로, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 유지되어 있는 FEC 패킷수 증감 상태에 증가 상태를 설정하고, 처리는 종료한다.
스텝 S112에서, FEC 패킷의 부족 상태를 나타내는 FEC 피드백 패킷을 수신하고 있지 않다고 판정된 경우, 스텝 S114로 진행하고, FEC 송신 제어부(86)는 FEC 패킷의 과다 상태를 나타내는 FEC 피드백 패킷을 수신했는지 여부를 판정한다.
스텝 S114에서, FEC 패킷의 과다 상태를 나타내는 FEC 피드백 패킷을 수신했다고 판정된 경우, 스텝 S115에서, FEC 송신 제어부(86)는 클라이언트(14)에서 수신된 FEC 패킷이 과다하므로, FEC 패킷수 증감 상태에 삭감 상태를 설정하고, 처리는 종료한다.
또, 스텝 S114에서, FEC 패킷의 과다 상태를 나타내는 FEC 피드백 패킷을 수신하고 있지 않다고 판정된 경우, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태의 갱신을 실시하지 않고, 처리는 종료한다.
즉, FEC 송신 제어부(86)는 도 12의 스텝 S93의 처리에서, FEC 패킷수 증감 상태의 초기화를 행한 다음, RTT 계측 패킷이 수신될 때까지의 기간에 있어서, 한번이라도 FEC의 부족 상태를 나타내는 FEC 피드백 패킷을 수신한 경우, FEC 패킷수 상태를 증가 상태로 설정하고, FEC의 적정 상태를 나타내는 FEC 피드백 패킷만을 수신한 경우, FEC 패킷수 상태를 유지 상태로 설정하고, FEC의 적정 상태를 나타내는 FEC 피드백 패킷 및 FEC의 과다 상태를 나타내는 FEC 피드백 패킷을 수신한 경우, FEC 패킷수 상태를 삭감 상태로 설정한다.
이와 같이 하여, FEC 송신 제어부(86)는 클라이언트(14)로부터 FEC 피드백 패킷을 수신할 때마다, FEC 패킷수 증감 상태의 갱신을 실행한다.
다음에, 도 16의 플로 차트를 참조하여, 도 12의 스텝 S92의 처리에 대응하는 FEC 패킷수 변경 처리에 대하여 설명한다.
스텝 S131에서, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 유지 상태인지 여부를 판정하고, 유지 상태라고 판정된 경우, FEC 송신 제어부(86)는 FEC 패킷수의 변경을 하지 않고, 처리는 종료한다.
한편, 스텝 S131에서, FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 유지 상태가 아니라고 판정된 경우, 스텝 S132로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 증가 상태인지 여부를 판정한다.
스텝 S132에서, 증가 상태라고 판정된 경우, 스텝 S133으로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수 유지부(89)에 유지되어 있는 FEC 패킷수가 상한값인지 여부를 판정한다.
스텝 S133에서, FEC 패킷수가 상한값이 아니라고 판정된 경우, 스텝 S134로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수를 인크리먼트한다.
또, 스텝 S133에서, FEC 패킷수 유지부(89)에 유지되어 있는 FEC 패킷수가 상한값이라고 판정된 경우, FEC 패킷수를 이 이상 증가시킬 수 없기 때문에, FEC 송신 제어부(86)는 FEC 패킷수의 변경을 하지 않고, 처리는 종료한다.
스텝 S132에서, FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 증가 상태가 아니라고 판정된 경우, 스텝 S135로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 삭감 상태인지 여부를 판정한다.
스텝 S135에서, 삭감 상태라고 판정된 경우, 스텝 S136으로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수 유지부(89)에 유지되어 있는 FEC 패킷수가 O인지 여부를 판정한다.
스텝 S136에서, FEC 패킷수가 O이 아니라고 판정된 경우, 스텝 S137로 진행하고, FEC 송신 제어부(86)는 FEC 패킷수를 디크리먼트하고, 처리는 종료한다.
한편, 스텝 S136에서, FEC 패킷수가 0이라고 판정된 경우, FEC 송신 제어부(86)는 이 이상 FEC 패킷수를 삭감할 수 없으므로, FEC 패킷수를 변경하지 않고, 처리는 종료한다.
또, 스텝 S135에서, FEC 패킷수 증감 상태 유지부(87)에 기억되어 있는 FEC 패킷수 증감 상태가 삭감 상태가 아니라고 판정된 경우, FEC 송신 제어부(86)는 FEC 패킷수의 변경을 하지 않고, 처리는 종료한다.
이와 같이 하여, FEC 송신 제어부(86)는 FEC 패킷수 유지부(89)에 유지되어 있는 FEC 패킷수를 변경한다.
도 17의 플로 차트를 참조하여, 클라이언트 프로그램을 실행하는 클라이언트(14)에 의한 디코드의 처리에 대하여 설명한다.
스텝 S151에서, 디코더(134)는 디코드의 처리에 필요한 데이터를 초기화한다. 예를 들면, 스텝 S151에서, 디코더(134)는 500ms의 기간, 대기 상태로 되어 대기하고, 버퍼(133)가 소정 양의 화상 데이터를 기억할 때까지 기다린다.
또, 예를 들면, 화상 데이터의 프레임수가 1초당 30인 경우, 스텝 S151에서, 디코더(134)는 내장하고 있는 타이머의 값을 0ms에 세트하고, 33ms 등의 소정값과 비교함으로써 타이머가 종료되었는지 여부를 판정한다.
스텝 S152에서, 디코더(134)는 타이머의 값을 기초로, 타이머가 종료되었는지 여부를 판정하고, 타이머가 종료되었다고 판정된 경우, 스텝 S153으로 진행하고, 디코더(134)는 버퍼(133)로부터 1 프레임분의 데이터를 취득한다. 스텝 S154에서, 디코더(134)는 스텝 S153의 처리에서 취득한 데이터를 디코드하고, 디코드에 의해 얻어진 화상 데이터를 출력한다.
스텝 S155에서, 디코더(134)는 내장하고 있는 타이머를 세트하고, 스텝 S151로 되돌아가, 디코드 처리를 반복한다. 예를 들면, 스텝 S155에서, 디코더(134)는 타이머의 값을 Oms에 세트한다.
한편, 스텝 S152에서, 타이머가 종료되어 있지 않다고 판정된 경우, 스텝 S156으로 진행하고, RTP 처리부(132F)는 RTP 패킷을 수신했는지 여부를 판정한다.
스텝 S156에서, RTP 패킷을 수신했다고 판정되지 않은 경우, 스텝 S152로 되돌아가, 디코드 처리를 반복한다.
스텝 S156에서, RTP 패킷을 수신했다고 판정된 경우, 스텝 S157로 진행하고, RTP 처리부(132)는 수신된 RTP 패킷을 검사함으로써, 패킷 로스가 발생했는지 여부를 판정한다.
스텝 S157에서, 패킷 로스가 발생했다고 판정된 경우, 스텝 S158로 진행하고, FEC 처리부(135)는 로스 패킷을 복원한다.
예를 들면, 스텝 S158에서, FEC 처리부(135)는 로스된 패킷의 FEC 블록 ID와 동일 FEC 블록 ID를 포함하는 FEC 패킷이 RTP 처리부(132)로부터 공급된 경우, 공급된 FEC 패킷을 기초로, 로스 패킷을 복원하고, 복원된 RTP 패킷을 RTP 처리부(132)에 공급한다.
또, 스텝 S158에서, FEC 패킷이 공급되지 않은 경우 및 공급된 FEC 패킷의 수가 로스 패킷의 수에 대하여 부족한 경우에는, 로스 패킷을 복원할 수 없으므로, FEC 패킷이 부족한 분의 로스 패킷의 복원은 행하지 않는다.
스텝 S157에서, 패킷 로스가 발생하고 있지 않다고 판정된 경우, RTP 패킷을 복원할 필요가 없으므로, 스텝 S158의 처리를 스킵하고, 스텝 S159로 진행한다.
스텝 S159에서, RTP 처리부(132)는 수신된 RTP 패킷 및 복원된 RTP 패킷을 버퍼(133)에 공급하고, 스텝 S152로 되돌아가, 전술한 처리를 반복한다.
이와 같이 하여, 디코더(134)는 디코드의 처리를 실행한다.
다음에, 도 18의 플로 차트를 참조하여, 클라이언트 프로그램을 실행하는 클라이언트(14)에 의한 FEC 피드백 패킷 송신 처리를 설명한다.
스텝 S171에서, 클라이언트(14)는 FEC 피드백 패킷 송신 처리에 필요한 데이터의 초기화를 실행한다. 예를 들면, 스텝 S171에서, FEC 처리부(135)는 후술하는 FEC 블록 정보를 초기화하여, 내장하고 있는 타이머의 값을 0ms로 설정한다
스텝 S172에서, RTP 처리부(132)는 패킷을 수신했는지 여부를 판정한다.
스텝 S172에 있어서, 패킷이 수신되었다고 판정된 경우, 스텝 S173으로 진행하고, RTP 처리부(132)는 수신한 패킷의 FEC 블록 ID가 변화되었는지 여부를 판정한다. 스텝 S173에서, 수신한 패킷의 FEC 블록 ID가 변화되었다고 판정된 경우, 스텝 S174로 진행하고, FEC 처리부(135)는 수신이 완료된 FEC 블록(171)에 대한 FEC 블록 상태의 갱신 처리를 실행한다.
여기에서, 수신이 완료된 FEC 블록(171)이란, 스텝 S173에서, 변화되었다고 판정된 FEC 블록 ID의 하나 전의 FEC 블록 ID를 포함하는 FEC 블록(171)이다. FEC 블록 상태 갱신 처리는 통신망(13)을 통해 서버(12)로부터 송신되어 온 하나의 FEC 블록(171)에 포함되는 패킷의 수와 정상적으로 수신된 패킷의 수를 기초로, 처리가 실행되기 때문에, FEC 블록(171)에 포함되는 모든 패킷의 수신이 완료되었을 때, 처리를 실행할 수 있다.
따라서, 예를 들면, 스텝 S173에서, 수신한 패킷의 FEC 블록 ID가 변화되었는지 여부를 기초로, FEC 블록(171)에 포함되는 모든 패킷의 수신이 완료되었는지 여부를 판정한다.
그리고, 스텝 S174에 있어서의 FEC 블록 상태 갱신 처리의 상세한 것은 후술한다.
스텝 S175에서, RTP 처리부(132)는 수신된 패킷에 포함되는 FEC 블록 ID, 오리지널 데이터 패킷수, 및 총 패킷수를 FEC 블록 정보로서, FEC 블록 정보 유지부(136)에 기록한다.
여기에서, 예를 들면, 오리지널 데이터 패킷수는 도 11에서 나타낸 RTP 패킷의 "K"에 대응하고, 총 패킷수는 도 11에서 나타낸 RTP 패킷의 "N"에 대응한다. 또, FEC 블록 정보는, 예를 들면, 도 9에서 나타낸 FEC 블록 정보 테이블에 기록된다.
도 11에서, "K"로 나타낸 RTP 패킷의 오리지널 데이터 패킷수가 FEC 블록 ID와 대응하여, 도 9에서 나타낸 FEC 블록 정보의 오리지널 데이터 패킷수로서 저장된다. 도 11에서 나타낸 RTP 패킷의 FEC 블록 ID가 도 9의 FEC 블록 정보의 FEC 블록 ID로서 저장된다. 또, 도 11에서, "N"으로 나타낸 총 패킷수가 FEC 블록 ID와 대응하여, 도 9에서 나타낸 FEC 블록 정보의 총 패킷수로서 저장된다.
스텝 S175의 처리에서, 처리의 대상이 되는 수신된 패킷은 스텝 S173의 처리에서, FEC 블록 ID가 변화되었다고 판정된 패킷이다. 즉, 스텝 S174의 처리 대상이 되는 FEC 블록 ID와, 스텝 S175의 처리 대상이 되는 FEC 블록의 FEC 블록 ID와는 상이하다.
스텝 S176에서, RTP 처리부(132)는 FEC 블록 정보 유지부(136)에 기록되어 있는 FEC 블록 정보 테이블의 수신 패킷수에 O을 설정한다.
또, 스텝 S173에서, FEC 블록 ID가 변화되어 있지 않다고 판정된 경우, 스텝 S174 내지 스텝 S176의 처리는 스킵되고, 스텝 S177로 진행한다.
스텝 S177에서, RTP 처리부(132)는 FEC 블록 정보 유지부(136)에 기록되어 있는 FEC 블록 정보 테이블의 수신 패킷수를 인크리먼트하고, 스텝 S172로 되돌아가, FEC 피드백 패킷 송신 처리를 반복한다.
또, 스텝 S172에서, 패킷이 수신되어 있지 않다고 판정된 경우, 스텝 S178로 진행하고, FEC 처리부(135)는 내장하고 있는 타이머가 종료되었는지 여부를 판정한다.
예를 들면, 스텝 S178에서, FEC 처리부(135)는 내장하고 있는 타이머의 값과 10Oms 등의 소정값을 비교함으로써, 타이머가 종료되었는지 여부를 판정한다.
스텝 S178에서, 타이머가 종료되어 있지 않다고 판정된 경우, 스텝 S172로 되돌아가, FEC 피드백 패킷 송신 처리를 반복한다.
스텝 S178에서, 타이머가 종료되었다고 판정된 경우, 스텝 S179로 진행하고, FEC 처리부(135)는 서버(12)에 통지하는 FEC 상태인 통지 FEC 상태 설정의 처리를 실행한다.
예를 들면, 스텝 S179에서, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블에 기록되어 있는 모든 FEC 블록 상태를 기초로, 통지 FEC 상태 설정의 처리를 실행한다. 통지 FEC 상태 설정 처리의 상세한 것은 후술한다.
스텝 S180에서, FEC 처리부(135)의 FEC 피드백 패킷 생성부(153)는 스텝 S179에서, 설정되어 있는 통지 FEC 상태를 기초로, FEC 피드백 패킷을 생성한다.
도 19는 FEC 피드백 패킷을 설명하는 도면이다. 버젼 정보, 패딩, 서브타입, 메시지 길이, SSRC, 및 이름은 도 14로 나타낸 RTT 계측 패킷의 경우와 동일하므로, 그 설명은 생략한다.
FEC 피드백 패킷에서, 페이로드 타입은 204가 된다.
FEC 피드백 패킷에서, 이름 다음에 배치되는 통지 FEC 상태는 상대에게 통지하는 통지 FEC 상태이다. 통지 FEC 상태에는, 예를 들면, 도 18의 스텝 S179의 처리에서, 적정 상태, 과다 상태, 및 부족 상태 중 어느 하나가 설정된 통지 FEC 상태가 저장된다.
도 18의 설명으로 되돌아가, 스텝 S181에서, FEC 피드백 패킷 생성부(153)는 생성된 FEC 피드백 패킷을 통신부(131)에 공급하고, 통신부(131)는 FEC 피드백 패킷 생성부(153)로부터 공급된 FEC 피드백 패킷을, 통신망(13)을 통해 서버(12) 앞으로 송신한다.
스텝 S182에서, FEC 처리부(135)는 내장하고 있는 타이머를 갱신하고, 스텝 S172로 되돌아가, 전술한 처리를 반복한다.
예를 들면, 스텝 S182에서, FEC 처리부(135)는 내장하고 있는 타이머를 0ms에 세트한다.
이와 같이 하여, FEC 처리부(135)는 소정 기간마다 통신망(13)을 통해 서버(12) 앞으로 FEC 피드백 패킷을 송신한다. 그리고, 스텝 S178에서, 타이머의 값과 비교되는 100ms는 도 8에서의 T1, T2, T3, 및 T4에 대응하는 기간의 일례이며, 본 발명을 한정하는 것은 아니다.
다음에, 도 20의 플로 차트를 참조하여, 도 18의 스텝 S174의 처리에 대응하는 수신 완료 FEC 블록(171)에 대한 FEC 블록 상태 갱신 처리에 대하여 설명한다.
스텝 S201에서, RTP 처리부(132)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블에, 수신이 완료된 FEC 블록(171)의 수신 패킷수를 저장(기록)한다.
스텝 S202에서, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블을 기초로, 수신이 완료된 FEC 블록(171)의 수신 패킷수가 오리지널 데이터 패킷수와 동일한지 여부를 판정한다.
스텝 S202에서, 수신 패킷수가 오리지널 데이터 패킷수와 동일하다고 판정된 경우, RTP 패킷을 복원하는 FEC 패킷의 수는 부족하지도 않고, 과다하지도 않으므로, 스텝 S203으로 진행하고, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블의 FEC 블록 상태에 적정 상태를 설정하고, 처리는 종료한다.
스텝 S202에서, 수신 패킷수가 오리지널 데이터 패킷수와 동일하지 않다고 판정된 경우, 스텝 S204로 진행하고, FEC 처리부(135)는 수신 패킷수가 오리지널 패킷수보다 많은지 여부를 판정한다.
스텝 S204에서, 수신 패킷수가 오리지널 데이터 패킷수보다 많다고 판정된 경우, RTP 패킷을 복원하는 FEC 패킷의 수가 과다하므로, 스텝 S205로 진행하고, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블의 FEC 블록 상태에 과다 상태를 설정하고, 처리는 종료한다.
스텝 S204에서, 수신 패킷수가 오리지널 데이터 패킷수보다 많다고 판정되지 않은 경우, 스텝 S206으로 진행하고, FEC 처리부(135)는 수신 패킷수가 오리지널 패킷수보다 적은지 여부를 판정한다.
스텝 S206에서, 수신 패킷수가 오리지널 데이터 패킷수보다 적다고 판정된 경우, RTP 패킷을 복원하는 FEC 패킷의 수가 부족하므로, 스텝 S207로 진행하고, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블의 FEC 블록 상태에 부족 상태를 설정하고, 처리는 종료한다.
한편, 스텝 S206에서, 수신 패킷수가 오리지널 데이터 패킷수보다 적다고 판정되지 않은 경우, 스텝 S208로 진행하고, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블의 FEC 블록 상태에 적정 상태를 설정하고, 처리는 종료한다.
이와 같이 하여, FEC 처리부(135)는 FEC 블록(171)의 수신이 완료될 때마다 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 상태를 갱신한다.
그리고, 스텝 S206의 판정 처리를 생략하고, FEC 블록 상태를 부족 상태로 설정하도록 해도 된다.
다음에, 도 21의 플로 차트를 참조하여, 도 18의 스텝 S179의 처리에 대응하는 통지 FEC 블록 상태 설정의 처리에 대하여 설명한다.
스텝 S221에서, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 브로즈크 정보 테이블에 기록되어 있는 FEC 블록 ID마다의 FEC 상태 중에, 부족 상태인 FEC 블록(171)이 있는지 여부를 판정한다.
스텝 S221에서, 부족 상태인 FEC 블록(171)이 있다고 판정된 경우, 스텝 S222로 진행하고, FEC 처리부(135)는 통지 FEC 상태 유지부(137)에 유지되어 있는 통지 FEC 상태에 부족 상태를 설정한다. 스텝 S223에서, FEC 블록 정보를 초기화하고, 처리는 종료한다.
예를 들면, 스텝 S223에서, FEC 처리부(135)는 FEC 정보 테이블에 기록되어 있는 FEC 블록 정보의 모두를 클리어함으로써 초기화를 실행한다.
또, 스텝 S221에서, FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블에 기록되어 있는 FEC 블록 ID마다의 FEC 상태 중에, 부족 상태인 FEC 블록(171)이 없다고 판정된 경우, 스텝 S224로 진행하고, FEC 처리부(135)는 FEC 블록 ID마다의 FEC 상태 중에, 과다 상태인 FEC 블록(171)이 있는지 여부를 판정한다.
스텝 S224에서, 과다 상태인 FEC 블록(171)이 있다고 판정된 경우, 스텝 S225로 진행하고, FEC 처리부(135F)는 통지 FEC 상태 유지부(137)에 유지되어 있는 통지 FEC 상태에 과다 상태를 설정하고, 스텝 S223으로 진행한다.
스텝 S224에서, 과다 상태인 FEC 블록(171)이 없다고 판정된 경우, 스텝 S226으로 진행하고, FEC 처리부(135)는 통지 FEC 상태 유지부(137)에 유지되어 있는 통지 FEC 상태에 적정 상태를 설정하고, 스텝 S223으로 진행한다.
즉, FEC 처리부(135)는 FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 정보 테이블에 기록되어 있는 FEC 블록 상태 중에, 하나라도 부족 상태인 FEC 블록(171)이 있는 경우, 통지 FEC 상태를 부족 상태로 설정하고, 모든 FEC 블록(171)이 적정 상태인 경우, 통지 FEC 상태를 적정 상태로 설정하고, 부족 상태인 FEC 블록(171)이 없고, 과다 상태인 FEC 블록(171)이 있는 경우, 통지 FEC 상태를 과다 상태로 설정한다.
이와 같이 하여, FEC 처리부(135)는 소정 기간마다, FEC 블록 정보 유지부(136)에 유지되어 있는 FEC 블록 ID마다의 FEC 블록 상태를 기초로, 서버(12)에 통지하는 통지 FEC 상태를 설정한다.
도 22의 플로 차트를 참조하여, RTT 계측 패킷의 회신 처리를 설명한다. 스텝 S241에서, RTT 계측부(138)는 통신부(131)가 패킷을 수신한 경우에, 통신부(131)로부터 공급된 패킷을 기초로, RTT 계측 패킷을 수신했는지 여부를 판정하고, RTT 계측 패킷을 수신하고 있지 않다고 판정된 경우, 스텝 S241로 되돌아가, RTT 계측 패킷이 수신될 때까지, 판정의 처리를 반복한다.
스텝 S241에서, RTT 계측 패킷을 수신했다고 판정된 경우, 스텝 S242로 진행하고, RTT 계측부(138)는 즉시 수신한 RTT 계측 패킷의 데이터부와 동일한 데이터부의 RTT 계측 패킷을 생성하고, 생성한 RTT 계측 패킷을 통신부(13l)에 공급한다. 그리고, RTT 계측부(138)는 통신부(131)에 통신망(13)을 통해 RTT 계측 패킷을 서버(12) 앞으로 즉시 송신시키고, 스텝 S241로 되돌아가, 전술한 처리를 반복한다.
이와 같이, 클라이언트(14)는 RTT 계측 패킷을 수신하면, 즉시, 서버(12)에 RTT 계측 패킷을 반송한다.
이상과 같이, 서버(12)는 클라이언트(14)로부터 송신되어 온 FEC 피드백 패킷을 기초로, 클라이언트(14)에게 송신하는 FEC 패킷의 수를 변경하고, 또한, 통신망(13)이 폭주 상태인 경우, FEC 패킷을 클라이언트(14)에게 송신하고, 통신망(13)이 폭주 상태가 아닌 경우, FEC 패킷의 클라이언트(14)에의 송신을 억제함으로써, 보다 효율적으로 데이터의 송신을 실행할 수 있다.
제1 본 발명에 의하면, 에러 정정 패킷을 생성하도록 했으므로, 에러 정정을 위한 용장 데이터를 송신할 수 있다. 또, 제1 본 발명에 의하면, 통신망이 폭주 상태인지 여부를 판정하여 에러 정정 패킷을 생성하고, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 에러 정정 패킷의 수를 변경하도록 생성을 제어하도록 했으므로, 통신망의 상태에 따라, 용장 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행할 수 있다.
제2 본 발명에 의하면, 에러 정정 패킷을 수신하도록 했으므로, 수신한 데이터의 에러를 정정할 수 있다. 또, 제2 본 발명에 의하면, 에러 정정 패킷을 수신하고, 수신한 에러 정정 패킷의 수가 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하도록 했으므로, 송신측에서, 통신망의 상태에 따라, 용장 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행할 수 있다.
전술한 일련의 처리는 하드웨어에 의해 실행시킬 수도 있지만, 소프트웨어에 의해 실행시킬 수도 있다. 일련의 처리를 소프트웨어에 의해 실행시키는 경우에는, 그 소프트웨어를 구성하는 프로그램이 전용 하드웨어에 내장되어 있는 컴퓨터, 또는 각종 프로그램을 인스톨함으로써, 각종 기능을 실행하는 것이 가능한, 예를 들면 범용의 퍼스널 컴퓨터 등에 기록 매체로부터 인스톨된다.
이 기록 매체는 도 5에 나타낸 바와 같이, 컴퓨터와는 별도로, 사용자에게 프로그램을 제공하기 위해 배포되는, 프로그램이 기록되어 있는 자기 디스크(51)(플렉시블 디스크를 포함함), 광 디스크(52)[CD-R0M(Compact Disc-Read 0nly Memory), DVD(Digital Versatile Disc)를 포함함], 광자기 디스크(53)[MD(Mini-Disc)(상표)를 포함함], 또는 반도체 메모리(54) 등으로 이루어지는 패키지 미디어에 의해 구성될 뿐만 아니라, 컴퓨터에 미리 내장된 상태로 사용자에게 제공되는, 프로그램이 기록되어 있는 R0M(32)이나, 기록부(38)에 포함되는 하드 디스크 등으로 구성된다.
그리고, 전술한 일련의 처리를 실행시키는 프로그램은 필요에 따라 라우터, 모뎀 등의 인터페이스를 통해 로컬 에리어 네트워크, 인터넷, 디지털 위성 방송이라고 하는, 유선 또는 무선의 통신 매체를 통해 컴퓨터에 인스톨되도록 해도 된다.
또, 본 명세서에서, 기록 매체에 저장되는 프로그램을 기술하는 스텝은 기재된 순서로 따라 시계열적으로 행해지는 처리는 물론, 반드시 시계열적으로 처리되지 않아도, 병렬적 또는 개별적으로 실행되는 처리도 포함하는 것이다.
그리고, 본 명세서에서, 시스템이란, 복수개의 장치에 의해 구성되는 장치 전체를 나타내는 것이다.
제1 본 발명에 의하면, 에러 정정을 위한 용장 데이터를 송신할 수 있다. 또, 제1 본 발명에 의하면, 통신망 상태에 따라, 용장 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행할 수 있다.
제2 본 발명에 의하면, 수신한 데이터의 에러를 정정할 수 있다. 또, 제2 본 발명에 의하면, 송신측에서, 통신망 상태에 따라, 용장 데이터를 포함하는 데이터의 송신을 보다 효율적으로 실행할 수 있다.
도 1은 종래의 FEC 패킷 송신을 설명하는 도면이다.
도 2는 종래의 FEC 패킷 송신의 순서를 설명하는 도면이다.
도 3은 종래의 FEC 패킷을 부가한 송신 처리를 설명하는 플로 차트이다.
도 4는 본 발명에 관한 통신 시스템의 일 실시예를 나타낸 도면이다.
도 5는 서버 구성의 예를 나타낸 블록도이다.
도 6은 서버 기능의 구성을 나타낸 블록도이다.
도 7은 클라이언트 기능의 구성을 나타낸 블록도이다.
도 8은 FEC 패킷 송신을 설명하는 타임 차트이다.
도 9는 FEC 블록 정보를 설명하는 도면이다.
도 10은 데이터 송신 처리를 설명하는 플로 차트이다.
도 11은 RTP 패킷을 설명하는 도면이다.
도 12는 FEC 패킷 송신의 제어 처리를 설명하는 플로 차트이다.
도 13은 폭주 상태, 장기 의존 RTT 및 단기 의존 RTT의 관계를 설명하는 도면이다.
도 14는 RTT 계측 패킷을 설명하는 도면이다.
도 15는 FEC 패킷수 증감 상태의 갱신 처리를 설명하는 플로 차트이다.
도 16은 FEC 패킷수 변경 처리를 설명하는 플로 차트이다.
도 17은 디코드의 처리를 설명하는 플로 차트이다.
도 18은 FEC 피드백 패킷 송신 처리를 설명하는 플로 차트이다.
도 19는 FEC 피드백 패킷을 설명하는 도면이다.
도 20은 수신 완료 블록에 대한 FEC 블록 상태 갱신 처리를 설명하는 플로 차트이다.
도 21은 통지 FEC 상태 설정 처리를 설명하는 플로 차트이다.
도 22는 RTT 계측 패킷의 회신 처리를 설명하는 플로 차트이다.
<도면의 주요 부분에 대한 부호의 설명>
31: CPU 32: ROM
33: RAM 38: 기록부
51: 자기 디스크 52: 광 디스크
53: 광자기 디스크 54: 반도체 메모리
83: RTT 패킷 생성부 84: FEC 패킷 생성부
85: RTT 계측부 86: FEC 송신 제어부
87: FEC 패킷수 증감 상태 유지부 88: FEC 송신 모드 기억부
89: FEC 패킷수 유지부 132: RTP 처리부
135: FEC 처리부 136: FEC 블록 정보 유지부
137: 통지 FEC 상태 유지부

Claims (15)

  1. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 송신하는 송신 장치에 있어서,
    상기 통신망이 폭주(輻輳) 상태인지 여부를 판정하는 판정 수단과,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 수단과,
    폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 상기 에러 정정 패킷의 수를 변경하도록 상기 생성 수단에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 제어 수단
    을 포함하는 것을 특징으로 하는 송신 장치.
  2. 제1항에 있어서,
    상기 제어 수단은, 폭주 상태라고 판정된 경우, 상기 생성 수단에 소정 수의 상기 에러 정정 패킷을 생성시키고, 폭주 상태가 아니라고 판정된 경우, 상기 생성 수단의 상기 에러 정정 패킷의 생성을 억제하도록 상기 생성 수단에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 것을 특징으로 하는 송신 장치.
  3. 제1항에 있어서,
    상기 제어 수단은, 폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 직전의 폭주 상태에 있어서의 상기 송신 패킷의 수신 상태를 기초로, 상기 에러 정정 패킷의 수를 변경하도록 상기 생성 수단에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 것을 특징으로 하는 송신 장치.
  4. 제1항에 있어서,
    상기 제어 수단은, 소정 기간에 있어서의 1개 또는 복수개의 상기 송신 패킷으로 이루어지는 에러 정정 단위로서, 소정 기간에 있어서의 1개 또는 복수개의 에러 정정 단위의 수신 상태를 기초로, 상기 기간에 있어서의 1개 또는 복수개의 상기 에러 정정 단위의 어느 하나에 있어서, 상기 에러 정정 패킷의 수가 부족한 경우, 상기 에러 정정 패킷의 수를 증가시키도록, 상기 생성 수단에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 것을 특징으로 하는 송신 장치.
  5. 제1항에 있어서,
    상기 판정 수단은, 제1 시각으로부터 현재 시각까지의 기간에 있어서의 상기 송신 패킷의 상대에의 전송에 요하는 지연 시간에 의존하는 단기 의존 지연 시간과, 상기 제1 시각보다 과거의 제2 시각으로부터 현재 시각까지의 기간에 있어서의 상기 송신 패킷의 상대에의 전송에 요하는 지연 시간에 의존하는 장기 의존 지연 시간을 기초로, 폭주 상태인지 여부를 판정하는 것을 특징으로 하는 송신 장치.
  6. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 송신하는 송신 방법에 있어서,
    상기 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과,
    폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 상기 에러 정정 패킷의 수를 변경하도록 상기 생성 스텝에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 제어 스텝
    을 포함하는 것을 특징으로 하는 송신 방법.
  7. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 송신하는 송신 처리용 프로그램이 기록되어 있는 매체로서,
    상기 프로그램이
    상기 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과,
    폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 상기 에러 정정 패킷의 수를 변경하도록 상기 생성 스텝에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 제어 스텝
    을 포함하는 것을 특징으로 하는 컴퓨터가 판독 가능한 프로그램인 기록 매체.
  8. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 송신하는 송신 처리를 컴퓨터에 실행시키는 프로그램에 있어서,
    상기 통신망이 폭주 상태인지 여부를 판정하는 판정 스텝과,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 생성하는 생성 스텝과,
    폭주 상태가 아닌 취지의 판정 결과로부터 폭주 상태인 취지의 판정 결과로 변화된 경우, 상기 에러 정정 패킷의 수를 변경하도록 상기 생성 스텝에 있어서의 상기 에러 정정 패킷의 생성을 제어하는 제어 스텝
    을 포함하는 것을 특징으로 하는 프로그램.
  9. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 수신하는 수신 장치에 있어서,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 수단과,
    수신된 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 수단
    을 포함하는 것을 특징으로 하는 수신 장치.
  10. 제9항에 있어서,
    상기 판정 수단은 수신된 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하는 것을 특징으로 하는 수신 장치.
  11. 제9항에 있어서,
    상기 판정 수단은 1개 또는 복수개의 상기 송신 패킷으로 이루어지는 에러 정정 단위마다, 수신된 상기 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 부족한가, 적정한가, 및 과다한가의 어느 쪽 인가를 판정하고,
    소정 기간에 있어서의 1개 또는 복수개의 상기 에러 정정 단위에 대한 상기 판정 결과를 기초로, 상기 기간에 있어서의 1개 또는 복수개의 상기 에러 정정 단위의 어느 하나에 있어서, 상기 에러 정정 패킷의 수가 부족하다고 판정된 경우, 상대에의 통지에 상기 에러 정정 패킷의 수가 부족하다는 취지를 설정하는 설정 수단을 추가로 포함하는 것을 특징으로 하는 수신 장치.
  12. 제9항에 있어서,
    상기 판정 결과에 따른 통지를 저장하는 피드백 패킷을 생성하는 생성 수단과,
    상기 생성 수단에 의해 생성된 상기 피드백 패킷의 상대에의 송신을 제어하는 송신 제어 수단을 추가로 포함하는 것을 특징으로 하는 수신 장치.
  13. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 수신하는 수신 방법에 있어서,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과,
    상기 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝
    을 포함하는 것을 특징으로 하는 수신 방법.
  14. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 수신하는 수신 처리용 프로그램이 기록된 기록 매체로서,
    상기 프로그램이
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과,
    상기 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝
    을 포함하는 것을 특징으로 하는 컴퓨터가 판독 가능한 프로그램인 기록 매체.
  15. 통신망을 통해 스트리밍 데이터가 저장되어 있는 송신 패킷을 수신하는 수신 처리를 컴퓨터에 실행시키는 프로그램에 있어서,
    상기 송신 패킷에 저장되어 있는 상기 스트리밍 데이터의 에러를 정정하기 위한 에러 정정 데이터가 저장되어 있는 에러 정정 패킷을 수신하는 수신 제어 스텝과,
    상기 수신 제어 스텝에서 수신된 에러 정정 패킷의 수가 상기 스트리밍 데이터의 에러를 정정하는 데 적정한지 여부를 판정하는 판정 스텝
    을 포함하는 것을 특징으로 하는 프로그램.
KR1020040103604A 2003-12-10 2004-12-09 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램 KR20050056886A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00412459 2003-12-10
JP2003412459A JP4349114B2 (ja) 2003-12-10 2003-12-10 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム

Publications (1)

Publication Number Publication Date
KR20050056886A true KR20050056886A (ko) 2005-06-16

Family

ID=34732895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040103604A KR20050056886A (ko) 2003-12-10 2004-12-09 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램

Country Status (4)

Country Link
US (1) US7539925B2 (ko)
JP (1) JP4349114B2 (ko)
KR (1) KR20050056886A (ko)
CN (1) CN100377516C (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531078A (ja) * 2003-07-16 2007-11-01 ハンヤン ハク ウォン カンパニー,リミテッド 3次元メッシュ情報の符号化及び復号化方法並びにその装置
US7904781B2 (en) * 2004-12-09 2011-03-08 Mitsubishi Electric Corporation Data transmitting device, data receiving device, and data distribution system
JP4513725B2 (ja) 2005-11-09 2010-07-28 ソニー株式会社 パケット送信装置、通信システム及びプログラム
US7730385B2 (en) * 2005-11-30 2010-06-01 Motorola, Inc. Method for decoding a received control channel message with a priori information
JP2007201756A (ja) * 2006-01-26 2007-08-09 Sony Corp 情報処理装置および方法、並びにプログラム
US7787377B2 (en) * 2006-02-03 2010-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Selective redundancy for Voice over Internet transmissions
US7577898B2 (en) * 2006-04-10 2009-08-18 At&T Intellectual Property I, L.P. System and method of correcting video data errors
JP4724613B2 (ja) * 2006-07-04 2011-07-13 富士通株式会社 通信装置、通信制御プログラム及び通信制御方法
CN101512989B (zh) 2006-07-25 2013-08-14 汤姆森特许公司 利用交错播放和交叉分组前向纠错在基于因特网协议的无线网络中恢复突发分组丢失
US8300563B2 (en) * 2006-09-29 2012-10-30 Intel Corporation Aggregated transmission in WLAN systems with FEC MPDUs
CN1937631B (zh) * 2006-10-24 2010-12-08 杭州华三通信技术有限公司 用户数据报协议报文的处理方法及装置
JP4250654B2 (ja) * 2006-11-17 2009-04-08 株式会社東芝 通信装置、通信方法および通信プログラム
CN101563874B (zh) * 2006-12-21 2012-05-23 汤姆森许可贸易公司 支持对因特网协议网络上的音频以及视频数据进行前向纠错的方法
JP4356742B2 (ja) 2006-12-25 2009-11-04 ソニー株式会社 データ通信システム、データ送信装置およびデータ送信方法
KR101177454B1 (ko) * 2007-03-02 2012-08-27 삼성전자주식회사 영상 데이터의 전송에 따른 에러 복원 결정을 위한 서버 및클라이언트와, 영상 데이터의 전송에 따른 에러 복원결정방법
JP4434242B2 (ja) * 2007-07-11 2010-03-17 ソニー株式会社 送信装置、受信装置、誤り訂正システム、送信方法及び誤り訂正方法
EP2019522B1 (en) * 2007-07-23 2018-08-15 Polycom, Inc. Apparatus and method for lost packet recovery with congestion avoidance
JP5075536B2 (ja) * 2007-09-03 2012-11-21 株式会社東芝 Fec送信処理装置、ならびにfec送信処理のための方法およびプログラム
CN101478442B (zh) * 2008-01-02 2011-11-30 中兴通讯股份有限公司 组网模拟测试的工具、系统和方法
US8839339B2 (en) * 2008-04-15 2014-09-16 International Business Machines Corporation Blade center KVM distribution
JP5094593B2 (ja) * 2008-06-27 2012-12-12 キヤノン株式会社 送信装置、受信装置、及び方法、プログラム
JP5444647B2 (ja) * 2008-07-01 2014-03-19 富士通株式会社 データ転送装置、データ転送方法及びデータ転送プログラム
JP5191826B2 (ja) * 2008-07-04 2013-05-08 パナソニック株式会社 ストリーム通信装置、ストリーム通信方法及びストリーム通信システム
JP5135121B2 (ja) * 2008-08-22 2013-01-30 株式会社東芝 データ受信装置、データ受信方法、及びデータ受信プログラム
US8489954B2 (en) * 2008-08-29 2013-07-16 Ntt Docomo, Inc. Method and apparatus for reliable media transport
JP5724879B2 (ja) 2009-11-24 2015-05-27 日本電気株式会社 品質制御装置、動画送信システム、品質制御方法および記録媒体
JP2010119133A (ja) * 2010-01-28 2010-05-27 Sony Corp パケット送信装置、通信システム及びプログラム
US8397140B2 (en) * 2010-06-04 2013-03-12 Apple Inc. Error correction coding for recovering multiple packets in a group view of limited bandwidth
US10498359B2 (en) 2011-07-14 2019-12-03 Microsoft Technology Licensing, Llc Correction data
GB2492830B (en) 2011-07-14 2018-06-27 Skype Correction data
KR102027916B1 (ko) 2012-02-27 2019-10-02 삼성전자주식회사 순방향 오류정정스킴을 사용하는 패킷 송수신 장치 및 방법
CN103686055B (zh) * 2012-09-24 2017-05-10 中兴通讯股份有限公司 电视会议系统中丢包补偿的处理方法及装置
JP2013085293A (ja) * 2013-01-11 2013-05-09 Thomson Licensing インターネットプロトコルネットワークでのリアルタイムのオーディオ及びビデオデータの前方誤り訂正をサポートする方法
EP2827522A1 (en) * 2013-07-15 2015-01-21 Alcatel Lucent Method for a first network node for transmitting or retransmitting data to a second network node and first network node thereof and method for a second network node for receiving data transmitted or retransmitted from a first network node and second network node thereof
WO2016203870A1 (ja) * 2015-06-17 2016-12-22 ソニー株式会社 送信装置、送信方法、及び通信システム
GB2535819B (en) * 2015-07-31 2017-05-17 Imagination Tech Ltd Monitoring network conditions
CN107181968B (zh) * 2016-03-11 2019-11-19 腾讯科技(深圳)有限公司 一种视频数据的冗余控制方法和装置
CN107769887B (zh) * 2016-08-17 2021-02-12 华为技术有限公司 一种数据传输、数据处理方法及装置
US10784986B2 (en) * 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
CN107241166A (zh) * 2017-06-12 2017-10-10 京信通信系统(中国)有限公司 一种长期演进上的语音Volte数据保障方法和设备
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
JP7338172B2 (ja) * 2019-03-04 2023-09-05 日本電信電話株式会社 無線通信システムおよび無線通信方法
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313454A (en) * 1992-04-01 1994-05-17 Stratacom, Inc. Congestion control for cell networks
US5696764A (en) * 1993-07-21 1997-12-09 Fujitsu Limited ATM exchange for monitoring congestion and allocating and transmitting bandwidth-guaranteed and non-bandwidth-guaranteed connection calls
US5426635A (en) * 1993-09-08 1995-06-20 At&T Corp. Method for adaptive control of windows and rates in networks
JP2576776B2 (ja) * 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
JP3227133B2 (ja) * 1994-07-21 2001-11-12 富士通株式会社 Atm交換機
US5600663A (en) 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
JP3614907B2 (ja) * 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
CN1082289C (zh) * 1995-03-16 2002-04-03 东芝株式会社 数据通信装置及方法
JP2768297B2 (ja) * 1995-03-23 1998-06-25 日本電気株式会社 データ転送方法とその装置
JP3307792B2 (ja) * 1995-04-13 2002-07-24 株式会社日立製作所 Atmスイッチおよびatm−lanにおける輻輳制御方式
US5732078A (en) * 1996-01-16 1998-03-24 Bell Communications Research, Inc. On-demand guaranteed bandwidth service for internet access points using supplemental user-allocatable bandwidth network
US5699365A (en) * 1996-03-27 1997-12-16 Motorola, Inc. Apparatus and method for adaptive forward error correction in data communications
US6310857B1 (en) * 1997-06-16 2001-10-30 At&T Corp. Method and apparatus for smoothing and multiplexing video data flows
US6424624B1 (en) * 1997-10-16 2002-07-23 Cisco Technology, Inc. Method and system for implementing congestion detection and flow control in high speed digital network
US6882624B1 (en) * 1998-04-09 2005-04-19 Nokia Networks Oy Congestion and overload control in a packet switched network
JP3556495B2 (ja) * 1998-12-15 2004-08-18 株式会社東芝 パケットスイッチ及びパケット交換方法
US6996097B1 (en) * 1999-05-21 2006-02-07 Microsoft Corporation Receiver-driven layered error correction multicast over heterogeneous packet networks
KR100833222B1 (ko) 2000-03-29 2008-05-28 삼성전자주식회사 멀티미디어 송수신 장치 및 방법
US7095729B2 (en) * 2000-12-22 2006-08-22 Intel Corporation Method for multimedia communication over packet channels
US7099273B2 (en) * 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system
US7035220B1 (en) * 2001-10-22 2006-04-25 Intel Corporation Technique for providing end-to-end congestion control with no feedback from a lossless network
KR100408525B1 (ko) * 2001-10-31 2003-12-06 삼성전자주식회사 네트워크에 적응적인 실시간 멀티미디어 스트리밍 시스템및 방법
JP3757857B2 (ja) * 2001-12-12 2006-03-22 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
WO2003061179A1 (en) * 2001-12-28 2003-07-24 Koninklijke Philips Electronics N.V. Unequal error protection using forward error correction based on reed-solomon codes
US7447148B2 (en) 2003-10-28 2008-11-04 Ntt Docomo, Inc. Method for supporting scalable and reliable multicast in TDMA/TDD systems using feedback suppression techniques

Also Published As

Publication number Publication date
CN1638321A (zh) 2005-07-13
CN100377516C (zh) 2008-03-26
US20050160346A1 (en) 2005-07-21
JP4349114B2 (ja) 2009-10-21
US7539925B2 (en) 2009-05-26
JP2005175837A (ja) 2005-06-30

Similar Documents

Publication Publication Date Title
KR20050056886A (ko) 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램
JP5442816B2 (ja) 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
US11750227B2 (en) Method and device for transmitting a data stream with selectable ratio of error correction packets to data packets
KR100680671B1 (ko) 에러 정정용 데이터의 생성 방법 및 생성 장치와 생성 프로그램을 저장한 컴퓨터 판독가능한 기록 매체
JP4173755B2 (ja) データ伝送サーバ
JP6893237B2 (ja) データストリーミングの前方誤り訂正
JP5141197B2 (ja) 符号化装置
JP2005136546A (ja) 送信装置および方法、記録媒体、並びにプログラム
JP5778672B2 (ja) バックワードルッキングロバストヘッダ圧縮レシーバ
JP3798387B2 (ja) Fec符号化方式に基づいた可変長パケット送信方法及び受信方法
KR101286912B1 (ko) 3차원 저장장치를 이용한 가변길이 패킷의 fec 인코딩 및 fec 디코딩 방법
US9781488B2 (en) Controlled adaptive rate switching system and method for media streaming over IP networks
JP5021765B2 (ja) 逆方向リンクおよび順方向リンクのビデオデータエラーを区別するエラーフィルタ
EP2779567A2 (en) Generating a plurality of media data streams
WO2011091769A1 (zh) 一种纠错校验方法、设备和系统
JP5094546B2 (ja) 通信装置、及び通信方法、プログラム
JP2002141945A (ja) データ送信装置、およびデータ送信方法、並びにプログラム記憶媒体
KR20030045643A (ko) 데이터 통신 시스템, 데이터 송신 장치, 데이터 수신 장치, 데이터 통신 방법, 및 컴퓨터 프로그램 기록 매체
JPH11225161A (ja) データ処理方法およびデータ処理装置
JP5344541B2 (ja) データ送信装置、送信方法及びプログラム
JP2004282538A (ja) 送受信システム、送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
JP3730977B2 (ja) データ伝送方法およびデータ処理方法
JP4395040B2 (ja) 通信装置及びエラー訂正パケット挿入割合制御方法
WO2016203870A1 (ja) 送信装置、送信方法、及び通信システム
JP2005341203A (ja) 受信装置及び受信再生方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid