따라서 본 발명의 목적은 보장되지 않은 질의 서비스를 제공하는 통신시스템에서 VOD 서비스를 위한 압축데이터에 대한 흐름 제어를 할 수 있도록 하는 방법을 제공함에 있다.
본 발명의 다른 목적은 보장되지 않은 질의 서비스를 제공하는 통신시스템에서 VOD 서비스를 위한 압축데이터의 패킷 손실 및 시퀀스에러를 복원하는 방법을 제공함에 있다.
이러한 목적들을 달성하기 위한 본 발명은 H.323 기준에 맞는 VOD 셋탑박스에 수신된 데이터의 패킷 손실을 복원해 내는 기술로, VOD 서비스를 위한 데이터는 특성상 실시간 전송에 큰 의미가 없다는 점을 이용한 것이다. 인터넷을 통해 전송되는 음성/비디오 데이터는 셋탑박스에서 일정 시간(10∼20초 정도)만큼 데이터 버퍼링된 후 사용자 단말에 전송된다. 상기 수신측 셋탑박스는 수신된 음성/비디오 데이터를 일정 시간만큼 버퍼링한 후 버퍼링된 RTP헤더 데이터중에서 타임스탭프(TIME STAMP), 시퀀스넘버(SEQUENCE NUMBER)를 이용하여 음성 및 비디오 데이터의 손실 패킷을 복원해 낸다. 여기서 손실 음성 및 비디오 데이터의 패킷을 복원시킬수 있는 것은 순간적으로 변하는 음성 및 비디오 데이터는 큰 변화가 없기 때문에, 앞 뒤 패킷의 데이터 특성을 이용하여 손실 패킷을 복원해 낼 수 있다. 이때 사용자는 큰 불편(시간상의 지연)없이 VOD 서버에서 제공하는 모든 패킷 데이터를 수신하여 시청할 수 있다.
본 발명에 따르면, VOD 서비스를 위한 데이터의 손실 패킷을 복원하는 방법은; H.323규격의 알티피(RTP) 데이터를 수신하여 일정 시간동안 버퍼링하는 제1과정과, 상기 버퍼링된 RTP 데이터의 헤더내에 포함된 시퀀스넘버를 체크하고 시퀀스에러가 발생하는 경우 패킷의 시퀀스를 재조정하는 제2과정과, 순차적인 시퀀스넘버의 체크 도중에 패킷 손실이 발생하는 경우 상기 RTP 데이터의 헤더내에 포함된 타임스탬프 정보를 이용하여 이전 패킷과 이후 패킷의 데이터 특성을 분석하고 패킷 손실의 데이터를 복원하는 제3과정으로 이루어짐을 특징으로 한다.
바람직하기로, 상기 일정 시간은 10초 내지 20초로 설정되거나, 1024바이트의 패킷을 버퍼링하는데 소요되는 시간으로 설정될 수 있다.
바람직하기로, 상기 버퍼링된 RTP 데이터가 PCM의 음성 데이터인 경우에 패킷 손실의 데이터는 이전 패킷과 이후 패킷의 중간값 특성으로 복원할 수 있다. 이와 달리 상기 버퍼링된 RTP 데이터가 보코더의 음성 데이터 또는 비디오 데이터인 경우에 패킷 손실의 데이터는 이전 패킷과 이후 패킷을 배타적 논리합 연산하여 복원할 수 있다.
이하 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의내려진 용어들로서 이는 사용자 또는 칩설계자의 의도 또는 관례 등에 따라 달라질 수 있으므로, 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
우선 본 발명은 H.323 기준에 맞는 VOD 셋탑박스에 수신된 데이터의 패킷 손실을 복원해 내는 기술로서, VOD 서비스를 위해 제공되는 데이터가 특성상 실시간 데이터 전송에는 큰 의미가 없다는 점을 이용한 것이다. 인터넷을 통해 전송되는 음성/비디오 데이터를 셋탑박스가 일정 시간(10∼20초 정도)만큼 데이터를 버퍼링한 후 사용자 단말에 전송한다고 하여도 사용자는 큰 불편없이 VOD 서버에서 제공하는 모든 패킷 데이터를 시청할 수 있다.
보다 구체적으로 말하면, 수신측 셋탑박스에서는 수신된 음성/비디오 데이터를 일정 시간만큼 버퍼링한 후 버퍼링된 RTP헤더 데이터중에서 타임스탭프(TIME STAMP), 시퀀스넘버(SEQUENCE NUMBER)를 이용하여 음성 및 비디오 데이터의 잃어버린 패킷을 복원해 낼 수 있다. 여기서 잃어버린 음성 및 비디오 데이터의 패킷을 복원시킬 수 있는 것은 순간적으로 변하는 음성 및 비디오 데이터는 큰 변화가 없기 때문에, 예를 들어 중간의 30밀리초(ms) 1패킷이 손실되었다고 가정하더라도 앞 뒤 패킷의 데이터 특성을 이용하여 잃어버린 패킷을 복원해 낼 수 있는 것이다. 이러한 본 발명은 H.323 동화상 전화기나 인터넷 게이트웨이(INTERNET GATEWAY)에 적용하면 사용자가 큰 불편을 느낄 수 있기 때문에 적용에 의미가 없으나, VOD와 같이 다운스트림 데이터(downstream data)가 많은 애플리케이션에서는 사용자가 큰 불편없이 패킷 데이터를 수신할 수 있다. 즉, 본 발명은 VOD 서비스를 위한 패킷 데이터를 처리함에 있어서 질적인 향상을 기할 수 있는 것이다.
도 1은 본 발명에 따라 VOD 서비스를 위한 데이터의 손실 패킷을 복원하는 기능을 가지는 셋탑 박스의 구성을 보여주는 도면으로, 이 구성은 소프트웨어(S/W)적인 관점에서 도시한 것이다. 본 발명에 따른 셋탑 박스는 크게 RTP(Real time Transport Protocol) 비디오(Video)를 처리하는 블록과, RTP 오디오(Audio)를 처리하는 블록과, RTP 다운스트림(down stream)을 버퍼링하는 블록과, RTP 다운스트림의 손실 패킷 및 시퀀스에러의 패킷을 복원하는 블록과, 랜(LAN)과의 접속을 위한 블록으로 이루어진다.
상기 도 1에서 VCP(Video Control Processor)(10), DSP 관리자(Manager)(20) 및 메인(Main) DSP(30)은 RTP 비디오를 처리한다. 이때 DSP관리자(20)은 라이트(Write) 동작을 수행하는 ISR(22)과, 리드(Read) 동작을 수행하는 ISR(24)로 이루어진다. DSP(40), DSP 관리자(50), 메인 DSP(60)는 RTP 오디오를 처리한다. 이때 DSP관리자(50)는 라이트 동작을 수행하는 ISR(52)과, 리드 동작을 수행하는 ISR(54)로 이루어진다. 다중화/역다중화기(MUX/DEMUX: Multiplexer/Demultiplexer) (110)은 LAN(또는 인터넷(INTERNET)이 될 수 있음)과의 접속을 위해 구비된 것으로, LAN을 통해 송수신되는 UDP(User Datagram Protocol)상의 스트림 데이터를 다중화 및 역다중화한다. RTP-Tx(90)는 MUX/DEMUX(110)를 통해 랜으로부터 수신된 스트림 데이터를 버퍼(70)로 송신 처리한다. RTP-Rx(100)는 MUX/DEMUX(110)를 통해 랜으로 송신하기 위한 스트림 데이터를 버퍼(80)로부터 수신하여 처리한다. 그리고 버퍼(70)는 RTP 다운스트림 데이터를 수신하여 일정 시간만큼 버퍼링하고, 손실 패킷 및 시퀀스 에러의 패킷을 복원하기 위해 구비된 것이다. 바람직하기로는, 버퍼(70)는 RTP 다운스트림 데이터를 10∼20초 정도(또는 1024바이트의 패킷만큼) 버퍼링하며, 이때 버퍼(70)는 다운스트림 데이터를 수신하여 버퍼링하기 위한 하나의 큐와, 패킷을 복원시키기 위한 3개로 이루어질 수 있다.
도 2는 본 발명에서 손실 패킷을 복원하기 위해 사용하는 RTP 헤더의 구조를 보여주는 도면이다.
상기 도 2에 도시된 바와 같은 구조의 RTP 헤더는 ITU-T 권고안 H.225 제목 "Call signalling protocols and media stream paketization for packet based multimedia communication system" 하에 규격화된 바 있다. 본 발명에서는 이러한 RTP 헤더의 타임스탬프(TIME STAMP)와 시퀀스넘버(SEQUENCE NUMBER)의 정보를 이용하게 된다. 본 발명에서 이용하는 정보 이외에, RTP 헤더는 V, P, X, CC, M, PT, SSRC(Syncronization SouRCe) IDENTIFIER, CSRC(Contributing SouRCe)IDENTIFIER로 이루어진다.
도 3은 본 발명에 따라 주문형 비디오 서비스를 위한 데이터의 손실 패킷을 복원하는 처리흐름을 보여주는 도면이다.
상기 도 3을 참조하면, 도 1의 LAN을 통해 수신되는 H.323규격의 RTP데이터의 패킷은 일정 시간만큼 버퍼(70)에 버퍼링된다(301단계). 여기서 일정 시간이란 RTP데이터의 패킷을 10∼20초 정도 버퍼링하는데 소요되는 시간 또는 1024바이트의 패킷을 버퍼링하는데 소요되는 시간으로 설정될 수 있다. 상기 버퍼(70)의 사이즈는 서비스의 특성에 맞게 조정가능하다. 다음에 버퍼링된 RTP 데이터를 모니터링하다가(302단계) 일정 패킷만큼 쌓이면, 수신된 각 패킷의 시퀀스를 체크한다(303단계). 이때 버퍼링을 위한 버퍼는 2개 이상이어야 한다. 왜냐하면, 하나는 수신 버퍼용으로, 다른 하나는 1024바이트의 패킷이 쌓이게 되는 경우 시퀀스에러 및 손실 패킷의 복원용으로 사용하여야 하기 때문이다. 1024바이트의 패킷에 대한 복원 동작의 처리가 끝나면, 이 버퍼는 수신 버퍼용으로 재사용하고, 수신 버퍼용으로 사용되던 버퍼는 시퀀스에러 및 손실 패킷 복원용 버퍼로 기능 변환을 하여야 한다 또한 시퀀스넘버를 재조정하기 위한 버퍼도 필요하다. 시퀀스넘버를 체크하여 시퀀스에러가 발생하였으면 각 패킷을 시퀀스에 맞게 재조정하는 작업을 수행한다.
UDP의 특성상 패킷의 순서가 바뀌어 들어올 수 있는데 이는 VOD 서비스의 특성상 일정 패킷량만큼 버퍼링에 의해 해결할 수 있다. 상기 303단계에서 패킷의 시퀀스를 재배열하고 각 패킷의 시퀀스를 체크하는 동작을 수행한다. 이때 시퀀스가 순차적으로 증가하다 UDP 전송 특성상 수신패킷 손실이 발생할 수 있으며(305단계), 패킷의 시퀀스를 체크하여 잃어버린 패킷의 시퀀스를 찾아낼 수 있다. 이때 패킷정보중에서 타임스탬프 정보를 이용하여 패킷을 찾을 수 있고, 복원해낼 때도 이전 패킷과 이후 패킷의 타임스탬프를 이용하여 데이터 특성을 분석하고 그 시간만큼 복원할 수 있다(306단계,307단계).
상기 RTP데이터가 PCM의 음성데이터인 경우는 PCM데이터의 특성상 음성주파수의 증감의 폭이 도 4에 도시된 바와 같이 적다는 특성을 이용하여 잃어버린 데이터의 패킷을 추정해 낼 수 있다. 예를 들어, 도 4에서 b와 d, e를 잃어버린 경우는 a, c의 중간 데이터를 추출하여 예상 b 패킷을 만들 수 있고, d와 e 패킷은 c와 f의 중간 데이터의 특성을 이용하여 만들 수 있다. 즉 손실된 패킷 b,d,e를 각각 복원할 수 있는 것이다.
이와 달리 상기 RTP데이터가 보코더에 의한 음성데이터인 경우는 음성의 특성데이터만이 전송되기 때문에, PCM데이터의 경우처럼 잃어버린 패킷을 복원하기가 어렵다. 비디오데이터 역시 이전 프레임 대비 변환데이터만 전송되기 때문에, 잃어버린 패킷을 복원하기가 어렵다. 이러한 경우에는 데이터전송 서버에서 일예로 A,B,C,D,…의 패킷을 전송할 때, A, {A XOR B ; A패킷과 B패킷을 배타적 논리합연산한 결과의 패킷}, B, {B XOR C}, C, {C XOR D}, D,… 순으로 데이터를 전송함으로써, 중간에 B패킷이 손실된 경우에 B XOR C 패킷과, C패킷을 이용하여 손실된 B패킷을 복원해낼 수 있다. 이러한 방법은 음성데이터 및 비디오데이터 모든 경우에 적용할 수 있다. 그러나 패킷을 필요 이상(2배)으로 많이 전송하여야 한다는 단점이 있으나, 이러한 단점은 대역폭(Bandwidth)이 확보된다면 가능하다. 또한 위에서 설명한 바와 같은 VOD 서비스의 특성 때문에 가능하다.