KR20160075554A - 멀티-레이어 비디오 파일 포맷 설계들 - Google Patents

멀티-레이어 비디오 파일 포맷 설계들 Download PDF

Info

Publication number
KR20160075554A
KR20160075554A KR1020167011821A KR20167011821A KR20160075554A KR 20160075554 A KR20160075554 A KR 20160075554A KR 1020167011821 A KR1020167011821 A KR 1020167011821A KR 20167011821 A KR20167011821 A KR 20167011821A KR 20160075554 A KR20160075554 A KR 20160075554A
Authority
KR
South Korea
Prior art keywords
track
value
sample
data
pictures
Prior art date
Application number
KR1020167011821A
Other languages
English (en)
Inventor
예-쿠이 왕
잉 천
아다르쉬 크리쉬난 라마수브라모니안
프누 헨드리
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160075554A publication Critical patent/KR20160075554A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8453Structuring of content, e.g. decomposing content into time segments by locking or enabling a set of features, e.g. optional functionalities in an executable program
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Television Signal Processing For Recording (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

컴퓨팅 디바이스는 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성한다. 미디어 콘텐츠는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이다. 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 컴퓨팅 디바이스는 적어도 2 개의 트랙들을 이용하여 파일에 비트스트림을 저장할 수도 있다. 적어도 2 개의 트랙들로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다.

Description

멀티-레이어 비디오 파일 포맷 설계들{MULTI-LAYER VIDEO FILE FORMAT DESIGNS}
본 출원은 2013년 10월 23일자로 출원된 미국 가특허출원 제61/894,886호의 이익을 주장하고, 이 미국 가특허출원의 전체 내용은 본 명세서에 참조로 포함된다.
기술분야
본 개시물은 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 다이렉트 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대 정보 단말기 (personal digital assistant; PDA) 들, 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 전자책 (e-book) 판독기들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 원격 화상회의 디바이스들, 비디오 스트리밍 디바이스들 등을 포함하는, 광범위한 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스들은 MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, 어드밴스드 비디오 코딩 (Advanced Video Coding; AVC) 에 의해 정의된 표준들, 현재 개발 중인 고효율 비디오 코딩 (High Efficiency Video Coding; HEVC) 표준, 및 이러한 표준들의 확장들에서 설명되는 것들과 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 이러한 비디오 압축 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재하는 리던던시를 감소시키거나 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행한다. 블록-기반 비디오 코딩을 위해, 비디오 슬라이스 (즉, 비디오 프레임 또는 비디오 프레임의 일부분) 는 비디오 블록들로 파티셔닝될 수도 있고, 이 비디오 블록들은 또한 트리블록들, 코딩 유닛 (CU) 들 및/또는 코딩 노드들이라고 지칭될 수도 있다. 픽처의 인트라-코딩된 (I) 슬라이스에서의 비디오 블록들은 동일한 픽처에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측을 이용하여 인코딩된다. 픽처의 인터-코딩된 (P 또는 B) 슬라이스에서 비디오 블록들은 동일한 픽처에서 이웃하는 블록들에서의 참조 샘플들에 대한 공간 예측 또는 다른 참조 픽처들에서의 참조 샘플들에 대한 시간 예측을 이용할 수도 있다. 픽처들은 프레임들이라고 지칭될 수도 있으며, 참조 픽처들은 참조 프레임들이라고 지칭될 수도 있다.
공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 발생시킨다. 잔차 데이터 (residual data) 는 코딩될 오리지널 블록과 예측 블록 사이의 픽셀 차이들을 표현한다. 인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터, 및 코딩된 블록과 예측 블록 사이의 차이를 나타내는 잔차 데이터에 따라 인코딩된다. 인트라-코딩된 블록은 인트라-코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가적인 압축을 위해, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어, 잔차 변환 계수들을 발생시킬 수도 있으며, 이 잔차 변환 계수들은 그 후에 양자화될 수도 있다. 초기에 2 차원 어레이로 배열되는, 양자화된 변환 계수들은 변환 계수들의 1 차원 벡터를 생성하기 위해 스캐닝될 수도 있으며, 엔트로피 코딩이 훨씬 더 많은 압축을 달성하기 위해 적용될 수도 있다.
일반적으로, 본 개시물은 국제 표준 기구 (International Standards Organization; ISO) 베이스 미디어 파일 포맷 (ISOBMFF) 에 기초한 파일에의 비디오 콘텐츠의 저장에 관한 것이다. 본 개시물의 일부 예들은 다수의 코딩된 레이어들을 포함하는 비디오 스트림들을 저장하기 위한 방법들에 관한 것인데, 여기서 각각의 레이어는 스케일러블 레이어, 텍스처 뷰, 심도 뷰 등일 수도 있고, 이 방법들은 멀티-뷰 고효율 비디오 코딩 (Multi-View High Efficiency Video Coding; MV-HEVC), 스케일러블 HEVC (Scalable HEVC; SHVC), 3 차원 HEVC (3D-HEVC), 및 다른 타입들의 비디오 데이터의 저장에 적용할 수도 있다.
일 양태에서, 본 개시물은 멀티-레이어 비디오 데이터를 프로세싱하는 방법을 설명하며, 그 방법은, 미디어 콘텐츠를 인클로징하는 (enclose) 미디어 데이터 박스를 포함하는 파일을 생성하는 단계를 포함하고, 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고, 파일을 생성하는 단계는, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 그 파일에 비트스트림을 저장하는 단계를 포함하고, 제 1 및 제 2 트랙들로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고; 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 개시물은 멀티-레이어 비디오 데이터를 프로세싱하는 방법을 설명하고, 방법은, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하는 단계를 포함하고, 제 1 트랙 박스는 파일에서의 제 1 트랙에 대한 메타데이터를 포함하고, 제 2 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고, 제 1 트랙 및 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고, 제 1 트랙 및 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 게시물은 멀티-레이어 비디오 데이터를 저장하도록 구성된 데이터 저장 매체; 및 하나 이상의 프로세서들을 포함하는 비디오 디바이스를 설명하고, 하나 이상의 프로세서들은 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하도록 구성되고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고, 파일을 생성하기 위해, 하나 이상의 프로세서들은, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 파일에 비트스트림을 저장하도록 구성되고, 제 1 및 제 2 트랙들로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 게시물은 멀티-레이어 비디오 데이터를 저장하도록 구성된 데이터 저장 매체; 및 하나 이상의 프로세서들을 포함하는 비디오 디바이스를 설명하고, 하나 이상의 프로세서들은, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하도록 구성되고, 제 1 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고, 제 2 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고, 제 1 트랙 및 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고, 제 1 트랙 및 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 개시물은 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하는 수단을 포함하고, 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 파일에 비트스트림을 저장하고, 제 1 및 제 2 트랙들로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 게시물은, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하는 수단을 포함하고, 제 1 트랙 박스는 파일에서의 제 1 트랙 박스에 대한 메타데이터를 포함하고, 제 2 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고, 제 1 트랙 및 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고, 제 1 트랙 및 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 개시물은 저장된 명령들을 갖는 컴퓨터 판독가능 데이터 저장 매체를 설명하고, 그 명령들은, 실행되는 경우, 하나 이상의 프로세서들로 하여금, 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하게 하고, 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고, 파일을 생성하기 위해, 그 명령들은, 하나 이상의 프로세서들로 하여금, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 파일에 비트스트림을 저장하게 하고, 제 1 및 제 2 트랙들로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
다른 양태에서, 본 개시물은 저장된 명령들을 갖는 컴퓨터 판독가능 데이터 저장 매체를 설명하고, 그 명령들은, 실행되는 경우, 하나 이상의 프로세서들로 하여금, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하게 하고, 제 1 트랙 박스는 파일에서의 제 1 트랙 박스에 대한 메타데이터를 포함하고, 제 2 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고, 제 1 트랙 및 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고, 제 1 트랙 및 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
본 개시물의 하나 이상의 예들의 세부사항들이 하기의 설명 및 첨부 도면들에 제시된다. 다른 피처 (feature) 들, 목적들, 및 이점들은 이 설명, 도면들, 그리고 청구항들로부터 명백해질 것이다.
도 1 은 본 개시물에 설명된 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시한 블록도이다.
도 2 는 본 개시물에 설명된 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 예시한 블록도이다.
도 3 은 본 개시물에 설명된 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 예시한 블록도이다.
도 4 는 네트워크의 부분을 형성하는 디바이스들의 예시적인 세트를 예시한 블록도이다.
도 5 는 본 개시물의 하나 이상의 기법들에 따른, 파일의 예시적인 구조를 예시한 개념도이다.
도 6 은 본 개시물의 하나 이상의 기법들에 따른, 파일의 예시적인 구조를 예시한 개념도이다.
도 7 은 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스의 예시적인 동작을 예시한 플로우차트이다.
도 8 은 본 개시물의 하나 이상의 기법들에 따른, 컴퓨팅 디바이스가 랜덤 액세스 및/또는 레벨 스위칭을 수행하는 예시적인 동작을 예시한 플로우차트이다.
도 9 는 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스의 예시적인 동작을 예시한 플로우차트이다.
도 10 은 본 개시물의 하나 이상의 기법들에 따른, 컴퓨팅 디바이스의 예시적인 동작을 예시한 플로우차트이다.
도 11 은 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스의 예시적인 동작을 예시한 플로우차트이다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 목적지 디바이스의 예시적인 동작을 예시한 플로우차트이다.
ISO 베이스 미디어 파일 포맷 (ISOBMFF) 은 미디어 데이터를 저장하기 위한 파일 포맷이다. ISOBMFF 는 특정 비디오 코딩 표준들을 준수하는 비디오 데이터의 저장을 지원하도록 확장가능하다. 예를 들어, ISOBMFF 는 H.264/AVC 및 고효율 비디오 코딩 (HEVC) 비디오 코딩 표준들을 준수하는 비디오 데이터의 저장을 지원하도록 이전에 확장되었다. 더욱이, ISOBMFF 는 H.264/AVC 의 멀티-뷰 코딩 (MVC) 및 스케일러블 비디오 코딩 (SVC) 확장들을 준수하는 비디오 데이터의 저장을 지원하도록 이전에 확장되었다. MV-HEVC, 3D-HEVC, 및 SHVC 는 멀티-레이어 비디오 데이터를 지원하는 HEVC 비디오 코딩 표준의 확장들이다. H.264/AVC 의 MVC 및 SVC 확장들을 준수하는 비디오 데이터의 저장을 위해 ISOBMFF 에 부가된 피처들은, MV-HEVC, 3D-HEVC, 및 SHVC 를 준수하는 비디오 데이터의 효과적인 저장을 위해 충분하지 않다. 다시 말해, MV-HEVC, 3D-HEVC, 및 SHVC 를 준수하는 비디오 데이터의 저장을 위해 H.264/AVC 의 MVC 및 SVC 확장들을 준수하는 비디오 데이터의 저장을 위한 ISOBMFF 의 확장을 이용하려고 시도한다면 다양한 문제들이 생길 수도 있다.
예를 들어, H.264/AVC 의 MVC 또는 SVC 확장들을 준수하는 비트스트림과는 달리, MV-HEVC, 3D-HEVC, 또는 SHVC 를 준수하는 비트스트림은 인트라 랜덤 액세스 포인트 (Intra Random Access Point; IRAP) 픽처들 및 논 (non) -IRAP 픽처들을 포함하는 액세스 유닛들을 포함할 수도 있다. IRAP 픽처들 및 논-IRAP 픽처들을 포함하는 액세스 유닛은 MV-HEVC, 3D-HEVC, 및 SHVC 에서 랜덤 액세스를 위해 이용될 수도 있다. 그러나, ISOBMFF 및 그의 기존 확장들은 이러한 액세스 유닛들을 식별하는 방법을 제공하지 않는다. 이것은 랜덤 액세스 및 레이어 스위칭을 수행하는 컴퓨팅 디바이스의 능력을 방해할 수도 있다.
따라서, 본 개시물의 하나의 예에 따르면, 컴퓨팅 디바이스는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터 (예를 들어, MV-HEVC, 3D-HEVC, 또는 SHVC 비디오 데이터) 의 비디오 액세스 유닛일 수도 있다. 파일을 생성하는 것의 일부로서, 컴퓨팅 디바이스는, 파일에, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록하는 부가적 박스를 생성할 수도 있다. 부가적 박스에서의 정보에 기초하여 IRAP 픽처들을 포함하는 샘플들을 결정하는
것이 가능한 것은, 파일을 수신하는 컴퓨팅 디바이스들로 하여금 NAL 유닛들을 파싱 및 해석하는 일 없이 랜덤 액세스 및 레이어 스위칭을 수행할 수 있게 할 수도 있다. 이것은 복잡도 및 프로세싱 시간들을 감소시킬 수도 있다.
더욱이, MV-HEVC, 3D-HEVC, 및 SHVC 비디오 데이터와 같은 멀티-레이어 비디오 데이터는 각각의 액세스 유닛에 대한 다수의 코딩된 픽처들을 포함할 수도 있다. 그러나, ISOBMFF 및 그의 기존 확장들은 액세스 유닛에 다수의 인코딩된 픽처들이 존재할 때 액세스 유닛 내의 개별 코딩된 픽처들에 관한 정보를 제공하지 않는다. 따라서, 컴퓨팅 디바이스 (예를 들어, 스트리밍 서버) 가 파일에서의 NAL 유닛들을 포워딩할지 여부를 결정하는 예들에서, 컴퓨팅 디바이스는 NAL 유닛들을 포워딩할지 여부를 결정하기 위해 NAL 유닛들에 저장된 정보를 파싱하고 해석할 필요가 있을 수도 있다. NAL 유닛들에 저장된 정보를 파싱하고 해석하는 것은 컴퓨팅 디바이스의 복잡도를 증가시킬 수도 있고 스트리밍 딜레이를 증가시킬 수도 있다.
따라서, 본 개시물의 하나의 예에 따르면, 컴퓨팅 디바이스는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다. 파일을 생성하는 것의 일부로서, 컴퓨팅 디바이스는, 파일에, 서브-샘플 정보 박스에 주어진 서브-샘플 정보의 타입을 특정하는 플래그들을 포함하는 서브-샘플 정보 박스를 생성한다. 플래그들이 특정 값을 가질 때, 서브-샘플 정보 박스에 대응하는 서브-샘플은, 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-비디오 코딩 레이어 (Video Coding Layer; VCL) NAL 유닛들을 포함한다. 이러한 방법으로, 파일을 수신하는 컴퓨팅 디바이스들은 서브-샘플 정보 박스에 주어진 서브-샘플 정보를 이용하여 파일의 샘플 내의 개별 코딩된 픽처들에 관한 결정들을 행하는 것이 가능할 수도 있다. 코딩된 픽처와 연관된 논-VCL NAL 유닛들은 코딩된 픽처에 적용가능한 SEI 및 파라미터 세트들 (예를 들어, PPS, SPS, VPS) 에 대한 NAL 유닛들을 포함할 수도 있다.
멀티-레이어 비디오 데이터에서, 액세스 유닛은 출력을 위한 것으로서 마킹되는 코딩된 픽처들 및 출력을 위한 것이 아닌 것으로서 마킹되는 코딩된 픽처들을 포함할 수도 있다. 비디오 디코더는 출력을 위한 것으로서 마킹되는 픽처들을 디코딩하기 위한 참조 픽처들로서 출력을 위한 것이 아닌 것으로서 마킹되는 코딩된 픽처들을 이용할 수도 있다. 픽처의 슬라이스의 NAL 유닛에 대한 NAL 유닛 헤더는 픽처가 출력을 위한 것으로서 마킹되는지 여부를 나타내는 픽처 출력 플래그 (예를 들어, HEVC 에서의 pic_output_flag) 를 포함할 수도 있다. ISOBMFF 파일에서, 각각의 샘플은 샘플이 출력되어야 할 때를 나타내는 출력 시간 (예를 들어, 조성 시간) 과 연관되도록 요구된다. 그러나, 출력을 위한 것이 아닌 것으로서 마킹되는 픽처들은 출력 시간들을 갖지 않는다. 따라서, 출력을 위한 것이 아닌 것으로서 마킹되는 픽처들의 존재는 ISOBMFF 의 이 요건을 위반할 수도 있고 또는 비-표준 대안 기법들을 요구할 수도 있다.
따라서, 본 개시물의 하나 이상의 기법들에 따르면, 컴퓨팅 디바이스는 미디어 콘텐츠를 인클로징하는 (enclose) 미디어 데이터 박스를 포함하는 파일을 생성할 수도 있다. 미디어 콘텐츠는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛을 포함한다. 파일을 생성하는 것의 일부로서, 컴퓨팅 디바이스는, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 2 개의 트랙들을 이용하여 파일에 비트스트림을 저장할 수도 있다. 적어도 2 개의 트랙들로부터의 각각의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다. 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다. 적어도 2 개의 트랙들의 이용은 상술된 문제를 해결할 수도 있는데, 이는 각각의 트랙에서의 각각의 샘플에 적절한 출력 시간이 할당될 수도 있고 비디오 디코더가 출력되도록 허용되지 않은 샘플들을 포함하는 트랙에서의 픽처들을 출력하지 않을 수도 있기 때문이다.
본 개시물의 기법들의 대부분의 설명이 MV-HEVC, 3D-HEVC, 및 SHVC 를 설명하지만, 독자는 본 개시물의 기법들이 다른 비디오 코딩 표준들 및/또는 그의 확장들에 적용가능할 수도 있다는 것을 인식할 것이다.
도 1 은 본 개시물에 설명된 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 예시한 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의해 추후의 시간에 디코딩될 인코딩된 비디오 데이터를 생성하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 소위 "스마트" 폰들과 같은 전화 핸드셋들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함하는, 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 구비될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 비디오 디바이스들로 간주될 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20) 및 출력 인터페이스 (22) 를 포함한다. 일부 경우들에서, 출력 인터페이스 (22) 는 변조기/복조기 (모뎀) 및/또는 송신기를 포함할 수도 있다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 소스 예컨대 비디오 캡처 디바이스, 예를 들어, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 비디오를 비디오 콘텐츠 제공자로부터 수신하기 위한 비디오 피드 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 소스들의 조합을 포함할 수도 있다. 그러나, 본 개시물에 설명된 기법들은 일반적으로 비디오 코딩에 적용가능할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다.
비디오 인코더 (20) 는 캡처된, 미리 캡처된, 또는 컴퓨터-생성된 비디오를 인코딩할 수도 있다. 소스 디바이스 (12) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 의 출력 인터페이스 (22) 를 통해 목적지 디바이스 (14) 에 직접 송신할 수도 있다. 인코딩된 비디오 데이터는 또한 (또는 대안적으로) 디코딩 및/또는 플레이백을 위해 목적지 디바이스 (14) 또는 다른 디바이스들에 의한 추후 액세스를 위해 저장 디바이스 (33) 상에 저장될 수도 있다.
목적지 디바이스 (14) 는 입력 인터페이스 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함한다. 일부 경우들에서, 입력 인터페이스 (28) 는 수신기 및/또는 모뎀을 포함할 수도 있다. 목적지 디바이스 (14) 의 입력 인터페이스 (28) 는 인코딩된 비디오 데이터를 링크 (16) 를 통해 수신한다. 링크 (16) 를 통해 통신된, 또는 저장 디바이스 (33) 상에 제공된, 인코딩된 비디오 데이터는, 비디오 데이터를 디코딩함에 있어서, 비디오 디코더 (30) 와 같은 비디오 디코더에 의한 이용을 위해 비디오 인코더 (20) 에 의해 생성된 다양한 신택스 엘리먼트들을 포함할 수도 있다. 이러한 신택스 엘리먼트들은, 통신 매체 상에 송신되거나, 저장 매체 상에 저장되거나, 또는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 포함될 수도 있다.
디스플레이 디바이스 (32) 는 목적지 디바이스 (14) 와 통합될 수도 있거나, 또는 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함할 수도 있고 또한 외부 디스플레이 디바이스와 인터페이싱하도록 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 다양한 디스플레이 디바이스들, 예컨대, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스 중 임의의 것을 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 집적 회로 (ASIC) 들, 필드 프로그램가능 게이트 어레이 (FPGA) 들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로부 중 임의의 것으로서 구현될 수도 있다. 이 기법들이 부분적으로 소프트웨어로 구현되면, 디바이스는 그 소프트웨어에 대한 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장할 수도 있고 그 명령들을 하드웨어로 하나 이상의 프로세서들을 이용하여 실행함으로써 본 개시물의 기법들을 수행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있고, 이들 중 어느 하나는 결합형 인코더/디코더 (코덱 (CODEC)) 의 부분으로서 각각의 디바이스에 통합될 수도 있다.
목적지 디바이스 (14) 는 링크 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 링크 (16) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시키는 것이 가능한 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 하나의 예에서, 링크 (16) 는 소스 디바이스 (12) 로 하여금 인코딩된 비디오 데이터를 직접 목적지 디바이스 (14) 에 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스 (14) 에 송신될 수도 있다. 통신 매체는 임의의 무선 또는 유선 통신 매체, 예컨대, 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수도 있다. 통신 매체는 패킷 기반 네트워크, 예컨대, 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
대안적으로, 출력 인터페이스 (22) 는 인코딩된 데이터를 저장 디바이스 (33) 에 출력할 수도 있다. 이와 유사하게, 출력 인터페이스 (22) 는 저장 디바이스 (33) 의 인코딩된 데이터에 액세스할 수도 있다. 저장 디바이스 (33) 는 하드 드라이브, 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬로 액세스되는 데이터 저장 매체들 중 임의의 것을 포함할 수도 있다. 추가 예에서, 저장 디바이스 (33) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오를 유지할 수도 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스 (14) 는 스트리밍 또는 다운로드를 통해 저장 디바이스 (33) 로부터의 저장된 비디오 데이터에 액세스할 수도 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 그 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 송신하는 것이 가능한 임의의 타입의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹사이트용), FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스 (14) 는 인터넷 연결을 포함한 임의의 표준 데이터 연결을 통해, 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하는데 적합한, 무선 채널 (예를 들어, Wi-Fi 연결), 유선 연결 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들 양쪽의 조합을 포함할 수도 있다. 저장 디바이스 (33) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들 양쪽의 조합일 수도 있다.
본 개시물의 기법들은 반드시 무선 애플리케이션들 또는 설정들로 제한되지는 않는다. 이 기법들은 공중경유 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 예를 들어, 인터넷을 통한 스트리밍 비디오 송신들, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은, 다양한 멀티미디어 애플리케이션들 중 임의의 멀티미디어 애플리케이션의 지원 하에서 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템 (10) 은 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 및/또는 비디오 전화통신과 같은 애플리케이션들을 지원하기 위한 1-방향 또는 2-방향 비디오 송신을 지원하도록 구성될 수도 있다.
더욱이, 도 1 의 예에서, 비디오 코딩 시스템 (10) 은 파일 생성 디바이스 (34) 를 포함한다. 파일 생성 디바이스 (34) 는 소스 디바이스 (12) 에 의해 생성되는 인코딩된 비디오 데이터를 수신할 수도 있다. 파일 생성 디바이스 (34) 는 인코딩된 비디오 데이터를 포함하는 파일을 생성할 수도 있다. 목적지 디바이스 (14) 는 파일 생성 디바이스 (34) 에 의해 생성된 파일을 수신할 수도 있다. 다양한 예들에서, 파일 생성 디바이스 (34) 는 다양한 타입들의 컴퓨팅 디바이스들을 포함할 수도 있다. 예를 들어, 파일 생성 디바이스 (34) 는 미디어 인지 네트워크 엘리먼트 (Media Aware Network Element; MANE), 서버 컴퓨팅 디바이스, 퍼스널 컴퓨팅 디바이스, 특수-목적 컴퓨팅 디바이스, 상업용 컴퓨팅 디바이스, 또는 다른 타입의 컴퓨팅 디바이스를 포함할 수도 있다. 일부 예들에서, 파일 생성 디바이스 (34) 는 콘텐츠 전달 네트워크의 부분이다. 파일 생성 디바이스 (34) 는 링크 (16) 와 같은 채널을 통해 소스 디바이스 (12) 로부터 인코딩된 비디오 데이터를 수신할 수도 있다. 더욱이, 목적지 디바이스 (14) 는 링크 (16) 와 같은 채널을 통해 파일 생성 디바이스 (34) 로부터 파일을 수신할 수도 있다. 파일 생성 디바이스 (34) 는 비디오 디바이스로 간주될 수도 있다.
다른 예들에서, 소스 디바이스 (12) 또는 다른 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 포함하는 파일을 생성할 수도 있다. 그러나, 설명의 용이를 위해, 본 개시물은 파일을 생성하는 것으로서 파일 생성 디바이스 (34) 를 설명한다. 그럼에도 불구하고, 이러한 설명들은 일반적으로 컴퓨팅 디바이스들에 적용가능하다는 것을 이해해야 한다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 고효율 비디오 코딩 (HEVC) 표준 또는 그의 확장에 따라 동작할 수도 있다. HEVC 표준은 또한 ISO/IEC 23008-2 라고도 지칭될 수도 있다. 최근에, HEVC 의 설계는 ITU-T 비디오 코딩 전문가 그룹 (Video Coding Experts Group; VCEG) 및 ISO/IEC 동화상 전문가 그룹 (Motion Picture Experts Group; MPEG) 의 비디오 코딩에 관한 합동 협력 팀 (Joint Collaboration Team on Video Coding; JCT-VC) 에 의해 마무리되었다. 이하 HEVC WD 라고 지칭되는, 가장 최근의 HEVC 초안 명세는, http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip 으로부터 입수가능하다. HEVC 에 대한 멀티뷰 확장, 즉, MV-HEVC 는 또한 JCT-3V 에 의해 개발되고 있다. "MV-HEVC 초안 텍스트 5 (MV-HEVC Draft Text 5)" 라는 명칭을 가지며 이하 MV-HEVC WD5 라고 지칭되는 MV-HEVC 의 최근 작업 초안 (WD) 은, http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1004-v6.zip 으로부터 입수가능하다. HEVC 에 대한 스케일러블 확장, 즉, SHVC 는 또한 JCT-VC 에 의해 개발되고 있다. "고효율 비디오 코딩 (HEVC) 스케일러블 확장 초안 3 (High efficiency video coding (HEVC) scalable extension draft 3)" 이라는 명칭을 가지며 이하 SHVC WD3 이라고 지칭되는 SHVC 의 최근 작업 초안 (WD) 은, http://phenix.it-sudparis.eu/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1008-v3.zip 으로부터 입수가능하다. HEVC 의 범위 확장의 최근 작업 초안 (WD) 은, http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1005-v3.zip 으로부터 입수가능하다. "3D-HEVC 초안 텍스트 1 (3D-HEVC Draft Text 1)" 이라는 명칭을 갖는, HEVC 의 3D 확장, 즉, 3D-HEVC 의 최근 작업 초안 (WD) 은, http://phenix.int-evry.fr/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1001-v3.zip 으로부터 입수가능하다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 이들 표준들 중 하나 이상에 따라 동작할 수도 있다.
대안적으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, MPEG-4, Part 10, 어드밴스드 비디오 코딩 (AVC) 이라고 대안적으로 지칭되는 ITU-T H.264 표준과 같은 다른 사유 (proprietary) 또는 산업 표준들, 또는 이러한 표준들의 확장들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정 코딩 표준으로 제한되지 않는다. 비디오 압축 표준들의 다른 예들로는 ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼 및 ITU-T H.264 (또한 ISO/IEC MPEG-4 AVC 라고도 알려짐) 를, 그의 스케일러블 비디오 코딩 (SVC) 및 멀티뷰 비디오 코딩 (MVC) 확장들을 포함하여, 포함한다.
도 1 에 도시되지 않았지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오와 비디오 양쪽의 인코딩을 핸들링하기에 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하다면, 일부 예들에서, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 다른 프로토콜들, 예컨대, 사용자 데이터그램 프로토콜 (UDP) 을 준수할 수도 있다.
JCT-VC 는 HEVC 표준의 개발에 노력을 들이고 있다. HEVC 표준화 노력들은 HEVC 테스트 모델 (HM) 이라고 지칭되는 비디오 코딩 디바이스의 진화 모델에 기초한다. HM 은, 예를 들어, ITU-T H.264/AVC 에 따른 기존 디바이스들에 관련된 비디오 코딩 디바이스들의 몇몇 부가적인 능력들을 가정한다. 예를 들어, H.264/AVC 가 9 개의 인트라-예측 인코딩 모드들을 제공하는 반면, HM 은 33 개 만큼이나 많은 인트라-예측 인코딩 모드들을 제공할 수도 있다.
일반적으로, HM 의 작업 모델은 비디오 프레임 또는 픽처가 루마 샘플과 크로마 샘플 양쪽을 포함하는 트리블록들 또는 최대 코딩 유닛들 (LCU) 의 시퀀스로 분할될 수도 있다고 설명한다. 트리블록은 또한 코딩 트리 유닛 (CTU) 들이라고도 지칭될 수도 있다. 트리블록은 H.264/AVC 표준의 매크로블록과 유사한 목적을 갖는다. 슬라이스는 코딩 순서로 다수의 연속적인 트리블록들을 포함한다. 비디오 프레임 또는 픽처는 하나 이상의 슬라이스들로 파티셔닝될 수도 있다. 각각의 트리블록은 쿼드트리에 따라 코딩 유닛 (CU) 들로 분할될 수도 있다. 예를 들어, 쿼드트리의 루트 노드로서의 트리블록은, 4 개의 자식 노드들로 분할될 수도 있고, 각각의 자식 노드는 차례로 부모 노드일 수도 있으며 다른 4 개의 자식 노드들로 분할될 수도 있다. 쿼드트리의 리프 노드로서의 최종의 미분할된 자식 노드는 코딩 노드, 즉, 코딩된 비디오 블록을 포함한다. 코딩된 비트스트림과 연관되는 신택스 데이터는 트리블록이 분할될 수도 있는 최대 횟수를 정의할 수도 있으며, 또한 코딩 노드들의 최소 사이즈를 정의할 수도 있다.
CU 는 코딩 노드, 및 이 코딩 노드와 연관된 변환 유닛 (TU) 들 및 예측 유닛 (PU) 들을 포함한다. CU 의 사이즈는 코딩 노드의 사이즈에 대응하고 정사각형 형상이어야 한다. CU 의 사이즈는 8x8 픽셀들로부터 64x64 픽셀들 이상의 최대치를 갖는 트리블록의 사이즈까지의 범위에 있을 수도 있다. 각각의 CU 는 하나 이상의 PU들 및 하나 이상의 TU들을 포함할 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, 하나 이상의 PU들로의 CU 의 파티셔닝을 설명할 수도 있다. 파티셔닝 모드들은 CU 가 스킵 또는 다이렉트 모드 인코딩되는지, 인트라-예측 모드 인코딩되는지, 또는 인터-예측 모드 인코딩되는지 간에 다를 수도 있다. PU들은 비-정사각형 형상으로 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는 또한, 예를 들어, 쿼드트리에 따른 하나 이상의 TU들로의 CU 의 파티셔닝을 설명할 수도 있다. TU 는 정사각형 또는 비-정사각형 형상일 수 있다.
HEVC 표준은, 상이한 CU들에 대해 상이할 수도 있는 TU들에 따른 변환들을 허용한다. TU들은 통상적으로 파티셔닝된 LCU 에 대해 정의된 주어진 CU 내의 PU들의 사이즈에 기초하여 사이징되지만, 이것이 항상 그러한 것은 아닐 수도 있다. TU들은 통상적으로 PU들과 동일한 사이즈이거나 또는 더 작다. 일부 예들에서, CU 에 대응하는 잔차 샘플들은 "잔차 쿼드 트리" (RQT) 로서 알려진 쿼드트리 구조를 이용하여 더 작은 유닛들로 세분될 수도 있다. RQT 의 리프 노드들은 TU들이라고 지칭될 수도 있다. TU들과 연관된 픽셀 차이 값들은 변환 계수들을 생성하기 위해 변환될 수도 있고, 그 변환 계수들은 양자화될 수도 있다.
일반적으로, PU 는 예측 프로세스에 관련된 데이터를 포함한다. 예를 들어, PU 가 인트라-모드 인코딩될 때, PU 는 PU 에 대한 인트라-예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU 가 인터-모드 인코딩될 때, PU 는 PU 에 대한 모션 벡터를 정의하는 데이터를 포함할 수도 있다. PU 에 대한 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트, 모션 벡터에 대한 해상도 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 픽처, 및/또는 모션 벡터에 대한 참조 픽처 리스트 (예를 들어, 리스트 0, 리스트 1, 또는 리스트 C) 를 설명할 수도 있다.
일반적으로, TU 는 변환 및 양자화 프로세스들에 이용된다. 하나 이상의 PU들을 갖는 주어진 CU 는 또한 하나 이상의 변환 유닛 (TU) 들을 포함할 수도 있다. 예측에 후속하여, 비디오 인코더 (20) 는 PU 에 대응하는 잔차 값들을 계산할 수도 있다. 잔차 값들은, 변환 계수들로 변환될 수도 있고, 양자화될 수도 있고, TU들을 이용하여 스캐닝되어 엔트로피 코딩을 위해 직렬화된 변환 계수들을 생성할 수도 있는 픽셀 차이 값들을 포함한다. 본 개시물은 통상적으로 CU 의 코딩 노드 (즉, 코딩 블록) 를 지칭하기 위해 용어 "비디오 블록" 을 사용한다. 일부의 특정 경우들에서, 본 개시물은 또한 코딩 노드와 PU들 및 TU들을 포함하는 트리블록, 즉, LCU 또는 CU 를 지칭하기 위해 용어 "비디오 블록"을 사용할 수도 있다.
비디오 시퀀스는 통상적으로 비디오 프레임들 또는 픽처들의 시리즈를 포함한다. 픽처들의 그룹 (group of pictures; GOP) 은 일반적으로 비디오 픽처들 중 하나 이상의 비디오 픽처의 시리즈를 포함한다. GOP 는 GOP 의 헤더, 픽처들 중 하나 이상의 픽처의 헤더, 또는 다른 곳에 신택스 데이터를 포함할 수도 있고, 이 신택스 데이터는 GOP 에 포함된 다수의 픽처들을 설명한다. 픽처의 각각의 슬라이스는 각각의 슬라이스에 대한 인코딩 모드를 설명하는 슬라이스 신택스 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 통상적으로 비디오 데이터를 인코딩하기 위해 개별 비디오 슬라이스들 내의 비디오 블록들에 대해 동작한다. 비디오 블록은 CU 내의 코딩 노드에 대응할 수도 있다. 비디오 블록들은 고정된 또는 변동되는 사이즈들을 가질 수도 있고, 특정된 코딩 표준에 따라 사이즈가 상이할 수도 있다.
일 예로서, HM 은 다양한 PU 사이즈들에 있어서의 예측을 지원한다. 특정 CU 의 사이즈가 2Nx2N 이라고 가정하면, HM 은 2Nx2N 또는 NxN 의 PU 사이즈들에 있어서의 인트라-예측과, 2Nx2N, 2NxN, Nx2N, 또는 NxN 의 대칭적인 PU 사이즈들에 있어서의 인터-예측을 지원한다. HM 은 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 사이즈들에 있어서의 인터-예측을 위한 비대칭적인 파티셔닝을 또한 지원한다. 비대칭적인 파티셔닝에서는, CU 의 하나의 방향이 파티셔닝되지 않는 한편, 다른 방향은 25% 및 75% 로 파티셔닝된다. 25% 파티션에 대응하는 CU 의 일부는 "n" 다음에 "상 (Up)", "하 (Down)", "좌 (Left)", 또는 "우 (Right)" 의 표시로 나타낸다. 따라서, 예를 들어, "2NxnU" 는 상부의 2Nx0.5N PU 및 하부의 2Nx1.5N PU 로 수평으로 파티셔닝되는 2Nx2N CU 를 지칭한다.
본 개시물에서, "NxN" 및 "N×N" 은 수직 및 수평 치수들의 관점에서 비디오 블록의 픽셀 치수들, 예를 들어, 16x16 픽셀들 또는 16×16 픽셀들을 지칭하기 위해 상호교환가능하게 사용될 수도 있다. 일반적으로, 16x16 블록은 수직 방향에서의 16 개의 픽셀들 (y = 16) 및 수평 방향에서의 16 개의 픽셀들 (x = 16) 을 갖는다. 이와 마찬가지로, NxN 블록은 일반적으로 수직 방향에서의 N 개의 픽셀들 및 수평 방향에서의 N 개의 픽셀들을 가지며, 여기서 N 은 음이 아닌 정수 값을 표현한다. 블록 내의 픽셀들은 로우들 및 컬럼들로 배열될 수도 있다. 더욱이, 블록들은 수직 방향에서와 동일한 수의 픽셀들을 수평 방향에서 반드시 가질 필요는 없다. 예를 들어, 블록들은 NxM 픽셀들을 포함할 수도 있고, 여기서 M 은 반드시 N 과 동일하지는 않다.
CU 의 PU들을 이용한 인트라-예측 또는 인터-예측 코딩에 후속하여, 비디오 인코더 (20) 는 CU 의 TU들에 대한 잔차 데이터를 계산할 수도 있다. PU들은 공간 도메인 (또한 픽셀 도메인이라고도 지칭됨) 에서의 픽셀 데이터를 포함할 수도 있고, TU들은 잔차 비디오 데이터에 대한 변환, 예를 들어, 이산 코사인 변환 (DCT), 정수 변환, 웨이블릿 변환, 또는 개념적으로 유사한 변환의 적용에 후속하는 변환 도메인에서의 계수들을 포함할 수도 있다. 잔차 데이터는 인코딩되지 않은 픽처의 픽셀들과 CU들에 대응하는 예측 값들 사이의 픽셀 차이들에 대응할 수도 있다. 비디오 인코더 (20) 는 CU 에 대한 잔차 데이터를 포함하는 TU들을 형성하고, 그 후에 TU들을 변환하여 CU 에 대한 변환 계수들을 생성할 수도 있다.
변환 계수들을 생성하기 위한 임의의 변환들에 후속하여, 비디오 인코더 (20) 는 변환 계수들의 양자화를 수행할 수도 있다. 양자화는 일반적으로, 계수들을 표현하는데 이용된 데이터의 양을 가능하다면 감소시키기 위해 변환 계수들이 양자화되어 추가의 압축을 제공하는 프로세스를 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안에 m-비트 값으로 버림 (round down) 될 수도 있고, 여기서 nm 보다 더 크다.
일부 예들에서, 비디오 인코더 (20) 는 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성하기 위해 양자화된 변환 계수들을 스캐닝하기 위한 미리 정의된 스캔 순서를 이용할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 적응 스캔 (adaptive scan) 을 수행할 수도 있다. 1 차원 벡터를 형성하기 위해 양자화된 변환 계수들을 스캐닝한 후에, 비디오 인코더 (20) 는, 예를 들어, 콘텍스트 적응 가변 길이 코딩 (context adaptive variable length coding; CAVLC), 콘텍스트 적응 2진 산술 코딩 (context adaptive binary arithmetic coding; CABAC), 신택스-기반 콘텍스트-적응 2진 산술 코딩 (syntax-based context-adaptive binary arithmetic coding; SBAC), 확률 간격 파티셔닝 엔트로피 (Probability Interval Partitioning Entropy; PIPE) 코딩 또는 다른 엔트로피 인코딩 방법론에 따라 1 차원 벡터를 엔트로피 인코딩할 수도 있다. 비디오 인코더 (20) 는 또한 비디오 데이터를 디코딩함에 있어서 비디오 디코더 (30) 에 의한 이용을 위해 인코딩된 비디오 데이터와 연관된 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
CABAC 를 수행하기 위해, 비디오 인코더 (20) 는 콘텍스트 모델 내의 콘텍스트를 송신될 심볼에 할당할 수도 있다. 콘텍스트는, 예를 들어, 심볼의 이웃하는 값들이 논-제로 (non-zero) 인지 아닌지의 여부에 관련될 수도 있다. CAVLC 를 수행하기 위해, 비디오 인코더 (20) 는 송신될 심볼에 대한 가변 길이 코드를 선택할 수도 있다. 가변 길이 코드 (VLC) 에서의 코드워드 (codeword) 들은, 상대적으로 더 짧은 코드들이 더 가능성있는 심볼들에 대응하는 한편, 더 긴 코드들이 덜 가능성있는 심볼들에 대응하도록 구성될 수도 있다. 이러한 방법으로, VLC 의 이용은, 예를 들어, 송신될 각각의 심볼에 대한 동일-길이 코드워드들을 이용하는 것에 비해 비트 절감을 달성할 수도 있다. 확률 결정은 심볼에 할당된 콘텍스트에 기초할 수도 있다.
비디오 인코더 (20) 는 코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수도 있다. 용어 "비트스트림" 은 네트워크 추상화 레이어 (Network Abstraction Layer; NAL) 유닛 스트림 (예를 들어, NAL 유닛들의 시퀀스) 또는 바이트 스트림 (예를 들어, HEVC 표준의 부록 B 에 의해 특정된 NAL 유닛들 및 시작 코드 프리픽스들을 포함하는 NAL 유닛 스트림의 캡슐화) 중 어느 하나를 지칭하는데 사용되는 통칭되는 용어일 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 타입의 표시, 및 에뮬레이션 방지 비트들과 함께 필요에 따라 산재된 원시 바이트 시퀀스 페이로드 (raw byte sequence payload; RBSP) 의 형태로 그 데이터를 포함하는 바이트들을 포함하는 신택스 구조이다. NAL 유닛들 각각은 NAL 유닛 헤더를 포함할 수도 있고, RBSP 를 캡슐화할 수도 있다. NAL 유닛 헤더는 NAL 유닛 타입 코드를 나타내는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 특정된 NAL 유닛 타입 코드는 NAL 유닛의 타입을 나타낸다. RBSP 는 NAL 유닛 내에 캡슐화되는 정수 개수의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 경우들에서, RBSP 는 제로 비트들을 포함한다.
상이한 타입들의 NAL 유닛들은 상이한 타입들의 RBSP들을 캡슐화할 수도 있다. 예를 들어, 제 1 타입의 NAL 유닛은 픽처 파라미터 세트 (picture parameter set; PPS) 에 대한 RBSP 를 캡슐화할 수도 있고, 제 2 타입의 NAL 유닛은 슬라이스 세그먼트에 대한 RBSP 를 캡슐화할 수도 있고, 제 3 타입의 NAL 유닛은 보충 강화 정보 (Supplemental Enhancement Information; SEI) 에 대한 RBSP 를 캡슐화할 수도 있다는 것 등이다. (파라미터 세트들 및 SEI 메시지들에 대한 RBSP들과는 대조적으로) 비디오 코딩 데이터에 대한 RBSP들을 캡슐화하는 NAL 유닛들은 비디오 코딩 레이어 (VCL) NAL 유닛들이라고 지칭될 수도 있다. 파라미터 세트들 (예를 들어, 비디오 파라미터 세트 (video parameter set; VPS) 들, 시퀀스 파라미터 세트 (sequence parameter set; SPS) 들, PPS들 등) 을 포함하는 NAL 유닛들은 파라미터 세트 NAL 유닛들이라고 지칭될 수도 있다.
본 개시물은 코딩된 슬라이스 NAL 유닛으로서 세그먼트 슬라이스에 대한 RBSP 를 캡슐화하는 NAL 유닛을 지칭할 수도 있다. HEVC WD 에 정의된 바와 같이, 슬라이스 세그먼트는, 단일 NAL 유닛에 포함되고 타일 (tile) 스캔에서 연속적으로 순서화된 정수 개수의 CTU들이다. 그에 반해, HEVC WD 에서, 슬라이스는 하나의 독립 슬라이스 세그먼트 및 동일한 액세스 유닛 내의 다음 독립 슬라이스 세그먼트 (존재하는 경우) 에 선행하는 모든 후속 종속 슬라이스 세그먼트들 (존재하는 경우) 에 포함된 정수 개수의 CTU들일 수도 있다. 독립 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 신택스 엘리먼트들의 값들이 선행하는 슬라이스 세그먼트에 대한 값들로부터 추론되지 않는 슬라이스 세그먼트이다. 종속 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 일부 신택스 엘리먼트들의 값들이 디코딩 순서로 선행하는 슬라이스 세그먼트에 대한 값들로부터 추론되는 슬라이스 세그먼트이다. 코딩된 슬라이스 NAL 유닛의 RBSP 는 슬라이스 세그먼트 헤더 및 슬라이스 데이터를 포함할 수도 있다. 슬라이스 세그먼트 헤더는 슬라이스 세그먼트에서 표현된 제 1 또는 모든 CTU들에 관계된 데이터 엘리먼트들을 포함하는 코딩된 슬라이스 세그먼트의 일부분이다. 슬라이스 헤더는 디코딩 순서로 현재 종속 슬라이스 세그먼트에 선행하는 가장 최근의 독립 슬라이스 세그먼트 또는 현재 슬라이스 세그먼트인 독립 슬라이스 세그먼트의 슬라이스 세그먼트 헤더이다.
VPS 는, 0 개 이상의 전체 비디오 시퀀스 (CVS) 들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는, 0 개 이상의 전체 CVS들에 적용하는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는, SPS 가 액티브할 때 액티브한 VPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, VPS 의 신택스 엘리먼트들은 SPS 의 신택스 엘리먼트들보다 더 일반적으로 적용가능할 수도 있다.
파라미터 세트 (예를 들어, VPS, SPS, PPS 등) 는 슬라이스의 슬라이스 헤더로부터 직접적으로 또는 간접적으로 참조되는 식별물을 포함할 수도 있다. 참조 프로세스는 "활성화" 로 알려져 있다. 따라서, 비디오 디코더 (30) 가 특정 슬라이스를 디코딩하고 있을 때, 특정 슬라이스의 슬라이스 헤더에서 신택스 엘리먼트에 의해 직접적으로 또는 간접적으로 참조되는 파라미터 세트는 "활성화된" 것이라고 한다. 파라미터 세트 타입에 따라, 이 활성화는 픽처 기반으로 또는 시퀀스 기반으로 발생할 수도 있다. 예를 들어, 슬라이스의 슬라이스 헤더는 PPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, 비디오 코더가 슬라이스를 코딩할 때, PPS 가 활성화될 수도 있다. 더욱이, PPS 는 SPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, SPS 를 식별하는 PPS 가 활성화될 때, SPS 가 활성화될 수도 있다. SPS 는 VPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, VPS 를 식별하는 SPS 가 활성화될 때, VPS 가 활성화된다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 부가적으로, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득하기 위해 비트스트림을 파싱할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽처들을 재구성할 수도 있다. 비디오 데이터를 재구성하기 위한 프로세스는 비디오 인코더 (20) 에 의해 수행된 프로세스와 일반적으로 상반될 수도 있다. 예를 들어, 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측 블록들을 결정하기 위해 PU들의 모션 벡터들을 이용할 수도 있다. 부가적으로, 비디오 디코더 (30) 는 현재 CU 의 TU들의 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 TU들의 변환 블록들을 재구성하기 위해 계수 블록들에 대해 역변환들을 수행할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측 블록들의 샘플들을 현재 CU 의 TU들의 변환 블록들의 대응하는 샘플들에 부가함으로써, 현재 CU 의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 픽처를 재구성할 수도 있다.
HEVC WD 에서, CVS 는 IDR (Instantaneous Decoding Refresh) 픽처, 또는 BLA (broken link access) 픽처, 또는 IDR 또는 BLA 픽처들이 아닌 모든 후속 픽처들을 포함하여, 비트스트림에서 첫 번째 픽처인 CRA (clean random access) 픽처로부터 시작할 수도 있다. IDR 픽처는 I 슬라이스들 (즉, 인트라 예측만이 이용되는 슬라이스들) 만을 포함한다. IDR 픽처는 디코딩 순서로 비트스트림에서의 첫 번째 픽처일 수도 있고, 또는 비트스트림에 추후에 나타날 수도 있다. 각각의 IDR 픽처는 디코딩 순서로 CVS 의 첫 번째 픽처이다. HEVC WD 에서, IDR 픽처는 각각의 VCL NAL 유닛이 IDR_W_RADL 또는 IDR_N_LP 와 동일한 nal_unit_type 을 갖는 인트라 랜덤 액세스 포인트 (IRAP) 픽처일 수도 있다.
IDR 픽처들은 랜덤 액세스를 위해 이용될 수도 있다. 그러나, 디코딩 순서로 IDR 픽처에 후속하는 픽처들은 참조로서 IDR 픽처에 앞서 디코딩된 픽처들을 이용할 수 없다. 이에 따라, 랜덤 액세스를 위해 IDR 픽처들에 의존하는 비트스트림들은, 랜덤 액세스 픽처들의 부가적인 타입들을 이용하는 비트스트림들보다 상당히 더 낮은 코딩 효율을 가질 수 있다. 적어도 일부의 예들에서, IDR 액세스 유닛은 IDR 픽처를 포함하는 액세스 유닛이다.
CRA 픽처들의 개념은, 디코딩 순서로는 CRA 픽처에 후속하지만 출력 순서로는 CRA 픽처에 선행하는 픽처들이, 참조를 위해 CRA 픽처 이전에 디코딩된 픽처들을 이용하게 하도록 HEVC 에 도입되었다. 디코딩 순서로는 CRA 픽처에 후속하지만 출력 순서로는 CRA 픽처에 선행하는 픽처들은, CRA 픽처와 연관된 선두 픽처들 (leading pictures) (또는 CRA 픽처의 선두 픽처들) 이라고 지칭된다. 즉, 코딩 효율을 개선시키기 위해, CRA 픽처들의 개념은, 디코딩 순서로는 CRA 픽처에 후속하지만 출력 순서로는 CRA 픽처에 선행하는 픽처들이, 참조를 위해 CRA 픽처 이전에 디코딩된 픽처들을 이용하게 하도록 HEVC 에 도입되었다. CRA 액세스 유닛은 코딩된 픽처가 CRA 픽처인 액세스 유닛이다. HEVC WD 에서, CRA 픽처는 각각의 VCL NAL 유닛이 CRA_NUT 와 동일한 nal_unit_type 을 갖는 인트라 랜덤 액세스 픽처이다.
디코딩 순서로 CRA 픽처 이전에 발생하는 CRA 픽처 또는 IDR 픽처로부터 디코딩이 시작하는 경우 CRA 픽처의 선두 픽처들은 올바르게 디코딩가능하다. 그러나, CRA 픽처로부터의 랜덤 액세스가 발생할 때 CRA 픽처의 선두 픽처들은 디코딩가능하지 않을 수도 있다. 따라서, 비디오 디코더는 통상적으로 랜덤 액세스 디코딩 동안 CRA 픽처의 선두 픽처들을 디코딩한다. 디코딩이 시작하는 곳에 따라 이용가능하지 않을 수도 있는 참조 픽처들로부터의 에러 전파를 방지하기 위해, 디코딩 순서와 출력 순서 양쪽 모두에서 CRA 픽처에 후속하는 어떠한 픽처도, 참조를 위해 (선두 픽처들을 포함하는) 디코딩 순서 또는 출력 순서 중 어느 하나의 순서로 CRA 픽처에 선행하는 어떠한 픽처도 이용하지 않을 수도 있다.
BLA 픽처의 개념은 CRA 픽처들의 도입 후에 HEVC 에 도입되었고 CRA 픽처들의 개념에 기초한다. BLA 픽처는 통상적으로 CRA 픽처의 포지션에서 비트스트림 스플라이싱 (splicing) 으로부터 유래하고, 스플라이싱된 비트스트림에서, 스플라이싱 포인트 CRA 픽처는 BLA 픽처로 변경된다. 따라서, BLA 픽처들은 오리지널 비트스트림들에서의 CRA 픽처들일 수도 있고, CRA 픽처는 CRA 픽처의 로케이션에서의 비트스트림 스플라이싱 이후에 비트스트림 스플라이서에 의해 BLA 픽처인 것으로 변경된다. 일부 경우들에서, RAP 픽처를 포함하는 액세스 유닛은 본 명세서에서 RAP 액세스 유닛으로서 지칭될 수도 있다. BLA 액세스 유닛은 BLA 픽처를 포함하는 액세스 유닛이다. HEVC WD 에서, BLA 픽처는 각각의 VCL NAL 유닛이 BLA_W_LP, BLA_W_RADL, 또는 BLA_N_LP 와 동일한 nal_unit_type 을 갖는 인트라 랜덤 액세스 픽처일 수도 있다.
일반적으로, IRAP 픽처는 I 슬라이스들만을 포함하고, BLA 픽처, CRA 픽처, 또는 IDR 픽처일 수도 있다. 예를 들어, HEVC WD 는, IRAP 픽처가 각각의 VCL NAL 유닛이 BLA_W_LP 내지 RSV_IRAP_VCL23 의 범위에서 nal_unit_type 을 갖는 코딩된 픽처일 수도 있음을 나타낸다. 더욱이, HEVC WD 는 디코딩 순서로의 비트스트림에서의 첫 번째 픽처가 IRAP 픽처이어야 함을 나타낸다. HEVC WD 의 테이블 7-1 은 NAL 유닛 타입 코드들 및 NAL 유닛 타입 클래스들을 도시한다. HEVC WD 의 테이블 7-1 이 아래에 재현된다.
테이블 7-1 - NAL 유닛 타입 코드들 및 NAL 유닛 타입 클래스들
nal_unit_type nal_unit_type 의 명칭 NAL 유닛 및 RBSP 신택스 구조의 콘텐츠 NAL 유닛 타입 클래스
0
1
TRAIL_N
TRAIL_R
논-TSA, 논-STSA 트레일링 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
2
3
TSA_N
TSA_R
TSA 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
4
5
STSA_N
STSA_R
STSA 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
6
7
RADL_N
RADL_R
RADL 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
8
9
RASL_N
RASL_R
RASL 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
10
12
14
RSV_VCL_N10
RSV_VCL_N12
RSV_VCL_N14
예비된 논-IRAP 서브-레이어 논-참조 VCL NAL 유닛 타입들 VCL
11
13
15
RSV_VCL_R11
RSV_VCL_R13
RSV_VCL_R15
예비된 논-IRAP 서브-레이어 참조 VCL NAL 유닛 타입들 VCL
16
17
18
BLA_W_LP
BLA_W_RADL
BLA_N_LP
BLA 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
19
20
IDR_W_RADL
IDR_N_LP
IDR 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
21 CRA_NUT CRA 픽처의 코딩된 슬라이스 세그먼트
slice_segment_layer_rbsp( )
VCL
22
23
RSV_IRAP_VCL22
RSV_IRAP_VCL23
예비된 IRAP VCL NAL 유닛 타입들 VCL
24..31 RSV_VCL24..
RSV_VCL31
예비된 논-IRAP VCL NAL 유닛 타입들 VCL
32 VPS_NUT 비디오 파라미터 세트
video_parameter_set_rbsp( )
논-VCL
33 SPS_NUT 시퀀스 파라미터 세트
seq_parameter_set_rbsp( )
논-VCL
34 PPS_NUT 픽처 파라미터 세트
pic_parameter_set_rbsp( )
논-VCL
35 AUD_NUT 액세스 유닛 구분자
access_unit_delimiter_rbsp( )
논-VCL
36 EOS_NUT 시퀀스의 끝
end_of_seq_rbsp( )
논-VCL
37 EOB_NUT 비트스트림의 끝
end_of_bitstream_rbsp( )
논-VCL
38 FD_NUT 필러 데이터
filler_data_rbsp( )
논-VCL
39
40
PREFIX_SEI_NUT
SUFFIX_SEI_NUT
보충 강화 정보
sei_rbsp( )
논-VCL
41..47 RSV_NVCL41..
RSV_NVCL47
예비됨 논-VCL
48..63 UNSPEC48..
UNSPEC63
비특정됨 논-VCL
BLA 픽처들과 CRA 픽처들 사이의 하나의 차이는 다음과 같다. CRA 픽처에 대해, 디코딩 순서로 CRA 픽처 이전에 RAP 픽처로부터 디코딩이 시작하는 경우, 연관된 선두 픽처들은 올바르게 디코딩가능하다. 그러나, CRA 픽처로부터의 랜덤 액세스가 발생할 때 (즉, CRA 픽처로부터 디코딩이 시작할 때, 또는 다시 말해, CRA 픽처가 비트스트림에서 첫 번째 픽처일 때) CRA 픽처와 연관된 선두 픽처들은 올바르게 디코딩가능하지 않을 수도 있다. 그에 반해, 디코딩 순서로 BLA 픽처 이전에 RAP 픽처로부터 디코딩이 시작할 때에도, BLA 픽처와 연관된 선두 픽처들이 디코딩가능하다는 시나리오는 없을 수도 있다.
특정 CRA 픽처 또는 특정 BLA 픽처와 연관된 선두 픽처들 중 일부는, 특정 CRA 픽처 또는 특정 BLA 픽처가 비트스트림에서 첫 번째 픽처일 때에도 올바르게 디코딩가능할 수도 있다. 이들 선두 픽처들은 디코딩가능 선두 픽처 (decodable leading picture; DLP) 들 또는 랜덤 액세스 디코딩가능 선두 (Random Access Decodable Leading; RADL) 픽처들이라고 지칭될 수도 있다. HEVC WD 에서, RADL 픽처는 각각의 VCL NAL 유닛이 RADL_R 또는 RADL_N 과 동일한 nal_unit_type 을 갖는 코딩된 픽처일 수도 있다. 더욱이, HEVC WD 는, 모든 RADL 픽처들이 선두 픽처들임을 그리고 RADL 픽처들이 동일한 연관된 IRAP 픽처의 트레일링 픽처들의 디코딩 프로세스에 대한 참조 픽처들로서 이용되지 않음을 나타낸다. 존재할 때, 모든 RADL 픽처들은, 디코딩 순서로, 동일한 연관된 IRAP 픽처의 모든 트레일링 픽처들에 선행한다. HEVC WD 는 RADL 액세스 유닛이 코딩된 픽처가 RADL 픽처인 액세스 유닛일 수도 있음을 나타낸다. 트레일링 픽처는 출력 순서로 연관된 IRAP 픽처 (즉, 디코딩 순서로 이전의 IRAP 픽처) 에 후속하는 픽처일 수도 있다.
다른 선두 픽처들은 논-디코딩가능 선두 픽처 (non-decodable leading picture; NLP) 들 또는 랜덤 액세스 스킵 선두 (Random Access Skipped Leading; RASL) 픽처들이라고 지칭될 수도 있다. HEVC WD 에서, RASL 픽처는 각각의 VCL NAL 유닛이 RASL_R 또는 RASL_N 과 동일한 nal_unit_type 을 갖는 코딩된 픽처일 수도 있다. 모든 RASL 픽처들은 연관된 BLA 또는 CRA 픽처의 선두 픽처들이다.
필수 파라미터 세트들이 이들이 활성화될 필요가 있을 때 이용가능하다면, IRAP 픽처 및 디코딩 순서로 모든 후속 논-RASL 픽처들은, 디코딩 순서로 IRAP 픽처에 선행하는 임의의 픽처들의 디코딩 프로세스를 수행하는 일 없이 올바르게 디코딩될 수 있다. IRAP 픽처들이 아닌 I 슬라이스들만을 포함하는 픽처들이 비트스트림에 존재할 수도 있다.
멀티-뷰 코딩에서는, 상이한 뷰포인트들로부터 동일한 장면의 다수의 뷰들이 존재할 수도 있다. 용어 "액세스 유닛" 은 동일한 시간 인스턴스에 대응하는 픽처들의 세트를 지칭하기 위해 사용될 수도 있다. 따라서, 비디오 데이터는 시간이 지남에 따라 발생하는 액세스 유닛들의 시리즈로서 개념화될 수도 있다. "뷰 컴포넌트" 는 단일 액세스 유닛에서 뷰의 인코딩된 표현일 수도 있다. 본 개시물에서, "뷰" 는 동일한 뷰 식별자와 연관된 뷰 컴포넌트들의 시퀀스 또는 세트를 지칭할 수도 있다. 뷰 컴포넌트는 텍스처 뷰 컴포넌트 및 심도 뷰 컴포넌트를 포함할 수도 있다. 본 개시물에서, "뷰" 는 동일한 뷰 식별자와 연관된 하나 이상의 뷰 컴포넌트들의 세트 또는 시퀀스를 지칭할 수도 있다.
텍스처 뷰 컴포넌트 (즉, 텍스처 픽처) 는 단일 액세스 유닛에서 뷰의 텍스처의 코딩된 표현일 수도 있다. 텍스처 뷰는 동일한 값의 뷰 순서 인덱스와 연관된 텍스처 뷰 컴포넌트들의 시퀀스일 수도 있다. 뷰의 뷰 순서 인덱스는 다른 뷰들에 관련된 뷰의 카메라 포지션을 나타낼 수도 있다. 심도 뷰 컴포넌트 (즉, 심도 픽처) 는 단일 액세스 유닛에서 뷰의 심도의 코딩된 표현일 수도 있다. 심도 뷰는 동일한 값의 뷰 순서 인덱스와 연관된 하나 이상의 심도 뷰 컴포넌트들의 세트 또는 시퀀스일 수도 있다.
MV-HEVC, 3D-HEVC 및 SHVC 에서, 비디오 인코더는 NAL 유닛들의 시리즈를 포함하는 비트스트림을 생성할 수도 있다. 비트스트림의 상이한 NAL 유닛들은 비트스트림의 상이한 레이어들과 연관될 수도 있다. 레이어는 VCL NAL 유닛들의 세트, 및 동일한 레이어 식별자를 갖는 연관된 논-VCL NAL 유닛들로서 정의될 수도 있다. 레이어는 멀티-뷰 비디오 코딩에서 뷰와 등가일 수도 있다. 멀티-뷰 비디오 코딩에서, 레이어는 상이한 시간 인스턴스들을 갖는 동일한 레이어의 모든 뷰 컴포넌트들을 포함할 수 있다. 각각의 뷰 컴포넌트는 특정 시간 인스턴스에서 특정 뷰에 속하는 비디오 장면의 코딩된 픽처일 수도 있다. 3D 비디오 코딩의 일부 예들에서, 레이어는 특정 뷰의 모든 코딩된 심도 픽처들 또는 특정 뷰의 코딩된 텍스처 픽처들을 포함할 수도 있다. 3D 비디오 코딩의 다른 예들에서, 레이어는 특정 뷰의 텍스처 뷰 컴포넌트들과 심도 뷰 컴포넌트들 양쪽을 포함할 수도 있다. 이와 유사하게, 스케일러블 비디오 코딩의 맥락에서, 레이어는 통상적으로 다른 레이어들에서 코딩된 픽처들과는 상이한 비디오 특성들을 갖는 코딩된 픽처들에 대응한다. 이러한 비디오 특성들은 통상적으로 공간 해상도 및 품질 레벨 (예를 들어, 신호 대 잡음 비) 을 포함한다. HEVC 및 그의 확장들에서, 시간 스케일러빌리티는 서브-레이어로서 특정 시간 레벨을 갖는 픽처들의 그룹을 정의함으로써 하나의 레이어 내에서 달성될 수도 있다.
비트스트림의 각각의 레이어 각각에 대해, 하위 레이어에서의 데이터는 임의의 상위 레이어에서의 데이터에 대한 참조 없이 디코딩될 수도 있다. 스케일러블 비디오 코딩에서, 예를 들어, 베이스 레이어에서의 데이터는 임의의 인핸스먼트 레이어 (enhancement layer) 에서의 데이터에 대한 참조 없이 디코딩될 수도 있다. 일반적으로, NAL 유닛들은 단일 레이어의 데이터를 단지 캡슐화할 수도 있다. 따라서, 비트스트림의 최상위 잔존 레이어의 데이터를 캡슐화하는 NAL 유닛들은, 비트스트림의 잔존 레이어들에서의 데이터의 디코딩가능성에 영향을 미치는 일 없이 비트스트림으로부터 제거될 수도 있다. 멀티-뷰 코딩 및 3D-HEVC 에서, 상이 레이어들은 부가적 뷰 컴포넌트들을 포함할 수도 있다. SHVC 에서, 상위 레이어들은 신호 대 잡음 비 (SNR) 인핸스먼트 데이터, 공간 인핸스먼트 데이터, 및/또는 시간 인핸스먼트 데이터를 포함할 수도 있다. MV-HEVC, 3D-HEVC 및 SHVC 에서, 레이어는 임의의 다른 레이어의 데이터에 대한 참조 없이 레이어에서 픽처들을 디코딩할 수 있다. 베이스 레이어는 HEVC 기본 명세 (예를 들어, HEVC WD) 를 준수할 수도 있다.
SVC 에서, 베이스 레이어 이외의 레이어들은 "인핸스먼트 레이어들" 이라고 지칭될 수도 있고 비트스트림으로부터 디코딩된 비디오 데이터의 시각 품질을 향상시키는 정보를 제공할 수도 있다. SVC 는 공간 해상도, 신호 대 잡음 비 (즉, 품질) 또는 시간 레이트를 향상시킬 수 있다. 스케일러블 비디오 코딩 (예를 들어, SHVC) 에서, "레이어 표현" 은 단일 액세스 유닛에서 공간 레이어의 코딩된 표현일 수도 있다. 설명의 용이를 위해, 본 개시물은 "뷰 컴포넌트들/레이어 표현들" 또는 단순히 "픽처들" 로서 뷰 컴포넌트들 및/또는 레이어 표현들을 지칭할 수도 있다.
레이어들을 구현하기 위해, NAL 유닛들의 헤더들은 nuh_reserved_zero_6bits 신택스 엘리먼트들을 포함할 수도 있다. HEVC WD 에서, nuh_reserved_zero_6bits 신택스 엘리먼트가 예비된다. 그러나, MV-HEVC, 3D-HEVC, 및 SVC 에서, nuh_reserved_zero_6bits 신택스 엘리먼트는 nuh_layer_id 신택스 엘리먼트라고 지칭된다. nuh_layer_id 신택스 엘리먼트는 레이어의 식별자를 특정한다. 상이한 값들을 특정하는 nuh_layer_id 신택스 엘리먼트들을 갖는 비트스트림의 NAL 유닛들은 비트스트림의 상이한 레이어들에 속한다.
일부 예들에서, NAL 유닛의 nuh_layer_id 신택스 엘리먼트는 NAL 유닛이 멀티-뷰 코딩 (예를 들어, MV-HEVC), 3DV 코딩 (예를 들어, 3D-HEVC), 또는 스케일러블 비디오 코딩 (예를 들어, SHVC) 에서 베이스 레이어에 관련되는 경우 0 과 동일하다. 비트스트림의 베이스 레이어에서의 데이터는 비트스트림의 임의의 다른 레이어에서의 데이터에 대한 참조 없이 디코딩될 수도 있다. NAL 유닛이 멀티-뷰 코딩, 3DV, 또는 스케일러블 비디오 코딩에서 베이스 레이어에 관련되지 않는 경우, NAL 유닛의 nuh_layer_id 신택스 엘리먼트는 논-제로 값을 가질 수도 있다.
더욱이, 레이어 내의 일부 뷰 컴포넌트들/레이어 표현들은 동일한 레이어 내의 다른 뷰 컴포넌트들/레이어 표현들에 대한 참조 없이 디코딩될 수도 있다. 따라서, 레이어의 소정의 뷰 컴포넌트들/레이어 표현들의 데이터를 캡슐화하는 NAL 유닛들은, 레이어에서의 다른 뷰 컴포넌트들/레이어 표현들의 디코딩가능성에 영향을 미치는 일 없이 비트스트림으로부터 제거될 수도 있다. 이러한 뷰 컴포넌트들/레이어 표현들의 데이터를 캡슐화하는 NAL 유닛들을 제거하는 것은 비트스트림의 프레임 레이트를 감소시킬 수도 있다. 레이어 내의 다른 뷰 컴포넌트들/레이어 표현들에 대한 참조 없이 디코딩될 수도 있는 레이어 내의 뷰 컴포넌트들/레이어 표현들의 서브세트는 본 명세서에서 "서브-레이어" 또는 "시간 서브-레이어" 라고 지칭될 수도 있다.
NAL 유닛들은 NAL 유닛들의 시간 식별자 (즉, TemporalId) 들을 특정하는 temporal_id 신택스 엘리먼트들을 포함할 수도 있다. NAL 유닛의 시간 식별자는 NAL 유닛이 속하는 서브-레이어를 식별한다. 따라서, 비트스트림의 각각의 서브-레이어는 상이한 시간 식별자를 가질 수도 있다. 일반적으로, 레이어의 제 1 NAL 유닛의 시간 식별자가 동일한 레이어의 제 2 NAL 유닛의 시간 식별자보다 더 작은 경우, 제 1 NAL 유닛에 의해 캡슐화된 데이터는 제 2 NAL 유닛에 의해 캡슐화된 데이터에 대한 참조 없이 디코딩될 수도 있다.
비트스트림은 복수의 동작 포인트들과 연관될 수도 있다. 비트스트림의 각각의 동작 포인트는 시간 식별자 및 레이어 식별자들의 세트 (예를 들어, nuh_layer_id 값들의 세트) 와 연관된다. 레이어 식별자들의 세트는 OpLayerIdSet 로서 표시될 수도 있고 시간 식별자는 TemporalId 로서 표시될 수도 있다. NAL 유닛의 레이어 식별자가 동작 포인트의 레이어 식별자들의 세트에 있고 NAL 유닛의 시간 식별자가 동작 포인트의 시간 식별자 이하인 경우, NAL 유닛은 동작 포인트와 연관된다. 따라서, 동작 포인트는 비트스트림에서의 NAL 유닛들의 서브세트에 대응할 수도 있다.
위에서 도입된 바와 같이, 본 개시물은 ISO 베이스 미디어 파일 포맷 (ISOBMFF) 에 기초한 파일에의 비디오 콘텐츠의 저장에 관한 것이다. 구체적으로, 본 개시물은 다수의 코딩된 레이어들을 포함하는 비디오 스트림들을 저장하기 위한 다양한 기법들을 설명하고, 여기서 각각의 레이어는 스케일러블 레이어, 텍스처 뷰, 심도 뷰, 또는 다른 타입들의 레이어들 또는 뷰들일 수도 있다. 본 개시물의 기법들은, 예를 들어, MV-HEVC 비디오 데이터, SHVC 비디오 데이터, 3D-HEVC 비디오 데이터, 및/또는 다른 타입들의 비디오 데이터의 저장에 적용될 수도 있다.
파일 포맷들 및 파일 포맷 표준들이 이하 간단히 논의될 것이다. 파일 포맷 표준들은 MPEG-4 파일 포맷 (ISO/IEC 14496-14), 3GPP 파일 포맷 (3GPP TS 26.244) 및 AVC 파일 포맷 (ISO/IEC 14496-15, 이하 "ISO/IEC 14996-15") 을 포함하여, ISO 베이스 미디어 파일 포맷 (ISOBMFF, ISO/IEC 14496-12, 이하, "ISO/IEC 14996-12") 및 ISOBMFF 로부터 유도된 다른 파일 포맷 표준들을 포함한다. 따라서, ISO/IEC 14496-12 는 ISO 베이스 미디어 파일 포맷을 특정한다. 다른 문헌들은 특정 애플리케이션들을 위해 ISO 베이스 미디어 파일 포맷을 확장한다. 예를 들어, ISO/IEC 14496-15 는 ISO 베이스 미디어 파일 포맷에서의 NAL 유닛 구조화된 비디오의 운송을 설명한다. H.264/AVC 및 HEVC 뿐만 아니라 이들의 확장들은 NAL 유닛 구조화된 비디오의 예들이다. ISO/IEC 14496-15 는 H.264/AVC NAL 유닛들의 운송을 설명하는 섹션들을 포함한다. 부가적으로, ISO/IEC 14496-15 의 섹션 8 은 HEVC NAL 유닛들의 운송을 설명한다.
ISOBMFF 는 AVC 파일 포맷과 같은 많은 코덱 캡슐화 포맷들뿐만 아니라, MPEG-4 파일 포맷, 3GPP 파일 포맷 (3GP), 및 DVB 파일 포맷과 같은 많은 멀티미디어 컨테이너 포맷들에 대한 베이스로서 이용된다. 오디오 및 비디오와 같은 연속 매체들에 부가적으로, 이미지들과 같은 정적 매체들뿐만 아니라 메타데이터는 ISOBMFF 를 준수하는 파일에 저장될 수 있다. ISOBMFF 에 따라 구조화된 파일들은, 로컬 미디어 파일 플레이백, 원격 파일의 점진적 다운로딩, HTTP 를 통한 동적 적응 스트리밍 (DASH) 을 위한 세그먼트들, 스트리밍될 콘텐츠에 대한 컨테이너들 및 그의 패킷화 명령들, 및 수신된 실시간 미디어 스트림들의 레코딩을 포함하는, 많은 목적들을 위해 이용될 수도 있다. 따라서, 저장을 위해 원래 설계되었지만, ISOBMFF 는, 스트리밍에 대해, 예를 들어, 점진적 다운로드 또는 DASH 에 대해 가치있는 것으로 입증되었다. 스트리밍 목적들을 위해, ISOBMFF 에 정의된 무비 프래그먼트들이 이용될 수 있다.
HEVC 파일 포맷을 준수하는 파일은, 박스들이라고 불리는, 오브젝트들의 시리즈를 포함할 수도 있다. 박스는 고유한 타입 식별자 및 길이에 의해 정의된 오브젝트-배향된 빌딩 블록일 수도 있다. 예를 들어, 박스는, 4-문자 코딩된 박스 타입, 박스의 바이트 카운트, 및 페이로드를 포함하는, ISOBMFF 에서의 기본 신택스 구조일 수도 있다. 다시 말해, 박스는, 코딩된 박스 타입, 박스의 바이트 카운트, 및 페이로드를 포함하는, 신택스 구조일 수도 있다. 일부 경우들에서, HEVC 파일 포맷을 준수하는 파일에서의 모든 데이터는 박스들 내에 포함될 수도 있고, 박스에 있지 않은 파일에서는 어떠한 데이터도 없을 수도 있다. 따라서, ISOBMFF 파일은 박스들의 시퀀스로 이루어질 수도 있고, 박스들은 다른 박스들을 포함할 수도 있다. 예를 들어, 박스의 페이로드는 하나 이상의 부가적 박스들을 포함할 수도 있다. 본 개시물에서의 다른 곳에서 상세히 설명된 도 5 및 도 6 은, 본 개시물의 하나 이상의 기법들에 따른, 파일 내의 예시적인 박스들을 도시한다.
ISOBMFF 를 준수하는 파일은 다양한 타입들의 박스들을 포함할 수도 있다. 예를 들어, ISOBMFF 를 준수하는 파일은 파일 타입 박스, 미디어 데이터 박스, 무비 박스, 무비 프래그먼트 박스 등을 포함할 수도 있다. 이 예에서, 파일 타입 박스는 파일 타입 및 호환성 정보를 포함한다. 미디어 데이터 박스는 샘플들 (예를 들어, 코딩된 픽처들) 을 포함할 수도 있다. 무비 박스 ("moov") 는 파일에 존재하는 연속적인 매체 스트림들에 대한 메타데이터를 포함한다. 연속적인 매체 스트림들 각각은 트랙으로서 파일에 표현될 수도 있다. 예를 들어, 무비 박스는 무비에 관한 메타데이터 (예를 들어, 샘플들 사이의 논리 및 타이밍 관계들, 그리고 또한 샘플들의 로케이션들에 대한 포인터들) 를 포함할 수도 있다. 무비 박스들은 몇몇 타입들의 서브-박스들을 포함할 수도 있다. 무비 박스에서의 서브-박스들은 하나 이상의 트랙 박스들을 포함할 수도 있다. 트랙 박스는 무비의 개별 트랙에 관한 정보를 포함할 수도 있다. 트랙 박스는 단일 트랙의 전체 정보를 특정하는 트랙 헤더 박스를 포함할 수도 있다. 부가적으로, 트랙 박스는 미디어 정보 박스를 포함하는 미디어 박스를 포함할 수도 있다. 미디어 정보 박스는 트랙에서의 미디어 샘플들의 데이터 인덱싱을 포함하는 샘플 테이블 박스를 포함할 수도 있다. 샘플 테이블 박스에서의 정보는 시간적으로 샘플들을, 그리고, 트랙의 샘플들 각각에 대해, 타입, 사이즈, 컨테이너, 및 오프셋을 샘플의 그 컨테이너 내에 로케이팅시키는데 시용될 수도 있다. 따라서, 트랙에 대한 메타데이터는 트랙 박스 ("trak") 에 인클로징되는 한편, 트랙의 미디어 콘텐츠는 미디어 데이터 박스 ("mdat") 에 또는 직접적으로 별개의 파일에 인클로징된다. 트랙들에 대한 미디어 콘텐츠는 오디오 또는 비디오 액세스 유닛들과 같은 샘플들의 시퀀스를 포함한다 (예를 들어, 그 샘플들의 시퀀스로 이루어진다).
ISOBMFF 는 다음의 타입들의 트랙들을 특정한다: 기본 미디어 스트림을 포함하는 미디어 트랙, 미디어 송신 명령들을 포함하거나 또는 수신된 패킷 스트림을 표현하는 힌트 트랙, 및 시간-동기화된 메타데이터를 포함하는 타이밍된 메타데이터 트랙. 각각의 트랙에 대한 메타데이터는 샘플 디스크립션 엔트리들의 리스트를 포함하고, 이 샘플 디스크립션 엔트리들 각각은 트랙에 이용된 코딩 또는 캡슐화 포맷 및 그 포맷을 프로세싱하는데 필요한 초기화 데이터를 제공한다. 각각의 샘플은 트랙의 샘플 디스크립션 엔트리들 중 하나와 연관된다.
ISOBMFF 는 다양한 메커니즘들로 샘플-특정 메타데이터를 특정하는 것을 가능하게 한다. 샘플 테이블 박스 ("stbl") 내의 특정 박스들은 공통된 필요들에 응답하도록 표준화되었다. 예를 들어, 동기화 샘플 박스 (Sync Sample box; "stss") 는 샘플 테이블 박스 내의 박스이다. 동기화 샘플 박스는 트랙의 랜덤 액세스 샘플들을 리스팅하는데 이용된다. 본 개시물은 동기화 샘플로서 동기화 샘플 박스에 의해 리스팅된 샘플을 지칭할 수도 있다. 다른 예에서, 샘플 그룹화 메커니즘은 파일에서의 샘플 그룹 디스크립션 엔트리로서 특정된 동일한 속성을 공유하는 샘플들의 그룹들로의 4-문자 그룹화 타입에 따른 샘플들의 맵핑을 가능하게 한다. 몇몇 그룹화 타입들은 ISOBMFF 에 특정되었다.
샘플 테이블 박스는 하나 이상의 SampleToGroup 박스들 및 하나 이상의 샘플 그룹 디스크립션 박스들 (즉, SampleGroupDescription 박스들) 을 포함할 수도 있다. SampleToGroup 박스는, 샘플 그룹의 연관된 디스크립션과 함께, 샘플이 속하는 샘플 그룹을 결정하는데 이용될 수도 있다. 다시 말해, SampleToGroup 박스는 샘플이 속하는 그룹을 나타낼 수도 있다. SampleToGroup 박스는 "sbgp" 의 박스 타입을 가질 수도 있다. SampleToGroup 박스는 그룹화 타입 엘리먼트 (예를 들어, grouping_type) 를 포함할 수도 있다. 그룹화 타입 엘리먼트는 샘플 그룹화의 타입 (즉, 샘플 그룹들을 형성하는데 이용된 기준) 을 식별하는 정수일 수도 있다. 더욱이, SampleToGroup 박스는 하나 이상의 엔트리들을 포함할 수도 있다. SampleToGroup 박스에서의 각각의 엔트리는 트랙에서의 연속적인 샘플들의 상이한, 논-오버래핑 시리즈와 연관될 수도 있다. 각각의 엔트리는 샘플 카운트 엘리먼트 (예를 들어, sample_count) 및 그룹 디스크립션 인덱스 엘리먼트 (예를 들어, group_description_index) 를 나타낼 수도 있다. 엔트리의 샘플 카운트 엘리먼트는 엔트리와 연관된 샘플들의 수를 나타낼 수도 있다. 다시 말해, 엔트리의 샘플 카운트 엘리먼트는 다수의 연속적인 샘플들에 동일한 샘플 그룹 디스크립터를 제공하는 정수일 수도 있다. 그룹 디스크립션 인덱스 엘리먼트는 엔트리와 연관된 샘플들의 디스크립션을 포함하는 SampleGroupDescription 박스를 식별할 수도 있다. 다수의 엔트리들의 그룹 디스크립션 인덱스 엘리먼트들은 동일한 SampleGroupDescription 박스를 식별할 수도 있다.
현재 파일 포맷 설계들은 하나 이상의 문제들을 가질 수도 있다. ISOBMFF 에 기초하여 특정 비디오 코덱의 비디오 콘텐츠를 저장하기 위해, 그 비디오 코덱에 대한 파일 포맷 명세가 필요할 수도 있다. MV-HEVC 및 SHVC 와 같은 다수의 레이어들을 포함하는 비디오 스트림들의 저장을 위해, SVC 및 MVC 파일 포맷으로부터의 일부 개념들을 재이용하는 것이 가능하다. 그러나, 많은 부분들이 SHVC 및 MV-HEVC 비디오 스트림들에 대해 직접적으로 이용될 수 없다. HEVC 파일 포맷의 직접 적용은 적어도 다음의 결점들을 갖는다: SHVC 및 MV-HEVC 비트스트림들은, 베이스 레이어에 IRAP 픽처를 포함하지만 또한 다른 레이어들에 다른 논-IRAP 픽처들을 포함할 수도 있거나 또는 그 반대의 경우를 포함하는 액세스 유닛으로 시작할 수 있다. 동기화 샘플은 현재, 랜덤 액세스에 대해 이러한 포인트의 표시를 허용하지 않는다.
본 개시물은 위의 문제들에 대한 잠재적인 해결책들을 설명할 뿐만 아니라, 다른 잠재적인 개선들을 제공하여, 다수의 레이어들을 포함하는 비디오 스트림들의 효율적이고 유연한 저장을 가능하게 한다. 본 개시물에 설명된 기법들은 잠재적으로 임의의 비디오 코덱에 의해 코딩된 이러한 비디오 콘텐츠의 저장을 위한 임의의 파일 포맷에 적용하지만, 디스크립션은 ISO/IEC 14496-15 의 조항 8 에 특정된 HEVC 파일 포맷에 기초한 SHVC 및 MV-HEVC 비디오 스트림들의 저장에 특정된다.
본 개시물의 기법들의 상세화된 구현이 아래에 상세히 논의될 것이다. 본 개시물의 기법들은 다음 예들에서 요약될 수도 있다. 다음 예들은 개별적으로 이용될 수도 있다. 대안적으로, 다음 예들의 다양한 조합들이 함께 이용될 수 있다.
제 1 예에서, Compressorname 은 VisualSampleEntry 박스에 특정된 값이다. ISO/IEC 14496-12 의 섹션 8.5.2.1 에 설명된 바와 같이, VisualSampleEntry 박스는 이용된 코딩 타입에 관한 상세화된 정보 및 그 코딩에 필요한 임의의 초기화 정보를 저장하는 비디오 트랙들에 대한 샘플 테이블 박스의 타입이다. Compressorname 은 미디어 데이터를 생성하는데 이용되는 컴프레서의 명칭을 나타낸다. 비디오 디코더는 파일에서의 비디오 데이터를 디코딩하는 방법 및/또는 디코딩할지 여부를 결정하기 위해 Compressorname 의 값을 이용할 수도 있다. ISO/IEC 14496-12 의 섹션 8.5.3 에 정의된 바와 같이, Compressorname 은 고정된 32-바이트 필드에서 포맷팅되는데, 제 1 바이트는 디스플레이될 바이트들의 수로 설정되고, 그 다음에 디스플레이가능한 데이터의 그 바이트들의 수로 설정되고, 그리고 그 후에 (사이즈 바이트를 포함하여) 총 32 바이트들을 완료하기 위해 패딩한다.
제 1 예는 Compressorname 의 2 개의 새로운 값들을 허용한다. Compressorname 의 제 1 의 새로운 값은 SHVC 비디오 스트림들을 포함하는 파일에 대한 "
Figure pct00001
코딩" 이다. Compressorname 의 제 2 의 새로운 값은 MV-HEVC 비디오 스트림들을 포함하는 파일에 대한 "
Figure pct00002
코딩" 이다. 이 제 1 예는 아래의 섹션들 9.5.3.1.3 및 10.5.3.2 에 도시된 바와 같이 구현될 수도 있다.
간단히 상술된 바와 같이, 파일은 파일의 트랙들에 대한 메타데이터를 포함하는 무비 박스를 포함할 수도 있다. 무비 박스는 파일의 각각의 트랙에 대한 트랙 박스를 포함할 수도 있다. 더욱이, 트랙 박스는 트랙의 미디어의 특성 정보를 선언하는 모든 오브젝트들을 포함하는 미디어 정보 박스를 포함할 수도 있다. 미디어 정보 박스는 샘플 테이블 박스를 포함할 수도 있다. 샘플 테이블 박스는 샘플-특정 메타데이터를 특정할 수도 있다. 예를 들어, 샘플 테이블 박스는 복수의 샘플 디스크립션 박스들을 포함할 수도 있다. 샘플 디스크립션 박스들 각각은 샘플 엔트리의 인스턴스일 수도 있다. ISO/IEC 14496-12 에서, VisualSampleEntry 클래스의 인스턴스들은 샘플 엔트리들로서 이용될 수도 있다. 특정 비디오 코딩 표준들에 특정된 샘플 엔트리들의 클래스들은 VisualSampleEntry 클래스를 확장할 수도 있다. 예를 들어, HEVC 에 특정된 샘플 엔트리들의 클래스는 VisualSampleEntry 클래스를 확장할 수도 있다. 따라서, 본 개시물은 상이한 샘플 엔트리 타입들로서 VisualSampleEntry 클래스를 확장한 상이한 클래스들을 지칭할 수도 있다.
제 2 예에서, 2 개의 새로운 샘플 엔트리 (즉, "샘플") 타입들, 즉, "hev2" 및 "hvc2" 가 HEVC 트랙들에 대해 정의된다. 2 개의 새로운 샘플 엔트리 타입들은 집합자 (aggregator) 들 및 추출자 (extractor) 들의 이용을 허용한다. 일반적으로, 집합자는 다수의 NAL 유닛들을 단일의 집합된 데이터 유닛의 형태로 집합시킨다. 예를 들어, 집합자는 다수의 NAL 유닛들을 포함할 수도 있거나 및/또는 다수의 NAL 유닛들을 가상으로 연쇄시킬 수도 있다. 일반적으로, 추출자는 다른 트랙들로부터 획득된 데이터의 타입을 나타낸다. 예를 들어, 다수의 트랙들을 통한 미디어 데이터 (예를 들어, HEVC 데이터) 의 저장은 콤팩트한 파일들을 발생시킬 수도 있는데 이는 미디어 데이터에 NAL 유닛으로서 임베딩되는 추출자들이라고 불리는 비교적 작은 데이터 유닛들을 이용하여 미디어 트랙들에 걸쳐 데이터를 참조하는 것에 의해 데이터의 복제가 회피될 수도 있기 때문이다. 이 제 2 예는 아래의 섹션들 9.5.3.1.1, 9.5.3.1.2, 9.5.4, 9.5.6, 10.4.5, 10.5.3.1.1.1, 및 10.5.3.2 에 도시된 바와 같이 구현될 수도 있다.
제 3 예에서, 멀티-레이어 비트스트림에 대한 파라미터 세트들의 저장에 대한 특정 요건과 연관된 샘플 엔트리의 정의가 수정되어 특정 레이어 또는 특정 동작 포인트로의 편리한 랜덤 액세싱을 가능하게 한다. 예를 들어, SHVC, MV-HEVC, 또는 3D-HEVC 트랙이 샘플 엔트리를 가질 때 그리고 샘플이 적어도 하나의 IRAP 픽처를 포함할 때, 그 샘플을 디코딩하는데 필요한 모든 파라미터들은 샘플 엔트리 또는 그 샘플 자체에 포함될 것이다. 이 예에서, 샘플이 어떠한 IRAP 픽처들도 포함하지 않을 때, 그 샘플을 디코딩하는데 필요한 모든 파라미터 세트들 (예를 들어, VPS들, SPS들, PPS들) 은, 적어도 하나의 IRAP 픽처를 포함하는 이전 샘플 이후부터 그 샘플 자체까지의 샘플들 중 임의의 샘플에 또는 샘플 엔트리에 포함될 것이다. 이 제 3 예는 아래의 섹션 9.5.3.1.1 에 도시된 바와 같이 구현될 수도 있다.
제 3 예의 하나의 대안적인 버전에서, SHVC, MV-HEVC, 또는 3D-HEVC 트랙이 샘플 엔트리를 가질 때 그리고 샘플에서의 픽처가 IRAP 픽처일 때, 그 픽처를 디코딩하는데 필요한 모든 파라미터 세트들은 샘플 엔트리에 또는 그 샘플 자체에 포함될 것이다. 더욱이, 이 대안에서, 샘플이 어떠한 IRAP 픽처들도 포함하지 않을 때, 픽처를 디코딩하는데 필요한 모든 파라미터 세트들은, 동일한 레이어에서의 적어도 한 IRAP 픽처를 포함하는 이전 샘플 후부터 그 샘플 자체까지의 샘플들 중 임의의 샘플에 또는 샘플 엔트리에 포함될 것이다.
제 4 예에서, 기존 샘플 엔트리 타입들의 다음 경우들이 정의된다. 이 예에서, 샘플 엔트리 타입들 "hev1" 및 "hvc1" 에 속하는 샘플들은, HEVC VCL NAL 유닛들을 갖는 SHVC 및 MV-HEVC 트랙들에 대한 HEVC, SHVC, 및 MV-HEVC 구성들을 포함한다. 더욱이, SHVC 및 MV-HEVC 구성들을 포함하는 샘플 엔트리 타입들 "hev1" 및 "hvc1" 은, HEVC NAL 유닛들을 갖지 않지만 VCL NAL 유닛들을 갖는 SHVC 및 MV-HEVC 트랙들에 대해 정의되는데 nuh_layer_id 는 0 보다 더 크고, 여기서 추출자들은 허용되지 않는다. 이 제 4 예는 아래의 섹션 9.5.3.1.1 에 도시된 바와 같이 구현될 수도 있다.
제 5 예에서, SHVC, MV-HEVC, 또는 3D-HEVC 트랙에서의 동기화 샘플은 모든 IRAP 픽처들인 픽처들을 포함하는 샘플인 것으로 정의된다. 이 제 5 예는 아래의 섹션들 9.5.5 및 10.4.3 에 도시된 바와 같이 구현될 수도 있다. 아래의 섹션 9.5.5 에 특정된 바와 같이, SHVC 샘플은, HEVC WD 에 정의된 바와 같이, 액세스 유닛에서의 각각의 코딩된 픽처가 IRAP 픽처인 경우에 동기화 샘플인 것으로 간주된다. 더욱이, 아래의 섹션 10.4.3 에 특정된 바와 같이, MV-HEVC 샘플은, HEVC WD 에 정의된 바와 같이, 액세스 유닛에서의 각각의 코딩된 픽처가 RASL 픽처들을 갖지 않는 IRAP 픽처인 경우에 동기화 샘플인 것으로 간주된다.
따라서, 제 5 예에서, 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는 멀티-레이어 비디오 데이터의 트랙의 동기화 샘플들을 기록하는 동기화 샘플 테이블을 포함하는 동기화 샘플 박스를 생성할 수도 있다. 트랙의 동기화 샘플들 각각은 트랙의 랜덤 액세스 샘플이다. 액세스 유닛에서의 각각의 코딩된 픽처가 IRAP 픽처인 경우, 스케일러블 비디오 코딩 샘플이 동기화 샘플이다. 액세스 유닛에서의 각각의 코딩된 픽처가 RASL 픽처들을 갖지 않는 IRAP 픽처인 경우, 멀티-뷰 비디오 코딩 샘플이 동기화 샘플이다.
제 5 예의 대안적인 버전에서, SHVC, MV-HEVC, 또는 3D-HEVC 트랙에서의 동기화 샘플은 RASL 픽처들을 갖지 않는 모든 IRAP 픽처들인 픽처들을 포함하는 샘플인 것으로 정의된다. 동기화 샘플 테이블은 동기화 샘플들을 기록한다. 옵션적으로, 동기화 샘플 샘플 그룹은 동기화 샘플들을 기록한다. 다시 말해, 동기화 샘플 샘플 그룹은 동기화 샘플들을 식별하는 정보를 포함한다.
제 6 예에서, "rap" 샘플 그룹은 (RASL 픽처들을 갖거나 RASL 픽처들을 갖지 않는) 모든 IRAP 픽처들인 픽처들을 포함하는 이들 샘플들을 포함하는 것으로 정의된다. 이 제 6 예는 아래의 섹션 9.5.5 에 도시된 바와 같이 구현될 수도 있다. 대안적으로, 제 6 예에서, "rap" 샘플 그룹은 모든 IRAP 픽처들인 픽처들을 포함하는 이들 샘플들을 포함하지만 동기화 샘플들로서 나타낸 이들 샘플들을 배제하는 것으로 정의된다.
제 7 예에서, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록하는 새로운 샘플 그룹 또는 새로운 박스는, 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들이든지 간에, 샘플에서의 IRAP 픽처들에서의 VCL NAL 유닛들의 NAL 유닛 타입이 정의되고, 아닌 경우에는, 샘플에서의 IRAP 픽처들의 수, 및 샘플에서의 이들 IRAP 픽처들의 레이어 ID 값들이 정의된다.
따라서, 이 제 7 예에서, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛일 수도 있다. 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 파일에, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록하는 부가적 박스를 생성한다.
이 제 7 예는 부분적으로 아래의 섹션 9.5.5.1 에 도시된 바와 같이 구현될 수도 있다. 아래의 섹션 9.5.5.1 에 도시된 바와 같이, 랜덤 액세스가능 샘플 엔트리 클래스는 VisualSampleGroupEntry 클래스를 확장한다. 랜덤 액세스가능 샘플 엔트리 클래스의 인스턴스들 (즉, 랜덤 액세스가능 샘플 엔트리 박스들) 은 적어도 하나의 IRAP 픽처를 포함하는 샘플들에 대응한다. 더욱이, 랜덤 액세스가능 샘플 엔트리 박스는, 대응하는 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 특정하는 all_pics_are_IRAP 값을 포함한다.
따라서, 제 7 예에서, 파일 생성 디바이스 (34) 는 값 (예를 들어, all_pics_are_IRAP) 을 포함하는 샘플 엔트리를 생성할 수도 있다. 1 과 동일한 값은 샘플에서의 각각의 코딩된 픽처가 IRAP 픽처임을 특정한다. 0 과 동일한 값은 샘플에서의 코딩된 픽처 모두가 IRAP 픽처들은 아닌 것임을 특정한다.
더욱이, 제 7 예에 따르면, 샘플의 코딩된 픽처들 모두가 IRAP 픽처들은 아닐 때, 파일 생성 디바이스 (34) 는, 샘플에 대응하는 샘플 엔트리에, 샘플 그룹의 각각의 샘플에서의 IRAP 픽처들의 수를 나타내는 값을 포함시킬 수도 있다. 부가적으로, 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들은 아닐 때, 파일 생성 디바이스 (34) 는, 샘플에 대응하는 샘플 엔트리에, 샘플에서의 IRAP 픽처들의 레이어 식별자들을 나타내는 값들을 포함시킬 수도 있다.
대안적으로, 제 7 예에서, 새로운 샘플 그룹 또는 새로운 박스는 이러한 샘플들을 기록하지만 "rap" 샘플 그룹의 멤버들 또는 동기화 샘플들로서 나타낸 것들을 배제한다.
이 제 7 예는 ISOBMFF 또는 그의 기존 확장들을 이용하여 멀티-레이어 비디오 데이터가 저장될 때 생길 수도 있는 하나 이상의 문제들을 해결할 수도 있다. 예를 들어, 단일 레이어 비디오 코딩에서, 통상적으로 액세스 유닛 당 단일의 코딩된 픽처만이 존재한다. 그러나, 멀티-레이어 비디오 코딩에서는, 통상적으로 액세스 유닛 당 2 개 이상의 코딩된 픽처가 존재한다. ISOBMFF 또는 그의 기존 확장들은 어떤 샘플들이 하나 이상의 IRAP 픽처들을 포함하는지를 나타내는 방법을 제공하지 않는다. 이것은 파일에 랜덤 액세스 포인트들을 로케이팅시키기 위한 또는 레이어 스위칭을 수행하기 위한 컴퓨팅 디바이스의 능력을 방해할 수도 있다. 예를 들어, 샘플들 중 어떤 것이 하나 이상의 IRAP 픽처들을 포함하는지를 나타내는 정보의 부존재시에, 컴퓨팅 디바이스는 액세스 유닛이 랜덤 액세스 포인트로서 및/또는 레이어 스위칭을 위해 이용될 수 있는지 여부를 결정하기 위해 NAL 유닛들을 파싱하고 해석할 필요가 있을 수도 있다. NAL 유닛들을 파싱하고 해석하는 것은 컴퓨팅 디바이스에 복잡도를 부가시킬 수도 있고 시간 및 프로세싱 리소스들을 소모시킬 수도 있다. 더욱이, 랜덤 액세스 및/또는 레이어 스위칭을 수행하는 일부 컴퓨팅 디바이스들, 예컨대 스트리밍 서버들은, NAL 유닛들을 파싱 또는 해석하도록 구성되지 않는다.
제 8 예에서, 서브-샘플의 새로운 타입의 도입이 포함되고, 여기서 각각의 서브-샘플은 하나의 코딩된 픽처 및 그의 연관된 논-VCL NAL 유닛들을 포함한다. 이 제 8 예는 아래의 섹션 9.5.8 에 도시된 바와 같이 구현될 수도 있다. 따라서, 이 제 8 예에서, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이다. 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 파일에, 서브-샘플 정보 박스에 주어진 서브-샘플 정보의 타입을 특정하는 플래그들을 포함하는 서브-샘플 정보 박스를 생성한다. 플래그들이 특정 값을 가질 때, 서브-샘플 정보 박스에 대응하는 서브-샘플은, 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함한다.
이 제 8 예는 ISOBMFF 또는 그의 기존 확장들을 이용하여 멀티-레이어 비디오 데이터가 저장될 때 생길 수도 있는 하나 이상의 문제들을 해결할 수도 있다. 예를 들어, 멀티-레이어 비디오 코딩에서, 샘플 당 다수의 코딩된 픽처들이 존재할 수도 있다. 예를 들어, 각각의 레이어에 대한 샘플에 하나 이상의 픽처들이 존재할 수도 있다. 그러나, H.264/AVC 및 HEVC 에 대한 ISOBMFF 의 확장에서, 서브-샘플 정보 박스는 샘플이 다수의 픽처들을 포함할 때 샘플 내의 개별 픽처들에 관한 정보를 제공하지 않는다. 이 제 8 예의 기법들은 단지 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 논-VCL NAL 유닛들을 포함하는 서브-샘플에 관한 정보를 제공하는 서브-샘플 정보 박스의 새로운 타입을 제공하는 것에 의해 이 문제를 해결할 수도 있다. 파일 구조에 개별 코딩된 픽처에 관한 정보를 제공하는 것은, 코딩된 픽처와 연관된 NAL 유닛들 내에 이러한 정보를 단지 제공하는 것과는 대조적으로, 컴퓨팅 디바이스로 하여금, NAL 유닛들을 해석해야 하는 일 없이 코딩된 픽처에 관한 정보를 결정할 수 있게 할 수도 있다. 일부 경우들에서, 컴퓨팅 디바이스의 복잡도를 감소시키거나 및/또는 컴퓨팅 디바이스의 스루풋을 증가시키기 위해, 컴퓨팅 디바이스는 NAL 유닛들을 해석하도록 구성되지 않는다. 컴퓨팅 디바이스가 파일에 저장된 NAL 유닛들을 스트리밍하고 있는 일부 예들에서, 컴퓨팅 디바이스는 서브-샘플 정보 박스에서의 정보를 이용하여, 서브-샘플의 NAL 유닛들을 클라이언트 디바이스에 포워딩할지 여부를 결정할 수도 있다.
제 9 예는 멀티-레이어 맥락에서 논-출력 샘플들의 핸들링에 관한 것이다. 구체적으로, 제 9 예에서, 액세스 유닛이 1 과 동일한 pic_output_flag 를 갖는 일부 코딩된 픽처들 그리고 0 과 동일한 pic_output_flag 를 갖는 일부 다른 코딩된 픽처들을 포함할 때, 각각의 트랙 내에서 각각의 샘플에서의 코딩된 픽처들 모두가 동일한 값의 pic_output_flag 를 갖도록 적어도 2 개의 트랙들이 스트림을 저장하는데 이용되어야 한다. 이 제 9 예는 아래의 섹션 9.5.9 에 도시된 바와 같이 구현될 수도 있다.
따라서, 이 제 9 예에서, 파일 생성 디바이스 (34) 는 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성할 수도 있다. 미디어 콘텐츠는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이다. 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 1 과 동일한 픽처 출력 플래그 (예를 들어, pic_output_flag) 를 갖는 코딩된 픽처 및 0 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 파일 생성 디바이스 (34) 는 적어도 2 개의 트랙들을 이용하여 파일에 비트스트림을 저장할 수도 있다. 적어도 2 개의 트랙들로부터의 각각의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다.
이 제 9 예는 ISOBMFF 또는 그의 기존 확장들을 이용하여 멀티-레이어 비디오 데이터가 저장될 때 생길 수도 있는 하나 이상의 문제들을 해결할 수도 있다. 예를 들어, 단일 트랙이 0 과 동일한 픽처 출력 플래그들 및 1 과 동일한 픽처 출력 플래그들을 갖는 코딩된 픽처들을 저장하도록 이용되었다면, 다양한 파일 포맷팅 룰들이 위반될 것이다. 예를 들어, 파일 포맷팅 룰들은 통상적으로, 시간 인스턴트 당 트랙에 단지 하나의 샘플만이 존재함을 요구한다. 단일 트랙이 0 과 동일한 픽처 출력 플래그들 및 1 과 동일한 픽처 출력 플래그들을 갖는 코딩된 픽처들을 저장하였다면, 시간 인스턴트 당 트랙에 다수의 샘플들이 존재할 것이다. 픽처 출력 플래그의 상이한 값들을 갖는 코딩된 픽처들을 파일의 상이한 트랙들에 있는 것으로 강제시키는 것은 이 문제를 해결할 수도 있다.
본 개시물의 일부 기법들의 예시적인 구현이 아래에 설명된다. 아래에 설명된 예시적인 구현은 MPEG 출력 문헌 W13478 에서의 14496-15 의 가장 최근에 통합된 명세에 기초한다. 부록 A 에 대한 변경들 (언더라인으로 도시됨) 및 부가된 섹션들 (SHVC 에 대한 섹션 9 및 MV-HEVC 에 대한 섹션 10) 이 아래에 포함된다. 다시 말해, 본 개시물의 특정 예들은 ISO/IEC 14496-15 의 부록 A 를 수정할 수도 있고 ISO/IEC 14496-15 에 섹션들 9 및/또는 10 을 부가할 수도 있다. 언더라인 및 더블 언더라인으로 도시된 텍스트는 본 개시물의 예들에 대해 특정 관련성이 있을 수도 있다. SHVC 라는 용어가 본 명세서에서 설명된 예들의 다양한 장소들에서 사용되지만, 본 개시물의 설계는 실제로, 명시적으로 달리 언급되지 않는 한, SHVC 코덱을 지원하기 위한 것만이 아니라, 그 대신에 MV-HEVC, 3D-HEVC 를 포함하는 모든 멀티-레이어 코덱이 지원될 수 있다.
9 SHVC 기본 스트림들 및 샘플 정의들
9.1 도입부
이 조항은 SHVC 데이터의 저장 포맷을 특정한다. 이것은 조항 8 에서 HEVC 의 저장 포맷의 정의들을 확장한다.
이 조항 및 부록들 A 내지 D 에 정의된, SHVC 콘텐츠의 저장을 위한 파일 포맷은, ISO 베이스 미디어 파일 포맷 및 플레인 (plain) HEVC 파일 포맷 (즉, 조항 8 에 특정된 파일 포맷) 의 기존 능력들을 이용한다. 부가적으로, 다른 것들 중에서도, SHVC-특정 피처들을 지원하기 위한 다음 구조들 또는 확장들이 이용된다.
집합자:
NAL 유닛들의 불규칙적인 패턴들을 집합된 데이터 유닛들의 규칙적인 패턴들로 변경하는 것에 의해 NAL 유닛들의 효율적인 스케일러블 그룹화를 가능하게 하기 위한 구조.
추출자:
미디어 데이터를 포함하는 것보다 다른 트랙들로부터의 NAL 유닛들의 효율적인 추출을 가능하게 하기 위한 구조.
시간 메타데이터 스테이트먼트들:
미디어 샘플들의 시간-정렬된 정보를 저장하기 위한 구조들.
HEVC 호환성:
HEVC 호환가능 베이스 레이어가 임의의 플레인 HEVC 파일 포맷 준수 판독기에 의해 이용될 수 있도록, HEVC 호환가능 방식으로 SHVC 비트스트림을 저장하기 위한 프로비전.
9.2 기본 스트림 구조
SHVC 스트림들은 SHVC 비디오 기본 스트림의 다음 정의를 갖는 8.2 에 따라 저장된다:
Figure pct00003
SHVC 비디오 기본 스트림들은 모든 비디오 코딩 관련 NAL 유닛들 (즉, 이들 NAL 유닛들은 비디오 데이터를 포함하거나 또는 비디오 구조를 시그널링함) 을 포함할 것이고, 논-비디오 코딩 관련 NAL 유닛들 예컨대 SEI 메시지들 및 액세스 유닛 구분자 NAL 유닛들을 포함할 수도 있다. 또한 집합자들 (A.2 참조) 또는 추출자들 (A.3 참조) 이 존재할 수도 있다. 집합자들 및 추출자들은 이 국제 표준에서 정의된 바와 같이 프로세싱될 것이다 (예를 들어, 파일에 액세스하는 동안 출력 버퍼에 직접적으로 배치되어서는 안된다). 명백히 금지되지 않은 다른 NAL 유닛들이 존재할 수도 있고, 이들이 인지되지 않은 경우, 이들은 무시되어야 한다 (예를 들어, 파일을 액세스하는 동안 출력 버퍼에 배치되어서는 안된다).
SHVC 스트림들은 연관된 파라미터 세트 스트림들을 이용하여 저장되어서는 안된다.
0 과 동일한 nuh_layer_id 를 갖는 VCL NAL 유닛들, 0 보다 더 큰 nuh_layer_id 를 갖는 VCL NAL 유닛들, 및 SHVC 비디오 기본 스트림에 존재하는 논-VCL NAL 유닛들이 존재할 수도 있다. 부가적으로, SHVC 비디오 기본 스트림에 존재하는 추출자 NAL 유닛들 및 집합자 NAL 유닛들이 존재할 수도 있다.
9.3 플레인 HEVC 파일 포맷의 이용
SHVC 파일 포맷은 조항 8 에 정의된 플레인 HEVC 파일 포맷의 확장이다.
9.4 샘플 및 구성 정의들
9.4.1 도입부
SHVC 샘플: SHVC 샘플은 또한 ISO/IEC 23008-2 의 부록 H 에 정의된 액세스 유닛이다.
9.4.2 규범적 순서 및 제약들
9.4.2.1 제약들
다음 제약들은 8.3.2 에서의 요건들에 부가적으로 SHVC 데이터에 적용된다.
Figure pct00004
VCL NAL 유닛들: 하나의 액세스 유닛에서의 모든 VCL NAL 유닛들은 조성 시간이 액세스 유닛에 의해 표현된 픽처의 조성 시간인 샘플에 포함될 것이다. SHVC 샘플은 적어도 하나의 VCL NAL 유닛을 포함할 것이다.
Figure pct00005
집합자들/추출자들: 집합자에 포함되거나 또는 추출자에 의해 참조되는 모든 NAL 유닛들의 순서는, 이들 NAL 유닛들이 집합자들/추출자들을 포함하지 않는 샘플에 존재했던 것처럼 정확히 디코딩 순서이다. 집합자 또는 추출자를 프로세싱한 후에, 모든 NAL 유닛들은 ISO/IEC 23008-2 에 특정된 바와 같이 유효한 디코딩 순서로 있어야 한다.
9.4.2.2 디코더 구성 레코드
8.3.3.1 에 정의된 디코더 구성 레코드가 SHVC 또는 HEVC 스트림 중 어느 하나로서 해석될 수 있는 스트림에 대해 이용될 때, HEVC 디코더 구성 레코드는 HEVC 호환가능 베이스 레이어의 속성들을 반영할 것이다, 예를 들어, 그 HEVC 디코더 구성 레코드는 HEVC 베이스 레이어를 디코딩하는데 필요한 파라미터 세트들만을 단지 포함할 것이다.
SHVCDecoderConfigurationRecord 는 HEVCDecoderConfigurationRecord 와 구조적으로 동일하다. 신택스는 다음과 같다:
aligned(8) class SHVCDecoderConfigurationRecord {
// HEVCDecoderConfigurationRecord 신택스 구조에서와 동일한 필드들
}
SHVCDecoderConfigurationRecord 에서의 필드들의 시맨틱스는 HEVCDecoderConfigurationRecord 에 대해 정의된 것과 동일하다.
9.5 ISO 베이스 미디어 파일 포맷으로부터의 유도
9.5.1 SHVC 트랙 구조
스케일러블 비디오 스트림은 파일에서 하나 이상의 비디오 트랙들에 의해 표현된다. 각각의 트랙은 스케일러블 스트림의 하나 이상의 동작 포인트들을 표현한다. 스케일러블 스트림은, 물론, 원한다면, 더욱 가늘어질 수도 있다.
최저 동작 포인트는 단지 0 과 동일한 nuh_layer_id 및 단지 0 과 동일한 TemporalId 를 갖는 NAL 유닛들을 포함하는 모든 동작 포인트들 중 하나인 것으로 하자. 최저 동작 포인트를 포함하는 트랙은 '스케일러블 베이스 트랙' 으로서 지명될 것이다. 동일한 스케일러블 인코딩된 정보의 부분인 다른 트랙들 모두는 타입 'sbas' (스케일러블 베이스) 의 트랙 참조에 의해 이 베이스 트랙에 링크될 것이다.
동일한 스케일러블 베이스 트랙을 공유하는 트랙들 모두는 스케일러블 베이스 트랙과 동일한 시간척도를 공유해야 한다.
9.5.2 데이터 공유 및 추출
상이한 트랙들은 논리적으로 데이터를 공유할 수도 있다. 이 공유는 다음의 2 개의 형태들 중 하나를 취할 수 있다:
a) 샘플 데이터는 하나의 트랙으로부터 다른 트랙으로 카피된다 (그리고 가능하다면 오디오와 같은 다른 데이터로 콤팩트하게 되거나 재-인터리빙된다). 추출의 용이를 위해, 이것은 보다 큰 전체 파일들을 생성하지만, 낮은 비트 레이트 데이터는 다른 소재로 콤팩트하게 되거나 및/또는 인터리빙될 수도 있다.
b) 파일이 판독되는 시간에 이러한 카피를 어떻게 수행할지에 대한 명령들이 존재할 수도 있다.
두 번째 경우에 대해, 추출자들 (A.3 에 정의됨) 이 이용된다.
9.5.3 SHVC 비디오 스트림 정의
9.5.3.1 샘플 엔트리 명칭 및 포맷
9.5.3.1.1 정의
타입들: 'hvc2', 'hev2', 'shc1', 'shv1', 'shcC'
컨테이너: 샘플 디스크립션 박스 ('stsd')
의무사항: 'hvc1', 'hev1', 'hvc2', 'hev2', 'shc1', 또는 'shv1' 샘플 엔트리는 의무적임
양: 하나 이상의 샘플 엔트리들이 존재할 수도 있음
샘플 엔트리 명칭이 'shc1' 일 때, array_completeness 의 디폴트 및 의무적 값은 파라미터 세트들의 모든 타입들의 어레이들에 대해 1 이고, 모든 다른 어레이들에 대해 0 이다. 샘플 엔트리 명칭이 'shv1' 일 때, array_completeness 의 디폴트 값은 모든 어레이들에 대해 0 이다.
샘플 엔트리 명칭이 'shv1' 일 때, 다음이 적용된다:
Figure pct00006
샘플이 ISO/IEC 23008-2 에 정의된 적어도 하나의 IRAP 픽처를 포함하는 경우, 그 샘플을 디코딩하는데 필요한 모든 파라미터 세트들은 샘플 엔트리에 또는 그 샘플 자체에 포함될 것이다.
Figure pct00007
그렇지 않다면 (샘플이 어떠한 IRAP 픽처도 포함하지 않음), 그 샘플을 디코딩하는데 필요한 모든 파라미터 세트들은, 적어도 하나의 IRAP 픽처를 포함하는 이전 샘플 이후부터 그 샘플 자체까지의 샘플들 중 임의의 샘플에 또는 샘플 엔트리에 포함될 것이다.
대안적으로, 샘플 엔트리 명칭이 'shv1' 일 때, 다음이 적용된다:
Figure pct00008
샘플에서의 코딩된 픽처가 ISO/IEC 23008-2 에 정의된 IRAP 픽처인 경우, 그 코딩된 픽처를 디코딩하는데 필요한 모든 파라미터 세트들은 샘플 엔트리에 또는 그 샘플 자체에 포함될 것이다.
Figure pct00009
그렇지 않다면 (샘플에서의 코딩된 픽처가 IRAP 픽처를 포함하지 않음), 그 코딩된 픽처를 디코딩하는데 필요한 모든 파라미터 세트들은, 그 코딩된 픽처와 동일한 레이어에서의 IRAP 픽처를 포함하는 이전 샘플 이후부터 그 샘플 자체까지의 샘플들 중 임의의 샘플에 또는 샘플 엔트리에 포함될 것이다.
SHVC 기본 스트림이 이용가능한 HEVC 호환가능 베이스 레이어를 포함한다면, HEVC 시각 샘플 엔트리 ('hvc1' 또는 'hev1') 가 이용될 것이다. 여기에서, 엔트리는 초기에 HEVC 구성 박스를 포함할 것이고, 가능하다면 그 다음에 아래에 정의된 SHVC 구성 박스를 포함할 것이다. HEVC 구성 박스는 HEVCDecoderConfigurationRecord 에 정의된 HEVC 호환가능 베이스 레이어에 관계된 프로파일, 티어, 레벨, 그리고 가능하다면 또한 파라미터 세트들을 기록한다. SHVC 구성 박스는 SHVCConfigurationBox 에 저장된 HEVCDecoderConfigurationRecord 에 정의된 SHVC 호환가능 인핸스먼트 레이어들을 포함하는 전체 스트림에 관계된 프로파일, 티어, 레벨, 그리고 가능하다면 또한 파라미터 세트들을 기록한다.
SHVC 기본 스트림이 이용가능한 HEVC 호환가능 베이스 레이어를 포함하지 않는다면, SHVC 시각 샘플 엔트리 ('shc1' 또는 'shv1') 가 이용될 것이다. SHVC 시각 샘플 엔트리는, 아래에 정의된 바와 같이, SHVC 구성 박스를 포함할 것이다. 이것은, 이 국제 표준에 정의된 바와 같이, SHVCDecoderConfigurationRecord 를 포함한다.
임의의 주어진 샘플 엔트리에서 SHVC 및 HEVC 구성들에서의 lengthSizeMinusOne 필드는 동일한 값을 가질 것이다.
추출자들 또는 집합자들은 'hvc1', 'hev1', 'hvc2', 'hev2', 'shc1', 또는 'shv1' 트랙들에서 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들에 대해 이용될 수도 있다. 'hvc2' 또는 'hev2' 샘플 엔트리에서의 'extra_boxes' 는 SHVCConfigurationBox 또는 다른 확장 박스들일 수도 있다.
주의 HEVC 호환성이 나타내어질 때, HEVC 베이스 레이어에 대한 비현실적 레벨을 나타내서 전체 스트림의 비트 레이트를 수용할 필요가 있을 수가 있는데, 이는 NAL 유닛들 모두가 HEVC 베이스 레이어에 포함된 것으로 간주되어 그에 따라 인지하지 못한 이들 NAL 유닛을 폐기할 것으로 예상되는 디코더에 제공될 수도 있기 때문이다. 이 경우는 'hvc1' 또는 'hev1' 샘플 엔트리가 이용되고 HEVC 및 SHVC 구성들 양쪽이 존재할 때 일어난다.
SHVCConfigurationBox 는 'hvc1' 또는 'hev1' 샘플 엔트리에 존재할 수도 있다. 이 경우, 아래의 HEVCSHVCSampleEntry 정의가 적용된다.
다음 테이블은 비디오 트랙에 대해 샘플 엔트리들의 모든 가능한 이용들, 구성들 및 SHVC 툴들을 도시한다 (다른 트랙에서 항상 이용되는 타이밍된 메타데이터를 제외함):
테이블 10 - HEVC 및 SHVC 트랙들에 대한 샘플 엔트리들의 이용
샘플 엔트리 명칭 구성 레코드들을 가짐 의미
'hvc1' 또는 'hev1' 단지 HEVC 구성만 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 플레인 HEVC 트랙; 추출자들 및 집합자들은 존재하지 않을 것이다.
'hvc1' 또는 'hev1' HEVC 및 SHVC 구성들 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들과 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들 양쪽 모두를 갖는 SHVC 트랙; 추출자들 및 집합자들은 존재할 수도 있다; 추출자들은 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 참조하지 않을 것이다; 집합자들은 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 포함하지 않을 것이지만 참조할 수도 있다.
'hvc2' 또는 'hev2' 단지 HEVC 구성만 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 플레인 HEVC 트랙; 추출자들은 존재하고 NAL 유닛들을 참조하도록 이용될 수도 있다; 집합자들은 존재하여 NAL 유닛들을 포함하고 참조할 수도 있다.
'hvc2' 또는 'hev2' HEVC 및 SHVC 구성들 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들과 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들 양쪽 모두를 갖는 SHVC 트랙; 추출자들 및 집합자들은 존재할 수도 있다; 추출자들은 임의의 NAL 유닛들을 참조할 수도 있다; 집합자들은 임의의 NAL 유닛들을 포함하는 것 및 참조하는 것 양쪽을 행할 수도 있다.
'shc1' 또는 'shv1' SHVC 구성 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 SHVC 트랙; 추출자들은 존재하고 NAL 유닛들을 참조하도록 이용될 수도 있다; 집합자들은 존재하여 NAL 유닛들을 포함하고 참조할 수도 있다.
9.5.3.1.2 신택스
Figure pct00010
9.5.3.1.3 시맨틱스
샘플 엔트리가 적용되는 스트림이 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 포함할 때, 베이스 클래스 VisualSampleEntry 에서의 Compressorname 은 추천되는 값 "
Figure pct00011
코딩" 이 이용된 컴프레서의 명칭을 나타낸다 (
Figure pct00012
은 11, 바이트에 있어서의 스트링 "SHVC 코딩" 의 길이이다).
9.5.4 SHVC 시각 폭 및 높이
0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 포함하는 스트림의 VisualSampleEntry 에서 기록된 시각 폭 및 높이는, 스트림이 타입 'hvc1', 'hev1', 'hvc2', 'hev2' 의 샘플 엔트리에 의해 설명되는 경우, HEVC 베이스 레이어의 시각 폭 및 높이이고; 그렇지 않으면, 그것은 전체 스트림을 디코딩하는 것에 의한 최상위 레이어의 디코딩된 픽처들의 시각 폭 및 높이이다.
9.5.5 동기화 샘플
SHVC 샘플은, ISO/IEC 23008-2 에 정의된 바와 같이, 액세스 유닛에서의 각각의 코딩된 픽처가 IRAP 픽처인 경우에 동기화 샘플인 것으로 간주된다. 동기화 샘플들은 동기화 샘플 테이블에 의해 기록되고, 부가적으로 동기화 샘플 샘플 그룹 및 'rap' 샘플 그룹에 의해 기록될 수도 있다.
9.5.5.1 랜덤 액세스가능 샘플 샘플 그룹
9.5.5.1.1 정의
그룹 타입들: 'ras'
컨테이너: 샘플 그룹 디스크립션 박스 ('ras')
의무사항: 없음
양: 0 개 이상
랜덤 액세스가능 샘플 샘플 그룹은 적어도 하나의 IRAP 픽처를 포함하는 샘플들을 식별한다.
9.5.5.1.2 신택스
Figure pct00013
9.5.5.1.3 시맨틱스
1 과 동일한 all_pics_are_IRAP 는 그룹의 각각의 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들임을 특정한다. 값이 0 과 동일할 때, 위의 제약이 적용될 수도 있고 또는 적용되지 않을 수도 있다.
IRAP_nal_unit_type 은 그룹의 각각의 샘플에서의 IRAP 픽처들의 NAL 유닛 타입을 특정한다. IRAP_nal_unit_type 의 값은 16 내지 23 의 범위에 있을 것이다.
num_IRAP_pics 는 그룹의 각각의 샘플에서의 IRAP 픽처들의 수를 특정한다.
IRAP_pic_layer_id 는 그룹의 각각의 샘플에서의 i 번째 IRAP 픽처의 nuh_layer_id 의 값을 특정한다.
9.5.6 랜덤 액세스 회복 포인트들 및 랜덤 액세스 포인트들에 대한 샘플 그룹들
타입 'hvc1', 'hev1', 'hvc2', 또는 'hev2' 의 샘플 엔트리에 의해 설명된 비디오 데이터에 대해, 랜덤 액세스 회복 샘플 그룹 및 랜덤 액세스 포인트 샘플 그룹은, 전체 비트스트림 상에서 동작하는 SHVC 디코더 (존재하는 경우) 및 HEVC 디코더 양쪽에 대해, 랜덤 액세스 회복 포인트들 및 랜덤 액세스 포인트들을 각각 식별한다.
타입 'shc1' 또는 'shv1' 의 샘플 엔트리에 의해 설명된 비디오 데이터에 대해, 랜덤 액세스 회복 샘플 그룹은 전체 SHVC 비트스트림에서 랜덤 액세스 회복을 식별하고, 랜덤 액세스 포인트 샘플 그룹은 전체 SHVC 비트스트림에서 랜덤 액세스 포인트들을 식별한다.
액세스 유닛에서의 각각의 코딩된 픽처들이 ISO/IEC 23008-2 에서 정의된 IRAP 픽처 (RASL 픽처들을 갖거나 또는 갖지 않음) 이고, ISO/IEC 14496-2 에서의 선두 샘플들이 모든 픽처들이 ISO/IEC 23008-2 에서 정의된 RASL 픽처들인 샘플들인 경우, SHVC 샘플은 랜덤 액세스 포인트로서 간주된다.
9.5.7 독립적 처분가능 샘플들 박스
그것이 HEVC 및 SHVC 양쪽이 호환가능한 트랙에서 이용된다면, 스테이트먼트들은 SHVC 데이터 (가능하다면 단지 HEVC 데이터만) 의 어떤 유효한 서브세트가 이용되든 유효하다는 것에 주의해야 한다. 정보가 변하는 경우 '알려지지 않은' 값들 (필드들 sample-depends-on, sample-is-depended-on, 및 sample-has-redundancy 의 값 0) 이 필요할 수도 있다.
9.5.8 SHVC 에 대한 서브-샘플의 정의
이 하위조항은 8.4.8 에서의 HEVC 의 서브-샘플의 정의를 확장한다.
SHVC 스트림에서의 서브-샘플 정보 박스 (ISO/IEC 14496-12 의 8.7.7) 의 이용을 위해, 서브-샘플은 아래에 특정된 바와 같이 서브-샘플 정보 박스의 플래그들의 값에 기초하여 정의된다. 이 박스의 존재는 옵션적이다; 그러나, SHVC 데이터를 포함하는 트랙에 존재하는 경우, 그것은 여기에 정의된 시맨틱스를 가질 것이다.
플래그들은 아래와 같이 이 박스에 주어진 서브-샘플 정보의 타입을 특정한다:
0: NAL-유닛-기반 서브-샘플들. 서브-샘플은 하나 이상의 인접한 NAL 유닛들을 포함한다.
1: 디코딩-유닛-기반 서브-샘플들. 서브-샘플은 정확히 하나의 디코딩 유닛을 포함한다.
2: 타일-기반 서브-샘플들. 서브-샘플은 하나의 타일 및 그 타일을 포함하는 VCL NAL 유닛(들) 의 연관된 논-VCL NAL 유닛들 (존재하는 경우) 을 포함하거나, 또는 하나 이상의 논-VCL NAL 유닛들을 포함한다.
3: CTU-로우-기반 서브-샘플들. 서브-샘플은 슬라이스 내의 하나의 CTU 로우 및 그 CTU 로우를 포함하는 VCL NAL 유닛(들) 의 연관된 논-VCL NAL 유닛들 (존재하는 경우) 을 포함하거나, 또는 하나 이상의 논-VCL NAL 유닛들을 포함한다. 이 서브-샘플 정보의 타입은 entropy_coding_sync_enabled_flag 가 0 과 동일할 때 이용되어서는 안된다.
4: 슬라이스-기반 서브-샘플들. 서브-샘플은 하나의 슬라이스 (여기서 각각의 슬라이스는 하나 이상의 슬라이스 세그먼트들을 포함할 수도 있고, 그 각각은 NAL 유닛이다) 및 연관된 논-VCL NAL 유닛들 (존재하는 경우) 을 포함하거나, 또는 하나 이상의 논-VCL NAL 유닛들을 포함한다.
5: 픽처-기반 서브-샘플들. 서브-샘플은 하나의 코딩된 픽처 및 연관된 논-VCL NAL 유닛들을 포함한다.
다른 값들의 플래그들이 예비된다.
subsample_priority 필드는 ISO/IEC 14496-12 에서 이 필드의 명세에 따른 값으로 설정될 것이다.
폐기가능 필드는 이 서브-필드가 폐기된 경우 이 샘플이 여전히 디코딩될 수 있는 경우에만 1 로 설정될 것이다 (예를 들어, 서브-샘플은 SEI NAL 유닛으로 이루어진다).
NAL 유닛의 첫 번째 바이트가 서브-샘플에 포함될 때, 선행하는 길이 필드는 또한 동일한 서브-샘플에 포함되어야 한다.
Figure pct00014
0 과 동일한 SubLayerRefNalUnitFlag 는 서브-샘플에서의 모든 NAL 유닛들이 ISO/IEC 23008-2 에 특정된 바와 같이 서브-레이어 논-참조 픽처의 VCL NAL 유닛들임을 나타낸다. 값 1 은 서브-샘플에서의 모든 NAL 유닛들이 ISO/IEC 23008-2 에 특정된 바와 같이 서브-레이어 참조 픽처의 VCL NAL 유닛들임을 나타낸다.
0 과 동일한 RapNalUnitFlag 는, 서브-샘플에서의 NAL 유닛들 중 어느 것도 ISO/IEC 23008-2 에 특정된 바와 같이 IDR_W_RADL, IDR_N_LP, CRA_NUT, BLA_W_LP, BLA_W_RADL, BLA_N_LP, RSV_IRAP_VCL22, 또는 RSV_IRAP_VCL23 과 동일한 nal_unit_type 을 갖지 않음을 나타낸다. 값 1 은, 서브-샘플에서의 모든 NAL 유닛들이 ISO/IEC 23008-2 에 특정된 바와 같이 IDR_W_RADL, IDR_N_LP, CRA_NUT, BLA_W_LP, BLA_W_RADL, BLA_N_LP, RSV_IRAP_VCL22, 또는 RSV_IRAP_VCL23 과 동일한 nal_unit_type 을 가짐을 나타낸다.
0 과 동일한 VclNalUnitFlag 는 서브-샘플에서의 모든 NAL 유닛들이 논-VCL NAL 유닛들임을 나타낸다. 값 1 은 서브-샘플에서의 모든 NAL 유닛들이 VCL NAL 유닛들임을 나타낸다.
DiscardableFlag 는 서브-샘플에서의 VCL NAL 유닛들의 discardable_flag 값을 나타낸다. 서브-샘플에서의 VCL NAL 유닛들 모두는 동일한 discardable_flag 값을 가질 것이다.
이것은 서브-샘플 정보 박스에서 폐기가능 필드와 동일한 정의가 아니라는 것에 주의한다.
NoInterLayerPredFlag 는 서브-샘플에서의 VCL NAL 유닛들의 inter_layer_pred_enabled_flag 의 값을 나타낸다. 서브-샘플에서의 VCL NAL 유닛들 모두는 동일한 값의 inter_layer_pred_enabled_flag 를 가질 것이다.
LayerId 는 서브-샘플에서의 NAL 유닛들의 nuh_layer_id 값을 나타낸다. 서브-샘플에서의 NAL 유닛들 모두는 동일한 nuh_layer_id 값을 가질 것이다.
TempId 는 서브-샘플에서의 NAL 유닛들의 TemporalId 값을 나타낸다. 서브-샘플에서의 NAL 유닛들 모두는 동일한 TemporalId 값을 가질 것이다.
vcl_idc 는 서브-샘플이 다음과 같이 비디오 코딩 레이어 (VCL) 데이터, 논-VCL 데이터, 또는 이들 양쪽을 포함하는지 여부를 나타낸다:
0: 서브-샘플은 VCL 데이터를 포함하고 논-VCL 데이터를 포함하지 않음
1: 서브-샘플은 어떠한 VCL 데이터도 포함하지 않고 논-VCL 데이터를 포함함
2: 서브-샘플은 서로 연관될 것인 VCL 및 논-VCL 데이터 양쪽을 포함할 수도 있음. 예를 들어, 서브-샘플은 디코딩 유닛 정보 SEI 메시지 그 다음에 그 SEI 메시지와 연관된 NAL 유닛들의 세트를 포함할 수도 있음.
3: 예비됨
log2_min_luma_ctb 는 다음과 같이 특정된 ctb_x 및 ctb_y 의 유닛을 나타낸다:
0: 8 개의 루마 샘플들
1: 16 개의 루마 샘플들
2: 32 개의 루마 샘플들
3: 64 개의 루마 샘플들
ctb_x 는, 위에서 특정된 바와 같이 log2_min_luma_ctb 로부터 유도된 유닛들에서, 플래그들이 2 와 동일하고 vcl_idc 가 1 또는 2 와 동일할 때 서브-샘플과 연관된 타일의 극우측 (right-most) 루마 샘플들의 0-기반 좌표를 특정한다.
ctb_y 는, 위에서 특정된 바와 같이 log2_min_luma_ctb 로부터 유도된 유닛들에서, 플래그들이 2 와 동일하고 vcl_idc 가 1 또는 2 와 동일할 때 서브-샘플과 연관된 타일의 극하측 (bottom-most) 루마 샘플들의 0-기반 좌표를 특정한다.
VclNalUnitType 은 서브-샘플에서의 VCL NAL 유닛들의 nal_unit_type 값을 나타낸다. 서브-샘플에서의 VCL NAL 유닛들 모두는 동일한 nal_unit_type 값을 가질 것이다.
9.5.9 논-출력 샘플들의 핸들링
8.4.9 에서의 명세는 "SHVC" 로 대체되는 "HEVC" 에 적용되고, 논-출력 샘플은 타깃 출력 레이어들의 픽처(들) 가 0 과 동일한 pic_output_flag 를 갖는 샘플로서 정의된다. 액세스 유닛이 1 과 동일한 pic_output_flag 를 갖는 일부 코딩된 픽처들 그리고 0 과 동일한 pic_output_flag 를 갖는 일부 다른 코딩된 픽처들을 포함할 때, 각각의 트랙 내에서 각각의 샘플에서의 코딩된 픽처들 모두가 동일한 값의 pic_output_flag 를 갖도록 적어도 2 개의 트랙들이 스트림을 저장하는데 이용되어야 한다.
10 10 MV-HEVC 기본 스트림 및 샘플 정의들
10.1 도입부
이 조항은 MV-HEVC 데이터의 저장 포맷을 특정한다. 이것은 조항 8 에서 HEVC 의 저장 포맷의 정의들을 확장한다.
이 조항 및 부록들 A 내지 D 에 정의된, MV-HEVC 콘텐츠의 저장을 위한 파일 포맷은, ISO 베이스 미디어 파일 포맷 및 플레인 HEVC 파일 포맷 (즉, 조항 8 에 특정된 파일 포맷) 의 기존 능력들을 이용한다. 부가적으로, 다른 것들 중에서도, MV-HEVC-특정 피처들을 지원하기 위한 다음 구조들 또는 확장들이 이용된다.
집합자:
NAL 유닛들의 불규칙적인 패턴들을 집합된 데이터 유닛들의 규칙적인 패턴들로 변경하는 것에 의해 NAL 유닛들의 효율적인 스케일러블 그룹화를 가능하게 하기 위한 구조.
추출자:
미디어 데이터를 포함하는 것보다 다른 트랙들로부터의 NAL 유닛들의 효율적인 추출을 가능하게 하기 위한 구조.
HEVC 호환성:
HEVC 호환가능 베이스 레이어가 임의의 플레인 HEVC 파일 포맷 준수 판독기에 의해 이용될 수 있도록, HEVC 호환가능 방식으로 MV-HEVC 비트스트림을 저장하기 위한 프로비전.
MV-HEVC 에 대한 지원은 다수의 툴들을 포함하고, 이들이 어떻게 이용될 수 있는지에 대한 다양한 '모델들' 이 존재한다. 구체적으로, MV-HEVC 스트림은 다음에 있는 다양한 방법들로 트랙들에 배치될 수 있다:
1. 샘플 그룹들로 라벨링된, 하나의 트랙에서의 모든 뷰들;
2. 샘플 엔트리들로 라벨링된, 그 자신의 트랙에서의 각각의 뷰;
3. 뷰들 모두를 포함하는 하이브리드의, 하나의 트랙, 및 독립적으로 코딩될 수 있는 뷰를 각각이 포함하는 하나 이상의 단일-뷰 트랙들;
4. 트랙에서의 예상된 동작 포인트들 각각 (예를 들어, HEVC 베이스, 스테레오 쌍, 멀티뷰 장면).
MV-HEVC 파일 포맷은, 조항 9 에서 SHVC 에 대한 지원과 유사하게, 하나 이상의 뷰들의 트랙으로의 저장을 허용한다. 예를 들어, 콘텐츠 제공자가 서브세팅을 위해 의도되지 않은 멀티뷰 비트스트림을 제공하기를 원할 때 또는 트랙들이 이에 따라 생성될 수 있는 출력 뷰들 (예컨대 1, 2, 5, 또는 9 개의 뷰들) 의 몇몇 미리 정의된 세트들에 대해 비트스트림이 생성되었을 때 트랙 당 다수의 뷰들의 저장이 이용될 수 있다. 2 개 이상의 뷰가 트랙에 저장되고 MV-HEVC 비트스트림을 표현하는 몇몇 트랙들 (2 개 이상) 이 존재하는 경우, 샘플 그룹화 메커니즘의 이용이 추천된다.
MV-HEVC 비트스트림이 다수의 트랙들에 의해 표현되고 플레이어가 다수의 트랙들에서의 데이터를 포함하는 동작 포인트를 이용할 때, 플레이어는, MV-HEVC 액세스 유닛들을, 이들을 MV-HEVC 디코더에게 넘기기 전에 재구성해야 한다. MV-HEVC 동작 포인트는 트랙에 의해 명시적으로 표현될 수도 있다, 즉, 액세스 유닛은 단순히 샘플의 모든 추출자 및 집합자 NAL 유닛들을 분해하는 것에 의해 재구성된다. 동작 포인트들의 수가 큰 경우, 각각의 동작 포인트에 대한 트랙을 생성하는 것은 공간-소모적이고 비현실적일 수도 있다. 이러한 경우, MV-HEVC 액세스 유닛들은 10.5.2 에서 특정된 바와 같이 재구성된다. MV-HEVC 디코더 구성 레코드는 연관된 샘플들이 명시적 또는 암시적 액세스 유닛 재구성을 이용할지 여부를 나타내는 필드를 포함한다 (explicit_au_track 필드 참조).
10.2 MV-HEVC 트랙 구조
MV-HEVC 스트림들은 MV-HEVC 비디오 기본 스트림의 다음 정의를 갖는 8.2 에 따라 저장된다:
Figure pct00015
MV-HEVC 비디오 기본 스트림들은 모든 비디오 코딩 관련 NAL 유닛들 (즉, 이들 NAL 유닛들은 비디오 데이터를 포함하거나 또는 비디오 구조를 시그널링함) 을 포함할 것이고, 논-비디오 코딩 관련 NAL 유닛들 예컨대 SEI 메시지들 및 액세스 유닛 구분자 NAL 유닛들을 포함할 수도 있다. 또한 집합자들 (A.2 참조) 또는 추출자들 (A.3 참조) 이 존재할 수도 있다. 집합자들 및 추출자들은 이 국제 표준에서 정의된 바와 같이 프로세싱될 것이다 (예를 들어, 파일에 액세스하는 동안 출력 버퍼에 직접적으로 배치되어서는 안된다). 명백히 금지되지 않은 다른 NAL 유닛들이 존재할 수도 있고, 이들이 인지되지 않은 경우, 이들은 무시되어야 한다 (예를 들어, 파일을 액세스하는 동안 출력 버퍼에 배치되어서는 안된다).
MV-HEVC 스트림들은, 필요할 때, 연관된 파라미터 세트 스트림들을 이용하여 저장되어서는 안된다.
0 과 동일한 nuh_layer_id 를 갖는 VCL NAL 유닛들, 0 보다 더 큰 nuh_layer_id 를 갖는 VCL NAL 유닛들, 및 MV-HEVC 비디오 기본 스트림에 존재하는 다른 논-VCL NAL 유닛들이 존재할 수도 있다. 부가적으로, MV-HEVC 비디오 기본 스트림에 존재하는 집합자 또는 추출자 NAL 유닛들이 존재할 수도 있다.
10.3 플레인 HEVC 파일 포맷의 이용
MV-HEVC 파일 포맷은 조항 8 에 정의된 플레인 HEVC 파일 포맷의 확장이다.
10.4 샘플 및 구성 정의
10.4.1 도입부
MV-HEVC 샘플: MV-HEVC 샘플은 또한 ISO/IEC 23008-2 의 부록 F 에 정의된 액세스 유닛이다.
10.4.2 규범적 순서 및 제약
10.4.2.1 제약들
다음 제약들은 조항 8.3.2 에서의 요건들에 부가적으로 MV-HEVC 데이터에 적용된다.
Figure pct00016
VCL NAL 유닛들: 하나의 액세스 유닛에서의 모든 VCL NAL 유닛들은 조성 시간이 액세스 유닛에 의해 표현된 픽처의 조성 시간인 샘플에 포함될 것이다. MV-HEVC 샘플은 적어도 하나의 VCL NAL 유닛을 포함할 것이다.
Figure pct00017
집합자들/추출자들: 집합자에 포함되거나 또는 추출자에 의해 참조되는 모든 NAL 유닛들의 순서는, 이들 NAL 유닛들이 집합자들/추출자들을 포함하지 않는 샘플에 존재했던 것처럼 정확히 디코딩 순서이다. 집합자 또는 추출자를 프로세싱한 후에, 모든 NAL 유닛들은 ISO/IEC 23008-2 에 특정된 바와 같이 유효한 디코딩 순서로 있어야 한다.
10.4.2.2 디코더 구성 레코드
조항 8.3.3.1 에 정의된 디코더 구성 레코드가 MV-HEVC 또는 HEVC 스트림 중 어느 하나로서 해석될 수 있는 스트림에 대해 이용될 때, HEVC 디코더 구성 레코드는 HEVC 호환가능 베이스 뷰의 속성들을 반영할 것이다, 예를 들어, 그 HEVC 디코더 구성 레코드는 HEVC 베이스 뷰를 디코딩하는데 필요한 파라미터 세트들만을 단지 포함할 것이다.
MVHEVCDecoderConfigurationRecord 는 HEVCDecoderConfigurationRecord 와 구조적으로 동일하다. 신택스는 다음과 같다:
aligned(8) class MVHEVCDecoderConfigurationRecord {
// HEVCDecoderConfigurationRecord 신택스 구조에서와 동일한 필드들
}
MVHEVCDecoderConfigurationRecord 에서의 필드들의 시맨틱스는 HEVCDecoderConfigurationRecord 에 대해 정의된 것과 동일하다.
10.4.3 동기화 샘플
MV-HEVC 샘플은, ISO/IEC 23008-2 에 정의된 바와 같이, 액세스 유닛에서의 각각의 코딩된 픽처들이 RASL 픽처들을 갖지 않는 IRAP 픽처인 경우에 동기화 샘플인 것으로 간주된다. 동기화 샘플들은 동기화 샘플 테이블에 의해 기록되고, 부가적으로 동기화 샘플 샘플 그룹 및 SHVC 에서와 유사하게 정의된 'rap' 샘플 그룹에 의해 기록될 수도 있다.
10.4.4 독립적 및 처분가능 샘플들 박스
그것이 HEVC 및 MV-HEVC 양쪽이 호환가능한 트랙에서 이용된다면, 스테이트먼트들은 MV-HEVC 데이터 (가능하다면 단지 HEVC 데이터만) 의 어떤 유효한 서브세트가 이용되든 유효하다는 것에 주의해야 한다. 정보가 변하는 경우 '알려지지 않은' 값들 (필드들 sample-depends-on, sample-is-depended-on, 및 sample-has-redundancy 의 값 0) 이 필요할 수도 있다.
10.4.5 랜덤 액세스 회복 포인트들 및 랜덤 액세스 포인트들에 대한 샘플 그룹들
타입 'hvc1', 'hev1', 'hvc2', 또는 'hev2' 의 샘플 엔트리에 의해 설명된 비디오 데이터에 대해, 랜덤 액세스 회복 샘플 그룹 및 랜덤 액세스 포인트 샘플 그룹은, 전체 비트스트림 상에서 동작하는 MV-HEVC 디코더 (존재하는 경우) 및 HEVC 디코더 양쪽에 대해, 랜덤 액세스 회복 포인트들 및 랜덤 액세스 포인트들을 각각 식별한다.
MV-HEVC 샘플 엔트리 타입에 의해 설명된 비디오 데이터에 대해, 랜덤 액세스 회복 샘플 그룹은 전체 MV-HEVC 비트스트림에서 랜덤 액세스 회복을 식별하고, 랜덤 액세스 포인트 샘플 그룹은 전체 MV-HEVC 비트스트림에서 랜덤 액세스 포인트들을 식별한다.
10.5 ISO 베이스 미디어 파일 포맷으로부터의 유도
10.5.1 MV-HEVC 트랙 구조
멀티-뷰 비디오 스트림은 파일에서 하나 이상의 비디오 트랙들에 의해 표현된다. 각각의 트랙은 스트림의 하나 이상의 뷰들을 표현한다.
함께 취급될 때, 인코딩된 정보의 완전한 세트를 포함하는 하나 이상의 트랙들의 최소 세트가 존재한다. 이들 트랙들 모두는 이들의 샘플 엔트리들 모두에 설정된 플래그 "complete_representation" 을 가질 것이다. 완전한 인코딩된 정보를 형성하는 이 트랙들의 그룹은 "완전한 서브세트" 라고 불린다.
최저 동작 포인트는 단지 0 과 동일한 nuh_layer_id 및 단지 0 과 동일한 TemporalId 를 갖는 NAL 유닛들을 포함하는 모든 동작 포인트들 중 하나인 것으로 하자. 최저 동작 포인트를 포함하는 트랙은 '베이스 뷰 트랙' 으로서 지명될 것이다. 동일한 스트림의 부분인 다른 트랙들 모두는 타입 'sbas' (뷰 베이스) 의 트랙 참조에 의해 이 베이스 트랙에 링크될 것이다.
동일한 베이스 뷰 트랙을 공유하는 트랙들 모두는 베이스 뷰 트랙과 동일한 시간척도를 공유해야 한다.
트랙에 의해 표현된 뷰가 인터-뷰 예측 참조로서 다른 트랙에 의해 표현된 다른 뷰를 이용하는 경우, 타입 'scal' 의 트랙 참조는 인터-뷰 예측을 위한 소스 트랙에 관련된 트랙에 포함될 것이다.
MV-HEVC 비트스트림의 뷰 컴포넌트들을 포함하는 트랙들에 편집들이 적용되는 경우, 편집 리스트들은 편집들에 의해 영향을 받은 모든 트랙들에 걸쳐 일관성있을 것이다.
10.5.2 액세스 유닛의 재구성
하나 이상의 MV-HEVC 트랙들의 샘플들로부터 액세스 유닛을 재구성하기 위해, 타깃 출력 뷰들은 첫 번째로 결정될 필요가 있을 수도 있다.
결정된 타깃 출력 뷰들을 디코딩하는데 요구되는 뷰들은, 'scal' 트랙 참조들 또는 뷰 식별자 박스에 포함된 참조 뷰 식별자들로부터 결론지어질 수 있다.
몇몇 트랙들이 액세스 유닛에 대한 데이터를 포함하는 경우, 트랙들에서의 각각의 샘플들의 정렬은 디코딩 시간에, 즉, 편집 리스트들을 고려하는 일 없이 시간-대-샘플 테이블만을 이용하여 수행된다.
액세스 유닛은 ISO/IEC 23008-02 를 준수하는 순서로 이들의 NAL 유닛들을 배열하는 것에 의해 요구된 트랙들에서의 각각의 샘플들로부터 재구성된다. 다음 순서는 준수하는 액세스 유닛을 형성하기 위한 프로시저의 개요를 제공한다:
Figure pct00018
(연관된 파라미터 세트 트랙들로부터의 그리고 연관된 기본 스트림 트랙들로부터의) 모든 파라미터 세트 NAL 유닛들.
Figure pct00019
(연관된 파라미터 세트 트랙들로부터의 그리고 연관된 기본 스트림 트랙들로부터의) 모든 SEI NAL 유닛들.
Figure pct00020
오름차순의 뷰 순서 인덱스 값의 뷰 컴포넌트들. 뷰 컴포넌트 내의 NAL 유닛들은 샘플 내에 이들의 출현 순서로 있다.
10.5.3 샘플 엔트리
10.5.3.1 샘플 엔트리에 대한 박스들
10.5.3.1.1 뷰 식별자 박스
10.5.3.1.1.1 정의
박스 타입: 'vwid'
컨테이너: 샘플 엔트리 ('hev1', 'hvc1', 'hev2', 'hvc2', 'mhc1', 'mhv1') 또는 MultiviewGroupEntry
의무사항: 예 (샘플 엔트리들에 대해)
양: 정확히 하나 (샘플 엔트리들에 대해)
샘플 엔트리에 포함될 때, 박스는 트랙에 포함된 뷰들을 나타낸다. 이 박스는 또한 각각의 리스팅된 뷰에 대한 뷰 순서 인덱스를 나타낸다. 부가적으로, 박스는 뷰 식별자 박스가 샘플 엔트리에 포함될 때 트랙에 포함된 temporal_id 의 최소 및 최대 값들을 포함한다. 더욱이, 박스는 트랙에 포함된 뷰들을 디코딩하는데 요구된 참조 뷰들을 나타낸다.
10.5.3.1.1.2 신택스
Figure pct00021
10.5.3.1.1.3 시맨틱스
min_temporal_id, max_temporal_id 는 각각, 뷰 식별자 박스가 샘플 엔트리에 포함될 때 트랙 또는 티어에 맵핑되는 NAL 유닛들의 NAL 유닛 헤더 확장에 존재하는 temporal_id 신택스 엘리먼트의 최소 및 최대 값을 각각 취한다. AVC 스트림들에 대해, 이것은 프리픽스 NAL 유닛에 있거나 있을 것인 값을 취한다.
num_views 는, 뷰 식별자 박스가 샘플 엔트리에 존재할 때, 트랙에 포함된 뷰들의 수를 나타낸다.
layer_id[i] 는 뷰 식별자 박스가 샘플 엔트리에 포함될 때 트랙에 포함된 레이어의 NAL 유닛 헤더에서의 nuh_layer_id 신택스 엘리먼트의 값을 나타낸다.
view_id 는, ISO/IEC 23008-2 의 부록 F 에 특정된 바와 같이, layer_id[i] 와 동일한 nuh_layer_id 를 갖는 i 번째 레이어의 뷰 식별자를 나타낸다.
base_view_type 은 뷰가 베이스 뷰인지 여부 (가상인지 또는 아닌지) 를 나타낸다. 그것은 다음 값들을 취한다:
0 은 베이스 뷰도 가상 베이스 뷰도 아님을 나타낸다.
1 은 MV-HEVC 비트스트림의 논-가상 베이스 뷰를 라벨링하는데 이용될 것이다.
2 는 예비된 값이고 이용되어서는 안된다.
3 은 view_id[i] 를 가진 뷰가 가상 베이스 뷰임을 나타낸다. view_id[i] 를 갖는 각각의 독립적으로 코딩된 논-베이스 뷰가 다른 트랙에 상주한다. base_view_type 이 3 과 동일할 때, 후속 num_ref_view들은 0 과 동일할 것이다.
depdent_layer[i][j] 는, j 와 동일한 nuh_layer_id 를 갖는 j 번째 레이어가 layer_id[i] 와 동일한 nuh_layer_id 를 갖는 레이어의 직접적으로 또는 간접적으로 참조된 레이어일 수도 있는지 여부를 나타낸다. 뷰 식별자 박스가 샘플 엔트리에 포함될 때, 그것은 동일한 샘플 엔트리에 참조된 뷰들을 나타내도록 추천된다.
10.5.3.2 샘플 엔트리 정의
샘플 엔트리 타입들: 'hvc2', 'hev2', 'mhc1', 'mhv1', 'mhcC',
컨테이너: 샘플 디스크립션 박스 ('stsd')
의무사항: 'hvc1', 'hev1', 'hvc2', 'hev2', 'mhc1', 또는 'mhv1' 박스들 중 하나는 의무적임
양: 하나 이상의 샘플 엔트리들이 존재할 수도 있음
MV-HEVC 기본 스트림이 이용가능한 HEVC 호환가능 베이스 뷰를 포함한다면, HEVC 시각 샘플 엔트리 ('hvc1', 'hev1', 'hvc2', 'hev2') 가 이용될 것이다. 여기에서, 엔트리는 초기에 HEVC 구성 박스를 포함할 것이고, 가능하다면 그 다음에 아래에 정의된 MV-HEVC 구성 박스를 포함할 것이다. HEVC 구성 박스는 HEVCDecoderConfigurationRecord 에 정의된 HEVC 호환가능 베이스 뷰에 관계된 프로파일, 레벨, 그리고 가능하다면 또한 파라미터 세트들을 기록한다. MV-HEVC 구성 박스는 MVHEVCConfigurationBox 에 저장된 MVHEVCDecoderConfigurationRecord 에 정의된 논-베이스 뷰들을 포함하는 전체 스트림에 관계된 프로파일, 레벨, 그리고 파라미터 세트 정보를 기록한다.
모든 샘플 엔트리들 'hvc1', 'hev1', 'hvc2', 'hev2' 에 대해, 샘플 엔트리에서의 폭 및 높이 필드들은 HEVC 베이스 레이어를 기록한다. MV-HEVC 샘플 엔트리 ('mhc1', 'mhv1') 에 대해, 폭 및 높이는 전체 스트림의 임의의 단일 뷰를 디코딩하는 것에 의해 달성된 해상도를 기록한다.
MV-HEVC 기본 스트림이 이용가능한 HEVC 호환가능 베이스 뷰를 포함하지 않는다면, MV-HEVC 시각 샘플 엔트리 ('mhc1', 'mhv1') 가 이용될 것이다. MV-HEVC 시각 샘플 엔트리는, 아래에 정의된 바와 같이, MV-HEVC 구성 박스를 포함할 것이다. 이것은, 이 국제 표준에 정의된 바와 같이, MVHEVCDecoderConfigurationRecord 를 포함한다.
임의의 주어진 샘플 엔트리에서 MV-HEVC 및 HEVC 구성들에서의 lengthSizeMinusOne 필드는 동일한 값을 가질 것이다.
6.5.3.1.1 에서 기록된 바와 같이 샘플 엔트리 타입들 'hvc1' 및 'hev1' 에 대한 요건들이 또한 여기에 적용된다.
MVHEVCConfigurationBox 는 'hvc1', 'hev1', 'hvc2', 'hev2' 샘플 엔트리에 존재할 수도 있다. 이들 경우들에서, 아래의 HEVCMVHEVCSampleEntry 또는 HEVC2MVHEVCSampleEntry 정의가 각각 적용된다.
베이스 클래스 VisualSampleEntry 에서의 Compressorname 은 추천되는 값 "
Figure pct00022
코딩" 이 이용된 컴프레서의 명칭을 나타낸다 (
Figure pct00023
은 14, 바이트에 있어서의 스트링 "MV-HEVC 코딩" 의 길이이다).
추출자로부터의 참조에 의해 또는 직접적으로, 비디오 스트림의 샘플 데이터에 존재하는 NAL 유닛을 디코딩하는데 요구되는 파라미터 세트들은, 그 비디오 스트림의 디코더 구성에 또는 연관된 파라미터 세트 스트림 (이용된 경우) 에 존재할 것이다.
다음 테이블은 비디오 트랙에 대해 MV-HEVC 기본 스트림이 하나 이상의 트랙들에 저장될 때의 샘플 엔트리들의 모든 가능한 이용들, 구성들, 및 MV-HEVC 툴들을 도시한다.
테이블 14 HEVC 및 MV-HEVC 트랙들에 대한 샘플 엔트리들의 이용
샘플 엔트리 명칭 구성 레코드들을 가짐 의미
'hvc1' 또는 'hev1' 단지 HEVC 구성만 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 플레인 HEVC 트랙; 추출자들 및 집합자들은 존재하지 않을 것이다.
'hvc1' 또는 'hev1' HEVC 및 MV-HEVC 구성들 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들과 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들 양쪽 모두를 갖는 MV-HEVC 트랙; 추출자들 및 집합자들은 존재할 수도 있다; 추출자들은 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 참조하지 않을 것이다; 집합자들은 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 포함하지 않을 것이지만 참조할 수도 있다.
'hvc2' 또는 'hev2' 단지 HEVC 구성만 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 플레인 HEVC 트랙; 추출자들은 존재하고 NAL 유닛들을 참조하도록 이용될 수도 있다; 집합자들은 존재하여 NAL 유닛들을 포함하고 참조할 수도 있다.
'hvc2' 또는 'hev2' HEVC 및 MV-HEVC 구성들 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들과 0 보다 더 큰 nuh_layer_id 를 갖는 NAL 유닛들 양쪽 모두를 갖는 MV-HEVC 트랙; 추출자들 및 집합자들은 존재할 수도 있다; 추출자들은 임의의 NAL 유닛들을 참조할 수도 있다; 집합자들은 임의의 NAL 유닛들을 포함하는 것 및 참조하는 것 양쪽을 행할 수도 있다.
'mhc1' 또는 'mhv1' MV-HEVC 구성 0 과 동일한 nuh_layer_id 를 갖는 NAL 유닛들을 갖지 않는 MV-HEVC 트랙; 추출자들은 존재하고 NAL 유닛들을 참조하도록 이용될 수도 있다; 집합자들은 존재하여 NAL 유닛들을 포함하고 참조할 수도 있다.
다음에서의 샘플 엔트리 mvhevc-type 은 {mhv1, mhc1} 중 하나이다.
10.5.3.3 신택스
Figure pct00024
Figure pct00025
10.5.4 MV-HEVC 에 대한 서브-샘플의 정의
MV-HEVC 에 대한 서브-샘플의 정의는 SHVC 에 대해 정의된 것과 유사하게 정의된다.
10.5.5 논-출력 샘플들의 핸들링
MV-HEVC 에 대한 논-출력 샘플들의 핸들링은 SHVC 에 대해 정의된 것과 유사하게 정의된다.
부록 A 에 대한 변경들이 아래에 도시된다.
부록 A (규범적)
스트림 내 구조들
A.1 도입부
집합자들 및 추출자들은 다른 트랙들로부터의 NAL 유닛들의 추출 또는 NAL 유닛들의 효율적인 그룹화를 가능하게 하는 파일 포맷 내부 구조들이다.
집합자들 및 추출자들은 NAL 유닛 신택스를 이용한다. 이들 구조들은 샘플 구조의 맥락에서 NAL 유닛들로서 보여진다. 샘플을 액세스하는 동안, 집합자들은 제거되어야 하고 (이들의 포함된 또는 참조된 NAL 유닛들을 이탈함), 추출자들은 이들이 참조하는 데이터로 대체되어야 한다. 집합자들 및 추출자들은 파일 포맷 밖의 스트림에 존재해서는 안된다.
이들 구조들은 ISO/IEC 14496-10 또는 ISO/IEC 23008-2 에 의해 애플리케이션/전송 레이어에 대해 예비된 NAL 유닛 타입들을 이용한다.
주의 다음은 ISO/IEC 14496-10 으로부터의 것이다:
"주의 - NAL 유닛 타입들 0 및 24..31 은 애플리케이션에 의해 결정된 바와 같이 이용될 수도 있다. nal_unit_type 의 이들 값들에 대한 어떠한 디코딩 프로세스도 이 추천|국제 표준에 특정되지 않는다."
주의 다음은 ISO/IEC 23008-2 로부터의 것이다:
"주의 1 - UNSPEC48..UNSPEC63 의 범위에 있는 NAL 유닛 타입들은 애플리케이션에 의해 결정된 바와 같이 이용될 수도 있다. nal_unit_type 의 이들 값들에 대한 어떠한 디코딩 프로세스도 이 명세에 특정되지 않는다. 상이한 애플리케이션들이 상이한 목적들을 위해 이들 NAL 유닛 타입들을 이용할 수도 있기 때문에, 이들 nal_unit_type 값들을 갖는 NAL 유닛들을 생성하는 인코더들의 설계에, 그리고 이들 nal_unit_type 값들을 갖는 NAL 유닛들의 콘텐츠를 해석하는 디코더들의 설계에 특히 주의해야 한다."
A.2 집합자들
A.2.1 정의
이 하위조항은 NALU-map-group 엔트리들이 일관성있고 반복적일 수 있게 하는 집합자들을 설명한다. (부록 B 참조).
집합자들은 동일한 샘플에 속하는 NAL 유닛들을 그룹화하는데 이용된다.
ISO/IEC 14496-10 비디오의 저장을 위해, 다음 룰들이 적용된다:
- 집합자들은, 상이한 값의 NAL 유닛 타입을 갖지만, SVC VCL NAL 유닛들 또는 MVC VCL NAL 유닛들과 동일한 NAL 유닛 헤더를 이용한다.
- 집합자의 (ISO/IEC 14496-10 의 7.3.1 에 특정된) NAL 유닛 신택스의 svc_extension_flag 가 1 과 동일할 때, SVC VCL NAL 유닛들의 NAL 유닛 헤더는 집합자에 대해 이용된다. 그렇지 않다면, MVC VCL NAL 유닛들의 NAL 유닛 헤더가 집합자에 대해 이용된다.
ISO/IEC 23008-2 비디오의 저장을 위해, 집합자들은, 플레인 HEVC, SHVC, 및 MV-HEVC 에 대해 동일한 신택스를 갖는, ISO/IEC 23008-2 에 정의된 NAL 유닛 헤더를 이용한다.
집합자들은 (이들의 길이로 나타낸 사이즈 내에서) NAL 유닛들을 이들 내에 포함에 의해 집합시키는 것 그리고 또한 (이들 내의 additional_bytes 필드로 나타낸 영역 내에서) 이들에 후속하는 NAL 유닛들을 참조에 의해 집합시키는 것 양쪽 모두를 행할 수 있다. 스트림이 AVC 또는 HEVC 파일 판독기에 의해 스캐닝될 때, 포함된 NAL 유닛들만이 단지 집합자 "내에" 있는 것으로서 보여진다. 이것은 AVC 또는 HEVC 파일 판독기가 불필요한 NAL 유닛들의 전체 세트를, 이들이 포함에 의해 집합될 때, 스킵하도록 허용한다. 이것은 또한 AVC 또는 HEVC 판독기가 필요한 NAL 유닛들을 스킵하지 않도록 허용하지만, 이들이 참조에 의해 집합될 때 이들을 스트림 내에 남아있게 한다.
집합자들은 베이스 레이어 또는 베이스 뷰 NAL 유닛들을 그룹화하는데 이용될 수 있다. 이들 집합자들이 'avc1', 'hvc1', 또는 'hev1' 트랙에 이용된다면, 집합자는 베이스 레이어 또는 베이스 뷰 NAL 유닛들의 포함을 이용해서는 안되지만 이 유닛들의 참조를 이용한다 (집합자의 길이는 단지 그의 헤더를 포함하고, 집합자에 의해 참조되는 NAL 유닛들은 additional_bytes 에 의해 특정된다).
집합자가 제로와 동일한 data_length 를 갖는 추출자에 의해, 또는 맵 샘플 그룹에 의해 참조될 때, 집합자는 포함된 그리고 참조된 바이트들 양쪽을 집합시키는 것으로서 다루어진다.
집합자는 추출자들을 포함 또는 참조할 수도 있다. 추출자는 집합자들로부터 추출할 수도 있다. 집합자는 다른 집합자를 직접적으로 포함 또는 참조해서는 안된다; 그러나, 집합자는 집합자를 참조하는 추출자를 포함 또는 참조할 수도 있다.
스트림을 스캐닝할 때:
a) 집합자가 (예를 들어, AVC 또는 HEVC 판독기 또는 디코더에 의해) 인지되지 않은 경우, 집합자는 그의 포함된 콘텐츠와 함께 쉽게 폐기된다;
b) 집합자가 필요하지 않은 경우 (즉, 집합자가 원하지 않는 레이어에 속하는 경우), 집합자 및 포함 및 참조 양쪽에 의한 그의 콘텐츠들은 (그의 길이 및 additional_bytes 필드들을 이용하여) 쉽게 폐기된다.
c) 집합자가 필요한 경우, 그의 헤더는 쉽게 폐기되고 그의 콘텐츠들은 유지된다.
집합자는 임의의 다른 NAL 유닛과 같은 샘플 내에 저장된다.
모든 NAL 유닛들은 집합자 내에 디코딩 순서로 남아있다.
A.2.2 신택스
Figure pct00026
A.2.3 시맨틱스
가변 AggregatorSize 의 값은 집합자 NAL 유닛의 사이즈와 동일하고, 함수 sizeof(X) 는 바이트에 있어서 필드 X 의 사이즈를 리턴한다.
NALUnitHeader(): SVC 및 MVC VCL NAL 유닛들의 처음 4 개의 바이트들, 또는 ISO/IEC 23008-2 NAL 유닛들의 처음 2 바이트들 .
nal_unit_type 은 집합자 NAL 유닛 타입 (ISO/IEC 14496-10 비디오에 대한 타입 30 및 ISO/IEC 23008-2 비디오에 대한 타입 48) 으로 전송될 것이다.
SVC NAL 유닛들을 포함 또는 참조하는 집합자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 및 reserved_three_2bits 는 ISO/IEC 14496-10 에 특정된 바와 같이 설정될 것이다.
다른 필드들 (nal_ref_idc, idr_flag, priority_id, no_inter_layer_pred_flag, dependency_id, quality_id, temporal_id, use_ref_base_pic_flag, discardable_flag, 및 output_flag) 이 A.4 에 특정된 바와 같이 설정될 것이다.
MVC NAL 유닛들을 포함 또는 참조하는 집합자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 및 reserved_one_bit 는 ISO/IEC 14496-10 에 특정된 바와 같이 설정될 것이다.
다른 필드들 ( nal _ref_idc, non_ idr _flag, priority_id, view_id, temporal_id, anchor_ pic _flag, 및 inter_view_flag) 이 A.5 에 특정된 바와 같이 설정될 것이다.
ISO/IEC 23008-2 NAL 유닛들을 포함 또는 참조하는 집합자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 는 ISO/IEC 23008-2 에 특정된 바와 같이 설정될 것이다.
다른 필드들 (nuh_layer_id 및 nuh_temporal_id_plus1) 이 A.6 에 특정된 바와 같이 설정될 것이다.
additional_bytes: 이 집합자가 맵 샘플 그룹 또는 제로와 동일한 data_length 를 갖는 추출자에 의해 참조될 때 집합되는 것으로 간주되어야 하는 이 집합자 NAL 유닛에 후속하는 바이트들의 수.
NALUnitLength: 후속하는 NAL 유닛의 바이트에 있어서의 사이즈를 특정한다. 이 필드의 사이즈는 lengthSizeMinusOne 필드로 특정한다.
NALUnit: NAL 유닛 헤더를 포함하는, ISO/IEC 14496-10 또는 ISO/IEC 23008-2 에 특정된 NAL 유닛. NAL 유닛의 사이즈는 NALUnitLength 에 의해 특정된다.
A.3 추출자들
A.3.1 정의
이 하위조항은 다른 트랙들로부터의 NAL 유닛 데이터를 참조에 의해 추출하는 트랙들의 완전한 형성을 가능하게 하는 추출자들을 설명한다.
집합자는 추출자들을 포함 또는 참조할 수도 있다. 추출자는 집합자들을 참조할 수도 있다. 추출자가 그것을 요구하는 파일 판독기에 의해 프로세싱될 때, 추출자는 그것이 참조하는 바이트들로 논리적으로 대체된다. 이들 바이트들은 추출자들을 포함해서는 안된다; 추출자는 다른 추출자를 직접적으로 또는 간접적으로 참조해서는 안된다.
주의 참조되는 트랙은 추출자들을 포함할 수도 있지만, 추출자에 의해 참조되는 데이터는 포함해서는 안된다.
추출자는, 타입 'scal' 의 트랙 참조에 의해, 추출자가 상주하는 트랙에 링크되는 다른 트랙으로부터 데이터를 추출하라는 명령을 포함한다.
카피된 바이트들은 다음 중 하나일 것이다:
a) 하나의 전체 NAL 유닛; 집합자가 참조될 때, 포함된 그리고 참조된 바이트들 양쪽이 카피된다는 것에 주의함
b) 2 개 이상의 전체 NAL 유닛
양쪽의 경우들에서 추출된 바이트들은 유효한 길이 필드 및 NAL 유닛 헤더로 시작한다.
바이트들은 나타낸 'scal' 트랙 참조를 통해 참조된 트랙에서의 단일의 식별된 샘플로부터 단지 카피된다. 정렬은 디코딩 시간에, 즉, 시간-대-샘플 테이블만을 이용하여, 그 다음에 샘플 넘버에 있어서의 카운트된 오프셋을 이용하여 행한다. 추출자들은 미디어-레벨 개념이고, 그에 따라 임의의 편집 리스트가 고려되기 전에 목적지 트랙에 적용된다. (그러나, 2 개의 트랙들에서의 편집 리스트들이 동일할 것으로 보통 예상할 것이다).
A.3.2 신택스
Figure pct00027
A.3.3 시맨틱스
NALUnitHeader(): SVC 및 MVC VCL NAL 유닛들의 처음 4 개의 바이트들, 또는 ISO/IEC 23008-2 NAL 유닛들의 처음 2 바이트들 .
nal_unit_type 은 추출자 NAL 유닛 타입 (ISO/IEC 14496-10 비디오에 대한 타입 31 및 ISO/IEC 23008-2 비디오에 대한 타입 49) 으로 전송될 것이다.
SVC NAL 유닛들을 참조하는 추출자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 및 reserved_three_2bits 는 ISO/IEC 14496-10 에 특정된 바와 같이 설정될 것이다.
다른 필드들 (nal_ref_idc, idr_flag, priority_id, no_inter_layer_pred_flag, dependency_id, quality_id, temporal_id, use_ref_base_pic_flag, discardable_flag, 및 output_flag) 이 A.4 에 특정된 바와 같이 설정될 것이다.
MVC NAL 유닛들을 참조하는 추출자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 및 reserved_one_bit 는 ISO/IEC 14496-10 에 특정된 바와 같이 설정될 것이다.
다른 필드들 (nal_ref_idc, non_idr_flag, priority_id, view_id, temporal_id, anchor_pic_flag, 및 inter_view_flag) 이 A.5 에 특정된 바와 같이 설정될 것이다.
ISO/IEC 23008-2 NAL 유닛들을 참조하는 추출자에 대해, 다음이 적용될 것이다.
forbidden_zero_bit 는 ISO/IEC 23008-2 에 특정된 바와 같이 설정될 것이다.
다른 필드들 ( nuh _layer_id 및 nuh _temporal_id_ plus1 ) 이 A.6 에 특정된 바와 같이 설정될 것이다.
track_ref_index 는 데이터를 추출하는 트랙을 찾는데 이용하기 위해 타입 'scal' 의 트랙 참조의 인덱스를 특정한다. 데이터가 추출되는 그 트랙에서의 샘플은, 미디어 디코딩 타임라인에, 즉, 추출자를 포함하는 샘플과의 sample_offset 에 의해 특정된 오프셋만큼 조정된, 시간-대-샘플 테이블만을 이용하여, 시간적으로 정렬되거나 가장 가깝게 선행한다. 제 1 트랙 참조는 인덱스 값 1 을 갖는다; 값 0 은 예비된다.
sample_offset 은 정보의 소스로서 이용될 것인 링크된 트랙에 샘플의 관련된 인덱스를 제공한다. 샘플 0 (제로) 은 추출자를 포함하는 샘플의 디코딩 시간과 비교되는 동일하거나 가장 가깝게 선행하는 디코딩 시간을 갖는 샘플이다; 샘플 1 (하나) 은 다음 샘플이고, 샘플 - 1 (마이너스 1) 은 이전 샘플인 것 등이다.
data_offset: 카피하기 위한 참조 샘플 내의 첫 번째 바이트의 오프셋. 추출이 그 샘플에서의 데이터의 첫 번째 바이트로 시작하는 경우, 오프셋은 값 0 을 취한다. 오프셋은 NAL 유닛 길이 필드의 시작부를 참조할 것이다.
data_length: 카피하기 위한 바이트들의 수. 이 필드가 값 0 을 취한다면, 전체의 단일의 참조된 NAL 유닛이 카피된다 (즉, 카피하기 위한 길이는, 집합자들의 경우 additional_bytes 필드에 의해 증대된, 데이터 오프셋만큼 참조된 길이 필드로부터 취득된다).
주의 2 개의 트랙들이 상이한 lengthSizeMinusOne 값들을 이용한다면, 추출된 데이터는 목적지 트랙의 길이 필드 사이즈를 준수하기 위해 재-포맷팅을 필요로 할 것이다.
A.4 SVC 에 대한 NAL 유닛 헤더 값들
추출자들 및 집합자들 양쪽은 NAL 유닛 헤더 SVC 확장을 이용한다. 추출자에 의해 추출되거나 집합자에 의해 집합된 NAL 유닛들은, 집합자 또는 추출자 NAL 유닛들의 콘텐츠들을 재귀적으로 검사하는 것에 의해 참조 또는 포함되는 이들 NAL 유닛들 모두이다.
필드들 nal_ref_idc, idr_flag, priority_id, temporal_id, dependency_id, quality_id, discardable_flag, output_flag, use_ref_base_pic_flag, 및 no_inter_layer_pred_flag 는 다음 값들을 취할 것이다:
nal_ref_idc 는 추출된 또는 집합된 NAL 유닛들 모두에서 필드의 최고 값으로 설정될 것이다.
idr_flag 는 추출된 또는 집합된 NAL 유닛들 모두에서 필드의 최고 값으로 설정될 것이다.
priority_id, temporal_id, dependency_id, 및 quality_id 는 추출된 또는 집합된 NAL 유닛들 모두에서 필드들의 최저 값들로 각각 설정될 것이다.
discardable_flag 는, 추출된 또는 집합된 NAL 유닛들 모두가 1 로 설정된 discardable_flag 를 갖는 경우 그리고 그 경우에만 1 로 설정될 것이고, 그렇지 않으면 0 으로 설정될 것이다.
output_flag 는 집합된 또는 추출된 NAL 유닛들 중 적어도 하나가 1 로 설정된 이 플래그를 갖는 경우 1 로 설정되어야 하고, 그렇지 않으면 0 으로 설정되어야 한다.
use_ref_base_pic_flag 는, 추출된 또는 집합된 VCL NAL 유닛들 중 적어도 하나가 1 로 설정된 use_ref_base_pic_flag 를 갖는 경우 그리고 그 경우에만 1 로 설정될 것이고, 그렇지 않으면 0 으로 설정될 것이다.
no_inter_layer_pred_flag 는, 추출된 또는 집합된 VCL NAL 유닛들 모두가 1 로 설정된 no_inter_layer_pred_flag 를 갖는 경우 그리고 그 경우에만 1 로 설정될 것이고, 그렇지 않으면 0 으로 설정될 것이다.
추출된 또는 집합된 NAL 유닛들의 세트가 비어 있다면, 이들 필드들 각각은 맵핑된 티어 디스크립션을 준수하는 값을 취한다.
주의 집합자들은 상이한 스케일러빌리티 정보를 갖는 NAL 유닛들을 그룹화할 수 있다.
주의 집합자들은 NAL 유닛 헤더에 의해 시그널링되지 않을 수도 있는 스케일러빌리티의 레벨에 속하는 NAL 유닛들 (예를 들어, 관심있는 영역에 속하는 NAL 유닛들) 을 그룹화하는데 이용될 수 있다. 이러한 집합자들의 디스크립션은 티어 디스크립션 및 NAL 유닛 맵 그룹들을 이용하여 행해질 수도 있다. 이 경우, 동일한 스케일러빌리티 정보를 갖는 2 개 이상의 집합자가 하나의 샘플에서 발생할 수도 있다.
주의 다수의 스케일러블 트랙들이 동일한 미디어 데이터를 참조한다면, 집합자는 동일한 스케일러빌리티 정보만을 갖는 NAL 유닛들을 그룹화해야 한다. 이것은 결과적인 패턴이 트랙들 각각에 의해 액세스될 수 있다는 것을 보장한다.
주의 특정 레이어의 어떠한 NAL 유닛도 액세스 유닛에 존재하지 않는다면, 비어 있는 집합자 (집합자의 길이가 헤더만을 포함하고, additional_bytes 가 제로임) 가 존재할 수도 있다.
A.5 MVC 에 대한 NAL 유닛 헤더 값들
집합자들 및 추출자들 양쪽은 NAL 유닛 헤더 MVC 확장을 이용한다. 추출자에 의해 추출되거나 집합자에 의해 집합된 NAL 유닛들은, 집합자 또는 추출자 NAL 유닛들의 콘텐츠들을 재귀적으로 검사하는 것에 의해 참조 또는 포함되는 이들 NAL 유닛들 모두이다.
필드들 nal_ref_idc, non_idr_flag, priority_id, view_id, temporal_id, anchor_pic_flag, 및 inter_view_flag 가 다음 값들을 취할 것이다:
nal_ref_idc 는 집합된 또는 추출된 NAL 유닛들 모두에서 필드의 최고 값으로 설정될 것이다.
non_idr_flag 는 집합된 또는 추출된 NAL 유닛들 모두에서 필드의 최저 값으로 설정될 것이다.
priority_id 및 temporal_id 는 집합된 또는 추출된 NAL 유닛들 모두에서 필드들의 최저 값들로 각각 설정될 것이다.
view_id 는 집합된 또는 추출된 VCL NAL 유닛들 모두 중에서 최저 뷰 순서 인덱스를 갖는 VCL NAL 유닛의 view_id 값으로 설정될 것이다.
anchor_pic_flag 및 inter_view_flag 는 집합된 또는 추출된 VCL NAL 유닛들 모두에서 필드들의 최고 값으로 각각 설정될 것이다.
추출된 또는 집합된 NAL 유닛들의 세트가 비어 있다면, 이들 필드들 각각은 맵핑된 티어 디스크립션을 준수하는 값을 취한다.
A.6 ISO/IEC 23008-2 에 대한 NAL 유닛 헤더 값들
집합자들 및 추출자들 양쪽은 ISO/IEC 23008-2 에 측정된 NAL 유닛 헤더를 이용한다. 추출자에 의해 추출되거나 집합자에 의해 집합된 NAL 유닛들은, 집합자 또는 추출자 NAL 유닛들의 콘텐츠들을 재귀적으로 검사하는 것에 의해 참조 또는 포함되는 이들 NAL 유닛들 모두이다.
다른 필드들 nuh_layer_id 및 nuh_temporal_id_plus1 이 다음과 같이 설정될 것이다:
nuh_layer_id 는 집합된 또는 추출된 NAL 유닛들 모두에서 필드의 최저 값으로 설정될 것이다.
nuh_temporal_id_plus1 은 집합된 또는 추출된 NAL 유닛들 모두에서 필드의 최저 값으로 설정될 것이다.
하나의 대안적인 예에서, 새로운 구조, 테이블, 또는 샘플 그룹은 MV-HEVC WD5 또는 SHVC WD3 의 부록 F 에 정의된 바와 같이 모든 IRAP 액세스 유닛들을 기록하도록 정의된다. 대안적으로, 새로운 구조, 테이블, 또는 샘플 그룹은 MV-HEVC WD5 또는 SHVC WD3 의 부록 F 에 정의된 바와 같이 모든 IRAP 액세스 유닛들을 기록하도록 정의되지만, 코딩된 픽처들 모두가 IRAP 픽처들인 이들 액세스 유닛들을 배제한다. 다른 대안적인 예에서, 동기화 샘플 샘플 그룹 엔트리 SyncSampleEntry 는, 이 그룹에 속하는 샘플에서의 픽처 모두가 IDR 픽처들, CRA 픽처들 또는 BLA 픽처들임을 특정하는 aligned_sync_flag 를 예비된 비트들 중 하나에 포함하도록 재정의된다. 다른 대안적인 예에서, SHVC 및 MV-HEVC 에 대한 공통 파일 포맷은 SHVC 및 MV-HEVC 파일 포맷들로부터의 공통 양태들 모두를 포함하여 정의되고, SHVC 및 MV-HEVC 파일 포맷들만이 단지 그 확장에 관련된 양태들만을 단지 포함하도록 재정의된다. 다른 대안적인 예에서, SHVC 메타데이터 샘플 엔트리 SHVCMetadataSampleEntry 및 SHVCMetadataSampleConfigBox 가 정의되고, 메타데이터 샘플 스테이트먼트 타입 scalabilityInfoSHVCStatement 가 또한 정의된다.
도 2 는 본 개시물에 설명된 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 예시한 블록도이다. 비디오 인코더 (20) 는 단일 뷰, 멀티뷰, 스케일러블, 3D, 및 다른 타입들의 비디오 데이터를 출력하도록 구성될 수도 있다. 비디오 인코더 (20) 는 비디오를 포스트-프로세싱 프로세싱 엔티티 (27) 에 출력하도록 구성될 수도 있다. 포스트-프로세싱 프로세싱 엔티티 (27) 는, 비디오 인코더 (20) 로부터의 인코딩된 비디오 데이터를 프로세싱할 수도 있는, MANE 또는 스플라이싱/편집 디바이스와 같은 비디오 엔티티의 예를 표현하도록 의도된다. 일부 경우들에서, 포스트-프로세싱 프로세싱 엔티티는 네트워크 엔티티의 예일 수도 있다. 일부 비디오 인코딩 시스템들에서, 포스트-프로세싱 엔티티 (27) 및 비디오 인코더 (20) 는 별개의 디바이스들의 부분들일 수도 있지만, 다른 경우들에서, 포스트-프로세싱 엔티티 (27) 에 대해 설명된 기능성은 비디오 인코더 (20) 를 포함하는 동일한 디바이스에 의해 수행될 수도 있다. 포스트-프로세싱 엔티티 (27) 는 비디오 디바이스일 수도 있다. 일부 예들에서, 포스트-프로세싱 엔티티 (27) 는 도 1 의 파일 생성 디바이스 (34) 와 동일할 수도 있다.
비디오 인코더 (20) 는 비디오 슬라이스들 내의 비디오 블록들의 인트라- 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 주어진 비디오 프레임 또는 픽처 내의 비디오에서 공간 리던던시를 감소시키거나 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은 비디오 시퀀스의 인접 프레임들 또는 픽처들 내의 비디오에서 시간 리던던시를 감소시키거나 또는 제거하기 위해 시간 예측에 의존한다. 인트라-모드 (I 모드) 는 몇몇 공간 기반 압축 모드들 중 임의의 압축 모드를 지칭할 수도 있다. 단방향 예측 (P 모드) 또는 양방향 예측 (B 모드) 과 같은 인터-모드들은 몇몇 시간 기반 압축 모드들 중 임의의 압축 모드를 지칭할 수도 있다.
도 2 의 예에서, 비디오 인코더 (20) 는 파티셔닝 유닛 (35), 예측 프로세싱 유닛 (41), 필터 유닛 (63), 참조 픽처 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 예측 프로세싱 유닛 (41) 은 모션 추정 유닛 (42), 모션 보상 유닛 (44), 및 인트라 예측 프로세싱 유닛 (46) 을 포함한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 또한 역양자화 유닛 (58), 역변환 프로세싱 유닛 (60), 및 합산기 (62) 를 포함한다. 필터 유닛 (63) 은 하나 이상의 루프 필터들, 예컨대 디블록킹 필터, 적응 루프 필터 (ALF), 및 샘플 적응 오프셋 (SAO) 필터를 표현하도록 의도된다. 필터 유닛 (63) 은 루프 필터인 것으로서 도 2 에 도시되지만, 다른 구성들에서, 필터 유닛 (63) 은 포스트 루프 필터로서 구현될 수도 있다.
비디오 인코더 (20) 의 비디오 데이터 메모리는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩되는 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리에 저장된 비디오 데이터는, 예를 들어, 비디오 소스 (18) 로부터 획득될 수도 있다. 참조 픽처 메모리 (64) 는, 예를 들어, 인트라- 또는 인터-코딩 모드들에서, 비디오 인코더 (20) 에 의한 비디오 데이터의 인코딩에 있어서의 이용을 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. 비디오 데이터 메모리 및 참조 픽처 메모리 (64) 는 동기 DRAM (SDRAM), 자기저항 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들을 포함하는, 동적 랜덤 액세스 메모리 (DRAM) 와 같은, 임의의 다양한 메모리 디바이스들에 의해 형성될 수도 있다. 비디오 데이터 메모리 및 참조 픽처 메모리 (64) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, 비디오 데이터 메모리는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩 (on-chip) 일 수도 있고, 또는 이들 컴포넌트들에 대해 오프-칩 (off-chip) 일 수도 있다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 비디오 데이터를 수신하고, 파티셔닝 유닛 (35) 은 데이터를 비디오 블록들로 파티셔닝한다. 이 파티셔닝은 또한, 예를 들어, LCU들 및 CU들의 쿼드트리 구조에 따른 비디오 블록 파티셔닝뿐만 아니라, 슬라이스들, 타일들, 또는 다른 보다 큰 유닛들로의 파티셔닝을 포함할 수도 있다. 비디오 인코더 (20) 는 인코딩될 비디오 슬라이스 내의 비디오 블록들을 인코딩하는 컴포넌트들을 일반적으로 예시한다. 슬라이스는 다수의 비디오 블록들로 (그리고 가능하다면 타일들이라고 지칭되는 비디오 블록들의 세트들로) 분할될 수도 있다. 예측 프로세싱 유닛 (41) 은 에러 결과들 (예컨대, 코딩 레이트 및 왜곡의 레벨) 에 기초하여, 현재 비디오 블록에 대해, 복수의 인트라 코딩 모드들 중 하나 또는 복수의 인터 코딩 모드들 중 하나와 같은, 복수의 가능한 코딩 모드들 중 하나를 선택할 수도 있다. 예측 프로세싱 유닛 (41) 은 결과적인 인트라- 또는 인터-코딩된 블록을 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 참조 픽처로서의 이용을 위해 인코딩된 블록을 재구성할 수도 있다.
예측 프로세싱 유닛 (41) 내의 인트라 예측 프로세싱 유닛 (46) 은 공간 압축을 제공하기 위해 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 관련된 현재 비디오 블록의 인트라-예측 코딩을 수행할 수도 있다. 예측 프로세싱 유닛 (41) 내의 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 시간 압축을 제공하기 위해 하나 이상의 참조 픽처들에서의 하나 이상의 예측 블록들에 관련된 현재 비디오 블록의 인터-예측 코딩을 수행한다.
모션 추정 유닛 (42) 은 비디오 시퀀스에 대한 미리 결정된 패턴에 따라 비디오 슬라이스에 대한 인터-예측 모드를 결정하도록 구성될 수도 있다. 미리 결정된 패턴은 시퀀스에서의 비디오 슬라이스들을 P 슬라이스들, B 슬라이스들, 또는 GPB 슬라이스들로서 지정할 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적들을 위해 개별적으로 예시된다. 모션 추정 유닛 (42) 에 의해 수행된 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 예를 들어, 모션 벡터는 참조 픽처 내의 예측 블록에 관련된 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU 의 변위를 나타낼 수도 있다.
예측 블록은, 절대차의 합 (sum of absolute difference; SAD), 제곱차의 합 (sum of square difference; SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는 픽셀 차이의 관점에서 코딩될 비디오 블록의 PU 와 가깝게 매칭시키기 위해 구해지는 블록이다. 일부 예들에서, 비디오 인코더 (20) 는 참조 픽처 메모리 (64) 에 저장된 참조 픽처들의 서브-정수 픽셀 포지션들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 픽처의 1/4 픽셀 포지션들, 1/8 픽셀 포지션들, 또는 다른 분수 픽셀 포지션들의 값들을 보간할 수도 있다. 따라서, 모션 추정 유닛 (42) 은 전체 픽셀 포지션들 및 분수 픽셀 포지션들에 관련된 모션 탐색을 수행할 수도 있고, 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 PU 의 포지션을 참조 픽처의 예측 블록의 포지션과 비교함으로써, 인터-코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를 계산한다. 참조 픽처는 제 1 참조 픽처 리스트 (리스트 0) 또는 제 2 참조 픽처 리스트 (리스트 1) 로부터 선택될 수도 있고, 이들 각각은 참조 픽처 메모리 (64) 에 저장된 하나 이상의 참조 픽처들을 식별한다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 에 전송한다.
모션 보상 유닛 (44) 에 의해 수행된 모션 보상은 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페칭 (fetching) 하거나 생성하여, 가능하다면 서브-픽셀 정밀도로 보간들을 수행하는 것을 수반할 수도 있다. 현재 비디오 블록의 PU 에 대한 모션 벡터의 수신시, 모션 보상 유닛 (44) 은 참조 픽처 리스트들 중 하나에서 모션 벡터가 가리키는 예측 블록을 로케이팅시킬 수도 있다. 비디오 인코더 (20) 는 코딩되고 있는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔차 비디오 블록을 형성할 수도 있다. 픽셀 차이 값들은 블록에 대한 잔차 데이터를 형성하고, 루마 및 크로마 차이 컴포넌트들 양쪽 모두를 포함할 수도 있다. 합산기 (50) 는 이 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 표현한다. 모션 보상 유닛 (44) 은 또한, 비디오 슬라이스의 비디오 블록들을 디코딩함에 있어서 비디오 디코더 (30) 에 의한 이용을 위해 비디오 슬라이스 및 비디오 블록들과 연관된 신택스 엘리먼트들을 생성할 수도 있다.
인트라 예측 프로세싱 유닛 (46) 은, 상술된 바와 같이, 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행된 인터-예측에 대한 대안으로서, 현재 블록을 인트라-예측할 수도 있다. 구체적으로, 인트라 예측 프로세싱 유닛 (46) 은 현재 블록을 인코딩하는데 이용하기 위한 인트라-예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라 예측 프로세싱 유닛 (46) 은, 예를 들어, 별개의 인코딩 패스 (encoding pass) 들 동안, 다양한 인트라-예측 모드들을 이용하여 현재 블록을 인코딩할 수도 있고, 인트라 예측 프로세싱 유닛 (46) (또는 일부 예들에서는, 모드 선택 유닛 (40)) 은 테스팅된 모드들로부터 이용하기에 적절한 인트라-예측 모드를 선택할 수도 있다. 예를 들어, 인트라 예측 프로세싱 유닛 (46) 은 다양한 테스팅된 인트라-예측 모드들에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값들을 계산할 수도 있고, 테스팅된 모드들 중에서 최상의 레이트-왜곡 특성들을 갖는 인트라-예측 모드를 선택할 수도 있다. 레이트-왜곡 분석은 일반적으로, 인코딩된 블록을 생성하기 위해 이용된 비트 레이트 (즉, 비트들의 수) 뿐만 아니라, 인코딩된 블록과, 인코딩된 블록을 생성하기 위해 인코딩되었던 오리지널의 인코딩되지 않은 블록과의 사이의 왜곡 (또는 에러) 의 양을 결정한다. 인트라 예측 프로세싱 유닛 (46) 은 어떠한 인트라-예측 모드가 블록에 대한 최상의 레이트-왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들을 계산할 수도 있다.
어떤 경우에도, 블록에 대한 인트라-예측 모드를 선택한 후에, 인트라 예측 프로세싱 유닛 (46) 은 블록에 대한 선택된 인트라-예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛 (56) 에 제공할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 본 개시물의 기법들에 따라 선택된 인트라-예측 모드를 나타내는 정보를 인코딩할 수도 있다. 비디오 인코더 (20) 는, 복수의 인트라-예측 모드 인덱스 테이블들 및 복수의 수정된 인트라-예측 모드 인덱스 테이블들 (또한 코드워드 맵핑 테이블들이라고도 지칭됨) 을 포함할 수도 있는 송신된 비트스트림 구성 데이터에, 다양한 블록들에 대한 인코딩 콘텍스트들의 정의들과, 콘텍스트들의 각각에 대해 이용하기 위한 가장 가능성있는 인트라-예측 모드, 인트라-예측 모드 인덱스 테이블, 및 수정된 인트라-예측 모드 인덱스 테이블의 표시들을 포함할 수도 있다.
예측 프로세싱 유닛 (41) 이 인터-예측 또는 인트라-예측 중 어느 하나를 통해 현재 비디오 블록에 대한 예측 블록을 생성한 후에, 비디오 인코더 (20) 는 현재 비디오 블록으로부터 예측 블록을 감산함으로써 잔차 비디오 블록을 형성할 수도 있다. 잔차 블록에서의 잔차 비디오 데이터는 하나 이상의 TU들에 포함될 수도 있고 변환 프로세싱 유닛 (52) 에 적용될 수도 있다. 변환 프로세싱 유닛 (52) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수들로 변환한다. 변환 프로세싱 유닛 (52) 은 잔차 비디오 데이터를 픽셀 도메인으로부터, 주파수 도메인과 같은 변환 도메인으로 컨버팅할 수도 있다.
변환 프로세싱 유닛 (52) 은 결과적인 변환 계수들을 양자화 유닛 (54) 에 전송할 수도 있다. 양자화 유닛 (54) 은 비트 레이트를 추가로 감소시키기 위해 변환 계수들을 양자화한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다. 일부 예들에서, 양자화 유닛 (54) 은 그 후에 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수도 있다. 대안적으로, 엔트로피 인코딩 유닛 (56) 이 스캔을 수행할 수도 있다.
양자화에 후속하여, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 표현하는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 콘텍스트 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 2진 산술 코딩 (CABAC), 신택스-기반 콘텍스트-적응 2진 산술 코딩 (SBAC), 확률 간격 파티셔닝 엔트로피 (PIPE) 코딩 또는 다른 엔트로피 인코딩 방법론 또는 기법을 수행할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 인코딩에 후속하여, 인코딩된 비트스트림은 비디오 디코더 (30) 로 송신될 수도 있거나, 또는 비디오 디코더 (30) 에 의한 추후 송신 또는 취출을 위해 아카이브될 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한, 코딩되고 있는 현재 비디오 슬라이스에 대한 모션 벡터들 및 다른 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
역양자화 유닛 (58) 및 역변환 프로세싱 유닛 (60) 은 참조 픽처의 참조 블록으로서의 추후 이용을 위해 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역양자화 및 역변환을 각각 적용한다. 모션 보상 유닛 (44) 은 잔차 블록을 참조 픽처 리스트들 중 하나 내에서의 참조 픽처들 중 하나의 참조 픽처의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 그 재구성된 잔차 블록에 적용하여 모션 추정에의 이용을 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 재구성된 잔차 블록을 모션 보상 유닛 (44) 에 의해 생성되는 모션 보상된 예측 블록에 가산하여, 참조 픽처 메모리 (64) 에의 저장을 위한 참조 블록을 생성한다. 참조 블록은 후속 비디오 프레임 또는 픽처에서의 블록을 인터-예측하기 위해 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 참조 블록으로서 이용될 수도 있다.
비디오 인코더 (20) 는 본 개시물에 설명된 파일 포맷 기법들을 이용하여 저장될 수도 있는 비디오 데이터를 생성하도록 구성된 비디오 코더의 예를 표현한다.
도 3 은 본 개시물에 설명된 기법들을 구현할 수도 있는 예시적인 비디오 디코더 (30) 를 예시한 블록도이다. 비디오 디코더 (30) 는 단일 뷰, 멀티뷰, 스케일러블, 3D, 및 다른 타입들의 비디오 데이터를 디코딩하도록 구성될 수도 있다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (80), 예측 프로세싱 유닛 (81), 역양자화 유닛 (86), 역변환 프로세싱 유닛 (88), 합산기 (90), 필터 유닛 (91), 및 참조 픽처 메모리 (92) 를 포함한다. 예측 프로세싱 유닛 (81) 은 모션 보상 유닛 (82) 및 인트라 예측 프로세싱 유닛 (84) 을 포함한다. 비디오 디코더 (30) 는, 일부 예들에서, 도 2 로부터의 비디오 인코더 (20) 에 대해 설명된 인코딩 패스와는 일반적으로 상반되는 디코딩 패스를 수행할 수도 있다.
코딩된 픽처 버퍼 (CPB; 79) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신 및 저장할 수도 있다. CPB (79) 에 저장된 비디오 데이터는, 예를 들어, 링크 (16) 로부터, 예를 들어, 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리적 데이터 저장 매체들에 액세스함으로써 획득될 수도 있다. CPB (79) 는 인코딩된 비디오 비트스트림으로부터의 인코딩된 비디오 데이터를 저장하는 비디오 데이터 메모리를 형성할 수도 있다. CPB (79) 는, 예를 들어, 인트라- 또는 인터-코딩 모드들에서, 비디오 디코더 (30) 에 의한 비디오 데이터의 디코딩에 있어서의 이용을 위해 참조 비디오 데이터를 저장하는 참조 픽처 메모리일 수도 있다. CPB (79) 및 참조 픽처 메모리 (92) 는 동기 DRAM (SDRAM), 자기저항 RAM (MRAM), 저항성 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들을 포함하는, 동적 랜덤 액세스 메모리 (DRAM) 와 같은, 임의의 다양한 메모리 디바이스들에 의해 형성될 수도 있다. CPB (79) 및 참조 픽처 메모리 (92) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 다양한 예들에서, CPB (79) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩일 수도 있고, 또는 이들 컴포넌트들에 대해 오프-칩일 수도 있다.
디코딩 프로세스 동안, 비디오 디코더 (30) 는 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 표현하는 인코딩된 비디오 비트스트림을 비디오 인코더 (20) 로부터 수신한다. 비디오 디코더 (30) 는 네트워크 엔티티 (29) 로부터 인코딩된 비디오 비트스트림을 수신할 수도 있다. 네트워크 엔티티 (29) 는, 예를 들어, 서버, MANE, 비디오 편집기/스플라이서, 또는 상술된 기법들 중 하나 이상을 구현하도록 구성된 이러한 다른 디바이스일 수도 있다. 네트워크 엔티티 (29) 는 비디오 인코더 (20) 와 같은 비디오 인코더를 포함할 수도 있고 또는 포함하지 않을 수도 있다. 본 개시물에서 설명된 기법들 중 일부는, 네트워크 엔티티 (29) 가 인코딩된 비디오 비트스트림을 비디오 디코더 (30) 에 송신하기 이전에 네트워크 엔티티 (29) 에 의해 구현될 수도 있다. 일부 비디오 디코딩 시스템들에서, 네트워크 엔티티 (29) 및 비디오 디코더 (30) 는 별개의 디바이스들의 부분들일 수도 있지만, 다른 경우들에서, 네트워크 엔티티 (29) 에 대해 설명된 기능성은 비디오 디코더 (30) 를 포함하는 동일한 디바이스에 의해 수행될 수도 있다. 네트워크 엔티티 (29) 는 비디오 디바이스인 것으로 간주될 수도 있다. 더욱이, 일부 예들에서, 네트워크 엔티티 (29) 는 도 1 의 파일 생성 디바이스 (34) 이다.
비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (80) 은 비트스트림의 특정 신택스 엘리먼트들을 엔트로피 디코딩하여, 양자화된 계수들, 모션 벡터들, 및 다른 신택스 엘리먼트들을 생성한다. 엔트로피 디코딩 유닛 (80) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 예측 프로세싱 유닛 (81) 으로 포워딩한다. 비디오 디코더 (30) 는 신택스 엘리먼트들을 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 수신할 수도 있다.
비디오 슬라이스가 인트라-코딩된 (I) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛 (81) 의 인트라 예측 프로세싱 유닛 (84) 은 시그널링된 인트라 예측 모드 및 현재 프레임 또는 픽처의 이전에 디코딩된 블록들로부터의 데이터에 기초하여, 현재 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 생성할 수도 있다. 비디오 프레임이 인터-코딩된 (즉, B, P 또는 GPB) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛 (81) 의 모션 보상 유닛 (82) 은 엔트로피 디코딩 유닛 (80) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 참조 픽처 리스트들 중 하나 내의 참조 픽처들 중 하나로부터 생성될 수도 있다. 비디오 디코더 (30) 는 참조 픽처 메모리 (92) 에 저장된 참조 픽처들에 기초한 디폴트 구성 기법들을 이용하여, 참조 프레임 리스트들, 즉, 리스트 0 및 리스트 1 를 구성할 수도 있다.
모션 보상 유닛 (82) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 그 예측 정보를 이용하여 디코딩되고 있는 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (82) 은, 그 수신된 신택스 엘리먼트들 중 일부를 이용하여 비디오 슬라이스의 비디오 블록들을 코딩하기 위해 이용되는 예측 모드 (예를 들어, 인트라- 또는 인터-예측), 인터-예측 슬라이스 타입 (예를 들어, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 리스트들 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터-인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터-코딩된 비디오 블록에 대한 인터-예측 상태, 및 현재 비디오 슬라이스에서의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정한다.
모션 보상 유닛 (82) 은 또한 보간 필터들에 기초하여 보간을 수행할 수도 있다. 모션 보상 유닛 (82) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 이용되는 것과 같은 보간 필터들을 이용하여 참조 블록들의 서브-정수 픽셀들에 대해 보간된 값들을 계산할 수도 있다. 이 경우, 모션 보상 유닛 (82) 은 수신된 신택스 엘리먼트들로부터 비디오 인코더 (20) 에 의해 이용되는 보간 필터들을 결정할 수도 있고 그 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
역양자화 유닛 (86) 은 비트스트림에서 제공되며 엔트로피 디코딩 유닛 (80) 에 의해 디코딩된 양자화된 변환 계수들을 역양자화한다, 즉, 양자화해제한다. 역양자화 프로세스는 양자화의 정도, 그리고, 이와 마찬가지로, 적용되어야 하는 역양자화의 정도를 결정하기 위해, 비디오 슬라이스에서의 각각의 비디오 블록에 대해 비디오 인코더 (20) 에 의해 계산된 양자화 파라미터의 이용을 포함할 수도 있다. 역변환 프로세싱 유닛 (88) 은, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스와 같은 역변환을 변환 계수들에 적용하여 픽셀 도메인에서 잔차 블록들을 생성한다.
모션 보상 유닛 (82) 이 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한 후에, 비디오 디코더 (30) 는 역변환 프로세싱 유닛 (88) 으로부터의 잔차 블록들을 모션 보상 유닛 (82) 에 의해 생성된 대응하는 예측 블록들과 합산함으로써, 디코딩된 비디오 블록을 형성한다. 합산기 (90) 는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 표현한다. 원한다면, (코딩 루프 중에 또는 코딩 루프 후에) 루프 필터들이 또한 픽셀 천이들을 평활화하거나, 또는 이와 다르게는 비디오 품질을 개선시키기 위해 이용될 수도 있다. 필터 유닛 (91) 은 하나 이상의 루프 필터들, 예컨대 디블록킹 필터, 적응 루프 필터 (ALF), 및 샘플 적응 오프셋 (SAO) 필터를 표현하도록 의도된다. 필터 유닛 (91) 은 루프 필터인 것으로서 도 3 에 도시되지만, 다른 구성들에서, 필터 유닛 (91) 은 포스트 루프 필터로서 구현될 수도 있다. 주어진 프레임 또는 픽처에서 디코딩된 비디오 블록들은 그 후에 후속 모션 보상을 위해 이용되는 참조 픽처들을 저장하는 참조 픽처 메모리 (92) 에 저장된다. 참조 픽처 메모리 (92) 는 또한 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상의 추후 프리젠테이션을 위해 디코딩된 비디오를 저장한다.
도 3 의 비디오 디코더 (30) 는 본 개시물에 설명된 파일 포맷 기법들을 이용하여 저장될 수도 있는 비디오 데이터를 디코딩하도록 구성된 비디오 디코더의 예를 표현한다.
도 4 는 네트워크 (100) 의 부분을 형성하는 디바이스들의 예시적인 세트를 예시한 블록도이다. 이 예에서, 네트워크 (100) 는 라우팅 디바이스들 (104A, 104B) (라우팅 디바이스들 (104)) 및 트랜스코딩 디바이스 (106) 를 포함한다. 라우팅 디바이스들 (104) 및 트랜스코딩 디바이스 (106) 는 네트워크 (100) 의 부분을 형성할 수도 있는 작은 수의 디바이스들을 표현하도록 의도된다. 스위치들, 허브들, 게이트웨이들, 방화벽들, 브리지들, 및 다른 이러한 디바이스들과 같은 다른 네트워크 디바이스들이 네트워크 (100) 내에 또한 포함될 수도 있다. 더욱이, 부가적인 네트워크 디바이스들이 서버 디바이스 (102) 와 클라이언트 디바이스 (108) 사이의 네트워크 경로를 따라 제공될 수도 있다. 일부 예들에서, 서버 디바이스 (102) 는 소스 디바이스 (12) (도 1) 에 대응할 수도 있는 한편, 클라이언트 디바이스 (108) 는 목적지 디바이스 (14) (도 1) 에 대응할 수도 있다.
일반적으로, 라우팅 디바이스들 (104) 은 네트워크 (100) 를 통해 네트워크 데이터를 교환하기 위해 하나 이상의 라우팅 프로토콜들을 구현한다. 일부 예들에서, 라우팅 디바이스들 (104) 은 프록시 또는 캐시 동작들을 수행하도록 구성될 수도 있다. 따라서, 일부 예들에서, 라우팅 디바이스들 (104) 은 프록시 디바이스들이라고 지칭될 수도 있다. 일반적으로, 라우팅 디바이스들 (104) 은 네트워크 (100) 를 통해 루트들을 발견하기 위해 라우팅 프로토콜들을 실행한다. 이러한 라우팅 프로토콜들을 실행함으로써, 라우팅 디바이스 (104B) 는 라우팅 디바이스 (104A) 를 통해 그 자신으로부터 서버 디바이스 (102) 까지의 네트워크 루트를 발견할 수도 있다.
본 개시물의 기법들은 라우팅 디바이스들 (104) 및 트랜스코딩 디바이스 (106) 와 같은 네트워크 디바이스들에 의해 구현될 수도 있지만, 또한 클라이언트 디바이스 (108) 에 의해 구현될 수도 있다. 이러한 방식으로, 라우팅 디바이스들 (104), 트랜스코딩 디바이스 (106), 및 클라이언트 디바이스 (108) 는 본 개시물의 기법들을 수행하도록 구성된 디바이스들의 예들을 표현한다. 더욱이, 도 1 의 디바이스들과, 도 2 에 예시된 인코더 (20) 및 도 3 에 예시된 디코더 (30) 는 또한, 본 개시물의 기법들 중 하나 이상을 수행하도록 구성될 수 있는 디바이스들의 예들이다.
도 5 는 본 개시물의 하나 이상의 기법들에 따른, 파일 (300) 의 예시적인 구조를 예시한 개념도이다. 도 5 의 예에서, 파일 (300) 은 무비 박스 (302) 및 복수의 미디어 데이터 박스들 (304) 을 포함한다. 동일한 파일에 있는 것으로서 도 5 의 예에 예시되었지만, 다른 예들에서 무비 박스 (302) 및 미디어 데이터 박스들 (304) 은 별개의 파일들에 있을 수도 있다. 위에 나타낸 바와 같이, 박스는 고유한 타입 식별자 및 길이에 의해 정의된 오브젝트-배향된 빌딩 블록일 수도 있다. 예를 들어, 박스는, 4-문자 코딩된 박스 타입, 박스의 바이트 카운트, 및 페이로드를 포함하는, ISOBMFF 에서의 기본 신택스 구조일 수도 있다.
무비 박스 (302) 는 파일 (300) 의 트랙들에 대한 메타데이터를 포함할 수도 있다. 파일 (300) 의 각각의 트랙은 미디어 데이터의 연속적인 스트림을 포함할 수도 있다. 미디어 데이터 박스들 (304) 각각은 하나 이상의 샘플들 (305) 을 포함할 수도 있다. 샘플들 (305) 각각은 오디오 또는 비디오 액세스 유닛을 포함할 수도 있다. 본 개시물에서의 다른 곳에서 설명된 바와 같이, 각각의 액세스 유닛은 멀티-뷰 코딩 (예를 들어, MV-HEVC 및 3D-HEVC) 및 스케일러블 비디오 코딩 (예를 들어, SHVC) 에서 다수의 코딩된 픽처들을 포함할 수도 있다. 예를 들어, 액세스 유닛은 각각의 레이어에 대한 하나 이상의 코딩된 픽처들을 포함할 수도 있다.
더욱이, 도 5 의 예에서, 무비 박스 (302) 는 트랙 박스 (306) 를 포함한다. 트랙 박스 (306) 는 파일 (300) 의 트랙에 대한 메타데이터를 인클로징할 수도 있다. 다른 예들에서, 무비 박스 (302) 는 파일 (300) 의 상이한 트랙들에 대한 다수의 트랙 박스들을 포함할 수도 있다. 트랙 박스 (306) 는 미디어 박스 (307) 를 포함한다. 미디어 박스 (307) 는 트랙 내의 미디어 데이터에 관한 정보를 선언하는 모든 오브젝트들을 포함할 수도 있다. 미디어 박스 (307) 는 미디어 정보 박스 (308) 를 포함한다. 미디어 정보 박스 (308) 는 트랙이 미디어의 특성 정보를 선언하는 모든 오브젝트들을 포함할 수도 있다. 미디어 정보 박스 (308) 는 샘플 테이블 박스 (309) 를 포함한다. 샘플 테이블 박스 (308) 는 샘플-특정 메타데이터를 특정할 수도 있다.
도 5 의 예에서, 샘플 테이블 박스 (309) 는 SampleToGroup 박스 (310) 및 SampleGroupDescription 박스 (312) 를 포함한다. 다른 예들에서, 샘플 테이블 박스 (309) 는 SampleToGroup 박스 (310) 및 SampleGroupDescription 박스 (312) 에 부가적으로 다른 박스들을 포함할 수도 있거나, 및/또는 다수의 SampleToGroup 박스들 및 SampleGroupDescription 박스들을 포함할 수도 있다. SampleToGroup 박스 (310) 는 샘플들 (예를 들어, 샘플들 (305) 중 특정한 것들) 을 샘플들의 그룹에 맵핑시킬 수도 있다. SampleGroupDescription 박스 (312) 는 샘플들의 그룹 (즉, 샘플 그룹) 에서의 샘플들에 의해 공유되는 속성을 특정할 수도 있다. 더욱이, 샘플 테이블 박스 (309) 는 복수의 샘플 엔트리 박스들 (311) 을 포함할 수도 있다. 샘플 엔트리 박스들 (311) 각각은 샘플들의 그룹에서의 샘플에 대응할 수도 있다. 일부 예들에서, 샘플 엔트리 박스들 (311) 은 위의 섹션 9.5.5.1.2 에 정의된 바와 같이 베이스 샘플 그룹 디스크립션 클래스를 확장한 랜덤 액세스가능 샘플 엔트리 클래스의 인스턴스들이다.
본 개시물의 하나 이상의 기법들에 따르면, SampleGroupDescription 박스 (312) 는 샘플 그룹의 각각의 샘플이 적어도 하나의 IRAP 픽처를 포함함을 특정할 수도 있다. 이러한 방법으로, 파일 생성 디바이스 (34) 는 파일 (300) 에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스 (306) 를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들 (305) 의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터 (예를 들어, SHVC, MV-HEVC, 또는 3D-HEVC 비디오 데이터) 의 비디오 액세스 유닛일 수도 있다. 더욱이, 파일 (300) 을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 파일 (300) 에, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 (305) 모두를 기록하는 부가적 박스 (즉, 샘플 테이블 박스 (309)) 를 생성할 수도 있다. 다시 말해, 부가적 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 (305) 모두를 식별한다. 도 5 의 예에서, 부가적 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 (305) 모두를 기록하는 (예를 들어, 식별하는) 샘플 그룹을 정의한다. 다시 말해, 부가적 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 (305) 이 샘플 그룹에 속함을 특정한다.
더욱이, 본 개시물의 하나 이상의 기법들에 따르면, 샘플 엔트리 박스들 (311) 각각은 대응하는 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 나타내는 값 (예를 들어, all_pics_are_IRAP) 을 포함할 수도 있다. 일부 예들에서, 1 과 동일한 값은 샘플에서의 코딩된 픽처 모두가 IRAP 픽처들은 아닌 것임을 특정한다. 0 과 동일한 값은 샘플 그룹의 각각의 샘플에서의 각각의 코딩된 픽처가 IRAP 픽처라는 것이 요구되지 않음을 특정한다.
일부 예들에서, 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들은 아닐 때, 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리 박스들 (311) 중 하나에, 특정 샘플에서의 IRAP 픽처들의 수를 나타내는 값 (예를 들어, num_IRAP_pics) 을 포함시킬 수도 있다. 부가적으로, 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플에서의 IRAP 픽처들의 레이어 식별자들을 나타내는 값들을 포함시킬 수도 있다. 파일 생성 디바이스 (34) 는 또한, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플의 IRAP 픽처들에서의 VCL NAL 유닛들의 NAL 유닛 타입을 나타내는 값을 포함시킬 수도 있다.
더욱이, 도 5 의 예에서, 샘플 테이블 박스 (309) 는 서브-샘플 정보 박스 (314) 를 포함한다. 도 5 의 예가 단지 하나의 서브-샘플 정보 박스를 도시하지만, 샘플 테이블 박스 (309) 는 다수의 서브-샘플 정보 박스들을 포함할 수도 있다. 일반적으로, 서브-샘플 정보 박스는 서브-샘플 정보를 포함하도록 설계된다. 서브-샘플은 샘플의 바이트들의 인접한 범위이다. ISO/IEC 14496-12 는 서브-샘플의 특정 정의가 H.264/AVC 또는 HEVC 와 같은 주어진 코딩 시스템에 대해 제공될 것임을 나타낸다.
ISO/IEC 14496-15 의 섹션 8.4.8 은 HEVC 에 대한 서브-샘플의 정의를 특정한다. 구체적으로는, ISO/IEC 14496-15 의 섹션 8.4.8 은, HEVC 스트림에서의 서브-샘플 정보 박스 (ISO/IEC 14496-12 의 8.7.7) 의 이용을 위해, 서브-샘플은 서브-샘플 정보 박스의 플래그들 필드의 값에 기초하여 정의됨을 특정한다. 본 개시물의 하나 이상의 기법들에 따르면, 서브-샘플 정보 박스 (314) 에서의 플래그들 필드가 5 와 동일한 경우, 서브-샘플 정보 박스 (314) 에 대응하는 서브-샘플은 하나의 코딩된 픽처 및 연관된 논-VCL NAL 유닛들을 포함한다. 연관된 논-VCL NAL 유닛들은, 코딩된 픽처에 적용가능한 SEI 메시지들을 포함하는 NAL 유닛들, 및 코딩된 픽처에 적용가능한 파라미터 세트들 (예를 들어, VPS들, SPS들, PPS들 등) 을 포함하는 NAL 유닛들을 포함할 수도 있다.
따라서, 하나의 예에서, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스 (예를 들어, 트랙 박스 (306)) 를 포함하는 파일 (예를 들어, 파일 (300)) 을 생성할 수도 있다. 이 예에서, 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함하고, 샘플들 각각은 멀티-레이어 비디오 데이터 (예를 들어, SHVC, MV-HEVC, 또는 3D-HEVC 비디오 데이터) 의 비디오 액세스 유닛이다. 더욱이, 이 예에서, 파일 생성 디바이스 (34) 가 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 파일에, 서브-샘플 정보 박스에 주어진 서브-샘플 정보의 타입을 특정하는 플래그들을 포함하는 서브-샘플 정보 박스 (예를 들어, 서브-샘플 정보 박스 (314)) 를 생성할 수도 있다. 플래그들이 특정 값을 가질 때, 서브-샘플 정보 박스에 대응하는 서브-샘플은, 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함한다.
더욱이, 본 개시물의 하나 이상의 기법들에 따르면, 서브-샘플 정보 박스 (314) 의 플래그들 필드가 0 과 동일한 경우, 서브-샘플 정보 박스 (314) 는 DiscardableFlag 값, NoInterLayerPredFlag 값, LayerId 값, 및 TempId 값을 더 포함한다. 서브-샘플 정보 박스 (314) 의 플래그들 필드가 5 와 동일한 경우, 서브-샘플 정보 박스 (314) 는 DiscardableFlag 값, VclNalUnitType 값, LayerId 값, TempId 값, NoInterLayerPredFlag 값, SubLayerRefNalUnitFlag 값, 및 예비된 값을 포함할 수도 있다.
0 과 동일한 SubLayerRefNalUnitFlag 는 서브-샘플에서의 모든 NAL 유닛들이 ISO/IEC 23008-2 (즉, HEVC) 에 특정된 바와 같이 서브-레이어 논-참조 픽처의 VCL NAL 유닛들임을 나타낸다. 1 과 동일한 SubLayerRefNalUnitFlag 는 서브-샘플에서의 모든 NAL 유닛들이 ISO/IEC 23008-2 (즉, HEVC) 에 특정된 바와 같이 서브-레이어 참조 픽처의 VCL NAL 유닛들임을 나타낸다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 서브-샘플에서의 모든 NAL 유닛들이 서브-레이어 논-참조 픽처의 VCL NAL 유닛들인지 여부를 나타내는 부가적 플래그를 포함시킨다.
DiscardableFlag 값은 서브-샘플에서의 VCL NAL 유닛들의 discardable_flag 값의 값을 나타낸다. ISO/IEC 14496-15 의 섹션 A.4 에 특정된 바와 같이, discardable_flag 값은, 추출된 또는 집합된 NAL 유닛들 모두가 1 로 설정된 discardable_flag 를 갖는 경우 그리고 그 경우에만 1 로 설정될 것이고, 그렇지 않으면 0 으로 설정될 것이다. NAL 유닛은 NAL 유닛을 포함하는 비트스트림이 NAL 유닛 없이 올바르게 디코딩될 수도 있는 경우 1 로 설정된 discardable_flag 를 가질 수도 있다. 따라서, NAL 유닛은 NAL 유닛을 포함하는 비트스트림이 NAL 유닛 없이 올바르게 디코딩될 수도 있는 경우 "폐기가능" 할 수도 있다. 서브-샘플에서의 VCL NAL 유닛들 모두는 동일한 discardable_flag 값을 가질 것이다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 서브-샘플의 VCL NAL 유닛들 모두가 폐기가능한지 여부를 나타내는 부가적 플래그 (예를 들어, discardable_flag) 를 포함시킨다.
NoInterLayerPredFlag 값은 서브-샘플에서의 VCL NAL 유닛들의 inter_layer_pred_enabled_flag 값을 나타낸다. inter_layer_pred_enabled_flag 는, 추출된 또는 집합된 VCL NAL 유닛들 모두가 1 로 설정된 inter_layer_pred_enabled_flag 를 갖는 경우 그리고 그 경우에만 1 로 설정될 것이고, 그렇지 않으면 0 으로 설정될 것이다. 서브-샘플에서의 VCL NAL 유닛들 모두는 동일한 값의 inter_layer_pred_enabled_flag 를 가질 것이다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 인터-레이어 예측이 서브-샘플의 VCL NAL 유닛들 모두에 대해 가능하게 되는지 여부를 나타내는 부가적 값 (예를 들어, inter_layer_pred_enabled_flag) 을 포함시킨다.
LayerId 는 서브-샘플에서의 NAL 유닛들의 nuh_layer_id 값을 나타낸다. 서브-샘플에서의 NAL 유닛들 모두는 동일한 nuh_layer_id 값을 가질 것이다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 서브-샘플의 각각의 NAL 유닛의 레이어 식별자를 나타내는 부가적 값 (예를 들어, LayerId) 을 포함시킨다.
TempId 는 서브-샘플에서의 NAL 유닛들의 TemporalId 값을 나타낸다. 서브-샘플에서의 NAL 유닛들 모두는 동일한 TemporalId 값을 가질 것이다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 서브-샘플의 각각의 NAL 유닛의 시간 식별자를 나타내는 부가적 값 (예를 들어, TempId) 을 포함시킨다.
VclNalUnitType 은 서브-샘플에서의 VCL NAL 유닛들의 nal_unit_type 신택스 엘리먼트를 나타낸다. nal_unit_type 신택스 엘리먼트는 NAL 유닛의 NAL 유닛 헤더에서의 신택스 엘리먼트이다. nal_unit_type 신택스 엘리먼트는 NAL 유닛에 포함된 RBSP 의 타입을 특정한다. 서브-샘플에서의 nal_unit_type VCL NAL 유닛들 모두는 동일한 nal_unit_type 값을 가질 것이다. 따라서, 파일 생성 디바이스 (34) 가 서브-샘플 정보 박스 (314) 를 생성하고 플래그들이 특정 값 (예를 들어, 5) 을 가질 때, 파일 생성 디바이스 (34) 는, 서브-샘플 정보 박스 (314) 에, 서브-샘플의 VCL NAL 유닛들의 NAL 유닛 타입을 나타내는 부가적 값 (예를 들어, VclNalUnitType) 을 포함시킨다. 서브-샘플의 VCL NAL 유닛들 모두는 동일한 NAL 유닛 타입을 갖는다.
도 6 은 본 개시물의 하나 이상의 기법들에 따른, 파일 (300) 의 예시적인 구조를 예시한 개념도이다. ISO/IEC 14496-15 의 섹션 8.4.9 에 특정된 바와 같이, HEVC 는 출력이 아닌 참조를 위해서만 이용되는 파일 포맷 샘플들을 허용한다. 예를 들어, HEVC 는 비디오에서의 논-디스플레이된 참조 픽처를 허용한다.
더욱이, ISO/IEC 14496-15 의 섹션 8.4.9 는 임의의 이러한 논-출력 샘플이 트랙에 존재할 때, 파일은 다음과 같이 제약될 것임을 특정한다.
1. 논-출력 샘플은 출력되는 샘플들의 시간-범위 밖에 있는 조성 시간이 주어질 것이다.
2. 편집 리스트는 논-출력 샘플들의 조성 시간들을 배제하는데 이용될 것이다.
3. 트랙이 CompositionOffsetBox ('ctts') 를 포함할 때,
a. CompositionOffsetBox 의 버전 1 이 이용될 것이다,
b. sample_offset 의 값이 각각의 논-출력 샘플에 대해 -231 과 동일하게 설정될 것이다,
c. CompositionToDecodeBox ('cslg') 는 트랙의 SampleTableBox ('stbl') 에 포함되어야 한다, 그리고
d. CompositionToDecodeBox 가 트랙에 대해 존재할 때, 박스에서의 leastDecodeToDisplayDelta 필드의 값은 논-출력 샘플들에 대한 sample_offset 값들을 배제한 CompositionOffsetBox 에서의 최소 조성 오프셋과 동일할 것이다.
주의: 따라서, leastDecodeToDisplayDelta 는 -231 보다 더 크다.
ISO/IEC 14496-12 에 특정된 바와 같이, CompositionOffsetBox 는 디코딩 시간과 조성 시간 사이의 오프셋을 제공한다. CompositionOffsetBox 는 sample_offset 값들의 세트를 포함한다. sample_offset 값들 각각은 조성 시간과 디코딩 시간 사이의 오프셋을 제공하는 음이 아닌 정수이다. 조성 시간은 샘플이 출력되어야 하는 시간을 지칭한다. 디코딩 시간은 샘플이 디코딩되어야 하는 시간을 지칭한다.
위에 나타낸 바와 같이, 코딩된 슬라이스 NAL 유닛은 슬라이스 세그먼트 헤더를 포함할 수도 있다. 슬라이스 세그먼트 헤더는 코딩된 슬라이스 세그먼트의 부분일 수도 있고 슬라이스 세그먼트에서 제 1 또는 모든 CTU들에 관계된 데이터 엘리먼트들을 포함할 수도 있다. HEVC 에서, 슬라이스 세그먼트 헤더는 pic_output_flag 신택스 엘리먼트를 포함한다. 일반적으로, pic_output_flag 신택스 엘리먼트는 픽처의 슬라이스의 제 1 슬라이스 세그먼트 헤더에 포함된다. 따라서, 본 개시물은 픽처의 pic_output_flag 로서 픽처의 슬라이스의 제 1 슬라이스 세그먼트 헤더의 pic_output_flag 를 지칭할 수도 있다.
HEVC WD 의 섹션 7.4.7.1 에 특정된 바와 같이, pic_output_flag 신택스 엘리먼트는 HEVC WD 의 부록 C 에 특정된 바와 같이 디코딩된 픽처 출력 및 제거 프로세스들에 영향을 미친다. 일반적으로, 슬라이스 세그먼트에 대한 슬라이스 세그먼트 헤더의 pic_output_flag 신택스 엘리먼트가 1 인 경우, 슬라이스 세그먼트 헤더에 대응하는 슬라이스를 포함하는 픽처는 출력된다. 그렇지 않으면, 슬라이스 세그먼트에 대한 슬라이스 세그먼트 헤더의 pic_output_flag 신택스 엘리먼트가 0 인 경우, 슬라이스 세그먼트 헤더에 대응하는 슬라이스를 포함하는 픽처는 참조 픽처로서의 이용을 위해 디코딩될 수도 있지만 출력되지 않는다.
본 개시물의 하나 이상의 기법들에 따르면, HEVC 에 대한 ISO/IEC 14496-15 의 섹션 8.4.9 에서의 참조들은 SHVC, MV-HEVC, 또는 3D-HEVC 에 대한 대응하는 참조들로 대체될 수도 있다. 더욱이, 본 개시물의 하나 이상의 기법들에 따르면, 액세스 유닛이 1 과 동일한 pic_output_flag 를 갖는 일부 코딩된 픽처들 및 0 과 동일한 pic_output_flag 를 갖는 일부 다른 코딩된 픽처들을 포함할 때, 적어도 2 개의 트랙들은 스트림을 저장하는데 이용되어야 한다. 트랙들 중 각각의 하나의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 pic_output_flag 를 갖는다. 따라서, 트랙들 중 첫 번째 트랙에서의 코딩된 픽처들 모두가 0 과 동일한 pic_output_flag 를 가지며, 트랙들 중 두 번째 트랙에서의 코딩된 픽처들 모두가 1 과 동일한 pic_output_flag 를 갖는다.
이에 따라, 도 6 의 예에서, 파일 생성 디바이스 (34) 는 파일 (400) 을 생성할 수도 있다. 도 5 의 예에서의 파일 (300) 과 유사하게, 파일 (400) 은 무비 박스 (402) 및 하나 이상의 미디어 데이터 박스들 (404) 을 포함한다. 미디어 데이터 박스들 (404) 각각은 파일 (400) 의 상이한 트랙에 대응할 수도 있다. 무비 박스 (402) 는 파일 (400) 의 트랙들에 대한 메타데이터를 포함할 수도 있다. 파일 (400) 의 각각의 트랙은 미디어 데이터의 연속적인 스트림을 포함할 수도 있다. 미디어 데이터 박스들 (404) 각각은 하나 이상의 샘플들 (405) 을 포함할 수도 있다. 샘플들 (405) 각각은 오디오 또는 비디오 액세스 유닛을 포함할 수도 있다.
위에 나타낸 바와 같이, 일부 예들에서, 액세스 유닛이 1 과 동일한 pic_output_flag 를 갖는 일부 코딩된 픽처들 및 0 과 동일한 pic_output_flag 를 갖는 일부 다른 코딩된 픽처들을 포함할 때, 적어도 2 개의 트랙들은 스트림을 저장하는데 이용되어야 한다. 이에 따라, 도 6 의 예에서, 무비 박스 (402) 는 트랙 박스 (406) 및 트랙 박스 (408) 를 포함한다. 트랙 박스들 (406 및 408) 각각은 파일 (400) 의 상이한 트랙에 대한 메타데이터를 인클로징한다. 예를 들어, 트랙 박스 (406) 는 0 과 동일한 pic_output_flag 를 갖는 코딩된 픽처들을 가지며 1 과 동일한 pic_output_flag 를 갖는 어떠한 픽처들도 갖지 않는 트랙에 대한 메타데이터를 인클로징할 수도 있다. 트랙 박스 (408) 는 1 과 동일한 pic_output_flag 를 갖는 코딩된 픽처들을 가지며 0 과 동일한 pic_output_flag 를 갖는 어떠한 픽처들도 갖지 않는 트랙에 대한 메타데이터를 인클로징할 수도 있다.
따라서, 하나의 예에서, 파일 생성 디바이스 (34) 는 미디어 콘텐츠를 인클로징하는 (예를 들어, 대응하는) 미디어 데이터 박스 (예를 들어, 미디어 데이터 박스 (404)) 를 포함하는 파일 (예를 들어, 파일 (400)) 을 생성할 수도 있다. 미디어 콘텐츠는 샘플들 (예를 들어, 샘플들 (405)) 의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛일 수도 있다. 이 예에서, 파일 생성 디바이스 (34) 가 파일을 생성할 때, 비트스트림의 적어도 하나의 액세스 유닛이 1 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 0 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 파일 생성 디바이스 (34) 는 적어도 2 개의 트랙들을 이용하여 파일에 비트스트림을 저장할 수도 있다. 적어도 2 개의 트랙들로부터의 각각의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다. 1 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 0 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
도 7 은 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스 (34) 의 예시적인 동작을 예시한 플로우차트이다. 도 7 의 동작은, 본 개시물의 다른 플로우차트들에 예시된 동작들과 함께, 예들이다. 본 개시물의 기법들에 따른 다른 예시적인 동작들은 보다 많거나, 보다 적거나, 또는 상이한 액션들을 포함할 수도 있다.
도 7 의 예에서, 파일 생성 디바이스 (34) 는 파일을 생성한다 (500). 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 생성한다 (502). 이러한 방법으로, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성한다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다. 일부 예들에서, 파일 생성 디바이스 (34) 는 멀티-레이어 비디오 데이터를 인코딩한다.
더욱이, 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 식별한다 (504). 부가적으로, 파일 생성 디바이스 (34) 는, 파일에, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록하는 부가적 박스를 생성할 수도 있다 (506). 일부 예들에서, 부가적 박스는 ISOBMFF 및 그의 기존 확장들에 정의되지 않은 새로운 박스이다. 일부 예들에서, 부가적 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록하는 샘플 그룹을 정의한다. 예를 들어, 부가적 박스는 SampleToGroup 박스 및 SampleGroupDescription 박스를 포함하는 샘플 테이블 박스일 수도 있거나 또는 그 샘플 테이블 박스를 포함할 수도 있다. SampleToGroup 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들을 식별한다. SampleGroupDescription 박스는 샘플 그룹이 적어도 하나의 IRAP 픽처를 포함하는 샘플들의 그룹임을 나타낸다.
더욱이, 도 7 의 예에서, 파일 생성 디바이스 (34) 는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 중 특정한 하나의 샘플에 대한 샘플 엔트리를 생성할 수도 있다 (508). 일부 예들에서, 파일 생성 디바이스 (34) 는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 중 각각의 하나의 샘플 각각에 대한 샘플 엔트리를 생성할 수도 있다. 샘플 엔트리는 위의 섹션 9.5.5.1.2 에 정의된 RandomAccessibleSampleEntry 일 수도 있다.
도 7 의 예에 예시된 바와 같이, 특정 샘플에 대한 샘플 엔트리를 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 나타내는 값을 포함시킬 수도 있다 (510). 이러한 방법으로, 파일 생성 디바이스 (34) 는, 파일에, 샘플들의 시퀀스에서의 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 나타내는 값을 포함하는 샘플 엔트리를 생성할 수도 있다. 더욱이, 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플의 IRAP 픽처들에서의 VCL NAL 유닛들의 NAL 유닛 타입을 나타내는 값을 포함시킬 수도 있다 (512).
부가적으로, 파일 생성 디바이스 (34) 는 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 결정할 수도 있다 (514). 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들은 아닐 때 (514 의 "아니오"), 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플에서의 IRAP 픽처들의 수를 나타내는 값을 포함시킬 수도 있다 (516). 부가적으로, 파일 생성 디바이스 (34) 는, 특정 샘플에 대한 샘플 엔트리에, 특정 샘플에서의 IRAP 픽처들의 레이어 식별자 (예를 들어, nuh_layer_id) 들을 나타내는 값들을 포함시킬 수도 있다.
위에 나타낸 바와 같이, 도 7 은 예로서 제공된다. 다른 예들은 도 7 의 각각의 액션을 포함하지 않는다. 예를 들어, 일부 예들은 단계들 502, 504 및 508 을 배제한다. 더욱이, 일부 예들은 단계들 510 내지 518 중 다양한 것들을 배제한다. 더욱이, 일부 예들은 하나 이상의 부가적인 액션들을 포함한다. 예를 들어, 일부 예들은, 파일을 생성하는 것의 일부로서, 멀티-레이어 비디오 데이터의 트랙의 동기화 샘플들을 기록하는 동기화 샘플 테이블을 포함하는 동기화 샘플 박스를 생성하는 부가적인 액션을 포함한다. 트랙의 동기화 샘플들 각각은 트랙의 랜덤 액세스 샘플이다. 이 예에서, 액세스 유닛에서의 각각의 코딩된 픽처가 IRAP 픽처인 경우, 스케일러블 비디오 코딩 샘플이 동기화 샘플이다. 더욱이, 이 예에서, 액세스 유닛에서의 각각의 코딩된 픽처가 RASL 픽처들을 갖지 않는 IRAP 픽처인 경우, 멀티-뷰 비디오 코딩 샘플이 동기화 샘플이다.
도 8 은 본 개시물의 하나 이상의 기법들에 따른, 컴퓨팅 디바이스가 랜덤 액세스 및/또는 레벨 스위칭을 수행하는 예시적인 동작을 예시한 플로우차트이다. 도 8 의 예에서, 컴퓨팅 디바이스는 파일을 수신한다 (550). 도 8 의 예에서, 컴퓨팅 디바이스는 중간 네트워크 디바이스 (예를 들어, MANE, 스트리밍 서버), 디코딩 디바이스 (예를 들어, 목적지 디바이스 (14)), 또는 다른 타입의 비디오 디바이스일 수도 있다. 일부 예들에서, 컴퓨팅 디바이스는 콘텐츠 전달 네트워크의 부분일 수도 있다.
도 8 의 예에서, 컴퓨팅 디바이스는, 파일로부터, 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 획득할 수도 있다 (552). 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 도 8 의 예에서, 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다.
더욱이, 도 8 의 예에서, 컴퓨팅 디바이스는 파일로부터 부가적 박스를 획득할 수도 있다 (554). 부가적 박스는 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 기록한다. 따라서, 컴퓨팅 디바이스는, 부가적 박스에서의 정보에 기초하여, 적어도 하나의 IRAP 픽처를 포함하는 샘플들 모두를 결정할 수도 있다 (556).
더욱이, 일부 예들에서, 컴퓨팅 디바이스는, 파일로부터, 샘플들의 시퀀스에서의 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들인지 여부를 나타내는 값을 포함하는 샘플 엔트리를 획득할 수도 있다. 특정 샘플에서의 코딩된 픽처들 모두가 IRAP 픽처들은 아닐 때, 컴퓨팅 디바이스는, 샘플 엔트리로부터, 특정 샘플에서의 IRAP 픽처들의 수를 나타내는 값을 획득할 수도 있다. 부가적으로, 컴퓨팅 디바이스는, 샘플 엔트리로부터, 특정 샘플에서의 IRAP 픽처들의 레이어 식별자들을 나타내는 값들을 획득할 수도 있다. 더욱이, 일부 예들에서, 컴퓨팅 디바이스는, 샘플 엔트리로부터, 특정 샘플의 IRAP 픽처들에서의 VCL NAL 유닛들의 NAL 유닛 타입을 나타내는 값을 획득할 수도 있다. 부가적으로, 일부 예들에서, 컴퓨팅 디바이스는, 파일로부터, 비디오 데이터의 트랙의 동기화 샘플들을 기록하는 동기화 샘플 테이블을 포함하는 동기화 샘플 박스를 획득할 수도 있다. 이러한 예들에서, 트랙의 동기화 샘플들 각각은 트랙의 랜덤 액세스 샘플이고, 액세스 유닛에서의 각각의 코딩된 픽처가 IRAP 픽처인 경우에는 스케일러블 비디오 코딩 샘플이 동기화 샘플이며, 액세스 유닛에서의 각각의 코딩된 픽처가 RASL 픽처들을 갖지 않는 IRAP 픽처인 경우에는 멀티-뷰 비디오 코딩 샘플이 동기화 샘플이다.
부가적으로, 도 8 의 예에서, 컴퓨팅 디바이스는 샘플에 앞서 디코딩 순서로 파일의 NAL 유닛들을 포워딩 또는 디코딩하는 일 없이 적어도 하나의 IRAP 픽처를 포함하는 샘플의 NAL 유닛들을 포워딩 또는 디코딩하는 것을 시작할 수도 있다 (558). 이러한 방법으로, 컴퓨팅 디바이스는 랜덤 액세스 또는 레이어 스위칭을 수행할 수도 있다. 예를 들어, 컴퓨팅 디바이스는 적어도 하나의 IRAP 픽처를 포함하는 하나 이상의 샘플들 중 하나의 샘플에서 멀티-레이어 비디오 데이터의 디코딩을 시작할 수도 있다.
도 9 는 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스 (34) 의 예시적인 동작을 예시한 플로우차트이다. 도 9 의 예에서, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다 (600). 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 도 9 의 예에서, 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다. 일부 예들에서, 파일 생성 디바이스 (34) 는 멀티-레이어 비디오 데이터를 인코딩한다.
파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는 서브-샘플이 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함하는지 여부를 결정할 수도 있다 (602). 서브-샘플이 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함한다는 결정 (602 의 "예") 에 응답하여, 파일 생성 디바이스 (34) 는, 파일에, 서브-샘플이 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함함을 나타내는 값 (예를 들어, 5) 을 갖는 플래그들을 포함하는 서브-샘플 정보 박스를 생성할 수도 있다 (604). 그렇지 않으면 (602 의 "아니오"), 파일 생성 디바이스 (34) 는, 파일에, 다른 값 (예를 들어, 0, 1, 2, 3, 4) 을 갖는 플래그들을 포함하는 서브-샘플 정보 박스를 생성할 수도 있다 (606).
이러한 방법으로, 파일 생성 디바이스 (34) 는 파일에서의 트랙에 대한 메타데이터를 포함하는 트랙 박스를 포함하는 파일을 생성할 수도 있다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함하고, 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다. 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 파일에, 서브-샘플 정보 박스에 주어진 서브-샘플 정보의 타입을 특정하는 플래그들을 포함하는 서브-샘플 정보 박스를 생성한다. 플래그들이 특정 값을 가질 때, 서브-샘플 정보 박스에 대응하는 서브-샘플은, 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들을 포함한다.
도 10 은 본 개시물의 하나 이상의 기법들에 따른, 컴퓨팅 디바이스의 예시적인 동작을 예시한 플로우차트이다. 도 10 의 예에서, 컴퓨팅 디바이스는 파일을 수신한다 (650). 도 10 의 예에서, 컴퓨팅 디바이스는 MANE 또는 스트리밍 서버와 같은 중간 네트워크 디바이스일 수도 있다. 일부 예들에서, 컴퓨팅 디바이스는 콘텐츠 전달 네트워크의 부분일 수도 있다. 더욱이, 도 10 의 예에서, 컴퓨팅 디바이스는 파일로부터 트랙 박스를 획득할 수도 있다 (651). 트랙 박스는 파일에서의 트랙에 대한 메타데이터를 포함한다. 트랙에 대한 미디어 데이터는 샘플들의 시퀀스를 포함한다. 도 10 의 예에서, 샘플들 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이다.
더욱이, 도 10 의 예에서, 컴퓨팅 디바이스는 파일로부터 서브-샘플 정보 박스를 획득할 수도 있다 (652). 컴퓨팅 디바이스는 서브-샘플 정보 박스에서의 정보를 이용하여 서브-비트스트림을 추출한다 (654). 서브-비트스트림은 파일에 저장된 비트스트림의 동작 포인트의 각각의 NAL 유닛을 포함할 수도 있다. 다시 말해, 서브-비트스트림의 NAL 유닛들은 파일에 저장된 NAL 유닛들의 서브세트일 수도 있다. 컴퓨팅 디바이스는 파일로부터 서브-샘플 정보 박스를 획득할 수도 있고, 샘플들의 시퀀스에 포함된 NAL 유닛들을 파싱 또는 해석하는 일 없이 서브-비트스트림을 추출할 수도 있다. 서브-비트스트림을 추출할 때 NAL 유닛들을 파싱 또는 해석하지 않는 것은, 컴퓨팅 디바이스의 복잡도를 감소시킬 수도 있거나 및/또는 서브-비트스트림을 추출하는 프로세스를 가속화할 수도 있다.
더욱이, 일부 예들에서, 컴퓨팅 디바이스는, 플래그들이 특정 값을 가질 때, 서브-샘플 정보 박스로부터, 다음 중 하나 이상을 획득할 수도 있다:
Figure pct00028
서브-샘플의 VCL NAL 유닛들 모두가 폐기가능한지 여부를 나타내는 부가적 플래그,
Figure pct00029
서브-샘플의 VCL NAL 유닛들의 NAL 유닛 타입을 나타내는 부가적 값, 여기서 서브-샘플의 VCL NAL 유닛들 모두는 동일한 NAL 유닛 타입을 가짐,
Figure pct00030
서브-샘플의 각각의 NAL 유닛의 레이어 식별자를 나타내는 부가적 값,
Figure pct00031
서브-샘플의 각각의 NAL 유닛의 시간 식별자를 나타내는 부가적 값,
Figure pct00032
서브-샘플의 모든 VCL NAL 유닛들에 대해 인터-레이어 예측이 가능하게 되는지 여부를 나타내는 부가적 플래그, 또는
Figure pct00033
서브-샘플에서의 모든 NAL 유닛들이 서브-레이어 논-참조 픽처의 VCL NAL 유닛들인지 여부를 나타내는 부가적 플래그.
도 10 의 예에서, 서브-비트스트림을 추출하는 것의 일부로서, 컴퓨팅 디바이스는 서브-샘플 정보 박스가 정확히 하나의 코딩된 픽처 및 그 코딩된 픽처와 연관된 0 개 이상의 논-VCL NAL 유닛들에 대응함을 나타내는 특정 값 (예를 들어, 5) 을 서브-샘플 정보 박스의 "플래그들" 값이 갖는지 여부를 결정할 수도 있다 (656). 서브-샘플 정보 박스의 "플래그들" 값이 특정 값을 가질 때 (656 의 "예"), 컴퓨팅 디바이스는, 서브-샘플 정보 박스에 특정된 정보에 기초하여, 동작 포인트를 디코딩하기 위해 코딩된 픽처가 요구되는지 여부를 결정할 수도 있다 (658). 예를 들어, 컴퓨팅 디바이스는, 폐기가능 플래그, VCL NAL 유닛 타입 표시자, 레이어 식별자, 시간 식별자, 노 (no) 인터 레이어 예측 플래그, 및/또는 서브-레이어 참조 NAL 유닛 플래그에 기초하여, 동작 포인트를 디코딩하기 위해 코딩된 픽처가 요구되는지 여부를 결정할 수도 있다. 코딩된 픽처가 동작 포인트를 디코딩하기 위해 요구될 때 (658 의 "예"), 컴퓨팅 디바이스는 서브-비트스트림에 서브-샘플의 NAL 유닛들을 포함시킬 수도 있다 (660). 그렇지 않으면, 도 10 의 예에서, 코딩된 픽처가 동작 포인트를 디코딩하기 위해 요구되지 않을 때 (658 의 "아니오"), 컴퓨팅 디바이스는 서브-비트스트림에 서브-샘플의 NAL 유닛들을 포함시키지 않는다 (662).
더욱이, 도 10 의 예에서, 컴퓨팅 디바이스는 서브-비트스트림을 출력할 수도 있다 (664). 예를 들어, 컴퓨팅 디바이스는 서브-비트스트림을 컴퓨터 판독가능 저장 매체에 저장하거나 또는 서브-비트스트림을 다른 컴퓨팅 디바이스에 송신할 수도 있다.
위에 나타낸 바와 같이, 도 10 은 예이다. 다른 예들이 도 10 의 특정 액션들을 포함하거나 생략할 수도 있다. 예를 들어, 일부 예들은 액션들 650, 651, 654, 및/또는 664 를 생략한다. 더욱이, 일부 예들은 액션들 656 내지 662 중 하나 이상의 액션들을 생략한다.
도 11 은 본 개시물의 하나 이상의 기법들에 따른, 파일 생성 디바이스 (34) 의 예시적인 동작을 예시한 플로우차트이다. 도 11 의 예에서, 파일 생성 디바이스 (34) 는 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성할 수도 있다 (700). 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이다. 다양한 예들에서, 멀티-레이어 비디오 데이터는 SHVC 데이터, MV-HEVC 데이터, 또는 3D-HEVC 데이터일 수도 있다. 일부 예들에서, 파일 생성 디바이스 (34) 는 멀티-레이어 비디오 데이터를 인코딩한다.
도 11 의 예에서, 파일을 생성하는 것의 일부로서, 파일 생성 디바이스 (34) 는, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하는지 여부를 결정할 수도 있다 (702). 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다. 다른 예들에서, 파일 생성 디바이스 (34) 는, 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하는지 여부의 결정을 행할 수도 있다.
멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정 (702 의 "예") 에 응답하여, 파일 생성 디바이스 (34) 는 적어도 제 1 트랙 및 제 2 트랙을 이용하여 파일에 비트스트림을 저장한다 (704). 제 1 및 제 2 트랙들로부터의 각각의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다.
더욱이, 도 11 의 예에서, 비트스트림의 어떠한 액세스 유닛도 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않는다는 결정 (702 의 "아니오") 에 응답하여, 파일 생성 디바이스 (34) 는 단일 트랙을 이용하여 파일에 비트스트림을 저장할 수도 있다 (706). 다른 예들에서, 파일 생성 디바이스 (34) 는, 비트스트림의 어떠한 액세스 유닛도 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않을 때에도 다수의 트랙들을 갖는 파일을 생성할 수도 있다.
위에 나타낸 바와 같이, 도 11 은 예이다. 다른 예들은 보다 적은 액션들을 포함할 수도 있다. 예를 들어, 일부 예들은 액션들 702 및 706 을 생략한다.
도 12 는 본 개시물의 하나 이상의 기법들에 따른, 목적지 디바이스 (14) 의 예시적인 동작을 예시한 플로우차트이다. 도 12 의 예에서, 목적지 디바이스 (14) 는 파일을 수신한다 (750). 파일은 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함할 수도 있고, 미디어 콘텐츠는 샘플들의 시퀀스를 포함한다. 샘플들 각각은 멀티-레이어 비디오 데이터의 액세스 유닛일 수도 있다. 다양한 예들에서, 멀티-레이어 비디오 데이터는 SHVC 데이터, MV-HEVC 데이터, 또는 3D-HEVC 데이터일 수도 있다. 더욱이, 도 12 의 예에서, 목적지 디바이스 (14) 는, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득할 수도 있다 (751). 제 1 트랙 박스는 파일에서의 제 1 트랙에 대한 메타데이터를 포함한다. 제 2 트랙 박스는 파일에서의 제 2 트랙에 대한 메타데이터를 포함한다. 제 1 트랙 및 제 2 트랙으로부터의 각각의 트랙 각각에 대해, 각각의 트랙의 각 샘플에서의 코딩된 픽처들 모두는 동일한 값의 픽처 출력 플래그를 갖는다. 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는다.
목적지 디바이스 (14) 의 비디오 디코더 (30) 는 제 1 값 (예를 들어, 1) 과 동일한 픽처 출력 플래그들을 갖는 픽처들에 대한 트랙에서의 픽처들을 디코딩할 수도 있고, 제 2 값 (예를 들어, 0) 과 동일한 픽처 출력 플래그들을 갖는 픽처들에 대한 트랙에서의 픽처들을 디코딩할 수도 있다 (752). 일부 경우들에서, 비디오 디코더 (30) 는 1 과 동일한 픽처 출력 플래그들을 갖는 픽처들을 이용하여 0 과 동일한 픽처 출력 플래그들을 갖는 픽처들을 디코딩할 수도 있고, 그 반대의 경우로 디코딩할 수도 있다. 목적지 디바이스 (14) 는 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들을 출력할 수도 있다 (754). 목적지 디바이스 (14) 는 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들을 출력하지 않는다 (756). 이러한 방법으로, 제 1 및 제 2 트랙으로부터의 각각의 트랙 각각에 대해, 목적지 디바이스 (14) 는 개별 트랙의 각각의 샘플에서의 코딩된 픽처들을 디코딩하고, 제 1 값과 동일한 픽처 출력 플래그들을 갖는 디코딩된 픽처들을 출력할 수도 있다.
위에 나타낸 바와 같이, 도 12 는 예로서 제공된다. 다른 예들은 액션들 752 내지 756 과 같은, 도 12 의 특정 액션들을 생략할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된 경우, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 그 컴퓨터 판독가능 매체를 통해 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 예를 들어, 통신 프로토콜에 따라, 하나의 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은, 본 개시물에 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 예로서, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 이용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체들을 포함할 수 있다. 또한, 임의의 맥락이 컴퓨터 판독가능 매체로 적절히 지칭된다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들, 예컨대, 적외선, 무선, 및 마이크로파를 이용하여, 웹사이트, 서버 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 그 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 연결들, 캐리어 파들, 신호들, 또는 다른 순시적 매체들을 포함하는 것이 아니라, 그 대신에 비순시적인, 유형의 저장 매체들에 관한 것이라는 것을 이해해야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본 명세서에 사용되는 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 데이터를 자기적으로 보통 재생하지만, 디스크 (disc) 들은 레이저로 데이터를 광학적으로 재생한다. 또한, 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서 (DSP) 들, 범용 마이크로프로세서들, 주문형 집적 회로 (ASIC) 들, 필드 프로그램가능 로직 어레이 (FPGA) 들, 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 본 명세서에 사용된 바와 같은 용어 "프로세서" 는 상기한 구조, 또는 본 명세서에 설명된 기법들의 구현에 적합한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 부가적으로, 일부 양태들에서는, 본 명세서에 설명된 기능성이 인코딩 및 디코딩을 위해 구성되거나 조합된 코덱 내에 포함되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩셋) 를 포함하는 광범위한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 상술된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 조합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술된 하나 이상의 프로세서들을 포함하는 상호동작하는 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이러한 그리고 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (36)

  1. 멀티-레이어 비디오 데이터를 프로세싱하는 방법으로서,
    미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하는 단계를 포함하고, 상기 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 상기 멀티-레이어 비디오 데이터의 액세스 유닛이고,
    상기 파일을 생성하는 단계는, 상기 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하는 단계를 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    상기 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 상기 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    상기 파일을 생성하는 단계는,
    상기 비트스트림의 어떠한 액세스 유닛도 상기 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 상기 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않는다고 결정하는 것에 응답하여, 단일 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하는 단계를 포함하는, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  3. 제 1 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (scalable High Efficiency Video Coding; SHVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  4. 제 1 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 멀티-뷰 고효율 비디오 코딩 (Multi-View High Efficiency Video Coding; MV-HEVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  5. 제 1 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 3-차원 고효율 비디오 코딩 (3-Dimensional High Efficiency Video Coding; 3D-HEVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    상기 멀티-레이어 비디오 데이터를 인코딩하는 단계를 더 포함하는, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  8. 멀티-레이어 비디오 데이터를 프로세싱하는 방법으로서,
    파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하는 단계를 포함하고, 상기 제 1 트랙 박스는 상기 파일에서의 제 1 트랙에 대한 메타데이터를 포함하고, 상기 제 2 트랙 박스는 상기 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 상기 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  9. 제 8 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  10. 제 8 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  11. 제 8 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터인, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  12. 제 8 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  13. 제 8 항에 있어서,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해,
    상기 개별 트랙의 각각의 샘플에서의 상기 코딩된 픽처들을 디코딩하는 단계; 및
    상기 제 1 값과 동일한 픽쳐 출력 플래그들을 갖는 디코딩된 상기 픽처들을 출력하는 단계
    를 더 포함하는, 멀티-레이어 비디오 데이터를 프로세싱하는 방법.
  14. 비디오 디바이스로서,
    멀티-레이어 비디오 데이터를 저장하도록 구성된 데이터 저장 매체; 및
    하나 이상의 프로세서들
    을 포함하고,
    상기 하나 이상의 프로세서들은, 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하도록 구성되고, 상기 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 상기 멀티-레이어 비디오 데이터의 액세스 유닛이고,
    상기 파일을 생성하기 위해, 상기 하나 이상의 프로세서들은, 상기 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하도록 구성되고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    상기 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 상기 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 비디오 디바이스.
  15. 제 14 항에 있어서,
    상기 파일을 생성하기 위해, 상기 하나 이상의 프로세서들은,
    상기 비트스트림의 어떠한 액세스 유닛도 상기 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 상기 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않는다고 결정하는 것에 응답하여, 단일 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하도록 구성되는, 비디오 디바이스.
  16. 제 14 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 비디오 디바이스.
  17. 제 14 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 비디오 디바이스.
  18. 제 14 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 멀티-레이어 비디오 데이터를 인코딩하도록 구성되는, 비디오 디바이스.
  19. 비디오 디바이스로서,
    멀티-레이어 비디오 데이터를 저장하도록 구성된 데이터 저장 매체; 및
    하나 이상의 프로세서들
    을 포함하고,
    상기 하나 이상의 프로세서들은, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하도록 구성되고, 상기 제 1 트랙 박스는 상기 파일에서의 제 1 트랙에 대한 메타데이터를 포함하고, 상기 제 2 트랙 박스는 상기 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 상기 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 비디오 디바이스.
  20. 제 19 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 비디오 디바이스.
  21. 제 19 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 비디오 디바이스.
  22. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해,
    상기 개별 트랙의 각각의 샘플에서의 상기 코딩된 픽처들을 디코딩하고;
    상기 제 1 값과 동일한 픽쳐 출력 플래그들을 갖는 디코딩된 상기 픽처들을 출력하도록 구성되는, 비디오 디바이스.
  23. 비디오 디바이스로서,
    미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하는 수단을 포함하고, 상기 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고,
    상기 파일을 생성하는 것은, 상기 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하는 것을 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    상기 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 상기 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 비디오 디바이스.
  24. 제 23 항에 있어서,
    상기 비트스트림의 어떠한 액세스 유닛도 상기 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 상기 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않는다고 결정하는 것에 응답하여, 단일 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하는 수단을 포함하는, 비디오 디바이스.
  25. 제 23 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 비디오 디바이스.
  26. 제 23 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 비디오 디바이스.
  27. 비디오 디바이스로서,
    파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하는 수단을 포함하고, 상기 제 1 트랙 박스는 상기 파일에서의 제 1 트랙에 대한 메타데이터를 포함하고, 상기 제 2 트랙 박스는 상기 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 비디오 디바이스.
  28. 제 27 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 비디오 디바이스.
  29. 제 27 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 비디오 디바이스.
  30. 저장된 명령들을 갖는 컴퓨터 판독가능 데이터 저장 매체로서,
    상기 명령들은, 실행되는 경우, 하나 이상의 프로세서들로 하여금, 미디어 콘텐츠를 인클로징하는 미디어 데이터 박스를 포함하는 파일을 생성하게 하고, 상기 미디어 콘텐츠는 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 멀티-레이어 비디오 데이터의 액세스 유닛이고,
    상기 파일을 생성하기 위해, 상기 명령들은, 상기 하나 이상의 프로세서들로 하여금, 상기 멀티-레이어 비디오 데이터의 비트스트림의 적어도 하나의 액세스 유닛이 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함한다는 결정에 응답하여, 적어도 제 1 트랙 및 제 2 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하게 하고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    상기 제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 상기 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 컴퓨터 판독가능 데이터 저장 매체.
  31. 제 30 항에 있어서,
    상기 명령들은, 하나 이상의 프로세서들로 하여금,
    상기 비트스트림의 어떠한 액세스 유닛도 상기 제 1 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처 및 상기 제 2 값과 동일한 픽처 출력 플래그를 갖는 코딩된 픽처를 포함하지 않는다고 결정하는 것에 응답하여, 단일 트랙을 이용하여 상기 파일에 상기 비트스트림을 저장하게 하는, 컴퓨터 판독가능 데이터 저장 매체.
  32. 제 30 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 컴퓨터 판독가능 데이터 저장 매체.
  33. 제 30 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 컴퓨터 판독가능 데이터 저장 매체.
  34. 저장된 명령들을 갖는 컴퓨터 판독가능 데이터 저장 매체로서,
    상기 명령들은, 실행되는 경우, 하나 이상의 프로세서들로 하여금, 파일로부터, 제 1 트랙 박스 및 제 2 트랙 박스를 획득하게 하고, 상기 제 1 트랙 박스는 상기 파일에서의 제 1 트랙에 대한 메타데이터를 포함하고, 상기 제 2 트랙 박스는 상기 파일에서의 제 2 트랙에 대한 메타데이터를 포함하고,
    상기 제 1 트랙 및 상기 제 2 트랙의 각각은 샘플들의 시퀀스를 포함하고, 상기 샘플들의 각각은 멀티-레이어 비디오 데이터의 비디오 액세스 유닛이고,
    상기 제 1 트랙 및 상기 제 2 트랙으로부터의 각각의 개별 트랙에 대해, 상기 개별 트랙의 각각의 샘플에서의 모든 코딩된 픽처들은 동일한 값의 픽처 출력 플래그를 가지고,
    제 1 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 출력되도록 허용되고, 제 2 값과 동일한 픽처 출력 플래그들을 갖는 픽처들은 참조 픽처들로서 이용되도록 허용되지만 출력되도록 허용되지 않는, 컴퓨터 판독가능 데이터 저장 매체.
  35. 제 34 항에 있어서,
    상기 멀티-레이어 비디오 데이터는 스케일러블 고효율 비디오 코딩 (SHVC) 데이터, 멀티-뷰 고효율 비디오 코딩 (MV-HEVC) 데이터, 또는 3-차원 고효율 비디오 코딩 (3D-HEVC) 데이터 중 하나인, 컴퓨터 판독가능 데이터 저장 매체.
  36. 제 34 항에 있어서,
    상기 제 1 값은 1 과 동일하고 상기 제 2 값은 0 과 동일한, 컴퓨터 판독가능 데이터 저장 매체.
KR1020167011821A 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들 KR20160075554A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361894886P 2013-10-23 2013-10-23
US61/894,886 2013-10-23
US14/521,153 US9712843B2 (en) 2013-10-23 2014-10-22 Multi-layer video file format designs
US14/521,153 2014-10-22
PCT/US2014/061988 WO2015061580A1 (en) 2013-10-23 2014-10-23 Multi-layer video file format designs

Publications (1)

Publication Number Publication Date
KR20160075554A true KR20160075554A (ko) 2016-06-29

Family

ID=52826146

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020167011820A KR20160074522A (ko) 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들
KR1020167011819A KR20160075553A (ko) 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들
KR1020167011821A KR20160075554A (ko) 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020167011820A KR20160074522A (ko) 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들
KR1020167011819A KR20160075553A (ko) 2013-10-23 2014-10-23 멀티-레이어 비디오 파일 포맷 설계들

Country Status (24)

Country Link
US (3) US9648348B2 (ko)
EP (3) EP3061250B1 (ko)
JP (3) JP6434008B2 (ko)
KR (3) KR20160074522A (ko)
CN (3) CN105637885B (ko)
AU (3) AU2014340046B2 (ko)
CA (3) CA2926126C (ko)
CL (3) CL2016000958A1 (ko)
DK (2) DK3061250T3 (ko)
ES (2) ES2720662T3 (ko)
HK (3) HK1220062A1 (ko)
HU (2) HUE042230T2 (ko)
IL (3) IL244613B (ko)
MX (3) MX353217B (ko)
MY (3) MY172351A (ko)
NZ (3) NZ718158A (ko)
PH (3) PH12016500536B1 (ko)
PT (1) PT3061250T (ko)
RU (3) RU2678517C2 (ko)
SA (2) SA516371000B1 (ko)
SG (3) SG11201601954PA (ko)
SI (1) SI3061250T1 (ko)
TW (3) TWI645710B (ko)
WO (3) WO2015061561A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190010568A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20210080607A (ko) * 2017-03-27 2021-06-30 캐논 가부시끼가이샤 생성된 콘텐츠를 포함하는 미디어 데이터를 인코딩하기 위한 방법 및 장치

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2561078T3 (es) * 2010-07-15 2016-02-24 Ge Video Compression, Llc Codificación de vídeo híbrido que soporta síntesis de vistas intermedias
TWI545942B (zh) * 2013-04-30 2016-08-11 杜比實驗室特許公司 從單一容器輸出多語言音訊和相關的音訊之系統及方法
AU2014288482A1 (en) * 2013-07-12 2015-02-26 Sony Corporation Image coding device and method
US9648348B2 (en) 2013-10-23 2017-05-09 Qualcomm Incorporated Multi-layer video file format designs
EP3092796B1 (en) * 2014-01-07 2020-06-17 Canon Kabushiki Kaisha Method, device, and computer program for encoding inter-layer dependencies
US20150264404A1 (en) * 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
JP5836424B2 (ja) * 2014-04-14 2015-12-24 ソニー株式会社 送信装置、送信方法、受信装置および受信方法
WO2015194183A1 (en) * 2014-06-18 2015-12-23 Sharp Kabushiki Kaisha Slice Type and Decoder Conformance
GB2527786B (en) * 2014-07-01 2016-10-26 Canon Kk Method, device, and computer program for encapsulating HEVC layered media data
US20180213216A1 (en) * 2015-06-16 2018-07-26 Lg Electronics Inc. Media data transmission device, media data reception device, media data transmission method, and media data rececption method
GB2539461B (en) * 2015-06-16 2020-01-08 Canon Kk Image data encapsulation
US10382768B2 (en) * 2015-06-23 2019-08-13 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
US20170026653A1 (en) * 2015-07-21 2017-01-26 Shengli Xie Method for scalable transmission of video tract
US20170111642A1 (en) * 2015-10-14 2017-04-20 Qualcomm Incorporated Support of random access and switching of layers and sub-layers in multi-layer video files
US10034010B2 (en) * 2015-10-14 2018-07-24 Qualcomm Incorporated Alignment of operation point sample group in multi-layer bitstreams file format
US10306253B2 (en) 2015-10-14 2019-05-28 Qualcomm Incorporated Signaling of parameter sets in files of multi-layer bitstreams
WO2017137444A1 (en) 2016-02-09 2017-08-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Concept for picture/video data streams allowing efficient reducibility or efficient random access
FI20165115A (fi) * 2016-02-17 2017-08-18 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
US10652631B2 (en) * 2016-05-24 2020-05-12 Qualcomm Incorporated Sample entries and random access
CA3025466A1 (en) * 2016-05-24 2017-11-30 Sharp Kabushiki Kaisha Systems and methods for signaling scalable video in a media application format
GB2550604A (en) * 2016-05-24 2017-11-29 Canon Kk Method, device, and computer program for encapsulating and parsing timed media data
CN109313904B (zh) * 2016-05-30 2023-12-08 索尼公司 视频音频处理设备和方法以及存储介质
CN114359487A (zh) * 2016-09-16 2022-04-15 松下电器(美国)知识产权公司 三维数据制作方法以及三维数据制作装置
US11197040B2 (en) * 2016-10-17 2021-12-07 Mediatek Inc. Deriving and signaling a region or viewport in streaming media
US11532128B2 (en) * 2017-03-23 2022-12-20 Qualcomm Incorporated Advanced signaling of regions of interest in omnidirectional visual media
US11062738B2 (en) * 2017-03-23 2021-07-13 Qualcomm Incorporated Signalling of video content including sub-picture bitstreams for video coding
US10587904B2 (en) * 2017-07-10 2020-03-10 Qualcomm Incorporated Processing media data using an omnidirectional media format
US20210194946A1 (en) * 2018-09-12 2021-06-24 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
WO2020058567A1 (en) * 2018-09-18 2020-03-26 Nokia Technologies Oy Method and apparatus for non-binary profile constraint signaling for video coding
GB2579389B (en) * 2018-11-29 2022-07-27 Canon Kk Method, device and computer program for encapsulating media data into a media file
WO2020183900A1 (ja) * 2019-03-11 2020-09-17 ソニー株式会社 情報処理装置、再生処理装置、情報処理方法及び再生処理方法
WO2020256615A1 (en) * 2019-06-21 2020-12-24 Telefonaktiebolaget Lm Ericsson (Publ) Video coding layer up-switching indication
GB2585052B (en) * 2019-06-26 2023-07-26 Canon Kk Method and apparatus for encapsulating panorama images in a file
US11122102B2 (en) 2019-07-03 2021-09-14 Lg Electronics Inc. Point cloud data transmission apparatus, point cloud data transmission method, point cloud data reception apparatus and point cloud data reception method
US11265357B2 (en) * 2019-10-10 2022-03-01 Microsoft Technology Licensing, Llc AV1 codec for real-time video communication
US11563947B2 (en) 2019-12-31 2023-01-24 Tencent America LLC Signaling output picture size for reference picture resampling
TWI731579B (zh) * 2020-02-11 2021-06-21 日商東芝股份有限公司 傳輸裝置、通訊系統、傳輸方法及電腦程式產品
US11405649B2 (en) * 2020-02-18 2022-08-02 Mediatek Inc. Specifying slice chunks of a slice within a tile
WO2021187737A1 (ko) * 2020-03-18 2021-09-23 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN113434715A (zh) * 2020-03-23 2021-09-24 瑞昱半导体股份有限公司 用于针对图像进行搜索的方法以及图像处理电路
GB2593897B (en) * 2020-04-06 2024-02-14 Canon Kk Method, device, and computer program for improving random picture access in video streaming
CN117834916A (zh) * 2020-05-22 2024-04-05 字节跳动有限公司 访问单元中图片信息的信令
WO2021252978A1 (en) 2020-06-12 2021-12-16 Bytedance Inc. Constraints on picture output ordering in a video bitstream
US11671627B2 (en) 2020-09-17 2023-06-06 Lemon Inc. Operating point entity group signaling in coded video
US11729427B2 (en) 2020-09-17 2023-08-15 Lemon Inc. Chroma format and bit depth indication in coded video
US11711518B2 (en) 2020-09-17 2023-07-25 Lemon Inc. Decoding capability information storage in video coding
EP3972273A1 (en) 2020-09-17 2022-03-23 Lemon Inc. Handling of non-vcl nal units in picture unit construction
US20220103847A1 (en) 2020-09-29 2022-03-31 Lemon Inc. Dependent random access point indication in video bitstreams
US11611752B2 (en) 2020-10-07 2023-03-21 Lemon Inc. Adaptation parameter set storage in video coding
CN116569557A (zh) * 2020-12-14 2023-08-08 Lg电子株式会社 支持以样本为单位的随机访问的媒体文件生成/接收方法和设备及发送媒体文件的方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60223483T2 (de) * 2001-10-29 2008-09-18 Humax Co. Ltd., Yougin Verfahren zum aufzeichenen eines digitalen Rundfunkprogramms und zeitbasierter Wiedergabe eines aufgezeichneten Rundfunkprogramms und zugehörige Vorrichtung
PL2200295T3 (pl) * 2004-06-02 2013-08-30 Panasonic Corp Urządzenie do kodowania obrazu oraz urządzenie do dekodowania obrazu
WO2006108917A1 (en) * 2005-04-13 2006-10-19 Nokia Corporation Coding, storage and signalling of scalability information
US7725593B2 (en) 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
RU2378790C1 (ru) * 2005-09-27 2010-01-10 Квэлкомм Инкорпорейтед Методики масштабируемости на основе информации содержимого
US7956930B2 (en) * 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
KR20070108433A (ko) * 2006-01-09 2007-11-12 한국전자통신연구원 청크 디스크립터를 이용한 svc 파일포맷에서의 비디오데이터 공유방법
US7991236B2 (en) * 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
RU2492585C2 (ru) * 2008-07-16 2013-09-10 Нокиа Корпорейшн Способ и устройство для группирования треков и подмножеств треков
EP2334082A1 (en) * 2008-09-17 2011-06-15 Sharp Kabushiki Kaisha Scalable video stream decoding apparatus and scalable video stream generating apparatus
KR101233627B1 (ko) * 2008-12-23 2013-02-14 한국전자통신연구원 스케일러블 부호화 장치 및 방법
EP2521366B1 (en) * 2009-02-19 2014-09-17 Panasonic Corporation Playback device
KR101290467B1 (ko) * 2009-09-22 2013-07-26 퀄컴 인코포레이티드 2 개 이상의 비연속적인 nal 유닛들을 참조하는 추출자를 이용하는 멀티-트랙 비디오 코딩 방법들 및 장치
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9456015B2 (en) * 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US20130094590A1 (en) * 2011-10-12 2013-04-18 Vixs Systems, Inc. Video decoding device for extracting embedded metadata and methods for use therewith
US9124895B2 (en) * 2011-11-04 2015-09-01 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
EP2805490A1 (en) * 2012-01-20 2014-11-26 Telefonaktiebolaget LM Ericsson (Publ) Output of decoded reference pictures
US10958915B2 (en) * 2012-01-30 2021-03-23 Qualcomm Incorporated Method of coding video and storing video content
WO2013130478A1 (en) * 2012-02-29 2013-09-06 Dolby Laboratories Licensing Corporation Image metadata creation for improved image processing and content delivery
KR101561012B1 (ko) * 2012-09-28 2015-10-15 텔레폰악티에볼라겟엘엠에릭슨(펍) 비디오 시퀀스의 픽처의 디코딩 및 인코딩
WO2014163467A1 (ko) 2013-04-05 2014-10-09 삼성전자 주식회사 랜덤 엑세스를 위한 멀티 레이어 비디오 부호화 방법 및 그 장치, 랜덤 엑세스를 위한 멀티 레이어 비디오 복호화 방법 및 그 장치
TW201517597A (zh) * 2013-07-31 2015-05-01 Nokia Corp 用於視訊編碼及解碼之方法及裝置
WO2015056158A1 (en) 2013-10-14 2015-04-23 Nokia Technologies Oy Multi-layer hypothetical reference decoder
US9648348B2 (en) 2013-10-23 2017-05-09 Qualcomm Incorporated Multi-layer video file format designs
US10148969B2 (en) * 2015-02-11 2018-12-04 Qualcomm Incorporated Of sample entry and operation point signalling in a layered video file format

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190010568A (ko) * 2016-05-24 2019-01-30 퀄컴 인코포레이티드 샘플 엔트리들 및 랜덤 액세스
KR20210080607A (ko) * 2017-03-27 2021-06-30 캐논 가부시끼가이샤 생성된 콘텐츠를 포함하는 미디어 데이터를 인코딩하기 위한 방법 및 장치
US11700434B2 (en) 2017-03-27 2023-07-11 Canon Kabushiki Kaisha Method and apparatus for generating media data

Also Published As

Publication number Publication date
CN105637885B (zh) 2019-12-20
EP3061248A1 (en) 2016-08-31
US20150110473A1 (en) 2015-04-23
TW201524192A (zh) 2015-06-16
IL244612A0 (en) 2016-04-21
HUE046798T2 (hu) 2020-03-30
CA2926126C (en) 2019-09-17
PH12016500745B1 (en) 2016-05-30
CN105637884B (zh) 2019-04-23
AU2014340056A1 (en) 2016-04-14
US20150110192A1 (en) 2015-04-23
HK1221102A1 (zh) 2017-05-19
SG11201601954PA (en) 2016-05-30
TW201528819A (zh) 2015-07-16
CA2925674C (en) 2019-10-01
SA516371001B1 (ar) 2020-09-22
TWI645721B (zh) 2018-12-21
CA2926126A1 (en) 2015-04-30
MY172351A (en) 2019-11-21
RU2016115539A (ru) 2017-11-28
CN105659607A (zh) 2016-06-08
SI3061250T1 (sl) 2019-04-30
SG11201601902VA (en) 2016-05-30
RU2678517C2 (ru) 2019-01-29
EP3061249A1 (en) 2016-08-31
RU2016115350A (ru) 2017-11-28
CL2016000956A1 (es) 2016-10-14
JP2016540415A (ja) 2016-12-22
DK3061250T3 (en) 2019-04-08
JP6419803B2 (ja) 2018-11-07
EP3061248B1 (en) 2020-07-22
PH12016500745A1 (en) 2016-05-30
TWI645710B (zh) 2018-12-21
JP6434008B2 (ja) 2018-12-05
PH12016500536A1 (en) 2016-06-13
EP3061250B1 (en) 2019-01-16
RU2016115534A3 (ko) 2018-06-18
DK3061249T3 (da) 2020-01-20
MX2016005108A (es) 2016-08-03
SA516371000B1 (ar) 2020-07-19
AU2014340046B2 (en) 2019-04-04
WO2015061551A1 (en) 2015-04-30
MX2016005084A (es) 2016-08-03
MY177745A (en) 2020-09-23
ES2720662T3 (es) 2019-07-23
RU2667048C2 (ru) 2018-09-13
US20150110203A1 (en) 2015-04-23
TW201524191A (zh) 2015-06-16
HK1220307A1 (zh) 2017-04-28
AU2014340056B2 (en) 2019-04-04
TWI645709B (zh) 2018-12-21
SG11201601901XA (en) 2016-05-30
NZ718200A (en) 2019-11-29
IL244612B (en) 2019-06-30
MX353208B (es) 2018-01-08
NZ718303A (en) 2019-11-29
CN105659607B (zh) 2019-03-12
EP3061250A1 (en) 2016-08-31
JP2016540416A (ja) 2016-12-22
HUE042230T2 (hu) 2019-06-28
AU2014340046A1 (en) 2016-04-14
MX2016005098A (es) 2016-08-01
PH12016500536B1 (en) 2016-06-13
CN105637885A (zh) 2016-06-01
MX353217B (es) 2018-01-08
KR20160074522A (ko) 2016-06-28
CL2016000958A1 (es) 2016-10-14
KR20160075553A (ko) 2016-06-29
RU2016115534A (ru) 2017-11-28
NZ718158A (en) 2019-11-29
WO2015061561A1 (en) 2015-04-30
PH12016500637A1 (en) 2016-05-30
EP3061249B1 (en) 2019-10-09
RU2676876C2 (ru) 2019-01-11
IL244613B (en) 2019-07-31
RU2016115350A3 (ko) 2018-07-19
JP2016540414A (ja) 2016-12-22
US9621919B2 (en) 2017-04-11
CA2926141C (en) 2019-09-24
US9648348B2 (en) 2017-05-09
AU2014339980B2 (en) 2018-08-02
WO2015061580A1 (en) 2015-04-30
AU2014339980A1 (en) 2016-04-21
HK1220062A1 (zh) 2017-04-21
RU2016115539A3 (ko) 2018-08-28
ES2765462T3 (es) 2020-06-09
US9712843B2 (en) 2017-07-18
IL244613A0 (en) 2016-04-21
CA2926141A1 (en) 2015-04-30
JP6559663B2 (ja) 2019-08-14
CA2925674A1 (en) 2015-04-30
CN105637884A (zh) 2016-06-01
PT3061250T (pt) 2019-05-17
IL244614A0 (en) 2016-04-21
CL2016000963A1 (es) 2017-01-13
MX353228B (es) 2018-01-08
MY174120A (en) 2020-03-10

Similar Documents

Publication Publication Date Title
AU2014340046B2 (en) Multi-layer video file format designs
CA2973376C (en) Design of sample entry and operation point signalling in a layered video file format
OA18394A (en) Design of sample entry and operation point signalling in a layered video file format.

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application