KR20130125813A - 유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩 - Google Patents

유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩 Download PDF

Info

Publication number
KR20130125813A
KR20130125813A KR1020137023975A KR20137023975A KR20130125813A KR 20130125813 A KR20130125813 A KR 20130125813A KR 1020137023975 A KR1020137023975 A KR 1020137023975A KR 20137023975 A KR20137023975 A KR 20137023975A KR 20130125813 A KR20130125813 A KR 20130125813A
Authority
KR
South Korea
Prior art keywords
source
symbols
encoding
block
blocks
Prior art date
Application number
KR1020137023975A
Other languages
English (en)
Other versions
KR101554406B1 (ko
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 KR20130125813A publication Critical patent/KR20130125813A/ko
Application granted granted Critical
Publication of KR101554406B1 publication Critical patent/KR101554406B1/ko

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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • 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
    • H04L1/0042Encoding specially adapted to other signal generation operation, e.g. in order to reduce transmit distortions, jitter, or to improve signal shape
    • 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
    • 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/007Unequal error protection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0083Formatting with frames or packets; Protocol or part of protocol for error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0086Unequal error protection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Abstract

소스 블록들의 적어도 하나의 쌍은 소스 블록들이 상기 쌍의 소스 블록들 양쪽 모두와 공통인 적어도 하나의 기본 블록 및 상기 쌍의 다른 소스 블록과 공통이 아닌 적어도 하나의 기본 블록을 가지도록, 소스 심볼들을 기본 블록들에 할당하며, 기본 블록들을 소스 블록들에 할당하고 각각의 소스 블록을 인코딩 심볼들로 인코딩함으로써 데이터는 인코딩될 수 있다. 소스 블록의 인코딩은 다른 소스 블록들의 콘텐츠와는 독립적일 수 있다. 제 1 소스 블록으로부터의 인코딩 심볼들의 양이 제 1 소스 블록에서의 소스 데이터의 양보다 적고 제 2 소스 블록에 대해서도 마찬가지인 소망의 세트의 원래의 소스 심볼들의 모두를 복구하기 위한 디코딩은 복수의 소스 블록들로부터의 인코딩 심볼들의 세트로부터 행해질 수 있다.

Description

유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩{ENCODING AND DECODING USING ELASTIC CODES WITH FLEXIBLE SOURCE BLOCK MAPPING}
상호 참조
본 특허 출원은, 각각이 본원과 동시에 출원되었으며, 본원의 양수인에게 양도되었고, 본원에 참조에 의해 명시적으로 통합된 다음의 동시계류중인 미국 특허 출원들에 관련된다:
Mark Watson 등의 발명 명칭이 "Framing for an Improved Radio Link Protocol Including FEC"이고 대리인 사건 번호 092888U1인 미국 특허 출원; 및
Michael G. Luby 등의 발명 명칭이 "Forward Error Correction Scheduling for an Improved Radio Link Protocol"이고 대리인 사건 번호 092888U2인 미국 특허 출원.
다음의 발행 특허들은 모든 목적들을 위해 본원에 참조에 의해 명시적으로 통합된다:
Shokrollahi 등의 발명 명칭이 "Systematic Encoding and Decoding of Chain Reaction Codes"인 2005년 6월 21일자로 발행된 미국특허 제6,909,383호 (이하 "Shokrollahi-체계적(Systematic)"); 및
Shokrollahi 등의 발명 명칭이 "Systems and Processes for Decoding Chain Reaction Codes Through Inactivation"인 2005년 2월 15일자로 발행된 미국특허 제6,856,263호 (이하 "Shokrollahi-비활성화").
분야
본 개시물은 대체로, 소실 (erasure) 들 및/또는 오류들이 예상되는 경우, 채널을 통한 송신을 위한 데이터를 시간 및/또는 공간적으로 인코딩하고 그 데이터를 디코딩하기 위한 방법들, 회로들, 장치 및 컴퓨터 프로그램 코드에 관한 것으로, 더 상세하게는 다른 소스 블록들과 중첩되거나 또는 부분적으로 또는 완전히 동일한 시간 또는 공간에 존재할 수 있는 소스 블록들을 이용하여 데이터를 인코딩하기 위한 방법들, 회로들, 장치 및 컴퓨터 프로그램 코드에 관한 것이다.
통신 채널을 통한 발신자 및 수신자 사이의 파일들의 송신은 많은 문헌들의 주제가 되고 있다. 바람직하게는, 수신자는 발신자에 의해 채널을 통해 송신된 데이터의 정확한 사본을 일부 확실성 레벨로 수신하기를 원한다. 그 채널이 (거의 모든 물리적으로 실현가능한 시스템들을 커버하는) 완벽한 충실도를 가지지 않는 경우, 하나의 관심사는 송신 시에 손실되거나 또는 왜곡된 데이터를 다루는 방법이다. 손실된 데이터 (소실들) 는 종종 손상된 데이터 (오류들) 보다 다루기가 더 쉬운데, 손상된 데이터가 잘못 수신된 데이터인 경우에 수신자가 항상 알 수는 없기 때문이다. 많은 오류 정정 코드들이 소실들에 대한 및/또는 오류들에 대한 정정을 위해 개발되어 있다. 보통, 이용되는 특정 코드는 데이터가 송신 중인 채널의 불충실도들 및 송신 중인 데이터의 성질에 관한 일부 정보에 기초하여 선택된다. 예를 들어, 그 채널이 오랜 불충실 기간들을 가진다고 알려진 경우, 버스트 오류 코드가 그 애플리케이션에 가장 적합할 것이다. 단지 짧고 드문 오류들이 예상되는 경우 간단한 패리티 코드가 최상일 것이다.
특정한 애플리케이션들에서, 하나보다 많은 서비스 레벨을 핸들링할 필요가 있다. 예를 들어, 단지 하나의 레벨만을 수신 가능한 디바이스가 용인가능 데이터 세트를 수신하고 제 1 레벨 및 제 2 레벨을 수신 가능한 디바이스가 제 1 레벨의 데이터를 개선하기 위해 제 2 레벨을 이용하는 두 개의 레벨들의 서비스를 방송사가 방송할 수도 있다. 이것의 일 예는 일부 디바이스들만이 모노럴 신호를 수신했고 다른 디바이스들은 모노럴 신호 및 스테레오 신호를 수신했던 FM 라디오이다. 이 체계의 하나의 특징은 상위 계층들이 하위 계층들 없이는 보통 유용하지 않다는 것이다. 예를 들어, 라디오가 부차적인 스테레오 신호를 수신했지만 기본 신호를 수신하지 않았다면, 라디오는 기본 신호가 특히 유용하다는 것을 알아내지 못할 것인 반면, 반대의 일이 발생하여 기본 레벨이 수신되었지만 부차적 레벨은 수신되지 않았다면, 적어도 일부 유용한 신호는 제공될 수 있다. 이런 이유로, 기본 레벨은 부차적 레벨에 비하여 보호할 가치가 더 있다고 종종 생각된다. FM 라디오 예에서, 기본 신호는 부차적 신호에 비하여 기저대역에 더 가깝게 전송되어 기본 신호를 더 강건하게 한다.
데이터 전송의 제 1 레벨이 기본 신호를 위한 것이고 제 2 레벨이 강화된 계층을 위한 것인 유사한 개념들이 데이터 전송 및 브로드캐스트 시스템들에서 존재한다. 일 예는 H.264 기본 준수 스트림이 강화 계층들과 함께 전송되는 H.264 확장가능 비디오 코딩 (Scalable Video Coding; SVC) 이다. 일 예는 초당 1 메가비트 (mbps) 기본 계층 및 1 mbps 강화 계층이다. 대체로, 수신기가 기본 계층의 모두를 디코딩할 수 있다면 그 수신기는 유용한 출력을 제공할 수 있고, 수신기가 강화 계층의 모두를 디코딩할 수 있다면 그 수신기는 개선된 출력을 제공할 수 있지만, 수신기가 기본 계층의 모두를 디코딩할 수 없다면 강화 계층을 디코딩하는 것은 일반적으로 어떤 유용한 것도 제공하지 않는다.
순방향 오류 정정 ("FEC") 은 송신되는 데이터를 복구하는 수신기의 능력을 향상시키기 위해 종종 이용된다. FEC를 이용하여, 송신기, 또는 그 송신기를 위해 작용하는 일부 동작, 모듈 또는 디바이스는, 소실들 및 또는 오류들이 존재하는 경우에도 수신기가 송신된 인코딩된 데이터로부터 원래의 데이터를 복구할 수 있도록 송신될 데이터를 인코딩할 것이다.
하나의 계층 대 다른 계층의 손실의 영향들에서의 차이 때문에, 상이한 코딩이 상이한 계층들을 위해 이용될 것이다. 예를 들어, 기본 계층을 위한 데이터는 기본 계층에서의 데이터의 FEC 코딩을 나타내는 부가적인 데이터와 함께 송신될 수 있으며, 그 뒤에 강화된 계층의 데이터가 기본 계층 및 강화된 계층에서의 데이터의 FEC 코딩을 나타내는 부가적인 데이터와 함께 송신될 수 있다. 이 접근법으로, 후자의 FEC 코딩은 기본 계층이 수신기에서 성공적으로 디코딩될 수 있다는 부가적인 보증을 제공할 수 있다.
이러한 계층식 접근법은 특정 애플리케이션들에서 유용할 것이지만, 그것은 다른 애플리케이션들에서는 매우 제한될 것이다. 예를 들어, 위의 접근법은 계층들 중 하나로부터 생성된 일부의 인코딩 심볼들 및 둘 이상의 계층들의 조합으로부터 생성된 다른 인코딩 심볼들을 이용하여 둘 이상의 계층들의 합집합을 효율적으로 디코딩하는데 비실용적일 수 있다.
소스 블록들의 적어도 하나의 쌍은 소스 블록들이 상기 쌍의 소스 블록들 양쪽 모두와 공통인 적어도 하나의 기본 블록 및 상기 쌍의 다른 소스 블록과 공통이 아닌 적어도 하나의 기본 블록을 가지도록, 소스 심볼들을 기본 블록들에 할당하며, 기본 블록들을 소스 블록들에 할당하고 각각의 소스 블록을 인코딩 심볼들로 인코딩함으로써 데이터는 인코딩될 수 있다. 소스 블록의 인코딩은 다른 소스 블록들의 콘텐츠와는 독립적일 수 있다. 제 1 소스 블록으로부터의 인코딩 심볼들의 양이 제 1 소스 블록에서의 소스 데이터의 양보다 작고 제 2 소스 블록에 대해서도 마찬가지인 소망의 세트의 원래의 소스 심볼들의 모두를 복구하기 위한 디코딩은 복수의 소스 블록들로부터의 인코딩 심볼들의 세트로부터 행해질 수 있다.
구체적인 실시형태들에서, 인코더는 소스 심볼들을 인코딩 심볼들로 인코딩할 수 있고 디코더는 적합한 수의 인코딩 심볼들로부터 그들 소스 심볼들을 디코딩할 수 있다. 각각의 소스 블록으로부터의 인코딩 심볼들의 수는 그 소스 블록에서의 소스 심볼 수 미만일 수 있고 완전한 디코딩을 여전히 허용한다.
제 1 소스 블록이 제 1 기본 블록을 포함하고 제 2 소스 블록이 제 1 기본 블록 및 제 2 기본 블록을 포함하는 더 구체적인 실시형태에서, 디코더가 제 1 소스 블록으로부터의 인코딩 심볼들의 세트 및 제 2 소스 블록으로부터의 인코딩 심볼들의 세트로부터 제 1 기본 블록 및 제 2 기본 블록의 모두를 복구할 수 있으며, 제 1 소스 블록으로부터의 인코딩 심볼들의 양은 제 1 소스 블록에서의 소스 데이터의 양보다 작고 제 2 소스 블록에 대해서도 마찬가지이며, 디코딩 프로세스에서의 심볼 연산 수는 제 2 소스 블록에서의 소스 심볼 수의 제곱보다 실질적으로 작다.
도 1은 본 발명의 양태들에 따른 탄성 코드들을 사용하는 통신 시스템의 블록도이다.
도 2는 본 발명의 양태들에 따른 탄성코드들을 사용하는 수신기의 부분으로서 사용되는 디코더의 일 예의 블록도이다.
도 3은 도 1에 도시된 인코더, 또는 인코더 어레이에서의 하나의 인코더 유닛일 수도 있는 인코더를 더 상세히 예시한다.
도 4는 탄성 코드들에 따른 소스 블록 매핑의 일 예를 도시한다.
도 5는 접두 코드이고 G=4 인 탄성 코드를 예시한다.
도 6은 리페어 심볼의 블록을 이용한 연산을 예시한다.
부록 A로서 첨부된 것은, 인코더/디코더 시스템의 특정 실시형태와 함께, 때때로 사용되는 본 발명의 세부사항들과 함께, 소실 채널에 대한 슬레피언-울프 (Slepian-Wolf) 유형 문제들을 제시하는 논문이며, 그것은 일부 실제 애플리케이션들, 예컨대, 스트리밍에서의 여러 특수한 경우들 및 대안적 해결책들을 또한 포함한다. 부록 A에서 서술되는 특정 실시형태들은 본 발명의 예들을 제한하지는 않는다는 것과 본 발명의 일부 양태들은 부록 A의 교시들을 사용할 것이지만 다른 양태들은 그렇지 않을 것이라는 것이 이해되어야 한다. 부록 A에서의 제한하는 표현들은 특정 실시형태들의 요건들에 관해 제한하고 있을 수도 있고 그런 제한 요건들은 청구된 발명들에 관련되거나 또는 관련되지 않을 수도 있고, 그러므로, 청구항 언어표현은 그러한 제한하는 표현들로 제한될 필요는 없다는 것이 또한 이해되어야 한다.
이해를 용이하게 하기 위해, 그런 엘리먼트들을 구별하기 위해 적절한 경우에 접미어들이 추가될 수도 있다는 것을 제외하면, 동일한 참조 번호들이 도면들에 공통인 동일한 엘리먼트들을 지정하는 것이 경우에 사용되고 있다. 도면들에서의 이미지들은 예시적 목적들을 위해 단순화되고 스케일대로 묘사될 필요는 없다.
첨부된 도면들은 본 개시물의 예시적인 구성들을 도시하고, 이처럼, 다른 동등하게 효과적인 구성들에 대해 인정될 수도 있는 본 개시물의 범위를 제한하는 것으로서 간주되지 않아야 한다. 그에 따라, 일부 구성들의 특징들은 추가 언급 없이 다른 구성들에 유익하게 통합될 수도 있다는 것이 고려되고 있다.
본 발명은 송신 중인 데이터의 특정 유형들로 제한되지 않는다. 그러나 본원의 예들에서, 송신될 수 있는 데이터는 하나 이상의 소스 심볼들의 시퀀스에 의해 표현된다는 것과 각각의 소스 심볼이 때때로 비트들로 측정되는 특정 사이즈를 가진다는 것이 가정될 것이다. 요구사항은 아니지만, 이들 예들에서, 소스 심볼 사이즈는 또한 인코딩 심볼들의 사이즈이다. 심볼의 "사이즈"는, 심볼이 비트 스트림으로 실제로 나누어지든지 아니든지 간에 비트로 측정될 수 있으며, 심볼이 2M 개 심볼들의 알파벳으로부터 선택되는 경우에 심볼은 M 개 비트들의 사이즈를 가진다.
본원에서 사용된 기술용어에서, 전달될 데이터는 소스 심볼들의 수에 의해 표현되며, K 가 그 수를 표현하기 위해 이용된다. 일부 경우들에서, K 는 미리 알려져 있다. 예를 들어, 전달될 데이터가 미지의 사이즈의 파일이고 소스 심볼 사이즈의 정수 배인 경우, K 는 단순히 그 배수인 정수일 것이다. 그러나, K 는 송신에 앞서 알려져 있지 않거나, 또는 송신이 이미 시작된 후까지 알려지지 않는 경우가 또한 있을 것이다. 예를 들어, 송신기는 그 송신기가 데이터를 수신하는 대로 데이터 스트림을 송신하고 데이터 스트림이 종료될 때의 표시를 가지지 않는 경우이다.
인코더는 소스 심볼들에 기초하여 인코딩 심볼들을 생성한다. 본원에서, 인코딩 심볼들의 수는 종종 N 이라고 지칭된다. N 이 주어진 K 로 고정되는 경우, 인코딩 프로세스는 코드 레이트 r = K/N 을 가진다. 정보 이론은, 모든 소스 심볼 값들이 동일하게 가능하다면, K 개 소스 심볼들의 완벽한 복구는 K 개 소스 심볼들을 완전히 복구하기 위하여 (소스 심볼들 및 인코딩 심볼들에 대한 동일한 사이즈를 가정하여) 적어도 K 개 인코딩 심볼들이 수신될 것을 필요로 한다는 것을 고수한다. 따라서, FEC를 이용하는 코드 레이트는 보통 1 미만이다. 많은 인스턴스들에서, 낮은 코드 레이트들은 더 많은 리던던시와 그에 따른 더 많은 신뢰도를 허용하지만, 더 낮은 대역폭과 가능하게 증가된 컴퓨팅 노력을 그 대가로 지불한다. 일부 코드들은 다른 것들보다 인코딩 심볼 당 더 많은 컴퓨테이션들을 필요로 하고, 많은 애플리케이션들에 대해, 인코딩 및/또는 디코딩의 컴퓨테이션 비용은 유용한 구현예 및 다루기 힘든 구현예 사이의 차이가 생기게 할 것이다.
각각의 소스 심볼은 송신될 데이터 내에 값 및 포지션을 가지고 그것들은 특정 소스 심볼들의 값들의 표현을 포함하는 송신기 및/또는 수신기, 컴퓨터-판독가능 메모리 또는 다른 전자 스토리지 내의 다양한 장소들에 저장될 수 있다. 비슷하게, 각각의 인코딩 심볼은 값과 하나의 인코딩 심볼을 다른 인코딩 심볼로부터 구별하는 인덱스를 가지며, 또한 컴퓨터-판독가능 또는 전자적-판독가능 형태로 표현될 수 있다. 따라서, 종종 심볼 및 그것의 물리적 표현은 설명에서 교환적으로 이용될 수 있다는 것이 이해되어야 한다.
체계적 인코더에서, 소스 심볼들은 인코딩 심볼들의 부분이고 소스 심볼들이 아닌 인코딩 심볼들은 때때로 리페어 심볼들이라고 지칭되는데, 그것들이 손실들 또는 오류들로 인한 손상을 "리페어"하기 위해 디코더에서 사용되기, 즉, 그것들이 손실된 소스 심볼들의 복구를 도울 수 있기 때문이다. 사용되는 코드들에 의존하여, 모두 리페어 심볼들일 것이거나 또는 일부 소스 심볼들 및 일부 리페어 심볼들일 것인 수신된 인코딩 심볼들로부터 소스 심볼들은 완전히 복구될 수 있다. 비-체계적 인코더에서, 인코딩 심볼들은 소스 심볼들의 일부를 포함할 것이지만, 인코딩 심볼들의 모두가 리페어 심볼들인 것도 가능하다. 체계적 인코더들 및 비체계적 인코더들에 대해 별개의 기술용어를 사용하지 않으니까, 그들 인코딩 심볼들이 소스 심볼들인지 리페어 심볼들인지에 관계 없이, 오류들 또는 손실들에 직면하여 복구능력 (recoverability) 을 개선하기 위하여 용어 "소스 심볼들"은 목적지에 송신되거나 또는 제공될 데이터를 나타내는 심볼들을 의미하는 반면, 용어 "인코딩 심볼들"은 인코더에 의해 생성된 심볼들을 의미한다는 것이 이해되어야 한다. 일부 인스턴스들에서, 소스 심볼들은 데이터를 인코더에 제시하기 전에 전처리되며, 이 경우 인코더에 대한 입력은 소스 심볼들로부터 구별하기 위해 "입력 심볼들"이라고 지칭될 것이다. 디코더가 입력 심볼들을 디코딩하는 경우, 일반적으로 디코더의 궁극적 목표인 소스 심볼들을 얻는 것을 위해 통상 부가적인 단계가 필요하다.
하나의 효율적인 코드는 간단한 패티리 검사 코드이지만, 강건성 (robustness) 은 종종 충분하지 않다. 사용될 수 있는 다른 코드는 본원의 양수인에게 양도되고 본원에 참조에 의해 명시적으로 통합된 Luby의 미국 특허 제6,307,487호에 의해 설명된 연쇄 반응 코드들 (이하 "Luby I") 및 본원의 양수인에게 양도되고 본원에 참조에 의해 명시적으로 통합된 Shokrollahi 등의 미국 특허 제7,068,729호에서 설명된 바와 같은 멀티-스테이지 연쇄 반응 (이하 "Shokrollahi I") 과 같은 레이트리스 (rateless) 코드이다.
본원에서 사용되는 바와 같이, 용어 "파일"은 하나 이상의 소스들에 저장되고 하나 이상의 목적지들에 하나의 단위로서 전달되는 것인 임의의 데이터를 의미한다. 따라서, 파일 서버 또는 컴퓨터 저장 디바이스로부터의 문서, 이미지, 및 파일은, 모두 전달될 수 있는 "파일들"의 예들이다. 파일들은 (하드 디스크 상에 저장된 하나의 메가바이트 이미지와 같이) 알려진 사이즈일 수 있거나 또는 (스트리밍 소스의 출력의 출력으로부터 취해진 파일과 같이) 미지의 사이즈일 수 있다. 어떤 경우라도, 파일은 각각의 소스 심볼이 파일에서의 포지션과 값을 가지는 소스 심볼들의 시퀀스이다.
용어 "파일"은 또한, 본원에서 사용되는 바와 같이, 선형 포지션들의 세트로 조직화 또는 시퀀스화되지 않은 다른 송신될 데이터를 의미할 수도 있지만, 대신에, 다수의 차원들로의 정렬들을 가질 수도 있는 데이터, 예컨대, 평면 맵 데이터, 또는 시간 축을 따라 그리고 우선순위들에 따른 다른 축들을 따라 조직화되는 데이터, 이를테면 계층화되고 프레젠테이션을 위해 서로 의존하는 다수의 계층들을 가지는 비디오 스트리밍 데이터를 나타낼 수도 있다.
송신은 파일을 전달하기 위하여 하나 이상의 발신자들로부터 하나 이상의 수신자들로 채널을 통해 데이터를 송신하는 프로세스이다. 발신자는 또한 때때로 송신기라고 지칭된다. 하나의 발신자가 완벽한 채널에 의해 임의의 수의 수신자에 접속되면, 모든 데이터가 올바르게 수신될 것이므로, 수신된 데이터는 입력 파일의 정확한 사본일 수 있다. 여기서, 채널은 완전하지 않다고 가정하며, 이는 대부분의 실-세계 채널들에 대해 사실이다. 많은 채널 결함들 중, 관심 있는 두 개의 결함들은 데이터 소실 및 데이터 불완전성이다 (그것들은 데이터 소실의 특수한 경우로서 취급될 수 있다). 데이터 소실는 채널이 데이터를 손실하거나 빠트리는 경우에 발생한다. 데이터의 일부가 이미 지나가기까지 수신자가 데이터 수신을 시작하지 않으며, 송신이 종료되기 전에 수신자가 데이터 수신을 중단하며, 송신된 데이터의 일부분만을 수신하도록 수신자가 선택하며, 및/또는 수신자가 데이터 수신을 즉시 중단하고 다시 시작하는 경우에 데이터 불완전함이 발생한다.
패킷 네트워크가 사용되면, 하나 이상의 심볼, 또는 가능하게 심볼들의 부분들은, 송신을 위한 패킷에 포함되고 각각의 패킷은 올바로 수신되거나 또는 결코 그렇지 않다고 가정된다. 송신은 수신자가 결과에 만족하기까지 수신자 및 발신자가 실패들에 직면하여 서로 대응할 것이라는 점에서 "신뢰성있을" 수 있거나, 또는 수신자는 발신자에 의해 제공되는 것을 다루어야만 하고 이에 따라 때때로 실패할 수 있다는 점에서 "신뢰성없을" 수 있다. FEC로, 송신기는, 전송 중에 손실될 정보를 보충하기 위해 부가적인 정보 등을 제공함으로써 데이터를 인코딩하고, 그 FEC 인코딩은 오류들의 정확한 지식에 앞서 일반적으로 행하여져, 미리 오류들을 방지하는 것을 시도한다.
일반적으로, 통신 채널은 데이터 송신에 대한 발신자 및 수신자를 연결시키는 것이다. 통신 채널은 채널이 데이터를 얻을 때 그 채널이 발신자로부터 수신자로 데이터를 이동시키는 실-시간 채널일 수 있거나, 또는 통신 채널은 발신자로부터 수신자로 데이터의 전송 시 데이터의 일부 또는 전부를 저장하는 저장 채널일 수도 있다. 후자의 일 예는 디스크 스토리지 또는 다른 저장 디바이스이다. 그 예에서, 데이터를 생성하는 프로그램 또는 디바이스는 그 데이터를 저장 디바이스로 송신하는 발신자로서 생각될 수 있다. 수신자는 저장 디바이스로부터 데이터를 읽는 프로그램 또는 디바이스이다. 발신자가 저장 디바이스에서 데이터를 찾아내는데 사용하는 메커니즘들, 저장 디바이스 자체 및 수신자가 저장 디바이스로부터 데이터를 획득하는데 사용되는 메커니즘들은 합쳐서 채널을 형성한다. 그들 메커니즘들 또는 저장 디바이스가 데이터를 손실할 수 있는 기회가 있다면, 그것은 통신 채널에서 데이터 소실로서 처리될 것이다.
"소실 코드"는 원래의 소스 심볼들이 인코딩 심볼들의 일부 적절한 서브세트들로부터 복구될 수 있는 속성을 이용하여 K 개 소스 심볼들의 세트를 인코딩 심볼들의 더 큰 (> K) 세트에 매핑하는 코드이다. 인코더는 제공되는 소스 심볼들로부터 인코딩 심볼들을 생성하도록 동작할 것이고, 구현하도록 제공되거나 또는 프로그래밍된 소실 코드에 따라 그렇게 할 것이다. 소실 코드가 유용하면, 원래의 소스 심볼들 (또는 일부 경우들에서, 완전한 복구는 아니지만 특정 애플리케이션의 필요에 부합하기에는 충분한 심볼들) 은, 수신기/디코더에서 수신될 수 있었던 인코딩 심볼들의 서브세트가 소스 심볼들 ("이상적" 코드) 의 사이즈 이상인 사이즈라면, 그 서브세트로부터 복구가능하거나, 또는 적어도 이것이 상당히 높은 확률로 참이어야 한다. 실용에서, "심볼"은 보통 바이트들의 컬렉션, 아마도 수백 바이트이고, 모든 심볼들 (소스 및 인코딩) 은 동일한 사이즈이다.
"블록 소실 코드"는 소스 심볼들의 특정 서로소 (disjoint) 서브세트들 ("블록들") 의 세트의 하나의 서브세트를 각각의 인코딩 심볼에 매핑하는 소실 코드이다. 인코딩 심볼들의 세트가 하나의 블록으로부터 생성되는 경우, 그들 인코딩 심볼들은 그 하나의 블록을 복구하기 위해 서로 조합하여 이용될 수 있다.
인코딩 심볼의 "스코프"는, 다른 인코딩 심볼들을 조합하여 이용하여서, 그 인코딩 심볼이 생성되는 블록 및 디코딩하기 위해 그 인코딩 심볼이 이용되는 블록이다.
주어진 인코딩 심볼의 "이웃 세트"는 인코딩 심볼이 직접 의존하는 심볼의 블록 내의 소스 심볼들의 세트이다. 이웃 세트는 인코딩 심볼의 스코프의 매우 희박한 (sparse) 서브세트이다. 연쇄 반응 코드들 (예컨대, LT 코드들), LDPC 코드들, 및 멀티-스테이지 연쇄 반응 코드들 (예컨대, 랩터 (Raptor) 코드들) 을 포함하여, 많은 블록 소실 코드들은 효율 및 다른 이유들로 인코딩 심볼들을 생성하는데 희박 기법들을 이용한다. 희박 (sparseness) 측정의 하나의 예는 인코딩 심볼이 의존하는 이웃 세트에서의 심볼 수 대 그 블록에서의 심볼 수의 비율이다. 예를 들어, 블록이 256 개 소스 심볼들을 포함하고 (k=256) 각각의 인코딩 심볼이 그들 256 개 소스 심볼들 중 2 개 및 5 개 사이의 XOR인 경우, 그 비율은 2/256 와 5/256 사이가 될 것이다. 마찬가지로, K=1024 이고 각각의 인코딩 심볼이 정확히 세 개의 소스 심볼들의 함수인 (즉, 각각의 인코딩 심볼의 이웃 세트가 정확히 세 개의 멤버들을 가지는) 경우, 그 비율은 3/1024이다.
일부 코드들, 이를테면 랩터 코드들에 대해, 인코딩 심볼들은 블록의 소스 심볼들로부터 직접 생성되지는 않지만, 대신에 블록의 소스 심볼들로부터 생성된 그것들인 다른 중간 심볼들로부터 생성된다. 어느 경우에나, 랩터 코드들에 대해, 이웃 세트는 이들 인코딩 심볼들의 스코프의 사이즈 (그것은 블록에서의 소스 심볼 수와 동일함) 보다 훨씬 작을 수 있다. 효율적인 인코딩 및 디코딩이 관심사이고 결과적인 코드 구성이 희박인 이들 경우들에서, 인코딩 심볼의 이웃 세트는 그것의 스코프보다 훨씬 작을 수 있고, 상이한 인코딩 심볼들은 동일한 스코프로부터 생성되는 경우에도 상이한 이웃 세트들을 가질 수도 있다.
블록 소실 코드의 블록들이 서로소이므로, 하나의 블록으로부터 생성된 인코딩 심볼들은 상이한 블록으로부터 심볼들을 복구하는데 이용될 수 없는데, 그것들이 그 다른 블록에 관한 정보를 포함하지 않기 때문이다. 보통, 그런 서로소 블록 소실 코드들을 위한 코드들의 설계, 인코더들 및 디코더들은 코드의 성질로 인해 특정 방식으로 거동한다. 인코더들/디코더들이 단순히 서로소가 아닌 (nondisjoint) 블록들을 허용하도록 수정되었다면, 즉, 블록의 스코프가 다른 블록의 스코프와 중첩될 경우, 중복 블록들로부터 생성된 인코딩 심볼들은 블록들의 합집합들로부터 소스 심볼들을 효율적으로 복구하기 위해 이용가능하지 않을 것이다, 즉, 디코딩 프로세스는 중복 블록들을 디코딩하기 위해 사용되는 경우에 인코딩 심볼들의 작은 이웃 세트들의 효율적인 사용을 허용하지 않는다. 결과로서, 중복 블록들을 디코딩하기 위해 적용된 경우에 블록 소실 코드들의 디코딩 효율은 그것들이 설계되었던 것에 적용되는 경우, 즉, 서로소 블록들을 디코딩하는 경우의 이들 코드들의 디코딩 효율보다 훨씬 나쁘다.
"체계적 코드 (systematic code)"는 인코딩 심볼들의 세트가 소스 심볼들 자체를 포함하는 것이다. 이 맥락에서, 소스 심볼들 및 "리페어 심볼들" 사이에 구별이 행해질 수 있으며 후자는 소스 심볼들에 일치하는 것들과는 상이한 인코딩 심볼들을 말한다. 체계적 코드가 사용되고 인코딩 심볼들의 모두가 올바르게 수신되는 경우, 여분의 것들 (리페어 심볼들) 은 수신기에서 필요로 하지 않지만, 일부 소스 심볼들이 전송 중에 손실되거나 또는 소실된다면, 리페어 심볼들은 디코더가 누락 소스 심볼들을 복구할 수 있도록 이러한 상황을 바로잡는데 이용될 수 있다. 인코딩 심볼들이 리페어 심볼들을 포함하고 소스 심볼들이 직접 인코딩 심볼들의 부분이 되지 않는다면 코드는 "비체계적"이라고 간주된다.
이들 정의들을 마음에 두고, 다양한 실시형태들이 이제 설명될 것이다.
탄성 코드들을 위한 인코더들/디코더들의 개요
인코더에서, 인코딩 심볼들은 소스 심볼들, 입력 파라미터들, 인코딩 규칙들 및 가능하게 다른 고려사항들로부터 생성된다. 본원에서 설명되는 블록 기반 인코딩의 예들에서, 인코딩 심볼이 의존할 수 있는 이 소스 심볼들의 세트는 "소스 블록"이라고 지칭되거나, 또는 다르게는, 인코딩 심볼의 "스코프"라고 지칭된다. 인코더가 블록 기반이기 때문에, 주어진 인코딩 심볼은 하나의 소스 블록 내의 소스 심볼들 (및 가능하게 다른 세부사항들) 에만 의존하거나, 또는 다르게는, 그것의 스코프 내의 소스 심볼들에만 의존하고, 그것의 소스 블록 또는 스코프 외부의 소스 심볼들에는 의존하지 않는다.
블록 소실 코드들은 효율적인 인코딩, 및 효율적인 디코딩을 허용하는데 유용하다. 예를 들어, 일단 수신기가 주어진 소스 블록에 대한 소스 심볼들의 모두를 성공적으로 복구하면, 수신기는 그 소스 블록 내의 소스 심볼들을 위해 인코딩하는 모든 다른 수신된 인코딩 심볼들의 프로세싱을 중단시키고, 대신에 다른 소스 블록들에 대한 인코딩 심볼들에 집중할 수 있다.
단순 블록 소실 인코더에서, 소스 데이터는 고정된-사이즈, 연속 및 비-중복 소스 블록들로 나누어질 것이다, 즉, 각각의 소스 블록은 동일한 소스 심볼 수를 가지며, 소스 블록의 범위에서의 소스 심볼들의 모두는 소스 데이터에서 로케이션들이 인접하고 각각의 소스 심볼은 정확히 하나의 소스 블록에 속한다. 그러나, 특정 애플리케이션들에 대해, 그런 제약조건들은 낮은 성능을 가지며, 강건성을 감소시키며, 및/또는 인코딩 및/또는 디코딩의 컴퓨테이션 노력을 증가시킬 수도 있다.
탄성 소실 코드들은 여러 방법들에서 블록 소실 코드들과는 상이하다. 하나는 탄성 소실 코드 인코더들 및 디코더들이 중복 블록들의 합집합들과 직면하는 경우에 더 효율적으로 동작한다는 것이다. 본원에서 설명되는 탄성 소실 코드 방법들의 일부에 대해, 생성된 인코딩 심볼들은 희박하다, 즉, 그것들의 이웃 세트들은 그것들의 스코프의 사이즈보다 훨씬 작고, 중첩하는 스코프들 (블록들) 의 조합으로부터 생성된 인코딩 심볼들이 스코프들의 합집합을 디코딩하는데 이용되는 경우, 대응하는 디코더 프로세스는 효율적이고 (디코딩 프로세스에서 인코딩 심볼들의 희박도에 영향을 주고 디코딩을 위한 심볼 연산 수는 밀집 계의 수학식들을 푸는데 필요한 심볼 연산 수보다 실질적으로 작고) 작은 수신 오버헤드를 가진다 (스코프들의 합집합을 복구하는데 필요한 인코딩 심볼들의 수는 스코프들의 합집합의 사이즈와 동일하거나, 또는, 훨씬 더 크지는 않다). 예를 들어, 각각의 인코딩 심볼의 이웃 세트의 사이즈는, 그것이 K 개 소스 심볼들의 블록으로부터 생성되는 경우, 즉, 그것이 스코프 K를 가지는 경우 K의 제곱근일 것이다. 그 다음에, 두 개의 중복 블록들로부터 생성된 인코딩 심볼들로부터 그들 두 개의 중복 블록들의 합집합을 복구하는데 필요한 심볼 연산 수는 K'의 제곱보다 훨씬 작을 것이며, 여기서 두 개의 블록들의 합집합은 K' 개 소스 심볼들을 포함한다.
본원에서 설명되는 탄성 소실 코딩으로, 소스 블록들은 사이즈가 고정될 필요가 없으며, 가능하게 비인접 로케이션들을 포함할 뿐만 아니라 주어진 소스 심볼이 하나보다 많은 소스 블록에 의해 "엔벨로프 (enveloped)" 되도록 소스 블록들이 중첩되는 것을 허용할 수 있다.
아래에서 설명되는 인코더의 실시형태들에서, 인코딩될 데이터는 정렬된 복수의 소스 심볼들이고 인코더는 각각의 소스 심볼이 하나의 기본 블록과 소스 블록들의 결정 및 구분 (demarcation) 에 의해 커버되도록 소스 심볼들을 나타내는 "기본 블록들"의 결정을 확인하거나, 또는 그것들의 구분들을 획득하며, 소스 블록은 하나 이상의 기본 블록들 (및 그들 기본 블록들에서의 소스 심볼들) 을 엔벨로프한다. 각각의 소스 블록이 정확히 하나의 기본 블록을 엔벨로프하는 경우, 그 결과는 기존의 블록 인코더에 유사하다. 그러나, 일부 기본 블록이 하나보다 많은 소스 블록에 있을 수 있도록 소스 블록들이 서로 겹치는 것이 가능한 경우 코딩 시에 여러 유용하고 예기치 못한 이익들이 있어서, 두 개의 소스 블록들이 그들의 교집합에 적어도 하나의 기본 블록을 가지고 두 개의 소스 블록들의 합집합이 소스 블록들 중 어느 하나보다 더 많은 소스 심볼들을 포함하도록 한다.
쌍이 되는 소스 블록들의 합집합에 의해 표현되는 소스 데이터의 일부분이 상기 쌍의 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 1 세트 및 상기 쌍의 제 2 소스 블록으로부터 생성된 인코딩 심볼들의 제 2 세트의 조합으로부터 복구가능하도록 하는 정도의 인코딩이라면, 더 간단한 인코딩 프로세스가 사용된다면 요구되었을 더 적은 수신된 심볼들을 이용하여 디코딩하는 것이 가능할 수 있다. 이 인코딩 프로세스에서, 결과적인 인코딩 심볼들은, 일부 경우들에서, 하나보다 많은 소스 블록의 소스 심볼들의 효율적인 복구를 위해 조합하여 이용될 수 있다.
이것이 그렇게 되는 이유의 예시가 아래에서 제공되지만, 먼저, 구현 예들이 설명될 것이다. 이들 구현예들은 하드웨어, 프로세서 또는 컴퓨터에 의해 실행되는 프로그램 코드, 범용 컴퓨터 상에서 실행 중인 소프트웨어 등으로 행해질 수 있다는 것이 이해되어야 한다.
탄성 코드 이상적 복구 속성
블록 코드들에 대해, 이상적 복구는 블록으로부터 생성되는 임의의 수신된 K 개 인코딩 심볼들의 세트로부터 그 블록의 K 개 소스 심볼들을 복구하는 능력이다. 이 이상적 복구 속성을 갖는 블록 코드들이 존재한다는 것은 잘 알려져 있다. 예를 들어, 소실 코드들로서 이용되는 리드-솔로몬 코드들은 이 이상적 복구 속성을 나타낸다.
유사한 이상적 복구 속성이 탄성 코드들에 대해 정의될 것이다. 인코딩 심볼들이 인코더에서 중복 스코프들의 세트로부터 생성되는, 인코딩 심볼들의 일부 세트를 (채널이 인코딩 심볼들의 일부의 손실을 유발할 수도 있어서, 정확한 세트가 인코더에서 특정가능하지 않을 경우에) 수신기가 수신하고, 수신기는 원래의 소스 심볼들의 모두를 복구할 것을 시도하도록, 탄성 코드 통신 시스템이 설계된다고 가정한다. 중복 스코프들은 수신된 인코딩 심볼들이 중복 소스 심볼들의 다수의 소스 블록들로부터 생성되도록 하며, 여기서 각각의 수신된 인코딩 심볼의 스코프는 소스 블록들 중 하나이다. 다르게 말하면, 인코딩 심볼들은, 각각의 인코딩 심볼이 T 개 블록들 (스코프들) 중 정확히 하나로부터 생성되는, T 개 블록들 (스코프들) b 1, b 2, ..., b T 의 세트로부터 생성된다.
이 상황에서, 탄성 소실 코드의 이상적 복구 속성은, 다음이 유지된다면, {1, ..., T} 의 모든 서브세트들 {i 1, ..., i S } 에 대해 1 ≤ ST 가 되도록 임의의 S 에 대해, 수신된 인코딩 심볼들의 서브세트 E 로부터 T 개 블록들의 세트를 복구하는 능력으로서 설명될 수 있다: 1 ≤ sS 가 되도록 하는 모든 s 의 경우, {i 1, ..., i S } 의 모든 서브세트들 {i 1', ..., i s '}에 대해,
Figure pct00001
, ...,
Figure pct00002
중 임의의 것으로부터 생성된 E 에서의 심볼들의 수는 많아야
Figure pct00003
, ...,
Figure pct00004
의 합집합의 사이즈이고,
Figure pct00005
, ...,
Figure pct00006
중 임의의 것으로부터 생성된 E 에서의 심볼들의 수는
Figure pct00007
, ...,
Figure pct00008
의 합집합의 사이즈와 동일하다. E 는 수신된 인코딩 심볼들의 서브세트일 수도 있다, 즉, 블록들 (스코프들) 의 특정 세트가 복구가능한지를 알아보기 위해 이 이상적 복구 정의를 평가하는 경우에 일부 수신된 인코딩 심볼들은 고려되지 않을 것이라는 점에 주의한다.
이상적으로는, 블록들 (스코프들) 의 세트의 복구는 컴퓨테이션 효율적이어야 한다, 예컨대, 디코딩 프로세스가 사용하는 심볼 연산 수는 이차 방정식 등과는 대조적으로, 복구된 스코프들의 합집합에서의 소스 심볼 수에 선형적으로 비례해야 할 것이다.
본원에서의 설명들의 일부가 일부 경우들에서, 위에서 설명된 이상적인 복구 속성들을 달성하는 탄성 소실 코드 인코딩, 프로세싱, 디코딩 등을 위한 방법들 및 프로세스들을 설명할 것이지만, 다른 경우들에서는, 여전히 탄성 소실 코드 인코딩, 프로세싱, 디코딩 등의 정의들 내에 있도록 간주되면서, 탄성 코드들의 이상적인 복구 및 효율 속성들의 근접 근사 (close approximation) 만이 달성된다는 것에 주의해야 한다.
시스템 개요
도 1은 탄성 코드들을 이용하는 통신 시스템 (100) 의 블록도이다.
시스템 (100) 에서, 탄성 코드 블록 매퍼 ("mapper") (110) 는 소스 블록들에 대한 기본 블록들의 매핑과, 가능하게 기본 블록들의 구분들도 생성한다. 도 1에 도시된 바와 같이, 통신 시스템 (100) 은 매퍼 (110), 소스 블록 매핑을 위한 저장소 (115), 인코더 어레이 또는 인코더 (120), 인코딩 심볼들을 위한 저장소 (125), 및 송신기 모듈 (130) 을 구비한다.
매퍼 (110) 는, 다양한 입력과 가능하게 본원에서 나타내어진 규칙들의 세트로부터, 어떤 소스 블록들이 어떤 기본 블록들에 대응할 것인지를 결정하고 그 대응관계들을 저장소 (115) 에 저장한다. 이것이 결정론적 및 반복가능 프로세스이면, 동일한 프로세스는 이 매핑을 획득하기 위해 디코더에서 실행될 수 있지만, 그것이 랜덤이거나 또는 완전히 결정론적이지 않다면, 매핑이 일어날 방법에 관한 정보는 디코더가 매핑을 결정하는 것을 허용하기 위해 목적지로 전송될 수 있다.
도시된 바와 같이, 입력들의 세트는 (결코 철저할 필요는 없지만) 매퍼 (110) 의 동작을 제어하기 위해 본 실시형태에서 이용된다. 예를 들어, 일부 실시형태들에서, 매핑은 소스 심볼들의 값들 자체, 소스 심볼 수 (K), 매퍼 (110) 내부에서 완전히 생성된 것은 아닌 입력으로서 제공된 기본 블록 구조, 수신기 피드백, 데이터 우선순위 신호, 또는 다른 입력들에 의존할 것이다.
일 예로서, 매퍼 (110) 는 매퍼 (110) 에 입력으로서 제공된 기본 블록 경계들의 특정 표시에 의존하는 엔벨로프들을 가지는 소스 블록들을 생성하도록 프로그램될 것이다.
소스 블록 매핑은 또한 수신기 피드백에 의존할 것이다. 이는 수신기 피드백이 송신기에 쉽사리 이용가능하고 수신기는 데이터의 성공적인 수신을 나타내는 경우들에서 유용할 것이다. 따라서, 수신기는 수신기가 i-번째 심볼까지 모든 소스 심볼들을 수신하고 복구하였다는 것을 송신기에 시그널링할 것이고 매퍼 (110) 는 i-번째 심볼 전에 오는 충분히 복구된 기본 블록들을 제외하기 위해 소스 블록 엔벨로프들을 변경함으로써 응답할 것이며, 이는 송신기 뿐만 아니라 수신기에서 컴퓨테이션 노력 및/또는 스토리지를 절약할 수 있다.
소스 블록 매핑은 상이한 소스 블록들 또는 기본 블록들에 대한 데이터 우선순위 값들이 가변함을 매퍼 (110) 에 시그널링하는 데이터 우선순위 입력에 의존할 수 있다. 이것의 일 예의 사용은 송신기가 데이터를 송신 중이고 송신 중인 데이터가 다른 데이터보다 낮은 우선순위라는 신호를 수신하는 경우이며, 이 경우 코딩 및 강건성은 낮은 우선순위 데이터를 희생하여 높은 우선순위 데이터에 대해 증가될 수 있다. 이는, 엔드 유저가 맵이 로딩되는 "관심집중 (focus of interest)" 지점으로 이동하는, 맵 디스플레이들과 같은 애플리케이션들에서, 또는 비디오 시퀀스의 송신 동안에 엔드 유저가 신속하게 포워딩 또는 리버싱하는 비디오 애플리케이션들에서 유용할 것이다.
어쨌든, 인코더 어레이 (120) 는 송신기 모듈 (130) 에 의해 일어날 수 있는 송신을 위해 저장소 (125) 에 저장되는 인코딩 심볼들을 생성하기 위해 소스 심볼 값들 및 인코딩을 위한 다른 파라미터들과 함께 소스 블록 매핑을 이용한다. 물론 시스템 (100) 은 소스 심볼 값들 및 다른 입력들을 판독하고 저장된 인코딩 심볼들을 생성하는 소프트웨어에서 완전히 구현될 수 있다는 것이 이해되어야 한다. 소스 블록 매핑이 인코더 어레이에 대해 이용가능하게 되고 인코딩 심볼들이 그 인코딩 심볼에 연관된 소스 블록에 있지 않은 소스 심볼들에 독립적일 수 있기 때문에, 인코더 어레이 (120) 는 각각이 상이한 소스 블록에 대해 동작하는 복수의 독립적으로 동작하는 인코더들을 포함할 수 있다. 일부 애플리케이션들에서 각각의 인코딩 심볼은 그것이 생성된 후 즉시 또는 거의 즉시 전송되고 이에 따라 저장소 (125) 가 필요 없을 것이거나, 또는 인코딩 심볼은 그것이 송신되기 전에 짧은 지속시간 동안에만 저장소 (125) 내에 저장될 것이라는 것이 또한 이해되어야 한다.
이제 도 2를 참조하면, 목적지에서 수신기의 부분으로서 사용된 디코더의 일 예가 도시된다. 거기에 예시된 바와 같이, 수신기 (200) 는 수신기 모듈 (210), 수신된 인코딩 심볼들을 위한 저장소 (220), 디코더 (230), 디코딩된 소스 심볼들을 위한 저장소 (235), 및 대향 소스 블록 매핑 저장소 (215) 를 구비한다. 소스 블록 매핑을 만드는 방법에 관한 정보를 수신하는데 필요한 임의의 접속은, 그것이 송신기에서 필요할 지라도, 도시되지 않았다.
수신기 모듈 (210) 은, 가능하게 소실들, 손실들 및/또는 누락 데이터를 포함하는 신호를 송신기로부터 수신하며, 수신된 신호로부터 인코딩 심볼들을 도출하고 그 인코딩 심볼들을 저장소 (220) 에 저장한다.
디코더 (230) 는 이용가능한 인코딩 심볼들, 저장소 (215) 로부터의 소스 블록 매핑을 판독하여, 그 매핑들, 이용가능한 인코딩 심볼들 및 저장소 (235) 내의 이전에 디코딩된 심볼들에 기초하여 어떤 심볼들이 인코딩 심볼들로부터 디코딩될 수 있는 지를 결정한다. 디코더 (230) 의 결과들은 저장소 (235) 에 저장될 수 있다.
수신된 인코딩된 심볼들을 위한 저장소 (220) 및 디코딩된 소스 심볼들을 위한 저장소 (235) 는 공통 메모리 엘리먼트에 의해 구현될 것이라는 것, 즉, 디코더 (230) 는 디코딩하는데 이용되는 수신된 인코딩 심볼들과 동일한 저장소 영역 내에 디코딩의 결과들을 저장한다는 것이 이해되어야 한다. 인코딩 심볼들 및 디코딩된 소스 심볼들은, 특히 인코딩 심볼들이 첫번째로 도착했을 때와 디코딩된 데이터가 다른 애플리케이션들에 의해 사용될 때 사이에 짧은 지연이 있는 경우들에서, 휘발성 저장소, 이를테면 랜덤 액세스 메모리 (RAM) 또는 캐시에 저장될 수도 있다는 것이 또한 본 개시물로부터 이해되어야 한다. 다른 애플리케이션들에서, 심볼들은 상이한 유형들의 메모리들에 저장된다.
도 3은 도 1에 도시된 인코더, 또는 인코더 어레이에서의 하나의 인코더 유닛일 수도 있는 인코더 (300) 를 더 상세히 예시한다. 어느 경우에나, 예시된 바와 같이, 인코더 (300) 는 소스 심볼들의 값들이 저장되는 심볼 버퍼 (305) 를 가진다. 예시에서, 모든 K 개 소스 심볼들은 한 번에 저장가능하지만, 인코더는 모두 보다는 적은 소스 심볼들을 가지는 심볼 버퍼와도 함께 동등하게 작동할 수 있다는 것이 이해되어야 한다. 예를 들어, 인코딩 심볼을 생성하기 위한 주어진 동작은 하나의 소스 블록에 상당하는 소스 심볼들, 또는 심지어 소스 블록 전체 미만에 상당하는 소스 심볼들만을 포함하는 심볼 버퍼로 수행될 것이다.
심볼 선택기 (310) 는 심볼 버퍼 (305) 내의 소스 심볼 포지션들 중 1 부터 K 까지를 선택하고 연산기 (320) 는 소스 심볼들에 대응하는 피연산자들에 대해 연산하고 이에 의해 인코딩 심볼을 생성한다. 특정 예에서, 심볼 선택기 (310) 는 희박 행렬을 이용하여 소스 블록 또는 생성 중인 인코딩 심볼들의 스코프로부터 심볼들을 선택하고 연산기 (320) 는 비트단위 (bit-wise) 배타적 OR (XOR) 연산을 선택된 심볼들에 대해 수행함으로써 그 선택된 심볼들에 대해 연산하여 인코딩 심볼들이 되게 한다. XOR 외의 다른 연산들이 가능하다.
본원에서 사용되는 바와 같이, 특정 인코딩 심볼에 대한 피연산자들인 소스 심볼들은 그 인코딩 심볼의 "이웃들"이라고 지칭되고 주어진 소스 심볼에 의존하는 모든 인코딩 심볼들의 세트는 그 소스 심볼의 이웃이라고 지칭된다.
그 연산이 XOR인 경우, 인코딩 심볼의 이웃인 소스 심볼은, 그 인코딩 심볼의 모든 다른 이웃들인 소스 심볼들이 이용가능하다면, 단순히 인코딩 심볼 및 다른 이웃들을 XOR함으로써, 그 인코딩 심볼로부터 복구될 수 있다. 이는 다른 소스 심볼들을 디코딩하는 것을 가능하게 할 수도 있다. 다른 연산들이 유사한 기능을 가질 것이다.
이웃 관계들이 알려지면, 소스 심볼들 및 인코딩 심볼들의 그래프는 인코딩 관계들을 나타내기 위해 존재할 것이다.
탄성 코드들의 세부사항들
탄성 코드들은 블록 코드들 또는 돌림형 부호들 (convolutional codes) 또는 네트워크 코드들 중 어느 하나에 비해 많은 이점들을 가지고, 인코딩 동안에 수신된 피드백에 기초하여 변하도록 어떤 것이 코딩되는 것을 쉽사리 허용한다. 많은 애플리케이션들에서, 예컨대, 데이터를 스트리밍하는 경우에 타이밍 제약조건들로 인해 데이터의 모두가 복구될 수 있기 전에 접두부 순서 (prefix order) 로 데이터를 복구하는 것이 유용하다는 점을 고려하여, 채널 및/또는 피드백의 알려진 오류-조건들에 기초하여, 인코딩이 진행할 때 데이터의 상이한 부분들에 대해 코딩하는 것이 유익할 수도 있는 경우에도, 블록 코드들은 데이터의 전체 블록에 대해 코딩하는 요건으로 인해 제약된다.
돌림형 부호들은 리페어 심볼들을 스트림에 소정의 패터닝된 방식으로 가산함으로써, 예컨대, 소정의 패턴에 기초하여 소정의 레이트로 리페어 심볼들을 스트림에 가산함으로써 얼마간의 보호를 데이터의 스트림에 제공한다. 돌림형 부호들은 임의의 소스 블록 구조들을 허용하지 않으며, 그것들은 소스 데이터의 상이한 부분들로부터 가변하는 양들의 인코딩 심볼들을 생성하기 위한 유연성을 제공하지 않고, 그것들은 복구 속성들과 인코딩 및 디코딩의 효율을 포함하여, 많은 다른 방식들에서 제한된다.
네트워크 코드들은 다양한 중간 수신기들을 통해 송신되는 데이터에 대해 보호를 제공하고, 그 다음에 각각의 그런 중간 수신기는 그것이 수신했던 것에 기초하여 부가적인 인코딩 데이터를 인코딩하고 송신한다. 네트워크 코드들은 소스 블록 구조들을 결정하기 위한 유연성을 제공하지 않으며, 억지 (brute force) 보다는 양호한 공지의 효율적인 인코딩 및 디코딩 프로시저들이 없고, 네트워크 코드들도 역시 많은 다른 방식들로 제한된다.
탄성 코드들은 적합한 데이터 보호 레벨을 제공하면서 동시에 실시간 스트리밍 경험을 허용한다, 즉, 오류-조건들로부터 보호하기 위해 도입된 코딩으로 인해 현재 오류 조건들이 주어지면 가능한 한 적은 대기시간을 프로세스에 도입한다.
설명된 바와 같이, 탄성 코드는 각각의 인코딩 심볼이 소스 심볼들의 임의의 서브세트에 의존할 수도 있는 코드이다. 일반적인 탄성 코드의 하나의 유형은 소스 심볼들이 시퀀스로 배열되고 각각의 인코딩 심볼이 연속적인 소스 심볼들의 세트로부터 생성되는 탄성 화현 코드 (elastic chord code) 이다. 탄성 화현 코드들은 아래에서 더 상세히 설명된다.
탄성 코드들의 다른 실시형태들은, 선형 코드들이기도 한, 즉, 각각의 인코딩 심볼이 그것이 의존하는 소스 심볼들의 선형 합인 탄성 코드들이고, GF(q) 선형 코드는 임의의 인코딩 심볼의 구성에서의 소스 심볼들의 계수들이 유한 필드 GF(q) 의 멤버들인 선형 코드이다.
본원에서 설명된 바와 같은 탄성 코드들을 이용하는 인코더들과 디코더들 및 통신 시스템들은 대기시간 및 대역폭 오버헤드를 최소화하는 양호한 균형을 제공한다.
다중-우선순위 코딩을 위한 탄성 코드 사용들
탄성 코드들은 또한, 우선순위들이 정적 또는 동적 중 어느 하나로 결정되는 경우, 다수의 부분들에 대해 전달의 상이한 우선순위들을 가질 수도 있는 그들 다수의 부분들을 포함하는 객체들을 전달하는 것을 필요로 하는 통신 시스템들에서 유용하다.
정적 우선순위의 일 예는, 상이한 부분들이 시간 또는 일부 다른 인과성 (causality) 차원 중 어느 하나에서 서로 관련되거나 또는 의존할 수도 있는, 상이한 부분들에 의존하는 우선순위로 전달되기 위해 그 상이한 부분들로 분할되는 데이터일 것이다. 이 경우, 프로토콜은 수신기로부터 송신기로의 피드백을 가지지 않을 것이다, 즉, 개방-루프일 것이다.
동적 우선순위의 일 예는 엔드 유저가 맵 변화들의 상이한 부분들에 동적으로 그리고 예측할 수 없게 집중할 때 2차원 맵 정보를 엔드 유저에게 동적으로 부분적으로 전달하는 프로토콜일 것이다. 이 경우, 전달될 맵의 상이한 부분들의 우선순위는, 예컨대, 네트워크 조건들, 수신기 입력 또는 이득, 또는 다른 입력들을 변화시키는 것에 반응해서, 프로토콜의 과정 동안에 피드백에 기초해서만 알려지는 미지의 선험적 (a-priori) 우선순위들에 기초하여 변화한다. 예를 들어, 엔드 유저는 그의 현재 맵 뷰 및 그의 개인적 성향들 및/또는 목표들에서의 정보에 기초하여 맵의 어떤 다음 부분을 보려고 하는지의 측면에서 그의 이득을 변화시킬 수도 있다. 맵 데이터는 사분면들로 그리고, 각각의 사분면 내에서 상이한 정제 (refinement) 레벨들로 분할될 수도 있고, 이에 따라 각각의 사분면의 각각의 레벨에 대해 기본 블록이 있을 것이고, 소스 블록들은 하나 이상의 기본 블록들의 합집합들을 포함할 것이다, 예컨대, 일부 소스 블록들은 하나의 사분면 내에서 상이한 정제 레벨들에 연관된 기본 블록들의 합집합들을 포함할 것인 반면, 다른 소스 블록들은 하나의 정제 레벨의 인접한 사분면들에 연관된 기본 블록들의 합집합들을 포함할 것이다. 이는 폐쇄-루프 프로토콜의 일 예이다.
탄성 소실 코딩을 이용하는 인코더들
본원에서 설명되는 인코더들은 데이터의 임의의 서브세트들에 걸친 인코딩을 허용하는 신규한 코딩을 사용한다. 예를 들어, 두 개의 리페어 심볼들이 그들의 스코프들의 교집합들에서 두 개의 소스 심볼들의 손실로부터 복구할 수 있고, 각각의 리페어 심볼이 그들의 스코프 내에 있지만 다른 리페어 심볼의 스코프 내에 있지 않은 데이터 심볼들로부터 하나의 데이터 심볼의 손실을 복구할 수 있는 그런 방식으로, 하나의 리페어 심볼은 데이터 심볼들의 하나의 세트에 걸쳐 인코딩할 수 있는 반면 제 2 리페어 심볼은 데이터 심볼들의 제 2 세트에 걸쳐 인코딩할 수 있다. 탄성 코드들의 하나의 이점은 그것들이 복구 능력들 및 엔드 대 엔드 대기시간 사이에 융통성 있는 타협을 제공할 수 있다는 것이다. 그런 코드들의 다른 이점은, 최고 우선순위 데이터를 위해 제공된 리페어가 최고 우선순위 데이터의 복구에 단독으로는 충분하지 않는 경우에도, 최고 우선순위 데이터에 단독으로 제공된 보호가 전체 데이터를 복구하기 위해 전체 데이터에 제공되는 데이터와 조합될 수 있는 그런 방식으로, 그 코드들이 상이한 우선순위들의 데이터를 보호하기 위해 사용될 수 있다는 것이다.
이들 코드들은 피드백이 없는 경우들에서 그리고 프로토콜 내에 피드백이 있는 경우들에서 완전한 프로토콜 설계들에 유용하다. 프로토콜에 피드백이 있는 경우에, 코드들은 제공된 보호 및 코딩으로 인해 추가된 대기시간의 최선의 조합을 제공하기 위해 피드백에 기초하여 동적으로 변화될 수 있다.
각각의 소스 심볼이 단지 하나의 소스 블록에만 속하는 - 단일 소스 스코프들을 가짐으로써 블록 코드들은 탄성 코드들을 이용하는 퇴보한 경우로 간주될 수 있다. 탄성 코드들을 이용하여, 소스 스코프 결정은 완전히 유연해질 수 있으며, 소스 심볼들은 다수의 소스 스코프들에 속할 수 있으며, 소스 스코프들은 사전 정의된 정규 패턴과는 달리 그때그때 (on-the-fly) 결정될 수 있으며, 소스 데이터의 밑에있는 구조에 의해 결정될 수 있고, 전송 조건들 또는 다른 팩터들에 의해 결정될 수 있다.
도 4는, 박스들의 하위 행이 소스 심볼들을 나타내고 그 심볼들 위쪽의 브래이싱 (bracing) 은 소스 블록들의 엔벨로프를 나타내는 일 예을 도시한다. 이 예에서, 세 개의 소스 블록들이 있고 이에 따라 소스 블록들 중 각각의 하나마다 인코딩되는 세 개의 인코딩된 블록들이 있을 것이다. 이 예에서, 소스 블록들이 기본 블록들로부터 형성된다면, 기본 블록 구분들이 화살표들로 나타내어지는 5 개의 기본 블록들이 있을 수 있다.
대체로, 탄성 코드들을 이용하는 인코더들 및 디코더들은, 소스 블록들의 일부가 중첩되어 있고 적어도 일부 경우들에서는 전적으로 다른 소스 블록들의 서브세트들이 아닌, 소스 심볼들의 각각이 하나의 기본 블록 내에 있지만 하나보다 많은 소스 블록, 또는 소스 스코프 내에 있을 수 있는 경우, 즉, 일부 소스 심볼들을 공통으로 가지지만 또한 각각이 소스 블록들 중 하나에 존재하지만 다른 하나에는 존재하지 않는 일부 소스 심볼들을 가지는 적어도 2 개의 소스 블록들이 있는 경우에 동작할 것이다. 소스 블록은 리페어 심볼들이 생성되는 단위, 즉, 리페어 심볼들의 스코프이며, 그래서 하나의 소스 블록에 대한 리페어 심볼들은 그 소스 블록 내에 있지 않은 소스 심볼들에 독립적일 수 있으며, 이에 의해 그 소스 블록의 인코딩된, 수신된, 및/또는 리페어 심볼들을 이용하여, 다른 소스 블록의 인코딩된, 수신된, 또는 리페어 심볼들에 액세스하기 위해 디코더를 필요로 하지 않으면서도, 소스 블록의 소스 심볼들의 디코딩을 허용한다.
소스 블록들의 스코프들의 패턴은 임의적일 수 있으며, 및/또는 목적지 디코더의 필요 또는 요구에 의존할 수 있다. 일부 구현예들에서, 소스 스코프는 그때그때 결정될 수 있으며, 소스 데이터의 밑에있는 구조에 의해 결정될 수 있으며, 전송 조건들에 의해 결정될 수 있으며, 및/또는 다른 팩터들에 의해 결정될 수 있다. 주어진 소스 블록으로부터 생성될 수 있는 리페어 심볼들의 수는 각각의 소스 블록에 대해 동일할 수 있거나, 또는 가변할 수 있다. 주어진 소스 블록로부터 생성된 리페어 심볼들의 수는 코드 레이트에 기초하여 고정될 수도 있거나 또는 연쇄 반응 코드들의 경우에서처럼 소스 블록에 독립적일 수도 있다.
전통적인 블록 코드들 또는 연쇄 반응 코드들의 경우에, 소스 심볼들을 복구하기 위해 서로 조합하여 디코더에 의해 사용되는 리페어 심볼들은 보통 단일 소스 블록으로부터 생성되는 반면, 본원에서 설명되는 탄성 코드들로써, 리페어 심볼들은 소스 데이터의 임의의 부분들로부터, 그리고 소스 데이터의 중복 부분들로부터 생성될 수 있고, 소스 블록들에 대한 소스 심볼들의 매핑은 유연하게 될 수 있다.
선택된 설계 고려사항들
효율적인 인코딩 및 디코딩은 탄성 코드들의 설계에서 주된 관심사이다. 예를 들어, 이상적인 효율은 복구된 소스 심볼들의 수에서 선형적인 심볼 연산들의 수를 이용하여 디코딩할 수 있는 탄성 코드에서 발견될 것이고 이에 따라 복구를 위해 억지 방법들보다 실질적으로 더 적은 심볼 연산들을 이용하는 임의의 디코더가 바람직할 수 있으며, 전형적으로 억지 방법은 복구된 소스 심볼들의 수에 대해 이차방정식인 심볼 연산들의 수를 필요로 한다.
최소 수신 오버헤드를 이용한 디코딩이 또한 목표인데, "수신 오버헤드 (reception overhead)"는 이전에 설명된 이상적인 복구 속성들을 달성하는데 필요한, 디코더에 의해 요구된 것을 넘어서는, 여분의 인코딩 심볼들의 수로서 표현될 수 있다. 더욱이, 보장된 복구, 또는 높은 확률 복구, 또는 매우 높은 우도 복구, 또는 일반적으로 높은 신뢰성 복구가 바람직할 수 있다. 다르게 말하면, 일부 애플리케이션들에서, 목표는 완전한 복구일 필요는 없다.
탄성 코드들은 다수의 환경들에서 유용하다. 예를 들어 계층화 코딩 (layered coding) 으로, 리페어 심볼들의 제 1 세트가 높은 우선순위 데이터의 블록을 보호하기 위해 제공되는 한편, 리페어 심볼들의 제 2 세트는 높은 우선순위 데이터 블록 및 낮은 우선순위 데이터 블록의 조합을 보호하여, 높은 우선순위 데이터 블록이 별도로 인코딩되었고 낮은 우선순위 데이터 블록이 별도로 인코딩되었다면 디코딩에서 더 적은 심볼들을 필요로 한다. 계층화 코딩을 위해서지만, 종종 중복 소스 블록들의 합집합들의 효율적인 디코딩을 달성하는 것의 실패 및/또는 높은 신뢰성 복구를 달성하는 것의 실패를 대가로 일부 알려진 코드들이 제공된다.
아래에서 설명되는 탄성 윈도우 기반 코드들은 동시에 중복 소스 블록들의 합집합들의 효율적이고 높은 신뢰성의 디코딩을 달성할 수 있고 또한 계층화 코딩의 경우에서도 그렇게 할 수 있다.
네트워크 코딩과의 조합
다른 환경에서, 원래의 노드가 소스 데이터의 인코딩을 상이한 손실 패턴들을 경험할 수도 있는 중간 노드들로 전송하고 중간 노드들은 수신되는 인코딩 데이터의 일부분으로부터 생성된 인코딩 데이터를 목적지 노드들에 전송하는 네트워크 코딩이 사용된다. 목적지 노드들은 그 다음에 다수의 중간 노드들로부터 수신되는 수신된 인코딩 데이터를 디코딩함으로써 원래의 소스 데이터를 복구할 수 있다. 탄성 코드들은 결과적인 해결책이 원래의 소스 데이터의 효율적 및 고 신뢰성 복구를 제공하는 네트워크 코딩 프로토콜 내에서 사용될 수 있다.
탄성 화현 코드들의 간단한 구성
설명의 목적으로, 인코더가 탄성 화현 코드들의 간단한 구성을 제공하는 리페어 심볼들의 세트를 다음과 같이 생성한다고 가정한다. 이 간단한 구성은 반드시 탄성 화현 코드들은 아닌 탄성 코드들을 제공하도록 확장될 수 있으며, 이 경우 리페어 심볼 및 그것의 이웃 세트 또는 스코프의 식별 (identification) 은 여기서 설명되는 식별의 확장이다. GF(256) 에서의 엘리먼트들을 갖는 m x n 행렬 A 를 생성한다. i-번째 행 및 j-번째 열의 엘리먼트를 A ij 에 의해 그리고 소스 심볼들을 j = 0, 1, 2,....에 대한 S j 에 의해 표시한다. 그 다음에, e, li 가 정수들인 임의의 튜플 (e, l, i) 에 대해, el > 0 이며 0 ≤ i < m 이고 리페어 심볼 R e ,l,i 는 수학식 1에서 나타낸 바와 같은 값을 갖는다.
Figure pct00009
(수학식 1)
잘 정의될 R e ,l,i 에 대해, GF(256) 의 엘리먼트에 의한 심볼의 곱셈의 개념 및 심볼들의 합산의 개념이 특정되어야 한다는 것에 주의한다. 예들에서, 본원에서, GF(256) 의 엘리먼트들은 옥텟들로서 표현되고 옥텟들의 시퀀스일 수 있는 각각의 심볼은 GF(256) 의 엘리먼트들의 시퀀스로서 생각된다. 필드 엘리먼트에 의한 심볼의 곱셈은 동일한 필드 엘리먼트에 의한 심볼의 각각의 엘리먼트의 곱셈을 수반한다. 심볼들의 합산은 단순히, 합산될 심볼들에서의 대응하는 필드 엘리먼트들의 합들의 연접 (concatenation) 으로부터 형성된 심볼이다.
주어진 리페어 심볼에 대해 수학식 1에서 보이는 소스 심볼들의 세트는 리페어 심볼의 "스코프"로서 알려져 있는 반면, 그들 리페어 심볼들의 각각에 대해 수학식 1에서 보이는 주어진 소스 심볼을 가지는 리페어 심볼들의 세트는 주어진 소스 심볼의 "이웃"이라고 지칭된다. 따라서, 이 구성에서, 리페어 심볼의 이웃 세트는 리페어 심볼의 스코프와 동일하다.
코드의 인코딩 심볼들은 그러면 본원에서 정의된 바와 같이, 소스 심볼들뿐만 아니라 리페어 심볼들을 포함한다, 즉, 구성된 코드는 체계적이다.
두 개의 상이한 탄성 코드들에 대응하는, 행렬 A 에 대한 두 개의 대안적 구성들을 고려한다. "랜덤 화현 코드 (Random Chord Code)"에 대해, A의 엘리먼트들은 GF(256) 의 영이 아닌 엘리먼트들로부터 의사 랜덤으로 선택된다. 달리 나타내어지지 않는 한, 어떤 것이 랜덤으로 선택되는 것이라고 설명되는 경우, 의사-랜덤 선택이 그 설명에 포함되고, 더 일반적으로는, 랜덤 동작들이 의사 랜덤으로 수행될 수 있다는 것이 가정되어야 한다는 것이 본원 전체에 걸쳐 이해되어야 한다. "코시 화현 코드 (Cauchy Chord Code)"에 대해, A의 엘리먼트들은 수학식 2에서 도시된 바와 같이 정의되며, 여기서 k = 255 - m 이고, g(x) 는 옥텟 표현이 x 인 유한 필드 엘리먼트이다.
Figure pct00010
(수학식 2)
탄성 화현 코드들의 간단한 구성을 이용한 인코딩으로부터 심볼들을 디코딩
인코딩 심볼들 자체 뿐만 아니라, 디코더는 각각의 심볼에 대한 인덱스일 수 있는 식별하는 정보에 액세스할 수 있다, 즉 소스 심볼 S j 에 대해, 식별하는 정보는 인덱스 j 이다. 리페어 심볼 R e,l,i 에 대해, 식별하는 정보는 트리플 (e, l, i) 이다. 물론, 디코더는 또한 행렬 A 에 액세스할 수 있다.
각각의 수신된 리페어 심볼에 대해, 디코더는 식별하는 정보를 결정하고 알려지면 소스 심볼 값들을 그리고 소스 심볼 값이 알려지지 않으면 영의 심볼을 이용하여 수학식 1로부터 그 리페어 심볼에 대한 값을 계산할 수 있다. 그렇게 계산된 값이 수신된 리페어 심볼에 가산되는 경우, 리페어 심볼이 올바르게 수신되었다고 가정하면, 그 결과는 리페어 심볼의 스코프 또는 이웃에서의 나머지 미지의 소스 심볼들 전체에 걸친 합이다.
단순화를 위해, 이 설명은 적어도 하나의 수신된 리페어 심볼의 스코프 내에 있는 모든 미지의 소스 심볼들을 복구하기 위해 시도하도록 프로그래밍된 디코더를 가진다. 이 개시물을 읽으면, 전부 미만, 또는 높은 확률이지만 확실하지는 않은 모두, 또는 그것들의 조합을 복구하도록 디코더를 수정하는 방법이 명확해져야 한다.
이 예에서, t 를 수신된 리페어 심볼들의 스코프들의 합집합 내에 있는 미지의 소스 심볼들의 수라 하고 j 0, j 1, ..., j t -1 을 이들 미지의 소스 심볼들의 인덱스들이라고 한다. u 를 수신된 리페어 심볼들의 수라고 하고 수신된 리페어 심볼들을 (임의로) R 0 , ..., R u -1 이라고 나타낸다.
E pq 가 리페어 심볼 R p 에 대한 수학식 1에서의 소스 심볼
Figure pct00011
의 계수이거나 또는
Figure pct00012
가 그 수학식에서 보이지 않는다면 영인 엔트리들 E pq 를 갖는 u x t 행렬 E 를 구성한다. 그러면,
Figure pct00013
가 누락 소스 심볼들의 벡터이고
Figure pct00014
가 스텝 1을 적용한 후의 수신된 리페어 심볼들의 벡터이면, 수학식 3에서의 표현은 충족될 것이다.
Figure pct00015
(수학식 3)
E 가 랭크 u 를 가지지 않는다면, E의 랭크를 변화시키는 일 없이 제거될 수 있는 E의 행이 존재한다. 이것을 제거하며, u 를 1만큼 감소시키고 남아있는 리페어 심볼들을 다시 번호매겨서 수학식 3은 여전히 유지된다. 이 스텝은 E 가 랭크 u 를 가질 때까지 반복된다.
u = t 이면, 완전한 디코딩이 가능하며, E 는 풀 랭크의 제곱이고 그러므로 가역 (invertible) 이다. E 가 가역이므로, SE -1 R 로부터 찾아낼 수 있고 디코딩은 완료된다. u < t 이면, 소스 심볼들의 이 서브세트의 부가적인 소스 및/또는 리페어 심볼들의 수신 없이 또는 일부 다른 방안 (avenue) 으로부터의 소스 심볼들에 관한 다른 정보를 가지지 않고서는 완전한 디코딩은 가능하지 않다.
u < t 이면, E' 를 풀 랭크의 Eu x u 서브-행렬이라고 한다. 적합한 열 순열로써, E 는 (E'|U) 라고 쓸 수 있으며, 여기서 Uu x (t-u) 행렬이다. 수학식 3의 양 변들에 E'-1 을 곱하면, E -1 R 의 행들에 대응하는 소스 심볼들에 해를 제공하며 E'-1 U 는 영인 수학식 4의 표현이 획득된다.
Figure pct00016
(수학식 4)
수학식 4는 추가의 리페어 및/또는 소스 심볼들이 수신된다면 나머지 소스 심볼들의 더 간단한 복구를 허용한다.
적어도 하나의 수신된 리페어 심볼의 스코프 내에 있는 모든 미지의 소스 심볼들의 복구가 가능하지 않은 경우에도 소스 심볼들의 다른 부분들의 복구는 가능할 것이다. 예를 들어, 얼마간의 미지의 소스 심볼들이 적어도 하나의 수신된 리페어 심볼의 스코프 내에 있더라도, 미지의 소스 심볼들을 복구하기 위한 충분한 리페어 심볼들이 없는 경우, 또는 리페어 심볼들 및 미지의 소스 심볼들 사이의 수학식들의 일부가 선형적으로 의존하는 경우가 있을 수도 있다. 이들 경우들에서, 소스 심볼들의 더 작은 서브세트 내에 있는 스코프들을 갖는 그들 리페어 심볼들만을 이용하여 적어도 소스 심볼들의 더 작은 서브세트를 복구하는 것이 가능할 수도 있다.
탄성 화현 코드들의 간단한 구성을 이용한 스트림 기반 디코더
"스트림" 동작 모드에서, 스트림 및 리페어 심볼들로부터의 소스 심볼들은 리페어가 생성되는 때에 소스 심볼들의 접미부 (suffix) 전체에 걸쳐 생성된다. 이 스트림 기반 프로토콜은 위에서 설명된 탄성 화현 코드들의 간단한 구성을 이용한다.
디코더에서, 소스 및 리페어 심볼들은 가능하게 일부 재정렬과 함께 하나씩 도착하고, 소스 또는 리페어 심볼이 도착하자마자, 디코더는 임의의 손실된 소스 심볼이 디코딩가능한지의 여부를 식별한 다음, 이 소스 심볼을 디코딩하고 디코더의 출력에 전달할 수 있다.
이를 달성하기 위해, 디코더는 행렬
Figure pct00017
를 유지하고 아래의 프로시저들에 따라 새로운 소스 또는 리페어 심볼이 수신되는 때마다 업데이트한다.
D 가 "디코딩 행렬"
Figure pct00018
를 나타낸다고 한다. D ij 가 포지션 (i, j) 의 엘리먼트를 나타낸다고 하며, D *j Dj-번째 열을 나타내고 D i * Di-번째 행을 나타낸다고 한다.
아래에서 설명되는 프로시저들에서, 디코더는 디코딩 행렬에 대한 다양한 동작들을 수행한다. 동등한 동작들이 디코딩을 이루기 위해 리페어 심볼들에 대해 수행된다. 이것들은 행렬 연산들과 동시에 수행될 수 있지만, 일부 구현예들에서, 이들 동작들은 실제 소스 심볼들이 아래에서 설명되는 RecoverSymbols 프로시저에서 복구되기까지 지연된다.
소스 심볼의 수신 시, 소스 심볼이 누락 소스 심볼들 중 하나,
Figure pct00019
이면, 디코더는 D 의 대응하는 열을 제거한다. 제거된 열이 제 1 u 개 열들 중 하나이었다면, 디코더는 제거된 열에서 영이 아닌 엘리먼트를 가지는 행에 연관된 리페어 심볼을 식별한다. 디코더는 그 다음에 이 리페어 심볼의 수신을 위해 아래에서 설명되는 프로시저를 반복한다. 제거된 열이 제 1 u 개 열들 중 하나가 아니었다면, 디코더는 아래에서 설명되는 RecoverSymbols 프로시저를 수행한다.
리페어 심볼의 수신 시, 먼저 디코더는 새로운 리페어 심볼의 스코프 내에 있지만 D의 열에 미리 연관되지 않은 현재 미지인 각각의 소스 심볼마다 새로운 열을 D 에 가산한다. 다음으로, 디코더는 수신된 리페어 심볼에 대해 새로운 행 D u* D 에 가산하여, 이 행을 수학식 1로부터의 계수들이 차지하게 한다.
0 부터 u-1 까지를 포함하는 i 에 대해, 디코더는 D u * 를 (D u * - D ui D i *) 로 교체한다. 이 단계는 D u * 의 제 1 u 개 엘리먼트들이 제거되게 (즉, 영으로 감소되게) 한다. D u * 가 이 제거 단계 후에 영이 아니면, 디코더는 (필요하면) 열 교환들을 수행하여 D uu 가 영이 아니게 하고 D u * 를 (D uu -1D u * ) 로 교체시킨다.
u-1 부터 0까지를 포함하는 i 에 대해, 디코더는 D i * 를 (D i * - D iu D u *) 로 교체시킨다. 이 단계는 행 u 를 제외하고는 열 u 의 엘리먼트들이 제거되게 (즉, 영으로 감소되게) 한다.
행렬은 이제 다시 한번
Figure pct00020
의 형태이고 디코더는 u:= u+1 로 설정할 수 있다.
RecoverSymbols 프로시저를 수행하기 위해, 디코더는 영이 되는 E'-1U 의 각각의 행, 또는 E'-1U 가 빈 것이라면 D 의 모든 행들을 고려한다. D 의 그 행에서 열이 영이 아닌 소스 심볼은 복구될 수 있다. 복구는 리페어 심볼들에 대한 저장된 연산들의 시퀀스를 수행함으로써 달성된다. 구체적으로는, 디코더가 행 D i * 를 (D i * - αㆍD j *) 로 교체하는 경우마다, 그것은 또한 대응하는 리페어 심볼 R i 를 (R i - αㆍR i ) 로 교체하고 행 D i * 가 (αㆍD i * ) 로 교체되는 경우마다, 그것은 리페어 심볼 R i 를 αㆍR i 로 교체한다.
연산들이 수행되는 순서는 중요하고 행렬 연산들이 수행되었던 순서와 동일하다는 것에 주의한다.
일단 동작들이 수행되었다면, 영인 E'-1U 의 각각의 행에 대해, 대응하는 리페어 심볼은 이제, D 의 그 행에서 열이 영이 아닌 소스 심볼의 값과 동일한 값을 가지고, 심볼은 그러므로 복구 완료된다. 이 행 및 열은 그 다음에 D 로부터 제거된다.
일부 구현예들에서, 심볼 연산들은 적어도 하나의 심볼이 복구될 수 있는 것이 식별되는 경우에만 수행될 수 있다. 심볼 연산들은 D 의 모든 행들에 대해 수행되지만 모든 누락 심볼들이 복구되게 하지 않을 것이다. 디코더는 그러므로 어떤 리페어 심볼들이 "처리되었"는지와 어떤 것이 처리되지 않았는지를 추적하고 추가의 행렬 연산들이 수행될 때 처리된 심볼들을 최신으로 유지하기 위해 주의한다.
이 "스트림" 모드에서, 탄성 코드들의 속성은 의존도들이 과거 속으로 무한하게 늘려질 수도 있고 그래서 디코딩 행렬 D 는 임의로 크게 성장할 수도 있다는 것이다. 실제로, 구현예는 D 의 사이즈에 대한 제한을 설정해야 한다. 실제 애플리케이션들에서는 종종, 임의의 주어진 소스 심볼의 전달에 대한 "기한" 즉, 그 후에 위의 프로토콜 계층에 대해 쓸모 없게 되는 또는 그 후에 위의 프로토콜 계층이 손실된 심볼 없이 어떻게든지 진행한다고 말해지는 시간이 있다.
D 의 최대 사이즈는 이 제약에 기초하여 설정될 수도 있다. 그러나, 주어진 소스 심볼이 결코 애플리케이션에 전달되지 않을 경우라도 탄성 코드 디코더가 그 주어진 소스 심볼을 복구하데 유용할 수도 있는 정보를 보유하는 것이 유익할 수도 있다. 이는 대안이 해당 소스 심볼에 의존하는 모든 리페어 심볼들을 버리는 것이고 그들 리페어 심볼들의 일부가 기한이 경과하지 않은 상이한 소스 심볼들을 복구하는데 이용될 수도 있는 경우이기 때문이다.
D 의 사이즈에 대한 대안적 제한은 탄성 코드 디코더에 저장된 정보의 총량에 관련된다. 일부 구현예들에서, 수신된 소스 심볼들은 원형 버퍼에서 버퍼링되고 전달 완료된 심볼들은 유지되는데, 이것들이 그 뒤에 수신된 리페어 심볼들을 해석하는데 (예컨대, 위의 수학식 1에서 값들을 계산하는데) 필요할 수도 있어서이다. 소스 심볼이 (버퍼가 채워짐으로 인해) 최종적으로 버려지는 경우, 스코프가 그 심볼을 포함하는 임의의 (처리되지 않은) 리페어 심볼들을 버리는 (또는 처리하는) 것이 필요하다. 이 사실, 및 소스 버퍼 사이즈가 주어지면, 가능하게 행렬 D 는 스코프들이 소스 버퍼 내의 모두인 수신될 것이 예상되는 최대 수의 리페어 심볼들을 수용하기 위한 사이즈로 되어야 한다.
대안적 구현예는 위에서 설명된 이상적 복구 속성에 따라 성공적인 디코딩의 가능성이 있었을 경우에만 행렬 D 를 구성하도록 하는 것이다.
컴퓨테이션 복잡도
위에서 설명된 코드의 컴퓨테이션 복잡도는 심볼 연산들에 의해 주도된다.
심볼들의 가산은 심볼들의 비트단위 (bitwise) 배타적 OR일 수 있다. 이는 64 또는 128 비트들의 데이터에 대해 한 번에 XOR 동작을 수행할 수 있는 광폭 (wide) 레지스터들 (예컨대, x86 아키텍처를 추종하는 CPU들 상의 SSE 레지스터들) 의 사용에 의해 일부 프로세서들에 대해 효율적으로 달성될 수 있다. 그러나, 프로세서들이 일반적으로 유한 필드 연산들에 대해 네이티브 명령들을 제공하지 않고 그러므로 룩업 테이블들은 사용되어야만 하기 때문에, 유한 필드 엘리먼트에 의한 심볼들의 곱셈은 종종 바이트 단위로 수행되어야만 하며, 이는 처리 중인 데이터와는 다른 메모리에 대한 액세스를 포함하여, 각각의 바이트 곱셈이 여러 프로세서 명령들을 필요로 한다는 것을 의미한다.
인코더에서, 위의 수학식 1은 각각의 리페어 심볼을 계산하는데 이용된다. 이는 l 회 심볼 곱셈들 및 l-1 회 심볼 가산들을 수반하며, 여기서 l 은 리페어 심볼의 스코프에서의 소스 심볼 수이다. 각각의 소스 심볼이 정확히 r 개 리페어 심볼들에 의해 보호되면, 총 복잡도는 O(rㆍk) 회 심볼 연산들이며, 여기서 k 는 소스 심볼 수이다. 대안으로, 각각의 리페어 심볼이 l 개 소스 심볼들의 스코프 또는 이웃 세트를 가진다면, 생성된 리페어 심볼 당 컴퓨테이션 복잡도는 O(l) 회 심볼 연산들이다. 본원에서 사용되는 바와 같이, 표현 O() 는 기존의 함수"의 차수 (on the order of)"라고 이해되어야 한다.
디코더에서, 복잡도에 대한 두 개의 성분들인, 수신된 소스 심볼들의 제거 및 손실된 소스 심볼들의 복구가 있다. 제 1 성분은 인코딩 동작, 즉, O(rㆍk) 심볼 연산들과 동일하다. 제 2 성분은 u x u 행렬 E의 반전으로부터 생긴 심볼 연산들에 대응하며, 여기서 u 는 손실된 소스 심볼들의 수이고, 이에 따라 복잡도 O(u 2) 인 심볼 연산들을 가진다.
낮은 손실 레이트들에 대해, u 는 작고 그러므로, 모든 리페어 심볼들이 디코더에서 사용된다면, 인코딩 및 디코딩 복잡도는 유사할 것이다. 그러나, 리페어 심볼들의 수와 복잡도 스케일들의 주요 성분 때문에, 모든 리페어 심볼들이 사용되지 않는다면, 복잡도는 감소해야 한다.
위에서 지적했듯이, 일 구현예에서, 리페어 심볼들의 프로세싱은 데이터가 복구될 수 있다는 것이 알려지기까지 지연된다. 이는 심볼 연산들과 그래서 코드의 컴퓨테이션 요건들을 최소화한다. 그러나, 그것은 디코딩 활동의 버스트 (bursts) 을 발생시킨다.
대안적 구현예는 심볼들이 도착할 때 (수학식 1을 이용하여) 수신된 소스 심볼들에 대한 제거 동작들을 수행함으로써 컴퓨테이션 부하를 없앨 수 있다. 이는 리페어 심볼들이 모두 사용되지 않는 경우에도, 모든 리페어 심볼들에 대한 제거 동작들이 수행되게 하며, 그것은 컴퓨테이션 복잡도가 더 높아지 (지만 더 안정되) 게 한다. 이것이 가능해지도록 하기 위해, 디코더는 어떤 리페어 심볼들이 생성될 지에 관해 미리 정보를 가지고 있어야만 하며, 이는 모든 애플리케이션들에서 가능한 것은 아닐 수도 있다.
디코딩 확률
이상적으로, 모든 리페어 심볼은 그 리페어 심볼이 수신되기 전에 그것의 스코프에서의 모든 소스 심볼들이 미리 복구되거나 또는 수신되기 때문에 용장적 (redundant) 이거나, 또는 손실된 소스 심볼을 복구하는데 유용하다. 얼마나 빈번하게 이것이 참인지는 코드의 구성에 의존한다.
이 이상적인 것으로부터의 편차는 제거 단계들 후에 새로운 수신된 리페어 심볼이 D 에 가산되는 영의 행이 되는 경우에 디코더 로직에서 검출될 것이다. 이러한 심볼은 새로운 정보를 디코더에 전달하지 않고 이에 따라 불필요한 프로세싱을 피하기 위해 버려진다.
랜덤 GF(256) 코드 구현예의 경우, 이는, 새로운 랜덤 행이 풀 랭크 (full rank) 의 GF(256) 에 대해 u x u+1 행렬에 가산되는 경우, 결과적인 u x u 행렬이 풀 랭크를 가지지 않을 확률이 1/256 이라는 사실에 기초하여, 256 중에서 대략 1 리페어 심볼에 대한 경우가 될 수 있을 수도 있다.
코시 코드 구현예의 경우에서, 블록 코드로서 사용될 때 그리고 소스 및 리페어 심볼들의 총 수가 256 미만일 경우, 실패 확률은 영이다. 이러한 코드는 리드-솔로몬 코드에 해당한다.
블록 모드 결과들
블록 코드로서 사용되는 (즉, k 개 소스 심볼들의 전체 세트와 동일한 스코프를 갖는 수의 리페어 심볼들 전체를 생성하는) 탄성 화현 코드들의 테스트들에서, 고정된 블록 사이즈 (k = 256) 및 리페어 양 (r = 8) 에 대해, 인코드 속력 및 디코드 속력은 약 200 바이트를 초과하는 가변하는 블록 사이즈들에 대해 거의 동일하지만, 그 미만에서, 속력은 떨어진다. 이는 그럴 것 같은데 200 바이트 심볼들 (또는 조건들에 의존하는 일부 다른 임계값) 미만에서, 심볼 연산들을 결정하는데 필요한 로직의 오버헤드가 심볼 연산들 자체에 비해 상당하지만, 더 큰 심볼 사이즈들에 대해 심볼 연산들 자체는 지배적이기 때문이다.
다른 테스트들에서, 고정된 블록 및 심볼 사이즈에 대한 리페어 오버헤드 (r/k) 의 함수로서의 인코딩 및 디코딩 속력은 그 인코딩 및 디코딩 복잡도가 리페어 심볼들의 수에 비례하(고 그래서 속력이 1/r 에 비례하)는 것임을 보여주었다.
스트림 모드 결과들
손실 레이트가 오버헤드보다 훨씬 작은 경우, 평균 대기시간은 낮지만 손실 레이트가 코드 오버헤드에 접근함에 따라 빠르게 증가한다. 이는 손실 레이트가 오버헤드보다 훨씬 작은 경우에, 대부분의 손실들이 단일 리페어 심볼을 이용하여 복구될 수 있기 때문에 예상할 수 있는 것이다. 손실 레이트가 증가함에 따라, 다수의 손실들이 단일 리페어 심볼의 스코프 내에서 발생하는 경우들을 더 자주 직면하고 이는 더 많은 리페어 심볼들이 이용되는 것을 필요로 한다.
일어날 수 있는 다른 미세 튜닝 (fine-tuning) 은 위의 예들에서 256이었던, 심볼들의 가변하는 스팬 (span) 의 영향을 고려하는 것이다 (스팬은 얼마나 많은 소스 심볼들이 리페어 심볼의 스코프 또는 이웃 세트 내에 있느냐이다). 스팬을 감소시키면, 고정된 오버헤드에 대해, 각각의 소스 심볼을 보호하는 리페어 심볼들의 수가 감소하고 그래서 이것이 잔차 에러 레이트를 증가시킬 것이라고 예상한다. 그러나, 스팬을 감소시키는 것은 또한 인코더 및 디코더 양쪽 모두에서 컴퓨테이션 복잡도를 감소시킨다.
파운틴 블록 코드인 윈도우 기반 코드
많은 인코더들 및 디코더들에서, 인코딩 및 디코딩에 할당된 컴퓨팅 전력 및 시간의 양은 제한된다. 예를 들어, 디코더가 배터리-파워형 핸드헬드 디바이스내에 있는 경우, 디코딩은 효율적이어야 하지만 과도한 컴퓨팅 전력을 필요로 하지 않아야 한다. 인코딩 및 디코딩 동작들에 필요한 컴퓨팅 전력의 하나의 측정값은 심볼들의 특정 세트를 디코딩하는데 필요한 심볼 연산들 (두 개의 심볼들 가산, 곱셈, XORing, 복사 등) 의 수이다. 코드는 이것을 염두에 두고 설계되어야 한다. 정확한 연산 수는 미리 알려지지 않을 것이지만, 그것이 어떤 인코딩 심볼들이 수신되는지 및 얼마나 많은 인코딩 심볼들이 수신되는지에 기초하여 가변할 것이므로, 평균적 경우 또는 최악의 경우를 결정하고 그에 따라 설계를 구성하는 것이 종종 가능하다.
이 섹션은, 효율적인 인코딩 및 디코딩의 일부 양태들을 나타내는 아래에서 추가로 설명되는 탄성 코드들의 일부의 기반이 되는 본원에서 "윈도우 기반 코드"라고 불리는 새로운 유형의 파운틴 블록 코드를 설명한다. 먼저 설명된 바와 같은 윈도우 기반 코드는 비-체계적 코드이지만, 아래에서 추가로 설명되는 바와 같이, 이것을 본 개시물을 읽으면 명확하게 될 체계적 코드로 변환하는 방법들이 있다. 이 경우, 각각의 인코딩 심볼의 스코프는 K 개 소스 심볼들의 전체 블록이지만, 각각의 인코딩 심볼의 이웃 세트는 훨씬 더 희박하여, B << K 이웃들로 구성되고, 상이한 인코딩 심볼들의 이웃 세트들은 보통 매우 상이하다.
K 개 소스 심볼들의 블록 고려한다. 인코더는 다음과 같이 작동한다. 우선, 인코더는 블록을 각 측에서 B 개의 영의 심볼들로 (논리적으로 또는 실제로) 채워서 K+2B 개 심볼들, X 0, X 1, ..., X K +2 B - 1 의 연장된 블록을 형성한다, 즉, 처음 B 개 심볼들 및 마지막 B 개 심볼들은 영의 심볼들이고, 중간의 K 개 심볼들은 소스 심볼들이다. 인코딩 심볼을 생성하기 위해, 인코더는 1 및 K+B-1 사이에서 시작 포지션 t 를 랜덤으로 선택하고 적합한 유한 필드 (예컨대, GF(2) 또는 GF(256)) 로부터 값들 α0, ..., α B -1 을 랜덤으로 또는 의사 랜덤으로 선택한다. 인코딩 심볼 값 ESV 는 그 다음에 인코더에 의해 수학식 5의 공식을 이용하여 계산되며, 이 경우 생성된 인코딩 심볼의 이웃 세트는 연장된 블록 내의 포지션들 t 내지 t+B-1 에서의 심볼들 중에서 선택된다.
Figure pct00021
(수학식 5)
디코더는, 적어도 K 개 인코딩 심볼들을 수신 시, 디코딩하기 위해 연장된 블록 내의 소스 심볼들의 포지션들 전체에 걸쳐 왕복 스위프를 이용한다. 제 1 스위프는 제 1 포지션의 소스 심볼로부터 블록의 마지막 포지션의 소스 심볼까지이며, 그 소스 심볼인 s 를 그것을 복구할 수 있는 인코딩 심볼인 e 와 매칭시키며, 나중의 포지션들에서 소스 심볼들을 복구하는데 이용될 수 있는 인코딩 심볼들의 s 에 대한 의존성들을 제거하고, 단순히 s 가 되도록 e 에 대한 s 의 기여도를 조절한다. 제 2 스위프는 마지막 포지션의 소스 심볼로부터 블록의 제 1 포지션의 소스 심볼까지이며, 이전의 포지션들에서의 소스 심볼들을 복구하는데 이용되는 인코딩 심볼들의 그 소스 심볼 s 에 대한 의존성들을 제거한다. 성공적인 왕복 스위프 후, 각각의 소스 심볼의 복구된 값은 그것이 매칭되는 인코딩 심볼의 값이다.
제 1 스위프 프로세스에 대해, 디코더는 모든 수신된 인코딩 심볼들의 세트 E 를 획득한다. 각각의 소스 심볼 s 에 대해, 연장된 블록 내의 포지션 i = B, ..., B+K-1 에서, 디코더는 그것들의 이웃 세트내의 s 를 가지는 E 내의 모든 인코딩 심볼들 중에서 가장 이른 이웃 말단 포지션을 가지는 인코딩 심볼 e 를 선택한 다음 es 에 매칭시키고 E 로부터 e 를 소실한다. 이 선택은 선형 수학식들의 현재 세트 내의 e 에 대한 s 의 기여도가 영이 아닌, 즉, s 가 βse 에 기여하게 하고, 여기서 β≠0 인 그들 인코딩 심볼들 e 사이에서 행해진다. s 의 기여도가 영이 아닌 인코딩 심볼 e 이 없다면, 디코딩은 실패하는데, s 가 디코딩될 수 없기 때문이다. 일단 소스 심볼 s 가 인코딩 심볼 e 와 매칭되면, 인코딩 심볼 e 는 세트 E 로부터 제거되며, 가우스 소거법이 E 내의 모든 인코딩 심볼들에 대한 s 의 기여도를 제거하는데 이용되고, e 에 대한 s 의 기여도는 e 에 대한 s 의 기여도의 계수의 역과 e 를 곱함으로써 간단히 s 가 되도록 조절된다.
디코더의 제 2 스위프 프로세스는 다음과 같이 작동한다. 각각의 소스 심볼 s 에 대해, 소스 포지션 i = K-1, ..., 0 에서, 가우스 소거법이 i 에 대한 이전의 포지션들에서의 소스 심볼들에 매칭되는 E 내의 모든 인코딩 심볼들에 대한s 의 기여도를 제거하는데 이용된다.
디코딩은 수신된 인코딩 심볼들에 의해 정의된 선형 수학식들의 시스템이 랭크 K 인 경우에만 모든 소스 심볼들을 완전히 복구하는 데 성공한다, 즉, 수신된 인코딩 심볼들이 랭크 K 를 가진다면, 위의 디코딩 프로세스는 블록의 K 개 소스 심볼들을 복구하는 것이 보장된다.
생성된 인코딩 심볼 당 심볼 연산 수 B 이다.
인코딩 심볼의 리치 (reach) 는 인코딩 심볼의 이웃인 제 1 포지션 및 인코딩 심볼의 이웃인 마지막 포지션 사이의 연장된 블록 내의 포지션들의 세트가 되도록 정의된다. 위의 구성에서, 각각의 인코딩 심볼들의 리치의 사이즈는 B 이다. 디코딩 심볼 연산들의 수는 디코딩을 위해 이용된 인코딩 심볼들의 리치들의 사이즈들의 합에 의해 제한된다. 이는, 위에서 설명된 매칭 프로세스가 설계되는 방법에 의해, 인코딩 심볼 리치은 디코딩 프로세스 동안 결코 연장되지 않고 각각의 디코딩 심볼 연산은 인코딩 심볼 리치들의 사이즈들의 합을 1만큼 감소시키기 때문이다. 이는 K 개 소스 심볼들을 디코딩하기 위한 심볼 연산 수는 O(KㆍB) 라는 것을 의미한다.
윈도우 기반 코드의 컴퓨테이션 복잡도 및 그것의 복구 속성들 사이에선 타협이 있다. 그것은 만약 B = O(K 1 /2) 이고 유한 필드 사이즈가 충분히 크도록 예컨대, O(K) 로 선택된다면, 블록의 모든 K 개 소스 심볼들은 K 개의 수신된 인코딩 심볼들로부터 높은 확률로 복구될 수 있고, 실패 확률은 각각의 부가적으로 수신된 인코딩 심볼의 함수로서 신속히 감소한다는 간단한 분석에 의해 보여질 수 있다. 윈도우 기반 코드의 복구 속성들은 GF[2] 또는 GF[256] 가 유한 필드로서 각각 이용되고, B = O(K 1 /2) 인 경우에 랜덤 GF[2] 코드 또는 랜덤 GF[256] 코드의 그것들과 유사하다.
유사한 분석은 B = O(ln(K/δ)/ε) 이면 Kㆍ(1+ε) 개 인코딩 심볼들이 수신완료된 후에 블록의 모든 K 개 소스 심볼들이 적어도 1-δ 의 확률로 수신될 수 있다는 것을 보여주는데 이용될 수 있다.
당업자가 인식할 바와 같이, 본원에서 설명되는 윈도우 기반 코드들의 많은 변형예들이 있다. 하나의 예로서, K+2B 개 심볼들의 연장된 블록을 만들지 않고, 대신에 K 개 소스 심볼들로부터 직접 인코딩 심볼들을 생성할 수 있으며, 이 경우 t 는 각각의 인코딩 심볼마다 0 및 K-1 사이에서 랜덤으로 선택되고, 인코딩 심볼 값은 수학식 6에서 보인 바와 같이 컴퓨팅된다. 이 수정된 윈도우 기반 블록 코드에 대해 디코딩하는 하나의 방법은 시작부에서 K 개 소스 심볼들의 B 의 연속적인 세트가 "비활성화되는" 것을 제외하면, 위에서 설명된 것과 유사한 디코딩 프로시저를 이용하는 것이며, 그 디코딩은 이들 B 개 비활성화된 소스 심볼 값들이 알려져 있다고 가정하여 이전에 설명된 바와 같이 진행하며, 인코딩 심볼들 및 B 개 비활성화된 소스 심볼들 사이의 수학식들의 B x B 시스템이 형성되고 풀이된 다음, 이것과 왕복 스위프의 결과들에 기초하여, 나머지 K-B 개 소스 심볼들이 구해진다. 이것이 작동하는 방법의 세부사항은 Shokrollahi-비활성화에서 설명된다.
Figure pct00022
(수학식 6)
체계적 윈도우 기반 블록 코드
위에서 설명된 윈도우 기반 코드들은 비-체계적 코드들이다. 체계적 윈도우 기반 코드들은 이들 비-체계적 윈도우 기반 코드들로부터 구성될 수 있으며, 그렇게 구성된 체계적 코드들의 효율 및 복구 속성들은 그것들이 구성되는 비-체계적 코드의 그것들과 매우 유사하다.
전형적인 구현예에서, K 개 소스 심볼들은 비-체계적 코드에 의해 생성된 제 1 K 개 인코딩 심볼들의 포지션들에 배치되며, 연장된 블록을 획득하기 위해 디코딩되고, 그 다음에 리페어 심볼들이 디코딩된 연장된 블록으로부터 체계적 코드에 대해 생성된다. 이것이 작동하는 방법의 세부사항은 Shokrollahi-체계적에서 설명된다. 이 윈도우 기반 블록 코드에 대한 간단하고 바람직한 그런 체계적 코드 구성이 아래에서 설명된다.
파운틴 블록 코드인 위에서 설명된 비-체계적 윈도우 기반 코드에 대해, 체계적 코드를 구성하기 위하여 제 1 K 개 인코딩 심볼들을 생성하는 바람직한 방법은 다음과 같다. 제 1 K 개 인코딩 심볼들에 대해 1 및 K+B-1 사이에서 시작 포지션 t 를 선택하지 않고, 대신에 다음을 한다. B' = B/2 라고 한다 (B 가 우수라는 일반성의 손실은 없다고 가정한다). 제 1 K 인코딩 심볼들에 대해 t = B', B'+1, ..., B'+K-1 을 선택한다. 제 1 K 개 인코딩 심볼들의 생성에 대해, 그 생성은 정확히 위에서 설명된 바와 같으며, 가능한 예외로, 이미 그 경우가 아니면, 계수 α B' 은 유한 필드의 영이 아닌 엘리먼트가 되도록 선택된다 (이 계수가 영이 아니도록 만드는 것은 디코딩 프로세스가 이 인코딩 심볼로부터 이 계수에 대응하는 소스 심볼을 복구할 수 있다는 것을 보장한다). 이들 인코딩 심볼들이 구성되는 방법에 의해, 이들 제 1 K 개 인코딩 심볼들로부터 블록의 K 개 소스 심볼들을 복구하는 것이 항상 가능하다.
체계적 코드 인코딩 구성은 다음과 같다. K 개 소스 심볼들의 값들을 이전의 단락의 비-체계적 윈도우 기반 코드에서 설명된 프로세스에 따라 생성된 제 1 K 개 인코딩 심볼들의 포지션들에 배치하며, 연장된 블록의 K 개 소스 심볼들을 디코딩하기 위해 비-체계적 윈도우 기반 코드의 왕복 디코딩 프로세스를 이용하고, 그 다음에 왕복 디코딩 프로세스로부터 생기는 디코딩된 소스 심볼들을 포함하는 연장된 블록에 적용되는 비-체계적 윈도우 기반 코드를 이용하여 임의의 부가적인 리페어 심볼들을 생성한다.
인코딩 심볼들에 대한 소스 심볼들의 매핑은 연속적인 소스 심볼들의 버스트들의 손실들 (및 손실의 다른 패턴들) 이 인코딩 심볼들의 임의의 부분, 즉, 소스 및 리페어 심볼들의 임의의 패턴 및 수신 혼재로부터 연장된 블록의 복구능력에 영향을 주지 않는 것을 보장하기 위해 K 의 랜덤 순열 (permutation) 을 이용하여야 한다.
체계적 디코딩 프로세스는 체계적 인코딩 프로세스의 거울 이미지이다. 수신된 인코딩 심볼들은 비-체계적 윈도우 기반 코드의 왕복 디코딩 프로세스를 이용하여 연장된 블록을 복구하는데 이용되고, 그 다음에 비-체계적 윈도우 기반 인코더는 임의의 누락 소스 심볼들, 즉, 제 1 K 인코딩 심볼들 중 누락되어 있는 임의의 것을 인코딩하기 위해 연장된 블록에 적용된다.
디코딩이 인코더에서 일어나고 인코딩이 디코더에서 일어나는, 체계적 인코딩 및 디코딩에 대한 이 접근법의 하나의 이점은, 체계적 심볼들 및 리페어 심볼들이 양쪽 모두의 전체에 걸쳐 일관된 프로세스를 이용하여 만들어질 수 있다는 것이다. 사실, 인코딩 심볼들을 생성하는 인코더의 일부분은 인코딩 심볼들의 K 가 원래의 K 개 소스 심볼들에 정확히 매칭되도록 일어날 것임을 알고 있는 것조차 필요하지 않다.
파운틴 탄성 코드인 윈도우 기반 코드
윈도우 기반 코드인 파운틴 블록 코드는, 효율적이고 양호한 복구 속성들을 가지는 파운틴 탄성 코드를 구성하기 위한 기초로서 사용될 수 있다. 구성의 설명을 단순화하기 위해, 동일한 사이즈의 다수의 기본 블록들 X 1, ..., X L 이 존재하는, 즉, L 개 기본 블록들의 각각이 K 개 소스 심볼들을 포함하는 경우의 구성을 설명한다. 당업자들은 이들 구성들 및 방법들이 기본 블록들이 모두 동일한 사이즈가 아닌 경우로 연장될 수 있다는 것을 인식할 것이다.
이전에 설명된 바와 같이, 소스 블록은 L 개 기본 블록들의 임의의 비어있지 않은 서브세트의 합집합을 포함할 수도 있다. 예를 들어, 하나의 소스 블록은 제 1 기본 블록을 포함할 수도 있고 제 2 소스 블록은 제 1 및 제 2 기본 블록들을 포함할 수도 있고 제 3 소스 블록은 제 2 및 제 3 기본 블록들을 포함할 수도 있다. 일부 경우들에서, 기본 블록들의 일부 또는 전부는 상이한 사이즈들을 가지고 소스 블록들의 일부 또는 전부는 상이한 사이즈들을 가진다.
인코더는 다음과 같이 작동한다. 우선, 각각의 기본 블록 X i 에 대해, 인코더는 블록을 각각의 측면에서 B 개 영의 심볼들로 (논리적으로 또는 실제로) 채워서 K+2B 개 심볼들인
Figure pct00023
,
Figure pct00024
, ...,
Figure pct00025
의 연장된 블록을 형성한다, 즉, 처음 B 개 심볼들 및 마지막 B 개 심볼들은 영의 심볼들이고, 중간의 K 개 심볼들은 기본 블록 X i 의 소스 심볼들이다.
인코더는 소스 블록 S 에 대한 인코딩 심볼을 다음과 같이 생성하며, 여기서 SL' 개 기본 블록들을 포함하고, 일반성의 손실 없이 이것들이 기본 블록들 X 1, ..., X L ' 이라고 가정한다. 인코더는 1 및 K+B-1 사이의 시작 포지션 t 를 랜덤으로 선택하고, 모든 i = 1, ..., L' 에 대해, 적합한 유한 필드 (예컨대, GF(2) 또는 GF(256)) 로부터 랜덤으로 값들
Figure pct00026
, ...,
Figure pct00027
을 선택한다. 각각의 i = 1, ..., L' 에 대해, 인코더는 동일한 시작 포지션 t 에 기초하여, 즉, 수학식 7에 도시된 바와 같이 인코딩 심볼 값을 생성한다.
Figure pct00028
(수학식 7)
그 다음에, 소스 블록에 대한 생성된 인코딩 심볼 값 ESV 는 단순히, ESV i i = 1, ..., L' 전체에 걸친 즉, 수학식 8에 도시된 바와 같은 심볼 유한 필드 합이다.
Figure pct00029
(수학식 8)
디코더가 기본 블록들의 서브세트를 디코딩하는데 이용되고, 일반성의 손실 없이 이것들이 기본 블록들 X 1, ..., X L '이라고 가정한다. 이들 L' 개 기본 블록들 내의 소스 심볼들을 복구하기 위해, 디코더는 X 1, ..., X L ' 의 서브세트의 합집합으로 구성되는 소스 블록들로부터 생성된 임의의 수신된 인코딩 심볼을 이용할 수 있다. 효율적인 디코딩을 용이하도록 하기 위해, 디코더는 디코딩 행렬을 배열하며, 행렬의 행들은 디코딩을 위해 이용될 수 있는 수신된 인코딩 심볼들에 대응하고, 행렬의 열들은 인트리브식 순서로 배열된 기본 블록들 X 1, ..., X L ' 에 대한 연장된 블록들에 대응한다:
Figure pct00030
파운틴 블록 코드에 대해 이전에 설명된 왕복 디코더와 마찬가지로, 디코더는 디코딩하기 위해 위에서 설명된 행렬에서의 열 포지션들 전체에 걸쳐 왕복 스위프를 이용한다. 제 1 스위프는 행렬의 최소 열 포지션부터 최대 열 포지션까지이며, 그 열 포지션에 대응하는 소스 심볼 s 를 그것을 복구할 수 있는 인코딩 심볼 e 와 매칭시키며, 나중의 열 포지션들에 대응하는 소스 심볼들을 복구하는데 이용될 수 있는 인코딩 심볼들의 s 에 대한 의존성들을 제거하고, e 에 대한 s 의 기여도를 단순히 s 가 되도록 조정한다. 제 2 스위프는 블록의 마지막 포지션에서의 소스 심볼부터 제 1 포지션에서의 소스 심볼까지 행렬의 최대 열 포지션부터 최소 열 포지션까지이며, 이전의 포지션들에서의 소스 심볼들을 복구하는데 이용된 그 인코딩 심볼들의 열 포지션에 대응하는 소스 심볼 s 에 대한 의존성들을 제거한다. 성공적인 왕복 스위프 후, 각각의 소스 심볼의 복구된 값은 그것이 매칭되는 인코딩 심볼의 값이다.
제 1 스위프 프로세스에 대해, 디코더는 기본 블록들 X 1,..., X L ' 을 디코딩하는데 유용할 수 있는 모든 수신된 인코딩 심볼들의 세트 E 를 획득한다. L' 개 기본 블록들 중 하나의 기본의 블록 소스 심볼 s 에 대응하는 각각의 포지션 i = L'ㆍB, ..., L'ㆍ(B+K)-1 에 대해, 디코더는 그것들의 이웃 세트에서 s 를 가지는 E 내의 모든 인코딩 심볼들 중에서 가장 이른 이웃 말단 포지션을 가지는 인코딩 심볼 e 를 선택한 다음, es 에 매칭시키고 E 로부터 e 를 소실한다. 이 선택은 선형 수학식들의 현재 세트 내의 e 에 대한 s 의 기여도가 영이 아닌, 즉, s 가 βㆍse 에 기여하게 하고, 여기서 β≠0 인 그들 인코딩 심볼들 e 사이에서 행해진다. s 의 기여도가 영이 아닌 인코딩 심볼 e 이 없다면, 디코딩은 실패하는데, s 가 디코딩될 수 없기 때문이다. 일단 소스 심볼 s 가 인코딩 심볼 e 와 매칭되면, 인코딩 심볼 e 는 세트 E 로부터 제거되며, 가우스 소거법이 E 내의 모든 인코딩 심볼들에 대한 s 의 기여도를 제거하는데 이용되고, e 에 대한 s 의 기여도는 e 에 대한 s 의 기여도의 계수의 역과 e 를 곱함으로써 간단히 s 가 되도록 조절된다.
디코더의 제 2 스위프 프로세스는 다음과 같이 작동한다. L' 개 기본 블록들 중 하나의 기본 블록의 소스 심볼 s 에 대응하는 각각의 포지션 i = L'ㆍ(B+K)-1, ..., L'ㆍB 에 대해, 가우스 소거법은 i 에 대해 이전인 포지션들에 대응하는 소스 심볼들에 매칭되는 E 내의 모든 인코딩 심볼들에 대한 s 의 기여도를 제거하는데 이용된다.
디코딩은 수신된 인코딩 심볼들에 의해 정의된 선형 수학식들의 시스템이 랭크 L' ㆍK 인 경우에만 모든 소스 심볼들을 완전히 복구하는 데 성공한다, 즉, 수신된 인코딩 심볼들이 랭크 L' K 를 가진다면, 위의 디코딩 프로세스는 L' 개 기본 블록들의 L' ㆍK 개 소스 심볼들을 복구하는 것이 보장된다.
생성된 인코딩 심볼 당 심볼 연산 수는 BㆍV 이며, 여기서 V 는 인코딩 심볼이 생성되는 소스 블록에 의해 엔벨로프된 기본 블록들의 수이다.
인코딩 심볼의 리치는 디코딩 행렬에서 이웃 소스 심볼에 대응하는 최소 열 포지션 및 이웃 소스 심볼에 대응하는 최대 열 포지션 사이의 열 포지션들의 세트가 되도록 정의된다. 인코딩 프로세스 및 디코딩 행렬의 속성들에 의해, 인코딩 심볼의 리치의 사이즈는 위에서 설명된 디코딩 프로세스에서 많아야 Bㆍ L' 이다. 디코딩 심볼 연산들의 수는 많아야 인코딩 심볼들의 리치들의 사이즈들의 합인데, 위에서 설명된 매칭 프로세스의 속성들에 의해, 인코딩 심볼들의 리치가 디코딩 심볼 연산들에 의해 결코 그것들의 원래의 리치를 초과하여 연장하지 않고 각각의 디코딩 심볼 연산이 인코딩 심볼 리치들의 사이즈들의 합을 1만큼 감소시키기 때문이다. 이는 L' 개 기본 블록들 내의 N=Kㆍ L' 개 소스 심볼들을 디코딩하기 위한 심볼 연산 수가 O(NㆍBㆍ L') 라는 것을 의미한다.
윈도우 기반 코드의 컴퓨테이션 복잡도 및 그것의 복구 속성들 사이에선 타협이 있다. 만약 B = O(ln(L)ㆍK 1 /2) 이고 유한 필드 사이즈가 충분히 크게, 예컨대, O(LK) 가 되도록 선택된다면, L' 개 기본 블록들의 모든 L'ㆍK 개 소스 심볼들은 위에서 설명된 이상적인 복구 탄성 코드의 복구 조건들이 L' 개 기본 블록들에 대해 수신된 인코딩 심볼들에 의해 만족되고 실패 확률이 각각의 부가적으로 수신된 인코딩 심볼의 함수로서 급격히 감소하는 경우 높은 확률로 복구될 수 있다는 것을 간단한 분석에 의해 보일 수 있다. 윈도우 기반 코드의 복구 속성들은 GF[2] 또는 GF[256] 이 유한 필드로서 각각 이용되고 B = O(ln(L)ㆍK 1 /2) 인 경우에 랜덤 GF[2] 코드 또는 랜덤 GF[256] 코드의 그것들과 유사하다.
유사한 분석이, 만약 B = O(ln(LㆍK/δ)/ε) 이면 L' 개 기본 블록들의 모든 L'ㆍK 개 소스 심볼들은 다음의 조건들 하에서 적어도 1-δ의 확률로 복구될 수 있다는 것을 보이는데 이용될 수 있다. T L' 개 기본 블록들을 디코딩하는데 유용한 수신된 인코딩 심볼들이 생성될 수 있는 소스 블록들의 수라고 한다. 그 다음에, T 개 소스 블록들로부터 수신된 인코딩 심볼들의 수는 적어도 L'ㆍK(1+ ε) 이어야 하고, 모든 ST 에 대해, S 개 소스 블록들의 임의의 세트로부터 생성된 인코딩 심볼들의 수는 많아야, 그들 S 개 소스 블록들의 합집합에서의 소스 심볼 수의 수이어야 한다.
위에서 설명된 윈도우 기반 코드들은 비-체계적 탄성 코드들이다. 체계적 윈도우 기반 파운틴 탄성 코드들은 이들 비-체계적 윈도우 기반 코드들로부터 구성될 수 있으며, 파운틴 블록 코드들인 윈도우 기반 코드들에 대해 위에서 설명된 체계적 구성과 유사하게, 그렇게 구성된 체계적 코드들의 효율 및 복구 속성들은 그것들이 구성되는 비-체계적 코드의 그것들과 매우 유사하다. 이것이 작동하는 방법의 세부사항들은 Shokrollahi-체계적에서 설명된다.
당업자가 인식할 바와 같이, 본원에서 설명되는 윈도우 기반 코드들의 많은 변형예들이 있다. 하나의 예로서, 각각의 기본 블록에 대해 K+2B 개의 심볼들의 연장된 블록을 만들지 않고, 대신에 인코딩 심볼들이 생성되는 소스 블록의 부분인 각각의 기본 블록의 K 개 소스 심볼들로부터 직접 인코딩 심볼들을 생성할 수 있으며, 이 경우 t 는 각각의 인코딩 심볼에 대해 0 및 K-1 사이에서 랜덤으로 선택된 다음, 인코딩 심볼 값은 각각의 그러한 기본 블록에 대해 수학식 6에서 보인 것과 유사하게 컴퓨팅된다.
이 수정된 윈도우 기반 블록 코드에 대해 디코딩하는 하나의 방법은 시작부에서 L'ㆍK 개 소스 심볼들의 L'ㆍB 의 연속적인 세트가 "비활성화되는" 것을 제외하면, 위에서 설명된 것과 유사한 디코딩 프로시저를 이용하는 것이며, 그 디코딩은 이들 L'ㆍB 개 비활성화된 소스 심볼 값들이 알려져 있다고 가정하여 이전에 설명된 바와 같이 진행하며, 인코딩 심볼들 및 L'ㆍB 개 비활성화된 소스 심볼들 사이의 수학식들의 L'ㆍB x L'ㆍB 시스템이 형성되고 풀이된 다음, 이것과 왕복 스위프의 결과들에 기초하여, 나머지 L'ㆍ(K - B) 개 소스 심볼들이 구해진다. 이것이 작동하는 방법의 세부사항은 Shokrollahi-비활성화에서 설명된다.
위의 윈도우 기반 코드의 많은 다른 변형예들이 있다. 예를 들어, 각각의 기본 블록이 동일한 수의 소스 심볼들을 포함한다는 조건을 완화시키는 것이 가능하다. 예를 들어, 인코딩 프로세스 동안, 각각의 기본 블록을 인코딩하는데 이용된 B 의 값은 그 기본 블록 내의 소스 심볼 수에 비례할 수 있다. 예를 들어, 제 1 기본 블록이 K 개 소스 심볼들을 포함하고 제 2 기본 블록이 K' 개 소스 심볼들을 포함하고, μ= K/K' 을 블록들의 사이즈들의 비율이라고 한다. 그러면, 제 1 기본 블록을 위해 이용된 값 B 와 제 2 기본 블록을 위해 이용된 대응하는 값 B' 은 B/B' = μ 를 만족시킨다. 이 변형예에서, 양쪽 모두의 기본 블록들을 엔벨로프하는 소스 블록으로부터 생성되는 인코딩 심볼에 대한 기본 블록들의 기여도를 컴퓨팅하기 위한 두 개의 기본 블록들 내의 시작 포지션이 상이할 것이며, 예를 들어 인코딩 프로세스는 0 및 1 사이에서 값
Figure pct00031
를 균일하게 선택한 다음, 제 1 기본 블록에 대한 시작 포지션
Figure pct00032
을 이용하고 제 2 기본 블록에 대한 시작 포지션
Figure pct00033
을 이용할 수 있다 (여기서 이들 값들은 가장 가까운 정수 포지션으로 반올림된다). 이 변형예에서, 디코딩 중인 기본 블록들의 각각으로부터 인터리브된 심볼들을 포함하는 디코딩 행렬을 디코더에서 형성하는 경우, 인터리빙은 제 1 기본 블록에 대응하는 포지션들의 주파수 대 제 2 기본 블록에 대응하는 포지션들의 주파수가 비율 μ 인 방법으로 행해질 수 있다, 예컨대, 제 1 기본 블록이 제 2 기본 블록의 사이즈의 2 배이면, 제 2 기본 블록에 대응하는 것에 2 배 많은 열 포지션들이 제 1 기본 블록에 대응하고, 이 조건은 디코딩 행렬 내의 열 포지션들의 임의의 연속적인 세트에 대해 참 (모듈로 반올림 오류들) 이다.
당업자가 인식할 바와 같이, 많은 다른 변형예들이 있다. 예를 들어, 디코딩 행렬의 희박 행렬 표현은 완전 디코딩 행렬을 저장하고 처리하는 대신에 디코더에서 이용될 수 있다. 이는 디코딩의 저장 및 시간 복잡도를 실질적으로 감소시킬 수 있다.
다른 변형예들 역시 가능하다. 예를 들어, 인코딩은 위에서 설명된 바와 같이 생성된 다수인 제 1 유형의 인코딩 심볼들과 랜덤으로 희박하게 생성된 소수인 제 2 유형의 인코딩 심볼들인 두 개의 유형들의 인코딩 심볼들의 혼합을 포함할 수도 있다. 예를 들어 제 1 유형의 인코딩 심볼들의 분수 (fraction) 는 1-K -1/3 일 수 있고 각각의 제 1 유형의 인코딩 심볼의 리치는 B = O(K 1 /3 ) 일 수 있고, 제 2 유형의 인코딩 심볼들의 분수는 K -1/3 일 수 있고 각각의 제 2 유형의 인코딩 심볼의 이웃들의 수는 K 2 /3 일 수 있다. 두 개의 유형들의 인코딩 심볼들의 이러한 혼합의 하나의 이점은 성공적인 디코딩을 보장하기 위해 제 1 유형에 대해 이용된 B 의 값이 실질적으로 더 작을 수 있다, 예컨대, 하나의 유형만이 이용되는 경우의 B = O(K 1 /2 ) 이 아니라 두 개의 유형들이 사용되는 경우의 B = O(K 1 /3 ) 일 수 있다는 것이다.
디코딩 프로세스는 제 1 단계에서 위에서 설명된 왕복 디코딩 프로세스가 디코딩이 디코딩을 계속 허용하는 것을 고수할 때는 언제든지 소스 심볼들을 비활성화하기 위해 비활성화 디코딩을 이용하여 제 1 유형의 인코딩 심볼들에 적용되도록 수정된다. 그 다음에, 제 2 단계에서 비활성화된 소스 심볼 값들은 제 2 유형의 인코딩 심볼들을 이용하여 복구되고, 그 다음에 제 3 단계에서 이들 구해진 인코딩 심볼 값들은 왕복 디코딩의 제 1 단계의 결과들과 함께 나머지 소스 심볼 값들을 구하기 위해 사용된다. 이 수정의 이점은 복구 속성들을 열화시키는 일 없이 인코딩 및 디코딩 복잡도가 실질적으로 개선된다는 것이다. 두 개 보다 많은 유형들의 인코딩 심볼들을 이용하는 추가의 변형예들은 또한 복구 속성들을 열화시키는 일 없이 인코딩 및 디코딩 복잡도를 추가로 개선하는 것이 가능하다.
이상적 복구 탄성 코드들
이 섹션은 위에서 설명된 이상적인 복구 탄성 코드 성질들을 달성하는 탄성 코드들을 설명한다. 이 구성은 소스 블록들이 다음의 조건들을 만족하는 경우에 적용된다: 소스 심볼들은 각각의 소스 블록 내의 소스 심볼들이 연속이도록 하는 순서로 배열되고, 그래서, 임의의 제 1 소스 블록에 대해 그리고 임의의 제 2 소스 블록에 대해, 제 1 소스 블록 내에 있지만 제 2 소스 블록 내에 있지 않은 소스 심볼들은 모두가 제 2 소스 블록 이전의 것들이거나 또는 모두가 제 2 소스 블록 이후의 것들이다, 제 2 소스 블록에 선행하는 제 1 소스 블록의 일부 심볼들과 제 2 소스 블록을 뒤따르는 제 1 소스 블록의 일부 심볼들을 갖는 제 1 및 제 2 소스 블록들은 없다. 간결함을 위해, 본원에서 그런 코드들은 서브세트 없는 화현 탄성 코드 (No-Subset Chord Elastic code), 또는 "NSCE 코드"라고 지칭된다. NSCE 코드들은 접두부 탄성 코드들을 포함한다.
본원에서의 "구성"은 추상 (abstract) 으로 간주될 수 있는 수학적 개념들을 수반할 수도 있지만, 그런 구성들은 유용한 목적에 및/또는 데이터, 전기적 신호들 또는 아티클들을 변환하기 위해 적용된다는 것이 이해되어야 한다. 예를 들어, 그 구성은 수신기/디코더로의 송신을 위해 데이터의 심볼들을 인코딩할 것을 추구하는 인코더에 의해 수행될 것이며, 수신기/디코더는 결국 그 인코딩들을 디코딩할 것이다. 따라서, 본원에서 설명되는 발명들은, 그 설명이 수학에 초점을 맞추고 있다 하더라도, 인코더들, 디코더들, 인코더들 및 디코더들의 조합들, 인코딩 및/또는 디코딩하는 프로세스들로 구현될 수 있고, 또한 프로그램 코드로 하여금 실행되며 및/또는 해석되게 할 하드웨어 및/또는 소프트웨어와 함께 사용하기 위해, 컴퓨터-판독가능 매체들 상에 저장된 프로그램 코드에 의해 구현될 수 있다.
NSCE 코드의 일 예의 구성에서, n c ( n ) 개 필드 엘리먼트들을 갖는 유한 필드가 사용되며, 여기서 c(n) = O(n C ) 이며, C 는 소스 블록들의 수이다. 구성의 개요는 다음과 같고, 구현예는 이 개요를 읽으면 당업자에 의해 명백하게 되어야 한다. 이 구성은, 일부 경우들에서, 적어도 어느 정도는, 필요한 유한 필드의 사이즈를 추가로 감소시키도록 최적화될 수 있다.
개요에서, n 은 인코딩될 및 디코딩될 소스 심볼들의 수이며, C 는 인코딩 프로세스에서 사용되는, 또한 화현들이라고 불리는 소스 블록들의 수이며, c(n) 은 n C 의 차수인 일부 소정의 값이다. 화현이 리페어 심볼들을 생성할 시에 사용되는 n 개 소스 심볼들의 (적절하든 아니든) 서브세트이고 "블록"은 동일한 도메인 내에서부터 생성되는 심볼들의 세트이므로, 사용되는 화현들 및 사용되는 블록들 사이에 일 대 일 대응이 있다. 이들 엘리먼트들의 사용은 인코더 또는 디코더를 참조하여 이제 설명될 것이지만, 명시적으로 언급되지 않더라도, 유사한 단계들이 양쪽 모두에 의해 수행될 것이라는 것이 이해되어야 한다.
인코더는, 1 부터 C 까지의 범위일 수 있고 처리 중인 현재 블록/화현을 나타내는 변수 j 를 관리할 것이다. 일부 로직 또는 계산에 의해, 인코더는, 각각의 블록 j 에 대해, 블록 j 에 연관된 소스 심볼 수 k j 및 인코딩 심볼들의 수 n j 를 결정한다. 그러면 인코더는 블록 j 에 대해 k j x n j 코시 행렬 M j 를 구성한다. 코시 행렬들을 나타내기 위한 기본 유한 필드에 필요한 필드의 사이즈는 따라서 모든 j 에 대해 k j + n j 의 최대이다. q 를 이 기본 필드에서의 엘리먼트들의 수라고 한다.
인코더는 q D 개 엘리먼트들을 갖는 더 큰 필드 F 에 대해 작동하며, 여기서 Dq C 의 차수이다. ω 를 차수 D 인 F의 엘리먼트라 한다. 인코더는 인코딩 심볼들을 컴퓨팅하는데 이용될 수 있는 행렬들을 변경하기 위해 ω 의 거듭제곱들을 (적어도 논리적으로) 이용한다. C 개 블록들 중 블록 1에 대해, 행렬 M 1 은 수정되지 않고 남겨진다. 블록 2에 대해, i-번째 소스 심볼에 대응하는 M2 의 행은 ω i 에 의해 곱해진다. 블록 j 에 대해, i-번째 소스 심볼에 대응하는 M j 의 행은 ω iㆍq (j) 에 의해 곱해지며, 여기서 q(j) = q j - 2 이다.
수정된 행렬들을 M'1, ..., M' C 라 한다. 이것들은 C 개 블록들에 대한 인코딩 심볼들을 생성하는데 이용되는 행렬들이다. 이들 행렬들의 주요 특성은 아래에서 설명되는 관찰로부터 나온다.
수신기가 다양한 블록들로부터 생성된 인코딩 심볼들의 일부 혼재물을 수신한다고 가정한다. 그 수신기는 소스 심볼들 및 수신된 인코딩 심볼들에 대응하는 행렬 M 의 행렬식이 영이 아닌지의 여부를 결정하기를 원할 것이다.
이웃들이 자연스럽게 정해지는, 즉, 소스 심볼이 인코딩 심볼이 생성되는 블록의 부분이라면 인코딩 심볼 및 소스 심볼 사이에 에지가 있는, 수신된 인코딩 심볼들 및 소스 심볼들 사이의 이분 (bipartite) 그래프를 고려한다. 소스 심볼들의 모두가 매칭되는 매칭이 이 그래프 내에 있다면, 소스 심볼들은 수신된 인코딩 심볼들로부터 디코딩가능해야 한다, 즉, M 의 행렬식은 영이 아니어야 한다. 그 다음에, 소스 심볼들이 인코딩 심볼들의 블록들에 매칭되는 방법의 "시그너쳐"에 의해 각각을 분류하며, 예컨대, (1,1,3,2,3,1,2,3) 의 시그너쳐는 이 매칭에서, 제 1 소스 심볼이 블록 1 내의 인코딩 심볼에 매칭되며, 제 2 소스 심볼이 블록 1 내의 인코딩 심볼에 매칭되며, 제 3 소스 심볼이 블록 3 내의 인코딩 심볼에 매칭되며, 제 4 소스 심볼이 블록 2 내의 인코딩 심볼에 매칭되는 등등을 나타낸다. 그 다음에, 매칭들은 그것들의 시그너쳐들에 따라 구획되고, M 의 행렬식은 이들 시그너쳐에 의해 정의된 행렬들의 행렬식들의 합으로서 보여질 수도 있으며, 여기서 각각의 그러한 시그너쳐 행렬식은 코시 행렬에 대응하고 따라서 영이 아니다. 그러나, 시그너쳐 행렬식은 서로 영이 될 수 있다.
수정된 행렬들 M'1, ..., M' C 를 구성함으로써, 결과는 그 시그너쳐에 대응하는 행렬식의 계수로서 ω 의 최대 거듭제곱을 고유하게 가지는 시그너쳐가 있다는 것이고, 이는 이 고유한 시그너쳐의 행렬식이 임의의 다른 행렬식에 의해 영으로 되지 않을 수 있으므로 M 의 행렬식이 영이 아님을 의미한다. 이는 블록들의 화현 구조가 중요한 경우이다.
제 1 블록을 소스 심볼들 내에서 먼저 시작하(고 종료하)는 화현에 대응한다고 하고, 일반적으로 블록 j 를 소스 블록들 내에서 시작하(고 종료하)는 j-번째 화현인 화현에 대응한다고 한다. 서브세트 화현들이 없으므로, 임의의 하나의 블록이 제 2 의 블록 전에 시작하면, 그것은 또한 제 2 의 블록 전에 종료해야 하고, 그렇지 않으면 제 2 의 블록이 서브세트이다.
그 다음에, 디코더는 매칭을 핸들링하여, 제 1 블록에 대한 인코딩 심볼들의 모두가 소스 심볼들의 접두부에 매칭되며, 제 2 블록에 대한 인코딩 심볼들의 모두가 (제 1 블록에 매칭된 소스 심볼들을 제외한) 소스 심볼들의 다음의 접두부에 매칭되는 등등이다. 특히, 이 매칭은 e1 1들, 그 뒤의 e2 2들, 그 뒤의 e3 3들 등을 가질 것이며, 여기서 e i 는 블록 i 로부터 생성되었던 소스 심볼들을 디코딩하는데 사용되는 인코딩 심볼들의 수이다. 이 매칭은 (2-화현의 경우에 대해 정리 1에서 사용된 인수 (argument) 와 유사한) 계수로서 ω 의 최대 거듭제곱을 고유하게 가지는 시그너쳐를 가진다. 즉, 소스 및 수신된 인코딩 심볼들 사이의 유효한 매칭에 대응하는 임의의 다른 시그너쳐는 계수로서 더 작은 거듭제곱을 가질 것이다. 따라서, 행렬식은 영이 아니어야 한다.
화현 탄성 코드들의 하나의 단점은 서브세트들이 존재하는 경우, 즉, 하나의 화현이 다른 화현 내에 포함되는 경우에 발생한다. 그런 경우들에서, 디코더는 각각의 블록에 대한 인코딩 심볼들이 과도하게 (greedily) 사용되는, 즉, 적어도 소스 심볼들의 원래의 순서에 따라, 제 1 소스 심볼들에 대한 블록 1, 그 뒤의 블록 2 등에 대해 모두를 이용하는 경우에 매칭을 항상 찾는 것이 보장될 수 없다.
일부 경우들에서, 소스 심볼들은 포함되지 않은 화현 구조를 획득하기 위해 재순서화될 수 있다. 예를 들어, 각각의 후속 화현이 이전의 화현들의 모두를 포함하도록 소스 심볼들의 원래의 순서에 따른 화현들의 세트가 되어 있다면, 구조가 접두부 코드의 그것이 되도록, 즉, 내부에서부터 외부로 소스 심볼들을 재순서화하도록 소스 심볼들은 재순서화될 수 있어서, 제 1 소스 심볼들은 화현들의 모두 내의 그것들, 그 뒤의 거의 최소 화현 내부의 그 소스 심볼들, 그 뒤의 거의 최소 두 개의 화현들 내부의 그 소스 심볼들 등등이 된다. 이 재순서화로, 위의 구성들은 이상적인 복구 속성들을 갖는 탄성 코드들을 획득하도록 적용될 수 있다.
탄성 코드들의 사용의 예들
하나의 예에서, 인코더/디코더는 예상된 조건들, 이를테면 400 ms의 패킷들에 대한 왕복시간 (round-trip time; RTT), 1 Mbps (비트/초) 의 전달 레이트, 및 128 바이트의 심볼 사이즈를 다루도록 설계된다. 따라서, 송신기는 초당 대략 1000 개 심볼들 (1000 심볼/sec × 128 바이트/심볼 × 8 비트/바이트 = 1.024 Mbps) 을 전송한다. 일부 광 손실의 적당한 손실 조건들 (예컨대, 많아야 5%) 과 때때로 더 중한 손실 (예컨대, 50%까지) 을 가정한다.
하나의 접근법에서, 리페어 심볼은 각각의 G 소스 심볼들 뒤에 삽입되고, 최대 대기시간이 손실로부터 복구하기 위해 G 심볼들 정도로 적을 수 있는 경우, X = 1/G 는 임의의 소스 심볼들을 복구할 수도 없는 송신되는 것이 허락되는 리페어 심볼들의 분수이다. G 는 현재 손실 조건들, RTT 및/또는 대역폭에 기초하여 변화할 수 있다.
탄성 코드가 접두부 코드이고 G=4 인 도 5의 예를 고려한다. 소스 심볼들이 순차적으로 도시되고, 리페어 심볼들은 리페어 심볼이 적용되는 소스 블록을 나타내는 대괄호 레이블들로 도시된다.
모든 손실들이 시작부에서 연속적인 시작을 하고 하나의 심볼이 손실된다면, 도입된 대기시간은 많아야 G 인 반면, 두 개의 심볼들이 손실된다면, 도입된 대기시간은 많아야 2×G 이고, i 개 심볼들이 손실된다면, 도입된 대기시간은 많아야 i×G 이다. 따라서, 손실의 양은 도입된 대기시간에 선형적으로 영향을 준다.
따라서, 허용가능한 용장성 오버헤드가 5%로 제한된다면, 말하자면, G=20, 즉, 하나의 리페어 심볼은 20 개 소스 심볼들마다 전송된다. 위의 예에서, 하나의 심볼은 1 ms 마다 전송되며, 그래서 그것은 각각의 리페어 심볼 및 복구 시간 사이의 20 ms가 두 개의 손실 심볼들에 대해 40 ms, 세 개의 손실 심볼들에 대해 60 ms 등등이 될 것임을 의미한다. 이들 조건들에 단지 ARQ를 이용하여, 복구 시간은 적어도 400 ms, RTT임에 주의한다.
그 예에서, 리페어 심볼의 블록은 모든 미리 전송된 심볼들의 세트이다. 수신기로부터 되돌아오는 간단한 보고가 허용되는 경우, 블록들은 수신완료된 또는 더 이상 필요하지 않은 이전의 소스 심볼들을 배제하도록 수정될 수 있다. 도 5에 도시된 것의 변형예인 일 예가 도 6에 도시되어 있다.
이 예에서, 인코더가 송신기로부터 최소 관련 소스 인덱스의 SRSI 표시자를 수신한다고 가정한다. SRSI는 모든 이전의 소스 심볼들이 수신되거나 또는 더 이상 필요하지 않을 때마다 증가할 수 있다. 그러면, 인코더는 SRSI 보다 낮은 인덱스들을 가지는 소스 심볼들에 의존하는 임의의 리페어 심볼들을 가질 필요가 없으며, 이는 컴퓨테이션을 절약한다. 보통, SRSI는 이미 복구된 소스 심볼들의 최대 접두부를 바로 뒤따르는 소스 심볼의 인덱스이다. 송신기는 그 다음에 수신기로부터 수신된 최대 SRSI로부터 소스 심볼의 마지막 전송된 인덱스까지 리페어 심볼의 스코프를 계산한다. 이는 피드백 없는 버전과 정확히 동일한 복구 속성들이 되게 하지만, 송신기 및 수신기에서의 복잡도/메모리 요건들을 완화시킨다. 도 6의 예에서, SRSI=5 이다.
피드백으로, 접두부 탄성 코드들은 더 효율적으로 이용될 수 있고 피드백은 복잡도/메모리 요건들을 감소시킨다. 송신기가 손실을 나타내는 피드백을 얻을 경우, 그것은 그에 따라 리페어 심볼들의 스코프를 조정할 수 있다. 따라서, 순방향 오류 정정 및 반응성 오류 정정을 조합하기 위해, 부가적인 최적화들이 가능하다. 예를 들어, 순방향 오류 정정 (FEC) 은 허용가능한 용장성 오버헤드가 대부분의 손실들을 선제적으로 복구할 만큼 충분히 높지만, 너무 많은 오버헤드를 도입하는 것에 관해 너무 높지 않으면서, 반응성 정정이 더 희소한 손실들을 위한 것이 되도록 튜닝될 수 있다. 대부분의 손실들이 FEC를 이용하여 빠르게 복구되므로, 대부분의 손실들은 RTT 대기시간 페널티 없이 복구된다. 반응성 정정이 RTT 대기시간 페널티를 가지는 한, 그것의 사용은 더 희소하다.
변형예들
소스 블록 매핑은 어떤 소스 심볼들의 블록들이 (일반적으로 인코딩 심볼들 또는 더 구체적으로는 리페어 심볼들일 수 있는) 인코딩 심볼들의 세트에 대한 값들을 결정하는데 이용되는지를 나타낸다. 특히, 소스 블록 매핑은 메모리에 저장되고 복수의 기본 블록들의 범위들을 나타내고 그 기본 블록들 중 어느 것들이 어떤 소스 블록들의 "스코프 내에" 있는지를 나타낼 것이다. 일부 경우들에서, 적어도 하나의 기본 블록이 하나보다 많은 소스 블록 내에 있다. 많은 구현예들에서, 인코더 또는 디코더의 동작은 소스 블록 매핑에 독립적일 수 있으며, 따라서 임의의 소스 블록 매핑을 허용한다. 따라서, 미리정의된 정규 패턴들이 사용되는 한, 그것은 필요하지 않고, 사실상, 소스 블록 스코프들은 전송 조건들에 의해 또는 다른 팩터들에 의해 소스 데이터의 밑에 있는 구조로부터 결정될 것이다.
일부 실시형태들에서, 인코더 및 디코더는 단지 탄성 소실 코딩보다는 오류 정정 탄성 코딩을 적용할 수 있다. 일부 실시형태들에서, 리페어 심볼들의 하나의 세트가 높은 우선순위 데이터의 블록을 보호하고 리페어 심볼들의 제 2 세트가 높은 우선순위 데이터의 블록 및 낮은 우선순위 데이터의 블록의 조합을 보호하는 계층화 코딩이 사용된다.
일부 통신 시스템들에서, 원래의 노드는 소스 데이터의 인코딩을 중간 노드들로 전송하고 중간 노드들은 중간 노드가 수신했던 인코딩 데이터의 일부분으로부터 생성된 인코딩 데이터를 전송하고 - 중간 노드는 설계에 의해 또는 채널 오류들로 인해 소스 데이터의 모두를 획득하지 못할, 네트워크 코딩이 탄성 코드들과 조합된다. 목적지 노드들은 그러면 중간 노드들로부터의 수신된 인코딩 데이터를 디코딩한 다음, 이것을 다시 디코딩하여 소스 데이터를 복구함으로써 원래의 소스 데이터를 복구한다.
탄성 코드들을 이용하는 일부 통신 시스템들에서, 예를 들어 파일/스트림의 접두부가 그것이 모두 이용가능하기 전에 전송되는 것이 필요한 경우, 다양한 애플리케이션들, 이를테면 파일 전달/스트리밍을 위한 점진적 다운로딩이 지원될 수 있다. 이러한 시스템들은 또한 PLP 교체를 위해 또는 개체 전송을 위해 이용될 것이다.
이 기술분야의 통상의 지식을 가진 자들에게는, 본 개시물을 읽은 후, 본원에 개시된 실시형태들에 관련하여 설명되는 각종 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽 모두의 조합들로 구현될 수도 있다는 것이 추가로 이해될 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환 가능성을 명백하게 예증하기 위하여, 다양하고 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 대체로 그것들의 기능성의 측면에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어 중 어느 것으로 구현되는지는 전체 시스템에 부과되는 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자들은 설명된 기능을 각각의 특정한 애플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정들은 본 발명의 예시적인 실시형태들의 범위를 벗어나도록 하는 것으로 해석되지 않아야 한다.
본원에서 개시된 실시형태들에 관련하여 설명된 다양한 구체적인 로직 블록들, 모듈들, 및 회로들은 본원에서 설명된 기능들을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트들, 또는 그것들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로는, 그 프로세서는 기존의 임의의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신 (state machine) 일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예컨대, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 협력하는 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 이러한 구성으로 구현될 수도 있다.
본 명세서에서 개시된 실시형태들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어로 직접적으로 구현되거나, 프로세서에 의하여 실행되는 소프트웨어 모듈로서 구현되거나, 이들 두 가지의 조합으로 구현될 수도 있다. 소프트웨어 모듈은 RAM (random-access memory), ROM (read-only memory), 전기적 프로그램가능 ROM (EPROM), 전기적 소거가능 프로그램가능 ROM (EEPROM), 레지스터들, 하드디스크, 착탈실 디스크, CD-ROM, 또는 이 기술분야에서 공지된 임의의 다른 형태의 저장 매체에라도 존재할 수도 있다. 예시적인 저장 매체는 프로세서에 연결되어서 프로세서는 저장 매체로부터 정보를 읽을 수 있고 그 저장 매체에 정보를 쓸 수 있다. 대체예에서, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 ASIC 내에 존재할 수도 있다. ASIC은 사용자 단말 내에 존재할 수도 있다. 대체예에서, 프로세서와 저장 매체는 사용자 단말에 개별 컴포넌트들로서 존재할 수도 있다.
하나 이상의 예시적인 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체들 및 통신 매체들 양쪽 모두를 포함한다. 저장 매체들은 컴퓨터에 의해 액세스 가능한 임의의 이용가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 또는 소망의 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 운반하거나 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 자원으로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 디스크 (Disk 및 disc) 는 본원에서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 Blu-Ray™ 디스크를 포함하는데, disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 레이저들로써 광적으로 데이터를 재생한다. 상기한 것들의 조합들은 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
개시된 예시적인 실시형태들의 전술한 설명은 이 기술분야의 숙련된 사람이 본 발명을 제작하고 사용할 수 있게끔 제공된다. 이들 예시적인 실시형태들에 대한 다양한 변형예들은 이 기술분야의 숙련된 자들에게 쉽사리 명확하게 될 것이고, 본 명세서에서 정의된 일반 원리들은 본 발명의 정신 또는 범위로부터 벗어남 없이 다른 실시형태들에 적용될 수도 있다. 그래서, 본 발명은 본원에서 보인 실시형태들로 한정될 의도는 없으며 본원에서 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 부여하는 것을 의도한다.

Claims (51)

  1. 오류들 또는 소실들을 가능하게 도입할 수 있는 통신 채널을 통해 송신될 데이터를 인코딩하는 방법으로서,
    소스 데이터가 복수의 정렬된 소스 심볼들에 의해 표현되고 상기 소스 데이터는 송신되는 인코딩 심볼들로부터 복구가능하며,
    상기 방법은,
    상기 복수의 정렬된 소스 심볼들의 각각의 심볼에 대한 기본 블록을 식별하는 단계로서, 식별된 상기 기본 블록은 공동으로 (collectively), 인코딩될 소스 데이터를 커버하는 복수의 기본 블록들 중 하나인, 상기 심볼에 대한 기본 블록을 식별하는 단계;
    복수의 소스 블록들로부터 그리고 각각의 기본 블록에 대해, 해당 기본 블록을 엔벨로프하는 적어도 하나의 소스 블록을 식별하는 단계로서, 상기 복수의 소스 블록들은 상기 소스 블록들의 적어도 하나의 쌍 및 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록을 포함하며, 상기 소스 블록들의 적어도 하나의 쌍은 상기 쌍의 소스 블록들 양쪽 모두에 의해 엔벨로프되는 적어도 하나의 기본 블록이 존재하는 특성을 갖고, 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록은 상기 쌍의 해당 소스 블록에 의해 엔벨로프되고 상기 쌍의 다른 하나의 소스 블록에 의해 엔벨로프되지 않는, 상기 적어도 하나의 소스 블록을 식별하는 단계; 및
    인코딩 프로세스에 따라 상기 복수의 소스 블록들의 각각을 인코딩하여 인코딩 심볼들을 생기게 하는 단계로서, 상기 인코딩 프로세스는 하나의 소스 블록에 대해 동작하여 상기 인코딩 심볼들을 생성하며, 상기 인코딩 심볼들은 상기 하나의 소스 블록에 의해 엔벨로프되지 않은 기본 블록들로부터의 소스 심볼들의 소스 심볼 값들에 독립적이며, 상기 인코딩은 상기 소스 블록들의 쌍의 합집합에 의해 표현되는 상기 소스 데이터의 일부분이 상기 쌍의 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 1 세트 및 상기 쌍의 제 2 소스 블록으로부터 생성된 인코딩 심볼들의 제 2 세트의 조합으로부터 복구가능한 것이 보장되도록 하며, 상기 제 1 세트에서의 상기 인코딩 심볼들의 양이 상기 제 1 소스 블록에서의 소스 데이터의 양보다 적고 상기 제 2 세트에서의 인코딩 심볼들의 양이 상기 제 2 소스 블록에서의 소스 데이터의 양보다 적은, 상기 인코딩하는 단계를 포함하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 인코딩 프로세스는, 상기 인코딩 심볼들 및 상기 소스 심볼들이 동일한 사이즈를 가지는 경우, 상기 인코딩 심볼들의 제 1 세트가 M1 개 인코딩 심볼들을 포함하며 상기 제 1 소스 블록이 N1 개 소스 심볼들을 포함하며 상기 인코딩 심볼들의 제 2 세트가 M2 개 인코딩 심볼들을 포함하며 상기 제 2 소스 블록이 N2 개 소스 심볼들을 포함하는 경우, 그리고 상기 제 1 및 제 2 소스 블록들의 교집합이 N3 개 소스 심볼들을 포함하고 N3 는 0보다 큰 경우, M1 < N1 및 M2 < N2 인 값들의 적어도 일부 조합들에 대해 M1+M2 = N1+N2-N3 이면 상기 소스 블록들의 쌍의 상기 합집합의 복원능력은 소정의 임계 확률을 초과하여 보장되도록 하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  3. 제 2 항에 있어서,
    M1 ≤ N1 및 M2 ≤ N2 이도록 하는 M1 및 M2 인 값들의 모든 조합들에 대해 M1+M2 = N1+N2-N3이면, 상기 소스 블록들의 쌍의 상기 합집합의 상기 복원능력은 소정의 임계 확률을 초과하여 보장되는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  4. 제 2 항에 있어서,
    M1 ≤ N1 및 M2 ≤ N2 이도록 하는 M1 및 M2 인 값들의 모든 조합들에 대해 M1+M2 = N1+N2-N3 이면 상기 소스 블록들의 쌍의 상기 합집합의 상기 복원능력은 확실한, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  5. 제 2 항에 있어서,
    M1 및 M2 인 값들의 적어도 일부 조합들에 대해 M1+M2 가 N1+N2-N3 보다 소정의 백분율 미만만큼 크지만 N1+N2 보다 작다면, 상기 소스 블록들의 쌍의 상기 합집합의 복원능력은 소정의 임계 확률보다 높은 확률로 보장되는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  6. 제 1 항에 있어서,
    소스 블록으로부터 생성된 적어도 하나의 인코딩 심볼은 해당 소스 블록에 의해 표현되는 상기 소스 데이터의 일부분으로부터의 소스 심볼과 동일한, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 인코딩은 상기 쌍의 상기 제 1 소스 블록에 의해 표현되는 상기 소스 데이터의 상기 일부분이 상기 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 3 세트로부터 복구가능한 것이 보장되도록 하며, 상기 제 3 세트에서의 상기 인코딩 심볼들의 양은 상기 제 1 소스 블록에서 표현되는 상기 소스 데이터의 양보다 많지 않은, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 인코딩은 상기 쌍의 상기 제 1 소스 블록에 의해 표현되는 상기 소스 데이터의 상기 일부분이 상기 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 3 세트로부터 소정의 임계 확률보다 높은 확률로 복구가능한 것이 보장되도록 하며, 상기 제 3 세트에서의 상기 인코딩 심볼들의 양은 상기 제 1 소스 블록에서 표현되는 상기 소스 데이터의 양보다 약간만 더 많은, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  9. 제 1 항에 있어서,
    각각의 소스 블록으로부터 생성될 수 있는 별개의 인코딩 심볼들의 수는 상기 소스 블록의 사이즈에 독립적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  10. 제 1 항에 있어서,
    각각의 소스 블록으로부터 생성될 수 있는 별개의 인코딩 심볼들의 수는 상기 소스 블록의 사이즈에 의존하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  11. 제 1 항에 있어서,
    상기 심볼에 대한 기본 블록을 식별하는 단계는, 상기 인코딩의 시작 전에 수행되는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  12. 제 1 항에 있어서,
    상기 기본 블록에 대해 소스 블록들을 식별하는 단계는, 인코딩 시작 전에 수행되는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  13. 제 1 항에 있어서,
    상기 적어도 하나의 인코딩 심볼은 기본 블록이 각각의 소스 심볼에 대해 식별되기 전에 또는 상기 엔벨로프된 기본 블록들이 상기 소스 블록들의 각각에 대해 결정되기 전에 또는 상기 소스 데이터의 모두가 생성되거나 또는 이용가능하게 되기 전에 생성되는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  14. 제 1 항에 있어서,
    인코딩 심볼들을 수신 중인 또는 수신완료한 디코더에서 결과들을 나타내는 수신기 피드백을 수신하는 단계; 및
    기본 블록들에서의 소스 심볼들의 멤버십, 엔벨로핑하는 소스 블록들에서의 기본 블록들의 멤버십, 기본 블록 당 소스 심볼 수, 소스 블록에서의 심볼 수, 및/또는 소스 블록으로부터 생성된 인코딩 심볼들의 수 중 하나 이상을 조정하는 단계를 더 포함하며,
    상기 조정하는 단계는, 상기 수신기 피드백에 적어도 부분적으로 기초하여 행해지는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  15. 제 14 항에 있어서,
    상기 조정하는 단계는 새로운 기본 블록들을 결정하는 단계 또는 이전에 결정된 기본 블록들에서의 소스 심볼들의 멤버십을 변화시키는 단계를 포함하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  16. 제 14 항에 있어서,
    상기 조정하는 단계는, 새로운 소스 블록들을 결정하는 단계 또는 이전에 결정된 소스 블록들에 대한 기본 블록들의 엔벨로프성 (envelopment) 을 변화시키는 단계를 포함하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  17. 제 1 항에 있어서,
    상기 소스 데이터에 대한 가변하는 데이터 우선순위 선호도들을 나타내는 데이터 우선순위 선호도 신호들을 수신하는 단계; 및
    기본 블록들에서의 소스 심볼들의 멤버십, 엔벨로핑하는 소스 블록들에서의 기본 블록들의 멤버십, 기본 블록 당 소스 심볼 수, 소스 블록에서의 심볼 수, 및/또는 소스 블록으로부터 생성된 인코딩 심볼들의 수 중 하나 이상을 조정하는 단계를 더 포함하며,
    상기 조정하는 단계는, 상기 데이터 우선순위 선호도 신호들에 적어도 부분적으로 기초하여 행해지는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  18. 제 1 항에 있어서,
    각각의 소스 블록에 의해 엔벨로프된 상기 기본 블록들에서의 상기 소스 심볼 수는 상기 소스 블록들의 둘 이상 사이에서와 같이 독립적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  19. 제 1 항에 있어서,
    기본 블록에 대해 식별된 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적이지 않은, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  20. 제 1 항에 있어서,
    기본 블록에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  21. 제 20 항에 있어서,
    소스 블록에 의해 엔벨로프된 상기 기본 블록들에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  22. 제 1 항에 있어서,
    소스 블록에 대해 생성될 수 있는 상기 인코딩 심볼들의 수는 다른 소스 블록들에 대해 생성될 수 있는 상기 인코딩 심볼들의 수에 독립적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  23. 제 1 항에 있어서,
    주어진 소스 블록에 대해 생성되는 상기 인코딩 심볼들의 수는 상기 주어진 소스 블록에 의해 엔벨로프된 상기 기본 블록들에서의 상기 소스 심볼 수에 독립적인, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  24. 제 1 항에 있어서,
    상기 인코딩하는 단계는,
    각각의 인코딩 심볼에 대해, 유한 필드로부터 선택된 계수들의 세트를 결정하는 단계; 및
    단일 소스 블록에 의해 엔벨로프된 하나 이상의 기본 블록들의 소스 심볼들의 조합으로서 상기 인코딩 심볼을 생성하는 단계로서, 상기 조합은 상기 계수들의 세트에 의해 부분적으로 정의되는, 상기 인코딩 심볼을 생성하는 단계를 더 포함하는, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  25. 제 1 항에 있어서,
    소스 블록으로부터 인코딩 심볼을 생성하기 위한 심볼 연산 수는 상기 소스 블록에 의해 표현되는 상기 소스 데이터의 일부분에서의 상기 소스 심볼 수보다 훨씬 적은, 통신 채널을 통해 송신될 데이터를 인코딩하는 방법.
  26. 소스 심볼들의 세트에 의해 표현되었던 소스 데이터를 복구하기 위해 오류들 또는 소실들을 가능하게 포함할 수 있는 통신 채널을 통해 수신된 데이터를 디코딩하는 방법으로서,
    각각의 소스 심볼에 대한 기본 블록을 식별하는 단계로서, 식별된 상기 기본 블록은 공동으로 상기 소스 데이터를커버하는 복수의 기본 블록들 중 하나인, 상기 기본 블록을 식별하는 단계;
    복수의 소스 블록들로부터 그리고 각각의 기본 블록에 대해, 해당 기본 블록을 엔벨로프하는 적어도 하나의 소스 블록을 식별하는 단계로서, 상기 복수의 소스 블록들은 상기 소스 블록들의 적어도 하나의 쌍 및 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록을 포함하며, 상기 소스 블록들의 적어도 하나의 쌍은 상기 쌍의 소스 블록들 양쪽 모두에 의해 엔벨로프되는 적어도 하나의 기본 블록이 존재하는 특성을 갖고, 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록은 상기 쌍의 해당 소스 블록에 의해 엔벨로프되고 상기 쌍의 다른 하나의 소스 블록에 의해 엔벨로프되지 않는, 상기 적어도 하나의 소스 블록을 식별하는 단계;
    복수의 수신된 심볼들을 수신하는 단계;
    각각의 수신된 심볼에 대해, 해당 수신된 심볼들이 인코딩 심볼이 될 소스 블록을 식별하는 단계; 및
    상기 복수의 수신된 심볼들로부터 소스 심볼들의 세트를 디코딩하는 단계로서, 상기 소스 블록들의 쌍의 합집합에 의해 표현되는 상기 소스 데이터의 일부분은 상기 쌍의 제 1 소스 블록으로부터 생성되었던 인코딩 심볼들에 대응하는 수신된 심볼들의 제 1 세트 및 상기 쌍의 제 2 소스 블록으로부터 생성되었던 인코딩 심볼들에 대응하는 수신된 심볼들의 제 2 세트의 조합으로부터 복구가능하도록 보장되며, 상기 제 1 세트에서의 상기 수신된 심볼들의 양은 상기 제 1 소스 블록에서의 소스 데이터의 양보다 적고 상기 제 2 세트에서의 수신된 심볼들의 양은 상기 제 2 소스 블록에서의 소스 데이터의 양보다 적은, 상기 디코딩하는 단계를 포함하는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  27. 제 26 항에 있어서,
    N1 이 상기 제 1 소스 블록의 상기 소스 데이터에서의 소스 심볼 수인 경우, N2 가 상기 제 2 소스 블록의 상기 소스 데이터에서의 소스 심볼 수인 경우, N3 가 상기 제 1 및 제 2 소스 블록들의 교집합에서의 소스 심볼 수이고 N3 이 0보다 큰 경우, 상기 인코딩 심볼들 및 상기 소스 심볼들이 동일한 사이즈를 가지는 경우, R1이 상기 수신된 심볼들의 제 1 세트에서의 수신된 심볼들의 수인 경우, R2 가 수신된 심볼들의 상기 제 2 세트에서의 수신된 심볼들의 수인 경우, R1 < N1 및 R2 < N2 이 되도록 하는 R1 및 R2의 적어도 하나의 값에 대해 R1+R2 = N1+N2-N3 이면, R1 개의 상기 수신된 심볼들의 상기 제 1 세트로부터의 그리고 R2 개의 상기 수신된 심볼들의 상기 제 2 세트로부터의 상기 소스 블록들의 쌍의 상기 합집합을 디코딩하는 단계는 소정의 임계 확률을 초과하여 보장되는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  28. 제 27 항에 있어서,
    상기 소스 블록들의 쌍의 상기 합집합을 디코딩하는 단계는 R1 ≤ N1 및 R2 ≤ N2 인 모든 값들에 대해 R1+R2 = N1+N2-N3 이면 소정의 임계 확률을 초과하여 보장되는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  29. 제 27 항에 있어서,
    상기 소스 블록들의 쌍의 상기 합집합을 디코딩하는 단계는 R1 ≤ N1 및 R2 ≤ N2 인 모든 값들에 대해 R1+R2 = N1+N2-N3 이면 확실한, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  30. 제 26 항에 있어서,
    상기 쌍의 상기 제 1 소스 블록에 의해 표현되는 상기 소스 데이터의 상기 일부분이 상기 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 3 세트로부터 복구가능하며, 상기 제 3 세트에서의 상기 인코딩 심볼들의 양은 상기 제 1 소스 블록에서 표현되는 상기 소스 데이터의 양보다 많지 않은, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  31. 제 26 항에 있어서,
    각각의 소스 블록으로부터 생성될 수 있는 별개의 인코딩 심볼들의 수는 상기 소스 블록의 사이즈에 독립적인, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  32. 제 26 항에 있어서,
    상기 인코딩의 시작 전에, 소스 심볼들에 대한 기본 블록들을 식별하는 단계 및 기본 블록들에 대해 소스 블록들을 식별하는 단계 중 적어도 하나가 수행되는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  33. 제 26 항에 있어서,
    적어도 일부분의 인코딩 심볼들이, 기본 블록이 각각의 소스 심볼에 대해 식별되기 전에 및/또는 상기 엔벨로프된 기본 블록들이 상기 소스 블록들 각각에 대해 결정되기 전에 생성되는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  34. 제 26 항에 있어서,
    어떤 수신되는 심볼들이 수신완료되었는지 및/또는 상기 소스 데이터의 어떤 부분이 수신기 및/또는 데이터 우선순위 선호도에서 요구되는 것인지에 기초하여 디코더에서 결과들을 나타내는 수신기 피드백을 결정하는 단계; 및
    인코딩 프로세스를 변경하는데 사용가능하도록 상기 수신기 피드백을 출력하는 단계를 더 포함하는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  35. 제 26 항에 있어서,
    각각의 소스 블록에 의해 엔벨로프된 상기 기본 블록들에서의 상기 소스 심볼 수는 상기 소스 블록들의 둘 이상 사이에서와 같이 독립적인, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  36. 제 26 항에 있어서,
    기본 블록에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  37. 제 26 항에 있어서,
    소스 블록에 의해 엔벨로프된 상기 기본 블록들에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  38. 제 26 항에 있어서,
    상기 디코딩하는 단계는,
    각각의 수신된 심볼에 대해, 유한 필드로부터 선택된 계수들의 세트를 결정하는 단계; 및
    하나보다 많은 수신된 심볼에 대한 상기 계수들의 세트를 이용하여 이전에 디코딩된 소스 심볼들 또는 상기 하나보다 많은 수신된 심볼로부터의 적어도 하나의 소스 심볼을 디코딩하는 단계를 더 포함하는, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  39. 제 26 항에 있어서,
    하나 이상의 소스 블록들의 합집합을 복구하기 위한 심볼 연산 수는 상기 소스 블록들의 상기 합집합에 의해 표현되는 상기 소스 데이터의 상기 일부분에서의 상기 소스 심볼 수의 제곱보다 훨씬 적은, 통신 채널을 통해 수신된 데이터를 디코딩하는 방법.
  40. 오류들 또는 소실들을 가능하게 도입할 수 있는 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더로서,
    복수의 정렬된 소스 심볼들에 의해 표현되는 소스 데이터를 수신하는 입력부로서, 상기 소스 데이터는 송신되는 인코딩 심볼들로부터 복구가능한, 상기 입력부;
    각각의 기본 블록이 상기 복수의 정렬된 소스 심볼들의 하나 이상의 소스 심볼의 표현을 포함하는, 복수의 기본 블록들 중 적어도 일부분을 위한 저장소;
    머신 판독가능 형태로 저장되거나 또는 로직 명령들에 따라 생성가능하며, 복수의 소스 블록들의 각각을 하나 이상의 기본 블록에 매핑하는 논리 맵으로서, 상기 복수의 소스 블록들은 상기 소스 블록들의 적어도 하나의 쌍 및 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록을 포함하며, 상기 소스 블록들의 적어도 하나의 쌍은 상기 쌍의 소스 블록들 양쪽 모두에 의해 엔벨로프되는 적어도 하나의 기본 블록이 존재하는 특성을 갖고, 상기 쌍의 각각의 소스 블록에 대한 적어도 하나의 기본 블록은 상기 쌍의 해당 소스 블록에 의해 엔벨로프되고 상기 쌍의 다른 하나의 소스 블록에 의해 엔벨로프되지 않는, 상기 논리 맵;
    인코딩된 블록들을 위한 저장소; 및
    복수의 인코딩 심볼들을 형성하기 위해 각각이 소스 블록의 소스 심볼들을 인코딩하는 하나 이상의 인코더들로서, 주어진 인코딩 심볼은 인코더가 소스 심볼들을 인코딩하는 소스 블록 이외의 소스 블록들로부터의 소스 심볼 값들과는 독립적이며, 상기 소스 블록들의 쌍의 합집합에 의해 표현되는 상기 소스 데이터의 일부분은 상기 쌍의 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 1 세트 및 상기 쌍의 제 2 소스 블록으로부터 생성된 인코딩 심볼들의 제 2 세트의 조합으로부터 복구가능한 것이 보장되도록 하며, 상기 제 1 세트에서의 인코딩 심볼들의 양은 상기 제 1 소스 블록에서의 소스 데이터의 양보다 적고 상기 제 2 세트에서의 인코딩 심볼들의 양은 상기 제 2 소스 블록에서의 소스 데이터의 양보다 적은, 상기 하나 이상의 인코더들을 포함하는, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  41. 제 40 항에 있어서,
    상기 제 1 세트에서의 상기 인코딩 심볼들의 수와 상기 제 2 세트에서의 상기 인코딩 심볼들의 수를 더한 것은, 상기 인코딩 심볼들 및 상기 소스 심볼들이 동일한 사이즈를 가진다면, 상기 소스 블록들의 쌍의 상기 합집합에 의해 표현되는 상기 소스 데이터의 일부분에서의 상기 소스 심볼 수보다 크지 않은, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  42. 제 40 항에 있어서,
    상기 쌍의 상기 제 1 소스 블록에 의해 표현되는 상기 소스 데이터의 상기 일부분이 상기 제 1 소스 블록으로부터 생성된 인코딩 심볼들의 제 3 세트로부터 복구가능하며, 상기 제 3 세트에서의 상기 인코딩 심볼들의 양은 상기 제 1 소스 블록에서 표현되는 상기 소스 데이터의 양보다 많지 않은, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  43. 제 40 항에 있어서,
    각각의 소스 블록으로부터 생성될 수 있는 별개의 인코딩 심볼들의 수는 상기 소스 블록의 사이즈에 독립적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  44. 제 40 항에 있어서,
    인코딩 심볼들을 수신 중인 또는 수신완료한 디코더에서 결과들을 나타내는 수신기 피드백을 수신하는 입력부; 및
    기본 블록들에서의 소스 심볼들의 멤버십, 엔벨로핑하는 소스 블록들에서의 기본 블록들의 멤버십, 기본 블록 당 소스 심볼 수, 소스 블록에서의 심볼 수, 및/또는 소스 블록으로부터 생성된 인코딩 심볼들의 수 중 하나 이상을 조정하는 로직으로서, 상기 조정은, 상기 수신기 피드백에 적어도 부분적으로 기초하여 행해지는, 상기 로직을 더 포함하는, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  45. 제 40 항에 있어서,
    상기 소스 데이터에 대한 가변하는 데이터 우선순위 선호도들을 나타내는 데이터 우선순위 선호도 신호들을 수신하는 입력부; 및
    기본 블록들에서의 소스 심볼들의 멤버십, 엔벨로핑하는 소스 블록들에서의 기본 블록들의 멤버십, 기본 블록 당 소스 심볼 수, 소스 블록에서의 심볼 수, 및/또는 소스 블록으로부터 생성된 인코딩 심볼들의 수 중 하나 이상을 조정하는 로직으로서, 상기 조정은, 상기 데이터 우선순위 선호도 신호들에 적어도 부분적으로 기초하여 행해지는, 상기 로직을 더 포함하는, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  46. 제 40 항에 있어서,
    각각의 소스 블록에 의해 엔벨로프된 상기 기본 블록들에서의 상기 소스 심볼 수는 상기 소스 블록들의 둘 이상 사이에서와 같이 독립적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  47. 제 40 항에 있어서,
    기본 블록에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  48. 제 40 항에 있어서,
    소스 블록에 의해 엔벨로프된 상기 기본 블록들에 대해 식별된 상기 소스 심볼들은 상기 복수의 정렬된 소스 심볼들 내에서 연속적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  49. 제 40 항에 있어서,
    소스 블록에 대해 생성될 수 있는 별개의 인코딩 심볼들의 수는 다른 소스 블록들에 대해 생성될 수 있는 상기 인코딩 심볼들의 수에 독립적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  50. 제 40 항에 있어서,
    주어진 소스 블록에 대해 생성되는 별개의 인코딩 심볼들의 수는 상기 주어진 소스 블록에 의해 엔벨로프된 상기 기본 블록들에서의 상기 소스 심볼 수에 독립적인, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
  51. 제 40 항에 있어서,
    상기 복수의 인코딩 심볼들의 각각에 대한 유한 필드로부터 선택되는 계수들의 세트를 위한 저장소; 및
    단일 소스 블록에 의해 엔벨로프된 하나 이상의 기본 블록들의 소스 심볼들의 조합으로서 상기 인코딩 심볼을 생성하는 로직으로서, 상기 조합은 상기 계수들의 세트에 의해 부분적으로 정의되는, 상기 인코딩 심볼을 생성하는 로직을 더 포함하는, 통신 채널을 통한 송신을 위한 데이터를 인코딩하는 인코더.
KR1020137023975A 2011-02-11 2012-02-10 유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩 KR101554406B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/025,900 2011-02-11
US13/025,900 US9270299B2 (en) 2011-02-11 2011-02-11 Encoding and decoding using elastic codes with flexible source block mapping
PCT/US2012/024755 WO2012109614A1 (en) 2011-02-11 2012-02-10 Encoding and decoding using elastic codes with flexible source block mapping

Publications (2)

Publication Number Publication Date
KR20130125813A true KR20130125813A (ko) 2013-11-19
KR101554406B1 KR101554406B1 (ko) 2015-09-18

Family

ID=45688299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137023975A KR101554406B1 (ko) 2011-02-11 2012-02-10 유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩

Country Status (6)

Country Link
US (1) US9270299B2 (ko)
EP (1) EP2673885A1 (ko)
JP (1) JP5863200B2 (ko)
KR (1) KR101554406B1 (ko)
CN (1) CN103444087B (ko)
WO (1) WO2012109614A1 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
CN100539439C (zh) 2002-10-05 2009-09-09 数字方敦股份有限公司 连锁反应码的系统编码和解码系统和方法
EP1665539B1 (en) 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
CN101019326B (zh) 2004-05-07 2013-02-27 数字方敦股份有限公司 文件下载和流系统
US9136983B2 (en) * 2006-02-13 2015-09-15 Digital Fountain, Inc. Streaming and buffering using variable FEC overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
EP2203836A4 (en) 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
TWI445323B (zh) * 2010-12-21 2014-07-11 Ind Tech Res Inst 資料傳送的混合式編解碼裝置與方法
JP5529177B2 (ja) * 2011-01-19 2014-06-25 ネイバー ビジネス プラットフォーム コーポレーション P2p基盤のストリーミングサービスでバッファリングを行うシステムおよび方法、並びにクライアントでバッファリングを処理するアプリケーションを配布するシステム
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US20140006536A1 (en) * 2012-06-29 2014-01-02 Intel Corporation Techniques to accelerate lossless compression
KR101425506B1 (ko) * 2012-09-22 2014-08-05 최수정 보완적인 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치
US10015486B2 (en) * 2012-10-26 2018-07-03 Intel Corporation Enhanced video decoding with application layer forward error correction
US9363131B2 (en) 2013-03-15 2016-06-07 Imagine Communications Corp. Generating a plurality of streams
EP2846469A1 (en) * 2013-09-10 2015-03-11 Alcatel Lucent Rateless encoding
US10021426B2 (en) * 2013-09-19 2018-07-10 Board Of Trustees Of The University Of Alabama Multi-layer integrated unequal error protection with optimal parameter determination for video quality granularity-oriented transmissions
TWI523465B (zh) * 2013-12-24 2016-02-21 財團法人工業技術研究院 檔案傳輸系統和方法
KR102093206B1 (ko) 2014-01-09 2020-03-26 삼성전자주식회사 데이터 인코딩 방법 및 전자장치
US9496897B1 (en) * 2014-03-31 2016-11-15 EMC IP Holding Company LLC Methods and apparatus for generating authenticated error correcting codes
WO2015177917A1 (ja) * 2014-05-23 2015-11-26 富士通株式会社 演算回路、符号化回路及び復号回路
JP2016126813A (ja) 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
CN106612433B (zh) * 2015-10-22 2019-11-26 中国科学院上海高等研究院 一种层析式编码译码方法
US10089189B2 (en) * 2016-04-15 2018-10-02 Motorola Solutions, Inc. Devices and methods for receiving a data file in a communication system
EP3447943B1 (en) * 2016-05-11 2021-04-07 Huawei Technologies Co., Ltd. Data transmission method, device and system
US10320428B2 (en) * 2016-08-15 2019-06-11 Qualcomm Incorporated Outputting of codeword bits for transmission prior to loading all input bits
US11979340B2 (en) 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
US10516710B2 (en) * 2017-02-12 2019-12-24 Mellanox Technologies, Ltd. Direct packet placement
US10210125B2 (en) 2017-03-16 2019-02-19 Mellanox Technologies, Ltd. Receive queue with stride-based data scattering
CN107040787B (zh) * 2017-03-30 2019-08-02 宁波大学 一种基于视觉感知的3d-hevc帧间信息隐藏方法
US20180367589A1 (en) * 2017-06-14 2018-12-20 Mellanox Technologies, Ltd. Regrouping of video data by a network interface controller
US11252464B2 (en) * 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US10367750B2 (en) 2017-06-15 2019-07-30 Mellanox Technologies, Ltd. Transmission and reception of raw video using scalable frame rate
CN107748650B (zh) * 2017-10-09 2020-07-03 暨南大学 一种网络编码集群存储系统中基于锁机制的数据重建策略
US11762557B2 (en) 2017-10-30 2023-09-19 AtomBeam Technologies Inc. System and method for data compaction and encryption of anonymized datasets
CN110138451B (zh) 2018-02-08 2020-12-04 华为技术有限公司 一种用于无线光通信的方法及通信装置
WO2021179287A1 (en) * 2020-03-13 2021-09-16 Qualcomm Incorporated Raptor code feedback
US11722265B2 (en) * 2020-07-17 2023-08-08 Qualcomm Incorporated Feedback design for network coding termination in broadcasting

Family Cites Families (519)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3909721A (en) 1972-01-31 1975-09-30 Signatron Signal processing system
US4365338A (en) 1980-06-27 1982-12-21 Harris Corporation Technique for high rate digital transmission over a dynamic dispersive channel
US4965825A (en) 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US4589112A (en) 1984-01-26 1986-05-13 International Business Machines Corporation System for multiple error detection with single and double bit error correction
US4901319A (en) 1988-03-18 1990-02-13 General Electric Company Transmission system with adaptive interleaving
GB8815978D0 (en) 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5421031A (en) 1989-08-23 1995-05-30 Delta Beta Pty. Ltd. Program transmission optimisation
US5701582A (en) 1989-08-23 1997-12-23 Delta Beta Pty. Ltd. Method and apparatus for efficient transmissions of programs
US7594250B2 (en) 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US5455823A (en) 1990-11-06 1995-10-03 Radio Satellite Corporation Integrated communications terminal
US5164963A (en) 1990-11-07 1992-11-17 At&T Bell Laboratories Coding for digital transmission
US5465318A (en) 1991-03-28 1995-11-07 Kurzweil Applied Intelligence, Inc. Method for generating a speech recognition model for a non-vocabulary utterance
US5379297A (en) 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
EP0543070A1 (en) 1991-11-21 1993-05-26 International Business Machines Corporation Coding system and method using quaternary codes
US5371532A (en) 1992-05-15 1994-12-06 Bell Communications Research, Inc. Communications architecture and method for distributing information services
US5425050A (en) 1992-10-23 1995-06-13 Massachusetts Institute Of Technology Television transmission system using spread spectrum and orthogonal frequency-division multiplex
US5372532A (en) 1993-01-26 1994-12-13 Robertson, Jr.; George W. Swivel head cap connector
EP0613249A1 (en) 1993-02-12 1994-08-31 Altera Corporation Custom look-up table with reduced number of architecture bits
DE4316297C1 (de) 1993-05-14 1994-04-07 Fraunhofer Ges Forschung Frequenzanalyseverfahren
AU665716B2 (en) 1993-07-05 1996-01-11 Mitsubishi Denki Kabushiki Kaisha A transmitter for encoding error correction codes and a receiver for decoding error correction codes on a transmission frame
US5590405A (en) 1993-10-29 1996-12-31 Lucent Technologies Inc. Communication technique employing variable information transmission
JP2576776B2 (ja) 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5517508A (en) 1994-01-26 1996-05-14 Sony Corporation Method and apparatus for detection and error correction of packetized digital data
CA2140850C (en) 1994-02-24 1999-09-21 Howard Paul Katseff Networked system for display of multimedia presentations
US5566208A (en) 1994-03-17 1996-10-15 Philips Electronics North America Corp. Encoder buffer having an effective size which varies automatically with the channel bit-rate
US5432787A (en) 1994-03-24 1995-07-11 Loral Aerospace Corporation Packet data transmission system with adaptive data recovery method
US5757415A (en) 1994-05-26 1998-05-26 Sony Corporation On-demand data transmission by dividing input data into blocks and each block into sub-blocks such that the sub-blocks are re-arranged for storage to data storage means
US5802394A (en) 1994-06-06 1998-09-01 Starlight Networks, Inc. Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof
US5739864A (en) 1994-08-24 1998-04-14 Macrovision Corporation Apparatus for inserting blanked formatted fingerprint data (source ID, time/date) in to a video signal
US5568614A (en) 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5926205A (en) 1994-10-19 1999-07-20 Imedia Corporation Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program
US5659614A (en) 1994-11-28 1997-08-19 Bailey, Iii; John E. Method and system for creating and storing a backup copy of file data stored on a computer
US5617541A (en) 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
JP3614907B2 (ja) 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
JPH11505685A (ja) 1995-04-27 1999-05-21 トラスティーズ・オブ・ザ・スティーブンス・インスティテュート・オブ・テクノロジー 時間限界マルチメディアネットワークアプリケーションのための高保全性伝送
US5835165A (en) 1995-06-07 1998-11-10 Lsi Logic Corporation Reduction of false locking code words in concatenated decoders
US5805825A (en) 1995-07-26 1998-09-08 Intel Corporation Method for semi-reliable, unidirectional broadcast information services
US6079041A (en) 1995-08-04 2000-06-20 Sanyo Electric Co., Ltd. Digital modulation circuit and digital demodulation circuit
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
KR0170298B1 (ko) 1995-10-10 1999-04-15 김광호 디지탈 비디오 테이프의 기록 방법
US5751336A (en) 1995-10-12 1998-05-12 International Business Machines Corporation Permutation based pyramid block transmission scheme for broadcasting in video-on-demand storage systems
JP3305183B2 (ja) 1996-01-12 2002-07-22 株式会社東芝 ディジタル放送受信端末装置
US6012159A (en) 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
US5936659A (en) 1996-01-31 1999-08-10 Telcordia Technologies, Inc. Method for video delivery using pyramid broadcasting
US5903775A (en) 1996-06-06 1999-05-11 International Business Machines Corporation Method for the sequential transmission of compressed video information at varying data rates
US5745504A (en) 1996-06-25 1998-04-28 Telefonaktiebolaget Lm Ericsson Bit error resilient variable length code
US5940863A (en) 1996-07-26 1999-08-17 Zenith Electronics Corporation Apparatus for de-rotating and de-interleaving data including plural memory devices and plural modulo memory address generators
US5936949A (en) 1996-09-05 1999-08-10 Netro Corporation Wireless ATM metropolitan area network
KR100261706B1 (ko) 1996-12-17 2000-07-15 가나이 쓰도무 디지탈방송신호의 수신장치와 수신 및 기록재생장치
US6011590A (en) 1997-01-03 2000-01-04 Ncr Corporation Method of transmitting compressed information to minimize buffer space
US6141053A (en) 1997-01-03 2000-10-31 Saukkonen; Jukka I. Method of optimizing bandwidth for transmitting compressed video data streams
US6044485A (en) 1997-01-03 2000-03-28 Ericsson Inc. Transmitter method and transmission system using adaptive coding based on channel characteristics
EP0854650A3 (en) 1997-01-17 2001-05-02 NOKIA TECHNOLOGY GmbH Method for addressing a service in digital video broadcasting
US5946357A (en) 1997-01-17 1999-08-31 Telefonaktiebolaget L M Ericsson Apparatus, and associated method, for transmitting and receiving a multi-stage, encoded and interleaved digital communication signal
US5983383A (en) 1997-01-17 1999-11-09 Qualcom Incorporated Method and apparatus for transmitting and receiving concatenated code data
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
US6115420A (en) 1997-03-14 2000-09-05 Microsoft Corporation Digital video signal encoder and encoding method
DE19716011A1 (de) 1997-04-17 1998-10-22 Abb Research Ltd Verfahren und Vorrichtung zur Informationsübertragung über Stromversorgungsleitungen
US6226259B1 (en) 1997-04-29 2001-05-01 Canon Kabushiki Kaisha Device and method for transmitting information device and method for processing information
US5970098A (en) 1997-05-02 1999-10-19 Globespan Technologies, Inc. Multilevel encoder
US5844636A (en) 1997-05-13 1998-12-01 Hughes Electronics Corporation Method and apparatus for receiving and recording digital packet data
EP0933768A4 (en) 1997-05-19 2000-10-04 Sanyo Electric Co DIGITAL MODULATION AND DEMODULATION
JPH1141211A (ja) 1997-05-19 1999-02-12 Sanyo Electric Co Ltd ディジタル変調回路と変調方法、ディジタル復調回路と復調方法
JP4110593B2 (ja) 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
US6128649A (en) 1997-06-02 2000-10-03 Nortel Networks Limited Dynamic selection of media streams for display
US6081907A (en) 1997-06-09 2000-06-27 Microsoft Corporation Data delivery system and method for delivering data and redundant information over a unidirectional network
US5917852A (en) 1997-06-11 1999-06-29 L-3 Communications Corporation Data scrambling system and method and communications system incorporating same
KR100240869B1 (ko) 1997-06-25 2000-01-15 윤종용 이중 다이버서티 시스템을 위한 데이터 전송 방법
US5933056A (en) 1997-07-15 1999-08-03 Exar Corporation Single pole current mode common-mode feedback circuit
US6175944B1 (en) 1997-07-15 2001-01-16 Lucent Technologies Inc. Methods and apparatus for packetizing data for transmission through an erasure broadcast channel
US6047069A (en) 1997-07-17 2000-04-04 Hewlett-Packard Company Method and apparatus for preserving error correction capabilities during data encryption/decryption
US6904110B2 (en) 1997-07-31 2005-06-07 Francois Trans Channel equalization system and method
US6178536B1 (en) 1997-08-14 2001-01-23 International Business Machines Corporation Coding scheme for file backup and systems based thereon
FR2767940A1 (fr) 1997-08-29 1999-02-26 Canon Kk Procedes et dispositifs de codage et de decodage et appareils les mettant en oeuvre
EP0903955A1 (en) 1997-09-04 1999-03-24 STMicroelectronics S.r.l. Modular architecture PET decoder for ATM networks
US6088330A (en) 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
US6134596A (en) 1997-09-18 2000-10-17 Microsoft Corporation Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates
US6272658B1 (en) 1997-10-27 2001-08-07 Kencast, Inc. Method and system for reliable broadcasting of data files and streams
US6195777B1 (en) 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6081909A (en) 1997-11-06 2000-06-27 Digital Equipment Corporation Irregularly graphed encoding technique
US6163870A (en) 1997-11-06 2000-12-19 Compaq Computer Corporation Message encoding with irregular graphing
US6081918A (en) 1997-11-06 2000-06-27 Spielman; Daniel A. Loss resilient code with cascading series of redundant layers
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
JP3472115B2 (ja) 1997-11-25 2003-12-02 Kddi株式会社 マルチチャンネルを用いるビデオデータ伝送方法及びその装置
US5870412A (en) 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
US6243846B1 (en) 1997-12-12 2001-06-05 3Com Corporation Forward error correction system for packet based data and real time media, using cross-wise parity calculation
US6849803B1 (en) 1998-01-15 2005-02-01 Arlington Industries, Inc. Electrical connector
US6097320A (en) 1998-01-20 2000-08-01 Silicon Systems, Inc. Encoder/decoder system with suppressed error propagation
US6226301B1 (en) 1998-02-19 2001-05-01 Nokia Mobile Phones Ltd Method and apparatus for segmentation and assembly of data frames for retransmission in a telecommunications system
US6141788A (en) 1998-03-13 2000-10-31 Lucent Technologies Inc. Method and apparatus for forward error correction in packet networks
US6278716B1 (en) 1998-03-23 2001-08-21 University Of Massachusetts Multicast with proactive forward error correction
EP1075762A1 (en) 1998-04-02 2001-02-14 Sarnoff Corporation Bursty data transmission of compressed video data
US6185265B1 (en) 1998-04-07 2001-02-06 Worldspace Management Corp. System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload
US6067646A (en) 1998-04-17 2000-05-23 Ameritech Corporation Method and system for adaptive interleaving
US6018359A (en) 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6445717B1 (en) 1998-05-01 2002-09-03 Niwot Networks, Inc. System for recovering lost information in a data stream
US6421387B1 (en) 1998-05-15 2002-07-16 North Carolina State University Methods and systems for forward error correction based loss recovery for interactive video transmission
US6937618B1 (en) 1998-05-20 2005-08-30 Sony Corporation Separating device and method and signal receiving device and method
US6333926B1 (en) 1998-08-11 2001-12-25 Nortel Networks Limited Multiple user CDMA basestation modem
KR100778647B1 (ko) 1998-09-04 2007-11-22 에이티 앤드 티 코포레이션 다중-안테나 장치내의 결합된 채널 코딩 및 공간-블록 코딩
US6415326B1 (en) 1998-09-15 2002-07-02 Microsoft Corporation Timeline correlation between multiple timeline-altered media streams
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US7243285B2 (en) 1998-09-23 2007-07-10 Digital Fountain, Inc. Systems and methods for broadcasting information additive codes
US6320520B1 (en) 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US6704370B1 (en) 1998-10-09 2004-03-09 Nortel Networks Limited Interleaving methodology and apparatus for CDMA
IT1303735B1 (it) 1998-11-11 2001-02-23 Falorni Italia Farmaceutici S Acidi ialuronici reticolati e loro usi medici.
US6408128B1 (en) 1998-11-12 2002-06-18 Max Abecassis Replaying with supplementary information a segment of a video
US7157314B2 (en) 1998-11-16 2007-01-02 Sandisk Corporation Vertically stacked field programmable nonvolatile memory and method of fabrication
JP2000151426A (ja) 1998-11-17 2000-05-30 Toshiba Corp インターリーブ・デインターリーブ回路
US6166544A (en) 1998-11-25 2000-12-26 General Electric Company MR imaging system with interactive image contrast control
US6876623B1 (en) 1998-12-02 2005-04-05 Agere Systems Inc. Tuning scheme for code division multiplex broadcasting system
US6314289B1 (en) 1998-12-03 2001-11-06 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for transmitting information and apparatus and method for receiving information
US6637031B1 (en) 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
US6496980B1 (en) 1998-12-07 2002-12-17 Intel Corporation Method of providing replay on demand for streaming digital multimedia
US6223324B1 (en) 1999-01-05 2001-04-24 Agere Systems Guardian Corp. Multiple program unequal error protection for digital audio broadcasting and other applications
JP3926499B2 (ja) 1999-01-22 2007-06-06 株式会社日立国際電気 畳み込み符号軟判定復号方式の受信装置
US6618451B1 (en) 1999-02-13 2003-09-09 Altocom Inc Efficient reduced state maximum likelihood sequence estimator
US6041001A (en) 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
KR20010043284A (ko) 1999-03-03 2001-05-25 이데이 노부유끼 송신 장치, 수신 장치, 송수신 시스템, 송신 방법 및 수신방법
US6785323B1 (en) 1999-11-22 2004-08-31 Ipr Licensing, Inc. Variable rate coding for forward link
US6466698B1 (en) 1999-03-25 2002-10-15 The United States Of America As Represented By The Secretary Of The Navy Efficient embedded image and video compression system using lifted wavelets
US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
US6609223B1 (en) 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
JP3256517B2 (ja) 1999-04-06 2002-02-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 符号化回路、回路、パリティ生成方法及び記憶媒体
US6804202B1 (en) 1999-04-08 2004-10-12 Lg Information And Communications, Ltd. Radio protocol for mobile communication system and method
US7885340B2 (en) 1999-04-27 2011-02-08 Realnetworks, Inc. System and method for generating multiple synchronized encoded representations of media data
FI113124B (fi) 1999-04-29 2004-02-27 Nokia Corp Tiedonsiirto
KR100784652B1 (ko) 1999-05-06 2007-12-12 소니 가부시끼 가이샤 데이터 처리 방법/장치, 데이터 재생 방법/장치, 및 기록매체
KR100416996B1 (ko) 1999-05-10 2004-02-05 삼성전자주식회사 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법
US6229824B1 (en) 1999-05-26 2001-05-08 Xm Satellite Radio Inc. Method and apparatus for concatenated convolutional endcoding and interleaving
AU5140200A (en) 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
US6154452A (en) 1999-05-26 2000-11-28 Xm Satellite Radio Inc. Method and apparatus for continuous cross-channel interleaving
JP2000353969A (ja) 1999-06-11 2000-12-19 Sony Corp デジタル音声放送の受信機
US6577599B1 (en) 1999-06-30 2003-06-10 Sun Microsystems, Inc. Small-scale reliable multicasting
IL141800A0 (en) 1999-07-06 2002-03-10 Samsung Electronics Co Ltd Rate matching device and method for a data communication system
US6643332B1 (en) 1999-07-09 2003-11-04 Lsi Logic Corporation Method and apparatus for multi-level coding of digital signals
JP3451221B2 (ja) 1999-07-22 2003-09-29 日本無線株式会社 誤り訂正符号化装置、方法及び媒体、並びに誤り訂正符号復号装置、方法及び媒体
US6279072B1 (en) 1999-07-22 2001-08-21 Micron Technology, Inc. Reconfigurable memory with selectable error correction storage
US6453440B1 (en) 1999-08-04 2002-09-17 Sun Microsystems, Inc. System and method for detecting double-bit errors and for correcting errors due to component failures
JP2001060934A (ja) 1999-08-20 2001-03-06 Matsushita Electric Ind Co Ltd Ofdm通信装置
US6430233B1 (en) 1999-08-30 2002-08-06 Hughes Electronics Corporation Single-LNB satellite data receiver
US6332163B1 (en) 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
JP4284774B2 (ja) 1999-09-07 2009-06-24 ソニー株式会社 送信装置、受信装置、通信システム、送信方法及び通信方法
JP2001094625A (ja) 1999-09-27 2001-04-06 Canon Inc データ通信装置、データ通信方法及び記憶媒体
DE60033011T2 (de) 1999-09-27 2007-08-09 Koninklijke Philips Electronics N.V. Aufteilung einer datei zur emulation eines datenstroms
US7529806B1 (en) 1999-11-04 2009-05-05 Koninklijke Philips Electronics N.V. Partitioning of MP3 content file for emulating streaming
US20050160272A1 (en) 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US6523147B1 (en) 1999-11-11 2003-02-18 Ibiquity Digital Corporation Method and apparatus for forward error correction coding for an AM in-band on-channel digital audio broadcasting system
US6678855B1 (en) 1999-12-02 2004-01-13 Microsoft Corporation Selecting K in a data transmission carousel using (N,K) forward error correction
US6748441B1 (en) 1999-12-02 2004-06-08 Microsoft Corporation Data carousel receiving and caching
US6798791B1 (en) 1999-12-16 2004-09-28 Agere Systems Inc Cluster frame synchronization scheme for a satellite digital audio radio system
US6487692B1 (en) 1999-12-21 2002-11-26 Lsi Logic Corporation Reed-Solomon decoder
US6965636B1 (en) 2000-02-01 2005-11-15 2Wire, Inc. System and method for block error correction in packet-based digital communications
US20020009137A1 (en) 2000-02-01 2002-01-24 Nelson John E. Three-dimensional video broadcasting system
WO2001057667A1 (en) 2000-02-03 2001-08-09 Bandwiz, Inc. Data streaming
IL140504A0 (en) 2000-02-03 2002-02-10 Bandwiz Inc Broadcast system
US7304990B2 (en) * 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
JP2001251287A (ja) 2000-02-24 2001-09-14 Geneticware Corp Ltd ハードウエア保護内部秘匿鍵及び可変パスコードを利用する機密データ伝送方法
US6765866B1 (en) 2000-02-29 2004-07-20 Mosaid Technologies, Inc. Link aggregation
DE10009443A1 (de) 2000-02-29 2001-08-30 Philips Corp Intellectual Pty Empfänger und Verfahren zum Detektieren und Dekodieren eines DQPSK-modulierten und kanalkodierten Empfangssignals
US6384750B1 (en) 2000-03-23 2002-05-07 Mosaid Technologies, Inc. Multi-stage lookup for translating between signals of different bit lengths
JP2001274776A (ja) 2000-03-24 2001-10-05 Toshiba Corp 情報データ伝送システムとその送信装置及び受信装置
US6510177B1 (en) 2000-03-24 2003-01-21 Microsoft Corporation System and method for layered video coding enhancement
US6851086B2 (en) 2000-03-31 2005-02-01 Ted Szymanski Transmitter, receiver, and coding scheme to increase data rate and decrease bit error rate of an optical data link
US6473010B1 (en) 2000-04-04 2002-10-29 Marvell International, Ltd. Method and apparatus for determining error correction code failure rate for iterative decoding algorithms
US8572646B2 (en) 2000-04-07 2013-10-29 Visible World Inc. System and method for simultaneous broadcast for personalized messages
AU2001251353A1 (en) 2000-04-08 2001-10-23 Sun Microsystems, Inc. Streaming a single media track to multiple clients
US6631172B1 (en) 2000-05-01 2003-10-07 Lucent Technologies Inc. Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels
US6742154B1 (en) 2000-05-25 2004-05-25 Ciena Corporation Forward error correction codes for digital optical network optimization
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
US6694476B1 (en) 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
GB2366159B (en) 2000-08-10 2003-10-08 Mitel Corp Combination reed-solomon and turbo coding
US6834342B2 (en) 2000-08-16 2004-12-21 Eecad, Inc. Method and system for secure communication over unstable public connections
KR100447162B1 (ko) 2000-08-19 2004-09-04 엘지전자 주식회사 래디오 링크 콘트롤(rlc)에서 프로토콜 데이터 유닛(pdu) 정보의 길이 지시자(li) 처리방법
JP2002073625A (ja) 2000-08-24 2002-03-12 Nippon Hoso Kyokai <Nhk> 放送番組に同期した情報提供の方法、サーバ及び媒体
US7340664B2 (en) 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
US6486803B1 (en) 2000-09-22 2002-11-26 Digital Fountain, Inc. On demand encoding with a window
US7031257B1 (en) 2000-09-22 2006-04-18 Lucent Technologies Inc. Radio link protocol (RLP)/point-to-point protocol (PPP) design that passes corrupted data and error location information among layers in a wireless data transmission protocol
US7151754B1 (en) 2000-09-22 2006-12-19 Lucent Technologies Inc. Complete user datagram protocol (CUDP) for wireless multimedia packet networks using improved packet level forward error correction (FEC) coding
US7490344B2 (en) 2000-09-29 2009-02-10 Visible World, Inc. System and method for seamless switching
US6411223B1 (en) 2000-10-18 2002-06-25 Digital Fountain, Inc. Generating high weight encoding symbols using a basis
US7613183B1 (en) 2000-10-31 2009-11-03 Foundry Networks, Inc. System and method for router data aggregation and delivery
US6694478B1 (en) 2000-11-07 2004-02-17 Agere Systems Inc. Low delay channel codes for correcting bursts of lost packets
US6732325B1 (en) 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US20020133247A1 (en) 2000-11-11 2002-09-19 Smith Robert D. System and method for seamlessly switching between media streams
US7072971B2 (en) 2000-11-13 2006-07-04 Digital Foundation, Inc. Scheduling of multiple files for serving on a server
US7240358B2 (en) 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
CA2429827C (en) 2000-12-15 2009-08-25 British Telecommunications Public Limited Company Transmission and reception of audio and/or video material
KR100908954B1 (ko) 2000-12-15 2009-07-22 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 오디오 또는 비디오 자료의 전송방법 및 장치
US6850736B2 (en) 2000-12-21 2005-02-01 Tropian, Inc. Method and apparatus for reception quality indication in wireless communication
US7143433B1 (en) 2000-12-27 2006-11-28 Infovalve Computing Inc. Video distribution system using dynamic segmenting of video data files
US20020085013A1 (en) 2000-12-29 2002-07-04 Lippincott Louis A. Scan synchronized dual frame buffer graphics subsystem
NO315887B1 (no) 2001-01-04 2003-11-03 Fast Search & Transfer As Fremgangsmater ved overforing og soking av videoinformasjon
US20080059532A1 (en) 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
DE10103387A1 (de) 2001-01-26 2002-08-01 Thorsten Nordhoff Windkraftanlage mit einer Einrichtung zur Hindernisbefeuerung bzw. Nachtkennzeichnung
FI118830B (fi) 2001-02-08 2008-03-31 Nokia Corp Tietovirran toisto
US6868083B2 (en) 2001-02-16 2005-03-15 Hewlett-Packard Development Company, L.P. Method and system for packet communication employing path diversity
US20020129159A1 (en) 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
KR100464360B1 (ko) 2001-03-30 2005-01-03 삼성전자주식회사 고속 패킷 데이터 전송 이동통신시스템에서 패킷 데이터채널에 대한 효율적인 에너지 분배 장치 및 방법
US20020143953A1 (en) 2001-04-03 2002-10-03 International Business Machines Corporation Automatic affinity within networks performing workload balancing
US6785836B2 (en) 2001-04-11 2004-08-31 Broadcom Corporation In-place data transformation for fault-tolerant disk storage systems
US6820221B2 (en) 2001-04-13 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for detecting process and network failures in a distributed system
US7010052B2 (en) 2001-04-16 2006-03-07 The Ohio University Apparatus and method of CTCM encoding and decoding for a digital communication system
US7035468B2 (en) 2001-04-20 2006-04-25 Front Porch Digital Inc. Methods and apparatus for archiving, indexing and accessing audio and video data
TWI246841B (en) 2001-04-22 2006-01-01 Koninkl Philips Electronics Nv Digital transmission system and method for transmitting digital signals
US20020191116A1 (en) 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
US6497479B1 (en) 2001-04-27 2002-12-24 Hewlett-Packard Company Higher organic inks with good reliability and drytime
US7962482B2 (en) 2001-05-16 2011-06-14 Pandora Media, Inc. Methods and systems for utilizing contextual feedback to generate and modify playlists
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7076478B2 (en) 2001-06-26 2006-07-11 Microsoft Corporation Wrapper playlists on streaming media services
US6745364B2 (en) 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US6928603B1 (en) 2001-07-19 2005-08-09 Adaptix, Inc. System and method for interference mitigation using adaptive forward error correction in a wireless RF data transmission system
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7110412B2 (en) 2001-09-18 2006-09-19 Sbc Technology Resources, Inc. Method and system to transport high-quality video signals
FI115418B (fi) 2001-09-20 2005-04-29 Oplayo Oy Adaptiivinen mediavirta
US6990624B2 (en) 2001-10-12 2006-01-24 Agere Systems Inc. High speed syndrome-based FEC encoder and decoder and system using same
US7480703B2 (en) 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
US7003712B2 (en) 2001-11-29 2006-02-21 Emin Martinian Apparatus and method for adaptive, multimode decoding
US7363354B2 (en) 2001-11-29 2008-04-22 Nokia Corporation System and method for identifying and accessing network services
EP1317070A1 (en) * 2001-12-03 2003-06-04 Mitsubishi Electric Information Technology Centre Europe B.V. Method for obtaining from a block turbo-code an error correcting code of desired parameters
JP2003174489A (ja) 2001-12-05 2003-06-20 Ntt Docomo Inc ストリーミング配信装置、ストリーミング配信方法
FI114527B (fi) 2002-01-23 2004-10-29 Nokia Corp Kuvakehysten ryhmittely videokoodauksessa
EP1670260A3 (en) 2002-01-23 2010-03-03 Nokia Corporation Grouping of image frames in video coding
CN1625880B (zh) 2002-01-30 2010-08-11 Nxp股份有限公司 在具有可变带宽的网络上流式传输多媒体数据
WO2003071440A1 (en) 2002-02-15 2003-08-28 Digital Fountain, Inc. System and method for reliably communicating the content of a live data stream
JP4126928B2 (ja) 2002-02-28 2008-07-30 日本電気株式会社 プロキシサーバ及びプロキシ制御プログラム
JP4116470B2 (ja) 2002-03-06 2008-07-09 ヒューレット・パッカード・カンパニー メディア・ストリーミング配信システム
FR2837332A1 (fr) 2002-03-15 2003-09-19 Thomson Licensing Sa Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants
AU2003221958B2 (en) 2002-04-15 2008-03-06 Nokia Corporation RLP logical layer of a communication station
US6677864B2 (en) 2002-04-18 2004-01-13 Telefonaktiebolaget L.M. Ericsson Method for multicast over wireless networks
JP3689063B2 (ja) 2002-04-19 2005-08-31 松下電器産業株式会社 データ受信装置及びデータ配信システム
JP3629008B2 (ja) 2002-04-19 2005-03-16 松下電器産業株式会社 データ受信装置及びデータ配信システム
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US7177658B2 (en) 2002-05-06 2007-02-13 Qualcomm, Incorporated Multi-media broadcast and multicast service (MBMS) in a wireless communications system
US7200388B2 (en) 2002-05-31 2007-04-03 Nokia Corporation Fragmented delivery of multimedia
US7570665B2 (en) 2002-06-11 2009-08-04 Telefonaktiebolaget L M Ericsson (Publ) Generation of mixed media streams
CN100479333C (zh) 2002-06-11 2009-04-15 数字方敦股份有限公司 通过被恢复符号的钝化作用对链式反应代码解码的装置和方法
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
US6956875B2 (en) 2002-06-19 2005-10-18 Atlinks Usa, Inc. Technique for communicating variable bit rate data over a constant bit rate link
JP4120461B2 (ja) 2002-07-12 2008-07-16 住友電気工業株式会社 伝送データ生成方法及び伝送データ生成装置
US7664126B2 (en) 2002-07-31 2010-02-16 Sharp Kabushiki Kaisha Data communication apparatus, intermittent communication method therefor, program describing the method and recording medium for recording the program
JP2004070712A (ja) 2002-08-07 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム
EP1529389B1 (en) 2002-08-13 2016-03-16 Nokia Technologies Oy Symbol interleaving
US6985459B2 (en) 2002-08-21 2006-01-10 Qualcomm Incorporated Early transmission and playout of packets in wireless communication systems
JP3836858B2 (ja) 2002-09-27 2006-10-25 富士通株式会社 データ配信方法、システム、伝送方法及びプログラム
JP3534742B1 (ja) 2002-10-03 2004-06-07 株式会社エヌ・ティ・ティ・ドコモ 動画像復号方法、動画像復号装置、及び動画像復号プログラム
CN100539439C (zh) 2002-10-05 2009-09-09 数字方敦股份有限公司 连锁反应码的系统编码和解码系统和方法
JP2004135013A (ja) 2002-10-10 2004-04-30 Matsushita Electric Ind Co Ltd 伝送装置及び伝送方法
FI116816B (fi) 2002-10-14 2006-02-28 Nokia Corp Median suoratoisto
US8320301B2 (en) 2002-10-25 2012-11-27 Qualcomm Incorporated MIMO WLAN system
US7289451B2 (en) 2002-10-25 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Delay trading between communication links
WO2004040831A1 (en) 2002-10-30 2004-05-13 Koninklijke Philips Electronics N.V. Adaptative forward error control scheme
JP2004165922A (ja) 2002-11-12 2004-06-10 Sony Corp 情報処理装置および方法、並びにプログラム
US7760801B2 (en) 2002-11-18 2010-07-20 British Telecommunications Public Limited Company Transmission of video
GB0226872D0 (en) 2002-11-18 2002-12-24 British Telecomm Video transmission
KR100502609B1 (ko) 2002-11-21 2005-07-20 한국전자통신연구원 Ldpc 코드를 이용한 부호화기 및 부호화 방법
US7086718B2 (en) 2002-11-23 2006-08-08 Silverbrook Research Pty Ltd Thermal ink jet printhead with high nozzle areal density
JP2004192140A (ja) 2002-12-09 2004-07-08 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2004193992A (ja) 2002-12-11 2004-07-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
US8135073B2 (en) 2002-12-19 2012-03-13 Trident Microsystems (Far East) Ltd Enhancing video images depending on prior image enhancements
US7164882B2 (en) 2002-12-24 2007-01-16 Poltorak Alexander I Apparatus and method for facilitating a purchase using information provided on a media playing device
US7293222B2 (en) 2003-01-29 2007-11-06 Digital Fountain, Inc. Systems and processes for fast encoding of hamming codes
US7756002B2 (en) 2003-01-30 2010-07-13 Texas Instruments Incorporated Time-frequency interleaved orthogonal frequency division multiplexing ultra wide band physical layer
US7525994B2 (en) 2003-01-30 2009-04-28 Avaya Inc. Packet data flow identification for multiplexing
US7231404B2 (en) 2003-01-31 2007-06-12 Nokia Corporation Datacast file transmission with meta-data retention
US7062272B2 (en) 2003-02-18 2006-06-13 Qualcomm Incorporated Method and apparatus to track count of broadcast content recipients in a wireless telephone network
EP1455504B1 (en) 2003-03-07 2014-11-12 Samsung Electronics Co., Ltd. Apparatus and method for processing audio signal and computer readable recording medium storing computer program for the method
JP4173755B2 (ja) 2003-03-24 2008-10-29 富士通株式会社 データ伝送サーバ
US7610487B2 (en) 2003-03-27 2009-10-27 Microsoft Corporation Human input security codes
US7266147B2 (en) 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7408486B2 (en) 2003-04-21 2008-08-05 Qbit Corporation System and method for using a microlet-based modem
JP2004343701A (ja) 2003-04-21 2004-12-02 Matsushita Electric Ind Co Ltd データ受信再生装置、データ受信再生方法及びデータ受信再生処理プログラム
US7113773B2 (en) 2003-05-16 2006-09-26 Qualcomm Incorporated Reliable reception of broadcast/multicast content
JP2004348824A (ja) 2003-05-21 2004-12-09 Toshiba Corp Eccエンコード方法、eccエンコード装置
EP1632081B1 (en) 2003-05-23 2016-08-17 Kirusa, Inc. A method and system for communicating a data file over a network and teleconferencing over a telephony network
JP2004362099A (ja) 2003-06-03 2004-12-24 Sony Corp サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
CA2528261A1 (en) 2003-06-07 2004-12-16 Samsung Electronics Co., Ltd. Apparatus and method for organization and interpretation of multimedia data on a recording medium
KR101003413B1 (ko) 2003-06-12 2010-12-23 엘지전자 주식회사 이동통신 단말기의 전송데이터 압축/해제 방법
US7603689B2 (en) 2003-06-13 2009-10-13 Microsoft Corporation Fast start-up for digital video streams
RU2265960C2 (ru) 2003-06-16 2005-12-10 Федеральное государственное унитарное предприятие "Калужский научно-исследовательский институт телемеханических устройств" Способ передачи информации с использованием адаптивного перемежения
US7391717B2 (en) 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US20050004997A1 (en) 2003-07-01 2005-01-06 Nokia Corporation Progressive downloading of timed multimedia content
US8149939B2 (en) 2003-07-07 2012-04-03 Samsung Electronics Co., Ltd. System of robust DTV signal transmissions that legacy DTV receivers will disregard
US7254754B2 (en) 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
KR100532450B1 (ko) 2003-07-16 2005-11-30 삼성전자주식회사 에러에 대해 강인한 특성을 가지는 데이터 기록 방법,이에 적합한 데이터 재생 방법, 그리고 이에 적합한 장치들
US20050028067A1 (en) 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
US8694869B2 (en) 2003-08-21 2014-04-08 QUALCIMM Incorporated Methods for forward error correction coding above a radio link control layer and related apparatus
IL157886A0 (en) 2003-09-11 2009-02-11 Bamboo Mediacasting Ltd Secure multicast transmission
IL157885A0 (en) 2003-09-11 2004-03-28 Bamboo Mediacasting Ltd Iterative forward error correction
JP4183586B2 (ja) 2003-09-12 2008-11-19 三洋電機株式会社 映像表示装置
WO2005029237A2 (en) 2003-09-15 2005-03-31 Digital Networks North America, Inc. Method and system for adaptive transcoding and transrating in a video network
KR100608715B1 (ko) 2003-09-27 2006-08-04 엘지전자 주식회사 QoS보장형 멀티미디어 스트리밍 서비스 시스템 및 방법
EP1521373B1 (en) 2003-09-30 2006-08-23 Telefonaktiebolaget LM Ericsson (publ) In-place data deinterleaving
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
EP1665539B1 (en) 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
US7516232B2 (en) 2003-10-10 2009-04-07 Microsoft Corporation Media organization for distributed sending of media data
US7614071B2 (en) 2003-10-10 2009-11-03 Microsoft Corporation Architecture for distributed sending of media data
CN100555213C (zh) 2003-10-14 2009-10-28 松下电器产业株式会社 数据转换器
US7650036B2 (en) 2003-10-16 2010-01-19 Sharp Laboratories Of America, Inc. System and method for three-dimensional video coding
US7168030B2 (en) 2003-10-17 2007-01-23 Telefonaktiebolaget Lm Ericsson (Publ) Turbo code decoder with parity information update
US8132215B2 (en) 2003-10-27 2012-03-06 Panasonic Corporation Apparatus for receiving broadcast signal
JP2005136546A (ja) 2003-10-29 2005-05-26 Sony Corp 送信装置および方法、記録媒体、並びにプログラム
DE602004011445T2 (de) 2003-11-03 2009-01-15 Broadcom Corp., Irvine FEC-Dekodierung mit dynamischen Parametern
JP4787167B2 (ja) 2003-12-01 2011-10-05 デジタル ファウンテン, インコーポレイテッド サブシンボル・ベース符号を使用する消去からのデータの保護
US7428669B2 (en) 2003-12-07 2008-09-23 Adaptive Spectrum And Signal Alignment, Inc. Adaptive FEC codeword management
US7574706B2 (en) 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7590118B2 (en) 2003-12-23 2009-09-15 Agere Systems Inc. Frame aggregation format
JP4536383B2 (ja) 2004-01-16 2010-09-01 株式会社エヌ・ティ・ティ・ドコモ データ受信装置およびデータ受信方法
KR100770902B1 (ko) 2004-01-20 2007-10-26 삼성전자주식회사 고속 무선 데이터 시스템을 위한 가변 부호율의 오류 정정부호 생성 및 복호 장치 및 방법
JP4321284B2 (ja) 2004-02-03 2009-08-26 株式会社デンソー ストリーミングデータ送信装置、および情報配信システム
US7599294B2 (en) 2004-02-13 2009-10-06 Nokia Corporation Identification and re-transmission of missing parts
US7609653B2 (en) 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
WO2005094020A1 (en) 2004-03-19 2005-10-06 Telefonaktiebolaget Lm Ericsson (Publ) Higher layer packet framing using rlp
US7240236B2 (en) 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
JP4433287B2 (ja) 2004-03-25 2010-03-17 ソニー株式会社 受信装置および方法、並びにプログラム
US8842175B2 (en) 2004-03-26 2014-09-23 Broadcom Corporation Anticipatory video signal reception and processing
US20050216472A1 (en) 2004-03-29 2005-09-29 David Leon Efficient multicast/broadcast distribution of formatted data
WO2005096301A1 (en) 2004-03-30 2005-10-13 Koninklijke Philips Electronics N.V. System and method for supporting improved trick mode performance for disc-based multimedia content
TW200534875A (en) 2004-04-23 2005-11-01 Lonza Ag Personal care compositions and concentrates for making the same
FR2869744A1 (fr) 2004-04-29 2005-11-04 Thomson Licensing Sa Methode de transmission de paquets de donnees numeriques et appareil implementant la methode
US7633970B2 (en) 2004-05-07 2009-12-15 Agere Systems Inc. MAC header compression for use with frame aggregation
CN101019326B (zh) 2004-05-07 2013-02-27 数字方敦股份有限公司 文件下载和流系统
US20050254575A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US20060037057A1 (en) 2004-05-24 2006-02-16 Sharp Laboratories Of America, Inc. Method and system of enabling trick play modes using HTTP GET
US8331445B2 (en) 2004-06-01 2012-12-11 Qualcomm Incorporated Method, apparatus, and system for enhancing robustness of predictive video codecs using a side-channel based on distributed source coding techniques
US20070110074A1 (en) 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
US7139660B2 (en) 2004-07-14 2006-11-21 General Motors Corporation System and method for changing motor vehicle personalization settings
US8112531B2 (en) 2004-07-14 2012-02-07 Nokia Corporation Grouping of session objects
US8544043B2 (en) 2004-07-21 2013-09-24 Qualcomm Incorporated Methods and apparatus for providing content information to content servers
US7409626B1 (en) 2004-07-28 2008-08-05 Ikanos Communications Inc Method and apparatus for determining codeword interleaver parameters
US7590922B2 (en) 2004-07-30 2009-09-15 Nokia Corporation Point-to-point repair request mechanism for point-to-multipoint transmission systems
US7376150B2 (en) 2004-07-30 2008-05-20 Nokia Corporation Point-to-point repair response mechanism for point-to-multipoint transmission systems
US7930184B2 (en) 2004-08-04 2011-04-19 Dts, Inc. Multi-channel audio coding/decoding of random access points and transients
WO2006020826A2 (en) 2004-08-11 2006-02-23 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
JP4405875B2 (ja) 2004-08-25 2010-01-27 富士通株式会社 エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2006074335A (ja) 2004-09-01 2006-03-16 Nippon Telegr & Teleph Corp <Ntt> 伝送方法、伝送システム及び伝送装置
JP4576936B2 (ja) 2004-09-02 2010-11-10 ソニー株式会社 情報処理装置、情報記録媒体、コンテンツ管理システム、およびデータ処理方法、並びにコンピュータ・プログラム
JP2006115104A (ja) 2004-10-13 2006-04-27 Daiichikosho Co Ltd 高能率符号化された時系列情報をパケット化してリアルタイム・ストリーミング送信し受信再生する方法および装置
US7529984B2 (en) 2004-11-16 2009-05-05 Infineon Technologies Ag Seamless change of depth of a general convolutional interleaver during transmission without loss of data
US7751324B2 (en) 2004-11-19 2010-07-06 Nokia Corporation Packet stream arrangement in multimedia transmission
US20080196061A1 (en) 2004-11-22 2008-08-14 Boyce Jill Macdonald Method and Apparatus for Channel Change in Dsl System
CN101061659B (zh) 2004-12-02 2015-04-29 汤姆逊许可公司 自适应前向纠错的方法和设备
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
JP2006174045A (ja) 2004-12-15 2006-06-29 Ntt Communications Kk 画像配信装置、プログラム及び方法
JP2006174032A (ja) 2004-12-15 2006-06-29 Sanyo Electric Co Ltd 画像データ伝送システム、画像データ受信装置及び画像データ送信装置
US7398454B2 (en) 2004-12-21 2008-07-08 Tyco Telecommunications (Us) Inc. System and method for forward error correction decoding using soft information
JP4391409B2 (ja) 2004-12-24 2009-12-24 株式会社第一興商 高能率符号化された時系列情報をリアルタイム・ストリーミング送信し受信再生する方法と受信装置
WO2006084503A1 (en) 2005-02-08 2006-08-17 Telefonaktiebolaget Lm Ericsson (Publ) On-demand multi-channel streaming session over packet-switched networks
US7822139B2 (en) 2005-03-02 2010-10-26 Rohde & Schwarz Gmbh & Co. Kg Apparatus, systems, methods and computer products for providing a virtual enhanced training sequence
EP1856911A4 (en) 2005-03-07 2010-02-24 Ericsson Telefon Ab L M SWITCHING MULTIMEDIA CHANNELS
US8028322B2 (en) 2005-03-14 2011-09-27 Time Warner Cable Inc. Method and apparatus for network content download and recording
US7219289B2 (en) 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US7418649B2 (en) 2005-03-15 2008-08-26 Microsoft Corporation Efficient implementation of reed-solomon erasure resilient codes in high-rate applications
US7450064B2 (en) 2005-03-22 2008-11-11 Qualcomm, Incorporated Methods and systems for deriving seed position of a subscriber station in support of unassisted GPS-type position determination in a wireless communication system
JP4487028B2 (ja) 2005-03-31 2010-06-23 ブラザー工業株式会社 配信速度制御装置、配信システム、配信速度制御方法、及び配信速度制御用プログラム
US7715842B2 (en) 2005-04-09 2010-05-11 Lg Electronics Inc. Supporting handover of mobile terminal
RU2377736C2 (ru) 2005-04-13 2009-12-27 Нокиа Корпорейшн Кодирование, хранение и передача информации о масштабируемости
JP4515319B2 (ja) 2005-04-27 2010-07-28 株式会社日立製作所 コンピュータシステム
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US7961700B2 (en) 2005-04-28 2011-06-14 Qualcomm Incorporated Multi-carrier operation in data transmission systems
JP2006319743A (ja) 2005-05-13 2006-11-24 Toshiba Corp 受信装置
EP1884063A1 (en) 2005-05-24 2008-02-06 Nokia Corporation Method and apparatuses for hierarchical transmission/reception in digital broadcast
US7644335B2 (en) 2005-06-10 2010-01-05 Qualcomm Incorporated In-place transformations with applications to encoding and decoding various classes of codes
US7676735B2 (en) 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
JP2007013436A (ja) 2005-06-29 2007-01-18 Toshiba Corp 符号化ストリーム再生装置
JP2007013675A (ja) 2005-06-30 2007-01-18 Sanyo Electric Co Ltd ストリーミング配信システム及びサーバ
US20070006274A1 (en) 2005-06-30 2007-01-04 Toni Paila Transmission and reception of session packets
US7725593B2 (en) 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
US20070022215A1 (en) 2005-07-19 2007-01-25 Singer David W Method and apparatus for media data transmission
ATE514246T1 (de) 2005-08-19 2011-07-15 Hewlett Packard Development Co Andeutung von verlorenen segmenten über schichtgrenzen
US7924913B2 (en) 2005-09-15 2011-04-12 Microsoft Corporation Non-realtime data transcoding of multimedia content
US20070067480A1 (en) 2005-09-19 2007-03-22 Sharp Laboratories Of America, Inc. Adaptive media playout by server media processing for robust streaming
US20070078876A1 (en) 2005-09-30 2007-04-05 Yahoo! Inc. Generating a stream of media data containing portions of media files using location tags
CA2562212C (en) 2005-10-05 2012-07-10 Lg Electronics Inc. Method of processing traffic information and digital broadcast system
US7164370B1 (en) 2005-10-06 2007-01-16 Analog Devices, Inc. System and method for decoding data compressed in accordance with dictionary-based compression schemes
CN100442858C (zh) 2005-10-11 2008-12-10 华为技术有限公司 分组网络中多媒体实时传输的唇同步方法及其装置
US7720096B2 (en) 2005-10-13 2010-05-18 Microsoft Corporation RTP payload format for VC-1
JP4727401B2 (ja) 2005-12-02 2011-07-20 日本電信電話株式会社 無線マルチキャスト伝送システム、無線送信装置及び無線マルチキャスト伝送方法
JP4456064B2 (ja) 2005-12-21 2010-04-28 日本電信電話株式会社 パケット送信装置、受信装置、システム、およびプログラム
US8225164B2 (en) 2006-01-05 2012-07-17 Telefonaktiebolaget Lm Ericsson (Publ) Media container file management
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
CN101390399B (zh) 2006-01-11 2010-12-01 诺基亚公司 可伸缩视频编码中的图片的后向兼容聚合
WO2007081176A1 (en) 2006-01-12 2007-07-19 Lg Electronics Inc. Processing multiview video
WO2007086654A1 (en) 2006-01-25 2007-08-02 Lg Electronics Inc. Digital broadcasting system and method of processing data
RU2290768C1 (ru) 2006-01-30 2006-12-27 Общество с ограниченной ответственностью "Трафиклэнд" Система медиавещания в инфраструктуре оператора мобильной связи
US7262719B2 (en) 2006-01-30 2007-08-28 International Business Machines Corporation Fast data stream decoding using apriori information
GB0602314D0 (en) 2006-02-06 2006-03-15 Ericsson Telefon Ab L M Transporting packets
US8990153B2 (en) 2006-02-07 2015-03-24 Dot Hill Systems Corporation Pull data replication model
CN101379712B (zh) 2006-02-08 2011-12-14 汤姆森特许公司 瑞普特代码的解码
US9136983B2 (en) 2006-02-13 2015-09-15 Digital Fountain, Inc. Streaming and buffering using variable FEC overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US20070200949A1 (en) 2006-02-21 2007-08-30 Qualcomm Incorporated Rapid tuning in multimedia applications
JP2007228205A (ja) 2006-02-23 2007-09-06 Funai Electric Co Ltd ネットワークサーバ
US8320450B2 (en) 2006-03-29 2012-11-27 Vidyo, Inc. System and method for transcoding between scalable and non-scalable video codecs
US20080010153A1 (en) 2006-04-24 2008-01-10 Pugh-O'connor Archie Computer network provided digital content under an advertising and revenue sharing basis, such as music provided via the internet with time-shifted advertisements presented by a client resident application
WO2007127741A2 (en) 2006-04-24 2007-11-08 Sun Microsystems, Inc. Media server system
US7640353B2 (en) 2006-04-27 2009-12-29 Microsoft Corporation Guided random seek support for media streaming
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US7525993B2 (en) 2006-05-24 2009-04-28 Newport Media, Inc. Robust transmission system and method for mobile television applications
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US20100211690A1 (en) 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
TWM302355U (en) 2006-06-09 2006-12-11 Jia-Bau Jeng Fixation and cushion structure of knee joint
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
JP2008011404A (ja) 2006-06-30 2008-01-17 Toshiba Corp コンテンツ処理装置及びコンテンツ処理方法
JP4392004B2 (ja) * 2006-07-03 2009-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション パケット回復のための符号化および復号化技術
CN102148857A (zh) 2006-07-20 2011-08-10 桑迪士克股份有限公司 内容分布系统
US7711797B1 (en) 2006-07-31 2010-05-04 Juniper Networks, Inc. Optimizing batch size for prefetching data over wide area networks
US8209736B2 (en) 2006-08-23 2012-06-26 Mediatek Inc. Systems and methods for managing television (TV) signals
WO2008023328A2 (en) 2006-08-24 2008-02-28 Nokia Corporation System and method for indicating track relationships in media files
US20080066136A1 (en) 2006-08-24 2008-03-13 International Business Machines Corporation System and method for detecting topic shift boundaries in multimedia streams using joint audio, visual and text cues
JP2008109637A (ja) 2006-09-25 2008-05-08 Toshiba Corp 動画像符号化装置及びその方法
EP2084928B1 (en) 2006-10-30 2017-08-23 LG Electronics Inc. Method of performing random access in a wireless communication system
JP2008118221A (ja) 2006-10-31 2008-05-22 Toshiba Corp 復号装置及び復号方法
WO2008054100A1 (en) 2006-11-01 2008-05-08 Electronics And Telecommunications Research Institute Method and apparatus for decoding metadata used for playing stereoscopic contents
AU2007319261B2 (en) 2006-11-14 2010-12-16 Qualcomm Incorporated Systems and methods for channel switching
US8027328B2 (en) 2006-12-26 2011-09-27 Alcatel Lucent Header compression in a wireless communication network
CN101636726B (zh) 2007-01-05 2013-10-30 Divx有限责任公司 包含连续播放的视频分配系统
CN101669323A (zh) 2007-01-09 2010-03-10 诺基亚公司 用于在mbms文件修复中支持文件版本控制的方法
WO2008084876A1 (en) 2007-01-11 2008-07-17 Panasonic Corporation Method for trick playing on streamed and encrypted multimedia
US20080172430A1 (en) 2007-01-11 2008-07-17 Andrew Thomas Thorstensen Fragmentation Compression Management
KR20080066408A (ko) 2007-01-12 2008-07-16 삼성전자주식회사 3차원 영상 처리 장치 및 방법
EP3041195A1 (en) 2007-01-12 2016-07-06 University-Industry Cooperation Group Of Kyung Hee University Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format
US7949195B2 (en) 2007-01-16 2011-05-24 Cisco Technology, Inc. Per block breakpoint determining for hybrid variable length coding
US7721003B2 (en) 2007-02-02 2010-05-18 International Business Machines Corporation System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client
US7805456B2 (en) 2007-02-05 2010-09-28 Microsoft Corporation Query pattern to enable type flow of element types
US20080192818A1 (en) 2007-02-09 2008-08-14 Dipietro Donald Vincent Systems and methods for securing media
US20080232357A1 (en) 2007-03-19 2008-09-25 Legend Silicon Corp. Ls digital fountain code
JP4838191B2 (ja) 2007-05-08 2011-12-14 シャープ株式会社 ファイル再生装置、ファイル再生方法、ファイル再生を実行させるプログラム及びそのプログラムを記録した記録媒体
JP2008283571A (ja) 2007-05-11 2008-11-20 Ntt Docomo Inc コンテンツ配信装置、コンテンツ配信システム、およびコンテンツ配信方法
WO2008140261A2 (en) 2007-05-14 2008-11-20 Samsung Electronics Co., Ltd. Broadcasting service transmitting apparatus and method and broadcasting service receiving apparatus and method for effectively accessing broadcasting service
WO2008144001A1 (en) 2007-05-16 2008-11-27 Thomson Licensing Apparatus and method for encoding and decoding signals
US8274551B2 (en) 2007-06-11 2012-09-25 Samsung Electronics Co., Ltd. Method and apparatus for generating header information of stereoscopic image data
CN101690229A (zh) 2007-06-26 2010-03-31 诺基亚公司 用于指示时间层切换点的系统和方法
US7917702B2 (en) 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
JP2009027598A (ja) 2007-07-23 2009-02-05 Hitachi Ltd 映像配信サーバおよび映像配信方法
US8327403B1 (en) 2007-09-07 2012-12-04 United Video Properties, Inc. Systems and methods for providing remote program ordering on a user device via a web server
EP2203836A4 (en) * 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
US8233532B2 (en) 2007-09-21 2012-07-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal
US8346959B2 (en) 2007-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Client-controlled adaptive streaming
US7796648B2 (en) 2007-10-09 2010-09-14 Samsung Electronics Co., Ltd. Apparatus and method for generating and parsing MAC PDU in a mobile communication system
US8635360B2 (en) 2007-10-19 2014-01-21 Google Inc. Media playback point seeking using data range requests
US8706907B2 (en) 2007-10-19 2014-04-22 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US20090125636A1 (en) 2007-11-13 2009-05-14 Qiong Li Payload allocation methods for scalable multimedia servers
WO2009065526A1 (en) 2007-11-23 2009-05-28 Media Patents S.L. A process for the on-line distribution of audiovisual contents with advertisements, advertisement management system, digital rights management system and audiovisual content player provided with said systems
WO2009075766A2 (en) 2007-12-05 2009-06-18 Swarmcast, Inc. Dynamic bit rate scaling
TWI355168B (en) 2007-12-07 2011-12-21 Univ Nat Chiao Tung Application classification method in network traff
JP5385598B2 (ja) 2007-12-17 2014-01-08 キヤノン株式会社 画像処理装置及び画像管理サーバ装置及びそれらの制御方法及びプログラム
US9313245B2 (en) 2007-12-24 2016-04-12 Qualcomm Incorporated Adaptive streaming for on demand wireless services
EP2086237B1 (en) 2008-02-04 2012-06-27 Alcatel Lucent Method and device for reordering and multiplexing multimedia packets from multimedia streams pertaining to interrelated sessions
US8151174B2 (en) 2008-02-13 2012-04-03 Sunrise IP, LLC Block modulus coding (BMC) systems and methods for block coding with non-binary modulus
US7984097B2 (en) 2008-03-18 2011-07-19 Media Patents, S.L. Methods for transmitting multimedia files and advertisements
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US20090257508A1 (en) 2008-04-10 2009-10-15 Gaurav Aggarwal Method and system for enabling video trick modes
WO2009128642A2 (en) 2008-04-14 2009-10-22 Lg Electronics Inc. Method and apparatus for performing random access procedures
US20100049865A1 (en) 2008-04-16 2010-02-25 Nokia Corporation Decoding Order Recovery in Session Multiplexing
US8855199B2 (en) 2008-04-21 2014-10-07 Nokia Corporation Method and device for video coding and decoding
RU2010150108A (ru) 2008-05-07 2012-06-20 Диджитал Фаунтин, Инк. (Us) Быстрое переключение канала и защита потоковой передачи высокого качества по широковещательному каналу
US7979570B2 (en) 2008-05-12 2011-07-12 Swarmcast, Inc. Live media delivery over a packet-based computer network
JP5022301B2 (ja) 2008-05-19 2012-09-12 株式会社エヌ・ティ・ティ・ドコモ プロキシサーバおよび通信中継プログラム、並びに通信中継方法
CN101287107B (zh) 2008-05-29 2010-10-13 腾讯科技(深圳)有限公司 媒体文件的点播方法、系统和设备
US7860996B2 (en) 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
US20100011274A1 (en) 2008-06-12 2010-01-14 Qualcomm Incorporated Hypothetical fec decoder and signalling for decoding control
US8775566B2 (en) 2008-06-21 2014-07-08 Microsoft Corporation File format for media distribution and presentation
US8387150B2 (en) 2008-06-27 2013-02-26 Microsoft Corporation Segmented media content rights management
US8468426B2 (en) 2008-07-02 2013-06-18 Apple Inc. Multimedia-aware quality-of-service and error correction provisioning
US8539092B2 (en) 2008-07-09 2013-09-17 Apple Inc. Video streaming using multiple channels
US20100153578A1 (en) 2008-07-16 2010-06-17 Nokia Corporation Method and Apparatus for Peer to Peer Streaming
US8638796B2 (en) 2008-08-22 2014-01-28 Cisco Technology, Inc. Re-ordering segments of a large number of segmented service flows
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8370520B2 (en) 2008-11-24 2013-02-05 Juniper Networks, Inc. Adaptive network content delivery system
US20100169458A1 (en) 2008-12-31 2010-07-01 David Biderman Real-Time or Near Real-Time Streaming
US8743906B2 (en) 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
RU2689191C2 (ru) 2009-01-26 2019-05-24 Томсон Лайсенсинг Упаковка кадров для кодирования видео
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US8621044B2 (en) 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
US8909806B2 (en) 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
US8903895B2 (en) 2009-07-22 2014-12-02 Xinlab, Inc. Method of streaming media to heterogeneous client devices
US8355433B2 (en) 2009-08-18 2013-01-15 Netflix, Inc. Encoding video streams for adaptive video streaming
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US20120151302A1 (en) 2010-12-10 2012-06-14 Qualcomm Incorporated Broadcast multimedia storage and access using page maps when asymmetric memory is used
CA2772100C (en) 2009-09-02 2016-06-28 Hang Zhang Mac packet data unit construction for wireless systems
US20110096828A1 (en) 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US9438861B2 (en) 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
JP2011087103A (ja) 2009-10-15 2011-04-28 Sony Corp コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供
RU2622621C2 (ru) 2009-11-04 2017-06-16 Амотек Ко., Лтд. Система и способ для потоковой передачи воспроизводимого контента
KR101786050B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 전송 방법 및 장치
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
CN101729857A (zh) 2009-11-24 2010-06-09 中兴通讯股份有限公司 一种接入视频服务的方法及视频播放系统
CN102687518B (zh) 2009-12-11 2016-06-01 诺基亚技术有限公司 用于流媒体文件内表示的描述和定时的装置及方法
KR101709903B1 (ko) 2010-02-19 2017-02-23 텔레폰악티에볼라겟엘엠에릭슨(펍) 에이치티티피 스트리밍에서 적응화를 위한 방법 및 장치
JP5996439B2 (ja) 2010-02-19 2016-09-21 テレフオンアクチーボラゲット エルエム エリクソン(パブル) Httpストリーミングにおける表現切り替えのための方法及び装置
JP5071495B2 (ja) 2010-03-04 2012-11-14 ウシオ電機株式会社 光源装置
JP2013522949A (ja) 2010-03-11 2013-06-13 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート Mimoシステムにおけるデータを送受信する方法及び装置
US9225961B2 (en) 2010-05-13 2015-12-29 Qualcomm Incorporated Frame packing for asymmetric stereo video
US9497290B2 (en) 2010-06-14 2016-11-15 Blackberry Limited Media presentation description delta file for HTTP streaming
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
KR20120010089A (ko) 2010-07-20 2012-02-02 삼성전자주식회사 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8711933B2 (en) 2010-08-09 2014-04-29 Sony Computer Entertainment Inc. Random access point (RAP) formation using intra refreshing technique in video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
KR101737325B1 (ko) 2010-08-19 2017-05-22 삼성전자주식회사 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치
US8615023B2 (en) 2010-10-27 2013-12-24 Electronics And Telecommunications Research Institute Apparatus and method for transmitting/receiving data in communication system
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US20120208580A1 (en) 2011-02-11 2012-08-16 Qualcomm Incorporated Forward error correction scheduling for an improved radio link protocol
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery

Also Published As

Publication number Publication date
EP2673885A1 (en) 2013-12-18
CN103444087A (zh) 2013-12-11
CN103444087B (zh) 2018-02-09
JP5863200B2 (ja) 2016-02-16
US20120210190A1 (en) 2012-08-16
WO2012109614A1 (en) 2012-08-16
JP2014505450A (ja) 2014-02-27
US9270299B2 (en) 2016-02-23
KR101554406B1 (ko) 2015-09-18

Similar Documents

Publication Publication Date Title
KR101554406B1 (ko) 유연한 소스 블록 매핑을 갖는 탄성 코드들을 이용한 인코딩 및 디코딩
US9660763B2 (en) Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
KR101143282B1 (ko) 연쇄 반응 코드의 체계적 인코딩 및 디코딩
KR101355761B1 (ko) 통신 시스템의 다중 필드 기반 코드 발생기 및 디코더
KR101041762B1 (ko) 통신 채널을 통해 소스로부터 목적지로 데이터를 송신 및 인코딩하는 방법
US8555146B2 (en) FEC streaming with aggregation of concurrent streams for FEC computation
WO2004068715A2 (en) Systems and processes for fast encoding of hamming codes
Chaudhary et al. Error control techniques and their applications
WO2022135719A1 (en) Staircase polar encoding and decoding
JP4972128B2 (ja) 符号化・復号システム及び符号化・復号方法
JP5238060B2 (ja) 符号化装置及び方法及び符号化・復号化システム及び復号化方法
KR20120048363A (ko) 로그우도비율을 이용한 복호화 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 4