KR20010013390A - 디지털 비디오 스트림의 접속방법 및 장치 - Google Patents

디지털 비디오 스트림의 접속방법 및 장치 Download PDF

Info

Publication number
KR20010013390A
KR20010013390A KR19997011390A KR19997011390A KR20010013390A KR 20010013390 A KR20010013390 A KR 20010013390A KR 19997011390 A KR19997011390 A KR 19997011390A KR 19997011390 A KR19997011390 A KR 19997011390A KR 20010013390 A KR20010013390 A KR 20010013390A
Authority
KR
South Korea
Prior art keywords
data stream
new data
frame
splice
new
Prior art date
Application number
KR19997011390A
Other languages
English (en)
French (fr)
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 뷰그래픽스, 인코포레이티드
Publication of KR20010013390A publication Critical patent/KR20010013390A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23608Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
    • 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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

스플라이싱 시스템은 디지털방식으로 인코딩된 데이터스트림을 함께 밀봉없이 스플라이싱하는 스플라이서를 포함한다. 바람직한 실시예에서, 스플라이서는 필요하다면 초기 GOP를 폐쇄하면서, 스플라이스 아웃 포인트 및 스플라이스 인 포인트를 위한 데이터 스트림 데이터의 연속적인 스플라이스 버퍼를 바람직하게 해부한다. 바람직한 스플라이서는 새로운 데이터 스트림 디코드/프리젠테이션을 정렬하는 새로운 데이터 스트림 실시간 PCR 값을 더 얻어, 새로운 데이터 스트림 개시시간을 정렬한다. 동시에, 스플라이서는 바람직하게는 프레임 테이블을 사용하여 오버플로우를 검출하고 널 패킷(null packets)을 부가함으로써 이러한 오버플로우를 정정하여, 데이터 스트림 데이터 부분을 지연시킨다. 또한, 스플라이서는 바람직하게는 널 패킷을 삭제함으로써 데이터스트림 인코딩을 회복시켜 데이터스트림 데이터 부분을 가속시킨다. 다른 바람직한 실시예에 있어서, 스플라이서는 바람직하게는 비트 클럭 스케쥴 오프셋을 사용하여 데이터스트림 데이터 부분을 지연 또는 가속시킨다.

Description

디지털 비디오 스트림의 접속방법 및 장치{APPARATUS AND METHOD OF SPLICING DIGITAL VIDEO STREAMS}
기술의 진보 및 초기 표준화 노력에 의해서 멀티미디어 생성, 처리 및 전송 시스템이 급속히 출현중에 있다. 예를 들어, 개선된 처리 및 저장, 송신, 인코딩/디코딩 등의 기술들이 아날로그로 방송으로부터 디지털 방송으로의 전환을 촉진하고 있다(즉, 디지털화된 텔레비젼, 케이블, 인공위성 등의 분포 및 종종 디지털 처리된 멀티미디어 스트림). 초기 표준화는 또한 호환성을 제공하므로, 덜 비싸고 좀더 바로 사용할 수 있는 시스템 및 소자를 제공한다. 이러한 전환에서 기대되던 장점중에는 산업상 사용자 액세스를 매우 다양한 고품질 프로그래밍 및 고품질 다량분포 매체를 통해서 한다는 것이다.
오디오, 비디오, 기타 멀티미디어 및 비멀티미디어(non-multimedia) 정보를 포함하는 데이터 스트림에 대한 인코딩 및 디코딩 표준은, 동화상 전문가 그룹(Motion Picture Experts Group)에 의해서 채택되어 국제적으로 채택된 MPEG-1(ISO/IEC 11172-n) 및 MPEG-2(ISO/IEC 13818-n) 사양을 포함한다.(MPEG-2는 MPEG-1 기반으로 방송품질 비디오 및 다른 적용을 위해서 확장된다.) 다른 특징들 중에서, MPEG-1 및 MPEG-2 와 같은 인코딩/디코딩 사양(이하, 함께 일컬어 "MPEG 사양"이라 함)은 데이터 스트림 포맷, 타이밍, 동기화 및 디바이스 용량 매개변수의 배열을 기본적으로 하드웨어/소프트웨어 시스템 구현과는 독립적으로 규정한다. 또한, MPEG 사양은 특정 프로토콜 및 용량을 규정하는 반면에 기본적으로 상기 규정된 프로토콜 및 용량을 구현하기 위하여는 제한이 없는(바람직하게는 지속적으로 발전하는) 시스템을 허용한다.
MPEG 사양 및 기타 인코딩/디코딩 표준은 또한 확장되어 다른 신생 기술들과 결합하기도 하였다. 예를 들어, 오디오 확장 표준(ISO/IEC 13818-7)은 AC-3 오디오 모드를 MPEG-2에 부가한다. 또한, 데이터 인코딩, 디코딩, 전송 및 관련 사항들 사용의 조작, 이용 및/또는 확장에 대하여, MPEG 사양 내에서의 또 다른 확장이 논의되고, 도입되고/또는 국제표준으로서 채택되어 왔다. 따라서, 이하 말 그대로 반복되는 것처럼 MPEG 사양이 첨부된다.
불행하게도, 상기 목적을 달성하기 위하여는 성장하는 통상의 플랫포옴을 제공하는 경우에, MPEG 및 관련 사양이 적어도 부분적으로는 최근 개발품들의 재검을 통해서 반드시 설계되어야 한다. 따라서, 교정 및 확장에도 불구하고, 그것들은 또한 특정의 예상하지 못한 어플리케이션 및 기타 우발사건에 대하여도 불충분하게 된다. 예를 들어, MPEG-2는 완전히 인코드된 데이터 스트림을 접속하는 것에 대한 증가된 요구를 충족시키고, 디코드된 형태로 접속을 수행한 다음 단일 데이터 스트림으로 데이터 스트림을 재인코드하여, 인코드된 데이터 접속의 내재적인 문제를 모두 효과적으로 회피하는데 실패하였다. 불행하게도, 실시간으로 접속을 충분히 수행하는 인코딩 및 디코딩 장비는 또한 고가이다. 방송 어플리케이션에 있어서, 각 "텔레비젼 채널"에는 분리된 데이터 스트림 소스가 제공되고, 이들의 어느 하나는 당연히 접속을 요구한다. 따라서, 다중 인코더 및 디코더의 치환이 요구될 것이다.
인코드된 데이터 스트림을 접속하는데 사용된 종래의 다른 방법에 따르면, 검게되고 묵음된 비디오 프레임("선두 프레임")은 신규 데이터 프레임의 시작부에 부가된다. 이 방법의 장점중의 하나는 선두 프레임을 생생하는데 최소량의 데이터가 요구된다는 것이다. 따라서, 디코드 버퍼 오버플로우는 일어나지 않을 것이다. 추가적으로, 선두 프레임은 해당 기술분야에서 공통적으로 롤오버로 언급되는 디스플레이 동기화 손실과 같은 데이터 스트림쌍의 덜 정확한 접속으로 마스크 시각 가공물로 역할을 한다. 더욱이, 이러한 방법은 현존하는 인코더 및 디코더를 이용하여 수행될 수 있어, 치환비용을 회피할 수 있다. 불행하게도, 접속은 투명하지 않다. 검게된 프레임은 전시된 데이터 스트림이 제공되는 소비자에게는 눈에 띄지 않는다. 선두 프레임은 상업적 메세지와 같은 신규 데이터의 일부분을 형성하기 때문에, 손실된 "방송시간"은 30초마다 900,000달러 이상을 지불하는 광고주에게는 특별한 관심사이다(따라서, 각 프레임 가격은 1,000,000달러를 초과할 것이다).
이러한 시도에도 불구하고, 동영상 및 텔레비젼 협회에 의한 제안(MPEG-2 전송 스트림용 텔레비젼-접속점에 대한 SMPTE 표준)하에서의 현행의 표준화 노력은 MPEG-2 사양으로의 새로운 확장에 호의적인 현재의 접속 방법론을 포기하도록 제안한다. 이 제안은 데이터 스트림쌍의 투명한 또는 이음매 없는 접속에 특별히 맞춰진 새로운 통합 프로토콜을 제시한다. 간략히 말하면, 제안된 표준은 인코딩시에 데이터 스트림내에 직접적으로 접속점 및 연관 접속-지지 정보의 합체를 제공한다. 불행하게도, 제안된 확장은 최소한 현존 인코더의 치환비용은 요구하지 않는다. 더욱 어렵게도, 제안된 표준은 아직 비준되지 않았다. 따라서, 피할 수 없는 여러가지의 해석, 구현, 비적합성, 독점의 "추가확장" 및 다른 문제뿐만 아니라 잠재적인 변경이 일어날 것이다.
따라서, 새로운 인코더 또는 디코더에 대한 요구없이, 그리고 눈에 띄며 방송시간을 소비하는 가공물의 도입없이 디지털로 인코드된 멀티미디어 데이터 스트림을 함께 접속하는 방법 및 장치가 요구된다. 또한, 종래의 인코딩 및 디코딩 사양의 변형을 요구하지 않는 방법 및 장치가 요구된다.
본 발명은 일반적으로 멀티미디어 데이터 스트림 처리에 관한 것으로, 특히 디지털로 인코드된 멀티미디어 데이터 스트림을 함께 접속시키는 장치 및 벙법에 관한 것이다.
도 1은 본 발명의 바람직한 실시예에 따라서 디지털로 인코드된 멀티미디어 데이터 스트림을 수신, 준비, 저장, 복원 및 전송하는 시스템을 일반적으로 나타내는 기능블럭도;
도 2는 도 1에 도시된 시스템을 더욱 상세히 나타내는 기능블럭도;
도 3은 본 발명에 따른 바람직한 접속기를 나타내는 기능블럭도;
도 4는 본 발명에 따라서 제 1 디지털 인코드된 스트림과 제 2 디지털 인코드된 스트림을 함께 접속시키기 위한 바람직한 방법을 나타내는 순서도;
도 5는 본 발명에 따라서, 도 4의 바람직한 방법에 따른 제 2 데이터 스트림 내에서의 접속(splice-out) 지점을 발견하기 위한 바람직한 방법을 나타내는 순서도;
도 6은 본 발명에 따라서, 도 4의 바람직한 방법에 따른 제 2 데이터 스트림 내에서의 접속(splice-in) 지점을 발견하기 위한 바람직한 방법을 나타내는 순서도;
도 7은 본 발명에 따라서, 도 4의 바람직한 방법에 따른 제 2 데이터 스트림 내에서의 화상의 선두 공개그룹을 폐쇄하기 위한 바람직한 방법을 나타내는 순서도;
도 8은 도 7의 바람직한 방법에 따라서 일 그룹의 화상을 폐쇄하는 경우에 순간참조를 해결하기 위한 바람직한 방법을 나타내는 순서도;
도 9a는 MPEG-2 인코드된 데이터 스트림이 디코더 입력버퍼에 의해서 통상 어떻게 수신되고 디코드되는가를 나타내는 그래프;
도 9b는 두 개의 비디오 프레임 사이에서 비디오 프레임을 연속하여 디스플레이하기 위한 통상의 디스플레이 스캔비율 타이밍 관계를 나타내고;
도 10은 본 발명에 따라서, 도 4의 바람직한 방법에 따른 실시간 신규 데이터 스트림 PCR을 결정하기 위한 바람직한 방법을 나타내는 순서도;
도 11은 본 발명에 따라서, 도 4의 바람직한 방법에 따른 실시간 신규 데이터 스트림을 결정한 후 제 1 데이터 스트림과 관련하여 디코더 입력버퍼에 의해서 어떻게 제 2 데이터 스트림이 수신되는가를 나타내는 그래프;
도 12는 본 발명에 따라서, 도 4의 바람직한 방법에 따른 제 1 데이터 스트림의 디코딩과 함께 디코더 입력버퍼에 의해서 제 2 데이터 스트림의 수신을 정렬하는 바람직한 방법을 나타내는 순서도;
도 13a는 본 발명에 따라서, 접속버퍼에 저장된 데이터 스트림내의 널 패킷(null packet)을 삭제하는 바람직한 방법을 나타내고;
도 13b는 본 발명에 따라서, 도 12의 바람직한 방법을 실시한 후의 접속버퍼 구성을 나타내고;
도 14는 본 발명에 따라서, 함께 접속될 구(old) 데이터 스트림과 신규 데이터 스트림의 디코더 입력버퍼가 동시에 존재하는 결과로서 디코더 입력버퍼의 오버플로우를 제거하기 위한 바람직한 방법을 나타내는 순서도;
도 15a는 본 발명에 따라서, 디코더 입력버퍼 오버플로우를 검출하고 제거하는 바람직한 방법에 따라서, 구 데이터 스트림 프레임 데이터로 접속테이블을 채우는 바람직한 방법을 나타내는 제 1 순서도 부분;
도 15b는 본 발명에 따라서, 도 14의 바람직한 방법에 따라 오버플로우를 검출하는 동시에 신규 데이터 스트림 데이터로 접속테이블을 채우는 바람직한 방법의 제 1 부분을 나타내는 도 15a 순서도의 연장;
도 15c는 본 발명에 따라서, 도 15b 순서도의 연장;
도 16은 본 발명에 따라서, 도 15a 내지 도 15c의 바람직한 방법에 따른 오버플로우 검출 및 제거 외에도 오버플로우 특성을 내타내는 그래프;
도 17은 본 발명에 따라서, 도 15a 내지 도 15c의 바람직한 방법에 따른 접속테이블의 예시적인 내용을 나타내고;
도 18은 본 발명에 따라서, 제 1 데이터 스트림의 오디오 접속(splice-out)지점을 설정하기 위한 바람직한 방법을 나타내는 순서도;
도 19a는 본 발명에 따라서, 오디오 접속(splice-out)지점 선택을 나타내고;
도 19b는 본 발명에 따라서, 오디오 접속(splice-in)지점 선택을 나타내고;
도 20은 본 발명에 따라서, 신규 데이터 스트림 내의 접속(splice-in)지점을 설정하는 바람직한 방법을 나타내는 순서도;
도 21은 본 발명의 또 다른 바람직한 실시예에 따른 비트 클럭을 사용한 바람직한 접속기를 나타내는 순서도;
도 22는 본 발명에 따라서, 오버플로우 조건을 검출하고 수정하는 바람직한 방법을 도 15a 내지 도 15c로 확장하여 나타내는 순서도이다.
본 발명은 디지털로 인코드된 데이터 스트림을 이음매 없이 함께 접속하는, 데이터 처리시스템에 기초를 둔 접속 시스템을 제공한다. 보다 상세하게는, 본 접속 시스템은 새로운 비트 클럭 메커니즘의 사용을 통해 소요비용을 발생시키지 않고, 현존의 인코딩/디코딩 사양에 따라 종래의 인코더 및 디코더를 사용하여 구데이터 스트림 및 독립적으로 인코드된 신규 데이터 스트림의 접속을 수행한다. 일측면에서, 널 패킷(null packet) 삭제의 반복적 복사 및 별개적인 널 패킷삽입을 수행하기 보다는, 널 패킷 카운트(count)는 현재 데이터 스트림부의 처리가 완료될때까지 유지된다. 다른 측면에서, 멀티플렉서는 멀티플렉서 작동률에 따라 전송용 각 데이터 스트림 출력버퍼를 모으도록 설정된다. 그 다음 접속기는 주어진 버퍼에 따라 널 패킷 추가 및 삭제량을 결정하고 이 양을 호스트 어플리케이션에 되돌려 보낸다. 이 호스트 어플리케이션은 그 다음 멀티 플렉서에 이 양을 되돌려 보내고, 이는 대응 버퍼용 스케쥴에 이 양을 추가한다. 이롭게도, 반복된 복사 및 호스트 어플리케이션 작동은 피하기 때문에, 처리 시스템 처리량은 상당히 증가될 수 있다.
이들 및 다른 목적, 본 발명의 장점 및 이익이 다음의 도면 및 명세서로부터 분명해질 것이다.
명백히 하기 위하여, 이하 논의되는 실시예는 MPEG-2 사양에 따라서 인코드 및 디코드되는 디지털 인코드 데이터 스트림(이하, "데이터 스트림"이라 함)을 함께 접속하는 것을 일컫는다. 특히, 논의는 상업적인 메시지를 갖고 현재 진행중인 텔레비젼 프로그램 방송을 실시간 접속하는 것에 촛점이 맞추어지는데, 이 접속은 소비자 위치에 있는 케이블 수신기로 전송하는 케이블 방송국에서 수행된다. 또한, 이 논의는 디지털 인코드된 멀티미디어 데이터 스트림을 수신, 준비, 저장, 복원 및 전송하기 위하여 바람직한 시스템에 내장되는 접속기 어플리케이션 프로그램에 관한 것이다.
그러나, 본 발명이 이미 적용할 수 있는 다수의 디지털 인코딩/디코딩 사양이(MPEG 사양 외에도) 존재하며 소개되고 있는 중이라는 점은 당업자가 알 수 있을 것이다. 본 실시예에는 유럽 통신표준(European Telecommunications Standard)을 포함하지만 이것에 국한되는 것은 아니다. 또한, 주 데이터 스트림의 내용이 텔레비젼 프로그램 및 상업에 국한되는 것은 아니다. 오히려, 여기에 포함된 기술은 디지털 인코딩이 사용되는 오디오, 비디오 및 기타 데이터 타입의 광범위한 영역에 적용될 수 있다. 도 1에 일반적으로 도시되듯이, 본 발명에 따라서 디지털 인코드 멀티미디어 데이터 스트림을 수신, 준비, 저장, 복원 및 전송하기 위하여 바람직한 시스템(100)은, 바람직하게는 개인 컴퓨터(PC)와 같이 호스트 프로세싱 시스템에 모두 포함된다. 바람직하게는 시스템(100)이 입력 디바이스(110), 프로세서(112), 메모리(114), 저장 디바이스(116), MPEG-2 인코더(120) 및 MPEG-2 디코더(125), 위성 I/O(130), 케이블 I/O(133), 네트워크 I/O(135), 오디오 I/O(137), 비디오 I/O(138) 및 전송기(139)를 포함하여 전기적으로 결합된 하드웨어 소자를 포함한다. 또한, 시스템(100)이 운영시스템(140), I/O 조작기(145), 스트림 라우터(150), 버퍼 생성기(160), 접속버퍼(165), 접속기(170), 다중버퍼(180) 및 멀티플렉서(190)를 포함하는 결합 소프트웨어 소자를 포함한다.
본 발명이 의도하는 범위에서 시스템(100) 소자를 일부 변형하는 것이 의도된다는 것은 당업자에게 자명할 것이다. 예를 들어, 주어진 프로세서 및 컴퓨터 성능 변화와 현재 기술진보가 이루어지고 있는 MPEG-2 인코더(120)와 MPEG-2 디코더(125)와 같은 하드웨어 소자는 소프트웨어로 구현될 수 있거나 또는 하드웨어와 소프트웨어의 조합으로써 구현될 수 있다. 유사하게, 멀티플렉서(185)와 같은 소프트웨어 소자가 하드웨어로 구현되거나 또는 하드웨어와 소프트웨어의 조합으로써 구현될 수도 있다. 또한, 다른 전산장치로의 접속이 네트워크 I/O(145)로만 도시되었지만, 유선, 무선, 모뎀 및/또는 기타 접속 또는 다른 전산장치로의 접속(근거리 통신망, 원거리 통신망 및 인터넷을 포함하여 이에 국한되지 않으며)이 사용될 수도 있다. 또 다른 실시예는 분산처리, 다중 사이트 표시, 정보전송, 제휴(collaboration), 원격정보 복원, 합병(merge) 및 관련 기능의 사용이 각각 의도된 것이다. 또한, 다양한 운영시스템 및 데이터 처리 시스템이 사용될 수 있지만, 적어도 ("IBM(International Business Machine)"사의 등록상표인) IBM 호환 컴퓨터 상에서 작동하는 ("Microsoft"사의 등록상표인)"윈도우95(Windows95)" 또는 "윈도우 NT(Windows NT)" 또는 UNIX 기반 운영시스템을 작동하는 컴퓨터가 바람직하고, 이하 논의에 대하서는 이것으로 가정한다. 입력 디바이스(110)는 키보드, 마우스 및/또는 음성인식을 포함하지만 이에 국한되지 않는 명령 및/또는 데이터를 입력하기 위한 임의의 수 및/또는 타입의 디바이스를 포함한다.
도 2의 블럭도는, 본 발명에 따른 접속기가 어떻게 도 1의 시스템(100) 내에서 써포트 어플리케이션(support application)으로서 바람직하게 작동하는 가를 기능상 더욱 상세히 나타낸다. 광범위하게 언급하면, 바람직하게는 시스템(100)이, 외부 소스 및/또는 저장 디바이스로부터 데이터 스트림을 수신하고, 필요에 따라서 데이터 스트림 상에 MPEG-2 인코딩을 수행하여, 다중화된 데이터 스트림을 저장(먼저 디코딩을 하거나 하지 않고서)하라는 사용자의 선택에 따라서 동작한다. 접속이 선택되는 경우에, 바람직하게는 시스템(100)이 현재 전송되는("구(old)") 데이터 스트림과 신규 데이터 스트림을 접속기로 라우트한다. 바람직하게는 이 접속기가 상기 데이터 스트림 쌍을 필요에 따라서 실시간에 변형하여, 다중화된 데이터 스트림에 부가되는 경우에는 신규 데이터 스트림이 디코더에 의해서 수신되고, 디코드되어 구 데이터 스트림에 이음매가 없이 부가되는 연속으로서 주어진다.
특히, 바람직하게는 I/O 조작기(145)의 사용자-인터페이스(145a)와 결합하여 입력 디바이스(110), 오디오 I/O(137) 및 비디오 I/O(138)를 사용하여 통상의 방법으로 사용자가 정보를 입력하고 출력을 수신한다. 또한, 사용자-인터페이스(145a)가 윈도우 운영시스템 사양 및 실정에 따라서 통상의 방법으로 제공된다. 사용자는 사용자-인터페이스(145a)를 통해서 I/O-인터페이스(203)에서 사용할 수 있는 것(즉, 수신된 것)들로부터 일정 수의 데이터 스트림 소스 및/또는 저장 디바이스(116)로부터 복원된 데이터 스트림을 선택한다. I/O 인터페이스(103)은 위성 인터페이스(130) 및 케이블 인터페이스(133)(즉, 위성 및 케이블 각각을 경유해서 전송된 데이터 스트림을조작하기 위한 송신기 확장카드 및/또는 내장 하드웨어 및/또는 소프트웨어), 네트워크 인터페이스(135), 오디오 인터페이스(137) 및 비디오 인터페이스(139)를 포함한다. 디폴트(default) 값 및/또는 시간에 따라서 및/또는 구동 스케쥴 선택의 발생에 따라서 데이터 스트림 소스 및 기타 옵션들이 사용자에 의해서 상호작용하여 선택될 수도 있다는 것은 당업자에게 자명할 것이다.
시스템(100)이 정상동작하는 동안(즉, 접속이 없을 때), 스트림 라우터(150)는 데이터 스트림의 타입에 따라서 선택되는 데이터 스트림을 라우트한다. 특히, 스트림 라우터는 이미 인코드된 데이터 스트림 소스를 I/O-인터페이스(103)로부터 버퍼 생성기(160)로 라우트한다. 또한, 스트림 라우터(150)는 저장 디바이스(116) 등으로부터 각각의 인코더(예를 들어, 인코더- 1 220 및 인코더-N 120 에 의해서)를 통해서 버퍼 생성기(160)로 인코드되지 않은 데이터 스트림을 라우트한다. 명백히 하기 위하여, 정상동작 동안에 버퍼 생성기(160)에 의해서 생성된 출력버퍼는 여기에서 다중버퍼(예를 들어, 다중버퍼-1 280)로서 참고된다. 다중버퍼를 생성한 후, 버퍼 생성기(160)는 다중버퍼를 대응 I/O 인터페이스로부터 수신된 데이터로 채우고, 또한 다중버퍼를 채우는 동시에 MPEG-2 사양 타이밍을 고려하여 데이터 준비 플래그를 설정한다. 각각의 개별 다중버퍼의 사이즈를 사용자가 선택적으로 결정하는 반면에, 전형적으로 다중버퍼 사이즈는 대략 64 킬로바이트에서 47 x 64 킬로바이트 범위일 것이므로, 적어도 300 패킷을 제공한다.
접속동작이 선택되는 경우에는, 스트림 라우터(150)도 선택된 구 데이터 스트림 및 신규 데이터 스트림을 데이터 스트림 타입에 따라서 라우트한다. 특히, 스트림 라우터(150)는 인코드된 데이터 스트림(다시, 전형적으로 I/O 인터페이스(203)로부터의)을 버퍼 생성기(160)에 직접 라우트하고, 인코드되지 않은 데이터 스트림(다시, 전형적으로 저장 디바이스(116), 오디오 I/O(137) 및 비디오 I/O(138)로부터의)을 사용가능한 인코더(즉, 인코더-1 220 내지 인코더-N 120)를 통해서 버퍼 생성기(160)로 정상동작에서와 같이 라우트한다. 버퍼 생성기는 또한 출력버퍼를 정상동작에서와 같이 생성한다. 그러나, 명백히 하기 위하여, 접속동작 동안에 버퍼 생성기(160)에 의해서 생성된 출력버퍼가 접속버퍼(예시적인 접속버퍼로서 접속버퍼-N(265) 및 접속버퍼-1(265a)가 표시된 바와 같이)로서 참조된다. 접속버퍼를 생성한 후, 버퍼 생성기(160)는 이 접속버퍼를 데이터 스트림 데이터로 채우고 접속기(예시적인 접속기로서 접속기-N(270) 및 접속기-1(270a)가 표시된 바와 같이)를 띄운다. 바람직하게는 접속기가, 호스트 어플리케이션 프로그램의 버퍼 생성기 어플리케이션 부분으로부터 호출된 라이브러리에 의해서 띄워진 C+ 라이브러리이다. 이 띄워진 접속기는 접속을 달성하고 값을 호스트 어플리케이션으로 되돌린다. 이 호스트 어플리케이션은 그 후 상태준비 플래그를 설정하기 전에 접속버퍼 내의 데이터를 가공할 수도 있다. 따라서 광범위하게 말하자면, 바람직하게는 접속기-N(270)이 불려지게 되어 데이터 스트림을 통해서 구 데이터 스트림과 신규 데이터 스트림 쌍으로부터의 데이터를 분해하도록 동작하고, 접속을 수행한 후 호스트 어플리케이션으로 파라미터를 되돌린다. 버퍼사 멀티플렉서(190)에 의해서 수신되기 대략 0.5 내지 1초 전에 호스트 어플리케이션이 접속버퍼-N265를 채우고, 이에 의해서 접속기-N(270)을 버퍼에 포함된 데이터 상에서 활동하게 하는 적어도 0.5초는 제공한다는 것에 주의하여야 한다.
정상동작 및 접속동작 동안, 멀티플렉서(190)는 출력버퍼 각각을 테스트하기 위한 데이터-준비 플래그 테스트를 통하여 계속 순환하고, 준비상황을 검출하면서 각각의 버퍼내용을 전송 및/또는 (사용자의 선택에 따라서 선택적으로) 다중버퍼 내용을 스트림 라우터(150)에 라우트한다. 스트림 라우터(150)는 전송기(139)로부터의 데이터를 수신하면서 수신된 데이터를 디코더(125), I/O 인터페이스 및/또는 저장 디바이스(116)로 라우트한다.
시스템(100)에 의해서 전송된 다중화된 데이터 스트림은 하나 이상의 재-방송국(예를 들어 재-방송국(291))에 의해서 수신되어 재-전송될 수 있거나, 또는 소비자 수신기(예를 들어 수신기(293) 및 수신기(295))에 의해서 직접 수신될 수 있다. 다중화된 데이터 스트림에 포함된 소자 데이터 스트림 각각은 MPEG-2 사양에 따라서 개별 "텔레비젼 채널"에 대한 데이터 소스로서 수신된다. 접속된 데이터 스트림 쌍(예를 들어, 현재 상업적으로 접속되고 있는 텔레비젼 프로그램)도 수신되어, 단일의 MPEG-2 인코드된 채널로서 기본적으로 명백하게 접속된다.
현재, 시스템(100)은 각 데이터 스트림 쌍을 접속하기 위해서 대략 5 ㎒의 평균 대역폭을 필요로 한다. 따라서, 200 ㎒ ("Intel"사의 등록상표인)펜티엄 프로세서를 구비하는 통상의 PC는 40개의 데이터 스트림을 동시에 지원할 수 있다. 그러나, 또 다른 시스템(100) 최적화 뿐만 아니라 프로세서, 후면판(backplane), 메모리, 저장 디바이스 및 시스템 소프트웨어에서 현재 개선중인 바와 같이 처리율이 향상된다. 또한, 시스템(100)은 적절한 동기화 소스를 제공함으로써 향상된 수의 데이터 스트림을 처리하기 위한 다른 시스템에 동기화될 수도 있다.
특정 수신기 하드웨어/소프트웨어 구성 및 설비는 특히 MPEG-2 사양에 의해서 커버되지 않는 조건에 관하여 상당히 변화할 수도 있다. 그러나, 각 수신기는 디코딩을 위한 완전한 하드웨어 및/또는 소프트웨어를 포함한다. 다중화된 데이터 스트림으로서 전송이 수신되기 때문에, 각 수신기는 디멀티플렉서(도시되지 않음)를 포함한다. 각 데이터 스트림은 다중화된 비디오 및 오디오 데이터도 포함하기 때문에, 각 수신기는 지원되는 수의 데이터 스트림 채널 각각에 대하여 소자 데이터 스트림 오디오-비디오 디멀티플렉싱 용량(도시되지 않음)도 포함한다. 또한, 각 수신기는 MPEG-2 인코드된 오디오 및 비디오 데이터를 디코딩하기 위한 (각 채널에 대한)디코더도 포함한다. 예를 들어, 비디오 디코더(293a) 및 오디오 디코더(293b)는 단일의 MPEG-2 인코드된 데이터 스트림에 대하여 필요한 디코더 쌍 등을 나타낸다. (각 버퍼의 사이즈 또는 선택적으로 각 버퍼가 수용할 수 있는 데이터량은 하나의 수신기에서 다른 것으로 변화될 수 있다.) 각 디코더는 디코딩 전에 각각의 디멀티플렉스된 비디오 또는 오디오 데이터를 수신하기 위한 입력버퍼(도시되지 않음)와, 디코드된 비디오 또는 오디오 데이터를 수신하여 오디오-비디오 표시로 재건하기 위한 (즉, 디스플레이 및 다른 디바이스로 출력하기 위한 재건) 대응 프레임 버퍼를 포함한다.
도 2를 참조하면, 도 3 및 도 4는 본 발명에 따른 바람직한 접속기 및 접속방법을 일반적으로 나타낸다. 명백히 하기 위하여, 이하 논의에서는 두 개의 데이터 스트림(구 데이터 스트림 및 신규 데이터 스트림)만이 처리를 위해서 시스템(100)에 부여되고, 이러한 처리는 이 두 개의 데이터 스트림의 접속을 포함한다고 가정한다. 따라서, 오로지 하나의 접속기인 접속기-N(270) 및 오로지 하나의 출력버퍼인 접속버퍼-N(265)가 논의될 것이다. 이하 논의의 관점에서 부가적인 출력버퍼 및 접속기 조합이 유사한 방법으로 바람직하게 작동할 것이라는 것은 당업자가 이해할 수 있을 것이다.
도 3의 블럭도에 도시된 바와 같이, 바람직하게는 접속기-N(270)가, 접속엔진(310), 순차 검색기(320), 프레임 검색기(330), 패킷 검색기(340), GOP 검색기(350), 패킷 이동기(360) 및 프레임 테이블(370)을 포함하는 결합소자를 포함한다. 광범위하게 말하자면, 바람직하게는 접속엔진(310)이 프레임 테이블(370)을 생성하고 채우며, 다른 접속기-N(270)의 작동을 초기화 및 사용한다. 바람직하게는 순차 검색기(320), 프레임 검색기(330), 패킷 검색기(340) 및 GOP 검색기(350)가 위치하여 각각의 순차, 프레임, 패킷 및 GOP 데이터를 MPEG-2 인코드된 데이터 스트림으로부터 복원한다. 바람직하게는 이음매없는 접속의 접속기-N(270)을 위하여 패킷 이동기(360)가 타이밍 불일치를 해결하고, 버퍼 오버플로우 조건을 결정하기 위해서 프레임 테이블(370)이 사용된다.
도 2 및 도 3을 참조하면, 도 4의 순서도는 본 발명에 따른 바람직한 접속방법을 나타낸다. 이미 논의된 바와 같이, 바람직하게는 호스트 어플리케이션으로부터의 호출에 의해서 접속이 초기화되거나 "개시(started)"된다. 접속버퍼-N(265)를 채우는 호스트 어플리케이션과 동일한 단위인 호스트 어플리케이션으로부터의 호출이, 접속기-N(270)을 초기화(즉, "활성화(activates)", "호출(call)" 또는 "예시(instantiates)")한다. 또한, 호출은 호스트 처리 시스템 내의 접속버퍼-N(265)의 위치(또는, 외부이면 접속버퍼의 외부위치)를 포함하고, 호스트 어플리케이션이 특정화된 수의 시간으로 접속버퍼-N(265)를 채우는 동시에 접속이 달성된다는 것을 나타낸다. 또한, 호스트 어플리케이션에 의해서 접속기-N(270)로 통과된 버퍼위치 파라미터는 버퍼위치를 나타내는 반면, 접속기-N(270)으로 통과된 이외의 파라미터는 접속기-N(270)이 구 데이터 스트림을 종료하는 "접속버퍼 채워짐"을 나타낸다. 또한, 구 데이터 스트림으로 채워진 마지막 접속버퍼를 접속버퍼-N(265)로 보내는 동시에, 호스트 어플리케이션은 접속버퍼-N(265)를 신규 데이터 스트림으로 "채워진 접속버퍼"로 접속버퍼-N(265)를 채우기 시작할 것이다. 바람직하게는 접속버퍼-N(265)의 사이즈 및 접속의 개시를 사용자가 선택할 수 있지만, 버퍼-N은 전형적으로 대략 300 킬로바이트의 데이터를 축적하고 접속의 개시는 버퍼의 개시후 대략 50 ㎳에 발생한다.
여기서의 기술적 관점에서, 데이터 스트림 소스 및/또는 호스트 어플리케이션도 접속기-N(270)의 처리 시스템으로부터 분리된 처리 시스템에 의해서 호스팅될 수 있다는 점, 및/또는 접속기-N(270)이 라이브러리 보다는 오히려 자립(stand-alone) 프로세스 또는 부-브로세스로서 구현될 수도 있다는 점은 당업자에게 이해될 수 있을 것이다. 그러나, 실시간에 접속을 완료하기 위한 완벽한 데이터 조작 요구로 인하여 단일의 처리 시스템 내에 완전히 집적화하는 것과 라이브러리를 사용하는 것이 바람직하다. 그러나, 라이브러리에 있어서와 같이 바람직하게는 이러한 프로세스 또는 부-프로세스의 다중화가 지원될 것이므로, 다중동시 접속동작이 제공될 것이다. 논의가 진행되면서 보다 명확해지는 바와 같이, 호스트 어플리케이션에 의해서 생성되고 채워지며, 필요에 따라서 접속기에 의해서 변형되는 단일 접속버퍼가 완벽한 작동을 위해서 유사하게 사용된다. 예를 들어, 다중버퍼(즉, 다중위치 포인터 및 불연속 데이터 위치)의 운영 및 버퍼복사(즉, 다중 접속기 입력버퍼로부터 개별 접속기 출력버퍼로의)를 회피하는 것은 접속을 수행하기 위한 처리 시스템 처리율 요구를 최소화하는데 기여한다.
도시된 바와 같이, 단계 405에서 접속기-N(270)은 프레임 테이블(도 3)을 생상하고 채우기 시작한다. 단계 410에서 접속기-N(270)은, 구 데이터 스트림의 전송이 접속전에 중단되는(이하, "구 데이터 스트림 접속(splice-out)지점" 또는 간략히 "접속(splice-out) 지점"으로 참조되는) 구 데이터 스트림내의 데이터 위치를 검색한다. 단계 420에서 접속기-N(270)은, 신규 데이터 스트림의 전송이 개시되는(이하, "신규 데이터 스트림 접속(splice-in)지점" 또는 간략히 "접속(splice-in)지점"으로 참조되는) 신규 데이터 스트림 내의 위치를 검색한다. 단계 430에서 접속기-N(270)은, 신규 데이터 스트림의 전송이 개시되는(이하, "실시간 전송개시 지점"으로 참조되는) 시간을 결정한다. 단계 440에서 접속기-N(270)은, 마지막 구 스트림 버퍼의 디코딩 개시와 동시에 수신기 디코더에 의해서 신규 데이터 스트림이 바람직하게 수신되도록 신규 데이터 스트림을 정렬하고, 단계 450에서 접속기-N(270)은, 디코더 버퍼 오버플로우 조건을 검출하여 수정한다.
접속을 완료한 후에, 바람직하게는 접속기-N(270)이 파라미터를 호출 어플리케이션(즉, 호출 어플리케이션의 버퍼 생성기 부-프로세스)으로 되돌린다. 그 후, 호출 어플리케이션은 접속버퍼-N(265) 내용을 가공한 후, 데이터-준비 플래그를 이미 논의된 바와 같이 설정한다. 그리고 나서, 접속기-N(270)은 PCR 불연속 패킷을 설정할 수 있다.
이하 논의에서 명백하게 되듯이, 접속기-N(270)은 전송전에 잠재적인 디코더 입력버퍼 오버플로우 조건발생을 검출하고 제거하기 위해서 접속을 통하여 프레임 테이블(370)을 사용하여, 오버플로우 조건이 전송후에 발생하지 않게된다. 버퍼 생성기(160)(도 2)가 접속기 버퍼(265)를 구 데이터 스트림으로부터의 대응 데이터로 채워진 후 신규 데이터 스트림으로부터의 대응 데이터로 채워짐에 따라서, 접속기(270)는 또한 동시에 단계 410 내지 450을 수행한다. 예를 들어, 접속버퍼-N(265)이 구 데이터 스트림의 마지막 부분을 포함하는 동안, 접속기-N(270)은 구 데이터 스트림 접속(splice-out)지점을 검색한다. 또한, 접속버퍼-N(265)가 신규 데이터 스트림의 제 1 부분을 포함하는 경우 등에는, 접속기-N(270)이 신규 데이터 스트림 접속(splice-in)지점을 검색한다. 명백히 하기 위하여, 프레임 테이블(370)을 생성하고 채우는 것은 디코더 입력버퍼 오버플로우를 검출하고 제거하는(단계 450) 것과 관련된 대응 논의에서 예약될 것이다. 또한 명백히 하기 위하여, 단지 오디오 접속만이 발생하는 경우에 주의하여 바람직한 비디오 접속이 먼저 고려될 것이다. 바람직한 오디오 접속은 그 후 개별적으로 설명될 것이다.
도 5는 구 데이터 스트림으로 채워진 마지막 접속버퍼의 수신과 동시에 바람직한 접속기-N(270)가 어떻게 구 데이터 스트림 비디오 접속(splice-out)지점을 검색하는 가를 나타낸다. 도시된 바와 같이, 바람직하게는 접속기-N(270)이 다중 동작모드를 제공하며, 그 각각은 호출 어플리케이션에 의해서 특정화 될 수 있다. "삽입(Insertion)" 동작모드에서는, 예를 들어, 상업 메시지가 현재 진행중인 프로그래밍(예를 들어, 영화)으로 삽입될 경우 구 데이터 스트림으로의 나중 접속을 대기하는 방식으로, 접속기-N(270)이 접속을 수행한다. 상업 메시지를 수반하며 영화가 계속하여 재생되기 때문에, 영화 데이터 스트림 전송을 차단하기에 바람직한 지점은, 차단지점을 뒤따라 곧바로 이후 영화전송을 재개하는 지점, 즉 "접속(splice-out)지점"이 될 것이다. 대조적으로, "접속온리(splice-only) 모드"에서는, 접속기-N(270)이 구 데이터 스트림의 이후 연속에 대하여 고려하지 않고 고립된 접속을 수행한다. 전형적으로 이러한 접속온리 모드는 개별적으로 인코드되고, 미리 기록된 영화에서 궁극적으로 또는 생방송 중 등의 상황에서 선택될 것이다. 또한, 연속영화와는 달리, 비디오 데이터의 "여분(extra)" 프레임을 포함하는 것처럼 생방송으로 채워진 마지막 접속버퍼를 사용자가 선택할 수 있어, 초기 접속지점(즉, 여분의 프레임 이전)을 검색하는 것이 특히 바람직하다.
도시된 바와 같이, 단계 510에서 삽입모드가 선택되면, 접속기-N(270)은 단계 520에서 순차헤더를 개시하기 바로 직전에 구 데이터 스트림 접속(splice-out)지점을 검색한다. 그 대신 단계 510에서 접속온리 모드가 선택되면, 단계 530에서 접속기-N(270)은 순차헤더, GOP 헤더, I-프레임 또는 P-프레임의 최초 발생 바로 직전에 구 데이터 스트림 접속(splice-out)지점을 검색한다. 다음에, 단계 540에서 접속기-N(270)은 전송을 위해서 접속버퍼-N(265) 내의 바이트를 접속지점 이전의 바이트와 같이 설정한다. 다시 논의되는 바와 같이, 다음에 접속기-N(270)은 구 데이터 스트림 오디오 접속(splice-out)지점(도시되지 않음)을 검색하기 위해서 구 데이터 스트림 접속(splice-out)지점을 이용한다.
작동상, 순차헤더(320), GOP 검색기(350) 또는 프레임 검색기(330)을 포함하는 데이터-타입 검색기들 각각을 사용하여 접속버퍼-N(265)에 포함된 데이터를 통해서 분석함으로써, 바람직하게는 접속기-N(270)이 순차헤더, GOP 헤더, I-프레임 또는 P-프레임을 검색한다. 각각의 데이터-타입 검색기는 이하 좀더 상세히 논의되는 바와 같이, MPEG-2 사양에 따라서 개별 데이터 타입을 위치시키는 상태장비(state machine)를 포함한다. 또한, 접속기-N(270)은 접속지점(검색동안) 직전의 접속버퍼-N(265) 내에 포함된 데이터 바이트의 수를 연속하고, 이 데이터 바이트의 수를 호스트 어플리케이션이 멀티플렉서에 보내야하는 접속버퍼-N(265) 내의 데이터 바이트 수로서 호스트 어플리케이션으로 되돌림으로써 전송용 바이트를 설정한다.
도 3을 참조하면 도 6 내지 도 8은 바람직한 접속기가 어떻게 신규 데이터 스트림에서 비디오 접속(splice-in)지점을 검색하는 가를 나타낸다. 논의된 바와 같이, 호스트 어플리케이션은 (접속기-N(270)을호출하는 경우에) 구 데이터 스트림의 종점을 포함하는 접속버퍼 채워짐을 나타낸다. 광범위하게 말하자면, 접속기-N(270)은 다시 신규 데이터 스트림 접속지점을 결정하기 위하여 이 데이터 스트림을 통해서 접속버퍼-N(265)에 포함된 데이터를 분석할 것이다. 접속기-N(270) 동작의 상세한 것은 MPEG-2 사양의 특정한 면을 참조하면 보다 쉽게 이해될 것이다.
MPEG-2 사양은 연속적인 비디오 스트림의 인코딩을 일련의 순차로서 대비한다. 또한, 각각의 순차는 화상그룹("GOP")로 분할되고, 각각의 GOP는 일련의 인코드된 비디오 프레임을 포함한다. 각각의 순차는 순차헤더를 포함하고, 각각의 GOP는 GOP 헤더를 포함하고, 각각의 프레임은 프레임 헤더를 포함한다. 다시 논의되는 바와 같이, 각각의 순차는 또한 적어도 10개의 프로그램 클럭기준("PCR")을 포함한다. 또한, 각각의 데이터 스트림은, 반드시 연속된 일련의 패킷은 아니지만, 패킷헤더를 갖는 각각의 패킷에 의해서 연속적으로 전송된다. 또한, 각각의 MPEG-2 인코드된 비디오 프레임은 비디오 데이터 및 프레임 타입 필드(즉, I, B 또는 P 프레임) 이외에도 타이밍 및 관련 순서정보를 포함한다. 프레임 타이밍 정보는 (각각의 프레임에 대하여) 디코드 타임 스탬프("DTS") 필드(수신된 프레임이 디코드될 타임을 나타내는)와, 대응 표시타임 스탬프("PTS") 필드(디코드된 프레임이 디스플레이에 표시될 타임을 나타내는)를 포함한다. 프레임의 상대적인 순서정보는 (각각의 프레임에 대하여) 임시의 기준필드(동일 GOP에서 다른 프레임들과 비교하여 프레임이 디스플레이될 순서를 나타내는)를 포함한다.
그러나, 데이터 스트림 내에 포함된 다량의 식별정보에도 불구하고, MPEG-2 인코딩은 단일 인코드된 데이터 스트림에 관한 정보만을 종종 쉽게 받아들일 수 없는 방식으로 대비한다. 예를 들어, MPEG-2 사양은 위 정보의 다양한 순서, GOP 간의 이러한 정보분포 및 패킷에 대하여도 대비한다. 특히, 데이터 스트림 내에서는 (제 1 GOP에 대한)GOP 헤더에 제 1 순차헤더가 뒤따라야만 하고, 그 후 (그 GOP에 포함된 최초의 프레임에 대한)프레임 헤더, 최초 프레임에 대한 DTS 및 PTS 쌍이 기본적으로 프레임 헤더 이전의 임의의 곳에 위치되어야 한다. 명백하게 되는 바와 같이, 바람직하게는 접속지점을 검색하는 것과 구 데이터 스트림으로 신규 데이터 스트림을 실시간 정렬하는데 도움이 되기 위해서, 이 DTS 및 PTS 쌍이 접속기-N(270)에 의해서 사용된다.
도 6으로 돌아가서, 바람직하게는 먼저 신규 데이터 스트림의 최초 비디오 프레임에 대한 DTS 및 PTS를 검색함으로써 접속기-N(270)이 접속을 수행한다. 단계 610에서 신규 스트림의 최초 순차헤더를 검색하고, 단계 620에서 (최초 비디오 프레임에 대한 프레임 헤더인)최초 프레임 헤더 전에 마지막 DTS를 검색하여 저장하고, 단계 630에서 이 DTS에 대응하는 PTS를 검색하여 저장함으로써, 접속기-N(270)이 이 DTS 및 PTS 쌍을 우선 검색한다. 다음에, 단계 640에서 신규 스트림의 최초 표시된 프레임이 I-프레임일 것이라는 것을 접속기-N(270)이 확신한다. 특히, 신규 데이터 스트림의 최초 GOP가 열리면, 접속기-N(270)은 이 GOP를 닫는다. 마지막으로, 단계 650에서 접속기-N(270)이 오디오 접속(splice-in)지점을 검색한다.(명백히 하기 위하여, 오디오 접속(splice-in 및 splice-out)이 이하의 비디오에 관한 완성된 논의에서 논의될 것이다.)
작동상, 바람직하게는 접속기-N(270)이 순차 검색기(320)(도 3)를 초기화함으로써 순차헤더를 검색한다(즉, 단계 610). 바람직하게는 순차 검색기(320)가, 순차헤더 코드의 제 1 발생에 대하여 접속버퍼-N(265)에 포함된 신규 데이터 스트림 데이터를 분석하는 상태장비이다. 각각의 순차헤더 코드는 MPEG-2 사양에 의해서 숫자열 "000001B3 Hex"로서 정의된다. 그리고, 접속엔진은 유사하게 이전 DTS 및 PTS(즉, 신규 데이터 스트림의 최초 프레임에 대한 DTS 및 PTS)에 대한 신규 데이터 스트림 데이터를 분석한다. 본 발명의 기술적 관점에서 당업자라면, 접속(splice-in)지점이 신규 데이터 스트림의 최초 프레임 이외의 것으로서 대체적으로 선택될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어, 완전한 상업 메시지의 후반부분만이 재생되어야 바람직한 곳에서는 이러한 대체적 프레임이 요구될 것이다. 이러한 경우에는, 사용자가 바람직한 (접속기-N(270)이 그로부터 접속(splice-in)지점도 결정하는) "총 개시시간" 을 특정하거나 또는 접속(splice-in)지점을 직접 특정할 수도 있다.
도 7 및 도 8은 접속기-N(270)이 어떻게 신규 데이터 스트림의 개방된 제 1 GOP를 바람직하게 닫는가(도 6의 단계 540)를 나타낸다.
전형적으로 인코딩 사양, 특히 MPEG-2는 각각의 GOP가 비디오 이미지 또는 프레임(즉, I-프레임)을 재생성하기에 충분한 데이터를 자체로 포함하는 프레임으로 개시되어야 한다는 것을 요구하지 않는다. 비디오 이미지를 재생성하기 위해서 이전 GOP로부터의 프레임을 요구하는 제 1 프레임을 갖는 GOP는 통상 "오픈(open)" GOP로 참조된다. 예를 들어, 신규 데이터 스트림이 접속전에("끊긴 링크(broken link)") 편집되고 저장되는 곳에서 오픈 GOP가 발생한다. 반면, 적절한 인코딩을 가정하면, 대응 I-프레임을 포함하는 GOP에 의해서 오픈 GOP가 항상 선행될 것이고 따라서 오픈 GOP의 독립 프레임이 재생성되어, 신규 데이터 스트림의 최초 GOP에 대하여 이러한 I-프레임이 존재하지 않는다. 따라서, 접속기-N(270)은 신규 데이터 스트림의 최초 표시된 프레임이 I-프레임이라는 것을 가정한다.
오픈 GOP를 "닫기(closing)" 위해서 접속기-N(270)에 의해서 사용되는 일 방법은, 오픈 GOP의 최초 프레임이 의존하는 프레임들과 최초 프레임 자체를 디코딩하는 것을 포함한다. 다음에, 이 최초 프레임은 I-프레임으로서 다시 인코드된다. 불행하게도, 이러한 방법은 지정된 하드웨어를 부가하거나 및/또는 실시간 프로세서 기반의 시스템 처리율의 측면에서 비용이 비싸다. 따라서, GOP를 닫기 위한 이 대안적인 방법은 절대적인 정밀도가 요구되는 어플리케이션에 적응하는 옵션으로서만 제공된다.
그러나, 기존 오픈 GOP의 잔여 프레임에 최소한의 변형만으로 선두 독립 프레임을 재구성하는 것보다는 오히려 삭제함으로써 오픈 GOP가 닫혀질 수 있다는 것이 발견되었다. 삭제된 비디오 프레임에 의해서 표현된 이미지가 손실되고 신규 데이터 스트림의 길이가 영향을 받는 동안에, GOP를 닫기위해 요구되는 최소 처리시간의 측면에서 전형적인 66 ㎳의 손실은 수용될 수 있다고 알려졌다(신규 데이터 스트림의 선두 오픈 GOP 이외의 모든 GOP는, 도 6 및 도 7에 도시된 바와 같이 이 바람직한 방법에 따라서 변형되지 않은 상태를 유지한다.).
도 7로 돌아가서, 단계 610에서 신규 데이터 스트림의 최초 GOP가 오픈 GOP인 경우에는(즉, GOP의 최초 프레임이 I-프레임 이외의 것임), 먼저 단계 720에서 접속기-N(270)이 모든 선두의 I-프레임 아닌 것을 삭제한다. 다음에, 단계 730에서 접속기-N(270)이 GOP의 각 잔여 프레임에 대한 임시의 기준을 수정한다. 마지막으로, 단계 740에서 접속기-N(270)은 GOP의 최초 I-프레임의 DTS를 단계 620에서 삭제된 프레임들의 최대 DTS로 대체한다.
도 8은 임시의 기준이 어떻게 본 발명에 따라서 대체되는가를 나타내는 순서도이다. 도시된 바와 같이, 단계 810에서 마지막 삭제된 프레임 이후에 더 이상의 프레임이 GOP에 남게되는 경우에는, 단계 820에서 접속기-N(270)이 먼저 GOP 내의 다음 프레임 헤더(지금 "현재(current)"의 프레임을 지시하는)를 검색한다. 다음에, 단계 830에서 접속기-N(270)은 현재 프레임에 대한 대응 임시의 기준을 검색한다. 마지막으로, 단계 840에서 접속기-N(270)은 이 임시의 기준을 임시의 기준에서 삭제된 프레임의 수를 감산한 값으로 대체하고 단계 710으로 되돌아간다.
작동상, 바람직하게는 접속기-N(270)이 프레임 검색기(330)을 초기화함으로써 다음 프레임을 검색한다. 바람직하게는 프레임 검색기(330)이, 프레임 헤더의 다음 발생을 위해서 접속버퍼-N(265)에 포함된 신규 데이터 스트림 데이터를 분석하는 상태장비이다. 각각의 프레임 헤더는 MPEG-2 사양에 의해서 숫자열 "00000100 Hex"로서 정의된다.
예를 들어, 이하의 오픈 GOP가 도 7 및 도 8에 의해서 도시된 바람직한 방법에 따라서 닫혀질 것이다.
임 시 기 준 : 2 0 1 5 3 4
프레임 타입 : I B B P B B
DTS :-1 0 1 2 3 4
먼저, I-프레임 및 GOP에서 I-프레임을 따르는 두 개의 B-프레임을 남기며 두 개의 선두 B-프레임(즉, 임시기준 번호 0 및 1)이 삭제된다.
임 시 기 준 : 2 5 3 4
프레임 타입 : I P B B
DTS :-1 2 3 4
다음에, 최초 삭제된 프레임에 대한 임시기준으로 시작하여 잔여 프레임들에 대한 임시기준이 순차적으로 교체된다.
임 시 기 준 : 0 3 1 2
프레임 타입 : I P B B
DTS :-3 0 1 2
마지막으로, 선두 I-프레임의 DTS는 삭제된 프레임의 최고 DTS로 대체된다.
임 시 기 준 : 0 3 1 2
프레임 타입 : I P B B
DTS :-1 0 1 2
도 9a 내지 도 10은 접속(splice-in)지점을 검색한 후에 본 발명에 따른 바람직한 접속기가 어떻게 신규 데이터 스트림(즉, 도 4의 단계 420)에 대한 신규 스트림 실시간 전송 개시시간을 검색하는가를 나타낸다. 특정의 관측된 MPEG-2 사양 다이나믹스를 간략히 검토하는 것도, 이음매없는 접속이 본 발명의 바람직한 실시예에 따라서 어떻게 제공되는가를 더욱 잘 이해하는 데에 도움이 될 것이다.
도 9a 그래프는 신규 MPEG-2 인코드된 데이터 스트림이 예를 들어, MPEG-2 사양에 의해서 그려진 상황하에서 소비자 수신기(즉, 접속이 없는 경우에)에 의해서 어떻게 수신되고 디코드되는가를 나타낸다. 이 그래프는 디코더 입력버퍼에 의해서 수평축을 따라서 좌에서 우로 증가하는 시간에 대하여 증가하는 수직위치로서 데이터의 양을 표시한다. 경사진 커브부(910 내지 910d)에 의해서 지시된 ㄴ 시간주기 동안에, 데이터가 디코더 입력버퍼에 의해서 수신되어, 수직 커브부(920 내지 920d)에 의해서 표시된 시간에 디코딩이 발생한다.
도시된 바와 같이, 시간(t1)에서 신규 데이터 스트림의 초기수신과 시간(t4)에서의 (프레임 DTS에 따른)제 1 프레임의 디코딩 사이에서 지연이 발생한다. 시간(t2)에서 제 1프레임의 수신과 (프레임 DTS에 따른)제 1프레임의 디코딩 사이의 지연이 최초 프레임 내에서 데이터 필드에 의해 주어지는 동안, 데이터 스트림의 수신과 최초 프레임의 디코딩 사이의 실제 시간이 또한 시간(t1)에서 시간(t2) 및 시간(t3)에서 시간(t4) 각각에서의 초기 순차헤더의 수신과 디코딩을 포함한다는 것도 주의하여야 한다.
또한, 도 9b는, 통상 롤오버(rollover)로 참조되는 비디오 가공품을 제공하지 않고 동영상 비디오를 디스플레이하기 위해서, 일정한 공지의 지연이 하나의 비디오 프레임에 대한 스캔타임과 동등한 제 1프레임에 대한 디스플레이 개시와 다음 프레임에 대한 디스플레이 개시 사이에 발생하여야만 한다는 것을 나타낸다. 예를 들어, NTSC 인코딩에 있어서 프레임간 지연은 대략 33 ㎳이다. 따라서, 전송 대 디코딩 지연(즉, 수신 대 디코딩 지연)을 고려하고 프레임간 디스플레이 지연 정도의 신규 스트림의 디스플레이를 확신하는 신뢰성있는 타이밍 기준을 제공함으로써, 이음매없는 접속이 달성된다는 것을 알 수 있다.
도 10은 바람직한 접속기가 어떻게 신규 데이터 스트림 실시간 전송개시 시간(도 4의 단계 420)을 결정하는가를 나타내는 순서도이다. 광범위하게 말하자면, 단계 1010 및 1020은 신규 스트림에만 관련한 값을 제공하는 반면에, 단계 1030 내지 1050은 구 데이터 스트림에 대응하는 신규 데이터 스트림 전송시간을 구하기 위해서 이 값들을 사용한다. 특히, 단계 1010에서 접속기-N(270)은 신규 데이터 스트림의 최초 패킷에 대한 PCR("PCR(신규)")을 복원한다. 단계 1020에서 접속기-N(270)은 신규 데이터 스트림의 최초 순차헤더에 대한 전송시간과 신규 스트림의 최초 프레임의 디코딩 타임 스탬프("DTS(신규)") 사이의 시간차("델타(신규)")를 아래의 방정식과 같이 계산한다.
델타(신규) = DTS(신규) - PCR(신규)
단계 1030에서 접속기-N(270)은 구 데이터 스트림의 마지막 프레임의 디코드 타임 스탬프("DTS(구)")에 대하여 접속버퍼-N(265)에 포함된 구 데이터를 분석한다. 단계 1040에서 접속기-N(270)은, 단계 1030에서 알려진 DTS(구)와 프레임간 지연(이하 논의에서는 "갭(gap)"으로 참조되기도 함)의 합으로써 신규 데이터 스트림에 대한 연속 디스플레이 디코딩 타임 스탬프("DTS(연속)")를 계산한다.
DTS(연속) = DTS(구) + 프레임간 지연
NTSC에 대하여는 위 방정식이 아래와 같이 된다.
DTS(연속) = DTS(구) + 1001/30,000 sec
마지막으로, 단계 1050에서 접속기-N(270)은 단계 1040에서 결정된 연속지연 DTS와 전송지연 또는 단계 102에서 알려진 델타와의 차이로서 실시간 신규 스트림 PCR("PCR(실시간 신규)")를 계산한다.
PCR(실시간 신규) = DTS(연속) - 델타(신규)
도 11은 예를 들어 디코더 입력버퍼 내용으로, 신규 데이터 스트림 실시간 전송개시 시간을 결정하기 위해서 도 10에 도시된 바람직한 방법에 의해서 달성된 결과를 나타내는 그래프이다. 명백히 하기 위해서, 구 데이터 스트림(1101) 및 잠재적인 신규 데이터 스트림 변화(1102a 내지 1102c)가 그래프의 상부와 하부에 각각 구별되어 도시되었다. 도시된 바와 같이, 상부 그래프 및 하부 그래프 각각은 수평축 상에 좌에서부터 우로 증가하는 방향으로 시간의 경로를 나타내고, 수직방향으로 증가하는 입력버퍼 내용을 나타내고 있다(변형되지 않은 단일 MPEG-2 인코드된 데이터 스트림 그래프인 도 8a에서와 같이). 또한, DTS 값에 다른 디코딩이 구 데이터 스트림(1101)에 대하여 수직 커브부(1110 및 1120a 내지 1120c)로 주어지고, 디코딩 사이에 데이터 스트림 데이터를 수신하는 동안 잠재적인 신규 데이터 스트림 변화(1102a 내지 1102c)가 예를 들어, 구 데이터 스트림(1101)에 대한 커브부(1112, 1113)에 의해서 주어진다. 그러나, 바람직한 접속기에 따르면 신규 데이터 스트림 및 구 데이터 스트림의 도시된 부분이 아직 디코더 입력버퍼에 의해서 전송되거나 또는 수신되지 않았다는 것에 주의하여야 한다. 오히려, 그래프 데이타는 오로지 도식적 목적으로 제공된다.
도시된 바와 같이, 구 스트림(프레임간 지연 또는 갭을 더한)의 마지막 DTS 값 및 신규 스트림의 최초 DTS와 관련하여 실시간 신규 스트림 PCR을 결정하는 것은 먼저 이 데이터 스트림 쌍을 정렬하는 기능을 한다. 선택적으로, 실시간 신규 스트림 PCR은 신규 스트림의 최초 프레임이 구 스트림(1103)의 마지막 스트림을 디코딩하고 대략 33 ㎳(1001/30 ㎳) 후에 (NTSC에 대하여)디코드되게 할 것이다. 유사하게, 신규 스트림의 최초 PTS도 실시간 신규 스트림 PCR에 따라서 결정될 것이다. 따라서, NTSC 인코딩에 대하여서, 신규 데이터 스트림의 표시 및 디스플레이가 구 스트림의 마지막 프레임이 디스플레이되고 대략 33 ㎳ 후에 시작될 것이다. 따라서, 신규 데이터 스트림은 이러한 시각적 가공물을 롤오버로서 야기시키지 않고도 디스플레이를 위해서 이음매가 없이 디코드되고 표시된다.
신규 데이터 스트림의 최초 순차헤더를 검색하는 순차 검색기(320)(도 3)을 띄움으로써 접속기-N(270)은 프레임간 갭(1103)을 결정한다. 그리고 나서, 접속엔진(310)은 MPEG-2 사양에 따라서 순차헤더 내에 포함된 프레임 비율을 검색하고 갭(1103)을 아래와 같이 계산한다.
1/(프레임 비율 코드에 의해서 주어진 프레임 비율)
MPEG-2 사양에 따른 프레임 비율 코드는 아래의 "프레임 비율 코드 대 프레임 비율값 변환표"로 주어진다.
프레임 비율 코드 프레임 비율 값
0 금지됨
1 24 000 + 1001 (23,976)
10 24
11 25
100 30 000/1001(29.97)
101 30
110 50
111 60 000 + 1001 (59.94)
1000 60
.... 예약됨
1111 예약됨
또한, 접속기-N(270)이 신규 데이터 스트림의 최초 프레임 전송과 디코딩 사이의 실제 또는 "실시간" 지연에 따른 실시간 신규 스트림 PCR을 결정한다는 것도 주의하여야 한다. 따라서, 신규 데이터 스트림 인코딩에 따른 디코더에 의해서 수신을 위해 모든 신규 데이터 스트림 데이터가 전송된다(즉, MPEG-2로 그려진 전송 및 수신에서와 마찬가지로 접속이 없는 경우). 논의된 바와 같이 적절한 MPEG-2 인코딩은 적절한 데이터 흐름뿐만 아니라 적절한 디코딩 및 표시를 보장하기 때문에, 데이터 스트림부 관계를 보존하는 것이 특히 중요하다. 선택적으로, 다른 특징들중에서 MPEG-2 인코딩을 고수하는 것은 데이터 스트림 데이터가 디코더 버퍼가 (데이터 스트림이 적절히 인코드되었다는 가정하에) 오버플로우 또는 언더플로우 되지않게 하는 것을 보장하여야 한다. 따라서, 인코딩 중에 발생한 데이터부 관계의 변형을 회피함으로써, 바람직한 접속기는 접속이 완료된 후 이러한 변형의 결과로서 발생할 지도 모르는 에러를 수정할 필요를 회피한다. 오히려, 적어도 바람직한 접속기에 관하여서는 신규 데이터 스트림이 접속을 따를는 그 인코딩에 따라서 연속하여 디코드되고 표시될 것이다.
그러나, 불행하게도 도 11은 또한 구 데이터 스트림의 디코딩을 완료하기전 디코더 입력버퍼의 신규 데이터 스트림 데이터 존재가 아직도 의문이다. 먼저, 신규 데이터 스트림 데이터의 디코더 입력버퍼 수신 개시는 구 데이터 스트림 데이터로 채워진 마지막 버퍼의 디코딩 이전 또는 이후에 발생할 수 있다. 둘째로, 신규 데이터 스트림 데이터는 디코더 입력버퍼가 오버플로우되기에 충분하다. 설상가상으로, 이러한 오버플로우는 구 데이터 스트림의 마지막 프레임을 디코딩하기 전 시간의 다양한 지점에서 발생할 수 있다.
도시된 바와 같이, 구 데이터 스트림(1101)은 디코더 입력버퍼에 의해서 시간(t2)까지 수신될 것이다. 그리고, 시간(t2)에서 시간(t4)까지, 디코더 입력버퍼의 모든 잔여 구 데이터 스트림 데이터(즉, "구 데이터 스트림의 마지막 버퍼")는 모든 잔여 구 데이터 스트림 데이터(디코더에 의해서 수신된)가 디코드될 때까지 간단하게 디코드될 것이다. 첫번째 문제점(즉, 신규 데이터 스트림의 개시와 구 데이터 스트림의 마지막 버퍼의 개시가 정렬되지 않음)은 잠재적인 신규 데이터 스트림(1102a)에 관하여는 존재하지 않는다. 그러나, 신규 데이터 스트림의 초기수신이, 시간(t2) 전에 발생하는 잠재적인 신규 데이터 스트림(1102b)(즉, "초기 데이터 스트림")에 의해서 주어진 바와 같이 초기에 발생할 것이다. 불행하게도, 초기 데이터 스트림 데이터가 존재한다는 것은 오버플로우(현재 진행중인 구 데이터 스트림 데이터의 수신과 관련하여)를 야기시킬 뿐만 아니라, 또한 동일 채널상의 다중 데이터 스트림의 병렬 전송 및 수신이 MPEG-2 사양을 침범한다. 또한, 잠재적인 신규 데이터 스트림(1102c)(즉, "최근 데이터 스트림")은 시간(t2) 후 특정시간의 발생함으로써 구 데이터 스트림(1101)과 관련하여 디코딩, 언더플로우가 발생할 수 있다는 문제점이 있다.
도 12는 본 발명에 따른 바람직한 접속기가 어떻게 신규 데이터 스트림 데이터의 디코더 입력버퍼 수신 개시와 구 데이터 스트림의 마지막 버퍼 개시를 바람직하게 정렬하는가를 나타내는 순서도이다. 광범위하게 말하자면, 신규 데이터 스트림이 초기 데이터 스트림 타입(즉, 도 11의 커브(1102b))인 경우에는, 접속기-N(270)이 신규 데이터 스트림 데이터의 전송(등가적으로, 디코더에 의한 수신을 지연시킨다)을 지연시킨다. 대신에 신규 데이터 스트림이 최근의 스트림 타입(즉, 도 11의 커브(1102c))인 경우에는, 접속기-N(270)이 신규 데이터 스트림 데이터의 전송(등가적으로, 디코더에 의한 수신을 가속시킨다)을 가속시킨다. 특히, 바람직하게는 접속기-N(270)이 신규 데이터 스트림 전송개시 전에 널(null) 패킷을 부가함으로써 신규 데이터 스트림 데이터를 지연시키거나, 또는 데이터 스트림으로 인코드된 널 패킷을 삭제함으로써 신규 데이터 스트림을 지연시킨다. 또한, 이하 설명되는 바와 같이, 바람직하게는 접속기-N(270)이 접속동안에 이후에 사용을 위해서 위의 부가된/삭제된 널 패킷의 총 수를 저장한다.
도시된 바와 같이, 단계 1210에서 접속기-N(270)은 합산 변수("널-카운트(null-count)")를 초기화하고, 단계 1215에서 접속기-N(270)이 구 데이터 스트림의 전송종점을 검색한다. 단계 1220에서 실시간 신규 데이터 스트림 PCR이 구 스트림의 마지막 패킷이 전송되는 시간("PCRold")보다 작다면, 전송기-N(270)은 신규 데이터 스트림의 개시에 충분한 널 패킷의 수를 결정하여, 실시간 신규 데이터 스트림 PCR이 PCRold와 같게 되므로 이에 대응하여 단계 1240에서 널-카운트를 갱신한다. 대신에 단계 1250에서 신규 데이터 스트림이 늦게 되면, 접속기-N(270)은 신규 데이터 스트림 개시의 주변에 충분한 수의 널 패킷을 삭제하여 실시간 신규 데이터 스트림 PCR이 단계 1260에서 PCRold와 동일하게 되어, 이에 대응하여 단계 1270에서 널-카운트를 갱신한다.
그러나, 바람직하게는 접속기-N(270)이 라이브러리 함수이므로, 접속기-N(270)이 접속버퍼(265)의 총 사이즈를 인식하지 못한다. 따라서, 접속기-N(270)이 접속버퍼-N(265)에 저장된 데이터 스트림 데이터(따라서 접속버퍼 사이즈가 더 작을것이 요구됨)로부터 널 패킷을 안전하게 제거할 수 있는 동안, 부가적인 널 패킷이 더해진 데이터 스트림 데이터가 접속버퍼(265)의 사이즈를 초과할 수도 있다. 따라서, 접속기-N(270)은, 접속버퍼-N(265)에 저장된 데이터의 전송전에 다수의 널 패킷을 부가하라는 명령과 함께 호스트 어플리케이션으로 널-카운트 값을 되돌림으로써 널 패킷을 더한다. 본 논의의 관점에서 당업자라면, 본 발명에 따른 접속기 및 완전한 어플리케이션으로서의 기능이 정적 또는 동적 접속버퍼 사이즈를 특정하여 접속기가 널 패킷을 접속버퍼에 직접 더할 수 있다는 것을 이해할 수 있다.
신규 데이터 스트림으로부터 널 패킷을더하거나 빼는 것은 신규 데이터 스트림의 인코딩 특성을 유지하는 것과는 대조적인 반면, 특히 필수적인 PCR 값이 이미 알려져 있고 필수적인 PCRold는 이전의 접속(splice-in)지점 또는 전송개시로부터 패킷을 카운팅함으로써 미리 알 수 있으므로, 이러한 변형은 상대적으로 적은 양의 처리 시스템 처리율을 요구한다. 또한, 특히 신규 데이터 스트림으로부터 널 패킷을 삭제하는 것이 입력버퍼에 의해서 수신될 데이터를 좀 더 빠르게 하고 오버플로우의 결과를 낳기도 하는 반면에, 이하 논의되는 바와 같이 정렬중 데이터 스트림 변형에 대한 보상이 접속의 완료 전에 이루어 질 것이다.
도 13a 및 도 13b는 본 발명에 따른 바람직한 접속기가 어떻게 신규 데이터 스트림으로부터 널 패킷을 바람직하게 삭제하는가를 나타낸다. 도시된 바와 같이, 접속버퍼-N(265)(도 2)은 순차적으로 순서화된 소자 데이터 패킷으로서의 데이터 스트림 데이터로 채워진다. 이러한 배열은 접속기-N(270)이 패킷 레벨에서 더 이상의 가공 또는 재구성을 하지 않고도 데이터 스트림 데이터를 액세스, 분석 및/또는 가공하는 것을 허용한다(즉, 순차, GOP, 프레임 또는 다른 레벨의 세분성 등의 다른 구성의 선택과 반대로).
접속기-N(270)은 각각의 잔여 데이터 패킷을 접속버퍼-N(265)의 다음 신규 스트림 위치로 복사함으로써 데이터 패킷을 삭제한다. 예를 들어, 도 13a는 접속버퍼-N(265)에 포함된 널 패킷을 나타낸다. 접속기-N(270)은 신규 데이터 스트림내의 각각의 잔여 패킷을 이전(즉, 시간내에 또는 등가적으로 낮은 번호인) 위치로 복사함으로써 위치(2)에 포함된 널 패킷을 삭제하고, 이에 의해서 위치(2)에 포함된 널 패킷을 겹쳐 쓰게되어 도 13b에 도시된 바와 같이 변형된 접속버퍼-N(265)의 결과를 낳는다(데이터 스트림의 각각의 순차가 전형적으로 적어도 10 퍼센트 이상의 널 패킷을 포함할 것이기 때문에, 삭제될 널 패킷이 존재한다는 것이 검색되지 않았고 문제가 될 것 같지는 않다).
여기에 개시된 관점에서 당업자라면 다수의 다른 타입의 데이터 구조가 접속버퍼-N(265)에 대해서 대체될 수 있다는 것을 이해할 수 있을 것이다. 이 실시예들은 다차원 테이블 및 링크된 리스트를 포함하지만 이에 국한되는 것은 아니다. 삽입 및 삭제를 위한 상기 복사방법을 사용하는 것은 또한 다양한 통상의 리스트-조작 방법으로 대체가 가능한데, 이러한 것 중에는 링크된 리스트 및 비어있는 셀의 지원사용 등이 있다. 처리율의 관점에서는 비싼 반면에 복잡성이 최소화되고, 실시간에 접속을 수행할 뿐만 아니라 인코더로부터 임시적으로(즉, 접속중에) 데이터를 수신하여 다중버퍼로 라우팅하는 비용이 최소화되기 때문에 본 방법이 바람직하다. 그러나, 특히 현재 진행중인 하드웨어 및 소프트웨어 개발의 측면에서는 이러한 리스트 및 리스트-관리의 다른 방법이 사용되는 것도 의도된다.
도 11, 도 16 및 도 17을 참조하여, 도 14 내지 도 15c는 본 발명에 따른 바람직한 접속기가 어떻게 접속에 의해서 야기된 디코더 입력버퍼 오버플로우 조건을 검출하고 수정하는가(도 4의 단계 450)를 나타내는 순서도이다.
도 11을 참조하면, 구 데이터 스트림(1801)의 마지막 디코더 버퍼가 시간(t2) 이전에 디코더로 전송될 것이다. 구 데이터 스트림이 디코드 또는 "재생(play out)"(시간(t2)로부터 시간(t4)까지)을 계속하는 동안에, (바람직한 정렬 후에)신규 데이터 스트림(1102a)의 최초 디코더 버퍼는 디코더 입력버퍼에 의해서 계속하여 수신될 것이다. 따라서, 시간(t2)로부터 시간(t4)까지, 기본적으로 계속하여 변화하는 양쪽 데이터 스트림의 양은 구 데이터 스트림 양이 감소하고 신규 데이터 스트림 양이 증가하면서 디코더 입력버퍼에 존재할 것이다.
그리고 나서, 신규 데이터 스트림의 최초 디코더 버퍼는 신규 데이터 스트림 디코딩이 시간(t5)(즉, 신규 데이터 스트림 접속(splice-in)지점)에서 시작될 때까지 계속하여 디코더에 의해서 수신될 것이다. 물론, 이상 설명된 조건은 오버플로우 수정이 없을때 발생한다.
또한, 도 16은 디코더 입력버퍼 내의 구 데이터 스트림 및 신규 데이터 스트림 일부를 예시적으로 나타내는 그래프이다. 그러나, 도 11과 비교하여 구 데이터 스트림의 마지막 디코더 버퍼의 일부분 만이 도시되어 있다. 또한, 좀 더 정보성이 있는 데이터 스트림 예가 보여지고 구 데이터 스트림 및 신규 데이터 스트림은 조합된 형태로 도시된다. 도 16은 디코더 입력버퍼 내에 조합된 데이터 스트림들의 존재가 어떻게 디코더 입력버퍼 사이즈가 초과되게 하고, 그 결과 "디코더 오버플로우 조건"(A, B, C)(즉, 비디오 디코더 입력버퍼의)을 야기하는가를 나타낸다. 불행하게도, 수정되지 않는다면 각각의 오버플로우 조건은 결국 데이터 스트림 데이터의 손실을 낳게 될 것이다.
도 14는 본 발명에 따라서 오버플로우 조건을 제거하는 바람직한 방법을 광범위하게 나타내는 그래프이다. 도시된 바와 같이, 단계 1410에서 접속기-N(270)(도 3)이 접속의 결과인 오버플로우 조건을 검색하면, 단계 1420에서 접속기-N(270)이 이 오버플로우 조건을 일으키는 데이터 스트림 부분을 지연량 만큼 지연시킨다. 그 후, 단계 1430에서 접속기-N(270)은 이후 데이터 스트림 부분을 지연량에 대응하는 양만큼 가속시칸다. 이하 상세히 논의되는 바와 같이, 바람직하게는 오버플로우 조건(또는 단순히 "오버플로우")이 발생하는 접속버퍼의 개시에 널 패킷을 삽입함으로써 오버플로우를 수정하는 동안 접속기-N(270)이 데이터 스트림 부분을 지연시킨다. 또한, 바람직하게는 대응 접속버퍼 채워짐의 개시 또는 그 근방에 널 패킷을 삭제함으로써 오버플로우를 수정하는 동안 접속기-N(270)이 데이터 스트림 부분을 가속시킨다(이미 논의된 바와 같이, 데이터 버퍼는 전형적으로 인코딩의 결과로서 10 퍼센트 이상의 널 패킷을 포함하므로, 오버플로우를 수정하는 동안 충분한 삭제용 널 패킷이 결핍된다는 것은 관측되지 않는다.).
또한, 바람직하게는 접속기-N(270)이, 널 패킷 삽입 및/또는 삭제의 형태인 데이터 스트림 변형을 오버플로우가 실제로 검출되는 데이터 스트림의 부분에 위치시킨다. 특히, 신규 데이터 스트림만이 필요에 따라서 변형되고, 신규 데이터 스트림 내에서도 오버플로우가 검출되고 및/또는 이러한 접속버퍼 바로 이전의 및/또는 이후의 접속버퍼만이 변형된다. 이러한 기술적 관점에서 당업자라면, 널 패킷 삽입이 접속버퍼의 개시보다는 오히려 데이터 스트림 내의 위치에서 달성된다는 것이 이해될 것이다. 실시예는 오버플로우가 검출되는 데이터 패킷 바로 직전에서의 삽입을 포함하지만 이에 국한되는 것은 아니다. 그러나, 이러한 배치가 좀 더 정확하게 오버플로우 조건을 수정하는 반면에, 이와 유사하게 효과적인 오버플로우 회피의 결과를 낳는 바람직한 방법이 관측되고, 라이브러리로서 구현된 접속기에 의해서 바람직한 방법이 이미 실시간에 달성되어 있다. 예를 들어, 접속기가 라이브러리 이외의 것으로서 구현되어 오버헤드가 거의 없거나 증가되지 않는 좀 더 직접적인 제어능력을 갖는 곳에서 이러한 배치대안이 의도된다.
도 16으로 돌아가서, 바람직한 접속기-N(270)은 조합된 데이터 스트림 커브(1610)을 따라서 바람직하게 지점을 결정함으로써 좀 더 특별하게 오버플로우 조건을 검출한다. 도시된 바와 같이, 이러한 커브를 따르는 결정지점은 시간(t2, t5 및 t5)에서 오버플로우 조건의 개시를 드러낼 것이다. 다음 단계는 디코더 입력버퍼 용량이 초과되는 데이터량 계산을 포함하는 것으로 나타날 수도 있는 반면에(이러한 단계가 사용되었었다), 데이터 스트림 데이터량을 초과하는 버퍼에 따른 수정은 부정확한 결과를 낳을 수도 있다는 것이 밝혀졌다. 이러한 잠재적인 부정확성은 대부분 통상의 데이터 스트림 내의 비디오 정보, 오디오 정보 및 기타 정보 때문에 발생하는 것으로 여겨진다. 그러나, 오버플로우 조건의 길이를 측정함으로써, 특히 오버플로우 조건동안 디코더 입력버퍼에 의해서 수신되는 데이터 패킷의 수를 카운팅함으로써 정확한 결과가 제공된다. 혼합된 데이터 타입의 유사한 이유때문에, 데이터 스트림 데이터가 또한 바람직하게는 비디오 데이터 바이트에 대하여 분석되어 프레임 단위 기본으로 카운트된다.
논의된 바와 같이, 바람직하게는 부분적으로, 구 데이터 스트림 데이터를 분석한 후, 대략 전송 1초전에 버퍼-채워짐(즉 등가적으로, 접속버퍼 단위로)에 의한 버퍼-채워짐 기반상에서 접속버퍼-N(265)에 순차적으로 제공되는 신규 데이터 스트림 데이터를 분석함으로써 기능을 한다. 따라서, 바람직하게는 접속버퍼-N(265)이 대응 데이터 부분(즉, 구 데이터 스트림의 종점 또는 신규 데이터 스트림의 개시)을 포함하는 동안에, 접속기-N(270)이 각각의 논의된 기능을 수행한다. 또한, 접속기-N(270)은 접속(splice-in, splice-out), PCR 및 정렬결정과 관련하여 접속테이블(370)을 생성한 후, 이 접속테이블(370)을 오버플로우 검출 및 수정에 사용되는 데이터로 채운다(도 4의 단계 405 참조).
연속적인 접속버퍼 뿐만 아니라 단일의 접속버퍼 중에도 하나 이상의 오버플로우 조건이 존재할 수 있다는 것이 관측되었다. 따라서, 접속기-N(270)은 접속버퍼 내에 존재할지도 모르는 모든 오버플로우 조건을 드러내기 위해서 각각의 접속버퍼를 완전히 검색한다.
동일한 접속버퍼 내에서의 오버플로우 발생은 고립되어 수정되어서는 안된다는 것도 관측되었다. 예를 들어, 각각의 이러한 오버플로우가 이에 대응하여 널 패킷을 삽입함으로써 회피되어야 한다고 예상되는 반면에, 특정 경우에 있어서는 이러한 다중삽입이 디코더 버퍼 언더플로우의 결과를 낳는다는 것이 관측되었다. 따라서, 바람직하게는 수정을 행하기 전에 접속기-N(270)이 전체 접속버퍼 내의 오버플로우 테스팅/검출을 완료한다. 특히, 바람직하게는 접속기-N(270)이 접속버퍼 내에서 가장 길게 존속하는 오버플로우를 결정한 후, 이에 대응하는 수의 널 패킷을 접속버퍼 전에 삽입한다.
또한, 바람직하게는 이미 논의된 방식으로 바람직한 라이브러리 기반의 접속기-N(270)이 오버플로우 수정동안에 널 패킷을 더하거나 삭제한다. 특히, 가산될 널 패킷의 수에 따라서 가산명령을 호스트 어플리케이션으로 되돌림으로써 데이터 패킷이 가산된다. 이와는 대조적으로, 접속기-N(270)은 접속버퍼-N(265)로부터 직접 널 패킷을 삭제한다.
도 17의 예시적인 프레임 테이블을 참조하여, 도 15a 내지 도 15c는 오버플로우 조건을 검출하고 삭제하기 위한 바람직한 방법을 좀 더 상세히 나타내는 순서도이다. 도 15a는 프레임 테이블(265)(도 3)을 구 데이터 스트림으로 채우는 바람직한 방법을 나타내는 반면, 도 15b 및 도 15c는 프레임 테이블(265)를 신규 데이터 스트림 데이터로 채우고, 검출하여 검출된 오버플로우 조건을 삭제하는 바람직한 방법을 나타낸다.
도 15a에 도시된 바와 같이, 바람직하게는 접속기-N(270)이 접속테이블-N(370)을 접속버퍼-N(265)에 포함된 구 데이터 스트림 비디오 프레임의 DTS 및 사이즈로 채움으로써 오버플로우 조작을 시작한다. 바람직하게는 접속기-N(270)이 기본적으로 즉시 활동을 시작하는 동안, 접속기-N(270)은, 구 데이터 스트림의 마지막 디코더 버퍼에 대한 완전한 데이터를 접속테이블(370)이 포함한다는 것을 확신하기에 충분히 빨리 시작하는 것만을 필요로 한다. 지적된 바와 같이, 또한 바람직하게는 접속기-N(270)이 접속버퍼-N(265)에 포함된 각각의 패킷내에서 비디오 프레임 데이터 바이트를 카운팅함으로써 프레임 사이즈를 결정한다.
특히, 단계 1501에서 접속버퍼-N(265)이 구 데이터 스트림 데이터의 신규 접속버퍼를 포함하는 경우에는, 단계 1503에서 접속기-N(270)이 제 1 프레임(즉, "현재 프레임(current frame)")에 대한 접속버퍼-N(265)를 분석한다. 다음에, 접속기-N(270)이 단계 1505에서의 현재 프레임에 대한 DTS를 복원하고, 단계 1507에서 이 복원된 DTS를 프레임 테이블-N(370)의 다음 위치에 저장한다. 단계 1509에서 접속버퍼-N(265)내에 더 이상의 데이터가 남게되는 경우에는, 단계 1510에서 접속기-N(270)이 접속버퍼-N(265) 내의 다음 데이터 패킷을 취득하여, 단계 1511에서 현재 패킷이 신규 프레임인지를 결정한다. 단계 1511에서 현재 프레임이 신규 프레임인 경우에는, 접속기-N(270)이 접속테이블-N(370) 내의 이전 비디오 프레임 사이즈를 저장하여 단계 1505로 되돌아간다; 그렇지 않은 경우에는, 단계 1513에서 접속기-N(270)이 현재 패킷내의 비디오 데이터 바이트 수를 현재 프레임에 대하여 현재 진행중인 총 수에 더한 후, 단계 1509로 되돌아간다.
단계 1509에서 접속버퍼에 더 이상의 데이터가 남지않은 경우에는, 접속기-N(270)이 단계 1514로 진행한다. 단계 1514에서 접속버퍼-N(265)이 구 데이터 스트림 데이터의 마지막 접속버퍼를 포함하지 않는 경우에는, 접속기-N(270)이 단계 1501로 진행한다. 대신에 단계 1514에서 접속버퍼-N(265)이 구 데이터 스트림 데이터의 접속버퍼를 포함하는 경우에는, 단계 1515에서 접속기-N(270)은 "최초(first)" 포인터가 구 데이터 스트림의 마지막 디코더 버퍼의 최초 프레임 위치를 포인트하도록 초기화한다.
신규 데이터 스트림에 관한 도 15b에서 계속하여, 바람직하게는 접속기-N(270)이 우선 디코더 입력버퍼에 이미 포함된 구 데이터 스트림에 신규 데이터 스트림을 가산함으로써 초과(즉, 오버플로우)되지 않을만한 버퍼를 결정한다. 특히, 단계 1521에서 접속기-N(270)은 "사이즈" 변수를 신규 데이터 스트림의 최초 순차헤더내의 vbv_buffer_size 필드 값으로 설정한다. 값(vbv_buffer_size)이 각각의 수신 디코더 입력버퍼(변화가능한)의 사용가능한 총 사이즈를 반드시 반영하는 것은 아니지만, 이것은 신규 데이터 스트림 인코딩 동안에 예상되는 최대 버퍼 사이즈를 나타낸다. 따라서, 이러한 사이즈 가정하에 접속기-N(270)은, 접속없이는 오버플로우가 발생하지 않는 곳(즉, 오로지 하나의 인코드된 데이터 스트림만이 디코더 입력버퍼를 차지하는 곳)에서 오버플로우가 발생하지 않을 것이라는 것을 확신한다. 또한, 단계 1523에서 접속기-N(270)은 널을 가산해야 하는지 및 만약 그렇다면 얼마나 많은 널을 가산해야 하는가를 결정하는데 사용되는 변수인 "널 가산(add nulls)"을 초기화한다.
도 17은 오버플로우를 검출하기 위해서 버퍼 테이블-N(370)이 어떻게 사용되는가를 예시적으로 나타낸다. 도시된 바와 같이, 이 지점에서 접속기-N(270)은 이미 검색되었고(연속적인 접속버퍼에서) 이에 대응하여 프레임 테이블-N(370)을 구 데이터 스트림에 대한 각각의 DTS 및 프레임 사이즈로 채웠다. 또한, 접속기-N(270)은 이미 개시 포인터를 구 데이터 스트림의 마지막 버퍼의 최초 프레임을 포인트하도록 설정하였다. 그러나, (도시된 바와 같이 테이블의 하측부분에서) 신규 데이터 스트림에 관하여, 최초 프레임에 대한 DTS를 확정함으로써 접속기-N(270)이 시작할 것이고, 그 후 최초 프레임에 대한 프레임 사이즈를 결정하기 시작할 것이다. 접속기-N(270)이 이러한 사이즈 결정을 완료할 때까지, 사이즈는 단지 "현재 진행중(ongoing)"이다; 완료와 동시에(다음 프레임의 검출을 통해서), 현재 프레임 사이즈가 고정될 것이다.
프레임 계산과 동시에, 접속기-N(270)은 오버플로우에 대한 테스트 및 수정을 할 것이다. 적절히 인코드된 데이터 스트림은 단독으로 오버플로우를 발생시키지 않기 때문에, 구 데이터 스트림에 대한 사이즈 값은 오버플로우에 대한 테스트 없이도 함께 합산될 수 있다. 그러나, 미지의 신규 데이터 스트림 데이터 패킷 때문에 오버플로우가 발생할 수도 있다. 따라서, 바람직하게는 각각의 패킷분석을 뒤따르는 현재 진행중인 사이즈 결정이 완료시에 접속기-N(270)이 오버플로우에 대하여 테스트를 한다. 일단 고정되면, 신규 데이터 스트림 프레임 사이즈는 직접 구 데이터 스트림 프레임 사이즈와 함께 합산될 수 있다. 그러나, 오버플로우 결정 및 수정이 바람직하게는 접속버퍼 기본단위로 수행되는 반면에, MPEG-2 인코드된 프레임은 프레임 버퍼와 심지어 패킷 경계를 가로질러서 시작되고 끝날 수도 있다는 것을 주의하여야 한다.
개시 포인터 증가를 따르는 중괄호(1710 및 1712)는 구 데이터 스트림의 연속적인 각각의 프레임에서 시작하여 오버플로우에 대한 테스트가 어떻게 바람직하게 수행되는가를 나타낸다. 명백히 하기 위하여, 도 15a 내지 도 15c의 순서도는 오버플로우가 각각의 구 데이터 스트림 디코드에 의해서 해결될 것이라는 것을 가정한다. 도 16의 그래프로 되돌아가서, 지금까지 발견된 모든 오버플로우 조건을 나타내는 오버플로우 조건(A, B)은 이러한 오버플로우의 디코더 해결을 나타낸다. 그러나, 또한 디코딩이 오버플로우를 치료하지 않는 오버플로우 조건(즉, 오버플로우(C))도 가능하다. 따라서, 이러한 오버플로우를 간과하는 것을 방지하기 위해서, 각각의 디코드된 프레임 사이즈가 현재 사이즈 결정으로부터 감산되어야 하고, 오버플로우가 존속하는지를 결정하기 위한 테스트가 다시 수행되어야 한다. 그렇다면, 오버플로우 경로중의 패킷의 수를 결정하는 것이 계속되어야 한다. 그러나, 주어진 부가적인 시간과 공간의 요구에 의해서, 바람직하게는 C 타입 오버플로우 발생에 대한 테스트가 선택적으로 제공된다.
이러한 기술적 관점에서 본 발명의 당업자라면, 본 발명의 사상 및 범위를 벗어나지 않고 특정한 접속테이블 구조 및 특정한 방법 파라미터가 변형될 수도 있다는 것을 이해할 수 있을 것이다.
도 15b로 돌아가서, 단계 1525에서 접속기-N(270)은 개시 포인터에 의해서 지시된 위치에서 시작하여 접속테이블-N(370) 내의 모든 알려진 비디오-프레임 사이트를 합산한다. 단계 1527에서 접속기-N(270)은 신규 데이터 스트림의 최초 프레임에 대한 DTS를 접속테이블-N(370)에 집어넣고 프레임 사이즈를 "0"으로 초기화한다. 단계 1529에서 접속기-N(270)은 접속버퍼-N(265)의 현재 패킷내의 비디오 데이터 바이트의 총 수를 취득하고, 또한 이 수를 현재 프레임에 대한 프레임 사이즈에 가산한다.
단계 1531에서 부가적인 신규 데이터 스트림 데이터 바이트가 결국 오버플로우 조건이 되는 경우에는, 접속기-N(270)이 단계 1551(도 15c)로 진행한다; 그렇지 않은 경우에는, 접속기-N(270)이 단계 1533에서 계속한다.
단계 1533에서 신규 데이터 스트림의 현재 데이터 패킷에 대한 PCR 값이 (구 데이터 스트림의)개시 프레임의 DTS 이상인 경우에는, 구 데이터 스트림 디코드가 발생할 것이고, 단계 1535에 의해서 주어진 바와 같이 오버플로우 검출이 다음의 구 데이터 스트림에 대하여 재개될 수 있다. 대신에 단계 1533에서 PCR 값이 현재 개시 프레임 DTS 이상이 아닌 경우에는, 접속기-N(270)이 단계 1535를 건너 뛰고 단계 1537로 진행한다.
단계 1537에서 접속버퍼-N(265)의 끝이 도달되는 경우에는, 접속기-N(270)이 단계 1557(도 15c의)로 진행한다; 그렇지 않은 경우에는, 접속기-N(270)이 다음 패킷의 비디오-바이트를 총합함으로서 단계 1539의 비디오 카운팅으로 진행하고, 신규 프레임이 도달되는 경우에는, 프레임 사이즈 총합을 프레임 테이블(370)에 집어넣고, 현재 프레임 사이즈를 다시 초기화하고, 단계 1531로 진행한다.
도 15c는 검출된 오버플로우 조건의 개시에 응답하여 단계 1551에서 개시한다. 논의된 바와 같이, 바람직하게는 접속기-N(270)이 현재 버퍼동안 오버플로우 조건이 존속하는 동안의 패킷의 수를 결정하고, 현재 접속버퍼 내에 존속하는 크기의 널 패킷 수를 더할 것이다. 단계 1551에서 접속기-N(270)은 (현재 패킷헤더로부터) 현재 패킷에 대한 패킷수를 취득한다. 단계 1533에서 접속기-N(270)은 다음 패킷으로부터 비디오 바이트의 수를 취득하거나(앞에서와 같이), 다음 패킷이 신규 프레임을 시작하는 경우에는 접속기-N(270)이 이전 프레임 사이즈를 버퍼 테이블-N(370)에 집어넣고 현재 프레임 사이즈를 다시 초기화한다.
단계 1555에서 오버플로우 조건이 도달되고 현재 접속버퍼의 끝이 도달되지 않는 경우에는, 접속기-N(270)이 단계 1565에서 진행한다. 대신에 단계 1555에서 오버플로우 조건이 도달되고 현재 접속버퍼의 끝이 도달되는 경우에는, 단계 1557에서 접속기-N(270)이 널 패킷의 수를 오버플로우가 존속하는 동안 현재 접속버퍼 동안과 동일한 크기의 패킷수인 현재 접속버퍼 이전에 가산하고 단계 1559로 진행한다.
단계 1559에서 끝 조건이 도달되는 경우에는, 접속이 완료된다; 그렇지 않은 경우에는, 접속기-N(270)이 단계 1561로 진행한다. 신규 데이터 스트림이 인코드된대로 계속하는 경우에는(즉, 접속 동안에 임의의 변형이 이루어지기 전에), 바람직하게는 접속기-N(270)이 끝 조건이 발생한 것으로 결정한다. 따라서, 인코드된 신규 데이터 스트림이 닫힌 GOP로 시작하였던 경우에는, 현재 접속버퍼의 현재 패킷에 대한 PCR이 인코드된 구 데이터 스트림의 마지막 DTS 이상일 때, 끝 조건이 도달된다. 그러나, 접속기-N(270)이 오픈 GOP를 신규 데이터 스트림에서 닫은 경우에는(즉, 비디오 접속(splice-in)지점을 검색하는 동안), 접속기-N(270)이 신규 데이터 스트림으로의 DTS n+1 프레임을 검색할 때 끝 조건이 도달된다. 예를 들어, 접속기-N(270)이 2 개의 프레임을 떨어뜨림으로써 GOP를 닫은 경우에는, 접속기-N(270)이 신규 데이터 스트림의 제 3 프레임에 대한 DTS를 발견할 때 끝 조건이 도달된다.
단계 1561에서(즉, 오버플로우가 검색되었고 현재 접속버퍼의 끝이 도달되었지만, 끝 조건이 존재하지 않던 곳), 접속기-N(270)은 널 수를 다음 접속버퍼의 시작으로부터 감산하고 널 카운트를 다시 초기화한다. 다음에, 단계 1563에서 접속기-N(270)은 접속버퍼의 다음(이 경우에는 최초) 패킷에 대한 사이즈를 취득함으로써 오버플로우에 대한 신규 접속버퍼를 테스트하기 시작하거나, 신규 프레임이 검색되는 경우에는 구 프레임 사이즈를 버퍼 테이블-N(370)으로 집어넣고 신규 프레임 사이즈를 "제로(0)" 바이트로 초기화한다. 그 후, 접속기-N(270)은 단계 1531(도 15b)로 진행한다.
바람직하게는 뒤따르는 접속버퍼로부터 동일한 수의 널 패킷을 삭제함으로써 널 패킷이 가산된 접속버퍼를 접속기가 뒤따르는 반면, 이러한 기술적 관점에서 당업자라면 즉시 삭제보다는 오히려 재저장하는 구성이 대체될 수 있다는 것을 이해할 수 있을 것이다. 논의된 바와 같이, 접속을 완료하기 전에 신규 데이터 스트림의 나머지를 그 인코드된 형태로 재저장하는 것이 현재 진행중인 중재없이 접속을 한 후에 또 다른 오버플로우, 언더플로우 및/또는 기타 예외적인 현상을 회피하는데 기능한다. 따라서, 바람직하게는 널 삭제가 널 가산을 뒤따른다(즉, 인코드된 스트림을 재저장함으로써). 또한, 예를 들어, 언더플로우를 발생할 정도로 많은 양의 지연을 회피하기에 충분히 가깝게 근접하여 삭제가 가산을 뒤따라야 한다. 그러나 변화의 실시예들은 하나의 버퍼에서 특정한 가산 및 삭제 사이의 덜 가까운 근접성을 포함하지만 이에 국한되지는 않고 동일한 버퍼가 오버플로우 및 언더플로우를발생할수는 없다고 가정한다.
도 15c로 돌아가서, 단계 1565에서 접속기-N(270)은 접속버퍼의 다음 패킷에 대한 사이즈를 취득하거나, 또는 신규 프레임이 검색되는 경우에는, 구 프레임 사이즈를 버퍼 테이블-N(370)로 집어넣고 신규 프레임 사이즈를 초기화한다. 그 후, 접속기-N(270)은 단계1567로 진행한다. 단계 1567에서 현재 접속버퍼의 끝이 도달되는 경우에는, 접속기-N(270)이 단계 1557로 진행한다; 그렇지 않은 경우에는, 접속기-N(270)이 단계 1569로 진행한다. 단계 1569에서 현재 접속버퍼의 현재 패킷에 대한 PCR 값이 개시 프레임의 DTS 이상인 경우에는, 단계 1571에서 현재 접속버퍼 동안 오버플로우가 존속하는 동안의 최대 패킷수와 동일한 현재 접속버퍼 이전의 널패킷 수를 접속기-N(270)이 가산하고 단계 1563으로 진행한다; 그렇지 않은 경우에는, 접속기-N(270)이 단계 1571을 뛰어넘고 단계 1563으로 진행한다.
도 18 내지 도 20으로 돌아가서, 접속기-N(270)은 비디오 접속과 관련하여 오디오 접속을 제공한다. 특히, 접속기-N(270)은 비디오 접속(splice-in)지점을 검색한 후에(도 4의 단계 410) 구 데이터 스트림 오디오 접속(splice-out)지점을 검색하고, 이와 유사하게 비디오 접속(splice-in)지점을 검색한 후에(도 4의 단계 420) 신규 데이터 오디오 접속(splice-out)지점을 검색한다.
도 18은 구 데이터 스트림에 오디오 접속(splice-out)지점을 설정하는 바람직한 방법을 나타내는 순서도이다. 도시된 바와 같이, 단계 1810에서 비디오 접속(splice out)지점이 검색되었던 경우에는, 단계 1820에서 접속기-N(270)이 마지막 이전의 오디오 패킷에 대한 접속버퍼-N(265)(도 3)를 분석한다. 다음에, 단계 1830에서 접속기-N(270)은 오디오 접속지점, 및 널 패킷과 함께 뒤따르는 비디오 접속(splice out)지점 사이에 생성된 갭을 채운다.
도 19a 그래프에 도시된 바와 같이, 도 18의 방법은 접속 이전의 비디오의 완료 이전에 지점(1901)에서 끝난다. 비디오 이미지가 끝나기 이전에 이러한 접속(splice out)이 통신두절되는 동안에는, 통신두절의 결과인 20 - 30 ㎳가 받아들여질 수 있는 것으로 고려된다. 또한, 통신두절이 제공되지 않을 것이라는 가정(오디오 PTS를 비디오 PTS로 매칭시킴으로써)은, 비디오가 끝난 후에 오디오(1902)가 존속할 것이라는 문제점을 제공한다. 또한, 오디오 데이터의 초과는 오디오 버퍼의 오버플로우를 더욱 많이 제공할 것이다.
도 19b를 참조하여, 도 20은 오디오 접속(splice-in)지점을 신규 데이터 스트림 내에 설정하는 바람직한 방법을 나타낸다. 도시된 바와 같이, 지점내의 비디오 접속이 단계 2010에서 검색되고 초기의 아웃(out) 옵션이 단계 2020에서 선택된 경우에는, 단계 2050에서 접속기-N(270)이 비디오 접속(splice-in)지점(도 19b의 1905)을 뒤따르는 오디오 헤더 경계를 검색한다. 비디오가 개시된 후에 통신두절의 주기가 존재하기 때문에, 단계 2060에서 접속기-N(270)은 잃어버린 오디오 패킷(도 9b의 1950)을 널 패킷으로 대체한다. 대신에 단계 2020에서 PTS 매칭 옵션이 선택된 경우에는, 단계 2030에서 비디오 PTS보다 큰 제 1오디오 PTS를 접속기-N(270)이 검색하고, 단계 2040에서 오디오의 개시까지(도 19b의 1960) 통신두절의 주기를 널 패킷으로 대체하거나 "덧댄다(pad)". 다시 한번 초기 아웃 옵션의 통신두절 짧은 주기가 바람직하다.
도 21 및 도 22는 본 발명의 또 다른 바람직한 실시예를 나타낸다. 광범위하게 말하자면, 본 실시예는, 앞선 실시예의 접속기의 방식에서와 유사한 방식으로 접속을 수행하는 접속기를 제공한다; 그러나, 본 실시예의 접속기는 바람직하게는 멀티플렉서로 구현된 "비트 클럭(bit clock)"과 관련하여 기능한다. 이러한 비트 클럭 및 기타 관련된 장점들을 이용하여, 바람직한 접속기는 접속을 수행하기 위한 처리요구가 상당히 감소되는 것을 가능하게 한다.
통상적으로, 채널 멀티플렉서는 반복되는 형태로 작동하여, 데이터 스트림 데이터를 순차적으로 수신하고, 이 데이터 스트림을 다중화하고, 이 다중화된 데이터를 전송기로 라우팅한다. 이러한 시스템에서, 데이터 스트림은 멀티플렉서에 의해서 수신되기 전에 완전히 처리되어야 한다. 그러나, 통상의 타이밍 기반이 접속기와 멀티플렉서 사이에서 이루어질 수 있어 멀티플렉서가 접속기 동작을 사용할 수 있다는 것이 밝혀진다.
도 21은 접속기 동작과 관련하여 비트 클럭이 어떻게 동작하는가를 일반적으로 나타낸다. 도시된 바와 같이, 단계 2105에서 사용자는 멀티플렉서 비트율을 설정한다. 단계 2110에서 호스트 어플리케이션은 각각의 활성 접속버퍼에 대한 전송비트율로 멀티플렉서(190)(도 2)를 보낸다. 단계 2115에서 호스트 어플리케이션은 멀티플렉서 비트율에 대한 채널 비트율의 비율에 따라서 버퍼전송 스케쥴을 설정한다. 단계 2120에서 멀티플렉서(2120)은 접속버퍼-N(265)가 스케쥴된 대로 전송할 준비가 되어있지 않은 곳으로 널 패킷을 보낸다. 단계 2125에서 "접속기-N(270)이 n 개의 널 패킷을 삭제하라"는 명령은 접속기 버퍼-N(265) 내용을 따라서 호스트 어플리케이션을 경유하여 멀티플렉서(190)에 의해서 수신된다.(n 값은 "널 패킷을 삭제하라"는 명령에 대해서는 음의 값이고, "널 패킷을 가산하라"는 명령에 대해서는 양의 값이다.) 단계 2130에서 멀티플렉서(190)은 접속버퍼-N(265) 내용을 전송기로 라우트한다.(여기서, 전송기는 접속버퍼를 즉시 이하에 나타낸 시간에 전송한다.)
전송 =
접속기-N(270)은 이전 실시예(도 13a 및 13B)의 널 패킷을 삭제하기 위한 다중 복사방법보다 상당히 적은 처리전력을 이용하여 접속버퍼를 가속시킬 뿐만이 아니라는 것에 주의하여야 한다. 또한, 접속기-N(270)은 이전 실시예에서와 동일한 방식으로 기능할 수 있다. 또한, 접속기-N(270)이 지연(즉, 널 가산) 및 가속화(즉, 널 삭제)를 동일한 방식으로 달성하기 때문에, 또 다른 최적화가 달성될 수 있다는 것이 관측된다.
도 22는 본 접속기가 바람직하게 도 14 내지 도 15c에서 설정된 오버플로우 검출 및 수정방법을 최적화하는 방법을 나타낸다. 광범위하게 말하자면, 신규 데이터 스트림을 재저장하고 동일한 접속버퍼에 관한 오버플로우를 수정하는 도 15a 내지 도 15c 방법과 대조적으로, 바람직하게는 본 접속기가 이전의 방법에 따라서와 같이 널 패킷을 삭제하거나 가산하는 것보다는 오히려 접속버퍼의 전송을 이동시키기 위해서 비트 클럭과 관련하여 기능한다.
도시된 바와 같이, 단계 2205에서 접속기-N(270)이 신규 데이터 스트림의 최초 접속버퍼를 분석함으로써 하나 이상의 오버플로우 조건을 검색하는 경우에는, 단계 2210에서 접속기-N(270)이 오버플로우 동안 최대 패킷과 동일한 가산-널을 설정하고, 또한 가산-널과 동일한 삭제-널을 설정한다. 다음에, 단계 2215에서 접속기-N(270)은 "널 패킷을 가산하라"는 명령을 호스트 어플리케이션을 통해서 멀티플렉서(190)으로 보낸다. 대신에 단계 2205에서 오버플로우 조건이 검출되지 않는 경우에는, 단게 2207에서 접속기-N(270)이 가산-널 및 삭제-널을 제로로 설정한다.
단계 2220에서 접속기-N(270)이 다음 접속버퍼를 분석하는 동안 오버플로우 조건을 검출하는 경우에는, 단계 2225에서 접속기-N(270)이 접속버퍼에 대한 최대 오버플로우 기간 동안에 패킷수를 저장하고, 단계 2230에서 오버플로우-수정 및 스트림-해결 널 패킷 값들 사이의 차이를 호스트 어플리케이션(즉, 각각 널 패킷을 가산하고 감산한다.)으로 보내고, 단계 2235에서 삭제를 가산과 동일하게 설정하고 가산을 제로로 설정한다. 따라서, 논의된 바와 같이 바람직하게는 접속기-N(270)이 접속 프레임에 대한 하나의 조합된 명령만을 제공한다. 단계 2260에서 접속기-N(270)이 끝 조건(이미 논의된 바와 같이)에 도달하지 않은 경우에는, 접속기-N(270)이 단계 2220으로 진행한다.
단계 2220에서 접속기-N(270)이 다음 접속버퍼를 분석하는 동안 오버플로우 조건을 검출하지 않는 경우에는, 접속기-N이 단계 2140으로 진행한다. 단계 2140에서 삭제-널이 제로인 경우에는, 접속기-N(270)이 단계 2260으로 진행한다. 대신에 단계 2140에서 삭제-널이 제로가 아닌 경우에는, 단계 2245에서 접속기가 대응 삭제 널 명령을 호스트 어플리케이션으로 보내고, 단계 2250에서 삭제-널을 제로로 설정한다.
이상의 관점에서 당업자라면, 위에 개시된 실시예 양쪽 모두가, 구 데이터 스트림 및 신규 데이터 스트림이 그렇지 안다면 상이하게 또는 유사하게 인코드되는 곳에도 적용할 수 있다. 예를 들어, 바람직한 접속기는 또한 통상의 PCR과 같은 통상의 시간기준을 사용 및/또는 설정할 수 있다. 어느 쪽 접속기도 또한 멀티플렉서(190)(도 2) 출력 디바이스와 직접 통신하도록 구성될 수 있다. 또한, 앞에서 논의된 널 패킷으로부터 비트 클럭 스케쥴로의 변환 오프셋은 접속기 및/또는 호스트 어플리케이션에 의해서 달성될 수 있다.
본 발명이 특정 실시예에 관하여 개시되었지만, 일정 범위의 변형, 다양한 변화 및 대체가 지금까지의 개시에서 의도되고, 특정의 경우에서는 본 발명의 특정한 특징이 지금까지의 본 발명의 사상 및 범위를 벗어나지 않고 대응하는 다른 특징들을 사용하지 않고도 채택될 것이다.

Claims (81)

  1. 오버플로우 조건을 제거하는 방법에 있어서,
    오버플로우 조건을 일으키는 제 1 디지털 인코드된 데이터 스트림 부분을 검출하는 단계;
    상기 오버플로우 조건을 방지하는 지연시간을 위해서 상기 제 1 데이터 스트림 부분을 지연시키는 단계; 및
    상기 지연시간에 대해서 상당히 이루어진 상기 제 1 데이터 스트림 부분을 뒤따르는 제 2 데이터 스트림 부분을 가속시키는 단계를 포함하는 것을 특징으로 하는 오버플로우 조건 제거방법.
  2. 오버플로우 조건을 제거하는 장치에 있어서,
    오버플로우 조건을 발생시키는 제 1 디지털 인코드된 데이터 스트림 부분을 검출하는 수단;
    상기 데이터 스트림 부분을 지연시키는 수단; 및
    상기 제 1 데이터 스트림 부분에 의해서 선행되는 제 2 데이터 스트림 부분을 가속시키는 수단을 포함하는 것을 특징으로 하는 오버플로우 조건 제거장치.
  3. 신규 데이터 스트림부분 및 구 데이터 스트림 부분을 포함하는 디코더 버퍼의 오버플로우를 회피하는 방법에 있어서,
    (a) 상기 디코더 버퍼에 전송되는 경우에 상기 디코더 버퍼를 차지할 구 데이터 스트림의 총량을 결정하는 단계;
    (b) 데이터의 조합량을 취득하기 위하여 상기 총량에 신규 데이터 스트림 데이터의 양을 가산하는 단계;
    (c) 상기 데이터의 조합량이 상기 디코더 버퍼를 오버플로우하는지 여부를 테스트하는 단계; 및
    (d) 오버플로우가 발생하는 경우에 신규 데이터 스트림 부분이 상기 디코더 버퍼로 전송되어야 하는 경우, 신규 데이터 스트림 부분을 적어도 상기 오버플로우에 대응하는 지연량만큼 지연시키는 단계를 포함하는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  4. 제 3항에 있어서,
    결정단계인 상기 단계 (a)는 상기 디코더 버퍼의 최대 사이즈를 결정하는 것에 의해서 선행되는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  5. 제 4항에 있어서,
    상기 최대 사이즈는 구 데이터 스트림 내의 버퍼 사이즈 파라미터에 따라서 결정되는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  6. 제 4항에 있어서,
    단계 (a)의 상기 최대 사이즈는 신규 데이터 스트림 내의 버퍼 사이즈 파라미터에 따라서 결정되는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  7. 제 3항에 있어서,
    단계 (c) 이전에 전송되는 경우에 상기 디코더에 의해서 디코드되는 구 데이터 스트림 데이터의 양을 상기 총량으로부터 삭제하는 단계를 더 포함하는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  8. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 상기 버퍼가 오버플로우되는 데이터 스트림 데이터량의 함수인 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  9. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 상기 버퍼가 단일의 오버플로우로 오버플로우되는 데이터 스트림 데이터양의 함수인 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  10. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 오버플로우 기간의 함수인 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  11. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 단일 경우의 오버플로우의 기간의 함수인 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  12. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 최장 기간 경우의 오버플로우의 함수인 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  13. 제 3항에 있어서,
    단계 (d)의 상기 지연량은 상기 신규 데이터 스트림 부분 내에서 최장 기간 경우의 오버플로우 동안 상기 부분의 데이터 패킷수와 동일한 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  14. 제 3항에 있어서,
    단계 (d)는, 신규 데이터 스트림이 전송되는 경우에 상기 지연량에 대응하는 가속량만큼 상기 신규 데이터 스트림의 순차부분을 가속시키는 단계를 더 포함하는 것을 특징으로 하는 디코더 버퍼의 오버플로우 회피방법.
  15. 구 데이터 스트림 부분 및 신규 데이터 스트림 부분을 포함하는 데이터 스트림 부분을 접속하는 동안 데이터 스트림 디코더의 오버플로우를 검출하는 방법에 있어서,
    (a) 복수의 구 데이터 스트림 프레임 사이즈 및 상기 구 데이터 스트림 부분의 구 데이터 스트림 프레임에 대응하는 디코딩 시간을 결정하고, 상기 프레임 사이즈 및 디코딩 시간을 접속테이블에 저장하는 단계;
    (b) 최대 디코더 버퍼 사이즈를 결정하는 단계;
    (c) 신규 프레임 사이즈 및 신규 데이터 스트림 부분의 신규 데이터 스트림 프레임에 대응하는 디코딩 시간을 결정하는 단계;
    (d) 접속테이블에 저장된 복수의 구 데이터 스트림 프레임 사이즈를 합산함으로써 중간 사이즈를 결정하는 단계;
    (e) 상기 중간 사이즈에 신규 데이터 스트림 프레임 사이즈를 가산함으로써 총 사이즈를 결정하는 단계; 및
    (f) 상기 총 사이즈가 상기 최대 디코더 버퍼 사이즈를 초과하는지를 결정함으로써 오버플로우를 테스트하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 검출방법.
  16. 제 15항에 있어서,
    단계 (d)의 상기 구 데이터 스트림 프레임 사이즈는, 데이터 스트림 부분이 전송되면 상기 신규 데이터 스트림 프레임이 디코더에 의해서 수신될 때 디코드되지 않고 남게되는 구데이터 스트림 부분의 모든 프레임을 포함하는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 검출방법.
  17. 제 16항에 있어서,
    데이터 스트림 부분이 전송되는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 검출방법.
  18. 제 15항에 있어서,
    단계 (f)에서 오버플로우가 검색되는 경우에 상기 신규 데이터 스트림 프레임을 포함하는 신규 데이터 스트림 데이터 부분의 전송시간이 지연되게 하는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 검출방법.
  19. 구 데이터 스트림 부분 및 신규 데이터 스트림 부분을 포함하는 데이터 스트림 부분의 접속 동안에 디지털로 인코드된 데이터 스트림 디코더의 오버플로우를 수정하는 방법에 있어서, 신규 데이터 스트림 데이터 부분의 스케쥴된 전송시간의 지연을 발생시키는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 수정방법.
  20. 제 19항에 있어서,
    상기 지연은 널 패킷을 상기 신규 데이터 스트림 부분에 가산함으로써 발생되는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 수정방법.
  21. 제 19항에 있어서,
    상기 지연은 아래의 식에 따라서 상기 부분의 전송을 재-스케쥴링함으로써 발생되는 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 수정방법.
    (상기 부분에 대해서 현재 스케쥴된 전송시간) + ((n 패킷 x m 비트/패킷 x 멀티플렉서 비트율) / (데이터 스트림 비트율))
    (여기서, n은 전송이 지연되는 패킷의 수를 나타내고, m은 전송될 데이터 스트림의 패킷내 비트수를 나타낸다.)
  22. 제 21항에 있어서, m = 1504 인 것을 특징으로 하는 데이터 스트림 디코더의 오버플로우 수정방법.
  23. 구 데이터 스트림 및 신규 데이터 스트림을 포함하는 디지털 디코드된 데이터 스트림을 접속하는 방법에 있어서,
    (a) 신규 데이터 스트림의 현재 타이밍 기준을 구 데이터 스트림의 접속(splice-out)지점 및 신규 데이터 스트림의 접속(splice-in)지점에 일치하도록 변형시키고, 이에 의해서 변형된 신규 데이터 스트림 타이밍 기준을 형성하는 단계; 및
    (b) 상기 변형된 신규 데이터 스트림 타이밍 기준에 따라서 신규 데이터 스트림 부분을 구 데이터 스트림 부분으로 정렬하여, 재생동안 구 데이터 스트림으로부터 신규 데이터 스트림으로의 변환점이 상당히 미세하게 되는 것을 특징으로 하는 데이터 스트림 접속방법.
  24. 제 23항에 있어서,
    단계 (a)의 상기 변형된 신규 데이터 스트림 타이밍 기준은, 구 데이터 스트림의 마지막 프레임을 디코딩하기 위한 제 1 디코딩 시간과 신규 데이터 스트림의 제 1 프레임을 디코딩하기 위한 제 2 디코딩 시간과의 타이밍 갭과 일치하는 것을 특징으로 하는 데이터 스트림 접속방법.
  25. 제 23항에 있어서,
    상기 변형된 신규 데이터 스트림 타이밍 기준을 결정하는 단계는,
    (i) 상기 신규 데이터 스트림의 현재 타이밍 기준을 결정하는 단계;
    (ii) 상기 신규 데이터 스트림의 프레임의 현재 타이밍 기준과 현재 디코딩 시간 사이의 지연을 결정하는 단계;
    (iii) 구 데이터 스트림의 마지막 프레임을 디코딩하기 위한 디코딩 시간과 신규 데이터 스트림의 제 1 프레임을 디코딩하기 위한 디코딩 시간 사이의 프레임간 지연 및 상기 현재 디코딩 시간의 합과 일치하는 상기 신규 데이터 스트림의 프레임의 신규 디코딩 시간을 결정하는 단계; 및
    (iv) 단계(iii)의 상기 신규 디코딩 시간 - 단계(ii)의 상기 지연으로서 상기 변형된 신규 데이터 스트림 타이밍 기준을 결정하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  26. 제 23항에 있어서,
    상기 변형된 신규 데이터 스트림 타이밍 기준을 결정하는 단계는,
    (i) 상기 신규 데이터 스트림의 제 1 패킷의 프로그램 클럭기준을 결정하는 단계;
    (ii) 상기 신규 데이터 스트림의 제 1 순차헤더의 전송과 상기 신규 데이터 스트림의 제 1 프레임의 제 1 디코드 타임 스탬프(DTS) 사이의 지연을 결정하는 단계;
    (iii) 상기 제 1 DTS 및 프레임간 지연의 합으로서 연속 DTS를 결정하는 단계; 및
    (iv) 단계(iii)의 상기 연속 DTS - 단계(ii)의 상기 지연으로서신규 데이터 스트림 실시간 전송시간을 결정하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  27. 제 23항에 있어서,
    단계 (b)의 상기 정렬은, 구 데이터 스트림 부분을 디코딩하기 위한 디코딩 시간과 일치하는 신규 데이터 스트림 부분을 전송하기 위한 개시시간을 설정하는 것을 특징으로 하는 데이터 스트림 접속방법.
  28. 제 23항에 있어서,
    단계 (b)의 상기 정렬은 구 데이터 스트림 부분을 디코딩하기 위한 디코딩 시간과 일치하는 디코더 버퍼가 신규 데이터 스트림 부분을 수신하기 시작하는 개시시간을 설정하는 것을 특징으로 하는 데이터 스트림 접속방법.
  29. 제 23항에 있어서,
    (d) 데이터 스트림이 전송되는 경우에 상기 접속으로부터 발생될 디코더 버퍼 오버플로우 조건을 검출하는 단계; 및
    (e) 상기 오버플로우 조건을 수정하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  30. 제 23항에 있어서,
    단계 (a)의 상기 결정은
    (i) 구 데이터 스트림의 접속(splice-out)지점을 결정하는 단계; 및
    (ii) 신규 데이터 스트림의 접속(splice-in)지점을 결정하는 단계에 의해서 선행되는 것을 특징으로 하는 데이터 스트림 접속방법.
  31. 제 30항에 있어서,
    신규 데이터 스트림의 초기 프레임이 이전 프레임의 디코딩을 참조하여 순서적으로 디코드된 타입인 경우에는, 상기 기준을 제거하기 위해서 신규 데이터 스트림 데이터를 변형시키는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  32. 제 31항에 있어서,
    상기 프레임 타입은 B-프레임 및 P-프레임을 포함하는 그룹으로부터 선택되고, 상기 변형단계는 오픈 화상그룹("GOP")을 닫는 것을 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  33. 제 30항에 있어서,
    상기 데이터 스트림은 비디오 및 오디오 데이터를 포함하고, 단계 (a)는 비디오 접속(splice-out)지점 및 오디오 접속(splice-out)지점을 결정하는 것을 포함하고, 단계 (b)는 비디오 접속(splice-in)지점 및 오디오 접속(splice-in)지점을 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  34. 제 30항에 있어서,
    단계 (i)의 상기 접속(splice-out)지점은 구 데이터 스트림의 사용자-선택 부분 내에서 결정되는 것을 특징으로 하는 데이터 스트림 접속방법.
  35. 제 30항에 있어서,
    단계(ii)의 상기 접속(splice-in)지점은 신규 데이터 스트림의 사용자-선택부분 내에서 결정되는 것을 특징으로 하는 데이터 스트림 접속방법.
  36. 제30항에 있어서,
    단계(i)의 상기 접속(splice-out)지점은 사용자가 선택할 수 있는 것을 특징으로 하는 데이터 스트림 접속방법.
  37. 제 30항에 있어서,
    단계(ii)의 상기 접속(splice-in)지점은 사용자가 선택할 수 있는 것을 특징으로 하는 데이터 스트림 접속방법.
  38. 제 23항에 있어서,
    단계(a)는 구 데이터 스트림에 대한 제 1 소스 및 신규 데이터 스트림에 대한 제 2 소스에 의해서 선행되는 것을 특징으로 하는 데이터 스트림 접속방법.
  39. 제 38항에 있어서,
    상기 소스는 저장 디바이스, 위성 수신기, 케이블 수신기, 네트워크, 오디오 소스, 비디오 소스 및 인코더를 포함하는 그룹으로부터 선택되는 소스 타입을 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  40. 제 39항에 있어서,
    상기 제 1 소스 및 제 2 소스는 동일한 소스 타입인 것을 특징으로 하는 데이터 스트림 접속방법.
  41. 제 23항에 있어서,
    상기 데이터 스트림의 적어도 하나는 MPEG 인코드된 것을 특징으로 하는 데이터 스트림 접속방법.
  42. 제 23항에 있어서,
    상기 접속은 실시간에 이루어지는 것을 특징으로 하는 데이터 스트림 접속방법.
  43. 제 23항에 있어서,
    구 데이터 스트림 부분의 전송이 단계 (a)를 뒤따르는 것을 특징으로 하는 데이터 스트림 접속방법.
  44. 제 23항에 있어서,
    신규 데이터 스트림 부분의 전송이 단계 (b)를 뒤따르는 것을 특징으로 하는 데이터 스트림 접속방법.
  45. 제 23항의 방법에 따라서 함께 접속된 구 데이터 스트림과 신규 데이터 스트림을 포함하는 것을 특징으로 하는 데이터 접속된 데이터 스트림 조합.
  46. (a) 구 데이터 스트림 내에서 접속(splice-out)지점을 결정하는 단계;
    (b) 신규 데이터 스트림 내에서 접속(splice-in)지점을 결정하는 단계; 및
    (c) 신규 데이터 스트림 실시간 전송개시 시간을 결정하는 단계를 컴퓨터가 수행하도록 하는 프로그램 코드를 저장하는 것을 특징으로 하는 컴퓨터-판독가능한 저장매체.
  47. 제 46항에 있어서,
    단계 (a)는, 다른 데이터 스트림 쌍과 동시에 접속될 신규 데이터 스트림 쌍을 결정하는 단계; 및
    상기 신규 데이터 스트림 쌍을 접속시키는 프로그램 코드를 초기화하는 단계에 의해서 선행되는 것을 특징으로 하는 컴퓨터-판독가능한 저장매체.
  48. 제 46항에 있어서,
    단계 (a)는, 상기 데이터 스트림 부분을 저장하기 위한 적어도 하나의 데이터 저장구조를 생성하는 단계; 및 상기 적어도 하나의 데이터 자장구조에 상기 데이터 스트림 부분을 저장시키는 단계에 의해서 선행되는 것을 특징으로 하는 컴퓨터-판독가능한 저장캐체.
  49. 제 48항에 있어서,
    상기 적어도 하나의 저장구조는 호스트 프로세싱 시스템의 메모리에 위치되는 것을 특징으로 하는 컴퓨터-판독가능한 저장매체.
  50. 구 데이터 스트림 및 신규 데이터 스트림을 포함하는 디지털 인코드된 데이터 스트림을 접속시키는 방법에 있어서,
    (a) 접속(splice-out)지점이 결정되는 구 데이터 스트림 부분을 지시하는 사용자-선택 파라미터를 수신하는 단계;
    (b) 구 데이터 스트림 부분 및 신규 데이터 스트림 부분을 저장하기 위한 접속버퍼를 할당하는 단계;
    (c) 구 데이터 스트림 부분을 상기 접속버퍼에 지시하는 단계;
    (d) 상기 접속(splice-out)지점을 결정하는 단계;
    (e) 상기 접속버퍼로 신규 데이터 스트림 부분을 지시하는 단계;
    (f) 신규 데이터 스트림 부분의 초기 프레임이 신규 데이터 스트림을 선행하는 프레임과 독립된 경우에는 신규 데이터 스트림 부분 내에서 접속(splice-in)지점을 결정하고, 상기 독립성을 제거하기 위해서 신규 데이터 스트림 부분을 변형하는 단계;
    (g) 전송중에, 디코더 버퍼가 마지막으로 구 데이터 스트림 부분을 수신한 후 신규 데이터 스트림을 수신하기 시작하는 경우에, 신규 데이터 스트림을 상기 최후에 수신된 것으로 정렬하는 단계; 및
    (h) 전송중에, 디코더 버퍼가 마지막으로 구 데이터 스트림 부분을 수신하기 전에 신규 데이터 스트림을 수신하기 시작하는 경우에, 신규 데이터 스트림을 상기 최후에 수신된 것으로 정렬하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  51. 제 50항에 있어서,
    단계 (f)의 상기 독립성은 오픈 GOP이고, 상기 변형은 오픈 GOP를 닫는 것을 특징으로 하는 데이터 스트림 접속방법.
  52. 제 50항에 있어서,
    (j) 상기 디코더 버퍼의 오버플로우에 대하여 체크하는 단계;
    (k) 오버플로우가 검색되는 경우 상기 오버플로우를 제거하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  53. 구 데이터 스트림 및 신규 데이터 스트림을 포함하는 디지털 인코드된 데이터 스트림을 접속하는 접속기에 있어서,
    (a) 구 데이터 스트림의 접속(splice-out)지점 및 신규 데이터 스트림의 접속(splice-in)지점에 따라서 신규 데이터 스트림 실시간 전송개시 시간을 결정하는 수단; 및
    (b) 상기 신규 데이터 스트림 실시간 전송시간에 따라서 신규 데이터 스트림을 구 데이터 스트림으로 정렬시키는 수단을 포함하는 것을 특징으로 하는 데이터 스트림 접속기.
  54. 접속을 위해서 디지털 인코드된 데이터 스트림을 마련하는 방법에 있어서,
    (a) 신규 데이터 스트림의 접속(splice-in)지점을 결정하는 단계; 및
    (b) 신규 데이터 스트림이 초기 오픈 GOP를 포함하는 경우에, 신규 데이터 스트림의 초기 오픈 GOP를 닫는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 마련방법.
  55. 구 데이터 스트림 및 신규 데이터 스트림을 포함하는 디지털 인코드된 데이터 스트림을 접속하는 장치에 있어서,
    (a) 신규 데이터 스트림의 접속(splice-in)지점을 결정하는 수단; 및
    (b) 신규 데이터 스트림이 오픈 GOP를 포함하는 경우에, 신규 데이터 스트림의 오픈 GOP를 닫는 수단을 포함하는 것을 특징으로 하는 데이터 스트림 접속장치.
  56. 제 50항에 있어서,
    삽입모드와 접속-온리 모드 옵션 중에서 사용자 선택에 따라서 상기 접속(splice-out)지점이결정되는 것을 특징으로 하는 데이터 스트림 접속방법.
  57. 제 56항에 있어서,
    순차헤더 바로 직전에 접속(splice-out)지점이 결정되는 것을 특징으로 하는 데이터 스트림 접속방법.
  58. 제 56항에 있어서,
    GOP 헤더, I-프레임 및 P-프레임 중에서 최초로 발생하는 것 바로 직전에 접속(splice-out)지점이 결정되는 것을 특징으로 하는 데이터 스트림 접속방법.
  59. 제 50항에 있어서,
    상기 접속(splice-in)지점을 결정하는 단계는,
    신규 데이터 스트림의 GOP내에 포함되는 신규 데이터 스트림의 프레임에 대한 디코드 타임 스탬프(DTS)를 검색하는 단계;
    상기 프레임에 대하여 대응하는 표시시간 스탬프를 검색하는 단계; 및
    상기 프레임이 I-프레임 이외의 것인 경우에 상기 GOP를 닫는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  60. 제 59항에 있어서,
    상기 프레임은 신규 데이터 스트림의 초기 프레임인 것을 특징으로 하는 데이터 스트림 접속방법.
  61. 제 59항에 있어서,
    상기 DTS를 검색하는 단계는,
    제 1 순차헤더에 대한 신규 데이터 스트림의 제 1 부분을 분석하고, 제 1 프레임 헤더 이전의 마지막 DTS에 대한 상기 제 1 부분을 분석하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속방법.
  62. 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법에 있어서,
    (a) 상기 부분 내에서 독립적으로 디코드할 수 있는 프레임을 결정하는 단계;
    (b) 상기 부분의 재생이 상기 독립적으로 디코드할 수 있는 프레임으로 시작하도록 하는 단계; 및
    (c) 수신 디코더가 상기 독립적으로 디코드할 수 있는 프레임을 상기 부분의 제 1 프레임으로서 디코드할 수 있도록 상기 부분의 순서 파라미터를 변형하는 단계를 포함하는 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  63. 제 62항에 있어서,
    단계 (b)는 상기 독립적으로 디코드할 수 있는 상기 부분 내에서 프레임을 삭제함으로서 달성되는 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  64. 상기 GOP는 복수의 프레임을 포함하고, 디지털 인코드된 데이터 스트림의 오픈GOP를 닫는 방법에 있어서,
    (a) 상기 GOP 내의 제 1 I-프레임을 결정하는 단계;
    (b) 상기 GOP 내에서 상기 I-프레임을 앞서는 모든 상기 프레임의 최대 DTS를 결정하는 단계;
    (c) 상기 I-프레임을 앞서는 상기 GOP 내의 모든 프레임을 결정하는 단계;
    (d) 상기 GOP 내의 적어도 하나의 잔여 프레임에 대한 임시기준을 변형하는 단계; 및
    (e) 상기 I-프레임의 DTS를 상기 단계 (b)의 최대 DTS로 대체하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림의 오픈GOP를 닫는 방법.
  65. 제 62항에 있어서,
    변형단계 (d)는, 상기 GOP 내의 잔여 프레임의 증가하는 임시기준 값을 단계 (c)에서 삭제된 프레임들의 이에 대응하여 증가하는 임시기준 값으로 대체하는 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  66. 신규 데이터 스트림 실시간 전송시간을 검색하는 단계를 포함하는 것을 특징으로 하는 디지털 인코드된 구 데이터 스트림의 접속(splice-out)부분을 디지털 인코드된 신규 데이터 스트림의 접속(splice-in)부분으로 정렬하는 방법.
  67. 제 66항에 있어서,
    상기 검색단계는,
    (a) 상기 신규 데이터 스트림의 제 1 패킷의 프로그램 클럭 기준(PCR)을 결정하는 단계;
    (b) 상기 신규 데이터 스트림이 전송되는 경우에, 상기 신규 데이터 스트림의 제 1 순차헤더 전송과 상기 신규 데이터 스트림의 제 1 프레임의 제 1 디코드 타임 스탬프(DTS) 사이의 델타-주기를 결정하는 단계;
    (c) 상기 제 1 DTS와 프레임간 지연의 합으로서 연속 DTS를 결정하는 단계; 및
    (d) 상기 연속 DTS와 상기 델타-주기 사이의 차이로서 상기 신규 데이터 스트림 실시간 전송시간을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  68. 제 66항에 있어서,
    상기 검색단계는, 상기 신규 데이트 스트림을 상기 구 데이터 스트림과 접속시키는 동안 실시간으로 달성되는 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  69. 제 67항에 있어서,
    상기 프레임간 지연은 1001/30,000 초 인 것을 특징으로 하는 인코드된 데이터 스트림 부분의 초기 프레임이 독립적으로 디코드될 수 있다는 것을 확신하기 위한 방법.
  70. 디지털 인코드된 신규 데이터 스트림의 접속(splice-in)부분으로 디지털 인코드된 구 데이터 스트림의 접속(splice-out)부분을 정렬하는 방법에 있어서,
    상기 신규 데이터 스트림이 전송되어 상기 신규 데이터 스트림이 상기 구 데이터 스트림의 상기 접속(splice-out)부분에 대한 디코딩 시간과 정렬하여 디코더에 의해서 수신되기 시작할 경우에,상기 신규 데이터 스트림의 수신시간 개시를 설정하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  71. 제 70항에 있어서,
    상기 설정단계는, 상기 데이터 스트림의 전송 중에 상기 모든 접속(splice-out)부분을 디코더가 수신하기 전에 상기 신규 데이터 스트림이 디코더에 의해서 수신되기 시작하는 경우에, 상기 신규 데이터 스트림에 대한 전송지연 파라미터를 설정하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  72. 제 71항에 있어서,
    상기 지연 파라미터와 일치하는 수의 널 패킷을 일 위치에서 상기 신규 데이터 스트림에 삽입하여, 상기 신규 데이터 스트림이 전송되는 경우에 상기 널 패킷이 다른 신규 데이터 스트림 데이터보다 상당히 이전에 전송되게 하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  73. 제 72항에 있어서,
    신규 데이터 스트림이 전송되는 경우에 디코더가 모든 상기 접속(splice-out)지점을 수신하기 이전에, 상기 삽입이 없다면 디코더에 의해서 수신될 데이터 패킷의 수와 상기 널 패킷의 수가 동일한 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  74. 제 70항에 있어서,
    상기 설정단계는, 전송중에 디코더가 상기 모든 접속(splice-out)부분을 수신한 후 상기 신규 데이터 스트림이 디코더에 의해서 수신되기 시작하는 경우에, 상기 신규 데이터에 대한 전송가속 파라미터를 설정하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  75. 제 74항에 있어서,
    상기 신규 데이터 스트림이 전송되는 경우에 상기 신규 데이터 스트림의 제 1 전송된 부분으로부터 상기 가속 파라미터와 일치하는 널 패킷의 수를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  76. 제 75항에 있어서,
    신규 데이터 스트림이 전송되는 경우에 디코더가 모든 상기 접속(splice-out)지점을 수신한 후에, 상기 삭제가 없다면 디코더에 의해서 수신될 데이터 패킷의 수와 상기 널 패킷의 수가 동일한 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  77. 디지털 인코드된 신규 데이터 스트림의 접속(splice-in)부분을 디지털 인코드된 구 데이터 스트림의 접속(splice-out)부분으로 정렬하는 방법에 있어서,
    상기 접속(splice-out)부분 및 접속(splice-in)부분은 각각 복수의 패킷을 포함하며,
    (a) 전송될 상기 접속(splice-out)부분의 마지막 패킷의 프로그램 클록 기준(PCR)에 대한 상기 접속(splice-out)부분을 분석하는 단계;
    (b) 상기 신규 데이터 스트림의 제 1 프레임의 제 1 디코드 타임 스탬프(DTS)와 제 1 순차헤더에 대한 상기 접속(splice-in)부분을 분석하는 단계;
    (c) 상기 신규 데이터 스트림의 연속 DTS를 결정하는 단계;
    (d) 단계 (a)의 접속(splice-out) PCR이 단계 (c)의 실시간 전송시간 이하인 경우, 상기 접속(splice-in)부분 이전에 전송될 때 상기 접속(splice-out)부분 의 디코딩과 상당히 동일한 시간에서 상기 접속(splice-in)부분의 전송을 일으킬 널 패킷의 총 수를 지시하는 값을 저장하는 단계; 및
    (e) 단계 (a)의 상기 접속(splice-out)부분 PCR이 상기 단계 (c)의 실시간 전송시간보다 큰 경우에, 상기 접속(splice-in)부분으로부터 삭제될 때 접속(splice-in)부분 PCR이 실시간 전송시간과 동일한 조건에 가깝게 되는 널 패킷의 총 수를 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 스트림 접속부분 정렬방법.
  78. 디지털 인코드된 데이터 스트림 전송기에 있어서,
    데이터 스트림 부분의 스케쥴된 전송시간이 가속화되고 지연되는 양을 결정하기 위한 이동수단; 및
    상기 이동수단에 의해서 결정된 양 만큼 가속화되고 지연된 전송시간에 상기 데이터 스트림 부분을 전송하기 위한 전송수단을 포함하는 것을 특징으로 하는 데이터 스트림 전송기.
  79. 제 78항에 있어서,
    상기 신규 데이터 스트림 데이터는 복수의 데이터 패킷으로서 수신되는 것을 특징으로 하는 데이터 스트림 전송기.
  80. 제 79항에 있어서,
    상기 양은 데이터 스트림 데이터의 데이터 패킷 수에 대응하는 시간으로서 계산되는 것을 특징으로 하는 데이터 스트림 접속기.
  81. 디지털 인코드된 구 데이터 스트림에 접속될 디지털 인코드된 신규 데이터 스트림을 전송하기 위한 전송기에 있어서,
    전송기; 및
    상기 신규 데이터 스트림을 상기 구 데이터 스트림에 접속하는 것에 대응하는 시간에 상기 신규 데이터 스트림의 신규 데이터 스트림 데이터의 전송을 스케쥴링하기 위한 비트-클록 수단을 포함하는 것을 특징으로 하는 전송기.
KR19997011390A 1998-04-04 1999-04-02 디지털 비디오 스트림의 접속방법 및 장치 KR20010013390A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/055,156 US7031348B1 (en) 1998-04-04 1998-04-04 Apparatus and method of splicing digital video streams
US09/055,156 1998-04-04
PCT/US1999/007302 WO1999052067A2 (en) 1998-04-04 1999-04-02 Apparatus and method of splicing digital video streams

Publications (1)

Publication Number Publication Date
KR20010013390A true KR20010013390A (ko) 2001-02-26

Family

ID=21995992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR19997011390A KR20010013390A (ko) 1998-04-04 1999-04-02 디지털 비디오 스트림의 접속방법 및 장치

Country Status (9)

Country Link
US (1) US7031348B1 (ko)
EP (1) EP0998726A2 (ko)
JP (1) JP2002507375A (ko)
KR (1) KR20010013390A (ko)
CN (1) CN1275289A (ko)
AU (1) AU3742399A (ko)
CA (1) CA2296592A1 (ko)
IL (1) IL133260A (ko)
WO (1) WO1999052067A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100851001B1 (ko) * 2002-01-23 2008-08-12 주식회사 엘지이아이 프로그램 기록/재생 장치
KR101309935B1 (ko) * 2008-01-10 2013-09-17 알카텔-루센트 유에스에이 인코포레이티드 인코딩된 멀티미디어 데이터 스트림을 스플라이싱하는 방법

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230193B1 (en) * 1996-10-31 2001-05-08 3Com Corporation Method and apparatus supporting network communications
WO2000001160A2 (en) 1998-06-29 2000-01-06 Limt Technology Ab Method and apparatus for splicing data streams
US7091968B1 (en) * 1998-07-23 2006-08-15 Sedna Patent Services, Llc Method and apparatus for encoding a user interface
US6754905B2 (en) 1998-07-23 2004-06-22 Diva Systems Corporation Data structure and methods for providing an interactive program guide
JP4605902B2 (ja) * 1998-07-23 2011-01-05 コムキャスト アイピー ホールディングス アイ, エルエルシー 双方向ユーザインターフェイス
US9924234B2 (en) 1998-07-23 2018-03-20 Comcast Ip Holdings I, Llc Data structure and methods for providing an interactive program
GB2347812A (en) * 1999-03-08 2000-09-13 Nds Ltd Real time splicing of video signals
US7096487B1 (en) 1999-10-27 2006-08-22 Sedna Patent Services, Llc Apparatus and method for combining realtime and non-realtime encoded content
US6904610B1 (en) 1999-04-15 2005-06-07 Sedna Patent Services, Llc Server-centric customized interactive program guide in an interactive television environment
US6754271B1 (en) 1999-04-15 2004-06-22 Diva Systems Corporation Temporal slice persistence method and apparatus for delivery of interactive program guide
US6330286B1 (en) * 1999-06-09 2001-12-11 Sarnoff Corporation Flow control, latency control, and bitrate conversions in a timing correction and frame synchronization apparatus
WO2001031914A1 (en) 1999-10-27 2001-05-03 Diva Systems Corporation Picture-in-picture and multiple video streams using slice-based encoding
AU2002314450A1 (en) * 2001-03-23 2002-10-08 Popwire.Com Method and apparatus for streaming video
US7068719B2 (en) 2001-06-01 2006-06-27 General Instrument Corporation Splicing of digital video transport streams
US7274862B2 (en) * 2001-09-27 2007-09-25 Sony Corporation Information processing apparatus
US7620699B1 (en) * 2002-07-26 2009-11-17 Paltalk Holdings, Inc. Method and system for managing high-bandwidth data sharing
US9456243B1 (en) 2003-06-06 2016-09-27 Arris Enterprises, Inc. Methods and apparatus for processing time-based content
JP3823191B2 (ja) * 2003-07-31 2006-09-20 松下電器産業株式会社 データ出力制御装置
KR101022471B1 (ko) * 2004-01-17 2011-03-16 삼성전자주식회사 멀티미디어 데이터를 기록한 정보저장매체, 그 재생방법및 재생장치
CN1320820C (zh) * 2004-02-13 2007-06-06 威盛电子股份有限公司 传输影像帧的方法
WO2006105010A1 (en) 2005-03-25 2006-10-05 Neocific, Inc. Methods and apparatus for cellular broadcasting and communication system
US20060075449A1 (en) * 2004-09-24 2006-04-06 Cisco Technology, Inc. Distributed architecture for digital program insertion in video streams delivered over packet networks
US8218439B2 (en) * 2004-11-24 2012-07-10 Sharp Laboratories Of America, Inc. Method and apparatus for adaptive buffering
CN101164347B (zh) * 2005-04-26 2010-08-25 汤姆森许可贸易公司 同步流打包
US8155098B2 (en) 2005-06-09 2012-04-10 Neocific, Inc. Methods and apparatus for power efficient broadcasting and communication systems
US8861590B2 (en) * 2005-07-29 2014-10-14 Arris Enterprises, Inc. Methods and systems for signal insertion
US8229983B2 (en) 2005-09-27 2012-07-24 Qualcomm Incorporated Channel switch frame
NZ566935A (en) * 2005-09-27 2010-02-26 Qualcomm Inc Methods and apparatus for service acquisition
JP2007124197A (ja) * 2005-10-27 2007-05-17 Sharp Corp 受信機、通信方法、送受信システム
US7738768B1 (en) 2005-12-16 2010-06-15 The Directv Group, Inc. Method and apparatus for increasing the quality of service for digital video services for mobile reception
US20080310451A1 (en) * 2005-12-23 2008-12-18 Koninklijke Philips Electronics N.V. Splitting of a Data Stream
US8218651B1 (en) * 2006-02-28 2012-07-10 Arris Group, Inc System and method for splicing
US8326927B2 (en) * 2006-05-23 2012-12-04 Cisco Technology, Inc. Method and apparatus for inviting non-rich media endpoints to join a conference sidebar session
US8358763B2 (en) * 2006-08-21 2013-01-22 Cisco Technology, Inc. Camping on a conference or telephony port
CN103024444B (zh) * 2006-11-14 2015-11-18 高通股份有限公司 用于信道切换的系统及方法
EP2098077A2 (en) * 2006-11-15 2009-09-09 QUALCOMM Incorporated Systems and methods for applications using channel switch frames
US8121277B2 (en) * 2006-12-12 2012-02-21 Cisco Technology, Inc. Catch-up playback in a conferencing system
US20080155581A1 (en) * 2006-12-21 2008-06-26 General Instrument Corporation Method and Apparatus for Providing Commercials Suitable for Viewing When Fast-Forwarding Through a Digitally Recorded Program
US8179979B2 (en) * 2007-05-01 2012-05-15 Intel Corporation Detection and compensation of discontinuities in data stream
EP2232843A4 (en) * 2007-12-19 2011-07-27 Colin Simon DIGITAL VIDEO AND AUDIO FLOW SYNCHRONIZATION DEVICE AND METHOD FOR MULTIMEDIA PRESENTATION DEVICES
US8966103B2 (en) * 2007-12-21 2015-02-24 General Instrument Corporation Methods and system for processing time-based content
CN101252685B (zh) * 2008-02-22 2011-04-27 华为技术有限公司 解码方法及装置
US8904426B2 (en) * 2008-06-30 2014-12-02 Rgb Networks, Inc. Preconditioning ad content for digital program insertion
US9009337B2 (en) 2008-12-22 2015-04-14 Netflix, Inc. On-device multiplexing of streaming media content
US20100225811A1 (en) * 2009-03-05 2010-09-09 Nokia Corporation Synchronization of Content from Multiple Content Sources
US9319754B2 (en) * 2009-04-28 2016-04-19 Vubites India Private Limited Method and apparatus for coordinated splicing of multiple streams
US8495105B2 (en) * 2009-12-22 2013-07-23 International Business Machines Corporation Consolidating input messages for social activity summarization
WO2012050838A1 (en) 2010-09-28 2012-04-19 Neocific, Inc. Methods and apparatus for flexible use of frequency bands
US8424025B2 (en) 2011-02-22 2013-04-16 Microsoft Corporation Interface for displaying content supporting hardware acceleration
EP2498494A1 (en) * 2011-03-11 2012-09-12 Thomson Licensing Decoder and method at the decoder for synchronizing the rendering of contents received through different networks
KR101860329B1 (ko) * 2011-05-05 2018-05-23 삼성전자주식회사 멀티미디어 파일 스킵 방법 및 이를 적용한 멀티미디어 장치
CN102769779B (zh) * 2011-05-05 2015-03-11 三星电子(中国)研发中心 一种多媒体文件的快速跳进方法
US9154813B2 (en) 2011-06-09 2015-10-06 Comcast Cable Communications, Llc Multiple video content in a composite video stream
US9264508B2 (en) 2011-08-19 2016-02-16 Time Warner Cable Enterprises Llc Apparatus and methods for reduced switching delays in a content distribution network
US9363540B2 (en) 2012-01-12 2016-06-07 Comcast Cable Communications, Llc Methods and systems for content control
KR101858695B1 (ko) * 2012-04-09 2018-05-16 엘지전자 주식회사 데이터 관리 방법
JP5891975B2 (ja) * 2012-07-02 2016-03-23 富士通株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法および動画像復号方法
JP6094126B2 (ja) * 2012-10-01 2017-03-15 富士通株式会社 動画像復号装置
JP6728154B2 (ja) * 2014-10-24 2020-07-22 ドルビー・インターナショナル・アーベー オーディオ信号のエンコードおよびデコード
EP3160145A1 (en) * 2015-10-20 2017-04-26 Harmonic Inc. Edge server for the distribution of video content available in multiple representations with enhanced open-gop transcoding
CN105323636A (zh) * 2015-10-29 2016-02-10 无锡天脉聚源传媒科技有限公司 一种视频处理方法及装置
US10652594B2 (en) 2016-07-07 2020-05-12 Time Warner Cable Enterprises Llc Apparatus and methods for presentation of key frames in encrypted content
US11109290B2 (en) 2017-08-04 2021-08-31 Charter Communications Operating, Llc Switching connections over frequency bands of a wireless network
US10958948B2 (en) * 2017-08-29 2021-03-23 Charter Communications Operating, Llc Apparatus and methods for latency reduction in digital content switching operations
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
CN111835697B (zh) * 2019-04-23 2021-10-01 华为技术有限公司 一种媒体流发送方法、装置、设备和系统
CN111866568B (zh) * 2020-07-23 2023-03-31 聚好看科技股份有限公司 一种显示设备、服务器及基于语音的视频集锦获取方法
US11838033B1 (en) * 2022-09-20 2023-12-05 Western Digital Technologies, Inc. Partial speed changes to improve in-order transfer

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3979771A (en) * 1975-03-19 1976-09-07 Xerox Corporation Magnetic tape phase encoded data read circuit
US5534944A (en) 1994-07-15 1996-07-09 Matsushita Electric Corporation Of America Method of splicing MPEG encoded video
US5612900A (en) 1995-05-08 1997-03-18 Kabushiki Kaisha Toshiba Video encoding method and system which encodes using a rate-quantizer model
US5659539A (en) * 1995-07-14 1997-08-19 Oracle Corporation Method and apparatus for frame accurate access of digital audio-visual information
WO1997046027A1 (en) * 1996-05-29 1997-12-04 Sarnoff Corporation Preserving synchronization of audio and video presentation
US6137834A (en) 1996-05-29 2000-10-24 Sarnoff Corporation Method and apparatus for splicing compressed information streams
US5880792A (en) * 1997-01-29 1999-03-09 Sarnoff Corporation Command and control architecture for a digital studio
US5917830A (en) * 1996-10-18 1999-06-29 General Instrument Corporation Splicing compressed packetized digital video streams
US6038000A (en) * 1997-05-28 2000-03-14 Sarnoff Corporation Information stream syntax for indicating the presence of a splice point
US6058109A (en) * 1997-02-04 2000-05-02 The Kohl Group, Inc. Combined uniform rate and burst rate transmission system
US20020154694A1 (en) * 1997-03-21 2002-10-24 Christopher H. Birch Bit stream splicer with variable-rate output
US5982436A (en) * 1997-03-28 1999-11-09 Philips Electronics North America Corp. Method for seamless splicing in a video encoder
US6101195A (en) * 1997-05-28 2000-08-08 Sarnoff Corporation Timing correction method and apparatus
AU9122998A (en) 1997-09-12 1999-04-05 Imedia Corporation Seamless splicing of compressed video programs
US6034746A (en) * 1997-10-27 2000-03-07 International Business Machines Corporation System and method for inserting data into a digital audio/video data stream
US6029045A (en) * 1997-12-09 2000-02-22 Cogent Technology, Inc. System and method for inserting local content into programming content
US6049569A (en) * 1997-12-09 2000-04-11 Philips Electronics N.A. Corporation Method and apparatus for encoding digital video bit streams with seamless splice points and method and apparatus for splicing such digital video bit streams

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100851001B1 (ko) * 2002-01-23 2008-08-12 주식회사 엘지이아이 프로그램 기록/재생 장치
KR101309935B1 (ko) * 2008-01-10 2013-09-17 알카텔-루센트 유에스에이 인코포레이티드 인코딩된 멀티미디어 데이터 스트림을 스플라이싱하는 방법

Also Published As

Publication number Publication date
US7031348B1 (en) 2006-04-18
WO1999052067A3 (en) 2000-02-24
AU3742399A (en) 1999-10-25
IL133260A (en) 2007-05-15
JP2002507375A (ja) 2002-03-05
WO1999052067A2 (en) 1999-10-14
IL133260A0 (en) 2001-04-30
CN1275289A (zh) 2000-11-29
EP0998726A2 (en) 2000-05-10
CA2296592A1 (en) 1999-10-14

Similar Documents

Publication Publication Date Title
KR20010013390A (ko) 디지털 비디오 스트림의 접속방법 및 장치
EP1397918B1 (en) Splicing of digital video transport streams
US6101195A (en) Timing correction method and apparatus
JP4503739B2 (ja) 情報ストリームの高フレーム精度シームレス・スプライシング
US6993081B1 (en) Seamless splicing/spot-insertion for MPEG-2 digital video/audio stream
US7227899B2 (en) Method and system for re-multiplexing of content-modified MPEG-2 transport streams using interpolation of packet arrival times
KR100226528B1 (ko) 다중화 압축화상/음성데이타의 복호장치
US6038000A (en) Information stream syntax for indicating the presence of a splice point
US6785289B1 (en) Method and apparatus for aligning sub-stream splice points in an information stream
US6181383B1 (en) Method and apparatus for preserving synchronization of audio and video presentation when splicing transport streams
EP1002424B1 (en) Processing coded video
US20100150179A1 (en) Remultiplexing apparatus
US20060093045A1 (en) Method and apparatus for splicing
KR19980032953A (ko) 압축된 패킷화 디지털 비디오스트림의 접속
KR19980087430A (ko) 정보 스트림 프레임 동기 방법 및 장치
EP1095520A2 (en) Method and apparatus for splicing data streams
CA2303149C (en) Seamless splicing of compressed video programs
US7693222B2 (en) Method and system for re-multiplexing of content-modified MPEG-2 transport streams using PCR interpolation
EP0954924A1 (en) Information stream syntax for indicating the presence of a splice point
US7139241B1 (en) Method for preventing buffer underflow during digital transport stream transmission, multiplexing and splicing
Ward et al. Seamless splicing for MPEG-2 transport stream video servers
KR100517794B1 (ko) 압축된정보스트림을스플라이싱하는방법및장치
CA2535457C (en) Method and system for re-multiplexing of content-modified mpeg-2 transport streams using pcr interpolation

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid