KR101451338B1 - 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 - Google Patents

인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 Download PDF

Info

Publication number
KR101451338B1
KR101451338B1 KR1020127007116A KR20127007116A KR101451338B1 KR 101451338 B1 KR101451338 B1 KR 101451338B1 KR 1020127007116 A KR1020127007116 A KR 1020127007116A KR 20127007116 A KR20127007116 A KR 20127007116A KR 101451338 B1 KR101451338 B1 KR 101451338B1
Authority
KR
South Korea
Prior art keywords
symbols
source
symbol
encoded
decoding
Prior art date
Application number
KR1020127007116A
Other languages
English (en)
Other versions
KR20120058556A (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
Priority claimed from US12/604,773 external-priority patent/US7956772B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20120058556A publication Critical patent/KR20120058556A/ko
Application granted granted Critical
Publication of KR101451338B1 publication Critical patent/KR101451338B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • 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
    • 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
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • 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/0064Concatenated 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/0064Concatenated codes
    • H04L1/0065Serial concatenated 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/0064Concatenated codes
    • H04L1/0066Parallel concatenated codes

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)
  • Error Detection And Correction (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

복수의 인코딩된 심볼들의 인코딩이 제공되며, 여기서, 인코딩된 심볼은, 중간 심볼들의 제 1 세트로부터 생성되는 제 1 심볼 및 중간 심볼들의 제 2 세트로부터 생성되는 제 2 심볼의 조합으로부터 생성되고, 각각의 세트는 적어도 하나의 상이한 코딩 파라미터를 갖고, 중간 심볼들은 소스 심볼들의 세트에 기초하여 생성된다. 데이터를 디코딩하는 방법이 또한 제공되고, 여기서, 중간 심볼들의 세트는 수신된 인코딩된 심볼들의 세트, 디코딩을 위해 심볼들의 제 1 및 제 2 세트들로 구성된 중간 심볼들로부터 디코딩되고, 제 2 세트의 중간 심볼들은 그 인코딩된 심볼들로부터 중간 심볼들을 복원하기 위해 디코딩 프로세스를 스케줄링할 목적으로 영속적으로 비활성화되고, 소스 심볼들의 적어도 일부는 중간 심볼들의 디코딩된 세트로부터 복원된다.

Description

인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 FEC 코드들을 활용하는 방법 및 장치{METHODS AND APPARATUS EMPLOYING FEC CODES WITH PERMANENT INACTIVATION OF SYMBOLS FOR ENCODING AND DECODING PROCESSES}
본 출원은 M. Amin Shokrollahi 등에 의해 2009년 10월 23일 출원되고 "Method and Apparatus Employing FEC Codes with Permanent Inactivation of Symbols for Encoding and Decoding Processes"로 명명된 미국 특허출원 제 12/604,773호의 부분계속 출원이고, 추가적으로, 각각 M. Amin Shokrollahi 등에 의해 출원되고 각각 "Method and Apparatus Employing FEC Codes with Permanent Inactivation of Symbols for Encoding and Decoding Processes"로 명명된 하기 가출원들, 즉, 2010년 6월 11일 출원된 미국 가특허출원 제 61/353,910호, 2009년 11월 2일 출원된 미국 가특허출원 제 61/257,146호, 및 2009년 8월 19일 출원된 미국 가특허출원 제 61/235,285호에 대해 우선권을 주장한다. 상기 인용된 각각의 가출원 및 비가출원은 모든 목적들을 위해 본 명세서에 참조로 통합된다.
하기 참조문헌들이 모든 목적들을 위해 그 전체가 본 명세서에 참조로 통합된다:
1) Michael G. Luby에 의해 출원되고 "Information Additive Code Generator and Decoder for Communication Systems"로 명명된 미국 특허 제 6,307,487호(이하, "Luby I");
2) Michael G. Luby에 의해 출원되고 "Information Additive Group Code Generator and Decoder for Communication Systems"로 명명된 미국 특허 제 6,320,520호(이하, "Luby II");
3) M. Amin Shokrollahi에 의해 출원되고 "Multi Stage Code Generator and Decoder for Communication Systems"로 명명된 미국 특허 제 7,068,729호(이하, "Shokrollahi I");
4) M. Amin Shokrollahi에 의해 출원되고 "Systems and Processes for Decoding a Chain Reaction Code Through Inactivation"으로 명명된 미국 특허 제 6,856,263호(이하, "Shokrollahi II");
5) M. Amin Shokrollahi에 의해 출원되고 "Systematic Encoding and Decoding of Chain Reaction Codes"로 명명된 미국 특허 제 6,909,383호(이하, "Shokrollahi III");
6) Michael G. Luby 및 M. Amin Shokrollahi에 의해 출원되고 "In Place Transformations with Applications to Encoding and Decoding Various Classes of Codes"로 명명된 미국 특허 공개공보 제 2006/0280254호(이하, "Luby III");
7) M. Amin Shokrollahi에 의해 출원되고 "Multiple Field Based Code Generator and Decoder for Communications Systems"로 명명된 미국 특허 공개공보 제 2007/0195894호(이하, "Shokrollahi IV").
본 특허 발명은 통신 시스템들에서 데이터의 인코딩 및 디코딩에 관한 것이고, 더 상세하게는, 통신되는 데이터에서의 에러들 및 갭(gap)들을 고려하기 위해 효율적 방식으로 데이터를 인코딩 및 디코딩하는 통신 시스템들에 관한 것이다.
전송기와 수신기 사이에서 통신 채널을 통한 파일들의 송신을 위한 기술들은 다수의 문헌들의 주제이다. 바람직하게는, 수신기는 전송기에 의해 채널을 통해 송신된 데이터의 정확한 카피를 어느 정도 레벨의 정확도로 수신하기를 원한다. 채널이 완전한 신뢰도를 갖지 않는 경우(거의 대부분의 물리적으로 실현가능한 시스템들을 커버함), 하나의 관심사는 송신에서 손실되거나 왜곡된(garbled) 데이터를 처리하는 방법이다. 손상된 데이터가 잘못 수신된 데이터인 경우를 수신기가 항상 인식할 수는 없기 때문에, 흔히, 손상된 데이터(에러들)보다 손실된 데이터(소거들(erasures))가 처리하기에 더 용이하다. 소거들 및/또는 에러들을 정정하기 위해 다수의 에러 정정 코드들이 개발되고 있다. 통상적으로, 데이터가 송신되고 있는 채널의 부정확(infidelity)에 대한 몇몇 정보 및 송신되고 있는 데이터의 성질에 기초하여, 이용되는 특정한 코드가 선택된다. 예를 들어, 채널이 긴 기간들의 부정확을 갖는 것으로 알려진 경우, 버스트 에러 코드가 그러한 애플리케이션에 가장 적합할 수 있다. 오직 짧고 빈번하지 않은 에러들이 예상되는 경우, 단순한 패리티(parity) 코드가 최상일 수 있다.
본 명세서에서 사용되는 "소스 데이터(source data)"는, 하나 이상의 전송기들에서 이용가능하고, 에러들 및/또는 소거들 등을 갖거나 갖지 않는 송신된 시퀀스로부터의 복원에 의해, 이를 획득하도록 수신기가 이용되는 데이터를 지칭한다. 본 명세서에서 사용되는 "인코딩된 데이터(encoded data)"는, 소스 데이터를 복원 또는 획득하기 위해 전달되고 이용될 수 있는 데이터를 지칭한다. 간단한 경우에, 인코딩된 데이터는 소스 데이터의 카피지만, 수신된 인코딩된 데이터가 (에러들 및/또는 소거들에 기인하여) 송신된 인코딩된 데이터와 상이하면, 이 간단한 경우에서, 소스 데이터는 소스 데이터에 대한 추가적 데이터 없이는 완전하게 복원가능하지 않을 수 있다. 송신은 공간 또는 시간에 걸칠 수 있다. 더 복잡한 경우에, 인코딩된 데이터는 변환된 소스 데이터에 기초하여 생성되고, 하나 이상의 전송기들로부터 수신기들로 송신된다. 소스 데이터가 인코딩된 데이터의 일부로 발견되면, 인코딩은 "시스터메틱(systematic)"으로 지칭된다. 시스터메틱 인코딩의 간단한 예에서, 인코딩된 데이터를 형성하기 위해, 소스 데이터에 대한 리던던트(redundant) 정보가 소스 데이터의 말단에 첨부된다.
또한 본 명세서에서 사용되는 "입력 데이터(input data)"는, FEC(순방향 에러 정정; Forward error correcting) 인코더 장치 또는 FEC 인코더 모듈, 컴포넌트, 단계 등("FEC 인코더")의 입력에 제공되는 데이터를 지칭하고, "출력 데이터(output data)"는 FEC 인코더의 출력에 제공되는 데이터는 지칭한다. 그에 따라, 출력 데이터는 FEC 디코더의 입력에 제공되는 것이 예상될 것이고, FEC 디코더는, 자신이 프로세싱한 출력 데이터에 기초하여, 입력 데이터 또는 이의 대응물을 출력하는 것이 예상될 것이다. 몇몇 경우들에서, 입력 데이터는, 소스 데이터이거나 이를 포함하고, 몇몇 경우들에서, 출력 데이터는 인코딩된 데이터이거나 이를 포함한다. 다른 경우들에서, 전송기 디바이스 또는 전송기 프로그램 코드는 하나보다 많은 FEC 인코더를 포함할 수 있는데, 즉, 소스 데이터는 일련의 복수의 FEC 인코더들에서 인코딩된 데이터로 변환된다. 유사하게, 수신기에서, 수신된 인코딩된 데이터로부터 소스 데이터를 생성하기 위해 적용되는 하나보다 많은 FEC 디코더가 존재할 수 있다.
데이터는 심볼들로 분할되는 것으로 고려될 수 있다. 인코더는, 소스 심볼들 또는 입력 심볼들의 시퀀스로부터 인코딩된 심볼들 또는 출력 심볼들을 생성하는 컴퓨터 시스템, 디바이스, 전자 회로 등이고, 디코더는, 수신되거나 복원된 인코딩된 심볼들 또는 출력 심볼들로부터 소스 심볼들 또는 입력 심볼들의 시퀀스를 복원하는 대응부이다. 인코더 및 디코더는 채널에 의해 시간 및/또는 공간에서 분리되고, 임의의 수신된 인코딩된 심볼들은, 대응하는 송신된 인코딩된 심볼들과 정확하게 동일하지는 않을 수 있고, 송신된 인코딩된 심볼들이 송신된 순서와 정확히 동일한 순서로 수신되지는 않을 수 있다. 심볼의 "사이즈(size)"는, 심볼이 실제로 비트 스트림으로 분해되는지 여부와 무관하게 비트들로 측정될 수 있고, 여기서, 심볼이 2M개의 심볼들의 알파벳으로부터 선택되는 경우, 심볼은 M 비트의 사이즈를 갖는다. 본 명세서의 다수의 예들에서, 심볼들은 바이트들로 측정되고, 코드들은 256개의 가능한 필드 상에 있을 수 있지만(256개의 가능한 8 비트 패턴들이 존재함), 상이한 데이터 측정 단위들이 이용될 수 있고 데이터를 다양한 방식들로 측정하는 것이 주지되어 있음을 이해해야 한다.
Luby I은 계산 효율적, 메모리 효율적 및 대역폭 효율적 방식으로 에러 정정을 처리하기 위해 연쇄 반응(chain reaction) 코드들과 같은 코드들의 이용을 설명한다. 연쇄 반응 인코더에 의해 생성되는 인코딩된 심볼들의 하나의 특성은, 인코딩된 심볼들이 충분히 수신되자마자 수신기는 원래의 파일을 복원할 수 있다는 것이다. 더 상세하게는, 원래의 K개의 소스 심볼들을 높은 확률로 복원하기 위해, 수신기는 대략 K+A개의 인코딩된 심볼들을 요구한다.
소정의 상황에 대한 "절대적 수신 오버헤드"는 값 A로 표현되는 한편, "상대적 수신 오버헤드"는 비 A/K로 계산될 수 있다. 절대적 수신 오버헤드는, 이론적으로 최소량의 데이터인 정보 이상으로 얼마나 많은 초과 데이터가 수신될 것이 요구되는지의 측정치이고, 이는 디코더의 신뢰도에 의존할 수 있고, 소스 심볼들의 수인 K의 함수로서 변할 수 있다. 유사하게, 상대적 수신 오버헤드 A/K는, 복원되고 있는 소스 데이터의 사이즈에 대해 상대적으로, 이론적으로 최소량의 데이터인 정보 이상으로 얼마나 많은 초과 데이터가 수신될 것이 요구되는지의 측정치이고, 또한 디코더의 신뢰도에 의존할 수 있고, 소스 심볼들의 수인 K의 함수로서 변할 수 있다.
연쇄 반응 코드들은 패킷 기반 네트워크를 통한 통신에 대해 매우 유용하다. 그러나, 이들은 때때로 매우 계산 집약적일 수 있다. 연쇄 반응 또는 다른 레이트리스(rateless) 코드를 이용하여 인코딩하는 동적 인코더 이전에 정적 인코더를 이용하여 소스 심볼들이 인코딩되면, 디코더는 보다 자주 또는 보다 용이하게 디코딩할 수 있다. 이러한 디코더들은, 예를 들어, Shokrollahi I에 제시되어 있다. 여기에 제시된 예들에서, 소스 심볼들은, 인코딩된 심볼들인 출력 심볼들을 생성하는 동적 인코더로의 입력 심볼들인 출력 심볼들을 생성하는 정적 인코더로의 입력 심볼들이고, 동적 인코더는, 입력 심볼들의 수에 대해 고정된 레이트가 아닌 양으로 다수의 출력 심볼들을 생성할 수 있는 레이트리스 인코더이다. 정적 인코더는 하나보다 많은 고정 레이트 인코더를 포함할 수 있다. 예를 들어, 정적 인코더는 해밍(Hamming) 인코더, 저밀도 패리티 체크("LDPC") 인코더, 고밀도 패리티 체크("HDPC") 인코더 등을 포함할 수 있다.
연쇄 반응 코드들은, 몇몇 심볼들이 수신된 심볼들로부터 디코더에서 복원될 때, 이 심볼들이 추가적 심볼들을 복원하는데 이용될 수 있고, 다음으로 추가적 심볼들은 또 다른 심볼들을 복원하는데 이용될 수 있는 특성을 갖는다. 바람직하게는, 디코더에서 해결되는(solving) 심볼의 연쇄 반응은, 수신된 심볼들의 풀(pool)이 모두 소모되기 전에 원하는 심볼들 모두가 복원되도록 계속될 수 있다. 바람직하게는, 연쇄 반응 인코딩 및 디코딩 프로세스들을 수행하는 계산 복잡도가 낮다.
디코더에서의 복원 프로세스는, 어떤 심볼들이 수신되었는지를 결정하는 것, 원래의 입력 심볼들을 수신된 인코딩된 심볼들에 맵핑하는 행렬을 생성하는 것, 및 그 행렬을 반전시키고, 반전된 행렬과 수신된 인코딩된 심볼들의 벡터의 행렬 곱을 수행하는 것을 수반할 수 있다. 통상적인 시스템에서, 이러한 브루트 포스(brute force) 구현은 과도한 계산 노력 및 메모리 요건들을 소모시킬 수 있다. 물론, 수신된 인코딩된 심볼들의 특정한 세트의 경우, 원래의 입력 심볼들 모두를 복원하는 것은 불가능할 수도 있지만, 이것이 가능한 경우에도, 그 결과를 계산하는 것은 매우 계산 소모적일 수 있다.
Shokrollahi II는, "비활성화"로 지칭되는 접근방식을 제시하고, 여기서는 디코딩이 2단계로 발생한다. 제 1 단계에서, 디코더는, 수신된 인코딩된 심볼들 중 어떤 심볼들을 이용가능한 것으로 할지, 행렬들이 어떻게 간주될지를 검토하고, 소정의 수신된 인코딩된 심볼들을 완성하기 위해 연쇄 반응 프로세스를 허용할 디코딩 단계들의 순서를 적어도 대략적으로 결정한다. 제 2 단계에서, 디코더는 결정된 디코딩 단계들의 순서에 따라 연쇄 반응 디코딩을 실행한다. 이것은, 메모리 효율적 방식(동작을 위해, 더 메모리-비효율적인 프로세스보다 더 적은 메모리 저장부를 요구하는 방식)으로 행해질 수 있다.
비활성화 접근방식에서, 제 1 디코딩 단계는, 해결될 수 있는 어느 정도 수의 입력 심볼들을 결정하고 그 결정이 중지될 때를 결정하기 위해 행렬 또는 행렬의 등가물을 조작하는 것, 입력 심볼들 중 하나를 "비활성화된 심볼"로 지정하고, 그 비활성화된 심볼이 실제로 해결된 것으로 가정하여 결정 프로세스를 계속하는 것, 그리고 마지막으로, 원래의 디코딩 행렬보다 훨씬 작은 행렬을 반전시키기 위해 가우시안(Gaussian) 소거 또는 몇몇 다른 방법을 이용하여 그 비활성화된 심볼들을 해결하는 것을 수반한다. 이 결정을 이용하여, 연쇄 반응 시퀀스는 복원되는 입력 심볼들에 도달하기 위해 수신된 인코딩된 심볼들에 대해 수행될 수 있고, 복원된 입력 심볼들은, 원래의 입력 심볼들의 전부 또는 원래의 입력 심볼들의 적절한 세트일 수 있다.
디코더가 제한된 메모리 및 계산 전력을 갖는 저전력 디바이스 내에 있거나, 허용가능한 절대적 또는 상대적 수신 오버헤드에 대해 엄격한 제약들이 존재하는 경우와 같이, 디코더에 대해 엄격한 제약들을 부여하는 몇몇 애플리케이션들의 경우, 전술한 비활성화 접근방식에 비해 개선된 방법들이 표시될 수 있다.
또한, 최소 서브-심볼 사이즈에 대한 제약에 따라 파일 또는 데이터의 큰 블록을 가능한 한 적은 소스 블록들로 분할하고, 이 조건 하에서, 최대 서브-심볼 사이즈에 대한 제약에 따라 가능한 한 적은 서브-블록들로 분리하기 위한 방법이 유용할 수 있다.
본 발명의 양상들에 따른 인코더의 일 실시예에 따르면, 전송기의, 전송기 내의 또는 전송기에 대한 인코더는 소스 심볼들의 순서화된 세트를 하나 이상의 전송기들로부터 통신 채널을 통해 하나 이상의 수신기들로 송신하며, 인코더는 소스 심볼들로부터 생성된 복수의 인코딩된 심볼들을 포함하는 전송될 데이터를 생성한다. 제 1 단계에서, 반전가능한 방법을 이용하여 소스 심볼들로부터 중간 심볼들이 생성되는데, 즉, 중간 심볼들로부터 소스 심볼들을 생성하기 위한 역방법이 또한 존재한다. 다른 단계에서, 중간 심볼들은 중간 심볼들의 제 1 세트 및 중간 심볼들의 제 2 세트로 분할되고, 중간 심볼들의 제 1 세트 내의 적어도 하나의 중간 심볼이 존재하고, 중간 심볼들의 제 2 세트 내의 적어도 하나의 중간 심볼이 존재하고, 2개의 세트들 각각으로부터의 적어도 하나의 중간 심볼로부터 적어도 하나의 인코딩된 심볼이 생성된다. 몇몇 변형들에서, 2개보다 많은 세트들이 존재한다.
몇몇 실시예들에서, 임시 심볼들의 제 1 세트 및 제 2 세트에 대한 값들이 생성되고, 임시 심볼들의 제 1 세트의 값들은 중간 심볼들의 제 1 세트의 값들에 의존하고, 임시 심볼들의 제 2 세트에 대한 값들은 중간 심볼들의 제 2 세트의 값들에 의존한다. 인코딩된 심볼들에 대한 값들은 임시 심볼들의 제 1 세트 및 제 2 세트로부터 생성된다.
몇몇 변형들에서, 생성될 수 있는 인코딩된 심볼들의 수는 소스 심볼들의 수에 의존한다.
디코더 실시예들이 또한 제공된다. 본 발명의 양상들에 따른 디코더의 일 실시예에 따르면, 수신기의, 수신기 내의 또는 수신기에 대한 디코더는 중간 심볼들로부터 생성된 인코딩된 심볼들을 수신하고, 중간 심볼들은 반전가능한 방법들을 이용하여 소스 심볼들로부터 생성되고 ―즉, 중간 심볼들로부터 소스 심볼들을 생성하기 위한 역방법이 또한 존재함―, 중간 심볼들 중 적어도 하나는 영속적으로 비활성화된 심볼로 지정되고, 중간 심볼들 중 그 영속적으로 비활성화된 심볼들이 아닌 적어도 하나의 다른 하나가 존재한다. 디코더는, 수신된 인코딩된 심볼들로부터 중간 심볼들의 세트를 디코딩하고, 디코더는, 적어도 하나의 영속적으로 비활성화된 심볼을 고려하고, 역방법을 이용하여 중간 심볼들의 디코딩된 세트로부터 소스 심볼들을 생성한다.
디코딩 시에, 디코딩 단계들이 스케줄링되고, 영속적으로 비활성화된 심볼들의 스케줄링은 무시(set aside)한다. 영속적으로 비활성화된 심볼들은 신규한 방법 또는 종래의 방법을 이용하여 해결될 수 있고, 다음으로, 다른 중간 심볼들을 해결하는데 이용될 수 있다. 영속적으로 비활성화된 심볼들(및 이용된다면 다른 온더플라이(on-the-fly) 비활성화들)을 해결하기 위한 하나의 접근방식은 비활성화된 심볼들을 해결하기 위해 가우시안 제거를 적용하는 것일 수 있다. 나머지 중간 심볼들 중 일부는 복원된 영속적으로 비활성화된 심볼들 및 수신된 인코딩된 심볼들의 값들에 기초하여 복원된다.
디코딩 방법의 몇몇 변형들에서, 영속적으로 비활성화된 심볼들은 인코딩 실시예들로부터의 중간 심볼들의 제 2 세트를 포함한다. 디코딩 방법의 몇몇 변형들에서, 영속적으로 비활성화된 심볼들은 중간 심볼들의 서브세트를 포함하고, 대응하는 인코딩 방법은 멀티-스테이지 연쇄 반응 코드가 아니다. 이러한 인코딩 방법들은 중간 심볼들의 서브세트에 대한 토네이도(Tornado) 코드, 리드-솔로몬(Reed-Solomon) 코드, 연쇄 반응 코드(Luby I에 제시된 예들) 중 하나 이상을 포함할 수 있다.
중간 심볼들은 인코딩 및 디코딩을 위해 사용되고, 소스 심볼들로부터 중간 심볼들을 생성하기 위한 방법 및 그에 대응하는 역방법은 디코딩가능성과 같은 성능 특징들의 원하는 세트에 대해 표시된다. 몇몇 실시예들에서, 중간 심볼들은 소스 심볼들을 포함한다. 몇몇 실시예들에서, 중간 심볼들은, 소스 심볼들로부터 생성되는 리던던트 심볼들과 함께 소스 심볼들을 포함하고, 여기서, 리던던트 심볼들은 연쇄 반응 심볼들, LDPC 심볼들, HDPC 심볼들 또는 다른 유형들의 리던던트 심볼들일 수 있다. 대안적으로, 중간 심볼들은, 중간 심볼들과 소스 심볼들 사이의 관계들 및 중간 심볼들 사이의 추가적 LDPC 및 HDPC 관계들과 같은 심볼들 사이의 규정된 관계들에 기초할 수 있고, 이 규정된 관계들에 기초하여 소스 심볼들로부터 중간 심볼들을 생성하기 위한 디코딩 방법이 이용된다.
이 방법들 및 시스템들은, 인코딩 및/또는 디코딩을 구현하기 위해 프로그래밍 명령들을 실행하고, 적절한 명령 프로그램 코드를 갖는 전자 회로들 또는 프로세싱 디바이스들에 의해 구현될 수 있다.
본 발명을 이용하여 다수의 이점들이 달성된다. 예를 들어, 특정한 실시예에서, 채널을 통한 송신을 위해 데이터를 인코딩하는 계산 비용이 감소된다. 다른 특정한 실시예에서, 이러한 데이터를 디코딩하는 계산 비용이 감소된다. 다른 특정한 실시예에서, 절대적 및 상대적 수신 오버헤드가 상당히 감소된다. 실시예에 따라, 이 이점들 중 하나 이상의 달성될 수 있다. 이 이점들 및 다른 이점들은 본 명세서 전체를 통해 그리고 더 상세하게는 아래에서 더 상세히 제공된다.
본 명세서에 개시된 발명들의 성질 및 이점들의 추가적 이해는 본 명세서 및 첨부된 도면들의 나머지 부분들을 참조하여 실현될 수 있다.
도 1은, 다른 특징들 및 엘리먼트들과 함께 영속적 비활성화를 포함하는 멀티-스테이지 코딩을 이용하는 통신 시스템의 블록도이다.
도 2는 본 명세서의 다양한 다른 도면들에서 이용되는 변수들, 어레이들 등의 표이다.
도 3은 도 1에 도시된 인코더의 특정한 실시예의 블록도이다.
도 4는 도 3의 동적 인코더를 더 상세히 도시하는 블록도이다.
도 5는 영속적 비활성화(PI) 인코딩 프로세스를 도시하는 흐름도이다.
도 6은 동적 인코딩 프로세스를 도시하는 흐름도이다.
도 7은 심볼 계산을 위한 가중치를 계산하는 동작에 대한 흐름도이다.
도 8은 검색(lookup) 값에 기초하여 심볼의 정도(degree)를 결정하기 위해 이용될 수 있는, 메모리에 저장될 수 있는 표를 도시한다.
도 9는 인코딩 또는 디코딩 프로세스에서 이용되는 행렬을 도시한다.
도 10은 특정한 최소 다항식의 경우, 도 9에 도시된 행렬의 부분들을 표현하는 수식을 도시한다.
도 11은 인코딩 또는 디코딩에서의 이용을 위해 어레이를 셋업하기 위한 프로세스를 도시하는 흐름도이다.
도 12는, 디코더에 의해 알려진 수식들 또는 R개의 정적 심볼들을 표현하는 부분행렬(submatrix) SE를 이용하여, 수신된 인코딩된 심볼들을 표현하는 어레이 D()로부터, 복원된 소스 심볼들을 표현하는 어레이 C()를 복원하기 위해 디코더에 의해 해결되는 수식들의 세트에 대한 행렬 표현이다.
도 13은 OTF 비활성화를 이용하여 도 12의 행렬의 행/렬 치환들로부터 얻어지는 행렬을 도시한다.
도 14는 도 12의 행렬을 생성하기 위한 프로세스를 설명하는 블록도이다.
도 15는, 부분행렬 SE 및 영속적으로 비활성화된 심볼들에 대응하는 부분행렬을 이용하여, 수신된 인코딩된 심볼들을 표현하는 어레이 D()로부터, 복원된 소스 심볼들을 표현하는 어레이 C()를 복원하기 위해 디코더에 의해 해결되는 수식들의 세트에 대한 행렬 표현이다.
도 16은 도 12의 행렬 또는 도 15의 행렬에서 이용될 수 있는 것과 같은 LT 부분행렬을 생성하기 위한 프로세스를 도시하는 흐름도이다.
도 17은 도 15의 행렬에서 이용될 수 있는 것과 같은 PI 부분행렬을 생성하기 위한 프로세스를 도시하는 흐름도이다.
도 18은 행렬 생성기의 블록도이다.
도 19는 SE 부분행렬을 생성하기 위한 프로세스를 도시하는 흐름도이다.
도 20은 PI 부분행렬을 생성하기 위한 프로세스를 도시하는 흐름도이다.
도 21은 디코더에서 복원된 심볼들을 해결하기 위한 프로세스를 도시하는 흐름도이다.
도 22는 치환들 이후에, 수신된 인코딩된 심볼들을 표현하는 어레이 D()로부터, 복원된 소스 심볼들을 표현하는 어레이 C()를 복원하기 위해 디코더에 의해 해결되는 수식들의 세트에 대한 행렬 표현을 도시한다.
도 23은, 도 26에 도시되는 행렬에 대응하는, 디코더에 의해 해결되는 수식들의 세트의 행렬 표현이다.
도 24는 디코딩 프로세스의 일부로서 이용될 수 있는 행렬 표현을 도시한다.
도 25는 디코딩 프로세스의 다른 일부로서 이용될 수 있는 행렬 표현을 도시한다.
도 26은 부분적 해결 이후 디코더에 의해 해결되는 수식들의 세트의 행렬 표현을 도시한다.
도 27은 디코더에서 복원된 심볼들을 해결하기 위한 다른 프로세스를 도시하는 흐름도이다.
도 28은 디코더에 의해 해결되는 수식들의 세트의 행렬 표현이다.
도 29는 디코더에 의해 해결되는 수식들의 세트의 행렬 표현이다.
도 30은, 하드웨어 모듈들, 소프트웨어 모듈들, 또는 프로그램 저장부에 저장되고 도면에 도시된 바와 같이 분리되지 않는 코드의 집합적 단위로서 프로세서에 의해 실행될 수 있는 프로그램 코드의 일부들로서 구현될 수 있는 예시적인 인코딩 시스템을 도시한다.
도 31은 하드웨어 모듈들, 소프트웨어 모듈들, 또는 프로그램 저장부에 저장되고 도면에 도시된 바와 같이 분리되지 않는 코드의 집합적 단위로서 프로세서에 의해 실행될 수 있는 프로그램 코드의 일부들로서 구현될 수 있는 예시적인 인코딩 시스템을 도시한다.
부록 A로서 첨부된 것은, 때로는 이용되는 본 발명의 세부사항들에 의해, 인코더/디코더 시스템, 에러 정정 방식, 및 데이터 객체들의 신뢰할 수 있는 전달에 대한 애플리케이션들에 대한 코드 규격이고, 객체 전달 전송에서 시스터메틱 인코더/디코더가 이용될 수 있는 방법에 대한 규격을 포함한다. 부록 A에서 설명되는 특정한 실시예들은 본 발명의 예들을 제한하는 것이 아니고, 본 발명의 일부 양상들은 부록 A의 교시들을 이용할 수도 있고, 다른 양상들은 이용하지 않을 수도 있음을 이해해야 한다. 또한, 부록 A의 제한적 스테이트먼트들은 특정한 실시예들의 요건들에 대해 제한적일 수 있고, 이러한 제한적 스테이트먼트들은 청구된 발명들과 관련되거나 관련되지 않을 수도 있으며, 따라서, 청구항 언어는 이러한 제한적 스테이트먼트들에 의해 제한될 필요가 없음을 이해해야 한다.
본 명세서에서 참조되는 인코더들 및 디코더들의 부분들을 구현하기 위한 세부사항들은 Luby I, Luby II, Shokrollahi I, Shokrollahi II, Shokrollahi III, Luby III, 및 Shokrollahi IV에 의해 제공되고, 간략화를 위해 그 전체가 여기에 반복되지 않는다. 이들의 전체 개시들은 모든 목적들을 위해 본 명세서에 참조로 통합되고, 그 구현들이 본 발명에 요구되지는 않으며, 달리 표시되지 않으면 다수의 다른 변화들, 변형들 또는 대안들이 또한 이용될 수 있음을 이해해야 한다.
본 명세서에서 설명되는 멀티-스테이지 인코딩은 소스 데이터를 복수의 스테이지들에서 인코딩한다. 항상은 아니지만 통상적으로, 제 1 스테이지는 소스 데이터에 미리 결정된 양의 리던던시를 추가한다. 다음으로, 제 2 스테이지는, 원래의 소스 데이터 및 인코딩의 제 1 스테이지에 의해 계산된 리던던트 심볼들로부터 인코딩된 심볼들을 생성하기 위해 연쇄 반응 코드 등을 이용한다. 하나의 특정한 실시예에서, 수신된 데이터는 먼저 연쇄 반응 디코딩 프로세스를 이용하여 디코딩된다. 이 프로세스가 원래의 데이터를 완전하게 복원하는데 성공적이 아니면, 제 2 디코딩 단계가 적용될 수 있다.
본 명세서에 교시되는 실시예들의 일부는 다수의 다른 유형들의 코드들, 예를 들어, IETF(Internet Engineering Task Force) RFC(Request for Comments) 5170에서 설명되는 코드들(이하, "IETF LDPC 코드들"), 및 미국 특허 제 6,073,250호, 6,081,909호 및 6,163,870호에서 설명되는 코드들(이하 "토네이도 코드들")에 적용될 수 있어서, 이 유형들의 코드들에 대해 신뢰도 및/또는 CPU 및/또는 메모리 성능에서의 개선들을 발생시킬 수 있다.
본 명세서에서 교시되는 몇몇 실시예들의 하나의 이점은, 연쇄 반응 코딩을 단독으로 이용하는 것에 비해, 인코딩된 심볼들을 생성하는데 더 적은 산술 연산들이 요구된다는 점이다. 인코딩의 제 1 스테이지 및 인코딩의 제 2 스테이지를 포함하는 몇몇 특정한 실시예들의 다른 이점은, 인코딩의 제 1 스테이지 및 인코딩의 제 2 스테이지가 개별적 시간들 및/또는 개별적 디바이스들에서 행해질 수 있어서, 계산 부하(load)를 분산시키고, 전체 계산 부하 및 메모리 사이즈 및 액세스 패턴 요건들을 최소화시킨다는 점이다. 멀티-스테이지 인코딩의 실시예들에서, 리던던트 심볼들은 인코딩의 제 1 스테이지 동안 입력 파일로부터 생성된다. 이 실시예들에서, 인코딩의 제 2 스테이지에서는, 인코딩된 심볼들이 입력 파일 및 리던던트 심볼들의 조합으로부터 생성된다. 이 실시예들의 일부에서, 인코딩된 심볼들은 필요에 따라 생성될 수 있다. 제 2 스테이지가 연쇄 반응 인코딩을 포함하는 실시예들에서, 각각의 인코딩된 심볼은, 다른 인코딩된 심볼들이 어떻게 생성되는지와 무관하게 생성될 수 있다. 일단 생성되면 이 인코딩된 심볼들은, 다음으로 패킷들에 배치되어 자신의 수신지에 송신될 수 있고, 각각의 패킷은 하나 이상의 인코딩된 심볼들을 포함한다. 대안적으로 또는 부가적으로 넌-패킷화된 송신 기술들이 이용될 수 있다.
본 명세서에서 사용되는 용어 "파일"은, 하나 이상의 소스들에 저장되고, 하나 이상의 수신지들에 하나의 단위로서 전달되는 임의의 데이터를 지칭한다. 따라서, 파일 서버 또는 컴퓨터 저장 디바이스로부터의 문서, 이미지 및 파일 모두가 전달될 수 있는 "파일들"의 예들이다. 파일들은 (하드 디스크에 저장된 1 메가바이트 이미지와 같은) 기지의(known) 사이즈일 수도 있고 또는 (스트리밍 소스의 출력으로부터 얻어지는 파일과 같은) 미지의(unknown) 사이즈일 수도 있다. 어떤 경우이든, 파일은 소스 심볼들의 시퀀스이고, 여기서, 각각의 소스 심볼은 파일에서의 위치 및 값을 갖는다. "파일"은 또한 스트리밍 소스의 짧은 부분을 지칭하는데 이용될 수 있는데, 즉, 데이터의 스트림은 1 초 인터벌들로 분할될 수 있고, 각각의 이러한 1 초 인터벌 내의 소스 데이터의 블록이 "파일"로 고려될 수 있다. 다른 예로, 비디오 스트리밍 소스로부터의 데이터의 블록들은, 예를 들어, 비디오 스트림을 플레이아웃할 수 있는 비디오 시스템에 의해 정의되는 데이터의 우선순위들에 기초하여 다수의 부분들로 추가로 분할될 수 있고, 각각의 블록의 각각의 부분이 "파일"로 고려될 수 있다. 따라서, 용어 "파일"은 일반적으로 사용되고, 광범위하게 제한적인 것으로 의도되지 않는다.
본 명세서에서 사용되는 소스 심볼들은 송신되거나 전달되는 데이터를 표현하고, 인코딩된 심볼들은, 소스 심볼들의 신뢰할 수 있는 수신 및/또는 재생성을 가능하게 하기 위해 통신 네트워크를 통해 전달되거나 저장되는, 소스 심볼들에 기초하여 생성된 데이터를 표현한다. 중간 심볼들은 인코딩 또는 디코딩 프로세스들의 중간 단계 동안 이용되거나 생성되는 심볼들을 표현하고, 통상적으로, 소스 심볼들로부터 중간 심볼들을 생성하기 위한 방법 및 중간 심볼들로부터 소스 심볼들을 생성하기 위한 대응하는 역방법이 존재한다. 입력 심볼들은 인코딩 또는 디코딩의 프로세스 동안 하나 이상의 단계들에 입력되는 데이터를 표현하고, 출력 심볼들은 인코딩 또는 디코딩의 프로세스 동안 하나 이상의 단계들로부터 출력되는 데이터를 표현한다.
다수의 실시예들에서, 이 상이한 유형들 또는 라벨들의 심볼들은 동일하거나 또는 다른 유형들의 심볼들을 적어도 일부 포함할 수 있고, 몇몇 예들에서 이 용어들은 교환가능하게 사용된다. 일예에서, 송신될 파일은 1000개의 문자들의 텍스트 파일이고, 문자 각각이 소스 심볼로 간주되는 것으로 가정한다. 이 1000개의 소스 심볼들이, 송신되는 인코딩된 심볼들을 출력하는 인코더에 제공되면, 이 소스 심볼들은 또한 입력 심볼들이다. 그러나, 제 1 단계에서 1000개의 소스 심볼들이 1000개의(또는 더 많거나 더 적은) 중간 심볼들로 변환되고, 제 2 단계에서 인코딩된 심볼들을 생성하기 위해 중간 심볼들이 인코더에 제공되는 실시예들에서, 제 1 단계에서는 소스 심볼들이 입력 심볼들이고 중간 심볼들이 출력 심볼들이고, 제 2 단계에서는 중간 심볼들이 입력 심볼들이고 인코딩된 심볼들이 출력 심볼들인 한편, 소스 심볼들은 이 2-단계 인코더에 대한 전체적인 입력 심볼들이고 인코딩된 심볼들은 이 2-단계 인코더의 전체적 출력 심볼들이다. 이 예에서, 인코더가 시스터메틱 인코더이면, 인코딩된 심볼들은 중간 심볼들로부터 생성되는 복구 심볼들과 함께 소스 심볼들을 포함할 수 있는 한편, 중간 심볼들은 소스 심볼들 및 인코딩된 심볼들 모두로부터 구별된다. 이 예에서, 대신에 인코더가 넌-시스터메틱 인코더이면, 중간 심볼들은, 예를 들어, 제 1 단계에서 LDPC 및/또는 HDPC 인코더를 이용하여 소스 심볼들로부터 생성되는 리던던트 심볼들과 함께 소스 심볼들을 포함할 수 있는 한편, 인코딩된 심볼들은 소스 심볼들 및 중간 심볼들 모두로부터 구별된다.
다른 예들에서는, 더 많은 심볼들이 존재하고 각각의 심볼은 하나보다 많은 문자를 표현한다. 어떤 경우이든, 소스-대-중간 심볼 변환이 송신기에서 존재하는 경우, 수신기는 반대로 이에 대응하는 중간-대-소스 심볼 변환을 가질 수 있다.
송신은, 파일을 전달하기 위해, 데이터를 하나 이상의 전송기들로부터 채널을 통해 하나 이상의 수신기들에 송신하는 프로세스이다. 전송기는 또한 때때로 인코더로 지칭된다. 하나의 전송기가 완전한 채널에 의해 임의의 수의 수신기들에 접속되면, 모든 데이터가 정확하게 수신될 것이어서, 수신된 데이터는 소스 파일의 정확한 카피일 수 있다. 여기서, 채널이 완전하지 않은 것으로 가정하며, 이것은 대부분의 실제 채널들의 경우이다. 다수의 채널 불완전들 중, 관심있는 2개의 불완전들은 데이터 소거 및 데이터 불완전성(데이터 소거의 특수한 경우로 취급될 수 있음)이다. 데이터 소거는 채널이 데이터를 손실하거나 드롭시킨 경우 발생한다. 데이터 불완전성은, 데이터의 일부가 이미 전달된 때까지 수신기가 데이터를 수신하는 것을 시작하지 않은 경우, 송신이 종료되기 전에 수신기가 데이터를 수신하는 것을 중지하는 경우, 수신기가 송신된 데이터의 일부만을 수신하는 것으로 선택하는 경우, 및/또는 수신기가 데이터를 수신하는 것을 간헐적으로 중지하고 다시 시작하는 경우에 발생한다. 데이터 불완전성의 일 예로, 이동하는 위성 전송기가 소스 파일을 표현하는 데이터를 송신하고 있고, 수신기가 범위 안에 있기 전에 송신을 시작할 수 있다. 일단 수신기가 범위 안에 들어오면, 위성이 범위 밖으로 이동하기 전까지 데이터가 수신될 수 있고, 위성이 범위 밖으로 이동하는 포인트에서, 수신기는 범위 안으로 이동한 다른 위성에 의해 송신되고 있는 동일한 입력 파일에 대한 데이터의 수신을 시작하기 위해 자신의 위성 접시를 재지향시킬 수 있다(이 동안 데이터를 수신하고 있지 않음). 이 설명으로부터 명백한 바와 같이, 수신기는 수신기가 전체 시간 동안 범위 밖에 있었던 것처럼 데이터 불완전성을 취급할 수 있지만(또한 수신기는 동일한 문제들을 가짐) 수신기가 데이터 수신을 시작한 포인트까지는 채널이 모든 데이터를 손실하기 때문에 데이터 불완전성은 데이터 소거의 특수한 경우이다. 또한, 통신 시스템 설계에서 주지된 바와 같이, 검출가능한 에러들은, 그 검출가능한 에러들을 갖는 모든 데이터 블록들 또는 심볼들을 단순히 드롭시킴으로써 소거들과 동등한 것으로 고려될 수 있다.
몇몇 통신 시스템들에서, 수신기는 다수의 전송기들에 의해 또는 다수의 접속들을 이용하는 하나의 전송기에 의해 생성된 데이터를 수신한다. 예를 들어, 다운로드를 가속화하기 위해, 수신기는 동일한 파일과 관련된 데이터를 송신하는 하나보다 많은 전송기들에 동시에 접속할 수 있다. 다른 예로, 멀티캐스트 송신에서, 다수의 멀티캐스트 데이터 스트림들은, 수신기들을 전송기에 접속시키는 채널의 대역폭과 집합적(aggregate) 송신 레이트를 매칭시키기 위해 수신기들이 그 스트림들 중 하나 이상에 접속하는 것을 허용하도록 송신될 수 있다. 모든 이러한 경우들에서, 관심사는, 모든 송신된 데이터가 수신기에게 독립적인 것, 즉, 상이한 스트림들에 대해 송신 레이트가 매우 상이한 경우 및 임의적 패턴들의 손실이 존재하는 경우에도, 다수의 소스 데이터가 스트림들 사이에서 리던던트가 아닌 것을 보장하는 것이다.
일반적으로, 통신 채널은, 데이터 송신을 위해 전송기와 수신기를 접속시키는 채널이다. 통신 채널은, 채널이 데이터를 획득할 때 전송기로부터 수신기로 데이터를 이동시키는 채널인 실시간 채널일 수 있고, 또는 통신 채널은 전송기로부터 수신기로의 데이터의 전이 시에 데이터의 일부 또는 전부를 저장하는 저장 채널일 수 있다. 저장 채널의 일예는 디스크 저장 또는 다른 저장 디바이스이다. 이 예에서, 데이터를 생성하는 프로그램 또는 디바이스가, 데이터를 저장 디바이스에 송신하는 전송기로서 간주될 수 있다. 수신기는 저장 디바이스로부터 데이터를 판독하는 프로그램 또는 디바이스이다. 전송기가 저장 디바이스 상에 데이터를 포함시키기 위해 사용하는 메커니즘들, 저장 디바이스 자체, 및 수신기가 저장 디바이스로부터 데이터를 획득하기 위해 이용하는 메커니즘들이 종합적으로 채널을 형성한다. 이 메커니즘들 또는 저장 디바이스가 데이터를 손실할 가능성이 존재하면, 이것은 통신 채널에서 데이터 소거로 취급될 것이다.
심볼들이 소거될 수 있는 통신 채널에 의해 전송기 및 수신기가 분리된 경우, 입력 파일의 정확한 카피를 송신하지 않고, 대신에, 소거들의 복원에 의해 보조되는, 입력 파일로부터 생성된 데이터를 송신하는 것이 바람직하다. 인코더는 이 작업을 처리하는 회로, 디바이스, 모듈 또는 코드 세그먼트이다. 인코더의 동작을 검토하는 하나의 방법은, 인코더가 소스 심볼들로부터 인코딩된 심볼들을 생성하는 것이고, 여기서, 소스 심볼 값의 시퀀스는 입력 파일을 표현한다. 따라서, 각각의 소스 심볼은 입력 파일 내에서의 위치 및 값을 가질 것이다. 디코더는, 수신기에 의해 수신된 인코딩된 심볼들로부터 소스 심볼들을 재구성하는 회로, 디바이스, 모듈 또는 코드 세그먼트이다. 멀티-스테이지 코딩에서, 인코더 및 디코더는 때때로, 상이한 작업을 각각 수행하는 서브-모듈들로 추가로 분할된다.
멀티-스테이지 코딩 시스템들의 실시예들에서, 인코더 및 디코더는, 상이한 작업을 각각 수행하는 서브-모듈들로 추가로 분할될 수 있다. 예를 들어, 몇몇 실시예들에서, 인코더는 본 명세서에서 정적 인코더 및 동적 인코더로 지칭되는 인코더를 포함한다. 본 명세서에서 사용되는 "정적 인코더(static encoder)"는 소스 심볼들의 세트로부터 다수의 리던던트 심볼들을 생성하는 인코더이고, 리던던트 심볼들의 수는 인코딩 이전에 결정된다. 정적 인코딩이 멀티-스테이지 코딩 시스템에서 이용되는 경우, 소스 심볼들과 이 소스 심볼들로부터 정적 인코더를 이용하여 생성된 리던던트 심볼들의 조합은 종종 중간 심볼들로 지칭된다. 잠재적 정적 인코딩 코드들의 예들은 리드-솔로몬 코드들, 토네이도 코드들, 해밍 코드들, IETF LDPC 코드들과 같은 LDPC 코드들 등을 포함한다. 용어 "정적 디코더"는 본 명세서에서, 정적 인코더에 의해 인코딩된 데이터를 디코딩할 수 있는 디코더를 지칭하기 위해 사용된다.
본 명세서에서 사용되는 "동적 인코더(dynamic encoder)"는 입력 심볼들의 세트로부터 인코딩된 심볼들을 생성하는 인코더이고, 여기서, 가능한 인코딩된 심볼들의 수는 입력 심볼들의 수에는 독립적이고, 생성될 인코딩된 심볼들의 수는 고정될 필요가 없다. 종종 멀티-스테이지 코드에서, 입력 심볼들은 정적 코드를 이용하여 생성된 중간 심볼들이고, 인코딩된 심볼들은 동적 인코더를 이용하여 중간 심볼들로부터 생성된다. 동적 인코더의 일예는, Luby I 및 Luby II에서 교시되는 인코더들과 같은 연쇄 반응 인코더이다. 용어 "동적 디코더"는 본 명세서에서, 동적 인코더에 의해 인코딩된 데이터를 디코딩할 수 있는 디코더를 지칭하기 위해 사용된다.
몇몇 실시예들에서, 멀티-스테이지 코드 및 시스터메틱인 인코딩은, 중간 심볼들 사이에서 정적 인코더에 의해 정의되는 관계들 및 중간 심볼들과 소스 심볼들 사이에서 동적 인코더에 의해 정의되는 관계들에 기초하여 중간 심볼 값들을 획득하기 위해 소스 심볼들에 적용되는 인코딩 프로세스를 이용하고, 다음으로, 동적 인코더는 중간 심볼들로부터 추가적인 인코딩된 심볼들 또는 복구 심볼들을 생성하기 위해 이용된다. 유사하게, 대응하는 디코더는 인코딩된 심볼들을 수신하고, 중간 심볼들 사이에서 정적 인코더에 의해 정의되는 관계들 및 중간 심볼들과 수신된 인코딩된 심볼들 사이에서 동적 인코더에 의해 정의되는 관계들에 기초하여, 인코딩된 심볼들로부터 중간 심볼 값들을 디코딩하기 위한 디코딩 프로세스를 갖고, 다음으로, 동적 인코더는 중간 심볼들로부터 임의의 누락된 소스 심볼들을 생성하기 위해 이용된다.
멀티-스테이지 코딩의 실시예들은 임의의 특정한 유형의 심볼에 제한될 필요가 없다. 통상적으로, 심볼들에 대한 값들은 몇몇 양의 정수 M에 대해 2M개의 심볼들의 알파벳으로부터 선택된다. 이러한 경우들에서, 소스 심볼은 입력 파일로부터의 데이터의 M개의 비트들의 시퀀스에 의해 표현될 수 있다. M의 값은 종종, 예를 들어, 애플리케이션의 이용들, 통신 채널, 및/또는 인코딩된 심볼들의 사이즈에 기초하여 결정된다. 추가적으로, 인코딩된 심볼의 사이즈는 종종, 애플리케이션, 통신 채널, 및/또는 소스 심볼들의 사이즈에 기초하여 결정된다. 몇몇 경우들에서, 인코딩된 심볼 값들 및 소스 심볼 값들이 동일한 사이즈이면(즉, 동일한 수의 비트들에 의해 표현가능하거나 동일한 알파벳으로부터 선택된다면), 인코딩 프로세스는 단순화될 수도 있다. 이러한 경우이면, 소스 심볼 값 사이즈는 인코딩된 심볼 값 사이즈가 제한될 때 제한된다. 예를 들어, 인코딩된 심볼들을 제한된 사이즈의 패킷에 넣는 것이 바람직할 수 있다. 인코딩된 심볼들과 연관된 키에 대한 일부 데이터가, 그 키를 수신기에서 복원하기 위해 송신된다면, 인코딩된 심볼은 그 키에 대한 데이터 및 인코딩된 심볼 값을 하나의 패킷에 수용하기에 충분할 정도로 작은 것이 바람직할 것이다.
일예로, 입력 파일이 수 메가바이트 파일이면, 입력 파일은, 수천, 수만, 또는 수십만개의 소스 심볼들로 분해될 수 있고, 각각의 소스 파일은 수천, 수백 또는 오직 수 바이트들을 인코딩한다. 다른 예로, 패킷-기반 인터넷 채널의 경우, 1024 바이트 사이즈의 페이로드를 갖는 패킷이 적합할 수 있다(1 바이트는 8 비트임). 이 예에서, 각각의 패킷이 하나의 인코딩된 심볼 및 8 바이트의 보조 정보를 포함한다고 가정하면, 8128 비트((1024-8)*8)의 인코딩된 심볼 사이즈가 적합할 것이다. 따라서, 소스 심볼 사이즈는 M = (1024-8)*8, 즉, 8128 비트로 선택될 수 있다. 다른 예로, 몇몇 위성 시스템들은 MPEG 패킷 표준을 사용하고, 여기서, 각각의 패킷의 페이로드는 188 바이트를 포함한다. 이 예에서, 각각의 패킷이 하나의 인코딩된 심볼 및 4 바이트의 보조 정보를 포함한다고 가정하면, 1472 비트((188-4)*8)의 인코딩된 심볼 사이즈가 적합할 것이다. 따라서, 소스 심볼 사이즈는 M = (188-4)*8, 즉, 1472 비트로 선택될 수 있다. 멀티-스테이지 코딩을 이용하는 범용 통신 시스템에서, 소스 심볼 사이즈(즉, 소스 심볼에 의해 인코딩된 비트들의 수 M)와 같은 애플리케이션-특정 파라미터들은 애플리케이션에 의해 설정되는 변수들일 수 있다.
각각의 인코딩된 심볼은 값을 갖는다. 아래에서 고려하는 하나의 바람직한 실시예에서, 각각의 인코딩된 심볼은 또한 그 심볼의 "키"로 지칭되는 식별자를 연관시킨다. 바람직하게는, 각각의 인코딩된 심볼의 키는, 수신기가 하나의 인코딩된 심볼을 다른 인코딩된 심볼들로부터 구별하는 것을 허용하도록 수신기에 의해 용이하게 결정될 수 있다. 바람직하게는, 인코딩된 심볼의 키는 모든 다른 인코딩된 심볼들의 키들과 구별된다. 종래 분야에서 논의되는 다양한 형태들의 키잉(keying)이 존재한다. 예를 들어, Luby I은, 본 발명의 실시예들에서 활용될 수 있는 다양한 형태들의 키잉을 설명한다. 부록 A에서 설명되는 것과 같은 다른 바람직한 실시예들에서, 인코딩된 심볼에 대한 키는 "인코딩된 심볼 식별자" 또는 "인코딩 심볼 식별자" 또는 더 간단하게 "ESI"로 지칭된다.
멀티-스테이지 코딩은, 데이터 소거의 예상이 존재하는 경우 또는 송신이 시작하고 종료할 때 수신기가 수신을 정확하게 시작하고 종료하지 않는 경우에 특히 유용하다. 후자의 조건은 본 명세서에서 "데이터 불완전성"으로 지칭된다. 소거 이벤트들에 관하여, 멀티-스테이지 코딩은 Luby I에서 교시되는 연쇄 반응 코딩의 이점들 중 다수의 이점을 공유한다. 더 상세하게는, 멀티-스테이지로 인코딩된 심볼들은 정보 부가적이어서, 입력 파일을 원하는 정도의 정확도까지 복원하기 위해 임의의 적절한 수의 패킷들이 이용될 수 있다. 이 조건들은, 멀티-스테이지 코딩에 의해 생성된 인코딩된 심볼들이 정보 부가적이기 때문에, 멀티-스테이지 코딩이 이용되는 경우 통신 프로세스에 악영향을 주지 않는다. 예를 들어, 데이터 소거를 유발하는 잡음의 버스트에 기인하여 백개의 패킷들이 손실되면, 버스트 이후 소거된 패킷들의 손실을 대체하기 위해 여분의 백개의 패킷들이 픽업될 수 있다. 송신기가 송신을 시작했을 때 수신기가 송신기에 동조되지 않았기 때문에 수천개의 패킷들이 손실되면, 수신기는 임의의 다른 송신 기간으로부터 또는 심지어 다른 송신기로부터 단지 그 수천개의 패킷들을 픽업할 수 있다. 멀티-스테이지 코딩에 의해, 수신기는 패킷들의 임의의 특정한 세트를 픽업하도록 제한되지 않아서, 하나의 송신기로부터 일부 패킷들을 수신하고, 다른 송신기로 스위칭하고, 일부 패킷들을 손실하고, 소정의 송신의 시작 또는 종료를 누락할 수 있고, 여전히 입력 파일을 복원할 수 있다. 수신기-송신기 조정없이 송신에 참여하거나 송신으로부터 떠날 수 있는 능력은 통신 프로세스를 단순화시키는 것을 돕는다.
몇몇 실시예들에서, 멀티-스테이지 코딩을 이용하여 파일을 송신하는 것은, 입력 파일로부터 소스 심볼들을 생성, 형성 또는 추출하는 것, 리던던트 심볼들을 계산하는 것, 소스 및 리던던트 심볼들을 하나 이상의 인코딩된 심볼들로 인코딩하는 것 ―여기서, 각각의 인코딩된 심볼은 모든 다른 인코딩된 심볼들에는 독립적인 자신의 키에 기초하여 생성됨―, 및 인코딩된 심볼들을 채널을 통해 하나 이상의 수신기들에 송신하는 것을 포함할 수 있다. 추가적으로, 몇몇 실시예들에서, 멀티-스테이지를 이용하여 입력 파일의 카피를 수신하는 것은, 하나 이상의 데이터 스트림들로부터 인코딩된 심볼들의 일부 세트 또는 서브세트를 수신하는 것 및 수신된 인코딩된 심볼들의 키들 및 값들로부터 소스 심볼들을 디코딩하는 것을 포함할 수 있다.
시스테메틱 코드들 및 넌시스터메틱 코드들
시스터메틱 코드는, 송신될 수 있는 인코딩된 심볼들 사이에 소스 심볼들이 있는 코드이다. 이 경우, 인코딩된 심볼들은 소스 심볼들, 및 그 소스 심볼들로부터 생성되는, 복구 심볼들로도 지칭되는 리던던트 심볼들로 이루어진다. 시스터메틱 코드는 다양한 이유들 때문에 다수의 애플리케이션들에 있어서 넌-시스터메틱 코드보다 바람직하다. 예를 들어, 파일 전송 애플리케이션에서, 복구 데이터를 생성하기 위해 데이터가 이용되는 동안 데이터를 시퀀스 순서로 송신하는 것을 시작할 수 있는 것이 유용하고, 여기서, 복구 데이터를 생성하는 프로세서는 어느 정도의 시간량이 소요될 수 있다. 다른 예로, 다수의 애플리케이션들은 원래의 소스 데이터는 시퀀스 순서로 변형되지 않은 형태로 하나의 채널에 전송하고, 복구 데이터를 다른 채널로 전송하는 것을 선호한다. 이에 대한 하나의 통상적인 이유는, FEC 디코딩을 통합하지 않은 레거시(legacy) 수신기들을 지원하면서, 이와 동시에, FEC 디코딩을 통합한 향상된 수신기들에 더 양호한 경험을 제공하는 것 모두를 지원하기 위함이고, 레거시 수신기들은 소스 데이터 채널에만 참여하고, 향상된 수신기들은 소스 데이터 채널 및 복구 데이터 채널 모두에 참여한다.
이러한 애플리케이션들 및 관련 유형의 애플리케이션들에서, 수신기에 의해 수신된 소스 심볼들 사이에서의 손실 패턴들 및 손실의 부분(fraction)은 수신된 복구 심볼들 사이에서 경험되는 것들과 매우 상이한 경우가 때때로 있을 수 있다. 예를 들어, 소스 심볼들이 복수 심볼들 전에 전송되는 경우, 채널의 버스티(bursty) 손실 조건들에 기인하여, 소스 심볼들 사이에서의 손실의 부분 및 패턴은 복수 심볼들 사이에서의 손실의 대응하는 부분 및 패턴과 매우 상이할 수 있고, 소스 심볼들 사이에서의 손실의 패턴은, 손실이 균일하게 랜덤이었다면 통상적이었을 수 있는 패턴과는 매우 상이할 수 있다. 다른 예로, 소스 데이터가 하나의 채널을 통해 전송되고 복구 데이터가 다른 채널을 통해 전송되는 경우, 이 두개의 채널들 상에서 매우 상이한 손실 조건들이 존재할 수도 있다. 따라서, 상이한 유형들의 손실 조건들 하에서 양호하게 동작하는 시스터메틱 FEC 코드를 갖는 것이 바람직하다.
본 명세서의 예들은 (출력 또는 인코딩된 심볼들이 소스 또는 입력 심볼들을 포함하는) 시스터메틱 코드들 또는 넌시스터메틱 코드들을 참조하지만, 본 명세서의 교시들은 달리 표시되지 않으면 둘 모두에 적용될 수 있는 것으로 가정되어야 한다. Shokrollahi III은, 변환되어 구성된 시스터메틱 코드에 의해 넌-시스터메틱 코드의 견고성 특성들이 유지되도록, 넌-시스터메틱 연쇄 반응 코드를 시스터메틱 코드로 변환하기 위한 방법들을 교시한다.
더 상세하게는, Shokrollahi III에서 교시된 방법들을 이용하여, 구성된 시스터메틱 코드는, 디코더에 의한 복원가능성의 관점에서 손실된 소스 심볼들과 손실된 복구 심볼들 사이에 거의 차이가 없는 특성, 즉, 디코딩 복원 확률은, 소정량의 총 손실에 대해 복구 심볼들 사이에서의 손실의 비율에 대한 소스 심볼들 사이에서의 손실의 비율에 거의 독립적으로 본질적으로 동일한 특성을 갖는다. 또한, 인코딩된 심볼들 사이에서의 손실의 패턴은 디코딩 복원 확률에 현저하게 영향을 주지 않는다. 이와 비교하여, 토네이도 코드들 또는 IETF LDPC 코드들에 대해 설명되는 것과 같은 다른 시스터메틱 코드들의 구성들의 경우, 많은 경우에 디코더의 복원가능성의 관점에서 손실된 소스 심볼들과 손실된 복구 심볼들 사이에서 큰 차이가 있어서, 즉, 디코딩 복원 확률은, 소정량의 총 손실에 대해 복구 심볼들 사이에서의 손실의 비율에 대한 소스 심볼들 사이에서의 손실의 비율에 따라 광범위하게 변할 수 있다. 또한, 인코딩된 심볼들 사이에서의 손실의 패턴은 디코딩 복원 확률에 대해 큰 영향을 줄 수 있다. 토네이도 코드들 및 IETF LDPC 코드들은, 인코딩된 심볼들의 손실들이 모든 인코딩된 심볼들 사이에서 균일하게 랜덤한 경우 매우 양호한 복원 특성들을 갖지만, 손실 모델이 균일한 랜덤 손실로부터 벗어남에 따라 복원 특성들이 악화된다. 따라서, 이러한 관점에서, Shokrollahi III에 교시된 실시예들은 시스터메틱 코드들의 다른 구성들에 대해 이점들을 갖는다.
손실된 소스 심볼들 및 손실된 복구 심볼들의 비율에 따라, 그리고 손실 패턴들에 따라, 디코더에 의한 복원가능성의 관점에서 큰 영향이 있는 특성을 갖는 FEC 코드의 경우, 적용가능할 때 이 특성을 극복하기 위한 하나의 접근방식은, 인코딩된 심볼들을 균일하게 랜덤한 순서로 전송하는 것, 즉, 소스 및 복구 심볼들의 조합이 균일하게 랜덤한 순서로 전송되고, 따라서 소스 심볼들이 복구 심볼들 사이에 랜덤하게 개재되는 것이다. 인코딩된 심볼들을 랜덤한 순서로 전송하는 것은, 채널 손실 모델이 어떠하든, 손실들이 버스티하거나 균일하게 랜덤하거나 또는 다른 유형의 손실들인 경우에도, 인코딩된 심볼들에 대한 손실들이 여전히 랜덤한 이점을 갖는다. 그러나, 전술한 바와 같이, 이 접근방식은 몇몇 애플리케이션들, 예를 들어, 복구 심볼들 이전에 소스 심볼들을 순서대로 전송하는 것이 바람직한 애플리케이션들 또는 소스 심볼들이 복구 심볼들과는 상이한 채널을 통해 전송되는 애플리케이션들에 대해서는 바람직하지 않다.
이러한 경우들에서, 인코딩된 심볼들 사이에서의 손실의 패턴이 디코더의 복원 특성들에 크게 영향을 주지 않는 시스터메틱 코드들의 구성들이 바람직하고, 본 명세서에서 몇몇 예들이 제공된다.
본 명세서에서 사용되는, "랜덤" 및 "의사랜덤"은 종종 균등하거나 그리고/또는 상호교환가능하고, 문맥에 의존할 수 있다. 예를 들어, 랜덤 손실들은, 진정으로 랜덤한 이벤트일 수 있는, 어떤 심볼들이 채널에 의해 손실되는지를 나타낼 수 있는 한편, 심볼 이웃들의 랜덤 선택은 실질적으로, 넌랜덤(nonrandom) 프로세스에 따라 반복가능한 의사랜덤 선택일 수 있지만, 이것은 진정한 랜덤 선택의 경우에서와 동일하거나 유사한 특성들 또는 동작들을 갖는다. 명시적으로 또는 문맥에 의해 달리 표시되지 않으면, 어떠한 것을 랜덤한 것으로 특징짓는 것은 의사랜덤을 배제하는 것을 의미하지 않는다.
이러한 시스터메틱 FEC 인코더에 대한 하나의 접근방식에서, 소스 심볼들은, 다수의 인코더 서브-블록들 또는 서브프로세스들을 포함하는 인코더에 의해 획득되고, 다수의 인코더 서브-블록들 또는 서브프로세스들 중 하나는 다른 서브-블록 또는 서브프로세스에 대한 입력 심볼들인 중간 심볼들을 생성하기 위한 디코더로서 동작한다. 다음으로, 중간 심볼들은 이 중간 심볼들을 인코딩된 심볼들로 인코딩하는 다른 서브-블록 또는 서브프로세스에 적용되고, 인코딩된 심볼들은 하나의 일정한(consistent) 프로세스로부터 생성된 소스 심볼들(및 추가적 리던던트 심볼들)을 포함하여, 인코딩된 심볼 세트에 대한 소스 심볼들을 얻기 위해 하나의 프로세스(예를 들어, 카피)를 이용하고 인코딩된 심볼 세트에 대한 리던던트 심볼들을 얻기 위해 다른 프로세스를 이용하는 시스터메틱 인코더인 인코더에 비해 견고성 이점들 및 다른 이점들을 제공한다.
출력 인코딩은 연쇄 반응 인코더, 정적 인코더 또는 다른 변형들일 수 있다. 부록 A는 시스터메틱 코드 실시예를 설명한다. 본 출원을 읽은 후, 이 분야의 당업자는 Shokrollahi III의 교시들을 쉽게 확장하여 토네이도 코드들 및 IETF LDPC 코드들과 같은 시스터메틱 코드들에 적용할 수 있어서, 또한 시스터메틱 코드들이지만 더 양호한 복원 특성들을 갖는, 이 코드들의 새로운 버전들을 도출할 수 있을 것이다. 더 상세하게는, 아래에서 설명되는 일반적 방법을 적용함으로써 획득되는, 이 코드들의 새로운 버전들은, 복구 심볼들 사이에서의 손실의 비율에 비해 소스 심볼들 사이에서의 손실의 비율이 디코딩 복원 확률에 현저하게 영향을 주지 않고, 추가적으로 손실의 패턴이 디코딩 복원 확률에 현저하게 영향을 주지 않는 특성을 갖도록 향상된다. 따라서, 이 코드들은, 소스 및 복구 심볼들 사이에서의 상이한 부분 손실량들에 의해 또는 상이한 손실 패턴들에 의해 크게 영향을 받지 않는 복원 특성들을 갖는 시스터메틱 FEC 코드들의 이용을 요구하는 전술한 애플리케이션들에서 효율적으로 이용될 수 있다.
이 새로운 인코딩 방법은 일반적으로, 시스터메틱 FEC 코드들, 넌-시스터메틱 FEC 코드들, 고정 레이트 FEC 코드들 및 연쇄 반응 FEC 코드들에 대한 인코딩에 적용될 수 있어서, 새롭게 향상된 시스터메틱 FEC 코드들에 대한 전반적 인코딩 방법을 도출시킬 수 있다. 또한, 적용될 수 있는 대응하는 새로운 디코딩 방법이 존재한다.
인코더 내의 디코더의 예
이제, 인코더 내의 디코더의 예를 제공한다.
인코딩 방법 E를, K개의 소스 심볼들로부터 N개의 인코딩된 심볼들을 생성시키는 고정 레이트 (넌-시스터메틱 또는 시스터메틱) FEC 코드 E에 대한 인코더에 이용되는 인코딩 방법이라 하며, 여기서 N은 K 이상이다. 유사하게, 디코딩 방법 E를, 수신기 또는 다른 곳의 디코더에 의해 이용되는, FEC 코드 E에 대한 대응하는 디코딩 방법이라 한다.
FEC 코드 E는, 디코딩 방법 E를 이용하여 합리적 확률로 K개의 소스 심볼들을 복원하기 위해 N개의 인코딩된 심볼들 중 K개의 랜덤 세트로 충분한 특성을 갖는다고 가정한다. 이 합리적 확률은 용도 또는 애플리케이션에 의해 설정되는 몇몇 요건일 수 있고, 1/2 이외의 값일 수도 있다. 특정한 코드의 구성이 특정한 복원 확률에 대해 특정될 필요는 없지만, 애플리케이션들 및 시스템들은 자신들의 특정한 견고성 레벨로 설계될 수 있음을 이해해야 한다. 몇몇 예들에서, 복원 확률은, K개보다 많은 심볼들을 고려하고, 다음으로, 디코딩 프로세스를 이용하여, 이 고려되는 심볼들 중 성공적 디코딩을 허용하는 K개의 심볼들의 세트를 결정함으로써 증가될 수 있다.
FEC 코드 E에 대해 ESI(인코딩된 심볼 식별자)가 각각의 인코딩된 심볼과 연관되고, ESI는 그 인코딩된 심볼을 식별하는 것으로 가정한다. 일반화의 손실없이, ESI들은 본 명세서에서 0, 1, 2, ..., N-1로 라벨링된다.
FEC 코드 E에 대한 방법들을 이용하여 생성되는 시스터메틱 FEC 코드 F에 대한 시스터메틱 인코딩 방법 F의 일 실시예에서, K 및 N이 입력 파라미터들이다. FEC 코드 F에 대한 소스 심볼들은 ESI 0, ..., K-1을 가질 것이고, FEC 코드 F에 대한 복구 심볼들은 SEI K, ..., N-1을 가질 것이다. FEC 코드 F에 대한 시스터메틱 인코딩 방법 F는 FEC 코드 E에 대한 인코딩 방법 E 및 디코딩 방법 E를 이용하여 K개의 소스 심볼들 C(0), ..., C(K-1)로부터 N개의 인코딩된 심볼들을 생성할 것이고, 이것은 하드웨어 및/또는 소프트웨어에 의해 다음과 같이 수행된다:
(1) ESI 세트 X(0), ..., X(N-1)로 치환된 FEC 코드 E에 도달하기 위해 FEC 코드 E와 연관된 N개의 ESI들을 랜덤하게 치환하며, 여기서, 이 치환된 ESI 세트는, FEC 코드 E의 K개의 소스 심볼들이 ESI들 X(0), ..., X(K-1)의 치환 순서에 대해 FEC 코드 E의 처음 K개의 인코딩된 심볼들로부터 디코딩될 수 있도록 구성되고,
(2) 각각의 i = 0, ..., N-1에 대해, FEC 코드 F의 ESI i를 FEC 코드 E의 ESI X(i)와 연관시키고,
(3) 각각의 i = 0, ..., N-1에 대해, ESI X(i)를 갖는 FEC 코드 E의 인코딩된 심볼을 소스 심볼 C(i)의 값으로 설정하고,
(4) 대응하는 FEC 코드 E ESI들 X(0), ..., X(K-1)을 갖는 소스 심볼들 C(0), ..., C(K-1)에 디코딩 방법 E를 적용하여, 디코딩된 심볼들 E(0), ..., E(K-1)을 생성하고, 그리고,
(5) 디코딩된 심볼들 E(0), ..., E(K-1)에 인코딩 방법 E를 적용하여, 연관된 FEC 코드 ESI들 0, ..., N-1을 갖는 FEC 코드 E의 인코딩된 심볼들 D(0), ..., D(N-1)을 생성하고,
(6) ESI들 0, 1, ..., N-1을 갖는 인코딩 방법 F에 대한 인코딩된 심볼들은 D(X(0)), D(X(1)), ..., D(X(N-1))이다.
인코딩 방법 F의 출력은 N개의 인코딩된 심볼들이며, 이들 중 처음 K개는 연관된 ESI들 0, 1, ..., K-1을 갖는 소스 심볼들 C(0), ..., C(K-1)임을 유의한다. 따라서, 인코딩 방법 F는 소스 데이터의 시스터메틱 인코딩을 생성한다.
방금 설명된 인코딩 방법 F에 대응하는 디코딩 방법 F의 일 실시예가 후속되며, 여기서, K 및 N은 전체에서 사용되는 이 방법에 대한 입력 파라미터들이다. 이 디코딩 방법 F는 연관된 FEC 코드 F ESI들 Y(0), ..., Y(K-1)을 갖는 K개의 수신된 인코딩된 심볼들 D(0), ..., D(K-1)로부터 K개의 소스 심볼들 C(0), ..., C(K-1)을 복원한다. 수신된 심볼들은 정확하게 그 전송된 심볼들일 필요는 없다. 하드웨어 및/또는 소프트웨어에 의해 수행되는 이 방법은 다음과 같다:
(1) ESI 세트 X(0), ..., X(N-1)로 치환된 FEC 코드 E에 도달하기 위해 FEC 코드 E와 연관된 N개의 ESI들을 랜덤하게 치환하며, 여기서, 이 치환된 ESI 세트는, FEC 코드 E의 K개의 소스 심볼들이 ESI들 X(0), ..., X(K-1)의 치환 순서에 대해 FEC 코드 E의 처음 K개의 인코딩된 심볼들로부터 디코딩될 수 있도록 구성되고,
(2) 연관된 FEC 코드 E ESI들 X(Y(0)), ..., X(Y(K-1))을 갖는 인코딩된 심볼들에 디코딩 방법 E를 적용하여, 디코딩된 심볼들 E(0), ..., E(K-1)을 생성하고,
(3) 인코딩 방법 E를 이용하여, E(0), ..., E(K-1)로부터 FEC 코드 E ESI들 X(0), ..., X(K-1)을 갖는 인코딩된 심볼들 C(0), ..., C(K-1)을 생성하고,
(4) ESI들 0, ..., K-1을 갖는 FEC 코드 F의 디코딩된 소스 심볼들은 C(0), ..., C(K-1)이다.
방금 설명된 것과 같이 동작하는 방법들 및 장치는 몇몇 바람직한 특성들을 갖는다. 예를 들어, 시스터메틱 코드이고, K개의 수신된 인코딩된 심볼들의 랜덤 세트가 높은 확률로 디코딩될 수 있는 특성을 갖지만, K개의 인코딩된 심볼들이 수신되고 수신된 인코딩된 심볼들 사이에서의 소스 심볼들의 비율이 K/N에 근접하지 않을 경우에는 높은 확률로 디코딩될 수 없는 특성을 또한 갖는 FEC 코드 E를 고려한다. 이 경우, 이 실시예는, FEC 코드 E의 인코딩 및 디코딩 방법들을 이용하는 새로운 FEC 코드 F를 설명하고, 이 새로운 FEC 코드 F는, 소스 심볼들인 수신된 인코딩된 심볼들의 비율에 독립적으로, K개의 수신된 인코딩된 심볼들의 세트로부터 높은 확률로 인코딩할 바람직한 특성을 갖는다.
상기 실시예의 다수의 변형들이 존재한다. 예를 들어, 인코딩 방법 F의 단계 (1)에서, ESI들의 랜덤 치환은 의사랜덤이거나, 또는 ESI들의 양호한 선택을 생성하지만 랜덤도 아니고 의사랜덤도 아닌 몇몇 다른 방법에 기초할 수 있다. FEC 코드 E가 시스터메틱 코드인 경우, 시스터메틱 ESI들로부터 단계 (1)에서 선택되는 치환에서 처음 K개의 ESI들의 일부는 FEC 코드 E의 레이트에 비례하는 것, 즉, K/N에 비례하는 것이 바람직하다. 단계 (1)에서 새로운 인코딩 방법 F에 의해 행해진 ESI들의 랜덤 선택들은, 예를 들어, 주지되거나 합의된 의사랜덤 생성기에 대한 시드(seed)와 같은 소량의 데이터와, 의사랜덤 생성기가 동작하는 방법 및 시드에 기초하여 ESI들을 선택하는 합의된 방법에 의해 표현될 수 있어서, 그 새로운 디코딩 방법 F는 동일한 시드 및 의사랜덤 생성기 및 ESI들을 생성하기 위한 방법들에 기초하여 단계 (1)에서 정확히 동일한 ESI 치환 선택을 행할 수 있다. 일반적으로, ESI들의 시퀀스를 생성하기 위해 단계 (1)의 새로운 인코딩 방법 F에서 사용되는 프로세스 및 ESI들의 시퀀스를 생성하기 위해 단계 (1)의 새로운 디코딩 방법 F에서 사용되는 프로세스 모두가 ESI들의 동일한 시퀀스를 생성하면, 그 새로운 디코딩 방법 F가 새로운 인코딩 방법 F의 역(inverse)인 것을 보장하는 것이 바람직하다.
다른 변형들이 또한 존재하며, 여기서, 예를 들어, 명시적 ESI들은 사용되지 않지만, 대신에 인코딩된 심볼의 고유한 식별자가 다른 인코딩된 심볼들에 대해 또는 다른 수단에 의해 자신의 위치에 있다.
상기 설명에서, FEC 코드 E의 원래의 ESI들은 FEC 코드 F에 의해 리맵핑(remap)되어, 소스 심볼들의 순서화된 세트에는 연속된 순서로 ESI들 0, ..., K-1이 할당되고, 복구 심볼들에는 ESI들 K, ..., N-1이 할당된다. 다른 변형들이 가능하여, 예를 들어, ESI들의 리맵핑은 인코딩 방법 F가 인코딩된 심볼들을 생성한 직후, 인코딩된 심볼들이 송신되기 전에 발생할 수 있고, ESI들의 역 리맵핑은, 인코딩된 심볼들이 수신되지만 디코딩 방법 F에 의해 원래의 소스 심볼들의 복원을 위해 프로세싱되기 전에 수신기에서 발생할 수 있다.
다른 변형에서, 새로운 인코딩 방법 F의 단계 (1)에서, 치환은 먼저 K+A개의 FEC 코드 E ESI들을 선택함으로서 선택될 수 있고, 여기서 A는 높은 확률의 디코딩가능성을 보장하기 위해 선택되는 값이고, 다음으로, 디코딩 프로세스의 시뮬레이션 동안 K+A개의 ESI들 중 어떤 K개가 실제로 디코딩 동안 사용되는지가 결정되고, 선택된 치환은 K+A개의 ESI들의 초기 세트 중 디코딩 동안 실제로 사용되는 K개의 ESI들을 치환의 처음 K개의 ESI들로 선택할 수 있다. 유사한 변형들이 새로운 디코딩 방법 F에 적용된다.
인코딩 방법 F의 다른 변형으로, 랜덤 치환을 생성하기 위해 이용되는 시드는, 단계 (1)에서 생성된 ESI들의 치환과 연관된 FEC 코드 E의 처음 K개의 인코딩된 심볼들이 디코딩가능한 것을 보장하기 위해 K의 값에 대해 미리 계산되고, 다음으로, 이 시드는 단계 (1)의 치환을 생성하기 위해, 인코딩 방법 F 및 대응하는 디코딩 방법 F의 단계 (1)에서의 K에 대해 항상 사용된다. 이러한 시드를 선택하기 위한 방법은, 단계 (1)에서의 디코딩가능성을 보장하는 시드가 발견될 때까지 시드들을 랜덤하게 선택하는 단계, 및 다음으로 그 시드를 확정하는 단계를 포함한다. 대안적으로, 시드는 인코딩 방법 F에 의해 이 특성들을 갖도록 동적으로 생성될 수 있고, 다음으로, 이 시드는 디코딩 방법 F에 전달될 수 있다.
인코딩 방법 F의 다른 변형으로서, 부분 치환이 단계 (1)에서 선택될 수 있어서, 즉, 새로운 인코딩 방법 F의 단계 (1)에서 ESI들 모두가 생성될 필요는 없고, 예를 들어, ESI들이, 인코딩된 심볼들의 일부인 소스 심볼들에 대응하거나 또는 N개 미만의 인코딩된 심볼들이 생성될 필요가 있기 때문에, 단계 (5) 및 (6)에서 필요하지 않다면, 인코딩된 심볼들 모두가 생성될 필요는 없다. 다른 예들에서, 수신된 인코딩된 심볼들의 일부가, 복원되고 있는 소스 심볼들의 일부에 대응할 수 있기 때문에, 새로운 디코딩 방법 F의 단계 (3) 및 (4)에서, 인코딩된 심볼들 모두가 재계산될 필요는 없다. 유사하게, 예를 들어, 단계 (2)에서 디코딩된 심볼들 중 일부가 후속 단계들에서 인코딩된 심볼들을 생성하기 위해 요구되지 않으면, 새로운 디코딩 방법 F의 단계 (2)에서, 모든 K개의 심볼들 E(0), ..., E(K-1)이 디코딩될 필요는 없다.
전술한 방법들 및 실시예들은 다수의 적용들을 갖는다. 예를 들어, 인코딩 방법 F 및 디코딩 방법 F 및 이들의 변형들은 토네이도 코드들 및 IDTF LDPC 코드들에 적용되어, 개선된 수신 오버헤드 및 디코딩 실패 확률 성능을 제공할 수 있다. 일반적으로, 이 새로운 방법들은 임의의 고정 레이트 FEC 코드에 적용된다. 이 새로운 방법들의 변형들은 또한, 고정 레이트를 갖지 않는 FEC 코드들, 즉, 생성될 수 있는 인코딩된 심볼들의 수가 소스 심볼들의 수에 독립적인 연쇄 반응 코드들과 같은 FEC 코드들에 적용될 수 있다.
Shokrollahi III은 연쇄 반응 코드들에 대한 시스터메틱 인코딩 및 디코딩 방법들을 생성하기 위한 유사한 교시들을 포함한다. 몇몇 실시예들에서, 이 코드들에 이용되는 인코딩 및 디코딩 방법들 E는 Luby I, Luby II, Shokrollahi I, Shokrollahi II, Luby III, Shokrollahi IV에 교시된 방법들이다. 시스터메틱 인코더들을 설명하기 위해, 인코딩 방법 E 및 디코딩 방법 E를 설명하고, 전술되고 이 참조문헌들로부터 알려진 일반적 원리들을 이용하여, 이 방법들을 시스터메틱 인코딩 방법들 F 및 시스터메틱 디코딩 방법들 F로 변환하는 것이 종종 충분하다. 따라서, 본 명세서 및 인용된 참조문헌들을 판독할 때, 인코딩 방법들 E 및 디코딩 방법들 E를 설명하는 교시들을 얻고, 이와 동일한 것을 시스터메틱 인코딩 방법들 F 및 시스터메틱 디코딩 방법들 F 등에 적용하는 방법은 이 분야의 당업자에게 자명할 것이다.
비활성화
Shokrollahi II에 교시되는 비활성화 디코딩은, 기지의 선형 수식 값들의 세트로부터 미지의 변수들의 세트를 해결하는 경우에는 항상 비리프 전파(belief propagation)와 함께 적용될 수 있는 방법이고, 특히, 선형 수식들의 세트들에 기초한 효율적 인코딩 및 디코딩 방법들을 구현할 때 유리하다. Shokrollahi II에서 설명되는 비활성화 디코딩과 본 명세서의 아래에서 설명되는 영속적 비활성화 디코딩 사이를 구별하기 위해, Shokrollahi II의 방법들 및 교시들을 지칭하는데 "온더플라이(on the fly)" 비활성화(여기서는 "OTF 비활성화"로 축약됨)가 사용되는 한편, 비활성화들이 미리 선택되는 본 명세서의 방법들 및 교시들을 지칭하는데 "영속적 비활성화"가 사용된다.
비리프 전파의 하나의 원리(tenet)는, 디코딩 프로세스 동안 가능한 경우에는 항상, 디코더가, 하나의 나머지 미지의 변수를 해결하기 위해 그 변수에 의존하는 (가능한 감소된) 수식을 이용해야 한다는 것, 및 따라서 그 수식은 그 변수와 연관되어, 해결된 변수에 대한 수식들의 의존성을 제거함으로써 나머지 미사용 수식들을 감소시킨다는 것이다. 이러한 단순한 비리프 전파 기반 디코딩 프로세스는, 예를 들어, 토네이도 코드들, Luby I, Luby II, Shokrollahi I, Shokrollahi II, Luby III, Shokrollahi IV에 설명된 연쇄 반응 코드들, 및 IETF LDPC 코드들의 실시예들의 일부에서 사용되고 있다.
OTF 비활성화 디코딩은 다수의 단계(phase)들을 겪는다. OTF 비활성화 디코딩 방법의 제 1 단계에서, 오직 하나의 나머지 미지의 변수에 의존하는 나머지 수식이 존재하지 않기 때문에 비리프 전파 디코딩 프로세스가 계속될 수 없는 경우에는 항상, 디코더는 하나 이상의 미지의 변수들을 "OTF 비활성화"시킬 것이고, 그 하나 이상의 미지의 변수들을, 비리프 전파 프로세스에 대해 "해결되고" 나머지 수식들로부터 "제거된" 것으로 간주하여, 비리프 전파 디코딩 프로세스가 계속되는 것이 가능하게 허용할 것이다. 다음으로, 제 1 단계 동안 OTF 비활성화된 변수들은, 예를 들어, 가우시안 제거 또는 더 계산 효율적인 방법들을 이용하여, 예를 들어, 제 2 단계에서 해결되고, 다음으로, 제 3 단계에서, 이 OTF 비활성화된 변수들의 값들이 이용되어, 디코딩의 제 1 단계 동안 수식들과 연관된 변수를 완전하게 해결한다.
Shokrollahi II에 더 상세히 교시되는 OTF 비활성화 디코딩은 연쇄 반응 코드들을 넘어 다수의 다른 유형들의 코드들에 적용될 수 있다. 예를 들어, 이것은 LDPC 및 LDGM 코드들의 일반적 클래스, 특히 IETF LDPC 코드들, 및 토네이도 코드들에 적용될 수 있어서, 이 유형들의 코드들에 대한 신뢰도에서의 개선(디코딩을 실패할 확률을 감소시키는 것) 및/또는 CPU 및/또는 메모리 성능에서의 개선(인코딩 및/또는 디코딩의 속도를 증가시키고 그리고/또는 요구되는 메모리 사이즈 및/또는 액세스 패턴 요건들을 감소시키는 것)들을 달성할 수 있다.
OTF 비활성화 디코딩과 조합된 연쇄 반응 코드 실시예들의 변형들의 일부는 Shokrollahi IV에서 설명된다. 다른 변형들은 본 출원에서 설명된다.
시스템 개관
도 1은 멀티-스테이지 코딩을 이용하는 통신 시스템(100)의 블록도이다. 이것은 Shokrollahi I에 제시된 것과 유사하지만, 이 경우에서는, 인코더(115)가, 어떤 중간 심볼들이 "영속적으로 비활성화되는지"의 지정을 고려하고, 이러한 중간 심볼들에 대해 동적 인코딩 프로세스 동안 영속적으로 비활성화되지 않는 중간 심볼들과는 상이하게 동작한다. 유사하게, 디코더(155)는 또한 디코딩할 때, 영속적으로 비활성화되는 중간 심볼들을 고려한다.
도 1에 도시된 바와 같이, K개의 소스 심볼들(C(0), ..., C(K-1))이 인코더(115)에 입력되고, 디코더(155)에 이용가능하게 되도록 심볼들에 대한 디코딩이 성공적이면, 디코더(115)는 이 K개의 소스 심볼들의 카피를 출력할 수 있다. 몇몇 실시예들에서, 심볼이 K-심볼 블록들로 파싱되고(parsed), 몇몇 실시예들에서, K보다 큰 어떤 수의 소스 심볼들의 파일은 K-사이즈의 심볼 블록들로 분할되어 송신된다. 몇몇 실시예들에서, K'>K의 블록 사이즈가 선호되면, K'-K개의 패딩(padding) 심볼들이 K개의 소스 심볼들에 추가될 수 있다. 이 패딩 심볼들은 0의 값들 또는 인코더(115) 및 디코더(155) 모두에 알려진 (또는 그렇지 않으면 디코더(155)에서 결정될 수 있는) 임의의 다른 고정 값을 가질 수 있다. 인코더(115)는 다수의 인코더들, 모듈들 등을 가질 수 있고, 디코더(155)들의 경우도 마찬가지임을 이해해야 한다.
도시된 바와 같이, 인코더(115)는 또한 동적 키 생성기(120)로부터 동적 키들의 시퀀스 및 정적 키 생성기(130)로부터 정적 키들의 시퀀스를 수신하고, 이들 각각은 난수 생성기(135)에 의해 유도될 수 있다. 동적 키 생성기(120)의 출력은 단순히 기수(cardinal number)일 수 있지만, 반드시 그러한 것은 아니다. 키 생성기들의 동작은 Shokrollahi I에 제시된 것일 수 있다.
도면들에 도시된 다양한 기능 블록들은 입력 신호들로 제공되는 특정한 입력들에 의해 하드웨어로서 구현될 수 있고, 또는 명령 메모리에 저장되고 대응하는 기능을 수행하기 위해 적절한 순서로 실행되는 프로세서 실행 명령들에 의해 구현될 수 있음을 이해해야 한다. 몇몇 경우들에서, 이 기능들을 수행하고 그리고/또는 프로그램 코드를 실행하기 위해 특수한 하드웨어가 이용된다. 프로그램 코드 및 프로세서가 항상 제시되지는 않으며, 당업자는 본 명세서를 판독하면 이러한 세부사항들을 구현하는 방법을 인식할 것이다.
인코더(115)는 또한, 비활성화 지정기(125; inactivation designator)로부터의 입력들 및 본 명세서의 다른 곳에서 설명되는 라인들을 따라 시스템(100)에 입력되는 다른 파라미터들을 수신한다. 비활성화 지정기(125)의 출력들은, 디코딩을 위해 "영속적으로 비활성화되는 것"으로 지정되는 중간 심볼들의 수를 표현하는 값 P를 포함할 수 있다("PI 리스트"는 중간 심볼들 중 어떤 P가 리스트 상에 있는지를 표시한다). 다른 곳에서 설명되는 바와 같이, 인코딩 프로세스들에 이용되는 중간 심볼들은 몇몇 실시예들에서는 단지 K개의 소스 심볼들이지만, 다른 실시예들에서는, 이들을 단순히 카피하는 것을 넘어 K개의 소스 심볼들로부터 중간 심볼들을 생성하는 몇몇 유형의 프로세싱, 변환, 인코딩, 디코딩 등이 존재한다.
입력 파라미터들은, 키 생성기들 및/또는 인코더의 인코딩 프로세스들(아래에서 더 상세히 설명됨)에 의해 이용되는 랜덤 시드들, 생성할 인코딩된 심볼들의 수, 생성할 LDPC 심볼들의 수, 생성할 HDPC 심볼들의 수, 생성할 중간 심볼들의 수, 생성할 리던던트 심볼들의 수 등을 포함할 수 있고, 그리고/또는 이 값들 중 일부는 인코더(115)에 이용가능한 다른 값들로부터 계산된다. 예를 들어, 생성될 LDPC 심볼들의 수는 고정 공식 및 K의 값으로부터 완전하게 계산될 수 있다.
인코더(115)는 자신의 입력들로부터, 인코딩된 심볼들의 시퀀스(B(I0), B(I1), B(I2), ...)를 생성하고, 이들을 송신 모듈(140)에 제공하며, 송신 모듈(140)은 또한 동적 키 생성기(120)로부터 동적 키 값들(I0, I1, I2, ...)을 수신하지만, 이 정보를 전달하는 다른 방법이 존재하면, 이것은 불필요할 수도 있다. 송신 모듈(140)은, 가능하게는 본 명세서에서는 더 상세히 설명될 필요가 없는 종래의 방식으로, 제공받은 것들을 채널(145)에 전달한다. 수신 모듈(150)은 인코딩된 심볼들 및 동적 키 값들(요구되는 경우)을 수신한다. 채널(145)은 공간을 통한 채널(수신될 하나의 장소로부터 다른 장소로 송신하는 경우) 또는 시간을 통한 채널(예를 들어, 추후의 재생을 위해 미디어에 기록하는 경우)일 수 있다. 채널(145)은 인코딩된 심볼들의 일부의 손실을 유발할 수 있다. 따라서, 디코더(115)가 수신 모듈(150)로부터 수신하는 인코딩된 심볼들 B(Ia), B(Ib), ...은 송신 모듈들이 전송한 인코딩된 심볼들과 동일하지 않을 수 있다. 이것은, 상이한 아랫첨자 인덱스들로 표시되어 있다.
바람직하게는 디코더(155)는 동적 키 생성기(160), 난수 생성기(163) 및 정적 키 생성기(165)를 이용하여, 수신된 심볼들에 대해 이용되는 키들(이 키들을 상이할 수 있음)을 재생성할 수 있고, 다양한 디코딩 파라미터들을 입력들로 수신할 수 있다. 이 입력들 중 일부는 하드코딩(즉, 디바이스의 구성 동안 입력)될 수 있고 일부는 변경가능한 입력들일 수 있다.
도 2는, 다른 도면들 및 본 명세서 전체에서 가장 자주 사용되는 표기의 요약을 갖는 변수들, 어레이들 등의 표이다. 달리 언급되지 않으면, K는 인코더에 대한 소스 심볼들의 수를 나타내고, R은 정적 인코더에 의해 생성되는 리던던트 심볼들의 수를 나타내고, L은 "중간 심볼들"의 수, 즉, 소스 및 리던던트 심볼들의 조합이어서, L=K+R이다.
아래에서 설명되는 바와 같이, 정적 인코더의 몇몇 실시예들에서, 2가지 유형들의 리던던트 심볼들이 생성된다. 본 명세서의 많은 예들에서 이용되는 특정한 실시예에서, 제 1 세트는 LDPC 심볼들을 포함하고, 제 2 세트는 HDPC 심볼들을 포함한다. 일반화의 오류없이, 본 명세서의 많은 예들은 LDPC 심볼들의 수를 S로 지칭하고 HDPC 심볼들의 수를 H로 지칭한다. 2개보다 많은 유형들의 리던던트 심볼들이 존재할 수도 있어서, R=S+H인 것이 요구되지는 않는다. LDPC 심볼들 및 HDPC 심볼들은 상이한 정도 분포(degree distribution)들을 갖고, 이 분야의 당업자가 본 명세서를 판독하면, LDPC 또는 HDPC 심볼들이 아니지만 리던던트 심볼들이 2개의(또는 그 이상의) 심볼들의 세트들을 포함하고 각각의 세트가 다른 세트들의 정도 분포들과는 구별되는 정도 분포를 갖는 리던던트 심볼들을 이용하는 방법을 인식할 것이다. 주지된 바와 같이, 리던던트 심볼들의 세트의 정도 분포는 정도의 분포를 지칭하고, 리던던트 심볼의 정도는, 리던던트 심볼이 의존하는 소스 심볼들의 수를 지칭한다.
P는 중간 심볼들 중 영속적으로 비활성인 심볼들의 수를 나타낸다. 영속적으로 비활성인 심볼들은 특정한 처리를 위해, 이를테면, 비리프 전파를 계속하기 위해 (그리고 그 비활성화된 심볼들을 해결한 후에 해결을 위해 되돌리기 위해) 비리프 전파 네트워크에서 "무시(set aside)" 또는 "비활성화된" 것으로 지정되는 심볼들이고, 영속적으로 비활성화된 심볼들은 이러한 처리를 위해 인코더에서 지정된다는 점에서, 영속적으로 비활성화된 심볼들은 다른 비활성화된 심볼들과 구별된다.
N은 디코더(155)에 의해 행해지는 디코딩 시도에서 수신된 심볼들의 수를 나타내고, A는 "오버헤드" 심볼들의 수, 즉, 수신된 인코딩된 심볼들 중 K를 넘은 수이다. 따라서, A=N-K이다.
K, R, S, H, P, N 및 A는 정수들이고, 통상적으로 모두 1 이상이지만, 특정한 실시예들에서, 이들 중 일부는 1 또는 제로일 수 있다(예를 들어, 리던던트 심볼들이 없는 경우 R=0이고, P=0은 오직 OTF 비활성화만이 존재하는 Shokrollahi II의 경우에 속한다).
소스 심볼들의 벡터는 (C(0), ..., C(K-1))로 표기되고, 리던던트 심볼들의 벡터는 (C(K), ..., C(L-1))로 표기된다. 따라서, (C(0), ..., C(L-1))은 시스터메틱의 경우 중간 심볼들의 벡터를 나타낸다. 이 중간 심볼들의 수 P는 "영속적으로 비활성인" 것으로 지정된다. "PI 리스트"는 중간 심볼들 중 어떤 심볼들이 영속적으로 비활성인 심볼들인지를 표시한다. 많은 실시예들에서, PI 리스트는, 마지막 P개의 중간 심볼들, 즉, C(L-P), ..., C(L-1)을 단순히 적시하지만, 이것은 필수적이 아니다. 이 경우는, 본 설명의 나머지 부분들을 단순화하기 위해서 가정되는 것일 뿐이다.
PI 리스트 상에 없는 중간 심볼들은 본 명세서에서 "LT 중간 심볼들"로 지칭된다. 이 예에서, LT 중간 심볼들은 C(0), ..., C(L-P-1)일 것이다. D(0), ..., D(N-1)은 수신된 인코딩된 심볼들을 나타낸다.
값들의 어레이가 "N(0), ..., N(x)" 등으로 설명되는 경우, 오직 하나 또는 두개의 값들이 존재하는 경우를 배제하려는 의도가 아니기 때문에, 이것이 적어도 3개의 값들을 요구하는 것으로 가정되지는 않아야 함을 유의해야 한다.
영속적 비활성화를 이용하는 인코딩 방법
도 3은 도 1에 도시된 인코더(115)의 하나의 특정한 실시예의 블록도이다. 여기에 도시된 바와 같이, 소스 심볼들은 입력 버퍼(205)에 저장되고, 정적 인코더(210) 및 동적 인코더(220)에 제공되며, 이들은 또한 키 입력들 및 다른 입력들을 수신한다. 정적 인코더(210)는 내부 값들 및 프로그램 명령들을 저장하기 위해 내부 저장부(215)(메모리, 버퍼, 가상 메모리, 레지스터 저장부 등)를 포함할 수 있다. 유사하게, 동적 인코더(220)는 내부 값들 및 프로그램 명령들을 저장하기 위해 내부 저장부(225)(메모리, 버퍼, 가상 메모리, 레지스터 저장부 등)를 포함할 수 있다.
몇몇 실시예들에서, 리던던트 계산기(230)는 생성할 리던던트 심볼들의 수 R을 결정한다. 몇몇 실시예들에서, 정적 인코더(210)는 리던던트 심볼들의 2개의 별개의 세트들을 생성하고, 특정한 실시예에서, 제 1 세트는 처음 S개의 리던던트 심볼들, 즉, 심볼들 C(K), ..., C(K+S-1)이고, 이들은 LDPC 심볼들인 한편, 제 2 세트는 다음 H개의 리던던트 심볼들, 즉, C(L-H), ..., C(L-1)이고, 이들은 HDPC 심볼들이다. PI 리스트가 마지막 P개의 리던던트 심볼들이면, H개의 리던던트 심볼들 모두가 PI 리스트 상에 있거나(P≥H인 경우), 또는 P개의 리던던트 심볼들 모두가 HDPC 심볼들일 수 있다(P<H인 경우).
심볼들의 이러한 2개의 세트들의 생성을 유도하는 동작들은 매우 상이할 수 있다. 예를 들어, 아래에서 설명되는 몇몇 실시예들에서, LDPC 리던던트 심볼들을 생성하기 위한 동작들은 바이너리(binary) 동작들이고, HDPC 심볼들을 생성하기 위한 동작들은 넌-바이너리이다.
동적 인코더(220)의 동작은 도 4에서 더 상세히 설명된다. 일 실시예에 따르면, 동적 인코더(220)는 2개의 인코더들, 즉, PI 인코더(240) 및 LT 인코더(250)를 포함한다. 몇몇 실시예들에서, LT 인코더(250)는 연쇄 반응 인코더이고, PI 인코더(240)는 특정 유형의 연쇄 반응 인코더이다. 다른 실시예들에서, 이 2개의 인코더들은 매우 유사할 수 있거나, 또는 PI 인코더(240)가 연쇄 반응 인코더가 아니다. 이 인코더들이 어떻게 정의되든지 간에, 이들은 심볼들을 생성하고, LT 인코더(250)는 영속적으로 비활성이 아닌 것으로 지정되는 LT 중간 심볼들 C(0), ..., C(L-P-1)로부터 자신의 심볼들을 생성하는 한편, PI 인코더(240)는 영속적으로 비활성인 중간 심볼들 C(L-P), ..., C(L-1)로부터 자신의 심볼들을 생성한다. 이 2개의 생성된 심볼들은, 최종적인 인코딩된 심볼(270)을 생성하는 결합기(260)에 입력된다.
본 발명의 몇몇 실시예들에서, 영속적으로 비활성화된 심볼들 중 일부는 LT 인코딩 프로세스에 참여할 수 있고, 영속적으로 비활성화된 심볼들이 아닌 심볼들 중 일부는 PI 인코딩 프로세스에 참여할 수 있다. 즉, LT 중간 심볼들을 포함하는 심볼들의 세트 및 PI 리스트는 분리될 필요가 없다.
바람직한 실시예들에서, 결합기(260)에 제공되는 심볼들은 동일한 길이를 가질 수 있고, 결합기(260)에 의해 수행되는 기능은 인코딩된 심볼(270)을 생성하기 위한 이 심볼들에 대한 XOR 연산이다. 그러나, 이것은, 본 발명의 동작을 위해 필수적인 것은 아니다. 다른 유형들의 결합기들이 고안되어 유사한 결과들을 유도할 수 있다.
다른 실시예들에서, 중간 심볼들은 자신의 연관된 인코더(240)에 의해 각각 2개보다 많은 세트들, 예를 들어, LT 심볼들의 하나의 세트 및 PI 심볼들의 다수의(하나보다 많은) 세트들로 세분화된다. 물론, 각각의 연관된 인코더는 공통 계산 엘리먼트로서 구현될 수도 있고, 또는 상이한 세트들에 대한 상이한 인코더로서 동작할 때 인코딩 프로세스에 따라 상이한 명령들에 대해 동작하는 하드웨어 엘리먼트로 구현될 수도 있다.
PI 인코더(240)에 의해 수행될 수 있는 PI 인코딩 프로세스(241)의 예시적 동작이 도 5에 예시된다. 생성될 인코딩된 심볼에 대응하는 키 I_a를 이용하여, 단계(261)에서, 인코더는 양의 가중치 WP 및 L-P와 L-1 사이(이 값들을 포함함)의 WP개의 정수들을 포함하는 리스트 ALP를 결정한다. 단계(263)에서, 리스트 ALP=(t(0), ..., t(WP-1))이면, 심볼 X의 값은 X = C(t(0))
Figure 112012022182002-pct00001
C(t(1))
Figure 112012022182002-pct00002
...
Figure 112012022182002-pct00003
C(t(WP-1))이고, 여기서
Figure 112012022182002-pct00004
는 XOR 연산을 나타낸다.
몇몇 실시예들에서, 가중치 WP는 3 또는 4와 같은 몇몇 수 또는 몇몇 다른 고정수로 고정된다. 다른 실시예들에서, 가중치 WP는, 2 또는 3과 동일하게 선택되는 가능한 이러한 수들의 작은 세트에 속할 것이다. 예를 들어, 부록 A의 실시예에 제시된 바와 같이, 가중치 WP는, LT 인코더(250)에 의해 수행될 수 있는 LT 인코딩 프로세스(251)에 의해 생성되는 심볼의 가중치에 의존한다. LT 인코더(250)에 의해 생성되는 가중치가 2이면, WP는 키 I_a에 따라 2 또는 3으로 선택되고, 여기서, WP가 2 또는 3인 횟수의 비율은 대략 동일하며, LT 인코더(250)에 의해 생성되는 가중치가 3보다 크면, WP는 2로 선택된다.
도 6은 본 발명의 실시예들 중 하나에 따르고 그리고 Luby I 및 Shokrollahi I의 교시들을 이용하는 LT 인코딩 프로세스(251)의 일예이다. 단계(267)에서, 가중치 WL 및 리스트 AL을 각각 생성하기 위해 키 I_a가 이용된다. 단계(269)에서,리스트 ALP = (j(0), ..., j(WL-1))이면, 심볼 X의 값은 X = C(j(0))
Figure 112012022182002-pct00005
C(j(1))
Figure 112012022182002-pct00006
...
Figure 112012022182002-pct00007
C(j(WL-1))로 설정된다.
도 7은 가중치 WL을 계산하는 동작을 도시한다. 여기에 도시된 바와 같이, 단계(272)에서, 생성될 인코딩된 심볼과 연관된 수 v가 생성되고, 이 수는 그 인코딩된 심볼에 대한 키 I_a에 기초하여 계산된다. 이 수는, 인코더들 및 디코더들이 일정할 수 있는 한, 인코딩된 심볼의 인덱스, 대표적 레벨 등 또는 별개의 수일 수 있다. 이 예에서, v는 0과 220 사이지만, 다른 예들에서는, (0 내지 232와 같은) 다른 범위들이 가능하다. v의 생성은 랜덤 생성 표들을 이용하여 명시적 방식으로 행해질 수 있지만, 이 난수들을 생성하는 방법의 정확한 동작은 변할 수 있다.
인코더는 표 M으로의 액세스를 갖는 것으로 가정되고, 표 M의 예가 도 8에 제공된다. "정도 분포 룩업" 표로 지칭되는 표 M은 2개의 열들 및 다수의 행들을 포함한다. 좌측 열은 가중치 WL의 가능한 값들로 라벨링되고, 우측 열은 0과 220 사이(이 값들을 포함함)의 정수들로 라벨링된다. v의 임의의 값에 대해, 정도 분포 룩업 표의 M[d] 열에 정확히 하나의 셀이 존재하며, 여기서 M[d-1]<v≤M[d]가 성립한다. 그 하나의 셀에 대해, d 열에 대응하는 값이 존재하고, 인코더는 그 값을 인코딩된 심볼에 대한 가중치 WL로 사용한다. 예를 들어, 인코딩된 심볼이 v=900,000을 갖는 경우, 그 인코딩된 심볼에 대한 가중치는 WL=7일 것이다.
인코더(210)는 엘리먼트들 SE(k,j)로의 액세스를 갖고, 여기서, k=0, ..., R-1 및 j=0, ..., L-1이다. 이 엘리먼트는 임의의 유한 필드에 속할 수 있고, 그 유한 필드에 대해, α*X가 심볼이 되도록 필드의 엘리먼트들 α와 심볼들 X 사이에 연산 *이 존재하고, α*(X
Figure 112012022182002-pct00008
Y)=α*X
Figure 112012022182002-pct00009
α*Y이고, 여기서
Figure 112012022182002-pct00010
는 XOR 연산을 나타낸다. 이러한 필드들 및 연산들은 Shokrollahi IV에 상세히 기재되어 있다. 정적 인코더(210)의 동작은, 소스 심볼들 C(0), ..., C(K-1)의 소정의 시퀀스에 대해 리던던트 심볼들 C(K), ..., C(L-1)의 시퀀스를 계산하는 것으로 설명될 수 있고, 여기서 Z(0), ..., Z(R-1)은 인코더 및 디코더에 알려진 값들(예를 들어, 0)이다.
Figure 112012022182002-pct00011
(수식 1)
수식 1에서, 엔트리들 SE(k,j)는 모두 바이너리일 수 있고, 또는 이들 중 일부는 필드 GF(2)에 속할 수 있는 한편 다른 것들은 다른 필드들에 속할 수 있다. 예를 들어, 부록 A의 실시예의 대응하는 행렬이 도 9에 제공된다. 이것은 2개의 부분행렬들, 즉, S개의 행들을 갖는 행렬 및 H개의 행들을 갖는 행렬을 포함한다. 상위 부분행렬은 2개의 부분들: 모든 행이 2개의 연속적인 1들을 갖는 마지막 P개의 열들을 포함하는 부분행렬(여기서 그 위치들은 모듈로(modulo) P로 카운팅됨)을 포함한다. 이 행렬의 처음 W=L-P개의 열들은 SxS 단위 행렬이 그에 후속하는 순환적 행렬들을 포함한다. 순환적 행렬들은 열들의 B를 포함하고, 각각은 (가능한 마지막을 제외하고는) S개의 행들을 갖는다. 이 순환적 행렬들의 수는 ceil(B/S)이다. 이 순환적 행렬들의 열들은 각각 정확히 3개의 1들을 갖는다. k번째 순환적 행렬의 제 1 열은 위치들 0, (k+1) mod S 및 (2K+1) mod S에서 1들을 갖는다. 다른 열들은 제 1 열의 순환적 시프트들이다. 도 9의 하위 H개의 행들은, HxH 단위 행렬이 그에 후속하는 GF(256)의 엔트리들을 갖는 행렬 Q를 포함한다.
α가 최소 다항식 x8+x4+x3+x2+1에 의한 GF(256)의 엘리먼트를 나타내면, 행렬 Q는 도 10에 제공된 행렬과 동일하다. 여기서, Δ1, ..., ΔK+S-1이 가중치 2의 열들이고, 이에 대해, 2개의 넌제로 엔트리들의 위치들은 부록 A의 섹션 5.3.3.3.에 개략적으로 나타낸 절차에 따라 의사랜덤하게 결정된다. (부록 A에 제공된 것들과 같은) 값들 S, P 및 H의 신중한 선택들에 있어서, 도 10의 행렬은 대응하는 코드의 탁월한 복원 특성들을 도출한다. 전술한 절차는 도 11에 예시되어 있다. 단계(276)에서, 행렬 SE가 0으로 초기화된다. 단계(278)에서, LDPC 심볼들의 수와 동일한 입력 변수 S가 이 프로세스에 제공되고, i = j mod S, 또는 i = (1+floor(j/S)) + j mod S, 또는 i = 2*(1+floor(j/S))+j mod S가 되도록, 쌍들 (i,j)에 대해 SE(i,j)의 값들이 1로 설정된다. 이 단계는 도 9의 순환적 행렬들을 고려한다.
단계(280)에서, 도 9의 단위 행렬 IS에 대응하는 위치가 1로 설정된다. 단계(282)에서, 도 9의 행렬의 PI 부분에 대응하는 위치들이 1로 설정된다. 이 위치들은 형태 (i,l) 및 (i,t)이고, 여기서, l = i mod P 및 t = (i+1) mod P이다. 단계(284)에서, 도 9의 행렬 Q에 대응하는 위치들이 설정된다. 따라서, 행렬 Q가 이 단계에 대한 추가적 입력으로서 제공된다. 단계(286)에서, 도 9의 행렬에서 단위 행렬 IH에 대응하는 위치들이 1로 설정된다.
행렬 SE에 대한 다른 선택들이 가능하고, 전반적 코드의 요구되는 요건들 및 특정 애플리케이션에 의존할 수 있다. 수식 1의 행렬이 어떻게 선택되든지, 정적 인코더(210)의 작업은 다양한 방식들로 달성되 수 있다. 예를 들어, 본 명세서를 판독할 때 이 분야의 당업자에게 자명한 바와 같이, 미지의 값들 C(K), ..., C(L-1)을 복원하기 위한 프로세스로서 가우시안 제거가 이용될 수 있다.
디코딩 및 영속적 비활성화
디코딩 문제는 다음과 같이 기술될 수 있다: 디코더(155)는 대응하는 키들 Ia, Ib, ...를 갖는 N개의 인코딩된 심볼들 B(Ia), B(Ib), ...를 갖는다. 이 인코딩된 심볼들의 전체 세트 또는 이들의 서브세트가 디코더에 의해 수신될 수 있는 한편, 다른 인코딩된 심볼들은 다른 수단에 의해 디코더에 의해 제공될 수 있다. 디코더의 목적은 소스 심볼들 C(0), ..., C(K-1)을 복원하는 것이다. 이 표현을 단순화하기 위해, 수신된 인코딩된 심볼들을 D(0), ..., D(N-1)로 나타낸다.
다수의 디코딩 동작들은 행렬들의 언어 및 이러한 행렬들의 연산들을 이용하여, 특히, 이러한 행렬들에 의한 수식들의 시스템들을 해결하여 간결하게 설명될 수 있다. 하기 설명에서, 수식들은 수신된 인코딩된 심볼들에 대응할 수 있고, 변수들은, 소스 심볼들, 또는 중간 심볼들로 종종 지칭되는, 소스 심볼들로부터 생성된 리던던트 심볼들과 소스 심볼들의 조합된 세트에 대응할 수 있고, 이들은 수신된 수신된 인코딩된 심볼들에 기초하여 해결될 것이다. 부록 A로 제공된 규격에서, 인코딩된 심볼들은 "인코딩 심볼들"(및 다른 변형들이 존재함)로 지칭될 수도 있지만, 전체 명세서 및 부록을 판독한 후 이 참조들이 어떻게 관련되는지 명확해질 것이다. 또한, 행렬들 및 동작들, 및 수식들에 대한 솔루션들은 수학적 연산들에 대응하는 컴퓨터 명령들로서 구현될 수 있고, 실제로, 컴퓨터, 프로세서, 하드웨어 또는 몇몇 전자 엘리먼트 없이 이러한 연산들을 행하는 것은 실용적이 아님을 이해해야 한다.
영속적 비활성화는, 디코딩 프로세스의 제 1 단계가 개시되기 전에, 영속적으로 비활성화된 심볼들 또는 변수들로 지칭되는 변수들의 세트를 디코더에서 비활성화로 결정하기 위해 이용된다. 아래에서 설명되는 영속적 비활성화 디코딩 방법들은 기존의 코드들에 적용될 수 있거나, 또는 코드들이 영속적 비활성화 디코딩과 함께 더 양호하게 동작하도록 특수하게 설계될 수 있다. 영속적 비활성화 디코딩 방법들은 선형 수식들의 임의의 시스템을 해결하는데 적용될 수 있고, 더 상세하게는, 연쇄 반응 코드들, IETF LDPC 코드들 및 토네이도 코드들에 적용될 수 있다.
영속적 비활성화 디코딩은, 기지의 선형 수식 값들의 세트로부터 미지의 변수들의 세트를 해결하는 경우에는 항상, OTF 비활성화 디코딩 및/또는 비리프 전파 디코딩과 결합하여 적용될 수 있고, 선형 수식들의 세트들에 기초한 효율적인 인코딩 및 디코딩 방법들을 구현할 때 특히 유용하다. 제 1 단계에서, 기지의 인코딩 방법의 구조에 기초하여, 또는 수신된 수식들에 기초하여, 미지의 변수들의 세트가 영속적으로 비활성화인 것으로 선언되고, 이 영속적으로 비활성화된 변수들은 선형 수식들로부터 제거되고, 디코딩 프로세스의 제 2 단계에서 "해결된" 것으로 고려된다 (제 2 단계 선형 수식들이 감소될 때, 동일한 감소들이 영속적으로 비활성화된 변수들에 대해 수행되는 것을 제외함).
제 2 단계에서, 이전에 설명된 비리프 전파 디코딩을 이용하여 영속적으로 비활성화되지 않은 미지의 변수들에 비리프 전파 디코딩이 적용되거나, 또는 OTF 비활성화 디코딩 방법의 제 1 단계에 대해 설명된 것과 유사하게, 영속적으로 비활성화되지 않은 미지의 변수들에 OTF 비활성화 디코딩이 적용되어, 감소된 인코딩된 심볼들 또는 수식들의 세트를 생성한다. 제 2 단계로부터 얻어진 감소된 인코딩된 심볼들 또는 수식들은, 비활성화되지 않은 변수들 또는 심볼들에 대한 의존성이 제거되어, 이렇게 감소된 인코딩된 심볼들 또는 수식들이 오직 비활성화된 변수들 또는 심볼들에만 의존하는 특성을 갖는다. 원래의 인코딩된 심볼들 및 감소된 인코딩된 심볼들이 몇몇 구현들에서 이용가능할 수 있도록, 원래의 인코딩된 심볼들 또는 수식들이 양호하게 유지되 수 있음을 유의한다.
제 3 단계에서, OTF 비활성화 디코딩을 이용하여 제 2 단계에서 생성된 임의의 추가적 OTF 비활성화된 변수들과 함께 영속적으로 비활성화된 변수들이, 예를 들어, 가우시안 제거를 이용하는 것과 같이 감소된 인코딩된 심볼들 또는 수식들을 이용하여 해결되거나, 또는 가우시안 제거를 이용하는 것보다 더 효율적으로 해결하기 위해, 영속적으로 비활성화된 변수들과 선형 수식들 사이의 관계들의 특수한 구조가 (존재한다면) 이용된다.
제 4 단계에서, 비활성화된 변수들, 즉, OTF 비활성화된 변수들 또는 영속적으로 비활성화된 변수들에 대해 해결된 값들이, 비활성화되지 않은 변수들을 해결하기 위해 원래의 인코딩된 심볼들 또는 수식들(또는 재유도된 원래의 인코딩된 심볼들 또는 수식들)과 함께 이용된다.
영속적 비활성화 디코딩 방법들의 이점들 중 하나는, 영속적 비활성화들 이외의 OTF 비활성화들의 수 w가 일반적으로 작거나 제로일 수 있고, 어떤 인코딩된 심볼들이 수신되는지에 대체로 독립적일 수 있다는 점이다. 이것은, 어떤 인코딩된 심볼들이 수신되는지에 대해 독립적으로 디코딩 복잡도를 일정하게 작게 할 수 있고, 더 신뢰할 수 있는 디코딩을 허용할 수 있고, 더 효율적으로 스케줄링될 수 있는, 더 실용적이고 더 적은 메모리 액세스들을 허용할 수 있다. 제 2 단계에서 오직 소수의 OTF 비활성화들만 존재하기 때문에, 그리고 제 2 단계의 OTF 비활성화들은 일반적으로, 심볼 동작들의 패턴을 다소 예측불가능하게 하는 디코딩 프로세스 동안에만 결정되기 때문에, 디코딩 동안 메모리 액세스 패턴들을더 예측가능하게 하여, 전반적으로 더 예측가능한 효율적인 디코딩 프로세스들을 허용한다.
상기 설명의 다수의 변형들이 존재한다. 예를 들어, 단계들은 비순차적(non-sequential) 인터리빙 순서로 실행될 수 있다. 다른 예로, 비활성화된 심볼들은, 다수의 추가적 단계들에서 영속적 비활성화 디코딩 또는 OTF 비활성화 디코딩을 이용하여, 제 3 단계에서 해결될 수 있다. 다른 예로, 영속적 비활성화 디코딩은, 에러 정정 코드들 또는 소거 정정 코드들에 이용될 수 있는 수식들 및 변수들의 선형 시스템에 적용될 수 있거나, 또는 수식들의 선형 시스템들을 이용하여 해결될 수 있는 다른 애플리케이션들을 위한 것일 수 있다. 다른 예로, 이 방법들은 시스터메틱 코드들 및 넌-시스터메틱 코드들 모두에 적용될 수 있다. 다른 예로, 이 방법들은 또한, 예를 들어, 넌-시스터메틱 코드들로부터 시스터메틱 코드들을 생성하기 위해 Shokrollahi III에 교시된 방법들을 이용하여 인코딩하는 경우, 인코딩 프로세스 동안 적용될 수 있다.
몇몇 경우들에서, 영속적 비활성화 디코딩 방법들이 특히 효과적이도록 인코딩 프로세스를 설계할 수 있다. 예를 들어, 비리프 전파 디코딩은 적용될 수 있는 경우에는 항상 계산 효율적인 것으로 알려져 있지만, 단독으로 이용되는 경우 높은 신뢰도의 디코딩을 제공할 수는 없는 것으로 또한 알려져 있다. 비리프 전파 디코딩이 OTF 비활성화 디코딩 내에서 사용되는 경우, 비리프 전파 단계들은 매우 효율적으로 프로세싱될 수 있지만, 비리프 전파 단계들 내에 개재되는 OTF 비활성화 단계들은 디코딩을 느리게 할 수 있고, 이러한 OTF 비활성화 단계들이 더 많이 존재할수록 디코딩 프로세스는 더 느려진다.
OTF 비활성화 디코딩의 통상적 실시예들에서, N+R개의 선형 수식 값들을 이용하여 K+R개의 미지의 변수들을 해결하려 시도하는 경우, OTF 비활성화 단계들의 수는 통상적으로 N=K일 때, 즉, 제로 오버헤드를 이용하여 변수들을 해결하려 시도할 때 가장 크다. 한편, N이 K보다 더 커질수록, OTF 비활성화 디코딩의 복잡도는 N이 충분히 클 때까지 더 적은 OTF 비활성화 단계들에 기인하여 통상적으로 감소하게 되어, 몇몇 경우들에서는, 어떠한 OTF 비활성화 단계들 및 비활성화 디코딩도 비리프 전파 디코딩만큼 또는 그 근처만큼 계산 효율적이 아니다. OTF 비활성화 디코딩의 다른 실시예들에서, OTF 비활성화들의 수는 N이 K보다 상당히 큰 경우에도 크게 유지될 수 있다.
영속적 비활성화 디코딩의 하나의 바람직한 실시예에서, 영속적으로 비활성화된 변수들의 수 P 및 선형 수식들의 구조는, 선형 수식들의 K+R개의 값들로부터 OTF 비활성화 디코딩을 이용하여 영속적으로 비활성화되지 않은 L-P개의 변수들을 해결할 때, OTF 비활성화 디코딩 동안 OTF 비활성화 단계들의 수가 작고, 몇몇 경우들에는 제로가 되어, OTF 비활성화 디코딩 단계가 거의 비리프 전파만큼 계산 효율적이 되도록 설계된다.
바람직한 실시예들에서, 선형 수식들의 구조는, OTF 비활성화 디코딩 단계가 거의 비리프 전파 디코딩만큼 효율적이 되도록 설계된다. 이러한 바람직한 실시예들에서, 선형 수식들에 대한 영속적으로 비활성화된 변수들의 관계들은, OTF 비활성화 디코딩 단계로부터의 임의의 OTF 비활성화된 변수들과 함께 영속적으로 비활성화된 변수들로 이루어진 비활성화된 변수들을 해결하는 단계가 효율적으로 수행될 수 있게 한다. 또한, 바람직한 실시예들에서, 영속적으로 비활성화된 심볼들의 구조는, 해결된 비활성화된 변수들로부터 비활성화되지 않은 변수들의 해결을 완료하는 단계가 계산 효율적이 되게 한다.
영속적 비활성화에 의한 연쇄 반응 코드들의 디코딩
도 12는, 디코더에 의한 R개의 기지의 정적 심볼들 또는 수식들, 및 N개의 수신된 인코딩된 심볼들 또는 수식들을 이용하여 해결될 변수들의 세트의 행렬 표현을 도시한다. 디코더의 작업은 이 도면에 제시된 선형 수식들의 시스템을 해결하는 것이다. 통상적으로, 심볼들/수식들은, 디코더에 의해 액세스가능한 메모리 또는 저장부에 저장된 값들로 표현되고, 아래에서 설명되는 행렬 연산들은 디코더에 의해 실행가능한 명령들에 의해 구현된다.
도 12에 도시된 행렬은 L=K+R개의 열들 및 N+R개의 행들을 포함한다. LT 부분행렬은 LT 인코딩 프로세스(251)에 의해 결정된 L개의 중간 심볼들의 L-P개의 LT심볼들과 N개의 인코딩된 심볼들 사이의 관계들을 표현한다. PI 부분행렬은 PI 인코딩 프로세스(241)에 의해 결정된 L개의 중간 심볼들의 P개의 PI 심볼들과 N개의 인코딩된 심볼들 사이의 관계들을 표현한다. 수식 1의 행렬 SE는 정적 인코더(210)에 의해 결정되는 중간 심볼들 사이의 관계들을 표현한다. 디코더는, 코드 구성으로부터, 그리고 수신된 인코딩된 심볼들에 대한 키들에 기초하여 이 관계들을 결정할 수 있다.
도 12의 선형 수식들의 시스템은, 이를 도 13에 도시된 형태로 변환하기 위해 Shokrollahi II에 교시된 OTF 비활성화 방법들을 이용하여 상기 행렬의 행/열 치환들에 의해 해결된다. 도 13은, 하위 삼각 행렬 LO(310), OTF 비활성화들에 대응하는 행렬들(OTFI로 지칭됨)을 포함하는 다수의 열들, 영속적으로 비활성인 중간 심볼들의 세트 또는 이들의 서브세트에 대응하는 행렬(330) PI, 및 행렬 LO를 도출하는 삼각화 프로세스에서 이용되지 않는 인코덩되거나 정적인 심볼들에 대응하는 행렬(340) EL을 포함한다.
도 14는 도 12의 행렬을 도출하는 프로세스를 수행할 수 있는 엘리먼트들을 설명하는 블록도이다. 도 14는, LT 행렬 생성기(347), PI 행렬 생성기(349) 및 정적 행렬 생성기(350)를 포함한다. 키들 Ia, Ib, ...를 수신하면, LT 행렬 생성기는 도 12의 행렬 LT를 생성하는 한편, PI 행렬 생성기(349)는 도 12의 행렬 PI를 생성한다. 이 2개의 행렬들의 연접(concatenation)은 정적 행렬 생성기(350)로 진행되고, 추가적 힌트들로 정적 키들 S_0, S_1, ...을 택할 수 있다. 정적 행렬 생성기의 작업은 행렬 SE의 형성이고, 정적 행렬 생성기의 출력은 도 12에 제공된 전체 행렬이다.
LT 행렬 생성기(347) 및 PI 행렬 생성기(349)의 동작들은 도 15의 LT 인코더(250) 및 PI 인코더(240)의 동작들과 각각 강하게 연결된다. 정적 행렬 생성기(350)의 동작은 정적 인ㅇ코딩에 이용되는 수식 1의 행렬 SE의 재생성이다.
이제, LT 행렬 생성기(347), PI 행렬 생성기(349) 및 정적 행렬 생성기가, 이들이 수행할 수 있는 동작들을 참조하여 더 상세히 설명될 것이다.
도 16은 LT 행렬 생성기(347)에 의해 활용되는 방법의 일 실시예(500)를 도시하는 흐름도이다. 단계(505)에서, LT 행렬 생성기(347)는 포맷 Nx(L-P)의 행렬 LT를 모두 제로들로 초기화한다. 다음으로, 단계(510)에서, 가중치들 WL(0), ..., WL(N-1) 및 리스트들 AL(0), ..., AL(N-1)을 각각 생성하기 위해 키들 Ia, Ib, ...이 이용된다. 리스트들 AL(i) 각각은 범위 0, ..., L-P-1에서 WL(i)개의 정수들 (j(0), ..., j(WL(i)-1))을 포함한다. 단계(515)에서, 이 정수들은 엔트리들 LT(i,j(0)), ..., LT(i,j(WL(i)-1))을 1로 설정하기 위해 이용된다. 앞서 설명된 바와 같이, 행렬 LT는 수신된 심볼들 (D(0), ..., D(N-1))의 항들에서 미지값들 (C(0), ..., C(L-1))에 대한 수식들의 시스템에 기여한다.
이 분야의 당업자들에 의해 인식될 수 있는 바와 같이, 여기서 설명되는 LT 행렬 생성기의 동작은 도 6의 LT 인코딩 프로세스(251)의 동작과 유사하다.
도 17은 PI 행렬 생성기(349)에 의해 활용되는 방법의 일 실시예(600)를 도시하는 흐름도이다. 단계(610)에서, PI 행렬 생성기(349)는 포맷 NxP의 행렬 PI를 모두 제로들로 초기화한다. 다음으로, 단계(615)에서, 가중치들 WP(0), ..., WP(N-1) 및 리스트들 ALP(0), ..., ALP(N-1)을 각각 생성하기 위해 키들 Ia, Ib, ...이 이용된다. 리스트들 ALP(i) 각각은 범위 0, ..., P-1에서 WP(i)개의 정수들 (j(0), ..., j(WP(i)-1))을 포함한다. 단계(620)에서, 이 정수들은 엔트리들 PI(i,j(0)), ..., PI(i,j(WP(i)-1))을 1로 설정하기 위해 이용된다. PI 행렬 생성기의 동작은 도 5의 PI 인코딩 프로세스(241)의 동작과 유사하다.
앞서 설명된 바와 같이, 행렬들 LT 및 PI는 수신된 심볼들 (D(0), ..., D(N-1))의 항들에서 미지값들 (C(0), ..., C(L-1))의 수식들의 시스템에 기여한다. 그 이유는: 일단 LT 인코더가 가중치 WL(i) 및 연관 리스트 AL(i)=(j(0), ..., j(WL(i)-1))을 선택하고, PI 인코더가 가중치 WP(i) 및 연관 리스트 ALP(i)=(t(0), ..., t(WP(i)-1))을 선택하면, 대응하는 인코딩된 심볼 D(i)가 아래에 제시된 바와 같이 획득되기 때문이다. 0과 N-1 사이의 i의 모든 값들에 대해 누적되는 이 수식들은 수식 2에 표현된 수식들의 원하는 시스템을 도출한다.
Figure 112012022182002-pct00012
(수식 2)
가중치 WL은 도 7에서 제공된 것과 유사한 절차를 이용하여 계산될 수 있다. 이 분야의 당업자가 본 명세서를 검토하면, 각각 상이한 정도 분포로 동작하는 2개보다 많은 인코더들에 이를 확장하는 방법을 이해할 것이다.
행렬 생성기의 약간 상이한 흐름도가 도 18에 제공된다. 도 18은 LT 행렬 생성기(710), 정적 행렬 생성기(715) 및 PI 행렬 생성기(720)를 포함한다. 키들 Ia, Ib, ...를 수신하면, LT 행렬 생성기(710)는 도 15에 도시된 행렬 LT를 생성하는 한편, 정적 행렬 생성기(715)는 도 15에 도시된 행렬 SE를 생성하고, 추가적 정적 키들 S_0, S_1, ...을 자신의 추가적 입력으로 택할 수 있다. 이 2개의 행렬들의 연접은 행렬 PI를 생성하는 PI 행렬 생성기(720)로 진행된다. LT 행렬 생성기(710)의 동작은 도 16에 상세히 설명된 LT 행렬 생성기(347)의 동작과 정확히 동일할 수 있다. 정적 행렬 생성기(715)의 동작은 도 14의 정적 행렬 생성기(350)의 동작과 상이할 수 있다. 구체적으로, 도 19는 이러한 동작의 예시적 실시예를 상세히 설명한다.
단계(725)에서, 행렬 SE가 0으로 초기화된다. 단계(730)에서, LDPC 심볼들의 수와 동일한 입력 변수 S가 이 프로세스에 제공되고, i = j mod S, 또는 i = (1+floor(j/S)) + j mod S, 또는 i = 2*(1+floor(j/S))+j mod S가 되도록, SE(i,j)의 값들이 1로 설정된다. 단계(735)에서, 도 9의 단위 행렬에 대응하는 위치들은 1로 설정된다. 단계(740)에서, 행렬 T에 대응하는 위치들이 이 단계에 대한 추가적 입력으로서 제공된다. 이 행렬은 다수의 유한 필드들 내의 엔트리들을 가질 수 있고, 상이한 애플리케이션들에 대해 상이할 수 있다. 이것은 코드에 대해 요구되는 요건들에 기초하여 선택될 수 있다.
도 20은 PI 행렬 생성기(720)에 의해 활용되는 방법의 일 실시예를 도시하는 단순화된 흐름도이다. 단계(745)에서, PI 행렬 생성기(349)는 포맷 (N+R)xP의 행렬 PI를 모두 제로들로 초기화한다. 다음으로, 단계(750)에서, 가중치들 WP(0), ..., WP(N-1) 및 리스트들 ALP(0), ..., ALP(N-1)을 각각 생성하기 위해 키들 I_a, I_b, ...가 이용된다. 리스트들 ALP(i) 각각은 범위 0, ..., P-1에서 WP(i)개의 정수들 (j(0), ..., j(WP(i)-1))을 포함한다. 단계(755)에서, 이 정수들은 엔트리들 PI(i,j(0)), ..., PI(i,j(WP(i)-1))을 1로 설정하기 위해 이용된다. 도 20의 PI 행렬 생성기의 동작은, 이 행렬 생성기가 R개의 더 많은 행들을 갖는 행렬을 생성하고 도 15의 행렬과 강하게 연결된다는 점을 제외하고 도 17의 PI 행렬 생성기의 동작과 유사하다.
도 12 또는 도 15의 수식들의 시스템은 통상적으로 밀도가 희박하여(sparse), 즉, 관련된 행렬들의 넌제로 엔트리들의 수는 통상적으로, 가능한 엔트리들의 1/2보다 훨씬 작다. 이러한 경우, 행렬들은 직접 저장될 필요가 없을 수도 있지만, 이 행렬들의 모든 개별적 엔트리를 재생성하는 것을 돕는 표시가 저장될 수 있다. 예를 들어, 행렬들 LT 또는 PI의 행들 중 모든 행의 경우, 프로세스는, 도 5 및 도 6에서 계산된 바와 같이 이웃들의 가중치 및 리스트를 저장하기를 원할 수 있다. 다른 방법들이 또한 가능하고, 이들 중 대부분은 본 명세서에서 또는 본 명세서에 참조로 통합된 개시들에서 설명되어 있다.
일단 행렬 생성기가 도 12 또는 도 15에 의해 제공된 행태의 수식들의 시스템을 생성하면, 디코더의 작업은 미지의 값들 C(0), ..., C(L-1)에 대해 이 시스템을 해결하는 것이다. 이 목적을 해결하기 위해, 가우시안 제거, 또는 Luby I, Luby II, Shokrollahi I, II, III, IV, 또는 V에서 설명된 방법들 중 임의의 방법을 포함하는 다수의 상이한 방법들이 적용될 수 있지만, 이에 한정되는 것은 아니다.
이제, 도 12 또는 도 15의 수식들의 시스템을 해결하기 위한 가능한 방법이 도 21 내지 도 26을 참조하여 개략적으로 설명된다. 본 발명의 실시예들 중 일부에 따른 디코더의 동작의 흐름도가 도 21에 제공된다. 단계(1305)에서, 전술된 방법들 중 일부를 이용하여 디코딩 행렬이 생성된다. 단계(1310)에서, 행 및 열 치환들을 이용하여 이 행렬이 재배열된다. 전술된 바와 같이, 이러한 행렬은 행 및 열 치환들을 적용함으로써 도 12 또는 도 15의 행렬들 중 하나로부터 획득될 수 있다. 이를 달성하기 위해, Shokrollahi II의 온더플라이 비활성화 디코딩과 함께 연쇄 반응 디코딩이 이용될 수 있다. 도 22의 수식이 충족되도록, 세트 {0, 1, ..., L-1}에 대한 파이(pi) 연산 및 세트 {0, 1, ..., N+R-1}에 대한 타우(tau) 연산이 존재한다.
여기서, w는 도 13의 행렬 LO의 행들 및 열들의 수, 즉, 영속적으로 비활성되지 않고 OTF 비활성화되지 않은 중간 심볼들의 수를 나타낸다. 단계(1315)에서, 행렬 LO 중 대각 아래의 모든 엔트리들을 제로 아웃(zero out)시키기 위해 도 13의 행렬 LO가 이용된다. 이 때, 도 23의 수식의 우측에 있는 심볼들의 세트는 동일한 동작들을 준수할 필요가 있어서, D(tau(i)) 중 일부의 XOR들에 의해 수식들의 시스템의 새로운 우변이 획득된다.
도 24에 도시된 바와 같이, 이 동작 이후, 행렬(810)은 단위 행렬이 되고, 840의 행렬 EL은 변경되지 않을 것이고, 디코딩 프로세스가 행렬 LO를 단위 행렬로 감소시키기 위해 필요한 연산들에 따라 이 행렬들의 행들을 함께 XOR할 필요가 있기 때문에, 행렬들 OTFI 및 PI는 820에서의 OTFI-2 및 830에서의 PI-2로 변경될 것이다.
디코딩 프로세스의 다음 단계는 단계(1320)일 수 있고, 여기서, 도 25에 표시된 형태의 행렬을 획득하기 위해 LO 아래의 나머지 행렬의 나머지가 제거된다. 이 단계 이후, 원래의 심볼들 D(0), ..., D(N+R-1)의 치환되고 감소된 값들을, E(0), ..., E(N+R-1), 행렬 EL_2의 행들의 수 u, 및 EL_2의 열들의 수 g로 나타내면, 도 25의 행렬의 구조는 수식 3에 따라 C(pi(L-g)), ..., C(pi(L-1))의 값에 대한 u개의 선형 수식들의 더 작은 시스템이 된다.
Figure 112012022182002-pct00013
수식 3
도 21에서 설명된 것과 같은 디코딩 프로세스는, 예를 들어, 가우시안 제거 프로세스, 또는 연쇄 반응 코딩과 가우시안 제거의 조합을 이용함으로써, 또는 비활성화 디코딩의 다른 애플리케이션, 또는 다른 수단에 의하는 것과 같은 다양한 수단에 의해 단계(1330)에서 수식들의 이러한 시스템을 해결할 수 있다. 행렬 EL이, 예를 들어, Shokrollahi IV에서 교시된 것과 같은 다수의 필드들에 속하는 엘리먼트를 가지면, GF(2)의 계산들을 GF(256)과 같은 더 큰 필드들의 계산들로부터 분리시키도록, 가우시안 제거는 변형될 수 있다.
수식 3의 수식들의 시스템이, 디코더에 의해 활용되는 프로세스들을 이용하여 해결될 수 없으면, 디코더는 단계(1335)에서 대책들을 적용할 수 있다. 이러한 대책들은, 에러를 플래그하고(flagging) 프로세스를 중지하는 것을 포함할 수 있거나, 또는 더 많은 인코딩된 심볼들을 요청하는 것을 포함할 수 있거나, 또는 프로세스를 중지하고, 지금까지 복원할 수 있었던 소스 심볼들 또는 중간 심볼들의 리스트를 디코더를 이용하여 애플리케이션으로 다시 제공하는 것을 포함할 수 있다. 시스템이 해결될 수 있으면, 디코더는 비활성화된 중간 심볼들 C(pi(L-g)), ..., C(pi(L-1))의 값들을 복원할 수 있다. 몇몇 변형들에서, 비활성화된 중간 심볼들 이외의 몇몇 다른 중간 심볼들이 단계(1330)에서 복원되는 것이 가능할 수 있다.
일단 이 심볼들의 값들이 복원되면, 디코더는, 후방 대입(back substitution)을 수반하는 단계(1340)로 진행한다. C(pi(L-g)), ..., C(pi(L-1))의 값들을 복원하는 것은 도 26에 제공된 유형의 수식들의 시스템을 도출한다. 이 시스템은 일반적 시스템보다 해결하기 용이하다. 예를 들어, 디코더는 이를 위해 도 23에 표시된 프로세스를 이용할 수 있다. 도 23의 우변에서 제 1 벡터를 획득하는 프로세스는, 기지의 심볼들의 값들을 수식들의 시스템들에 대입하는 프로세스이기 때문에 후방 대입으로 지칭될 수 있다. 본 명세서를 판독한 후 이 분야의 당업자에 의해 인식될 수 있는 바와 같이, 도 23 및 도 26에 제공된 시스템들은 수학적으로 등가이다.
도 23에서, 디코더는, 우변의 행렬의 엔트리들이, 행렬 곱의 규칙들을 이용하여 벡터 C(pi(L-g)), ..., C(pi(L-1))에 대해 이미 해결된 엔트리들과 곱해지는 프로세스를 구현하고, 획득된 엔트리들을 E(0), ..., E(L-g-1)과 XOR함으로써, 미지의 값들 C(pi(0)), ..., C(pi(L-g-1))을 획득한다. 이 획득된 엔트리들을 E(0), ..., E(L-g-1)과 XOR하고, 따라서 C(pi(0)), ..., C(pi(L-g-1))의 값들을 복원하는 프로세스는 도 21의 디코더의 단계(1345)를 포함한다.
몇몇 애플리케이션들에서는 유용하지만, 이 방법은, 도 23의 우변의 행렬이 통상적으로 밀도가 희박하지 않고, 따라서, 엘리먼트들 C(pi(j)) 중 하나를 획득하기 위해, g에 비례하는 다수의 XOR들이 수행되어야 하기 때문에, 몇몇 바람직한 실시예들에서 큰 계산 오버헤드를 유발시킬 수 있다. 몇몇 실시예들에서, 예를 들어, 영속적 비활성화들의 수 P는 그로부터 시작하도록 크게 선택되었고 g가 적어도 P만큼 클 수 있기 때문에, 이 수는 클 수 있다. 이것은, P의 값, 영속적으로 비활성화된 심볼들의 수에 심각한 제한들을 가할 수 있고, 더 작은 값의 P가 사용되면, 이것은, OTF 비활성화된 중간 심볼들의 수에서의 증가를 초래할 수 있다.
도 27은, 도 21에서 설명된 프로세스보다 더 계산 효율적일 수 있는 변형된 디코딩 프로세스를 설명한다. 이 프로세스의 단계들(1405 내지 1435)은 도 14의 프로세스의 대응하는 단계들과 동일할 수 있다. 선택적으로, 이 프로세스는, 장래의 사용을 위해, 원래의 심볼들 D(0), ..., D(N+R-1)뿐만 아니라 도 12 또는 도 15의 원래의 행렬의 카피 또는 이 행렬의 관련 부분들을 추가적 메모리 위치에 유지할 수 있다. 이것은, 이 프로세스의 동작에 필수적인 것은 아니지만, 애플리케이션이 이 카피들을 유지하기에 충분한 메모리 자원들을 가지면, 추가적 속도 이점들을 도출할 수 있다. 대안적으로, 이 프로세스는 행렬이 아닌 단지 원래의 심볼들 D(0), ..., D(N+R-1)의 카피를 유지할 수 있고, 행렬이 요구될 때 행렬을 재생성할 수 있다. 단계(1440)는, 도 22의 수식들의 원래의 시스템 또는 도 28에 제공된 이 시스템의 상단부만을 다시 획득하기 위해 행렬의 저장된 카피를 이용하거나 단계(1415)에서의 프로세스를 취소(undo)한다. 이 때, 도 29에 제공된 행렬(1510)은 밀도가 희박하고, 값들 C(pi(w)), ..., C(pi(L-1))은 기지이고, 여기서 w=L-g이다.
주지된 바와 같이, 도 29의 수식의 우변은 심볼들의 적은 수의 XOR들, 즉, 행렬 OTFI의 넌제로 엔트리들의 수와 행렬 PI의 넌제로 엔트리들의 수와의 합과 동일한 수와 관련된 계산 효율적 프로세스를 통해 계산될 수 있다. 프로세스의 이 단계는 도 27의 1445로 표시되어 있다. 이 단계가 완료된 후, 도 29의 수식의 우변이 계산되고, 수식들의 시스템이 해결될 것이고, 여기서 미지의 값들은 C(pi(0)), ..., C(pi(w-1))의 값들이다. 우변의 하위 삼각 LO가 밀도가 희박하기 때문에, 즉, 수식들의 이 시스템을 해결하기 위한 심볼들의 XOR들의 수가 행렬 LO의 넌제로 엔트리들의 수와 동일하고, 이 수는 통상적으로, 가능한 넌제로 엔트리들의 최대수인 w*w보다 훨씬 작기 때문에, 이 시스템은 연쇄 반응 디코딩을 이용하여 단계(1450)에서 해결될 수 있다.
영속적 비활성화들의 수의 선택
영속적 비활성화들의 수의 선택은 전반적 성능에 영향을 줄 수 있어서 중요할 수 있다. 한편, 이 수는 가능한 크게 선택될 필요가 있어서: 이 수가 크면, OTF 비활성화들의 수는 매우 작은 수까지, 때로는 심지어 제로까지 감소될 수 있다. 이것은, 도 15의 LT 및 SE 행렬(또는 도 23의 이들의 대응하는 변형들)의 결합이 효율적으로, 큰 오버헤드를 갖는 연쇄 반응 코드의 디코딩 행렬이 되기 때문이다. 이 사실은 OTF 비활성화들의 수를 매우 작게 한다. 특정한 실시예들에서, OTF 비활성화는 관리하기 더 어려울 수 있기 있어서, 이들의 수를 감소시키는 것이 속도 및/또는 메모리의 관점에서 이점들을 도출할 수 있다.
한편, 영속적 비활성화들의 수를 증가시키는 것은 실행 시간에 악영향을 줄 수 있는데: 예를 들어, 도 21의 디코딩 프로세스에서의 단계(1330) 및 도 27의 프로세스에서의 대응하는 단계(1430)는 적어도 P개의 행들 및 열들을 갖는 수식들의 시스템을 해결하도록 요구한다. 이를 위한 하나의 방법은, 도 25의 행렬 EL-2의 반전가능한 부분행렬을 식별하고, 그 행렬을 반전시키고, 반전된 행렬을 이용하여, 중간 심볼들 C(pi(L-g-1)), ..., C(pi(L-1))의 값들을 획득하는 것이다. 다수의 실시예들에서, 행렬 EL-2는 밀도가 희박하지 않을 수도 있기 때문에, 중간 심볼들의 값들을 획득하는 것은 심볼들의 g 곱하기 g개 정도의 XOR들을 초래할 수 있다. g는 적어도 P이기 때문에, 심볼들의 XOR들의 수는 적어도 P 곱하기 P개일 수 있고, 따라서, 심볼들의 XOR들의 전체 수가 K에서 선형으로 유지되려면, 수 P를 K의 제곱근에 비례하도록 설정하는 것이 양호한 선택이다. 부록 A의 특정한 실시예는 P를 2.5*sqrt(K) 정도로 선택하고, 이 규칙을 준주한다. 이것은 P에 대해 양호한 선택이고, 이러한 P의 선택에 의해, 통상적으로 OTF 비활성들의 수는 매우 작아져서, 대략 P로부터 제로까지 또는 거의 제로까지 변한다.
관심있는 다른 양은, 인코딩된 심볼에 대해 또는 정적 심볼에 대해 존재하는, 비활성화된 중간 심볼 이웃들의 평균 수 I이다. 도 27의 디코딩 프로세스의 단계(1445)는, 이 단계를 달성하기 위해, 복원되지 않은 중간 심볼들 당 평균적으로 심볼들의 I개만큼 많은 XOR들을 요구할 수 있다. I가 크면, 이러한 XOR들의 수는, 프로세스들의 계산 자원들 및 메모리가 디코딩 또는 인코딩 프로세스를 실행하지 못할 정도로 많아질 수 있다. 한편, I가 너무 작으면, 도 25의 행렬 EL-2는 완전한 랭크(rank)를 갖지 못할 수 있고, 디코딩가능성이 위협될 수 있다.
더 상세한 분석을 통해, 영속적 비활성화의 중요한 양상은 도 15의 행렬 PI를, 열들이 서로에 대해 선형으로 독립적이도록, 즉, 행렬이 가능한한 완전한 랭크가 되도록 동작하게 한다는 것을 밝혀냈다. PI가 랜덤 바이너리 행렬이면, 가능한 제한들까지의 완전한 랭크가 달성될 수 있다는 것은 이 분야의 당업자들에게 주지되어 있다. 한편, PI는 평균적으로 각각의 열에, K의 제곱근에 반비례하는, 1들의 부분(a fraction of ones)을 가질 수 있고, 순수한 랜덤 행렬의 특성과 동일한 랭크 특성들을 여전히 충족시킬 수 있다. 이 때문에, 부록 A의 특정한 실시예는 I를 2와 3 사이의 수로 선택하고, 따라서, K의 제곱근에 비례하는 이러한 P의 선택에 의해, PI의 각각의 열의 1들의 수는 평균적으로 K의 제곱근에 반비례한다.
이 분야의 당업자가 본 명세서를 판독하면 인식하게 되는 바와 같이, 이 방법들의 다수의 변형들이 존재한다. 예를 들어, XOR은, 예를 들어, 더 큰 유한 필드들에 걸친 선형 연산자들과 같은 다른 연산자들로 대체될 수 있거나, 또는 연산자들은, 연산들의 일부에 대해서는 더 큰 유한 필드들에 걸친 몇몇 선형 연산자들 및 연산들의 다른 연산들에 대해서는 더 작은 큰 유한 필드들에 걸친 다른 선형 연산자들과 같은 상이한 연산자들의 혼합일 수 있다.
부록 A를 참조한 특정한 예
앞서 상세히 설명된 바와 같이, 영속적 비활성들(즉, 어떤 인코딩된 심볼들이, 연쇄 반응 디코딩을 위한 시퀀스를 결정하는 것의 일부일 수 있는 행렬 조작의 일부가 아닌 것에 관한 미리 결정된 판정들)이 없으면, OTF 비활성들의 수는 매우 랜덤일 수 있고, 메모리 소모의 관점에서 잠재적 문제들을 유발시킬 수 있다. 소스 심볼들의 수가 매우 크로 오버헤드가 매우 작은 경우, 에러 확률은 수용할 수 없을 정도로 1에 근접할 수 있다.
작은 오버헤드들에 대한 높은 에러 확률 때문에, 소스 심볼들의 수가 큰 경우 양호한 시스터메틱 정보를 발견하는 것은 매우 곤란해질 수 있다. 여기서, 시스터메틱 정보는, Shokrollahi III의 관점에서 시스터메틱 코드를 구성할 수 있기 위해 인코더 및 디코더에 제공할 필요가 있는 정보를 지칭한다. 또한, 시스터메틱 정보가 획득되는 경우에는 항상, "평균"적으로 코드가 제로 오버헤드에서 실패할 것이기 때문에, 코드의 동작은 코드의 평균 동작과 매우 다를 것이 예상될 것이다.
연속적 비활성화에 의한 연쇄 반응 코드의 구성을 위한 파라미터들 중 일부는 도 4의 LT 인코더(250)에 이용되는 정도 분포 Ω, PI 인코더(240)에 대한 파라미터들, 영속적으로 비활성화되는 심볼의 수의 결정, 리던던트 정적 심볼들의 수 및 이들의 구조의 결정 및 난수들이 생성되고 도 1의 인코더(115)와 디코더(155) 사이에서 공유될 수 있는 특정한 방법을 포함할 수 있다.
RQ 코드를 이용하는 인코더들 및 디코더들
본 명세서에서 설명된 방법들을 이용하는, 이하 "RQ 코드"로 지칭되는 코드의 바람직한 실시예가 부록 A의 섹션 5에 상세히 특정되어 있다. 부록 A의 나머지는 브로드캐스트 또는 멀티캐스트 네트워크들을 통해 객체들의 신뢰할 수 있는 전달에 RQ 코드를 적용하는 하나의 방법을 설명한다.
RQ 코드는, 시스터메틱 코드를 구현하기 위해 이전 및 이후에 설명되는 방법들을 이용하고, 이것은, 모든 소스 심볼들이, 생성될 수 있는 인코딩된 심볼들 중에 있고, 따라서, 인코딩된 심볼들은 인코더에 의해 생성된 복구 심볼들 및 원래의 소스 심볼들의 조합으로 고려될 수 있음을 의미한다.
이전의 코드들 중 일부는 양호한 특성들을 갖지만, 이들의 실용적 적용을 증가시킬 몇몇 개선들이 존재한다. 중요한 2개의 잠재적 개선들은 소스 블록 당 지원되는 소스 심볼들의 더 큰 수 및 더 급격한 오버헤드 실패 곡선이다. 오버헤드는, 수신된 인코딩된 심볼들의 수와 소스 블록에서 소스 심볼들의 수 사이의 차이고, 예를 들어, 2의 오버헤드는, K개의 소스 심볼들을 갖는 소스 블록을 디코딩하기 위해 K+2개의 인코딩된 심볼들이 수신된다는 것을 의미한다. 소정의 오버헤드에서 실패 확률은, 수신된 인코딩된 심볼들의 수가 그 오버헤드에 대응할 때 디코더가 소스 블록을 완전하게 복원하는 것을 실패할 확률이다. 오버헤드 실패 곡선은, 오버헤드 제로에서 시작하여, 실패 확률이 증가하는 오버헤드의 함수로서 어떻게 감소되는지에 대한 플롯이다. 오버헤드 실패 곡선은, 디코더의 실패 확률이 오버헤드의 함수로서 빠르게 또는 더 급격하게 감소하면 더 양호한 것이다.
랜덤 바이너리 코드는, 실패 확률이, 동작불가능한 계산 복잡도로 각각의 추가적 오버헤드 심볼에 대해 필수적으로 2의 인자만큼 감소하는 오버헤드 실패 확률 곡선을 갖지만, 현재의 논의의 요지는 오버헤드 실패 확률 곡선으로 한정되고 계산 복잡도가 아니다. 몇몇 애플리케이션들의 경우, 이것은 충분한 오버헤드 실패 곡선이지만, 몇몇 다른 애플리케이션들의 경우, 더 급격한 오버헤드 실패 곡선이 바람직하다. 예를 들어, 스트리밍 애플리케이션에서, 소스 블록의 소스 심볼들의 수의 범위는, 예를 들어, K=40, K=200, K=1,000, K=10,000과 같이 넓을 수 있다. 양호한 스트리밍 경험을 제공하기 위해, 실패 확률은, 예를 들어, 10-5 또는 10-6의 실패 확률과 같이 낮을 것이 요구될 수 있다. 대역폭은 스트리밍 애플리케이션에 대해 종종 최상이기 때문에, 소스 심볼들의 일부로서 전송된 복구 심볼들의 퍼센티지는 최소화되어야 한다. 예를 들어, 스트림이 전송되는 네트워크가 K=200인 소스 블록들을 사용할 때 10%까지의 패킷 손실에 대해 보호되어야 하고, 실패 확률이 최대 10-6으로 요구되는 것으로 가정한다. 랜덤 바이너리 코드는 10-6의 실패 확률을 달성하기 위해 적어도 20의 오버헤드를 요구하며, 즉, 수신기는 이 실패 확률로 디코딩할 220개의 인코딩된 심볼들을 요구한다. ceil(220/1-0.1))=245 이기 때문에, 이 요건들을 충족시키기 위해 각각의 소스 블록에 대해 총 245개의 인코딩된 심볼들이 전송될 것이 요구된다. 따라서, 복구 심볼들은 스트림에 대한 대역폭 요건들에 초과적인 22.5%를 추가한다.
본 명세서 및 부록 A의 섹션 5에서 설명되는 RQ 코드는, K'의 모든 지원되는 값들에 대해 K=K'의 값들의 경우, 및 K의 마지막으로 지원되는 값을 제외한 모든 값에 대해 K=1 및 K=K'+1의 값들의 경우, 각각 오버헤드들 0, 1 및 2에 대해 10-2, 10-4 및 10-6보다 작은 실패 확률을 달성한다. 테스트들은, 예를 들어, 10%, 20%, 50%, 70%, 90% 및 95%의 손실 확률들과 같은 다양한 손실 확률들에 대해 수행되었다.
RQ 코드를 이용한 상기 예의 경우, 10-6의 실패 확률을 달성하기 위해 2의 오버헤드가 충분하고, 따라서, ceil(202(1-0.1))=225 이기 때문에, 이 요건들을 충족시키기 위해 각각의 소스 블록에 대해 오직 총 225개의 인코딩된 심볼들이 전송될 필요가 있다. 이 경우, 복구 심볼들은 스트림에 대한 대역폭 요건들에 초과의 12.5%, 즉, 랜덤 바이너리 코드에 의해 요구되는 것보다 10% 적은 대역폭 오버헤드를 추가시킨다. 따라서, RQ 코드로 개선된 오버헤드 실패 곡선은 어느 정도의 매우 긍정적인 실용적 결과들을 갖는다.
소스 블록 당 많은 수의 소스 심볼들에 대한 지원이 바람직한 애플리케이션들이 존재한다. 예를 들어, 모바일 파일 브로드캐스트 애플리케이션에서, 네트워크 효율의 관점에서, 파일을 단일한 소스 블록으로 인코딩하는 것, 또는 더 일반적으로, 파일을 소수의 소스 블록들로 파티셔닝하는 것(실용적임)이 바람직하다. 예를 들어, 500만 바이트의 파일이 브로드캐스트되고, 인코딩된 심볼을 반송(carry)하기 위해 각각의 패킷 내의 이용가능한 사이즈가 1,000 바이트인 것으로 가정한다. 이 파일을 단일 소스 블록으로 인코딩하는 것은, K=50,000의 값이 지원되어야 하는 것을 요구한다. (실질적으로 적은 메모리를 이용하여 디코딩하는 것을 허용하는, 전술한 서브-블록킹 기술들이 존재함을 유의한다).
코드에 대해 지원되는 소스 심볼들의 수가 제한될 수도 있는 몇몇 이유가 존재한다. 하나의 통상적인 이유는, 리드-솔로몬 코드들에서와 같이, K가 증가함에 따라 계산 복잡도가 불합리하게 되는 것이지만, 연쇄 반응 코드들과 같은 코드들의 경우는 아니다. 다른 이유는, K가 증가함에 따라 제로 오버헤드에서의 실패 확률이 거의 1까지 증가하여, 양호한 시스터메틱 코드 구성을 도출시키는 시스터메틱 인덱스들을 발견하기가 더 곤란해지는 것일 수 있다. 제로 오버헤드에서의 실패 확률은, 양호한 코드 구성을 유도하는 곤란성을 지정하는 것일 수 있는데, 이것은, 결과적 시스터메틱 코드 구성이, 처음 K개의 인코딩된 심볼들이 K개의 소스 심볼들을 디코딩할 수 있는 특성을 갖도록 하는, 시스터메틱 인덱스가 랜덤하게 선택되는 경우의 필수적 확률이기 때문이다.
RQ 코드 설계에 대한 오버헤드 실패 커브는 K의 모든 값들에 대해 매우 급격하기 때문에, 양호한 시스터메틱 인덱스들을 발견하고 따라서 K의 더 큰 값들을 지원하는 것이 쉽게 가능하다. 부록 A의 섹션 5에 설명된 RQ 코드는 56,403개까지의 K의 값들을 지원하고, 또한 소스 블록 당 16,777,216개까지의 인코딩된 심볼들의 총 수를 지원한다. RQ 코드에 대한 지원되는 값들에 대한 이러한 제한들은, RQ 코드 설계의 제한들에 기인하지 않고, 인지되는 애플리케이션 요건들에 기초한 실제 고려사항들에 기인하여 설정되었다. 부록 A에 제시된 것을 넘은 다른 실시예들은 상이한 값들을 가질 수도 있다.
RQ 코드는, 다음과 같이 지원되는 상이한 소스 블록 사이즈들의 수를 제한한다. 인코딩 또는 디코딩될 K개의 소스 심볼들을 갖는 소스 블록의 경우, K' 값은 부록 A의 섹션 5.6에 제시된 표에 기초하여 선택된다. 이 표의 제 1 열은 K'에 대해 가능한 값들을 나열한다. 선택된 K'의 값은 K≤K'가 되게 하는 가능한 값들 중 최소값이다. K개의 소스 블록들 C'(0), ..., C'(K-1)가, 제로들로 설정된 값들을 갖는 K'-K개의 심볼들 C'(K), ..., C'(K'-1)로 패딩되어, K'개의 소스 블록들 C'(0), ..., C'(K'-1)을 포함하는 소스 블록을 생성하고, 다음으로, 인코딩 및 디코딩이 이 패딩된 소스 블록에 대해 수행된다.
전술한 접근방법은, 지원될 필요가 있는 시스터메틱 인덱스들의 수를, 수만개 대신 오직 수백개로 감소시키는 이점을 갖는다. 선택된 K'에 대한 오버헤드 실패 곡선과 동일하기 때문에, K에 대한 오버헤드 실패 확률의 관점에서 단점은 없으며: K의 값이 주어지면, 디코더는 K'의 값을 계산할 수 있고, C'(K), ..., C'(K'-1)의 값들을 제로들로 설정할 수 있고, 따라서, 소스 블록의 K'개의 소스 심볼들 중 나머지 K개만을 디코딩하면 된다. 유일한 잠재적 단점들은, 약간 더 많은 소스 심볼들에 의한 인코딩 및 디코딩을 위해 약간 더 많은 메모리 또는 계산 자원들이 요구될 수도 있다는 점이다. 그러나, K'의 연속적 값들 사이의 간격(spacing)은 K'의 더 큰 값들에 대해 대략 1%이고, 따라서, 잠재적 단점은 무시될 수 있다.
K로부터 K'로의 소스 블록의 패딩 때문에, RQ 코드 내의 인코딩된 심볼들 C'(0), C'(1), ...의 식별자는 ISI로 축약되는 내부 심볼 식별자(Internal Symbol Identifier)로 지칭되고, 여기서, C'(0), ..., C'(K'-1)은 소스 심볼들이고, C'(K'), C'(K'+1), ...은 복구 심볼들이다.
인코더 및 디코더를 활용하는 외부적 애플리케이션들은, ESI로 축약되는 인코딩 심볼 식별자(Encoding Symbol Identifier)로도 지칭되는 인코딩된 심볼 식별자를 이용하고, 이는, 원래의 소스 심볼들 C'(0), ..., C'(K-1)을 식별하기 위해 0부터 K-1까지의 범위이고, 복구 심볼들 C'(K'), C'(K'+1), ...을 식별하기 위해 K, K+1, ...로 계속된다. 따라서, RQ 코드 내에서 ISI X로 식별된 복구 심볼 C'(X)는 ESI X-(K'-K)로 외부적으로 식별된다. 이것은 부록 A의 섹션 5.3.1에 더 상세히 설명되어 있다.
RQ 코드들에 대한 인코딩 및 디코딩은 2가지 유형들의 관계들: 즉, 중간 심볼들 사이의 제한 관계들 및 중간 심볼들과 인코딩된 심볼들 사이의 LT-PI 관계들에 의해 정의된다. 이 제한 관계들은 예를 들어 도 12 또는 도 15에 도시된 것과 같은 SE 행렬에 의해 정의되는 중간 심볼들 사이의 관계들에 대응한다. LT-PI 관계들은 예를 들어 도 12 또는 도 15에 도시된 것과 같은 LT 행렬 및 PI 행렬에 의해 정의되는 중간 심볼들과 인코딩된 심볼들 사이의 관계들에 대응한다.
인코딩은, (1) 소스 심볼 값들; (2) 소스 심볼들과 중간 심볼들 사이의 LT-PI 관계들; 및 (3) 중간 심볼들 사이의 제한 관계들에 기초하여 중간 심볼 값을 결정함으로써 진행한다. 복구 심볼들의 값들은 중간 심볼들과 복구 심볼들 사이의 LT-PI 관계들에 기초한 중간 심볼들로부터 생성될 수 있다.
유사하게, 디코딩은, (1) 수신된 인코딩된 심볼 값들; (2) 수신된 인코딩된 심볼들과 중간 심볼들 사이의 Lt-PI 관계들; 및 (3) 중간 심볼들 사이의 제한 관계들에 기초하여 중간 심볼 값들을 결정함으로써 진행한다. 누락된 소스 심볼들의 값들은 중간 심볼들과 그 누락된 소스 심볼들 사이의 LT-PI 관계들에 기초한 중간 심볼들로부터 생성될 수 있다. 따라서, 인코딩 및 디코딩은 본질적으로 시스터메틱 절차들이다.
예시적인 하드웨어 컴포넌트들
도 30 및 도 31은 전술한 방법들을 구현하기 위해 이용될 수 있는 하드웨어의 블록도들을 도시한다. 각각의 엘리먼트는, 하드웨어, 범용 또는 통상적 목적의 프로세서에 의해 실행되는 프로그램 코드 또는 명령들, 또는 이들의 조합일 수 있다.
도 30은, 하드웨어 모듈들, 소프트웨어 모듈들, 또는 프로그램 저장부(1002)에 저장되고 프로세서(1004)에 의해 실행되는 프로그램 코드의 부분들로 구현될 수 있는 예시적인 인코딩 시스템(1000)을 도시하며, 이들은 도면에 도시된 것과 같이 분리되지 않은 코드의 집합적 유닛인 것이 가능하다. 인코딩 시스템(1000)은 소스 심볼들 및 파라미터 정보를 전달하는 신호 입력을 수신하고, 그 정보를 전달하는 신호를 출력한다.
입력 인터페이스(1006)는 입력되는 소스 심볼들을 소스 심볼 버퍼(1008)에 저장한다. 소스-대-중간 심볼 생성기(1010)는 소스 심볼들로부터 중간 심볼들을 생성한다. 이것은, 몇몇 실시예들에서는 통과형(pass-through)일 수 있고, ("시스터메틱" 실시예와 같은) 다른 실시예들에서는 디코더 모듈일 수 있다.
리던던트 심볼 생성기(1012)는 소스 심볼들로부터 리던던트 심볼들을 생성한다. 이것은, 연쇄 반응 코더, LDPC 코더, HDPC 코더 또는 이와 유사한 것으로 구현될 수 있다. 비활성기(1014)는 소스 심볼들, 중간 심볼들 및/또는 리던던트 심볼들을 수신하고, 그러한 경우, 이들 중 영속적으로 비활성화된 심볼들인 일부를 PI 버퍼(1018)에 저장하고, 나머지들을 출력 인코더(1016)에 제공한다. 이 프로세스는 물리적이기보다는 오직 논리적일 수도 있다.
XOR 연산기와 같은 연산기(1020)는 출력 인코더(1016)로부터의 하나 이상의 인코딩된 심볼들(특정 실시예들에서는 1) 및 PI 버퍼(1018)로부터의 PI 심볼들 중 하나 이상(특정 실시예들에서는 1)에서 동작하고, 이 연산의 결과는, 시스템(1000)으로부터 신호를 출력하는 송신 인터페이스(1030)에 제공된다.
도 31은 하드웨어 모듈들, 소프트웨어 모듈들, 또는 프로그램 저장부(1102)에 저장되고 프로세서(1104)에 의해 실행되는 프로그램 코드의 부분들로 구현될 수 있는 예시적인 디코딩 시스템(1100)을 도시하며, 이들은 도면에 도시된 것과 같이 분리되지 않은 코드의 집합적 유닛인 것이 가능하다. 몇몇 프로세스는 물리적이기보다는 오직 논리적으로 구현될 수도 있다.
디코딩 시스템(1100)은 입력 신호 및 가능하게는 다른 정보를 입력받고, 가능한 경우 소스 데이터를 출력한다. 신호 입력은, 수신된 심볼들을 버퍼(1108)에 저장하는 수신 인터페이스(1106)에 제공된다. 수신된 심볼들의 ESI들은, 특정한 수신된 심볼들에 따라, 본 명세서에서 설명되는 행렬들을 생성하는 행렬 생성기(1110)에 제공되고, 그 결과를 행렬 메모리(1112)에 저장한다.
스케줄러(1114)는 행렬 메모리(1112)로부터 행렬 세부사항들을 판독할 수 있고, 스케줄 메모리(1016)에 저장된 스케줄을 생성한다. 스케줄러(1114)는 또한 완료된 신호를 생성할 수 있고, 완료된 경우 PI 행렬을 PI 해결기(1118)에 전달할 수 있다. PI 해결기(1118)는 해결된 PI 심볼 값들을 해결기(1120)에 제공하고, 해결기(1120)는 또한 수신된 심볼들, 스케줄 및 PI 심볼들로부터 중간 심볼들을 디코딩하기 위해 스케줄을 이용한다.
중간 심볼들은, 인코더 또는 통과형일 수 있는 중간-대-소스 심볼 생성기(1122)에 제공된다. 중간-대-소스 심볼 생성기(1122)의 출력은, 소스 데이터, 또는 어떤 소스 데이터가 출력에 이용될 수 있는지를 출력하는 출력 인터페이스(1124)에 제공된다.
다른 고려사항들
특정한 상황들에서, 향상된 디코딩가능성이 요구될 수 있다. 인코딩된 심볼들이 LT 이웃들 및 PI 이웃들 모두를 갖는, 본 명세서의 다른 곳에서 제공되는 예들에서, LDPC 심볼들은, HDPC 심볼들 사이에 있지 않은 LT 이웃들 또는 PI 이웃들만을 갖는다. 몇몇 예들에서, 디코딩가능성은, LDPC 심볼들이 HDPC 심볼들을 포함하는 PI 이웃들을 또한 갖는 경우 개선된다. 모든 PI 심볼들 중 HDPC 심볼들을 포함하는 이웃들에 의해, LDPC 심볼들의 디코딩 가치(worth)는 인코딩된 심볼들의 가치와 더 유사할 수 있다. 본 명세서의 다른 곳에서 설명되는 바와 같이, LT 심볼들(인코딩 및 디코딩하기에 용이할 수 있음)에 의존하는 심볼들은 HDPC 심볼들(높은 신뢰도의 디코딩을 제공할 수 있음)을 포함하는 PI 심볼들에 또한 의존할 수 있어서, 2개의 이점들 모두가 제공될 수도 있다.
일예에서, 각각의 LDPC 심볼은 2개의 PI 이웃들을 가져서, 즉, LDPC 심볼의 값이 2개의 PI 심볼들의 값들에 의존한다.
몇몇 상황들에서, 복제 인코딩된 심볼들의 발생들을 감소시켜 디코딩가능성이 또한 개선될 수 있는데, 여기서, 2개의 인코딩된 심볼들은, 이들이 정확하게 동일한 전체 이웃 세트를 갖는 경우 복제들이고, 여기서, 인코딩된 심볼에 대한 전체 이웃 세트는 LT 이웃 세트 및 PI 이웃 세트로 이루어진다. 동일한 전체 이웃 세트를 갖는 복제 인코딩된 심볼들은, 이들을 생성한 중간 소스 블록에 대해 정확하게 동일한 정보를 반송하고, 따라서, 하나보다 많은 복제 인코딩된 심볼들을 수신하는 것으로부터 디코딩하는 기회는 복제 인코딩된 심볼들 중 하나를 수신하는 것으로부터 디코딩하는 것과 거의 유사하여, 즉, 하나보다 많은 복제 심볼의 수신이 수신 오버헤드에 추가되고, 복제들 중 디코딩된 심볼들의 오직 하나만 디코딩이 이용된다.
바람직한 특성은, 각각의 수신된 인코딩된 심볼이 임의의 다른 수신된 인코딩된 심볼의 복제가 아닌 것인데, 이것은, 각각의 수신된 인코딩된 심볼이 디코딩에 유용할 수 있음을 의미하기 때문이다. 따라서, 이러한 복제들의 수를 감소시키거나 복제들의 발생의 확률을 감소시키는 것이 바람직할 수도 있다.
하나의 접근방법은 각각의 인코딩된 심볼이 가질 수 있는 LT 이웃들의 수를 제한하는 것이다. 예를 들어, W개의 가능한 이웃들이 존재하면, 이웃들의 최대수는 W-2로 제한될 수 있다. 몇몇 경우, 이것은, 전체 이웃 세트들이 복제될 기회를 감소시키고, 이것은, 모든 W개의 가능한 이웃들을 포함하는 이웃 세트가 허용되지 않을 것이기 때문이다. 제한이 Deg[v]=min(d, W-2)인 경우, 정도 W-2의 W*(W-1)/2개의 상이한 이웃 세트들이 존재한다. 따라서, 인코딩된 심볼들에 대해 복제된 전체 이웃 세트들이 생성될 가능성은 작을 수 있다. Wg=2 이외의 몇몇 Wg에 대한 min(d, W-Wg)와 같은 다른 제한들, 또는 몇몇 다른 제한이 대신 이용될 수 있다.
단독으로 또는 상기 복제 감소 기술과 함께 이용될 수 있는 다른 기술은, 각각의 인코딩된 심볼에 대해 하나보다 많은 PI 이웃을 선택하여, 인코딩된 심볼들에 대해 복제 PI 이웃들이 존재할 가능성을 낮게 하고, 따라서, 인코딩된 심볼들에 대해 복제된 전체 이웃 세트가 생성될 가능성을 낮게 하는 것이다. PI 이웃들은, 예를 들어, 하기 코드 스니핏(snippet)에 따라 부록 A의 섹션 5.3.5.4에 제시된 (d1, a1, b1)을 먼저 생성함으로써, LT 이웃들이 생성되는 것과 유사한 방식들로 생성될 수 있다:
Figure 112012022182002-pct00014
이 예에서, PI 이웃들 d1의 수에 대해 정의된 무시할 수 없는(non-trivial) 랜덤 정도 분포가 존재하고, 분포는 LT 이웃들의 선택된 수 d에 의존하고, PI 이웃들의 수는 LT 이웃들의 수가 더 작은 경우 더 커질 가능성이 있음을 유의한다. 이것은, 인코딩된 심볼의 전체 정도가, 복제된 인코딩된 심볼들이 생성되어 수신될 가능성을 감소하게 하는 특성을 제공한다.
인코딩된 심볼 값은 부록 A의 섹션 5.3.5.3에 제시되고 하기 코드 스니핏에 의해 제시되는 (d1, a1, b1)에 의해 정의되는 이웃들을 이용하여 생성될 수 있다:
Figure 112012022182002-pct00015
이 디코딩가능성 특징들을 지원하기 위해 또는 디코딩가능성을 개별적으로 제공하기 위해, 부록 A의 섹션 5.6의 표 2에 제시된 것과 같이, K'의 값들에 대해 상이한 시스터메틱 인덱스 J(K')가 이용될 수 있다.
시스터메틱 인덱스 J(K')를 생성하기 위한 송신 및/또는 수신 시스템에서 수행될 수 있는 프로세스의 예는 다음과 같이 예시된다. 가능한 K'의 리스트의 각각의 K'에 대해, 통상적으로 적절하게 프로그래밍된 회로 또는 프로세서에 의해 수행될 수 있는 하나의 프로세스는 적합성을 위해 인덱스들의 수를 체크하는 것이다. 예를 들어, 회로/프로세서는, J=1 ... 1000 [또는 몇몇 다른 제한]에 대해, 가능한 시스터메틱 인덱스 J에 관하여 하기 기준이 충족되는지 여부를 체크할 수 있다:
(a) K'개의 소스 심볼들로부터 제로 오버헤드에서 디코딩이 가능한가?
예 이면, 온더플라이 비활성화들의 수를 기록함
(b) 처음 K'/0.06개의 가능한 인코딩된 심볼들 중 복제된 전체 이웃 세트들(ESI들 0, ..., K'/0.06을 가짐)이 존재하는가? [다른 임계치들이 대신 사용될 수도 있음]
(c) 다른 인코딩된 심볼들에 대해 각각 독립적인 실행에서, 각각의 인코딩된 심볼이 확률 0.93[또는 몇몇 다른 임계치]으로 손실되는 경우, 10,000개의 실행들[또는 몇몇 다른 테스트] 내에서 처음 K'개의 수신된 인코딩된 심볼들을 이용하여 디코딩할 때 디코딩 실패 확률이 0.007[또는 몇몇 다른 임계치] 미만인가?
다음으로, 회로/프로세서는, 가능한 시스터메틱 인덱스들 중에서 상기 (a), (b) 및 (c) 기준을 충족시키는 J를 선택하고, 단계 (a)에서 온더플라이 비활성화들의 평균 수를 기록한 시스터메틱 인덱스를 선택한다.
상기 선택 기준의 다수의 변형들이 존재함을 유의한다. 예를 들어, 몇몇 경우들에서, 상기 (a), (b) 및 (c)를 충족시키고, 특정한 수의 실행들 내에서 단계 (c)에서의 디코딩 실패들의 최소수를 도출시키는 시스터메틱 인덱스를 선택하는 것이 바람직할 수 있다. 다른 예로, 온더플라이 비활성화들의 수 및 디코딩 실패 확률의 조합은 시스터메틱 인덱스를 선택하는 경우에 고려될 수 있다. 다른 예로, 각각의 K' 값에 대한 다수의 시스터메틱 인덱스가 이용가능할 수 있고, 다음으로, 이들 중 하나가 특정한 애플리케이션들 내에서 랜덤하게 선택된다.
부록 A의 섹션 5.6의 표 2에서 나열된 K' 값들에 대한 시스터메틱 인덱스들은 부록 A에서 설명된 코드에 대한 시스터메틱 인덱스들의 하나의 잠재적 리스트이다.
서브블록킹 프로세스의 변형들
추가적 프로세싱을 위해 물리적으로 또는 논리적으로 블록들을 더 작은 단위들로 서브블록킹, 즉 분할하는 것은 다양한 목적들을 위해 알려져 있다. 예를 들어, 이것은 IETF RFC 5053에서 이용된다. 이것은 또한 미국 특허 제 7,072,971호로부터 공지되어 있다. 서브-블록킹 방법의 주요한 용도들 중 하나는, FEC 디코더를 이용하여 데이터 블록을 복원하기 위해 수신기에서 데이터 블록의 사이즈보다 훨씬 작은 양의 메모리를 이용하는 동시에, 데이터의 큰 블록이 FEC 코드에 의해 단일 엔티티로서 보호되는 것을 허용하는 것이다.
IETF RFC 5053에서 설명되는 서브블록들의 수를 선택하는 하나의 방법은, 파라미터들의 다수의 합리적 세팅들에 대해 양호한 소스 블록 파티션 및 서브블록 파티션을 제공하는 것이지만, 이것은, 몇몇 환경들에서는, (심지어는, 서브블록 사이즈가 그 서브블록 사이즈에 대한 소정의 제한 WS보다 큰 신중한 팩터인 경우의 솔루션들을 생성하는 경우에도) 서브블록 사이즈 WS에 대한 상한을 엄격하게 충족시키지 못할 수 있는 솔루션을 생성할 수도 있다. 다른 예로, 섹션 4.2의 draft-luby-rmt-bb-fec-raptorg-object-00 (소스 블록의 소스 심볼들의 최대 수가 IETF RFC 5053에서보다 훨씬 큼) 에서, T, Z 및 N을 계산하기 위해 하기 방안이 제공되고, 여기서 T는 심볼 사이즈이고, Z는 파일(또는 데이터 블록)이 파티셔닝되는 소스 블록들의 수이고, N은 서브블록들의 수이다. 또한, P'는 심볼들에 대한 패킷 페이로드 사이즈이고, F는 바이트 단위의 파일 사이즈이고, K'_max는 지원되는 소스 심볼들의 최대수(예를 들어, 56,404)이고, Al은, 더 효율적 디코딩을 허용하기 위해 심볼들 또는 서브심볼들이 사이즈에서 Al 바이트의 배수들이어야 하는 것을 특정하는 정렬 인자이고, 예를 들어, 현대식 CPU의 경우 Al=4가 선호되며, WS는 서브블록 사이즈에 대한 원하는 상한(바이트 단위)이다.
파라미터들 T, Z 및 N의 유도는 F, Al 및 P'의 값들에 기초하여 전송기 또는 대안적 서버에서 행해질 수 있음을 유의한다. 수신기는 파일 또는 데이터 블록과 관련된 수신된 패킷들에서 파일 또는 데이터 블록의 소스 블록 및 서브블록 구조를 결정하기 위해 F, Al, T 및 Z의 값들만 알면 된다. 수신기는 수신된 패킷들의 사이즈로부터 P'를 결정할 수 있다. 전송되고 수신된 패킷들은 또한 통상적으로, 사이즈에서 통상적으로 4 바이트이고, 패킷에서 반송되는 제 1 심볼의 인코딩된 심볼 식별자(ESI) 및 소스 블록 번호(SBN)를 반송하는 FEC 페이로드 ID와 같은, 패킷의 컨텐츠를 식별하는 다른 정보를 포함함을 유의한다.
T, Z, N을 계산하기 위해 draft-luby-rmt-bb-fec-raptorg-object-00의 섹션 4.2에서 설명되는 이전의 방법은 이들을 다음과 같은 값들로 설정하는 것이다.
· T = P'
· Kt = ceil(F/T)
· Z = ceil(Kt/K'_max)
· N = min{ceil(ceil(Kt/Z)*T/WS), T/Al}
이 계산들에서, ceil()은, 자신의 입력 이상의 수 중 최소의 정수를 출력하는 함수이고, floor()는 자신의 입력 이하의 수 중 최대의 정수를 출력하는 함수이다. 또한, min()은 자신의 입력들 중 최소값을 출력하는 함수이다.
소스 블록들 및 서브블록 파티셔닝을 유도하는 이 방법에 의한 파라미터들의 몇몇 세팅들에 대한 하나의 문제는, T/Al이 ceil(ceil(Kt/Z)*T/WS)보다 작으면, 서브블록 사이즈 W에 대한 상한이 준수되지 않을 수도 있다는 것이다.
잠재적인 두번째 문제는, 이것이 서브심볼들을 Al(통상적으로 4 바이트로 설정됨)만큼 작게 되도록 허용하여, 실제로 효율적이기에는 너무 작을 수 있다는 것이다. 통상적으로, 서브심볼 사이즈가 더 작을수록, 서브블록들을 디코딩 또는 인코딩하기 위한 더 많은 프로세싱 오버헤드가 존재한다. 또한, 특히 수신기에서, 더 작은 서브심볼 사이즈는, 더 많은 서브블록들이 디-멀티플렉싱 및 디코딩되어야 함을 의미하고, 이것은 CPU 사이클들 및 메모리 액세스들과 같은 수신기 자원들을 소모시킬 수 있다. 한편, 더 작은 허용가능한 서브심볼 사이즈는, 소스 블록이, 서브블록 사이즈에 대한 특정한 상한 WS를 준수하는 더 많은 서브블록들로 파티셔닝될 수 있음을 의미한다. 따라서, 더 작은 서브블록들은, 더 큰 소스 블록이 지원되도록 허용하고, 따라서, 이 소스 블록을 통해 제공되는 FEC 보호는 더 양호한 보호 및 더 양호한 네트워크 효율을 도출시킨다. 실제로, 많은 경우들에서, 서브블록들이 적어도 특정한 최소 사이즈인 것을 보장하는 것이 바람직하고, 이것은, 프로세싱 요건들과 메모리 요건들 사이에서의 더 양호한 균형의 기회 및 네트워크 자원들의 효율적 이용을 제공한다.
T, Z, N을 계산하기 위해 draft-luby-rmt-bb-fec-raptorg-object-00의 섹션 4.2에서 설명된 이전의 방법을 이용하여 유도된 파라미터들의 일예로:
입력:
F = 56,404 KB
P' = 1 KB = 1,024 바이트
WS = 128 KB
Al = 4
K'_max = 56,404
계산들:
T = 1 KB
Kt = 56,404
Z = 1
N = 256 (min 함수에 대한 제 2 입력에 기인함)
이 예에서, 256개의 서브블록들을 포함하는 하나의 소스 블록이 존재할 것이고, 여기서, 각각의 서브블록은, 서브블록 사이즈 4 바이트(극단적으로 작음)를 갖는 적어도 일부의 서브블록들에 의해 대략 220 KB(WS보다 큼)이다.
세번째 문제는, AL-FEC 솔루션이 모든 가능한 수들의 소스 심볼들을 지원할 수는 없다는 것, 즉, K' 값들의 선택된 리스트만을 지원할 수 있다는 것이며, 여기서, K'는 소스 블록에서 소스 심볼들의 지원되는 수이고, 소스 블록에서 원해지는 소스 심볼들의 실제 수 K가 K' 값들 중에 없으면, K는 가장 근접한 K' 값까지 패딩되고, 이것은, 이용되는 소스 블록의 사이즈가 상기로부터 계산된 K 값보다 다소 클 수 있다는 것을 의미한다.
이제, 전술된 이전의 방법들에 대해 해선된 새로운 서브블록 방법들을 설명한다. 설명을 위해, 서브블록킹을 위한 모듈은 WS, Al, SS 및 P'를 포함하는 값들 및 파티셔닝될 데이터를 자신의 입력들로서 택하고, 이 변수들의 의미는 아래에서 더 상세히 설명된다.
WS는, 수신기의 동작 메모리에서 디코딩가능한, 가능하게는 바이트 단위들인 최소 사이즈 서브블록에 대해 제공된 제한이다. Al은 메모리 정렬 파라미터를 표현한다. 심볼들 및 서브심볼들이 메모리 정렬 경계들을 따라 메모리에 정렬되면, 수신기 메모리가 더 효율적으로 동작할 수도 있기 때문에, Al을 트래킹하고 Al 바이트의 배수들에 값들을 저장하는 것이 유용할 수 있다. 예를 들어, 다수의 메모리 디바이스들이 자연스럽게 4 바이트 경계들 상에서 메모리의 데이터에 어드레스하기 때문에, 통상적으로 Al=4이다. 예를 들어, Al=2 또는 Al=8과 같은 Al의 다른 값들이 또한 가능하다. 통상적으로, Al은 모든 가능한 수신기들의 메모리 정렬의 최소공배수로 설정될 수 있다. 예를 들어, 일부 수신기들이 2 바이트 메모리 정렬을 지원하지만 다른 수신기들이 4 바이트 메모리 정렬을 지원하면, Al=4가 추천될 것이다.
파라미터 SS는, 서브심볼 사이즈에 대한 하한이 SS*Al 바이트가 되도록, 서브블록 사이즈에 대한 선호되는 하한에 기초하여 결정된다. 디코딩 동작들은 통상적으로 서브블록들에 대해 수행되기 때문에, 서브블록 사이즈를 Al의 배수로 하는 것이 바람직할 수 있다.
데이터 F를 Z개의 소스 블록들로 파티셔닝하고 다음으로 이 Z개의 소스 블록들을 N개의 서브블록들로 파티셔닝하기 위한 방법이 후속된다. 이 설명에서, P'는, 전송될 심볼들에 대한 패킷들 내에서 이용가능한 바이트들을 표현하는, 메모리 내에 저장된(또는 내포된) 변수를 지칭하고, P'는 Al의 배수인 것으로 가정한다. T는 전송된 패킷들 내에 배치될 심볼들의 사이즈를 표현하는 변수이다. 다른 변수들은 텍스트로부터 추론될 수 있다.
T, Z 및 N을 결정하기 위한 새로운 서브블록 방법
· T = P'
· Kt = ceil(F/T);
· N_max = floor(T/(SS*Al));
· 모든 n = 1, ..., N_max에 대해
○ KL(n)은,
■ K' ≤ WS/(Al*(ceil(T/(Al*n))))
을 충족시키는 소스 블록 내의 소스 심볼들의 가능한 수로서 지원되는 최대 K' 값;
· Z = ceil(Kt/KL(N_max));
· N = ceil(Kt/Z) ≤ KL(n)이 되게 하는 최소 n;
일단 이 파라미터들이 결정되면, Z개의 소스 블록들 각각의 사이즈, 및 각각의 소스 블록의 N개의 서브블록들의 서브심볼들의 사이즈들은 IETF RFC 5053에서 설명된 바와 같이, 즉, Kt = ceil(F/T), (KL, KS, ZL, ZS) = Partition[Kt, Z], 및 (TL, TS, NL, NS) = Partition[T/Al, N] 로 결정될 수 있다.
Kt는 파일의 소스 심볼들의 수이다. 서브블록 모듈에서, Kt개의 소스 심볼들은 Z개의 소스 블록들로 파티셔닝되고, ZL개의 소스 블록들은 각각 KL개의 소스 심볼들을 갖고, ZS개의 소스 블록들을 각각 KS개의 소스 심볼들을 갖는다. 다음으로, KL은 KL'까지 라운딩되고(rounded), 여기서 KL'은, 적어도 KL인 소스 심볼들의 최소의 지원되는 수이고 (그리고, 추가적인 KL'-KL개의 제로-패딩 심볼들이 인코딩 및 디코딩을 위해 소스 블록에 추가되지만, 이 추가적 심볼들은 통상적으로 전송 또는 수신되지 않음), 유사하게, KS는 KS'까지 라운딩되고, 여기서 KS'는, 적어도 KS인 소스 심볼들의 최소의 지원되는 수이다 (그리고, 추가적인 KS'-KS개의 제로-패딩 심볼들이 인코딩 및 디코딩을 위해 소스 블록에 추가되지만, 이 추가적 심볼들은 통상적으로 전송 또는 수신되지 않음).
서브블록 모듈, 다른 소프트웨어 모듈 또는 하드웨어에 의해 수행되는) 이 계산들은, 소스 블록들에 대한 소스 심볼들의 수들가 가능한 한 동일한 것을 보장한다 (이들의 수들의 총합이 이 파일의 소스 심볼들의 수 Kt가 되어야 하는 제한에 따름). 이 계산들은 또한, 서브블록들에 대한 서브심볼들의 사이즈들이 가능한 한 동일한 것을 보장한다 (이들이 Al의 배수들이고 이들의 사이즈의 총합이 심볼 사이즈가 되어야하는 제한에 따름).
다음으로, 서브블록 파라미터들 TL, TS, NL 및 NS가 계산되고, 여기서, 더 큰 서브심볼 사이즈 TL*Al을 이용하는 NL개의 서브블록들이 존재하고, 더 작은 서브심볼 사이즈 TS*Al을 이용하는 NS개의 서브블록들이 존재한다. 함수 Partition[I, J]는 소프트웨어 또는 하드웨어에서 구현되고, 4개의 정수들 (IL, IS, JL, JS)의 시퀀스인 출력에 의한 함수로서 정의되며, 여기서, IL = ceil(I/J), IS = floor(I/J), JL = I - IS * J, 및 JS = J - JL이다.
이러한 새로운 방법들의 특성들 중 일부는 유의할 가치가 있다. 서브블록 모듈은 이용되는 최소 서브블록 사이즈에 대해 유도된 하한을 결정할 수 있다. 상기 수식들로부터, TS = floor(T/(Al*N))인 것이 알려져 있고, 여기서 TS≤TL이기 때문에 TS*Al은 이용되는 최소 서브심볼 사이즈이다. N = N_max인 경우 최소 서브심볼이 이용됨을 유의한다. 양의 X 및 Y에 대해 X/(floor(Y)) ≥ X/Y를 이용하면, TS는 적어도 floor(T/(Al*floor(T/(SS*Al))))이고, 따라서 적어도 floor(SS) = SS이다. 이 사실들 때문에, 본 명세서에서 설명되는 파티셔닝 방법에 의해 생성된 최소 서브심볼 사이즈는, 소망에 따라 적어도 TS*al = SS*Al일 것이다.
서브블록 모듈은 최대 서브블록 사이즈에 대해 유도되는 상한을 결정할 수 있다. 이용되는 최대 서브블록 사이즈는 TL*Al*KL'이고, 여기서 KL'은, 적어도 KL = ceil(Kt/Z)인, 상기 표의 최소 K' 값이다. N의 정의에 의해, KL' ≤ KL(N), 및 TL = ceil(T/(Al*N))임을 유의한다. KL(N) ≤ WS/(Al*(ceil(T/(Al*N))))이기 때문에, WS ≥ KL(N)*Al*ceil(T/(Al*N)) ≥ KL'*Al*TL이 된다.
변수 N_max는, 사이즈 T인 소스 심볼이 파티셔닝될 수 있는 서브심볼들의 최대수를 표현할 수 있다. N_max를 floor(T/(SS*Al))로 설정하는 것은, 최소 서브심볼 사이즈가 적어도 SS*Al인 것을 보장한다. KL(n)은, 소스 블록의 서브블록들 각각이 최대 WS의 사이즈인 것을 보장하기 위해, 소스 블록의 심볼들이 n개의 서브심볼들로 각각 파티셔닝되는 경우 지원될 수 있는, 소스 블록 내의 소스 심볼들의 최대 수이다.
소스 블록들의 수 Z는, 각각의 소스 블록 내의 소스 심볼들의 수가 최대 KL(N_max)가 되어야 하는 제한에 따라, 가능한 한 작게 선택될 수 있고, 이것은, 각각의 소스 심볼이 적어도 SS*Al의 사이즈인 서브심볼들로 파티셔닝될 수 있고 결과적 서브블록들은 최대 WS의 사이즈가 되는 것을 보장한다. 서브블록 모듈은, Z의 값으로부터, Z개의 소스 블록들 각각 내의 심볼들의 수 및 소스 블록들의 수를 결정한다.
이 파티셔닝 방법에 의해 생성되는 것보다 Z의 임의의 더 작은 값이 이용되면, 소스 블록들 중 WS보다 더 큰 소스 블록의 서브블록이 존재하거나 또는 소스 블록들 중 SS*Al보다 더 작은 서브심볼 사이즈를 갖는 소스 블록의 서브블록이 존재할 것임을 유의한다. 또한, 이 파티셔닝 방법이 생성하는 소스 블록들의 최소값은 이 2개의 제한들에 따라 가능한 한 커서, 즉, 최소 소스 블록이 이 파티셔닝 방법에 의해 생성되는 최소 소스 블록보다 더 크도록, 2개의 제한들을 준수하면서 파일 또는 데이터 블록을 소스 블록들로 파티셔닝하는 다른 방법은 존재하지 않는다. 따라서, 이러한 관점에서, 이 파티셔닝 방법에 의해 생성되는 Z의 값이 최적이다.
소스 블록이 파티셔닝되는 서브블록들의 수 N은, 각각의 서브블록에 대해, 서브블록이 파티셔닝되는 소스 블록 내의 소스 심볼들의 수와 서브블록의 서브심볼들의 사이즈와의 곱이 최대 WS가 되어야 하는 제한에 따라, 가능한 한 작게 선택될 수 있다.
Z의 값으로부터 이 파티셔닝 방법에 의해 생성되는 것보다 임의의 작은 값의 N이 이용되면, WS를 초과하는 사이즈를 갖는 적어도 하나의 서브블록이 존재할 것임을 유의한다. 또한, 이 파티셔닝 방법이 소정의 Z 값으로부터 생성하는 최소의 서브심볼 사이즈는, 최대 서브블록 사이즈가 WS를 초과하지 않아야 한다는 제한에 따라 가능한 한 커서, 즉, 최소 서브심볼 사이즈가 이 파티셔닝 방법에 의해 생성되는 최소 서브심볼 사이즈보다 더 크도록, 최대 서브블록 제한을 준수하면서 Z의 값에 의해 결정되는 소스 블록들의 서브블록들을 생성하기 위한 다른 방법은 존재하지 않는다. 따라서, 이 파티셔닝 방법에 의해 생성되는 N의 값이 최적이다.
하기 예들에서, 모든 가능한 K' 값들은 소스 블록 내의 소스 심볼들의 수로서 지원된다고 가정한다.
예 1
입력들:
SS = 5
Al = 4 bytes
(최소 서브심볼 사이즈 = 20 바이트)
WS = 128 KB = 131,072 바이트
P' = 1,240 바이트
F = 6 MB = 6,291,456 바이트
계산들:
T = 1,240 바이트
Kt = 5,074
N_max = 62
KL(N_max) = 6,553
Z = 1
KL = ceil(Kt/Z) = 5,074
N = 52 (KL(N) = 5,461)
TL = 6, 더 큰 서브심볼 = 24 바이트
TS = 5, 더 작은 서브심볼 = 20 바이트
TL * AL * KL = 121,776
예 2
입력들:
SS = 8
Al = 4 바이트
(최소 서브심볼 사이즈 = 32 바이트)
WS = 128 KB = 131,072 바이트
P' = 1 KB = 1,024 바이트
F = 56,404 KB = 57,757,696 바이트
계산들:
T = 1,024 바이트
Kt = 56,404
N_max = 32
KL(N_max) = 4,096
Z = 14
KL = ceil(Kt/Z) = 4,029
N = 32 (KL(N) = 4,096)
TL = 8, 더 큰 서브심볼 = 32 바이트
TS = 8, 더 작은 서브심볼 = 32 바이트
TL * AL * KL = 128,928
상기 방법들의 다수의 변형들이 존재한다. 예를 들어, 몇몇 FEC 코드의 경우, FEC 코드의 소스 블록 수신 오버헤드를 최소화하기 위해 소스 블록 내의 소스 심볼들의 적어도 최소 수를 갖는 것이 바람직하다. 매우 작은 파일 사이즈들 또는 데이터 블록 사이즈들 F의 경우 소스 심볼 사이즈는 너무 작게 될 수 있기 때문에, 패킷이 파티셔닝되는 소스 심볼들의 최대 수가 또한 존재할 수 있다. 예를 들어, IETF RFC 5053에서, 소스 블록 내의 소스 심볼들의 원하는 최소 수는 Kmin = 1024이고, 패킷이 파티셔닝되는 소스 심볼들의 최대 수는 Gmax = 10이다.
방금 설명한 추가적 파라미터들 Kmin 및 Gmax를 고려하는, 전술한 새로운 서브블록킹 방법의 다른 변형이 아래에 제공되고, 여기서, G는, 서브블록킹 모듈 또는 더 일반적으로는 인코더, 디코더, 송신기 및/또는 수신기의 몇몇 다른 모듈 또는 소프트웨어 또는 하드웨어에 의해 수행될 수 있는, 각각의 패킷에서 반송되는 소스 블록에 대한 심볼들의 수이다.
이 변형에서, 각각의 패킷은 그 패킷에 제 1 심볼의 ESI를 반송하고, 다음으로, 패킷의 각각의 후속 심볼은, 패킷 내의 선행 심볼보다 1 큰 ESI를 무조건적으로 갖는다.
G, T, Z 및 N을 결정하기 위한 새로운 서브블록킹 방법
· G = min(ceil(P'*Kmin/F), floor(P'/(SS*Al)), Gmax);
· T = floor(P'/(Al*G))*Al;
· Kt = ceil(F/T);
· N_max = floor(T/(SS*Al));
· 모든 n = 1, ..., N_max 에 대해
○ KL(n)은,
■ K′ ≤ WS/(Al*(ceil(T/(Al*n))))
을 충족시키는 소스 블록 내의 소스 심볼들의 가능한 수로서 지원되는 최대 K' 값;
· Z = ceil(Kt/KL(N_max));
· N = ceil(Kt/Z) ≤ KL(n)이 되게 하는 최소 n;
G가 계산되는 방식에 의해, 심볼 사이즈는 적어도 SS*Al인 것, 즉, 심볼 사이즈가 적어도 최소 서브블록 사이즈인 것이 보장됨을 유의한다. 또한, 심볼 사이즈가 적어도 SS*Al일 수 있는 것을 보장하기 위해 SS*al은 적어도 P'이어야 함을 유의한다 (또한 그렇지 않으면, G는 제로로 평가될 것이다).
예 3
입력:
SS = 5
Al = 4 바이트
(최소 서브블록 사이즈 = 20 바이트)
WS = 256 KB = 262,144 바이트
P' = 1,240 바이트
F = 500 KB = 512,000 바이트
Kmin = 1,024
Gmax = 10
계산들:
G = 3
T = 412
Kt = 1,243
N_max = 20
KL(N_max) = 10,992
Z = 1
KL = ceil(Kt/Z) = 1,243
N = 2 (KL(N) = 1,260)
TL = 52, 더 큰 서브블록 = 208 바이트
TS = 51, 더 작은 서브블록 = 204 바이트
TL * AL * KL = 258,544
지금 설명한 바와 같이, 이 새로운 방법들은 임의의 서브블록에 대해 이용되는 최소 서브블록 사이즈에 대한 제한을 도입한다. 본 명세서는, 이 추가적 제한을 준수하면서 이와 동시에 최대 서브블록 사이즈에 대한 제한을 엄격하게 준수하는, 서브블록킹을 위한 새로운 방법들을 제공한다. 이 방법들은, 최소 서브블록 사이즈에 대한 제한에 따라, 파일 또는 데이터 블록을 가능한 한 적은 소스 블록들로 파티셔닝하고, 다음으로, 최대 서브블록 사이즈에 대한 제한에 따라, 소스 블록을 가능한 한 적은 서브블록들로 분할하는 목적들을 충족시키는 소스 블록킹 및 서브블록킹 솔루션들을 생성한다.
변형들
일부 애플리케이션들에서는, 소스 심볼들 모두를 디코딩할 수 없거나 또는 소스 심볼들 모두를 디코딩할 수는 있지만 비교적 낮은 확률로 디코딩하는 것이 허용될 수 있다. 이러한 애플리케이션들에서, 수신기는 K+A개의 인코딩된 심볼들을 수신한 후 소스 심볼들 모두를 디코딩하려 시도하는 것을 중지할 수 있다. 또는, 수신기는 K+A개 미만의 인코딩된 심볼들을 수신한 후 인코딩 심볼들의 수신을 중지할 수 있다. 몇몇 애플리케이션들에서, 수신기는 심지어 K개 또는 그 미만의 인코딩된 심볼들만을 수신할 수도 있다. 따라서, 본 발명의 몇몇 실시예들에서, 원하는 정확성의 정도는 모든 소스 심볼들의 완전한 복원을 요구하지는 않음을 이해해야 한다.
또한, 불완전한 복원이 허용될 수 있는 몇몇 애플리케이션들에서, 데이터는, 소스 심볼들의 모두가 복원되지는 못할 정도로 인코딩되거나, 또는 소스 심볼들의 완전한 복원을 위해, 소스 심볼들의 수보다 더 많은 인코딩된 심볼들의 수신이 요구될 정도로 인코딩될 수 있다. 이러한 인코딩은 일반적으로 더 적은 계산 비용을 요구할 것이고, 따라서, 인코딩의 계산 비용을 감소시키기 위해 허용가능한 방법일 수 있다.
상기 설명된 도면들에서 다양한 기능 블록들은 하드웨어 및/또는 소프트웨어의 조합에 의해 구현될 수 있고, 특정한 구현들에서는 이 블록들의 일부의 기능 중 일부 또는 전부가 결합될 수 있음을 이해해야 한다. 유사하게, 본 명세서에 교시된 다양한 방법들은 하드웨어 및/또는 소프트웨어의 조합에 의해 구현될 수 있음을 또한 이해해야 한다.
상기 설명은 예시적이고, 제한적이 아니다. 본 발명의 다수의 변형들은, 본 명세서를 리뷰한 이 분야의 당업자들에게 자명할 것이다. 따라서, 본 발명의 범주는 상기 설명을 참조하여 결정되어서는 안되고, 대신, 첨부된 청구항들 및 이들의 균등물들의 전체 범주를 참조하여 결정되어야 한다.
Figure 112012022182002-pct00016
Figure 112012022182002-pct00017
Figure 112012022182002-pct00018
Figure 112012022182002-pct00019
Figure 112012022182002-pct00020
Figure 112012022182002-pct00021
Figure 112012022182002-pct00022
Figure 112012022182002-pct00023
Figure 112012022182002-pct00024
Figure 112012022182002-pct00025
Figure 112012022182002-pct00026
Figure 112012022182002-pct00027
Figure 112012022182002-pct00028
Figure 112012022182002-pct00029
Figure 112012022182002-pct00030
Figure 112012022182002-pct00031
Figure 112012022182002-pct00032
Figure 112012022182002-pct00033
Figure 112012022182002-pct00034
Figure 112012022182002-pct00035
Figure 112012022182002-pct00036
Figure 112012022182002-pct00037
Figure 112012022182002-pct00038
Figure 112012022182002-pct00039
Figure 112012022182002-pct00040
Figure 112012022182002-pct00041
Figure 112012022182002-pct00042
Figure 112012022182002-pct00043
Figure 112012022182002-pct00044
Figure 112012022182002-pct00045
Figure 112012022182002-pct00046
Figure 112012022182002-pct00047
Figure 112012022182002-pct00048
Figure 112012022182002-pct00049
Figure 112012022182002-pct00050
Figure 112012022182002-pct00051
Figure 112012022182002-pct00052
Figure 112012022182002-pct00053
Figure 112012022182002-pct00054
Figure 112012022182002-pct00055
Figure 112012022182002-pct00056
Figure 112012022182002-pct00057
Figure 112012022182002-pct00058
Figure 112012022182002-pct00059
Figure 112012022182002-pct00060
Figure 112012022182002-pct00061
Figure 112012022182002-pct00062
Figure 112012022182002-pct00063
Figure 112012022182002-pct00064
Figure 112012022182002-pct00065
Figure 112012022182002-pct00066
Figure 112012022182002-pct00067
Figure 112012022182002-pct00068
Figure 112012022182002-pct00069
Figure 112012022182002-pct00070
Figure 112012022182002-pct00071
Figure 112012022182002-pct00072
Figure 112012022182002-pct00073
Figure 112012022182002-pct00074
Figure 112012022182002-pct00075
Figure 112012022182002-pct00076
Figure 112012022182002-pct00077
Figure 112012022182002-pct00078
Figure 112012022182002-pct00079
Figure 112012022182002-pct00080
Figure 112012022182002-pct00081
Figure 112012022182002-pct00082
Figure 112012022182002-pct00083

Claims (38)

  1. 전자 신호를 출력할 수 있는 하나 이상의 송신기들을 통해 데이터를 전자적으로 송신하는 방법으로서,
    송신될 데이터는 소스 심볼들의 순서화된 세트로 표현되고, 상기 데이터는, 상기 전자 신호의 적어도 일부를 표현하는 인코딩된 심볼들의 시퀀스로서 송신되고,
    상기 방법은,
    상기 소스 심볼들의 순서화된 세트를, 전자적으로 판독가능한 형태로 획득하는 단계;
    상기 소스 심볼들의 순서화된 세트로부터 중간 심볼들의 세트를 생성하는 단계 ―상기 소스 심볼들은 상기 중간 심볼들의 세트로부터 재생성될 수 있음―;
    각각의 중간 심볼이 중간 심볼들의 세트들 중 하나의 멤버로서 지정되고, 적어도 중간 심볼들의 제 1 세트 및 중간 심볼들의 제 2 세트가 존재하도록 상기 중간 심볼들의 세트들을 지정하는 단계 ―상기 중간 심볼들의 세트 각각은 멤버들로서 적어도 하나의 중간 심볼을 가짐―; 및
    복수의 인코딩된 심볼들을 생성하는 단계를 포함하고,
    인코딩된 심볼은 상기 중간 심볼들 중 하나 이상으로부터 생성되고, 적어도 하나의 인코딩된 심볼은, 복수의 상기 중간 심볼들의 세트들로부터 선택되는 복수의 중간 심볼들로부터 직접 또는 간접적으로 생성되는,
    데이터를 전자적으로 송신하는 방법.
  2. 제 1 항에 있어서,
    상기 중간 심볼들의 제 1 세트는 비리프 전파(belief propagation) 디코딩을 위한 심볼들로서 지정되고, 상기 중간 심볼들의 제 2 세트는 비리프 전파 디코딩을 위해 비활성화될 심볼들로서 지정되는, 데이터를 전자적으로 송신하는 방법.
  3. 제 1 항에 있어서,
    각각의 인코딩된 심볼은, 상기 중간 심볼들의 제 1 세트 중 하나 이상으로부터 생성된 제 1 심볼 및 상기 중간 심볼들의 제 2 세트 중 하나 이상으로부터 생성된 제 2 심볼의 조합으로부터 생성되는, 데이터를 전자적으로 송신하는 방법.
  4. 제 3 항에 있어서,
    상기 중간 심볼들의 제 1 세트 중 제 1 정도 분포(degree distribution)를 갖는 하나 이상으로부터 생성되는 제 1 심볼 및 상기 중간 심볼들의 제 2 세트 중 상기 제 1 정도 분포와는 상이한 제 2 정도 분포를 갖는 하나 이상으로부터 생성되는 제 2 심볼의 조합으로부터 각각의 인코딩된 심볼이 생성되는, 데이터를 전자적으로 송신하는 방법.
  5. 제 3 항에 있어서,
    상기 제 1 심볼은 상기 중간 심볼들의 제 1 세트에 적용되는 연쇄 반응(chain reaction) 인코딩 프로세스를 이용하여 생성되는, 데이터를 전자적으로 송신하는 방법.
  6. 제 3 항에 있어서,
    상기 제 2 심볼은, 상기 중간 심볼들의 제 2 세트로부터 랜덤하게 선택된 고정 수의 심볼들의 XOR인, 데이터를 전자적으로 송신하는 방법.
  7. 제 3 항에 있어서,
    상기 제 2 심볼은, 상기 중간 심볼들의 제 2 세트로부터 랜덤하게 선택된 제 1 수의 심볼들의 XOR이고, 상기 제 1 수는, 상기 제 1 심볼을 생성하기 위해 상기 제 1 세트로부터 선택된 심볼들의 수와 동일한 제 2 수에 의존하는, 데이터를 전자적으로 송신하는 방법.
  8. 제 3 항에 있어서,
    상기 조합은 상기 제 1 심볼과 상기 제 2 심볼의 XOR인, 데이터를 전자적으로 송신하는 방법.
  9. 제 1 항에 있어서,
    상기 중간 심볼들의 세트들은, 소스 심볼들의 순서화된 세트, 및 상기 소스 심볼들의 순서화된 세트로부터 생성되는 리던던트 심볼들의 세트를 포함하는, 데이터를 전자적으로 송신하는 방법.
  10. 제 9 항에 있어서,
    상기 리던던트 심볼들 중 적어도 일부는 GF[2] 연산들을 이용하여 생성되고, 다른 리던던트 심볼들은 GF[256] 연산들을 이용하여 생성되는, 데이터를 전자적으로 송신하는 방법.
  11. 제 1 항에 있어서,
    상기 중간 심볼들은, 인코딩 동안, 디코딩 프로세스를 이용하여 상기 소스 심볼들로부터 생성되고, 상기 디코딩 프로세스는 상기 중간 심볼들과 상기 소스 심볼들 사이의 선형 관계들의 세트에 기초하는, 데이터를 전자적으로 송신하는 방법.
  12. 제 11 항에 있어서,
    상기 선형 관계들 중 적어도 일부는 GF[2]에 대한 관계들이고, 다른 선형 관계들은 GF[256]에 대한 관계들인, 데이터를 전자적으로 송신하는 방법.
  13. 제 1 항에 있어서,
    소스 심볼들의 소정의 순서화된 세트로부터 생성될 수 있는 개별적인 인코딩된 심볼들의 수는 상기 순서화된 세트 내의 소스 심볼들의 수에 대해 독립적인, 데이터를 전자적으로 송신하는 방법.
  14. 제 1 항에 있어서,
    인코딩된 심볼을 생성하기 위해 수행되는 심볼 연산들의 평균 수는, 상기 순서화된 세트 내의 소스 심볼들의 수에 대해 독립적인 상수에 의해 제한되는, 데이터를 전자적으로 송신하는 방법.
  15. 제 1 항에 있어서,
    상기 중간 심볼들의 제 1 세트 내의 심볼들의 수는, 상기 중간 심볼들의 제 2 세트 내의 심볼들의 수 보다 열배(order of magnitude) 이상 더 많은, 데이터를 전자적으로 송신하는 방법.
  16. 소스로부터 데이터를 수신하는 방법으로서,
    상기 데이터는 패킷 통신 채널을 통해 수신지에서 수신되고, 상기 데이터는, 상기 소스로부터 상기 수신지로 전송된 상기 데이터를 표현하는 소스 심볼들의 순서화된 세트로부터 유도되는 인코딩된 심볼들의 세트에 의해 표현될 수 있고,
    상기 방법은,
    수신된 인코딩된 심볼들의 세트를 획득하는 단계;
    상기 수신된 인코딩된 심볼들의 세트로부터 중간 심볼들의 세트를 디코딩하는 단계;
    상기 중간 심볼들 각각을 중간 심볼들의 세트와 연관시키는 단계 ―상기 중간 심볼들은 적어도 2개의 세트들과 연관되고, 하나의 세트는 상기 수신된 인코딩된 심볼들로부터 상기 중간 심볼들을 복원하기 위해, 디코딩 프로세스를 스케줄링할 목적으로 영속적으로 비활성인 심볼들의 세트로서 지정됨―; 및
    상기 디코딩 프로세스에 따라, 상기 중간 심볼들의 세트로부터, 소스 심볼들의 상기 순서화된 세트의 소스 심볼들 중 적어도 일부(some)를 복원하는 단계를 포함하는,
    소스로부터 데이터를 수신하는 방법.
  17. 제 16 항에 있어서,
    상기 디코딩 프로세스는 적어도 제 1 디코딩 단계(phase), 제 2 디코딩 단계 및 제 3 디코딩 단계를 포함하고,
    상기 제 1 디코딩 단계에서, 영속적으로 비활성인 심볼들의 제 2 세트, 및 상기 중간 심볼들의 세트의 서브세트인 동적으로 비활성인 심볼들의 제 3 세트에 의존하는 감소된 인코딩된 심볼들의 세트가 생성되고,
    상기 제 2 디코딩 단계에서, 상기 영속적으로 비활성인 심볼들의 제 2 세트 및 상기 동적으로 비활성인 심볼들의 제 3 세트를 디코딩하기 위해 상기 감소된 인코딩된 심볼들의 세트가 이용되고,
    상기 제 3 디코딩 단계에서, 상기 중간 심볼들의 세트 내에 있는 나머지 중간 심볼들 중 적어도 일부를 디코딩하기 위해, 상기 영속적으로 비활성인 심볼들의 디코딩된 제 2 세트, 및 상기 동적으로 비활성인 심볼들의 제 3 세트, 및 상기 수신된 인코딩된 심볼들의 세트가 이용되는, 소스로부터 데이터를 수신하는 방법.
  18. 제 17 항에 있어서,
    상기 제 1 디코딩 단계는, 비활성화 디코딩과 결합된 비리프 전파 디코딩을 이용하고, 그리고/또는 상기 제 2 디코딩 단계는 가우시안(Gaussian) 제거를 이용하는, 소스로부터 데이터를 수신하는 방법.
  19. 제 17 항에 있어서,
    상기 제 3 디코딩 단계는, 포워드 스윕(forward sweep)이 후속되는 백 스윕 또는 후방 대입(back substitution)을 이용하는, 소스로부터 데이터를 수신하는 방법.
  20. 제 17 항에 있어서,
    상기 디코딩 프로세스는, 상기 동적으로 비활성인 심볼들의 제 3 세트 내의 심볼들의 수가 상기 소스 심볼들의 수의 10% 미만 및/또는 상기 영속적으로 비활성인 심볼들의 제 2 세트 내의 심볼들의 수의 10% 미만인 것으로 간주하여, 상기 동적으로 비활성인 심볼들의 제 3 세트에 대해 동작하는, 소스로부터 데이터를 수신하는 방법.
  21. 제 16 항에 있어서,
    상기 수신된 인코딩된 심볼들은 LDPC 코드로 생성된 심볼들 또는 리드-솔로몬(Reed-Solomon) 코드로 생성된 심볼들로서 동작되는, 소스로부터 데이터를 수신하는 방법.
  22. 제 16 항에 있어서,
    상기 수신된 인코딩된 심볼들의 세트의 각각의 수신된 인코딩된 심볼은, 상기 중간 심볼들의 세트 중 하나 이상으로부터 생성되는 제 1 심볼 및 상기 심볼들의 제 2 세트 중 하나 이상으로부터 생성되는 제 2 심볼의 조합으로서 동작되는, 소스로부터 데이터를 수신하는 방법.
  23. 제 22 항에 있어서,
    각각의 수신된 인코딩된 심볼은 상기 제 1 심볼 및 상기 제 2 심볼의 XOR인 조합으로서 동작되는, 소스로부터 데이터를 수신하는 방법.
  24. 제 22 항에 있어서,
    상기 각각의 수신된 인코딩된 심볼은, 상기 제 2 세트로부터 랜덤하게 선택된 고정 수의 심볼들의 XOR인 제 2 심볼로서 동작되는, 소스로부터 데이터를 수신하는 방법.
  25. 제 22 항에 있어서,
    각각의 수신된 인코딩된 심볼은, 상기 제 2 세트로부터 랜덤하게 선택된 제 1 수의 심볼들의 XOR인 제 2 심볼로서 동작되고, 심볼들의 상기 제 1 수는, 상기 제 1 심볼을 생성하기 위해 상기 중간 심볼들의 세트로부터 선택된 심볼들의 제 2 수에 의존하는, 소스로부터 데이터를 수신하는 방법.
  26. 제 22 항에 있어서,
    상기 디코딩 프로세스는, 상기 제 1 심볼이 상기 중간 심볼들의 세트로부터 연쇄 반응 코드에 기초하여 선택된 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  27. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 상기 영속적으로 비활성인 심볼들의 제 2 세트의 사이즈가 상기 소스 심볼들의 수의 제곱근에 비례하는 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  28. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 상기 중간 심볼들이, 상기 소스 심볼들의 순서화된 세트, 및 상기 소스 심볼들의 순서화된 세트로부터 생성되는 리던던트 심볼들의 세트를 포함하는 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  29. 제 28 항에 있어서,
    상기 디코딩 프로세스는, 상기 리던던트 심볼들 중 적어도 일부는 GF[2] 연산들을 이용하여 생성되고, 다른 리던던트 심볼들은 GF[256] 연산들을 이용하여 생성되는 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  30. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 상기 중간 심볼들이 상기 소스 심볼들의 순서화된 세트를 포함하는 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  31. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 상기 중간 심볼들이, 상기 소스 심볼들과 상기 중간 심볼들 사이의 선형 관계들의 세트에 기초하여 디코딩 프로세스를 이용하여 상기 소스 심볼들로부터 생성된 심볼들인 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  32. 제 31 항에 있어서,
    상기 디코딩 프로세스는, 상기 선형 관계들 중 적어도 일부는 GF[2]에 대한 관계들이고, 다른 선형 관계들은 GF[256]에 대한 관계들인 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  33. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 수신될 수 있는 상이한 가능한 인코딩된 심볼들의 수가 상기 순서화된 세트 내의 소스 심볼들의 수에 대해 독립적인 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  34. 제 16 항에 있어서,
    상기 수신된 인코딩된 심볼들의 세트로부터 소스 심볼의 세트를 디코딩하기 위해 수행되는 심볼 연산들의 평균 수는, 상기 소스 심볼들의 수의 상수 배(constant times)에 의해 제한되고, 상기 상수는 상기 소스 심볼들의 수에 대해 독립적인, 소스로부터 데이터를 수신하는 방법.
  35. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 상기 중간 심볼들의 제 1 세트 내의 심볼들의 수가 상기 영속적으로 비활성인 심볼들의 제 2 세트 내의 심볼들의 수보다 열배 이상 더 많은 것을 가정하면서 동작하는, 소스로부터 데이터를 수신하는 방법.
  36. 제 16 항에 있어서,
    상기 디코딩 프로세스는, 일부 K, N 및 A에 대해, N=K+A개의 인코딩된 심볼들의 세트로부터 K개의 소스 심볼들의 세트 모두의 복원이, A=0, 1 또는 2에 대해 적어도 1-(0.01)(A+1)의 하한의 성공 확률을 갖도록 동작하고, 상기 하한은 상기 소스 심볼들의 수에 대해 독립적인, 소스로부터 데이터를 수신하는 방법.
  37. 삭제
  38. 삭제
KR1020127007116A 2009-08-19 2010-08-19 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치 KR101451338B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US23528509P 2009-08-19 2009-08-19
US61/235,285 2009-08-19
US12/604,773 US7956772B2 (en) 2002-06-11 2009-10-23 Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US12/604,773 2009-10-23
US25714609P 2009-11-02 2009-11-02
US61/257,146 2009-11-02
US35391010P 2010-06-11 2010-06-11
US61/353,910 2010-06-11
US12/859,161 2010-08-18
US12/859,161 US9419749B2 (en) 2009-08-19 2010-08-18 Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
PCT/US2010/046027 WO2011022555A2 (en) 2009-08-19 2010-08-19 Methods and apparatus employing fec codes with permanent inactivation of symbols for encoding and decoding processes

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020137025448A Division KR101421286B1 (ko) 2009-08-19 2010-08-19 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120058556A KR20120058556A (ko) 2012-06-07
KR101451338B1 true KR101451338B1 (ko) 2014-10-15

Family

ID=43607590

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127007116A KR101451338B1 (ko) 2009-08-19 2010-08-19 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
KR1020137025448A KR101421286B1 (ko) 2009-08-19 2010-08-19 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020137025448A KR101421286B1 (ko) 2009-08-19 2010-08-19 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치

Country Status (15)

Country Link
US (3) US9419749B2 (ko)
EP (1) EP2467942B1 (ko)
JP (2) JP5602858B2 (ko)
KR (2) KR101451338B1 (ko)
CN (1) CN102640422B (ko)
BR (1) BR112012003688B1 (ko)
CA (2) CA2771622C (ko)
ES (1) ES2673513T3 (ko)
HK (1) HK1172164A1 (ko)
HU (1) HUE037486T2 (ko)
MY (1) MY174793A (ko)
RU (2) RU2554556C2 (ko)
TW (2) TWI566089B (ko)
WO (1) WO2011022555A2 (ko)
ZA (1) ZA201201843B (ko)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive 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
EP2348640B1 (en) 2002-10-05 2020-07-15 QUALCOMM Incorporated Systematic encoding of chain reaction codes
US20050058313A1 (en) * 2003-09-11 2005-03-17 Victorian Thomas A. External ear canal voice detection
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
US7418651B2 (en) 2004-05-07 2008-08-26 Digital Fountain, Inc. File download and streaming system
JP5550834B2 (ja) 2006-02-13 2014-07-16 デジタル ファウンテン, インコーポレイテッド 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
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
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
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
AU2008298602A1 (en) 2007-09-12 2009-03-19 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
US9015564B2 (en) 2009-08-19 2015-04-21 Qualcomm Incorporated Content delivery system with allocation of source data and repair data among HTTP servers
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
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
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
KR101983032B1 (ko) * 2012-05-07 2019-05-30 삼성전자주식회사 방송 및 통신 시스템에서 패킷 송수신 장치 및 방법
US9160399B2 (en) 2012-05-24 2015-10-13 Massachusetts Institute Of Technology System and apparatus for decoding tree-based messages
US10666701B2 (en) * 2012-11-16 2020-05-26 Citrix Systems, Inc. Adaptation of content delivery network to incremental delivery of large, frequently updated data sets
US10360139B2 (en) * 2013-03-12 2019-07-23 Entit Software Llc Identifying transport-level encoded payloads
JP6117994B2 (ja) * 2013-05-29 2017-04-19 株式会社東芝 符号化および復号の方法および装置
US9369920B2 (en) * 2013-06-12 2016-06-14 Qualcomm Incorporated Degree reduction and degree-constrained combining for relaying a fountain code
US9270412B2 (en) * 2013-06-26 2016-02-23 Massachusetts Institute Of Technology Permute codes, iterative ensembles, graphical hash codes, and puncturing optimization
US9196299B2 (en) * 2013-08-23 2015-11-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for enhanced data encoding and decoding
EP2858286A1 (en) * 2013-10-04 2015-04-08 Alcatel Lucent Rateless decoding
TWI523465B (zh) * 2013-12-24 2016-02-21 財團法人工業技術研究院 檔案傳輸系統和方法
FR3018148B1 (fr) * 2014-02-28 2017-08-25 Allegro Dvt Generateur de flux video
US9496897B1 (en) * 2014-03-31 2016-11-15 EMC IP Holding Company LLC Methods and apparatus for generating authenticated error correcting codes
CA2950574C (en) * 2014-06-10 2019-06-11 Lg Electronics Inc. Broadcast signal transmitting apparatus, broadcast signal receiving apparatus, broadcast signal transmitting method, and broadcast signal receiving method
US10367605B2 (en) * 2015-07-02 2019-07-30 Intel Corporation High speed interconnect symbol stream forward error-correction
US20170060700A1 (en) 2015-08-28 2017-03-02 Qualcomm Incorporated Systems and methods for verification of code resiliency for data storage
EP3142280A1 (en) * 2015-09-09 2017-03-15 Alcatel Lucent Method, system and computer readable medium for the transmission of symbols between at least two telecommunication apparatus
KR102458074B1 (ko) * 2016-03-31 2022-10-24 삼성전자 주식회사 이동 통신 시스템에서 이종 서비스 제공 방법 및 장치
TWI602409B (zh) * 2016-08-15 2017-10-11 國立交通大學 資料傳輸方法與系統
US10320428B2 (en) * 2016-08-15 2019-06-11 Qualcomm Incorporated Outputting of codeword bits for transmission prior to loading all input bits
JP6885025B2 (ja) * 2016-11-18 2021-06-09 ソニーグループ株式会社 送信装置、及び、送信方法
KR101886937B1 (ko) * 2016-12-30 2018-08-08 성균관대학교산학협력단 릴레이 노드에서의 네트워크 코딩을 통한 패킷 전송 방법, 네트워크 코딩을 통한 패킷 전송을 하는 릴레이 장치, 목적지 노드의 패킷 수신 방법 및 네트워크 코딩된 패킷을 수신하는 장치
CN107332570B (zh) * 2017-06-06 2020-12-04 北京理工大学 分段级联Hash序列的极化码编码方法
US10922173B2 (en) * 2018-03-13 2021-02-16 Queen's University At Kingston Fault-tolerant distributed digital storage
KR102034390B1 (ko) * 2018-08-23 2019-10-18 최운영 디스플레이 송출정보에 기반한 데이터 사용 로그 추적 시스템
KR20200036338A (ko) * 2018-09-28 2020-04-07 삼성전자주식회사 무선 통신 시스템에서 극 부호를 이용한 부호화 및 복호화를 위한 장치 및 방법
CN110297703B (zh) * 2019-06-11 2021-11-05 国网江苏省电力有限公司 一种在实时仿真系统中模拟硬件任务调度的方法及装置
US11281531B2 (en) * 2019-06-25 2022-03-22 Western Digital Technologies, Inc. Serial storage node processing of data functions
US11314593B2 (en) * 2019-06-25 2022-04-26 Western Digital Technologies, Inc. Storage node processing of data functions using overlapping symbols
US10990324B2 (en) 2019-06-25 2021-04-27 Western Digital Technologies, Inc. Storage node processing of predefined data functions
US11055018B2 (en) 2019-06-25 2021-07-06 Western Digital Technologies, Inc. Parallel storage node processing of data functions
CN113541857A (zh) * 2020-04-17 2021-10-22 华为技术有限公司 一种编码方法及通信装置
US11751171B2 (en) * 2020-07-09 2023-09-05 Qualcomm Incorporated Feedback-based broadcasting of network coded packets with sidelink
US11115050B1 (en) * 2020-08-24 2021-09-07 Innogrit Technologies Co., Ltd. Hardware friendly data decompression
US11115049B1 (en) * 2020-08-24 2021-09-07 Innogrit Technologies Co., Ltd. Hardware friendly data decompression
WO2022041187A1 (en) * 2020-08-31 2022-03-03 Qualcomm Incorporated Degree selection schemes for rapid tornado (raptor) codes in multicast and broadcast services and in unicast services
US20220086445A1 (en) * 2020-12-03 2022-03-17 Intel Corporation Methods, apparatus, and articles of manufacture for multi-symbol equiprobable mode entropy coding
US11967973B2 (en) * 2021-05-06 2024-04-23 Samsung Display Co., Ltd. Low overhead transition encoding codes
US11632408B1 (en) * 2022-02-15 2023-04-18 Bank Of America Corporation Intelligent, dynamic, secure, real-time, symmetrical data streaming apparatus leveraging quantum computing
US11799700B1 (en) * 2022-08-31 2023-10-24 Qualcomm Incorporated Decoding multi-level coded (MLC) systems
US11928027B1 (en) * 2022-09-26 2024-03-12 Cadence Design Systems, Inc. System and method for error checking and correction with metadata storage in a memory controller

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20070195894A1 (en) 2006-02-21 2007-08-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems

Family Cites Families (559)

* 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
US5043909A (en) 1988-12-30 1991-08-27 Hughes Aircraft Company Method and device for excess modulation detection for signal analysis
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
US7594250B2 (en) 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US5701582A (en) 1989-08-23 1997-12-23 Delta Beta Pty. Ltd. Method and apparatus for efficient transmissions of programs
US5329369A (en) 1990-06-01 1994-07-12 Thomson Consumer Electronics, Inc. Asymmetric picture compression
JPH0452253A (ja) 1990-06-20 1992-02-20 Kobe Steel Ltd 急冷薄帯又は急冷細線
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 株式会社東芝 データ再送制御方法及びデータ再送制御システム
JP3651699B2 (ja) 1995-04-09 2005-05-25 ソニー株式会社 復号化装置及び符号化復号化装置
WO1996034463A1 (en) 1995-04-27 1996-10-31 Trustees Of The Stevens Institute Of Technology High integrity transport for time critical multimedia networking applications
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
JP3167638B2 (ja) 1995-08-04 2001-05-21 三洋電機株式会社 ディジタル変調方法と復調方法及びディジタル変調回路と復調回路
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
US5852565A (en) 1996-01-30 1998-12-22 Demografx Temporal and resolution layering in advanced television
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 가나이 쓰도무 디지탈방송신호의 수신장치와 수신 및 기록재생장치
US6044485A (en) 1997-01-03 2000-03-28 Ericsson Inc. Transmitter method and transmission system using adaptive coding based on channel characteristics
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
US5983383A (en) 1997-01-17 1999-11-09 Qualcom Incorporated Method and apparatus for transmitting and receiving concatenated code data
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
EP0854650A3 (en) 1997-01-17 2001-05-02 NOKIA TECHNOLOGY GmbH Method for addressing a service in digital video broadcasting
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
EP1024672A1 (en) 1997-03-07 2000-08-02 Sanyo Electric Co., Ltd. Digital broadcast receiver and display
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
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6163870A (en) 1997-11-06 2000-12-19 Compaq Computer Corporation Message encoding with irregular graphing
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
US6081918A (en) 1997-11-06 2000-06-27 Spielman; Daniel A. Loss resilient code with cascading series of redundant layers
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
US6459811B1 (en) 1998-04-02 2002-10-01 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
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive 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
US7068729B2 (en) * 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6320520B1 (en) 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications 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
US6483736B2 (en) 1998-11-16 2002-11-19 Matrix Semiconductor, Inc. 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
ES2185244T3 (es) 1998-12-03 2003-04-16 Fraunhofer Ges Forschung Aparato y procedimiento para transmitir informacion y aparato y procedimiento para recibir informacion.
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
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 インターナショナル・ビジネス・マシーンズ・コーポレーション 符号化回路、回路、パリティ生成方法及び記憶媒体
US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
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
MY130203A (en) 1999-05-06 2007-06-29 Sony Corp Methods and apparatus for data processing, methods and apparatus for data reproducing and recording media
KR100416996B1 (ko) 1999-05-10 2004-02-05 삼성전자주식회사 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법
US6154452A (en) 1999-05-26 2000-11-28 Xm Satellite Radio Inc. Method and apparatus for continuous cross-channel interleaving
AU5140200A (en) 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
US6229824B1 (en) 1999-05-26 2001-05-08 Xm Satellite Radio Inc. Method and apparatus for concatenated convolutional endcoding and 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 データ通信装置、データ通信方法及び記憶媒体
US7529806B1 (en) 1999-11-04 2009-05-05 Koninklijke Philips Electronics N.V. Partitioning of MP3 content file for emulating streaming
CN1201541C (zh) 1999-09-27 2005-05-11 皇家菲利浦电子有限公司 仿真流的文件分区
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
US20020009137A1 (en) 2000-02-01 2002-01-24 Nelson John E. Three-dimensional video broadcasting system
US6965636B1 (en) 2000-02-01 2005-11-15 2Wire, Inc. System and method for block error correction in packet-based digital communications
IL140504A0 (en) 2000-02-03 2002-02-10 Bandwiz Inc Broadcast system
WO2001057667A1 (en) 2000-02-03 2001-08-09 Bandwiz, Inc. Data streaming
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
AU2001244007A1 (en) 2000-03-31 2001-10-15 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
DE60121930T2 (de) 2000-04-08 2007-07-26 Sun Microsystems, Inc., Santa Clara Methode zum streamen einer einzelnen medienspur zu mehreren 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
US6694476B1 (en) 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
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
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
US6486803B1 (en) 2000-09-22 2002-11-26 Digital Fountain, Inc. On demand encoding with a window
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
AU2002220927B2 (en) 2000-12-15 2006-03-16 British Telecommunications Public Limited Company Transmission and reception of audio and/or video material
ES2342357T3 (es) 2000-12-15 2010-07-06 British Telecommunications Public Limited Company Transmision y recepcion de material de audio y/o video.
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
WO2002073274A1 (en) * 2001-03-14 2002-09-19 Zygo Corporation Fiber array fabrication
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
JP2003018568A (ja) 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 再生システム、サーバ装置及び再生装置
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
JP2003174489A (ja) 2001-12-05 2003-06-20 Ntt Docomo Inc ストリーミング配信装置、ストリーミング配信方法
FI114527B (fi) 2002-01-23 2004-10-29 Nokia Corp Kuvakehysten ryhmittely videokoodauksessa
EP1479245A1 (en) 2002-01-23 2004-11-24 Nokia Corporation Grouping of image frames in video coding
US7483489B2 (en) 2002-01-30 2009-01-27 Nxp B.V. Streaming multimedia data over a network having a variable bandwith
AU2003211057A1 (en) 2002-02-15 2003-09-09 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
EP1495566A4 (en) 2002-04-15 2005-07-20 Nokia Corp RLP LOGIC 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 松下電器産業株式会社 データ受信装置及びデータ配信システム
WO2003092305A1 (en) 2002-04-25 2003-11-06 Sharp Kabushiki Kaisha Image encodder, image decoder, record medium, and image recorder
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
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP1506621B1 (en) * 2002-06-11 2013-01-02 Digital Fountain, Inc. Decoding of chain reaction codes through inactivation of recovered symbols
EP1550315B1 (en) 2002-06-11 2015-10-21 Telefonaktiebolaget L M Ericsson (publ) Generation of mixed media streams
US6956875B2 (en) 2002-06-19 2005-10-18 Atlinks Usa, Inc. Technique for communicating variable bit rate data over a constant bit rate link
JP4154569B2 (ja) 2002-07-10 2008-09-24 日本電気株式会社 画像圧縮伸長装置
JP4120461B2 (ja) 2002-07-12 2008-07-16 住友電気工業株式会社 伝送データ生成方法及び伝送データ生成装置
US8300690B2 (en) 2002-07-16 2012-10-30 Nokia Corporation Method for random access and gradual picture refresh in video coding
EP1526659A4 (en) 2002-07-31 2010-12-01 Sharp Kk DATA COMMUNICATION DEVICE, ITS CONTINUOUS COMMUNICATION PROCEDURE, ITS PROCESSING PROGRAM, AND RECORDING MEDIUM ON WHICH THE PROGRAM IS RECORDED
JP2004070712A (ja) 2002-08-07 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム
DK1529389T3 (en) 2002-08-13 2016-05-30 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 株式会社エヌ・ティ・ティ・ドコモ 動画像復号方法、動画像復号装置、及び動画像復号プログラム
EP2348640B1 (en) 2002-10-05 2020-07-15 QUALCOMM Incorporated Systematic encoding of chain reaction codes
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
US7289451B2 (en) 2002-10-25 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Delay trading between communication links
US8320301B2 (en) 2002-10-25 2012-11-27 Qualcomm Incorporated MIMO WLAN system
JP4460455B2 (ja) 2002-10-30 2010-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 適応的順方向誤り制御スキーム
JP2004165922A (ja) 2002-11-12 2004-06-10 Sony Corp 情報処理装置および方法、並びにプログラム
JP4087852B2 (ja) 2002-11-18 2008-05-21 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー ビデオの伝送方法
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
US7525994B2 (en) 2003-01-30 2009-04-28 Avaya Inc. Packet data flow identification for multiplexing
US7756002B2 (en) 2003-01-30 2010-07-13 Texas Instruments Incorporated Time-frequency interleaved orthogonal frequency division multiplexing ultra wide band physical layer
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
JP2004343701A (ja) 2003-04-21 2004-12-02 Matsushita Electric Ind Co Ltd データ受信再生装置、データ受信再生方法及びデータ受信再生処理プログラム
US7408486B2 (en) 2003-04-21 2008-08-05 Qbit Corporation System and method for using a microlet-based modem
US20050041736A1 (en) 2003-05-07 2005-02-24 Bernie Butler-Smith Stereoscopic television signal processing method, transmission system and viewer enhancements
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
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エンコード装置
US7483525B2 (en) 2003-05-23 2009-01-27 Navin Chaddha Method and system for selecting a communication channel with a recipient device over a communication network
JP2004362099A (ja) 2003-06-03 2004-12-24 Sony Corp サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
BRPI0406185A (pt) 2003-06-07 2005-07-05 Samsung Electronics Co Ltd Aparelho para exibição de dados de multimìdia, destinados a serem descritos em um formato de musicphotovideo (mpv), método para exibição de dados de multimìdia descritos em um formato de musicphotovideo (mpv), método para exibição de dados de multimìdia, a serem descritos em um formato de mpv, método para exibição de dados de multimìdia, a serem descritos em um formato de mpv, e mìdia de gravação na qual é gravado um programa para exibição de dados de multimìdia destinados a serem descritos em um formato de mpv
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
CN1871804B (zh) 2003-08-21 2010-09-01 高通股份有限公司 广播/多播内容的外部编码方法及其相关装置
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 三洋電機株式会社 映像表示装置
EP1665567A4 (en) 2003-09-15 2010-08-25 Directv Group Inc METHOD AND SYSTEM FOR ADAPTIVELY TRANSCODING AND TRANSRATING IN A VIDEO NETWORK
KR100608715B1 (ko) 2003-09-27 2006-08-04 엘지전자 주식회사 QoS보장형 멀티미디어 스트리밍 서비스 시스템 및 방법
ATE337643T1 (de) 2003-09-30 2006-09-15 Ericsson Telefon Ab L M In-place entschachtelung von daten
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
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
ATE479142T1 (de) 2003-10-14 2010-09-15 Panasonic Corp Datenumsetzer
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
EP1528808A3 (en) 2003-10-27 2008-03-26 Matsushita Electric Industrial Co., Ltd. Apparatus for receiving a 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
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
EP1706946A4 (en) 2003-12-01 2006-10-18 Digital Fountain Inc PROCESSING DATA AGAINST ERASURES USING SUB-SYMBOL CODES
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 삼성전자주식회사 고속 무선 데이터 시스템을 위한 가변 부호율의 오류 정정부호 생성 및 복호 장치 및 방법
KR100834750B1 (ko) 2004-01-29 2008-06-05 삼성전자주식회사 엔코더 단에서 스케일러빌리티를 제공하는 스케일러블비디오 코딩 장치 및 방법
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
KR100596705B1 (ko) 2004-03-04 2006-07-04 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템
KR100586883B1 (ko) 2004-03-04 2006-06-08 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법
US7609653B2 (en) 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
US20050207392A1 (en) 2004-03-19 2005-09-22 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
US20080243918A1 (en) 2004-03-30 2008-10-02 Koninklijke Philips Electronic, 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
US7418651B2 (en) 2004-05-07 2008-08-26 Digital Fountain, Inc. File download and streaming system
US7633970B2 (en) 2004-05-07 2009-12-15 Agere Systems Inc. MAC header compression for use with frame aggregation
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
US8112531B2 (en) 2004-07-14 2012-02-07 Nokia Corporation Grouping of session objects
US7139660B2 (en) 2004-07-14 2006-11-21 General Motors Corporation System and method for changing motor vehicle personalization settings
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
US7376150B2 (en) 2004-07-30 2008-05-20 Nokia Corporation Point-to-point repair response mechanism for point-to-multipoint transmission systems
US7590922B2 (en) 2004-07-30 2009-09-15 Nokia Corporation Point-to-point repair request 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
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 ソニー株式会社 情報処理装置、情報記録媒体、コンテンツ管理システム、およびデータ処理方法、並びにコンピュータ・プログラム
US7660245B1 (en) 2004-09-16 2010-02-09 Qualcomm Incorporated FEC architecture for streaming services including symbol-based operations and packet tagging
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
BRPI0518304A2 (pt) 2004-11-22 2008-11-11 Thomson Res Funding Corp mÉtodo e aparelho para mudar canal em sistema dsl
WO2006060036A1 (en) 2004-12-02 2006-06-08 Thomson Licensing Adaptive forward error correction
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
JP2006174032A (ja) 2004-12-15 2006-06-29 Sanyo Electric Co Ltd 画像データ伝送システム、画像データ受信装置及び画像データ送信装置
JP2006174045A (ja) 2004-12-15 2006-06-29 Ntt Communications Kk 画像配信装置、プログラム及び方法
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
US7925097B2 (en) 2005-02-18 2011-04-12 Sanyo Electric Co., Ltd. Image display method, image coding apparatus, and image decoding apparatus
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
WO2006096104A1 (en) 2005-03-07 2006-09-14 Telefonaktiebolaget Lm Ericsson (Publ) Multimedia channel switching
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
KR20080006609A (ko) 2005-04-13 2008-01-16 노키아 코포레이션 스케일링가능성 정보의 코딩, 저장, 및 시그널링
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 受信装置
US8228994B2 (en) 2005-05-20 2012-07-24 Microsoft Corporation Multi-view video coding based on temporal and view decomposition
CN101180831A (zh) 2005-05-24 2008-05-14 诺基亚公司 用于数字广播中分级传输/接收的方法和装置
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 符号化ストリーム再生装置
US20070006274A1 (en) 2005-06-30 2007-01-04 Toni Paila Transmission and reception of session packets
JP2007013675A (ja) 2005-06-30 2007-01-18 Sanyo Electric Co Ltd ストリーミング配信システム及びサーバ
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
EP1755248B1 (en) 2005-08-19 2011-06-22 Hewlett-Packard Development Company, L.P. Indication of lost segments across layer boundaries
CN101053249B (zh) 2005-09-09 2011-02-16 松下电器产业株式会社 图像处理方法、图像存储方法、图像处理装置及文件格式
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
US8879635B2 (en) 2005-09-27 2014-11-04 Qualcomm Incorporated Methods and device for data alignment with time domain boundary
US20070078876A1 (en) 2005-09-30 2007-04-05 Yahoo! Inc. Generating a stream of media data containing portions of media files using location tags
US7720062B2 (en) 2005-10-05 2010-05-18 Lg Electronics Inc. Method of processing traffic information and digital broadcasting 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 华为技术有限公司 分组网络中多媒体实时传输的唇同步方法及其装置
RU2407217C2 (ru) 2005-10-11 2010-12-20 Нокиа Корпорейшн Система и способ для эффективной адаптации масштабируемых потоков
US7720096B2 (en) 2005-10-13 2010-05-18 Microsoft Corporation RTP payload format for VC-1
WO2007047736A2 (en) 2005-10-19 2007-04-26 Thomson Licensing Multi-view video coding using scalable video coding
JP4727401B2 (ja) 2005-12-02 2011-07-20 日本電信電話株式会社 無線マルチキャスト伝送システム、無線送信装置及び無線マルチキャスト伝送方法
FR2894421B1 (fr) 2005-12-07 2008-01-18 Canon Kk Procede et dispositif de decodage d'un flux video code suivant un codage hierarchique
KR100759823B1 (ko) 2005-12-08 2007-09-18 한국전자통신연구원 제로 복귀 신호 발생 장치 및 그 방법
JP4456064B2 (ja) 2005-12-21 2010-04-28 日本電信電話株式会社 パケット送信装置、受信装置、システム、およびプログラム
US20070157267A1 (en) 2005-12-30 2007-07-05 Intel Corporation Techniques to improve time seek operations
EP1969857B1 (en) 2006-01-05 2012-03-28 Telefonaktiebolaget LM Ericsson (publ) Media container file management
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
EP1977604B1 (en) 2006-01-11 2014-03-19 Nokia Corporation Method for a backward -compatible encapsulation of a scalable coded video signal into a sequence of aggregate data units
KR100943912B1 (ko) 2006-01-12 2010-03-03 엘지전자 주식회사 다시점 비디오의 처리 방법 및 장치
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
WO2007092214A1 (en) 2006-02-08 2007-08-16 Thomson Licensing Decoding of raptor codes
JP5550834B2 (ja) 2006-02-13 2014-07-16 デジタル ファウンテン, インコーポレイテッド 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
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
WO2007127741A2 (en) 2006-04-24 2007-11-08 Sun Microsystems, Inc. Media server system
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
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
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
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US20100211690A1 (en) 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
TWM302355U (en) 2006-06-09 2006-12-11 Jia-Bau Jeng Fixation and cushion structure of knee joint
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US8006160B2 (en) 2006-06-29 2011-08-23 Digital Fountain, Inc. Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
JP2008011404A (ja) 2006-06-30 2008-01-17 Toshiba Corp コンテンツ処理装置及びコンテンツ処理方法
JP4392004B2 (ja) 2006-07-03 2009-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション パケット回復のための符号化および復号化技術
WO2008011549A2 (en) 2006-07-20 2008-01-24 Sandisk Corporation Content distribution system
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
RU2435235C2 (ru) 2006-08-24 2011-11-27 Нокиа Корпорейшн Система и способ указания взаимосвязей треков в мультимедийном файле
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
KR101089072B1 (ko) 2006-11-14 2011-12-09 퀄컴 인코포레이티드 채널 전환용 시스템 및 방법
US8027328B2 (en) 2006-12-26 2011-09-27 Alcatel Lucent Header compression in a wireless communication network
ES2935410T3 (es) 2007-01-05 2023-03-06 Divx Llc Sistema de distribución de vídeo que incluye reproducción progresiva
US20080168516A1 (en) 2007-01-08 2008-07-10 Christopher Lance Flick Facilitating Random Access In Streaming Content
EP2122874A1 (en) 2007-01-09 2009-11-25 Nokia Corporation Method for supporting file versioning in mbms file repair
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
CN101543018B (zh) 2007-01-12 2012-12-26 庆熙大学校产学协力团 网络提取层单元的分组格式、使用该格式的视频编解码算法和装置以及使用该格式进行IPv6标签交换的QoS控制算法和装置
KR20080066408A (ko) 2007-01-12 2008-07-16 삼성전자주식회사 3차원 영상 처리 장치 및 방법
US7949195B2 (en) 2007-01-16 2011-05-24 Cisco Technology, Inc. Per block breakpoint determining for hybrid variable length coding
KR101339120B1 (ko) 2007-01-24 2013-12-09 퀄컴 인코포레이티드 가변 크기들의 패킷들의 ldpc 인코딩 및 디코딩
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
US8873620B2 (en) 2007-05-16 2014-10-28 Thomson Licensing Apparatus and method for encoding and decoding signals
FR2917262A1 (fr) 2007-06-05 2008-12-12 Thomson Licensing Sas Dispositif et procede de codage d'un contenu video sous la forme d'un flux scalable.
US8487982B2 (en) 2007-06-07 2013-07-16 Reald Inc. Stereoplexing for film and video applications
US8274551B2 (en) 2007-06-11 2012-09-25 Samsung Electronics Co., Ltd. Method and apparatus for generating header information of stereoscopic image data
WO2008156390A1 (en) 2007-06-20 2008-12-24 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for improved media session management
US9712833B2 (en) 2007-06-26 2017-07-18 Nokia Technologies Oy System and method for indicating temporal layer switching points
US7917702B2 (en) 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
JP2009027598A (ja) 2007-07-23 2009-02-05 Hitachi Ltd 映像配信サーバおよび映像配信方法
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
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
AU2008298602A1 (en) 2007-09-12 2009-03-19 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
EP2046044B1 (en) 2007-10-01 2017-01-18 Cabot Communications Ltd A method and apparatus for streaming digital media content and a communication system
WO2009048277A2 (en) 2007-10-09 2009-04-16 Samsung Electronics Co., Ltd. Apparatus and method for generating and parsing mac pdu in a mobile communication system
WO2009054907A2 (en) 2007-10-19 2009-04-30 Swarmcast, 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
ATE546795T1 (de) 2007-11-23 2012-03-15 Media Patents Sl Ein prozess für die on-line-verteilung des audiovisuellen inhalts mit reklameanzeigen, reklameanzeigenmanagementssystem, digitalrechtmanagementsystem und audiovisuellem contentspieler versehen mit besagten systemen
US8543720B2 (en) 2007-12-05 2013-09-24 Google 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
KR101506217B1 (ko) 2008-01-31 2015-03-26 삼성전자주식회사 스테레오스코픽 영상의 부분 데이터 구간 재생을 위한스테레오스코픽 영상 데이터스트림 생성 방법과 장치, 및스테레오스코픽 영상의 부분 데이터 구간 재생 방법과 장치
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
US20090219985A1 (en) 2008-02-28 2009-09-03 Vasanth Swaminathan Systems and Methods for Processing Multiple Projections of Video Data in a Single Video File
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
CN103795511B (zh) 2008-04-14 2018-05-01 亚马逊技术股份有限公司 一种在基站接收上行链路传输的方法及基站
US20100049865A1 (en) 2008-04-16 2010-02-25 Nokia Corporation Decoding Order Recovery in Session Multiplexing
WO2009130561A1 (en) 2008-04-21 2009-10-29 Nokia Corporation Method and device for video coding and decoding
MX2010012117A (es) 2008-05-07 2010-12-01 Digital Fountain Inc Manipulacion de canal rapida y proteccion de corriente de alta calidad sobre un canal de difusion.
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 腾讯科技(深圳)有限公司 媒体文件的点播方法、系统和设备
US8370887B2 (en) 2008-05-30 2013-02-05 Microsoft Corporation Media streaming with enhanced seek operation
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
KR101019634B1 (ko) 2008-09-04 2011-03-07 에스케이 텔레콤주식회사 미디어 전송 시스템 및 방법
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
US8099476B2 (en) 2008-12-31 2012-01-17 Apple Inc. Updatable real-time or near real-time streaming
US8743906B2 (en) 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
CN104702960B (zh) 2009-01-26 2018-01-02 汤姆森特许公司 用于视频解码的装置
CN105472369B (zh) 2009-01-29 2017-09-12 杜比实验室特许公司 视频装置
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
US20100260268A1 (en) 2009-04-13 2010-10-14 Reald Inc. Encoding, decoding, and distributing enhanced resolution stereoscopic video
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
WO2011009205A1 (en) 2009-07-22 2011-01-27 Jigsee 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
RU2552378C2 (ru) 2009-09-02 2015-06-10 Эппл Инк Способ беспроводной связи с использованием пакетных данных мас
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 コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供
CN102473159A (zh) 2009-11-04 2012-05-23 华为技术有限公司 媒体内容流播的系统和方法
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
KR101786050B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 전송 방법 및 장치
CN101729857A (zh) 2009-11-24 2010-06-09 中兴通讯股份有限公司 一种接入视频服务的方法及视频播放系统
CA2783592A1 (en) 2009-12-11 2011-06-16 Nokia Corporation Apparatus and methods for describing and timing representations in streaming media files
EP2537319B1 (en) 2010-02-19 2016-02-10 Telefonaktiebolaget L M Ericsson (publ) Method and arrangement for adaption in http streaming
RU2690755C2 (ru) 2010-02-19 2019-06-05 Телефонактиеболагет Л М Эрикссон (Пабл) Способ и устройство для переключения воспроизведений в потоковой передаче по протоколу передачи гипертекста
JP5071495B2 (ja) * 2010-03-04 2012-11-14 ウシオ電機株式会社 光源装置
MX2012010523A (es) 2010-03-11 2012-10-15 Electronics And Telecomunications Res Inst Metodo y aparato para transmision-recepcion de datos en un sistema de multiple entrada multiple salida.
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
KR20120010089A (ko) 2010-07-20 2012-02-02 삼성전자주식회사 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
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
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates 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
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20070195894A1 (en) 2006-02-21 2007-08-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems

Also Published As

Publication number Publication date
US20110299629A1 (en) 2011-12-08
EP2467942B1 (en) 2018-05-02
WO2011022555A3 (en) 2011-09-29
RU2519524C2 (ru) 2014-06-10
HK1172164A1 (en) 2013-04-12
US20160087755A1 (en) 2016-03-24
WO2011022555A2 (en) 2011-02-24
CN102640422A (zh) 2012-08-15
JP5819495B2 (ja) 2015-11-24
KR20130111650A (ko) 2013-10-10
KR20120058556A (ko) 2012-06-07
JP5602858B2 (ja) 2014-10-08
RU2554556C2 (ru) 2015-06-27
TW201118555A (en) 2011-06-01
HUE037486T2 (hu) 2018-08-28
TWI566089B (zh) 2017-01-11
ZA201201843B (en) 2012-11-28
CN102640422B (zh) 2015-02-11
TW201430555A (zh) 2014-08-01
TWI437422B (zh) 2014-05-11
JP2015015733A (ja) 2015-01-22
EP2467942A2 (en) 2012-06-27
JP2013502849A (ja) 2013-01-24
BR112012003688A2 (pt) 2020-08-11
CA2982574C (en) 2020-12-15
KR101421286B1 (ko) 2014-07-18
ES2673513T3 (es) 2018-06-22
RU2013139729A (ru) 2015-03-10
US20170033892A1 (en) 2017-02-02
RU2012110248A (ru) 2013-09-27
US9660763B2 (en) 2017-05-23
US9876607B2 (en) 2018-01-23
US9419749B2 (en) 2016-08-16
CA2771622A1 (en) 2011-02-24
CA2771622C (en) 2018-04-24
CA2982574A1 (en) 2011-02-24
MY174793A (en) 2020-05-15
BR112012003688B1 (pt) 2021-03-23

Similar Documents

Publication Publication Date Title
KR101451338B1 (ko) 인코딩 및 디코딩 프로세스들을 위해 심볼들의 영속적 비활성화에 의한 fec 코드들을 활용하는 방법 및 장치
KR101355761B1 (ko) 통신 시스템의 다중 필드 기반 코드 발생기 및 디코더
US7956772B2 (en) Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
KR101161193B1 (ko) 파일 다운로드 및 스트리밍 시스템
JP5485008B2 (ja) 連鎖的暗号化反応の系統的記号化および復号化
KR101041762B1 (ko) 통신 채널을 통해 소스로부터 목적지로 데이터를 송신 및 인코딩하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
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: 20180928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 6