KR101290467B1 - 2 개 이상의 비연속적인 nal 유닛들을 참조하는 추출자를 이용하는 멀티-트랙 비디오 코딩 방법들 및 장치 - Google Patents
2 개 이상의 비연속적인 nal 유닛들을 참조하는 추출자를 이용하는 멀티-트랙 비디오 코딩 방법들 및 장치 Download PDFInfo
- Publication number
- KR101290467B1 KR101290467B1 KR1020127009621A KR20127009621A KR101290467B1 KR 101290467 B1 KR101290467 B1 KR 101290467B1 KR 1020127009621 A KR1020127009621 A KR 1020127009621A KR 20127009621 A KR20127009621 A KR 20127009621A KR 101290467 B1 KR101290467 B1 KR 101290467B1
- Authority
- KR
- South Korea
- Prior art keywords
- track
- video
- nal
- extractor
- nal units
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/188—Methods 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 video data packet, e.g. a network abstraction layer [NAL] unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/174—Methods 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 an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
비디오 코딩 장치는 별개의 트랙의 2 개 이상의 비연속적인 네트워크 액세스 레이어 (NAL) 유닛들을 참조하는 미디어 추출자 트랙에서의 미디어 추출자들을 이용하도록 구성될 수도 있다. 예시적인 장치는, 인코딩된 비디오 데이터에 기초하여 NAL 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하되, 비디오 샘플이 액세스 유닛에 포함되고, 제 1 트랙의 비디오 샘플 내의 NAL 유닛들 중 적어도 제 1 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하되, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하고, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적이며, 제 1 트랙 및 제 2 트랙을 ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하기 위한 멀티플렉서를 포함한다. 식별된 NAL 유닛들은 별개의 트랙들에 있을 수도 있다.
Description
본 출원은 2009년 9월 16일자로 출원된 미국 가출원 번호 제61/243,030호, 2009년 9월 22일자로 출원된 미국 가출원 번호 제61/244,827호, 2010년 1월 11일자로 출원된 미국 가출원 번호 제61/293,961호, 및 2010년 1월 15일자로 출원된 미국 가출원 번호 제61/295,261호의 이익을 주장하며, 이들 각각의 전체 내용이 참조로서 여기에 포함된다.
기술 분야
본 개시물은 인코딩된 비디오 데이터의 전송에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비젼들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대 정보 단말기들 (PDAs), 랩탑 또는 데스크탑 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화들, 비디오 화상회의 디바이스들, 및 기타 등등을 포함하는, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 보다 효율적으로 송신하고 수신하기 위하여, 비디오 압축 기법들, 예컨대 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding) 에 의해 정의된 표준들, 및 이러한 표준들의 확장들에 설명된 비디오 압축 기법들을 구현한다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 저감하거나 또는 제거하기 위하여 공간적 예측 및/또는 시간적 예측을 수행한다. 블록-기반 비디오 코딩의 경우, 비디오 프레임 또는 슬라이스 (slice) 가 매크로블록들로 파티셔닝될 수도 있다. 각각의 매크로블록은 추가로 파티셔닝될 수 있다. 인트라-코딩된 (I) 프레임 또는 슬라이스에서의 매크로블록들은 이웃하는 매크로블록들에 대한 공간적 예측을 이용하여 인코딩된다. 인터-코딩된 (P 또는 B) 프레임 또는 슬라이스에서의 매크로블록들은 동일 프레임 또는 슬라이스에서 이웃하는 매크로블록들에 대하여 공간적 예측을 이용하고 또는 다른 참조 프레임들에 대하여 시간적 예측을 이용할 수도 있다.
비디오 데이터가 인코딩된 후, 송신 또는 저장을 위해 비디오 데이터는 멀티플렉서에 의해 패킷화될 수도 있다. MPEG-2 는 많은 비디오 인코딩 표준들에 대한 전송 레벨을 정의하는 "시스템들 (Systems)" 섹션을 포함한다. MPEG-2 전송 레벨 시스템들은 MPEG-2 비디오 인코더들, 또는 상이한 비디오 인코딩 표준들을 따르는 다른 비디오 인코더들에 의해 이용될 수도 있다. 예를 들면, MPEG-4 가 MPEG-2 와는 상이한 인코딩 및 디코딩 방법론들을 규정하고 있지만, MPEG-4 표준의 기법들을 구현하는 비디오 인코더들은 여전히 MPEG-2 전송 레벨 방법론들을 이용할 수도 있다. 일반적으로, "MPEG-2 시스템들" 에 대한 참조들은 MPEG-2 에 의해 규정되는 비디오 데이터의 전송 레벨을 참조한다. 또한, MPEG-2 에 의해 규정된 전송 레벨을 본 개시물에서는 "MPEG-2 전송 스트림" 또는 간단히 "전송 스트림" 으로 지칭한다. 이와 유사하게, MPEG-2 시스템들의 전송 레벨은 또한 프로그램 스트림들을 포함한다. 전송 스트림들 및 프로그램 스트림들은 일반적으로 유사한 데이터를 전달하기 위한 상이한 포맷들을 포함하며, 여기서 전송 스트림은 오디오와 비디오 데이터 양자를 포함하는 하나 이상의 "프로그램들" 을 포함하지만 프로그램 스트림들은 오디오와 비디오 데이터 양자를 포함하는 하나의 프로그램을 포함한다.
H.264/AVC 에 기초하여 새로운 비디오 코딩 표준들을 개발하려는 노력이 이루어져 왔다. 이러한 하나의 표준이 H.264/AVC 에 대한 스케일러블 확장인 스케일러블 비디오 코딩 (scalable video coding; SVC) 표준이다. 다른 표준이 H.264/AVC 에 대한 멀티뷰 확장이 되는 멀티뷰 비디오 코딩 (multi-view video coding; MVC) 표준이다. MPEG-2 시스템들 사양은, 디지털 송신 또는 저장에 적합한 단일의 데이터 스트림을 형성하기 위해 압축된 멀티미디어 (비디오 및 오디오) 데이터 스트림들이 다른 데이터와 함께 멀티플렉싱될 수도 있는 방법을 기술한다. MPEG-2 시스템들의 최신 사양이 "Information Technology-Generic Coding of Moving Pictures and Associated Audio: Systems, Recommendation H.222.0; ISO (International Organisation for Standardisation)/IEC JTC1/SC29/WG11; Coding of Moving Pictures and Associated Audio" (2006년 5월) 에 특정되어 있다. 본 사양의 최신 버전 및 MPEG-2 시스템들에 대한 MVC 의 전송 표준으로 최근에 설계된 MPEG 는 2009년 4월, 미국, 하와이, 마우이에서의 "Study of ISO/IEC 13818-1:2007/FPDAM4 Transport of MVC", MPEG doc. N10572, MPEG of ISO/IEC JTC1/SC29/WG11 이다.
MVC 의 최신 합동 초안 (joint draft) 이 http://wftp3.itu.int/av-arch/jvt-site/2008_07_Hannover/JVT-AB204.zip 에서 입수가능한, 2008년 7월, 독일 하노버, 28차 JVT 회의, JVT-AB204, "Joint Draft 8.0 on Multiview Video Coding" 에 기술되어 있다. AVC 표준에 통합된 후속 버전이 http://wftp3.itu.int/av-arch/jvt-site/2009_01_Geneva/JVT-AD007.zip 에서 입수가능한, 2009년 2월, 스위스, 제노바, 30차 JVT 회의, JVT-AD007, "Editors' draft revision to ITU-T Rec. H.264 | ISO/IEC 14496-10 Advanced Video Coding - in preparation for ITU-T SG 16 AAP Consent (in integrated form)" 에 기술되어 있다.
일반적으로, 본 개시물은 다중-트랙 비디오 데이터 포맷들의 미디어 추출자들을 이용하여 미디어 추출자 트랙을 형성하기 위한 기법들을 기술한다. 본 개시물은 잠재적으로 비연속적인 하나 이상의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 참조하는 것이 가능한 추출자를 이용하기 위하여 ISO (International Organization for Standardization) 기반 미디어 포맷을 변경한다. 이러한 추출자는 ISO 기반 미디어 포맷 파일의 임의의 트랙에 존재할 수도 있다. 본 개시물은 또한 프레임 레이트 값을 트랙 선택 박스의 속성으로서 포함하기 위하여 3GPP (Third Generation Partnership Project) 파일 포맷에 대한 변경들을 기술한다. 본 개시물은 또한 ISO 기반 미디어 포맷에 대한 멀티뷰 비디오 코딩 (MVC) 확장에 대하여, MVC 동작 포인트들의 효율적인 추출을 지원하기 위한 추출자의 이용을 기술한다.
일 예에서, 비디오 데이터를 인코딩하기 위한 방법은, 소스 비디오 디바이스에 의해, 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하는 단계로서, 비디오 샘플이 액세스 유닛에 포함되는, 상기 제 1 트랙을 구축하는 단계; 소스 비디오 디바이스에 의해, 제 1 트랙의 비디오 샘플 내의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하는 단계로서, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적인, 상기 제 2 트랙을 구축하는 단계; 제 1 트랙 및 제 2 트랙을 ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하는 단계; 및 비디오 파일을 출력하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 장치는, 비디오 데이터를 인코딩하도록 구성된 인코더; 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하되, 비디오 샘플이 액세스 유닛에 포함되고; 제 1 트랙의 비디오 샘플 내의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하되, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적이며; 제 1 트랙 및 제 2 트랙을 ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하도록 구성된 멀티플렉서; 및 비디오 파일을 출력하도록 구성된 출력 인터페이스를 포함한다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 장치는, 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하는 수단으로서, 비디오 샘플이 액세스 유닛에 포함되는, 상기 제 1 트랙을 구축하는 수단; 제 1 트랙의 비디오 샘플 내의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하는 수단으로서, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적인, 상기 제 2 트랙을 구축하는 수단; 제 1 트랙 및 제 2 트랙을 ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하는 수단; 및 비디오 파일을 출력하는 수단을 포함한다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 실행될 때, 소스 디바이스의 프로세서로 하여금, 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하게 하되, 비디오 샘플이 액세스 유닛에 포함되고; 제 1 트랙의 비디오 샘플 내의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하게 하되, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적이고; 제 1 트랙 및 제 2 트랙을 ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하게 하며; 및 비디오 파일을 출력하게 하는 명령들을 포함한다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 방법은, 목적지 디바이스의 디멀티플렉서에 의해, ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하는 단계로서, 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 비디오 샘플이 액세스 유닛에 포함되며, 제 2 트랙은 제 1 트랙의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적인, 상기 비디오 파일을 수신하는 단계; 디코딩될 제 2 트랙을 선택하는 단계; 및 제 2 트랙의 추출자에 의해 식별되는 제 1 NAL 유닛 및 제 2 NAL 유닛의 인코딩된 비디오 데이터를 목적지 디바이스의 비디오 디코더로 전송하는 단계를 포함한다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 장치는, 비디오 데이터를 디코딩하도록 구성된 비디오 디코더; 및 ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하되, 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 비디오 샘플이 액세스 유닛에 포함되며, 제 2 트랙은 제 1 트랙의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적이고, 디코딩될 제 2 트랙을 선택하며, 제 2 트랙의 추출자에 의해 식별되는 제 1 NAL 유닛 및 제 2 NAL 유닛의 인코딩된 비디오 데이터를 비디오 디코더로 전송하도록 구성된 디멀티플렉서를 포함한다.
다른 예에서, 비디오 데이터를 디코딩하기 위한 장치는, 목적지 디바이스의 디멀티플렉서에 의해, ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하는 수단으로서, 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 비디오 샘플이 액세스 유닛에 포함되며, 제 2 트랙은 제 1 트랙의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적인, 상기 비디오 파일을 수신하는 수단; 디코딩될 제 2 트랙을 선택하는 수단; 및 제 2 트랙의 추출자에 의해 식별되는 제 1 NAL 유닛 및 제 2 NAL 유닛의 인코딩된 비디오 데이터를 목적지 디바이스의 비디오 디코더로 전송하는 수단을 포함한다.
다른 예에서, 컴퓨터 판독가능 저장 매체는, 실행될 때, 목적지 디바이스의 프로세서로 하여금, ISO 기반 미디어 파일 포맷에 적어도 부분적으로 따르며, 제 1 트랙 및 제 2 트랙을 포함하는 비디오 파일을 수신할 때, 디코딩될 제 2 트랙을 선택하게 하되, 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 비디오 샘플이 액세스 유닛에 포함되며, 제 2 트랙은 제 1 트랙의 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 추출자는 액세스 유닛의 제 2 NAL 유닛을 식별하며, 식별된 제 1 NAL 유닛 및 식별된 제 2 NAL 유닛은 비연속적이며; 제 2 트랙의 추출자에 의해 식별되는 제 1 NAL 유닛 및 제 2 NAL 유닛의 인코딩된 비디오 데이터를 비디오 디코더로 전송하게 하는 명령들을 포함한다.
하나 이상의 예들의 상세는 첨부 도면들 및 하기 설명에서 개시된다. 다른 특징들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 오디오/비디오 (A/V) 소스 디바이스가 오디오 및 비디오 데이터를 A/V 목적지 디바이스로 전송하는 예시적인 시스템을 나타내는 블록도이다.
도 2 는 멀티플렉서의 컴포넌트들의 예시적인 배열을 나타내는 블록도이다.
도 3 은 비디오 샘플들의 세트를 가지는 제 1 트랙 및 제 1 트랙의 비디오 샘플들의 서브세트를 참조하는 추출자들을 가지는 제 2 트랙을 포함하는 예시적인 파일을 나타내는 블록도이다.
도 4 는 2 개의 별개의 추출자 트랙들을 포함하는 다른 예시적인 파일을 나타내는 블록도이다.
도 5 는 서브세트 트랙 및 2 개의 미디어 추출자 트랙들을 포함하는 다른 예시적인 파일을 나타내는 블록도이다.
도 6a 내지 도 6c 는 여러 미디어 추출자 트랙들에 대한 미디어 추출자들의 예들을 포함하는 파일의 미디어 데이터 박스의 예들을 나타내는 블록도들이다.
도 7 은 예시적인 MVC 예측 패턴을 나타내는 개념도이다.
도 8 내지 도 21 은 본 개시물의 기법들에 따라 이용될 수도 있는 미디어 추출자들에 대한 데이터 구조들 및 다른 지원하는 데이터 구조들의 여러 예들을 나타내는 블록도들이다.
도 22 는 트랙 선택 박스에 대한 추가적인 속성들을 시그널링하기 위한 예시적인 변경된 3GPP (Third Generation Partnership Project) 트랙 선택 박스를 나타내는 블록도이다.
도 23 은 본 개시물의 기법들에 따라 미디어 추출자들을 이용하기 위한 예시적인 방법을 나타내는 플로우차트이다.
도 2 는 멀티플렉서의 컴포넌트들의 예시적인 배열을 나타내는 블록도이다.
도 3 은 비디오 샘플들의 세트를 가지는 제 1 트랙 및 제 1 트랙의 비디오 샘플들의 서브세트를 참조하는 추출자들을 가지는 제 2 트랙을 포함하는 예시적인 파일을 나타내는 블록도이다.
도 4 는 2 개의 별개의 추출자 트랙들을 포함하는 다른 예시적인 파일을 나타내는 블록도이다.
도 5 는 서브세트 트랙 및 2 개의 미디어 추출자 트랙들을 포함하는 다른 예시적인 파일을 나타내는 블록도이다.
도 6a 내지 도 6c 는 여러 미디어 추출자 트랙들에 대한 미디어 추출자들의 예들을 포함하는 파일의 미디어 데이터 박스의 예들을 나타내는 블록도들이다.
도 7 은 예시적인 MVC 예측 패턴을 나타내는 개념도이다.
도 8 내지 도 21 은 본 개시물의 기법들에 따라 이용될 수도 있는 미디어 추출자들에 대한 데이터 구조들 및 다른 지원하는 데이터 구조들의 여러 예들을 나타내는 블록도들이다.
도 22 는 트랙 선택 박스에 대한 추가적인 속성들을 시그널링하기 위한 예시적인 변경된 3GPP (Third Generation Partnership Project) 트랙 선택 박스를 나타내는 블록도이다.
도 23 은 본 개시물의 기법들에 따라 미디어 추출자들을 이용하기 위한 예시적인 방법을 나타내는 플로우차트이다.
본 개시물의 기법들은 일반적으로 ISO (International Organization for Standardization) 기반 미디어 파일 포맷 및 ISO 기반 미디어 파일 포맷의 확장들을 향상시키는 것에 관한 것이다. ISO 기반 미디어 파일 포맷의 확장들은, 예를 들면, 어드밴스드 비디오 코딩 (advanced video coding; AVC), 스케일러블 비디오 코딩 (scalable video coding; SVC), 멀티뷰 비디오 코딩 (multiview video coding; MVC), 및 3세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷을 포함한다. 일반적으로, 본 개시물의 기법들은 ISO 기반 미디어 파일 포맷 및/또는 ISO 기반 미디어 파일 포맷의 확장들에서 미디어 추출자 트랙을 생성하는데 이용될 수도 있다. 아래에 자세하게 설명하는 바와 같이, 일부 예들에서, 이러한 미디어 추출자 트랙들은 하이퍼텍스트 전송 프로토콜 (HTTP) 비디오 스트리밍에의 적응을 지원하는데 이용될 수도 있다. 일부 예들에서, 미디어 추출자는 다른 트랙의 전체 샘플들을 추출하여 새로운 미디어 추출자 트랙을 형성하기 위하여 ISO 기반 미디어 파일 포맷 및/또는 ISO 기반 미디어 파일 포맷의 확장들 (예를 들어, AVC, SVC, MVC, 및 3GPP) 의 일부를 형성한다.
이들 기법들은 MPEG-2 (동영상 전문가 그룹) 시스템들, 즉, 전송 레벨 상세들에 대해 MPEG-2 를 따르는 시스템들에 의해 이용될 수도 있다. 예를 들어, MPEG-4 가 비디오 인코딩을 위한 표준들을 제공하지만, 일반적으로는 MPEG-4 표준을 따르는 비디오 인코더들이 MPEG-2 전송 레벨 시스템들을 이용할 것으로 추정한다. 따라서, 본 개시물의 기법들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, 또는 MPEG-2 전송 스트림들 및/또는 프로그램 스트림들을 이용하는 임의의 다른 비디오 인코딩 표준을 따르는 비디오 인코더들에도 적용가능하다.
ISO 기반 미디어 파일 포맷은 하나 이상의 트랙들을 포함하는 파일들을 위해 제공된다. ISO 기반 미디어 파일 포맷 표준은 트랙을 관련된 샘플들의 타이밍된 시퀀스 (timed sequence) 로서 정의한다. ISO 기반 미디어 파일 포맷 표준은 샘플을 단일 타임스탬프와 관련된 데이터로서 정의하며, 샘플의 예들을 비디오의 개별 프레임으로서, 디코딩 순서의 일련의 비디오 프레임들로서, 또는 디코딩 순서의 오디오의 압축된 섹션으로서 제공한다. 힌트 트랙들로 지칭되는 특별한 트랙들이 미디어 데이터를 포함하지는 않고, 대신에, 하나 이상의 트랙들을 스트리밍 채널로 패키징하기 위한 명령들을 포함한다. ISO 기반 미디어 파일 포맷 표준은, 힌트 트랙들에서, 샘플이 하나 이상의 스트리밍 패킷들의 형성을 정의한다고 언급하고 있다.
본 개시물의 기법들은 미디어 추출자 트랙들의 생성을 위해 제공된다. 미디어 추출자 트랙은 일반적으로 하나 이상의 추출자들을 포함할 수도 있다. 미디어 추출자 트랙의 추출자들은 다른 트랙의 샘플들을 식별하고 추출하는데 이용된다. 이러한 방법으로, 미디어 추출자 트랙의 미디어 추출자들은, 역참조될 때, 다른 트랙으로부터 샘플들을 취출하는 포인터들로 간주될 수도 있다. SVC 의 추출자들과는 달리, 예를 들어, 본 개시물의 추출자들은 다른 트랙의 잠재적으로 비연속적인 하나 이상의 네트워크 액세스 레이어 (NAL) 유닛들을 참조할 수 있다. 본 개시물의 기법들에 따르면, 미디어 추출자 트랙들, 즉 하나 이상의 미디어 추출자들을 포함하는 트랙들, 및 미디어 추출자를 포함하지 않는 다른 트랙들은 함께 그룹화되어 대체 그룹을 형성할 수 있다.
본 개시물은 동일 트랙에서 인접하여 발생하는 2 개 이상의 NAL 유닛들을 기술하기 위하여 NAL 유닛들에 대해 용어 "연속적인 (consecutive)" 을 사용한다. 즉, 2 개의 NAL 유닛들이 연속적일 때, NAL 유닛들 중의 하나의 NAL 유닛에서의 데이터의 마지막 바이트가 동일 트랙에서 NAL 유닛들 중의 다른 NAL 유닛의 데이터의 제 1 바이트 바로 앞에 온다. 동일 액세스 유닛에서의 2 개의 NAL 유닛들은, 2 개의 NAL 유닛들이 동일 트랙 내에서 얼마간의 (some) 데이터량 만큼 분리되어 있는 경우나, 또는 하나의 트랙에서 하나의 NAL 유닛이 발생하는 한편 상이한 트랙에서 다른 NAL 유닛이 발생하는 경우 중 어느 하나의 경우에는, 일반적으로 "비연속적 (non-consecutive)" 인 것으로 간주된다. 본 개시물의 기법들은 액세스 유닛의 2 개 이상의 비연속적인 NAL 유닛들을 식별할 수도 있는 추출자를 제공한다.
더욱이, 본 개시물의 추출자들은 SVC 에 한정되지 않고, 일반적으로 ISO 기반 미디어 파일 포맷 또는 ISO 기반 미디어 파일 포맷의 임의의 다른 확장, 예를 들면, AVC, SVC, 또는 MVC 에 포함될 수 있다. 본 개시물의 추출자들은 또한 3세대 파트너쉽 프로젝트 (3GPP) 파일 포맷에 포함될 수 있다. 본 개시물은 추가적으로 프레임 레이트를 트랙 선택 박스의 속성으로서 명시적으로 시그널링하기 위하여 3GPP 파일 포맷을 변경하기 위해 제공된다.
미디어 추출자 트랙들은 MVC 파일 포맷에서, 예를 들면, 동작 포인트들의 추출을 지원하는데 이용될 수도 있다. 서버 디바이스는 MPEG-2 전송 레이어 비트스트림에서 여러 동작 포인트들을 제공할 수 있으며, 그 포인트들 각각은 멀티뷰 비디오 코딩 비디오 데이터의 특정 뷰들의 각 서브세트에 대응한다. 즉, 동작 포인트는 일반적으로 비트스트림의 뷰들의 서브세트에 대응한다. 일부 예들에서, 동작 포인트의 각각의 뷰는 동일 프레임 레이트에서의 비디오 데이터를 포함한다. 본 개시물의 기법들에 따르면, 동작 포인트는 다른 트랙들의 비디오 데이터를 참조하는 하나 이상의 추출자들을 포함하는 미디어 추출자 트랙, 및 잠재적으로는 다른 트랙들에 포함되지 않는 추가적인 샘플들을 이용하여 표시될 수도 있다.
이러한 방법으로, 각각의 동작 포인트는 공통 프레임 레이트를 가진 뷰들의 서브세트를 출력하기 위하여 동작 포인트를 디코딩하는데 요구되는 필수 NAL 유닛들만을 포함할 수도 있다. MVC 비디오의 전체 표시 (representation) 와의 추출자 트랙들의 결합은 MVC 표시들의 플레이리스트를 형성할 수도 있다. 본 개시물의 미디어 추출자 트랙들의 사용은 예를 들어, 시간적 스케일러빌리티에 기인하는 여러 비트레이트들을 가진 동작 포인트들에 대해 동작 포인트 선택 및 스위칭을 지원할 수도 있다.
본 개시물의 미디어 추출자 트랙들이 또한 대체 그룹들 또는 스위치 그룹들을 형성하는데 이용될 수 있다. 즉, ISO 기반 미디어 파일 포맷에서는, 대체 그룹들을 형성하기 위하여 트랙들이 함께 그룹화될 수도 있다. ISO 기반 미디어 파일 포맷의 예에서는, 대체 그룹의 트랙들이 서로에 대해 실행가능한 대체물들을 형성하여, 일반적으로는 대체 그룹의 트랙들 중 단지 하나의 트랙만이 어느 때나 플레이되거나 또는 스트리밍되도록 한다. 대체 그룹의 트랙들은 예를 들어, 속성들, 예컨대 비트레이트, 코덱, 언어, 패킷 사이즈, 또는 다른 특성들을 통해서, 대체 그룹의 다른 트랙들과 구별가능해야 한다. 본 개시물의 기법들은 미디어 추출자 트랙들, 미디어 추출자들을 포함하는 트랙들, 및/또는 다른 정상 비디오 트랙들을 그룹화하여 대체 그룹을 형성하기 위해 제공된다. MVC 를 따르는 예들에서, 각각의 트랙은 각 동작 포인트에 대응할 수도 있다. 즉, MVC 에서의 각각의 동작 포인트는 트랙들 중의 특정 트랙, 예를 들어, 미디어 추출자 트랙 또는 미디어 추출자를 포함하지 않는 트랙에 의해 표시될 수도 있다. 동일 대체 그룹에서의 하나의 트랙이 가용 대역폭을 적응시키기 위하여, 프로그레시브 다운로딩 (progressive downloading) 을 위해 통상적으로 선택된다.
이와 유사하게, 미디어 추출자 트랙들 및 다른 트랙들은 함께 그룹화되어 3GPP 파일 포맷에서 스위치 그룹을 형성할 수 있으며, HTTP 스트리밍 애플리케이션들에서 대역폭 및 디코더 능력을 적응시키기 위하여 트랙 선택용으로 사용될 수 있다. 3GPP 파일 포맷은 트랙들의 스위치 그룹의 정의를 제공한다. 한 스위치 그룹의 트랙들은 동일 대체 그룹에 속한다. 즉, 3GPP 파일 포맷에 따르면, 동일 스위치 그룹의 트랙들은 세션 동안 스위칭에 이용가능한 반면, 상이한 스위치 그룹들의 트랙들은 스위칭에 이용가능하지 않다.
도 1 은 오디오/비디오 (A/V) 소스 디바이스 (20) 가 오디오 및 비디오 데이터를 A/V 목적지 디바이스 (40) 로 전송하는 예시적인 시스템 (10) 을 나타내는 블록도이다. A/V 소스 디바이스 (20) 는 또한 "소스 비디오 디바이스" 로 지칭될 수도 있다. 도 1 의 시스템 (10) 은 원격 화상회의 시스템, 서버/클라이언트 시스템, 브로드캐스터/수신기 시스템, 또는 비디오 데이터가 소스 디바이스, 예컨대 A/V 소스 디바이스 (20) 로부터 목적지 디바이스, 예컨대 A/V 목적지 디바이스 (40) 로 전송되는 임의의 다른 시스템에 대응할 수도 있다. A/V 목적지 디바이스 (40) 는 또한 "목적지 비디오 디바이스" 또는 "클라이언트 디바이스" 로 지칭될 수도 있다. 일부 예들에서, A/V 소스 디바이스 (20) 및 A/V 목적지 디바이스 (40) 는 양방향 정보 교환을 수행할 수도 있다. 즉, A/V 소스 디바이스 (20) 및 A/V 목적지 디바이스 (40) 는 오디오 및 비디오 데이터를 인코딩 및 디코딩 (그리고 송신 및 수신) 모두 행하는 것이 가능할 수도 있다. 일부 예들에서, 오디오 인코더 (26) 는 보코더로도 지칭될 수도 있는 보이스 인코더를 포함할 수도 있다.
A/V 소스 디바이스 (20) 는, 도 1 의 예에서, 오디오 소스 (22) 및 비디오 소스 (24) 를 포함한다. 오디오 소스 (22) 는 예를 들면, 오디오 인코더 (26) 에 의해 인코딩될 캡쳐된 오디오 데이터를 나타내는 전기 신호들을 생성하는 마이크로폰을 포함할 수도 있다. 대안으로, 오디오 소스 (22) 는 이전에 레코딩된 오디오 데이터를 저장하는 저장 매체, 오디오 데이터 생성기, 예컨대 컴퓨터화된 신시사이저 (synthesizer), 또는 임의의 다른 오디오 데이터의 소스를 포함할 수도 있다. 비디오 소스 (24) 는 비디오 인코더 (28) 에 의해 인코딩될 비디오 데이터를 생성하는 비디오 카메라, 이전에 레코딩된 비디오 데이터로 인코딩된 저장 매체, 비디오 데이터 생성 유닛, 또는 임의의 다른 비디오 데이터의 소스를 포함할 수도 있다.
원시 (raw) 오디오 및 비디오 데이터는 아날로그 또는 디지털 데이터를 포함할 수도 있다. 아날로그 데이터는 오디오 인코더 (26) 및/또는 비디오 인코더 (28) 에 의해 인코딩되기 전에 디지털화될 수도 있다. 오디오 소스 (22) 는 대화 참여자가 말하고 있는 동안에 그 대화 참여자로부터 오디오 데이터를 획득할 수도 있고, 비디오 소스 (24) 는 대화 참여자의 비디오 데이터를 동시에 획득할 수도 있다. 다른 예들에서, 오디오 소스 (22) 는 저장된 오디오 데이터를 포함하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있으며, 비디오 소스 (24) 는 저장된 비디오 데이터를 포함하는 컴퓨터 판독가능 저장 매체를 포함할 수도 있다. 이러한 방법으로, 본 개시물에서 설명한 기법들은 라이브, 스트리밍, 실시간 오디오 및 비디오 데이터에, 또는 아카이브된 (archived), 사전-레코딩된 오디오 및 비디오 데이터에 적용될 수도 있다.
비디오 프레임들에 대응하는 오디오 프레임들은 일반적으로 비디오 프레임들 내에 포함되는 비디오 소스 (24) 에 의해 캡쳐된 비디오 데이터와 동시에 오디오 소스 (22) 에 의해 캡쳐되었던 오디오 데이터를 포함하는 오디오 프레임들이다. 예를 들면, 대화 참여자가 일반적으로 말함으로써 오디오 데이터를 생성하는 동안에 오디오 소스 (22) 는 오디오 데이터를 캡쳐하고, 비디오 소스 (24) 는 대화 참여자의 비디오 데이터를 동시에, 즉, 오디오 소스 (22) 가 오디오 데이터를 캡쳐하고 있는 동안에 캡쳐한다. 따라서, 오디오 프레임이 시간적으로 하나 이상의 특정 비디오 프레임들에 대응할 수도 있다. 따라서, 비디오 프레임에 대응하는 오디오 프레임은, 일반적으로 오디오 데이터 및 비디오 데이터가 동시에 캡쳐되었던 상황에 대응하며, 그 상황 동안 오디오 프레임 및 비디오 프레임은 동시에 캡쳐되었던 오디오 데이터 및 비디오 데이터를 각각 포함한다.
일부 예들에서, 오디오 인코더 (26) 는 인코딩된 오디오 프레임에 대한 오디오 데이터가 레코딩되었던 시간을 나타내는 각각의 인코딩된 오디오 프레임에서 타임스탬프를 인코딩할 수도 있고, 이와 유사하게, 비디오 인코더 (28) 는 인코딩된 비디오 프레임에 대한 비디오 데이터가 레코딩되었던 시간을 나타내는 각각의 인코딩된 비디오 프레임에서 타임스탬프를 인코딩할 수도 있다. 이러한 예들에서, 비디오 프레임에 대응하는 오디오 프레임은 타임스탬프를 포함하는 오디오 프레임 및 동일 타임스탬프를 포함하는 비디오 프레임을 포함할 수도 있다. A/V 소스 디바이스 (20) 는 오디오 인코더 (26) 및/또는 비디오 인코더 (28) 가 타임스탬프들을 생성할 수도 있는, 또는 오디오 소스 (22) 및 비디오 소스 (24) 가 오디오 및 비디오 데이터를 각각 타임스탬프와 관련시키는데 사용할 수도 있는 내부 클록을 포함할 수도 있다.
일부 예들에서, 오디오 소스 (22) 는 오디오 데이터가 레코딩되었던 시간에 대응하여 데이터를 오디오 인코더 (26) 로 전송할 수도 있으며, 비디오 소스 (24) 는 비디오 데이터가 레코딩되었던 시간에 대응하여 데이터를 비디오 인코더 (28) 로 전송할 수도 있다. 일부 예들에서, 오디오 인코더 (26) 는 오디오 데이터가 레코딩되었던 절대적인 시간을 반드시 나타내지는 않고 인코딩된 오디오 데이터의 상대적인 시간적 순서화 (ordering) 를 나타내도록 인코딩된 오디오 데이터에서의 시퀀스 식별자를 인코딩할 수도 있으며, 이와 유사하게, 비디오 인코더 (28) 는 또한 인코딩된 비디오 데이터의 상대적인 시간적 순서화를 나타내기 위하여 시퀀스 식별자들을 이용할 수도 있다. 이와 유사하게, 일부 예들에서, 시퀀스 식별자는 맵핑되거나 그렇지 않으면 타임스탬프와 상관될 수도 있다.
본 개시물의 기법들은 일반적으로 인코딩된 멀티미디어 (예를 들어, 오디오 및 비디오) 데이터의 전송, 및 전송된 멀티미디어 데이터의 수신 그리고 후속 해석 및 디코딩에 관한 것이다. 본 개시물의 기법들은 여러 표준들 및 확장들의 비디오 데이터, 예를 들면, 스케일러블 비디오 코딩 (SVC), 어드밴스드 비디오 코딩 (AVC), OSI 기반 레이어, 또는 멀티뷰 비디오 코딩 (MVC) 데이터, 또는 복수의 뷰들을 포함하는 다른 비디오 데이터의 전송에 적용될 수도 있다. 도 1 의 예에 나타낸 바와 같이, 비디오 소스 (24) 는 복수의 장면 뷰들을 비디오 인코더 (28) 에 제공할 수 있다. 비디오 데이터의 다수의 뷰들은 3 차원 디스플레이, 예컨대 스테레오스코픽 또는 오토스테레오스코픽 3 차원 디스플레이에 의해 이용될 3 차원 비디오 데이터를 생성하는데 유용할 수도 있다.
A/V 소스 디바이스 (20) 는 "서비스" 를 A/V 목적지 디바이스 (40) 에 제공할 수도 있다. 서비스는 일반적으로 MVC 데이터의 가용 뷰들의 서브세트에 대응한다. 예를 들면, 멀티뷰 비디오 데이터는 0 부터 7 까지 순서화된 8 개의 뷰들에 이용가능할 수도 있다. 하나의 서비스가 2 개의 뷰들을 가지는 스테레오 비디오에 대응할 수도 있는 한편, 다른 서비스는 4 개의 뷰들에 대응할 수도 있고, 또 다른 서비스는 8 개의 뷰들 모두에 대응할 수도 있다. 일반적으로, 서비스는 가용 뷰들의 임의의 조합 (즉, 임의의 서브세트) 에 대응한다. 또한, 서비스는 오디오 데이터는 물론 가용 뷰들의 조합에 대응할 수도 있다.
A/V 소스 디바이스 (20) 는, 본 개시물의 기법들에 따라, 뷰들의 서브세트에 대응하는 서비스들을 제공할 수 있다. 일반적으로, 뷰는 "view_id" 로도 지칭되는 뷰 식별자로 표시된다. 뷰 식별자들은 일반적으로 뷰를 식별하는데 사용될 수도 있는 신택스 엘리먼트들을 포함한다. MVC 인코더는 뷰가 인코딩될 때 뷰의 view_id 를 제공한다. view_id 는 인터-뷰 예측을 위해 MVC 디코더에 의해, 또는 다른 목적들을 위해 예를 들어, 렌더링을 위해 다른 유닛들에 의해 이용될 수도 있다.
인터-뷰 예측은 상이한 뷰들의 인코딩되는 프레임과 같이 공통 시간적 로케이션에 있는 하나 이상의 프레임들과 관련하여 프레임의 MVC 비디오 데이터를 인코딩하기 위한 기법이다. 아래에서 좀더 자세하게 설명되는 도 7 은 인터-뷰 예측을 위한 예시적인 코딩 방식을 제공한다. 일반적으로, MVC 비디오 데이터의 인코딩된 프레임은 공간적으로, 시간적으로, 및/또는 공통 시간적 로케이션에 있는 다른 뷰들의 프레임들과 관련하여 예측적으로 인코딩될 수도 있다. 따라서, 참조 뷰들로부터 다른 뷰들이 예측되며, 참조 뷰들은 일반적으로 참조 뷰들이 참조로서 작용하는 뷰들 앞에서 디코딩되며, 따라서 이들 디코딩된 뷰들이 관련 뷰들을 디코딩할 때 참조용으로 사용될 수 있다. 디코딩 순서는 view_id 들의 순서에 반드시 대응하는 것은 아니다. 그러므로, 뷰들의 디코딩 순서는 뷰 순서 인덱스들을 이용하여 기술된다. 뷰 순서 인덱스들은 액세스 유닛에서의 대응하는 뷰 컴포넌트들의 디코딩 순서를 나타내는 인덱스들이다.
(오디오이든 비디오이든 간에) 데이터의 각 개개의 스트림은 기본 스트림 (elementary stream) 으로 지칭된다. 기본 스트림은 프로그램의 단일의, 디지털로 코딩된 (가능하다면 압축된) 컴포넌트이다. 예를 들면, 프로그램의 코딩된 비디오 또는 오디오 부분은 기본 스트림일 수 있다. 기본 스트림은 프로그램 스트림 또는 전송 스트림으로 멀티플렉싱되기 전에, 패킷화된 기본 스트림 (packetized elementary stream; PES) 으로 변환될 수도 있다. 동일 프로그램 내에서, 하나의 기본 스트림에 속하는 PES-패킷들을 다른 패킷들과 구별하기 위하여 스트림 ID 가 사용된다. 기본 스트림의 데이터의 기본 단위는 패킷화된 기본 스트림 (PES) 패킷이다. 따라서, MVC 비디오 데이터의 각 뷰는 각각의 기본 스트림들에 대응한다. 이와 유사하게, 오디오 데이터는 하나 이상의 각각의 기본 스트림들에 대응한다.
MVC 코딩된 비디오 시퀀스는 각각이 기본 스트림인 여러 서브-비트스트림들로 분리될 수도 있다. 각 서브-비트스트림은 MVC view_id 서브세트를 이용하여 식별될 수도 있다. 각각의 MVC view_id 서브세트의 개념에 기초하여, MVC 비디오 서브-비트스트림이 정의된다. MVC 비디오 서브-비트스트림은 MVC view_id 서브세트에 리스트된 뷰들의 NAL 유닛들을 포함한다. 프로그램 스트림은 일반적으로 기본 스트림들의 스트림들로부터 유래하는 NAL 유닛들만을 포함한다. 또한, 임의의 2 개의 기본 스트림들은 동일 뷰를 포함하지 않도록 설계된다.
도 1 의 예에서, 멀티플렉서 (30) 는 비디오 인코더 (28) 로부터의 비디오 데이터를 포함하는 기본 스트림들 및 오디오 인코더 (26) 로부터의 오디오 데이터를 포함하는 기본 스트림들을 수신한다. 일부 예들에서, 비디오 인코더 (28) 및 오디오 인코더 (26) 는 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 패킷타이저 (packetizer) 들을 각각 포함할 수도 있다. 다른 예들에서, 비디오 인코더 (28) 및 오디오 인코더 (26) 는 인코딩된 데이터로부터 PES 패킷들을 형성하기 위한 각각의 패킷타이저들과 각각 인터페이스할 수도 있다. 또한, 또 다른 예들에서, 멀티플렉서 (30) 는 인코딩된 오디오 및 비디오 데이터로부터 PES 패킷들을 형성하기 위한 패킷타이저들을 포함할 수도 있다.
"프로그램" 은, 본 개시물에서 사용되는 바와 같이, 오디오 데이터와 비디오 데이터의 조합, 예를 들어, 오디오 기본 스트림과 A/V 소스 디바이스 (20) 의 서비스에 의해 전달되는 가용 뷰들의 서브세트의 조합을 포함할 수도 있다. 각 PES 패킷은 PES 패킷이 속하는 기본 스트림을 식별하는 stream_id 를 포함한다. 멀티플렉서 (30) 는 기본 스트림들을 구성요소인 프로그램 스트림들 또는 전송 스트림들로 어셈블링할 수도 있다. 프로그램 스트림 및 전송 스트림은 상이한 애플리케이션들을 목표로 하는 2 개의 대체 멀티플렉스들이다.
일반적으로, 프로그램 스트림은 하나의 프로그램을 위한 데이터를 포함하지만, 전송 스트림은 하나 이상의 프로그램들을 위한 데이터를 포함할 수도 있다. 멀티플렉서 (30) 는 제공되는 서비스, 스트림이 전달될 매체, 전송될 프로그램들의 수, 또는 다른 고려사항들에 기초하여, 프로그램 스트림 또는 전송 스트림 중 어느 하나, 또는 프로그램 스트림과 전송 스트림 양자를 인코딩할 수도 있다. 예를 들면, 비디오 데이터가 저장 매체에서 인코딩될 예정일 때에는, 멀티플렉서 (30) 가 프로그램 스트림을 형성할 가능성이 더 많을 수도 있지만, 비디오 데이터가 네트워크를 통해 스트리밍되거나 브로드캐스트되거나 또는 비디오 전화통신의 일부로서 전송될 예정일 때에는, 멀티플렉서 (30) 가 전송 스트림을 사용할 가능성이 더 많을 수도 있다.
멀티플렉서 (30) 는 디지털 저장 서비스로부터의 단일 프로그램의 저장 및 디스플레이를 위해 프로그램 스트림을 이용하기 위하여 바이어싱될 수도 있다. 프로그램 스트림들은 다소 에러들에 민감하기 때문에, 프로그램 스트림은 에러-없는 환경들 또는 에러들의 직면에 덜 민감한 환경들에서의 사용을 위해 의도된다. 프로그램 스트림은 단순히 그 스트림에 속하는 기본 스트림들을 포함하며, 보통은 가변 길이들의 패킷들을 포함한다. 프로그램 스트림에서, 기여하는 기본 스트림들로부터 유도되는 PES-패킷들이 "팩들 (packs)" 로 조직화된다. 팩은 팩-헤더, 옵션의 시스템-헤더, 및 기여하는 기본 스트림들 중 임의의 것으로부터 임의의 순서로 취한 임의의 개수의 PES-패킷들을 포함한다. 시스템 헤더는 프로그램 스트림의 특성들, 예컨대 그 최대 데이터 레이트, 기여하는 비디오 및 오디오 기본 스트림들의 수, 추가 타이밍 정보, 또는 다른 정보의 개요를 포함한다. 디코더는 디코더가 프로그램 스트림을 디코딩하는 것이 가능한지 여부를 결정하기 위하여 시스템 헤더에 포함된 정보를 이용할 수도 있다.
멀티플렉서 (30) 는 잠재적으로 에러 발생이 쉬운 (error-prone) 채널들을 통한 복수의 프로그램들의 동시 전달을 위해 전송 스트림을 이용할 수도 있다. 전송 스트림은 브로드캐스팅과 같이 다중-프로그램 애플리케이션들을 위해 고안된 멀티플렉스이어서, 단일 전송 스트림이 많은 독립적인 프로그램들을 수용할 수 있다. 전송 스트림은 일련의 전송 패킷들을 포함하며, 그 전송 패킷들 각각은 188-바이트 길이이다. 짧고 고정된 길이의 패킷들의 사용은 전송 스트림이 프로그램 스트림보다 에러들에 덜 민감하다는 것을 의미한다. 또한, 표준 에러 방지 프로세스, 예컨대 리드-솔로몬 (Reed-Solomon) 인코딩을 통해서 패킷을 프로세싱함으로써, 각각의 188-바이트 길이의 전송 패킷에, 추가적인 에러 방지가 제공될 수도 있다. 전송 스트림의 개선된 에러 복원력 (resilience) 은, 예를 들어 브로드캐스트 환경에서 발견될 에러 발생이 쉬운 채널들을 견뎌낼 가능성이 더 많다는 것을 의미한다.
그 증가된 에러 복원력 및 많은 동시 프로그램들을 운반하는 능력을 가진 전송 스트림이 2 개의 멀티플렉스들 중에서 더 나은 것으로 보일지도 모른다. 그러나, 전송 스트림은 프로그램 스트림 보다 더 복잡한 멀티플렉스이며, 그 결과, 생성하고 디멀티플렉싱하기가 더 어렵다. 전송 패킷의 제 1 바이트 (byte) 는 0x47 (16진법의 47, 2진법의 '01000111', 10진법의 71) 의 값을 갖는 동기화 바이트이다. 단일 전송 스트림은 많은 상이한 프로그램들을 운반할 수 있으며, 각 프로그램들은 많은 패킷화된 기본 스트림들을 포함한다. 멀티플렉서 (30) 는 하나의 기본 스트림의 데이터를 포함하는 전송 패킷들을 다른 기본 스트림들의 데이터를 운반하는 전송 패킷들과 구별하기 위하여 13-비트 패킷 식별자 (PID) 필드를 이용할 수도 있다. 멀티플렉서의 임무는 각 기본 스트림들에 고유 PID 값을 부여하는 것을 보장하는 것이다. 전송 패킷의 마지막 바이트는 연속성 카운트 필드 (continuity count field) 이다. 멀티플렉서 (30) 는 동일 기본 스트림에 속하는 연속적인 전송 패킷들 사이에 연속성 카운트 필드의 값을 증분한다. 이는 목적지 디바이스, 예컨대 A/V 목적지 디바이스 (40) 의 디코더 또는 다른 유닛이 전송 패킷의 손실 또는 이득을 검출할 수 있게 하고, 바라기로는 다르게는 이러한 이벤트로부터 발생할 수도 있는 에러들을 은닉할 수 있게 한다.
멀티플렉서 (30) 는 오디오 인코더 (26) 및 비디오 인코더 (28) 로부터 프로그램의 기본 스트림들에 대한 PES 패킷들을 수신하고 그 PES 패킷들로부터 대응하는 네트워크 추상화 레이어 (NAL) 유닛들을 형성한다. H.264/AVC (Advanced Video Coding) 의 예에서, 코딩된 비디오 세그먼트들은 NAL 유닛들로 조직화되며, 이 NAL 유닛들은 "네트워크-친화적인" 비디오 표시 어드레싱 애플리케이션들, 예컨대 비디오 전화통신, 저장, 브로드캐스트, 또는 스트리밍을 제공한다. NAL 유닛들은 비디오 코딩 레이어 (VCL) NAL 유닛들 및 넌-VCL NAL 유닛들로 분류될 수 있다. VCL 유닛들은 코어 압축 엔진을 포함하고, 블록, 매크로블록, 및/또는 슬라이스 레벨들을 포함할 수도 있다. 다른 NAL 유닛들은 넌-VCL NAL 유닛들이다.
멀티플렉서 (30) 는 NAL 이 속하는 프로그램을 식별하는 헤더 뿐만 아니라, 페이로드, 예를 들어, 오디오 데이터, 비디오 데이터, 또는 NAL 유닛이 대응하는 전송 또는 프로그램 스트림을 기술하는 데이터를 포함하는 NAL 유닛들을 형성할 수도 있다. 예를 들면, H.264/AVC 에서, NAL 유닛은 1-바이트 헤더 및 가변 사이즈의 페이로드를 포함할 수도 있다. 일 예에서, NAL 유닛 헤더는 priority_id 엘리먼트, temporal_id 엘리먼트, anchor_pic_flag 엘리먼트, view_id 엘리먼트, non_idr_flag 엘리먼트, 및 inter_view_flag 엘리먼트를 포함한다. 종래의 MVC 에서는, 4-바이트 MVC NAL 유닛 헤더 및 NAL 유닛 페이로드를 포함하는, 프리픽스 (prefix) NAL 유닛들 및 MVC 코딩된 슬라이스 NAL 유닛들을 제외하고는, H.264 에 의해 정의되는 NAL 유닛이 보유된다.
NAL 헤더의 priority_id 엘리먼트는 간단한 1-경로 비트스트림 적응 프로세스에 이용될 수도 있다. temporal_id 엘리먼트는 대응하는 NAL 유닛의 시간적 레벨 (temporal level) 을 특정하는데 사용될 수도 있으며, 여기서 상이한 시간적 레벨들은 상이한 프레임 레이트들에 대응한다.
anchor_pic_flag 엘리먼트는 화상이 앵커 화상인지 또는 넌-앵커 (non-anchor) 화상인지 여부를 나타낼 수도 있다. 앵커 화상들 및 출력 순서 (즉, 디스플레이 순서) 로 연속하는 모든 화상들은 이전 화상들의 디코딩 없이 디코딩 순서 (즉, 비트스트림 순서) 로 정확하게 디코딩될 수 있으며, 따라서 랜덤 액세스 포인트들로서 사용될 수 있다. 앵커 화상들 및 넌-앵커 화상들은, 양자가 시퀀스 파라미터 세트로 시그널링되는, 상이한 의존성들을 가질 수 있다. 이 장 (chapter) 의 다음 섹션들에서는 다른 플래그들 (flags) 이 설명되고 사용될 것이다. 이러한 앵커 화상은 또한 개방 GOP (화상들의 그룹) 액세스 포인트로 지칭될 수도 있지만, non_idr_flag 엘리먼트가 0 과 같을 때에는 폐쇄 GOP 액세스 포인트가 또한 지원된다. non_idr_flag 엘리먼트는 화상이 순간적인 디코더 리프레시 (IDR) 화상인지 또는 뷰 IDR (V-IDR) 화상인지 여부를 나타낸다. 일반적으로, IDR 화상, 및 출력 순서 또는 비트스트림 순서로 연속하는 모든 화상들은, 디코딩 순서이든 또는 디스플레이 순서이든 이전 화상들의 디코딩 없이 정확하게 디코딩될 수 있다.
view_id 엘리먼트는 뷰를 식별하는데 사용될 수도 있는 신택스 정보를 포함하며, 그 신택스 정보는 MVC 디코더 내부에서의 데이터 상호작용, 예를 들어, 인터-뷰 예측, 및 디코더 외부에서의 상호작용, 예를 들어, 렌더링에 이용될 수도 있다. inter_view_flag 엘리먼트는 대응하는 NAL 유닛이 인터-뷰 예측을 위해 다른 뷰들에 의해 이용되는지를 특정할 수도 있다. AVC 를 따를 수도 있는, 베이스 뷰에 대한 4-바이트 NAL 유닛 헤더 정보를 운반하기 위하여, 프리픽스 NAL 유닛이 MVC 에 정의된다. MVC 의 문맥에서, 베이스 뷰 액세스 유닛은 뷰의 현재 시간 인스턴스의 VCL NAL 유닛들 뿐만 아니라 그의 프리픽스 NAL 유닛을 포함하며, 그 프리픽스 NAL 유닛은 단지 NAL 유닛 헤더만을 포함한다. H.264/AVC 디코더는 프리픽스 NAL 유닛을 무시할 수도 있다.
그 페이로드에 비디오 데이터를 포함하는 NAL 유닛은 비디오 데이터의 여러 입도 레벨 (granularity level) 들을 포함할 수도 있다. 예를 들면, NAL 유닛은 비디오 데이터의 블록, 매크로블록, 복수의 매크로블록들, 비디오 데이터의 슬라이스, 또는 비디오 데이터의 전체 프레임을 포함할 수도 있다.
일반적으로, 액세스 유닛은 비디오 데이터의 프레임 뿐만 아니라, 오디오 데이터가 이용가능하다면 그 프레임에 대응하는 오디오 데이터를 표시하기 위한 하나 이상의 NAL 유닛들을 포함할 수도 있다. 액세스 유닛은 일반적으로 하나의 출력 시간 인스턴스에 대해 모든 NAL 유닛들, 예를 들어, 하나의 시간 인스턴스에 대해 모든 오디오 및 비디오 데이터를 포함한다. H.264/AVC 에 대응하는 예에서, 액세스 유닛은 하나의 시간 인스턴스에서 코딩된 화상을 포함할 수도 있으며, 그 코딩된 화상은 프라이머리 (primary) 코딩된 화상으로서 제공될 수도 있다. 따라서, 액세스 유닛은 공통 시간적 인스턴스의 모든 비디오 프레임들, 예를 들어, 시간 X 에 대응하는 모든 뷰 컴포넌트들을 포함할 수도 있다.
본 개시물은 또한 특정 뷰의 인코딩된 화상을 "뷰 컴포넌트" 라 한다. 즉, 뷰 컴포넌트는 특정 시간에서 특정 뷰에 대한 인코딩된 화상 (또는 프레임) 을 포함한다. 따라서, 일부 예들에서는, 액세스 유닛은 공통 시간적 인스턴스의 모든 뷰 컴포넌트들을 포함할 수도 있다. 액세스 유닛들의 디코딩 순서가 출력 또는 디스플레이 순서와 반드시 같을 필요는 없다. 연속적인 액세스 유닛들의 세트가 코딩된 비디오 시퀀스를 형성할 수도 있으며, 이는 화상들의 그룹 (GOP), 또는 NAL 유닛 비트스트림 또는 서브-비트스트림의 다른 독립적으로 디코딩가능한 유닛에 대응할 수도 있다.
대부분의 비디오 코딩 표준들에서와 같이, H.264/AVC 는 신택스, 시멘틱들, 및 에러-없는 비트스트림들에 대한 디코딩 프로세스를 정의하며, 이들 중 임의의 것은 소정의 프로파일 또는 레벨을 따른다. H.264/AVC 는 인코더를 특정하지 않지만, 인코더는, 생성된 비트스트림들이 디코더에 대해 표준-호환한다는 것을 보증하는 작업을 맡고 있다. 비디오 코딩 표준의 문맥에서, "프로파일" 은 알고리즘들, 피쳐들, 또는 툴 (tools) 들과 그들에 가해지는 제약들의 서브세트에 대응한다. H.264 표준에 의해 정의되는 바와 같이, 예를 들면, "프로파일" 은 H.264 표준에 의해 특정되는 전체 비트스트림 신택스의 서브세트이다. "레벨" 은 예를 들면, 디코더 메모리 및 컴퓨테이션과 같은 디코더 리소스 소비의 한계들에 대응하며, 이는 화상들의 해상도, 비트 레이트, 및 매크로블록 (MB) 프로세싱 레이트에 관련된다.
H.264 표준은, 예를 들어, 주어진 프로파일의 신택스에 의해 부과되는 한계 범위 내에서, 비트스트림에서 신택스 엘리먼트들에 의해 취해지는 값들, 예컨대 디코딩된 화상들의 특정된 사이즈에 따라, 인코더들 및 디코더들의 성능에서의 큰 변동을 요구하는 것이 여전히 가능하다는 것을 인정한다. H.264 표준은 또한 많은 애플리케이션들에서, 특정 프로파일 내에서 신택스의 모든 가정적 사용들을 처리하는 것이 가능한 디코더를 구현하는 것은 실용적이지도 경제적이지도 않다는 것을 인정한다. 따라서, H.264 표준은 비트스트림에서 신택스 엘리먼트들의 값들에 부과되는 특정된 제약들의 세트로서 "레벨" 을 정의한다. 이들 제약들은 값들에 대한 단순 한계들일 수도 있다. 대안으로, 이들 제약들은 값들의 산술적 조합 (예를 들어, 화상 폭 곱하기 화상 높이 곱하기 초당 디코딩된 화상들의 수) 에 관한 제약들의 형태를 취할 수도 있다. H.264 표준은 또한 개별 구현들이 각 지원되는 프로파일에 대해 상이한 레벨을 지원할 수도 있음을 규정하고 있다.
프로파일을 따르는 디코더는 통상 그 프로파일에 정의된 모든 피쳐들을 지원한다. 예를 들면, 코딩 피쳐로서, B-화상 코딩은 H.264/AVC 의 베이스라인 프로파일에서 지원되지 않고 H.264/AVC 의 다른 프로파일들에서 지원된다. 일 레벨을 따르는 디코더는 그 레벨에 정의된 제한들을 넘어서 리소스들을 요구하지 않는 임의의 비트스트림을 디코딩하는 것이 가능해야 한다. 프로파일들 및 레벨들의 정의들은 해석능력 (interpretability) 에 도움이 될 수도 있다. 예를 들어, 비디오 송신 동안, 한 쌍의 프로파일 및 레벨 정의들이 전체 송신 세션 동안 협상 및 합의될 수도 있다. 좀더 구체적으로 말하면, H.264/AVC 에서, 레벨은 예를 들면, 처리될 필요가 있는 매크로블록들의 수, 디코딩된 화상 버퍼 (DPB) 사이즈, 코딩된 화상 버퍼 (CPB) 사이즈, 수직 모션 벡터 범위, 2 개의 연속적인 MB들 당 최대 모션 벡터들의 수, 및 B-블록이 8x8 픽셀들 미만의 서브-매크로블록 파티션들을 가질 수 있는지 여부에 대한 제한들을 정의할 수도 있다. 이러한 방법으로, 디코더는, 그 디코더가 비트스트림을 적절하게 디코딩하는 것이 가능한지 여부를 결정할 수도 있다.
파라미터 세트들은 일반적으로 시퀀스 파라미터 세트들 (SPS) 에 시퀀스-레이어 헤더 정보를 포함하고 화상 파라미터 세트들 (PPS) 에 드물게 변하는 화상-레이어 헤더 정보를 포함한다. 파라미터 세트들에 의해, 이 드물게 변하는 정보는 각 시퀀스 또는 화상에 대해 반복될 필요가 없으므로, 코딩 효율이 개선될 수도 있다. 더욱이, 파라미터 세트들의 사용은 헤더 정보의 대역외 송신을 가능하게 하므로, 에러 복원력을 달성하는데 여분의 송신들에 대한 필요성을 피할 수도 있다. 대역외 송신에서, 파라미터 세트 NAL 유닛들은 다른 NAL 유닛들과는 다른 상이한 채널 상에서 송신된다.
본 개시물의 기법들은 미디어 추출자 트랙들에 추출자들을 포함하는 것을 수반한다. 본 개시물의 추출자들은 공통 파일에서 다른 트랙의 2 개 이상의 NAL 유닛들을 참조할 수도 있다. 즉, 파일은 복수의 NAL 유닛들을 가지는 제 1 트랙, 및 제 1 트랙의 복수의 NAL 유닛들 중 2 개 이상의 NAL 유닛들을 식별하는 추출자를 포함하는 제 2 트랙을 포함할 수도 있다. 일반적으로, 추출자는 포인터로서 작용할 수도 있으며, 따라서, 추출자가 디멀티플렉서 (38) 를 조우할 때, 디멀티플렉서 (38) 가 제 1 트랙으로부터 추출자에 의해 식별되는 NAL 유닛들을 취출하고 그 NAL 유닛들을 비디오 디코더 (48) 로 전송할 수도 있다. 추출자를 포함하는 트랙은 미디어 추출자 트랙으로 지칭될 수도 있다. 본 개시물의 추출자들은 여러 파일 포맷들, 예를 들어, ISO 기반 미디어 파일 포맷, 스케일러블 비디오 코딩 (SVC) 파일 포맷, 어드밴스드 비디오 코딩 (AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (3GPP) 파일 포맷, 및/또는 멀티뷰 비디오 코딩 (MVC) 파일 포맷을 따르는 파일들에 포함될 수도 있다.
일반적으로, 비디오 파일의 여러 트랙들이 스위치 트랙들로 사용될 수도 있다. 즉, 멀티플렉서 (30) 는 여러 프레임 레이트들, 디스플레이 능력들, 및/또는 디코딩 능력들을 지원하기 위하여 여러 트랙들을 포함할 수도 있다. 예를 들면, 비디오 파일이 MVC 파일 포맷을 따를 때, 각 트랙은 상이한 MVC 동작 포인트를 표시할 수도 있다. 따라서, 디멀티플렉서 (38) 는 NAL 유닛들을 취출할 트랙들 중 하나의 트랙을 선택하고, 그 선택된 트랙의 추출자들에 의해 식별되는 NAL 유닛들 이외의 다른 트랙들의 데이터를 폐기하도록 구성될 수도 있다. 즉, 선택된 트랙이 다른 트랙의 NAL 유닛들을 참조하는 추출자를 포함할 때, 디멀티플렉서 (38) 는 그 참조된 NAL 유닛들을 추출하는 동시에 나머지 트랙의 비참조된 NAL 유닛들을 폐기할 수도 있다. 디멀티플렉서 (38) 는 그 추출된 NAL 유닛들을 비디오 디코더 (48) 로 전송할 수도 있다.
미디어 추출자 트랙의 추출자들을 이용함으로써, 본 개시물의 기법들은 비디오 파일의 여러 트랙들 사이에 시간적 스케일러빌리티를 획득하는데 이용될 수도 있다. MPEG-1 및 MPEG-2 에서는, 예를 들면, B-인코딩된 화상들이 자연 시간적 스케일러빌리티를 제공한다. MPEG-1 또는 MPEG-2 를 따르는 비디오 파일의 제 1 트랙은 I-인코딩된 화상들, P-인코딩된 화상들, 및 B-인코딩된 화상들의 풀 세트를 포함할 수도 있다. 비디오 파일의 제 2 트랙은 B-인코딩된 화상들에 대한 참조를 생략하고, 제 1 트랙의 I-인코딩된 화상들 및 P-인코딩된 화상들만을 참조하는 하나 이상의 추출자들을 포함할 수도 있다. B-인코딩된 화상들을 드롭함으로써, 비디오 파일은 부합하는 (confirming) 절반 해상도 비디오 표시를 달성할 수도 있다. MPEG-1 및 MPEG-2 은 또한 2 개의 시간적 레이어들을 코딩하기 위하여 베이스 레이어 및 향상 레이어 구상을 제공하며, 향상 레이어 화상들은 각 예측 방향에 대해, 베이스 레이어 또는 향상 레이어로부터의 화상을 참조 (reference) 로서 선택할 수 있다.
다른 예로서, H.264/AVC 는 시간적 스케일러빌리티를 지원하기 위하여 계층적 B-인코딩된 화상들을 이용한다. H.264/AVC 에서 비디오 시퀀스의 제 1 화상은 키 (key) 화상으로도 알려져 있는, IDR (Instantaneous Decoder Refresh) 화상으로 지칭될 수도 있다. 키 화상들은 통상적으로 규칙적 또는 불규칙적인 간격들로 코딩되며, 이는 이전 키 화상을 모션 보상 예측을 위한 참조로서 이용하여 인트라-코딩되거나 또는 인터-코딩된다. 화상들의 그룹 (GOP) 은 일반적으로 키 화상, 및 키 화상과 이전 키 화상 사이에 시간적으로 로케이트된 모든 화상들을 포함한다. GOP 는 2 개의 부분들로 나눠질 수 있으며, 하나는 키 화상이고, 다른 하나는 넌-키 (non-key) 화상들을 포함한다. 넌-키 화상들은 과거 및 미래로부터의 더 낮은 시간적 레벨의 가장 가까운 화상들인 2 참조 화상들에 의해 계층적으로 예측된다. 화상의 계층적 위치를 나타내기 위하여 시간적 식별자 값이 각 화상에 할당될 수도 있다. 따라서, N 까지의 시간적 식별자 값들을 가진 화상들은 N-1 까지의 시간적 식별자 값들을 가진 화상들에 의해 형성되는 비디오 세그먼트의 프레임 레이트의 2 배의 프레임 레이트를 가진 비디오 세그먼트를 형성할 수도 있다. 따라서, 본 개시물의 기법들은 또한 N 까지의 시간적 식별자 값들을 가진 모든 NAL 유닛들을 포함하는 제 1 트랙, 및 N-1 까지의 시간적 식별자 값들을 가진 제 1 트랙의 NAL 유닛들을 참조하는 하나 이상의 추출자들을 포함하는 제 2 트랙을 가짐으로써, H.264/AVC 에서 시간적 스케일러빌리티를 획득하는데 이용될 수도 있다.
위에서 언급한 바와 같이, 본 개시물의 기법들은 ISO 기반 미디어 파일 포맷, 스케일러블 비디오 코딩 (SVC) 파일 포맷, 어드밴스드 비디오 코딩 (AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (3GPP) 파일 포맷, 및/또는 멀티뷰 비디오 코딩 (MVC) 파일 포맷 중 임의의 파일 포맷을 따르는 비디오 파일들에 적용될 수도 있다. ISO 기반 미디어 파일 포맷은 미디어의 교환, 관리, 편집, 및 프리젠테이션을 용이하게 하는, 유연하고 확장가능한 포맷으로, 프리젠테이션을 위한 타이밍된 미디어 정보를 포함하도록 설계된다. ISO 기반 미디어 파일 포맷 (ISO/IEC 14496-12:2004) 은 시간-기반 미디어 파일들에 대한 일반적인 구조를 정의하는 MPEG-4 Part-12 에 특정된다. 이것은 그 패밀리에서의 다른 파일 포맷들, 예컨대 H.264/MPEG-4 AVC 비디오 압축에 대한 지원이 정의된 AVC 파일 포맷 (ISO/IEC 14496-15), 3GPP 파일 포맷, SVC 파일 포맷, 및 MVC 파일 포맷에 대한 기준으로서 이용된다. 3GPP 파일 포맷 및 MVC 파일 포맷은 AVC 파일 포맷의 확장들이다. ISO 기반 미디어 파일 포맷은 미디어 데이터, 예컨대 오디오-시각적 프리젠테이션들의 타이밍된 시퀀스들에 대한, 타이밍, 구조, 및 미디어 정보를 포함한다. 파일 구조는 객체 (object) 지향적이다. 파일은 기본 객체들로 매우 간단하게 분해될 수 있으며, 객체들의 구조는 그들의 유형으로부터 암시된다.
ISO 기반 미디어 파일 포맷을 따르는 파일들은 일련의 객체들, 소위 "박스들 (boxes)" 로 형성된다. ISO 기반 미디어 파일 포맷의 데이터가 박스들에 포함되며, 그 파일 내에는 다른 데이터가 존재하지 않는다. 이는 특정 파일 포맷에 의해 요구되는 임의의 초기 서명 (signature) 을 포함한다. "박스" 는 고유 유형 식별자 및 길이로 정의되는 객체 지향적 빌딩 (building) 블록이다. 통상적으로, 하나의 프리젠테이션이 하나의 파일에 포함되며, 미디어 프리젠테이션이 자체-포함된다. 무비 컨테이너 (무비 박스) 는 그 미디어의 메타데이터를 포함하며, 비디오 및 오디오 프레임들은 미디어 데이터 컨테이너에 포함되고 다른 파일들에 있을 수 있다.
프리젠테이션 (모션 시퀀스) 이 여러 파일들에 포함될 수도 있다. 모든 타이밍 및 프레이밍 (위치 및 사이즈) 정보는 일반적으로 ISO 기반 미디어 파일에 있으며 보조 파일들은 본질적으로 임의의 포맷을 이용할 수도 있다. 이 프리젠테이션은 그 프리젠테이션을 포함하는 시스템에 '로컬 (local)' 일 수도 있고, 또는 네트워크 또는 다른 스트림 전달 메커니즘을 경유할 수도 있다.
파일들은 논리적 구조, 시간 구조, 및 물리적 구조를 가질 수도 있으며, 이들 구조들은 커플링되도록 요구되지 않는다. 파일의 논리적 구조는 결국 시간-병렬 트랙들의 세트를 포함하는 무비일 수도 있다. 파일의 시간 구조는 트랙들이 샘플들의 시퀀스들을 시간에 맞춰 포함하고, 옵션의 편집 리스트들에 의해 그들 시퀀스들이 전체 무비의 타임라인에 맵핑되는 구조일 수도 있다. 파일의 물리적 구조는 미디어 데이터 샘플들 자체로부터 논리적, 시간, 및 구조적 분해에 요구되는 데이터를 분리할 수도 있다. 이 구조적 정보는 무비 박스에 집중되며, 가능하다면 무비 단편 박스들에 의해 시간에 맞춰 확장될 수도 있다. 무비 박스는 샘플들의 논리적 및 타이밍 관계들을 상세히 기록할 수 있으며, 또한 샘플들이 로케이트될 포인터들을 포함할 수도 있다. 그들 포인터들은 예를 들어, URL 에 의해 참조되는, 동일 파일 또는 다른 파일로 향할 수도 있다.
각 미디어 스트림은 그 미디어 유형 (오디오, 비디오 등) 에 대해 전문화된 트랙에 포함될 수도 있으며, 또한 샘플 엔트리에 의해 파라미터화될 수도 있다. 샘플 엔트리는 정확한 미디어 유형 (스트림을 디코딩하는데 요구되는 디코더의 유형) 의 '이름' 및 요구되는 그 디코더의 임의의 파라미터화 (parameterization) 를 포함할 수도 있다. 이름은 또한 4-문자 (character) 코드의 형태 (예를 들어, "moov" 또는 "trak") 를 취할 수도 있다. MPEG-4 미디어에 대해서 뿐만 아니라, 이 파일 포맷 패밀리를 이용하는 다른 단체들에 의해 사용되는 미디어 유형들에 대해서도, 정의된 샘플 엔트리 포맷들이 존재한다.
메타-데이터에 대한 지원은 일반적으로 2 개의 형태들을 취한다. 첫째로, 타이밍된 메타-데이터가 적당한 트랙에 저장되어, 원할 때, 기술하고 있는 미디어 데이터와 동기화될 수도 있다. 둘째로, 무비 또는 개별 트랙에 첨부된 타이밍되지 않은 메타-데이터에 대한 일반적인 지원이 있을 수도 있다. 구조적 지원이 일반적이며, 미디어-데이터에서와 같이, 파일 내 또는 다른 파일 내의 어디든지, 메타-데이터 리소스들의 저장을 허용한다. 또한, 이들 리소스들은 명명될 수도 있으며 보호될 수도 있다.
ISO 기반 미디어 파일 포맷에서, 샘플 그룹화 (grouping) 는 트랙 내의 각 샘플들의, 하나의 샘플 그룹의 멤버에의 할당이다. 샘플 그룹에서의 샘플들은 인접하도록 요구되지 않는다. 예를 들면, H.264/AVC 를 AVC 파일 포맷으로 제공할 때, 하나의 시간적 레벨에서의 비디오 샘플들이 하나의 샘플 그룹으로 샘플링될 수 있다. 샘플 그룹들은 2 개의 데이터 구조들, 즉 SampleToGroup 박스 (sbdp) 및 SampleGroupDescription 박스로 표시될 수도 있다. SampleToGroup 박스는 샘플 그룹들에의 샘플들의 할당을 나타낸다. 대응하는 그룹의 속성들을 기술하기 위하여 각 샘플 그룹 엔트리에 대해, SampleGroupDescription 박스의 하나의 인스턴스가 있을 수도 있다.
옵션의 메타데이터 트랙은 각 트랙을, 그것이 가진 "관심 (interesting) 특성" 으로 태깅하는데 사용될 수 있으며, 그 경우 그 특성의 값이 그 그룹의 다른 멤버들 (예를 들어, 그의 비트 레이트, 스크린 사이즈, 또는 언어) 과 다를 수도 있다. 트랙 내의 일부 샘플들은 특별한 특성들을 갖거나 또는 개별적으로 식별될 수도 있다. 그 특성의 일 예가 동기화 포인트 (종종, 비디오 I-프레임) 이다. 이들 포인트들은 각 트랙에서 특별한 테이블에 의해 식별될 수도 있다. 좀더 일반적으로 말하면, 트랙 샘플들 사이의 의존성의 본질 (nature) 은 또한 메타데이터를 이용하여 상세히 기록될 수 있다. 메타데이터는 비디오 트랙과 아주 유사하게, 파일 포맷 샘플들의 시퀀스로 구조화될 수 있다. 이러한 트랙은 메타데이터 트랙으로 지칭될 수도 있다. 각 메타데이터 샘플은 메타데이터 스테이트먼트 (statement) 로서 구조화될 수도 있다. 대응하는 파일-포맷 샘플 또는 그의 구성요소인 샘플들에 관해 질문받을 수 있을지도 모르는 여러 질문사항들에 대응하는 각종의 스테이트먼트가 존재한다.
미디어가 스트리밍 프로토콜을 통해서 전달될 때, 그 미디어는 그 파일에 표시되는 방법으로부터 변환될 필요가 있을 수도 있다. 이에 대한 일 예는 미디어가 실시간 프로토콜 (Real Time Protocol; RTP) 을 통해서 송신되는 경우이다. 파일에서, 예를 들면, 비디오의 각 프레임이 파일-포맷 샘플로서 인접하여 저장된다. RTP 에서는, 이들 프레임들을 RTP 패킷들에 배치하도록 사용된 코덱에 특정한 패킷화 룰들을 따라야 한다. 스트리밍 서버는 이러한 패킷화를 런-타임으로 계산하도록 구성될 수도 있다. 그러나, 스트리밍 서버들의 보조를 위한 지원이 있다. 힌트 트랙들로 불리는 특별한 트랙들이 파일들에 배치될 수도 있다.
힌트 트랙들은 특정 프로토콜에 대해 미디어 트랙들로부터 패킷 스트림들을 형성하는 방법에 관한, 스트리밍 서버들에 대한 일반적인 명령들 (general instructions) 을 포함한다. 이들 명령들의 형태가 미디어-독립적이기 때문에, 새로운 코덱들이 도입될 때 서버들은 수정될 필요가 없을 수도 있다. 또한, 인코딩 및 편집 (editing) 소프트웨어가 스트리밍 서버들을 알지 못할 수 있다. 일단 파일에 대해 편집이 완료되면, 힌터 (hinter) 로 불리는 하나의 소프트웨어가 스트리밍 서버 상에 배치하기 전에 파일에 힌트 트랙들을 추가하는데 이용될 수도 있다. 일 예로서, MP4 파일 포맷 사양에서, RTP 스트림들에 대한 정의된 힌트 트랙 포맷이 존재한다.
3GP (3GPP 파일 포맷) 는 3G UMTS 멀티미디어 서비스들에 대한 3세대 파트너쉽 프로젝트 (3GPP) 에 의해 정의된 멀티미디어 컨테이너 포맷이다. 통상적으로 3G 모바일폰들 및 다른 3G 가능 디바이스들 상에서 사용되지만, 일부 2G 및 4G 폰들 및 디바이스들 상에서도 실행될 수 있다. 3GPP 파일 포맷은 ISO 기반 미디어 파일 포맷에 기초한다. 최신 3GP 는 3GPP TS26.244, "Transparent end-to-end packet switched streaming service (PSS); 3GPP file format (3GP)" 에 특정된다. 3GPP 파일 포맷은 비디오 스트림들을 MPEG-4 Part 2 또는 H.263 또는 MPEG-4 Part 10 (AVC/H.264) 으로 저장한다. 3GPP 가 ISO 기반 미디어 파일 포맷에서의 샘플 엔트리 및 템플레이트 필드들의 사용법 뿐만 아니라 코덱들이 참조할 새로운 박스들을 정의하는 것을 특정하기 때문에, 3GPP 는 ISO 기반 미디어 파일 포맷 (MPEG-4 Part 12) 에서 AMR 및 H.263 코덱들의 사용을 허용한다. 3GP 파일들에의 MPEG-4 미디어 특정 정보의 저장을 위해, 3GP 사양은 ISO 기반 미디어 파일 포맷에 또한 기초하는 MP4 및 AVC 파일 포맷을 참조한다. MP4 및 AVC 파일 포맷 사양들은 ISO 기반 미디어 파일 포맷에서의 MPEG-4 콘텐츠의 사용법을 기술한다.
AVC 파일 포맷의 확장인 SVC 파일 포맷은, 새로운 추출자 및 티어 (tier) 의 구조들을 갖는다. 추출자들은 다른 트랙에서 같은 디코딩 시간을 가진 샘플에서의 비디오 코딩 데이터의 위치 및 사이즈에 관한 정보를 제공하는 포인터들이다. 이는 코딩 도메인 (domain) 에서 트랙 계층을 직접 빌딩하는 것을 허용한다. SVC 에서의 추출자 트랙이 하나 이상의 베이스 트랙들에 링크되며, 그 베이스 트랙들로부터 런-타임으로 데이터를 추출한다. 추출자는 SVC 확장들을 가진 NAL 유닛 헤더를 갖는 역참조가능한 포인터이다. 만약 추출에 이용되는 트랙이 상이한 프레임 레이트의 비디오 코딩 데이터를 포함하면, 추출자는 또한 트랙들 사이의 동기를 보장하기 위하여 디코딩 시간 오프셋을 포함한다. 런-타임으로, 추출자는 스트림이 비디오 디코더로 전달되기 전에, 추출자가 가리키는 데이터로 대체되어야 한다.
SVC 에서의 추출자 트랙들이 비디오 코딩 트랙들처럼 구조화되기 때문에, 추출자 트랙들은 그들이 상이한 방법들에서 필요로 하는 서브세트를 표시할 수도 있다. SVC 추출자 트랙은 단지 데이터를 다른 트랙으로부터 추출하는 방법에 대한 명령들만을 포함한다. SVC 파일 포맷에는, 또한 집합자들 (aggregators) 이 있으며, 이 집합자들은, 하나의 레이어에서의 NAL 유닛들을 집합자에 집합하는 것을 포함하여, 샘플 내의 NAL 유닛을 하나의 NAL 유닛으로서 함께 집합할 수 있다. SVC 에서의 추출자는 샘플 또는 집합자로부터 소정의 범위의 바이트들을 추출하거나, 또는 다수의 NAL 유닛들, 특히 샘플에서 연속하지 않는 다수의 NAL 유닛들이 아닌 단지 하나의 전체 NAL 유닛을 추출하도록 설계된다. SVC 파일 포맷에서는, 많은 비디오 동작 포인트들이 있을 수 있다. 티어들은 동작 포인트에 대해 하나 이상의 트랙들에서의 샘플들을 그룹화하도록 설계된다.
MVC 파일 포맷은 또한 추출자 트랙을 지원하며, 추출자 트랙은 상이한 뷰들로부터 NAL 유닛들을 추출하여 소정의 프레임 레이트에서의 뷰들의 서브세트인 동작 포인트를 형성한다. MVC 추출자 트랙의 설계는 SVC 파일 포맷에서의 추출자와 유사하다. 그러나, 대체 그룹을 형성하기 위하여 MVC 추출자 트랙들을 이용하는 것이 지원되지 않는다. 트랙 선택을 지원하기 위하여, MPEG 에 대해, 다음의 MPEG 제안, 즉 영국 런던, ISO/IEC JTC1/SC29/WG11 MPEG M16665, P. Frojdh, A. Norkin, 및 C. Priddle, "File format sub-track selection and switching" 이 제안되어 있다. 이 제안은 서브-트랙 레벨에서 대체/스위치 그룹 구상을 가능하게 하려고 시도한다.
맵 샘플 그룹은 샘플 그룹에 대한 확장이다. 맵 샘플 그룹에서, (샘플들의) 각 그룹 엔트리들은 가능하다면 한 뷰의 NAL 유닛들을 하나의 NAL 유닛에 집합한 후에, 실제로는 view_id 에 대한 맵인 "groupID" 의 설명 (description) 을 갖는다. 즉, 각 샘플 그룹 엔트리는 ScalableNALUMapEntry 값에 리스트된 그의 포함하는 뷰들을 갖는다. 이 샘플 그룹 엔트리의 grouping_type 은 "scnm" 이다.
프로그레시브 다운로드는 통상 HTTP 프로토콜을 이용하여 서버로부터 클라이언트로의 디지털 미디어 파일들의 전송을 기술하는데 사용되는 용어이다. 컴퓨터로부터 개시될 때, 소비자는 다운로드가 완료되기 전에 미디어의 플레이백을 시작할 수도 있다. 스트리밍 미디어와 프로그레시브 다운로드 사이의 주요 차이점은 디지털 미디어 데이터가 디지털 미디어에 액세스중인 최종 사용자 디바이스에 의해 수신되어 저장되는 방법에 있다. 프로그레시브 다운로드 플레이백이 가능한 미디어 플레이어는 웹 서버로부터 다운로드되므로, 디지털 미디어 파일의 로컬 버퍼 및 변하지 않을 파일의 헤더에 로케이트된 메타데이터에 의존한다. 특정된 양의 데이터가 로컬 플레이백 디바이스에 이용가능해지는 포인트에서, 미디어가 플레이하기 시작할 것이다. 이 특정된 버퍼의 양은 인코더 설정 (settings) 시에 콘텐츠의 프로듀서에 의해 파일에 내장되며, 미디어 플레이어에 의해 부과되는 추가적인 버퍼 설정에 의해 보강된다.
3GPP 에서는, 다운로드 및 프로그레시브 다운로드를 위해 3GP 파일들에 대해 HTTP/TCP/IP 전송이 지원된다. 더욱이, 비디오 스트리밍에 대해 HTTP 를 이용하는 것은 다소의 이점들을 갖고 있으며, HTTP 에 기반한 비디오 스트리밍 서비스들이 인기를 얻고 있다. HTTP 스트리밍의 다소의 이점들은, 기존의 인터넷 컴포넌트들 및 프로토콜들이 사용될 수 있어, 네트워크를 통해서 비디오 데이터를 전송하기 위한 새로운 기법들을 개발하는데 새로운 노력들이 요구되지 않는다는 점을 포함한다. 다른 전송 프로토콜들, 예를 들어, RTP 페이로드 포맷은 미디어 포맷 및 시그널링 문맥을 알아내기 위해 중재 (intermediate) 네트워크 디바이스들, 예를 들어, 중간 박스들을 필요로 한다. 또한, HTTP 스트리밍은 클라이언트-구동될 수 있으므로, 많은 제어 문제들을 피할 수 있다. 예를 들면, 모든 피쳐들을 활용하여 최적의 성능을 얻기 위하여, 서버는 아직 확인응답되지 않은 패킷들의 사이즈 및 콘텐츠를 계속 추적할 수도 있다. 또한, 서버는 RD-최적의 스위칭/세선화 (thinning) 결정을 행하기 위하여, 파일 구조를 분석하여 클라이언트 버퍼의 상태를 재구성할 수도 있다. 또한, 협상된 프로파일들과 호환을 유지하기 위하여 비트 스트림 변동에 대한 제약들이 충족될 수도 있다. HTTP 는 구현된 HTTP 1.1 를 가지는 웹 서버에서 반드시 새로운 하드웨어 또는 소프트웨어 구현들을 필요로 하는 것은 아니다. 또한, HTTP 스트리밍은 TCP-친화성 및 방화벽 통과 (traversal) 를 제공한다. 본 개시물의 기법들은 예를 들어, 비트레이트 적응을 제공함으로써, 비디오 데이터의 HTTP 스트리밍을 개선하여 대역폭에 관련된 문제들을 극복할 수도 있다.
비디오 압축 표준들, 예컨대 ITU-T H.261, H.262, H.263, MPEG-1, MPEG-2 및 H.264/MPEG-4 part 10 는 모션 보상 시간적 예측을 이용하여 시간적 리던던시를 감소시킨다. 인코더는 일부 이전에 인코딩된 화상들 (또한 여기서는 프레임들로도 지칭함) 로부터의 모션 보상 예측을 이용하여, 모션 벡터들에 따라서 현재의 코딩된 화상들을 예측한다. 통상적인 비디오 코딩에서는, 3 개의 주요 화상 유형들이 있다. 그들이 인트라 코딩된 화상 ("I-화상들" 또는 "I-프레임들"), 예측된 화상들 ("P-화상들" 또는 "P-프레임들") 및 양방향 예측된 화상들 ("B-화상들" 또는 "B-프레임들") 이다. P-화상들의 블록들은 하나의 다른 화상과 관련하여 인트라-코딩되거나 또는 예측될 수도 있다. B-화상에서, 블록들은 하나 또는 2 개의 참조 화상들로부터 예측될 수도 있거나, 또는 인트라-코딩될 수도 있다. 이들 참조 화상들은 현재의 화상의 전후에 시간적 순서로 로케이트될 수 있다.
H.264 코딩 표준에 따르면, 일 예로서, B-화상들은 이전에-코딩된 참조 화상들의 2 개의 리스트들, 즉 리스트 0 및 리스트 1 을 이용한다. 이들 2 개의 리스트들은 과거 및/또는 미래의 코딩된 화상들을 시간적 순서로 각각 포함할 수 있다. B-화상에서의 블록들은 여러 방법들, 즉 리스트 0 참조 화상으로부터의 모션-보상 예측, 리스트 1 참조 화상으로부터의 모션-보상 예측, 또는 리스트 0 및 리스트 1 참조 화상들 양자의 조합으로부터의 모션-보상 예측 중의 하나로 예측될 수도 있다. 리스트 0 및 리스트 1 참조 화상들 양자의 조합을 얻기 위하여, 2 개의 모션 보상된 참조 영역들이 리스트 0 및 리스트 1 참조 화상으로부터 각각 획득된다. 이들의 조합은 현재의 블록을 예측하는데 사용될 것이다.
더 작은 비디오 블록들이 더 나은 해상도를 제공할 수 있으며, 높은 세부 레벨들을 포함하는 비디오 프레임의 로케이션들을 위해 사용될 수도 있다. 일반적으로, 때때로 서브-블록들로 지칭되는, 매크로블록들 및 여러 파티션들이 비디오 블록들로 간주될 수도 있다. 또한, 슬라이스가 복수의 비디오 블록들, 예컨대 매크로블록들 및/또는 서브-블록들로 간주될 수도 있다. 각 슬라이스는 독립적으로 디코딩가능한 비디오 프레임의 유닛일 수도 있다. 대안으로, 프레임들 자체는 디코딩가능한 유닛들일 수도 있거나, 또는 프레임의 다른 부분들이 디코딩가능한 유닛들로 정의될 수도 있다. 용어 "코딩된 유닛" 또는 "코딩 유닛" 은 전체 프레임, 프레임의 슬라이스, 시퀀스로도 지칭되는 화상들의 그룹 (GOP) 과 같은 임의의 독립적으로 디코딩가능한 비디오 프레임의 유닛, 또는 적용가능한 코딩 기법들에 따라서 정의된 다른 독립적으로 디코딩가능한 유닛을 지칭할 수도 있다.
용어 매크로블록은 16x16 픽셀들을 포함하는 2-차원 픽셀 어레이에 따라서 화상 및/또는 비디오 데이터를 인코딩하기 위한 데이터 구조를 지칭한다. 각 픽셀들은 크로미넌스 성분 및 루미넌스 성분을 포함한다. 따라서, 매크로블록은 8x8 픽셀들의 2-차원 어레이를 각각 포함하는 4 개의 루미넌스 블록들, 16x16 픽셀들의 2-차원 어레이를 각각 포함하는 2 개의 크로미넌스 블록들, 및 신택스 정보, 예컨대 코딩된 블록 패턴 (CBP), 인코딩 모드 (예를 들어, 인트라-(I), 또는 인터-(P 또는 B) 인코딩 모드들), 인트라-인코딩된 블록의 파티션들에 대한 파티션 사이즈 (예를 들어, 16x16, 16x8, 8x16, 8x8, 8x4, 4x8, 또는 4x4), 또는 인터-인코딩된 매크로블록에 대한 하나 이상의 모션 벡터들을 포함하는 헤더를 정의할 수도 있다.
비디오 인코더 (28), 비디오 디코더 (48), 오디오 인코더 (26), 오디오 디코더 (46), 멀티플렉서 (30), 및 디멀티플렉서 (38) 각각은, 적용가능한 경우, 여러 적절한 임의의 인코더 또는 디코더 회로망, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적 회로들 (ASICs), 필드 프로그램가능한 게이트 어레이들 (FPGAs), 이산 로직 회로망, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로 구현될 수도 있다. 비디오 인코더 (28) 및 비디오 디코더 (48) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 비디오 인코더 (28) 및 비디오 디코더 (48) 중 어느 하나가 결합된 비디오 인코더/디코더 (코덱) 의 일부로서 통합될 수도 있다. 이와 유사하게, 오디오 인코더 (26) 및 오디오 디코더 (46) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있으며, 오디오 인코더 (26) 및 오디오 디코더 (46) 중 어느 하나가 결합된 오디오 인코더/디코더 (코덱) 의 일부로서 통합될 수도 있다. 비디오 인코더 (28), 비디오 디코더 (48), 오디오 인코더 (26), 오디오 디코더 (46), 멀티플렉서 (30), 및/또는 디멀티플렉서 (38) 를 포함하는 장치는 집적 회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 예컨대 셀룰러 전화를 포함할 수도 있다.
본 개시물의 기법들에 따르면, 멀티플렉서 (30) 는 NAL 유닛들을 ISO 기반 미디어 파일 포맷 또는 그의 파생 포맷 (예를 들어, SVC, AVC, MVC, 또는 3GPP) 을 따르는 비디오 파일의 트랙들에 어셈블링하고, 잠재적으로 다른 트랙의 비연속적인 하나 이상의 NAL 유닛들을 식별하는 미디어 추출자 트랙을 포함하고, 비디오 파일을 출력 인터페이스 (32) 로 전달할 수도 있다. 출력 인터페이스 (32) 는 예를 들면, 송신기, 송수신기, 예를 들어, 예컨대, 광학 드라이브, 자기 매체 드라이브 (예를 들어, 플로피 드라이브), 범용 직렬 버스 (USB) 포트, 네트워크 인터페이스와 같은 컴퓨터 판독가능 매체에 데이터를 기록하기 위한 디바이스, 또는 다른 출력 인터페이스를 포함할 수도 있다. 출력 인터페이스 (32) 는 NAL 유닛 또는 액세스 유닛을 컴퓨터 판독가능 매체 (34), 예를 들면, 송신 신호 또는 반송파와 같은 일시적 매체 (transient medium), 또는 자기 매체, 광학 매체, 메모리 또는 플래시 드라이브와 같은 컴퓨터 판독가능 저장 매체로 출력한다.
입력 인터페이스 (36) 는 컴퓨터 판독가능 매체 (34) 로부터 데이터를 취출한다. 입력 인터페이스 (36) 는 예를 들면, 광학 드라이브, 자기 매체 드라이브, USB 포트, 수신기, 송수신기, 또는 다른 컴퓨터 판독가능 매체 인터페이스를 포함할 수도 있다. 입력 인터페이스 (36) 는 NAL 유닛 또는 액세스 유닛을 디멀티플렉서 (38) 에 제공할 수도 있다. 디멀티플렉서 (38) 는 전송 스트림 또는 프로그램 스트림을 구성요소인 PES 스트림들로 디멀티플렉싱하고, 그 PES 스트림들을 패킷화 해제하여 인코딩된 데이터를 취출하고, 예를 들어, 그 스트림의 PES 패킷 헤더들에 의해 표시되는 바와 같이 그 인코딩된 데이터가 오디오 또는 비디오 스트림의 일부인지 여부에 따라서, 인코딩된 데이터를 오디오 디코더 (46) 또는 비디오 디코더 (48) 로 전송할 수도 있다. 디멀티플렉서 (38) 는 수신된 비디오 파일에 포함된 트랙들 중의 하나를 먼저 선택한 후, 단지 그 선택된 트랙의 데이터 및 그 선택된 트랙의 추출자들에 의해 참조되는 다른 트랙들의 데이터만을 비디오 디코더 (48) 로 전달하여, 그 선택된 트랙의 추출자에 의해 참조되지 않는 다른 트랙들의 데이터를 폐기할 수도 있다. 오디오 디코더 (46) 는 인코딩된 오디오 데이터를 디코딩하고 그 디코딩된 오디오 데이터를 오디오 출력 (42) 으로 전송하는 동안, 비디오 디코더 (48) 는 인코딩된 비디오 데이터를 디코딩하고 스트림의 복수의 뷰들을 포함할 수도 있는 디코딩된 비디오 데이터를 비디오 출력 (44) 으로 전송한다. 비디오 출력 (44) 은 복수의 장면 뷰들을 이용하는 디스플레이, 예컨대, 장면의 각 뷰를 동시에 제공하는 스테레오스코픽 또는 오토스테레오스코픽 디스플레이를 포함할 수도 있다.
도 2 는 멀티플렉서 (30) (도 1) 의 컴포넌트들의 예시적인 배열을 나타내는 블록도이다. 도 2 의 예에서, 멀티플렉서 (30) 는 스트림 관리 유닛 (60), 비디오 입력 인터페이스 (80), 오디오 입력 인터페이스 (82), 멀티플렉싱된 스트림 출력 인터페이스 (84), 및 프로그램 특정 정보 테이블들 (88) 을 포함한다. 스트림 관리 유닛 (60) 은 NAL 유닛 구축기 (62), 스트림 식별자 (스트림 ID) 룩업 유닛 (66), 트랙 생성 유닛 (64), 및 추출자 생성 유닛 (68) 을 포함한다.
도 2 의 예에서, 비디오 입력 인터페이스 (80) 및 오디오 입력 인터페이스 (82) 는 인코딩된 비디오 데이터 및 인코딩된 오디오 데이터로부터 PES 유닛들을 형성하기 위한 각각의 패킷타이저들을 포함한다. 다른 예들에서, 비디오 및/또는 오디오 패킷타이저들은 멀티플렉서 (30) 의 외부에 존재할 수도 있다. 도 2 의 예에 대하여, 비디오 입력 인터페이스 (80) 는 비디오 인코더 (28) 로부터 수신된 인코딩된 비디오 데이터로부터 PES 패킷들을 형성할 수도 있으며, 오디오 입력 인터페이스 (82) 는 오디오 인코더 (26) 로부터 수신된 인코딩된 오디오 데이터로부터 PES 패킷들을 형성할 수도 있다.
NAL 유닛 구축기 (62) 가 NAL 유닛들을 구축한 후, NAL 유닛 구축기 (62) 는 NAL 유닛들을 트랙 생성 유닛 (64) 으로 전송한다. 트랙 생성 유닛 (64) 은 NAL 유닛들을 수신하고 NAL 유닛들을 포함하는 비디오 파일을 그 비디오 파일의 하나 이상의 트랙들에 어셈블링한다. 트랙 생성 유닛 (64) 은 또한 추출자 생성 유닛 (68) 을 실행하여 트랙 생성 유닛 (64) 에 의해 구축되는 하나 이상의 미디어 추출자 트랙들에 대한 추출자들을 생성할 수도 있다. 하나 이상의 NAL 유닛들이 다수의 트랙들에 속하는 것으로 결정될 때, 트랙들 상호간에 NAL 유닛을 복사하기 보다는, 추출자 생성 유닛 (68) 은 그 NAL 유닛을 참조하는 트랙에 대한 추출자를 구축할 수도 있다. 이러한 방법으로, 멀티플렉서 (30) 는 트랙들 사이의 데이터의 복사를 피할 수 있어, 비디오 파일을 송신할 때 대역폭 소비를 줄일 수도 있다.
이하, 추출자에 대한 데이터 구조들 및 컴포넌트들의 여러 예들을 설명한다. 일반적으로, 추출자는 참조된 NAL 유닛이 포함되는 트랙을 참조하는 트랙 식별자 값, 및 그 추출자에 의해 참조된 NAL 유닛들을 식별하는 하나 이상의 NAL 유닛 식별자들을 포함할 수도 있다. 일부 예들에서, NAL 유닛 식별자들은 식별된 NAL 유닛들에 대응하는 트랙 식별자 값에 의해 참조된 트랙에서 비트 또는 바이트 범위를 참조할 수도 있다. 일부 예들에서, NAL 유닛 식별자들은 예를 들어, 비연속적인 NAL 유닛들을 식별하기 위하여 추출자에 의해 식별된 각 NAL 유닛을 개별적으로 참조할 수도 있다. 일부 예들에서, NAL 유닛 식별자들은 미디어 추출자 트랙에서의 추출자의 시간적 또는 공간적 로케이션으로부터의 오프셋에 기초하여, NAL 유닛들을 참조할 수도 있다.
트랙 생성 유닛 (64) 은, 일부 예들에서, 미디어 추출자 트랙에 추가적인 NAL 유닛들을 포함할 수도 있다. 즉, 미디어 추출자 트랙은 NAL 유닛들과 추출자들 모두를 포함할 수도 있다. 따라서, 일부 예들에서, 트랙 생성 유닛 (64) 은 단지 NAL 유닛들만을 포함하는 제 1 트랙 및 그 제 1 트랙의 NAL 유닛들의 모두 또는 서브세트를 참조하는 하나 이상의 추출자들을 포함하는 제 2 트랙을 갖는 비디오 파일을 구축할 수도 있다. 더욱이, 일부 예들에서, 트랙 생성 유닛 (64) 은 제 1 트랙에 포함되지 않는 추가적인 NAL 유닛들을 제 2 트랙에 포함할 수도 있다. 이와 유사하게, 본 개시물의 기법들은 복수의 트랙들로 확장될 수도 있다. 예를 들면, 트랙 생성 유닛 (64) 은 제 1 트랙의 NAL 유닛들 및/또는 제 2 트랙의 NAL 유닛들을 참조할 수도 있는 제 3 트랙을 구축할 수도 있으며, 제 1 트랙 또는 제 2 트랙에 포함되지 않는 NAL 유닛들을 추가적으로 포함할 수도 있다.
도 3 은 비디오 샘플들의 세트를 가진 제 1 트랙 및 제 1 트랙의 비디오 샘플들의 서브세트를 참조하는 추출자들을 가진 제 2 트랙을 포함하는 예시적인 파일 (100) 을 나타내는 블록도이다. 도 3 의 예에서, 파일 (100) 은 MOOV 박스 (102) 및 미디어 데이터 (MDAT) 박스 (110) 를 포함한다. MOOV 박스 (102) 는 무비 박스에 대응하며, 여기서 ISO 기반 미디어 파일 포맷은 컨테이너 박스로서 정의되며, 그 컨테이너 박스의 서브-박스들이 프리젠테이션을 위한 메타데이터를 정의한다. MDAT 박스 (110) 는 미디어 데이터 박스에 대응하며, 여기서 ISO 기반 미디어 파일 포맷은 프리젠테이션을 위한 실제 데이터를 유지할 수 있는 박스로서 정의된다.
도 3 의 예에서, MOOV 박스 (102) 는 완전한 서브세트 트랙 (104) 및 미디어 추출자 트랙 (106) 을 포함한다. ISO 기반 미디어 파일 포맷은 ISO 기반 미디어 파일에서 관련된 샘플들의 타이밍된 시퀀스로서 "트랙" 을 정의한다. ISO 기반 미디어 파일 포맷은 또한 미디어 데이터에 있어서, 트랙이 샘플링된 오디오 또는 이미지들의 시퀀스에 대응함을 나타낸다.
MDAT 박스 (110) 는, 도 3 의 예에서, I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), B-인코딩된 샘플들 (116), 및 B-인코딩된 샘플들 (118) 을 포함한다. B-인코딩된 샘플들 (116) 및 B-인코딩된 샘플들 (118) 은 상이한 계층적 인코딩 레벨들에 있는 것으로 간주된다. 도 3 의 예에서, B-인코딩된 샘플들 (116) 은 B-인코딩된 샘플들 (118) 에 대한 참조로서 사용될 수도 있으며, 따라서, B-인코딩된 샘플들 (118) 이 B-인코딩된 샘플들 (116) 의 계층적 인코딩 레벨보다 낮은 계층적 인코딩 레벨에 있을 수도 있다. 샘플들의 디스플레이 순서는 계층적 순서 (또한, 디코딩 순서라고도 함) 및 샘플들이 MDAT 박스 (110) 에 포함되는 순서와 다를 수도 있다. 예를 들면, I-인코딩된 샘플들 (112) 은 0 의 디스플레이 순서 값 및 0 의 디코딩 순서 값을 가질 수도 있으며, P-인코딩된 샘플들 (114) 은 2 의 디스플레이 순서 값 및 1 의 디코딩 순서 값을 가질 수도 있으며, B-인코딩된 샘플들 (116) 은 1 의 디스플레이 순서 값 및 2 의 디코딩 순서 값을 가질 수도 있고, 그리고 B-인코딩된 샘플들 (118) 은 4 의 디스플레이 순서 값 및 3 의 디코딩 순서 값을 가질 수도 있다. 트랙 1 은 추가적인 샘플들, 예를 들어, 3 의 디스플레이 순서 값 및 4 의 디코딩 순서 값을 가진 샘플을 포함할 수도 있다.
I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), B-인코딩된 샘플들 (116), 및 B-인코딩된 샘플들 (118) 각각은 여러 NAL 유닛들 또는 액세스 유닛들에 대응할 수도 있다. ISO 기반 미디어 파일 포맷은 단일 타임스탬프와 관련된 모든 데이터, 예를 들어, 개별 비디오 프레임, 디코딩 순서의 일련의 비디오 프레임들, 또는 디코딩 순서의 압축된 오디오 섹션으로서 "샘플" 을 정의한다. 완전한 서브세트 트랙 (104) 은, 도 3 의 예에서, I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), B-인코딩된 샘플들 (116), 및 B-인코딩된 샘플들 (118) 을 참조하는 메타데이터를 포함한다.
MDAT 박스 (110) 는 추출자 (120), 추출자 (122), 및 추출자 (124) 를 더 포함한다. 따라서, 추출자들 (120 내지 124) 은 무비 데이터 박스에 포함되며, 무비 데이터 박스는 일반적으로 데이터의 샘플들을 포함할 것이다. 도 3 의 예에서, 추출자 (120) 는 I-인코딩된 샘플 (112) 을 참조하고, 추출자 (122) 는 P-인코딩된 샘플들 (114) 을 참조하며, 추출자 (124) 는 B-인코딩된 샘플들 (118) 을 참조한다. I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), 및/또는 B-인코딩된 샘플들 (118) 에 대응하는 2 개 이상의 NAL 유닛들이 존재할 수도 있으며, NAL 유닛들은 비연속적일 수도 있다. 본 개시물의 기법들에 따르면, 비록 그 대응하는 샘플에 2 개 이상의 비연속적인 NAL 유닛들이 존재할 수도 있지만, 그럼에도 불구하고 추출자들 (120 내지 124) 은 그 대응하는 샘플의 NAL 유닛들의 각각을 식별할 수도 있다. 미디어 추출자 트랙 (106) 은, 도 3 의 예에서, 추출자 (120), 추출자 (122), 및 추출자 (124) 을 참조하는 메타데이터를 포함한다.
추출자들 (120 내지 124) 각각은 또한 디스플레이 순서 값들 및 디코딩 순서 값들을 포함할 수도 있다. 예를 들면, 추출자 (120) 는 0 의 디스플레이 순서 값 및 0 의 디코딩 순서 값을 가질 수도 있고, 추출자 (122) 는 1 의 디스플레이 순서 값 및 1 의 디코딩 순서 값을 가질 수도 있으며, 추출자 (124) 는 2 의 디스플레이 순서 값 및 2 의 디코딩 순서 값을 가질 수도 있다. 일부 예들에서, 디스플레이 및/또는 디코딩 값들은 예를 들어, 식별된 샘플의 값들을 일치시키기 위하여 소정의 값들을 건너 뛸 수도 있다.
완전한 서브세트 트랙 (104) 및 미디어 추출자 트랙 (106) 은 대체 그룹을 형성할 수도 있어서, 디멀티플렉서 (38) (도 1) 가 비디오 디코더 (48) 에 의해 디코딩되도록 완전한 서브세트 트랙 (104) 또는 미디어 추출자 트랙 (106) 중 어느 하나를 선택할 수도 있다. MVC 의 예에 대하여, 완전한 서브세트 트랙 (104) 은 제 1 동작 포인트에 대응할 수도 있고, 미디어 추출자 트랙 (106) 은 제 2 동작 포인트에 대응할 수도 있다. 3GPP 의 예에 대하여, 완전한 서브세트 트랙 (104) 및 미디어 추출자 트랙 (106) 은 스위치 그룹을 형성할 수도 있다. 이러한 방법으로, 완전한 서브세트 트랙 (104) 및 미디어 추출자 트랙 (106) 이 예를 들어, HTTP 스트리밍 애플리케이션들에서 대역폭 가용성 및 디코더 능력을 적응시키는데 사용될 수도 있다.
완전한 서브세트 트랙 (104) 이 선택될 때, 디멀티플렉서 (38) 는 완전한 서브세트 트랙 (104) (예를 들어, I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), B-인코딩된 샘플들 (116), 및 B-인코딩된 샘플들 (118)) 에 대응하는 샘플들을 비디오 디코더 (48) 로 전송할 수도 있다. 미디어 추출자 트랙 (106) 이 선택될 때, 디멀티플렉서 (38) 는 미디어 추출자 트랙 (106) 에 대응하는 미디어 추출자들에 의해 식별된 샘플들을 포함하는, 미디어 추출자 트랙 (106) 에 대응하는 샘플들을 비디오 디코더 (48) 로 전송할 수도 있다. 따라서, 미디어 추출자 트랙 (106) 이 선택될 때, 디멀티플렉서 (38) 는 I-인코딩된 샘플 (112), P-인코딩된 샘플들 (114), 및 B-인코딩된 샘플들 (118) 을 비디오 디코더 (48) 로 전송할 수도 있으며, 여기서 디멀티플렉서 (38) 는 추출자 (120), 추출자 (122), 및 추출자 (124) 를 역참조함으로써 완전한 서브세트 트랙 (104) 으로부터 취출할 수도 있다.
도 4 는 2 개의 별개의 추출자 트랙들 (146, 148) 을 포함하는 다른 예시적 파일 (140) 을 나타내는 블록도이다. 도 4 의 예에는 2 개의 추출자 트랙들이 나타나 있지만, 일반적으로, 파일은 임의의 개수의 추출자 트랙들을 포함할 수도 있다. 도 4 의 예에서, 파일 (140) 은 MOOV 박스 (142) 및 MDAT 박스 (150) 를 포함한다. MOOV 박스 (142) 는 완전한 서브세트 트랙 (144) 및 미디어 추출자 트랙들 (146, 148) 을 포함한다. MDAT 박스 (150) 는 여러 트랙들에 대한 데이터의 샘플들 및 추출자들, 예를 들어, I-인코딩된 샘플 (152), P-인코딩된 샘플들 (154), B-인코딩된 샘플들 (156), B-인코딩된 샘플들 (158), 및 추출자들 (160 내지 168) 을 포함한다.
도 4 의 예에서, 추출자들 (160 내지 164) 은 미디어 추출자 트랙 (146) 에 대응하지만, 추출자들 (166 내지 168) 은 미디어 추출자 트랙 (148) 에 대응한다. 이 예에서, 미디어 추출자 트랙 (146) 의 추출자 (160) 는 I-인코딩된 샘플들 (152) 을 식별하고, 추출자 (162) 는 P-인코딩된 샘플들 (154) 을 식별하며, 그리고 추출자 (164) 는 B-인코딩된 샘플들 (156) 을 식별한다. 이 예에서, 추출자 (166) 는 I-인코딩된 샘플들 (152) 을 식별하지만, 추출자 (162) 는 P-인코딩된 샘플들 (154) 을 식별한다. 도 4 의 예는 여러 미디어 추출자 트랙의 2 개 이상의 추출자들이 완전한 서브세트 트랙의 동일 샘플을 참조하는 예를 설명한다.
미디어 추출자 트랙들은 원래의, 전체 (full) 시간적 해상도 비트스트림을 포함하는 트랙의 디코딩가능한 대체/스위칭 트랙, 예컨대, 완전한 서브세트 트랙 (144) 인 비디오 스트림의 시간적 서브세트들을 표시하는데 사용될 수도 있다. 완전한 서브세트 트랙 (144) 은 예를 들면, 30 FPS (frames-per-second) 비디오 스트림을 표시할 수도 있다. 일부 예들에서, 서브-비트스트림에 B-화상들의 소정의 계층적 레벨을 포함하지 않음으로써, 서브-비트스트림의 프레임레이트가 일부 다른 비율 (fraction) 만큼 반감되거나 또는 감소될 수도 있다. 예를 들면, 미디어 추출자 트랙 (146) 은, B-인코딩된 샘플들 (158) 을 포함하지 않음으로써, 완전한 서브세트 트랙 (144) 에 비해 반감된 프레임레이트를 가질 수도 있다. 예를 들면, 미디어 추출자 트랙 (146) 은 15 FPS 의 프레임레이트를 가질 수도 있다. 이와 유사하게, 미디어 추출자 트랙 (148) 은 B-인코딩된 샘플들 (156) 및 B-인코딩된 샘플들 (158) 모두를 생략함으로써 미디어 추출자 트랙 (146) 에 비해 반감된 프레임레이트를 가질 수 있으며, 따라서 7.5 FPS 의 프레임레이트를 가질 수도 있다.
도 5 는 서브세트 트랙 (188) 및 2 개의 미디어 추출자 트랙들 (184, 186) 을 포함하는 다른 예시적인 파일 (180) 을 나타내는 블록도이다. 파일 (180) 의 MOOV 박스 (182) 는 서브세트 트랙 (188) 및 미디어 추출자 트랙들 (184, 186) 을 포함하지만, MDAT 박스 (190) 는 I-인코딩된 샘플 (192), P-인코딩된 샘플들 (194), B-인코딩된 샘플들 (202), B-인코딩된 샘플들 (208), 및 추출자들 (198, 200, 204, 206 및 210) 을 포함한다.
위에서 설명한 바와 같이, 미디어 추출자 트랙은 다른 트랙의 샘플들을 참조하는 추출자들을 포함할 수도 있다. 또한, 미디어 추출자 트랙은 다른 트랙에 포함되지 않는 추가적인 비디오 샘플들을 더 포함할 수도 있다. 도 5 의 예에서, 서브세트 트랙 (188) 은 I-인코딩된 샘플 (192), 및 P-인코딩된 샘플들 (194) 을 포함한다. 미디어 추출자 트랙 (186) 은 추출자들 (198, 200) 을 포함하며, B-인코딩된 샘플들 (202) 을 추가적으로 포함한다. 이와 유사하게, 미디어 추출자 트랙 (184) 은 추출자들 (204, 206, 210) 을 포함하고, B-인코딩된 샘플들 (208) 을 추가적으로 포함한다.
도 5 의 예에서, 미디어 추출자 트랙 (186) 은 비디오 데이터의 인코딩된 샘플들 (B-인코딩된 샘플들 (202)) 을 포함하며, 미디어 추출자 트랙 (184) 은 인코딩된 샘플들을 포함하는 미디어 추출자 트랙 (186) 의 샘플들을 참조하는 추출자 (210) 를 포함한다. 즉, 도 5 의 예에서, 추출자 (210) 은 B-인코딩된 샘플들 (202) 를 참조한다. 따라서, 미디어 추출자 트랙 (184) 은 비트스트림의 전체 시간적 해상도를 표시할 수도 있지만, 미디어 추출자 트랙 (186) 및 서브세트 트랙 (188) 은 전체 시간적 해상도 비트스트림의 서브세트들을 표시할 수도 있다. 즉, 미디어 추출자 트랙 (186) 및 서브세트 트랙 (188) 은 미디어 추출자 트랙 (184) 에 의해 표시되는 전체 시간적 해상도보다 낮은 시간적 해상도들 (예를 들어, 낮은 프레임레이트들) 을 가질 수도 있다.
본 개시물의 기법들에 따르면, H.264/AVC 파일 포맷은 원래의 전체 시간적 해상도 비트스트림을 포함하는 트랙의 임의의 부합하는 시간적 서브세트로서 추출될 수 있는 추출자 트랙들을 포함하도록 변경될 수 있다. 계층적 B (또는 P) 화상 코딩을 지원하는 H.264/AVC 의 경우, N 시간적 레벨들이 있다고 가정하면, 시간적 레벨 0 내지 k (k<N) 의 샘플들을 포함하는 각 서브-비트스트림은 대응하는 추출자 트랙을 정의함으로써 추출될 수도 있다. 따라서, 동일 비디오의 경우, 대체/스위치 그룹을 형성하는 (N-1 추출자 트랙들을 포함한) N 트랙들이 있을 것이다. 추출자들은 추출자들에 의해 식별된 샘플들의 시간적 계층적 레벨에 대응하는 시간적 계층적 레벨과 관련될 수 있다. 예를 들면, 샘플들의 시간적 레벨을 특정하는 시간적 식별자 값은 또한 추출자로 시그널링될 수도 있다.
도 6a 내지 도 6c 는 여러 미디어 추출자 트랙들에 대한 미디어 추출자들의 예들을 포함하는 파일의 MDAT 박스 (220) 의 예들을 나타내는 블록도들이다. 도 6a 내지 도 6c 각각은 뷰 0 샘플 (224A), 뷰 2 샘플 (226A), 뷰 1 샘플 (228A), 뷰 4 샘플 (230A) 및 뷰 3 샘플 (232A) 을 포함하는 앵커 샘플 (222), 및 뷰 0 샘플 (224B), 뷰 2 샘플 (226B), 뷰 1 샘플 (228B), 뷰 4 샘플 (230B) 및 뷰 3 샘플 (232B) 을 포함하는 넌-앵커 샘플 (223) 을 도시한다. 넌-앵커 샘플 (223) 옆의 생략부호는 추가적인 샘플들이 MDAT 박스 (220) 에 포함될 수도 있음을 나타낸다. 앵커 및 넌-앵커 샘플들의 각각은 일괄하여 파일의 제 1 트랙을 형성할 수도 있다. 일 예에서, 도 6a 내지 도 6c 에 도시된 파일의 추출자들의 각 세트에 대한 미디어 추출자 트랙들은, 본 개시물의 기법들에 따라, MVC 파일 포맷을 따르는 비디오 파일의 별개의 동작 포인트에 대응할 수도 있다. 이러한 방법으로, 본 개시물의 기법들이 MVC 파일 포맷을 따르는 비디오 파일의 동작 포인트에 대응하는 하나 이상의 미디어 추출자 트랙들을 생성하는데 이용될 수도 있다.
도 6a 내지 도 6c 는 여러 미디어 추출자 트랙들의 추출자들 (240, 244, 250) 을 도시하며, 여기서 추출자들 (240, 244, 250) 은 MDAT 박스 (220) 에 각각 포함되어야 하지만, 명확성을 위해서 별개의 도면들에 나타나 있다. 즉, 완전히 어셈블링될 때, MDAT 박스 (220) 는 추출자들 (240, 244, 및 250) 의 각 세트를 포함할 수도 있다.
도 6a 내지 도 6c 는 미디어 추출자들 뿐만 아니라 실제 비디오 샘플들을 포함하는 트랙을 포함하는 파일의 예를 제공한다. 여러 샘플들이 상이한 시간적 레벨들에 따라서 상이한 트랙들에 개별적으로 포함될 수도 있다. 각 시간적 레벨들에 있어서, 특정 트랙은 모든 비디오 샘플들 뿐만 아니라 더 낮은 시간적 레벨들을 가진 트랙들에 대한 추출자들을 포함할 수도 있다. 비디오 샘플들 (NAL 유닛들) 은 상이한 트랙들로 분리될 수도 있지만, 더 높은 프레임 레이트를 가진 트랙은 다른 트랙들을 가리키는 추출자들을 가질 수도 있다. 이러한 방법으로, 단지 하나의 시간적 레벨의 샘플들을 포함하는 무비 단편들 (fragments) 을 갖는 것이 가능하며, 무비 단편은 가능하다면 다른 단편들을 가리키는 추출자들을 포함할 수도 있다. 이 경우, 상이한 트랙들의 무비 단편들은, 동일 기간이 아니라면, 시간적 레벨의 증가 순서로 인터리빙될 수 있을 것이다.
도 6a 는 미디어 추출자 트랙에 대응하는 추출자들 (242A 내지 242N) 을 포함하는 추출자들 (240) 의 예를 제공한다. 이 예에서, 추출자 (242A) 는 앵커 샘플 (222) 의 뷰 0 샘플 (224A) 을 참조한다. 추출자 (242N) 는 넌-앵커 샘플 (223) 의 뷰 0 샘플 (224B) 을 참조한다. 일반적으로, 도 6a 의 예에서, 추출자 세트 (240) 의 추출자는 대응하는 뷰 0 샘플을 참조한다. 추출자들 (242A 내지 242N) 각각은 공통 미디어 추출자 트랙에 대응하며, 공통 미디어 추출자 트랙은 스위치 그룹 및/또는 대체 그룹에 속할 수도 있다. 미디어 추출자 트랙은 또한 개개의 동작 포인트, 예를 들어, 뷰 0 을 포함하는 동작 포인트에 대응할 수도 있다.
일부 예들에서, MVC 를 이용하여 코딩되는 스테레오 비디오의 경우, 2 개의 뷰들을 출력하는 것을 지원하는 하나의 동작 포인트, 및 단지 하나의 뷰 (예를 들어, 단지 뷰 0 또는 뷰 1) 를 출력하는 것을 지원하는 제 2 동작 포인트를 포함하는, 3 개의 동작 포인트들이 있을 수 있다. 제 3 동작 포인트가 뷰 1 을 출력하는 동작 포인트일 수 있다. 예측 관계에 따라서, 제 3 동작 포인트는 뷰 1 에서의 단지 VCL NAL 유닛들 및 관련 넌-VCL NAL 유닛들만, 뷰 0 및 뷰 1 의 모든 NAL 유닛들, 또는 뷰 1 에서의 NAL 유닛들 뿐만 아니라, 앵커 NAL 유닛들 (즉, 앵커 뷰 컴포넌트들의 NAL 유닛들) 을 포함할 수도 있다. 이러한 스테레오의 경우에, 개시된 기법들의 예들은 다른 2 개의 동작 포인트들이 2 개의 추출자 트랙들에 의해 표시될 수 있음을 규정할 수도 있다. 이들 2 개의 추출자 트랙들은 스위치 그룹을 형성할 수도 있으며, 원래의 비디오 트랙과 함께, 이들 3 개의 트랙들은 대체 그룹을 형성할 수도 있다.
본 개시물은 MVC 미디어 추출자 트랙들을 포함하도록 MVC 파일 포맷을 변경하기 위한 기법들을 제공한다. 일반적으로, MVC 미디어 추출자 트랙들을 포함한, 동일 개수의 출력용 뷰들을 가진 MVC 비디오 트랙들은 스위치 그룹들로 특징될 수도 있다. 파일의 트랙들에 의해 표시되는 모든 동작 포인트들은 MVC 비디오 프리젠테이션의 하나의 대체 그룹에 속할 수도 있다. 앵커 샘플 (222) 및 넌-앵커 샘플 (223) 각각의 뷰들은 완전한 서브세트 트랙, 예를 들어, 가용 뷰들 모두를 포함하는 동작 포인트를 형성할 수도 있다.
추출자는 예를 들어, 도 6b 에 추출자들 (246A 내지 246N) 에 대하여 나타낸 바와 같이, 샘플의 연속적인 부분을 참조할 수도 있다. 도 6b 의 예에서, 추출자 (246A) 는 뷰 0 샘플 (224A) 을 참조하고 뷰 2 샘플 (226A) 을 참조한다. 추출자 (246A) 를 나타내는 데이터 구조는 식별된 뷰들, 시작 뷰 및 마지막 뷰, 시작 뷰 및 다수의 후속 뷰들, 또는 추출자에 의해 식별되는 연속적인 일련의 뷰들의 다른 표시에 대한 바이트 범위를 특정할 수도 있다. 추출자들 (244) 의 세트는 다른 미디어 추출자 트랙에 대응할 수도 있으며, 결과적으로 별개의 MVC 동작 포인트에 대응할 수도 있다.
2 개의 추출자들은 또한 예를 들어, 도 6c 에 추출자들 (254A, 256A) 에 대해 나타낸 바와 같이, 샘플의 2 개의 부분들 (예를 들어, 2 개의 비연속적인 뷰들) 을 참조할 수도 있다. 예를 들면, 추출자 샘플 (252A) 은 뷰 0 샘플 (224A) 및 뷰 2 샘플 (226A) 을 참조하는 추출자 (254A) 뿐만 아니라, 뷰 4 샘플 (230A) 을 참조하는 추출자 (254B) 를 포함한다. 따라서, 추출자 샘플 (252A) 에 의해 표시되는 샘플은 비연속적인 뷰 샘플들을 참조하는 추출자 샘플에 대응할 수도 있다. 이와 유사하게, 도 6c 의 예에서, 추출자 샘플 (252N) 은 뷰 0 샘플 (224B) 및 뷰 2 샘플 (226B) 을 참조하는 추출자 (256A) 뿐만 아니라, 뷰 4 샘플 (230B) 을 참조하는 추출자 (256B) 를 포함한다.
추출자들은 또한 앵커 또는 넌-앵커 샘플들에 대해 정의될 수도 있으며, 여기서 앵커 샘플들에 대해 정의되는 추출자들은 넌-앵커 샘플들에 대해 정의되는 추출자들과는 다른 뷰들을 참조할 수도 있다.
ISO 기반 미디어 파일 포맷 또는 MVC 파일 포맷에서의 위에서 언급한 MVC 미디어 추출자 트랙들은 유사한 추출 기능성으로 구현될 수 있는 메타데이터 트랙들의 인스턴스들일 수 있으며, 정상 비디오 트랙의 대체 및/또는 스위치 트랙들을 표시하는데 사용될 수 있다.
MVC 파일 포맷을 이용하는 예들에서, 하나의 트랙에 전체 비트스트림이 포함될 수도 있으며 모든 다른 가능한 동작 포인트들이 추출자 트랙들에 의해 표시될 수도 있으며, 각 추출자 트랙들은 예를 들어, 출력용 뷰들의 수, 출력용 뷰들의 뷰 식별자 값들, 송신에 요구되는 대역폭, 및 프레임 레이트를 시그널링할 수도 있다.
도 7 은 예시적인 MVC 예측 패턴을 나타내는 개념도이다. 도 7 의 예에서는, (뷰 ID들 "S0" 내지 "S7" 을 가지는) 8 개의 뷰들이 나타나 있으며 12 개의 시간적 로케이션들 ("T0" 내지 "T11") 이 각 뷰들에 대해 나타나 있다. 즉, 도 7 의 각 로우 (row) 는 하나의 뷰에 대응하는 한편, 각 컬럼 (column) 은 시간적 로케이션을 나타낸다.
비록 MVC 가 H.264/AVC 디코더들에 의해 디코딩가능한 소위 베이스 뷰 및 MVC 에 의해 또한 지원될 수 있는 스테레오 뷰 쌍 (stereo view pair) 을 갖지만, MVC 의 이점은 3 개 이상의 뷰들을 3D 비디오 입력으로서 이용하고 다수의 뷰들에 의해 표시되는 이 3D 비디오를 디코딩하는 예를 지원할 수 있다는 것이다. MVC 디코더를 가진 클라이언트의 렌더러 (renderer) 는 다수의 뷰들을 가진 3D 비디오 콘텐츠를 기대할 수도 있다. 하나의 뷰에서의 앵커 뷰 컴포넌트 및 넌-앵커 뷰 컴포넌트는 상이한 뷰 의존성들을 가질 수 있다. 예를 들면, 뷰 S2 에서의 앵커 뷰 컴포넌트들은 뷰 S0 에서의 뷰 컴포넌트들에 의존한다. 그러나, 뷰 S2 에서의 넌-앵커 뷰 컴포넌트들은 다른 뷰들에서의 뷰 컴포넌트들에 의존하지 않는다.
대응하는 프레임이 인트라-코딩되는지 (즉, I-프레임), 또는 한 방향으로 (즉, P-프레임과 같이) 또는 다수의 방향으로 (즉, B-프레임과 같이) 인터-코딩되는지 여부를 지정하는 문자를 포함하는 음영진 블록을 이용하여, 도 7 에서는, 프레임들이 도 7 의 각 로우 및 각 칼럼에 표시되어 있다. 일반적으로, 예측들은 화살표로 표시되어 있으며, 여기서 가리켜진 (pointed-to) 프레임이 가리키는 시작 지점의 (point-from) 대상 (object) 을 예측 참조를 위해 이용한다. 예를 들면, 시간적 로케이션 T0 에서의 뷰 S2 의 P-프레임은 시간적 로케이션 T0 에서의 뷰 S0 의 I-프레임으로부터 예측된다.
단일 뷰 비디오 인코딩에서와 같이, 멀티뷰 비디오 코딩 비디오 시퀀스의 프레임들은 상이한 시간적 로케이션들에서의 프레임들에 대하여 예측적으로 인코딩될 수도 있다. 예를 들면, 시간적 로케이션 T1 에서의 뷰 S0 의 b-프레임은 시간적 로케이션 T0 에서의 뷰 S0 의 I-프레임으로부터 가리켜지는 화살표를 가지며, 이는 b-프레임이 I-프레임으로부터 예측된다는 것을 나타낸다. 추가적으로, 그러나, 멀티뷰 비디오 인코딩의 문맥에서는, 프레임들이 인터-뷰 예측될 수도 있다. 즉, 뷰 컴포넌트는 다른 참조용 뷰들에서의 뷰 컴포넌트들을 이용할 수 있다. MVC 에서는, 예를 들면, 마치 다른 뷰에서의 뷰 컴포넌트가 인터-예측 참조인 것처럼, 인터-뷰 예측이 실현된다. 잠재적인 인터-뷰 참조들은 시퀀스 파라미터 세트 (SPS) MVC 확장으로 시그널링되며 참조 화상 리스트 구성 프로세스에 의해 변경될 수 있으며, 따라서 인터-예측 또는 인터-뷰 예측 참조들의 유연한 순서화를 가능하게 한다. 아래의 테이블 1 은 MVC 확장 시퀀스 파라미터 세트에 대한 예시적인 정의를 제공한다.
테이블 1
도 7 은 인터-뷰 예측의 여러 예들을 제공한다. 도 7 의 예에서는, 뷰 S1 의 프레임들이 상이한 시간적 로케이션들에서의 뷰 S1 의 프레임들로부터 예측될 뿐만 아니라, 동일 시간적 로케이션들에서의 뷰들 S0 및 S2 의 프레임들로부터 인터-뷰 예측되는 것으로 나타나 있다. 예를 들면, 시간적 로케이션 T1 에서의 뷰 S1 의 b-프레임은 시간적 로케이션들 T0 및 T2 에서의 뷰 S1 의 B-프레임들 각각 뿐만 아니라, 시간적 로케이션 T1 에서의 뷰들 S0 및 S2 의 b-프레임들로부터 예측된다.
도 7 의 예에서, 대문자 "B" 및 소문자 "b" 는 상이한 인코딩 방법론들 대신에, 프레임들 사이의 상이한 계층적 관계들을 나타내려고 의도한 것이다. 일반적으로, 대문자 "B" 프레임들은 소문자 "b" 프레임들보다 예측 계층이 상대적으로 더 높다. 즉, 도 7 의 예에서, "b" 프레임들은 "B" 프레임들에 대하여 인코딩된다. 도 7 의 "b" 프레임들을 참조할 수도 있는 추가적인 양방향-인코딩된 프레임들을 가지는, 추가적인 계층적 레벨들이 추가될 수도 있다. 도 7 은 또한 상이한 음영의 레벨들을 이용하여 예측 계층에서의 변동들을 나타내며, 여기서 더 많은 양의 음영 (즉, 상대적으로 어두운) 프레임들이 더 적은 음영을 가지는 (즉, 상대적으로 밝은) 프레임들보다 예측 계층이 더 높다. 예를 들면, 도 7 에서의 모든 I-프레임들은 최고 음영으로 나타나 있는 반면, P-프레임들은 다소 더 밝은 음영을 가지며 B-프레임들 (및 소문자 b-프레임들) 은 서로에 대해 여러 음영 레벨들을 갖지만 P-프레임들 및 I-프레임들의 음영 보다 항상 더 밝다.
일반적으로, 예측 계층에서 상대적으로 더 높은 프레임들이 그 계층에서 상대적으로 더 낮은 프레임들을 디코딩하기 전에 디코딩되어야하며, 따라서 그 계층에서 상대적으로 더 높은 그들 프레임들이 그 계층에서 상대적으로 더 낮은 프레임들의 디코딩 동안 참조 프레임들로서 이용될 수 있다는 점에서, 예측 계층은 뷰 순서 인덱스들에 관련된다. 뷰 순서 인덱스는 액세스 유닛에서의 뷰 컴포넌트들의 디코딩 순서를 나타내는 인덱스이다. 뷰 순서 인덱스들은 H.264/AVC 의 부속문서 H (MVC 수정안) 에 특정한 바와 같이, SPS MVC 확장에 시사되어 있다. SPS에서, 각 인덱스 i 에 대해, 대응하는 view_id 가 시그널링된다. 뷰 컴포넌트들의 디코딩은 뷰 순서 인덱스의 오름차순을 따른다. 만약 모든 뷰들이 제공된다면, 뷰 순서 인덱스들은 0 으로부터 num_views_minus_1 까지 연속적인 순서이다.
이러한 방법으로, 참조 프레임들과 관련하여 인코딩되는 프레임들을 디코딩하기 전에, 참조 프레임들로 사용되는 프레임들이 디코딩될 수도 있다. 뷰 순서 인덱스는 액세스 유닛에서의 뷰 컴포넌트들의 디코딩 순서를 나타내는 인덱스이다. 각 뷰 순서 인덱스 i 에 대해, 대응하는 view_id 가 시그널링된다. 뷰 컴포넌트들의 디코딩은 뷰 순서 인덱스들의 오름차순을 따른다. 만약 모든 뷰들이 제공된다면, 뷰 순서 인덱스들의 세트는 0 으로부터 뷰들의 전체 개수보다 하나 적은 개수까지 연속 순서화된 세트를 포함한다.
계층의 같은 레벨들에서의 소정의 프레임들에 있어, 디코딩 순서는 서로에 대해 문제가 되지 않을 수도 있다. 예를 들면, 시간적 로케이션 T0 에서의 뷰 S0 의 I-프레임이 시간적 로케이션 T0 에서의 뷰 S2 의 P-프레임에 대한 참조 프레임으로서 사용되며, 결과적으로는 시간적 로케이션 T0 에서의 뷰 S4 의 P-프레임에 대한 참조 프레임으로서 사용된다. 따라서, 시간적 로케이션 T0 에서의 뷰 S0 의 I-프레임은 시간적 로케이션 T0 에서의 뷰 S2 의 P-프레임 이전에 디코딩되어야 하며, 시간적 로케이션 T0 에서의 뷰 S2 의 P-프레임은 시간적 로케이션 T0 에서의 뷰 S4 의 P-프레임 이전에 디코딩되어야 한다. 그러나, 뷰 S1 과 뷰 S3 사이에는, 뷰들 S1 및 S3 이 예측을 위해 서로 의존하지 않고, 대신에 그 예측 계층에서 더 높은 뷰들로부터만 예측되기 때문에, 디코딩 순서가 문제가 되지 않는다. 더욱이, 뷰 S1 이 뷰들 S0 및 S2 이후에 디코딩되는 한, 뷰 S1 은 뷰 S4 이전에 디코딩될 수도 있다.
이러한 방법으로, 뷰들 S0 내지 S7 을 기술하기 위하여 계층적 순서화가 이용될 수도 있다. 표기 SA > SB 가, 뷰 SA 가 뷰 SB 이전에 디코딩되어야 하는 것을 의미한다고 하자. 이 표기를 이용하면, 도 7 의 예에서는, S0 > S2 > S4 > S6 > S7 이다. 또한, 도 7 의 예에서는, S0 > S1, S2 > S1, S2 > S3, S4 > S3, S4 > S5, 및 S6 > S5 이다. 이들 요구조건들을 위반하지 않는, 뷰들에 대한 임의의 디코딩 순서도 가능하다. 따라서, 단지 소정의 제한만으로도, 많은 상이한 디코딩 순서들이 가능하다. 2 개의 예시적인 디코딩 순서들이 아래에 제공되지만, 많은 다른 디코딩 순서들이 가능한 것으로 이해되어야 한다. 아래 테이블 2 에 나타낸 일 예에서, 뷰들이 가능한 빨리 디코딩된다.
테이블 2
테이블 2 의 예는, 뷰들 S0 및 S2 가 디코딩된 직후에 뷰 S1 이 디코딩될 수도 있으며 뷰들 S2 및 S4 가 디코딩된 직후에 뷰 S3 이 디코딩될 수도 있으며, 그리고 뷰들 S4 및 S6 이 디코딩된 직후에 뷰 S5 가 디코딩될 수도 있다는 것을 상기하고 있다.
아래의 테이블 3 은 그 디코딩 순서가 다른 뷰에 대한 참조로서 이용되는 임의의 뷰가 임의의 다른 뷰에 대한 참조로서 이용되지 않는 뷰들 이전에 디코딩되는 순서인 다른 예시적인 디코딩 순서를 제공한다.
테이블 3
테이블 3 의 예는, 도 7 의 예에서, 뷰들 S1, S3, S5, 및 S7 의 프레임들이 임의의 다른 뷰들의 프레임들에 대한 참조 프레임들로서 작용하지 않으며 따라서 뷰들 S1, S3, S5, 및 S7 이 참조 프레임들로서 이용되는 그 뷰들, 즉, 뷰들 S0, S2, S4, 및 S6 의 프레임들 이후에 디코딩된다는 것을 상기하고 있다. 서로에 대해, 뷰들 S1, S3, S5, 및 S7 은 임의의 순서로도 디코딩될 수도 있다. 따라서, 테이블 3 의 예에서, 뷰 S7 은 뷰들 S1, S3, 및 S5 각각의 이전에 디코딩된다.
명확히 하기 위하여, 각 뷰들의 프레임들 사이의 계층적 관계 뿐만 아니라 각 뷰들의 프레임들의 시간적 로케이션들이 존재할 수도 있다. 도 7 의 예에 있어서, 시간적 로케이션 T0 에서의 프레임들은 시간적 로케이션 T0 에서의 다른 뷰들의 프레임들로부터 인트라-예측되거나 또는 인터-뷰 예측된다. 이와 유사하게, 시간적 로케이션 T8 에서의 프레임들은 시간적 로케이션 T8 에서의 다른 뷰들의 프레임들로부터 인트라-예측되거나 또는 인터-뷰 예측된다. 따라서, 시간적 계층에 있어서, 시간적 로케이션들 T0 및 T8 은 시간적 계층의 최상부에 있다.
도 7 의 예에서, 시간적 로케이션 T4 에서의 프레임들은, 시간적 로케이션 T4 의 프레임들이 시간적 로케이션들 T0 및 T8 의 프레임들과 관련하여 B-인코딩되기 때문에, 시간적 로케이션들 T0 및 T8 의 프레임들보다 시간적 계층이 더 낮다. 시간적 로케이션들 T2 및 T6 에서의 프레임들은 시간적 로케이션 T4 에서의 프레임들보다 시간적 계층이 더 낮다. 마지막으로, 시간적 로케이션들 T1, T3, T5, 및 T7 에서의 프레임들은 시간적 로케이션들 T2 및 T6 의 프레임들보다 시간적 계층이 더 낮다.
MVC 에서, MVC 에 여전히 따르는 서브-비트스트림을 형성하기 위하여 전체 비트스트림의 서브세트가 추출될 수 있다. 예를 들면, 서버에 의해 제공되는 서비스, 하나 이상의 클라이언트들의 디코더들의 용량, 지원, 및 능력들, 및/또는 하나 이상의 클라이언트들의 선호도 (preference) 에 기초하여, 특정 애플리케이션들이 요구할 수도 있는 많은 가능한 서브-비트스트림들이 존재한다. 예를 들면, 클라이언트는 단지 3 개의 뷰들을 필요로 할 수 있고, 2 개의 시나리오들이 있을 수 있다. 일 예에서, 하나의 클라이언트는 스무스 (smooth) 뷰잉 경험을 필요로 할 수도 있고, view_id 값들을 가진 뷰들 S0, S1, 및 S2 을 선호할 수도 있는 한편, 또 다른 클라이언트는 뷰 스케일러빌러티를 필요로 할 수도 있고, view_id 값들을 가진 뷰들 S0, S2, 및 S4 을 선호할 수도 있다. 원래 view_id들이 테이블 9 의 예에 대하여 순서화된다면, 뷰 순서 인덱스 값들은 이들 2 개의 예들에서 각각 {0, 1, 2} 및 {0, 1, 4} 이다. 이들 서브-비트스트림들 양자들이 독립적인 MVC 비트스트림들로서 디코딩될 수 있고, 동시에 지원될 수 있음에 유념한다.
MVC 디코더들에 의해 디코딩가능한 많은 MVC 서브-비트스트림들이 있을 수 있다. 이론상으로는, 다음의 2 개의 속성들을 만족하는 뷰들의 임의의 조합이 소정의 프로파일 또는 레벨에 부응하는 MVC 디코더에 의해 디코딩될 수 있다 : (1) 각 액세스 유닛에서의 뷰 컴포넌트들이 뷰 순서 인덱스의 증가 순서로 순서화되고, (2) 그 조합에서의 각 뷰에 대해, 그 종속하는 뷰들이 또한 그 조합에 포함된다.
본 개시물의 기법들에 있어서, 여러 MVC 서브-비트스트림들은 미디어 추출자 트랙들 및/또는 순수 비디오 샘플 트랙들을 이용하여 표시될 수도 있다. 이들 트랙들 각각은 MVC 동작 포인트에 대응할 수도 있다.
도 8 내지 도 21 은 본 개시물의 기법들에 따라서 이용될 수도 있는 미디어 추출자들에 대한 데이터 구조들 및 다른 지원하는 데이터 구조들의 여러 예들을 나타내는 블록도들이다. 도 8 내지 도 22 의 여러 미디어 추출자들은 아래에 상세히 설명한 바와 같이, 여러 피쳐들을 포함한다. 일반적으로, 도 8 내지 도 21 의 임의의 미디어 추출자들이 파일의 코딩된 샘플들을 식별하기 위하여 ISO 기반 미디어 파일 포맷 또는 ISO 기반 미디어 파일 포맷의 확장을 따르는 파일의 미디어 추출자 트랙에 포함될 수도 있다. 일반적으로, 참조되는 트랙으로부터 전체 샘플들 중 하나 이상을 추출하기 위하여 미디어 추출자가 이용될 수도 있다. 도 8 내지 도 12 는 다른 트랙의 하나의 비디오 샘플 박스를 식별할 수 있는 미디어 추출자들의 예들이다. 도 13 에 나타낸 바와 같이, 추출자를 구현하는 다른 방법은 다른 트랙으로부터의 샘플들의 샘플 그룹화를 가능하게 하는 것이다. 시간적 스케일러빌리티에 대한 좀더 구체적인 지원을 제공하기 위하여, 도 14 에 나타낸 바와 같이, 시간적 식별자가 시그널링될 수 있다. 도 16 내지 도 22 는 각 비디오 샘플 박스 (액세스 유닛) 로부터 잠재적으로 비연속적인 하나 이상의 NAL 유닛들을 추출할 수 있는, MVC 에 대한 미디어 추출자들의 예들이다. 추출자들의 여러 예들은 파일 또는 액세스 유닛에서의 바이트들의 오프셋들 및 길이들에 기초하지만, 다른 예들은 전체 NAL 유닛들의 인덱스들에 순수하게 기초할 수 있으며, 따라서 바이트 범위들의 시그널링이 반드시 필수적이지는 않다. 또한, 전체 NAL 유닛들의 인덱스들을 가진 추출자들을 시그널링하는 메커니즘은 SVC 파일 포맷으로 확장될 수 있다.
도 8 내지 도 21 의 예들은 또한 3GPP 파일 포맷에 대한 확장으로서 3GPP 파일 포맷에 직접 적용될 수도 있다. 다른 추출자들을 형성하기 위하여 도 8 내지 도 21 중 하나 이상의 도면들의 엘리먼트들 및 구상이 또한 도 8 내지 도 22 중 다른 도면들의 엘리먼트들과 결합될 수 있다. 비록 도 8 내지 도 21 중 소정의 도면들이 특정 파일 포맷에 대해서 설명되었지만, 일반적으로, 유사한 특성들을 가진 임의의 파일 포맷, 예를 들어, ISO 기반 미디어 파일 포맷 또는 ISO 기반 미디어 파일 포맷의 확장들에 대해 도 8 내지 도 21 의 예들이 사용될 수도 있다. 3GPP 에서 제안된 추출자들의 사용을 용이하게 하기 위하여, 도 21 의 예에 나타낸 바와 같이, 3GPP 트랙 선택 박스는 (확장된) 대체 트랙의 각각에 대해 더 많은 특성들, 예컨대, 시간적 식별자, 디스플레이될 뷰들의 수 및 디코딩될 뷰들의 수를 포함하도록 확장될 수 있다.
도 8 은 미디어 추출자의 포맷을 나타내는 예시적인 미디어 추출자 (300) 를 나타내는 블록도이다. 도 8 의 예에서, 미디어 추출자 (300) 는 트랙 참조 인덱스 (302) 및 샘플 오프셋 값 (304) 을 포함한다. 본 개시물의 기법들에 따르면, 미디어 추출자 (300) 는 미디어 추출자 트랙 내에 인스턴스화될 (instantiated) 수도 있는 데이터 구조의 정의에 대응할 수도 있다. 멀티플렉서 (30) 는 비디오 파일의 상이한 트랙의 NAL 유닛을 식별하기 위하여 비디오 파일의 미디어 추출자 트랙에 미디어 추출자 (300) 의 예를 따르는 추출자를 포함하도록 구성될 수도 있다. 디멀티플렉서 (38) 는 미디어 추출자 (300) 를 따르는 추출자를 이용하여 식별된 NAL 유닛을 취출하도록 구성될 수도 있다.
트랙 참조 인덱스 (302) 는 식별된 NAL 유닛이 존재하는 트랙의 식별자에 대응할 수도 있다. 비디오 파일의 트랙들을 구별하기 위하여, 비디오 파일의 각 트랙에는 고유 인덱스가 할당될 수도 있다. 트랙 참조 인덱스 (302) 는 데이터를 추출할 트랙을 발견하기 위하여 이용할 트랙 참조의 인덱스를 특정할 수도 있다. 데이터가 추출되는 그 트랙에서의 샘플이 추출자를 포함하는 샘플과 정확히 시간적으로 정렬될 수도 있다 (미디어 디코딩 타임라인에서, 시간-대-샘플 테이블을 이용하여, 샘플 오프셋 값 (304) 에 의해 특정된 오프셋 만큼 조정됨). 일부 예들에서, 비디오 파일의 제 1 트랙은 '1' 의 인덱스 값을 가지며, 그러므로, 멀티플렉서 (30) 는 비디오 파일의 제 1 트랙을 참조하기 위하여 '1' 의 값을 트랙 참조 인덱스 값 (302) 에 할당할 수도 있다. 트랙 참조 인덱스 값에 대한 '0' 의 값은 미래의 사용을 위해 예비될 수도 있다.
샘플 오프셋 값 (304) 은 미디어 추출자 트랙에서의 미디어 추출자 (300) 의 시간적 로케이션으로부터 트랙 참조 인덱스 (302) 에 의해 참조되는 트랙의 식별된 NAL 유닛까지의 오프셋 값을 정의한다. 즉, 샘플 오프셋 값 (304) 은 정보의 소스로서 사용되는 링크된 트랙에서의 샘플의 상대적인 인덱스를 제공한다. 샘플 오프셋 값 (304) 에 대한 0 의 값은 동일하거나, 또는 가장 가까이 선행하는, 추출자를 포함하는 샘플에 대한 디코딩 시간을 가진 샘플을 말한다. 샘플 1 (one) 은 다음 샘플이며, 샘플 -1 (마이너스 1) 은 이전 샘플이며, 및 기타 등등이다. 미디어 추출자 (300) 를 따르는 미디어 추출자가 H.263 또는 MPEG-4 part 2 에서 사용될 때, 예를 들면, 미디어 추출자는 트랙 참조 인덱스 (302) 에 의해 참조되는 비디오 트랙의 시간적 서브세트를 추출하기 위하여 이용될 수도 있다.
아래의 의사코드는 미디어 추출자 (300) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다.
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
예시적인 의사코드에서, 클래스 MediaExtractor() 는 바이트 정렬된다. 즉, 추출자가 MediaExtractor() 클래스로부터 인스턴스화될 때, 추출자가 8-바이트 경계상에 정렬될 것이다. 변수 "track_ref_index" 는 트랙 참조 인덱스 값 (302) 에 대응하며, 이 예시적인 의사코드에서는, 부호없는 8 바이트 정수값에 대응한다. 변수 "sample_offset" 은 샘플 오프셋 값 (304) 에 대응하며, 이 예에서는, 부호있는 8 바이트 정수값에 대응한다.
도 9 는 미디어 추출자 (310) 의 다른 예를 나타내는 블록도이다. 미디어 추출자 (310) 는 트랙 참조 인덱스 (314) 및 샘플 오프셋 값 (316) 을 포함하며, 또한 샘플 헤더 (312) 를 포함한다. 트랙 참조 인덱스 (314) 및 샘플 오프셋 값 (316) 은 일반적으로 트랙 참조 인덱스 (302) 및 샘플 오프셋 값 (304) (도 8) 과 유사한 데이터를 포함할 수도 있다.
샘플 헤더 (312) 는, H.264/AVC 에 대응하는 예에서, 미디어 추출자 (310) 에 참조되는 비디오 샘플의 NAL 유닛 헤더들에 따라서 구축될 수도 있다. 샘플 헤더 (312) 는 3 개의 신택스 엘리먼트들, 즉 forbidden_zero_bit, nal_ref_idc (3 비트들을 포함할 수도 있음), nal_unit_type (5 비트들을 포함할 수도 있음) 을 가진 1 바이트의 데이터를 포함할 수도 있다. "nal_unit_type" 의 값은 29 (또는 임의의 다른 예비된 수) 일 수도 있고, 다른 2 개의 신택스 엘리먼트들은 식별된 비디오 샘플에서의 그 신택스 엘리먼트들과 같을 수도 있다. MPEG-4 part-2 visual 을 따르는 예들의 경우, 샘플 헤더 (312) 는 4 바이트 코드를 포함할 수도 있으며, 그 코드는 "0x 00 00 01" 의 시작 코드 프리픽스 및 "0x C5" (또는 임의의 다른 예비된 수) 의 시작 코드를 포함할 수도 있으며, 여기서 "0x" 는 "0x" 다음에 오는 값이 16 진수값임을 나타낸다. H.263 의 경우, 샘플 헤더 (312) 는 또한 정상 비디오 샘플들의 시작 코드와는 상이한 바이트 정렬된 시작 코드를 포함할 수도 있다. 샘플 헤더 (312) 는 동기화의 목적을 위해서 디멀티플렉서 (38) 에 의해 이용될 수도 있어서, 추출자가 정상 비디오 샘플로서 간주될 수도 있다.
아래의 의사코드는 미디어 추출자 (310) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 10 은 추출자 내의 식별된 NAL 유닛들의 바이트 범위를 시그널링함으로써 NAL 유닛들을 식별하는 예시적인 미디어 추출자 (320) 를 나타내는 블록도이다. 미디어 추출자 (320) 는 샘플 헤더 (312) 와 유사할 수도 있는 샘플 헤더 (322), 및 트랙 참조 인덱스 (302) 와 유사할 수도 있는 트랙 참조 인덱스 (324) 를 포함한다. 그러나, 샘플 오프셋 값 대신에, 미디어 추출자 (320) 의 예는 데이터 오프셋 값 (326) 및 데이터 길이 값 (328) 을 포함한다.
데이터 오프셋 값 (326) 은 미디어 추출자 (320) 에 의해 식별되는 데이터의 시작 포인트를 기술할 수도 있다. 즉, 데이터 오프셋 값 (326) 은 복사할 트랙 참조 인덱스 (324) 에 의해 식별되는 트랙 내의 제 1 바이트에 대한 오프셋을 나타내는 값을 포함할 수도 있다. 데이터 길이 값 (328) 은 복사할 바이트들의 수를 기술할 수도 있으며, 따라서, 참조된 샘플 (또는 다수의 NAL 유닛들을 참조하는 경우에는, 샘플들) 의 길이와 등가일 수도 있다.
다음의 의사코드는 미디어 추출자 (320) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 11 은 미래의 확장성을 위해서 예비된 비트들을 포함하는 예시적인 미디어 추출자 (340) 를 나타내는 블록도이다. 미디어 추출자 (340) 는 트랙 참조 인덱스 (342) 및 샘플 오프셋 값 (346) 을 포함하며, 이 트랙 참조 인덱스 및 샘플 오프셋 값은 트랙 참조 인덱스 (302) 및 샘플 오프셋 값 (304) 과 각각 유사할 수도 있다. 또한, 미디어 추출자 (340) 는 예비된 비트들 (344) 을 포함하며, 이 예비된 비트들은 미디어 추출자에 대한 미래의 확장들을 위해 사용되는 예비된 비트들을 포함할 수도 있다. 다음의 의사코드는 미디어 추출자 (340) 와 유사한 미디어 추출자 클래스의 예시적인 클래스 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 12 는 트랙 참조 인덱스 값 대신에, 트랙 식별자 값을 이용하는 예시적인 미디어 추출자 (350) 를 나타내는 블록도이다. 트랙을 식별하는데 있어 트랙 식별자 값의 이용은 ISO 기반 미디어 파일 포맷에서의 트랙 참조 박스의 프리젠테이션을 참조할 수도 있다. 미디어 추출자 (350) 의 예는 트랙 식별자 (352), 예비된 비트들 (354), 및 샘플 오프셋 값 (356) 을 포함한다. 예비된 비트들 (354) 은 예비된 비트들 (354) 주변을 파선으로 나타내는 바와 같이, 옵션이다. 즉, 일부 예들은 예비된 비트들 (354) 을 포함할 수도 있지만, 다른 예들은 예비된 비트들 (354) 을 생략할 수도 있다. 샘플 오프셋 값 (356) 은 샘플 오프셋 값 (304) 과 유사할 수도 있다.
트랙 식별자 (352) 는 데이터를 추출할 트랙의 트랙 ID 를 특정한다. 데이터가 추출되는 트랙에서의 샘플이 미디어 추출자 (350) 를 포함하는 샘플과 시간적으로 정렬될 수도 있다 (미디어 디코딩 타임라인에서, 시간-대-샘플 테이블을 이용하여, 샘플 오프셋 값 (356) 에 의해 특정된 오프셋 만큼 조정됨). 제 1 트랙 참조에는 1 의 식별자 값이 할당될 수도 있다. 0 의 값은 미래의 사용 및 확장들을 위해 예비될 수도 있다.
다음의 의사코드는 미디어 추출자 (350) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 13 은 예시적인 미디어 추출자 샘플 그룹 (360) 을 나타내는 블록도이다. 멀티플렉서 (30) 는 샘플 테이블 박스 컨테이너에 있어서, (유형 식별자 "MESG"을 가지는) 메시지-유형 박스에서, 미디어 추출자 샘플 그룹 (360) 을 포함할 수도 있다. 멀티플렉서 (30) 는 그 메시지 박스에 0 또는 하나의 미디어 추출자 샘플 그룹 (360) 객체들을 포함하도록 구성될 수도 있다. 도 13 의 예에서, 미디어 추출자 샘플 그룹 (360) 은 트랙 참조 인덱스 (362), 그룹 유형 (364), 그룹 개수 카운트 (366), 예비된 비트들 (368), 및 그룹 설명 인덱스들 (370) 을 포함한다.
트랙 참조 인덱스 (362) 는 소정의 기준하에서 샘플 그룹들로부터 데이터를 추출할 트랙을 발견하기 위하여 사용되는 트랙 참조의 인덱스를 특정한다. 즉, 트랙 참조 인덱스 (362) 는 트랙 참조 인덱스 (302) 와 유사한 방법으로 미디어 추출자에 의해 식별되는 데이터를 추출할 트랙을 식별한다.
그룹 유형 값 (364) 은 미디어 추출자 샘플 그룹 (360) 이 대응하는 샘플 그룹의 유형을 식별한다. 그룹 유형 값 (364) 은 일반적으로 샘플링 그룹의 샘플 그룹들을 형성하기 위하여 이용되는 기준을 식별하고 그 기준을 트랙 참조 인덱스 (362) 에 의해 식별되는 트랙에서의 그룹 유형에 대해 동일한 값을 가진 샘플 그룹 설명 테이블에 연결한다. 그룹 유형 값 (364) 은 정수값을 포함할 수도 있다. 이러한 방법으로, 미디어 추출자 샘플 그룹 (360) 의 그룹 유형 값은 트랙 참조 인덱스 (362) 가 참조하는 트랙의 그룹 유형과 같을 수도 있다. 대안으로, 비디오 시간적 서브세트의 경우, 그룹 유형 값 (364) 은 "vtst" 로 정의될 수도 있고, 미디어 추출자 샘플 그룹이 단지 그 그룹 유형에 대해서만 정의될 수 있으며, 신택스 테이블은 "grouping_type" 의 신택스 엘리먼트를 필요로 하지 않을 것이다.
그룹 개수 카운트 값 (366) 은 미디어 추출자 샘플 그룹 (360) 을 포함하는 미디어 추출자 트랙에서의 샘플 그룹들의 수를 기술할 수도 있다. 그룹 개수 카운트 값 (366) 에 대한 0 의 값은 그룹 유형 값 (364) 에 의해 참조되는 기준 하의 모든 샘플 그룹들이 미디어 추출자 트랙을 형성하는데 사용된다는 것을 표시할 수도 있다. 그룹 설명 인덱스 (370) 는 샘플 그룹 설명 테이블에서 미디어 추출자 트랙을 형성하는데 사용되는 샘플 그룹 엔트리의 인덱스를 정의한다.
본 개시물의 기법들에 따르면, 샘플들이 시간적으로 순서화되도록, 샘플 그룹 엔트리들에 모든 샘플들을 배치하기 위하여 어셈블링 프로세스가 이용될 수도 있으며, 따라서 미디어 추출자 트랙에서의 샘플 B 다음의 샘플 A 는 샘플 A 가 트랙 참조 인덱스 (362) 에 의해 참조되는 트랙에서의 샘플 B 를 뒤따른다는 것을 나타낸다.
아래의 의사코드는 미디어 추출자 샘플 그룹 (360) 과 유사한 미디어 추출자 샘플 그룹 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 14 는 AVC 파일 포맷을 따르는 비디오 파일들의 문맥에서 사용될 수도 있는 예시적인 미디어 추출자 (380) 를 나타내는 블록도이다. 미디어 추출자 (380) 의 예는 트랙 참조 인덱스 (382), 시간적 식별자 값 (384), 예비된 비트들 (386), 및 샘플 오프셋 값 (388) 을 포함한다. 트랙 참조 인덱스 (382) 및 샘플 오프셋 값 (388) 은 각각 트랙 참조 인덱스 (302) 및 샘플 오프셋 값 (304) 과 유사한 방법으로 사용될 수도 있다. 예비된 비트들 (386) 은 미래의 사용을 위해 예비될 수도 있으며, 이때 시멘틱 값 (semantic value) 이 할당되지 않는다.
시간적 식별자 값 (384) 은 미디어 추출자 (380) 에 의해 추출될 샘플의 시간적 레벨을 특정한다. 일 예에서, 시간적 레벨은 0 내지 7 까지의 범위이다. 위에서 설명한 바와 같이, 인코딩된 화상들은 시간적 레벨에 대응할 수도 있으며, 여기서 시간적 레벨은 일반적으로 프레임들 사이의 인코딩 계층을 기술한다. 예를 들면, 키 프레임들 (앵커 프레임들이라고도 함) 에는 가장 높은 시간적 레벨이 할당될 수도 있는 한편, 참조 프레임들로서 사용되지 않는 프레임들에는 상대적으로 더 낮은 시간적 레벨들이 할당될 수도 있다. 이러한 방법으로, 미디어 추출자 (380) 는 샘플들 자신을 명시적으로 식별하는 대신에, 샘플들의 시간적 레벨을 참조함으로써, 추출된 샘플들을 트랙 참조 인덱스 (382) 에 의해 참조되는 트랙으로부터 식별할 수도 있다. 시간적 식별자 값 (384) 에 의해 정의되는 값 보다 더 높은 값까지의 미디어 추출자들을 가진 미디어 추출자 트랙은 더 높은 프레임 레이트를 가진 동작 포인트에 대응할 수도 있다.
아래의 의사코드는 미디어 추출자 (380) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 15 는 미디어 추출자 트랙들을 포함하도록 MVC 를 변경하는데 사용될 수도 있는 예시적인 MVC 미디어 추출자 (420) 를 나타내는 블록도이다. MVC 미디어 추출자 (420) 의 예는 옵션의 NAL 유닛 헤더 (422), 트랙 참조 인덱스 (424), 샘플 오프셋 (426), 연속적인 바이트 세트 카운트 (428), 및 데이터 오프셋 값들 (430) 과 데이터 길이 값들 (432) 을 포함하는 값들의 루프를 포함한다. MVC 미디어 추출자 (420) 는 특정 트랙으로부터 뷰 컴포넌트들의 서브세트의 NAL 유닛들의 수를 추출하는데 이용될 수도 있다. MVC 미디어 추출자 (420) 의 예는 참조된 트랙의 샘플로부터 데이터를 추출할 때 트랙에서의 뷰 컴포넌트들을 건너 뛸 수도 있다.
존재할 때, NAL 유닛 헤더 (422) 는 MVC 미디어 추출자 (420) 에 의해 식별되는 NAL 유닛들의 NAL 유닛 헤더를 반영할 수도 있다. 즉, NAL 유닛 헤더 (422) 신택스 엘리먼트들이 MVC 파일 포맷에 정의되는 추출자 또는 집합자 생성 프로세스에서의 NAL 유닛 헤더 신택스에 따라서 생성될 수도 있다. 일부 예들에서, 예를 들어, 일련의 추출자들이 관련된 NAL 유닛 헤더들을 포함하도록 생성될 때, 추출자는 NAL 유닛 헤더 (422) 를 필요로 하지 않을 수도 있다.
트랙 참조 인덱스 값 (424) 은 데이터를 추출할 트랙을 발견하기 위하여 사용할 트랙 참조의 인덱스를 특정한다. 데이터가 추출되는 트랙에서의 샘플은 MVC 미디어 추출자 (420) 를 포함하는 샘플과 시간적으로 정렬될 수도 있다 (미디어 디코딩 타임라인에서, 샘플 오프셋 값 (426) 에 의해 특정된 오프셋 만큼 조정됨). 제 1 트랙 참조는 1 의 인덱스 값을 취득하도록 지정될 수도 있고, 트랙 참조 인덱스 값에 대해 0 의 값이 예비될 수도 있다.
샘플 오프셋 값 (426) 은 트랙 참조 인덱스 값 (424) 에 의해 참조되는 트랙에 로케이트되는 추출될 샘플의, MVC 미디어 추출자 (420) 의 시간적 로케이션에 대한 오프셋을 정의한다. 샘플 오프셋 값 (426) 에 대한 0 의 값은 추출될 샘플이 동일한 시간적 로케이션에 있음을 나타내고, 음의 1 이 이전 샘플을 나타내고, 양의 1 이 다음 샘플을 나타내며, 기타 등등을 나타낸다.
연속적인 바이트 세트 카운트 (428) 는 데이터를 추출할 트랙의 샘플의 연속적인 바이트 세트들의 수를 기술한다. 만약 연속적인 바이트 세트 카운트 (428) 가 0 의 값을 가지면, 트랙에서의 전체 참조되는 샘플이 추출될 것이다. 연속적인 바이트 세트들은 또한 샘플의 별개의 부분들로서 지칭될 수도 있다.
데이터 오프셋 값들 (430) 및 데이터 길이 값들 (432) 이 루프로 발생한다. 일반적으로, 루프의 반복의 수, 즉, 데이터 오프셋 값들 (430) 및 데이터 길이 값들 (432) 의 수는 추출될 샘플의 부분들의 수 (예를 들어, 연속적인 바이트 세트들의 수) 와 관련된다. 따라서, MVC 미디어 추출자 (420) 를 이용하여 샘플의 2 개 이상의 부분들이 추출될 수 있다. 추출될 샘플의 각 부분에 있어서, 데이터 오프셋 값들 (430) 의 대응하는 오프셋 값은 그 부분의 시작 (예를 들어, 샘플의 제 1 바이트에 대한, 그 부분의 제 1 바이트) 을 나타내고, 데이터 길이 값들 (432) 의 대응하는 길이 값은 복사할 길이, 예를 들어, 바이트들의 수를 나타낸다. 일부 예들에서, 데이터 길이 값들 (432) 중 하나에 대한 0 의 값은 그 샘플에서의 모든 나머지 바이트들이 복사될 수 있다는 것, 즉 그 부분이 데이터 오프셋 값들 (430) 의 대응하는 오프셋 값에 의해 표시되는 바이트 및 샘플의 끝까지의 모든 다른 인접 바이트들에 대응한다는 것을 나타낸다.
아래의 의사코드는 MVC 미디어 추출자 (420) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 16 은 미디어 추출자 트랙들을 포함하도록 MVC 을 변경하는데 사용될 수도 있는 다른 예시적인 MVC 미디어 추출자 (440) 를 나타내는 블록도이다. MVC 미디어 추출자 (440) 의 예는 도 15 의 예에 대하여 설명한 바와 같은 샘플의 특정 바이트들과는 반대로, 추출을 위해 특정 NAL 유닛들을 식별한다. 도 16 의 예에서, MVC 미디어 추출자 (440) 는 옵션의 NAL 유닛 헤더 (442), 트랙 참조 인덱스 (444), 샘플 오프셋 (446), 연속적인 NALU (NAL 유닛) 세트 카운트 (448), 및 NALU 오프셋 값들 (450) 과 연속적인 NAL 유닛들의 수들 (452) 의 루프를 포함한다. NAL 유닛 헤더 (442), 트랙 참조 인덱스 (444), 및 샘플 오프셋 값 (446) 은 일반적으로 각각 NAL 유닛 헤더 (422), 트랙 참조 인덱스 (424), 및 샘플 오프셋 값 (426) 과 동일한 방법으로 정의된다.
연속적인 NALU 세트 카운트 (448) 는 데이터를 추출할 트랙의 샘플의 연속적인 NAL 유닛들의 수를 기술한다. 일부 예들에서, 만약 이 값이 0 으로 설정되면, 그 트랙에서의 전체 참조되는 샘플이 추출된다.
NALU 오프셋 값들 (450) 및 연속적인 NALU들의 수들 (452) 이 루프로 발생한다. 일반적으로, 연속적인 NALU 세트 카운트 (448) 에 의해 정의되는 바와 같이, 연속적인 NALU들의 세트가 있는 것 만큼, NALU 오프셋 값들 및 연속적인 NALU들의 수들의 인스턴스들이 존재한다. 각 NALU 오프셋 값은 데이터를 추출할 트랙의 샘플에서의 대응하는 NAL 유닛의 오프셋을 기술한다. 이 추출자를 이용하여 NAL 유닛들의 이 오프셋으로부터 시작하는 NAL 유닛들이 추출될 수도 있다. 연속적인 NALU 값의 각각의 수는 NAL 유닛들의 대응하는 세트에 대해 전체의, 단일 참조되는 복사할 NAL 유닛들의 수를 기술한다.
아래의 의사코드는 MVC 미디어 추출자 (440) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 17 은 뷰 컴포넌트에 대해 2 개 이상의 NAL 유닛들이 있을 때 동일 뷰 컴포넌트에서의 NAL 유닛들을 집합하는 다른 예시적인 MVC 미디어 추출자 (460) 를 나타내는 블록도이다. MVC 미디어 추출자 (460) 는 그 때 식별된 뷰 컴포넌트들을 추출하는데 사용될 수도 있다. 도 17 의 예에서, MVC 미디어 추출자 (460) 는 옵션의 NAL 유닛 헤더 (462), 트랙 참조 인덱스 (464), 샘플 오프셋 값 (466), 연속적인 뷰 세트 카운트 (468), 및 뷰 컴포넌트 오프셋 값들 (470) 과 뷰 컴포넌트 카운트들 (472) 의 루프를 포함한다. NAL 유닛 헤더 (462), 트랙 참조 인덱스 (464), 및 샘플 오프셋 값 (466) 은 일반적으로 각각 NAL 유닛 헤더 (422), 트랙 참조 인덱스 (424), 및 샘플 오프셋 값 (426) 과 같은 방법으로 정의된다.
연속적인 뷰 세트 카운트 (468) 는 데이터를 추출할 트랙 참조 인덱스 (464) 에 의해 식별되는 트랙에서의 식별된 샘플의 연속적인 뷰 컴포넌트들의 수를 정의한다. 멀티플렉서 (30) 는 트랙에서의 전체 참조되는 샘플이 추출될 수 있다는 것을 나타내기 위하여, 연속적인 뷰 세트 카운트 (468) 의 값을 0 으로 설정할 수도 있다.
뷰 컴포넌트 오프셋 값들 (470) 및 뷰 컴포넌트 카운트들 (472) 은 루프로 발생한다. 일반적으로, 연속적인 뷰 세트 카운트 (468) 의 값 만큼 루프의 반복들이 존재하며, 각 루프는 연속적인 뷰 세트들 중의 하나에 대응한다. 뷰 컴포넌트 오프셋 값들 (470) 의 각각은 대응하는 연속적인 뷰 세트에 대한 데이터를 추출할 트랙의 샘플에서의 제 1 뷰 컴포넌트의 오프셋을 나타낸다. 뷰 컴포넌트들의 이 오프셋으로부터 시작하는 뷰 컴포넌트들이 그 후 MVC 미디어 추출자 (460) 를 이용하여 추출될 수도 있다. 뷰 컴포넌트 카운트들 (472) 각각은 대응하는 연속적인 뷰 세트에 대해 복사할 샘플에서의 전체 참조되는 뷰 컴포넌트들의 수를 기술한다.
아래의 의사코드는 MVC 미디어 추출자 (460) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 18 은 여러 트랙들을 참조하는데 사용될 수도 있는 MVC 미디어 추출자 (480) 의 다른 예를 나타내는 블록도이다. 도 18 의 예에서, MVC 미디어 추출자 (480) 는 옵션의 NAL 유닛 헤더 (482), 연속적인 뷰 세트 카운트 (484), 및 샘플 오프셋 값들 (486), 트랙 참조 인덱스 값들 (488), 뷰 컴포넌트 오프셋 값들 (490) 및 뷰 컴포넌트 카운트들 (492) 의 루프를 포함한다. NAL 유닛 헤더 (482) 는 NAL 유닛 헤더 (422) 와 유사하게 정의될 수도 있으며, 일부 예들에서는 생략될 수도 있다.
연속적인 뷰 세트 카운트 (484) 는 track_ref_index 의 트랙 참조 인덱스를 가진, 데이터를 추출할 미디어 추출자 트랙의 샘플의 연속적인 뷰 컴포넌트의 수를 제공한다. track_ref_index 값은 데이터를 추출할 트랙을 발견하기 위하여 사용할 트랙 참조의 인덱스를 특정할 수도 있다. 데이터가 추출되는 트랙에서의 뷰 컴포넌트들은 MediaExtractorMVC 를 포함하는 샘플과 시간적으로 정렬될 수도 있다 (미디어 디코딩 타임라인에서, 시간-대-샘플 테이블을 이용하여, 샘플 오프셋 값들 (486) 중의 대응하는 하나에 의해 특정되는 오프셋 만큼 조정됨). 제 1 트랙 참조는 인덱스 값 1 을 가질 수도 있으며; 값 0 은 미래의 사용을 위해 예비될 수도 있다.
MVC 미디어 추출자 (480) 의 예는 샘플 오프셋 값들 (486), 트랙 참조 인덱스 값들 (488), 뷰 컴포넌트 오프셋 값들 (490), 및 뷰 컴포넌트 카운트들 (492) 각각을 루프에 포함한다. 각각의 루프의 반복은 MVC 미디어 추출자 (480) 에 대응하는 샘플에 대한 데이터를 추출할 특정 트랙에 대응한다.
샘플 오프셋 값들 (486) 은 정보의 소스로서 사용될 수도 있는, 트랙 참조 인덱스 값들 (488) 의 대응하는 하나에 의해 참조되는 트랙에서의 샘플의 상대적인 인덱스를 정의한다. 샘플 0 (zero) 은 동일하거나, 또는 가장 가까이 선행하는, MVC 미디어 추출자 (480) 을 포함하는 샘플에 대한 디코딩 시간을 가진 트랙 참조 인덱스 값들 (488) 의 대응하는 하나에 의해 식별되는 트랙에서의 샘플이고, 샘플 1 (one) 은 다음 샘플이고, 샘플 -1 (마이너스 1) 은 이전 샘플이며, 기타 등등이다.
트랙 참조 인덱스 값들 (488) 각각은 대응하는 루프의 반복 동안에 데이터를 추출할 트랙을 발견하기 위하여 사용할 트랙 참조의 인덱스를 특정한다. 다수의 트랙 참조 인덱스 값들을 이용함으로써, MVC 미디어 추출자 (480) 는 다수의 상이한 트랙들로부터 데이터를 추출할 수도 있다.
뷰 컴포넌트 오프셋 값들 (490) 각각은 이 루프의 반복에서 트랙 참조 인덱스 값들 (488) 의 대응하는 하나에 대응하는 트랙 참조 인덱스를 가진, 데이터를 추출할 트랙의 샘플에서의 제 1 뷰 컴포넌트의 오프셋을 기술한다. 뷰 컴포넌트들의 이 오프셋으로부터 시작하는 뷰 컴포넌트들은 MVC 미디어 추출자 (480) 를 이용하여 추출될 수도 있다. 일부 예들에서, 도 15 내지 도 17 의 미디어 추출자들과 유사한 미디어 추출자가 네스트된 루프 구조를 갖도록 구축될 수도 있으며, 그 루프에서, 외부 루프는 샘플들이 추출될 트랙들에 걸쳐서 반복하며 내부 루프는 대응하는 트랙들로부터 추출될 샘플들에 걸쳐서 반복한다. 뷰 컴포넌트 카운트들 (492) 각각은 이 루프의 반복에서 트랙 참조 인덱스 값들 (488) 의 현재의 트랙 참조 인덱스 값에 대응하는 트랙 참조 인덱스를 가진 트랙의 샘플에서의 참조된 뷰 컴포넌트들의 수를 기술한다.
아래의 의사코드는 MVC 미디어 추출자 (480) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 19 는 추출자의 지속기간을 시그널링하는 다른 예시적인 MVC 미디어 추출자 (500) 를 나타내는 블록도이다. MVC 미디어 추출자 (500) 는 미디어 추출자 트랙에서의 상이한 샘플들이 추출자들의 동일 신택스 엘리먼트들을 공유할 때 하나 이상의 이점들을 제공할 수도 있다. 도 19 의 예에서, MVC 미디어 추출자 (500) 는 샘플 카운트 (502), 연속적인 뷰 세트 카운트 (504), 샘플 오프셋 값들 (506), 트랙 참조 인덱스들 (508), 뷰 컴포넌트 오프셋들 (510), 및 뷰 컴포넌트 카운트들 (512) 을 포함한다.
연속적인 뷰 세트 카운트 (504), 샘플 오프셋 값들 (506), 트랙 참조 인덱스들 (508), 뷰 컴포넌트 오프셋들 (510), 및 뷰 컴포넌트 카운트들 (512) 은 일반적으로 연속적인 뷰 세트 카운트 (484), 샘플 오프셋 값들 (486), 트랙 참조 인덱스들 (488), 뷰 컴포넌트 오프셋들 (490), 및 뷰 컴포넌트 카운트들 (492) 중 대응하는 것들에 따라서 정의될 수도 있다. 샘플 카운트 (502) 는 동일한 미디어 추출자를 이용하는 MVC 미디어 추출자 (500) 를 포함하는 미디어 추출자 트랙에서의 연속적인 샘플들의 수를 정의할 수도 있다.
아래의 의사코드는 MVC 미디어 추출자 (500) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
도 20 은 상이한 추출자들의 세트를 정의하는 다른 예시적인 MVC 미디어 추출자 (520) 를 나타내는 블록도이다. 미디어 추출자 트랙에서의 각 샘플에 있어서, 샘플은 추출자들의 세트 중의 하나 이상 또는 추출자들에 대한 참조를 이용할 수 있다. 즉, MVC 미디어 추출자 (520) 와 유사한 미디어 추출자들의 세트가 정의될 수도 있으며, 각 샘플은 다른 트랙의 샘플을 식별하기 위하여 추출자들의 세트 중 하나 이상 또는 추출자들에 대한 참조를 이용할 수도 있다.
MVC 미디어 추출자 (520) 의 예는 추출자 식별자 값 (522), 샘플 오프셋 값 (524), 트랙 참조 인덱스 값 (526), 연속적인 뷰 세트 카운트 (528), 및 뷰 컴포넌트 오프셋들 (530) 과 뷰 컴포넌트 카운트들 (532) 을 포함하는 루프를 포함한다. 샘플 오프셋 값 (524), 연속적인 뷰 세트 카운트 (528), 뷰 컴포넌트 오프셋들 (530), 및 뷰 컴포넌트 카운트들 (532) 은 연속적인 뷰 세트 카운트 (484), 샘플 오프셋 값들 (486), 뷰 컴포넌트 오프셋들 (490), 및 뷰 컴포넌트 카운트들 (492) 중 대응하는 것들에 따라서 정의될 수도 있다. 트랙 참조 인덱스 값 (526) 은 예를 들어, 트랙 참조 인덱스 (464) 에 따라서 정의될 수도 있다.
추출자 식별자 값 (522) 은 추출자, 즉, MVC 미디어 추출자 (520) 의 식별자를 정의한다. 동일한 미디어 추출자 트랙에서의 추출자들에는, 미디어 추출자 트랙에서의 샘플이 추출자 식별자 값을 참조하여 미디어 추출자를 이용할 수도 있도록, 상이한 추출자 식별자 값들이 할당된다. 참조 추출자 박스는 또한 추출자들의 수 및 참조 추출자 식별자를 포함하도록 정의될 수도 있다. 추출자들 값의 수는 추출자 트랙에서의 샘플에 대한 데이터를 복사하는데 사용되는 추출자들의 수를 제공할 수도 있다. 추출자들 값의 수가 0 과 같을 때, 미리 결정된 추출자 식별자, 예를 들어, 0 과 같은 추출자 식별자를 가지는 추출자가 사용될 수도 있다. 참조 추출자 식별자는 추출자 트랙에서의 샘플에 대한 데이터를 복사하는데 사용되는 추출자의 추출자 식별자를 제공할 수도 있다. 이 박스는 미디어 추출자 트랙의 샘플에 포함될 수도 있다.
아래의 의사코드는 MVC 미디어 추출자 (520) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
아래의 의사코드는 위에서 설명한 참조 추출자 박스에 대한 참조 추출자 박스 클래스의 예시적인 정의를 제공한다:
도 21 은 맵 샘플 그룹을 이용하여 형성될 수도 있는 예시적인 MVC 미디어 추출자 (550) 를 나타내는 블록도이다. MVC 미디어 추출자 (550) 의 예는 일련의 샘플 엔트리들로부터의 NAL 유닛들 그룹들을 특정하며, 그 샘플 엔트리들 각각은 맵 샘플 그룹에서의 연속적인 NAL 유닛들에 기여한다. 도 21 의 예에서, MVC 미디어 추출자 (550) 는 NALU 그룹 카운트 (552) 를 포함하고, 트랙 참조 인덱스들 (554), 그룹 설명 인덱스들 (556), NALU 시작 맵 샘플들 (558) 및 NALU 뷰 카운트들 (560) 을 포함하는 루프를 포함한다.
NALU 그룹 카운트 (552) 는 참조 트랙에서의 맵 샘플 그룹 엔트리로부터의 NAL 유닛 그룹들의 수를 특정한다. 트랙 참조 인덱스들 (554) 은 각각 대응하는 루프의 반복 동안 데이터를 추출할 트랙을 발견하기 위하여 사용할 트랙 참조의 인덱스를 특정한다. 그룹 설명 인덱스들 (556) 은 각각 대응하는 루프의 반복 동안 NAL 유닛 그룹을 형성하는데 사용되는 맵 샘플 그룹 엔트리의 인덱스를 특정한다. NALU 시작 맵 샘플들 (558) 은 각각 대응하는 루프의 반복에서 그룹 설명 인덱스들 (556) 의 대응하는 그룹 설명 인덱스의 맵 샘플 엔트리 인덱스를 가진 맵 샘플 그룹에서의 NAL 유닛의 오프셋을 특정한다. NALU 뷰 카운트들 (560) 은 대응하는 루프의 반복에서 그룹 설명 인덱스들 (556) 의 대응하는 그룹 설명 인덱스의 맵 샘플 엔트리 인덱스를 가진 맵 샘플 그룹에서의, 미디어 추출자로 추출될, 연속적인 NAL 유닛들의 수를 특정한다.
아래의 의사코드는 MVC 미디어 추출자 (550) 와 유사한 미디어 추출자 클래스의 예시적인 정의를 제공한다:
멀티플렉서 (30) 및 디멀티플렉서 (38) 는 위의 예시적인 의사코드에 정의된 미디어 추출자를 이용하여 미디어 추출자 데이터 객체를 인스턴스화할 수도 있다. 따라서, 디멀티플렉서 (38) 는, 예를 들면, 식별된 데이터를 인스턴스화된 미디어 추출자에 의해 참조되는 다른 트랙으로부터 취출하기 위하여 선택된 트랙으로부터 데이터를 취출할 때 인스턴스화된 미디어 추출자를 참조할 수도 있다.
본 개시물의 기법들은 샘플 그룹에서의 샘플들의 뷰 컴포넌트들을 배열하기 위한 어셈블링 프로세스를 포함할 수도 있다. 샘플 그룹 엔트리들의 샘플들에서의 뷰 컴포넌트들은, 만약 샘플 A 가 (트랙 참조 인덱스의 인덱스를 가진) 원래의 트랙에서 샘플 B 를 뒤따르면 샘플 A 에서의 A 뷰 컴포넌트가 미디어 추출자 트랙에서 샘플 B 에서의 뷰 컴포넌트를 뒤따르고; 만약 샘플 A 가 샘플 B 보다 더 빠른 디코딩 시간을 가지면 샘플 A 에서의 뷰 컴포넌트가 미디어 추출자 트랙에서 샘플 B 에서의 뷰 컴포넌트를 뒤따르고; 트랙의 동일 샘플에서의 2 개의 뷰 컴포넌트들이 미디어 추출자 맵 샘플 그룹의 신택스 테이블에서의 프리젠테이션의 순서를 따르고; 트랙의 동일 샘플에서의 2 개의 뷰 컴포넌트들이 만약 NAL 유닛의 동일 그룹에 속하면, 즉 미디어 추출자 맵 샘플 그룹에서 동일 루프의 신택스 엘리먼트에 의해 추출되면, 원래의 순서를 따르며; 2 개의 뷰 컴포넌트들이, 상이한 트랙들에 있지만 동일 타임스탬프를 가진 샘플들로부터 추출되면, MVC 파일 포맷에서 뷰 식별자 박스에 특정된 바와 같은 뷰 순서 인덱스들의 순서를 따르도록, 시기 적절하게 순서화된다.
도 22 는 트랙 선택 박스에 대한 추가적인 속성들을 시그널링하기 위한 예시적인 변경된 3GPP 트랙 선택 박스 (390) 를 나타내는 블록도이다. 이 글을 쓰는 시점에서, 가장 최근 3GPP 표준은 언어, 대역폭, 코덱, 스크린 사이즈, 최대 패킷 사이즈, 및 미디어 유형을 기술하는 속성들을 포함하는 AttributeList 를 특정한다. 3GPP 트랙 선택 박스 (390) 의 속성 리스트 (392) 는 언어 값 (394), 대역폭 값 (396), 코덱 값 (398), 및 스크린 사이즈 값 (400) 을 포함하며, 이는 기존 3GPP 표준에 따라서 이들 속성들을 시그널링한다. 또한, 본 개시물의 기법들은 프레임 레이트 값 (406), 시간적 식별자 값 (408), 및 일부 경우들에서는, 디스플레이 뷰 개수 값 (number value) (410) 및 출력 뷰 리스트 값 (412) 을 포함하도록 기존 3GPP 트랙 선택 박스를 변경할 수도 있다.
언어 (Language) 값 (394) 은 기존 3GPP 표준의 5.3.3.4 절에 정의된 바와 같이, 세션 레벨 SDP 에서의 "alt-group" 속성의 그룹 유형 LANG 의 값을 정의한다. 대역폭 값 (396) 은 미디어 레벨 SDP 에서의 "b=AS" 속성의 값을 정의한다. 코덱 값 (398) 은 미디어 트랙의 샘플 설명 박스에서의 SampleEntry 값을 정의한다. 스크린 사이즈 값 (400) 은 미디어 트랙에서의 MP4VisualSampleEntry 값 및 H263SampleEntry 값의 폭 및 높이 필드들을 정의한다. 최대 패킷 사이즈 값 (402) 은 예를 들어, RTP 힌트 트랙에서, RTPHintSampleEntry 에서의 MaxPacketSize 필드에 대한 값을 정의한다. 미디어 유형 값 (404) 은 미디어 트랙의 핸들러 (Handler) 박스에서의 HandlerType 를 기술한다. 일반적으로, 이들 값들은 기존 3GPP 표준에 대응한다.
프레임 레이트 값 (406) 은 3GPP 트랙 선택 박스 (390) 에 대응하는 비디오 트랙 또는 미디어 추출자 트랙의 프레임 레이트를 기술한다. 시간적 식별자 값 (408) 은 3GPP 트랙 선택 박스 (390) 에 대응하는 비디오 트랙의 시간적 식별자에 대응하며, 더 낮은 시간적 식별자 값들을 가진 트랙들에 의존할 수도 있다. 일부 예들에서, 멀티플렉서 (30) 는 시간적 식별자 값 (408) 의 값이, 그 값을 미리 구성된 "특정되지 않은" 값, 예를 들어, 8 로 설정함으로써, 특정되지 않음을 나타낼 수도 있다. 일반적으로, 멀티플렉서 (30) 는 넌-비디오 트랙에 대한 시간적 식별자 값 (408) 의 값이 특정되지 않음을 나타낼 수도 있다. 일부 예들에서, 멀티플렉서 (30) 는 또한 대응하는 비디오 트랙이 미디어 추출자들을 포함하지 않고/않거나 다른 트랙들에 의해 시간적 서브세트로서 참조되지 않을 때 시간적 식별자 값 (408) 의 값이 특정되지 않음을 나타낼 수도 있다.
MVC 가 3GPP 에서 고려되는 예들에서, 멀티플렉서 (30) 는 디스플레이 뷰 개수 값 (410) 및 출력 뷰 리스트 값 (412) 의 추가적인 속성들을 포함할 수도 있다. 이러한 예들에서, 멀티플렉서 (30) 는 시간적 식별자 값 (408) 을 생략할 수도 있다. 디스플레이 뷰 개수 값 (410) 은 대응하는 트랙에 대해 출력될 뷰들의 수를 기술한다. 출력될 뷰들의 수 및 디코딩될 뷰들의 수는 예를 들어, 디스플레이될 뷰가 디스플레이되지 않는 뷰와 관련하여 인코딩될 때 반드시 같지는 않다. 출력 뷰 리스트 값 (412) 은 N 개의 출력할 뷰들을 식별하는 N 개의 뷰 식별자들의 리스트를 정의할 수도 있다.
도 23 은 본 개시물의 기법들에 따라서 미디어 추출자들을 이용하기 위한 예시적인 방법을 나타내는 플로우차트이다. 먼저, 본 개시물의 기법들에 따라서, 소스 디바이스, 예컨대 A/V 소스 디바이스 (20) (도 1) 는 파일 포맷을 따르는 파일에 대한 비디오 트랙을 구축한다. 즉, 멀티플렉서 (30) 는 비디오 트랙이 하나 이상의 NAL 유닛들을 포함하는 코딩된 비디오 샘플들을 포함하도록 그 트랙에 인코딩된 비디오 데이터를 어셈블링한다 (600). 또한, 멀티플렉서 (30) 는 비디오 트랙의 하나 이상의 NAL 유닛들의 일부 또는 모두를 참조하는 추출자를 구축하고 (602), 그 추출자를 포함하는 추출자 트랙을 구축한다 (604). 또한, 멀티플렉서 (30) 는 미디어 추출자 트랙 및 인코딩된 비디오 샘플들 및/또는 미디어 추출자들을 포함하는 추가적인 트랙들에 인코딩된 비디오 샘플들을 포함할 수도 있다.
멀티플렉서 (30) 는 그 후 파일을 출력할 수도 있다 (606). 그 파일은 송신기, 송수신기, 네트워크 인터페이스, 모뎀, 또는 다른 신호 출력 수단을 통해서 신호로 출력될 수도 있거나, 또는 그 파일은 하드웨어 인터페이스, 예컨대 USB 인터페이스, 자기 매체 레코더, 광학 레코더, 또는 다른 하드웨어 인터페이스를 통해서 저장 매체로 출력될 수도 있다.
A/V 목적지 디바이스 (40) 는 예를 들어, 신호를 수신하거나 또는 저장 매체를 판독함으로써, 결국 그 파일을 수신할 수도 있다 (608). 디멀티플렉서 (38) 는 디코딩될 2 개 (또는 그 이상) 의 트랙들 중 하나를 선택할 수도 있다 (610). 디멀티플렉서 (38) 는 비디오 디코더 (48) 의 디코딩 능력들, 비디오 출력 (44) 의 렌더링 능력들, 또는 다른 기준에 기초하여 트랙들 중 하나를 선택할 수도 있다. 추출자 트랙이 선택될 때, 디멀티플렉서 (38) 는 추출자 트랙에서의 추출자들에 의해 참조되는 NAL 유닛들을, 추출자들에 의해 식별되는 인코딩된 비디오 샘플들이 저장되는 트랙으로부터 취출할 수도 있다.
디멀티플렉서 (38) 는 선택된 트랙에 있지 않고 선택된 트랙에서의 적어도 하나 추출자에 의해 식별되지 않는 인코딩된 비디오 샘플들 (또는 다른 NAL 유닛들) 을 폐기할 수도 있다. 즉, 디멀티플렉서 (38) 는 이러한 인코딩된 비디오 샘플들을 비디오 디코더 (48) 로 전송하는 것을 피할 수도 있으므로, 비디오 디코더 (48) 가 미사용 비디오 데이터를 디코딩하는 작업을 맡을 필요가 없다.
하나 이상의 예들에서, 설명한 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 만약 소프트웨어로 구현되면, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체, 예컨대 일 장소로부터 타 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 데이터 저장 매체 또는 통신 매체를 포함할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명한 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위하여 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 입수가능한 매체일 수도 있다. 비한정적인 일 예로서, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절하게 컴퓨터 판독가능 매체라 불리게 된다. 예를 들면, 만약 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신되면, 그 매체의 정의에는, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선 및 마이크로파와 같은 무선 기술들이 포함된다. 그러나, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속들, 반송파들, 신호들, 또는 다른 일시적 매체를 포함하지 않는 것으로 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 여기서 사용할 때, 콤팩트 디스크 (CD), 레이저 디스크, 광디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 는 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 또, 위에서 언급한 것들의 조합들도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
컴퓨터 판독가능 매체에서 인코딩된 명령들은 하나 이상의 프로세서들, 예컨대 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASICs), 필드 프로그램가능한 로직 어레이들 (FPGAs), 또는 다른 등가의 집적 또는 이산 로직 회로망에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 여기서 사용한 바와 같이, 전술한 구조, 또는 여기서 설명한 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 여기서 설명한 기능성은 인코딩 및 디코딩하기 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공되거나 또는 결합된 코덱 내에 포함될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하는, 광범위한 디바이스들 또는 장치들로 구현될 수도 있다. 상기 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위하여 여러 컴포넌트들, 모듈들, 또는 유닛들이 본 개시물에 설명되어 있지만, 반드시 상이한 하드웨어 유닛들에 의한 실현을 필요로 하지는 않는다. 오히려, 위에서 설명한 바와 같이, 여러 유닛들은 적절한 소프트웨어 및/또는 펌웨어와 함께, 코덱 하드웨어 유닛에 결합되거나 또는 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함하는, 상호동작하는 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
여러 예들이 설명되었다. 이들 및 다른 예들은 다음의 특허청구의 범위 이내이다.
Claims (46)
- 비디오 데이터를 인코딩하기 위한 방법으로서,
소스 비디오 디바이스에 의해, 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하는 단계로서, 상기 비디오 샘플이 액세스 유닛에 포함되는, 상기 제 1 트랙을 구축하는 단계;
상기 소스 비디오 디바이스에 의해, 상기 제 1 트랙의 상기 비디오 샘플 내의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하는 단계로서, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적인, 상기 제 2 트랙을 구축하는 단계;
상기 제 1 트랙 및 상기 제 2 트랙을 ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하는 단계; 및
상기 비디오 파일을 출력하는 단계를 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 비디오 파일은 상기 ISO 기반 미디어 파일 포맷을 따르는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 비디오 파일은, 스케일러블 비디오 코딩 (Scalable Video Coding; SVC) 파일 포맷, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷, 및 멀티뷰 비디오 코딩 (Multiview Video Coding; MVC) 파일 포맷 중 적어도 하나의 파일 포맷을 따르는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 2 트랙을 구축하는 단계는, 상기 인코딩된 비디오 데이터에 기초하여, 상기 제 1 트랙의 상기 복수의 NAL 유닛들에 포함되지 않는 하나 이상의 추가적인 NAL 유닛들을 상기 제 2 트랙에 포함하는 단계를 더 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 4 항에 있어서,
상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 1 추출자, 및 상기 제 2 트랙의 하나 이상의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 제 2 추출자를 포함하는 제 3 트랙을 구축하는 단계를 더 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 5 항에 있어서,
상기 제 3 트랙을 구축하는 단계는, 상기 제 1 트랙 및 상기 제 2 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 상기 제 3 트랙에 포함하는 단계를 더 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 2 트랙을 구축하는 단계는, 상기 제 1 트랙의 상기 비디오 샘플의 상기 복수의 NAL 유닛들 각각을 식별하도록 상기 추출자를 구축하는 단계를 포함하며,
상기 추출자는, 목적지 디바이스로 하여금, 상기 비디오 샘플의 상기 복수의 NAL 유닛들 각각을 전체로서 추출하도록 하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 2 트랙을 구축하는 단계는, 상기 비디오 파일의 상기 제 1 트랙 내의 상기 비디오 샘플의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들의 바이트 범위를 특정함으로써, 상기 비디오 샘플의 상기 복수의 NAL 유닛들 중 상기 하나 이상의 NAL 유닛들을 식별하도록 상기 추출자를 구축하는 단계를 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 트랙 내의 상기 비디오 샘플의 상기 복수의 NAL 유닛들은, 공통 화상의 슬라이스들, 넌-비디오 (non-video) 코딩 레이어 (VCL) NAL 유닛들, SEI (Supplemental Enhancement Information) 메시지 NAL 유닛들, 상기 액세스 유닛의 비디오 레이어들, 상기 액세스 유닛의 상이한 뷰 컴포넌트들, 및 다수의 NAL 유닛들로부터 집합된 NUL 유닛들 중 적어도 하나를 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 복수의 NAL 유닛들은 제 1 복수의 NAL 유닛들을 포함하고,
상기 방법은, 상기 인코딩된 비디오 데이터에 기초하여, 제 2 복수의 NAL 유닛들을 포함하는 제 3 트랙을 구축하는 단계를 더 포함하며,
상기 제 2 복수의 NAL 유닛들은 상기 액세스 유닛의 일부를 형성하고, 상기 제 2 복수의 NAL 유닛들은 상기 추출자에 의해 식별되는 상기 식별된 제 2 NAL 유닛을 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 비디오 샘플은 제 1 비디오 샘플을 포함하고, 상기 복수의 NAL 유닛들은 제 1 복수의 NAL 유닛들을 포함하고, 상기 제 1 트랙은 제 2 복수의 NAL 유닛들을 포함하는 제 2 샘플을 더 포함하고, 상기 액세스 유닛은 상기 제 2 샘플을 포함하며, 상기 제 2 복수의 NAL 유닛들은 상기 추출자에 의해 식별되는 상기 제 2 NAL 유닛을 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 2 NAL 유닛은, 상기 비디오 샘플 내의 상기 식별된 제 1 NAL 유닛으로부터 적어도 1 바이트의 데이터 만큼 분리되는, 상기 제 1 트랙의 상기 비디오 샘플의 상기 복수의 NAL 유닛들 중 제 2 NAL 유닛을 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 트랙 및 상기 제 2 트랙은, 상기 제 1 트랙 또는 상기 제 2 트랙 중 어느 하나의 트랙이 각 트랙의 특성들에 기초하여 목적지 디바이스에 의한 디코딩을 위해 선택가능하도록 스위치 그룹을 형성하는, 비디오 데이터를 인코딩하기 위한 방법. - 제 13 항에 있어서,
상기 제 2 트랙을 구축하는 단계는,
상기 제 2 트랙의 프레임 레이트를 시그널링하는 단계; 및
상기 제 2 트랙에 대한 상기 제 1 트랙의 상기 비디오 샘플의 시간적 식별자를 시그널링하는 단계를 포함하며;
상기 제 2 트랙이 2 개 이상의 뷰를 포함할 때, 상기 제 2 트랙을 구축하는 단계는,
상기 제 2 트랙을 디코딩한 후 디스플레이될 뷰들의 수를 나타내는 값을 시그널링하는 단계;
상기 제 2 트랙에 대해 디스플레이될 뷰들에 대한 하나 이상의 뷰 식별자 값들을 시그널링하는 단계; 및
상기 제 2 트랙에 대해 디코딩될 뷰들의 수를 나타내는 값을 시그널링하는 단계를 더 포함하는, 비디오 데이터를 인코딩하기 위한 방법. - 비디오 데이터를 인코딩하기 위한 장치로서,
비디오 데이터를 인코딩하도록 구성된 비디오 인코더;
상기 인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하되, 상기 비디오 샘플이 액세스 유닛에 포함되고; 상기 제 1 트랙의 상기 비디오 샘플 내의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하되, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적이며; 상기 제 1 트랙 및 상기 제 2 트랙을 ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하도록 구성된 멀티플렉서; 및
상기 비디오 파일을 출력하도록 구성된 출력 인터페이스를 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 제 15 항에 있어서,
상기 비디오 파일은, ISO 기반 미디어 파일 포맷, 스케일러블 비디오 코딩 (Scalable Video Coding; SVC) 파일 포맷, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷, 및 멀티뷰 비디오 코딩 (Multiview Video Coding; MVC) 파일 포맷 중 적어도 하나의 파일 포맷을 따르는, 비디오 데이터를 인코딩하기 위한 장치. - 제 15 항에 있어서,
상기 멀티플렉서는, 상기 인코딩된 비디오 데이터에 기초하여, 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 상기 제 2 트랙에 포함하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치. - 제 17 항에 있어서,
상기 멀티플렉서는, 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 1 추출자, 및 상기 제 2 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 2 추출자를 포함하는 제 3 트랙을 구축하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치. - 제 15 항에 있어서,
상기 추출자는 제 1 추출자를 포함하고,
상기 멀티플렉서는, 상기 인코딩된 비디오 데이터에 기초하여, 복수의 NAL 유닛들을 포함하는 제 3 트랙을 구축하도록 구성되며,
상기 멀티플렉서는, 상기 제 3 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 2 추출자를 포함하도록 상기 제 2 트랙을 구축하도록 구성되는, 비디오 데이터를 인코딩하기 위한 장치. - 제 16 항에 있어서,
상기 장치는,
집적 회로;
마이크로프로세서; 및
상기 비디오 인코더 및 상기 멀티플렉서를 포함하는 무선 통신 디바이스 중 적어도 하나를 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 비디오 데이터를 인코딩하기 위한 장치로서,
인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하는 수단으로서, 상기 비디오 샘플이 액세스 유닛에 포함되는, 상기 제 1 트랙을 구축하는 수단;
상기 제 1 트랙의 상기 비디오 샘플 내의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하는 수단으로서, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적인, 상기 제 2 트랙을 구축하는 수단;
상기 제 1 트랙 및 상기 제 2 트랙을 ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하는 수단; 및
상기 비디오 파일을 출력하는 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 제 21 항에 있어서,
상기 비디오 파일은, ISO 기반 미디어 파일 포맷, 스케일러블 비디오 코딩 (Scalable Video Coding; SVC) 파일 포맷, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷, 및 멀티뷰 비디오 코딩 (Multiview Video Coding; MVC) 파일 포맷 중 적어도 하나의 파일 포맷을 따르는, 비디오 데이터를 인코딩하기 위한 장치. - 제 21 항에 있어서,
상기 인코딩된 비디오 데이터에 기초하여, 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 상기 제 2 트랙에 포함하는 수단을 더 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 제 23 항에 있어서,
상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 1 추출자, 및 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 제 2 추출자를 포함하는 제 3 트랙을 구축하는 수단을 더 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 제 21 항에 있어서,
상기 추출자는 제 1 추출자를 포함하고,
상기 장치는, 상기 인코딩된 비디오 데이터에 기초하여, 복수의 NAL 유닛들을 포함하는 제 3 트랙을 구축하는 수단을 더 포함하며,
상기 제 2 트랙을 구축하는 수단은, 상기 제 3 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 2 추출자를 포함하도록 상기 제 2 트랙을 구축하는 수단을 포함하는, 비디오 데이터를 인코딩하기 위한 장치. - 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
상기 명령들은, 실행될 때, 프로세서로 하여금,
인코딩된 비디오 데이터에 기초하여, 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하는 제 1 트랙을 구축하게 하되, 상기 비디오 샘플이 액세스 유닛에 포함되고;
상기 제 1 트랙의 상기 비디오 샘플 내의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하는 제 2 트랙을 구축하게 하되, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적이고;
상기 제 1 트랙 및 상기 제 2 트랙을 ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일에 포함하게 하며;
상기 비디오 파일을 출력하게 하는, 컴퓨터 판독가능 저장 매체. - 제 26 항에 있어서,
상기 비디오 파일은, ISO 기반 미디어 파일 포맷, 스케일러블 비디오 코딩 (Scalable Video Coding; SVC) 파일 포맷, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 파일 포맷, 3세대 파트너쉽 프로젝트 (Third Generation Partnership Project; 3GPP) 파일 포맷, 및 멀티뷰 비디오 코딩 (Multiview Video Coding; MVC) 파일 포맷 중 적어도 하나의 파일 포맷을 따르는, 컴퓨터 판독가능 저장 매체. - 제 26 항에 있어서,
상기 프로세서로 하여금, 상기 인코딩된 비디오 데이터에 기초하여, 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 상기 제 2 트랙에 포함하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 28 항에 있어서,
상기 프로세서로 하여금, 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 1 추출자, 및 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 제 2 추출자를 포함하는 제 3 트랙을 구축하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 26 항에 있어서,
상기 추출자는 제 1 추출자를 포함하고,
상기 컴퓨터 판독가능 저장 매체는, 상기 프로세서로 하여금, 상기 인코딩된 비디오 데이터에 기초하여, 복수의 NAL 유닛들을 포함하는 제 3 트랙을 구축하게 하는 명령들을 더 포함하며,
상기 프로세서로 하여금, 상기 제 2 트랙을 구축하게 하는 명령들은, 상기 프로세서로 하여금, 상기 제 3 트랙의 상기 복수의 NAL 유닛들 중 하나 이상의 NAL 유닛들을 식별하는 제 2 추출자를 포함하도록 상기 제 2 트랙을 구축하게 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체. - 비디오 데이터를 디코딩하기 위한 방법으로서,
목적지 디바이스의 디멀티플렉서에 의해, ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하는 단계로서, 상기 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 상기 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 상기 비디오 샘플이 액세스 유닛에 포함되며, 상기 제 2 트랙은 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적인, 상기 비디오 파일을 수신하는 단계;
디코딩될 상기 제 2 트랙을 선택하는 단계; 및
상기 제 2 트랙의 상기 추출자에 의해 식별되는 상기 제 1 NAL 유닛 및 상기 제 2 NAL 유닛의 인코딩된 비디오 데이터를 상기 목적지 디바이스의 비디오 디코더로 전송하는 단계를 포함하는, 비디오 데이터를 디코딩하기 위한 방법. - 제 31 항에 있어서,
상기 제 2 트랙의 상기 추출자에 의해 식별되지 않는 상기 제 1 트랙의 상기 복수의 NAL 유닛들 각각을 폐기하는 단계를 더 포함하는, 비디오 데이터를 디코딩하기 위한 방법. - 제 31 항에 있어서,
상기 제 2 트랙은 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 더 포함하며,
상기 방법은, 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하는 단계를 더 포함하는, 비디오 데이터를 디코딩하기 위한 방법. - 제 31 항에 있어서,
상기 비디오 파일은 인코딩된 비디오 데이터에 대응하는 복수의 NAL 유닛들을 포함하는 제 3 트랙을 더 포함하며,
상기 방법은, 상기 제 3 트랙의 상기 복수의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하는 단계를 더 포함하는, 비디오 데이터를 디코딩하기 위한 방법. - 비디오 데이터를 디코딩하기 위한 장치로서,
비디오 데이터를 디코딩하도록 구성된 비디오 디코더; 및
ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하되, 상기 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 상기 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 상기 비디오 샘플이 액세스 유닛에 포함되며, 상기 제 2 트랙은 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적이고; 디코딩될 상기 제 2 트랙을 선택하며; 상기 제 2 트랙의 상기 추출자에 의해 식별되는 상기 제 1 NAL 유닛 및 상기 제 2 NAL 유닛의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하도록 구성된 디멀티플렉서를 포함하는, 비디오 데이터를 디코딩하기 위한 장치. - 제 35 항에 있어서,
상기 디멀티플렉서는, 상기 제 2 트랙의 상기 추출자에 의해 식별되지 않는 상기 제 1 트랙의 상기 복수의 NAL 유닛들 각각을 폐기하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치. - 제 35 항에 있어서,
상기 제 2 트랙은 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 더 포함하며,
상기 디멀티플렉서는, 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치. - 제 35 항에 있어서,
상기 비디오 파일은 인코딩된 비디오 데이터에 대응하는 복수의 NAL 유닛들을 포함하는 제 3 트랙을 더 포함하며,
상기 디멀티플렉서는, 상기 제 3 트랙의 상기 복수의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하도록 구성되는, 비디오 데이터를 디코딩하기 위한 장치. - 비디오 데이터를 디코딩하기 위한 장치로서,
ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르는 비디오 파일을 수신하는 수단으로서, 상기 비디오 파일은 제 1 트랙 및 제 2 트랙을 포함하고, 상기 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 상기 비디오 샘플이 액세스 유닛에 포함되며, 상기 제 2 트랙은 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적인, 상기 비디오 파일을 수신하는 수단;
디코딩될 상기 제 2 트랙을 선택하는 수단; 및
상기 제 2 트랙의 상기 추출자에 의해 식별되는 상기 제 1 NAL 유닛 및 상기 제 2 NAL 유닛의 인코딩된 비디오 데이터를 상기 장치의 비디오 디코더로 전송하는 수단을 포함하는, 비디오 데이터를 디코딩하기 위한 장치. - 제 39 항에 있어서,
상기 제 2 트랙의 상기 추출자에 의해 식별되지 않는 상기 제 1 트랙의 상기 복수의 NAL 유닛들 각각을 폐기하는 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치. - 제 39 항에 있어서,
상기 제 2 트랙은 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 더 포함하며,
상기 장치는, 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하는 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치. - 제 39 항에 있어서,
상기 비디오 파일은 인코딩된 비디오 데이터에 대응하는 복수의 NAL 유닛들을 포함하는 제 3 트랙을 더 포함하며,
상기 장치는, 상기 제 3 트랙의 상기 복수의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하는 수단을 더 포함하는, 비디오 데이터를 디코딩하기 위한 장치. - 명령들을 포함하는 컴퓨터 판독가능 저장 매체로서,
상기 명령들은, 실행될 때, 프로세서로 하여금,
ISO (International Organization for Standardization) 기반 미디어 파일 포맷에 적어도 부분적으로 따르며, 제 1 트랙 및 제 2 트랙을 포함하는 비디오 파일을 수신할 때, 디코딩될 상기 제 2 트랙을 선택하게 하되, 상기 제 1 트랙은 인코딩된 비디오 데이터에 대응하는 복수의 네트워크 액세스 레이어 (network access layer; NAL) 유닛들을 포함하는 비디오 샘플을 포함하며, 상기 비디오 샘플이 액세스 유닛에 포함되며, 상기 제 2 트랙은 상기 제 1 트랙의 상기 복수의 NAL 유닛들 중 적어도 하나의 NAL 유닛을 식별하는 추출자를 포함하고, 상기 복수의 NAL 유닛들 중 상기 적어도 하나의 NAL 유닛은 식별된 제 1 NAL 유닛을 포함하고, 상기 추출자는 상기 액세스 유닛의 제 2 NAL 유닛을 식별하며, 상기 식별된 제 1 NAL 유닛 및 상기 식별된 제 2 NAL 유닛은 비연속적이며;
상기 제 2 트랙의 상기 추출자에 의해 식별되는 상기 제 1 NAL 유닛 및 상기 제 2 NAL 유닛의 인코딩된 비디오 데이터를 비디오 디코더로 전송하게 하는, 컴퓨터 판독가능 저장 매체. - 제 43 항에 있어서,
상기 프로세서로 하여금, 상기 제 2 트랙의 상기 추출자에 의해 식별되지 않는 상기 제 1 트랙의 상기 복수의 NAL 유닛들 각각을 폐기하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 43 항에 있어서,
상기 제 2 트랙은 상기 제 1 트랙에 포함되지 않는 하나 이상의 NAL 유닛들을 더 포함하며,
상기 컴퓨터 판독가능 저장 매체는, 상기 프로세서로 하여금, 상기 제 2 트랙의 상기 하나 이상의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체. - 제 43 항에 있어서,
상기 비디오 파일은 인코딩된 비디오 데이터에 대응하는 복수의 NAL 유닛들을 포함하는 제 3 트랙을 더 포함하며,
상기 컴퓨터 판독가능 저장 매체는, 상기 프로세서로 하여금, 상기 제 3 트랙의 상기 복수의 NAL 유닛들의 인코딩된 비디오 데이터를 상기 비디오 디코더로 전송하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24482709P | 2009-09-22 | 2009-09-22 | |
US61/244,827 | 2009-09-22 | ||
US29396110P | 2010-01-11 | 2010-01-11 | |
US61/293,961 | 2010-01-11 | ||
US29526110P | 2010-01-15 | 2010-01-15 | |
US61/295,261 | 2010-01-15 | ||
US12/785,851 | 2010-05-24 | ||
US12/785,851 US8976871B2 (en) | 2009-09-16 | 2010-05-24 | Media extractor tracks for file format track selection |
PCT/US2010/049402 WO2011035211A2 (en) | 2009-09-16 | 2010-09-17 | Multi-track video coding methods and apparatus using an extractor that references two or more non- consecutive nal units |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120116903A KR20120116903A (ko) | 2012-10-23 |
KR101290467B1 true KR101290467B1 (ko) | 2013-07-26 |
Family
ID=44936065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127009621A KR101290467B1 (ko) | 2009-09-22 | 2010-09-17 | 2 개 이상의 비연속적인 nal 유닛들을 참조하는 추출자를 이용하는 멀티-트랙 비디오 코딩 방법들 및 장치 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP5591932B2 (ko) |
KR (1) | KR101290467B1 (ko) |
CN (1) | CN102714715B (ko) |
TW (1) | TWI458334B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022131801A1 (ko) * | 2020-12-15 | 2022-06-23 | 엘지전자 주식회사 | 레이어 정보를 포함하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일 전송 방법 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9584793B2 (en) * | 2012-04-09 | 2017-02-28 | Intel Corporation | Signaling three-dimensional video information in communication networks |
US9432664B2 (en) | 2012-09-28 | 2016-08-30 | Qualcomm Incorporated | Signaling layer identifiers for operation points in video coding |
US9648299B2 (en) * | 2013-01-04 | 2017-05-09 | Qualcomm Incorporated | Indication of presence of texture and depth views in tracks for multiview coding plus depth |
RU2616185C2 (ru) * | 2013-01-18 | 2017-04-13 | Кэнон Кабусики Кайся | Способ, устройство и компьютерная программа для инкапсуляции сегментированных синхронизированных мультимедийных данных |
US9483812B2 (en) * | 2013-03-25 | 2016-11-01 | Imax Corporation | Enhancing motion pictures with accurate motion information |
US9596486B2 (en) * | 2013-04-05 | 2017-03-14 | Qualcomm Incorporated | IRAP access units and bitstream switching and splicing |
US10419801B2 (en) * | 2013-07-22 | 2019-09-17 | Sony Corporation | Information processing apparatus and method |
GB2516825B (en) * | 2013-07-23 | 2015-11-25 | Canon Kk | Method, device, and computer program for encapsulating partitioned timed media data using a generic signaling for coding dependencies |
GB2519746B (en) | 2013-10-22 | 2016-12-14 | Canon Kk | Method, device and computer program for encapsulating scalable partitioned timed media data |
US9648348B2 (en) * | 2013-10-23 | 2017-05-09 | Qualcomm Incorporated | Multi-layer video file format designs |
US20160373771A1 (en) * | 2015-06-18 | 2016-12-22 | Qualcomm Incorporated | Design of tracks and operation point signaling in layered hevc file format |
GB2560921B (en) * | 2017-03-27 | 2020-04-08 | Canon Kk | Method and apparatus for encoding media data comprising generated content |
GB2575074B (en) * | 2018-06-27 | 2022-09-28 | Canon Kk | Encapsulating video content with an indication of whether a group of tracks collectively represents a full frame or a part of a frame |
GB2579389B (en) * | 2018-11-29 | 2022-07-27 | Canon Kk | Method, device and computer program for encapsulating media data into a media file |
GB2587364B (en) * | 2019-09-24 | 2023-11-15 | Canon Kk | Method, device, and computer program for encapsulating media data into a media file |
CN114510598A (zh) * | 2021-12-30 | 2022-05-17 | 赛因芯微(北京)电子科技有限公司 | 音频元数据区块的生成方法、装置、设备及存储介质 |
EP4327904A1 (en) * | 2022-08-25 | 2024-02-28 | ACER Incorporated | Method and computer device for automatically applying optimal configuration for stereo 3d gameplay |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040088541A (ko) * | 2002-02-25 | 2004-10-16 | 소니 일렉트로닉스 인코포레이티드 | Mp4에서 avc를 지원하기 위한 방법 및 장치 |
KR20040106414A (ko) * | 2002-04-29 | 2004-12-17 | 소니 일렉트로닉스 인코포레이티드 | 미디어 파일에서 진보된 코딩 포맷의 지원 |
KR20080082192A (ko) * | 2007-03-07 | 2008-09-11 | 엘지전자 주식회사 | 파일 포맷을 구성하는 방법과 상기 파일 포맷을 가지는파일을 포함한 방송 신호를 처리하는 장치 및 방법 |
KR20090084875A (ko) * | 2006-10-20 | 2009-08-05 | 노키아 코포레이션 | 스케일러블 멀티미디어의 적응 경로들에 대한 포괄적 표시 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7586924B2 (en) * | 2004-02-27 | 2009-09-08 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream |
US20070098083A1 (en) * | 2005-10-20 | 2007-05-03 | Visharam Mohammed Z | Supporting fidelity range extensions in advanced video codec file format |
US20070022215A1 (en) * | 2005-07-19 | 2007-01-25 | Singer David W | Method and apparatus for media data transmission |
CN101317460A (zh) * | 2005-10-11 | 2008-12-03 | 诺基亚公司 | 用于有效的可伸缩流适配的系统和方法 |
US8483282B2 (en) * | 2007-10-12 | 2013-07-09 | Qualcomm, Incorporated | Entropy coding of interleaved sub-blocks of a video block |
CA2730543C (en) * | 2008-07-16 | 2014-04-22 | Nokia Corporation | Method and apparatus for track and track subset grouping |
-
2010
- 2010-09-17 CN CN201080041293.8A patent/CN102714715B/zh active Active
- 2010-09-17 JP JP2012529954A patent/JP5591932B2/ja not_active Expired - Fee Related
- 2010-09-17 KR KR1020127009621A patent/KR101290467B1/ko active IP Right Grant
- 2010-09-21 TW TW099132093A patent/TWI458334B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040088541A (ko) * | 2002-02-25 | 2004-10-16 | 소니 일렉트로닉스 인코포레이티드 | Mp4에서 avc를 지원하기 위한 방법 및 장치 |
KR20040106414A (ko) * | 2002-04-29 | 2004-12-17 | 소니 일렉트로닉스 인코포레이티드 | 미디어 파일에서 진보된 코딩 포맷의 지원 |
KR20090084875A (ko) * | 2006-10-20 | 2009-08-05 | 노키아 코포레이션 | 스케일러블 멀티미디어의 적응 경로들에 대한 포괄적 표시 |
KR20080082192A (ko) * | 2007-03-07 | 2008-09-11 | 엘지전자 주식회사 | 파일 포맷을 구성하는 방법과 상기 파일 포맷을 가지는파일을 포함한 방송 신호를 처리하는 장치 및 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022131801A1 (ko) * | 2020-12-15 | 2022-06-23 | 엘지전자 주식회사 | 레이어 정보를 포함하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일 전송 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP2013505646A (ja) | 2013-02-14 |
TW201119346A (en) | 2011-06-01 |
CN102714715B (zh) | 2016-01-20 |
TWI458334B (zh) | 2014-10-21 |
JP5591932B2 (ja) | 2014-09-17 |
CN102714715A (zh) | 2012-10-03 |
KR20120116903A (ko) | 2012-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101290467B1 (ko) | 2 개 이상의 비연속적인 nal 유닛들을 참조하는 추출자를 이용하는 멀티-트랙 비디오 코딩 방법들 및 장치 | |
US8976871B2 (en) | Media extractor tracks for file format track selection | |
JP6345827B2 (ja) | ビデオデータをストリーミングするためのシーケンスデータセットを提供すること | |
RU2541155C2 (ru) | Размещение фрагментов субтрека для потоковой передачи видеоданных | |
RU2530740C2 (ru) | Сообщение характеристик рабочей точки нескольких изображений видео (mvc) | |
US8918533B2 (en) | Video switching for streaming video data | |
KR20130056296A (ko) | 네트워크-스트리밍된 비디오 데이터에 대한 속성들의 시그널링 | |
WO2012009700A1 (en) | Signaling data for multiplexing video components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160629 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170629 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180628 Year of fee payment: 6 |