DVB-MHP에서는 NPT(normal play time)를 스트림 이벤트의 시각으로 쓰기를 권하고 있다. NPT는 특정 이벤트(프로그램) 내부의 국지시간이다. 현재 상용으로 나와 있는 전송 스트림(TS) 생성기와 TV 미들웨어는 아직 NPT를 지원하지 못하고 있다. 특히 전송 스트림 생성기가 셋톱박스에서 NPT를 재구성하는데 필요한 NPT참조서술자를 생성하지 않고 있다. 이로 인해 PP가 연동형 애플리케이션(Xlet)의 아이디어를 실험하는 것이 불가능하다. 이에 우리는 TS에 NPT 참조서술자를 삽입하는 스트림 생성기와 NPT를 근사적으로 재구성하는 MyGetNPT API를 구현하였는데, 본 논문은 그 방법을 기술한다 NPT 재구성 API를 구현하기 위해서는 STC(system time clock) 값을 알 필요가 있으나, Xlet에서는 STC를 읽을 수 없다. 따라서 본 연구에서는 TS를 통해 전송되는 PCR (program clock reference) 과 Java 시스템 타임을 이용하여 STC를 근사적으로 계산하는 방법을 제안한다. 이 방법에서 전송 스트림 생성기는 이미 존재하는 TS로부터 PCR 들을 추출한 후, 이를 TS의 null 패킷에 Xlet에서 읽을 수 있는 MPEG 섹션의 형태로 삽입한다. 이때, PCR이 TS 내의 원래 위치에서 이동하여 다른 위치에 삽입되므로, PCR 값은 TS내의 원래 위치와 새로운 위치간의 시간 차이를 고려하여 수정한다. 구현한 TS 생성기와 MyGetNPT API를 이용하여 그래픽 이미지의 디스플레이가 목적인 스트림 이벤트를 가진 연동형 애플리케이션을 구현하여 실험을 하였다. 그 결과 그래픽 이미지들이 원래 의도된 시점으로부터 240ms 이내에 비디오와 동기화 되는 것을 확인하였다. 이 시간은 기존의 연구에서 발견된 그래픽 이미지와 비디오간의 동기화 오차 허용한계이다.
DVB-MHP에서는 NPT(normal play time)를 스트림 이벤트의 시각으로 쓰기를 권하고 있다. NPT는 특정 이벤트(프로그램) 내부의 국지시간이다. 현재 상용으로 나와 있는 전송 스트림(TS) 생성기와 TV 미들웨어는 아직 NPT를 지원하지 못하고 있다. 특히 전송 스트림 생성기가 셋톱박스에서 NPT를 재구성하는데 필요한 NPT참조서술자를 생성하지 않고 있다. 이로 인해 PP가 연동형 애플리케이션(Xlet)의 아이디어를 실험하는 것이 불가능하다. 이에 우리는 TS에 NPT 참조서술자를 삽입하는 스트림 생성기와 NPT를 근사적으로 재구성하는 MyGetNPT API를 구현하였는데, 본 논문은 그 방법을 기술한다 NPT 재구성 API를 구현하기 위해서는 STC(system time clock) 값을 알 필요가 있으나, Xlet에서는 STC를 읽을 수 없다. 따라서 본 연구에서는 TS를 통해 전송되는 PCR (program clock reference) 과 Java 시스템 타임을 이용하여 STC를 근사적으로 계산하는 방법을 제안한다. 이 방법에서 전송 스트림 생성기는 이미 존재하는 TS로부터 PCR 들을 추출한 후, 이를 TS의 null 패킷에 Xlet에서 읽을 수 있는 MPEG 섹션의 형태로 삽입한다. 이때, PCR이 TS 내의 원래 위치에서 이동하여 다른 위치에 삽입되므로, PCR 값은 TS내의 원래 위치와 새로운 위치간의 시간 차이를 고려하여 수정한다. 구현한 TS 생성기와 MyGetNPT API를 이용하여 그래픽 이미지의 디스플레이가 목적인 스트림 이벤트를 가진 연동형 애플리케이션을 구현하여 실험을 하였다. 그 결과 그래픽 이미지들이 원래 의도된 시점으로부터 240ms 이내에 비디오와 동기화 되는 것을 확인하였다. 이 시간은 기존의 연구에서 발견된 그래픽 이미지와 비디오간의 동기화 오차 허용한계이다.
DVB-MHP recommends that NPT(normal play time) be used as the times of stream events. NPT is the local time within an event(TV program). But we found that commercial transport stream (TS) generators and middlewares for DVB-MHP settop boxes are not ready to support the use of NPT by applications. In p...
DVB-MHP recommends that NPT(normal play time) be used as the times of stream events. NPT is the local time within an event(TV program). But we found that commercial transport stream (TS) generators and middlewares for DVB-MHP settop boxes are not ready to support the use of NPT by applications. In particular, TS generators do not create NPT reference descriptors needed to reconstruct NPT at the TV receiver. This situation is undesirable because program providers cannot experiment with the idea of synchronized applications. So we have implemented a TS generator that inserts NPT reference descriptors to TS and MyGetNPT API to approximately reconstruct NPT. STC (system time clock) is needed to reconstruct NPT, but Xlets are not allowed to read it. So, we approximate STC by using PCR (program clock reference) and the Java system tune. In this method, the stream generator extrats PCRs from an existing TS and inserts them into null TS packets in the form of MPEG sections, which can be read by Xlets. Because PCRs are displaced into new positions in TS, their values should be adjusted based on the time intervals between the original positions and the new positions. We implemented a synchronized application by using our TS generator and MyGetNPT API, where the task of stream events are to display graphic images. We found that graphic images are displayed where 240 ㎳ from their intended time, where 240ms is a human tolerance for the synchronization skew between graphic image and video.
DVB-MHP recommends that NPT(normal play time) be used as the times of stream events. NPT is the local time within an event(TV program). But we found that commercial transport stream (TS) generators and middlewares for DVB-MHP settop boxes are not ready to support the use of NPT by applications. In particular, TS generators do not create NPT reference descriptors needed to reconstruct NPT at the TV receiver. This situation is undesirable because program providers cannot experiment with the idea of synchronized applications. So we have implemented a TS generator that inserts NPT reference descriptors to TS and MyGetNPT API to approximately reconstruct NPT. STC (system time clock) is needed to reconstruct NPT, but Xlets are not allowed to read it. So, we approximate STC by using PCR (program clock reference) and the Java system tune. In this method, the stream generator extrats PCRs from an existing TS and inserts them into null TS packets in the form of MPEG sections, which can be read by Xlets. Because PCRs are displaced into new positions in TS, their values should be adjusted based on the time intervals between the original positions and the new positions. We implemented a synchronized application by using our TS generator and MyGetNPT API, where the task of stream events are to display graphic images. We found that graphic images are displayed where 240 ㎳ from their intended time, where 240ms is a human tolerance for the synchronization skew between graphic image and video.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
따라서 본 논문에서는 Xlet에서 TS를 통해 전송되는 PCR을 읽어서 이를 이용하여 STC를 근사적으로 계산하는 방법을 제안한다. Xlet에서 PCR을 어떻게 읽을 것인가는 아래에 상세히 설명한다.
이런 상황에서도 PP들의 스튜디오에서는 연동형 데이터 방송을 제작, 실험할 필요가 있다. 따라서 본 논문에서는 이를 도와주기 위해 NPT를 수신기에서 근사적으로 재구성하는 방법을 제안하였다. 제안된 NPT 재구성 기법을 적용하여 명시된 시각에 이벤트를 처리하는 Xlet 애플리케이션과 스트림 이벤트가 포함된 스트림을 이용하여 실험한 결과 명시된 모든 지점에서 사람의 식별오 차범위이내에서 동기화가 됨을 확인하였다.
데이터 방송 표준은 MPEG action안에 삽입되어 전송된 데이터를 읽을 수 있는 API (섹션 필터라고 함)를 제공하고 있다. 따라서 본 연구에서는 송신단에서 PCR을 MPEG 섹션에 넣어 보내는 방법을 고안하였다. 이 방법은 주어진 TS> 분해하여 PCR이 들어있는 TS packet으로부터 PCR 값을 읽어서 이를 MPEG 섹션으로 포장하여 현재 TS packet에서 가장 가까운 null 패킷에 삽입하는 것이다.
이것은 문헌[9]를 참조하기 바란다. 본 논문은 명시된 시각에 이벤트를 처리하는 Xlet 애플리케이션을 구현하여 본 논문의 방법을 검증하였다. 비디오와 동 기화된 Xlet 애플리케이션을 구현하는 방법은 문헌[11]에 기술되어 있다.
그러나 연동형 데이터 방송을 준비하는 PP들의 스튜디오에서는 연동형 애플리케이션을 실험적으로 제작할 필요가 있다. 이를 위해서는 NPT 참조서술자 스트림을 생성하는 것이 필요하고, 애플리케이션이 NPT를 사용할 수 있도록 NPT참조 서술자를 해석하여 현재 순간의 NPT를 재구성하는 것이 필요하다 본 논문은 이 NPT 재구성 문제를 해결하는 방법을 기술한다. 연동형 애플리케이션 실험을 하 려면 NPT 참조 서술자 스트림과 관련 스트림들을 생성하는 스트림 생성기가 필요하나, 본 논문은 이에 대해서는 별도로 다루지 않는다.
이제 Xlet에서 TS에 포함되어 있는 PCR을 어떻게 읽을 것인가의 문제를 생각해보자. 원래 PCRe TS packet의 adaptation filed에 들어가 있고, DVBHP 데이터 방송 표준은 이 값 역시 미들웨어 내부적인 문제라고 생각하여 이 값을 읽을 수 있는 API를 제공하고 있지 않다.
가설 설정
Xlet 이 PID를 알고 있으면 이 PID를 가지는 MPEG 섹션들을 TS으로부터 필터링할 수 있다. Xlet이 PID를 알 수 있는 가장 간단한 방법은 Xlet 애플리케이션이 PCR이 포함된 MPEG 섹션들의 PID를 미리 알고 있다는 가정하는 것이다. 그러나 PCR스트림이나 NPT 참조서술자 스트림의 PID 를 포함하여 모든 PID는 TS 패킷들이 전송되는 스트림을 구분해주는 역할만 하기 때문에 전송스트림을 재다중화할 때 변경되지 않는다는 보장이 없다.
제안 방법
본 연구에서 제안한 NPT의 재구성기법을 검증하기 위해서 명시된 시각에 스트림 이벤트를 처리하는 "인터랙티브 게임쇼” 라는 Xlet 애플리케이션을 구현하였다. 이 애플리 케이션은 비디오의 특정시점에 특정 이미지를 디스플레이 하도록 되어 있다.
이를 표시하기 위해 스트림 생성기는 현재 선택된 서비스(PCR 이나 NPT참조서술자 스트림을 읽는 Xlet이 포함된)의 MAP (Program Map Table) 에 특정 PID가 어떤 componentTag와 대응되는지를 나타내는 서술 자를 삽입한다'". Xlete 알고 있는 componentTag를 이용하여 PMT에서 이에 대응되는 PID를 획득하고 이 PID를 이용하여 PCR 이나 NPT참조서술자 스트림을 읽는다.
그리고 이것을 실시간적으로 해야 한다. 그러나 본 방법에서는 이미 이벤트들이 구분 없이 연결되어 있는 TS로부터 제작자가 육안으로 이벤트의 시작을 확인하고, 그 시점의 STCR을 읽어낸다. 따라서 본 방법은 실제 방송환경에서는 사용할 수 없고.
섹션 필터는 귀한 리소스이고 또한 섹션 필터링을 많이 하면 수신기 시스템에 부하가 걸린다. 따라서 본 논문에서는 NPT 참조서술자와 PCR을 하나의 섹션에 포함시켜 전송함으로써 수신기가 필터링을 두 번 해야 되는 부담을 한 번으로 줄였다. 이렇게 하는 한 방법은 NPT 참조서술자를 구성할 때, PCR 스트림에 들어가는 각, 에 해당되는 NPTR, 를 만들고 이를 PCRi 이 들어가는 섹션에 넣는 것이다.
본 논문에서는 NPT 참조서술자를 생성하기 위해 이미 생성된 TS로부터 PCR값(주파수 27MHz, STC와 주파수 같음)을 추출하고 이를 1/300으로 샘플링하여 STCR로 사용한다. 물론 이때 STCR로 사용하고자 하는 PCR 에 대응되는 NPTR를 정해주어야 하는데, 이것은 사용자가 TS를 플레이하면서 해당 이벤트의 시작을 지정하고, 이때의 NPTR을 0으로 삼은 후, NPTR의 빈도수를 정하면 스트림 생성기가 NPTR 값들에 대응되는 PCR값을 읽어서 NPTR 에 대응되는 STCR을 구한다.
물론 PCR을 읽는 새로운 함수를 만들면 되지만, 그것을 미들웨어를 수정하는 것을 의미한다. 본 논문은 미들웨어를 수정하지 않고 본 문제를 해결하는 방법을 제공한다.
동기화된 데이터 스트림을 만들 때 주어진 비디오를 플 레이하면서 특정 시점을 선택하여 스트림 이벤트의 시점을 정하고 이 스트림 이벤트에 이벤트 데이터 등을 삽입하여 스케줄드 스트림 이벤트를 생성, TS에 삽입한다. 스트림 이 벤트가 포함된 TS는 본 연구팀에서 개발한 스트림 생성기 를 사용하였다⑼ 생성된 TS를 스트림 스테이션을 이용하여 셋톱박스에 전송하면. 셋톱박스에 방송이 디스플레이가 된다.
그러나 본 방법은 TS를 실시간으로 생성하지 않는다. 이미 생성된 TS을 이용하여 그 안에 이미 들어있는 PCR을 추출하고, 이를 STCR로 재사용하여 각 이벤트의 NPT 참조 서술자를 생성한다. 실제 방송환경에서 사용하려면, 위에서 설명한 대로 특정 이벤트(프로그램)가 시작되는 시점을 다중화기가 알고, 그 시점에 STCR을 샘플링해야 한다.
그림 3. 인터랙티브 게임쇼: 비디오의 특정 프레임에 특정퀴즈문제를 기술하는 이미지를 디스플레이 한다. 시청자는 리모컨으로 답을 선택한다.
이때 화면을 캡쳐하고, 캡쳐된 동영상을 초당 25프레 임단위로 나누어 프레임별로 점검하였다. 즉 이미지들이 디 스플레이 되는 시점이 TS를 생성할 때 명시한 특정 시점 과 일치하는지를 확인했다. 그 결과 명시된 모든 지점에서 비디오와 이미지간의 동기화에 대한 사람의 식별오차범위 인 240ms 이내에서 이미지가 비디오에 동기화됨을 확 인하였다 본 실험에서 측정된 오차의 원인은 크게 두 가 지를 들 수 있다.
성능/효과
본 논문에서 제시한 NPT 참조 서술자 스트림 생성 방법은 매우 큰 제약을 가지고 있다. 이것은 실제 방송에서는 사용될 수 없고, PP의 스튜디오에서 연동형 애플리케이션을 제작하여 테스트하기 위해서만 사용할 수 있다.
따라서 본 논문에서는 이를 도와주기 위해 NPT를 수신기에서 근사적으로 재구성하는 방법을 제안하였다. 제안된 NPT 재구성 기법을 적용하여 명시된 시각에 이벤트를 처리하는 Xlet 애플리케이션과 스트림 이벤트가 포함된 스트림을 이용하여 실험한 결과 명시된 모든 지점에서 사람의 식별오 차범위이내에서 동기화가 됨을 확인하였다.
참고문헌 (11)
ATSC. 2003. http://www.atsc.org
OCAP. 2003. http://www.opencable.com
ETSI TS 101 802 : Digital Video Broadcasting-Multimedia Home Platform 1.0.1, 2001
Richard Chernock. 'Data Broadcasting', McGraw-Hill, 2001
ISO/IEC 13818-1 Generic Coding of Moving Picture and Associated Audio : Systems
ISO/IEC 13818-6 Generic Coding of Moving Picture and Associated Audio : Digital Storage Media Command and Control
TR 101 202 DVB; Implementation guidelines for Data Broadcasting
Steven Morris. The Interactive TV Web. http://www.mhpinteractive. org/tutorial 2002
김세훈, 정문열, 백두원. 연동형 데이터 방송 애플리케이션을 위한 스트림 생성기 개발. 방송공학회 학술대회, pp. 267-270, 2003
Ralf Steinmetz. 'Human Perception of Jitter and Media Synchronization'. IEEE Journal on Selected Areas in Communications, vol. 14, no. 1, Jan. 1996, pp. 61-72
정문열, 백두원. 연동형 데이터 방송 애플리케이션의 구조. 서강대영상대학원 Technical Report, 2003. 방송공학회 논문지 제출
※ AI-Helper는 부적절한 답변을 할 수 있습니다.