KR100269787B1 - 엠펙 포맷 간의 실시간 데이터 변환 방법 - Google Patents

엠펙 포맷 간의 실시간 데이터 변환 방법 Download PDF

Info

Publication number
KR100269787B1
KR100269787B1 KR1019970078492A KR19970078492A KR100269787B1 KR 100269787 B1 KR100269787 B1 KR 100269787B1 KR 1019970078492 A KR1019970078492 A KR 1019970078492A KR 19970078492 A KR19970078492 A KR 19970078492A KR 100269787 B1 KR100269787 B1 KR 100269787B1
Authority
KR
South Korea
Prior art keywords
mpeg
video
audio
format
buffer
Prior art date
Application number
KR1019970078492A
Other languages
English (en)
Other versions
KR19990058391A (ko
Inventor
임동진
Original Assignee
윤종용
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윤종용, 삼성전자주식회사 filed Critical 윤종용
Priority to KR1019970078492A priority Critical patent/KR100269787B1/ko
Publication of KR19990058391A publication Critical patent/KR19990058391A/ko
Application granted granted Critical
Publication of KR100269787B1 publication Critical patent/KR100269787B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

본 발명은 별도의 부가 장비 없이도 MPEG-2 TS 포맷의 데이터를 MPEG-1 SS 포맷의 데이터로 실시간적으로 변환할 수 있도록 한 엠펙 포맷 간의 실시간 데이터 변환 방법에 관한 것이다. 본 발명의 엠펙 포맷간의 실시간 데이터 변환 방법은 (a) 버퍼에 임시적으로 저장되어 있는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽는 단계; (b) 상기 단계(a)에서 읽어들인 패킷의 첫 번째 4 바이트에 있는 패킷 식별자(PID)가 비디오를 나타내는 지 아니면 오디오를 나타내는 지를 판단하는 단계; (c) 상기 단계(b)에서 상기 패킷 식별자가 비디오를 나타내는 경우에는 단위 개시 코드에 따라 비디오 스트림 헤더, 비디오 팩헤더 및 비디오 패킷을 순차적으로 구성하는 단계; (d) 상기 단계(b)에서 상기 패킷 식별자가 오디오를 나타내는 경우에는 단위 개시 코드에 따라 오디오 스트림 헤더, 오디오 팩헤더 및 오디오 패킷을 순차적으로 구성하는 단계; 및 (e) 상기 단계(c) 및 단계(d)에서 구성된 데이터를 MPEG-1 SS 포맷 단위로 출력하여 버퍼에 임시 저장하는 단계를 포함하여 이루어진다.

Description

엠펙 포맷 간의 실시간 데이터 변환 방법
본 발명은 엠펙 포맷 간의 실시간 데이터 변환 방법에 관한 것으로, 특히 VOD 서버 또는 디지털 방송용 서버로부터 수신되는 MPEG-2 TS 포맷 데이터를 이서넷, ATM 및 기타 컴퓨터 네트워크에 연결된 퍼스널 컴퓨터 또는 셋트톱 박스 등의 단말기에서 MPEG-1 SS 포맷 데이터로 실시간으로 변환해 주는 엠펙 포맷 간의 실시간 데이터 변환 방법에 관한 것이다.
MPEG(Moving Picture Experts Groups, 이하 간단히 MPEG라고 한다)은 ISO 내의 작업 부회에서 책정한 동화상 정보의 압축 및 저장에 관한 표준 규격을 말하는 것으로, VCR(Video Cassette Recorder) 수준의 화질을 제공하는 MPEG-1과 고해상도 디지털 비디오를 지원하는 MPEG-2가 있다.
이러한 MPEG-2 TS(Transport Stream) 포맷은 저장형 동영상 데이터의 압축 방식으로 고안된 MPEG-1 SS(System Stream) 포맷과는 달리 복수개의 동영상 데이터를 동시에 다중화할 수 있도록 고안되어 VOD(Video On Demand)나 다채널 디지털 방송 등의 분야에서 동영상 데이터 전송 방식의 하나로 널리 사용 중에 있다.
종래의 MPEG-2 TS 복호 기술은 크게 ASIC(Application Specific Integrated Circuit) 등의 복호 전용 칩의 형태로 구현하는 방법과 소프트웨어 알고리즘을 사용하는 방법으로 구분할 수 있다. 전술한 방법들 중에서 ASIC 등의 복호 전용 칩의 형태로 구현한 방법은 본 발명의 소프트웨어적인 방법과 확실히 구분되므로 상세한 설명은 생략한다.
한편, 종래의 소프트웨어적인 알고리즘을 이용하여 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 기술은 컴퓨터 네트워크 환경 하에서의 실시간적인 변환에 중점을 둔 것이 아니라 MPEG 데이터 포맷 간의 변환 자체를 목적으로 한 것이 대부분이다. 따라서, 종래의 포맷 변환 기술은 MPEG-2 TS 포맷의 헤더 부분의 세부적인 비트 정보를 분석하여 비디오와 오디오 기본 스트림을 추출한 후에 이렇게 추출된 비디오 및 오디오 스트림의 비트 레이트를 참조하여 다중화율을 정하고, 이렇게 정해진 다중화율에 맞게 비디오와 오디오 스트림을 다중화하는 방식으로 구현된다. 아래의 표 1 내지 표 4는 MPEG-2 TS 포맷을 도식화하여 나타내고 있다.
MPEG-2 TS 포맷
트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷 트랜스포트 패킷
단위 트랜스포트 패킷(188 바이트)
구분 동기바이트 오류 표시 단위개시표시 패킷우선순위 PID 스크램블제어 어댑테이션필드프래그 순회카운터 어댑테이션필드 페이로드(정보)
비트수 8 1 1 1 13 2 2 4
어댑테이션 필드
구분 어댑테이션필드 길이 불연속표시 랜덤액세스 표시 스트림 우선 표시 플래그 옵션 필드 스터핑 바이트
비트수 8 1 1 1 5 8*M
옵션 필드
구분 PCR OPCR 스플라이스 카운트다운 프라이빗 데이터 어댑테이션 필드확장
비트수 842+6 42+6 8 8 8*N
위의 표 1에서 헤더 정보의 첫 번째 바이트에는 TS의 동기 값을 의미하는 47h가 기록되며, 이어지는 1비트들에는 각각 오류 표시 플래그, 단위개시 표시 플래그, 패킷우선순위 플래그 등이 기록된다. 여기에서, 단위 개시 표시 플래그에 "1" 값이 기록되어 있으면, 해당 패킷부터 한 단위의 비디오 또는 오디오 스트림이 시작됨을 의미한다. 즉, 다음의 단위 개시 표시 플래그가 나타나기 전까지 연속되는 188 바이트의 비디오 또는 오디오 스트림이 합해져서 한 단위의 비디오 또는 오디오 스트림을 구성하는 것이다. 다음에 나오는 순회 카운터 필드는 이러한 단위 패킷에 붙여지는 일련 번호이다. 오디오 또는 비디오 스트림의 한 단위는 보통 1 - 2 킬로바이트 정도로 구성된다.
PID(Packet Identification) 값은 해당 패킷이 오디오 스트림인 지 또는 비디오 스트림인 지를 구별해 주며, 어댑테이션(Adaption) 필드 플래그는 뒷부분에 나타낸 어댑테이션 필드의 존재 유무를 표시한다. 어댑테이션 필드에는 각 패킷에 관한 부가 정보나 스터핑 바이트(무효 데이터 바이트) 등을 기록함으로써 각 패킷의 동적인 상태 변화 정보를 전송할 수 있다. 예를 들어, 어댑테이션 필드 내의 PCR(Program Clock Reference) 값은 해당 패킷의 비디오나 오디오 스트림을 복호(재생)하는 시기를 결정하는 기준 시간으로, 비디오나 오디오 신호의 동기를 위한 것이다.
도 1은 종래의 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 방법을 설명하기 위한 플로우차트이다. 도 1에 도시한 바와 같이, 종래의 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 방법은 먼저 하드디스크 등에 저장되어 있는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽으면서 첫 번째 4 바이트의 헤더 정보를 분석하는 것으로 시작한다. 즉, 단계(S10)에서는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽고, 단계(S12)에서는 이렇게 읽은 패킷의 첫 번째 4 바이트에 있는 PID가 비디오를 나타내는 지 아니면 오디오를 나타내는 지를 판단한다. 단계(S12)에서 PID가 비디오를 나타내는 경우에는 단계(S14)로 진행하여 단위 개시 코드가 '1'인 지를 판단한다. 단계(S14)에서 단위 개시 코드가 '1'인 경우에는 다음에 나타나는 스트림이 비디오 스트림이라고 판단하여, 단계(S16) 및 단계(S18)에서 비디오 스트림을 추출한 후에 하드 디스크에 저장한다. 반면에 단계(S12)에서 PID가 오디오를 나타내는 경우에는 단계(S26)로 진행하여 단위 개시 코드가 '1'인 지를 판단한다. 단계(S26)에서 단위 개시 코드가 '1' 인 경우에는 다음에 나타나는 스트림이 오디오 스트림이라고 판단하여, 단계(S28) 및 단계(S30)에서 오디오 스트림을 추출한 후에 이를 하드 디스크에 저장한다. 단계(S14) 또는 단계(S26)에서 단위 개시 코드가 '1'이 아닌 경우에는 바로 단계(S18) 또는 단계(S30)로 진행한다. 이 단계들(S18),(S30)은 향후 MPEG-1 SS 내의 SCR 값으로 변환되는 PCR 등의 정보를 별도의 파일에 기록하기 위한 것이다. 이렇게 하여 단계(S18) 또는 단계(S30)에서 비디오 스트림이나 오디오 스트림이 생성되면 단계(S22) 또는 단계(S34)에서는 비디오 팩헤더나 오디오 팩헤더가 구성된다. 이 단계들(S22),(S34)에서는 한 단위의 비디오 스트림이나 오디오 스트림을 구성하기 전에 SCR이나 다중화율 등의 정보가 생성된다. 다중화율은 한 단위의 비디오 스트림이나 오디오 스트림을 복호하는 속도를 의미하며 50 바이트 절상값이 기록된다. MPEG-1 SS는 일련의 팩들로 구성되는데, 이들 팩들은 하나의 팩 헤더와 여러 개의 MPEG-1 비디오 스트림 및 오디오 스트림으로 구성된다. 따라서, 단계(S24) 또는 단계(S36)에서는 비디오 패킷이나 오디오 패킷이 구성되는데, 여기에서는 MPEG-2 TS 파일에서 추출된 각각의 비디오 스트림이나 오디오 스트림과는 별도의 파일에 기록된 PCR에서 변환된 SCR 등의 팩헤더 정보가 MPEG-1 SS 포맷에 맞게 재구성된다. 이렇게 하여 비디오 패킷이나 오디오 패킷이 구성되면, 단계(S38)에서는 이를 MPEG-1 SS 단위로 출력하고, 이어서 이렇게 출력된 패킷을 하드 디스크 등의 파일에 저장한다.
그러나, 전술한 바와 같은 종래의 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 일련의 기술을 실시간 변환 시스템에 적용하는데 있어서는 다음과 같은 문제점이 존재한다.
첫 번째로 포맷의 변환 속도가 느리다는 문제점이 있다. 일반적인 MPEG-1의 비디오나 오디오의 다중화율, 즉 비트 레이트(Bit Rate)는 1.0 - 2.5[Mbps] 정도로 초당 125 - 132[kbyte] 정도의 데이터 량을 변환하여야 하는데, 종래의 기술로는 이러한 요구를 만족시킬 수 없다는 문제점이 있다. 물론 포맷의 변환 속도는 단말기 CPU의 성능에 따라서도 좌우되기는 하지만 효율적인 변환 알고리즘도 그만큼 중요하다.
CD-ROM 내의 MPEG-1 파일 재생 작업과는 달리 실시간 시스템에서 변환 속도가 문제가 되는 것은 다음과 같은 이유이다. 디지털 방송용 서버 같은 시스템이 ATM(Asynchronous Transfer Mode) 또는 이서넷(Ethernet) 등의 네트워크를 통하여 셋트톱 박스 또는 퍼스널 컴퓨터와 같은 MPEG-1 복호기가 내장된 시스템으로 일정한 비트 레이트의 MPEG-2 TS 포맷 데이터를 전송하는 클라이언트-서버 환경을 가정해 보자. 이 때, MPEG-1 SS 포맷을 지원하는 셋트톱 박스 또는 퍼스널 컴퓨터에서 네트워크를 통해 전달된 MPEG-2 TS 포맷 데이터를 제시간에 처리해주지 못하면 정확한 동영상의 재생이 불가능할 것이다. 이러한 관점에서 볼 때, 전술한 MPEG-1 SS에는 복호기에서 사용되는 SCR 이외에 PTS(Presentation Time Stamp), DTS(Decoding Time Stamp) 등의 시각 관리 정보가 기록되는데, 이는 복호기가 비디오 스트림이나 오디오 스트림을 복호하는 시기에 데이터가 정확하게 공급되어야 함을 의미한다. 만일 포맷 변환 과정에서 시간 지연이 발생하여 PTS나 DTS 시간 간격보다 비디오나 오디오 데이터가 복호기에 늦게 도달하면 재생 화면이 자주 정지하거나 끊기는 현상이 발생하고, 일정 시간 후에는 클라이언트 내부의 버퍼가 넘쳐서 서버로부터 전송된 데이터의 손실이 발생할 것이다.
두 번째로 중간 처리 결과를 하드 디스크 내에 저장해야만 하는 문제점이 있다. 즉, MPEG-1 포맷으로의 변환 알고리즘이 실행되는 환경에서는 별도의 하드 디스크가 없을 수도 있는데, 이렇게 별도의 하드 디스크가 없는 환경에는 종래의 변환 기술이 적용될 수 없는 문제점이 있다. 뿐만 아니라 도 1의 변환 과정과 같이 추출한 비디오 스트림이나 오디오 스트림을 저장할 수 있는 환경이 있다손 치더라도 중간 결과를 하드 디스크 내에 저장하는 방식은 변환 속도의 고속화를 저해하는 문제점이 있다.
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 별도의 부가 장비 없이도 MPEG-2 TS 포맷의 데이터를 MPEG-1 SS 포맷의 데이터로 실시간적으로 변환할 수 있도록 한 엠펙 포맷 간의 실시간 데이터 변환 방법을 제공하는데 그 목적이 있다.
전술한 목적을 달성하기 위한 본 발명의 엠펙 포맷간의 실시간 데이터 변환 방법은 (a) 버퍼에 임시적으로 저장되어 있는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽는 단계; (b) 상기 단계(a)에서 읽어들인 패킷의 첫 번째 4 바이트에 있는 패킷 식별자(PID)가 비디오를 나타내는 지 아니면 오디오를 나타내는 지를 판단하는 단계; (c) 상기 단계(b)에서 상기 패킷 식별자가 비디오를 나타내는 경우에는 단위 개시 코드에 따라 비디오 스트림 헤더, 비디오 팩헤더 및 비디오 패킷을 순차적으로 구성하는 단계; (d) 상기 단계(b)에서 상기 패킷 식별자가 오디오를 나타내는 경우에는 단위 개시 코드에 따라 오디오 스트림 헤더, 오디오 팩헤더 및 오디오 패킷을 순차적으로 구성하는 단계; 및 (e) 상기 단계(c) 및 단계(d)에서 구성된 데이터를 MPEG-1 SS 포맷 단위로 출력하여 버퍼에 임시 저장하는 단계를 포함하여 이루어진다.
도 1은 종래의 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 방법을 설명하기 위한 플로우차트,
도 2는 본 발명에 따른 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 방법을 설명하기 위한 플로우차트이다.
이하에는 첨부한 도면을 참조하여 본 발명의 양호한 실시예에 따른 엠펙 포맷간의 실시간 데이터 변환 방법에 대해서 상세하게 설명한다.
도 2는 본 발명에 따른 MPEG-2 TS 포맷을 MPEG-1 SS 포맷으로 변환하는 방법을 설명하기 위한 플로우차트이다. 도 2에 도시한 바와 같이, 단계(S100)에서는 버퍼에 임시적으로 저장되어 있는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽고, 단계(S102)에서는 이렇게 읽은 패킷의 첫 번째 4 바이트에 있는 PID가 비디오를 나타내는 지 아니면 오디오를 나타내는 지를 판단한다. 단계(S102)에서 PID가 비디오를 나타내는 경우에는 단계(S104)로 진행하여 단위 개시 코드가 '1'인 지를 판단한다. 단계(S104)에서 단위 개시 코드가 '1'인 경우에는 다음에 나타나는 스트림이 비디오 스트림이라고 판단하여, 단계(S106)로 진행하여 비디오 스트림 헤더를 구성한다.
반면에 단계(S102)에서 PID가 오디오를 나타내는 경우에는 단계(S112)로 진행하여 단위 개시 코드가 '1'인 지를 판단한다. 단계(S112)에서 단위 개시 코드가 '1' 인 경우에는 다음에 나타나는 스트림이 오디오 스트림이라고 판단하여, 단계(S114)로 진행하여 오디오 스트림 헤더를 구성한다. 다음, 단계(S108) 또는 단계(S116)에서는 비디오 팩헤더나 오디오 팩헤더가 구성된다. 이 단계들(S108),(S116)에서는 한 단위의 비디오 스트림이나 오디오 스트림을 구성하기 전에 SCR이나 다중화율 등의 정보가 생성된다. 다중화율은 한 단위의 비디오 스트림이나 오디오 스트림을 복호하는 속도를 의미하며 50 바이트 절상값이 기록된다. MPEG-1 SS는 일련의 팩들로 구성되는데, 이들 팩들은 하나의 팩 헤더와 여러 개의 MPEG-1 비디오 스트림 및 오디오 스트림으로 구성된다. 따라서, 단계(S110) 또는 단계(S118)에서는 비디오 패킷이나 오디오 패킷이 구성된다. 이렇게 하여 비디오 패킷이나 오디오 패킷이 구성되면, 단계(S120)에서는 이를 MPEG-1 SS 단위로 출력하고, 이어서 이렇게 출력된 패킷을 버퍼에 파일이나 비트 스트림의 형태로 저장한다.
전술한 바와 같이 도 2에 도시한 본 발명의 플로우차트와 도 1에 도시한 종래의 플로우차트를 외형적으로만 비교해 보면 중간 단계의 MPEG-2 TS 파일에서 패킷 내에 기록된 PID 값에 따라 오디오 스트림이나 비디오 스트림을 추출한 후에 하드 디스크에 저장하는 중간 과정이 생략된 것이다. 또한, 도 2에서 알 수 있는 바와 같이 그 최종 출력은 적용 환경에 따라 파일 형태이거나 단순히 메모리 내의 MPEG-1 SS 포맷을 따르는 비트 스트림일 수 있다. 비트 스트림의 경우에는 해당 장치의 디바이스 드라이버를 통해 MPEG-1 SS의 복호 기능을 지원하는 MPEG-1 디코우더 카드나 셋트톱 박스의 디코우더 모듈로 곧바로 전달될 수 있도록 되어 있다. 이외에도 실시간 환경에서의 MPEG 포맷 변환 속도의 향상을 위한 본 발명의 변환 알고리즘의 구현 방법은 다음과 같다.
첫 번째로 비트 단위의 연산은 가급적 피하고 비트 마스크 방법을 통한 바이트 단위의 연산을 전개하고 있다. MPEG-2 TS 포맷이나 MPEG-1 SS 포맷의 경우에 각 필드의 크기가 단위 개시 표시 1 비트, PID 13 비트 등과 같이 8 비트의 배수로 구성되지 않아서 바이트 단위의 연산이 어렵고, 따라서 수많은 비트 연산이 요구된다. 이러한 비트 조작을 쉬프트 연산으로 할 경우에 내부적으로 레지스터 연산을 사용하게 되어 성능 저하를 가져오게 된다. 따라서, 본 발명에서는 필요한 데이터들에 대한 비트 마스크 연산을 통해 알고리즘의 수행 속도 향상을 도모하고 있다.
두 번째로 메모리 버퍼의 사용 개수를 최소화하고 있다. 도 1과 같은 종래에 변환 알고리즘에서는 MPEG-2 TS 포맷 데이터를 읽어서 비디오 또는 오디오 스트림을 구성하는 과정, MPEG-1 SS 포맷의 팩헤더 및 비디오 패킷 또는 오디오 패킷을 구성하는 과정 등에서 여러 차례의 메모리 버퍼간 복사가 수행된다. 본 발명에서는 네트워크나 파일 등 외부에서 입력된 TS를 임시 저장하기 위한 메모리 버퍼와 최종 출력을 위한 SS 저장용 버퍼만을 사용하여 변환이 없는 데이터 영역의 버퍼간 복사를 최소화하고 있다. 도 2에 도시한 알고리즘 내에서 사용된 주요 변수들은 아래의 표 5와 같다.
변환 알고리즘 내의 주요 변수명 및 용도
변수명 변수타입 용도
TSbuf[] unsigned char MPEG-2 TS 포맷 데이터를 임시 저장
SSbuf[] unsigned char 변환과정을 거쳐 구성된 MPEG-1 SS 포맷 데이터를 저장
VEbuf[] unsigned char MPEG-2 TS 포맷의 페이로드 영역에 존재하는 비디오 스트림을 임시 누적
AEbuf[] unsigned char MPEG-2 TS 포맷의 페이로드 영역에 존재하는 오디오 스트림을 임시 누적
VEpos integer 188바이트 단위로 추출한 비디오 스트림을 VEbuf에 누적할 때의 버퍼 위치
AEpos integer 188바이트 단위로 추출한 오디오 스트림을 AEbuf에 누적할 때의 버퍼 위치
참고적으로, 도 2에 도시한 플로우차트에 따른 본 발명의 알고리즘을 "C" 언어의 형태로 표현하면 아래와 같다.
for(i=0; i<PDU_SIZE; i+=188) /* TS 포맷 데이터를 188 바이트 단위로 처리 */
{
if(TSbuf[i+2]==video_pid){ /* PID가 비디오 스트림인 경우 */
{ TS2SS(VEbuf,VEpos); VEpos=0; }
mempcy(VEbuf+VEpos, TSbuf+i, 188); VEpos+=188;
}
else if(TSbuf[i+2]==audio_pid){ /* PID가 오디오 스트림인 경우 */
{ TS2SS(AEbuf,AEpos); AEpos=0; }
mempcy(AEbuf+AEpos, TSbuf+i, 188); AEpos+=188;
}
else if(TSbuf[i+2]==AVMAP_PID) { /* 비디오, 오디오 PID 값 저장 */
video_pid=TSbuf[i+19]; audio_pid=TSbuf[i+24];
}
else continue;
}
앞의 알고리즘은 MPEG-2 TS 포맷 데이터를 188 바이트 단위로 읽으면서 PID 값에 따라 비디오 스트림이나 오디오 스트림을 각각 VEbuf, AEbuf에 분리한 후에 MPEG-1 SS 포맷으로 변환하는 과정을 보인 것이다. 여기서 VEbuf와 AEbuf에 누적되는 위치를 관리하는 VEpos와 AEpos는 188 바이트씩 증가한다. 또한 MPEG-2 TS 포맷 초기에 기록된 비디오 및 오디오의 PID 값을 저장하여 다음 TS 패킷의 PID 값과 비교한다.
TS2SS(buf, size)
{
if(buf[i]==Ox47 && (buf[i+1]&Ox40)==Ox40) /* 단위개시코드 '1'이면 */
{ j=1;
if(buf[i+3]&Ox30)==Ox30) { /* 어댑테이션 필드가 존재하면 */
if(buf[i+5]&Ox10)==Ox10) { /* PCR 값이 있으면 */
pcr = (buf[i+6]<<24)|(buf[i+7]<<16)|(buf[i+8]<<8)|buf[i+9];
scr = (pcr << 2)|Ox20001;
}
else scr+=scrinc;
i+=(4+1+buf[i+4]);
}
else {scr+=scrinc; i+=4;}
/* MPEG-1 SS 팩헤더 구성 */......
if(buf[i-1]==Ox00) AddSSData(packethdr,20);
else { AddSSData(packethdr, 6+stuff);
AddSSData(buf+i+1,ptsdts); /* PTS, DTS */
}
AddSSData(buf+i, (188-(i-j)));
i+=(188-(i-j));
}
else { /* 단위 개시코드가 '1'이 아닌 TS 포맷 188 바이트의 경우 */
if((but[i+3]&Ox30)==Ox30) { /* 어댑테이션 필드가 존재하면 */
j=184-(buf[i+4]+1); /* 어댑테이션 필드를 무시하고 건너뜀 */
i+=(4+buf[i+4]+1);
}
else { i+=4; j=184;}
AddSSData(buf+i,j); i+=j;
}
}
앞의 코드는 188 바이트의 MPEG-2 TS 포맷 데이터를 실제 MPEG-1 SS 포맷 데이터로 변환해 주는 부분으로 단위 개시 표시 비트가 "1"인 경우와 그렇지 않은 경우를 분리해서 처리하고 있다. 여기에서, 단위 개시 표시 비트가 '1'인 TS 패킷에 존재하는 어댑테이션 필드에는 PCR 등의 복호 시간 관련 시각 정보가 존재하기 때문에 이를 SCR 값으로 바꾸어 주어야 한다. 단위 개시 표시 비트가 '0'인 경우에는 일반적으로 어댑테이션 필드를 무시해도 된다. 다음, MPEG-1 SS의 패킷 길이 등을 계산하고, SCR, 다중화율 등을 계산하여 팩헤더를 구성한 후에 비디오 또는 오디오 기본 스트림(VEbuf, AEbuf)과 함께 최종적으로 MPEG-1 SS 포맷 데이터가 생성된다.
본 발명에 따른 엠펙 포맷간의 실시간 데이터 변환 방법은 클라이언트-서버 네트워크 환경에서 동작하는 VOD나 디지털 CATV(Cable Tele-Vision) 서비스용 소프트웨어의 일부로 활용될 수 있다.
본 발명의 엠펙 포맷간의 실시간 데이터 변환 방법은 전술한 실시예에 국한되지 않고 본 발명의 기술 사상이 허용하는 범위 내에서 다양하게 변형하여 실시할 수가 있다.
이상에서 설명한 바와 같은 본 발명의 엠펙 포맷간의 실시간 데이터 변환 방법에 따르면, 별도의 부가 장비 없이 단순한 소프트웨어적인 알고리즘의 변경만으로 MPEG-2 TS 포맷의 MPEG-1 SS 포맷으로의 실시간 변환이 가능케 하는 효과가 있다.

Claims (5)

  1. (a) 버퍼에 임시적으로 저장되어 있는 MPEG-2 TS 파일을 188 바이트의 패킷 단위로 읽는 단계;
    (b) 상기 단계(a)에서 읽어들인 패킷의 첫 번째 4 바이트에 있는 패킷 식별자(PID)가 비디오를 나타내는 지 아니면 오디오를 나타내는 지를 판단하는 단계;
    (c) 상기 단계(b)에서 상기 패킷 식별자가 비디오를 나타내는 경우에는 단위 개시 코드에 따라 비디오 스트림 헤더, 비디오 팩헤더 및 비디오 패킷을 순차적으로 구성하는 단계;
    (d) 상기 단계(b)에서 상기 패킷 식별자가 오디오를 나타내는 경우에는 단위 개시 코드에 따라 오디오 스트림 헤더, 오디오 팩헤더 및 오디오 패킷을 순차적으로 구성하는 단계; 및
    (e) 상기 단계(c) 및 단계(d)에서 구성된 데이터를 MPEG-1 SS 포맷 단위로 출력하여 버퍼에 임시 저장하는 단계를 포함하여 이루어진 엠펙 포맷간의 실시간 데이터 변환 방법.
  2. 제 1항에 있어서, 상기 단계(e)에서 버퍼에 임시 저장되는 데이터는 파일의 형태로 저장되는 것을 특징으로 하는 엠펙 포맷간의 실시간 데이터 변환 방법.
  3. 제 1항에 있어서, 상기 단계(e)에서 버퍼에 임시 저장되는 데이터는 비트 스트림의 형태로 저장되는 것을 특징으로 하는 엠펙 포맷간의 실시간 데이터 변환 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서, 상기 방법에서 데이터의 연산은 비트 마스크 연산에 의해 수행되는 것을 특징으로 하는 엠펙 포맷간의 실시간 데이터 변환 방법.
  5. 제 4항에 있어서, 상기 방법은
    MPEG-2 TS 포맷 데이터를 임시 저장하는 버퍼(TSbuf);
    변환 과정을 거쳐 구성된 MPEG-1 SS 포맷 데이터를 임시 저장하는 버퍼(SSbuf);
    MPEG-2 TS 포맷의 페이로드 영역에 존재하는 비디오 스트림을 임시 누적하는 버퍼(VEbuf);
    MPEG-2 TS 포맷의 페이로드 영역에 존재하는 오디오 스트림을 임시 누적하는 버퍼(AEbuf);
    188 바이트 단위로 추출한 비디오 스트림을 상기 버퍼(VEbuf)에 누적할 때의 버퍼 위치를 나타내는 변수(VEpos) 및
    188 바이트 단위로 추출한 오디오 스트림을 상기 버퍼(AEbuf)에 누적할 때의 버퍼 위치를 나타내는 변수(AEpos)를 설정하여 수행되는 것을 특징으로 하는 엠펙 포맷간의 실시간 데이터 변환 방법.
KR1019970078492A 1997-12-30 1997-12-30 엠펙 포맷 간의 실시간 데이터 변환 방법 KR100269787B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970078492A KR100269787B1 (ko) 1997-12-30 1997-12-30 엠펙 포맷 간의 실시간 데이터 변환 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970078492A KR100269787B1 (ko) 1997-12-30 1997-12-30 엠펙 포맷 간의 실시간 데이터 변환 방법

Publications (2)

Publication Number Publication Date
KR19990058391A KR19990058391A (ko) 1999-07-15
KR100269787B1 true KR100269787B1 (ko) 2000-10-16

Family

ID=19529862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970078492A KR100269787B1 (ko) 1997-12-30 1997-12-30 엠펙 포맷 간의 실시간 데이터 변환 방법

Country Status (1)

Country Link
KR (1) KR100269787B1 (ko)

Also Published As

Publication number Publication date
KR19990058391A (ko) 1999-07-15

Similar Documents

Publication Publication Date Title
US5801781A (en) Apparatus for converting moving picture stream of MPEG1 to transport stream of MPEG2
US7496675B2 (en) Data multiplexer, data multiplexing method, and recording medium
KR100226528B1 (ko) 다중화 압축화상/음성데이타의 복호장치
US5917830A (en) Splicing compressed packetized digital video streams
US6873629B2 (en) Method and apparatus for converting data streams
KR100407085B1 (ko) 가변비트-레이트압축방법및비디오신호인코딩장치
US7298959B1 (en) Method and apparatus for storing MPEG-2 transport streams using a conventional digital video recorder
US6643449B1 (en) Recording/reproducing apparatus, video data recording apparatus, recording method, reproducing method
EP0933949B1 (en) Transmitting system, transmitting apparatus, recording and reproducing apparatus
CN100416689C (zh) 再现设备和方法以及记录介质
JP3301263B2 (ja) データ復号装置
JP2000331421A (ja) 情報記録装置及び情報再生装置
KR100269787B1 (ko) 엠펙 포맷 간의 실시간 데이터 변환 방법
JPH11205789A (ja) Mpeg2トランスポートストリーム伝送レート変換装 置
JPH10322671A (ja) パケット多重化された画像音声信号の分離装置
US7653289B1 (en) Stream converting method and apparatus thereof, and stream recording method and apparatus thereof
KR100266311B1 (ko) 엠피이쥐시스템스트림의순방향및역방향재생방법및그장치
JP2001339688A (ja) トランスポートストリーム再生装置
KR100269786B1 (ko) 엠펙 포맷간의 실시간 데이터 변환 방법
JP3090129B2 (ja) 多重化装置
JP2000187940A (ja) 記録再生装置、および記録装置
EP1148723B1 (en) Special reproduction data generating device, medium, and information aggregate

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110629

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee