하기에서 본 개시를 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 개시에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
먼저, 본 개시에서 사용될 용어를 정리하면 다음 <표 1> 내지 <표 3>과 같다.
표 1
용어 | 설명 |
access unit | smallest media data entity to which timing information can be attributed |
asset | any multimedia data entity that is associated with a unique identifier and that is used for building a multimedia presentation |
code rate | ratio between the number of source symbols and the number of encoding symbols |
encoding symbol | unit of data generated by the encoding process |
encoding symbol block | set of encoding symbols |
FEC code | algorithm for encoding data such that the encoded data flow is resilient to data loss |
FEC encoded flow | logical set of flows that consists of an FEC source flow and one or more associated FEC repair flows |
FEC payload ID | identifier that identifies the contents of a MMT packet with respect to the MMT FEC scheme |
FEC repair flow | data flow carrying repair symbols to protect an FEC source flow |
FEC repair packet | MMT packet along with repair FEC payload identifier to deliver one or more repair symbols of a repair symbol block |
FEC source flow | flow of MMT packets protected by an MMT FEC scheme |
FEC source packet | MMT packet along with source FEC payload identifier |
표 2
용어 | 설명 |
media fragment unit | fragment of a media processing unit |
media processing unit | generic container for independently decodable timed or non-timed data that is media codec agnostic |
MMT entity | software and/or hardware implementation that is compliant to a profile of MMT |
MMT FEC scheme | forward error correction procedure that defines the additional protocol aspects required to use an FEC scheme in MMT |
MMT packet | formatted unit of the media data to be delivered using the MMT protocol. |
MMT payload | formatted unit of media data to carry MMT packages and/or signaling messages using either the MMT protocol or an Internet application layer transport protocols (e.g. RTP) |
MMT protocol | application layer transport protocol for delivering MMT payload over IP networks |
MMT receiving entity | MMT entity that receives and consumes media data |
MMT sending entity | MMT entity that sends media data to one or more MMT receiving entities |
표 3
용어 | 설명 |
non-timed data | media data that do not have inherent timeline for the decoding and/or presentating of its media content |
package | logical collection of media data, delivered using MMT |
repair FEC payload ID | FEC payload ID for repair packets |
repair symbol | encoding symbol that contains redundancy information for error correction |
repair symbol block | set of repair symbols which can be used to recover lost source symbols |
source FEC payload ID | FEC payload ID for source packets. |
source packet block | segmented set of FEC source flow that is to be protected as a single block |
source symbol | unit of data to be encoded by an FEC encoding process |
source symbol block | set of source symbols generated from a single source packet block |
timed data | any data that has inherent timeline information for the decoding and/or presentation of its media contents. |
본 개시의 실시 예에서 소스 패킷 또는 FEC repair packet의 header는 소스 패킷 인지 FEC repair packet인지를 구분하는 정보를 가진다. Source Symbol Block내의 소스 심벌들의 순서를 알려주기 위한 별도의 Source Symbol ID(SS_ID)를 상기 소스 패킷에 추가하는 패킷 전송 방법과 본 개시의 패킷 전송 방법이 함께 사용될 경우 본 개시에 의한 소스 패킷 또는 FEC repair packet의 Header는 패킷이 Source Packet + SS_ID인지 , Source Packet 그 자체인지를 나타내는 정보, 기존 FEC Repair Packet과 본 개시의 실시 예에 의한 FEC Repair Packet을 구분하는 정보 중 적어도 하나를 포함한다.
하기 <표 4>는 MMT Packet Header의 FEC type의 실시 예를 나타낸 것으로서, value of FEC_type (or MMT packe type)을 나타낸 것이다.
표 4
Value | Description |
0 | MMT packet without FEC Source Payload ID |
1 | MMT packet with FEC Source Payload ID |
2 | MMT packet for repair symbol(s) for FEC Payload Mode 0 (FEC repair packet) |
3 | MMT packet for repair symbol(s) for FEC Payload Mode 1 (FEC repair packet) |
NOTE: If FEC type is set to 0, it indicates that FEC is not applied to this MMT packet or that FEC is applied to this MMT packet without adding FEC Source Payload ID. In the latter case, the combination of packet_sequence_number and packet_id in this packet identify the location of this MMT packet within Source Packet Block which is identified by the FEC repair payload ID of its associated FEC repair packet (e.g. replacement of SS_ID).
또한 이러한 packet 구분 정보는 AL-FEC message를 통해 기존 방법으로 FEC 적용하여 패킷 전송하는지 또는 본 개시로 FEC 적용하여 패킷 전송하는지를 나타내는 Payload ID_Mode Flag를 두어 수신단에 전송한다.
Paylaod ID_Mode Flag = 1: 본 개시에 의한 FEC 적용한 패킷 전송 방법(즉, Source Packet에 별도의 SS_ID를 사용하는 것 없이 Source Packet내에 있는 정보가 SS_ID를 대체하고, 본 개시에 의한 FEC repair packet format(예컨대, FEC Repair Payload ID)를 따른다)
Payload ID_Mode Flag = 0: 기존 발명과 같이 FEC를 적용한 패킷 전송 방법 (즉, Source Packet에 별도의 SS_ID를 추가하고, 기존 발명에 의한 FEC repair packet format(예컨대, repair FEC Payload ID)을 따른다.)
이하에서, 패리티와 repair는 동일한 의미로, 혼용하여 사용하기로 한다.
먼저 본 개시의 일 실시예의 기본 개념을 설명한다.
<일 실시예>
본 개시의 일 실시 예에 따른 통신 시스템에서 패킷을 송신하는 방법을 설명하면,, 송신기는 상기 전송하고자 하는 Asset들 및 Signaling message (예컨대, AL-FEC message 포함)를 위한 MMT packet들을 생성한다. 상기 송신기는 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 대해 AL-FEC message에 정의되어 있는 FEC coding structure, SSBG mode, FEC code등과 같은 FEC configuration에 대해 FEC encoding을 수행하여 repair symbol block을 생성한다. 상기 송신기는 상기 repair symbol(s)에 본 개시에서 제안하는 FEC repair payload ID를 추가하여 FEC repair packet을 생성한다. 그리고 상기 송신기는 상기 MMT packet, FEC repair packet을 상기 AL-FEC message를 포함하는 Signaling message와 함께 MMT packet stream으로 전송한다. 상기 MMT packet, FEC repair packet의 전송 전에 상기 AL-FEC message를 전송하는 것도 가능하다.
여기서, 상기 본 개시에서 제안하는 repair FEC payload ID는 예컨대, M, T, SSM, timestamp, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나의 정보를 포함한다. 상기 FEC repair payload ID는 상기 FEC repair packet의 헤더에 포함될 수 있다.
이하 상기 FEC repair payload ID에 포함될 수 있는 각 정보를 구체적으로 설명하기로 한다.
상기 "M"은 본 repair packet의 repair FEC payload ID가 dependent repair FEC payload ID인지 independent repair FEC payload ID인지를 나타낸다(Dependent repair FEC payload ID 정의: repair FEC payload ID에 있는 정보와 AL-FEC message에 저장되어 정보의 조합으로 FEC decoding processing에 필요한 정보를 얻을 수 있음). 상기 Independent repair FEC payload ID는 AL-FEC message에 저장되어 있는 정보 없이 상기 Independent repair FEC payload ID를 포함하고 있는 packet의 정보만으로 FEC decoding processing에 필요한 정보를 얻을 수 있음)를 나타낸다. 만일 Independent repair FEC Payload ID가 사용되지 않고 Dependent repair FEC Payload ID만 사용되는 경우 상기 M field는 Reserved Field로 남는다. 하기 정보들은 Dependent repair FEC Payload ID로 사용되는 경우에 있어서 각 Field의 의미를 나타낸다.
상기 "T"는 timestamp field가 있는지 없는지를 나타내는 flag 정보이다.
상기 "SSM"은 SS_start_seq_nr field의 사이즈를 나타내는 정보(예를 들어 SS_start_seq_nr field의 사이즈(in bits) = 8+8*SSM)이다.
상기 "timestamp"는 본 repair packet이 protection하는 source packet block의 첫 번째 source packet에 저장된 timestamp을 나타낸다.
상기 "SS_start_seq_nr[i]"는 AL-FEC message에 기술된 본 source flow에서 i번째 packet_ID값을 가지는 상기 source packet(or symbol) block의 source packet들 중 가장 낮은 packet sequence number에서 8+8*SSM bits 사이즈 만큼의 LSB값(예를 들어 packet_sequence_number가 32bits이고, 8+8*SSM이 24bits이면 packet_sequence_number의 첫 8bits를 제외한 나머지 24bits 값)(i=0,1,...,N-1)를 나타낸다. 따라서 상기 "SS_start_seq_nr[i]"를 통해 상기 source packet(or symbol) block에서 동일한 packet ID를 갖는(즉 동일하게 i 번째 packet ID를 갖는) source packet들 중 가장 낮은 시퀀스 번호를 갖는 source packet(즉 첫 번째 or 시작 source packet)이 어느 packet인지 알 수 있다. 다른 실시 예로 상기 가장 낮은 시퀀스 번호를 이용하지 않더라도 상기 source packet(or symbol) block에서 상기 첫 번째 or 시작 source packet이 어느 packet인지 확인할 수 있는 다른 정보를 이용하는 것도 가능할 것이다. 그리고 상기 packet ID를 이용하여 서로 다른 Asset에 속하는 패킷을 구별할 수 있다. 예를 들어 Asset a의 소스 패킷은 비디오 데이터를 전달하는 패킷이고, Asset b의 소스 패킷은 오디오 데이터를 전달하는 패킷이라면, 상기 Asset a의 패킷의 packet ID와 상기 Asset b의 패킷은 packet ID는 서로 다르다.
상기 "L[i]"는 SSB_length[i] field의 크기를 나타내는 정보로 SSB_length field size = 6+8*L로 주어진다.
상기 "SSB_length[i]"는 상기 source packet(or symbol) block에서 source packet들(or symbol들)의 개수(i=0,1,...,N-1)를 나타낸다. 상기 source packet들(or symbol들)의 개수는 상기 source packet(or symbol) block에서 동일한 packet ID를 갖는(즉 동일하게 i 번째 packet ID를 갖는) source packet들의 개수로 이해될 수 있다.
그리고 상기 "L2"는 RSB_length field의 크기를 나타내는 정보로 예컨대, RSB_length field size = 6+8*L2로 주어진다.
즉, 도 11a에 예시된 바와 같이 repair packet의 repair FEC payload ID에 포함되는 상기 SS_start_seq_nr field들(1101)과 상기 SSB_length field들(1103)의 정보는 AL-FEC message에 기술된 해당 Source Flow에 포함되는 Packet_ID들(1105)에 해당되는 source packet들의 시작 시퀀스 번호와 개수를 나타낸다. 만일 Source Flow에 포함되는 Packet_ID들의 수보다 source packet(or symbol) block안에 있는 packet_ID들의 수가 적은 경우 도 11b에 예시된 바와 같이 해당 source packet(or symbol) block을 위한 repair packet의 repair FEC payload ID는 AL-FEC message에 기술된 해당 Source flow에 포함되는 packet_ID들의 개수만큼 SS_start_seq_nr field와 SSB_length field가 존재하고 그 순서도 일치한다. 다만, source packet(symbol) block이 포함하고 있지 않은 packet_ID의 순서에 해당하는 SS_start_seq_nr field 또는 SSB_length field의 값을 특정값으로 설정하여 관계된 source packet (or symbol) block이 해당 packet_ID를 포함하고 있지 않음을 나타낸다. 예로 SSB_length field의 값을 0으로 설정하여 해당 packet_ID를 가지는 packet이 해당 source packet (or symbol) block내에 존재하지 않음을 나타낼 수 있다.
구체적으로 도 11b의 (a)를 참조하면, AL-FEC message에 기술된 source flow가 3개의 Packet_ID(0,1,2)로 구성되는데 비해 source packet(or symbol) Block #1은 0,1,2로 구성되고(1101), source packet(or symbol) block #2는 0,1로 구성되고(1103) source packet(or symbol) block #3은 1,2로 구성되는 경우(1105), 도 11b의 (b)와 같이 상기 source flow를 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1,2에 대한 순서대로 SS_start_seq_nr와 SSB_length field를 각각 3개씩 포함하지만, 그 field의 값은 source packet(or symbol) block 1을 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1,2에 대한 SS_start_seq_nr와 SSB_length를 설정하고, source packet(or symbol) block2를 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1에 대한 SS_start_seq_nr와 SSB_length를 설정하고, packet_ID 2를 포함하고 있지 않으므로 해당 SSB_length Field에 0(1107, 1109)을 설정하여 상기 source packet(or symbol) block2가 상기 packet_ID 2를 포함하고 있지 않음을 나타낼 수 있다. source packet(or symbol) block 3을 위한 repair packet의 repair FEC payload ID는 상기 source packet(or symbol) block3가 packet_ID 0을 포함하고 있지 않으므로 해당 SSB_length Field에 0을 설정하고, 상기 packet_ID 1,2에 대한 SS_start_seq_nr와 SSB_length를 설정한다. 또한 source packet (or symbol) block의 포함하고 있지 않은 packet_ID에 해당하는 SSB_length field를 사이즈를 결정하기 위한 L 필드는 0으로 설정하여 SSB_length field의 크기를 최소화 한다.
상기 "RSB_length"는 본 repair packet에 포함하는 repair symbol block의 repair symbol들의 개수 정보이다.
상기 "L3"는 RS_ID field의 크기를 나타내는 정보로 예컨대, RS_ID field size = 6+8*L2로 주어진다.
상기 "RS_ID"는 본 repair packet을 포함하는 repair symbol block에서 본 repair packet내에 있는 repair symbol(s)의 위치를 나타낸다(예를 들어 몇 번째 repair symbol인지 나타낸다.)
본 개시의 일 실시 예에 따른 송신 장치는, 송신부, FEC encoding를 수행하는 부호화부, 그리고 전송하고자 하는 Asset들 및 Signaling message (AL-FEC message 포함)를 위한 MMT packet들을 생성하고 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 대해 AL-FEC message에 정의되어 있는 FEC coding structure, SSBG mode, FEC code등과 같은 FEC configuration에 대해 상기 부호화부를 통해 FEC encoding을 수행하여 repair symbol block을 생성하고 본 개시에서 제안하는 FEC repair payload ID를 추가하여 FEC repair packet을 생성하여 상기 AL-FEC message를 포함하는 Signaling message와 함께 MMT packet stream으로 상기 송신부를 통해 전송하는 동작을 제어하는 제어부 포함하여 구현될 수 있다.
여기서, 상기 본 개시에서 제안하는 repair FEC payload ID는 상기한 M, T, SSM, timestamp, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나의 정보를 포함한다.
본 개시의 일 실시 예에 따른 또 다른 송신 방법을 설명하면, 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, network의 중간 Node (e.g. Contribution Network)는 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정한다. 상기 중간 Node는 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 포함하는 AL-FEC message를 생성하여 MMT packet화 한다. 상기 중간 Node는 상기 Asset(s)에 해당하는 MMT packet들을 FEC protection하기 위한 repair symbol을 생성하여 본 개시에 의한 dependent repair FEC payload ID를 포함하는 repair packet을 생성하여 전송한다. 상기 network 중간 Node는 상기 생성된 AL-FEC message을 source packet block의 전송 전에 전송할 수 있다.
여기서, 상기 본 개시에서 제안하는 repair FEC payload ID는 M, T, SSM, timestamp, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나는 포함하는데, 본 개시의 일 실시 예에 따른 또 다른 송신 장치는, network의 중간 Node (e.g. Contribution Network)에 포함되며, 상기 중간 Node의 송신 장치는 송신부, FEC encoding를 수행하는 부호화부, 그리고 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정하고 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 포함하는 AL-FEC message를 생성하여 MMT packet화하고 상기 Asset(s)에 해당하는 MMT packet들을 FEC protection하기 위해 상기 부호화부를 통해 FEC encoding을 수행하여 repair symbol을 생성하여 본 개시에 의한 dependent repair FEC payload ID를 포함하는 repair packet을 생성하는 동작을 제어하는 제어부를 포함한다. 또한 상기 제어부는 상기 생성된 AL-FEC message와, 상기 repair packet을 포함하는 MMT packet들을 상기 송신부를 통해 전송하는 동작을 제어한다. 여기서, 상기 본 개시에서 제안하는 repair FEC payload ID는 상기한 M, T, SSM, timestamp, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나의 정보를 포함한다.본 개시의 일 실시 예에 따른 수신 방법을 설명하면, 수신기는 송신기로부터 AL-FEC message를 포함하는 패킷을 수신하여 AL-FEC message를 획득한다. 상기 수신기는 상기 AL-FEC message로부터 FEC 소스 패킷 플로우에 포함되는 데이터 스트림들을 위한 ID정보인 packet ID 리스트와 이를 protection하는 repair flow ID에 대한 mapping 정보를 획득한다. 상기 수신기는 상기 송신기로부터 수신된 패킷이 소스 패킷인지 FEC 복구 패킷인지를 판단한다. 그리고 상기 수신기는 수신된 패킷이 FEC 복구 패킷인 경우, 상기 FEC 복구 패킷으로부터 복구 심벌을 획득하고, 상기 FEC 복구 패킷의 packet_ID(즉, repair flow ID)가 FEC protection하고 있는 source packet들의 packet_ID 리스트들을 상기 수신된 AL-FEC message 정보로부터 획득한다. 상기 수신기는 상기 획득된 source packet들의 packet_ID 리스트와 상기 FEC 복구 패킷의 repair FEC payload ID의 SS_start_seq_nr 리스트로부터 상기 FEC 복구 패킷이 protection하고 있는 소스 패킷 블록에 포함되는 소스 패킷들을 구분하고, 상기 구분된 소스 패킷들과 상기 복구 심벌들로부터 인코딩 심벌 블록을 구성하며, 상기 구성된 인코딩 심벌 블록에 FEC 복호를 수행하여 소스 심벌을 복구하고, 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득한다.
본 개시의 일 실시 예에 따른 수신 장치는, 수신부, FEC decoding을 수행하는 복호화부, 그리고 상기 수신부를 통해 송신기로부터 AL-FEC message를 포함하는 패킷을 수신하여 AL-FEC message를 획득하고 상기 AL-FEC message로부터 FEC 소스 패킷 플로우에 포함되는 데이터 스트림들을 위한 ID정보인 packet ID 리스트와 이를 protection하는 repair flow ID에 대한 mapping 정보를 획득하고 송신기로부터 수신된 패킷으로부터 소스 패킷인지 FEC 복구 패킷인지를 구분하고 상기 FEC 복구 패킷으로부터 복구 심벌을 획득하고, 상기 FEC 복구 패킷의 packet_ID(즉, repair flow ID)가 FEC protection하고 있는 source packet들의 packet_ID 리스트들을 상기 획득된 AL-FEC message 정보로부터 인지하여 source packet들의 packet_ID 리스트와 상기 FEC 복구 패킷의 repair FEC payload ID의 SS_start_seq_nr 리스트로부터 상기 FEC 복구 패킷이 protection하고 있는 소스 패킷 블록에 포함되는 소스 패킷들을 구분하고, 상기 구분된 소스 패킷들과 상기 복구 심벌들로부터 인코딩 심벌 블록을 구성하고 상기 복호화부를 통해 상기 구성된 인코딩 심벌 블록을 FEC 복호화하여 소스 심벌을 복구하고, 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득하는 동작을 제어하는 제어부를 포함하여 구현될 수 있다.
이하에서는 첨부된 도면들을 참조하여 본 개시의 일 실시예를 상세히 설명한다.
도 1a 및 도 1b는 네트워크 토폴로지(Network Topology) 및 데이터 흐름(Data Flow)를 도시한 도면이다.
도 1a를 참조하면, 네트워크 토폴로지는 송신기로서 동작하는 호스트 A(102)와 수신기로서 동작하는 호스트 B(108)를 포함하며, 호스트 A(102) 및 호스트 B(108)는 하나 이상의 라우터(104,106)를 통해 연결된다. 호스트 A(102) 및 호스트 B(108)은 이더넷(118,122)을 통해 라우터들(104,106)과 접속되며, 라우터들(104,106)은 광섬유(Fiber), 위성 통신(satellite communication) 혹은 가능한 다른 수단(120)을 통해 서로 간에 연결될 수 있다. 호스트 A(102)와 호스트 B(108) 간의 데이터 흐름은 링크 계층(116), 인터넷 계층(114), 전송 계층(112) 및 응용 계층(110)을 통해 이루어진다.
도 1b를 참조하면, 응용 계층(130)은 AL-FEC를 통해, 전송하고자 하는 데이터(130)를 생성한다. 데이터(130)는 오디오/비디오(Audio/Video: AV) 코덱(codec) 단에서 압축된 데이터를 RTP(Real Time Protocol)를 사용하여 분할한 RTP 패킷 데이터 혹은, MMT에 따른 MMT 패킷 데이터가 될 수 있다. 데이터(130)는 전송 계층(112)에 의해 일 예로 UDP(User Datagram Protocol) 헤더가 삽입된 UDP 패킷(132)으로 변환된다. 인터넷 계층(114)는 UDP 패킷(132)에 IP 헤더를 첨부하여 IP 패킷(134)를 생성하며, 링크 계층(116)은 IP 패킷(134)에 프레임 헤더(136) 및 필요한 경우 프레임 푸터(frame footer)를 첨부하여 전송하고자 하는 프레임(116)을 구성한다.
도 2는 본 개시의 실시 예에 따른 MMT(MPEG Media Transport) 시스템 구성도이다.
도 2의 왼쪽은 MMT 시스템 구성을 나타낸 도면이고, 오른쪽은 전송 기능(Delivery Function)의 세부 구조를 나타내는 도면이다.
미디어 코딩 계층(Media Coding Layer)(205)은 오디오 또는/및 비디오 데이터를 압축하여 캡슐화 기능 계층(Encapsulation Function Layer)(210, E. Layer)으로 전송한다.
상기 캡슐화 기능 계층(210)은 압축된 오디오/비디오 데이터를 파일 포맷과 유사한 형태로 패키지화하여 전송 기능 계층(Delivery Function Layer)(220)으로 전달한다.
전송 기능 계층(220, 또는 "D. Layer")은 상기 캡슐화 기능 계층(210)의 출력을 MMT 페이로드 포맷화한 후, MMT 전송 패킷 헤더를 부가하여 MMT 전송 패킷 형태로 전송 프로토콜 계층(230)에 전달한다. 또는 전송 기능 계층(220)은 상기 캡슐화 기능 계층(210)의 출력을 기존 RTP 프로토콜을 사용하여 RTP 패킷 형태로 전송 프로토콜 계층(230)에 전달한다. 그 이후 전송 프로토콜 계층(230)은 UDP(User Datagram Protocol) 및 TCP(Transmission Control Protocol) 중 어느 하나의 전송 프로토콜로 변환한 후 IP 계층(240)으로 전송한다. 최종적으로 IP 계층(240)은 상기 전송 프로토콜 계층(230)의 출력을 IP 패킷으로 변환하고 IP 프로토콜을 사용하여 전송한다.
본 개시는 MMTP 패킷을 보호하거나, MMT Payload를 보호하거나, 또는 Payload data를 보호하는 것이 가능하다.
제어 기능 계층(Control Function Layer)(200, C. Layer)은 프리젠테이션 세션(Presentation Session)과 전송 세션(Delivery Session)을 관리한다.
도 3은 MMT 패키지의 구조를 도시한 도면이다.
도 3에 도시한 바와 같이 MMT 패키지(310)는 네트워크의 전송 기능 계층(D. Layer)(330-1, 330-2)을 통해 클라이언트(350)와 송수신되며, MMT 에셋(Asset)들(303-1 내지 303-3)과, 구성 정보(composition information)(301), 전송 특성(Transport characteristic)(305-1, 305-2)을 포함한다.
또한 MMT 패키지(310)는 설정 정보를 활용하기 위한 기능성(functionality)과 기능(operation)들을 가진다. 설정 정보는 MMT 에셋(Asset)들(303-1 내지 303-3)의 리스트와, 구성 정보(301), 그리고 전송 특성(305-1, 305-2)으로 구성된다.
설명 정보(description information)는 MMT 패키지(310)와 MMT 에셋들(303-1 내지 303-3)을 설명한다. 구성 정보(301)는 MMT 에셋들(303-1 내지 303-3)의 소비를 돕는다. 전송 특성(305-1, 305-2)은 MMT 에셋들(303-1 내지 303-3)의 전달을 위한 힌트를 제공한다.
상기의 MMT 패키지(310)는 각 MMT 에셋별 전송 특성을 기술한다. 전송 특성(305-1, 305-2)은 오류 복원력(Error Resiliency) 정보를 포함하며, 하나의 MMT 에셋을 위한 단순 전송 특성(Simple Transport Characteristic) 정보는 손실되거나 손실되지 않을 수 있다. 또한 전송 특성들(305-1, 305-2)은 각 MMT 에셋의 QoS(Quality of Service; 손실(Loss) 허용 정도, 지연(Delay) 허용 정도)를 포함할 수 있다.
도 4는 본 개시의 실시 예에 따라 MMT 패키지에 포함된 설정 정보(configuration information)의 구성과 그 하위 정보들을 도시한 것이다.
도 4를 참조하면, Configuration information(401)은 패키지의 식별 정보(403), 패키지의 구성요소인 어셋 리스트 정보(405), Composition information(407), Transport Characteristics(409), 컨텐츠와 함께 부가적인 정보를 포함하고, 이러한 구성요소들이 패키지 안에 어떻게 포함되어 있는지와 어디에 포함되어 있는지와 같은 구조적인 정보를 제공한다. 상기 MMT 패키지에 포함된 설정 정보(configuration information)에 대한 구체적인 설명은 공지된 MMT 규격을 참조할 수 있으므로 구체적인 설명은 생략하기로 한다.
도 5a는 본 개시의 일 실시 예에 따른 Source Packet, Source Symbol, FEC Repair Packet을 나타낸 도면이다.
도 5a를 참조하면, Source Packet (= MMTP Packet)(501)은 MMT Packet Header, MMT Payload Header, Payload(Data)를 포함한다. Source Symbol(503)은 Source Packet에 Possibly Padding을 추가하여 생성되는데, 상기 Possibly Padding은 AL-FEC Message를 통해 주어지거나 또는 미리 정해진 Size of Repair Symbol와의 차이만큼 Padding data(all 00h)가 추가될 수 있다. FEC Repair Packet(505)은 MMT Packet Header, repair FEC Payload ID, FEC 부호화에 의해 Source Symbol Block으로부터 생성되는 Repair Symbol로 구성된다.
도 5b는 본 개시의 일 실시 예에 따른 Source Payload, Source Symbol, FEC Repair Packet을 나타낸 도면이다.
도 5b를 참조하면, Source Payload (= MMT Payload)(511)는 MMT Payload Header와 Payload(Data)를 포함한다. Source Symbol(513)은 Source Payload(511)에 Possibly Padding을 추가하여 생성되는데, 상기 Possibly Padding은 AL-FEC Message를 통해 주어지거나 또는 미리 정해진 Size of Repair Symbol와의 차이만큼 Padding data(all 00h) 가 추가될 수 있다. FEC Repair Packet(515)은 MMT Packet Header, FEC Repair Payload ID, FEC 부호화에 의해 Source Symbol Block으로부터 생성되는 Repair Symbol를 포함한다.
도 5c은 본 개시의 일 실시 예에 따른 Source Payload, Source Symbol, FEC Repair Packet을 나타낸 도면이다.
도 5c를 참조하면, Source Payload (= MMT Payload)(521)는 Payload(Data)를 포함한다. Source Symbol(523)은 Source Payload(521)에 Possibly Padding을 추가하여 생성되는데, 상기 Possibly Padding은 AL-FEC Message를 통해 주어지거나 또는 미리 정해진 Size of Repair Symbol와의 차이만큼 Padding data(all 00h) 가 추가될 수 있다. FEC Repair Packet(525)은 MMT Packet Header, FEC Repair Payload ID, FEC 부호화에 의해 Source Symbol Block으로부터 생성되는 Repair Symbol를 포함한다. 상기 Repair FEC Payload ID는 도 10과 같이 주어진다.
도 10은 본 개시의 일 실시 예에 따른 Dependent Repair FEC payload ID를 설명하기 위한 도면으로서, 도 10에서 도시된 각 정보의 내용은 아래 <표 5>와 같다.
표 5
정보 | 내용 |
M (1 bit) | indicates whether this repair packet carries dependent repair FEC payload ID or independent repair FEC payload ID. It shall be set the same value on all of repair packets of a repair flow. When set to 1, it shall indicate that this packet carries a dependent repair FEC payload ID and when set to 0, it shall indicate that this packet carries an independent repair FEC payload ID.If independent repair FEC payload ID is not used, then this field is reserved for future use. |
T (1 bit) | indicates whether timestamp field present or not. When set to 0, timestamp field shall not be present and when set to 1, timestamp field shall present. |
SSM (2 bits) | indicates the size of the SS_start_seq_nr[i] field. The actual size of the SS_start_seq_nr[i] field is allocated to "8+8*SSM" bits. |
RES (4 bits) | reserved for future use. |
timestamp (32 bits) | indicates the timestamp of the first packet of source packet block which is protected by this repair packet. |
SS_start_seq_nr[i] (8+8*SSM bits) | indicates LSB part (8+8*SSM bits) of the lowest packet_sequence_number of a packet with packet_id[i] in the source symbol block which is protected by this repair packet. |
L[i] (2 bits) | provides the number of additional words in the SSB_length[i] field. |
SSB_length[i] (6+8*L[i] bits) | indicates the number of packets with ith packet_ID of list_packet_ID field of the source symbol block which is protected by this repair packet. |
L2 (2 bits) | provides the number of additional words in the RSB_length field. |
RSB_length (6+8*L2 bits) | the number of repair symbols generated in its associated repair symbol block. |
L3 (2 bits) | provides the number of additional words in the RS_ID field. |
RS_ID (6+8*L2 bits) | an integer number for identifying the first repair symbol in the FEC repair packet. It starts with 0 and is incremented by 1 with each repair symbol in its associated repair symbol block. |
도 6a는 본 개시의 일 실시 예에 따른 Source Packet Flow를 생성하는 방법을 설명하기 위한 도면이다.
도 6a를 참조하면, 도 6a의 (a)와 같이 3개의 Asset A, B, C (601, 603, 605)(e.g. Audio data, Video data, txt, File과 같은 Non-timed Data or Timed Data) 가 있을 때 각각의 Asset은 소정 크기의 데이터로 분리된 후 MMT Payload Header, MMT Packet Header를 부가하여 MMT Packet Flow (Source Packet Flow)를 구성하게 된다. 도 6a의 (b)와 같이 Asset A,B,C 각각은 5개의 데이터 Payload로 분리되어 도 6a의 (c)와 같이 각각에 Packet_ID(607)와 Packet Sequence Number(609)를 포함하는 Header를 추가하였다. Asset A의 packet들을 Identify하는 Packet_ID = 0, Asset B는 Packet_ID=1 그리고 Asset C는 Packet_ID=2가 할당되고 각각의 Packet_ID에 기반한 Packet Sequence Number가 1 씩 증가하도록 할당되어 있다. 상기 Header의 일 예로 MMT Packet Header를 들 수 있다.
도 6b 및 도 6c는 본 개시의 일 실시 예에 따른 FEC Source Packet Flow와 그에 따른 Repair flow를 생성하는 방법을 설명하기 위한 도면이다. 도 6b 및 도 6c에서 참조 부호 H1 내지 H4는 서로 대응되는 부분을 나타낸 것이다.
도 6b 및 도 6c를 참조하면, 도 6a에서 생성된 Source Packet Flow로부터 FEC Source Packet Flow 1은 Asset A와 B로부터 생성된 Source Packets들로 구성하여 FEC Source Packet Block 1 (or Source Symbol Block)을 생성하고(도 6b의 (a)), FEC Source Packet Flow 2는 Asset B와 Asset C로부터 생성된 Source Packets들로 구성하여 도면과 같이 FEC Source Packet Block 2 (or Source Symbol Block)를 생성하여(도 6b의 (b)) 각각 FEC 부호화(611, 613)를 진행한다. 이로부터 FEC Source Packet Block은 SSBG_MODE들의 한 방법에 의해 Source Symbol Block으로 전환되고 여기에 FEC Encoding을 수행하여 Repair Symbol을 전송하는 FEC Repair packet들을 생성하였다. 도시하지는 않았지만, Source Packet Block으로부터 Source Symbol Block을 생성할 때 Source Packet Block내에서의 Source Packet들의 위치는 전송 순서에 의해 결정된다고 가정하면 각각의 Source Packet에 해당하는 Source Symbol의 위치는 Source Symbol Block내에서 서로 다를 수 있다. 이는 Repair Packet의 repair FEC Payload ID에 명기된 Packet_ID들의 순서에 입각해서 Source Symbol들을 Source Symbol Block에 배치하여야 한다. 즉, Source Packet Block이 Asset A와 B로 구성되는 경우 Source Packet Block내에서는 Asset A와 Asset B를 위한 Source Packet들이 서로 섞여 있어도 Source Symbol Block내에서는 Asset A를 위한 Source Symbol들을 먼저 배치하고, 다음 Asset B를 위한 Source Symbol들을 배치하거나 또는 그 반대로 한 후, FEC Repair Packet의 FEC repair payload ID에 상기 Source Packet Block(or Source Symbol Block)에 포함되는 Packet ID의 개수 및 그 배치 순서에 맞는 Asset들에 mapping되는 Packet_ID들을 리스트 한다. 아니면 도 6b 및 도 6c와 같은 Source Packet Flow에서 구성하고자 하는 FEC Source Packet Flow를 구성하고 각각의 Source Packet Block (or Source Symbol Block)을 구성할 때 Asset A를 위한 Packet들을 Source Packet Block (or Source Symbol Block)내 먼저 배치하고 다음 Asset B를 위한 Packet들을 배치하고 그에 따른 Packet_ID의 개수 및 순서에 입각한 Packet_ID들을 리스트한다. 바람직한 것은 Source Packet Flow는 사실상 전송 순서에 입각한 source packet들의 stream임으로 각각의 Source Packet Block을 위한 source packet들 중에서는 제일 먼저 전송되는 source packet의 Packet_ID에 해당하는 source packet들을 먼저 source packet block (or Source Symbol Block)내 배치하고 그 다음 Packet_ID에 해당하는 source packet들을 배치하는 것이 바람직하다.
도 7a와 도 7b는 본 개시의 실시 예에 따른 Packet Protection과 Payload Protection을 위한 송신기의 동작을 설명하기 위한 도면이다. 도 7a는 Packet Protection을 위한 송신기의 동작을 나타낸 것이고, 도 7b는 Payload Protection을 위한 송신기의 동작을 나타낸 것이다.
도 7a과 도 7b를 참조하면, 우선 Data Stream(701)은 Segmentation(703), Payloadization(705), Packetization(707)을 거쳐 송신부(709)에 의해 packet stream(711)으로 전송된다. MMT를 예를 들면 Data Stream(701) = Asset에 배치될 수 있다. Segmentation(703)은 data를 소정 크기로 나눈다. Payloadization(705)은 상기 data에 Header를 부가하는데 수신기에서 수신된 packet으로부터 상기 data를 재 구성할 수 있는 정보가 Header에 저장된다. 일 예로 MMT Payload가 여기에 해당된다. Packetization(707)은 MMT Payload에 MMT Packet Header를 추가한다. 상기 MMT Packet Header는 Packet_ID와 Packet Sequence Number를 가지고 있어 FEC에 활용된다.
또한 도 7a와 같이 Packet Protection이 수행되는 경우 FEC protection하고자 하는 MMT packet들은 FEC Controller(713)의 제어를 받아 Source Symbol Block Generator(715)로 입력된다. Source Symbol Block Generator(715)는 MMT Packet (Source Packet)들로부터 Source Symbol Block을 생성(도 10의 예시 참조)하고 FEC encoder(717)는 Source Symbol Block을 입력받아 Repair Symbols을 생성하고, 각각의 Repair Symbol은 MMT Packet Header와 FEC Repair Payload ID를 추가하여 FEC Repair Packet으로 전송된다. 상기 repair FEC Payload ID는 본 개시에 따라 상기 <표 5>과 같이 구성될 수 있다. AL-FEC Message(719)는 Payloadization(705)을 거쳐 즉, MMT Payload Header를 추가한 후 MMT Packet Header를 추가하여 데이터와는 별도의 패킷으로 전송된다. 또한 도 7b와 같이, Payload protection이 수행되는 경우 MMT Payload나 Payload data가 Source Symbol Block Generator(721)로 입력되는 것을 제외하고는 도 7a에서 설명한 Packet Protection의 동작과 동일하다.
도 8a와 도 8b는 Packet Protection과 Payload Protection을 위한 수신기의 동작을 설명하기 위한 도면이다. 도 8a는 Packet Protection을 위한 수신기의 동작을 나타낸 것이고, 도 8b는 Payload Protection을 위한 수신기의 동작을 나타낸 것이다.
도 8a와 도 8b를 참조하면, 수신기는 Packet 수신부(803)를 통해 Packet Stream(801)을 수신하면, 수신된 패킷이 소스 패킷인지 FEC 복구 패킷인지를 구분한다. 만일 여러 종류의 소스 패킷 (예를 들어 별도의 SS_ID를 가지는 MMT Packet (기존 기술)과 그렇지 않은 MMT Packet(본 개시)이 공존하는 경우)과 여러 종류의 FEC 복구 패킷(예를 들어 기존 기술에 의한 FEC 복구 패킷과 본 개시에 의한 FEC 복구 패킷이 공존)이 공존하는 경우 이를 구분하는 정보가 MMT Packet Header에 있고 상기 수신기는 상기 정보를 기반으로 각각의 packet을 구분한다. 그리고 구분된 packet은 De-packetization(e.g MMT De-packetization or Parse)(803), De-payloadization(MMT Payload Depayloadization or Parse)(807), De-segmentation(809)을 거쳐 Data Stream(811)으로 다시 복원된다.
또한 도 8a와 같이 Packet Protection이 적용된 경우의 수신기 동작은 수신기는 AL-FEC Message(813)로부터 FEC Decoding에 필요한 FEC Configuration에 관한 기본적인 정보를 파악한다. 수신된 패킷이 복구 패킷이 경우 복구 패킷의 복구 심벌과 MMT Packet Header에 있는 Packet_ID와 FEC Repair Payload ID에 리스트되어 있는 Packet_ID들의 개수(or 번호)(# of Packet_IDs), List of Packet_IDs, List of SS_Start_Seq_Nrs, List of SSB_Length[]들과 다른 정보로부터로부터 해당 복구 패킷이 Protection하고 있는 Source Packet들을 인지하고 수신되는 해당 Source Packet (MMT Packet)은 FEC Controller(819)의 제어를 받아 Encoding Symbol Generator(815)로 입력된다. Encoding Symbol Generator(815)는 Source Packet으로부터 주어진 SSBG mode에 따라 Source Packet을 Source Symbol로 전환하고 복구 심벌과 함께 Encoding Symbol Block을 구성한다. FEC Decoder(817)는 복구 심벌을 이용하여 손실된 source symbol을 복원하여 source packet을 획득한다. 그리고 source packet은 De-packetiztion 블록(805)으로 전달된다.
또한 도 8b와 같이 Payload Protection이 적용된 경우 Encoding Symbol Generator(821)와 FEC Decoder(823)를 통해 Packet이 아닌 Payload를 복원하는 것을 제외하고는 MMT Packet Header의 정보 활용이나 FEC Repair Packet의 FEC Repair Payload ID 정보 활용 측면에서는 도 8a의 Packet Protection의 동작과 동일하다.
도 9는 본 개시의 일 실시 예에 따르는 Source Packet Block (or Source Symbol Block) 생성 예를 나타낸 도면이다.
도 9의 예는, 3가지 packe_ID로 구성되는 packet들의 flow(도 9의 (a))로부터 packet_ID = 0 or 1을 가지는 2개의 packet_ID들에 해당하는 packet들을 선별하여 FEC Source Packet Flow(=1 Source Packet Block )를 구성하고(도 9의 (b)) PacketID=0를 가지는 packet들을 우선 배치하고 다음 Packet_ID=1을 가지는 패킷들을 배치하여 Source Symbol Block을 생성하는(도 9의 (c)) 예를 나타낸 것이다. Source Packet에 Source Symbol로 전환할 때 Source Packet들의 길이가 서로 다르면 padding이 필요(SSBG_MODE1)하고 모두 동일한 길이이면 padding이 필요 없다(SSBG_MODE0).
이하에서는 본 개시의 다른 실시예의 기본 개념을 설명한다.
<다른 실시예>
본 개시의 다른 실시 예에 따른 통신 시스템에서 패킷을 송신하는 방법을 설명하면, 송신기는 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet 들을 생성한다. 상기 송신기는 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 적용할 FEC code, Window Protection Time, 생성할 repair symbol의 크기, FEC protection하는 packet_ID들의 개수등과 같은 FEC configuration을 정보들을 결정하고, FEC encoding을 수행하여 일 예로 w13982 기술된 바와 같이 repair symbol block을 생성한다. 그리고 상기 송신기는 상기 생성된 repair symbol block의 repair symbol(s)에 본 개시에서 제안하는 repair FEC payload ID를 추가하여 FEC repair packet을 생성하여 전송한다.
여기서, 상기 본 개시에 의한 repair FEC payload ID는 M, T, SSM, PM, C, W, timestamp, packet_ID의 개수(or 번호)(# of packet_ID), packet_ID List, CP, PWT, RS_length, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나의 정보를 포함한다. 상기 FEC repair payload ID는 상기 FEC repair packet의 헤더에 포함될 수 있다.
이하 상기 FEC repair payload ID에 포함될 수 있는 각 정보를 구체적으로 설명하기로 한다.
상기 "M"은 본 repair packet의 repair FEC payload ID가 dependent repair FEC payload ID인지 independent repair FEC payload ID인지 (Dependent repair FEC payload ID정의: repair FEC payload ID에 있는 정보와 다른 정보(e.g. AL-FEC message or Independent repair FEC payload ID)에 저장되어 있는 정보의 조합으로 FEC decoding processing에 필요한 정보를 얻을 수 있음. 반대의 의미로 Independent repair FEC payload ID는 AL-FEC message에 저장되어 있는 정보 없이 상기 Independent repair FEC payload ID를 포함하고 있는 packet의 정보만으로 FEC decoding processing에 필요한 정보를 얻을 수 있음)를 나타내다.
상기 "T"는 timestamp field가 있는지 없는지를 나타내는 flag 정보이다.
상기 "SSM"은 SS_start_seq_nr field의 사이즈를 나타내는 정보(예를 들어 SS_start_seq_nr field의 사이즈(in bits) = 8+8*SSM)이다.
상기 "PM"은 MMT flow 전체를 protection하는지, 하나의 packet_ID를 protection하는지, 두 개의 packet_ID를 protection 하는지, 아니면 2개 초과의 packet_ID를 protection하는지를 나타낸다.
상기 "C"는 CP(Code Point) field가 있는지 없는지, 상기 "W"는 PWT(Protection Window Time) field가 있는지 없는 지를 나타낸다.
상기 "timestamp"는 본 repair packet이 protection하는 source packet block의 첫 번째 source packet에 저장된 timestamp를 나타낸다.
상기 packet_ID의 개수(or 번호)(# of packet_ID) field는 상기 PM이 2개 초과의 packet_ID를 protection하고 있다고 나타낼 때 존재하는 field로 packet_ID들의 개수 정보를 나타낸다.
상기 "Packet_ID list" field는 packet_ID들의 리스트하는데, 상기 PM이 MMT flow 전체를 protection한다고 나타낼때는 존재하지 않는다.
상기 "CP(Code Point)" field는 C flag가 on되어 있는 경우 존재하는데 본 repair packet을 생성하기 위해 사용된 FEC code의 code point를 나타낸다.
상기 "PWT"는 상기 W flag가 on되어 있는 경우 존재하는데 본 repair packet을 포함하는 repair flow에서 FEC source packet block과 해당 FEC repair packet block으로 구성되는 FEC packet block Window time을 나타낸다(일 예로 W13982의 Protection Window Time를 이용할 수 있다).
상기 "RS_length"는 repair symbol의 크기 정보를 나타낸다.
상기 "SS_start_seq_nr[i]"는 AL-FEC message에 기술된 본 source flow에서 i번째 packet_ID값을 가지는 상기 source packet block의 source packet들 중 가장 낮은 packet sequence number에서 8+8*SSM bits 사이즈 만큼의 LSB값(예를 들어 packet_sequence_number가 32bits이고, 8+8*SSM이 24bits이면 packet_sequence_number의 첫 8bits를 제외한 나머지 24bits 값)(i=0,1,...,N-1)을 나타낸다. 따라서 상기 "SS_start_seq_nr[i]"를 통해 상기 source packet(or symbol) block의 source packet들의 시작 시퀀스 번호를 알 수 있다.
상기 "L[i]"는 SSB_length[i] field의 크기를 나타내는 정보로 SSB_length field size = 6+8*L로 주어진다.
상기 "SSB_length[i]"는 AL-FEC message에 기술된 본 source flow에서 i번째 packet_ID값을 가지는 상기 source packet block의 source packet들의 개수(i=0,1,...,N-1), 그리고 상기 "L2"는 RSB_length field의 크기를 나타내는 정보로 RSB_length field size = 6+8*L2로 주어진다.
상기 "RSB_length"는 본 repair packet에 포함하는 repair symbol block의 repair symbol들의 개수 정보, L3는 RS_ID field의 크기를 나타내는 정보로 RS_ID field size = 6+8*L2로 주어지며, 상기 "RS_ID"는 본 repair packet을 포함하는 repair symbol block에서 본 repair packet내에 있는 repair symbol(s)의 위치를 나타낸다(예를 들어 몇 번째 repair symbol인지).
본 개시의 일 실시 예에 따른 송신 장치는, 일 예로 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet 들을 생성하고 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 적용할 FEC code, Window Protection Time, 생성할 repair symbol의 크기, FEC protection하는 packet_ID들의 개수등과 같은 FEC configuration을 정보들을 정하고 FEC encoding을 수행하여 상기 w13982 기술된 바와 같이 repair symbol block을 생성하여 상기 생성된 repair symbol block의 repair symbol(s)에 본 개시에서 제안하는 FEC repair payload ID를 추가하여 FEC repair packet을 생성하여 전송하는 제어부를 포함한다.
여기서, 상기 본 개시에 의한 repair FEC payload ID는 상기한 M, T, SSM, PM, C, W, timestamp, # of packet_ID, packet_ID List, CP, PWT, RS_length, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나의 정보를 포함한다.
본 개시의 일 실시 예에 따른 또 다른 송신 방법은, 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, network의 중간 Node (e.g. Contribution Network)는 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정한다. 또한 상기 중간 Node는 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 결정한다. 그리고 상기 중간 Node는 상기 Asset(s)에 해당하는 MMT packet을 protection하는 repair symbol block을 생성하고, 상기 생성된 repair symbol block의 repair symbol(s)에 상기 repair flow ID값을 packet_ID에 설정하고, 본 개시에 의한 repair FEC payload ID를 추가하여 FEC repair packet(MMT packet)을 생성한다.
여기서, 상기 본 개시에 의한 repair FEC payload ID는 M, T, SSM, PM, C, W, timestamp, # of packet_ID, packet_ID List, CP, PWT, RS_length, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나는 포함한다.
본 개시의 일 실시 예에 따른 또 다른 송신 장치는, network의 중간 Node (e.g. Contribution Network)에 포함되며, 상기 중간 Node의 송신 장치는 송신부, FEC encoding를 수행하는 부호화부, 그리고 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정하고 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 결정하고, 상기 부호화부를 통해 FEC encoding을 수행하여 상기 Asset(s)에 해당하는 MMT packet을 protection하는 repair symbol block을 생성하고 상기 생성된 repair symbol block의 repair symbol(s)에 상기 repair flow ID값을 packet_ID에 설정하고, 본 개시에 의한 repair FEC payload ID를 추가하여 FEC repair packet(MMT packet)을 생성하는 동작을 제어하는 제어부를 포함한다.
여기서, 상기 본 개시에 의한 repair FEC payload ID는 M, T, SSM, PM, C, W, timestamp, # of packet_ID, packet_ID List, CP, PWT, RS_length, SS_start_seq_nr[0] ~ [N-1], L[0] ~ [N-1], SSB_length [0] ~ [N-1], L2,RSB_length, L3,RS_ID들 중 적어도 하나는 포함한다.본 개시의 일 실시 예에 따른 수신 방법을 설명하면, 수신기는 송신기로부터 수신된 패킷으로부터 소스 패킷인지 FEC 복구 패킷인지를 구분한다. 상기 수신기는 상기 FEC 복구 패킷으로부터 복구 심벌을 획득하고, 상기 FEC 복구 패킷의 repair FEC payload ID로부터 상기 FEC 복구 패킷이 protection하고 있는 Protection Mode(즉, MMT flow 전체를 protection하고 있는지, 아니면 하나, 둘 또는 그 이상의 packet_ID들을 protection하고 있는지)를 인지하고 MMT flow 전체를 protection하고 있으면 수신된 소스 패킷의 packet_count field와 repair FEC payload ID의 SS_start_seq_nr들과 SSB_length정보를 바탕으로 source packet들을 획득하거나 또는 MMT flow 전체를 protection하고 있지 않으면 상기 repair FEC payload ID의 정보로부터 protection하고 있는 packet_ID들의 수, packet_ID 리스트, SS_start_seq_nr, SSB_length를 바탕으로 수신된 패킷으로부터 Source packet block에 해당하는 Source packet을 획득하여 상기 복구 심벌들과 함께하여 인코딩 심벌 블록을 구성한다. 그리고 상기 수신기는 상기 구성된 인코딩 심벌 블록에 FEC 복호를 수행하여 소스 심벌을 복구하고, 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득한다.
본 개시의 일 실시 예에 따른 수신 장치는, 수신부, FEC decoding을 수행하는 복호화부, 그리고 상기 수신부를 통해 송신기로부터 수신된 패킷으로부터 소스 패킷인지 FEC 복구 패킷인지를 구분하고 상기 FEC 복구 패킷으로부터 복구 심벌을 획득하는 과정을 포함하고, 상기 FEC 복구 패킷의 repair FEC payload ID로부터 상기 FEC 복구 패킷이 protection하고 있는 Protection Mode(즉, MMT flow 전체를 protection하고 있는지, 아니면 하나, 둘 또는 그 이상의 packet_ID들을 protection하고 있는지)를 인지하고 MMT flow 전체를 protection하고 있으면 수신된 소스 패킷의 packet_count field와 repair FEC payload ID의 SS_start_seq_nr들과 SSB_length정보를 바탕으로 source packet들을 획득하거나 또는 MMT flow 전체를 protection하고 있지 않으면 상기 repair FEC payload ID의 정보로부터 protection하고 있는 packet_ID들의 수, packet_ID 리스트, SS_start_seq_nr, SSB_length를 바탕으로 수신된 패킷으로부터 Source packet block에 해당하는 Source packet을 획득하여 상기 복구 심벌들과 함께하여 인코딩 심벌 블록을 구성하고 상기 복호화부를 통해 상기 구성된 인코딩 심벌 블록를 FEC 복호화하여 소스 심벌을 복구하고 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득하는 동작을 제어하는 제어부를 포함하여 구현될 수 있다.
본 개시의 일 실시 예에 따른 송신 방법을 설명하면, 송신기는 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet 들을 생성한다. 상기 송신기는 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 적용할 FEC code, Window Protection Time, 생성할 repair symbol의 크기, FEC protection하는 packet_ID들의 개수등과 같은 FEC configuration을 정보들을 결정한다. 그리고 상기 송신기는 FEC encoding을 수행하여 w13982 기술된 바와 같이 repair symbol block을 생성하고, 상기 생성된 repair symbol block의 repair symbol(s)에 본 개시에서 제안하는 repair FEC payload ID를 추가하여 FEC repair packet을 생성하여 전송함에 있어서 source packet block을 protection하는 repair packets들 중에서 적어도 하나의 repair packet은 independent repair FEC payload ID를 포함하여 전송한다.
본 개시의 일 실시 예에 따른 송신 장치는, 송신부, FEC encoding를 수행하는 부호화부, 그리고 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet 들을 생성하고 상기 Asset들 중 FEC protection하고자 하는 Asset들에 해당하는 MMT packet, 즉 source packet들에 적용할 FEC code, Window Protection Time, 생성할 repair symbol의 크기, FEC protection하는 packet_ID들의 개수등과 같은 FEC configuration을 정보들을 정하고 상기 부호화를 통해 FEC encoding을 수행하여 w13982 기술된 바와 같이 repair symbol block을 생성하고, 상기 생성된 repair symbol block의 repair symbol(s)에 본 개시에서 제안하는 FEC repair payload ID를 추가하여 FEC repair packet을 생성하여 전송함에 있어서 source packet block을 protection하는 repair packets들 중에서 적어도 하나의 repair packet은 independent repair FEC payload ID를 포함하여 전송하는 동작을 제어하는 제어부를 포함하여 구현될 수 있다.
본 개시의 일 실시 예에 따른 또 다른 송신 방법을 설명하면, 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, network의 중간 Node (e.g. Contribution Network)는 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정한다. 상기 중간 Node는 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 결정하고, 상기 Asset(s)에 해당하는 MMT packet을 protection하는 repair symbol block을 생성한다. 그리고 상기 중간 Node는 상기 생성된 repair symbol block의 repair symbol(s)에 상기 repair flow ID값을 packet_ID에 설정하고, 본 개시에 의한 repair FEC payload ID를 추가하여 FEC repair packet(MMT packet)을 생성함에 있어서 source packet block을 protection하는 repair packets들 중에서 적어도 하나의 repair packet은 independent repair FEC payload ID를 포함하여 전송한다.
본 개시의 일 실시 예에 따른 또 다른 송신 장치는, network의 중간 Node (e.g. Contribution Network)에 포함되며, 상기 중간 Node의 송신 장치는 송신부, FEC encoding를 수행하는 부호화부, 그리고 상기 MPEG output document w13982와 같이 전송하고자 하는 Asset들 및 Signaling message를 위한 MMT packet들을 생성하여 전송함에 있어서, FEC protection하고자 하는 Asset(s)과 FEC configuration 정보를 결정하고 상기 FEC protection하고자 하는 Asset(s)과 FEC configuration 정보에 기초해서 상기 Asset(s)에 mapping되는 packet_id 리스트와 이에 mapping되는 repair flow ID를 결정하고, 상기 부호화부를 통해 FEC encoding을 수행하여 상기 Asset(s)에 해당하는 MMT packet을 protection하는 repair symbol block을 생성하고 상기 생성된 repair symbol block의 repair symbol(s)에 상기 repair flow ID값을 packet_ID에 설정하고, 본 개시에 의한 repair FEC payload ID를 추가하여 FEC repair packet(MMT packet)을 생성함에 있어서 source packet block을 protection하는 repair packets들 중에서 적어도 하나의 repair packet은 independent repair FEC payload ID를 포함하여 전송하는 동작을 제어하는 제어부를 포함하여 구현될 수 있다.
본 개시의 일 실시 예에 따른 수신 방법을 설명하면, 수신기는 송신기로부터 수신된 패킷으로부터 소스 패킷인지 FEC 복구 패킷인지를 구분하고, 상기 FEC 복구 패킷으로부터 적어도 하나의 independent repair FEC payload ID를 획득하고, 복구 심벌을 획득한다. 그리고 상기 수신기는 상기 FEC 복구 패킷의 repair FEC payload ID로부터 상기 FEC 복구 패킷이 protection하고 있는 Protection Mode(즉, MMT flow 전체를 protection하고 있는지, 아니면 하나, 둘 또는 그 이상의 packet_ID들을 protection하고 있는지)를 인지하고 MMT flow 전체를 protection하고 있으면 수신된 소스 패킷의 packet_count field와 repair FEC payload ID의 SS_start_seq_nr들과 SSB_length정보를 바탕으로 source packet들을 획득하거나 또는 MMT flow 전체를 protection하고 있지 않으면 상기 repair FEC payload ID의 정보로부터 protection하고 있는 packet_ID들의 수, ssbg_mode, packet_ID 리스트, SS_start_seq_nr, SSB_length를 바탕으로 수신된 패킷으로부터 Source packet block에 해당하는 Source packet을 획득하여 상기 복구 심벌들과 함께하여 인코딩 심벌 블록을 구성한다. 그리고 상기 수신기는 상기 구성된 인코딩 심벌 블록에 FEC 복호를 수행하여 소스 심벌을 복구하고, 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득한다.
본 개시의 일 실시 예에 따른 수신 장치는, 수신부, FEC decoding을 수행하는 복호화부, 그리고 상기 수신부를 통해 송신기로부터 수신된 패킷으로부터 소스 패킷인지 FEC 복구 패킷인지를 구분하고 상기 FEC 복구 패킷으로부터 적어도 하나의 independent repair FEC payload ID를 획득하고, 복구 심벌을 획득하는 과정을 포함하고, 상기 FEC 복구 패킷의 repair FEC payload ID로부터 상기 FEC 복구 패킷이 protection하고 있는 Protection Mode(즉, MMT flow 전체를 protection하고 있는지, 아니면 하나, 둘 또는 그 이상의 packet_ID들을 protection하고 있는지)를 인지하고 MMT flow 전체를 protection하고 있으면 수신된 소스 패킷의 packet_count field와 repair FEC payload ID의 SS_start_seq_nr들과 SSB_length정보를 바탕으로 source packet들을 획득하거나 또는 MMT flow 전체를 protection하고 있지 않으면 상기 repair FEC payload ID의 정보로부터 protection하고 있는 packet_ID들의 수, ssbg_mode, packet_ID 리스트, SS_start_seq_nr, SSB_length를 바탕으로 수신된 패킷으로부터 Source packet block에 해당하는 Source packet을 획득하여 상기 복구 심벌들과 함께하여 인코딩 심벌 블록을 구성하고 상기 복호화부를 통해 상기 구성된 인코딩 심벌 블록에 FEC 복호화를 수행하여 소스 심벌을 복구하고, 상기 복구된 소스 심벌로부터 전송 도중 손실된 소스 패킷 블록의 소스 패킷을 획득하는 동작을 제어하는 제어부를 포함하여 구현될 수 있다.
상기에서 소스 패킷 또는 FEC repair packet의 header는 소스 패킷인지 FEC repair packet인지를 구분하는 정보를 가진다. 특히, Source Symbol Block내의 소스 심벌들의 순서를 알려주기 위한 별도의 Source Symbol ID(SS_ID)를 상기 소스 패킷에 추가하는 패킷 전송 방법과 상기 본 개시의 패킷 전송 방법이 함께 사용될 경우 상기 본 개시에 의한 소스 패킷 또는 FEC repair packet의 Header는 패킷이
-Source Packet + SS_ID인지
-Source Packet 그 자체인지 (본 개시)
-기존 발명에 의한 FEC Repair Packet
-본 개시에 의한 FEC Repair Packet인지를 구분하는 정보 중 적어도 하나를 포함할 수 있다.
-하기 <표 6>은 MMT Packet Header의 FEC type의 실시 예를 나타낸다.
NOTE: If FEC type is set to 0, it indicates that FEC is not applied to this MMT packet or that FEC is applied to this MMT packet without adding FEC Source Payload ID.
또한 이러한 packet 구분 정보는 AL-FEC message를 통해 기존 방법으로 FEC 적용하여 패킷 전송하는지 또는 본 개시로 FEC 적용하여 패킷 전송하는지를 나타내는 Payload ID_Mode Flag를 두어 수신단에 전송한다.
Paylaod ID_Mode Flag = 1: 본 개시에 의한 FEC 적용한 패킷 전송 방법 (즉, Source Packet에 별도의 SS_ID를 사용하는 것 없이 본 개시에 의한 FEC repair packet format (특히 repair FEC Payload ID)를 따른다) 이 경우 source packet 내의 정보(예를 들어, source packet의 시퀀스 번호)를 이용하면, 마치 SS_ID를 이용하는 것과 같이 source packet(or symbol) block 내에서 동일한 packet ID를 갖는 source packet(or symbol)들의 순서를 확인할 수 있다.
Payload ID_Mode Flag = 0: 기존 발명과 같이 FEC 적용한 패킷 전송 방법 (즉, Source Packet에 별도의 SS_ID를 추가하고, 기존 발명에 의한 FEC repair packet format (특히 repair FEC Payload ID)을 따른다.)
이하에서는 도면을 참조하여 본 개시의 다른 실시예를 상세히 설명한다.
상술한 실시 예들에서 설명한 본 개시의 특징은 본 개시의 다른 실시예에서도 선택적으로 적용될 수 있다.
도 12는 본 개시의 다른 실시예에 따른 Repair FEC Payload ID의 구성 예를 나타낸 것이다.
도 12에서 도시된 각 정보의 내용은 아래 <표 7> 내지 <표 9>와 같다.
표 7
정보 | 내용 |
M (1 bit) | indicates whether this repair packet carries dependent repair FEC payload ID or independent repair FEC payload ID. When set to 1, it shall indicate that this packet carries a dependent repair FEC payload ID and when set to 0, it shall indicate that this packet carries an independent repair FEC payload ID. |
T (1 bit) | indicates whether timestamp field present or not. When set to 0, timestamp field shall not be present and when set to 1, timestamp field shall present. |
SSM (2 bits) | indicates the size of the SS_start_seq_nr[i] field. The actual size of the SS_start_seq_nr[i] field is allocated to "8+8*SSM" bits. |
PM (2 bits) | defines a source flow to be protected. The same value shall be set to this field of all repair packets for a repair flow. |
C (1 bit) | indicates whether Code Point field present or not. When set to 0, Code Point field shall not be present and pre-determined Code Point is used. When set to 1, Code Point field shall be present. |
W (1 bit) | indicates whether Protection Window Time field present or not. When set to 0, Protection Window Time field shall not be present. When set to 1, Protection Window Time field shall be present. |
timestamp (32 bits) | indicates the timestamp of the first packet of source packet block which is protected by this repair packet. |
# of packet_id (6 bits) | indicates the number of packet_ids which consists of a source flow to be protected. This field shall only present when PM set to 3. The same value shall be set to this field of all repair packets for a repair flow. |
표 8
정보 | 내용 |
ssbg_mode (2bits) | indicates the applied source symbol block generation mode to the source packet block which is protected by this repair packet. |
list_packet_id (Num*16 bits) | provides list of packet_ID to be protected by a repair flow for this packet. When PM set to 0, then this field shall not present, when PM set to 1 or 2 then Num = 1 or 2, respectively and when PM set to 3, Num = # of packet_id. The same value shall be set to this field of all repair packets for a repair flow. |
CP (8 bits) | indicates the Code Point which is used to generate the repair flow. This field shall only present when C set to 1. The same value shall be set to this field of all repair packets for a repair flow. |
PWT (32 bits) | indicates Protection Window Time of FEC source or repair packet block which is relevant to this repair packet. This field shall only present when W set to 1. The same value shall be set to this field of all repair packets for a repair flow. |
RS_length (16 bits) | indicates the length(in bytes) of repair symbol. The same value shall be set to this field of all repair packets for a repair flow. |
SS_start_seq_nr[i] (8+8*SSM bits) | If PM set to 0, it indicates LSB part (8+8*SSM bits) of the lowest packet_count of a packet in the source symbol block which is protected by this repair packet. Otherwise, it indicates LSB part (8+8*SSM bits) of the lowest packet_sequence_number of a packet with the ith packet_ID of list_packet_ID field in the source symbol block which is protected by this repair packet (i=0,1,...,Num-1). |
표 9
정보 | 내용 |
L[i] (2 bits) | provides the number of additional words in the SSB_length[i] field. |
SSB_length[i] (6+8*L[i] bits) | indicates the number of packets with ith packet_ID of list_packet_ID field of the source symbol block which is protected by this repair packet. |
L2 (2 bits) | provides the number of additional words in the RSB_length field. |
RSB_length (6+8*L2 bits)- | the number of repair symbols generated in its associated repair symbol block. |
L3 (2 bits) | provides the number of additional words in the RS_ID field. |
RS_ID (6+8*L2 bits) | an integer number for identifying the first repair symbol in the FEC repair packet. It starts with 0 and is incremented by 1 with each repair symbol in its associated repair symbol block. |
Note : If the field M indicates that this repair packet carries dependent repair FEC payload ID, then PM, C and W fields are reserved.
2) If the field M indicates that this repair packet carries dependent repair FEC payload ID, then # of packet_id, list_packet_id, CP, PWT and RS_length fields shall not be present.
그리고 상기 <표 7>의 "PM" 필드에서 보호될 source flow의 보호 모드(Protection Mode)는 예컨대, 아래 <표 10>과 같이 정의될 수 있다.
도 17a은 본 개시의 또 다른 실시 예에 따른 Independent repair FEC payload ID와 Dependent repair FEC payload ID와의 관계를 설명하기 위한 도면이고, 도 17b는 본 개시의 다른 실시 예에 따른 source flow에는 포함되지만 어떤 source packet block에는 포함되지 않는 packet_ID에 대한 repair packet의 repair FEC payload ID의 field 값을 설정하는 방법을 설명하기 위한 도면이다.
먼저 도 17a에 예시된 바와 같이 SS_start_seq_nr field와 SSB_length field들의 개수는 Independent repair FEC payload ID에 기술된 source flow에 대한 packet_id들의 개수 및 순서에 입각해서 상기 source flow에 대한 repair flow의 모든 repair packet에 기술된다. 만일 Source Flow에 포함되는 Packet_ID들의 수보다 source packet(or symbol) block안에 있는 packet_ID들의 수가 적은 경우 도 17b에 예시된 바와 같이 해당 source packet(or symbol) block을 위한 repair packet의 repair FEC payload ID는 Independent repair FEC payload ID에 기술된 해당 Source flow에 포함되는 packet_ID들의 개수만큼 SS_start_seq_nr field와 SSB_length field가 존재하고 그 순서도 일치한다. 다만, source packet(symbol) block이 포함하고 있지 않은 packet_ID의 순서에 해당하는 SS_start_seq_nr field 또는 SSB_length field의 값을 특정값으로 설정하여 관계된 source packet (or symbol) block이 해당 packet_ID를 포함하고 있지 않음을 나타낸다. 예로 SSB_length field의 값을 0으로 설정하여 해당 packet_ID를 가지는 packet이 해당 source packet (or symbol) block내에 존재하지 않음을 나타낼 수 있다.
구체적으로 도 17b의 (a)를 참조하면, AL-FEC message에 기술된 source flow가 3개의 Packet_ID, 0,1,2로 구성되는데 비해 source packet(or symbol) Block #1은 0,1,2로 구성되고(1701), source packet(or symbol) block #2는 0,1로 구성되고(1703), source packet(or symbol) block #3은 1,2로 구성되는 경우(1705), 도 17b의 (b)와 같이 상기 source flow를 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1,2에 대한 순서대로 SS_start_seq_nr와 SSB_length field를 각각 3개씩 포함하지만, 그 field의 값은 source packet(or symbol) block 1을 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1,2에 대한 SS_start_seq_nr와 SSB_length를 설정하고, source packet(or symbol) block2를 위한 repair packet의 repair FEC payload ID는 상기 packet_ID 0,1에 대한 SS_start_seq_nr와 SSB_length를 설정하고, packet_ID 2를 포함하고 있지 않으므로 해당 SSB_length Field에 0(1707, 1709)을 설정하여 상기 source packet(or symbol) block2가 상기 packet_ID 2를 포함하고 있지 않음을 나타낸다. 또한 source packet(or symbol) block 3을 위한 repair packet의 repair FEC payload ID는 상기 source packet(or symbol) block3가 packet_ID 0을 포함하고 있지 않으므로 해당 SSB_length Field에 0을 설정하고, 상기 packet_ID 1,2에 대한 SS_start_seq_nr와 SSB_length를 설정한다. 또한 source packet (or symbol) block의 포함하고 있지 않은 packet_ID에 해당하는 SSB_length field를 사이즈를 결정하기 위한 L 필드는 0으로 설정하여 SSB_length field의 크기를 최소화 한다.한편, 본 개시의 다른 실시 예에 따른 Source Packet Flow를 생성하는 방법은 앞서 설명된 도 6a와 같다.
즉, 3개의 Asset A, B, C (e.g. Audio data, Video data, txt, File과 같은 Non-timed Data or Timed Data) 가 있을 때 각각의 Asset은 소정 크기의 데이터로 분리된 후 MMT Payload Header, MMT Packet Header를 부가하여 MMT Packet Flow (Source Packet Flow)를 구성하게 된다. Asset A,B,C 각각은 5개의 데이터 Payload로 분리되어 각각에 Packet_ID와 Packet Sequence Number를 포함하는 Header를 추가하였다. Asset A의 packet들을 Identify하는 Packet_ID = 0, Asset B는 Packet_ID=1 그리고 Asset C는 Packet_ID=2가 할당되고 각각의 Packet_ID에 기반한 Packet Sequence Number가 1씩 증가하도록 할당되어 있다. 상기 Header의 일 예로 MMT Packet Header를 들 수 있다.
도 13a와 도 13b는 본 개시의 실시 예에 따른 Packet Protection과 Payload Protection을 위한 송신기의 동작을 설명하기 위한 도면이다. 도 13a는 Packet Protection을 위한 송신기의 동작을 나타낸 것이고, 도 13b는 Payload Protection을 위한 송신기의 동작을 나타낸 것이다.
도 13a과 13b를 참조하면, 우선 Data Stream(1301)은 Segmentation(1303), Payloadization(1305), Packetization(1307)을 거쳐 송신부(1309)에 의해 packet stream(1311)으로 전송된다. MMT를 예를 들면 Data Stream = Asset에 배치될 수 있다. Segmentation은 data를 소정 크기로 나눈다. Payloadization은 상기 data에 Header를 부가하는데 수신기에서 수신된 packet으로부터 상기 data를 재 구성할 수 있는 정보가 Header에 저장된다. 일 예로 MMT Payload가 여기에 해당된다. Packetization(1307)은 MMT Payload에 MMT Packet Header를 추가한다. 상기 MMT Packet Header는 Packet_ID와 Packet Sequence Number를 가지고 있어 FEC에 활용된다.
또한 도 13a와 같이 Packet Protection이 수행되는 경우 FEC protection하고자 하는 MMT packet들은 FEC Controller(1313)의 제어를 받아 Source Symbol Block Generator(1315)로 입력된다. Source Symbol Block Generator(1315)는 MMT Packet (Source Packet)들로부터 Source Symbol Block을 생성(도 10의 예시 참조)하고 FEC encoder(1317)는 Source Symbol Block을 입력받아 Repair Symbols을 생성하고, 각각의 Repair Symbol은 MMT Packet Header와 FEC Repair Payload ID를 추가하여 FEC Repair Packet으로 전송된다. 상술한 것처럼 본 개시의 다른 실시예에 따른 repair FEC Payload ID는 도 12와 같이 구성될 수 있다.
또한 도 13b와 같이 Payload protection이 수행되는 경우 MMT Payload나 Payload data가 Source Symbol Block Generator(1321)로 입력되는 것을 제외하고는 도 13a에서 설명한 Packet Protection의 동작과 동일하다.
본 개시에 의한 방법과 기존의 방법에 의한 AL-FEC 적용 방법이 모두 사용되는 경우 기존 방법에 의해 AL-FEC 적용된 packet들의 AL-FEC decoding을 위해서는 AL-FEC message(1319)가 필요하므로 이경우 AL-FEC Message(1319)는 Payloadization(1305)을 거쳐 즉, MMT Payload Header를 추가한 후 MMT Packet Header를 추가하여 데이터와는 별도의 패킷으로 전송된다. 하지만, 본 개시에 의한 방법만을 AL-FEC가 적용되어 전송될 경우 굳이 AL-FEC messgae(1319)를 별도의 packet으로 전송할 필요가 없다. 그 이유는 본 개시에 의한 수신기의 FEC operation 필요한 정보는 repair packet 내에 전송되기 때문이다.
도 14a와 도 14b는 Packet Protection과 Payload Protection을 위한 수신기의 동작을 설명하기 위한 도면이다. 도 14a는 Packet Protection을 위한 수신기의 동작을 나타낸 것이고, 도 14b는 Payload Protection을 위한 수신기의 동작을 나타낸 것이다.
도 14a와 도 14b를 참조하면, 수신기는 Packet 수신부(1403)를 통해 Packet Stream(1401)을 수신하면, 수신된 패킷이 소스 패킷인지 FEC 복구 패킷인지를 구분한다. 만일 여러 종류의 소스 패킷 (예를 들어 별도의 SS_ID를 가지는 MMT Packet (기존 기술)과 그렇지 않은 MMT Packet(본 개시)이 공존하는 경우)과 여러 종류의 FEC 복구 패킷(예를 들어 기존 기술에 의한 FEC 복구 패킷과 본 개시에 의한 FEC 복구 패킷이 공존)이 공존하는 경우 이를 구분하는 정보가 MMT Packet Header에 있고 상기 수신기는 이를 상기 정보를 기반으로 각각의 packet을 구분한다. 그리고 구분된 packet은 De-packetization(e.g MMT De-packetization or Parse)(1405), De-payloadization (MMT Payload Depayloadization or Parse)(1407), De-segmentation(1409)을 거쳐 Data Stream(1411)으로 다시 복원된다.
또한 도 14a와 같이 Packet Protection이 적용된 경우의 수신기 동작은 수신기는 수신된 packet이 source packet인지 repair packet인지를 구분하고 수신된 패킷이 복구 패킷인 경우 복구 패킷의 repair FEC Payload ID의 M field가 independent repair FEC payload ID임을 나타내면 리스트되어 있는 Packet_ID들의 개수(or 번호)(# of Packet_IDs), List of Packet_IDs, List of SS_Start_Seq_Nrs, List of SSB_Length[]들과 다른 정보로 부터로부터 해당 복구 패킷이 Protection하고 있는 Source Packet들을 인지하고 수신되는 해당 Source Packet (MMT Packet)은 FEC Controller(1419)의 제어를 받아 Encoding Symbol Generator(1415)로 입력된다. Encoding Symbol Generator는 Source Packet으로부터 주어진 SSBG mode에 따라 Source Packet을 Source Symbol로 전환하고 복구 심벌과 함께 Encoding Symbol Block을 구성한다. FEC Decoder(1417)는 복구 심벌을 이용하여 손실된 source symbol을 복원하여 source packet을 획득한다.그리고 source packet은 De-packetiztion 블록(1405)으로 전달된다.
또한 도 14b와 같이 Payload Protection이 적용된 경우 Encoding Symbol Generator(1421)와 FEC Decoder(1423)를 통해 Packet이 아닌 Payload를 복원하는 것을 제외하고는 MMT Packet Header의 정보 활용이나 FEC Repair Packet의 FEC Repair Payload ID 정보 활용 측면에서는 도 14a의 Packet Protection의 동작과 동일하다.
도 15는 본 개시의 일 실시 예에 따르는 Source Packet Block (or Source Symbol Block) 생성 예시이다.
도 15를 참조하면, 3가지 packe_ID로 구성되는 packet들의 flow(도 15의 (a))로부터 packet_ID = 0 or 1을 가지는 2개의 packet_ID들에 해당하는 packet들을 선별하여 FEC Source Packet Flow(=1 Source Packet Block )를 구성하고(도 15의 (b)) PacketID=0를 가지는 packet들을 우선 배치하고 다음 Packet_ID=1을 가지는 패킷들을 배치하여 Source Symbol Block을 생성하는(도 9의 (c)) 예를 나타낸 것이다. Source Packet에 Source Symbol로 전환할 때 Source Packet들의 길이가 서로 다르면 padding이 필요(SSBG_MODE1)하고 모두 동일한 길이이면 padding이 필요 없다(SSBG_MODE0).
도 16은 본 개시의 또 다른 실시예에 따른 repair FEC payload ID를 설명하는 도면이다. 도 16에서 도시된 각 정보의 내용은 아래 <표 11> 내지 <표 13>과 같다.
표 11
정보 | 내용 |
M (1 bit) | indicates whether this repair packet carries dependent repair FEC payload ID or independent repair FEC payload ID. When set to 1, it shall indicate that this packet carries a dependent repair FEC payload ID and when set to 0, it shall indicate that this packet carries an independent repair FEC payload ID. |
T (1 bit) | indicates whether timestamp field present or not. When set to 0, timestamp field shall not be present and when set to 1, timestamp field shall present. |
SSM (2 bits) | indicates the size of the SS_start_seq_nr[i] field. The actual size of the SS_start_seq_nr[i] field is allocated to "8+8*SSM" bits. |
I (1 bit) | defines whether length repair data presents in this FEC repair packet or not. If set to 1, length repair data shall be present. Otherwise, length repair data shall not be present. |
C (1 bit) | indicates whether Code Point field present or not. When set to 0, Code Point field shall not be present and pre-determined Code Point is used. When set to 1, Code Point field shall be present. |
W (1 bit) | indicates whether Protection Window Time field present or not. When set to 0, Protection Window Time field shall not be present. When set to 1, Protection Window Time field shall be present. |
timestamp (32 bits) | indicates the timestamp of the first packet of source packet block which is protected by this repair packet. |
ssbg_mode (2bits) | indicates the applied source symbol block generation mode to the source packet block which is protected by this repair packet. The same value shall be set to this field of all repair packets for a repair flow. |
표 12
정보 | 내용 |
# of packet_id (6 bits) | indicates the number of packet_ids which consists of a source flow to be protected. If whole MMT flow is protected, this field shall be set to 0. The same value shall be set to this field of all repair packets for a repair flow. |
list_packet_id (Num*16 bits) | provides list of packet_ID to be protected by a repair flow for this packet. When # of packet_id set to 0, then this field shall not present, otherwise Num = # of packet_id. The same value shall be set to this field of all repair packets for a repair flow. |
CP (8 bits) | indicates the Code Point which is used to generate the repair flow. This field shall only present when C set to 1. The same value shall be set to this field of all repair packets for a repair flow. |
PWT (32 bits) | indicates Protection Window Time of FEC source or repair packet block which is relevant to this repair packet. This field shall only present when W set to 1. The same value shall be set to this field of all repair packets for a repair flow. |
RS_length (16 bits) | indicates the length(in bytes) of repair symbol. The same value shall be set to this field of all repair packets for a repair flow. |
SS_start_seq_nr[i] (8+8*SSM bits) | If PM set to 0, it indicates LSB part (8+8*SSM bits) of the lowest packet_count of a packet in the source symbol block which is protected by this repair packet. Otherwise, it indicates LSB part (8+8*SSM bits) of the lowest packet_sequence_number of a packet with the ith packet_ID of list_packet_ID field in the source symbol block which is protected by this repair packet (i=0,1,...,Num-1). |
L[i] (2 bits) | provides the number of additional words in the SSB_length[i] field. |
표 13
정보 | 내용 |
SPB_length[i] (6+8*L[i] bits) | indicates the number of packets with ith packet_ID of list_packet_ID field of the source symbol block which is protected by this repair packet. |
L2 (2 bits) | provides the number of additional words in the RSB_length field. |
RSB_length (6+8*L2 bits) | the number of repair symbols in its associated repair symbol block. |
L3 (2 bits) | provides the number of additional words in the LRSB_length field. |
LRSB_length (6+8*L3 bits) | indicates the number of length repair data in its associated length repair data block. This field only presents when length repair data presents in this FEC repair packet. i.e I is set to 1 |
L4 (2 bits) | provides the number of additional words in the SSB_length field. |
SSB_length (6+8*L4 bits) | indicates the number of source symbols in the source symbol block. This field only presents when SSBG Mode 2 is applied. |
L5 (2 bits) | provides the number of additional words in the LRD_ID field. |
LRD_ID (6+8*L5 bits) | an integer number for identifying the first length repair data in the FEC repair packet. It starts with 0 and is incremented by 1 with each length repair data in its associated length repair data block. It only presents when length repair data presents in the FEC repair packet. i.e I is set to 1. |
Note : 1) The order of the fields in the repair FEC payload ID determines the order in which source symbols are concatenated in the source symbol block.
2) For a given source flow, the order of the SS_start_seq_nr[i], L[i], and SSB_length[i] fields is determined by the order of packet_ids in the independent repair FEC payload ID of a repair FEC packet for the source flow.
3) If the field M indicates that this repair packet carries dependent repair FEC payload ID, then C and W fields are reserved.
4) If the field M indicates that this repair packet carries dependent repair FEC payload ID, then ssbg_mode, # of packet_id, list_packet_id, CP, PWT and RS_length fields shall not be present.
도 18과, 도 19는 본 개시의 실시 예에 의한 source packet block에 FEC 적용하여 생성된 repair symbol들을 전송하기 위한 repair packet blocks을 도시한 도면이다. 첫 번째, 세 번째, 다섯 번째 repair packet에는 independent repair FEC payload ID가 전송되고, 두 번째, 네 번째 repair packet에는 dependent repair FEC payload ID가 전송된다. 수신기는 independent repair FEC payload ID로부터 해당 source flow에 포함되는 packet_id들의 리스트와 순서를 알 수 있을 뿐만 아니라 FEC operation에 필요한 FEC configuration 정보등을 얻을 수 있다. 도시하지는 않지만 dependent repair FEC payload ID는 w13982 기술된 repair FEC payload ID 정보들과 같이 수신된 repair packet내에 있는 repair symbol의 repair symbol block내에서의 위치 정보만을 포함하거나 또는 이마져도 MMTP packet header에는 packet sequence number field를 활용하여 대체할 수 있다. 이경우 dependent repair FEC payload ID는 도 19와 같이 존재하지 않는다.
본 개시의 일 실시 예에 따르면, 사용자에게 보다 양질의 서비스를 제공할 수 있다. 본 개시는 수신 장치가 FEC 패킷 내의 Stream 구분 정보 또는 소스 패킷과는 다른 별도의 제어정보로부터 각각의 데이터 Stream을 구분하고, 각각의 데이터 Stream을 FEC Protection하기 위해 생성된 복구 Stream을 파악하고, FEC 복호화를 원만히 수행할 수 있을 뿐만 아니라, 생성된 source packet flow에 포함되는 소정 개수 데이터 스트림에 대해 repair flow를 source packet에 영향을 주지 않고 생성할 수 있다.
한편 본 개시의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 개시의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 개시의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐 아니라 이 특허청구의 범위와 균등한 것들에 의해서 정해져야 한다.