KR101451985B1 - 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴코딩 방법 - Google Patents

서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴코딩 방법 Download PDF

Info

Publication number
KR101451985B1
KR101451985B1 KR1020080035837A KR20080035837A KR101451985B1 KR 101451985 B1 KR101451985 B1 KR 101451985B1 KR 1020080035837 A KR1020080035837 A KR 1020080035837A KR 20080035837 A KR20080035837 A KR 20080035837A KR 101451985 B1 KR101451985 B1 KR 101451985B1
Authority
KR
South Korea
Prior art keywords
symbol
input
sub
symbols
block
Prior art date
Application number
KR1020080035837A
Other languages
English (en)
Other versions
KR20080093923A (ko
Inventor
정도영
박태성
오윤제
서덕영
박광훈
최범석
Original Assignee
삼성전자주식회사
경희대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 경희대학교 산학협력단 filed Critical 삼성전자주식회사
Publication of KR20080093923A publication Critical patent/KR20080093923A/ko
Application granted granted Critical
Publication of KR101451985B1 publication Critical patent/KR101451985B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • 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

Abstract

본 발명은 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 코딩 방법에 있어서, 입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나누는 과정과, 입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나눈 것에 대응되도록 입력 심볼의 인코딩 시간을 동일한 서브 시간 구간으로 나누는 과정과, 서브 블록에 해당되는 크기의 심볼을 입력받아, 초기 입력 심볼(Symbols)을 생성하고 초기 입력 심볼을 이용하여 초기 출력 심볼을 생성하여 출력하는 과정과, 서브 시간 구간마다 인코딩할 새로운 서브 블록에 해당되는 심볼들을 순차적으로 입력받아 입력 심볼에 추가하고, 가장 이전에 입력받은 서브 블록에 해당되는 심볼을 입력 심볼에서 제거하여 입력 심볼을 업데이트하는 과정과, 가장 이전에 입력받은 서브 블록에 관련된 출력 심볼을 업데이트하는 과정과, 업데이트된 출력 심볼을 이용하여 패킷을 생성하는 과정을 포함한다.
Figure R1020080035837
비디오 코딩, Fountain code, Raptor code, 서브블록

Description

서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 코딩 방법{A SUB-BLOCK BASED CYCLIC UPDATING METHOD FOR LOW-DELAY FOUNTAIN CODING}
본 발명은 비디오 코딩에 관한 것으로서 특히, 지연에 민감한 실시간 멀티미디어 서비스에서 패킷 손실 복원을 위해 파운틴 코드(Fountain code) 사용시 지연을 최소화하는 방법에 관한 것이다.
채널 코딩의 부호율을 '(기존 정보의 양)/(부호화한 데이터의 양)'으로 표현할 경우, 파운틴 코드(Fountain code)는 부호화한 데이터의 양이 미리 정해지지 않아 'Rateless' 코드라고도 불린다. 파운틴 코드는 송신단 측에서 수신단에 대한 정보가 부족하거나 수신단의 수가 매우 많을 때처럼 양방향 정보 전송이 어려울 때에도 단방향 전송만으로 에러 없이 완벽한 수신을 가능하게 한다는 장점을 가지고 있어 컴퓨터 네트워크 내에서의 멀티캐스트 등에서 필요성이 제기되었다. 파운틴 코드는 다음과 같은 방식을 기초로 한다. 먼저 송신단에서는 전송할 파일을 이용하여 끊임없이 부호화된 패킷을 만들어서 전송한다. 그러면 각각의 수신단은 피드백이 필요 없이 복호화가 가능할 정도의 패킷만을 수신하여 복호화한다. 이로써 파운틴 코드는 네트워크의 과부하를 발생시키는 재전송요청을 없애고 수신단에게 비동 기 수신을 제공할 수 있다.
파운틴 코드의 원리 및 장점은 하기의 문헌에 소개된다.
- Byers, John W. et al.; "A Digital Fountain Approach to Reliable Distribution of Bulk Data"; 1998, Computer Communication Review, Association for Computing Machinery, vol. 28, No. 4, pp. 56-67.
이처럼 파운틴 코드는 데이터의 출처에 관계없이 원하는 양만큼의 데이터만 받으면 처리가 가능하다는 점에서 의미가 있다. 파운틴 코드는 k개의 입력 심볼을 이용하여 무한대의 출력 심볼을 생성할 수 있다. 각각의 출력 심볼은 임의적으로 입력 심볼들을 이용하여 생성한다. 출력 심볼은 다른 출력 심볼과 상관성을 지니지 않으며 k보다 약간 큰 m개의 출력 심볼을 이용하여 본래의 입력 심볼을 복구하는 것이 가능하다. P2P(Peer-to-Peer network)에서는 수신측은 같은 데이터를 전송하는 여러 송신측과 연결을 하고 어느 송신측에서 보낸 데이터인지에 관계없이 k보다 약간 더 많은 m개의 심볼을 받음으로써 본래 데이터를 복구할 수 있다. 이는 수신측이 네트워크 상황이 다른 여러 송신측과 연결을 한 경우, 네트워크 성능이 좋지 않은 송신측보다 네트워크 성능이 좋은 송신측으로부터 더 많은 심볼들을 수신할 수 있으며, 각각의 심볼들은 연관성을 지니지 않으므로 총 수신한 심볼들의 수가 m개를 넘으면 본래 데이터를 복구할 수 있다.
파운틴 코드에 해당되는 첫 번째 발명은 1998년 발표된 LT 코드(Luby Transform codes)이며, 2004년에는 'Amin Shokrollahi'에 의하여 랩터 코드(Raptor code)가 개발되었다.
랩터 코드는 DVB-H(Digital Video Broadcasting-Handheld)의 에플리케이션 계층에서의 표준으로 채택되었다. 이 코드는 기존의 파운틴 코드인 LT 코드보다 복호화 과정의 연산량 측면에서 더 좋은 성능을 가지고 있다. LT 코드의 가장 큰 단점은 소스 심볼을 복구하는데 필요한 연산량이 선형적이지 못하다는 것이었는데, 랩터 코드는 이러한 단점을 보완하여 부호화 연산량을 선형 시간 이내로 유지하면서 선형 시간의 복호화 연산량을 얻을 수 있게 한다.
이렇게 랩터 코드는 LT코드와 토네이도 코드의 장점을 살린 발전된 형태이다. LT코드에 LDPC(Low Density Parity Check) 전처리 단계를 추가 함으로서 적은 정보량에서의 복호율을 향상시켰다. 또한 LT코드는 체계적인(systematic) 코드가 아니지만 랩터 코드는 전처리 단계를 추가함으로써 체계적인 코드의 특징을 지닌다. 추가로 토네이도와 달리 랩터코드와 LT 코드는 정해진 레이트(rate)가 없다. 이는 필요에 따라 무한대의 추가 패킷을 생성할 수 있음을 의미한다. 또한 랩터 코드는 토네이도 코드와 달리 그래프(graph)가 로그밀도로 생성된다. 또한 랩터 코딩 방식은 선형적인 bitpartite 그래프를 이용함으로써 매우 빠른 확률적 복호화를 수행한다.
데이터 심볼 k개에 대해서 n-k개의 패러티 심볼이 계산되는 체계적인 코드(systematic code)에서는 처음 k개의 심볼은 데이터 심볼이 되고, 다음 n-k개의 심볼은 패러티 심볼이 된다. Reed Solomon 코드에서는 k개의 데이터 심볼 모두에 종속적으로 모든 n-k개의 패러티 심볼이 생성된다. 그런데 파운틴 코드에서는 하나의 패러티 심볼은 각각 다른 집합인 일부의 데이터 심볼에 종속적으로 만들어진다. 어떤 데이터 심볼의 집합으로 생성되었는지에 대한 정보는 패러티 심볼과 함께 전송되어야 한다.
도 1은 종래의 랩터 코딩의 동작 단계에서 각 심볼들을 보여주는 예시도이다. 도 1을 참조하면, 먼저 입력 심볼(Source Symbols)(110)에 대한 pre-coding(Inverse LT Encoding, LDPC & Half Symbol Encoding)을 통하여 입력 심볼(110)을 중간 심볼(Intermediate Symbols)(120)로 변환시키며, 중간 심볼(120)을 LT 코딩하여 무한대의 크기를 가질 수 있는 출력 심볼(130)을 생성할 수 있다. 또한 체계적인 코드(systematic)의 특징을 지니기 위하여 첫 K개의 출력 심볼(130)은 입력 심볼(110)과 같은 값을 가지게 되며 각 출력 심볼(130)들은 임의로 선택된 중간 심볼(120)들 간의 XOR 결과로서 나타난다.
한편, Reed Solomon 방식을 이용하여 이레이저(erasure)를 복원하는 방법은 하기와 같다. RS[n,k]를 이용하면 k개의 데이터 패킷을 전송할 때, n-k개의 패러티 패킷을 만들어서 전송중에 n-k개 이하의 패킷이 손실되었을 때, 수신측에서 모두 복원할 수 있다. 상기 방식은 재전송을 요구하는 방식보다 시간을 절약할 수 있으므로 실시간 서비스에서 이용된다. 이때 몇 번째 패킷이 손실되었는지 여부는 RTP 패킷 헤더에 있는 시퀀스 번호를 보고 알 수 있다. 이렇게 손실된 위치를 아는 손실을 이레이저라고 한다. 이때 n-k보다 더 많은 손실이 발생하면 잃어버린 패킷을 하나도 복원할 수 없다.
Reed Solomon 코드와 같은 블록 코드에서는 콘볼루션널 코드와 달리 입력 심볼을 k개 단위로 나누고 n개의 출력 심볼을 계산한다. 즉, nⅹk 크기의 생성 행 렬(generator matrix)을 크기 k인 벡터에 곱하여 n개의 출력 심볼을 계산할 수 있다. 이때 생성 행렬의 앞쪽이 kⅹk indentity 행렬이면 시스테메틱코드(systematic code)가 되어 n개중 처음 k개는 입력 심볼을 그대로 출력한다. 나머지 출력은 하나 이상의 입력 심볼에 계수를 곱하고 더하여 계산한다. 입력을 k개씩 끊어서 처리하고, 이에 대한 n개의 출력이 수신측에 입력되기 전까지는 복원을 할 수 없으므로 항상 k개의 입력이 생성되는 시간(또는 수신측에서 소비되는 시간)동안만큼 지연이 발생하게 된다. 이러한 지연을 최소화하기 위해 입력블록 크기 k를 줄이게 되면 같은 코드율(k/n)이라도 손실 복원능력이 저하된다. 따라서, k는 충분히 크면서도 코딩 지연은 줄일 수 있는 방법이 필요하다.
본 발명은 비디오 폰과 같은 지연에 민감한 실시간 멀티미디어 서비스에서 손실이 발생하는 무선 인터넷망을 통해 데이터가 전송될 경우 지연을 줄일 수 있는 손실 복원 방법을 제공하고자 한다.
이를 달성하기 위한 본 발명의 일 형태에 따르면, 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 코딩 방법에 있어서, 입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나누는 과정과, 상기 입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나눈 것에 대응되도록 상기 입력 심볼의 인코딩 시간을 동일한 서브 시간 구간으로 나누는 과정과, 상기 서브 블록에 해당되는 크기의 심볼을 입력받아, 초기 입력 심볼(Symbols)을 생성하고 상기 초기 입력 심볼을 이용하여 초기 출력 심볼을 생성하여 출력하는 과정과, 상기 서브 시간 구간마다 인코딩할 새로운 서브 블록에 해당되는 심볼들을 순차적으로 입력받아 상기 입력 심볼에 추가하고, 가장 이전에 입력받은 서브 블록에 해당되는 심볼을 상기 입력 심볼에서 제거하여 상기 입력 심볼을 업데이트하는 과정과, 상기 가장 이전에 입력받은 서브 블록에 관련된 출력 심볼을 업데이트하는 과정과, 상기 업데이트된 출력 심볼을 이용하여 패킷을 생성하는 과정을 포함함을 특징으로 한다.
본 발명의 다른 형태에 따르면, 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 디코딩 방법에 있어서, 초기 출력 심볼을 이용하여 생성된 패킷 을 입력받아 디코딩하여 복원 심볼을 생성하는 과정과, 인코딩된 서브 블록의 정보를 포함한 패킷 수신시 상기 복원 심볼을 이용하여 원래의 서브 블록을 복원하는 과정과, 상기 복원 심볼에서 새로 수신한 서브 블록에 해당되는 심볼들은 추가하고, 가장 이전의 수신한 서브 블록에 해당되는 심볼들은 제거하여 상기 복원 심볼을 업데이트하는 과정을 포함함을 특징으로 한다.
본 발명은 손실이 발생하는 네트워크 환경에서 멀티미디어 스트림을 전송할 경우, 비디오 폰과 같은 대화형 서비스에 사용되는 파운틴 코드와 같은 손실 복원코드에 의한 지연을 최소화할 수 있는 효과가 있다.
특히 랩터 코드(Raptor code)나 LDPC(Low Density Parity Check)와 같은 파운틴 코드를 사용할 경우, 기존에 블록의 크기(입력심볼의 개수) k가 적어도 1000이상 되어야 성능을 발휘하는데 본 발명은 상기 크기를 유지하면서 지연을 효과적으로 줄일 수 있다.
이하 첨부된 도면을 참조하여 본 발명을 구성하는 장치 및 동작 방법을 본 발명의 실시 예를 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 구성 소자 등과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
기존의 Reed Solomon 코드에서는 k개의 입력 심볼에 대해서 n개의 출력 심볼이 만들어진다. 따라서, k개의 입력이 만들어지는 시간 T만큼 지연이 발생하게 된다. 예를 들어 1초에 30프레임이 지나가는 비디오의 경우 1초마다 코드를 적용하면 적어도 T=1초의 지연이 생기게 된다. 주문형 비디오와 같이 스트리밍 서비스에서는 이 정도의 지연이 크게 문제되지 않는다. 그러나 비디오폰과 같은 대화형 서비스인 경우에는 이러한 지연이 허용되지 않는다. 대부분의 손실 복원코드는 같은 코드율(k/n)일 때, k가 클수록 복원능력이 향상된다. 따라서, 복원능력과 코딩지연과는 서로 교환조건(trade-off)이 성립한다. 본 발명은 복원능력을 유지하면서 지연을 최소화하는 방법을 제시한다.
본 발명은 T시간마다 생성되는 k개의 입력 심볼을 시간적으로 M등분하여 T/M시간마다 출력 심볼들을 업데이트한다. M은 k의 약수가 되는 것이 바람직하다. 이렇게 하여 지연시간을 원래의 지연시간 T에서 T/M로 단축한다. T/M시간마다 가장 오래된 k/M개의 데이터를 지우고 새로운 k/M 데이터를 입력받아 전체 k개의 심볼에 대한 n개의 출력을 생성한다. 이 경우 본 발명은 새로운 k/M개의 입력과 관련 있는 출력 심볼만 업데이트한다. 이에 따라 매 T/M시간 동안에는 새로 들어온 입력 데이터와 업데이트된 출력 심볼만 전송한다. 이러한 출력은 순차적으로 이루어지게 된다. 먼저 k개의 입력에 대한 n개의 출력을 송신과 수신측에서 교환한 이후에는 k/M개의 입력에 대한 출력을 전송하면서 순차적으로 k/M 단위로 진행할 수 있게 된다.
업데이트되는 확률은 간단하게 다음과 같이 추정할 수 있다. 출력 심볼당 평균 에지수가 d개이고, k개의 입력 블록을 M개로 나누는 경우, 하나의 에지가 업데이트되는 서브 블록(sub-block)에 속하지 않을 확률은 (M-1)/M이다. d개의 에지가 모두 업데이트되는 서브 블록에 속하지 않을 확률은 Premain = ((M-1)/M)e이 된다. 업데이트가 될 확률은 Pupdate = 1-Premain 이며 본 발명의 오버헤드는 이 비율이 1/M보다 얼마나 큰지로 결정된다.
이하 도면을 참조하여 본 발명의 더욱 상세히 설명하기로 한다.
도 2는 3GPP(The 3rd Generation Partnership Project) MBMS(Multimedia Broadcast/Multicast Service)에서 송수신기의 계층 구조를 나타내는 블록 구성도이다(3GPP TS 26.346, 2006.12 참조).
MBMS는 3GPP에서 개발 중인 멀티미디어 브로드캐스트/멀티캐스트 서비스 표준으로서 데이터 패킷을 다수의 사용자들에게 동시에 전송하는 서비스이고 멀티미디어 데이터 전송을 목적으로 한다. 도 2를 참조하면, 먼저 송신측(sender)의 오디오(Audio), 비디오(Video), 텍스트(Text) 데이터는 실시간 전송을 위한 RTP & RTCP(Real-time Transport Control Protocol)와, 미디어의 보안을 위한 SRTP(Secure RTP)를 사용하며, 키 핸들링(Key handling)은 키 관리 프로토콜인 MIKEY(Multimedia Internet KEYing)를 사용한다. 상기 데이터들은 에러 정정을 위한 FEC 계층(FEC Layer)에서 FEC 인코딩되어 UDP(User Datagram Protocol)를 이용하여 MBMS를 위해 다수의 사용자들에게 전송된다. 수신측(Receiver)은 상기 송신측에서 전송된 데이터를 수신하여 UDP를 거쳐 FEC 계층에서 손실된 에러를 정정하고 데이터를 복구한다. 상기 FEC 계층에서는 에러 정정을 위해 손실 복원 코드가 사용되며 본 발명은 상기 손실 복원 코드에 적용하여 사용될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 코딩 동작시 심볼의 업데이트 동작을 보여주는 예시도이다. 손실 복원 코드에서는 같은 코드율(k/n)이라도 k가 클수록 손실 복원능력이 좋다. 그러나 k가 크면 지연이 그만큼 지연이 더 발생한다. 본 발명은 본 발명의 특징에 따라 k값을 그대로 유지하면서 지연을 최소화하게 하기 위하여 크기 k인 블록을 M개의 서브 블록(sub-block)으로 나누어 한 번의 시간 단위당 하나의 서브 블록의 크기만큼 심볼을 업데이트한다. 서브 블록은 꼭 M으로 나누어진 수가 아니어도 수신측이 총 코드의 길이만 안다면 문제가 되지 않는다. 또한 수신측이 이미 복원한 코드중에서 어떤 부분이 쓰이는지 알 수 있어야 한다. 도 3에 도시한 바와 같이, 도 3의 예에서는 k는 16이고 M은 4이다. 먼저 처음 k개의 입력에 대해서 n개의 출력이 수신측에 전달되고, 다음 n개의 출력 심볼 중에서 가장 오래된 k/M개의 서브 블록에 에지(edge, 계수가 0이 아닌 경우)가 있는 출력 심볼을 선택하여 업데이트한다. 이 출력 심볼에서는 에지가 하나만 있을 수 있다. 해당 입력 심볼과 해당 에지의 계수를 곱하여 나온 수를 해당 출력 심볼에서 빼고 같은 위치의 새로운 입력 심볼에 해당 에지의 계수를 곱하여 나온 수를 수정된 해당 출력 심볼에 더하여 새로운 출력 심볼을 만든다.
에를 들어, 도 3에 도시한 바와 같이 과거의 왼쪽에 있는 4개의 심볼이 제거되고 새로운 4개의 입력이 오른쪽에서 왼쪽으로 입력되는 경우를 가정하면, 출력 심볼 y6는 x2에 에지가 연결되어있으므로 과거의 x2와 새로운 x2를 한번씩 y6에 XOR을 하여 새로운 y6로 업데이트 하고 수신측으로 전송해야한다. 그러나, y7은 새로 업데이트되는 4개의 입력과 관계없으므로 다시 전송할 필요가 없다.
Reed Solomon인 경우에는 계수가 갈로아 체(Galois Field)에 속한 여러 값 중에 하나이지만, LDPC(Low Density Parity Check)나 랩터(Raptor) 코드에서는 0과 1만이 가능하므로 에지가 0이 아닌 경우에 과거의 입력 심볼과 새로운 입력 심볼을 한번씩 XOR을 하면 새로운 출력 심볼이 만들어진다. Reed Solomon인 경우 입력심볼을 그대로 전송하는 부분을 제외하고는 모든 출력 심볼이 모든 입력 심볼과 관련이 있다. 즉, 모든 계수가 대부분 0이 아니다. 이 경우에는 출력 심볼을 거의 다 업데이트해야하므로 본 발명에 의한 오버헤드가 커진다. 그러나, LDPC나 랩터 코드의 경우에는 밀도(desity)가 낮으므로 본 발명을 적용할 경우 오버헤드가 크지 않다.
본 발명은 본 발명의 특징에 따라 인코딩시 초기 k개의 입력심볼은 하기와 같은 방법을 이용하여 생성한다. 초기에는 k(M-1)/M개의 가상 입력 심볼을 송신측과 수신측이 미리 설정하고, 실제 입력에서 마지막 서브 블록에 해당하는 k/M개의 심볼을 합하여 총 k개의 초기 입력 심볼을 만든다. 이 경우 가상 입력 심볼은 모두 1로 하거나 0으로 하는 것이 바람직하다.
또한 본 발명은 손실이 전파되는 것을 막기 위해 손실이 많이 발생하는 경우에는 손실이 복원되지 못한 상황이 누적되어 복원력이 떨어질 수 있으며 일정한 시간마다 새로이 시작하도록 하는 리프레쉬 블록을 삽입할 수 있다. 이렇게 새로이 시작할 수 있게 하는 동작은 무작위접근(random access)을 위해서도 필요하다. 여기서도 가상 입력 심볼은 모두 1로 하거나 0으로 하는 것이 바람직하다. 리프레쉬 블록이 자주 삽입될수록 코딩효율이 떨어지므로 리프레쉬 블록의 주기는 손실율과 랜덤접근의 조건에 따라 적절히 결정한다.
또한 본 발명은 백시그널링(back signaling)을 이용하여 현재의 손실율에 따라 적응적으로 동작할 수 있다. 만일 수신기로부터 현재의 손실 복원율을 전달받을 수 있다면 이에 따라 패러티 심볼의 전송율을 조절하여 필요한 만큼의 코딩율을 유지할 수 있다. 즉, 손실 복원율이 나빠지면, 패러티 심볼을 더 많이 전송하고, 좋아지면 덜 보내도록 한다. 현재의 복원율은 미래에 영향을 미치므로 이러한 적응성이 중요하다. 따라서 현재의 손실 복원율이 나쁘면 상기와 같은 방식으로 미래의 손실 복원율을 높일 수 있다. 만일 전혀 복원할 수 없을 만큼 손실된 경우에는 리프레쉬 블록을 전송한다. 상기 적응적 방법을 이용하려면 왕복 지연 시간이 리프레쉬 기간보다 훨씬 짧아야 한다. 상기 왕복 지연 시간은 바람직하게 리프레쉬 기간의 1/4 정도가 적절하다.
또한 본 발명은 에지 분포를 조절하여 업데이트되는 출력 심볼 수를 줄일 수 있다. 각 출력 심볼에 대한 에지의 분포가 연속된 (M-1)/M에 분포하도록 코드를 만들게 되면 업데이트되는 출력의 심볼의 수를 최소화할 수 있다. 만일 모든 출력 심볼이 이 조건을 만족하면 한 서브 블록에 대해서 n/M개의 출력변수만 업데이트 하면 된다.
한편 서브 블록의 크기가 모두 같을 필요는 없다. 모든 서브 블록의 크기의 합은 블록의 크기 k가 되어야 한다.
에지에 무관하게 파운틴 코드의 실시간 생성을 위한 방법은 다음과 같다. 랩터 코드와 같이 송신자와 수신자가 정적인 에지 생성 방법을 매우 많이 가지고 있고, 입력 심볼이 출력 심볼에 존재하는 시스테메틱 코드 일 때 수신받은 코드를 다시 이용하여 미래에 수신될 코드의 실시간 복원을 위한 패러티로 이용할 수 있다. 이 방법은 파운틴 코드를 이용하여 k개의 입력 심볼(k가 매번 정적인 값일 필요는 없다)로 리페어 코드 생성시, k개에 심볼에 M개의 프레임에 해당하는 정보를 넣는다. M개의 프레임에 대한 심볼은 순차적이며 제일 마지막 프레임은 제일 최근에 인코딩된 프레임 또는 현재 전송되지 않은 다음에 전송될 정보이다. 이 이후 또 새로운 프레임이 인코딩되거나 또는 다음 전송될 정보가 준비된다면, 제일 이전의 프레임에 대한 정보를 k에서 제거하고 다음 정보를 k에 순차적으로 추가하여 새로운 k'를 생성한다. 이 k'를 이용하여 파운틴 코딩하여 리페어 코드를 생성한다. 생성된 파운틴 코드는 시스테메틱이라 과거에 보내진 원 심볼들은 동일하게 존재하고 수신단도 복원이 성공하였다면 수신단은 이 심볼들을 알 수 있다. 그러므로 새로 k'에 입력된 정보에 해당하는 파운틴 코드와 생성된 리페어 코드들만 수신측에 전송하면 된다. 수신측이 k개의 심볼을 복원하면 가장 이전의 정보를 제거하고 나머지는 새로 받을 다음 정보의 복원에 이용할 수 있다. 과거, 미래, 또는 최근의 프레임 단위는 단일 프레임이 아닌 여러 프레임의 묶음으로 설정할 수 있다.
또한 수신측은 각 패킷의 추가 정보로 전달되는 서브 블록의 ID로 프레임을 구분 할 수 있다. 또한 수신측은 수신한 총 코드에서 에지 생성 방법을 이용하여 동일한 에지를 만들 수 있다. 심볼의 프레임별 배열은 순차적이지 않아도 수신측이 배열을 알 수 있다면 바꿀 수 있다. 한편 본 발명은 k개의 심볼의 배열에서 제일 과거의 프레임에 대한 심볼을 시프트하여 제거하고 업데이트될 프레임의 심볼들을 추가하는 논리적 구조를 이용할 수 있으며, 과거의 심볼의 위치에서 과거의 심볼을 제거 한 후 새 심볼을 그 자리를 대체하여 파운틴 코드를 생성할 수도 있다.
도 4는 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 시간에 따른 프레임 인코딩 동작을 나타낸 예시도이다. 도 4의(a)는 두 프레임으로 하나의 패킷을 생성하는 본 발명의 일 실시 예에 따른 저지연 코딩 방식을 개략적으로 나타낸 도면이며, 도 4의(b)는 기존의 방식을 나타낸 도면이다. 기존의 방식은 본 발명과 달리 패킷에 들어가는 프레임 수만큼 지연이 생긴다.
도 5는 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 시간에 따른 프레임 인코딩 동작을 나타낸 예시도이다. 도 5의 (a)는 두 프레임으로 하나의 패킷을 생성하는 본 발명의 일 실시 예에 따른 저지연 코딩 방식을 개략적으로 나타낸 도면이며, 도 5의(b)는 저지연을 위한 기존의 방식을 나타낸 도면이다. 기존의 방법은 부호화를 위한 패킷의 길이를 줄여서 지연을 줄였지만, 이에 따라 복원 성공 확률이 떨어진다.
도 6은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 출력 심볼 n을 업데이트하며 전송하는 동작을 개략적으로 보여주는 예시도이다. 도 6을 참조하면, 프레임 Cx에서 각 k(인코딩되기 위한 입력 심볼)를 두 개의 세그먼트(서브 블록)로 나누어서 파운틴 코드를 생성하고, 한 세그먼트씩 업데이트하며 전송한다. 이때 맨 처음 세트에서는 첫번째 세그먼트가 더미 심볼(Dummy Symbols)이 된며, 세트가 진행됨에 따라 새로운 세그먼트를 입력받아 출력 심볼을 업데이트 하며 이전의 세그 먼트는 제거한다. 수신측은 이미 과거의 복원된 심볼을 미래의 수신될 심볼의 복원에 이용함으로서 보다 적은 심볼이 수신되었을 때에도 더욱 높은 복원률을 가질 수 있다.
손실 정정 코드의 종류에는 콘볼루셔널 코드와 블록 코드가 있으며, 블록 코드에서는 한 블록에 속한 데이터를 가지고 전체적으로 손실 복원을 하므로 블록 크기만큼의 지연이 발생한다. 블록의 크기는 유지하면서 하나의 블록을 여러 개의 서브 블록으로 나누어서 하나의 서브 블록만큼의 입력 심볼을 교체하며 업데이트해야하는 출력 심볼들은 새로 전송한다.
도 7은 본 발명의 일 실시 예에 따른 송수신단의 저지연 코딩 동작의 흐름도이다. 먼저 705단계에서 송신단은 새로운 입력 심볼인 서브 블록 k/M을 입력받는다. 다음 710단계에서 이전에 저장된 입력 심볼 k(M-1/M)에 상기 새로운 입력 심볼 k/M을 추가한다. 다음 720단계에서 이전에 사용된 마지막 서브 블록을 제거하며, 새로운 서브 블록 k/M을 입력 심볼 k에 추가하며, 이에 따라 출력 심볼을 업데이트 한다. 다음 725단계에서 상기 720단계에서 업데이트된 입력 심볼 k를 이용하여 인코딩을 수행하며 이에 따른 패킷을 생성한다. 다음 730단계에서 패킷을 수신단으로 전송한다. 이 경우 본 발명은 새로 업데이트 된 출력 심볼만을 수신단으로 전송한다. 다음 735단계에서는 수신단에서 송신단으로부터 데이터 패킷을 수신하며, 다음 740단계에서는 이전에 복원한 심볼(복원 심볼)을 이용하여 코드를 복원한다. 또한 740단계에서 수신단은 필요에 따라 송신단에게 심볼의 종속성을 제거한 초기 전송의 방법으로 전송을 요청하거나, 또는 패러티의 추가 또는 제거를 요청할 수 있다. 다음 745단계에서 새로 입력된 서브 블록을 구분하며, 750단계에서 다음 복원을 위해 사용할 복원 심볼을 메모리에 저장한다. 상기 복원 심볼은 740단계에서 새로 들어올 심볼들에 대한 정보의 복원에 이용할 수 있다. 다음 740단계에서 코드 복원 후 755단계에서 서브 블록 k/M을 복원하여 사용한다.
도 8은 본 발명의 일 실시 예에 따른 저지연 코딩 동작을 개략적으로 나타낸 도면이다. 도 8에 도시한 바와 같이 본 발명의 일 실시 예에 따른 저지연 코딩은 인코더의 메모리 버퍼에 입력 심볼 k를 저장하며 저장된 입력 심볼에 새로 입력되는 서브 블록 k/M을 추가하고 사용이 필요없는 이전 서브 블록을 제거한다. 상기 입력 심볼과 필요한 정보는 시스테메틱 코드 생성기에 보내져 시스테메틱 코드가 생성된다. 이 경우 이미 복원된 정보를 제외한 새로 업데이트 된 부분과 추가 복원된 심볼들만 수신측으로 전달된다.
도 9는 본 발명의 일 실시 예에 따른 저지연 디코딩 동작을 개략적으로 나타낸 도면이다. 도 9에 도시한 바와 같이 본 발명의 일 실시 예에 따른 저지연 디코딩은 디코더는 이전에 복원한 심볼들(복원심볼)을 송신측에서 수신한 것으로 가정하고 재이용을 할 수 있다. 실제 수신된 심볼과 과거에 복원된(송신측에서 코드생성에 이용한 부분) 부분을 이용하여 필요한 심볼들을 복원하고 이를 또 이용하기 위하여 메모리버퍼에 저장한다. 더 이상 필요가 없는 이전 서브 블록은 제거되고 새로운 서브 블록은 메모리버퍼에 추가되며 상기 새로운 서브 블록은 디코더의 출력이 된다.
도 10은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 M의 크기에 따 른 업데이트 확률을 나타내는 선형도이다. 도 10에 도시한 바와 같이 본 발명의 일 실시 예에 따른 저지연 코딩 방식을 사용하는 경우 M이 클수록 심볼이 업데이트될 확률이 줄어든다. 도 11은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 차수(degree)에 따른 업데이트 확률을 나타내는 선형도이다. 도 11에 도시한 바와 같이 본 발명의 일 실시 예에 따른 저지연 코딩 방식을 사용하는 경우 차수가 높을수록 업데이트 확률이 커진다.
만일 모든 에지가 매번 업데이트 되고 k가 일정하다 할 때 기존의 방법은 각 k에 포함되는 프레임의 수가 n이라 하면, n*packets 번 코드를 생성하여야 한다. 반면 본 발명은 각 프레임마다 k의 코드를 만들어서 전송하므로, m*n*packets 번의 코드 생성을 하게 된다. 하지만 파운틴 코드는 기존의 Reed-Solomon 방식에 비하여 매우 연산량이 적기 때문에 상기와 같은 오버헤드는 각 프레임을 실시간 처리시에 동시에 처리하기가 용이하다.
상기와 같이 본 발명의 일 실시 예에 따른 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 코딩 방법의 동작이 이루어질 수 있으며, 한편 상기한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다.
도 1은 종래의 랩터(Raptor) 코딩 방식에서 코딩 동작시 각 단계의 심볼들을 보여주는 예시도
도 2는 3GPP(The 3rd Generation Partnership Project) MBMS(Multimedia Broadcast/Multicast Service)에서 송수신기의 계층 구조를 나타내는 블록 구성도
도 3은 본 발명의 일 실시 예에 따른 코딩 동작시 심볼의 업데이트 동작을 보여주는 예시도
도 4는 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 시간에 따른 프레임 인코딩 동작을 나타낸 예시도
도 5는 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 시간에 따른 프레임 인코딩 동작을 나타낸 예시도
도 6은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 업데이트하며 전송하는 동작을 개략적으로 보여주는 예시도
도 7은 본 발명의 일 실시 예에 따른 송수신단의 저지연 코딩 동작의 흐름도
도 8은 본 발명의 일 실시 예에 따른 저지연 코딩 동작을 개략적으로 나타낸 도면
도 9는 본 발명의 일 실시 예에 따른 저지연 디코딩 동작을 개략적으로 나타낸 도면
도 10은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 M의 크기에 따 른 업데이트 확률을 나타내는 선형도
도 11은 본 발명의 일 실시 예에 따른 저지연 코딩 방법에서 차수(degree)에 따른 업데이트 확률을 나타내는 선형도

Claims (12)

  1. 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 코딩 방법에 있어서,
    입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나누는 과정과,
    상기 입력 심볼을 미리 설정된 개수의 동일한 서브 블록으로 나눈 것에 대응되도록 상기 입력 심볼의 인코딩 시간을 동일한 서브 시간 구간으로 나누는 과정과,
    상기 서브 블록에 해당되는 크기의 심볼을 입력받아, 초기 입력 심볼(Symbols)을 생성하고 상기 초기 입력 심볼을 이용하여 초기 출력 심볼을 생성하여 출력하는 과정과,
    상기 서브 시간 구간마다 인코딩할 새로운 서브 블록에 해당되는 심볼들을 순차적으로 입력받아 상기 입력 심볼에 추가하고, 가장 이전에 입력받은 서브 블록에 해당되는 심볼을 상기 입력 심볼에서 제거하여 상기 입력 심볼을 업데이트하는 과정과,
    상기 가장 이전에 입력받은 서브 블록에 관련된 출력 심볼을 업데이트하는 과정과,
    상기 업데이트된 출력 심볼을 이용하여 패킷을 생성하는 과정을 포함함을 특징으로 하는 코딩 방법.
  2. 제 1항에 있어서, 상기 가장 이전에 입력받은 서브 블록에 관련된 출력 심볼은,
    가장 이전에 입력받은 서브 블록에 포함된 심볼들중에서 어느 한 심볼과 에지(edge)가 연결된 출력 심볼이며,
    상기 에지의 계수는 0이 아닌 값임을 특징으로 하는 코딩 방법.
  3. 제 2항에 있어서, 상기 출력 심볼을 업데이트하는 과정은,
    업데이트할 상기 출력 심볼에 에지가 연결된 입력 심볼과 해당 에지의 계수를 곱하여 나온 수를 업데이트할 상기 출력 심볼에서 빼 출력 심볼을 수정하는 과정과,
    상기 출력 심볼의 수정에 사용된 입력 심볼과 서브 블록 내에서 같은 위치에 위치한, 새로 입력된 서브 블록에 포함된 입력 심볼에 해당 에지의 계수를 곱하여 나온 수를 상기 수정된 출력 심볼에 더하여 새로운 출력 심볼로 업데이트 하는 과정을 포함하며,
    상기 에지가 연결된 출력 심볼과 상기 에지가 연결된 입력 심볼은 동일한 에지에 연결된 심볼임을 특징으로 하는 코딩 방법.
  4. 제 2항에 있어서, 상기 출력 심볼을 업데이트하는 과정은,
    상기 업데이트하는 출력 심볼에 에지가 연결된 입력 심볼과 업데이트할 출력 심볼을 XOR하여 나온 값으로 상기 출력 심볼을 수정하는 과정과,
    상기 출력 심볼의 수정에 사용된 입력 심볼과 서브 블록 내에서 같은 위치에 위치한, 새로 입력된 서브 블록에 포함된 입력 심볼과 상기 수정된 출력 심볼을 XOR하여 나온 값으로 출력 심볼을 업데이트 하는 과정을 포함하며,
    상기 에지가 연결된 출력 심볼과 상기 에지가 연결된 입력 심볼은 동일한 에지에 연결된 심볼임을 특징으로 하는 코딩 방법.
  5. 제 1항에 있어서, 상기 초기 입력 심볼은,
    상기 서브 블록에 해당되는 크기의 심볼을 입력받고, 나머지 부분은 가상 입력 심볼로 구성하는 것을 특징으로 하는 코딩 방법.
  6. 제 5항에 있어서, 상기 가상 입력 심볼은,
    모두 '1'의 값을 갖거나, 모두 '0'의 값을 갖는 것을 특징으로 하는 코딩 방법.
  7. 제 1항에 있어서, 미리 설정된 시간마다 입력 심볼을 초기 입력 심볼과 같은 형태로 만드는 리프레쉬 블록을 입력받는 과정을 더 포함함을 특징으로 하는 코딩 방법.
  8. 제 1항에 있어서, 현재 손실 복원율을 입력받아 상기 입력받은 손실 복원율에 따라 패러티 심볼의 전송율을 조절하는 과정을 더 포함함을 특징으로 하는 코딩 방법.
  9. 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴 디코딩 방법에 있어서,
    초기 출력 심볼을 이용하여 생성된 패킷을 입력받아 디코딩하여 복원 심볼을 생성하는 과정과,
    인코딩된 서브 블록의 정보를 포함한 패킷 수신시 상기 복원 심볼을 이용하여 원래의 서브 블록을 복원하는 과정과,
    상기 복원 심볼에서 새로 수신한 서브 블록에 해당되는 심볼들은 추가하고, 가장 이전의 수신한 서브 블록에 해당되는 심볼들은 제거하여 상기 복원 심볼을 업데이트하는 과정을 포함함을 특징으로 하는 디코딩 방법.
  10. 제 9항에 있어서, 미리 설정된 기준 이하로 손실 복원률이 낮아질 경우 초기 출력 심볼을 입력받기 위한 백 시그널링(Back signaling) 신호를 출력하는 과정을 더 포함함을 특징으로 하는 디코딩 방법.
  11. 제 9항에 있어서, 미리 설정된 시간마다 초기 출력 심볼을 입력받기 위한 백 시그널링 신호를 출력하는 과정을 더 포함함을 특징으로 하는 디코딩 방법.
  12. 제 9항에 있어서, 현재 디코딩 동작시의 손실 복원율을 조절하기 위해 현재 손실 복원율 정보를 포함한 백 시그널링 신호를 출력하는 과정을 더 포함함을 특징으로 하는 디코딩 방법.
KR1020080035837A 2007-04-17 2008-04-17 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴코딩 방법 KR101451985B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20070037218 2007-04-17
KR1020070037218 2007-04-17

Publications (2)

Publication Number Publication Date
KR20080093923A KR20080093923A (ko) 2008-10-22
KR101451985B1 true KR101451985B1 (ko) 2014-10-23

Family

ID=40154306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080035837A KR101451985B1 (ko) 2007-04-17 2008-04-17 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴코딩 방법

Country Status (1)

Country Link
KR (1) KR101451985B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101219611B1 (ko) * 2010-12-27 2013-01-21 대구대학교 산학협력단 6LoWPAN 상에서 원격업데이트를 위한 효율적인 코드 전파방법
KR20150049052A (ko) * 2013-10-29 2015-05-08 삼성에스디에스 주식회사 데이터 전송 장치 및 방법
CN114666024B (zh) * 2022-03-11 2024-04-30 成都中科微信息技术研究院有限公司 一种基于dvb协议的反向信令重传方法及通信系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950006843A (ko) * 1993-08-27 1995-03-21 배순훈 카 오디오용 램프 고정구
JP2001520835A (ja) * 1997-03-26 2001-10-30 シーメンス アクチエンゲゼルシヤフト 移動通信システムの無線インターフェースを介して加入者信号からのデータシンボルを送信するための方法及び送信装置
KR100480251B1 (ko) * 2001-05-08 2005-04-06 삼성전자주식회사 통신시스템에서 부호 생성 장치 및 방법
KR20060132557A (ko) * 2003-09-02 2006-12-21 퀄컴 인코포레이티드 무선 멀티-캐리어 통신 시스템에서의 다수 데이터 스트림의멀티플렉싱 및 송신

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950006843A (ko) * 1993-08-27 1995-03-21 배순훈 카 오디오용 램프 고정구
JP2001520835A (ja) * 1997-03-26 2001-10-30 シーメンス アクチエンゲゼルシヤフト 移動通信システムの無線インターフェースを介して加入者信号からのデータシンボルを送信するための方法及び送信装置
KR100480251B1 (ko) * 2001-05-08 2005-04-06 삼성전자주식회사 통신시스템에서 부호 생성 장치 및 방법
KR20060132557A (ko) * 2003-09-02 2006-12-21 퀄컴 인코포레이티드 무선 멀티-캐리어 통신 시스템에서의 다수 데이터 스트림의멀티플렉싱 및 송신

Also Published As

Publication number Publication date
KR20080093923A (ko) 2008-10-22

Similar Documents

Publication Publication Date Title
KR100924295B1 (ko) 통신 시스템의 다단계 코드 발생기 및 디코더
EP2290826B1 (en) Lost packet recovery method for packet transmission protocols
KR101184242B1 (ko) 순방향 오류 정정 코딩 및 스트리밍
KR101205758B1 (ko) 파일 다운로드 및 스트리밍 시스템
JP5329239B2 (ja) 通信システムのための多体ベース符号の生成器および復号化器
EP1214793B9 (en) Group chain reaction encoder with variable number of associated input data for each output group code
US7721184B2 (en) Method and apparatus for fast encoding of data symbols according to half-weight codes
KR101451985B1 (ko) 서브 블록별 순차적 업데이트 방식을 이용한 저지연 파운틴코딩 방법
KR101259659B1 (ko) 중요도에 따라 손실 복원율을 차별화하는 비균일 랩터 코딩방법
Botos et al. Study of the decoding complexity for rateless erasure codes
Yao et al. UEP for Progressive Image Transmission with GA-based Optimization

Legal Events

Date Code Title Description
A201 Request for examination
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: 20170927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190311

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 6