TV/ 방송데이터

2. 디지털 방송 - TS packet의 구조 및 생성 과정

Dong_ho 2013. 5. 30. 16:33
content
   - MPEG-2 system
   - TS packet의 구조
   - TS packet의 생성 과정
   - PES / Section에 대해
   - 디지털 방송이 보여지기까지의 과정


2. TS packet의 구조
    -  디지털 방송은 MPEG-2 systems (ISO/IEC 13818-1)중 TS packet을 사용하여 서비스 되고 있다. 그림 1은 TS packet의 구조이다. 
TS packet은 188 byte의 고정된 (fixed) 길이로, 4 byte의 TS header와 184 byte의 payload로 구성되어 있다. 가변 길이 (variable length)를 갖고
있는 PS packet과는 다른 모습이다. 디지털 방송은 데이터 전송환경이 좋지 않기 때문에 전송 도중 에러가 발생할 확률이 높다. 따라서 데이터를 짧게 
여러개로 나누어 전송해야 혹시라도 발생할 수 있는 에러가 주는 영향을 최소화 할 수 있다. 또 TS는 multi channel를 전송할 수 있는 구조를 가지고 있기
때문에 디지털 방송용으로 사용되고 있다.
    그림 1에서는 TS header에 대해서도 나오고 있다. 앞서 설명한 것처럼 TS header는 기본적으로 4 byte로 구성되고 필요에 따라서 adaptation field라는
것이 뒤에 붙을 수 있다. Adaptation field에 대해서는 뒤에 다시 한번 설명한다. TS header의 구성을 간단하게 살펴보고 다음 그림으로 넘어가겠다.

그림 1. TS packet의 구조 


    TS header에는 순서대로 

Sync byte (8 bit): 0x47로 고정된 값을 갖고 TS packet의 시작을 표시함.

Transport error indicator (1 bit): 전송된 packet에 에러가 있는지 없는지를 표시해줌. '0' 이면 에러가 없고 '1'이면 에러를 포함하고 있음
                
Payload unit start indicator  (1 bit): TS packet의 경우 original 데이터를 쪼개서 보내기 때문에 현재 packet이 포함하고 있는 데이터가 original 데이터의
        어느 부분을 포함하고 있는지를 알아야 수신단에서 original 데이터를 재조립할 수 있다. 이 flag는 original 데이터의 시작이 packet에 있는지 없는지를 알려준다.
        값이 '0'이면 packet에 original 데이터의 중간 부분이 포함되어 있고   '1'이면 original 데이터의 처음 부분이 포함되어 있다. 뒤에 나오는 continuity counter와 함께 사용됨.

Transport priority indicator (1 bit): TS packet의 우선 순위를 표시함. 값이 '0'인 packet보다 '1'인 packet이 우선순위가 높음.

PID (13 bit): Packet에 포함된 payload의 데이터가 어떤 데이터인지를 알려주는 flag로 수신단에서는 이 값을 보고 필요한 데이터를 구분한다.
         0x0000 ~ 0x1FFF까지의 값을 갖고 있고 0x0000 (PAT), 0x0001 (CAT), 0x0002 (TSDT), 0x1FFF (NULL)값을 제외한 나머지 값들은 user defined이다.

Table 1. PID Table


Transport scrambling control (2 bit): Payload의 scramble 유,무를 표시함

Table 2. Scrambling control value


Adaptation field control (2 bit): Adaptation field의 유,무를 표시함

Table 3. Adaptation field control value


Continuity counter (4 bit): 같은 PID를 갖는 packet의 경우 1씩 증가하면서 전송되며 값이 15 (4 bit의 max값)가 넘어가면 다시 0으로 초기화 됨.
       Adaptation field만 전송되는 packet의 경우에는 값이 증가하지 않음.


    그림 2는 방금 설명한 TS header들의 parameter값이 TS packet의 형태에 따라 어떻게 설정되는지를 보여주는 예이다.


그림 2. Packet의 형태에 따라 달라지는 TS header의 값들 예


Syntax of TS header - 열기





3. TS packet의 생성 과정
    - Packet의 생성 과정은 그림 3,4과 같이 진행된다. Packet은 PES (Packetized Elementary Stream)를 포함하고 있는 것과 기타 부가적인 table 데이터를 
가지고 있는 section을 포함하고 있는 packet으로 구분할 수 있다. 두 packet 모두 만들어지는 과정은 거의 동일하지만 두 가지 차이점이 있다.
           
            - 데이터의 연결성
            - Pointer_field의 유무

이 두 가지 차이점에 의해 packet이 만들어지는 과정이 약간씩 차이가 있지만 기본적인 흐름은 동일하다. 그림을 보면서 좀 더 구체적으로 설명한다.

    우선 PES packet은 그림 3와 같이 생성된다. 그림에서 Ex가 비디오 ES라고 가정하면 E1, E2, E3는 각 프레임이 encoding된 결과라고 할 수 있다. 이렇게
만들어진 ES 각각에 PES header 붙임으로서 PES를 만든다. 그림에서는 P1, P2, P3가 PES header가 된다. 이 상태까지는 각 PES의 길이가 동일한 상태가 아니다.
이 PES들을 고정된 길이를 갖는 TS packet으로 만들기 위해 일정 크기 (184 byte)로 자르고 TS header를 앞에 붙임으로서 TS packet을 만들게 된다. 이 단계에서
section packet과의 차이가 나타난다. PES packet은 TS를 만들면서 이전 PES와 현재 PES를 하나의 packet에 실어서 전송하지 않는다. 그림에서도 볼 수 있듯이
첫번째 TS packet은 첫번째 PES를 싣고도 여유 공간이 있기 때문에 두번째 PES의 일부분을 실어야 하겠지만 그렇게 하지 않고 대신 그 자리를 null data로 채워서 
184 byte를 만들고 있다. 이런 과정은 세번째 TS packet에서도 볼 수 있다.


그림 3. TS packet (for PES)의 생성 과정

    Section packet도 PES packet과 대부분의 과정은 동일하다. PES packet과의 차이점은 앞서 설명한 부분 중 null data를 채우는 과정과 1 byte짜리 pointer_field가
추가되는 것이다. Section packet은 그림 4의 첫번째 packet과 같이 연속된 두 개의 section이 하나의 packet에 포함되어 전송 될 수 있다. 따라서 null data가 삽입되지
않고 대신 1 byte짜리 pointer_field가 TS header 바로 다음에 추가 된다. Pointer_field는 하나의 packet 안에서 새롭게 시작되는 section의 시작 위치를 표시한다. 좀 더
정확하게 표현하면 연속된 section 중 마지막으로 붙는 데이터 (그림 4의 세번째 packet에 있는 S2)의 길이를 나타낸다. Pointer_field가 추가 되는 이유는 연속된 section이
하나의 packet에 실려 전송된 경우 수신부에서 두 section을  정확하게 분리할 수 있도록 해주기 위해서이다.


그림 4. TS packet (for Section)의 생성 과정


※ 부가설명: TS packet의 payload에 실리는 데이터는 오디오, 비디오, 그리고 부가정보가 있다. 여기서 부가정보는 PSI/SI의 PAT, PMT, CAT, NIT등이 있는데
이 부가정보들의 이름 끝에 있는 T는 table의 약자이다. 결국 수신단에서는 이 table을 얻어야 하는데 TS packet의 사이즈가 고정되어 있기 때문에 이 table들을 잘라서
전송하게 된다. 이 때 잘라진 단위가 section이다. 결국 table이 section의 상위 level이고 전송된 개의 section을 모아 하나의 table을 완성해야 하는 것이다.