KR20040075956A - 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템 - Google Patents

시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템 Download PDF

Info

Publication number
KR20040075956A
KR20040075956A KR10-2004-7011372A KR20047011372A KR20040075956A KR 20040075956 A KR20040075956 A KR 20040075956A KR 20047011372 A KR20047011372 A KR 20047011372A KR 20040075956 A KR20040075956 A KR 20040075956A
Authority
KR
South Korea
Prior art keywords
data
start code
pattern
byte
emulation prevention
Prior art date
Application number
KR10-2004-7011372A
Other languages
English (en)
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 claimed from PCT/US2003/002137 external-priority patent/WO2003063499A2/en
Publication of KR20040075956A publication Critical patent/KR20040075956A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • H04N5/93Regeneration of the television signal or of selected parts thereof

Landscapes

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

Abstract

비트 레벨 이상의 세분도에서 시작 코드 에뮬레이션 방지에 대한 방법 및 시스템이 제공된다. 비트 레벨 이외의 레벨에서 오퍼레이팅함으로써, 인코더 및 디코더 측 모두에서의 처리 능력 요건이 감소될 수 있다. 하나 이상의 실시예에 따르면, 시작 코드 에뮬레이션 방지 방법은 단일 비트보다 큰 고정 크기의 데이터 부분에 관한 데이터 패턴을 찾는다. 특정 패턴이 발견되는 경우, 시작 코드 에뮬레이션 방지 데이터가 삽입되어 시작 코드 에뮬레이션을 방지한다. 삽입된 데이터는 단일 비트보다 크며, 일부 실시예에서, 바이트를 포함한다. 디코더는 삽입된 시작 코드 에뮬레이션 방지 데이터를 갖는 데이터를 디코딩하는 경우, 적합한 시작 코드들을 용이하게 확인할 수 있으며 시작 코드 에뮬레이션 데이터를 제거하여 보호된 오리지날 데이터를 제공할 수 있다. 또한, 페이로드 데이터가 크기에 있어서 정수의 바이트 크기를 라운드 업하는 것을 허용하며, 다음으로 필러 데이터가 디코더에 의해 용이하게 검출 가능한 방식으로 추가되는 것을 허용하는 데이터 스터핑 방법이 기술된다.

Description

시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및 시스템{METHODS AND SYSTEMS FOR START CODE EMULATION PREVENTION AND DATA STUFFING}
디지털 데이터는 통상적으로 임의 타입의 송신기로부터 임의 타입의 수신기로 전송된다. 송신기는 통상적으로 전송을 위해 데이터를 인코딩하는 인코더를 포함하며, 수신기는 통상적으로 디코더를 포함하는데, 디코더는 자체에 수신되는 데이터를 디코딩한다. 비디오 데이터, 오디오 데이터, 오디오/비디오 데이터, 텍스트 데이터, 컴퓨터 실행가능 프로그램 데이터, 아카이벌(archival) 데이터, 데이터베이스 정보 등의 여러 타입의 디지털 데이터가 존재한다. 디지털 데이터는 전송될 때 통상적으로 임의 타입의 채널로 전송된다. 마찬가지로, 컴퓨터 메모리 또는 임의의 기억 장치 또는 기억 매체는 본 발명의 목적을 위한 전송 채널로 고려될 수 있다.
디지털 데이터는 전송될 때 채널에서 데이터 내의 특정 포인트를 찾을 수 있는 것이 중요하다. 이는 채널을 통한 데이터 전송시 에러 또는 손실로부터 복구를 가능하게 하는 포인트, 전체 스트림의 시작 이외의 위치에서 디코딩 프로세스를 시작할 수 있게 하는 포인트 또는 여러 용도로 이용되는 여러 타입의 데이터를 찾을 수 있게 하는 포인트를 위치설정(locate)하는 등의 여러 용도로 수행된다. 따라서, 예를 들어, 디코더 측에서, 디지털 데이터를 처리하는 디코더 및 다른 컴포넌트는 종종 데이터가 적절하게 처리될 수 있도록 데이터의 컨텍스트를 알 필요가 있다. 전송된 제1 비트로 시작될 수 있었으며 디코더가 어떠한 에러도 없이 실행될 수 있었다면 이것은 그다지 중요하지 않다. 이 상황에서, 이상적으로 디코더는 데이터의 포맷이 무엇인지를 인식함에 따라 전송되고 있던 정보를 간단하게 트래킹할 수 있다. 불행히도, 이러한 이상적 상황은 자주 발생되지는 않는다. 디지털 데이터를 전송 및 수신하는 시스템을 설계 및 사용하는 사람에 대한 도전을 나타내는 에러 및 다른 우발 사항(contingency)이 발생된다. 데이터의 진행중인 브로드캐스트 스트림으로 되는 등의 일부 경우에, 디코더는 데이터 전송의 시작부에서 시작될 수 없다. 데이터 포맷 파싱(parsing)에 의한 포인트 위치설정은 또한 디코더에서 상당한 양의 복잡한 처리를 필요로 할 수도 있다.
여러 타입의 채널 환경에서, 이러한 문제는 데이터에서 소위 재동기화 마커를 제공함으로써 처리된다. 재동기화 마커는 시스템이 그것의 디코딩 프로세스를 시작하거나 에러로부터 복구될 수 있는 메카니즘을 제공한다. 예를 들어, 디지털 데이터가 일련의 비트 또는 바이트로서 스트리밍될 때, 스트림에서 재동기화 마커를 가짐으로써, 이벤트에서 복구하기 위해 전송시 에러가 발생되는 레퍼런스 포인트가 디코더에 제공될 수 있다.
재동기화 마커가 사용될 수 있는 하나의 방법은 시작 코드의 컨텍스트에서이다. 시작 코드는 특정 값을 갖는 비트 또는 바이트의 스트링이다. 일반적으로, 다수의 시스템은 바이트를 운반하는 경향이 있어(예를 들어, H.222.0/MPEG-2 시스템), 시작 코드는 바이트의 고유 값 스트링으로서 정의될 수 있다. 바이트의 고유 스트링은 임의의 패턴에 재동기화 포인트를 나타내는 존재를 제공한다. 재동기화 포인트는 통상적으로 임의의 독립적으로 디코딩 가능한 양의 데이터의 시작 또는 경계를 나타낸다. 예를 들어, H.262/MPEG-2 비디오 데이터에서, 재동기화 포인트는 슬라이스(즉, 픽쳐의 독립적으로 디코딩 가능한 영역)의 시작, 픽쳐의 시작, GOP(즉, "픽쳐 그룹(Group of Picture)" 또는 픽쳐의 독립적으로 디코딩 가능한 시퀀스) 또는 새로운 비디오 시퀀스의 시작을 나타낼 수 있다. 디지털 비디오 스트림은 또한 시작 코드에 의해 우선될 수 있는 소위 보조(ancillary) 또는 보충 데이터를 포함할 수도 있다.
때때로, 시작 코드는 비디오 스트림 등의 데이터 스트림 내에서 사용되거나, 시스템의 다중 레벨에 의해 사용된다. H.222.0/MPEG-2 시스템 스펙은 시작 코드를 사용하고, 시스템-레벨 정보 및 오디오 정보에 인터리브(interleave)된 비디오 데이터의 스트림을 운반하는 시스템의 일례이다.
데이터 스트림 내에 재동기화 포인트를 제공함에 있어서는 시작 코드가 중요할 수 있기 때문에, 실제로 시작 코드를 나타내려고 하지 않는 제 위치에 데이터 스트림에서 시작 코드의 에뮬레이팅을 방지하는 것이 바람직하다.
예를 들어, 다음을 고려하자. 시작 코드는 새로운 유닛의 데이터의 시작을 확인할 수 있는 특정 패턴의 비트 또는 바이트를 정의한다. 시작 코드들 간에 임의의 데이터가 전송되는 경우, 임의의 데이터는 그 자체로 그리고 저절로, 시작 코드로서 사용되고 있는 동일한 패턴을 포함할 수 있다. 예를 들어, 운반되고 있는 데이터가 완전히 랜덤하다고 가정하면, 시작 코드가 K 비트 길이인 경우, 임의 특정 비트 위치에서 시작하는 비트의 시작 코드를 우연히 에뮬레이팅할 가능성은 1/2k이다.
일부 경우에, 시작 코드에서 비트 수가 큰 경우, 시작 코드가 우연히 에뮬레이팅되는 것이 전혀 가능성이 없을 수 있다고 판단될 수 있다. 이것은 임의의 오디오 데이터 포맷에 관한 경우이다. 통상적으로, 이들 포맷은 초당 비트수로 측정된 매우 높은 비트 레이트를 이용하지 않기 때문에, 시작 코드가 임의의 특정 간격의 시간 동안 우연히 에뮬레이팅될 가능성은 적다. 비디오 데이터에 관하여, 이것은 일반적으로 비디오가 종종 훨씬 높은 비트 레이트를 요구하는 경우가 아니다.
과거의 주요 비디오 코딩 표준(아마도 하나를 제외하고)에서, 데이터 페이로드(payload) 내의 비디오 신텍스 포맷은 시작 코드 에뮬레이션을 회피하도록 설계되었다. 즉, 어떤 종류의 데이터 엘리먼트가 비디오 신텍스로 구성될 것이라는 것이 알려지면, 우연한 시작 코드가 발생되지 않도록 신텍스가 주의해서 설계될 수 있다. 예를 들어, 전통의 비디오 코딩 표준에서의 시작 코드는 0 비트에 후속하여 1 비트의 롱 스트링으로 시작된다. 이 롱 스트링은 23개의 0 비트에 후속하여 1 비트를 포함할 수 있다. 전송되는 대부분의 데이터가 가변 길이 코드(종종 비공식적으로 호프만 코드라고 함)를 사용하여 코딩된 엔트로피(entropy)라고 가정한다.가변 길이 코드(VLC)는 여기서 예를 들어 표시된 심벌 세트 사이에서 선택하도록 이용되는 가변 깊이 트리 구조 코드로서 용도가 정의된다. 이진 트리 VLC를 이용하는 하나의 기술은 루트(root)로부터 유효 심벌을 나타내는 모든 리프(leaf)까지의 트리 경로가 임의의 지점에서 항상 "1"을 가지며, 트리 구조가 아주 깊지는 않다는 것을 명확히 하는 것이다.
따라서, 예를 들어, 모든 가변 길이 코드 스트링이 10 비트 길이 미만이고 모든 상기 스트링이 그 내에서 적어도 하나의 1 값 비트를 갖는다고 알려지면, VLC로부터의 코딩된 데이터 시퀀스가 18개 이상의 연속 제로 값 비트를 계속해서 포함할 수 있는 방법이 없다는 것이 알려진다. 즉, 최악의 시나리오는 1000000000에 0000000001이 후속하는 것이다. 따라서, 주의해서 신텍스가 설계되고 모든 0 및 모든 1 값 비트의 위치를 관찰하여 로우에서 얼마나 많은 0이 발생될 수 있는 지가 확인되면, 신텍스에서 발생될 수 있는 것보다 긴 0의 스트링을 포함하는 시작 코드가 사용될 수 있다. 예를 들어, 신텍스는 유효 신텍스가 시작 코드가 아닌 위치에서 23개의 0을 포함할 수는 없도록 설계될 수 있다. 따라서, 23개의 0의 모든 발생은 시작 코드이어야 하며 디코더는 시작 코드를 정확하게 검출할 수 있어야 한다.
전술한 오퍼레이션이 간단해 보이지만, 이 오퍼레이션은 아주 어려운 것 일수도 있는데, 이는 시작 코드 패턴이 우연히 전송될 수 없다는 것을 보장하기 위해 전송될 모든 가능성 있는 순서로, 전송될 가능성 있는 모든 데이터(비트 레벨에서)가 관찰되어야 하기 때문이다. 이것은 실수하는 경향이 있는 어려운 신텍스 설계방법이다.
이러한 비트-레벨 검색 설계 프로세스는 일반적으로 다수의 비디오 코딩 스펙(즉, H.261, MPEG-1, H.262/MPEG-2, H.263 대부분 및 MPEG-4)이 과거에 설계된 방법을 기술한다. 이에 대한 한 가지 예외는 수학적 스펙으로부터 알로그즘 방식으로 압축된 비트를 생성하는 산술적 코딩이라는 기술을 사용하는 ITU-T 권고 H.263의 부록 E이다. 여기서, 발생된 비트들을 검사하는 엔트로피 인코더의 마지막에 여분의 프로세스가 존재하며, 인코더 측의 로우(row)에서 너무 많은 0이 존재하면, "마커" 비트(1-비트)는 0의 선정된 개수의 0이 인카운터(encounter)되기 전에 삽입된다. 디코더 측에서, 디코더는 0의 개수를 카운트하여 임계 개수의 0을 인카운터하는 경우, 실제 시작 코드를 인카운터한다는 것을 인지한다. 디코더는 임계 개수 정도의 0을 찾으면, 후속하는 1 비트는 시작 코드 에뮬레이션을 방지하도록 삽입된 마커로서, 그 비트를 폐기(discard)하며, 실제 데이터의 연속으로서 다음의 비트를 취한다는 것이 인지된다.
이 솔루션이 갖는 문제점은 비트 레벨에서 인코더와 디코더가 입력 데이터를 검사 및 처리하도록 하는 것이다. 단일 비트 위치에 의해 처리되고 있는 데이터의 위치를 분석 및 쉬프트하는 것이 어려워지며 디코더를 바람직하지 않게 택싱(tax)할 수 있다. 비트 방식(bit-wise)의 쉬프팅은 또한 프로세서 의도 오퍼레이션이다.
따라서, 본 발명은 시작 코드 에뮬레이션 방지를 위한 개선된 방법 및 시스템을 제공하는 것과 관련된 관심에서 기인하였다.
본 발명은 시작 코드 에뮬레이션 방지 및 데이터 스터핑을 위한 방법 및 시스템에 관한 것이다.
도 1은 일 실시예에 따른 방법에서의 단계들을 기술한 흐름도.
도 2는 일 실시예에 따른 방법에서의 단계들을 기술한 흐름도.
도 3은 하나 이상의 실시예가 함께 실시될 수 있는 컴퓨팅 환경의 하이 레벨 다이어그램.
비트 레벨 이상의 세분도(granularity)로 수행된 오퍼레이션에 의해 시작 코드 에뮬레이션 방지에 관한 접근방법을 제공하는 방법 및 시스템이 기술된다. 비트 레벨과 다른 레벨에서 오퍼레이팅함으로써, 처리 효율은 증가될 수 있다. 하나 이상의 실시예에 따르면, 시작 코드 에뮬레이션 방지 방법은 단일 비트보다 큰 고정된 크기의 데이터 부분에 관한 데이터 패턴을 찾는다. 특정 패턴이 발견되는 경우, 시작 코드 에뮬레이션 방지 데이터(start code emulation prevention data)가 삽입되어 시작 코드 에뮬레이션을 방지한다. 삽입된 데이터는 단일 비트보다 크며, 일부 실시예에서, 바이트를 포함한다. 디코더는 삽입된 시작 코드 에뮬레이션 방지 데이터를 갖는 데이터를 디코딩하는 경우, 적합한 시작 코드들을 쉽게 확인할 수 있으며 다음으로 시작 코드 에뮬레이션 방지 데이터를 제거하여 전달되어야 하는 오리지날 데이터를 제공할 수 있다.
또한, 페이로드 데이터가 정수의 바이트 크기로 크기를 라운드 업(round up)하는 것을 허용하며 필러(filler) 데이터가 디코더에 의해 용이하게 검출 가능한 방식으로 추가되는 것을 허용하는 데이터 스터핑 방법이 기술된다.
개요
이하에 기술된 방법 및 시스템은 비트 레벨보다 높은 세분도에서의 시작 코드 에뮬레이션 방지에 대한 방법을 제공한다. 비트 레벨보다 높은 레벨에서 오퍼레이팅함으로써, 처리 효율은 증가될 수 있다. 본 명세서의 맥락상, 비트 레벨보다 높은 레벨에서의 오퍼레이팅은 단일 비트보다 큰 고정된 크기의 데이터 부분에 관한 데이터 패턴을 찾는 프로세스를 말하는 것이다. 예를 들어, 고정된 크기의 데이터 부분은 바이트(즉, 8비트), "워드"(즉, 16비트), "더블-워드"(32비트) 등을 포함할 수 있다. 따라서, 본 발명의 기술은 바이트, 워드 등 내에서 및 그 중에서 패턴을 찾을 수 있다.
또한, 페이로드 데이터가 크기에 있어서 바이트 양 등의 정수의 데이터 유닛 크기로 라운드 업되는 것을 허용하며, 필러 데이터가 디코더에 의해 쉽게 검출될 수 있는 방식으로 추가되는 것을 허용하는 데이터 스터핑 방법이 기술된다.
또한, 아래에 제공된 예들이 비디오 데이터의 상황에서 논의되지만, 본 발명의 기술은 통상적으로 인코딩 및 디코딩되는 및 시작 코드 에뮬레이션 방지가 바람직하거나 필요한 모든 타입의 데이터와 함께 채용될 수 있다는 것이 인식되고 이해되어야 한다. 이러한 데이터의 예들은 오디오 데이터, 오디오/비디오 데이터 등을 포함한다.
도 1은 일 실시예에 따른 방법에서의 단계들을 설명하는 흐름도이다. 상기 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어 또는 그 조합에서 실행될 수있다. 예시되고 기술된 실시예에서, 상기 방법은 소프트웨어에서 적어도 부분적으로 실행된다. 또한, 상기 방법은 2개의 상이한 부문(branch) - "인코더"로 지정된 부문과 "디코더"로 지정된 부문 - 을 갖는 것으로 예시되는 것이 인지될 것이다. "인코더" 부문은 인코더에 의해 또는 인코더와 함께 수행되는 단계들을 예시한다. 마찬가지로, "디코더" 부문은 디코더에 의해 또는 디코더와 함께 수행되는 단계들을 예시한다.
단계 100는 시작 코드 후에 전송을 위한 임의의 양의 데이터를 획득하거나 생성한다. 데이터는 임의의 적절한 데이터를 포함할 수 있다. 데이터 타입의 예들은 비디오 데이터, 오디오 데이터, 오디오/비디오 데이터 등의 양을 포함하지만, 이에 제한되지 않는다. 단계 101은 시작 코드를 갖는 데이터를 미리 결정한다. 이 단계는 단계 100에서 획득거나 생성되는 데이터에 시작 코드를 효과적으로 부가한다. 단계 102는 고정된 크기의 데이터 부분의 하나 이상의 패턴에 대한 입력 데이터를 검사 또는 검색한다. 예시되고 기술된 실시예에서, 검색되는 패턴(들)은 적어도 2개의 고정된 크기의 데이터 부분을 포함하며 각각의 데이터 부분은 적어도 2개의 비트를 포함한다. 단계 104는 패턴이 발견되는 지를 결정한다. 패턴이 발견되지 않는 경우, 상기 방법은 데이터가 전송될 수 있는 단계 108로 분기된다.
반면, 패턴이 발견되는 경우, 단계 106은 상기 패턴을 포함하는 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입한다. 예시되고 기술된 실시예에서, 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스(instance)는 하나 이상의 비트를 포함한다. 바람직하게는, 시작 코드 에뮬레이션 방지 데이터는 비트 수에 있어서 각각의 고정된 크기의 데이터 부분과 동일한 데이터 양을 포함한다. 따라서, 고정된 크기의 데이터 부분이 8 비트(바이트라고 하는 데이터 양)를 포함하며, 시작 코드 에뮬레이션 방지 데이터는 8 비트를 포함한다. 시작 코드 에뮬레이션 방지 데이터가 삽입된 후에, 단계 108은 데이터를 전송한다. 단계 110은 다음의 시작 코드 이전에 전송될 추가의 데이터가 있는 지를 결정한다. 만일 있는 경우에는, 상기 방법은 단계 102로 복귀하여 전술한 바와 같이 진행된다. 만일 없는 경우에는, 상기 방법은 단계 111에서, 전송할 추가의 데이터가 있는 지를 결정할 수 있다. 만일 있는 경우에는, 상기 방법은 단계 100로 복귀한다. 만일 없는 경우에는, 상기 방법은 단계 112에서 종료될 수 있다.
다른 측면에서, 다음을 고려하라. 이 특정 기술의 사용 일례가 시작 코드를 "시작 코드 프리픽스" 및 "시작 코드 타입" 서픽스로 구분하는 것이며, 상기 프리픽스는 하나의 고유 값 스트링이며 서픽스는 시작 코드를 추종하는 데이터 타입을 나타내는 것임을 인지하라. 특히, 이것은 MPEG-2 및 H.264/AVC 시작 코드의 구조이며 이하에서 "제1의 예시적 방법"이라는 제목의 섹션에서 사용된 구조이다. 특수 경우로서 프리픽스/서픽스 구조를 포함하는 훨씬 더 일반적 형태의 사용은 하나 이상의 시작 코드 패턴을 갖는 일반적인 견해이다. 이때, 하나 이상의 에뮬레이션 방지 패턴을 가질 수도 있다. 다양한 시작 코드 패턴이 다양한 에뮬레이션 방지 패턴과 구별되고 이러한 모든 패턴이 페이로드 데이터의 처리에서 회피되는 한, 스키마(scheme)도 따라서 기능을 할 것이다. 또한, 시작 코드 패턴이 모든 동일한 길이라고 가정되어서는 안된다. 이는 특정한 경우에 중요할 수 있는데, 이는 예를들어 H.264/AVC가 다중-길이 시작 코드를 사용하는 것으로 해석될 수 있기 때문이다.
디코더 측에서, 다음을 고려하라. 시작 코드 에뮬레이션 방지 데이터는 일단 인코더에 의해 삽입되면, 다른 데이터의 적절한 해석을 위해 동일 포인트에서 확인되어 제거되거나 무시될 수 있다. 디코더는 전송된 데이터를 수신하면, 적합한 시작 코드를 찾을 수 있다는 것도 고려하라. 디코더는 일단 적합한 시작 코드를 찾으면, 시작 코드-정의 데이터 영역이 어디에 위치하는 지를 안다. 디코더는 실제 데이터를 추가로 처리할 수 있도록 시작 코드 에뮬레이션 방지 데이터를 찾아서 제거할 수 있다.
특히, 단계 114는 시작 코드의 에뮬레이션을 방지하기 위해 인코더에 의해 처리된 전송된 데이터를 수신한다. 단계 118는 상기 데이터를 처리하여 시작 코드를 찾는다. 일단 시작 코드가 발견되어 적절하게 처리되면(예를 들어, 판독 및 폐기되면), 단계 120은 데이터를 검색하여 시작 코드 에뮬레이션 방지 데이터를 확인한다. 시작 코드 에뮬레이션 방지 데이터가 발견되면, 단계 122는 시작 코드 에뮬레이션 방지 데이터를 제거한다. 시작 코드 에뮬레이션 방지 데이터가 제거되면, 상기 데이터는 수신된 데이터의 타입에 대한 일반적인 방식으로 처리될 수 있다. 예를 들어, 상기 데이터는 단계 124에서, 컨슈머(consumer) 장치에 의해 사용될 수 있다.
제1의 예시적 방법
기술되는 방법은 도 1에서 도시되고 기술된 방법의 하나의 특정 예를 예시한다. 기술되는 방법에서, 에뮬레이션 방지 데이터의 바이트는 페이로드 데이터의 N+1 바이트의 스트링이 전체 시작 코드 프리픽스와 매칭되거나, 예뮬레이션 방지 바이트 값에 부가된 시작 코드 프리픽스의 제1 N 바이트와 매칭될 때에는 항상 삽입된다. 이 방법은 "제2의 예시적 방법"이라는 섹션에서 기술되는 방법보다는 덜 빈번하게 데이터를 부가하며, 따라서 페이로드 데이터를 전송하는 전송 능력 요건을 감소시킨다.
MPEG-2 시작 코드 프리픽스 구조는 바이트 정렬된 위치에서 시작되고 23개의 0 이후에 1을 갖는다. 이 시작 코드 프리픽스는 00000000 00000000 00000001로 직접 설명된다.
이 구조는 동일한 값을 갖는 임의 수의 바이트 N, 이후에 상이한 값을 갖는 임의의 다른 바이트를 포함하는 패턴으로서 일반화될 수 있다. MPEG-2에서, N=2, 그리고 첫번째 2개의 바이트는 0(이하에서 "W"라고 함), 그리고 마지막 바이트는 1(이하에서 "X"라고 함)이라고 할 수 있다. 따라서, 시작 코드 프리픽스는 패턴 WWX를 갖는다.
이들 3개의 바이트 후에, MPEG-2에서, 또 다른 바이트가 후속되고 이것이 어떤 종류의 시작 코드인지를 확인한다. 이 후속 바이트는 "Y"라고 한다. 이때 본질적으로, 시작 코드는 시작 코드 프리픽스 WWX로 구성되며, 이후에 시작 코드 타입을 확인하는 바이트 Y가 후속된다. 전체 MPEG-2 시작 코드는 WWXY로 표시될 수 있다.
시작 코드 프리픽스(WWX)는 고정 값을 갖지만, Y는 시작 코드의 타입(예를들어, 슬라이스, 픽쳐, GOP, 시퀀스, 시스템 등)을 나타내는 다수의 상이한 값들을 갖는다.
일 실시예에 따르면, 상기 데이터는 처리되어 패턴 WWX를 찾는다. WWX 패턴이 발견될 때, 시작 코드 에뮬레이션 방지 데이터는 시작 코드 에뮬레이션을 방지하기 위해 삽입된다. 여기서, 시작 코드 에뮬레이션 방지 데이터는 W 및 X 바이트의 값들과는 구별되는 값을 갖는 바이트 Z를 포함한다. 따라서, 인코더가 데이터의 바이트들을 점검하면서 패턴 WWX를 인지하고 있다고 가정하라. 상기 데이터에서 이러한 패턴을 찾는 것에 응답하여, 인코더는 값 Z를 갖는 바이트를 삽입하여 WWZX의 패턴을 제공한다.
이 포인트에서, 인코더는 디코더에 의해 전송되고 처리되어야 할 페이로드 데이터가 시작 코드 또는 시작 코드 프리픽스를 우연히 에뮬레이팅하지 않는다는 것을 보장한다. 다음을 고려하라. 페이로드 데이터는, WWX 패턴을 임의로 포함함으로써 시작 코드 프리픽스를 에뮬레이팅할 기회를 갖는 것과 마찬가지로, 시작 코드 에뮬레이션 방지 데이터를 포함하는 데이터를 임의로 에뮬레이팅할 기회도 갖는다. 즉, 페이로드 데이터는 패턴 WWZX를 고유하게 포함할 수 있다. 이것이 상기의 경우이고 인코더가 아무것도 하지 않는 경우에, 디코더가 시작 코드 에뮬레이션 방지 데이터를 제거하려고 시도할 때, 디코더는 이 경우에 실제 데이터인 Z 바이트를 제거할 것이다.
따라서, 기술된 실시예에서, 인코더는 페이로드 데이터가 시작 코드 또는 시작 코드 프리픽스를 에뮬레이팅하는 것을 방지하는 것 뿐만 아니라, 상기 데이터가시작 코드 에뮬레이션 방지 데이터를 사용한 결과로 생성된 데이터 패턴을 에뮬레이팅하는 것을 방지하도록 구성된다. 특히, 이 예에서, 인코더는 패턴 WWZ를 확인하는 경우, 제2의 W 및 Z 사이에서 값 Z를 갖는 바이트를 삽입하여 WWZZ의 패턴을 제공한다(삽입된 바이트 Z는 이하에서 기술되는 제1의 Z이다).
처리된 데이터를 디코더의 관점에서 고려하라. 디코더는 WWZ 이후에 Z 또는 X를 포함하는 임의 패턴의 바이트들을 보는 경우에, 제1의 Z가 인코더에 의해 삽입된 에뮬레이션 방지 바이트라는 것을 인지한다. 따라서, 디코더는 제1의 Z를 폐기할 수 있다. 따라서, 이 예에서, 에뮬레이션 방지 바이트가 삽입될 수 있는 2가지 상황이 존재한다. 제1 상황은 상기 데이터가 시작 코드 또는 시작 코드 프리픽스를 우연히 에뮬레이팅하는 경우이다. 제2 상황은 상기 데이터가 삽입된 에뮬레이션 방지 바이트를 갖는 데이터를 우연히 에뮬레이팅하는 경우이다.
또 다른 경우에, 디코더는 단순히 적절한 패턴을 찾아서 에뮬레이션 방지 바이트를 폐기하고, 상기 데이터를 일반적인 경우로 처리할 수 있다.
보다 프로그램적인 경향으로 상기 처리를 설명하기 위하여, 다음을 고려하라. 인코더 측에서, B 바이트의 패킷 P[]를 전송하기 위하여, 동일한 값 W의 N개 이상의 바이트와 상이한 값 X의 마지막 바이트로 구성되는 시작 코드 프리픽스로 시작되어, 값 Y를 갖는 1 바이트의 시작 코드 타입 서픽스를 확인하는 것이 후속되면, 값 Z를 갖는 에뮬레이션 방지 바이트를 삽입하는 후속하는 의사 코드 프로세스가 오퍼레이팅되는데(W, X, Y 및 Z는 서로 상이한 값을 가지며, P[B-1]는 W와 동일하지 않다), 여기서 채널을 채우기 위해 전송할 여분 데이터의 양은 E에 의해 특정된다:
상기 의사-코드에서, 함수 "send_byte( )"는 데이터 유닛의 전송을 오퍼레이팅하는 것을 가정된다(도 1의 단계 108).
디코드 측에서, 패킷을 수신하기 위하여, 동일한 값 W의 N개 이상의 바이트와 상이한 값 X의 마지막 바이트로 구성되는 알려진 시작 코드 프리픽스를 디코더가 이미 발견, 판독 및 폐기한 것으로 가정하라. 또한, 값 Z를 갖는 에뮬레이션 방지 바이트를 제거하는 동안, 알려지지 않은 단일-바이트 시작 코드 타입 서픽스를 변수 Y로 판독하고 페이로드 데이터의 패킷을 어레이 P[]로 판독하고 페이로드 데이터의 양을 결정하며 변수 B에서 수량 표시를 배치하는 것이 바람직하다고 가정하라(W, X, Y 및 Z는 서로 상이한 값을 가지며, P[B-1]는 W와 동일하지 않다):
상기 의사-코드에서, 함수 "receive_byte( )"는 하나의 데이터 유닛의 수신을 오퍼레이팅하는 것으로 가정되며 함수 "more_data( )"는 수신될 보다 많은 임의의 데이터 유닛이 존재하는 지를 결정하는 것으로 가정된다(이 2개의 함수는 도 1의 단계 114를 포함한다).
전술된 방법은 시작 코드 이전에 임의의 양의 W-값 스터핑을 허용한다. N에 대한 W-값 프리픽스들을 확정(fix)하는 공식(formulation)들이 동일하게 가능하다.
제2의 예시적 방법
기술되는 방법은 도 1에서 도시되고 기술된 방법의 하나의 특정 예를 예시한다. 여기서, 상기 방법은 페이로드에서의 N 바이트 데이터 스트링이 시작 코드 프리픽스의 제1의 N 바이트와 매칭될 때는 항상, 후속하는 페이로드 데이터의 값에 관계없이 예뮬레이션 방지 데이터의 바이트를 삽입한다. 상기 예의 명칭(nomenclature)을 이용하여, 상기 데이터가 패턴 "WW"에 후속하여 어느 것이든 포함하하는 경우, 상기 방법은 에뮬레이션 방지 바이트를 삽입한다. 따라서, 인코더는 패턴 WW를 확인하는 경우, 에뮬레이션 방지 바이트를 삽입하여 패턴 WWZ를 제공한다.
제1의 기술 방법과 바로 이전에 기술된 방법 간의 차이는 제1 방법이 제1의 N+1 바이트를 보고 에뮬레이션 방지 바이트를 삽입할 위치를 확인하는 것인 반면, 바로 이전에 기술된 방법은 제1의 N 바이트를 보는 것이다.
상기 제1 방법은 전송될 여분의 데이터 양을 감소시키는 반면 바로 이전에 기술된 방법은 단순한 룰을 적용하여 오퍼레이팅한다. 따라서, 2가지 방법은 모두 전송된 데이터 량을 감소시키고 룰의 복잡성을 감소키는 것 간의 선택을 제공한다. 기술된 제1 방법에 있어서, 데이터 양은 기술된 제2 방법의 데이터 양에 비해 감소된다. 기술된 제2 방법에 있어서, 보다 단순한 룰이 이용된다.
보다 프로그램적인 경향에서 상기 처리를 설명하기 위하여, 다음을 고려하라. 인코더 측에서, B 바이트의 패킷 P[]를 전송하기 위하여, 정확히 동일한 값 W의 N 바이트 및 상이한 값 X의 마지막 바이트로 구성되는 시작 코드 프리픽스로 시작하여, 값 Y를 갖는 1 바이트의 시작 코드 타입 서픽스의 확인이 후속되는 경우, 값 Z를 갖는 에뮬레이션 방지 바이트를 삽입하는 후속하는 의사 코드 프로세스가 오퍼레이팅된다(W, X, Y 및 Z는 서로 상이한 값을 가지며, P[B-1]은 W와 동일하지 않다):
상기 의사-코드에서, 함수 "send_byte()"는 데이터 유닛의 전송을 오퍼레이팅하는 것으로 가정된다(도 1의 단계 108).
디코드 측에서, 패킷을 수신하기 위하여, 정확히 동일한 값 W의 N개의 바이트와 상이한 값 X의 마지막 바이트로 구성되는 알려진 시작 코드 프리픽스를 디코더가 이미 발견, 판독 및 폐기한 것으로 가정하고, 값 Z를 갖는 에뮬레이션 방지 바이트를 제거하는 동안, 알려지지 않은 단일-바이트 시작 코드 타입 서픽스를 변수 Y로 판독하고 페이로드 데이터의 패킷을 어레이 P[]로 판독하고 페이로드 데이터의 양을 결정하며 변수 B에서 수량 표시를 배치하는 것이 바람직하다고 가정하라(W, X, Y 및 Z는 서로 상이한 값을 가지며, P[B-1]는 W와 동일하지 않다):
상기 의사-코드에서, 함수 "receive_byte( )"는 하나의 데이터 유닛의 수신을 오퍼레이팅하는 것으로 가정되며 함수 "more_data( )"는 수신될 보다 많은 임의의 데이터 유닛이 존재하는 지를 결정하는 것으로 가정된다(이 2개의 함수는 도 1의 단계 114를 포함한다).
전술한 방법이 대량의 이상적인 임의의 입력 페이로드 데이터 양을 기술된 제2 방법에 대한 대략 1/256N및 기술된 제1 방법에 대한 1/256(N+1)의 인자(factor)만큼 확대될 것이라고 믿어진다. N이 큰 경우(예를 들어, 2 이상, MPEG-2 시작 코드에 대한 N=2를 인지), 이들 양은 작다. 페이로드에 대한 최악의 경우를 고려한 확대 인자는 상기 제2 방법에 대한 1/N 및 상기 제1 방법에 대한 1/(N+1)이라고 믿어진다. N이 증가되는 경우, 비록 시작 코드 자체에 사용된 데이터 양은 증가되지만, 페이로드 확대 인자는 만족스럽고 최악의 경우를 고려한 분석 모두에서 감소된다.
전술한 에뮬레이션 방지 프로세스가 전송을 시작하기 전에 패킷 내에 얼마나 많은 데이터가 있는지를 인지하는 지에 의존하지는 않는다는 것이 이해되어야 한다. 따라서, 상기 프로세스는 중대한 지연을 부가시키지는 않는다.
상기 제2 방법의 이 공식은 삽입된 에뮬레이션 방지 바이트가 값 Z를 갖는 단일의 바이트라는 것을 가정한다. 대신에, 삽입된 데이터의 제1 바이트가 W 또는 X와 동일하지 않고, 시작 코드를 에뮬레이트하거나 프리픽스의 시작이 지속되는 것으로 나타나는 한, 에뮬레이션 방지 바이트를 위해 임의의 값 또는 다중 값 또는 하나 이상의 값 스트링을 사용하는 것이 가능하다.
이들 에뮬레이션 방지 바이트(예를 들어, 또는 아마도 MSB만을 '1'로 세팅하고 ASCII 문자를 전송하기 위해 다른 7 비트를 사용하는 H.263-스타일 GOB 프레임 ID/픽쳐 시퀀스 번호 등)에서 정보를 운반하는 것도 가능하다.
디코더 측의 패킷의 마지막에서 무슨 일이 발생되는 지를 고려한다면, 데이터 패킷 페이로드의 마지막 바이트가 W가 아닌 경우에 오퍼레이션을 제어하기가 보다 용이하다는 것을 인지한다. 이것은 시작 코드 이전에 전송된 마지막 바이트가 에뮬레이션 방지 바이트일 필요는 없으며 검출 가능한 영역이 페이로드 데이터의 마지막과 다음의 시작 코드에 대한 W와 동일한 바이트 시퀀스의 시작 사이에 디코더에 의해 위치할 수 있다는 것을 의미한다. 이것이 상기 경우가 되도록 함으로써 페이로드의 마지막 이후 및 페이로드의 마지막이 어디인지의 트래킹을 중지하지 않고 다음의 시작 코드 이전에 임의의 양의 W 바이트(예를 들어, 0 바이트)에서 스터핑되는 것도 허용한다.
데이터 스터핑
일반적으로, 비디오 데이터에 있어서, 데이터 페이로드로서 전송되는 데이터는 정수의 바이트일 수 없다. 예를 들어, 데이터는 2개의 시작 코드들 간에 전송될 627 비트를 가질 수 있다. 그러나, 시스템 다중 레벨은 바이트에서 오퍼레이팅될 수 있다. 이것은 MPEG-2 스펙에 해당된다. 전송 에러에 의해 발생된 임의의 거짓(false) 시작 코드 패턴의 검출을 가능하게 하거나 페이로드 시작의 데이터 콘텐츠에 대한 단순한 디코딩 프로세스를 가능하게 하는 등의 다른 이유 또한 패킷이 바이트 등의 정수의 데이터 유닛을 포함하는 요건을 정당화할 수 있다. 따라서, 627 비트의 데이터를 운반하기 위하여 조금 더 많은 데이터가 전송되어야 할 수도 있다. 이때, 데이터를 정수 바이트로 만들기 위해 데이터를 어떻게 채우느냐(pad out)가 문제가 된다.
단순히 여분의 필러(filler) 데이터를 전송하는 것이 유용한 다른 상황이 있다. 예를 들어, 채널이 1 메가비트/초의 용량을 가지며 전송될 페이로드 데이터의 양이 단지 900 킬로비트/초인 경우, 필러 데이터로 채널이 채워질 필요가 있거나 그렇게 채워지는 것이 요구될 수 있다.
일 실시예에 따르면, 데이터 스터핑 기술은 여분의 데이터가 채널에 부가되는 것을 가능하게 하여, 본질적으로 페이로드 데이터를 채운다.
도 2는 비트 스트링이 0으로 시작되는 것을 시작 코드가 가정되는 일 실시예에 따른 데이터 스터핑 방법에서 단계들을 기술하는 흐름도이다. 단계 200은 전송되어야 하는 데이터의 마지막의 위치를 설정한다. 단계 202는 페이로드 데이터의마지막 비트 이후에 "1" 비트를 삽입한다. 단계 204는 정수 바이트를 전송하도록 요구되는 추가 비트 수를 결정한다. 단계 206은 삽입된 "1" 비트 이후에 요구되는 수의 "0" 비트를 삽입한다. 단계 208은 임의의 원하는 수의 필러 데이터를 부가한다. 필러 데이터는 실제(true) 페이로드 데이터 및 의도된 시작 코드의 위치에 대한 혼동을 방지하도록 설계된 임의의 데이터 패턴으로 구성될 수 있다. 이것은 통상적으로 값 "0"의 바이트를 삽입함으로써 실행된다.
일례로서, 다음을 고려하라. 627 비트가 전송되는 것으로 가정하라. 여기서, 단계 202는 627번째 비트 이후에 "1" 비트를 삽입한다. 다음으로, 단계 204는 4개 이상의 비트가 정수 바이트 - 여기서는, 79 바이트 - 를 제공하도록 요구된다는 것을 결정한다. 따라서, 단계 206는 삽입된 "1" 비트 이후에 4개의 "0" 또는 0000을 삽입한다. 정수 바이트를 구현함으로써, 원하는 경우에 단계 208은 필러 데이터의 임의의 원하는 수의 바이트를 부가할 수 있다. 이 특정 예에서, 값 0을 갖는 바이트가 삽입될 수 있다. 필러 데이터는 단순히 필러 데이터로서 또는 디코더가 임의의 용도로 사용할 수 있는 정보를 포함하는 등의 임의의 다른 용도로 사용될 수 있다.
디코더에서의 상황을 고려하라. 디코더는 스터핑된 데이터를 수신하여 데이터의 마지막에서 시작되고 데이터를 통해 뒤로 볼 수 있다. 디코더가 초기에 보는 모든 바이트는 "1" 비트를 갖는 바이트가 될 때까지 0 바이트일 것이다. "1" 비트는 페이로드 또는 실제 데이터의 마지막 위치를 디코더에 알려준다. 따라서, 디코더는 삽입된 "1" 비트를 찾으면, 실제 데이터가 끝나는 정확한 위치를 결정할 수있다.
따라서, 전술한 기술은 전송되는 비트 수가 정수 데이터 유닛을 포함하도록 전송되는 비트 수를 "라운드 업"하는데 사용될 수 있다. 또한, 이들 기술은 페이로드 데이터의 시작을 지정하는 시작 코드들 간에 필러 데이터를 스터핑하는 데 사용될 수 있다.
컴퓨팅 환경의 예
도 3은 전술한 시스템 및 관련 방법이 실행될 수 있는 적합한 컴퓨팅 환경(300)의 일례를 도시한다.
컴퓨팅 환경(300)은 적절한 컴퓨팅 환경의 일례에 불과하며 전술한 인코딩/디코딩 시스템의 용도 또는 기능의 범위를 제한하는 것이 아니라는 것이 이해되어야 한다. 컴퓨팅 환경(300)은 예시적 컴퓨팅 환경(300)에서 도시된 임의의 하나의 컴포넌트 또는 그 조합에 관한 임의의 의존도 또는 요건을 갖는 것으로 해석되어서는 안된다.
기술된 여러 실시예들은 다수의 다른 일반 용도 또는 특수 용도의 컴퓨팅 시스템 환경 또는 구성으로 실시될 수 있다. 매체 처리 시스템으로 사용되기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예들은 개인용 컴퓨터, 서버 컴퓨터, 소수의(thin) 클라이언트, 다수의(thick) 클라이언트, 핸드-헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋탑 박스, 프로그램 가능 컨슈머 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 모두를 포함하는 분산형 컴퓨팅 환경 등을 포함하지만 이에제한되지 않는다.
특정 실시예에서, 시스템 및 관련 방법은 컴퓨터에 의해 실행되는, 프로그램 모듈 등의 컴퓨터 실행 가능 명령의 일반적인 컨텍스트에서 적절하게 기술될 수 있다. 일반적으로 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터형을 실행하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 상기 실시예들은 또한 통신 네트워크를 통해 링크되는 원격 처리 장치들에 의해 태스크가 수행되는 분산형 컴퓨팅 환경에서 수행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 기억 장치를 포함하는 근거리 및 원거리 컴퓨터 기억 매체 모두에 배치될 수 있다. 기술된 컴퓨팅 시스템의 컴포넌트는 전술한 바와 같이 기능하는 인코더 및 디코더를 실행하는데 사용될 수 있다.
예시된 도 3의 실시예에 따르면, 하나 이상의 프로세서 또는 프로세싱 유닛(302), 시스템 메모리(304) 및 시스템 메모리(304)를 포함하는 각종 시스템 컴포넌트를 프로세서(302)에 결합시키는 버스(306)를 포함하는 컴퓨팅 시스템(300)이 도시된다.
버스(306)는 메모리 버스 또는 메모리 제어기, 주변 버스, 가속화된 그래픽 포트 및 각종 버스 아키텍쳐 중 임의의 것을 사용하는 프로세서 또는 근거리 버스를 포함하는 임의의 다수 중 하나 이상의 타입의 버스 구조를 나타낸다. 예를 들어, 이러한 아키텍쳐는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 근거리 버스 및 메자닌(Mezzanine) 버스로도 알려진PCI(Peripheral Component Interconnects) 버스를 포함하지만, 이에 제한되지 않는다.
컴퓨터(300)는 통상적으로 각종 컴퓨터 판독 가능 매체를 포함한다. 이러한 매체는 컴퓨터(300)에 의해 근거리에서 및/또는 원거리에서 액세스 가능한 임의의 이용 가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 착탈 가능 및 착탈 불가능 매체 모두를 포함한다.
도 3에서, 시스템 메모리(304)는 RAM(310) 등의 휘발성 메모리, 및/또는 ROM(308) 등의 비휘발성 메모리의 형태의 컴퓨터 판독 가능 매체를 포함한다. 예를 들어, 기동 동안, 컴퓨터(300) 내의 엘리먼트들 간에 정보를 전송하는 데 도움이 되는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS : 312)은 ROM(308)에 기억된다. RAM(310)은 통상적으로 프로세싱 유닛(들)(302)에 즉시 액세스 가능한 및/또는 프로세싱 유닛(들)(302)에 의해 현재 오퍼레이팅되는 데이터 및/또는 프로그램 모듈을 포함한다.
컴퓨터(300)는 또한 다른 착탈 가능/착탈 불가능, 휘발성/비휘발성 컴퓨터 기억 매체를 포함할 수 있다. 예를 들어, 도 3은 착탈 불가능하고 비휘발성인 자기 매체에서 판독 및 기록하기 위한 하드 디스크 드라이브(328)(도시되지 않았으며 통상적으로 "하드 드라이브"라고 함), 착탈 가능하고 비휘발성인 자기 디스크(332)(예를 들어, "플로피 디스크")에서 판독 및 기록하기 위한 자기 디스크 드라이브(330) 및 착탈 가능하고 비휘발성인 CD-ROM, DVD-ROM 또는 다른 광학 매체 등의 광학 디스크(336)에서 판독 및 기록하기 위한 광학 디스크 드라이브(334)를 도시하고 있다. 하드 디스크 드라이브(328), 자기 디스크 드라이브(330) 및 광학 디스크 드라이브(334)는 하나 이상의 인터페이스(326)에 의해 버스(306)에 각각 접속된다.
상기 드라이브들 및 이들과 관련된 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 및 컴퓨터(300)를 위한 다른 데이터를 비휘발성 기억장소에 제공한다. 여기서 기술된 예시적 환경이 하드 디스크(328), 착탈 가능한 자기 디스크(332) 및 착탈 가능한 광학 디스크(336)을 채택하지만, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, RAM, ROM 등의 컴퓨터에 의해 액세스 가능한 데이터를 기억할 수 있는 다른 타입의 컴퓨터 판독 가능 매체도 상기 예시적 오퍼레이팅 환경에서 사용될 수 있다는 것이 당업자에 의해 이해되어야 한다.
다수의 프로그램 모듈은 예를 들어, 오퍼레이팅 시스템(314), 하나 이상의 응용 프로그램(316)(예를 들어, 멀티미디어 응용 프로그램(324)), 다른 프로그램 모듈(318) 및 프로그램 데이터(320)를 포함하는 하드 디스크(328), 자기 디스크(332), 광학 디스크(336), ROM(308) 또는 RAM(310) 상에 기억될 수 있다. 사용자는 키보드(338) 및 포인팅 장치(340)(예를 들어, "마우스") 등의 입력 장치를 통해 커맨드 및 정보를 컴퓨터(300)에 입력할 수 있다. 다른 입력 장치는 오디오/비디오 입력 장치(들)(353), 마이크, 조이스틱, 게임 패드, 위성 안테나, 직렬 포트, 스캐너 등(미도시)을 포함할 수 있다. 이들 및 다른 입력 장치는 버스(306)에 결합되는 입력 인터페이스(들)(342)를 통해 프로세싱 유닛(들)(302)에 접속되지만,병렬 포트, 게임 패드 또는 범용 직렬 버스(USB) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터(356) 또는 다른 타입의 표시 장치 또한 비디오 어댑터 또는 비디오/그래픽 카드(344) 등의 인터페이스를 통해 버스(306)에 접속된다. 모니터 이외에, 개인용 컴퓨터는 통상적으로 출력 주변 인터페이스(346)를 통해 접속될 수 있는 스피커 및 프린터 등의 다른 주변 출력 장치(미도시)를 포함한다.
컴퓨터(300)는 원격 컴퓨터(350) 등의 하나 이상의 원격 컴퓨터에 대한 논리적인 접속을 이용하여 네트워킹된 환경에서 오퍼레이팅될 수 있다. 원격 컴퓨터(350)는 컴퓨터 관련하여 여기서 기술된 다수 또는 모든 엘리먼트 및 피쳐(feature)를 포함할 수 있다.
도 3에서 도시된 바와 같이, 컴퓨팅 시스템(300)은 근거리 통신망(LAN)(351) 및 광역 통신망(WAN)(352)을 통해 원격 장치(예를 들어, 원격 컴퓨터(350))에 통신 결합된다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
컴퓨터(300)는 LAN 네트워킹 환경에서 사용되는 경우, 적합한 네트워크 인터페이스 또는 어댑터(348)를 통해 LAN(351)에 접속된다. 컴퓨터(300)는 WAN 네트워킹 환경에서 사용되는 경우, 통상적으로 모뎀(354) 또는 WAN(352)을 통해 통신을 구현하기 위한 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(354)은 사용자 입력 인터페이스(342) 또는 다른 적합한 메카니즘을 통해 시스템 버스(306)에 접속될 수 있다.
네트워킹된 환경에서, 개인용 컴퓨터(300) 또는 그 일부에 관하여 기술된 프로그램 모듈은 원격 메모리 기억 장치에 기억될 수 있다. 예를 들어, 도 3은 원격 컴퓨터(350)의 메모리 장치에 상주하는 것으로 원격 응용 프로그램(316)을 예시하고 있지만, 이에 제한되지 않는다. 도시되고 기술되는 네트워크 접속이 예시적이고 컴퓨터들 간의 통신 링크를 구현하는 다른 수단이 사용될 수 있다는 것이 이해될 것이다.
결론
전술된 방법 및 시스템의 일부는 비트 레벨이 아닌 처리 레벨에서 시작 코드의 에뮬레이션 방지를 위해 제공될 수 있다. 이는 처리의 복잡성을 용이하게 할 수 있기 때문에 바람직하다. 본 명세서에서 설명된 기술은 임의의 적합한 컨텍스트, 예를 들어, 가변 길이 코드, 즉 호프만 코드 및 산술 코딩에 의해 생성된 콘텐츠를 포함하는 페이로드와 함께 사용될 수 있다. 또한, 일부 실시예는 원하는 경우에 정수 바이트가 전송되는 것을 보장할 수 있으며, 시작 코드, 에뮬레이션 방지 패턴을 위한 데이터 및 기본 페이로드 데이터 이외의 추가의 필러 데이터의 전송을 허용할 수 있는 데이터 스터핑을 위한 간단한 방법을 제공한다.
본 발명이 구조적 피쳐 및/또는 방법적 단계들에 대해 특정 언어로 기술되었지만, 첨부된 청구범위에서 정의된 본 발명은 기술된 특정 피쳐 또는 단계들에 제한될 필요는 없다는 것이 이해되어야 하며, 오히려, 특정 피쳐 및 단계들은 청구된 발명을 실행하는 바람직한 형태로서 개시된다.

Claims (163)

  1. 시작 코드를 이용하는 환경에서의 인코딩 전송을 위한 데이터 내에서 고정된 크기의 데이터 부분들의 적어도 하나의 패턴을 검색하는 단계 - 각각의 고정된 크기의 데이터 부분은 적어도 2개의 비트들을 포함함 - ; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 검색 단계는 비디오 데이터를 검색함으로써 수행되는 방법.
  3. 제1항에 있어서, 상기 검색 단계는 오디오 데이터를 검색함으로써 수행되는 방법.
  4. 제1항에 있어서, 상기 검색 단계는 오디오/비디오 데이터를 검색함으로써 수행되는 방법.
  5. 제1항에 있어서, 상기 검색 단계는 하나 이상의 패턴들을 검색함으로써 수행되며, 상기 패턴들 중 적어도 하나는 적어도 2개의 고정된 크기의 데이터 부분들을포함하는 방법.
  6. 제1항에 있어서, 상기 검색 단계는 다수의 패턴들을 검색함으로써 수행되는 방법.
  7. 제1항에 있어서, 상기 검색 단계는 다수의 패턴들을 검색함으로써 수행되며, 상기 패턴들 중 적어도 일부는 상이한 길이를 갖는 방법.
  8. 제1항에 있어서, 상기 검색 단계는 다수의 패턴들을 검색함으로써 수행되며, 각각의 패턴은 타입-표시 서픽스(suffix)가 후속되는 프리픽스(prefix)로서 구조화되는 방법.
  9. 제1항에 있어서, 상기 검색 단계는 다수의 패턴들을 검색함으로써 수행되며, 각각의 패턴은 타입-표시 서픽스(suffix)가 후속되는 프리픽스(prefix)로서 구조화되는데, 각각의 패턴의 프리픽스 길이 및 타입-표시 서픽스 중 하나 이상은 길이에 있어서 다른 패턴의 프리픽스 길이 및 타입-표시 서픽스 길이와 다를 수 있는 방법.
  10. 제1항에 있어서, 상기 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계는 에뮬레이션 방지 데이터의 다수의 상이한 패턴들 사이에서 선택하는 단계를 포함하는 방법.
  11. 제1항에 있어서, 상기 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계는 에뮬레이션 방지 데이터의 다수의 상이한 패턴들 사이에서 선택하는 단계를 포함하며, 상기 데이터의 각각의 패턴은 상이한 길이를 가질 수 있는 방법.
  12. 제1항에 있어서, 상기 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계는 하나 이상의 비트를 삽입하는 단계를 포함하는 방법.
  13. 제1항에 있어서, 상기 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계는 비트 수에 있어서 각각의 고정된 크기의 데이터 부분과 동일한 데이터 양을 삽입하는 단계를 포함하는 방법.
  14. 제1항에 있어서, 시작 코드 에뮬레이션 방지 데이터를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  15. 제1항에 있어서, 상기 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  16. 시작 코드를 이용하는 환경에서의 전송을 위한 데이터 내에서 고정된 크기의 데이터 부분들의 적어도 하나의 패턴을 검색하고 - 각각의 고정된 크기의 데이터부분들은 적어도 2개의 비트들을 포함함 - ; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하도록
    구성되는 인코더를 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  17. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가
    시작 코드를 이용하는 환경에서의 전송을 위한 데이터 내에서 고정된 크기의 데이터 부분들의 적어도 하나의 패턴을 검색하고 - 각각의 고정된 크기의 데이터 부분은 적어도 2개의 비트들을 포함함 - ; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하도록
    하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  18. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 비디오 데이터를 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  19. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 오디오 데이터를 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  20. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 오디오/비디오 데이터를 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  21. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 하나 이상의 패턴들을 검색하도록 하며, 상기 패턴들 중 적어도 하나는 적어도 2개의 고정된 크기의 데이터 부분들을 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  22. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 하나 이상의 비트를 포함하는 시작 코드 에뮬레이션 방지 데이터를 삽입하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  23. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 비트 수에 있어서 각각의 고정된 크기의 데이터 부분과 동일한 데이터 양을 삽입하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  24. 제17항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 시작 코드 에뮬레이션 방지 데이터를 포함하는 데이터를 전송하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  25. 시작 코드를 이용하는 환경에서의 전송을 위한 데이터 내에서 적어도 하나의 바이트 레벨 패턴을 검색하는 단계 - 상기 패턴은 다수의 바이트에 의해 정의됨 -; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계
    를 포함하는 방법.
  26. 제25항에 있어서, 상기 검색 단계는 비디오 데이터를 검색함으로써 수행되는 방법.
  27. 제25항에 있어서, 상기 검색 단계는 오디오 데이터를 검색함으로써 수행되는 방법.
  28. 제25항에 있어서, 상기 검색 단계는 오디오/비디오 데이터를 검색함으로써 수행되는 방법.
  29. 제25항에 있어서, 상기 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계는 적어도 하나의 바이트를 삽입하는 단계를 포함하는 방법.
  30. 제25항에 있어서, 시작 코드 에뮬레이션 방지 데이터를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  31. 제25항에 있어서, 상기 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  32. 시작 코드들을 이용하는 환경에서의 전송을 위한 데이터를 획득하고;
    상기 수신된 데이터 내에서 적어도 하나의 바이트-레벨 패턴을 검색하며 - 상기 패턴은 다수의 바이트에 의해 정의됨 - ; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하도록
    구성되는 인코더를 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  33. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가
    시작 코드들을 이용하는 환경에서의 전송을 위한 데이터를 획득하고;
    상기 수신된 데이터 내에서 적어도 하나의 바이트-레벨 패턴을 검색하며 - 상기 패턴은 다수의 바이트에 의해 정의됨 - ; 및
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하도록
    하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  34. 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터로 인코딩된 데이터를 수신하는 단계 - 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스(instance)는 다수의 비트를 포함함 - :
    상기 수신된 데이터 내에서 적합한(legitimate) 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하는 단계; 및
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하는 단계
    를 포함하는 방법.
  35. 제34항에 있어서, 상기 수신 단계는 비디오 데이터를 수신함으로써 수행되는 방법.
  36. 제34항에 있어서, 상기 수신 단계는 오디오 데이터를 수신함으로써 수행되는 방법.
  37. 제34항에 있어서, 상기 수신 단계는 오디오/비디오 데이터를 수신함으로써 수행되는 방법.
  38. 제34항에 있어서, 상기 기술된 단계들은 디코더에 의해 수행되는 방법.
  39. 제34항의 방법을 수행하도록 프로그래밍된 하나 이상의 컴퓨터 시스템.
  40. 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터로 인코딩된 데이터를 수신하고 - 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스는 다수의 비트를 포함함 - :
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하고;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하며; 및
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하도록
    구성되는 디코더를 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  41. 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터로 인코딩된 데이터를 수신하는 단계 - 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스는 하나 이상의 고정된 크기의 데이터 유닛을 포함함 - :
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하는 단계; 및
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하는 단계
    를 포함하는 방법.
  42. 제41항에 있어서, 상기 수신 단계는 비디오 데이터를 수신함으로써 수행되는 방법.
  43. 제41항에 있어서, 상기 수신 단계는 오디오 데이터를 수신함으로써 수행되는 방법.
  44. 제41항에 있어서, 상기 수신 단계는 오디오/비디오 데이터를 수신함으로써 수행되는 방법.
  45. 제41항에 있어서, 고정된 크기의 데이터 유닛은 바이트를 포함하는 방법.
  46. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제41항의 방법을 수행하도록 하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  47. 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터로 인코딩된 데이터를 수신하고 - 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스는 하나 이상의 바이트를 포함함 - :
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하고;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하며; 및
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하도록
    구성된 디코더.
  48. 제47항의 디코더를 구현하는 하나 이상의 컴퓨터 시스템.
  49. 시작 코드들을 사용하는 환경에서의 전송을 위한 데이터를 획득하는 단계;
    상기 데이터 내에서 적어도 하나의 패턴을 검색하는 단계 - 상기 패턴은 에뮬레이션 방지 바이트의 값에 부가하여 (1) 전체 시작 코드 프리픽스 또는 (2) 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드(payload) 데이터의 N+1 바이트 스트링을 포함함 - ; 및
    상기 패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는 단계
    를 포함하는 방법.
  50. 제49항에 있어서, 상기 시작 코드 프리픽스는 바이트 정렬된 위치에서 시작되는 방법.
  51. 제49항에 있어서, 상기 패턴은 상기 동일한 값을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함하는 방법.
  52. 제49항에 있어서, 상기 패턴은 값 0을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함하는 방법.
  53. 제49항에 있어서, N=2인 방법.
  54. 제49항에 있어서, 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 갖는 방법.
  55. 제49항에 있어서, 상기 획득 단계는 비디오 데이터를 획득함으로써 수행되는 방법.
  56. 제49항에 있어서, 상기 획득 단계는 오디오 데이터를 획득함으로써 수행되는 방법.
  57. 제49항에 있어서, 상기 획득 단계는 오디오/비디오 데이터를 획득함으로써 수행되는 방법.
  58. 제49항에 있어서, 하나 이상의 시작 코드 에뮬레이션 바이트를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  59. 제49항에 있어서, 상기 획득, 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  60. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가
    시작 코드들을 사용하는 환경에서의 전송을 위한 데이터를 획득하고;
    상기 획득된 데이터 내에서 적어도 하나의 패턴을 검색하며 - 상기 패턴은 에뮬레이션 방지 바이트의 값에 부가하여 (1) 전체 시작 코드 프리픽스 또는 (2) 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N+1 바이트 스트링을 포함함 - ; 및
    상기 패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하도록
    하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  61. 제60항에 있어서, 상기 시작 코드 프리픽스는 바이트 정렬된 위치에서 시작되는 하나 이상의 컴퓨터 판독 가능 매체.
  62. 제60항에 있어서, 상기 패턴은 상기 동일한 값을 갖는 N 바이트 및 상이한값을 갖는 다른 바이트를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  63. 제60항에 있어서, 상기 패턴은 값 0을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함하는 하나 이상의 컴퓨터 판독 가능 매체.
  64. 제60항에 있어서, N=2인 하나 이상의 컴퓨터 판독 가능 매체.
  65. 제60항에 있어서, 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 갖는 하나 이상의 컴퓨터 판독 가능 매체.
  66. 제60항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 비디오 데이터를 획득 및 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  67. 제60항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 오디오 데이터를 획득 및 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  68. 제60항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 오디오/비디오 데이터를 획득 및 처리하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  69. 제60항에 있어서, 상기 명령들은 상기 하나 이상의 프로세서가 하나 이상의 시작 코드 에뮬레이션 바이트를 포함하는 데이터를 전송하도록 하는 하나 이상의 컴퓨터 판독 가능 매체.
  70. 제60항의 하나 이상의 컴퓨터 판독 가능 매체를 구현하는 하나 이상의 컴퓨터 시스템.
  71. 적어도 하나의 데이터 패턴을 검색하고 - 에뮬레이션 방지 바이트의 값에 부가하여 (1) 전체 시작 코드 프리픽스 또는 (2) 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N+1 바이트 스트링을 포함함 - ; 및
    상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는
    룰에 따라 처리되며, 시작 코드들의 에뮬레이션을 방지하는 하나 이상의 시작 코드 에뮬레이션 방지 바이트를 포함하도록 처리된 데이터를 수신하는 단계;
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 바이트들을 확인하기 위해 상기 수신된 데이터를 검색하는 단계; 및
    시작 코드 에뮬레이션 방지 바이트 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 바이트를 제거하는 단계
    를 포함하는 방법.
  72. 제71항에 있어서, 상기 수신 단계는 비디오 데이터를 수신함으로써 수행되는 방법.
  73. 제71항에 있어서, 상기 수신 단계는 오디오 데이터를 수신함으로써 수행되는 방법.
  74. 제71항에 있어서, 상기 수신 단계는 오디오/비디오 데이터를 수신함으로써 수행되는 방법.
  75. 제71항에 있어서, 상기 기술된 단계들은 디코더에 의해 수행되는 방법.
  76. 제71항에 있어서, 상기 데이터 패턴은 상기 동일한 값을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함하는 방법.
  77. 제71항에 있어서, 상기 데이터 패턴은 값 0을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함하는 방법.
  78. 제71항에 있어서, 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리릭스의 임의의 바이트 값들과는 상이한 값을 갖는 방법.
  79. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제71항의 방법을 수행하도록 하는 명령을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  80. 하나 이상의 컴퓨터 판독 가능 매체;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제71항의 방법을 수행하도록 하는 상기 컴퓨터 판독 가능 매체 상에서 구현되는 컴퓨터 판독 가능 명령들
    을 포함하는 컴퓨터 시스템.
  81. 시작 코드들을 사용하는 환경에서의 전송을 위한 데이터를 획득하는 단계;
    상기 데이터 내에서 적어도 하나의 패턴을 검색하는 단계 - 상기 패턴은 에뮬레이션 방지 바이트의 값에 부가하여 (1) 전체 시작 코드 프리픽스 또는 (2) 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N+1 바이트 스트링을 포함하며, 상기 동일한 값을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함함 - ; 및
    상기 패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는 단계 - 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 가짐 -
    를 포함하는 방법.
  82. 제81항에 있어서, 상기 시작 코드 프리픽스는 바이트 정렬된 위치에서 시작되는 방법.
  83. 제81항에 있어서, 상기 N 바이트는 값 0을 갖는 방법.
  84. 제81항에 있어서, N=2인 방법.
  85. 제81항에 있어서, 상기 획득 단계는 비디오 데이터를 획득함으로써 수행되는 방법.
  86. 제81항에 있어서, 상기 획득 단계는 오디오 데이터를 획득함으로써 수행되는 방법.
  87. 제81항에 있어서, 상기 획득 단계는 오디오/비디오 데이터를 획득함으로써 수행되는 방법.
  88. 제81항에 있어서, 하나 이상의 시작 코드 에뮬레이션 바이트를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  89. 제81항에 있어서, 상기 획득, 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  90. 적어도 하나의 데이터 패턴을 검색하고 - 상기 하나의 데이터 패턴은 에뮬레이션 방지 바이트의 값에 부가하여 (1) 전체 시작 코드 프리픽스 또는 (2) 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N+1 바이트 스트링을 포함하며, 상기 동일한 값을 갖는 N 바이트 및 상이한 값을 갖는 다른 바이트를 포함함 - ; 및
    상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는 - 상기 시작 코드 에뮬레이션 바이트는 상기 시작 코드 프리픽스의 임의의 바이트와 상이한 값을 가짐 -
    룰에 따라 처리되며, 시작 코드들의 에뮬레이션을 방지하는 하나 이상의 시작 코드 에뮬레이션 방지 바이트를 포함하도록 처리된 데이터를 수신하는 단계;
    상기 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 바이트들을 확인하기 위해 상기 데이터를 검색하는 단계; 및
    시작 코드 에뮬레이션 방지 바이트 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 바이트를 제거하는 단계
    를 포함하는 방법.
  91. 제90항에 있어서, 상기 수신 단계는 비디오 데이터를 수신함으로써 수행되는 방법.
  92. 제90항에 있어서, 상기 수신 단계는 오디오 데이터를 수신함으로써 수행되는 방법.
  93. 제90항에 있어서, 상기 수신 단계는 오디오/비디오 데이터를 수신함으로써 수행되는 방법.
  94. 제90항에 있어서, 상기 기술된 단계들은 디코더에 의해 수행되는 방법.
  95. 제90항에 있어서, 상기 N 바이트는 값 0을 갖는 방법.
  96. 시작 코드들을 사용하는 환경에서의 전송을 위한 데이터를 획득하는 단계;
    상기 데이터 내에서 적어도 하나의 패턴을 검색하는 단계 - 상기 패턴은 시작 코드 프리픽스의 제1의 N 바이트와 매칭되는 페이로드 데이터의 N 바이트 스트링을 포함함 - ; 및
    상기 패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는 단계
    를 포함하는 방법.
  97. 제96항에 있어서, 상기 시작 코드 프리픽스는 바이트 정렬된 위치에서 시작되는 방법.
  98. 제96항에 있어서, 상기 패턴은 상기 동일한 값을 갖는 N 바이트를 포함하는 방법.
  99. 제96항에 있어서, 상기 패턴은 값 0을 갖는 N 바이트를 포함하는 방법.
  100. 제96항에 있어서, N=2인 방법.
  101. 제96항에 있어서, 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 갖는 방법.
  102. 제96항에 있어서, 상기 획득 단계는 비디오 데이터를 획득함으로써 수행되는 방법.
  103. 제96항에 있어서, 상기 획득 단계는 오디오 데이터를 획득함으로써 수행되는 방법.
  104. 제96항에 있어서, 상기 획득 단계는 오디오/비디오 데이터를 획득함으로써 수행되는 방법.
  105. 제96항에 있어서, 하나 이상의 시작 코드 에뮬레이션 바이트를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  106. 제96항에 있어서, 상기 획득, 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  107. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제96항의 방법을 수행하도록 하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  108. 하나 이상의 컴퓨터 판독 가능 매체;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제96항의 방법을 수행하도록 하는 상기 컴퓨터 판독 가능 매체 상에서 구현되는 컴퓨터 판독 가능 명령들
    을 포함하는 컴퓨터 시스템.
  109. 시작 코드들을 사용하는 환경에서의 전송을 위한 데이터를 획득하는 단계;
    상기 데이터 내에서 적어도 하나의 패턴을 검색하는 단계 - 상기 패턴은 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N 바이트 스트링을 포함하며, 상기 동일한 값을 갖는 N 바이트를 포함함 - ; 및
    상기 패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는 단계 - 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 가짐 -
    를 포함하는 방법.
  110. 제109항에 있어서, 상기 시작 코드 프리픽스는 바이트 정렬된 위치에서 시작되는 방법.
  111. 제109항에 있어서, 상기 N 바이트는 값 0을 갖는 방법.
  112. 제109항에 있어서, N=2인 방법.
  113. 제109항에 있어서, 상기 획득 단계는 비디오 데이터를 획득함으로써 수행되는 방법.
  114. 제109항에 있어서, 상기 획득 단계는 오디오 데이터를 획득함으로써 수행되는 방법.
  115. 제109항에 있어서, 상기 획득 단계는 오디오/비디오 데이터를 획득함으로써 수행되는 방법.
  116. 제109항에 있어서, 하나 이상의 시작 코드 에뮬레이션 바이트를 포함하는 데이터를 전송하는 단계를 더 포함하는 방법.
  117. 제109항에 있어서, 상기 획득, 검색 및 삽입 단계는 인코더에 의해 수행되는 방법.
  118. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제109항의 방법을 수행하도록 하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  119. 하나 이상의 컴퓨터 판독 가능 매체;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제109항의 방법을 수행하도록 하는 상기 컴퓨터 판독 가능 매체 상에서 구현되는 컴퓨터 판독 가능 명령들
    을 포함하는 컴퓨터 시스템.
  120. 데이터 내에서 적어도 하나의 데이터 패턴을 검색하고 - 상기 패턴은 시작 코드 프리픽스의 제1의 N 바이트에 매칭되는 페이로드 데이터의 N 바이트 스트링을 포함함 - ; 및
    상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 바이트를 삽입하는
    룰에 따라 처리되며, 시작 코드들의 에뮬레이션을 방지하는 하나 이상의 시작 코드 에뮬레이션 방지 바이트를 포함하도록 처리된 데이터를 수신하는 단계;
    상기 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 바이트들을 확인하기 위해 상기 데이터를 검색하는 단계; 및
    시작 코드 에뮬레이션 방지 바이트 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 바이트를 제거하는 단계
    를 포함하는 방법.
  121. 제120항에 있어서, 상기 수신 단계는 비디오 데이터를 수신함으로써 수행되는 방법.
  122. 제120항에 있어서, 상기 수신 단계는 오디오 데이터를 수신함으로써 수행되는 방법.
  123. 제120항에 있어서, 상기 수신 단계는 오디오/비디오 데이터를 수신함으로써 수행되는 방법.
  124. 제120항에 있어서, 상기 기술된 단계들은 디코더에 의해 수행되는 방법.
  125. 제120항에 있어서, 상기 데이터 패턴은 상기 동일한 값을 갖는 N 바이트를 포함하는 방법.
  126. 제120항에 있어서, 상기 데이터 패턴은 값 0을 갖는 N 바이트를 포함하는 방법.
  127. 제120항에 있어서, N=2인 방법.
  128. 제120항에 있어서, 상기 시작 코드 에뮬레이션 방지 바이트는 상기 시작 코드 프리픽스의 임의의 바이트 값들과는 상이한 값을 갖는 방법.
  129. 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제120항의 방법을 수행하도록 하는 명령들을 구현하는 하나 이상의 컴퓨터 판독 가능 매체.
  130. 하나 이상의 컴퓨터 판독 가능 매체;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서가 제120항의 방법을 수행하도록 하는 상기 컴퓨터 판독 가능 매체 상에서 구현되는 컴퓨터 판독 가능 명령들
    을 포함하는 컴퓨터 시스템.
  131. 시작 코드들을 이용하는 환경에서의 인코딩 전송을 위한 데이터 내에서 고정된 크기의 데이터 부분들의 적어도 하나의 패턴을 검색하는 단계 - 각각의 고정된 크기의 데이터 부분들은 적어도 2개의 비트를 포함함 - ;
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계;
    시작 코드 이후에 하나 이상의 수신기에 전송되는 페이로드 데이터의 마지막에 대응하는 위치를 설정하는 단계; 및
    상기 페이로드 데이터의 마지막 이후 및 다음의 시작 코드 이전에 추가의 필러(filler) 데이터의 하나 이상의 비트를 삽입하는 단계
    를 포함하는 방법.
  132. 제131항에 있어서, 상기 하나 이상의 비트를 삽입하는 단계는 각각의 데이터 유닛을 삽입하는 단계를 포함하며, 상기 각각의 데이터 유닛은 다수의 비트를 포함하는 방법.
  133. 제131항에 있어서, 상기 하나 이상의 비트를 삽입하는 단계는 각각의 데이터 유닛을 삽입하는 단계를 포함하며, 상기 각각의 데이터 유닛은 적어도 하나의 바이트를 포함하는 방법.
  134. 제131항에 있어서, 상기 필러 데이터는 페이로드 데이터와의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  135. 제131항에 있어서, 상기 필러 데이터는 시작 코드들과의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  136. 제1 시작 코드 및 해당 페이로드 데이터 이후 및 제2 시작 코드 이전에 부가된 추가의 필러 데이터를 포함하도록 처리되고, 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터를 포함하도록 처리된 데이터를 수신하는 단계 - 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스는 다수의 비트를 포함함 - ;
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하는 단계;
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하는 단계;
    상기 필러 데이터를 확인하는 단계; 및
    상기 필러 데이터를 제거하는 단계
    를 포함하는 방법.
  137. 제136항에 있어서, 상기 필러 데이터는 각각의 바이트를 포함하는 방법.
  138. 제136항에 있어서, 상기 필러 데이터는 다수의 비트 유닛을 포함하는 방법.
  139. 제136항에 있어서, 상기 필러 데이터는 상기 페이로드 데이터와의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  140. 제136항에 있어서, 상기 필러 데이터는 시작 코드들과의 혼동을 방지하도록설계된 데이터 패턴을 포함하는 방법.
  141. 시작 코드들을 이용하는 환경에서의 인코딩 전송을 위한 데이터 내에서 고정된 크기의 데이터 부분들의 적어도 하나의 패턴을 검색하는 단계 - 각각의 고정된 크기의 부분들은 적어도 2개의 비트를 포함함 - ;
    패턴 검색에 응답하여, 상기 패턴을 포함하는 상기 데이터에 대하여 시작 코드 에뮬레이션 방지 데이터를 삽입하는 단계;
    하나 이상의 수신기에 전송되는 페이로드 데이터의 마지막에 대응하는 위치를 설정하는 단계 - 상기 페이로드 데이터는 시작 코드 에뮬레이션 방지 데이터를 포함할 수 있음 - ;
    페이로드 데이터의 마지막 비트 이후에 하나 이상의 비트를 제1 삽입하는 단계 - 상기 삽입된 하나 이상의 비트는 하나 이상의 선정된 값을 가짐 - ;
    페이로드 데이터로서 정수의 데이터 유닛이 전송되도록 요구되는 다수의 비트를 결정하는 단계; 및
    필요에 따라, 정수의 데이터 유닛을 제공하기 위해 상기 제1 삽입된 비트(들) 후에 충분한 수의 추가 비트들을 삽입하는 단계
    를 포함하는 방법.
  142. 제141항에 있어서, 상기 충분한 수의 추가 비트를 삽입하는 단계는 충분한 수의 바이트를 삽입하는 단계를 포함할 수 있는 방법.
  143. 제141항에 있어서, 상기 충분한 수의 추가 비트를 삽입하는 단계는 충분한 수의 0 바이트를 삽입하는 단계를 포함할 수 있는 방법.
  144. 제141항에 있어서, 상기 충분한 수의 추가 비트를 삽입하는 단계는 후속하는 시작 코드 이전에 상기 비트들을 삽입하는 단계를 포함하는 방법.
  145. 제141항에 있어서, 상기 충분한 수의 추가 비트를 삽입하는 단계는 페이로드 데이터와의 혼동을 방지하도록 설계된 데이터 패턴을 갖는 상기 비트들을 삽입하는 단계를 포함하는 방법.
  146. 제141항에 있어서, 상기 충분한 수의 추가 비트를 삽입하는 단계는 하나 이상의 시작 코드와의 혼동을 방지하도록 설계된 데이터 패턴을 갖는 상기 비트들을 삽입하는 단계를 포함하는 방법.
  147. 페이로드 데이터와 삽입된 데이터를 포함하는 데이터를 수신하는 단계 - 상기 페이로드 데이터는 시작 코드들의 에뮬레이션을 방지하는 시작 코드 에뮬레이션 방지 데이터를 포함할 수 있고, 상기 시작 코드 에뮬레이션 방지 데이터의 각각의 인스턴스는 다수의 비트를 포함하며, 상기 삽입된 데이터는 (a) 페이로드 데이터의 마지막 비트 이후에 적어도 하나의 비트와 선정된 값 및 (b) 상기 페이로드 데이터를 포함하는 정수의 데이터 유닛을 제공하는 충분한 수의 추가 비트를 포함함 -
    상기 수신된 데이터 내에서 적합한 시작 코드들을 검색하는 단계;
    시작 코드 에뮬레이션 방지 데이터를 확인하기 위해 상기 수신된 데이터를 검색하는 단계;
    상기 시작 코드 에뮬레이션 방지 데이터 검색에 응답하여, 상기 시작 코드 에뮬레이션 방지 데이터를 제거하는 단계;
    상기 삽입된 데이터를 확인하는 단계; 및
    상기 삽입된 데이터를 제거하는 단계
    를 포함하는 방법.
  148. 제147항에 있어서, 상기 충분한 수의 추가 비트는 정수의 바이트를 포함하는 방법.
  149. 제147항에 있어서, 상기 충분한 수의 추가 비트는 정수의 0 바이트를 포함하는 방법.
  150. 제147항에 있어서, 상기 충분한 수의 추가 비트는 후속하는 시작 코드 이전에 정수의 바이트를 포함하는 방법.
  151. 하나 이상의 수신기에 전송되는 페이로드 데이터의 마지막에 대응하는 위치를 설정하는 단계;
    페이로드 데이터의 마지막 비트 이후에 1 비트를 삽입하는 단계;
    페이로드 데이터로서, 정수 바이트가 전송되도록 요구되는 다수의 비트를 결정하는 단계;
    정수 바이트를 제공하기 위해 상기 삽입된 1 비트 이후에 충분한 수의 0 비트를 삽입하는 단계; 및
    0 비트의 상기 삽입된 정수 후에 또는, 정수 바이트를 제공하도록 삽입되는 0 비트가 없는 경우에는 상기 삽입된 1 비트 이후에 필러 데이터의 하나 이상의 바이트를 삽입하는 단계
    를 포함하는 방법.
  152. 제151항에 있어서, 상기 필러 데이터를 삽입하는 단계는 하나 이상의 0 바이트를 삽입하는 단계를 포함하는 방법.
  153. 페이로드 데이터의 마지막에 대응하는 위치가 설정되고;
    페이로드 데이터의 마지막 비트 이후에 1 비트가 삽입되고;
    페이로드 데이터로서, 정수의 바이트가 전송되도록 요구되는 다수의 비트가 결정되고;
    상기 삽입된 1 비트 이후에 충분한 수의 0 비트가 정수의 바이트를 제공하기 위해 삽입되며; 및
    상기 삽입된 수의 O 비트 이후에 필러 데이터의 하나 이상의 바이트가 삽입되거나, 만일 정수의 바이트를 제공하기 위해 삽입되는 0 비트가 없는 경우에는, 상기 삽입된 1 비트 이후에 필러 데이터의 하나 이상의 바이트가 삽입되는
    삽입 처리에 따라 삽입된 삽입 데이터 및 페이로드 데이터를 포함하는 데이터를 수신하는 단계;
    상기 삽입된 데이터를 확인하는 단계; 및
    상기 삽입된 데이터를 제거하는 단계
    를 포함하는 방법.
  154. 하나 이상의 수신기에 전송되는 페이로드 데이터의 마지막에 대응하는 위치를 설정하는 단계;
    페이로드 데이터의 마지막 비트 이후에 적어도 1 비트를 제1 삽입하는 단계 - 상기 삽입된 하나 이상의 비트는 하나 이상의 선정된 값을 가짐 - ;
    페이로드 데이터로서, 정수의 데이터 유닛이 전송되도록 요구되는 다수의 비트를 결정하는 단계;
    필요에 따라, 정수의 데이터 유닛을 제공하기 위해 상기 제1 삽입된 비트(들) 후에 충분한 수의 추가 비트들을 제2 삽입하는 단계; 및
    상기 제1 및 제2 삽입된 비트들 후에 필러 데이터의 하나 이상의 데이터 유닛을 삽입하는 단계
    를 포함하는 방법.
  155. 제154항에 있어서, 각각의 데이터 유닛은 각각의 바이트를 포함하는 방법.
  156. 제154항에 있어서, 각각의 데이터 유닛은 다수의 비트를 포함하는 방법.
  157. 제154항에 있어서, 상기 필러 데이터는 상기 페이로드 데이터와의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  158. 제154항에 있어서, 상기 필러 데이터는 시작 코드들과의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  159. 전송될 페이로드 데이터의 마지막에 대응하는 위치가 설정되고;
    페이로드 데이터의 마지막 비트 이후에 적어도 하나의 비트가 제1 삽입되고 - 상기 삽입된 하나 이상의 비트는 하나 이상의 선정된 값을 가짐 - ;
    페이로드 데이터로서, 정수의 데이터 유닛이 전송되도록 요구되는 다수의 비트가 결정되고;
    필요에 따라, 충분한 수의 추가 비트가 정수의 데이터 유닛을 제공하기 위해 상기 제1 삽입된 비트(들) 후에 제2 삽입되며; 및
    필러 데이터의 하나 이상의 데이터 유닛이 상기 제1 및 제2 삽입된 비트들 후에 삽입되는
    삽입 처리에 따라 삽입된 삽입 데이터 및 페이로드 데이터를 포함하는 데이터를 수신하는 단계;
    상기 삽입된 데이터를 확인하는 단계; 및
    상기 삽입된 데이터를 제거하는 단계
    를 포함하는 방법.
  160. 제159항에 있어서, 각각의 데이터 유닛은 각각의 바이트를 포함하는 방법.
  161. 제159항에 있어서, 각각의 데이터 유닛은 다수의 비트를 포함하는 방법.
  162. 제159항에 있어서, 상기 필러 데이터는 상기 페이로드 데이터와의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
  163. 제159항에 있어서, 상기 필러 데이터는 시작 코드들과의 혼동을 방지하도록 설계된 데이터 패턴을 포함하는 방법.
KR10-2004-7011372A 2002-01-22 2003-01-22 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템 KR20040075956A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35114202P 2002-01-22 2002-01-22
US60/351,142 2002-01-22
PCT/US2003/002137 WO2003063499A2 (en) 2002-01-22 2003-01-22 Methods and systems for start code emulation prevention and data stuffing

Publications (1)

Publication Number Publication Date
KR20040075956A true KR20040075956A (ko) 2004-08-30

Family

ID=49447241

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-2004-7011372A KR20040075956A (ko) 2002-01-22 2003-01-22 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템
KR10-2004-7011324A KR20040077765A (ko) 2002-01-22 2003-01-22 랜덤 액세스 및 스플라이싱을 가능하게 하기 위해 비디오데이터를 인코딩 및 디코딩하는 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR10-2004-7011324A KR20040077765A (ko) 2002-01-22 2003-01-22 랜덤 액세스 및 스플라이싱을 가능하게 하기 위해 비디오데이터를 인코딩 및 디코딩하는 방법 및 시스템

Country Status (1)

Country Link
KR (2) KR20040075956A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100841338B1 (ko) * 2007-02-27 2008-06-26 삼성전자주식회사 비디오 디코더를 위한 에뮬레이션 방지 바이트 제거 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2983363A4 (en) 2013-04-05 2016-10-19 Samsung Electronics Co Ltd MULTI-LAYER VIDEO ENCODING METHOD FOR RANDOM ACCESS AND DEVICE THEREFOR, AND MULTI-LAYER VIDEO DECODING METHOD FOR RANDOM ACCESS AND DEVICE THEREOF

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100841338B1 (ko) * 2007-02-27 2008-06-26 삼성전자주식회사 비디오 디코더를 위한 에뮬레이션 방지 바이트 제거 장치
US8867900B2 (en) 2007-02-27 2014-10-21 Samsung Electronics Co., Ltd Emulation prevention byte removers for video decoder

Also Published As

Publication number Publication date
KR20040077765A (ko) 2004-09-06

Similar Documents

Publication Publication Date Title
JP4703114B2 (ja) 開始符号エミュレーションの防止およびデータ充填のための方法およびシステム
KR100895932B1 (ko) 비-바이트 정렬되거나 비트 시프팅된 위치를 포함하는위치에서 시작 코드 에뮬레이션을 방지하기 위한 방법 및시스템
US6725412B1 (en) Low latency data encoder
KR100667739B1 (ko) 무선 데이터 송수신 장치 및 그 방법
CN1154237C (zh) 编码/解码装置及编码/解码方法
US20070067472A1 (en) Accurate and error resilient time stamping method and/or apparatus for the audio-video interleaved (AVI) format
US20040247033A1 (en) Video data coding/decoding apparatus and method
US20020167992A1 (en) Method for reliable signaling information transmission in a wireless communication system
KR20040075956A (ko) 시작 코드 에뮬레이션 방지 및 데이터 스터핑 방법 및시스템
KR100500196B1 (ko) 멀티미디어 메타데이터의 오류 내성 부호화/복호화 장치및 방법
US7165207B2 (en) Robust signal coding
RU2298296C2 (ru) Способ и устройство пересылки пользовательских данных, вставленных в кодированный видеосигнал
KR0177314B1 (ko) 엠펙시스템에서의 전송패킷 보호장치
Huang et al. Ultraspectral sounder data compression using a novel marker-based error-resilient arithmetic coder

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination