본문 바로가기
Computer

디지털 방송의 생성 원리와 구조-4

by 시앙라이 2008. 10. 19.

디지털 방송이 만들어지는 과정
디지털 방송의 실제 데이터인 TS가 만들어지는 과정에 대해 알아보면...
영상 데이터가 디지털 방송의 실제 데이터인 TS로 변화하기 위해 거치는 인코더와 생성(generator), 그리고 MUX에 대해 알아볼 것이다. 이 때 데이터가 어떤 식으로 변형되는지 변화 과정 또한 알아볼 것이고, 마지막으로 각각의 인코더와 MUX를 거치기 전과 거친 후의 변화되는 모양새를 살펴보는 시간을

디지털 방송 TS의 생성 원리
우선 PES(Packetized Elementary Stream) 패킷이 무엇이고, TS가 무엇인가에 대해 알아보자. TS는 ‘Transport Stream’의 약자이다. 즉, 디지털 방송을 전송하는 실제 데이터들의 연속적인 모임을 말하는 것이다. 방송사에서는 TS를 전송하고, 수신측(DTV, 셋톱박스)에서는 이 TS를 받아서 디코딩해 화면에 영상을 표시하고, 음성을 들려주고, 여러가지 부가 서비스를 위한 정보를 골라내 사용한다. 이때 사용되는 영상은 MPEG-2(ISO/IEC 13818-1)이고, 음성은 AC3(돌비 디지털 사운드)를 사용한다.

이 TS는 몇 가지 특징이 가지고 있다. 첫 번째가 TS는 일련의 TS 패킷이란 것으로 구성되는데, TS 패킷들은 각각의 길이가 188바이트로 일정하다는 것이고, 두 번째가 TS의 데이터 구조는 복수 프로그램을 운반하기 위한 목적으로 ITU-T(구 CITT)에 의한 표준인 ATM 방식과 유사하다는 것이다.

이러한 TS가 생성되는 과정을 간략하게 알아보도록 하자. <그림 1>은 실제 영상과 음성이 방송파(TS)로 변하는 과정을 나타낸다. 실제 영상을 받아서 MPEG-2로 변환(ENCODING)하고, 음성은 AC3로 변환한다. 이것을 각각의 비디오 ES, 오디오 ES라고 한다.


그림1 | TS 생성과정 (Sarnoff 인용)


이 ES를 가변적 크기로 잘라낸 후 헤더를 붙여 PES 패킷으로 변환한다. 이 PES 패킷의 크기는 고정되지 않고 가변적이다. 이 PES 패킷을 고정된 크기 188바이트로 잘라내고 헤더를 붙여(헤더 포함 188바이트) TS 패킷으로 변환한다. 만들어진 TS를 주파수에 실어 전송한다고 간단하면서도 어렵게 설명할 수 있다. 그럼 좀더 세부적으로 살펴보도록 하자.

싱글-프로그램 인코더가 PES 패킷이 생성되는 부분
디지털 방송은 MPEG-2를 사용한다. MPEG-2는 비디오와 오디오가 따로 구성된다. 그렇기 때문에 <그림 1>의 싱글 프로그램 인코더(single-program encoder) 부분을 보면 비디오와 오디오가 각각 인코딩된다. 그럼 우선 비디오 하나만 가지고 살펴보도록 하자.

<그림 1>을 보면 ‘Video → [MPEG-2 Encoder] → MPEG-2 Bitstream → [Transport Mux] → SP transport Stream’으로 표현된다. 여기서 비디오 데이터가 MPEG-2 인코더를 거쳐서 생성되는 MPEG-2 비트스트림이 ES를 의미하고, 이 ES가 Transport Mux를 거쳐서 생성되는 것이 PES 패킷을 의미한다.

SP(Single Program) 트랜스포트 스트림과 MP(Multi Program) 트랜스포트 스트림으로 나눠지는 이유는 디지털 방송이 멀티채널의 구현이 가능하기 때문이다. 멀티채널이란 하나의 방송 프로그램 영역에 여러 개의 프로그램을 같이 포함시켜 서로 다른 프로그램을 송출하는 것을 의미한다. 간단한 예를 들자면 8번 채널에서 8-1, 8-2, 8-3, 8-4와 같이 8번 채널이 4개로 분할되어 4개의 서로 다른 프로그램의 방영이 가능한 것을 말한다. 우리나라에서의 디지털 지상파 방송 규격은 HD(고화질 디지털 방송)이기 때문에 다채널이 제공되지 않는다. 다채널을 사용하기 위해서는 SD(일반화질 디지털 방송)급의 방송을 사용한다. 외국이나 위성 방송에서는 SD를 사용한다.

 


[ TS와 PS ]
MPEG-2를 이용해 TS와 PS를 생성할 수 있다. TS는 잡음이 많은 환경에 사용되고, PS(Program Stream)는 잡음이 거의 없을 거라 예상되는 환경에 사용된다. 즉, TS는 데이터 손실이 예상되는 방송용 데이터로, PS는 데이터 손실이 거의 없을 거라 예상되는 DVD 같은 저장 매체에 주로 사용된다. PS는 MPEG-1과 같이 하나의 프로그램 구성이 가능하고, TS는 복수의 프로그램 구성(다채널)이 가능하다. TS는 복수의 프로그램을 하나의 비트 열로 구성할 수 있기 때문에 TV 방송 등에 대응할 수 있고 자유도가 많은 편성이나 스크램블 기능 등에도 대비할 수 있다.


싱글-프로그램 인코더 부분을 좀더 상세하게 표현한 <그림 2>를 살펴보자. Video Data가 Video Encoder를 거쳐서 Video ES가 만들어지고, 생성된 Video ES가 Packetizer를 거쳐서 Video PES 패킷으로 변환된다. 그럼 PES 패킷이란 무엇인가? 그것은 ‘The data structure used to carry elementary stream data. It consists of a PES packet header followed by PES packet payload and is described’라고 13818-1에 표현되어 있다. 정확한 이해를 위해 원문을 적었다.

 

정리하자면 비디오 인코더를 이용해 ES가 생성된다. 이 ES는 비디오의 처음부터 끝까지의 일련의 데이터이다. 이것을 그대로 전송할 경우, 잡음에 의한 데이터 손실이 있을 수 있고, 혹은 데이터의 분실이 생길 수도 있다. 그렇기 때문에 원활한 전송을 위해 ES를 나누고, 나눈 각각에 헤더를 포함시켜서 연결 정보 및 데이터의 손상 여부에 대한 정보 등을 추가시켜 수신측에서 데이터를 원활히 수신하도록 만드는 것이다. 이것이 바로 PES 패킷인 것이다. 만약에 중간에 PES 패킷 한 개를 유실했더라도 유실된 정보를 알 수 있기에 디코딩에 실패하지 않고 복구할 수 있다.


그림2 | PES 패킷 1 (13818-1 인용)

 


그림3 | PES 패킷 2


그래서 패킷타이저(packetizer)를 거침으로써 ES에 헤더가 포함되고 일정하지 않은 크기로 잘라낸 패킷을 만드는 것이다. PES 패킷의 헤더에는 이것들의 순서의 정보도 가지고 있고, 다른 정보들이 왔을 때 무시하는 아이덴티파이어(identifier) 정보도 포함하는 것이다. 변화의 과정이 <그림 3>처럼 표현되는 것이다.

◆ <그림 1>의 PSI과 PSIP 제너레이터 부분이 PSI, PSIP가 생성되는 부분이다
싱글-프로그램 인코더 부분은 MPEG-2를 위한 부분이고, PSI와 PSIP 제너레이터 부분은 MPEG-2의 디코딩 정보와 부가 정보가 만들어지는 부분이다. PSIP에 관한 세부 내용은 다음 호에서 설명하도록 한다.
◆ <그림 1>의 트랜스포트 MUX 부분이 TS가 생성되는 부분이다

    싱글-프로그램 인코더 부분의 수행으로 우리는 PES 스트림(PES 패킷들의 연속된 모임을 PES 스트림이라고 한다)을 얻었다. 이 PES 스트림을 이용해 TS 혹은 PS가 생성된다. PES 스트림이 TS Mux를 거치면 TS가 생성되고, PS Mux를 거치면 PS가 생성되게 되는 것이다.

그림4 | TS 생성


PES 패킷의 TS 생성 과정을 살펴보면 PES 패킷만을 이용해 TS를 생성하는 것이 아니라, PSI와 PSIP 제너레이터를 이용해 생성된 PSI, PSIP 섹션도 함께 TS Mux에 삽입해야 한다. 그러면 완전한 TS가 생성되는 것이다. 싱글-프로그램 인코더에서 생성된 PES 스트림과 PSI와 PSIP 제너레이터에서 생성된 PSIP, PSI 섹션을 가지고 TS Mux(MP Transport Mux)가 TS(188바이트)를 만드는 것이다. 이것이 주파수를 타고 날아오는 실제 데이터이고, 실제 수신측은 이것을 받아 디코딩해 화면과 영상을 보여주는 것이다.

여기까지 실제 비디오 데이터가 TS로 변화되는 과정에 대한 원리를 살펴보았다. 다음으로 데이터 구조에 대해 살펴보도록 하자.

 

단위 모양새가 궁금하다
ES가 TS로 변하는 과정에서의 데이터 구조의 변화에 대해 자세히 살펴보도록 하자. <그림 5>를 참조한다.


그림5 | ES -> PES -> TS


<그림 5>의 ①번은 ES를 나타낸다. 이것이 오디오인지 비디오인지는 중요하지 않다. 그 이유는 같은 방식이기 때문이다. 우선 ES(오디오 또는 비디오)가 있다고 가정한다. ②번이 패키타이저를 통해 ES를 일정하지 않은 크기(일정한 형식에 맞추어)로 잘라낸 후 헤더를 추가해 PES 패킷이 생성된 모습을 표현한 것이다. PES 패킷 옆에 있는 것이 PSIP 제너레이터로 생성된 PSIP 섹션이다.

③번이 TS Mux를 통해 PES 스트림과 PSIP 섹션을 TS로 변환한 모습을 표현한 것이다. 이것 역시 헤더가 추가되며, PES 스트림을 이용해 TS를 만드는 사이사이에 PSIP, PSI 섹션도 같이 추가되어 하나의 TS가 완성되는 것이다. 실제 TS가 만들어지기 위해서는 한 개의 원본에(ES) 두 개의 헤더가 각기 추가됨을 알 수 있다. 그렇기 때문에 역으로 TS에서 원본을 추출하기 위해서는 두 개의 껍데기를 벗겨내야 하는 것이다.

TS를 자세히 살펴보니 데이터 영역에 스터핑(stuffing)이란 것이 새롭게 추가된 것을 알 수 있다. <그림 5>와 <그림 6>에 포함된 스터핑이란 것은 무엇인가? 실제적인 데이터 크기를 고려해 스터핑이 무엇이고, 왜 생겼는지에 대해 알아보자.


그림6 | 스터핑 샘플


스터핑이란 TS가 188바이트라는 고정된 크기를 갖는 특성 때문에 생긴 것으로 빈 공간에 채워지는 의미 없는 데이터를 의미한다. 예를 들면 PES 패킷의 크기가 300바이트라고 가정하자. 이것을 TS로 변환하려면 최소 2개의 TS를 사용해야 한다. 참고로 TS 헤더의 크기는 4바이트이다. 즉 데이터로 사용할 수 있는 크기는 ‘188 - 4 = 184바이트’이다(어댑션_필드(adaptation_field)가 아닌 데이터_바이트(data_byte)가 올 때만 적용된다).

그렇기 때문에 ‘300/184 = 1과 116’의 나머지의 값이 2개의 TS에 나누어 저장되고 ‘184 - 116 = 68바이트’ 값을 스터핑이라 하는 것이다. 이 스터핑의 값은 모든 비트는 아무런 의미 없는 ‘1’로 채워지게 된다. 그렇기 때문에 수신측에서 디코딩할 때에 이 값은 모두 버리게 되는 것이다. <그림 6>을 참고하도록 한다.