KR102021872B1 - Raptor-q encoding apparatus with improved encoding delay time and method thereof - Google Patents

Raptor-q encoding apparatus with improved encoding delay time and method thereof Download PDF

Info

Publication number
KR102021872B1
KR102021872B1 KR1020190072956A KR20190072956A KR102021872B1 KR 102021872 B1 KR102021872 B1 KR 102021872B1 KR 1020190072956 A KR1020190072956 A KR 1020190072956A KR 20190072956 A KR20190072956 A KR 20190072956A KR 102021872 B1 KR102021872 B1 KR 102021872B1
Authority
KR
South Korea
Prior art keywords
symbol
list
information
source
generated
Prior art date
Application number
KR1020190072956A
Other languages
Korean (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 오픈스택 주식회사
Priority to KR1020190072956A priority Critical patent/KR102021872B1/en
Application granted granted Critical
Publication of KR102021872B1 publication Critical patent/KR102021872B1/en
Priority to US16/801,819 priority patent/US20200403643A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

According to the present specification, disclosed are an encoding apparatus and method which can improve raptor-Q encoding delay time for a source block generated in real time. According to the present specification, the encoding apparatus and method perform an operation for generating an intermediate symbol using only source symbols generated up to now, even before all source symbols constituting the source block are generated. Then, operations can be performed in advance as additional source symbols are generated, and about 90% of the operations can be performed in advance just before all the source symbols constituting the source block are generated.

Description

인코딩 지연 시간이 개선된 랩터Q 인코딩 장치 및 방법{RAPTOR-Q ENCODING APPARATUS WITH IMPROVED ENCODING DELAY TIME AND METHOD THEREOF}RAPTOR-Q ENCODING APPARATUS WITH IMPROVED ENCODING DELAY TIME AND METHOD THEREOF

본 발명은 랩터Q 인코딩 장치 및 방법에 관한 것이며, 보다 상세하게는 실시간 생성되는 데이타에서 복구 심볼 생성 지연 시간을 개선한 랩터Q 인코딩 장치 및 방법에 관한 것이다. The present invention relates to an apparatus and method for Raptor Q encoding, and more particularly, to an apparatus and method for Raptor Q encoding with improved recovery symbol generation delay time in real-time generated data.

UDP(User Datagram Protocol) 전송 방식은 TCP(Transmission Control Protocol) 전송 방식과는 달리 데이터 패킷의 안정적인 전달이 보장되지 않는다. Unlike the Transmission Control Protocol (TCP) transmission method, the UDP transmission method does not guarantee stable transmission of data packets.

종래에는 이러한 경우 수신장치가 손실된 특정 패킷을 파악하고 이의 재전송을 송신장치 측에 요청하여 다시 받는 ARQ(Automatic Repeat reQuest) 방식을 사용하였으나, ARQ 방식을 실시간 방송 또는 실시간 영상 전송에 적용하기 어려운 문제점이 있다.Conventionally, in this case, the receiver uses the ARQ (Automatic Repeat reQuest) method to identify a particular packet that is lost and request a retransmission thereof to the transmitter, and then use the ARQ method. There is this.

최근에는 전송 도중에 원 데이터의 손실이 발생해도 이를 복구할 수 있는 복구 데이터가 포함된 데이터를 송신장치 측에서 생성하여 전송하고, 수신장치 측에서는 수신한 데이터에 일부 손실이 발생하면 복구 데이터가 포함된 수신 데이터로부터 원 데이터를 복원할 수 있는 AL-FEC (Application Layer Forward Error Correction)부호화 기술을 쓴다.Recently, the transmitting device generates and transmits data containing recovery data that can recover even if the original data is lost during transmission.If the receiving device side receives some loss, the received data including the recovery data is received. It uses AL-FEC (Application Layer Forward Error Correction) encoding technology that can restore the original data from the data.

AL-FEC 부호화 기술 중에는 구조적 부호(systematic code) 특성을 갖는 기술이 있다.Among the AL-FEC coding techniques, there is a technique having a structural code (systematic code) characteristics.

구조적 부호 특성을 갖지 않는 AL-FEC 부호화 기술은, 예를 들어 RFC 5170 "Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes" 의 LDPC AL-FEC 기술로서, 네트워크의 평균 손실률을 참고하여 원 데이터 100개당 10% 정도의 복구 데이터가 필요하다고 가정하면, 송신장치 측에서 A1, A2, …, A100의 원 데이터를 기반으로 총 110개 분량의 완전히 새로운 데이터 B1, B2, …, B110을 생성하여 수신장치 측으로 전송한다. 수신장치는 수신된 데이터로부터 원 데이터 복구에 성공을 하면 A1, A2, …, A100 모두 복구하지만, 원 데이터 복구에 실패를 하면 A1, A2, …, A100 중 어느 하나도 복구하지 못한다.An AL-FEC encoding technique that does not have structural code characteristics is, for example, LDPC AL-FEC technique of RFC 5170 "Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes". For reference, assuming that 10% of recovery data is required for every 100 raw data, A1, A2,... , Based on the raw data from A100, a total of 110 totally new data B1, B2,… , B110 is generated and transmitted to the receiving apparatus. If the receiving device succeeds in recovering the original data from the received data, A1, A2,... , A100 recovers all but fails to recover the original data. However, neither A100 can recover.

구조적 부호 특성을 갖는 AL-FEC 부호화 기술은, 예를 들어 랩터Q 응용 계층 순방향 에러 정정(RaptorQ AL-FEC) 기술로서, A1, A2, …, A100의 원 데이터를 기반으로 총 110개 분량의 데이터를 전송하되, 이 중 100개인 A1, A2, …, A100의 원 데이터를 그대로 사용하고, B101, B102, …, B110만을 생성하여 A1, A2, …, A100, B101, B102, …, B110의 총 110개 데이터를 수신장치 측에 전송한다. 여기서 A1, A2, …, A100는 소스 심볼이고, B101, B102, …, B110은 복구 심볼이다. 수신장치는 총 110개의 데이터 중 100개 미만으로 수신하여 A1, A2, …, A100의 원 데이터 전체를 복원하지 못하더라도, A1, A2, …, A100에서 수신된 데이터를 그 상태 그대로 유효하게 사용할 수 있다. 또한 수신장치는 총 110개의 데이터 중 소스 심볼과 복구 심볼 구별없이 어느 것이라도 100개 이상 수신하면 A1, A2, …, A100 중에 수신하지 못한 데이터가 발생하여도 원 데이터 전체를 복원할 수 있다. 단, 수신장치가 100개 이상의 데이터를 수신하여도 데이터 복원에 실패할 확률이 있다. 예를 들어 100개를 수신하면 복원에 실패 확률이 1/100이고, 101개를 수신하면 실패 확률이 1/10000로 현저히 줄어든다.The AL-FEC coding technique having a structural code characteristic is, for example, a RaptorQ AL-FEC technique, which includes A1, A2,... Based on the raw data of A100, a total of 110 pieces of data are transmitted, 100 of which are A1, A2,... , The original data of A100 is used as it is, and B101, B102,... , Only B110 is generated so that A1, A2,... , A100, B101, B102,... , 110 data of B110 are transmitted to receiver. Where A1, A2,... , A100 are source symbols, B101, B102,... , B110 is a recovery symbol. The receiver receives less than 100 of the total 110 data, and A1, A2,... Even if the original data of A100 cannot be restored, A1, A2,... The data received at A100 can be used effectively as it is. Also, the receiver receives A1, A2,... When receiving at least 100 of all 110 data without distinguishing the source symbol and the recovery symbol. The entire original data can be restored even if data not received during the A100 occurs. However, even if the receiving device receives more than 100 pieces of data, there is a probability that the data restoration fails. For example, if 100 are received, the probability of restoration is 1/100, and if 101 are received, the probability of failure is significantly reduced to 1/10000.

구조적 부호 특성을 갖는 AL-FEC 부호화 기술은 네트워크 평균 손실률과 허용복원실패율을 감안하여 복구 데이터의 양을 설정하여 목표하는 복원 신뢰도를 확보할 수 있다.The AL-FEC coding technique having a structural code characteristic can secure a target restoration reliability by setting the amount of recovered data in consideration of the average network loss rate and the allowable restoration failure rate.

소거 채널(erasure channel)은 수신된 데이터 패킷이 오류가 있어 완전하지 않으면 데이터 패킷 전부를 손실된 것으로 처리한다. 가령, UDP 패킷 같은 경우 무선망에서 도달을 하면 CRC 체크 등에 의해서 CRC 오류가 있는 경우는 패킷 전체를 버리게 된다.An erase channel treats all data packets as lost if the received data packets are incomplete due to an error. For example, if a UDP packet arrives in the wireless network, the entire packet is discarded if there is a CRC error due to a CRC check.

한편으로는 네트워크 상에서 패킷이 다른 곳에서 출발한 패킷들과 함께 전송되는 도중에 라우터의 처리속도를 넘어가는 일이 발생한 경우에도 라우터는 해당 패킷을 폐기한다. 재전송 과정을 거치지 않는 UDP 패킷의 경우 이러한 원인으로도 패킷이 손실될 수 있다.On the other hand, if a packet goes beyond the router's throughput while the packet is being sent along with packets originating from elsewhere, the router discards the packet. For UDP packets that do not undergo retransmission, packet loss may also occur due to this reason.

다만, AL-FEC를 적용하기 위해서 소스 블럭이 모두 준비된 상태가 전제되어야 한다. 따라서, 방송 장비를 통해 생방송을 송출하는 경우 AL-FEC를 적용하기 위해서는 실시간으로 생성된 데이터의 양이 소스 블럭에 해당하는 데이터 양이 될 때까지 랩터Q 복구 심볼의 생성이 지연될 수밖에 없는 단점이 있다.However, in order to apply AL-FEC, all source blocks must be prepared. Therefore, in case of transmitting live broadcast through broadcasting equipment, in order to apply AL-FEC, generation of the Raptor Q recovery symbol has to be delayed until the amount of data generated in real time becomes the amount of data corresponding to the source block. have.

공개특허공보 제10-2017-0030235호, 2017.03.17Patent Publication No. 10-2017-0030235, 2017.03.17

RFC 6330 "RaptorQ Forward Error Correction Scheme for Object Delivery"RFC 6330 "RaptorQ Forward Error Correction Scheme for Object Delivery" RFC 5170 "Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes"RFC 5170 "Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes"

본 명세서는 실시간으로 생성되는 소스 블럭에 대한 랩터Q 복구 심볼 생성 지연 시간을 개선시킬 수 있는 인코딩 장치 및 방법을 제공하는 것을 목적으로 한다.It is an object of the present specification to provide an encoding apparatus and a method capable of improving a raptor Q recovery symbol generation delay time for a source block generated in real time.

본 명세서는 상기 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The present specification is not limited to the above-mentioned task, and other tasks not mentioned will be clearly understood by those skilled in the art from the following description.

상술한 과제를 해결하기 위한 본 명세서에 따른 인코딩 장치는, 소스 블럭에 패딩 심볼을 추가하여 확장된 소스 블럭을 생성하는 패딩부; 상기 확장된 소스 블럭을 이용하여 중간 심볼을 생성하는 중간 심볼 생성부; 및 상기 중간 심볼을 이용하여 복구 심볼을 생성하는 LT 인코더;를 포함하는 인코딩 장치로서, 상기 중간 심볼 생성부는, 가우스 소거법에 따른 연산 리스트를 저장하는 메모리부; 및 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트에 따른 연산을 수행하는 연산부;를 포함할 수 있다.According to an aspect of the present invention, there is provided an encoding apparatus, including: a padding unit configured to add an padding symbol to a source block to generate an extended source block; An intermediate symbol generator configured to generate an intermediate symbol using the extended source block; And an LT encoder for generating a repair symbol using the intermediate symbol, wherein the intermediate symbol generator comprises: a memory unit for storing an operation list according to a Gaussian elimination method; And an operation unit configured to perform an operation according to the operation list using source symbols generated up to an operation start time.

상기 연산 리스트는, 연산 순서 정보, 제1 심볼 정보, 제2 심볼 정보 및 연산 내용 정보를 포함할 수 있다.The operation list may include operation order information, first symbol information, second symbol information, and operation content information.

본 명세서의 일 실시예에 따르면, 상기 연산부는 상기 연산 리스트 중에서 연산이 완료된 연산 순서 정보 또는 연산이 미완료된 연산 순서 정보를 관리하는 연산 대상 리스트를 상기 메모리부에 저장시킬 수 있다.According to an embodiment of the present specification, the operation unit may store the operation target list managing the operation order information for which the operation is completed or the operation order information for which the operation is not completed, in the memory unit.

본 명세서의 일 실시예에 따르면, 상기 연산부는 상기 연산 리스트 중에서 연산에 이용할 수 없는 제1 심볼과 제2 심볼의 정보를 관리하는 불가용 심볼 리스트를 상기 메모리부에 저장시킬 수 있다.According to one embodiment of the present specification, the operation unit may store an unusable symbol list for managing information of a first symbol and a second symbol that are not available for operation in the operation list.

이 경우, 상기 연산부는 상기 불가용 심볼 리스트에 포함된 제1 심볼 또는 제2 심볼이 포함된 연산은 제외하고 나머지 연산을 수행할 수 있다.In this case, the operation unit may perform the remaining operations except the operation including the first symbol or the second symbol included in the unavailable symbol list.

이때 제1 심볼이 상기 불가용 심볼 리스트에 포함되어 있어 연산을 제외했다면 그 연산의 제2 심볼을 불가용 심볼 리스트에 추가하고 이하의 연산을 계속 수행할 수 있다.In this case, if the first symbol is included in the unavailable symbol list and the operation is excluded, the second symbol of the operation may be added to the unavailable symbol list and the following operation may be continued.

그리고 상기 연산부는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트 내에서 연산 가능한 일부 연산을 모두 수행한 후에 상기 불가용 심볼 리스트를 초기화 시킬 수 있다.The operation unit may initialize the unavailable symbol list after performing all of the operations that can be calculated in the operation list using source symbols generated up to a start point of an operation.

본 명세서의 일 실시예에 따르면, 상기 연산부는 사용자가 임의로 정한, 미리 설정된 소스 심볼의 개수가 생성된 이후에 상기 연산 리스트에 따른 연산을 수행할 수 있다.According to one embodiment of the present specification, the operation unit may perform an operation according to the operation list after a predetermined number of source symbols predetermined by a user is generated.

상술한 과제를 해결하기 위한 본 명세서에 따른 인코딩 방법은, 소스 블럭에 패딩 심볼을 추가하여 확장된 소스 블럭을 생성하는 패딩 단계; 상기 확장된 소스 블럭을 이용하여 중간 심볼을 생성하는 중간 심볼 생성 단계; 및 상기 중간 심볼을 이용하여 복구 심볼을 생성하는 LT 인코딩 단계;를 포함하는 인코딩 방법으로서, 상기 중간 심볼 생성 단계는, 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 메모리부에 저장된 가우스 소거법에 따른 연산 리스트에 따른 연산을 수행하는 연산 단계;를 더 포함할 수 있다.The encoding method according to the present specification for solving the above problems, the padding step of generating an extended source block by adding a padding symbol to the source block; Generating an intermediate symbol using the extended source block; And an LT encoding step of generating a recovery symbol using the intermediate symbol, wherein the intermediate symbol generation step comprises: applying a Gaussian elimination method stored in a memory unit using source symbols generated up to an operation start time; The operation step of performing the operation according to the operation list according to; may further include.

상기 연산 리스트는, 연산 순서 정보, 제1 심볼 정보, 제2 심볼 정보 및 연산 내용 정보를 포함할 수 있다.The operation list may include operation order information, first symbol information, second symbol information, and operation content information.

본 명세서의 일 실시예에 따르면, 상기 연산 단계는 상기 연산 리스트 중에서 연산이 완료된 연산 순서 정보 또는 연산이 미완료된 연산 순서 정보를 관리하는 연산 대상 리스트를 상기 메모리부에 저장시키는 단계를 더 포함할 수 있다.According to one embodiment of the present specification, the operation step may further include storing the operation target list managing the operation order information for which the operation is completed or the operation order information for which the operation is not completed, in the memory unit. have.

본 명세서의 일 실시예에 따르면, 상기 연산 단계는 상기 연산 리스트 중에서 연산에 이용할 수 없는 제1 심볼과 제2 심볼의 정보를 관리하는 불가용 심볼 리스트를 상기 메모리부에 저장시킬 수 있다.According to one embodiment of the present specification, the operation step may store, in the memory unit, an unusable symbol list that manages information of a first symbol and a second symbol that are not available for calculation in the calculation list.

이 경우, 상기 연산 단계는 상기 불가용 심볼 리스트에 포함된 제1 심볼 또는 제2 심볼이 포함된 연산은 제외하고 나머지 연산을 수행할 수 있다.In this case, the operation may perform the remaining operation except for an operation including the first symbol or the second symbol included in the unavailable symbol list.

이때 제1 심볼이 상기 불가용 심볼 리스트에 포함되어 있어 연산을 제외했다면 그 연산의 제2 심볼을 불가용 심볼 리스트에 추가하고 그 이후의 연산을 계속 수행할 수 있다. 그리고 상기 연산 단계는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트 내에서 연산 가능한 일부 연산을 모두 수행한 후에 상기 불가용 심볼 리스트를 초기화 시킬 수 있다.In this case, if the first symbol is included in the unavailable symbol list and the operation is excluded, the second symbol of the operation may be added to the unavailable symbol list and the subsequent operation may be continued. The operation step may initialize the unavailable symbol list after performing all of the operations that are operable in the operation list by using the source symbols generated up to an operation start time.

본 명세서의 일 실시예에 따르면, 상기 연산 단계는 미리 설정된 소스 심볼의 개수가 생성된 이후에 상기 연산 리스트에 따른 연산을 수행할 수 있다.According to an embodiment of the present disclosure, the operation may be performed according to the operation list after the number of preset source symbols is generated.

본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Other specific details of the invention are included in the detailed description and drawings.

본 명세서에 따르면, 소스 블럭이 실시간으로 생성되는 경우 종래 랩터Q 인코딩 방식에 비해 인코딩 지연 시간을 개선시킬 수 있다.According to the present specification, when a source block is generated in real time, an encoding delay time may be improved as compared with a conventional Raptor Q encoding scheme.

본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.Effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.

도 1은 랩터Q 인코더 및 랩터Q 디코더의 간략한 구성도이다.
도 2는 A 행렬의 참고도이다.
도 3은 본 명세서에 따른 중간 심볼 생성부의 블럭도이다.
도 4는 본 명세서에 따른 연산 리스트의 예시도이다.
도 5는 배제되어야 하는 심볼에 대한 참고 예시도이다.
도 6는 생성된 소스 심볼의 개수에 따른 연산 비율의 참고도이다.
도 7은 본 명세서에 따른 인코딩 장치의 효율성에 대한 참고도이다.
1 is a simplified block diagram of a Raptor Q encoder and a Raptor Q decoder.
2 is a reference diagram of the A matrix.
3 is a block diagram of an intermediate symbol generator according to the present specification.
4 is an exemplary diagram of an operation list according to the present specification.
5 is a reference example of a symbol to be excluded.
6 is a reference diagram of an operation rate according to the number of generated source symbols.
7 is a reference diagram for the efficiency of the encoding apparatus according to the present specification.

본 명세서에 개시된 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 명세서가 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 명세서의 개시가 완전하도록 하고, 본 명세서가 속하는 기술 분야의 통상의 기술자(이하 '당업자')에게 본 명세서의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 명세서의 권리 범위는 청구항의 범주에 의해 정의될 뿐이다. 이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.Advantages and features of the invention disclosed herein, and methods of achieving them will be apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present disclosure is not limited to the embodiments disclosed below, but may be implemented in various forms, and the present embodiments are merely provided to make the disclosure of the present disclosure complete, and those of ordinary skill in the art to which the present disclosure belongs. It is provided to fully inform the skilled person (hereinafter, "the person in charge") the scope of the present specification, the scope of the present specification is defined only by the scope of the claims. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 명세서에 따른 AL-FEC를 위한 인코딩 방법(이하 '인코딩 방법')은 "RFC 6330 - RaptorQ Forward Error Correction Scheme for Object Delivery"에 기재된 랩터Q 코드를 따른다. 따라서, 본 명세서는 RFC 6330 문헌에 기재된 모든 내용을 참조하며, 원용할 수 있다.The encoding method (hereinafter, referred to as 'encoding method') for AL-FEC according to the present specification follows the Raptor Q code described in "RFC 6330-RaptorQ Forward Error Correction Scheme for Object Delivery." Thus, this specification refers to all contents set forth in the RFC 6330 document and may be incorporated.

본 명세서에 따른 인코딩 방법의 이해를 돕기 위해 랩터Q 코드에 대해서 간단하게 설명하도록 하겠다. 다만, 본 명세서에서 설명되는 부분은 본 명세서에 따른 인코딩 방법을 이해하기 위한 것으로서, 본 명세서에 따른 인코딩 방법의 이해에 필요한 정도로 간단하게 설명될 것이다. 본 명세서에서 사용되는 용어의 정의는 아래와 같다.In order to help understand the encoding method according to the present specification, the raptor Q code will be briefly described. However, the part described in this specification is for understanding the encoding method according to the present specification, and will be simply described as necessary to understand the encoding method according to the present specification. Definitions of terms used in the present specification are as follows.

- 소스 블럭(Source block): 전송하고자 하는 데이터로서 랩터Q 방식에 따른 인코딩/디코딩 대상. K개의 소스 심볼로 나누어질 수 있음.Source block: Data to be encoded / decoded according to the Raptor Q method as data to be transmitted. Can be divided into K source symbols.

- 확장된 소스 블럭(Extended Source block): K'(K'≥K)개의 소스 심볼로서 소스 블럭과 패딩 심볼로 구성됨.Extended Source block: K '(K' ≥ K) source symbols, consisting of a source block and a padding symbol.

- 심볼(Symbol): 데이터의 단위. 심볼의 종류에는 소스 심볼, 패딩 심볼, 복구 심볼, 중간 심볼 등이 있고, 모두 같은 크기임.Symbol: a unit of data. Symbol types include source symbols, padding symbols, recovery symbols, and intermediate symbols, all of the same size.

- 소스 심볼(Source symbol): 인코딩 과정에서 사용되는 데이터의 가장 작은 단위. 소스 블럭의 정보에 해당함.Source symbol: The smallest unit of data used in the encoding process. Corresponds to information in the source block.

- 패딩 심볼(Padding symbol): 소스 블럭을 확장된 소스 블럭이 되도록 추가되는 심볼. 모든 데이터 값이'0'으로 채워져 있음.Padding symbol: A symbol added to make a source block an extended source block. All data values are filled with '0'.

- 복구 심볼(Repair symbol): 소스 블럭에 의해 생성되는 심볼. 전송 과정에서 손실이 발생할 것을 예상하고 소스 블럭을 복구하기 위한 심볼.Repair symbol: A symbol generated by the source block. Symbol for recovering source blocks in anticipation of loss during transmission.

- 중간 심볼(Intermediate symbol): 소스 심볼로부터 생성되는 심볼로서, 복구 심볼을 생성하기 위한 중간 과정에서 생성되는 심볼. 랩터Q 디코더에서는 손실된 소스 심볼을 생성하기 위한 중간 과정에서 생성되는 심볼이기도 함.Intermediate symbol: A symbol generated from a source symbol, which is generated in an intermediate process for generating a repair symbol. In the Raptor Q decoder, it is also a symbol that is generated in the middle of generating a lost source symbol.

도 1은 랩터Q 인코더 및 랩터Q 디코더의 간략한 구성도이다. 도 1을 참조하여, 랩터Q 코드의 인코딩(Encoding) 과정과 디코딩(Decoding) 과정을 간략하게 설명하겠다.1 is a simplified block diagram of a Raptor Q encoder and a Raptor Q decoder. Referring to FIG. 1, an encoding process and a decoding process of a Raptor Q code will be briefly described.

송신기는 랩터Q 코드를 이용해 소스 블럭(M)를 인코딩하는 랩터Q 조직적 인코더(이하 '랩터Q 인코더')(100)를 포함한다. 구체적으로, 랩터Q 인코더(100)는 패딩부(110), 중간 심볼 생성부(120), 및 LT(Luby transform) 인코더(130)를 포함할 수 있다.The transmitter includes a Raptor Q organizational encoder (hereinafter referred to as Raptor Q encoder) 100 that encodes the source block M using the Raptor Q code. In detail, the raptor Q encoder 100 may include a padding unit 110, an intermediate symbol generator 120, and a LT (Luby transform) encoder 130.

패딩부(110)는 상기 소스 블럭(M)에 패딩 심볼(패딩 데이터)을 추가하여 확장된 소스 블럭(M')을 생성한다. 랩터Q 코드에 따른 인코딩은 미리 정해진 개수의 소스 심볼이 필요하다(RFC 6330의 5.6 참조). CBR(constant bit rate)로 영상을 인코딩하여 인터넷을 통해 전송하는 상황을 가정하면, 매 일정 시간마다 특정 크기의 소스 블럭이 생성되며, 이 소스 블럭을 가령 이더넷 망인 경우는 이더넷 패킷의 최대 크기(MTU)인 1500byte 이하의 크기로 나누어 보내야 한다. 소스 블럭을 일정 크기의 소스 심볼로 나누었을 때 생성된 소스 심볼의 개수를 K개라고 가정하겠다. 상기 K개의 소스 심볼은 랩터Q 코드에서 미리 정해 놓은 개수(K', K'≥K)가 되지 않을 수 있다. 이때, 모자란 소스 심볼의 개수만큼 '0'으로 채워진 패딩 심볼이 추가된다. 일 예로, 소스 블럭(M)을 미리 정해진 소스 심볼의 크기로 나누어서 100개의 소스 심볼이 생성될 수 있다고 가정하겠다(K=100). RFC 6330의 5.6 테이블 2에 따르면, 100보다 크거나 같은 최소의 수는 '101'이다(K'=101). 따라서, 1개의 패딩 심볼을 추가하여 총 101개의 소스 심볼을 가진 확장된 소스 블럭(M')으로 만들어 준다.The padding unit 110 adds a padding symbol (padding data) to the source block M to generate an extended source block M '. Encoding according to the Raptor Q code requires a predetermined number of source symbols (see 5.6 of RFC 6330). Assuming a situation in which video is encoded at a constant bit rate (CBR) and transmitted over the Internet, a source block having a specific size is generated every predetermined time, and in case of an Ethernet network, for example, the maximum size of an Ethernet packet (MTU) ) Should be sent in sizes of 1500 bytes or less. Assume that the number of source symbols generated when the source block is divided into source symbols of a certain size is K. The K source symbols may not be a predetermined number K ', K'≥K in the Raptor Q code. At this time, padding symbols filled with '0' as many as the number of short source symbols are added. As an example, it is assumed that 100 source symbols may be generated by dividing the source block M by the size of a predetermined source symbol (K = 100). According to 5.6 Table 2 of RFC 6330, the minimum number greater than or equal to 100 is' 101 '(K' = 101). Therefore, one padding symbol is added to form an extended source block M 'having a total of 101 source symbols.

중간 심볼 생성부(120)는 우선 확장된 소스 블럭(M') 앞에 '0'으로 채워진 S + H 개의 심볼을 추가하여 L차원의 열벡터 D를 만들고, 이 D 벡터에 랩터Q 코드의 인코딩을 위한 행렬 A의 역행렬을 적용하여(곱하여), 중간 심볼(C)를 생성한다. 여기서, L은 2 이상의 자연수이며, L = K'+S+H 이다.The intermediate symbol generator 120 first adds S + H symbols filled with '0' in front of the extended source block M 'to form an L-dimensional column vector D, and encodes the Raptor Q code to the D vector. The inverse of matrix A is then applied (multiplied) to generate an intermediate symbol (C). Here, L is a natural number of 2 or more, and L = K '+ S + H.

도 2는 A 행렬의 참고도이다.2 is a reference diagram of the A matrix.

도 2를 참조하면, 행렬 A는 L x L 행렬이다. 구체적으로 행렬 A는, S개의 행을 가지는 LDPC(low-density parity-check code) 행렬(G_LDPC1, G_LDPC2), S x S의 항등 행렬(IS), H개의 행을 가지는 HDPC(high-density parity-check code) 행렬(G_HDPC), H x H의 항등 행렬(IH), 및 K'개(K≤K')의 행을 가지는 인코딩 행렬(G_ENC)을 포함한다. 상기 S와 H 역시 RFC 6330의 5.6에 의해 미리 정해져 있는 값이다. 일 예로, 101개의 소스 심볼(K')에 대응하는 S는 17, H는 10이다. 따라서, A 행렬은 128 x 128 행렬이 될 수 있다. 일 예시에서, 상기 중간 심볼 생성부(120)는 128개의 중간 심볼을 생성하게 된다.Referring to FIG. 2, the matrix A is an L × L matrix. Specifically, the matrix A is a low-density parity-check code (LDPC) matrix (G_LDPC1, G_LDPC2) having S rows, an identity matrix (I S ) of S x S, and a high-density parity (HDPC) having H rows. -check code) comprises a matrix (G_HDPC), an identity matrix of H x H (I H), and K 'pieces (K≤K' encoded with a line of the) matrix (G_ENC). S and H are also predetermined values by 5.6 of RFC 6330. For example, S corresponding to 101 source symbols K 'is 17 and H is 10. Thus, the A matrix can be a 128 x 128 matrix. In one example, the intermediate symbol generator 120 generates 128 intermediate symbols.

LT 인코더(130)는 중간 심볼(C)에 심볼 생성 함수(Encoding Symbol Generator)인 ENC[ㆍ]를 적용하여 필요한 개수의 복구 심볼을 생성(RFC 6330 5.3.5.3)하고 이를 소스 심볼과 합하여, 인코딩된 소스 블럭 즉, 메시지 E(M)을 생성한다. 소스 심볼과 복구 심볼을 동일하게 취급하는 것은 랩터Q의 한 특성이기도 하다.The LT encoder 130 applies the symbol generating function ENC [·] to the intermediate symbol C to generate the required number of recovery symbols (RFC 6330 5.3.5.3), and adds them with the source symbols to encode them. Generated source block, that is, message E (M). Treating source symbols and recovery symbols the same is a characteristic of Raptor Q.

메시지 E(M)은 EC(erasure channel) 채널을 통해 전송되는데, 이 때, 데이터 손실이 발생할 수 있다.The message E (M) is transmitted through an erasure channel (EC) channel, where data loss may occur.

수신기는 랩터Q 코드를 이용해 데이터(예, 수신 메시지 E'(M))를 디코딩하는 랩터Q 조직적 디코더(이하 '랩터Q 디코더')(200)를 포함한다. 구체적으로, 랩터Q 디코더(200)는 디코딩을 통해 소스 블럭(M)을 복원하며, 패딩부(210), 중간 심볼 생성부(220), 및 LT 디코더(230)를 포함할 수 있다.The receiver includes a Raptor Q organizational decoder (hereinafter 'Raptor Q Decoder') 200 that decodes data (eg, received message E '(M)) using a Raptor Q code. In detail, the Raptor Q decoder 200 may restore the source block M through decoding, and may include a padding unit 210, an intermediate symbol generator 220, and an LT decoder 230.

패딩부(210)는 수신 메시지 E'(M)에 패딩 심볼을 추가하여, 메시지 E'(M)'를 생성한다. 중간 심볼 생성부(220)는 메시지 E'(M)'에 랩터Q 코드의 디코딩을 위한 행렬 A'(랩터Q 코드 행렬)의 역행렬을 적용하여(곱하여), 중간 심볼 C를 생성한다. 여기서, 행렬 A'는 = L x L 행렬이다. 다만 행렬 A'는 디코더에 실제로 도착한 소스 심볼 및 복구 심볼의 번호에 따라 성분값이 달라질 수 있다. 소스 심볼 중 일부가 누락되어 열벡터 D의 일부가 복구 심볼로 대체되었다면 행렬 A'는, 인코더에서 쓰이는 행렬 A와는 다르게 된다. 구체적으로 행렬 A'는, S개의 행을 가지는 LDPC 행렬(G_LDPC1, G_LDPC2), S x S의 항등 행렬(IS), H개의 행을 가지는 HDPC 행렬(G_HDPC), H x H의 항등 행렬(IH), 및 적어도 K'개의 행을 가지는 인코딩 행렬(G_ENC')을 포함한다.The padding unit 210 generates a message E '(M)' by adding a padding symbol to the received message E '(M). The intermediate symbol generator 220 generates an intermediate symbol C by applying (multiplying) the inverse of the matrix A '(the Raptor Q code matrix) for decoding the Raptor Q code to the message E' (M) '. Here, matrix A 'is a = L x L matrix. However, the component value of the matrix A 'may vary depending on the number of the source symbol and the recovery symbol actually arriving at the decoder. If some of the source symbols are missing and part of the column vector D is replaced with a repair symbol, the matrix A 'is different from the matrix A used in the encoder. Specifically, the matrix A 'is an LDPC matrix (G_LDPC1, G_LDPC2) having S rows, an identity matrix (IS) of S x S, an HDPC matrix (G_HDPC) having H rows, and an identity matrix (IH) of H x H. And an encoding matrix G_ENC 'having at least K' rows.

LT 디코더(230)는 중간 심볼 C에 심볼 생성 함수(Encoding Symbol Generator)인 ENC[ㆍ]를 적용하여 누락된 소스 심볼을 생성(RFC 6330 5.3.5.3)함으로써 원래의 소스 블록을 복구한다.The LT decoder 230 restores the original source block by applying a symbol generation function ENC [·] to the intermediate symbol C to generate a missing source symbol (RFC 6330 5.3.5.3).

랩터Q 인코더(100)과 랩터Q 디코더(200)의 일반적인 동작은 이미 잘 알려져 있으므로, 이에 대한 자세한 설명은 생략한다.Since general operations of the Raptor Q encoder 100 and the Raptor Q decoder 200 are already well known, a detailed description thereof will be omitted.

다시 인코딩 과정으로 돌아와서, 랩터Q 인코더(100)는 소스 블럭을 인코딩하기 위해 중간 심볼(C)를 생성해야 한다. 행렬 A와 중간 심볼(C)의 관계는 아래와 같다.Returning to the encoding process, the Raptor Q encoder 100 must generate the intermediate symbol C to encode the source block. The relationship between the matrix A and the intermediate symbol (C) is as follows.

AC=DAC = D

이때, D는 확장된 소스 블럭 앞에 '0'으로 채워진 S + H개의 심볼을 추가한 열벡터 즉, 소스 심볼로 구성된 L차원의 열벡터이다. 이때, 중간 심볼(C)을 구하기 위해 A의 역행렬이 필요하다.In this case, D is a column vector having S + H symbols filled with '0's before the extended source block, that is, an L-dimensional column vector composed of source symbols. In this case, an inverse of A is required to obtain the intermediate symbol C.

C=A-1DC = A -1 D

문제는 A의 역행렬을 실제 계산하여 산출하는 작업이 쉬운 일이 아니다. 앞선 제시된 예시(K'=101)에 의해면, A 행렬은 128 x 128 행렬이다. 나아가, 랩터Q 코드는 확장된 소스 블럭이 최대 56,403개까지 가능하므로, A 행렬은 최대 57,326 x 57,326 행렬이며, 이러한 A 행렬의 역행렬을 구해야 하는 문제가 있다. 다행스럽게도, A의 역행렬을 구하는 방법으로서 가우스 소거법(Gaussian elimination)이 존재한다. 가우스 소거법 자체는 널리 알려진 수학적 알고리즘이므로, 본 명세서에서 알고리즘의 원리에 대해서 설명하지 않겠다. The problem is that it is not easy to actually calculate and compute the inverse of A. By the previous example (K '= 101), the A matrix is a 128 x 128 matrix. Furthermore, since the Raptor Q code can have up to 56,403 extended source blocks, the A matrix is 57,326 x 57,326 matrices, and there is a problem in that the inverse of the A matrix is obtained. Fortunately, there is a Gaussian elimination method to find the inverse of A. Since Gaussian elimination itself is a well-known mathematical algorithm, the principles of the algorithm will not be described herein.

RFC 6330의 5.4.2 참조하면, 상기 중간 심볼(C)를 생성하는 방법으로 5단계로 이루어진 연산 방법 한 가지를 제시하고 있다. 이 5단계의 과정은 열벡터 D에 A의 역행렬이 적용된 연산 결과 값을 구하는 과정으로서, 전체적으로는 가우스 소거법 원리에 의한 연산을 수행하나, A 행렬 모양의 특성을 이용한 단계별 연산으로 구성되어 있다. 이 중 1단계가 전체 5단계의 연산 과정의 연산 횟수로는 50% 이상을 차지하며, 프로세서(processor)의 연산량으로는 85% 이상이 소모되는 과정이기도 하다. 본 명세서의 연산 리스트는 1단계 연산만을 포함한다.Referring to 5.4.2 of RFC 6330, a method of generating the intermediate symbol C is presented. This five-step process is a process of calculating the result of the operation in which the inverse matrix of A is applied to the column vector D. The process is generally performed by the Gaussian elimination principle, but is composed of stepwise operations using the characteristics of the A matrix shape. Among these, one stage occupies more than 50% of the number of operations in five stages of operation, and more than 85% of the computation amount of a processor is consumed. The operation list of the present specification includes only one step operation.

한편, 상술한 인코딩 과정에서 중요한 전제 사항이 있다. 상기 소스 블럭 즉, 전송하고자 하는 데이터가 모두 확정된 상태로 랩터Q 인코더(100)에 입력된 것을 전제로 한다. 따라서 생방송 영상 데이터의 경우 실시간으로 소스 블럭이 생성되며, 상기 소스 블럭이 정해진 개수가 될 때까지 랩터Q 인코더(100)에 입력되지 않아 복구 심볼을 생성하는 작업을 시작하지 못한다. 생방송 영상 데이터 생성에 걸리는 시간에 따른 지연은 하드웨어 연산 능력이 아무리 빠르더라도 극복할 수 없는 본질적인 지연 시간으로 작용한다. 따라서, 소스 블럭이 실시간으로 생성되는 환경에서 보다 효율적인 인코딩 방법이 필요하다.On the other hand, there are important prerequisites in the above-described encoding process. It is assumed that the source block, that is, data to be transmitted, is input to the Raptor Q encoder 100 in a state where all of the data to be transmitted are determined. Therefore, in the case of live broadcast image data, source blocks are generated in real time, and are not input to the Raptor Q encoder 100 until the number of the number of the source blocks is fixed, so that a work for generating a recovery symbol cannot be started. The delay over time for live video data generation is an inherent delay that cannot be overcome, however fast the hardware computing power can be. Accordingly, there is a need for a more efficient encoding method in an environment in which source blocks are generated in real time.

상술된 인코딩 지연 문제를 해결하기 위한 본 명세서에 따른 인코딩 방법은 소스 블럭이 전부 생성될까지 기다리지 않고, 실시간으로 지금까지 생성된 소스 심볼만을 이용하여 미리 중간 심볼 생성을 위한 연산을 수행하는 것이다.The encoding method according to the present specification for solving the above-described encoding delay problem is to perform an operation for generating an intermediate symbol in advance using only source symbols generated so far in real time without waiting until all source blocks are generated.

도 3은 본 명세서에 따른 중간 심볼 생성부의 블럭도이다.3 is a block diagram of an intermediate symbol generator according to the present specification.

도 3을 참조하면, 본 명세서에 따른 중간 심볼 생성부(120)은 메모리부(121) 및 연산부(122)를 포함할 수 있다.Referring to FIG. 3, the intermediate symbol generator 120 according to the present specification may include a memory 121 and a calculator 122.

상기 메모리부(121)는 가우스 소거법에 따른 연산 리스트를 저장할 수 있다.The memory unit 121 may store an operation list according to a Gaussian elimination method.

도 4는 본 명세서에 따른 연산 리스트의 예시도이다.4 is an exemplary diagram of an operation list according to the present specification.

도 4를 참조하면, 본 명세서에 따른 연산 리스트는 연산 순서 정보, 제1 심볼 정보, 제2 심볼 정보 및 연산 내용 정보를 포함할 수 있다. 상기 연산 리스트는 가우스 소거법에 따라 소스 심볼로부터 중간 심볼을 산출하기 위한 연산 정보 중 1단계 정보만을 포함한다. 즉, 상기 연산 리스트에 기재된 연산 순서 및 이후 2~5단계 연산에 따라 소스 심볼 사이의 모든 연산을 마치면, 소스 심볼로부터 중간 심볼이 산출된다.Referring to FIG. 4, the operation list according to the present specification may include operation order information, first symbol information, second symbol information, and operation content information. The operation list includes only one step information of operation information for calculating an intermediate symbol from a source symbol according to a Gaussian elimination method. That is, when all the operations between the source symbols are completed according to the operation order described in the operation list and subsequent two to five operations, the intermediate symbol is calculated from the source symbols.

랩터Q 인코더와 디코더 사이에는 어떤 S, H, K'값을 쓸지 미리 합의되어 있으며, 이 값에 따라 랩터Q 인코더에서 쓸 A행렬의 구체적인 모양이 결정된다. 상기 연산 리스트는 이러한 A행렬의 구체적인 모양으로부터 RFC 6330 5.4.2에 제시된 원리에 의해 정해져 고정된다.The S, H, and K 'values are previously agreed between the Raptor Q encoder and the decoder, and the specific shape of the A matrix to be used in the Raptor Q encoder is determined according to these values. The list of operations is fixed from the specific shape of this matrix A by the principles set out in RFC 6330 5.4.2.

상기 연산 순서 정보는 연산이 이루어져야 하는 순서에 대한 정보를 나타낸다. 상기 제1 심볼 정보와 제2 심볼 정보는 연산이 이루어지는 심볼의 정보를 나타낸다. 상기 연산 내용 정보는 상기 제1 심볼과 제2 심볼 사이에서 이루어지는 연산 내용을 나타낸다. 보다 구체적으로는 GF(256) 즉 원소가 256개인 갈루아 필드 (Galois Field) 상의 연산(RFC 6330 5.7)으로서, 연산 내용 정보 숫자가 0이면 제1 심볼과 제2 심볼을 bitwise XOR (exclusive OR) 연산하고, 연산 내용 정보 숫자가 0이 아니면 먼저 제1 심볼과 연산 내용 정보 숫자를 GF(256) 상에서 multiplication 연산을 한 후 그 결과와 제2 심볼을 bitwise XOR연산(RFC 6330 5.7.2)하라는 뜻이다. The operation order information indicates information on the order in which the operation should be performed. The first symbol information and the second symbol information represent information of a symbol on which an operation is performed. The arithmetic content information indicates arithmetic content performed between the first symbol and the second symbol. More specifically, GF (256), that is, an operation on a Galois field of 256 elements (RFC 6330 5.7), and when the operation content information number is 0, bitwise XOR (exclusive OR) operation of the first symbol and the second symbol is performed. If the operation content information number is not 0, first, multiplication operation is performed on the first symbol and operation information information number on the GF (256), and then the bitwise XOR operation on the result and the second symbol (RFC 6330 5.7.2) is performed. .

가령, 도 4에 도시된 연산 리스트 내 가장 첫 연산은 "481번 제1 심볼의 값과 36번 제2 심볼의 값을 bitwise XOR 연산하여 그 결과값을 36번 제2 심볼에 저장하라"라는 내용이 된다. 상기 제1 심볼과 제2 심볼은 모두 D 벡터의 성분인 어느 한 심볼을 가리키며, 상기예에서 481번 제1 심볼은 D 벡터의 481번 심볼을, 36번 제2 심볼은 D 벡터의 36번 심볼을 의미한다.For example, the first operation in the operation list shown in FIG. 4 is "bitwise XOR operation of the value of the first symbol of 481 and the second symbol of 36 to store the result value in the second symbol of 36". Becomes The first symbol and the second symbol both indicate a symbol that is a component of the D vector. In the above example, the first symbol 481 is symbol 481 of the D vector, and the second symbol 36 is symbol 36 of the D vector. Means.

또한, 도 4에 도시된 연산 리스트에서 9번째 연산은 "481번 제1 심볼의 각 octet 값과 GF(256) 에서의 한 숫자인 240 을 GF(256) 에서 octect product 하고 이 결과를 59번 제 2 심볼과 bitwise XOR 연산하여 그 결과값을 59번 제2 심볼에 저장하라"라는 내용이 된다.In addition, the ninth operation in the operation list shown in FIG. 4 octect product of the octet value of the first symbol of No. 481 and the number 240 in the GF (256) at GF (256). 2 bit and bitwise XOR operation and store the result in the second symbol of 59. "

상기 연산부(122)는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트에 따른 연산을 수행할 수 있다.The operation unit 122 may perform an operation according to the operation list using source symbols generated up to an operation start time.

본 명세서에 따른 인코딩 장치(100) 특히, 중간 심볼 생성부(120)는 소스 블럭을 구성하는 모든 소스 심볼이 입력될 때까지 기다리지 않고 현재까지 입력된 소스 심볼만을 이용하여 미리 연산 가능한 부분만 미리 연산을 수행하는 것이다. 따라서, 본 명세서에서 '연산 시작 시점까지 생성된 소스 심볼들'이란 현재 메모리에 저장된 소스 심볼들을 의미한다.In particular, the encoding apparatus 100 according to the present specification, the intermediate symbol generator 120 does not wait until all the source symbols constituting the source block are input, and precomputes only a portion that can be pre-calculated using only the source symbols input so far. To do. Therefore, in the present specification, 'source symbols generated up to the start of operation' refers to source symbols currently stored in a memory.

일 예로 임의의 연산 시작 시점까지 소스 심볼이 생성되어 총 1,071개의 심벌 중에서 연산 가능한 심볼이 500개 존재하는 것을 가정하겠다 (K'= 1,002 인 경우임). D벡터의 맨 앞에는 S+H개의 '0'값으로 채워진 심볼이 있고 맨 뒤에도 K'-K개의 패딩 심볼이 있으나 원리 설명의 편의상 이를 무시하면, 연산 가능한 심볼의 개수가 500개라는 것은 D 벡터의 0번 심볼부터 499번 심볼에 해당한다. 도 4에 도시된 연산 리스트를 참조하면, 5번 연산까지는 사용되는 제1 심볼과 제2 심볼의 정보가 모두 499번 이하이므로 연산이 가능하다. 그러나 6번 연산부터 8번 연산까지에 필요한 제2 심볼의 번호는 '650', '847' 및 '982'이므로 아직 연산이 불가능하다. As an example, it is assumed that a source symbol is generated until a certain operation start time, and there are 500 operable symbols out of a total of 1,071 symbols (when K '= 1,002). There are symbols filled with S + H '0's at the beginning of the D vector and K'-K padding symbols at the back.However, for convenience of explanation, the number of 500 symbols that can be calculated is Corresponds to symbol 0 to symbol 499. Referring to the operation list shown in FIG. 4, since the information of the first symbol and the second symbol used is all 499 or less, operation 5 may be performed until operation 5. However, since the numbers of the second symbols required for operations 6 to 8 are '650', '847' and '982', the operation is not yet possible.

한편 현재까지 생성되어 연산에 쓰일 수 있는 심볼인지 여부는 불가용 심볼 리스트로 관리한다. 불가용 심볼 리스트는 아직 생성되지 않는 소스 심벌로 초기화되나 연산 도중에는 이미 생성된 소스 심벌도 불가용 리스트에 추가 될 수 있다.On the other hand, whether the symbol is generated so far and can be used in the operation is managed as a list of unavailable symbols. The unavailable symbol list is initialized with source symbols that have not yet been generated, but source symbols that have already been generated may be added to the unavailable list during operation.

연산 시점에서 이미 생성되어 있는 소스 심볼이라도 연산 리스트의 각 연산에서 제 1 심볼이 불가용 심볼 리스트에 포함되어 있으면 제2 심볼도 불가용 심볼 리스트에 추가되어 이후의 연산 리스트에서는 생성되지 않은 소스 심볼과 같이 취급된다. 반면에 D 벡터의 앞 부분 S+H개의 심볼은 '0'으로 채워진 심볼이므로, 불가용 심볼 리스트 초기화 때에는 이미 생성된 소스 심볼과 같이 취급되며, D 벡터 뒷 부분 K'-K개의 패딩 심볼도 같은 취급을 받는다.Even if the source symbol is already generated at the time of operation, if the first symbol is included in the unavailable symbol list in each operation of the operation list, the second symbol is added to the unavailable symbol list, and the source symbol not generated in the subsequent operation list and Are treated together. On the other hand, the S + H symbols at the beginning of the D vector are filled with '0', so when initializing the unavailable symbol list, they are treated like the generated source symbols, and the K'-K padding symbols after the D vector are also the same. Are treated.

한편, 상기 연산부(122)가 상기 연산 리스트 내 일부에 대해서만 연산을 수행하는 동안, 메모리에는 추가 생성된 소스 심볼이 저장될 수 있다. 따라서, 상기 연산부(122)는 새로운 연산 시작 시점까지 아직 생성되지 않은 소스 심볼들로 불가용 심볼 리스트를 초기화하고 그 회차의 연산 도중에는 각 연산에서 제2 심볼이 이미 생성되어 있는 것이어서 불가용 심볼 리스트에 포함되어 있지 않더라도 그 연산에서 제1 심벌이 불가용 심볼 리스트에 포함되어 있으면 그 제2 심볼을 불가용 심볼 리스트에 추가해가며 연산 가능한 연산만을 연산 리스트의 연산 끝까지 수행한 후에, 다시 그 시점까지 아직 생성되지 않은 소스 심볼들로 불가용 심볼 리스트를 초기화하고 상기 연산 리스트 맨 위로 올라가 다음 회차의 연산을 반복 수행할 수 있다. 이때 이전 회차에서 이미 수행한 연산은 다시 반복해서 수행하지 않도록 연산 리스트 내의 각 연산이 수행됐는지 여부를 flag 형식으로 관리할 수 있다. 상기 연산부(122)는 소스 블럭을 구성하는 모든 소스 심볼들이 생성될 때까지 즉, 상기 연산 리스트 내 모든 연산이 종료될 때까지 상기 과정을 여러 회차 반복 수행할 수 있다.Meanwhile, while the operation unit 122 performs an operation on only a part of the operation list, additionally generated source symbols may be stored in the memory. Accordingly, the operation unit 122 initializes the unusable symbol list with source symbols not yet generated until the start of a new operation, and the second symbol is already generated in each operation during the operation. Even if it is not included, if the first symbol is included in the unavailable symbol list in the operation, the second symbol is added to the unavailable symbol list, and only the operable operation is performed until the operation end of the operation list, and still generated until that point. The unusable symbol list may be initialized with the unsourced symbols, and the list may be returned to the top of the operation list to repeat the next operation. At this time, it is possible to manage whether each operation in the operation list is performed in a flag format so that the operation already performed in the previous round is not performed again. The operation unit 122 may repeat the process several times until all source symbols constituting the source block are generated, that is, until all operations in the operation list are completed.

이때 상기 연산부(122)는 앞선 연산 시작 시점에서 연산된 부분은 건너뛰고 연산이 되지 않은 부분만 연산을 수행한다. 이를 위해서 상기 연산부(122)는 상기 연산 리스트 중에서 연산이 완료된 연산 순서 정보 또는 연산이 미완료된 연산 순서 정보를 관리하는 연산 대상 리스트를 상기 메모리부(121)에 저장시킬 수 있다. 상기 연산 리스트 중 연산이 완료된 연산 순서 정보는 다음 연산 시점에 연산 가능 여부를 다시 판단할 필요가 없다. 상기 연산부(122)는 연산이 완료된 연산 순서 정보에 대한 리스트를 만들어서 다음 연산 시점에 해당 연산을 바로 건너뛸 수 있도록 할 수 있다. 반대로, 상기 연산부(122)는 연산이 미완료된 연산 순서 정보에 대한 리스트를 만들어서 다음 연산 시점에 해당 연산 순서로 바로 이동하여 연산을 수행할 수 있다.At this time, the operation unit 122 skips the portion calculated at the start of the previous operation and performs only the portion that has not been calculated. To this end, the operation unit 122 may store, in the memory unit 121, an operation target list for managing operation order information for which the operation is completed or operation order information for which the operation is not completed. It is not necessary to re-determine whether the operation order information in which the operation is completed in the operation list is possible at the next operation time point. The operation unit 122 may make a list of the operation order information on which the operation is completed, so that the operation may be immediately skipped at the next operation time. On the contrary, the operation unit 122 may make a list of the operation order information for which the operation is not completed and move to the operation order immediately at the next operation time to perform the operation.

한편, 상기 연산부(122)가 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트에 따른 연산을 수행함에 있어서 고려해야할 사항이 더 있을 수 있다. 임의의 연산 시작 시점에 수행할 수 없는 연산과 관련된 제2 심볼은 이후 모든 연산에서 배제되어야 한다. 이에 대한 설명을 도 5를 참조하며 설명하도록 하겠다.Meanwhile, there may be further matters to be considered in the calculation of the operation list based on the source symbols generated by the operation unit 122 up to an operation start time. A second symbol associated with an operation that cannot be performed at the start of any operation must be excluded from all subsequent operations. This will be described with reference to FIG. 5.

도 5는 배제되어야 하는 소스 심볼에 대한 참고 예시도이다.5 is a reference example of a source symbol to be excluded.

도 5를 참조하여 설명할 때, 앞선 실시예와 같이, 현재 연산 시작 시점까지 생성된 소스 심볼의 개수는 500개라고 가정하겠다. 연산 순서 123번을 살펴보면, "560번 제1 심볼과 27번 제2 심볼을 연산하라"는 내용이다. 현재 연산 시점에서 상기 연산 순서 123번은 560번 제 1 심볼이 아직 생성되지 않았기 때문에 연산이 불가능하다. 이후 연산 순서 188번을 살펴보면, "262번 제1 심볼과 27번 제2 심볼을 연산하라"는 내용이다. 현재 연산 시작 시점에서 연산 순서 188번 자체는 252번 심볼과 27번 심볼이 이미 생성되어 있기 때문에 현재 시점에 연산이 가능하다고 생각할 수 있다. 그러나 연산 순서 188번은 연산되지 않아야 한다. 상기 연산 리스트는 가우스 소거법에 따른 연산 내용이다. 만약 연산 순서 188번을 먼저 연산하여 그 결과 값이 27번 심볼에 저장되고 그 이후 560번 심볼이 생성된 다음 회차의 반복 연산때 123번이 연산되면, 원래 123번 연산에서 사용되어야 할 27번 심볼의 값과 다른 값을 이용하여 123번 연산을 수행하게 된다. 그 결과, 행렬 A의 역행렬을 적용하기 위한 최종 결과값이 산출되지 않고, 전혀 다른 결과값이 산출될 것이다. 따라서, 임의의 연산 시작 시점에 수행할 수 없는 연산과 관련된 제1 심볼 또는 제2 심볼은 이후 모든 연산에서 배제되어야 할 것이나, 연산 리스트 상에 제1 심볼은 한번 모여서 등장한 이후에는 연산 리스트에 다시 등장하지 않는 1단계 연산의 특성에 의해 제2 심볼만 배제하면 된다.Referring to FIG. 5, it is assumed that the number of source symbols generated up to the current operation start time point is 500, as in the previous embodiment. Referring to the operation sequence 123, "operate the first symbol of 560 and the second symbol of 27". In the current operation time point, the operation sequence 123 cannot be operated because the first symbol 560 has not been generated yet. After that, referring to the operation order 188, "operate the first symbol 262 and the second symbol 27". At the start of the current operation, operation order 188 itself can be considered that operation is possible at the present time because symbols 252 and 27 have already been generated. However, operation order 188 should not be calculated. The operation list is the operation contents according to the Gaussian elimination method. If operation number 188 is calculated first and the result value is stored in symbol 27, then symbol 560 is generated, and then number 123 is calculated in the next iteration operation, symbol 27 should be used in operation 123. The operation 123 is executed by using a value different from. As a result, the final result for applying the inverse of the matrix A will not be calculated, and a completely different result will be calculated. Therefore, a first symbol or a second symbol related to an operation that cannot be performed at the start of any operation should be excluded from all operations afterwards, but after the first symbol appears once in a list of operations, it reappears in the operation list. Only the second symbol need be excluded by the characteristic of one-step operation not performed.

이를 위해, 상기 연산부(122)는 상기 연산 리스트 중에서 연산에 쓰일 수 없는 제1 심볼 및 제2 심볼의 정보를 관리하는 불가용 심볼 리스트를 상기 메모리부(121)에 저장시킬 수 있다. 그리고 상기 연산부(122)는 상기 불가용 심볼 리스트에 포함된 제1 심볼 또는 제2 심볼이 포함된 연산은 제외하고 나머지 연산을 수행할 수 있다. 이때 제1 심볼이 상기 불가용 심볼 리스트에 포함되어 있어 해당 연산을 제외했다면 그 연산의 제2 심볼 역시 불가용 심볼 리스트에 추가한 후 나머지 연산을 계속 수행하나, 반대로 제2 심볼이 상기 불가용 심볼 리스트에 포함되어 있어 해당 연산을 제외한 경우에는 그 연산의 제1 심볼을 불가용 심볼 리스트에 추가하지 않는다. 그리고 상기 연산부(122)는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트 내에서 연산 가능한 일부 연산을 모두 수행한 후에 상기 불가용 심볼 리스트를 초기화 시킬 수 있다. 상기 불가용 심볼 리스트는 현재까지 생성된 소스 심볼만으로 연산 리스트에 따른 연산을 수행함에 있어서 연산이 불가능한 것을 의미할 뿐이다. 따라서, 다음 연산 시작 시점에는 새롭게 더 생성된 소스 심볼들에 의해서 해당 제1 심볼 또는 제2 심볼이 연산 가능하지 불가능한지 여부는 매번 새롭게 판단되고 관리되어야 한다. 따라서 상기 불가용 심볼 리스트의 초기화란, 리스트에 포함된 심볼에 대한 정보를 지우고 그 시점까지 생성되지 않은 소스 심볼에 해당하는 D 벡터의 성분을 파악하는 작업이다. 보다 구체적으로는, D벡터의 앞 부분 S+H 개는 '0'으로 채워진 심볼이므로 항상 알 수 있고, 뒷 부분 K'-K 개 역시 '0'으로 채워진 패딩 심볼이므로 마찬가지이므로, 중간 부분에 들어가는 소스 심볼 중 아직 생성되지 않은 소스 심볼에 해당하는 번호로 불가용 심볼 리스트를 초기화하는 것을 의미한다.To this end, the operation unit 122 may store, in the memory unit 121, an unusable symbol list for managing information of the first symbol and the second symbol that cannot be used in the operation list. The operation unit 122 may perform the remaining operations except the operation including the first symbol or the second symbol included in the unavailable symbol list. In this case, if the first symbol is included in the unavailable symbol list and the corresponding operation is excluded, the second symbol of the operation is also added to the unavailable symbol list and the remaining operations are continued. On the contrary, the second symbol is the unavailable symbol. If it is included in the list and the operation is excluded, the first symbol of the operation is not added to the unavailable symbol list. The operation unit 122 may initialize the unavailable symbol list after performing all of the operations that are operable in the operation list by using the source symbols generated until an operation start time. The unavailable symbol list only means that an operation is impossible in performing an operation according to an operation list using only source symbols generated to date. Therefore, whether the first symbol or the second symbol is not operable or impossible by the newly generated source symbols must be newly determined and managed at the next operation start time. Therefore, the initialization of the unavailable symbol list is an operation of erasing information on symbols included in the list and identifying a component of a D vector corresponding to a source symbol not generated until that time. More specifically, since the front S + H of the D vector is a symbol filled with '0', it is always known, and the rear K'-K is also the same because it is a padding symbol filled with '0'. This means that the unusable symbol list is initialized with a number corresponding to a source symbol not yet generated among the source symbols.

한편, 임의의 연산 시작 시점까지 생성된 소스 심볼들의 개수가 적은 경우 상기 연산 리스트 내에서 실질적으로 연산이 가능한 연산 내용은 많지 않을 것이다. 예를 들어, 소스 심볼로 이루어진 D벡터의 성분이 1,071차원인 경우를 가정해보겠다. D벡터의 앞부분 S+H(59+10)개는 O으로 채워진 심볼이고, 뒷부분 K'-K개도 0으로 채워진 패딩 심볼이며, 나머지 가운데 부분만 소스 심볼이므로 D벡터를 이루는 심볼 1,071개가 모두 순차적으로 생성되는 것은 아니나, 이하에서는 원리 설명의 편의상 1,071개가 모두 순차적으로 생성되는 소스 심볼인 것으로 설명하겠다.On the other hand, if the number of source symbols generated up to the start of any operation is small, there may not be many operations that can be substantially operated in the operation list. For example, suppose that a component of a D vector consisting of source symbols has 1,071 dimensions. The first S + H (59 + 10) of the D vector is an O-filled symbol, the latter K'-K is also a zero-padded symbol, and since only the middle part is a source symbol, all 1,071 symbols forming the D vector are sequentially Although not generated, hereinafter, for convenience of explanation, all 1,071 will be described as source symbols sequentially generated.

도 6는 생성된 소스 심볼의 개수에 따른 연산 비율의 참고도이다.6 is a reference diagram of an operation rate according to the number of generated source symbols.

도 6을 참조하면, 점선으로 표시된 박스 안에는 연산에 사용된 소스 심볼의 번호를 의미하고, 일 점 쇄선으로 표시된 박스 안에는 연산된 개수 및 비율을 의미한다. 도 4에 나타난 내용을 설명하자면, 소스 심볼 76번까지 생성된 시점에는 총 3개의 연산이 가능하며 이 것은 전체 연산의 0.02%이다. 다음으로, 소스 심볼 117번까지 생성된 시점에는 총 4개의 연산이 가능하며 이것은 전체 연산의 0.02%이다. 다음으로, 소스 심볼 161번까지 생성된 시점에는 총 5개의 연산이 가능하며 이 것은 전체 연산의 0.03%이다. 다음으로, 소스 심볼 169번까지 생성된 시점에는 총 6개의 연산이 가능하며 이것은 전체 연산의 0.04%이다. 다음으로, 소스 심볼 171번까지 생성된 시점에는 총 7개의 연산이 가능하며 이 것은 전체 연산의 0.04%이다. 0번부터 1,070번까지 소스 심볼이 1,071개인 경우 총 연산의 개수는 16,819개이다. 따라서, 생성된 소스 심볼의 개수가 적을 때에는 연산 가능한 것보다 연산 불가능한 대상이 더 많을 것이다. 이 경우 상기 연산부(122)가 연산 대상 리스트 및/또는 불가용 심볼 리스트를 관리하는 것에 더 많은 자원을 소모하게 될 수 있다.Referring to FIG. 6, a box indicated by a dotted line means a number of a source symbol used for calculation, and a box and a dotted line indicate a calculated number and ratio. Referring to FIG. 4, a total of three operations are possible at the time of generating the source symbol 76, which is 0.02% of the total operations. Next, a total of four operations are possible when the source symbol 117 is generated, which is 0.02% of the total operations. Next, when the source symbol 161 is generated, a total of five operations are possible, which is 0.03% of the total operations. Next, when the source symbol 169 is generated, a total of six operations are possible, which is 0.04% of the total operations. Next, when the source symbol 171 is generated, a total of seven operations are possible, which is 0.04% of the total operations. In the case of 1,071 source symbols from 0 to 1,070, the total number of operations is 16,819. Therefore, when the number of generated source symbols is small, there will be more objects that cannot be computed than those that can be computed. In this case, the operation unit 122 may consume more resources for managing the operation target list and / or the unavailable symbol list.

따라서, 상기 연산부(122)는 사용자가 임의로 정한, 미리 설정된 소스 심볼의 개수가 생성된 이후에 상기 연산 리스트에 따른 연산을 수행할 수 있다. 상기 미리 설정된 소스 심볼의 개수는 총 연산량과 상기 연산부(122)가 연산 대상 리스트 및/또는 불가용 심볼 리스트를 관리에 필요한 연산량 등을 고려하여 실험적으로 산출될 수 있다.Therefore, the operation unit 122 may perform an operation according to the operation list after generating a predetermined number of source symbols predetermined by a user. The preset number of source symbols may be experimentally calculated in consideration of the total amount of calculation and the amount of calculation necessary for the operation unit 122 to manage the calculation target list and / or the unavailable symbol list.

도 7은 본 명세서에 따른 인코딩 장치의 효율성에 대한 참고도이다.7 is a reference diagram for the efficiency of the encoding apparatus according to the present specification.

도 7의 왼쪽을 참조하면, 소스 심볼이 1,070개가 생성된 시점으로서 마지막 소스 심볼 단 1개만 아직 생성되지 않은 상태이다. 이 시점까지 총 16,819개의 연산 중 15,304개의 연산이 가능하며 이것은 전체 연산의 90.99%이다. 따라서, 종래 기술에 따라 모든 소스 블럭이 생성된 이후에 연산을 수행하는 것(RFC 6330의 5.4.2에 따른 5단계의 과정 중에서 1단계)에 비해서 90%의 시간 지연을 방지할 수 있고, 5단계 전체에 걸쳐서는 77%(90% x 85%)의 시간 지연을 방지할 수 있는 현저한 효과가 있다.Referring to the left side of FIG. 7, when 1,070 source symbols are generated, only one last source symbol has not been generated yet. Up to this point, 15,304 operations out of a total of 16,819 operations are available, which is 90.99% of the total. Therefore, according to the prior art, it is possible to prevent a time delay of 90% compared to performing the operation after all the source blocks are generated (one of the five steps according to 5.4.2 of RFC 6330). Throughout the steps there is a significant effect of preventing 77% (90% x 85%) time delay.

한편, 상술된 인코딩 장치(100)는 구분되는 각 수행 결과물에 따라 분리된 구성으로 도면에 도시하였지만, 본 발명이 속한 기술분야에 알려진 프로세서, ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로, 레지스터, 통신 모뎀, 데이터 처리 장치 등으로 구현될 수 있다.Meanwhile, although the above-described encoding apparatus 100 is illustrated in a separate configuration according to each performance result to be distinguished, a processor, an application-specific integrated circuit (ASIC), another chipset, and a logic circuit known in the art to which the present invention belongs. , Registers, communication modems, data processing devices, and the like.

또한, 본 명세서에 따른 인코딩 방법은 상술된 인코딩 장치의 동작들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램의 형태로 구현될 수 있다.In addition, the encoding method according to the present specification may be implemented in the form of a computer program written to perform the operations of the encoding apparatus described above and recorded on a computer-readable recording medium.

상기 컴퓨터프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C/C++, C#, JAVA, Python, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.The computer program is a C / C ++, C #, JAVA, Python that the computer's processor (CPU) can read through the computer's device interface in order for the computer to read the program and execute the methods implemented as the program. It may include a code (Code) coded in a computer language, such as machine language. Such code may include functional code associated with a function or the like that defines the necessary functions for executing the methods, and includes control procedures related to execution procedures necessary for the computer's processor to execute the functions according to a predetermined procedure. can do. In addition, the code may further include memory reference code for additional information or media required for the computer's processor to execute the functions at which location (address address) of the computer's internal or external memory should be referenced. have. Also, if the processor of the computer needs to communicate with any other computer or server remotely in order to execute the functions, the code may be used to communicate with any other computer or server remotely using the communication module of the computer. It may further include a communication related code for whether to communicate, what information or media should be transmitted and received during communication.

상기 저장되는 매체는, 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상기 저장되는 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있지만, 이에 제한되지 않는다. 즉, 상기 프로그램은 상기 컴퓨터가 접속할 수 있는 다양한 서버 상의 다양한 기록매체 또는 사용자의 상기 컴퓨터상의 다양한 기록매체에 저장될 수 있다. 또한, 상기 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장될 수 있다.The stored medium is not a medium for storing data for a short time such as a register, a cache, a memory, but semi-permanently, and means a medium that can be read by the device. Specifically, examples of the storage medium include, but are not limited to, a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like. That is, the program may be stored in various recording media on various servers to which the computer can access or various recording media on the computer of the user. The media may also be distributed over network coupled computer systems so that the computer readable code is stored in a distributed fashion.

이상, 첨부된 도면을 참조로 하여 본 명세서의 실시예를 설명하였지만, 본 명세서가 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다. While the embodiments of the present disclosure have been described with reference to the accompanying drawings, a person skilled in the art to which the present disclosure belongs may practice the present disclosure in other specific forms without changing the technical spirit or essential features. I can understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

100 : 랩터Q 인코더
110 : 패딩부
120 : 중간 심볼 생성부
121 : 메모리부
122 : 연산부
130 : LT 인코더
200 : 랩터Q 디코더
210 : 패딩부
220 : 중간 심볼 생성부
230 : LT 디코더
100: Raptor Q Encoder
110: padding
120: intermediate symbol generation unit
121: memory unit
122: calculator
130: LT encoder
200: Raptor Q Decoder
210: padding
220: intermediate symbol generation unit
230: LT decoder

Claims (15)

소정의 크기를 가진 복수의 소스 심볼로 구성된 소스 블럭에 패딩 심볼을 추가하여 확장된 소스 블럭을 생성하는 패딩부;
상기 확장된 소스 블럭을 이용하여 중간 심볼을 생성하는 중간 심볼 생성부; 및
상기 중간 심볼을 이용하여 복구 심볼을 생성하는 LT 인코더;를 포함하는 인코딩 장치로서,
상기 중간 심볼 생성부는,
가우스 소거법에 따른 연산 리스트를 저장하는 메모리부; 및
상기 중간 심볼을 생성하기 위한 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트에 따른 연산을 수행하는 연산부;를 포함하는 것을 특징으로 하는 인코딩 장치.
A padding unit generating an extended source block by adding a padding symbol to a source block including a plurality of source symbols having a predetermined size;
An intermediate symbol generator configured to generate an intermediate symbol using the extended source block; And
An encoding apparatus comprising: an LT encoder for generating a recovery symbol using the intermediate symbol;
The intermediate symbol generation unit,
A memory unit for storing an operation list according to the Gaussian elimination method; And
And an operation unit configured to perform an operation according to the operation list using source symbols generated up to an operation start time for generating the intermediate symbol.
청구항 1에 있어서,
상기 연산 리스트는, 연산 순서 정보, 연산 대상이 되는 제1 심볼 정보, 연산 대상이 되는 제2 심볼 정보 및 연산 내용 정보를 포함하는 것을 특징으로 하는 인코딩 장치.
The method according to claim 1,
And the operation list includes operation order information, first symbol information to be calculated, second symbol information to be calculated, and arithmetic content information.
청구항 2에 있어서,
상기 연산부는 상기 연산 리스트 중에서 연산이 완료된 연산 순서 정보 또는 연산이 미완료된 연산 순서 정보를 관리하는 연산 대상 리스트를 상기 메모리부에 저장시키는 것을 특징으로 하는 인코딩 장치.
The method according to claim 2,
And the operation unit stores the operation target list managing the operation order information for which the operation is completed or the operation order information for which the operation is not completed, in the memory unit.
청구항 2에 있어서,
상기 연산부는 상기 연산 리스트에 포함된 상기 제1 심볼 정보와 상기 제2 심볼 정보 중에서 연산에 쓰일 수 없는 제1 심볼 정보와 제2 심볼 정보를 관리하는 불가용 심볼 리스트를 상기 메모리부에 저장시키는 것을 특징으로 하는 인코딩 장치.
The method according to claim 2,
The operation unit may be configured to store, in the memory unit, an unusable symbol list that manages first symbol information and second symbol information that cannot be used in an operation among the first symbol information and the second symbol information included in the operation list. An encoding device.
청구항 4에 있어서,
상기 연산부는 상기 불가용 심볼 리스트에 포함된 제1 심볼 정보 또는 제2 심볼 정보가 포함된 연산은 제외하고 나머지 연산을 수행하는 것을 특징으로 하는 인코딩 장치.
The method according to claim 4,
And the operation unit performs a remaining operation except for an operation including first symbol information or second symbol information included in the unavailable symbol list.
청구항 5에 있어서,
상기 연산부는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트 내에서 연산 가능한 일부 연산을 모두 수행한 후에 상기 불가용 심볼 리스트를 초기화 시키는 것을 특징으로 하는 인코딩 장치.
The method according to claim 5,
And the operation unit initializes the unavailable symbol list after performing all of the operations operable in the operation list using the source symbols generated up to an operation start point.
청구항 1에 있어서,
상기 연산부는 미리 설정된 소스 심볼의 개수가 생성된 이후에 상기 연산 리스트에 따른 연산을 수행하는 것을 특징으로 하는 인코딩 장치.
The method according to claim 1,
And the operation unit performs an operation according to the operation list after a preset number of source symbols is generated.
소정의 크기를 가진 복수의 소스 심볼로 구성된 소스 블럭에 패딩 심볼을 추가하여 확장된 소스 블럭을 생성하는 패딩 단계;
상기 확장된 소스 블럭을 이용하여 중간 심볼을 생성하는 중간 심볼 생성 단계; 및
상기 중간 심볼을 이용하여 복구 심볼을 생성하는 LT 인코딩 단계;를 포함하는 인코딩 방법으로서,
상기 중간 심볼 생성 단계는,
상기 중간 심볼을 생성하기 위한 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 메모리부에 저장된 가우스 소거법에 따른 연산 리스트에 따른 연산을 수행하는 연산 단계;를 더 포함하는 것을 특징으로 하는 인코딩 방법.
A padding step of generating an extended source block by adding a padding symbol to a source block including a plurality of source symbols having a predetermined size;
Generating an intermediate symbol using the extended source block; And
LT encoding step of generating a repair symbol using the intermediate symbol;
The intermediate symbol generation step,
And performing an operation according to an operation list according to a Gaussian elimination method stored in a memory unit by using the source symbols generated up to an arbitrary operation start time point for generating the intermediate symbol.
청구항 8에 있어서,
상기 연산 리스트는, 연산 순서 정보, 연산 대상이 되는 제1 심볼 정보, 연산 대상이 되는 제2 심볼 정보 및 연산 내용 정보를 포함하는 것을 특징으로 하는 인코딩 방법.
The method according to claim 8,
And the operation list includes operation order information, first symbol information to be calculated, second symbol information to be calculated, and arithmetic content information.
청구항 9에 있어서,
상기 연산 단계는 상기 연산 리스트 중에서 연산이 완료된 연산 순서 정보 또는 연산이 미완료된 연산 순서 정보를 관리하는 연산 대상 리스트를 상기 메모리부에 저장시키는 단계를 더 포함하는 것을 특징으로 하는 인코딩 방법.
The method according to claim 9,
The operation step further comprises the step of storing in the memory unit arithmetic target list for managing arithmetic operation order information is completed or arithmetic operation information is not completed in the operation list.
청구항 9에 있어서,
상기 연산 단계는 상기 연산 리스트에 포함된 상기 제1 심볼 정보와 상기 제2 심볼 정보 중에서 연산에 쓰일 수 없는 제1 심볼 정보와 제2 심볼 정보를 관리하는 불가용 심볼 리스트를 상기 메모리부에 저장시키는 것을 특징으로 하는 인코딩 방법.
The method according to claim 9,
The operation may include storing, in the memory unit, an unusable symbol list that manages first symbol information and second symbol information that cannot be used in an operation among the first symbol information and the second symbol information included in the operation list. Encoding method.
청구항 11에 있어서,
상기 연산 단계는 상기 불가용 심볼 리스트에 포함된 제1 심볼 정보 또는 제2 심볼 정보가 포함된 연산은 제외하고 나머지 연산을 수행하는 것을 특징으로 하는 인코딩 방법.
The method according to claim 11,
The operation may include performing an operation other than an operation including first symbol information or second symbol information included in the unavailable symbol list.
청구항 12에 있어서,
상기 연산 단계는 임의의 연산 시작 시점까지 생성된 소스 심볼들을 이용하여 상기 연산 리스트 내에서 연산 가능한 일부 연산을 모두 수행한 후에 상기 불가용 심볼 리스트를 초기화 시키는 것을 특징으로 하는 인코딩 방법.
The method according to claim 12,
And wherein the calculating step initializes the unavailable symbol list after performing all of the operations that are operable in the operation list using the source symbols generated up to an operation start time.
청구항 8에 있어서,
상기 연산 단계는 미리 설정된 소스 심볼의 개수가 생성된 이후에 상기 연산 리스트에 따른 연산을 수행하는 것을 특징으로 하는 인코딩 방법.
The method according to claim 8,
And wherein the calculating step performs an operation according to the operation list after a preset number of source symbols is generated.
컴퓨터에서 청구항 8 내지 청구항 14 중 어느 한 청구항에 따른 인코딩 방법의 각 단계들을 수행하도록 작성되어 컴퓨터로 독출 가능한 기록 매체에 기록된 컴퓨터프로그램.A computer program recorded on a computer-readable recording medium, which is written to perform the steps of the encoding method according to any one of claims 8 to 14 in a computer.
KR1020190072956A 2019-06-19 2019-06-19 Raptor-q encoding apparatus with improved encoding delay time and method thereof KR102021872B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190072956A KR102021872B1 (en) 2019-06-19 2019-06-19 Raptor-q encoding apparatus with improved encoding delay time and method thereof
US16/801,819 US20200403643A1 (en) 2019-06-19 2020-02-26 Raptor-q encoding apparatus with improved encoding delay time and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190072956A KR102021872B1 (en) 2019-06-19 2019-06-19 Raptor-q encoding apparatus with improved encoding delay time and method thereof

Publications (1)

Publication Number Publication Date
KR102021872B1 true KR102021872B1 (en) 2019-09-18

Family

ID=68071072

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190072956A KR102021872B1 (en) 2019-06-19 2019-06-19 Raptor-q encoding apparatus with improved encoding delay time and method thereof

Country Status (1)

Country Link
KR (1) KR102021872B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102145326B1 (en) 2019-11-27 2020-08-18 오픈스택 주식회사 Reordering operation list apparatus for raptor-q encoding and method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140068386A1 (en) * 2012-08-31 2014-03-06 Industrial Technology Research Institute Apparatus and method for accelerating the encoding of raptor codes
KR20170030235A (en) 2015-09-09 2017-03-17 오픈스택 주식회사 Method of reliable data transmission for LTE hetero-networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140068386A1 (en) * 2012-08-31 2014-03-06 Industrial Technology Research Institute Apparatus and method for accelerating the encoding of raptor codes
KR20170030235A (en) 2015-09-09 2017-03-17 오픈스택 주식회사 Method of reliable data transmission for LTE hetero-networks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RFC 5170 "Low Density Parity Check (LDPC) Staircase and Triangle Forward Error Correction (FEC) Schemes"
RFC 6330 "RaptorQ Forward Error Correction Scheme for Object Delivery"

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102145326B1 (en) 2019-11-27 2020-08-18 오픈스택 주식회사 Reordering operation list apparatus for raptor-q encoding and method thereof

Similar Documents

Publication Publication Date Title
EP2357731B1 (en) Systematic decoding of chain reaction codes
US8006160B2 (en) Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
EP1116335B1 (en) Lost packet recovery method for packet transmission protocols
US7711068B2 (en) Multi-stage code generator and decoder for communication systems
US8683301B2 (en) Error correction coding for recovering multiple packets in a group in view of limited bandwidth
KR102021872B1 (en) Raptor-q encoding apparatus with improved encoding delay time and method thereof
US9455750B2 (en) Source block size selection
KR102145326B1 (en) Reordering operation list apparatus for raptor-q encoding and method thereof
US20200403643A1 (en) Raptor-q encoding apparatus with improved encoding delay time and method thereof
CN115085872A (en) Data processing method and device, storage medium and electronic equipment
Botos et al. Study of the decoding complexity for rateless erasure codes

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant