KR20190103180A - 파일 포맷에서의 중요한 비디오 정보의 시그널링 - Google Patents

파일 포맷에서의 중요한 비디오 정보의 시그널링 Download PDF

Info

Publication number
KR20190103180A
KR20190103180A KR1020197019790A KR20197019790A KR20190103180A KR 20190103180 A KR20190103180 A KR 20190103180A KR 1020197019790 A KR1020197019790 A KR 1020197019790A KR 20197019790 A KR20197019790 A KR 20197019790A KR 20190103180 A KR20190103180 A KR 20190103180A
Authority
KR
South Korea
Prior art keywords
box
file
data
media content
video
Prior art date
Application number
KR1020197019790A
Other languages
English (en)
Other versions
KR102420676B1 (ko
Inventor
예-쿠이 왕
토마스 슈토크하머
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20190103180A publication Critical patent/KR20190103180A/ko
Application granted granted Critical
Publication of KR102420676B1 publication Critical patent/KR102420676B1/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/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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2353Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/8451Structuring of content, e.g. decomposing content into time segments using Advanced Video Coding [AVC]
    • 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

Landscapes

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

Abstract

미디어 콘텐츠를 프로세싱하기 위한 디바이스는 비디오 코덱에 대한 파일 포맷을 따르는 파일 내의 박스로부터 데이터를 획득하는 것으로서, 그 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고 미디어 콘텐츠는 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하고; 및 그 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정한다. 미디어 콘텐츠를 생성하기 위한 디바이스는 파일 포맷을 따르는 파일 내의 박스에 데이터를 생성하는 것으로서, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고, 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하고; 및 파일을 출력한다.

Description

파일 포맷에서의 중요한 비디오 정보의 시그널링
본원은 2017년 1월 10일자로 출원된 미국 가특허출원 제 62/444,725 호; 및 2017년 1월 11일로 출원된 미국 가특허출원 제 62/445,151 호의 이익을 주장하며, 양자의 전체 내용은 참조에 의해 여기에 포함된다.
본 개시는 비디오 데이터를 프로세싱하는 것에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인용 디지털 보조기들 (PDA들), 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함한, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 MPEG -2, MPEG -4, ITU-T H.263, ITU-T H.264/MPEG -4, 파트 10, 어드밴스드 비디오 코딩 (AVC), ITU-T H.265, 고효율 비디오 코딩 (HEVC) 표준에 의해 정의된 표준들, 및 그러한 표준들의 확장들에서 설명된 기법들과 같은 비디오 압축 기법들을 구현한다. 비디오 디바이스들은 그러한 비디오 압축 기법들을 구현함으로써 디지털 비디오 정보를 더 효율적으로 송신, 수신, 인코딩, 디코딩, 및/또는 저장할 수도 있다.
비디오 압축 기법들은 비디오 시퀀스들에 내재한 리던던시를 감소 또는 제거하기 위해 공간 (인트라-픽처) 예측 및/또는 시간 (인터-픽처) 예측을 수행할 수도 있다. 블록 기반 비디오 코딩에 대해, 비디오 슬라이스 (예를 들어, 비디오 프레임 또는 비디오 프레임의 부분) 는 코딩 트리 블록들 및 코딩 블록들과 같은 비디오 블록들로 파티셔닝될 수도 있다. 공간 또는 시간 예측은 코딩될 블록에 대한 예측 블록을 발생시킨다. 잔차 데이터는 코딩될 원래의 블록과 예측 블록 간의 픽셀 차이들을 나타낸다. 추가의 압축을 위하여, 잔차 데이터는 픽셀 도메인으로부터 변환 도메인으로 변환되어 잔차 변환 계수들을 낳을 수도 있고, 그 후 이들은 양자화될 수도 있다.
비디오 데이터가 인코딩된 후에, 비디오 데이터는 송신 또는 저장을 위해 패킷화 될 수도 있다. 비디오 데이터는 ISO (International Organization for Standardization) 베이스 미디어 파일 포맷 및 그 확장물들과 같은 다양한 표준들 중 임의의 것에 따르는 비디오 파일로 어셈블링될 수도 있다.
일반적으로, 본 개시는 HDR (High Dynamic Range) 비디오, WCG (Wide Color Gamut) 비디오, VR (Virtual Reality) 콘텐츠, 및 샘플 엔트리 및/또는 코덱 파라미터와 같은 파일 포맷에서 쉽게 접근 가능한 장소에서의 360도 비디오와 관련된 중요한 비디오 정보의 시그널링과 관련된 기법들을 기술한다. 샘플 엔트리 및/또는 코덱 파라미터에서 중요한 비디오 정보를 갖는 잠재적인 이점은 그 중요한 비디오 정보가 콘텐츠를 거절하는 것, 콘텐츠를 선택하는 것, 콘텐츠를 수락하는 것, 또는 콘텐츠를 요청하는 것과 같은 콘텐츠 관리 결정을 행하기 위해, HTTP 를 통한 동적 적응형 스트리밍 (Dynamic Adaptive Streaming over HTTP: DASH) 와 같은 적응형 스트리밍 클라이언트를 포함하는 애플리케이션 클라이언트에 쉽게 노출되고 그것에 의해 쉽게 액세스될 수 있다는 점이다.
일 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 방법은 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하는 단계로서, 그 박스는 비디오 코덱에 대한 파일 포맷에 따르는 파일 내에 있고, 그 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고 미디어 콘텐츠는 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하는 단계; 및 그 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는 단계를 포함한다.
다른 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 장치는 미디어 콘텐츠를 저장하도록 구성된 하나 이상의 저장 매체들; 및 하나 이상의 저장 매체들에 커플링된 하나 이상의 프로세싱 회로들을 포함하고, 하나 이상의 프로세싱 회로들은 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하는 것으로서, 그 박스는 비디오 코덱에 대한 파일 포맷에 따르는 파일 내에 있고, 그 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고 미디어 콘텐츠는 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하고; 및 그 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하도록 구성된다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체는 명령들을 저장하며, 그 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하게 하는 것으로서, 그 박스는 비디오 코덱에 대한 파일 포맷에 따르는 파일 내에 있고, 그 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고 미디어 콘텐츠는 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하게 하고; 및 그 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하게 한다.
다른 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 장치는 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하는 수단으로서, 박스는 비디오 코덱에 대한 파일 포맷에 따르는 파일 내에 있고, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고 미디어 콘텐츠는 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하는 수단; 및 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는 수단을 포함한다.
다른 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 방법은 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하는 단계로서, 박스는 파일 포맷에 따르는 파일 내에 있고, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고, 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하는 단계; 및 파일을 출력하는 단계를 포함한다.
다른 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 장치는 미디어 콘텐츠를 저장하도록 구성된 하나 이상의 저장 매체들; 및 하나 이상의 저장 매체들에 커플링된 하나 이상의 프로세싱 회로들을 포함하고, 하나 이상의 프로세싱 회로들은, 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하는 것으로서, 박스는 파일 포맷을 따르는 파일 내에 있고, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고, 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하고; 및 파일을 출력하도록 구성된다.
다른 예에 따르면, 컴퓨터 판독가능 저장 매체는 명령들을 저장하며, 그 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하게 하는 것으로서, 박스는 파일 포맷에 따르는 파일 내에 있고, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고, 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하게 하고; 및 파일을 출력하게 한다.
다른 예에 따르면, 미디어 콘텐츠를 프로세싱하기 위한 장치는 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하는 수단으로서, 박스는 파일 포맷에 따르는 파일 내에 있고, 박스는 데이터를 포함하는 신택스 구조를 포함하며, 파일은 미디어 콘텐츠와 연관되고, 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하는 수단; 및 파일을 출력하는 수단을 포함한다.
본 개시의 하나 이상의 양태들의 상세는 첨부하는 도면 및 이하의 설명에서 진술된다. 본 개시에 기술된 기법들의 다른 특징들, 목적들, 및 이점들은 상세한 설명, 도면, 및 청구범위로부터 분명할 것이다.
도 1 은 본 개시에 기술된 하나 이상의 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 나타내는 블록도이다.
도 2 는 본 개시에 기술된 하나 이상의 기법들을 구현할 수도 있는 예시적인 비디오 인코더를 나타내는 블록도이다.
도 3 은 본 개시에 기술된 하나 이상의 기법들을 구현할 수도 있는 예시적인 비디오 디코더를 나타내는 블록도이다.
도 4 는 네트워크의 부분을 형성하는 디바이스들의 예시의 세트를 도시하는 블록도이다.
도 5 는 본 개시의 하나 이상의 기법들에 따라 파일의 예시의 구조를 도시하는 개념도이다.
도 6 은 샘플 멀티미디어 콘텐츠의 엘리먼트들을 도시하는 개념도이다.
도 7 은 예시의 비디오 파일의 엘리먼트들을 도시하는 블록도이다.
도 8 은 본 개시의 기법에 따라 파일을 프로세싱하기 위한 디바이스의 예시의 동작을 도시하는 플로우챠트이다.
도 9 는 본 개시의 기법에 따라 파일을 프로세싱하기 위한 디바이스의 예시의 동작을 도시하는 플로우챠트이다.
일반적으로, 본 개시는 HDR (High Dynamic Range) 비디오, WCG (Wide Color Gamut) 비디오, VR (Virtual Reality) 콘텐츠, 및 360도 비디오와 관련된 중요한 비디오 정보 뿐아니라, 샘플 엔트리 및/또는 코덱 파라미터와 같은 파일 포맷에서 쉽게 접근 가능한 장소에서의 본질적인 보충 강화 정보 (SEI) 메시지들의 존재에 관한 정보의 시그널링과 관련된 기법들을 기술한다. 샘플 엔트리 및/또는 코덱 파라미터에서 중요한 비디오 정보를 갖는 잠재적인 이점은 그 중요한 비디오 정보가 콘텐츠를 거절하는 것, 콘텐츠를 선택하는 것, 콘텐츠를 수락하는 것, 또는 콘텐츠를 요청하는 것과 같은 콘텐츠 관리 결정을 행하기 위해, HTTP 를 통한 동적 적응형 스트리밍 (Dynamic Adaptive Streaming over HTTP: DASH) 와 같은 적응형 스트리밍 클라이언트를 포함하는 애플리케이션 클라이언트에 쉽게 노출되고 그것에 의해 쉽게 액세스될 수 있다는 점이다. 본 개시의 기술이 주로 DASH를 참조하여 설명 될 것이지만, 본 개시의 기술은 HTTP 라이브 스트리밍 (HLS) 및 공통 미디어 애플리케이션 포맷 (CMAF) 스트리밍과 같은 다른 유형의 적응형 스트리밍에 적용될 수도 있다.
본 개시의 콘텍스트에서, 중요한 비디오 정보는 일반적으로 콘텐츠 선택의 목적으로 디바이스에 의해 사용될 수 있는 비디오 정보를 지칭한다. 예를 들어, 디바이스는 중요한 정보를 처리하여 디바이스가 특정 유형의 미디어 콘텐츠를 처리하는 데 필요한 능력들을 갖는지 여부를 결정할 수도 있다. 중요한 정보의 예는 비디오 데이터를 인코딩하는 데 사용되는 비디오 코덱과 비트스트림의 프로파일 및 레벨을 포함한다. 본 개시의 기술이 또한 적용될 수 있는 다른 유형의 중요한 정보가 아래에서 보다 상세히 설명될 것이다.
코덱은 일반적으로 광범위한 애플리케이션 및 서비스를 서빙하기에 충분히 일반적이도록 설계된다. "프로파일"은 일반적으로 특정 코덱에 특정되는 전체 비트스트림 신택스의 서브 세트를 나타낸다. 일반적으로, 상이한 디바이스는 특정 애플리케이션에 필요한 비트 레이트, 해상도 또는 품질에 따라 상이한 프로파일을 이용할 수도 있다. 그러나 특정 프로파일에 대해서 조차도, 비트스트림의 신택스 엘리먼트에 의해 취해진 값에 따라 인코더와 디코더의 성능에 매우 큰 변화를 요구할 수 있으며, 많은 경우에 있어서 디바이스가 특정 프로파일에 의해 지원되는 모든 가능한 신택스 값을 처리할 수 있는 디코더를 구현하는 것이 실용적이지 않을 수도 있다. 따라서, 프로파일의 경우, 코덱은 또한 일반적으로 각 프로파일 내에 다양한 "계층"및 "레벨"을 특정한다. 계층의 레벨은 비트스트림에 있어서 신택스 엘리먼트들의 값들에 부과된 제약들의 명시된 세트이다.
모든 디바이스가 모든 코덱의 비디오 콘텐츠를 프로세싱할 수 있는 것은 아니며, 특정 디바이스가 특정 코덱을 지원하더라도 디바이스가 반드시 코덱의 모든 프로파일이나 프로파일의 모든 계층 및 레벨에 대해 비디오를 프로세싱할 수 있는 것은 아니다. 기존 솔루션을 사용하면, 비디오 디바이스는 인코딩된 비디오 데이터에 포함되는 비디오 유용성 정보를 디코딩해야 한다. 이 개시의 기술은 잠재적으로 디바이스가 적은 디코딩 및 적은 프로세싱으로 비디오 데이터에 관한 중요한 정보에 액세스할 수 있게 하며, 이것은 디바이스가 보다 신속하게 그리고 더 작은 대역폭을 이용하여 콘텐츠 선택 결정을 내릴 수 있게 하고, 이것은 전반적인 사용자 경험을 향상시킬 수 있다.
이하에서 더 상세히 설명되는 바와 같이, 본 개시의 기술들을 이용하여, 디바이스는 비디오 코덱에 대한 파일 포맷을 따르는 파일 내의 박스로부터 데이터를 획득하고, 박스로부터 획득된 데이터에 기초하여, 파일과 관련된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다. 박스는 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들과 분리될 수도 있다. 즉, 데이터를 포함하는 박스는 VCL (Video Coding Layer) 네트워크 추상화 계층 (NAL) 단위 및 아래에 설명된 비 VCL NAL 단위를 포함하는 박스와 다른 상자일 수도 있다. 박스는 예를 들어 샘플 엔트리 구조를 포함하는 샘플 설명 박스일 수도 있다. 디바이스는 또한 미디어 프리젠테이션 디스크립션 (MPD) 데이터 구조로부터 데이터를 얻을 수도 있다. 파일 또는 MPD 내의 박스로부터 데이터를 얻음으로써, 디바이스는 보다 신속하게 콘텐츠 선택 결정을 행할 수 있고, 따라서 디바이스의 사용자에게 더 나은 전반적인 사용자 경험을 제공할 수 있다.
도 1 은 본 개시의 기법들을 이용할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 나타내는 블록도이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은, 목적지 디바이스 (14) 에 의해 더 나중 시간에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스 (12) 를 포함한다. 특히, 소스 디바이스 (12) 는 인코딩된 비디오 데이터를, 컴퓨터 판독가능 매체 (16) 를 통해 목적지 디바이스 (14) 에 제공한다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 데스크탑 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨
터들, 셋톱 박스들, 전화기 핸드셋 이를테면 소위 "스마트" 폰들, 태블릿 컴퓨터, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 재생기들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 어느 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신을 위해 갖추어진다. 따라서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 무선 통신 디바이스들일 수도 있다. 본 개시에 설명된 기법들은 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 소스 디바이스 (12) 는 예시적인 비디오 인코딩 디바이스 (즉, 비디오 데이터를 인코딩하기 위한 디바이스) 이다. 목적지 디바이스 (14) 는 예시적인 비디오 디코딩 디바이스 (즉, 비디오 데이터를 디코딩하기 위한 디바이스) 이다.
도 1 의 예시된 시스템 (10) 은 단지 일 예이다. 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일부 예에서, 기법들은 통상적으로 "코덱 (CODEC)"으로 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (12) 는 소스 디바이스 (14) 가 목적지 디바이스 (14) 로의 송신을 위한 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들이다. 일부 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는, 소스 디바이스 (12) 및 목적지 디바이스 (14) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭 방식으로 동작한다. 그러므로, 시스템 (10) 은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 화상 통화를 위해, 소스 디바이스 (12) 와 목적지 디바이스 (14) 간의 일방향 또는 양방향 비디오 송신을 지원할 수도 있다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 데이터를 저장하도록 구성된 저장 매체 (19), 비디오 인코더 (20), 및 출력 인터페이스 (22) 를 포함한다. 목적지 디바이스 (14) 는 입력 인터페이스 (26), 인코딩된 비디오 데이터를 저장하도록 구성된 저장 매체 (28), 비디오 디코더 (30) 및 디스플레이 디바이스 (32) 를 포함한다. 다른 예들에서, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 다른 컴포넌트들 또는 배열들을 포함한다. 예를 들어, 소스 디바이스 (12) 는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 유사하게, 목적지 디바이스 (14) 는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이싱할 수도 있다.
비디오 소스 (18) 는 비디오 데이터의 소스이다. 비디오 데이터는 일련의 픽처들을 포함할 수도 있다. 비디오 소스 (18) 는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (video archive), 및/또는 비디오 콘텐트 제공자로부터 비디오 데이터를 수신하기 위한 비디오 피드 인터페이스 (video feed interface) 를 포함할 수도 있다. 일부 예들에서, 비디오 소스 (18) 는 컴퓨터 그래픽 기반 비디오 데이터, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합을 생성한다. 저장 매체 (19) 는 비디오 데이터를 저장하도록 구성될 수도 있다. 각각의 경우에 있어서, 캡처된, 사전-캡처된 또는 컴퓨터 생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다.
출력 인터페이스 (22) 는 인코딩된 비디오 정보를 컴퓨터 판독가능 매체 (16) 에 출력할 수도 있다. 출력 인터페이스 (22) 는 다양한 타입들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 출력 인터페이스 (22) 는 무선 송신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 예들에 있어서, 출력 인터페이스 (22) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 출력 인터페이스 (22) 가 무선 송신기를 포함하는 일부 예들에 있어서, 출력 인터페이스 (22) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 인코딩된 비디오 데이터와 같은 데이터를 송신하도록 구성될 수도 있다. 일부 예들에 있어서, 출력 인터페이스 (22) 의 회로부는 비디오 인코더 (20) 및/또는 소스 디바이스 (12) 의 다른 컴포넌트들의 회로부에 통합된다. 예를 들어, 비디오 인코더 (20) 및 출력 인터페이스 (22) 는 시스템 온 칩 (SoC) 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
목적지 디바이스 (14) 는, 컴퓨터 판독 가능 매체 (16) 를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨터 판독 가능 매체 (16) 는, 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 이동시킬 수 있는 임의의 유형의 매체 또는 디바이스를 포함할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (16) 는, 소스 디바이스 (12) 로 하여금 실시간으로 직접 목적지 디바이스 (14) 로, 인코딩된 비디오 데이터를 송신할 수 있게 하기 위한 통신 매체를 포함한다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다. 목적지 디바이스 (14) 는 인코딩된 비디오 데이터 및 디코딩된 비디오 데이터를 저장하도록 구성된 하나 이상의 데이터 저장 매체를 포함할 수도 있다.
일부 예에서, 출력 인터페이스 (22) 는 인코딩된 비디오 데이터와 같은 데이터를 저장 디바이스와 같은 중간 디바이스로 출력할 수도 있다. 유사하게, 목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 중간 디바이스로부터 인코딩된 데이터를 수신할 수도 있다. 중간 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 국부적으로 액세스된 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다. 일부 예에서, 중간 디바이스는 파일 서버에 대응한다. 예의 파일 서버들은 웹 서버, FTP 서버, NAS (network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다.
목적지 디바이스 (14) 는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수도 있다. 이것은, 파일 서버 상에 저장된 인코딩된 비디오 데이터를 액세스하는데 적합한 무선 채널 (예컨대, Wi-Fi 접속), 유선 접속 (예컨대, DSL, 케이블 모뎀 등), 또는 양자의 조합을 포함할 수도 있다. 저장 디바이스로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
컴퓨터 판독 가능 매체 (16) 는, 무선 브로드캐스트 또는 유선 네트워크 송신 등의 일시적 매체, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크 또는 다른 컴퓨터 판독 가능 매체 등의 저장 매체 (즉, 비일시적 저장 매체) 를 포함할 수도 있다. 일부 예들에서, 네트워크 서버 (미도시) 는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스 (14) 에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스 (12) 로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체 (16) 는, 다양한 예들에 있어서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하는 것으로 이해될 수도 있다.
목적지 디바이스 (14) 의 입력 인터페이스 (26) 는 컴퓨터 판독가능 매체 (16) 로부터 데이터를 수신한다. 입력 인터페이스 (26) 는 다양한 타입들의 컴포넌트들 또는 디바이스들을 포함할 수도 있다. 예를 들어, 입력 인터페이스 (26) 는 무선 수신기, 모뎀, 유선 네트워킹 컴포넌트 (예를 들어, 이더넷 카드), 또는 다른 물리 컴포넌트를 포함할 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 예들에 있어서, 입력 인터페이스 (26) 는 4G, 4G-LTE, LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 입력 인터페이스 (26) 가 무선 수신기를 포함하는 일부 예들에 있어서, 입력 인터페이스 (26) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예를 들어, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라 변조되는 비트스트림과 같은 데이터를 수신하도록 구성될 수도 있다. 일부 예들에 있어서, 입력 인터페이스 (26) 의 회로부는 비디오 디코더 (30) 및/또는 목적지 디바이스 (14) 의 다른 컴포넌트들의 회로부에 통합될 수도 있다. 예를 들어, 비디오 디코더 (30) 및 입력 인터페이스 (26) 는 SoC 의 부분들일 수도 있다. SoC 는 또한, 범용 마이크로프로세서, 그래픽스 프로세싱 유닛 등과 같은 다른 컴포넌트들을 포함할 수도 있다.
저장 매체 (28) 는 입력 인터페이스 (26) 에 의해 수신된 인코딩된 비디오 데이터 (예컨대, 비트스트림) 와 같은 인코딩된 비디오 데이터를 저장하도록 구성될 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이한다. 디스플레이 디바이스 (32) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디스플레이 디바이스를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP) 들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합과 같은 다양한 적합한 회로 중 어느 것으로도 구현될 수 있다. 그 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 그 소프트웨어를 위한 명령들을 저장하고 본 개시의 기법들을 수행하기 위하여 하나 이상의 프로세서들을 이용하여 하드웨어에서 그 명령들을 실행할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 일방은 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다.
일부 예들에 있어서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 코딩 표준 또는 사양에 따라 비디오 데이터를 인코딩 및 디모딩한다. 예를 들어, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 그의 SVC (Scalable Video Coding) 및 MVC (Multi-View Video Coding) 확장들을 포함하여, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 또는 ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual 및 ITU-T H.264 (ISO/IEC MPEG-4 AVC 으로도 알려짐), 또는 다른 비디오 코딩 표준 또는 사양에 따라 비디오 데이터를 인코딩 및 디코딩할 수도 있다. 일부 예에서, 비디오 인코더 (20) 및 비디오 디코더 (30)는 ITU-T H.265 로 공지된 HEVC (High Efficiency Video Coding), 그것의 범위 및 스크린 콘텐츠 코딩 확장들, 그것의 3D 비디오 코딩 확장 (3D-HEVC), 그것의 다중 뷰 확장 (MV-HEVC), 또는 그것의 스케일러블 확장 (SHVC) 에 따라 비디오 데이터를 인코딩 및 디코딩한다.
HEVC 및 다른 비디오 코딩 사양들에서, 비디오 데이터는 일련의 픽쳐 (picture) 들을 포함한다. 픽처들은 "프레임들"로서 또한 지칭될 수도 있다. 픽쳐는 하나 이상의 샘플 어레이들을 포함할 수도 있다. 픽쳐의 각각의 별개의 샘플 어레이는 각각의 컬러 성분에 대한 샘플들의 어레이를 포함할 수도 있다. 픽처는 SL, SCb, 및 SCr 로서 표기되는 3 개의 샘플 어레이들을 포함할 수도 있다. SL 은 루마 샘플들의 2차원 어레이 (즉, 블록) 이다. SCb 는 Cb 크로마 샘플들의 2-차원 어레이이다. SCr 는 Cr 크로마 샘플들의 2-차원 어레이이다. 다른 경우들에서, 픽처는 단색 (monochrome) 일 수도 있고, 루마 샘플들의 어레이만을 포함할 수도 있다.
비디오 데이터를 인코딩하는 것의 부분으로서, 비디오 인코더 (20) 는 비디오 데이터의 픽쳐들을 인코딩할 수도 있다. 환언하면, 비디오 인코더 (20) 는 비디오 데이터의 픽쳐의 인코딩된 표현을 생성할 수도 있다. 픽쳐의 인코딩된 표현은 본 명세서에서 "코딩된 픽쳐" 또는 "인코딩된 픽쳐" 로 지칭될 수도 있다.
픽처의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 픽처의 블록들을 인코딩할 수도 있다. 비디오 인코더 (20) 는 비디오 블록의 인코딩된 표현을 비트스트림에 포함할 수도 있다. 일부 예에서, 픽쳐의 블록을 인코딩하기 위해, 비디오 인코더 (20)는 인트라 예측 또는 인터 예측을 수행하여 하나 이상의 예측 블록을 생성한다. 또한, 비디오 인코더 (20) 는 블록에 대한 잔차 데이터를 생성할 수도 있다. 잔차 블록은 잔차 샘플을 포함한다. 각각의 잔차 샘플은 생성된 예측 블록들 중 하나의 샘플과 블록의 대응하는 샘플 간의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 변환 계수들을 생성하기 위해 잔차 샘플들의 블록들에 변환을 적용할 수도 있다. 또한, 비디오 인코더 (20) 는 변환 계수를 양자화할 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 변환 계수를 표현하기 위해 하나 이상의 신택스 엘리먼트들을 생성할 수도 있다. 비디오 인코더 (20) 는 변환 계수를 나타내는 신택스 엘리먼트들 중 하나 이상을 엔트로피 인코딩할 수도 있다.
보다 구체적으로, HEVC 또는 다른 비디오 코딩 사양에 따라 비디오 데이터를 인코딩할 때, 픽쳐의 인코딩된 표현을 생성하기 위해, 비디오 인코더 (20) 는 픽쳐의 각 샘플 어레이를 코딩 트리 블록 (CTB) 들로 파티셔닝하고 CTB 들을 인코딩할 수도 있다. CTB 는 픽쳐의 샘플 에러이 내의 샘플들의 NxN 블록일 수도 있다. HEVC 메인 프로파일에서, 기술적으로 8x8 CTB 크기가 지원될 수 있지만 CTB 의 크기는 16x16 에서 64x64 까지 가능하다.
픽쳐의 코딩 트리 유닛 (CTU) 은 하나 이상의 CTB 들을 포함할 수도 있고, 그 하나 이상의 CTB 들의 샘플들을 인코딩하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 예를 들어, 각각의 CTU 는 루마 샘플들의 CTB, 크로마 샘플들의 2개의 대응하는 CTB들, 및 CTB들의 샘플들을 인코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 픽처 또는 3개의 별도의 컬러 평면들을 갖는 픽처에 있어서, CTU 는 단일의 CTB, 및 그 CTB 의 샘플들을 인코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. CTU 는 "트리 블록" 또는 "최대 코딩 유닛" (LCU) 으로 지칭될 수도 있다. 본 개시에서, "신택스 구조" 는 특정된 순서로 비트스트림에 함께 존재하는 제로 또는 그 보다 많은 신택스 엘리먼트들로서 정의될 수도 있다. 일부 코덱에서는, 인코딩된 픽쳐가 픽쳐의 모든 CTU 들을 포함하는 인코딩된 표현이다.
픽쳐의 CTU 를 인코딩하기 위해, 비디오 인코더 (20) 는 CTU 의 CTB 들을 하나 이상의 코딩 블록으로 파티셔닝할 수도 있다. 코딩 블록은 샘플들의 NxN 블록이다. 일부 코덱들에서, 픽처의 CTU 를 인코딩하기 위하여, 비디오 인코더 (20) 는 CTU 의 코딩 트리 블록들에 대해 쿼드 트리 파티셔닝을 재귀적으로 수행하여, CTB 들을 코딩 블록들, 따라서, 일명 "코딩 트리 유닛들" 로 파티셔닝할 수도 있다. 코딩 유닛 (CU) 은 하나 이상의 코딩 트리 블록들 및그 하나 이상의 코딩 트리 블록들의 샘플들을 인코딩하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 예를 들어, CU 는 루마 샘플 어레이, Cb 샘플 어레이, 및 Cr 샘플 어레이를 갖는 픽처의 루마 샘플들의 코딩 블록, 및 크로마 샘플들의 2 개의 대응하는 코딩 블록들, 그리고 코딩 블록들의 샘플들을 인코딩하는데 사용된 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, CU 는 단일의 코딩 블록, 및 그 코딩 블록의 샘플들을 코딩하는데 사용된 신택스 구조들을 포함할 수도 있다.
또한, 비디오 인코더 (20) 는 비디오 데이터의 픽쳐의 CU 들을 인코딩할 수도 있다. 일부 코덱들에서, CU 를 인코딩하는 것의 부분으로서, 비디오 인코더 (20) 는 CU 의 코딩 블록을 하나 이상의 예측 블록들로 파티셔닝할 수도 있다. 예측 블록은, 동일한 예측이 적용되는 샘플들의 직사각형 (즉, 정사각형 또는 비정사각형) 블록이다. CU 의 예측 유닛 (PU) 은 CU 의 하나 이상의 예측 블록들 및 그 하나 이상의 예측 블록들을 예측하기 위해 사용되는 신택스 구조를 포함할 수도 있다. 예를 들어, PU 는 루마 샘플들의 예측 블록, 크로마 샘플들의 2 개의 대응하는 예측 블록들, 및 예측 블록들을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, PU 는 단일의 예측 블록, 및 그 예측 블록을 예측하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 CU 의 PU 의 예측 블록 (예를 들어, 루마, Cb, 및 Cr 예측 블록) 을 위해 예측 블록 (예를 들어, 루마, Cb, 및 Cr 예측 블록) 을 생성할 수도 있다. 비디오 인코더 (20) 는 인트라 예측 또는 인터 예측을 이용하여 예측 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 예측 블록을 생성하기 위해 인트라 예측을 사용하는 경우에, 비디오 인코더 (20) 는 CU 를 포함하는 픽처의 디코딩된 샘플들에 기초하여 예측 블록을 생성할 수도 있다. 비디오 인코더 (20) 가 인터 예측을 이용하여 현재 픽쳐의 PU 의 예측 블록을 생성하는 경우, 비디오 인코더 (20) 는 참조 픽쳐 (즉, 현재 픽쳐 이외의 픽쳐) 의 디코딩된 샘플들에 기초하여 PU 의 예측 블록을 생성할 수도 있다. HEVC 에서, 비디오 인코더 (20) 는 인터 예측된 PU 들에 대한 "coding_unit" 신택스 구조 내의 "prediction_unit" 신택스 구조를 생성하지만, 인트라 예측된 PU 들에 대한 "coding_unit" 신택스 구조 내에서 "prediction_unit" 신택스 구조를 생성하지 않는다. 오히려, HEVC 에서, 인트라 예측된 PU 들과 관련된 신택스 엘리먼트는 "coding_unit" 구문 구조에 직접 포함된다.
비디오 인코더 (20) 는 CU 에 대한 하나 이상의 잔차 블록들을 생성할 수도 있다. 실례로, 비디오 인코더 (20) 는 CU 에 대한 루마 잔차 블록을 생성할 수도 있다. CU 의 루마 잔차 블록에 있는 각각의 샘플은 CU 의 예측 루마 블록들 중 하나에 있는 루마 샘플과 CU 의 원래 루마 코딩 블록에 있는 대응하는 샘플 사이의 차이를 표시한다. 또한, 비디오 인코더 (20) 는 CU 에 대한 Cb 잔차 블록을 생성할 수도 있다. CU 의 Cb 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cb 블록들 중 하나에서의 Cb 샘플과 CU 의 오리지널 Cb 코딩 블록에서의 대응하는 샘플 사이의 차이를 나타낼 수도 있다. 비디오 인코더 (20) 는 또한, CU 에 대한 Cr 잔차 블록을 생성할 수도 있다. CU 의 Cr 잔차 블록에서의 각각의 샘플은 CU 의 예측성 Cr 블록들 중 하나에서의 Cr 샘플과 CU 의 오리지널 Cr 코딩 블록에서의 대응하는 샘플 간의 차이를 나타낼 수도 있다.
또한, 비디오 인코더 (20) 는 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 실례로, 비디오 인코더 (20) 는 쿼드-트리 파티셔닝을 이용하여 CU 의 잔차 블록들을 하나 이상의 변환 블록들로 분해할 수도 있다. 변환 블록은, 동일한 변환이 적용되는 샘플들의 직사각형 (예컨대, 정사각형 또는 비-정사각형) 블록이다. CU 의 변환 유닛 (TU) 은 하나 이상의 변환 블록들을 포함할 수도 있다. 예를 들어, TU 는 루마 샘플들의 변환 블록들, 크로마 샘플들의 2 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하기 위해 사용되는 신택스 구조들을 포함할 수도 있다. 따라서, CU 의 각 TU 는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록을 가질 수도 있다. TU 의 루마 변환 블록은 CU 의 루마 잔차 블록의 서브 블록일 수도 있다. Cb 변환 블록은 CU 의 Cb 잔차 블록의 서브-블록일 수도 있다. Cr 변환 블록은 CU 의 Cr 잔차 블록의 서브-블록일 수도 있다. 단색 픽처들 또는 3 개의 별개의 컬러 평면들을 갖는 픽처들에 있어서, TU 는 단일의 변환 블록, 및 그 변환 블록의 샘플들을 변환하는데 사용되는 신택스 구조들을 포함할 수도 있다.
비디오 인코더 (20) 는 TU 를 위한 계수 블록을 생성하기 위하여 TU 의 변환 블록에 하나 이상의 변환들을 적용할 수도 있다. 계수 블록은 변환 계수들의 2-차원 어레이일 수도 있다. 변환 계수는 스칼라 양일 수도 있다. 일부 예에서, 하나 이상의 변환은 변환 블록을 픽셀 도메인으로부터 주파수 도메인으로 변환한다. 따라서, 이러한 예들에서, 변환 계수는 주파수 도메인에 있다고 여겨지는 스칼라 양일 수도 있다. 변환 계수 레벨은 변환 계수 값의 계산을 위한 스케일링 이전의 디코딩 프로세스에서 특정 2 차원 주파수 인덱스와 연관된 값을 나타내는 정수 양이다.
일부 예들에서, 비디오 인코더 (20) 는 변환 블록에 대한 변환들의 적용을 생략한다. 이러한 예들에서, 비디오 인코더 (20) 는 변환 계수들과 동일한 방식으로 잔차 샘플 값들을 처리할 수도 있다. 따라서, 비디오 인코더 (20) 가 변환들의 적용을 생략하는 예들에서, 변환 계수들 및 계수 블록들의 다음과 같은 논의가 잔차 샘플들의 변환 블록들에 적용가능할 수도 있다.
계수 블록을 생성 한 후, 비디오 인코더 (20)는 계수 블록을 양자화하여 계수 블록을 나타내는 데 사용되는 데이터의 양을 감소시켜 잠재적으로 추가 압축을 제공할 수도 있다. 양자화란 일반적으로 값들의 범위를 단일 값으로 압축하는 프로세스를 말한다. 예를 들어, 양자화는 값을 상수로 나눈 다음 가장 가까운 정수로 라운딩하여 수행될 수도 있다. 계수 블록을 양자화하기 위해, 비디오 인코더 (20) 는 계수 블록의 변환 계수들을 양자화할 수도 있다. 양자화는 일부 또는 모든 변환 계수들과 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, n 비트 변환 계수는 양자화 동안 m 비트 변환 계수로 라운드-다운될 수도 있으며, 여기서, n 은 m 보다 크다. 일부 예들에서, 비디오 인코더 (20) 는 양자화를 스킵한다.
비디오 인코더 (20) 는 잠재적으로 양자화된 변환 계수의 일부 또는 전부를 나타내는 신택스 엘리먼트를 생성할 수도 있다. 비디오 인코더 (20) 는 양자화된 변환 계수를 나타내는 신택스 엘리먼트들 중 하나 이상을 인코딩할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 양자화된 변환 계수들을 표시하는 신택스 엘리먼트들에 대해 콘텍스트 적응적 이진 산술 코딩 (CABAC) 을 수행할 수도 있다. 따라서, 인코딩된 블록 (예를 들어, 인코딩된 CU) 은 양자화된 변환 계수를 나타내는 엔트로피 인코딩된 신택스 엘리먼트를 포함할 수도 있다.
비디오 인코더 (20) 는 인코딩된 비디오 데이터를 포함하는 비트스트림을 출력할 수도 있다. 즉, 비디오 인코더 (20) 는 비디오 데이터의 인코딩된 표현을 포함하는 비트스트림을 출력할 수도 있다. 비디오 데이터의 인코딩된 표현은 비디오 데이터의 픽쳐의 인코딩된 표현을 포함할 수도 있다. 예를 들어, 비트스트림은 비디오 데이터의 인코딩된 픽처들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 일부 예들에서, 인코딩된 픽처의 표현은 픽쳐의 블록들의 인코딩된 표현들을 포함할 수도 있다.
HEVC 및 다른 비디오 코딩 사양들에서, 비트스트림은 네트워크 추상 계층 (network abstraction layer; NAL) 유닛들의 시퀀스를 포함할 수도 있다. NAL 유닛은 NAL 유닛에서의 데이터의 타입 및 그 데이터를 에뮬레이션 방지 비트와 함께 필요에 따라 산재된 RBSP (raw byte sequence payload) 의 형태로 포함하는 바이트의 표시를 포함하는 신택스 구조이다. NAL 유닛들의 각각은 NAL 유닛 헤더를 포함할 수도 있고 RBSP 를 캡슐화할 수도 있다. NAL 유닛 헤더는, NAL 유닛 타입 코드를 표시하는 신택스 엘리먼트를 포함할 수도 있다. NAL 유닛의 NAL 유닛 헤더에 의해 명시되는 NAL 유닛 타입 코드는 NAL 유닛의 타입을 표시한다. RBSP 는 NAL 유닛 내에 캡슐화되는 정수 개의 바이트들을 포함하는 신택스 구조일 수도 있다. 일부 사례들에서, RBSP 는 제로 비트들을 포함한다.
비디오 디코더 (30) 는 비디오 인코더 (20) 에 의해 생성된 비트스트림을 수신할 수도 있다. 상술된 바와 같이, 비트스트림은 비디오 데이터의 인코딩된 표현을 포함할 수도 있다. 비디오 디코더 (30)는 비트 스트림을 디코딩하여 비디오 데이터의 픽쳐들을 재구성할 수도 있다. 비트스트림을 디코딩하는 것의 부분으로서, 비디오 디코더 (30) 는 비트스트림으로부터 신택스 엘리먼트들을 획득할 수도 있다. 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 적어도 부분적으로 기초하여 비디오 데이터의 픽쳐들을 재구성할 수도 있다. 비디오 데이터의 픽쳐를 재구성하기 위한 프로세스는 일반적으로, 픽쳐를 인코딩하기 위해 비디오 인코더 (20) 에 의해 수행되는 프로세스에 대해 역일 수도 있다.
예를 들어, 비디오 데이터의 픽처를 디코딩하는 것의 부분으로서, 비디오 디코더 (30) 는 인터 예측 또는 인트라 예측을 사용하여 예측 블록을 생성할 수도 있다. 또한, 비디오 디코더 (30) 는 비트스트림으로부터 획득된 신택스 엘리먼트들에 기초하여 변환 계수들을 결정할 수도 있다. 일부 예에서, 비디오 디코더 (30) 는 결정된 변환 계수를 역양자화할 수도 있다. 추가로, 비디오 디코더 (30) 는 결정된 변환 계수들에 역변환을 적용하여 잔차 샘플의 값을 결정할 수도 있다. 비디오 디코더 (30) 는 잔차 샘플들 및 생성된 예측 블록들의 대응하는 샘플들에 기초하여 픽쳐의 블록을 재구성할 수도 있다. 예를 들어, 비디오 디코더 (30) 는 잔차 샘플들을 생성된 예측 블록의 대응하는 샘플에 가산하여 블록의 재구성된 샘플들을 결정할 수도 있다.
특히, HEVC 및 다른 비디오 코딩 사양에서, 비디오 디코더 (30) 는 인터 예측 또는 인트라 예측을 사용하여 현재 CU의 각각의 PU에 대한 하나 이상의 예측 블록을 생성할 수도 있다. 또한, 비디오 디코더 (30) 는 현재 CU 의 TU들의 계수 블록들을 역양자화할 수도 있다. 비디오 디코더 (30) 는 계수 블록들에 대해 역변환들을 수행하여 현재 CU 의 TU들의 변환 블록들을 재구성할 수도 있다. 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측 블록들의 샘플들 및 현재 CU 의 TU 들의 변환 블록들의 잔차 샘플들에 기초하여 현재 CU 의 코딩 블록을 재구성할 수도 있다. 일부 예들에서, 비디오 디코더 (30) 는 현재 CU 의 PU들에 대한 예측 블록들의 샘플들을, 현재 CU 의 TU 들의 변환 블록들의 대응하는 디코딩된 샘플들에 부가함으로써, 현재 CU 의 코딩 블록들을 재구성할 수도 있다. 픽처의 각각의 CU 에 대한 코딩 블록들을 재구성함으로써, 비디오 디코더 (30) 는 픽처를 재구성할 수도 있다.
상술한 바와 같이, 비트스트림은 비디오 데이터 및 연관된 데이터의 인코딩된 화상의 표현을 포함할 수도 있다. 연관된 데이터는 파라미터 세트를 포함할 수도 있다. HEVC 및 다른 비디오 코딩 사양들에서, NAL 유닛은 비디오 파라미터 세트 (VPS), 시퀀스 파리미터 세트 (SPS) 및 픽쳐 파라미터 세트 (PPS) 에 대해 RBSP 를 캡슐화할 수도 있다. VPS 는 제로 이상의 전체 코딩된 비디오 시퀀스 (CVS) 에 적용되는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는 또한 제로 이상의 전체 CVS 에 적용되는 신택스 엘리먼트들을 포함하는 신택스 구조이다. SPS 는 SPS 가 활성일 때 활성인 VPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 따라서, VPS 의 신택스 엘리먼트는 SPS의 신택스 엘리먼트보다 더 일반적으로 적용 가능할 수도 있다. PPS 는 제로 이상의 코딩된 픽처들에 적용되는 신택스 엘리먼트들을 포함하는 신택스 구조이다. PPS 는 PPS 가 활성일 때 활성인 SPS 를 식별하는 신택스 엘리먼트를 포함할 수도 있다. 슬라이스의 슬라이스 헤더는 슬라이스가 코딩되고 있을 때 활성인 PPS 를 나타내는 신택스 엘리먼트를 포함할 수도 있다.
HEVC 및 기타 비디오 코딩 표준은 프로파일, 계층 및 레벨을 특정한다. 프로파일, 계층 및 레벨은 비트스트림에 대한 제한 및 이리하여 비트스트림을 디코딩하는 데 필요한 능력에 대한 제한을 특정한다. 프로파일, 계층 및 레벨은 또한 개개의 디코더 구현들 간의 상호 운용성 포인트를 나타내기 위해 사용될 수도 있다. 각 프로파일은 해당 프로파일을 준수하는 모든 비디오 디코더에 의해 지원되는 알고리즘 특징 및 제한의 서브 세트를 특정한다. 비디오 인코더는 프로파일에서 지원되는 모든 특징을 이용할 필요가 없다.
계층의 각 레벨은 신택스 엘리먼트와 변수가 가질 수 있는 값에 대한 제한들의 세트를 특정할 수도 있다. 동일한 세트의 계층 및 레벨 정의들은 모든 프로파일과 함께 사용될 수 있지만, 개개의 구현은 상이한 계층을 지원할 수 있으며 계층 내에서는 각각의 지원되는 프로파일에 대해 상이한 레벨을 지원할 수도 있다. 임의의 주어진 프로파일에 대해, 계층의 레벨은 일반적으로 특정 디코더 프로세싱 부하 및 메모리 능력에 대응할 수도 있다. 비디오 디코더의 능력들은 특정 프로파일, 계층 및 레벨의 제약을 준수하는 비디오 스트림을 디코딩하는 능력의 면에서 특정될 수도 있다. 각각의 그러한 프로필에 대해, 해당 프로파일에 대해 지원되는 계층 및 레벨이 또한 표현될 수도 있다. 일부 비디오 디코더는 특정 프로필, 계층 또는 레벨을 디코딩할 수 없을 수도 있다.
HEVC 에서, 프로파일, 계층 및 레벨은 구문 구조 profile_tier_level () 신택스 구조에 의해 시그널링될 수도 있다. profile_tier_level () 신택스 구조는 VPS 및/또는 SPS 에 포함될 수도 있다. profile_tier_level () 신택스 구조는 general_profile_idc 신택스 엘리먼트, general_tier_flag 신택스 엘리먼트 및 general_level_idc 신택스 엘리먼트를 포함할 수도 있다. general_profile_idc 신택스 엘리먼트는 CVS 가 준수하는 프로파일을 나타낼 수도 있다. general_tier_flag 신택스 엘리먼트는 general_level_idc 신택스 엘리먼트의 해석을 위한 계층 콘텍스트를 나타낼 수도 있다. general_level_idc 신택스 엘리먼트는 CVS 가 준수하는 레벨을 나타낼 수도 있다. 이러한 구문 요소의 다른 값은 예약될 수도 있다.
비디오 디코더의 능력들은 프로파일, 계층 및 레벨의 제약을 준수하는 비디오 스트림을 디코딩하는 능력의 면에서 특정될 수도 있다. 각각의 그러한 프로필에 대해, 해당 프로파일에 대해 지원되는 계층 및 레벨이 또한 표현될 수도 있다. 일부 예에서, 비디오 디코더는 HEVC 에서 특정된 값들 사이의 general_profile_idc 신택스 엘리먼트의 예약된 값이 특정된 프로파일들 사이의 중간 능력들을 나타내는 것으로 추론하지 않는다. 그러나 비디오 디코더는 HEVC 에서 특정된 값들 사이의 general_tier_flag 신택스 엘리먼트의 특정 값과 연관된 general_level_idc 시택스 엘리먼트의 예약된 값이 계층의 특정된 레벨들 사이의 중간 능력들을 나타내는 것을 추론할 수도 있다.
인코딩된 비디오 데이터 및/또는 인코딩된 비디오 데이터에 관한 메타데이터는 다양한 파일 포맷 표준을 따르는 파일에 저장될 수도 있다. 다양한 디바이스는 인코딩된 비디오 데이터 및/또는 인코딩된 비디오 데이터에 관한 메타데이터를 저장하기 위한 파일을 생성할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 파일을 생성할 수도 있다. 이러한 예에서, 출력 인터페이스 (22) 는 파일을 출력할 수도 있다. 도 1 의 예에서, 파일 생성 디바이스 (34) 는 소스 디바이스 (12) 에 의해 생성된 인코딩된 비디오 데이터를 수신하고 파일을 생성한다. 또한, 도 1 의 예에서, 파일 생성 디바이스 (34) 는 인코딩된 비디오 데이터, 파일 및/또는 다른 데이터를 저장하도록 구성된 메모리 (36) 를 포함한다. 파일 생성 디바이스 (34) 는 서버 디바이스, 중간 네트워크 디바이스, 또는 다른 유형의 디바이스와 같은 다양한 유형의 디바이스를 포함할 수도 있다. 파일 생성 디바이스 (34) 는 파일을 출력하도록 구성된, 출력 인터페이스 (22) 와 유사한 출력 인터페이스를 포함할 수도 있다.
파일 포맷 표준들은 ISO 기본 미디어 파일 포맷 (ISOBMFF, ISO/IEC 14496-12), 및 ISOBMFF 로부터 도출된 다른 파일 포맷을 포함하고, ISOBMFF 로부터 도출된 다른 파일 포맷은 MPEG-4 파일 포맷 (ISO/IEC 14496-15), 3GPP 파일 포맷 (3GPP TS 26.244), 및 AVC 파일 포맷 (ISO/IEC 14496-15) 을 포함한다. 원래 저장용으로 설계되었지만, ISOBMFF 는 스트리밍을 위해, 예컨대 점진적 다운로드 또는 DASH 를 위해 매우 유용함이 입증되었다. 스트리밍 목적으로, ISOBMFF 에서 정의된 무비 프래그먼트들이 사용될 수 있다.
ISO/IEC 14496-12 및 14496-15 에 대한 개정판의 초안들은 각각,
http://phenix.int-evry.fr/mpeg/doc_end_user/documents/111_Geneva/wg11/w15177-v6-w15177.zip
http://phenix.int-evry.fr/mpeg/doc_end_user/documents/112_Warsaw/wg11/w15479-v2-w15479.zip 에서 이용가능하다.
일부 예에서, ISO/IEC 14496-12 및 14496-15 에 대한 개정판의 초안 텍스트는 이하에서 "현재 초안 파일 형식 사양" 으로서 지칭될 수도 있다. ISOBMFF 는 AVC 파일 포맷과 같은 다수의 코덱 인캡슐레이션 포맷들뿐만 아니라, MPEG-4 파일 포맷, 3GPP 파일 포맷 (3GP) 및 DVB 파일 포맷과 같은 다수의 멀티미디어 컨테이너 포맷들에 대한 기준으로 사용된다.
오디오 및 비디오와 같은 연속 미디어 외에도 이미지와 같은 정적 미디어 및 메타 데이터는 ISOBMFF를 준수하는 파일에 저장될 수 있다. ISOBMFF 에 따라 구조화된 파일들은, 로컬 미디어 파일 플레이백, 원격 파일의 점진적 다운로딩, DASH 에 대한 세그먼트들, 스트리밍될 콘텐츠 및 그 패킷화 명령들에 대한 컨테이너들, 및 수신된 실시간 미디어 스트림들의 레코딩을 포함하여 다수의 목적들로 사용될 수도 있다.
박스는 ISOBMFF의 기본 신택스 구조이다. 박스는 코딩된 박스 타입 (예를 들어, 4 문자 코딩된 박스 타입), 박스의 바이트 카운트, 및 페이로드를 포함할 수도 있다. ISOBMFF 파일은 박스들의 시퀀스로 이루어지거나 그것을 포함하고, 박스들은 다른 박스들을 포함할 수도 있다. ISOBMFF 는 다양한 유형의 상자를 정의한다. 박스의 신택스와 시맨틱스가 진화하는 것을 허용하기 위해, 상자는 박스의 신택스 및 시맨틱스 버전을 나타내는 버전 신택스 엘리먼트를 포함할 수도 있다. 예를 들어, 0 과 동일한 버전 신택스 엘리먼트를 갖는 박스는 제 1 신택스를 가질 수도 있지만, 1 과 동일한 버전 신택스 엘리먼트를 갖는 동일한 유형의 박스는 제 2 의, 상이한 신택스를 가질 수도 있다.
파일 내의 박스는 파일에 존재하는 연속 미디어 스트림에 대한 메타데이터를 포함하는 영화 박스 ("moov") 를 포함할 수도 있다. 연속적인 미디어 스트림들의 각각은 파일에 트랙으로서 표현될 수도 있다. 예를 들어, 영화 박스는 영화에 관한 메타데이터 (예를 들어, 샘플들 간의 논리적 및 타이밍 관계들, 및 또한 샘플들의 위치들로의 포인터들) 를 포함할 수도 있다. 영화 박스들은 수개의 타입들의 서브-박스들을 포함할 수도 있다. 예를 들어, 영화 박스에서의 서브-박스들은 하나 이상의 트랙 박스들을 포함할 수도 있다.
트랙 박스는 영화의 개별 트랙에 관한 정보를 포함할 수도 있다. 트랙 박스는, 단일의 트랙의 전체 정보를 명시하는 트랙 헤더 박스를 포함할 수도 있다. 부가적으로, 트랙 박스는, 미디어 정보 박스를 포함하는 미디어 박스를 포함할 수도 있다. 미디어 정보 박스는, 트랙에 미디어 샘플들을 인덱싱하는 데이터를 포함하는 샘플 테이블 박스를 포함할 수도 있다. 샘플 테이블 박스에서의 정보는 시간에 있어서 샘플들을, 그리고 트랙의 샘플들의 각각에 대해, 타입, 사이즈, 컨테이너, 및 샘플의 그 컨테이너로의 오프셋을 로케이팅하기 위해 사용될 수도 있다. 따라서 트랙의 메타데이터는 트랙 박스 ("trak") 에 인클로징된다. 트랙의 미디어 콘텐츠는 미디어 데이터 박스 ("mdat") 에서 인클로징되거나 아니면 별개의 파일에서 직접적으로 인클로징된다. 트랙들에 대한 미디어 콘텐츠는 오디오 또는 비디오 액세스 유닛들과 같은 샘플들의 시퀀스를 포함하거나 그 시퀀스로 이루어질 수도 있다.
또한 ISOBMFF 는 다음 유형의 트랙들: 미디어 트랙, 힌트 트랙 및 타이밍된 (timed) 메타데이터 트랙을 특정한다. 미디어 트랙은 기본 미디어 스트림을 포함한다. 힌트 트랙은 미디어 송신 명령을 포함하거나 수신된 패킷 스트림을 나타낸다. 타이밍된 메타데이터 트랙은 시간 동기화된 메타데이터를 포함한다.
각 트랙의 메타데이터는 샘플 설명 엔트리들의 목록을 포함한다. 각각의 샘플 설명 엔트리는 트랙에서 사용되는 코딩 또는 캡슐화 포맷 및 그 포맷을 프로세싱하기 위해 필요한 초기화 데이터를 제공한다. 각 샘플은 트랙의 샘플 설명 엔트리들 중 하나와 연관된다.
ISOBMFF 는 다양한 메커니즘들로 샘플 특정 메타데이터를 명시하는 것을 가능케 한다. 샘플 테이블 박스 ("stbl") 내의 특정 박스들은 공통의 필요성들에 응답하도록 표준화되었다. 샘플 테이블 박스는, 트랙에서의 미디어 샘플들의 모든 시간 및 데이터 인덱싱을 포함하는 샘플 테이블을 포함한다. 샘플 테이블 박스에서의 테이블들을 사용하여, 시간에 있어서 샘플들을 로케이팅하고, 그 타입 (예를 들어, I 프레임인지 여부) 을 결정하고, 그리고 그 사이즈, 컨테이너, 및 그 컨테이너로의 오프셋을 결정하는 것이 가능할 수도 있다. 예를 들어, 싱크 샘플 박스 ("stss") 는 샘플 테이블 박스 내의 박스이다. 싱크 샘플 박스 ("stss") 는 트랙의 랜덤 액세스 샘플들을 리스팅하기 위해 사용된다. 본 개시는 싱크 샘플 박스에 의해 리스팅된 샘플을 싱크 샘플로서 지칭할 수도 있다. 샘플 그룹핑 메커니즘은 파일에서 샘플 그룹 설명 엔트리로서 명시된 동일한 특성을 공유하는 샘플들의 그룹들 내로의 4-문자 그룹핑 타입에 따른 샘플들의 맵핑을 가능하게 한다. 수개의 그룹핑 타입들이 ISOBMFF 에서 명시되었다.
영화 프래그먼트 박스는 상위 레벨 박스이다. 각각의 영화 프래그먼트 박스는, 영화 박스에 이전에 있어 왔던 정보를 제공한다. 영화 프래그먼트 박스는 하나 이상의 트랙 프래그먼트 ("traf") 박스들을 포함할 수도 있다. 영화 프래그먼트 내에서, 트랙 당 제로 또는 그 초과인 트랙 프래그먼트들의 세트가 존재한다. 트랙 프래그먼트들은, 차례로, 제로 또는 그 초과의 트랙 런(track run)들을 포함하고, 트랙 런들의 각각은 그 트랙에 대한 샘플들의 인접한 런을 도큐먼팅 (document) 한다. 예를 들어, 각각의 트랙 런은 디코딩 순서와 같은 특정 순서에서 인접한 픽처들의 샘플들을 포함할 수도 있다. 트랙 프래그먼트 박스는 14996-12 사양에서 정의되고, 하나 이상의 트랙 프래그먼트들에 대한 메타데이터를 포함한다. 예를 들어, 트랙 프래그먼트 박스는 트랙 ID, 베이스 데이터 오프셋, 샘플 디스크립션 인덱스, 디폴트 샘플 지속기간, 디폴트 샘플 사이즈, 및 디폴트 샘플 플래그들을 나타내는 트랙 프래그먼트 헤더 박스를 포함할 수도 있다. 트랙 프래그먼트 박스는 하나 이상의 트랙 프래그먼트 런 박스들을 포함할 수도 있고, 트랙 프래그먼트 런 박스들의 각각은 트랙에 대한 샘플들의 인접한 세트를 도큐먼팅한다. 예를 들어, 트랙 프래그먼트 박스는 샘플 카운트, 데이터 오프셋, 샘플 플래그들, 샘플 지속기간, 샘플 사이즈, 샘플 조성 시간 오프셋 등을 나타내는 신택스 엘리먼트들을 포함할 수도 있다. 이들 구조들 내에서, 다수의 필드들은 옵션적이고, 디폴트될 수 있다.
샘플 그룹핑은 하나의 샘플 그룹의 구성원이 될 트랙 내의 샘플들 각각의 할당이다. 샘플 그룹의 샘플은 인접하지 않아도 된다. 샘플 그룹은 SampleToGroup 박스와 SampleGroupDescription 상자의 두 가지 데이터 구조로 나타낼 수도 있다. SampleToGroup 박스는 Sample-To-Group 박스라고도 한다. SampleGroupDescription 박스는 Sample Group Description 박스라고도 한다. SampleToGroup 박스는 샘플 그룹에 대한 샘플의 할당을 나타낸다. SampleGroupDescription 박스는 대응하는 샘플 그룹의 특성들을 설명한다.
샘플 테이블 박스는 하나 이상의 SampleToGroup 박스들 및 하나 이상의 샘플 그룹 설명 박스들 (즉, SampleGroupDescription 박스들) 을 포함할 수도 있다. SampleToGroup 박스는, 샘플 그룹의 연관된 설명과 함께, 샘플이 속하는 샘플 그룹을 결정하기 위해 사용될 수도 있다. 즉, SampleToGroup 박스는, 샘플이 속하는 그룹을 표시할 수도 있다. SampleToGroup 박스는 "sbgp" 라는 박스 유형을 가질 수도 있다.
SampleToGroup 박스는 그룹핑 유형 엘리먼트 (예를 들어, grouping_type) 를 포함할 수도 있다. 일부 예들에 있어서, 본 개시에서, 박스의 엘리먼트는 또한 신택스 엘리먼트로서 지칭될 수도 있다. 그룹핑 타입 엘리먼트는 샘플 그룹핑의 타입 (즉, 샘플 그룹들을 형성하기 위해 사용된 기준) 을 식별하는 정수일 수도 있다. 더욱이, SampleToGroup 박스는 하나 이상의 엔트리들 (즉, 샘플 그룹 엔트리들) 을 포함할 수도 있다. SampleToGroup 박스에서의 각각의 샘플 그룹 엔트리는 트랙에서의 연속적인 샘플들의 상이한 비중첩 시리즈와 연관될 수도 있다. 각각의 샘플 그룹 엔트리는 샘플 카운트 엘리먼트 (예를 들어, sample_count) 및 그룹 설명 인덱스 엘리먼트 (예를 들어, group_description_index) 를 표시할 수도 있다. 샘플 그룹 엔트리의 샘플 카운트 엘리먼트는 샘플 그룹 엔트리와 연관된 샘플들의 수를 표시할 수도 있다. 즉, 샘플 그룹 엔트리의 샘플 카운트 엘리먼트는 동일한 샘플 그룹 디스크립터를 갖는 연속적인 샘플들의 수를 제공하는 정수일 수도 있다. 그룹 설명 인덱스 엘리먼트는, 샘플 그룹 엔트리와 연관된 샘플들의 설명을 포함하는 그룹 설명 엔트리를, SampleGroupDescription 박스 내에서, 식별할 수도 있다. 다중의 샘플 그룹 엔트리들의 그룹 설명 인덱스 엘리먼트들은 동일한 SampleGroupDescription 박스를 식별할 수도 있다.
또한, 샘플 테이블 박스는 스트림에 대한 포맷 설명을 포함하는 샘플 설명 박스를 포함할 수도 있다. 특히, 샘플 설명 박스는 하나 이상의 샘플 엔트리들의 목록을 포함할 수도 있다. 샘플 엔트리들 각각은 미디어 타입 (예를 들어, 스트림을 디코딩하는데 필요한 디코더의 타입) 의 이름 및 필요한 해당 디코더의 임의의 파라미터화를 포함할 수도 있다. 예를 들어, HEVC 의 콘텍스트에서, 샘플 엔트리는 HEVC 디코더 구성 레코드를 포함할 수도 있다. 따라서, HEVC 디코더 구성 레코드는 샘플 테이블 박스의 서브 박스 일 수도 있다. HEVC 디코더 구성 레코드는 ISO/IEC 23008-2 (즉, HEVC) 비디오 콘텐츠에 대한 디코더 구성 정보를 포함할 수도 있다. 예를 들어, HEVC 디코더 구성 레코드는 파라미터 세트 (예를 들어, VPS, SPS, PPS 등) 를 포함하는 하나 이상의 NAL 유닛을 포함할 수도 있다.
ISOBMFF 는 제한된 설계를 구현한다. ISOBMFF 에서의 제한된 방식 설계는 파일 작성자가 플레이어가 비트스트림을 렌더링하기 위한 그러한 요건을 발견하기 위해 파일을 간단히 검사하는 것을 가능하게 하기 위해, 플레이어나 렌더러에 대해 소정의 액션들을 요구하고 레거시 플레이어가 추가의 프로세싱을 요구하는 파일을 디코딩 및 렌더링하지 못하게 하는 상황의 핸들링을 위한 것이다. 그 메커니즘은 임의의 타입의 비디오 코덱에 적용된다.
그 메커니즘의 양태는 컨텐츠 보호 변환과 유사하며, 여기에서, 샘플 엔트리들은 암호화된 또는 캡슐화된 미디어 를 표시하는 일반 샘플 엔트리들, 'encv', 'enca' 등의 뒤에 은닉된다. 제약된 비디오의 유사한 메커니즘은 일반 샘플 엔트리 'resv'로서의 변환을 사용한다. 그 방법은 컨텐츠가 정확하게 이를 제시하는 플레이어에 의해서만 디코딩되어야 할 때 적용될 수 있다.
이 방법은 다음과 같이 적용된다:
1) 샘플 엔트리의 4-문자-코드는 제한된 비디오를 의미하는 새로운 샘플 엔트리 코드 'resv' 로 대체된다.
2) 모든 다른 박스들은 미변경 상태로 남겨진 상태에서 제약된 스킴 정보 박스가 샘플 디스크립션에 추가된다.
3) 오리지널 샘플 엔트리 타입은 제약된 스킴 정보 박스에 포함된 오리지널 포맷 박스 내에 저장된다.
RestrictedSchemeInfoBox 는 'sinf'(아래 참조) 대신 식별자 'rinf' 를 사용한다는 점을 제외하고는 ProtectionSchemeInfoBox 와 완전히 동일하게 포맷된다. 오리지널 샘플 엔트리 타입은 (암호화된 미디어에 대한 보호 스킴 정보 박스와 동일한 방식으로) 제한된 스킴 정보 박스에 위치된 오리지널 포맷 박스에 포함된다. 제한의 정확한 특성은 SchemeTypeBox 에 정의되어 있으며 해당 스킴에 필요한 데이터는 보호 정보와 마찬가지로 SchemeInformationBox 에 다시 저장된다.
제한 및 보호는 동시에 적용될 수 있다. 변환들의 순서는 샘플 엔트리의 4-문자 코드에서 따른다. 예를 들어, 샘플 엔트리 타입이 'resv'이면, 위의 변환을 실행 취소하는 것은 미디어가 보호됨을 표시하는 샘플 엔트리 타입 'encv'으로 귀결될 수 있다.
파일 제작자가 레거시 플레이어들이 파일을 재생하는 것을 중단함이 없이 충고 정보만을 제공하기를 원하면, 제약된 스킴 정보 박스는 4-문자-코드 변환을 적용하지 않고 샘플 엔트리 내부에 배치될 수 있다. 이 경우, 오리지널 포맷 박스를 반드시 포함할 필요가 있는 것은 아니다.
제한된 스킴 정보 박스는 다음과 같이 정의된다:
박스 유형 : 'rinf'
컨테이너 : 제한된 샘플 엔트리 또는 샘플 엔트리
필수 : 예
수량 : 정확히 하나
제한된 스킴 정보 박스는 적용된 제한 스킴 및 그 파라미터들을 이해하기 위하여 양쪽에 요구되는 정보 모두를 포함한다. 이는 또한, 미디어의 오리지널 (비 변환된) 샘플 엔트리 타입을 문서화한다. 제한된 스킴 정보 박스는 컨테이너 박스이다. 이는 제한된 스트림을 표시하는 코드 (예를 들어, 'resv') 를 사용하는 샘플 엔트리에서 필수적이다.
제한된 샘플 엔트리에서 사용될 때 이 박스는 오리지널 샘플 엔트리 타입을 문서화하는 오리지널 포맷 박스 및 스킴 타입 박스를 포함해야 한다. 스킴 정보 박스는 제한 스킴에 의존하여 요구될 수도 있다.
aligned(8) class RestrictedSchemeInfoBox (fmt) extends Box ( 'rinf') {
OriginalFormatBox (fmt) original_format;
SchemeTypeBox scheme_type_box;
SchemeInformationBox info; // 선택적
}
스킴 유형 박스는 다음과 같이 정의된다:
박스 유형 : 'schm'
컨테이너 : 보호 스킴 정보 상자 ('sinf'), 제한된 스킴 정보 상자 ('rinf') 또는 SRTP 프로세스 상자 ('srpp')
필수 : 아니오
수량 : 보호 구조에 따라 'sinf' 에서 0 또는 1; 'rinf'와 'srpp'에서 정확히 하나
스킴 타입 박스 ('schm') 는 보호 또는 제한 스킴을 식별한다.
aligned(8) class SchemeTypeBox extends FullBox ('schm', 0, flags) {
unsigned int (32) scheme_type; // 스킴을 식별하는 4CC
unsigned int (32) scheme_version; // 스킴 버전
if (flags & 0x000001) {
unsigned int (8) scheme_uri []; l // 브라우저 uri
}
}
scheme_type 은 보호 또는 제한 스킴을 정의하는 코드이다.
scheme_version 은 (컨텐츠를 만드는 데 사용된) 스킴의 버전이다.
scheme_URI 는 이들이 그들의 시스템에 설치된 스킴을 갖지 않으면 사용자에게 웹 페이지를 가르키는 옵션을 허용한다. 이는 UTF-8 문자에서 널 터미네이션된 스트링으로 형성된 절대 URI 이다.
스킴 정보 박스는 다음과 같이 정의된다:
박스 유형 : 'schi'
컨테이너 : 보호 스킴 정보 박스 ('sinf'), 제한된 스킴 정보 박스 ('rinf') 또는 SRTP 프로세스 박스 ('srpp')
필수 : 아니오
수량 : 0 또는 1
스킴 정보 박스는 사용 중인 스킴에 의해서만 해석되는 컨테이너 박스이다. 암호화 또는 제한 시스템이 필요한 임의의 정보가 여기에 저장된다. 이 박스의 컨텐츠는 스킴 유형 박스에 표명된 스킴에 의해 그 유형 및 포맷이 정의되는 일련의 박스들이다.
aligned(8) class SchemeInformationBox extends Box ( 'schi') {
Box scheme_specific_data [];
}
ISO/IEC 23009-1 에 명시된 DASH 는 HTTP (적응형) 스트리밍 애플리케이션들에 대한 표준이다. 그것은 주로 매니페스트라고도 하는 MPD 의 포맷, 및 미디어 세그먼트 포맷을 특정한다. MPD 는 서버에서 사용 가능한 미디어를 설명하고 DASH 클라이언트가 관심있는 미디어 시간에 미디어 버전을 자율적으로 다운로드하게 한다.
DASH 기반 HTTP 스트리밍의 일반적인 절차는 여러 단계를 포함한다. 먼저, 클라이언트가 스트리밍 콘텐츠, 예를 들어, 영화의 MPD 를 얻는다. MPD 에는 스트리밍 콘텐츠의 비트 레이트, 비디오 해상도, 프레임 속도, 오디오 언어 뿐아니라 HTTP 리소스 (초기화 세그먼트 및 미디어 세그먼트) 의 URL 과 같은 상이한 대안적인 표현에 대한 정보가 포함된다. 둘째, MPD 의 정보 및 클라이언트의 지역 정보, 예를 들어 네트워크 대역폭, 디코딩/디스플레이 기능 및 사용자 선호도를 기반으로, 클라이언트는 한 번에 하나의 세그먼트 (또는 그 일부) 씩 원하는 표현(들) 을 요청한다. 셋째, 클라이언트가 네트워크 대역폭 변경을 검출하면, 그것은 랜덤 액세스 포인트로 시작하는 세그먼트부터 이상적으로 시작하는, 더 나은 매칭 비트레이트를 가진 상이한 표현의 세그먼트를 요청한다.
HTTP 스트리밍 "세션" 동안, 과거 위치로 뒤로 또는 미래 위치로 앞으로 탐색하라는 사용자 요청에 응답하기 위해, 클라이언트는 원하는 위치에 가까운 그리고 랜덤 액세스 포인트로 이상적으로 시작하는 세그먼트부터 시작하여 과거 또는 미래의 세그먼트를 요청한다. 사용자는 또한 인트라 코딩된 비디오 픽쳐만을 또는 비디오 스트림의 시간 서브 세트만을 디코딩하기 위해 충분히 데이터를 요구함으로써 실현될 수도 있는 콘텐츠를 고속 포워딩할 것을 요청할 수도 있다.
VR 은 일반적으로 몰입된 사용자의 움직임들에 의해 상관된 자연적 및/또는 합성의 이미지 및 사운드의 렌더링에 의해 형성된 비물리적 세상에서 가상적으로 존재하여 그 세상과 상호작용하도록 허용하는 능력을 지칭한다. 헤드 마운트 디스플레이 (HMD) 와 같은 렌더링 디바이스, 및 VR 비디오 (종종 360도 비디오라고도 함) 생성에서의 최근 진보에 따라, 상당한 품질의 경험을 제공할 수 있다. VR 애플리케이션은 게이밍, 트레이닝, 교육, 스포츠 비디오, 온라인 쇼핑, 엔터테인먼트 등을 포함한다.
일반적인 VR 시스템은 일반적으로 다음의 컴포넌트들 및 단계들로 구성된다.
1) 일반적으로 상이한 방향으로 향하고 이상적으로 카메라 세트 주변의 모든 뷰포인트들을 집합적으로 커버하는 다수의 개개의 카메라로 구성되는 상기 카메라 세트.
2) 다수의 개개의 카메라들에 의해 촬영된 비디오 픽쳐들이, 구형 비디오이지만, (세계지도와 같은) 동일 직사각형 (equi-rectangular) 또는 큐브 맵과 같은 직사각형 포맷으로 매핑되도록, 시간 영역에서 동기화되고 공간 영역에서 스티칭되는 이미지 스티칭.
3) 매핑된 직사각형 포맷의 비디오는 비디오 코덱, 예를 들어 H.265/HEVC 또는 H.264/AVC 을 사용하여 인코딩/압축된다.
4) 압축된 비디오 비트스트림(들) 은 미디어 포맷으로 저장 및/또는 캡슐화되고 네트워크를 통해 수신기로 송신된다 (아마도 사용자가 볼 수 있는 영역만을 커버하는 서브세트 만).
5) 수신기는 아마도 포맷으로 캡슐화된 비디오 비트스트림(들) 또는 그 일부를 수신하고, 디코딩된 비디오 신호 또는 그 일부를 렌더링 디바이스에 전송한다.
6) 렌더링 디바이스는 예를 들어 HMD 일 수 있으며, 그것은 머리 움직임 및 심지어 눈 움직임을 추적할 수 있으며 몰입 형 경험이 사용자에게 전달되도록 비디오의 해당 부분을 렌더링할 수 있다.
현재 전 방향 미디어 애플리케이션 포맷 (OMAF) 은 360°비디오 및 연관된 오디오를 갖는 VR 애플리케이션에 초점을 맞춘 전 방향 미디어 애플리케이션을 가능하게 하는 미디어 애플리케이션 포맷을 정의하기 위해 MPEG에 의해 개발되고 있다. OMAF 는 구형 또는 360°비디오의 2 차원 직사각형 비디오로의 변환을 위해 사용될 수 있는 투영 방법의 목록을 지정한다. OMAF 는 또한 ISOBMFF 를 사용하여 전 방향 미디어 및 연관된 메타데이터를 저장하는 방법과 DASH 를 사용하여 전 방향 미디어를 캡슐화, 시그널링, 및 스트리밍하는 방법을 지정한다. 또한 OMAF 는 전 방향 미디어 신호의 압축 및 재생에 사용될 수 있는 미디어 코딩 구성 뿐아니라 비디오 및 오디오 코덱을 지정한다. OMAF 는 ISO/IEC 23000-20 이 될 것이며, 최신 OMAF 초안 사양은 다음에서 이용 가능하다 : http://wg11.sc29.org/doc_end_user/documents/116_Chengdu/wg11/w16439.zip.
오늘날 HDR 및 WCG 비디오가 널리 전개되고 있다. AVC 및 HEVC 와 같은 오늘날의 비디오 코덱을 사용하여 코딩된 HDR/WCG 비디오 컨텐츠의 렌더링은 특정 포스트-디코딩 프로세스 및 가능하게는 또한 디스플레이 적응을 적용해야 할 필요가 있다, 예를 들어, (http://phenix.int-evry.fr/jct/doc_end_user/documents/25_Chengdu/wg11/JCTVC-Y1012-v2.zip) 로부터 이용가능한 Edouard Francois et al., "Signalling, Backward Compatibility and Display Adaptation for HDR/WCG Video Coding, Draft 1," Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 25th Meeting, Chengdu, CH, 14-21 October 2016, document JCTVC-Y1017-v2, (hereinafter, JCTVC-Y1012") 및 http://phenix.int-evry.fr/jct/doc_end_user/documents/25_Chengdu/wg11/JCTVC-Y1017-v1.zip 로부터 이용가능한 Jonatan Samuelsson et al., "Conversion and Coding Practices for HDR/WCG Y'CbCr 4:2:0 Video with PQ Transfer Characteristics (Draft 3), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 25th Meeting, Chengdu, 14-21 October 2016, document JCTVC-Y1017 를 참조.
HEVC 의 VUI (Video Usability Information) 의 신택스 엘리먼트는 중요한 HDR/WCG 정보 속성을 설명하는 메타 데이터를 전달하는 데 사용될 수 있다. HDR/WCG 비디오 시스템 설계와 관련된 VUI 파라미터의 예는 각각 HEVC 사양의 표 E.3, E.4 및 E.5 에 지정된 칼라 원색, 전달 특성 및 행렬 계수를 포함한다. 전달 함수는 transfer_characteristics 신택스 엘리먼트를 사용하여 표시된다. transfer_characteristics 는 0 에서 1 까지의 공칭 실수 범위를 갖는 선형 광 강도 입력 Lc 의 함수로서 표 E.4 에 명시된 바와 같이 소스 픽쳐의 광전자 전달 특성을 나타낸다. 변수 β 에 의해 또는 변수들 β 및 γ 에 의해 경계가 지정된 영역에 대해 변수 α 에 의해 파라미터화된 다중 곡선 세그먼트로 표현된 표 E.4 의 엔트리들의 해석을 위해, α 및 β의 값은 값 β에서 만나는 곡선 세그먼트들이 값 β 에서 값의 연속성과 기울기의 연속성을 갖는데 필요한 양의 상수들이도록 정의되고, γ 의 값은, 적용가능한 경우, 연관된 곡선 세그먼트들이 값 γ 에서 만나는데 필요한 양의 상수이도록 정의된다. 예를 들어, 1, 6, 14 또는 15 와 같은 transfer_characteristics 의 경우, α 는 값 1 + 5.5 * β = 1.099 296 826 809 442... 를 가지며 β 는 값 0.018 053 968 510 807... 을 갖는다.
RGB 컬라 원색은 colour_primaries 신택스 엘리먼트를 사용하여 표시된다. Colour_primaries 는 ISO 11664-1 에 명시된 x 및 y 의 CIE 1931 정의에 따라 표 E.3에 지정된 소스 원색의 색도 좌표를 나타낸다.
컬러 표현은 matrix_coeffs 신택스 엘리먼트를 사용하여 표시된다. matrix_coeffs는 표 E.5에 명시된 대로 녹색, 청색 및 적색 또는 Y, Z 및 X 원색에서 루마 및 크로마 신호를 추출하는 데 사용되는 행렬 계수를 설명한다. 이러한 정보는 스트리밍 클라이언트가 비디오 컨텐트 또는 비디오 컨텐트의 한 조각을 적절하게 재생/렌더링 할 수 있는지 여부를 결정하여, 컨텐트를 거부하거나 선택/수락/요청할지 여부를 결정하기 위해 중요하다.
HEVC 사양의 표 E.3, E.4 및 E.5는 다음과 같이 재현된다.
표 E-3 - 색 원색
원색 정보 제공 비고
0 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
1 원색 x y
녹색 0.300 0.600
청색 0.150 0.060
적색 0.640 0.330
백색 D65 0.3127 0.3290
Rec. ITU-R BT.709-5
Rec. ITU-R BT.1361 종래 색 영역 시스템 및 확장 색 영역 시스템
IEC 61966-2-1 (sRGB 또는 sYCC)
IEC 61966-2-4
동화상 및 텔레비전 공학자 학회 RP 177 (1993) 부록 B
2 지정되지 않음 이미지 특성은 알려져 있지 않거나 애플리케이션에 의해 결정된다.
3 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
4 원색 x y
녹색 0.21 0.71
청색 0.14 0.08
적색 0.67 0.33
백색 C 0.310 0.316
Rec. ITU-R BT.470-6 시스템 M (이력적)
미국 National Television System Committee 1953 년 컬러 TV 전송 표준 권고
연방 규정 (2003) 73.682 (a) (20) 의 미국 연방 통신 위원회 타이틀 47 코드
5 원색 x y
녹색 0.29 0.60
청색 0.15 0.06
적색 0.64 0.33
백색 D65 0.3127 0.3290
Rec. ITU-R BT.470-6 시스템 B, G (이력적)
Rec. ITU-R BT.601-6 625
Rec. ITU-R BT.1358 625
Rec. ITU-R BT.1700 625 PAL 및 625 SECAM
6 원색 x y
녹색 0.310 0.595
청색 0.155 0.070
적색 0.630 0.340
백색 D65 0.3127 0.3290
Rec. ITU-R BT.601-6 525
Rec. ITU-R BT.1358 525
Rec. ITU-R BT.1700 NTSC
동화상 및 텔레비전 공학자 학회 170M (2004)
(기능적으로 값 7과 동일)
7 원색 x y
녹색 0.310 0.595
청색 0.155 0.070
적색 0.630 0.340
백색 D65 0.3127 0.3290
동화상 및 텔레비전 공학자 학회 240M (1999)
(기능적으로 값 6과 동일)
8 원색 x y
녹색 0.243 0.692 (래튼 58)
청색 0.145 0.049 (래튼 47)
적색 0.681 0.319 (래튼 25)
백색 C 0.310 0.316
일반 필름 (일루미넌트 C 를 사용한 컬러 필터)
9 원색 x y
녹색 0.170 0.797
청색 0.131 0.046
적색 0.708 0.292
백색 D65 0.3127 0.3290
Rec. ITU-R BT.2020
10..255 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
표 E-4 - 전달 특성
전달 특성 정보 제공 비고
0 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
1 V = α * Lc0.45 - ( α - 1) for 1> = Lc > = β
V = 4.500 * Lc for β > Lc > = 0
Rec. ITU-R BT.709-5
Rec. ITU-R BT.1361 종래의 색 영역 시스템
(기능적으로 값들 6, 14, 및 15 와 동일)
2 지정되지 않음 이미지 특성은 알려져 있지 않거나 애플리케이션에 의해 결정된다.
3 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
4 가정된 디스플레이 감마 2.2 Rec. ITU-R BT.470-6 시스템 M (이력적)
미국 National Television System Committee 1953 년 컬러 TV 전송 표준 권고
연방 규정 (2003) 73.682 (a) (20) 의 미국 연방 통신 위원회 타이틀 47 코드
Rec. ITU-R BT.1700 (2007 개정) 625 PAL 및 625 SECAM
5 가정된 디스플레이 감마 2.8 Rec. ITU-R BT.470--6 시스템 B, G (이력적)
6 V = α * Lc0.45 - ( α - 1) for 1> = Lc > = β
V = 4.500 * Lc for β > Lc > = 0
Rec. ITU-R BT.601-6 또는 625
Rec. ITU-R BT.1358-525 또는 625
Rec. ITU-R BT.1700 NTSC
동화상 및 텔레비전 공학자 학회 170M (2004)
(기능적으로 값들 1, 14, 및 15 와 동일)
7 V = α * Lc0.45 - ( α - 1) for 1> = Lc > = β
V = 4.0 * Lc for β > Lc > = 0
동화상 및 텔레비전 공학자 학회 240M (1999)
8 V = Lc for 1 > Lc > = 0 선형 전달 특성
9 V = 1.0 + Log10( Lc ) /2 for 1 >= Lc >= 0.01
V = 0.0 for 0.01 > Lc >= 0
로그 전달 특성 (100 : 1 범위)
10 V = 1.0 + Log10( Lc ) / 2.5 for 1 >= Lc >= Sqrt ( 10 ) /1000
V = 0.0 for Sqrt( 10 ) /1000 > Lc >= 0
로그 전달 특성 (100 * Sqrt( 10 ) : 1 범위) 
11 V = α * Lc0.45 - ( α - 1) for Lc >= β
V = 4.500 * Lc for β > Lc > -β
V = -α * (-Lc )0.45 + ( α - 1 ) for -β >= Lc
IEC 61966-2-4
12 V = α * Lc0 .45 - ( α - 1) for 1.33 > Lc >= β
V = 4.500 * Lc for β > Lc > -γ
V = -( α * ( -4 * Lc )0.45 - ( α - 1 ) ) /4 for -γ > Lc >= -0.25
Rec. ITU-R BT.1361 확장된 색 영역 시스템
13 V = α * Lc( 1 /2.4 ) - ( α - 1 ) for 1> = Lc > = β
V = 12.92 * Lc for β > Lc > = 0
IEC 61966-2-1 (sRGB 또는 sYCC)
14 V = α * Lc0.45 - ( α - 1) for 1> = Lc > = β
V = 4.500 * Lc for β > Lc > = 0
Rec. ITU-R BT.2020
(기능적으로 값들 1, 6, 및 15 와 동일)
15 V = α * Lc0.45 - ( α - 1) for 1> = Lc > = β
V = 4.500 * Lc for β > Lc > = 0
Rec. ITU-R BT.2020
(기능적으로 값들 1, 6, 및 14 와 동일)
16 Lc의 모든 값에 대해 V = ((c1 + c2 * Lcn) ≤ (1 + c3 * Lcn)) m
c1 = c3 - c2 + 1 = 3424 ≤ 4096 = 0.8359375
c2 = 32 * 2413 ≤ 4096 = 18.8515625
c3 = 32 * 2392 ≤ 4096 = 18.6875
m = 128 * 2523 ≤ 4096 = 78.84375
n = 0.25 * 2610 ≤ 4096 = 0.1593017578125
피크 백색에 대해 1과 같은 Lc는 일반적으로 평방 미터당 10,000 칸델라의 디스플레이 휘도 레벨에 대응하도록 의도된다
10, 12, 14 및 16 비트 시스템 용 SMPTE ST 2084.
17 Lc의 모든 값에 대해 V = (48 * Lc ≤ 52.37) (1 2.6)
피크 백색에 대해 1과 같은 Lc는 일반적으로 평방 미터당 48 칸델라의 디스플레이 휘도 레벨에 대응하도록 의도된다
SMPTE ST 428-1
18..255 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
표 E-5 - 행렬 계수
행렬 정보 제공 비고
0 동일성 단위 행렬
일반적으로 GBR (종종 RGB라고 함)에 사용됨; 그러나 YZX (종종 XYZ라고 함)에 사용될 수도 있음; 식 E-19 내지 E-21 참조
IEC 61966-2-1 (sRGB)
SMPTE ST 428-1
1 KR = 0.2126; KB = 0.0722 ITU-R Rec. BT.709-5
ITU-R Rec. BT.1361 종래 색 영역 시스템 및 확장 색 영역 시스템
IEC 61966-2-1 (sYCC)
IEC 61966-2-4 xvYCC709
동화상 및 텔레비전 공학자 학회 RP 177 (1993) 부록 B
2 지정되지 않음 이미지 특성은 알려져 있지 않거나 애플리케이션에 의해 결정된다.
3 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
4 KR = 0.30; KB = 0.11 연방 규정 (2003) 73.682 (a) (20) 의 미국 연방 통신 위원회 타이틀 47 코드
5 KR = 0.299; KB = 0.114 ITU-R Rec. ITU-R BT.470-6 시스템 B, G (이력적)
ITU-R Rec. BT.601-6 625
ITU-R Rec. BT.1358 625
ITU-R Rec. BT.1700 625 PAL 및 625 SECAM
IEC 61966-2-4 xvYCC601
(기능적으로 값 6과 동일)
6 KR = 0.299; KB = 0.114 ITU-R Rec. BT.601-6 525
ITU-R Rec. BT.1358 525
ITU-R Rec. BT.1700 NTSC
동화상 및 텔레비전 공학자 학회 170M (2004)
(기능적으로 값 5과 동일)
7 KR = 0.212; KB = 0.087 동화상 및 텔레비전 공학자 학회 240M (1999)
8 YCgCo 식 E-22 내지 E-36 을 참조
9 KR = 0.2627; KB = 0.0593 Rec. ITU-R BT.2020 비 일정 휘도 시스템
식 E-16 내지 E-18 을 참조
10 KR = 0.2627; KB = 0.0593 Rec. ITU-R BT.2020 일정 휘도 시스템
식 E-37 내지 E-46 을 참조
11..255 예약됨 ITU-T | ISO/IEC 에 의한 향후 사용을 위해
또, HDR 및 다른 것들에서의 소정의 정보 속성들은 정적 정보 (액세스 유닛들의 시퀀스에 대해 유지되고 선택을 위해 사용될 수도 있음) 및 예를 들어 모든 액세스 유닛에 따라 변화하는 동적 정보를 포함한다. 정적 정보는 선택 및 구성을 가능하게 하기 위해 요약될 필요가 있다.
비디오 트랙의 샘플 엔트리 및 코덱 파라미터는 비디오 코덱, 비트스트림의 프로파일 및 레벨과 같은 중요 정보를 포함할 수도 있다. 이러한 정보는 또한 스트리밍 클라이언트가 그 스트리밍 클라이언트가 비디오 콘텐츠 또는 그것의 한 조각을 적절하게 재생/렌더링할 수 있는지 여부를 결정하여, 그 콘텐츠를 거절하거나 선택/수락/요청할지 여부를 결정하는데 중요하다. 도 1 의 예에서, 목적지 디바이스 (14) 는 스트리밍 클라이언트를 포함할 수도 있다. 샘플 엔트리 및/또는 코덱 파라미터에 중요 비디오 정보를 갖는 것의 이점은 그 중요 비디오 정보가 콘텐츠 거절/선택/수락/요청 결정들을 행하기 위해 DASH 클라이언트들과 같은 애플리케이션 클라이언트들에게 쉽게 노출되고 액세스될 수 있다는 점이다. 도 1 의 예에서, 목적지 디바이스 (14) 는 애플리케이션 클라이언트를 포함할 수도 있다.
그러나, 파일 포맷들의 현존하는 설계들에서, 상술된 것과 같은 중요한 HDR/WCG 정보 뿐아니라 본질적 SEI 메시지들의 존재에 관한 정보는 애플리케이션 단말기들에게 쉽게 노출되고 액세스되도록 샘플 엔트리 또는 코덱 파라미터에 포함되지 않는다. 그러한 본질적 SEI 메시지들은 비트스트림에 존재할 수도 있고 그들의 적절한 핸들링은 양호한 사용자 경험을 위해 콘텐츠를 렌더링할 때 요구될 수도 있다. 일부 예들에서, “본질적 SEI 메시지들” 은 렌더링된 콘텐츠가 하나 이상의 품질 기준들 (예를 들어, 동적 범위, 색 영역, 프레임 레이트, 픽셀 카운트 등) 을 충족시키거나 초과하도록 콘텐츠를 렌더링하기 위해 요구되는 SEI 메시지들이다. 또한, 코덱 파라미터에는 투영 및 영역별 패킹 (region-wise packing) 과 같은 VR 콘텐츠에 대한 중요한 정보의 시그널링에 대한 메커니즘이 존재하지 않는다.
정보는 디코더 구성 리코드에 포함될 수도 있지만, 이것은 특정의 NAL 유닛들로 인터리빙될 수도 있거나 다른 정보로 묻힐 수도 있다. 또, 디코더 구성 리코드의 첫번째 6 바이트만이 샘플 엔트리 및 마찬가지로 적용가능성을 제한하는 인터넷 미디어 타입 파라미터에 노출될 수 있다.
미디어 타입 (즉, MIME 타입) 은 타입, 서브타입, 및 선택적 파라미터들로 구성된다. 미디어 타입은 상위-레벨 타입 네임 및 서브-타입 네임으로 이루어지며, 이것은 소위 “트리들” 로 더 구조화된다. 미디어 타입들은 파라미터들로서 알려진 복합 데이터 (companion data) 를 선택적으로 정의할 수 있다. 파라미터들은 코덱 파라미터를 포함할 수도 있다. Gellens, et al., “The 'Codecs' and 'Profiles' Parameters for “Bucket” Media Types,” RFC 6381, ISSN 2070-1721, August 2011 (이하, “RFC 6381”) 에 나타낸 바와 같이, 코덱 파라미터는 MIME 파트에서 콘텐츠를 렌더링하도록 표시된 모든 코덱들의 분명한 사양을 허용하도록 설계된다. 더욱이, RFC 6381 에서 정의된 바와 같이, 코덱 파라미터는 바디 (body) 파트에서 콘텐츠를 렌더링하도록 표시된 코덱(들) 을 식별하는 단일의 값, 또는 콤마로 분리된 값들의 리스트이다. 각각의 값은 하나 이상의 도트로 분리된 엘리먼트들로 이루어진다. 제 1 엘리먼트에 대한 네임 공간은 MIME 타입에 의해 결정된다. 각각의 후속 엘리먼트의 네임 공간은 선행 엘리먼트에 의해 결정된다.
ISO-IEC 14496-15 의 § E.2 에서 정의된 바와 같이, 값의 제 1 엘리먼트가 AVC (H.264), 스케일러블 비디오 코딩 (SVC) 또는 멀티뷰 비디오 코딩 (MVC) 을 나타내는 'avc1', 'avc2', 'avc3', 'avc4', 'svc1', 'svc2', 'mvc1', 'mvc2', 'mvc3', 및 'mvc4' 와 같은 조항 5, 6 또는 7 에서 문서화된 바와 같은 진보된 비디오 코딩 사양 (ISO/IEC 14496-10) 으로부터의 코덱을 나타내는 코드일 때, (포맷 신택스에서 'avcoti' 로서 지칭되는) 제 2 엘리먼트는 ISO/IEC 14496-10 에서 특정된 (서브세트) 시퀀스 파라미터 세트 NAL 유닛에서의 다음의 3 바이트의 16진수 표현이다:
- profile_idc
- constraint_set 플래그들을 포함하는 바이트 (현재 constraint_set0_flag 내지 t_set5_flag, 및 reserved_zero_2bits)
- level_idc
샘플 엔트리들 'avc1', 'avc2', 'avc3', 및 'avc4' 은 반드시 미디어가 AVC NAL 유닛들만을 포함한다고 표시하지는 않는다. 사실, 미디어는 SVC 또는 MVC 프로파일로서 인코딩되고 따라서 SVC 또는 MVC NAL 유닛들을 포함할 수도 있다. 어느 코덱이 사용되는지를 결정할 수 있기 위해, 추가의 정보가 필요하다 (profile_idc). 또한 reserved_zero_2bits 가 ISO/IEC 14496-10 에서 0 과 동일할 것이 요구되지만, 그것에 대한 다른 값들이 ITU-T | ISO/IEC 에서 미래에 특정될 수도 있다.
SVC 또는 MVC 콘텐츠가 AVC-호환가능 양식으로 코딩되는 경우, 샘플 설명은 AVC 구성 리코드 및 SVC 또는 MVC 구성 리코드 양자 모두를 포함할 수도 있다. 이들 상황들 하에서, 그 2 개의 구성 리코드들 양자 모두가 그들이 상이한 AVC 프로파일, 레벨 및 호환성 표시자 값들을 포함할 수도 있기 때문에 보고되는 것이 추천된다. 따라서, 보고된 코덱들은 샘플 설명 코드 (예를 들어, 'avc1') 를 두 번 포함할 것이며, 구성 리코드들 중 하나로부터의 값들이 각각에서 'avcoti' 정보를 형성한다.
주의 - 이러한 세션은 3GPP 파일 포맷 사양 3GPP TS 26.244, 섹션 A.2.2 에서 이전에 정의된 바와 같은 RFC 6381 에서의 텍스트의 수퍼세트이다. 샘플 엔트리들 'avc3', 'avc4', 'svc2', 'mvc3', 및 'mvc4' 가 포함되지 않은 경우, 그 섹션은 RFC 6381 에서의 텍스트와 동일할 것이다.
RFC 6381 에서의 관련 BNF 는 다음과 같다:
iso-avc := avcl / avc2 / svcl / mvcl / mvc2 [ "." avcoti ] avc1 :=
%x61.76.63.31 ; 'avc1' avc2 := %x61.76.63.32 ; 'avc2' svc1 := %x73.76.63.31 ; 'svc1' mvc1 := %x6d.76.63.31 ; 'mvc1' mvc2 := %x6d.76.63.32 ; 'mvc2' avcoti := 6(DIGIT / "A" / "B" / "C" / "D" / "E" / "F") ; leading "0x" omitted
ISO-IEC 14496-15 의 § E.3 에서 정의된 바와 같이, 값의 제 1 엘리먼트가 ('hev1' 또는 'hvc1' 과 같은) 조항 8 에서 문서화된 바와 같은 고효율 비디오 코딩 사양 (ISO/IEC 23008-2) 으로부터의 코덱을 나타내는 코드일 때, 다음의 엘리먼트들은 마침표 문자 (“.”) 에 의해 분리된 HEVC 디코더 구성 리코드로부터의 일련의 값들이다. 모든 뉴메릭 인코딩들에서, 리딩 제로들은 생략될 수도 있다,
* 십진수로서 인코딩된 general_profile_id 가 후속되는 무 문자 (no character) (general_profile_space == 0) 또는 general_profile_profile_space 1, 2, 3 에 대한 'A', 'Β', 'C'로서 인코딩된 general_profile_space;
* general_profile_compatibility_flags 의 32 비트들, 그러나 역방향 비트 순서로, 즉 최상위 비트로서 general_profile_compatibility_flag[ 31 ], 후속하여 general_profile_compatibility_flag[ 30 ], 및 최하위 비트로서 general_profile_compatibility_flag[ 0 ] 까지 내려감, 여기서 0 내지 31 의 범위에서의 i 에 대한 general_profile_compatibility_flag[ i ] 는 16 진수로 인코딩된 ISO/IEC 23008-2 에서 특정된다 (리딩 제로들은 생략될 수도 있다);
* 십진수로서 인코딩된 general_level_idc 가 후속되는 'L' (general_tier_flag==0) 또는 'H' (general_tier_flag==l) 로서 인코딩되는 general_tier_flag;
* 각각 16 진수로서 인코딩된, general_progressive_source_flag 를 포함하는 바이트로부터 시작하는 제약 플래그들의 6 바이트들 각각, 마침표에 의해 분리된 각 바이트의 인코딩; 제로인 트레일링 바이트들은 생략될 수도 있다.
본 개시는 파일 포맷들에서 가상 현실 뿐아니라 HDR/WCG 와 관련된 중요 비디오 정보의 시그널링을 위한 수개의 기법들을 기술한다. 이들 기법들 중 하나 이상은 독립적으로, 또는 다른 것들과 조합하여 적용될 수도 있다. 이러한 문서의 콘텍스트에서, 중요 비디오 정보는 소비를 위한 콘텐츠 선택, 예를 들어 비디오 트랙 또는 그것의 부분의 선택을 위해 사용될 수도 있는 비디오 정보를 지칭할 수도 있다.
본 개시의 기법들은 일반적으로 다음의 설계 원리들을 고수한다. 첫째로, 중요 비디오 정보는 (예를 들어, 헤더 또는 샘플 엔트리에서) 쉽게 발견되고 (예를 들어, 엔트로피 코딩 대신에 고정 길이 코딩을 사용하여) 쉽게 파싱되는 로케이션을 포함하여, 쉽게 액세스가능한 방식으로 컨테이너 파일, 예를 들어, ISOBMFF 파일에서 시그널링될 수도 있다. 둘째로, 중요 비디오 정보의 모든 피스들 (pieces) 은 더 높은 레벨 시스템들에 부과되도록, 예를 들어 DASH MPD 에서 용이한 액세스 및 포함을 위해 MIME 타입 또는 코덱 파라미터에 집성 및 포함되도록 쉽게 집성될 수도 있다. 셋째로, 바람직하게는, 그러나 엄격하게 요구되지 않고, 비디오 디코딩 및 재생을 위해 필요한 중요 비디오 정보는 샘플 엔트리 구조에 포함되는 디코더 구성에 포함되어야 한다.
백워드 호환가능할 (ISO/IEC 14496-15 의 조항들 5, 6, 및 7 에 특정된 바와 같은) 코덱들의 현존하는 AVC 패밀리 및 (ISO/IEC 14496-15 의 조항들 8 및 9 에 특정된 바와 같은) 코덱들의 현존하는 HEVC 패밀리의 파일 포맷들의 경우, HDR/WCG 관련 중요 비디오 정보, 즉 3 개의 8-비트 신택스 엘리먼트들 colour_primaries, transfer_characteristics, 및 matrix_coeffs 은 예를 들어 ColourDescriptionBox 로 지칭되는 새로운 박스에 포함되고, 이러한 새로운 박스는 디코더 구성 박스들 (즉, AVCConfigurationBox, SVCConfigurationBox, MVCConfigurationBox, MVCDConfigurationBox, A3DConfigurationBox, HEVCConfigurationBox, 및 LHEVCConfigurationBox) 의 끝에 포함된다. 유사하게, 본질적 SEI 메시지들의 타입들의 리스트는 다른 새로운 타입의 박스에 포함되고, 이러한 새로운 박스는 디코더 구성 박스들에서 ColourDescriptionBox 후에 포함된다.
일부 예들에서, 샘플 엔트리 구조들 (즉, AVCSampleEntry, AVC2SampleEntry, AVCSVCSampleEntry, AVC2SVCSampleEntry, SVCSampleEntry, AVCMVCSampleEntry, AVC2MVCSampleEntry, MVCSampleEntry, MVCDSampleEntry, A3DSampleEntry, HEVCSampleEntry, HEVCLHVCSampleEntry, 및 LHEVCSampleEntry) 에서의 새로운 박스는 디코더 구성 박스 후에 포함될 수도 있다. 유사하게, 본질적 SEI 메시지들의 타입들의 리스트는 다른 새로운 박스에 포함되고, 이러한 새로운 박스는 샘플 엔트리 구조들에서 ColourDescriptionBox 후에 포함된다.
일부 예들에서, 제한된 스킴 메커니즘은 샘플 엔트리에서 중요한 HDR/WCG 정보를 포함하는데 사용될 수도 있다. 예를 들어, 새로운 스킴 타입 (scheme_type) 은 예를 들어 'hdr' 로 명명된 HDR/WCG 에 대해 특정적으로 정의되고, 상술된 바와 같은 중요한 HDR/WCG 정보의 표시들은 중요한 HDR/WCG 정보를 특정적으로 포함하기 위해 SchemeInformationBox 에서, 예를 들어 새로운 박스를 통해 시그널링된다.
유사하게, 투영 타입, 영역별 패킹 타입, 및 스테레오 타입과 같은 VR 또는 360도 비디오 콘텐츠에 대한 중요 비디오 정보는 또한 새로운 박스에 포함될 수도 있고, 그 새로운 박스는 디코더 구성 박스들 또는 샘플 엔트리 구조들로 포함되거나 HDR 관련된 정보에 대한 상술된 바와 같은 제한된 스킴 메커니즘을 사용한다.
비디오 코덱, 예를 들어 새로운/미래의 비디오 코덱의 새로운 파일 포맷의 경우, 백워드 호환성을 고려할 필요가 없기 때문에, 본질적 SEI 메시지들의 타입들의 리스트 뿐아니라 HDR/WCG, VR/360도 비디오, 및 프레임 패킹에 대한 것들과 같은 중요 비디오 정보는 디코더 구성 리코드 구조에 직접 포함될 수도 있다. 현존하는 디코더 구성 리코드 구조의 예들은 바람직하게는 프로파일/계층/레벨 신택스 엘리먼트들 직후에 및 파라미터 세트들의 어레이들 및 SEI NAL 유닛들 전에, ISO/IEC 14496-15 의, 각각 조항들 5 및 8 에 특정된 바와 같은 AVCDecoderConfigurationRecord 및 HEVCDecoderConfigurationRecord 를 포함한다.
확장가능하도록, 소정 수의 비트들 또는 바이트들이 예약될 수도 있거나, 디코더 구성 리코드 구조의 시작에서 중요 비디오 정보의 길이를 나타내는 값을 포함하고 범위 내의 중요 비디오 정보에 대한 현존하는 특정된 필드들 후의 모든 비트들이 예약되게 하여, 파일 포맷 사양의 미래 버전에서, 범위 내의 새로운 필드들이 다른 중요 비디오 정보를 시그널링하기 위해 특정될 수도 있다.
중요 비디오 정보의 전체 세트는 어레이일 수도 있으며, 제 1 어레이는 프로파일/계층/레벨, HDR/WCG 관련 정보, VR/360 비디오 관련 정보, 본질적 SEI 메시지들의 타입들의 리스트, … 의 제 1 세트를 나타내고; 제 2 어레이는 프로파일/계층/레벨, HDR/WCG 관련 정보, VR/360 비디오 관련 정보, 본질적 SEI 메시지들의 타입들의 리스트, … 의 제 2 세트를 나타내고; 등등이다.
상기의 설계들로, 예를 들어, 디코더 구성 리코드 구조의 시작부의 데이터의 소정의 바이트들을 코덱 파라미터의 상이한 필드들로 간단히 복사하는 것이 가능할 수도 있고, 이들은 그 후 DASH MPD 에서와 같은 더 높은 시스템 레벨들에 쉽게 노출될 수 있다. 디코더 구성 리코드 구조는 비디오 디코더가 비디오 비트스트림을 디코딩하기 위해 그 자신을 구성하기 위해 알 필요가 있는 비디오 비트스트림의 가장 중요한 정보를 포함하는 신택스 구조이다.
코덱들의 AVC 패밀리에 대한 코덱 파라미터: 코덱 파라미터의 (공식적 신택스에서 'avcoti' 로서 지칭되는) 제 2 엘리먼트는 ISO/IEC 14496-10 에서 특정된 (서브세트) 시퀀스 파라미터 세트 NAL 유닛에서의 다음의 6 바이트의 16진수 표현이다: profile_idc, constraint_set 플래그들을 포함하는 바이트 (현재 constraint_set0_flag 내지 constraint_set5_flag, 및 reserved_zero_2bits), level_idc, colour_primaries, transfer_characteristics, 및 matrix_coeffs. 일부 예들에서, 프레임 패킹 뿐아니라 VR/360 비디오에 관한 중요 비디오 정보가 또한 유사한 방식으로 포함될 수도 있다.
일부 예들에서, 코덱들의 AVC 패밀리에 대한 코덱 파라미터의 경우, HDR/WCG 중요 정보의 3 바이트가 프로파일 및 레벨 정보 직후에 추가되고, 본질적 SEI 메시지들의 타입들의 리스트는 HDR/WCG 중요 정보의 3 바이트 직후에 추가된다. 즉, 코덱 파라미터의 (공식 신택스에서 'avcoti' 로서 지칭되는) 제 2 엘리먼트는 ISO/IEC 14496-10 에서 특정된 (서브세트) 시퀀스 파라미터 세트 NAL 유닛에서 다음의 6 바이트의 16진수 표현이도록 변경된다:
- profile_idc
- constraint_set 플래그들을 포함하는 바이트 (현재 constraint_set0_flag 내지 constraint_set5_flag, 및 reserved_zero_2bits)
- level_idc
- colour_primaries
- transfer_characteristics
- matrix_coeffs
다음의 16진수 표현이 후속된다:
- 본질적 SEI 메시지 타입들의 수와 동일한 바이트
- 각각 1 바이트씩, 본질적 SEI 메시지 타입들의 어레이
대안적으로, 프레임 패킹 뿐아니라 VR/360 비디오에 관한 중요 비디오 정보가 또한 유사한 방식으로 포함될 수도 있다.
코덱들의 HEVC 패밀리에 대한 코덱 파라미터: 제약 플래그들의 6 바이트의 표현의 각각의 인스턴스 후에, 마침표 문자 (“.”) 및 (컬러 및 동적 범위를 표시하는) “cdr” 및 ISO/IEC 23008-2 에서 특정된 (서브세트) 시퀀스 파라미터 세트 NAL 유닛에서 다음의 3 바이트의 16진수 표현을 추가한다: colour_primaries, transfer_characteristics, 및 matrix_coeffs. 또한, 그 후에, 각각의 1 바이트씩, 또 다른 마침표 문자 (“.”) 및 (본질적 SEI 를 표시하는) “esei” 및 본질적 SEI 메시지 타입들의 어레이의 16진수 표현을 추가한다. 대안적으로, 프레임 패킹 뿐아니라 VR/360 비디오에 관한 중요 비디오 정보가 또한 유사한 방식으로 포함될 수도 있다.
코덱 파라미터는, 가능하게는 프로파일 파라미터와 결합하여, 전체 컨테이너 포맷의 프로파일(들), 또는 그 안에 포함된 미디어 포맷들에 의해 채용된 코덱들의 분명한 사양을 허용하기 위해 여러 MIME 타입들 또는 타입/서브타입 조합들과 함께 사용될 수도 있다. 미래 코덱들에 대한 코덱 파라미터는 예를 들어 다음의 형태로 상술된 바와 같은 중요 비디오 정보의 전체 세트를 포함할 수도 있다:
sampleEntryName.ivi_1+ivi_2…+ivi_N
여기서, sampleEntryName 은 샘플 엔트리 네임의 4 문자 코드이고, ivi_i 는 중요 비디오 정보의 어레이의 i 번째 엘리먼트이고, 예를 들어, 접두하는 샘플 엔트리 네임 및 제 1 마침표 문자 (“.”) 를 제외하고, 상술된 바와 같은, 코덱들의 AVC 또는 HEVC 패밀리에 대한 코덱 파라미터의 신택스와 유사한 신택스를 사용하여 표현될 수 있다.
도 2 는 본 개시의 기법들을 구현할 수도 있는 예시의 비디오 인코더 (20) 를 도시하는 블록도이다. 도 2 는 설명의 목적으로 제공되며 본 개시에서 넓게 예시되고 기술된 기법들의 제한으로 고려되지 않아야 한다. 본 개시의 기법들은 여러 코딩 표준들 및 방법들에 적용가능할 수도 있다. 도 2 및 도 3 이 부분적으로 HEVC 용어를 사용하여 기술되지만, 도 2 및 도 3 은 H.264/AVC 및 미래의 비디오 코딩 사양과 같은 다른 비디오 코딩 사양에 적용가능할 수도 있다.
프로세싱 회로는 비디오 인코더 (20) 를 포함하고, 비디오 인코더 (20) 는 본 개시에 기술된 예시의 기법들 중 하나 이상을 수행하도록 구성된다. 예를 들어, 비디오 인코더 (20) 는 집적회로를 포함하고, 도 2 에 도시된 여러 유닛들은 회로 버스로 상호연결되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별개의 회로 블록들일 수도 있고, 그 유닛들 중 2 이상은 공통 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록들은 AND, OR, NAND, NOR, XOR, XNOR, 및 다른 유사한 논리 블록들 뿐아니라 산술 논리 유닛들 (ALUs), 기본 함수 유닛들 (EFUs) 과 같은 연산 블록들을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예들에서, 도 2 에 도시된 유닛들의 하나 이상은 프로세싱 회로상에서 실행되는 소프트웨어 유닛들일 수도 있다. 그러한 예에서, 이들 소프트웨어 유닛들에 대한 오브젝트 코드는 메모리에 저장된다. 운영 시스템은 비디오 인코더 (20) 가 오브젝트 코드를 취출하고 오브젝트 코드를 실행하게 하며, 이것은 비디오 인코더 (20)가 예시의 기법들을 구현하는 동작들을 수행하게 한다. 일부 예들에서, 소프트웨어 유닛들은 기동시 비디오 인코더 (20) 가 실행하는 펌웨어일 수도 있다. 이에 따라, 비디오 인코더 (20) 는 예시의 기법들을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 예시의 기법들을 수행하기 위해 하드웨어를 특수화하기 위해 하드웨어 상에서 실행하는 소프트웨어/펌웨어를 갖는다.
도 2 의 예에서, 비디오 인코더 (20) 는 예측 프로세싱 유닛 (100), 비디오 데이터 메모리 (101), 잔차 생성 유닛 (102), 변환 프로세싱 유닛 (104), 양자화 유닛 (106), 역양자화 유닛 (108), 역변환 프로세싱 유닛 (110), 재구성 유닛 (112), 필터 유닛 (114), 디코딩된 픽처 버퍼 (116), 및 엔트로피 인코딩 유닛 (118) 을 포함한다. 예측 프로세싱 유닛 (100) 은 인터 예측 프로세싱 유닛 (120) 및 인트라 예측 프로세싱 유닛 (126) 을 포함한다. 인터 예측 프로세싱 유닛 (120) 은 모션 추정 유닛 및 모션 보상 유닛 (미도시) 을 포함할 수도 있다.
비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장하도록 구성될 수도 있다. 비디오 데이터 메모리 (101) 에 저장된 비디오 데이터는 예를 들어 비디오 소스 (18) 로부터 획득될 수도 있다. 디코딩된 픽처 버퍼 (116) 는 예를 들어 인트라- 또는 인터-코딩 모드들에서 비디오 인코더 (20) 에 의해 비디오 데이터를 인코딩함에 있어서 사용을 위한 참조 비디오 데이터를 저장하는 참조 픽쳐 메모리일 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동기식 DRAM (SDRAM) 을 포함하는 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항식 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들과 같은 임의의 다양한 메모리 디바이스들에 의해 형성될 수도 있다. 비디오 데이터 메모리 (101) 및 디코딩된 픽처 버퍼 (116) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (101) 는 비디오 인코더 (20) 의 다른 컴포넌트들과 온-칩일 수도 있거나, 그들 컴포넌트들에 대해 오프-칩일 수도 있다. 비디오 데이터 메모리 (101) 는 도 1 의 저장 매체 (19) 와 동일하거나 그것의 일부일 수도 있다.
비디오 인코더 (20) 는 비디오 데이터를 수신한다. 비디오 인코더 (20) 는 비디오 데이터의 픽쳐의 슬라이스 내의 각각의 CTU 를 인코딩할 수도 있다. CTU 들 각각은 동일 사이즈 루마 코딩 트리 블록들 (CTBs) 및 픽쳐의 대응하는 CTB 들과 연관될 수도 있다. CTU 를 인코딩하는 것의 부분으로서, 예측 프로세싱 유닛 (100) 은 CTU 의 CTB 들을 점진적으로 더 작은 블록들로 분할하기 위해 파티셔닝을 수행할 수도 있다. 더 작은 블록들은 CU 들의 코딩 블록들일 수도 있다. 예를 들어, 예측 프로세싱 유닛 (100) 은 트리 구조에 따라 CTU 와 연관된 CTB 를 파티셔닝할 수도 있다.
비디오 인코더 (20) 는 CU 들의 인코딩된 표현들 (즉, 코딩된 CU 들) 을 생성하기 위해 CTU 의 CU 들을 인코딩할 수도 있다. CU 를 인코딩하는 것의 부분으로서, 예측 프로세싱 유닛 (100) 은 CU 의 하나 이상의 PU 들 중에서 CU 와 연관된 코딩 블록들을 파티셔닝할 수도 있다. 따라서, 각 PU 는 루마 예측 블록 및 대응하는 크로마 예측 블록들과 연관될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 여러 사이즈들을 갖는 PU 들을 지원할 수도 있다. 상술된 바와 같이, CU 의 사이즈는 CU 의 루마 코딩 블록의 사이즈를 지칭할 수도 있고, PU 의 사이즈는 PU 의 루마 예측 블록의 사이즈를 지칭할 수도 있다. 특정의 CU 의 사이즈가 2Nx2N 이라고 가정하면, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 인트라 예측을 위해 2Nx2N 또는 NxN 의 PU 사이즈들을 지원할 수도 있고, 인터 예측을 위해 2Nx2N, 2NxN, Nx2N, NxN 등의 대칭적 PU 사이즈들을 지원할 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 는 또한 인터 예측을 위해 2NxnU, 2NxnD, nLx2N, 및 nRx2N 의 PU 사이즈들에 대한 비대칭적 파티셔닝을 지원할 수도 있다.
인터 예측 프로세싱 유닛 (120) 은 PU 에 대한 예측 데이터를 생성할 수도 있다. PU 에 대한 예측 데이터를 생성하는 것의 부분으로서, 인터 예측 프로세싱 유닛 (120) 은 PU 에 대해 인터 예측을 수행한다. PU 에 대한 예측 데이터는 PU 의 예측 블록들 및 PU 에 대한 모션 정보를 포함할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은 PU 가 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지 여부에 따라 CU 의 PU 에 대한 상이한 동작들을 수행할 수도 있다. I 슬라이스에서, 모든 PU 들은 인트라 예측된다. 이리하여, PU 가 I 슬라이스에 존재하는 경우, 인터 예측 프로세싱 유닛 (120) 은 PU 에 대해 인터 예측을 수행하지 않는다. 따라서, I-모드로 인코딩된 블록들의 경우, 예측된 블록은 동일한 프레임 내의 이전에 인코딩된 이웃 블록들로부터의 공간 예측을 사용하여 형성된다. PU 가 P 슬라이스에 존재하는 경우, 인터 예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 생성하기 위해 단방향 인터 예측을 사용할 수도 있다. PU 가 B 슬라이스에 존재하는 경우, 인터 예측 프로세싱 유닛 (120) 은 PU 의 예측 블록을 생성하기 위해 단방향 또는 양방향 인터 예측을 사용할 수도 있다
인트라 예측 프로세싱 유닛 (126) 은 PU 에 대한 인트라 예측을 수행함으로써 PU 에 대한 예측 데이터를 생성할 수도 있다. PU 에 대한 예측 데이터는 PU 의 예측 블록들 및 여러 신택스 엘리먼트들을 포함할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 I 슬라이스들, P 슬라이스들, 및 B 슬라이스들 내의 PU 들에 대해 인트라 예측을 수행할 수도 있다.
PU 에 대해 인트라 예측을 수행하기 위해, 인트라 예측 프로세싱 유닛 (126) 은 PU 에 대한 예측 데이터의 다수의 세트들을 생성하기 위해 다수의 인트라 예측 모드들을 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 PU 에 대한 예측 블록을 생성하기 위해 이웃 PU 들의 샘플 블록들로부터의 샘플들을 사용할 수도 있다. 이웃 PU 들은 PU 들, CU 들, 및 CTU 들에 대한 좌측에서 우측으로, 상측에서 하측으로의 인코딩 순서를 가정할 때 PU 의 상측, 우상측, 좌상측, 또는 좌측에 있을 수도 있다. 인트라 예측 프로세싱 유닛 (126) 은 다양한 수들의 인트라 예측 모드들, 예를 들어 33 방향 인트라 예측 모드들을 사용할 수도 있다. 일부 예들에서, 인트라 예측 모드들의 수는 PU 와 연관된 영역의 사이즈에 의존할 수도 있다.
예측 프로세싱 유닛 (100) 은 PU 들에 대한 인터 예측 프로세싱 유닛 (120) 에 의해 생성된 예측 데이터 또는 PU 들에 대한 인트라 예측 프로세싱 유닛 (126) 에 의해 생성된 예측 데이터 중에서부터 CU 의 PU 들에 대한 예측 데이터를 선택할 수도 있다. 일부 예들에서, 예측 프로세싱 유닛 (100) 은 예측 데이터의 세트들의 레이트/왜곡 메트릭들에 기초하여 CU 의 PU 들에 대한 예측 데이터를 선택한다. 선택된 예측 데이터의 예측 블록들은 선택된 예측 블록들로서 여기서 지칭될 수도 있다.
잔차 생성 유닛 (102) 은 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 및 CU 의 PU 들에 대한 선택된 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 에 기초하여, CU 에 대한 잔차 블록들 (예를 들어, 루마, Cb 및 Cr 잔차 블록들) 을 생성할 수도 있다. 예를 들어, 잔차 생성 유닛 (102) 은 잔차 블록들 내의 각 샘플이 CU 의 코딩 블록 내의 샘플과 CU 의 PU 의 대응하는 선택된 예측 블록 내의 대응하는 샘플 사이의 차이와 동일한 값을 갖도록 CU 의 잔차 블록들을 생성할 수도 있다.
변환 프로세싱 유닛 (104) 은 CU 의 잔차 블록들을 CU 의 TU 들의 변환 블록들로 파티셔닝하는 것을 수행할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 CU 의 잔차 블록들을 CU 의 TU 들의 변환 블록들로 파티셔닝하기 위해 쿼드트리 파티셔닝을 수행할 수도 있다. 따라서, TU 는 루마 변환 블록 및 2 개의 크로마 변환 블록들과 연관될 수도 있다. CU 의 TU 들의 루마 및 크로마 변환 블록들의 사이즈들 및 위치들은 CU 의 PU 들의 예측 블록들의 사이즈들 및 위치들에 기초할 수도 또는 기초하지 않을 수도 있다. “잔차 쿼드트리” (RQT) 로서 알려진 쿼드트리 구조는 영역들 각각과 연관된 노드들을 포함할 수도 있다. CU 의 TU 들은 RQT 의 리프 노드들에 대응할 수도 있다.
변환 프로세싱 유닛 (104) 은 TU 의 변환 블록들에 하나 이상의 변환들을 적용함으로써 CU 의 각각의 TU 에 대한 변환 계수 블록들을 생성할 수도 있다. 변환 프로세싱 유닛 (104) 은 TU 과 연관된 변환 블록에 여러 변환들을 적용할 수도 있다. 예를 들어, 변환 프로세싱 유닛 (104) 은 변환 블록에 이산 코사인 변환 (DCT), 방향성 변환, 또는 개념적으로 유사한 변환을 적용할 수도 있다. 일부 예들에서, 변환 프로세싱 유닛 (104) 은 변환 블록에 변환들을 적용하지 않는다. 그러한 예들에서, 변환 블록은 변환 계수 블록으로서 취급될 수도 있다.
양자화 유닛 (106) 은 계수 블록에서의 변환 계수들을 양자화할 수도 있다. 양자화 유닛 (106) 은 CU 와 연관된 양자화 파라미터 (QP) 에 기초하여 CU 의 TU 와 연관된 계수 블록을 양자화할 수도 있다. 비디오 인코더 (20) 는 CU 와 연관된 QP 값을 조정함으로써 CU 와 연관된 계수 블록들에 적용되는 양자화의 정도를 조정할 수도 있다. 양자화는 정보의 손실을 도입할 수도 있다. 따라서, 양자화된 변환 계수들은 오리지날 변환 계수들보다 더 낮은 정밀도를 가질 수도 있다.
역양자화 유닛 (108) 및 역변환 프로세싱 유닛 (110) 은 계수 블록으로부터 잔차 블록을 재구성하기 위해 각각 계수 블록에 역양자화 및 역변환들을 적용할 수도 있다. 재구성 유닛 (112) 은 TU 와 연관된 재구성된 변환 블록을 생성하기 위해 예측 프로세싱 유닛 (100) 에 의해 생성된 하나 이상의 예측 블록들로부터의 대응하는 샘플들에 재구성된 잔차 블록을 가산할 수도 있다. 이러한 방식으로 CU 의 각 TU 에 대해 변환 블록들을 재구성함으로써, 비디오 인코더 (20) 는 CU 의 코딩 블록들을 재구성할 수도 있다.
필터 유닛 (114) 은 CU 와 연관된 코딩 블록들 내의 블록킹 아티팩트들을 감소시키기 위해 하나 이상의 디블록킹 동작들을 수행할 수도 있다. 디코딩된 픽처 버퍼 (116) 는 필터 유닛 (114) 이 재구성된 코딩 블록들에 대해 하나 이상의 디블록킹 동작들을 수행한 후 재구성된 코딩 블록들을 저장할 수도 있다. 인터 예측 프로세싱 유닛 (120) 은 다른 픽쳐들의 PU 들에 대해 인터 예측을 수행하기 위해 재구성된 코딩 블록들을 포함하는 참조 픽쳐를 사용할 수도 있다. 또, 인트라 예측 프로세싱 유닛 (126) 은 CU 와 동일한 픽쳐에서의 다른 PU 들에 대해 인트라 예측을 수행하기 위해 디코딩된 픽쳐 버퍼 (116) 내의 재구성된 코딩 블록들을 사용할 수도 있다.
엔트로피 인코딩 유닛 (118) 은 비디오 인코더 (20) 의 다른 기능적 컴포넌트들로부터 데이터를 수신할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 양자화 유닛 (106) 으로부터 계수 블록들을 수신할 수도 있고 예측 프로세싱 유닛 (100) 으로부터 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 인코딩 유닛 (118) 은 엔트로피 인코딩된 데이터를 생성하기 위해 데이터에 대해 하나 이상의 엔트로피 인코딩 동작들을 수행할 수도 있다. 예를 들어, 엔트로피 인코딩 유닛 (118) 은 데이터에 대해 CABAC 동작, 콘텍스트 적응형 가변 길이 코딩 (CAVLC) 동작, 변수-대-변수 (V2V) 길이 코딩 동작, 신택스 기반 콘택스트 적응형 이진 산술 코딩 (SBAC) 동작, 확률 구간 파티셔닝 엔트로피 (PIPE) 코딩 동작, 지수 골룸 인코딩 동작, 또는 다른 타입의 엔트로피 인코딩 동작을 수행할 수도 있다. 비디오 인코더 (20) 는 엔트로피 인코딩 유닛 (118) 에 의해 생성된 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력할 수도 있다. 예를 들어, 그 비트스트림은 CU 에 대한 변환 계수들의 값들을 표현하는 데이터를 포함할 수도 있다.
더욱이, 도 2 의 예에서, 파일 프로세싱 유닛 (128) 은 비디오 인코더 (20) 에 의해 생성된 비트스트림을 획득할 수도 있다. 파일 프로세싱 유닛 (128) 은 소스 디바이스 (12), 파일 생성 디바이스 (34), 콘텐츠 전달 네트워크 디바이스, 또는 다른 타입의 디바이스와 같은 디바이스의 하나 이상의 프로세서들에 의해 구현될 수도 있다. 파일 프로세싱 유닛 (128) 은 비디오 인코더 (20) 에 의해 생성된 비트스트림을 저장하는 파일을 생성할 수도 있다. 또, 파일 프로세싱 유닛 (128) 은 파일을 출력할 수도 있다. 예를 들어, 파일 프로세싱 유닛 (128) 은 유선 또는 무선 네트워크 인터페이스를 사용하여 파일을 출력하거나, 컴퓨터 판독가능 매체와 통신하는 디바이스에 대한 상호연결을 사용하여 파일을 출력하거나, 다른 방식으로 파일을 출력할 수도 있다. 도 2 의 예에서, 컴퓨터 판독가능 매체 (130) 는 파일 프로세싱 유닛 (128) 에 의해 생성된 파일을 수신할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (130) 는 메모리, 광학 디스크, 자기 디스크, 또는 컴퓨팅 디바이스가 데이터를 판독할 수 있는 다른 타입의 비일시적 저장 매체와 같은 컴퓨터 판독가능 저장 매체를 포함한다. 컴퓨터 판독가능 매체 (130) 가 컴퓨터 판독가능 저장 매체를 포함하는 일부 예들에서, 컴퓨터 판독가능 저장 매체는 소스 디바이스 (12), 파일 생성 디바이스 (34), 콘텐츠 전달 네트워크 디바이스, 또는 다른 타입의 디바이스와 같은 디바이스의 일부를 형성할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (130) 는 광섬유, 통신 케이블, 전자기파, 또는 컴퓨팅 디바이스가 데이터를 판독할 수 있는 다른 타입들의 매체들과 같은 컴퓨터 판독가능 통신 매체를 포함한다.
본 개시의 기법에 따르면, 파일 프로세싱 유닛 (128) 은 본 개시의 기법들에 따라 파일들을 생성할 수도 있다. 예를 들어, 파일 프로세싱 유닛 (128) 은 코덱들의 AVC 패밀리 또는 코덱들의 HEVC 패밀리에 대한 파일 포맷을 따르는 파일 내의 박스에 데이터를 생성할 수도 있고, 그 데이터는 HDR, WCG 비디오 코딩, VR, 또는 360 도 비디오 콘텐츠 중 적어도 하나와 관련되고, 박스는 그 데이터를 포함하는 신택스 구조를 포함하고, 파일은 미디어 콘텐츠와 연관되며, 여기서 그 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정함에 있어서 사용하기 위한 것이며; 및 파일을 출력할 수도 있다. 일부 예들에서, 파일은 파일이 미디어 콘텐츠 (또는 그것의 인코딩된 버전) 를 포함하고 파일이 미디어 콘텐츠에 관한 메타데이터 (또는 미디어 콘텐츠의 인코딩된 버전에 관한 메타데이터) 를 포함한다는 점에서 미디어 콘텐츠와 연관된다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은 비디오 코덱에 대한 파일 포맷을 따르는 파일의 디코더 구성 리코드 구조로부터 데이터를 획득할 수도 있고, 그 데이터는 HDR, WCG 비디오 코딩, VR, 또는 360 도 비디오 콘텐츠 중 적어도 하나와 관련되고, 그 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정함에 있어서 사용하기 위한 것이며; 및 파일을 출력할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은 파일의 MIME 타입의 코덱 파라미터에서의 엘리먼트를 생성할 수도 있으며, 그 엘리먼트는 컬러 원색 신택스 엘리먼트, 전달 특성 신택스 엘리먼트, 및 행렬 계수 신택스 엘리먼트의 값을 나타내고, 여기서 그 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하기 위한 것이며; 코덱 파라미터는 코덱들의 AVC 패밀리를 나타내고; 및 파일을 출력할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에서, VR, 또는 360 도 비디오, 또는 프레임 패킹 중 적어도 하나에 대한 데이터를 생성할 수도 있으며, 여기서 그 데이터는 클라이언트가 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하기 위한 것이며; 코덱 파라미터는 코덱들의 AVC 패밀리를 나타내고; 및 파일을 출력할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에서, 컬러 원색 신택스 엘리먼트, 전달 특성 신택스 엘리먼트, 및 행렬 계수 신택스 엘리먼트의 값을 포함할 수도 있고, 여기서 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타내고; 및 파일을 출력할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에서, VR, 또는 360 도 비디오, 또는 프레임 패킹 중 적어도 하나에 관련한 데이터를 포함할 수도 있으며, 여기서 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타내고; 및 파일을 출력할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (128) 은 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 데이터를 포함할 수도 있으며, 그 데이터는 비디오 정보의 어레이를 포함하며; 및 파일을 출력할 수도 있다.
본 개시의 예에서, 파일 프로세싱 유닛 (128) 은 코덱들의 AVC 패밀리 또는 코덱들의 HEVC 패밀리에 대한 파일 포맷을 따르는 파일 내의 박스를 생성할 수도 있다. 이러한 예에서, 박스는 본질적 SEI 메시지들의 타입들의 리스트를 포함한다. 일부 예들에서, 박스는 AVCSampleEntry, AVC2SampleEntry, AVCSVCSampleEntry, AVC2SVCSampleEntry, SVCSampleEntry, AVCMVCSampleEntry, AVC2MVCSampleEntry, MVCSampleEntry, MVCDSampleEntry, A3DSampleEntry, HEVCSampleEntry, HEVCLHVCSampleEntry, 또는 LHEVCSampleEntry 중 하나 내에 캡슐화된다. 박스는 리스트를 포함하는 신택스 구조를 포함할 수도 있다. 더욱이, 이러한 예에서, 파일은 미디어 콘텐츠와 연관된다. 일부 예들에서, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지의 파일과 연관된 미디어 콘텐츠 내의 존재가 파일과 연관된 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 파일과 연관된 미디어 콘텐츠를 렌더링하기 위해 요구된다. 파일 프로세싱 유닛 (128) 은 파일을 출력할 수도 있다. 일부 예들에서, 박스는 파일의 디코더 구성 박스들 (예를 들어, AVCConfigurationBox, SVCConfigurationBox, MVCConfigurationBox, MVCDConfigurationBox, A3DConfigurationBox, HEVCConfigurationBox, 또는 LHEVCConfigurationBox) 후에 파일에 포함된다. 더욱이, 일부 예들에서, 박스는 샘플 엔트리 구조 내에 존재한다.
본 개시의 예에서, 파일 프로세싱 유닛 (128) 은 비디오 코덱에 대한 파일 포맷을 따르는 파일의 디코더 구성 리코드 구조에 본질적 SEI 메시지들의 타입들의 리스트를 포함할 수도 있다. 예를 들어, 파일 프로세싱 유닛 (128) 은 AVCDecoderConfigurationRecord 또는 HEVCDecoderConfigurationRecord, 또는 다른 타입의 디코더 구성 리코드에 그 리스트를 포함할 수도 있다. 파일은 미디어 콘텐츠와 연관된다. 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지의 파일과 연관된 미디어 콘텐츠 내의 존재가 파일과 연관된 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 파일과 연관된 미디어 콘텐츠를 렌더링하기 위해 요구된다. 더욱이, 파일 프로세싱 유닛 (128) 은 파일을 출력할 수도 있다. 일부 예들에서, 디코더 구성 리코드 구조는 프로파일/계층/레벨 신택스 엘리먼트들 직후에 그리고 SEI NAL 유닛들 및 파라미터 세트들의 어레이들 전에 존재한다. 일부 예들에서, 리스트는 어레이들의 세트에 존재하며, 어레이들의 세트의 각각의 별개의 어레이는 프로파일/계층/레벨 데이터의 각각의 세트, HDR 데이터, WCG 데이터, VR 데이터, 360도 비디오 데이터의 각각의 세트, 또는 본질적 SEI 메시지들의 타입들의 리스트를 포함한다.
본 개시의 예에서, 파일 프로세싱 유닛 (128) 은 파일의 MIME 타입의 코덱 파라미터에서의 엘리먼트를 생성할 수도 있다. 그 엘리먼트는 본질적 SEI 메시지 타입들의 어레이를 포함한다. 타입들 각각은 비트들의 각각의 세트 (예를 들어, 1 바이트) 에서 표시될 수도 있다. 파일은 미디어 콘텐츠와 연관된다. 이러한 예에서, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지의 파일과 연관된 미디어 콘텐츠 내의 존재가 파일과 연관된 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 파일과 연관된 미디어 콘텐츠를 렌더링하기 위해 요구된다. 더욱이, 이러한 예에서, 코덱 파라미터는 코덱들의 AVC 패밀리를 표시한다. 이러한 예에서, 파일 프로세싱 유닛 (128) 은 파일을 출력할 수도 있다. 일부 예들에서, 파일 프로세싱 유닛 (128) 은, 그 엘리먼트에, 어레이 내의 본질적 SEI 메시지 타입들의 수를 나타내는 하나 이상의 비트들을 포함할 수도 있다. 예를 들어, 그 엘리먼트는 어레이 내의 SEI 메시지 타입들의 수와 동일한 바이트를 포함할 수도 있다.
본 개시의 예에서, 파일 프로세싱 유닛 (128) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에, 본질적 SEI 메시지들 타입들의 어레이를 포함할 수도 있다. 일부 예들에서, 그 엘리먼트는 '.' 문자 및 그 엘리먼트가 본질적 SEI 메시지 타입들의 어레이를 포함한다는 것을 나타내는 문자열 (예를 들어, “esei”) 이 선행된다. 이러한 예에서, 파일은 미디어 콘텐츠와 연관된다. 이러한 예에서, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지의 파일과 연관된 미디어 콘텐츠 내의 존재가 파일과 연관된 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 파일과 연관된 미디어 콘텐츠를 렌더링하기 위해 요구된다. 이러한 예에서, 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타낸다. 더욱이, 이러한 예에서, 파일 프로세싱 유닛 (128) 은 파일을 출력할 수도 있다.
도 3 은 본 개시의 기법들을 구현하도록 구성되는 예시의 비디오 디코더 (30) 를 도시하는 블록도이다. 도 3 은 설명의 목적으로 제공되고 본 개시에서 넓게 예시되고 기술된 기법들의 제한이 아니다. 설명의 목적으로, 본 개시는 HEVC 코딩의 콘텍스트에서 비디오 디코더 (30) 를 기술한다. 그러나, 본 개시의 기법들은 다른 코딩 표준들 또는 방법들에 적용가능할 수도 있다.
프로세싱 회로는 비디오 디코더 (30) 를 포함하고, 비디오 디코더 (30) 는 본 개시에 기술된 예시의 기법들 중 하나 이상을 수행하도록 구성된다. 예를 들어, 비디오 디코더 (30) 는 집적회로를 포함하고, 도 3 에 도시된 여러 유닛들은 회로 버스로 상호연결되는 하드웨어 회로 블록들로서 형성될 수도 있다. 이들 하드웨어 회로 블록들은 별개의 회로 블록들일 수도 있고, 그 유닛들 중 2 이상은 공통 하드웨어 회로 블록으로 결합될 수도 있다. 하드웨어 회로 블록들은 AND, OR, NAND, NOR, XOR, XNOR, 및 다른 유사한 논리 블록들 뿐아니라 산술 논리 유닛들 (ALUs), 기본 함수 유닛들 (EFUs) 과 같은 연산 블록들을 형성하는 전기 컴포넌트들의 조합으로서 형성될 수도 있다.
일부 예들에서, 도 3 에 도시된 유닛들의 하나 이상은 프로세싱 회로상에서 실행되는 소프트웨어 유닛들일 수도 있다. 그러한 예에서, 이들 소프트웨어 유닛들에 대한 오브젝트 코드는 메모리에 저장된다. 운영 시스템은 비디오 디코더 (30) 가 오브젝트 코드를 취출하고 오브젝트 코드를 실행하게 하며, 이것은 비디오 디코더 (30) 가 예시의 기법들을 구현하는 동작들을 수행하게 한다. 일부 예들에서, 소프트웨어 유닛들은 기동시 비디오 디코더 (30) 가 실행하는 펌웨어일 수도 있다. 이에 따라, 비디오 디코더 (30) 는 예시의 기법들을 수행하는 하드웨어를 갖는 구조적 컴포넌트이거나 예시의 기법들을 수행하기 위해 하드웨어를 특수화하기 위해 하드웨어 상에서 실행하는 소프트웨어/펌웨어를 갖는다.
도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (150), 비디오 데이터 메모리 (151), 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 재구성 유닛 (158), 필터 유닛 (160), 및 디코딩된 픽쳐 버퍼 (162) 를 포함한다. 예측 프로세싱 유닛 (152) 은 모션 보상 유닛 (164) 및 인트라 예측 프로세싱 유닛 (166) 을 포함한다. 다른 예들에서, 비디오 디코더 (30) 는 더 많거나, 더 적거나, 또는 상이한 기능 컴포넌트들을 포함할 수도 있다.
비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 컴포넌들에 의해 디코딩될, 인코딩된 비디오 비트스트림과 같은 인코딩된 비디오 데이터를 저장할 수도 있다. 비디오 데이터 메모리 (151) 에 저장된 비디오 데이터는 예를 들어 물리적 데이터 저장 매체들을 액세스함으써, 또는 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 카메라와 같은 로컬 비디오 소스로부터 컴퓨터 판독가능 매체 (16) 로부터 획득될 수도 있다. 비디오 데이터 메모리 (151) 는 인코딩된 비디오 비트스트림으로부터의 인코딩된 비디오 데이터를 저장하는 코딩된 픽쳐 버퍼 (CPB) 를 형성할 수도 있다. 디코딩된 픽쳐 버퍼 (162) 는 출력을 위해, 또는 예를 들어 인트라 또는 인터 코딩 모드들로 비디오 디코더 (30) 에 의해 비디오 데이터를 디코딩하는데 사용을 위한 참조 비디오 데이터를 저장하는 참조 픽쳐 메모리일 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽쳐 버퍼 (162) 는 동기식 DRAM (SDRAM) 을 포함하는 동적 랜덤 액세스 메모리 (DRAM), 자기저항 RAM (MRAM), 저항식 RAM (RRAM), 또는 다른 타입들의 메모리 디바이스들과 같은 임의의 다양한 메모리 디바이스들에 의해 형성될 수도 있다. 비디오 데이터 메모리 (151) 및 디코딩된 픽처 버퍼 (162) 는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수도 있다. 여러 예들에서, 비디오 데이터 메모리 (151) 는 비디오 디코더 (30) 의 다른 컴포넌트들과 온-칩일 수도 있거나, 그들 컴포넌트들에 대해 오프-칩일 수도 있다. 비디오 데이터 메모리 (151) 는 도 1 의 저장 매체 (28) 와 동일하거나 그것의 일부일 수도 있다.
비디오 데이터 메모리 (151) 는 비트스트림의 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신 및 저장한다. 엔트로피 디코딩 유닛 (150) 은 비디오 데이터 메모리 (151) 로부터 인코딩된 비디오 데이터 (예를 들어, NAL 유닛들) 를 수신하고 신택스 엘리먼트들을 획득하기 위해 NAL 유닛들을 파싱할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 NAL 유닛들 내의 엔트로피 인코딩된 신택스 엘리먼트들을 엔트로피 디코딩할 수도 있다. 예측 프로세싱 유닛 (152), 역양자화 유닛 (154), 역변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (160) 은 비트스트림으로부터 추출된 신택스 엘리먼트들에 기초하여 디코딩된 비디오 데이터를 생성할 수도 있다. 엔트로피 디코딩 유닛 (150) 은 도 2 의 엔트로피 인코딩 유닛 (118) 의 프로세스와 일반적으로 역인 프로세스를 수행할 수도 있다.
비트스트림으로부터의 신택스 엘리먼트들을 획득하는 것에 더하여, 비디오 디코더 (30) 는 파티셔닝되지 않은 CU 에 대해 재구성 동작을 수행할 수도 있다. CU 에 대해 재구성 동작을 수행하기 위해, 비디오 디코더 (30) 는 CU 의 각 TU 에 대해 재구성 동작을 수행할 수도 있다. CU 의 각 TU 에 대해 재구성 동작을 수행함으로써, 비디오 디코더 (30) 는 CU 의 잔차 블록들을 재구성할 수도 있다.
CU 의 TU 에 대해 재구성 동작을 수행하는 것의 부분으로서, 역양자화 유닛 (154) 은 TU 와 연관된 계수 블록들을 역양자화, 즉 탈양자화할 수도 있다. 역양자화 유닛 (154) 이 계수 블록을 역양자화한 후, 역변환 프로세싱 유닛 (156) 은 TU 와 연관된 잔차 블록을 생성하기 위해 계수 블록에 하나 이상의 역변환들을 적용할 수도 있다. 예를 들어, 역변환 프로세싱 유닛 (156) 은 계수 블록에 역 DCT, 역 정수 변환, 역 카루넨-뢰뵈 변환 (KLT), 역 회전 변환, 역 방향성 변환, 또는 다른 역변환을 적용할 수도 있다.
역양자화 유닛 (154) 은 본 개시의 특정의 기법들을 수행할 수도 있다. 예를 들어, 비디오 데이터의 픽쳐의 CTU 의 CTB 내의 복수의 양자화 그룹들의 적어도 하나의 각각의 양자화 그룹에 대해, 역양자화 유닛 (154) 은 비트스트림에서 시그널링된 로컬 양자화 정보에 적어도 부분적으로 기초하여, 각각의 양자화 그룹에 대한 각각의 양자화 파라미터를 도출할 수도 있다. 또, 이러한 예에서, 역양자화 유닛 (154) 은, 각각의 양자화 그룹에 대한 각각의 양자화 파라미터에 기초하여, CTU 의 CU 의 TU 의 변환 블록의 적어도 하나의 변환 계수를 역양자화할 수도 있다. 이러한 예에서, 각각의 양자화 그룹은 각각의 양자화 그룹의 경계들이 CU 들 또는 코딩 블록들의 경계들이어야 하고 각각의 양자화 그룹의 사이즈가 임계값 이상이도록, 코딩 순서에서 연속적인 CU 들 또는 코딩 블록들의 그룹으로서 정의된다. 비디오 디코더 (30) (예를 들어, 역변환 프로세싱 유닛 (156), 재구성 유닛 (158), 및 필터 유닛 (160)) 는 변환 블록의 역양자화된 변환 계수들에 기초하여, CU 의 코딩 블록을 재구성할 수도 있다.
PU 가 인트라 예측을 사용하여 인코딩되는 경우, 인트라 예측 프로세싱 유닛 (166) 은 PU 의 예측 블록들을 생성하기 위해 인트라 예측을 수행할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 샘플 공간 이웃 블록들에 기초하여 PU 의 예측 블록들을 생성하기 위해 인트라 예측 모드를 사용할 수도 있다. 인트라 예측 프로세싱 유닛 (166) 은 비트스트림으로부터 획득된 하나 이상의 신택스 엘리먼트들에 기초하여 PU 에 대한 인트라 예측 모드를 결정할 수도 있다.
PU 가 인터 예측을 사용하여 인코딩되는 경우, 엔트로피 디코딩 유닛 (150) 은 PU 에 대한 모션 정보를 결정할 수도 있다. 모션 보상 유닛 (164) 은, PU 의 모션 정보에 기초하여, 하나 이상의 참조 블록들을 결정할 수도 있다. 모션 보상 유닛 (164) 은 하나 이상의 참조 블록들에 기초하여 PU 에 대한 예측 블록들 (예를 들어, 예측 루마, Cb 및 Cr 블록들) 을 생성할 수도 있다.
재구성 유닛 (158) 은 CU 의 TU 들에 대한 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 및 CU 의 PU 들의 예측 블록들 (예를 들어, 루마, Cb 및 Cr 블록들), 즉 적용가능한 대로 인트라 예측 데이터 또는 인터 예측 데이터를 사용하여 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성할 수도 있다. 예를 들어, 재구성 유닛 (158) 은 변환 블록들 (예를 들어, 루마, Cb 및 Cr 변환 블록들) 의 샘플들을 예측 블록들 (예를 들어, 루마, Cb 및 Cr 예측 블록들) 의 대응하는 샘플들에 가산하여 CU 에 대한 코딩 블록들 (예를 들어, 루마, Cb 및 Cr 코딩 블록들) 을 재구성할 수도 있다.
필터 유닛 (160) 은 CU 의 코딩 블록들과 연관된 블록킹 아티팩트들을 감소시키기 위해 디블록킹 동작을 수행할 수도 있다. 비디오 디코더 (30) 는 디코딩된 픽쳐 버퍼 (162) 에 CU 의 코딩 블록들을 저장할 수도 있다. 디코딩된 픽쳐 버퍼 (162) 는 후속 모션 보상, 인트라 예측, 및 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스상의 제시를 위해 참조 픽쳐들을 제공할 수도 있다. 예를 들어, 비디오 디코더 (30) 는, 디코딩된 픽쳐 버퍼 (162) 내의 블록들에 기초하여, 다른 CU 들의 PU 들에 대한 인트라 예측 또는 인터 예측 동작들을 수행할 수도 있다.
도 3 의 예에서, 컴퓨터 판독가능 매체 (148) 는 메모리, 광학 디스크, 자기 디스크, 또는 컴퓨팅 디바이스가 데이터를 판독할 수 있는 다른 타입의 비일시적 저장 매체와 같은 컴퓨터 판독가능 저장 매체를 포함한다. 컴퓨터 판독가능 매체 (148) 가 컴퓨터 판독가능 저장 매체를 포함하는 일부 예들에서, 컴퓨터 판독가능 저장 매체는 소스 디바이스 (12), 파일 생성 디바이스 (34), 콘텐츠 전달 네트워크 디바이스, 또는 다른 타입의 디바이스와 같은 디바이스의 일부를 형성할 수도 있다. 일부 예들에서, 컴퓨터 판독가능 매체 (148) 는 광섬유, 통신 케이블, 전자기파, 또는 컴퓨팅 디바이스가 데이터를 판독할 수 있는 다른 타입들의 매체들과 같은 컴퓨터 판독가능 통신 매체를 포함한다.
또한, 도 3 의 예에서, 파일 프로세싱 유닛 (149) 은 컴퓨터 판독가능 매체 (148) 로부터의 파일 또는 파일의 부분들을 수신한다. 파일 프로세싱 유닛 (149) 은 목적지 디바이스 (14), 미디어 인식 네트워크 엘리먼트 (MANE), 콘텐츠 전달 네크워크 디바이스, 또는 다른 타입의 디바이스와 같은 디바이스의 하나 이상의 프로세서들에 의해 구현될 수도 있다.
파일 프로세싱 유닛 (149) 은 본 개시의 기법들에 따라 파일들을 프로세싱할 수도 있다. 예를 들어, 파일 프로세싱 유닛 (149) 은 코덱들의 AVC 패밀리 또는 코덱들의 HEVC 패밀리에 대한 파일 포맷을 따르는 파일 내의 박스로부터 데이터를 획들할 수도 있고, 그 데이터는 HDR, WCG 비디오 코딩, VR, 또는 360 도 비디오 콘텐츠 중 적어도 하나와 관련되고, 박스는 그 데이터를 포함하는 신택스 구조를 포함하고, 파일은 미디어 콘텐츠와 연관되며; 및 박스로 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은 비디오 코덱에 대한 파일 포맷을 따르는 파일의 디코더 구성 리코드 구조로부터 데이터를 획득할 수도 있고, 그 데이터는 HDR, WCG 비디오 코딩, VR, 또는 360 도 비디오 콘텐츠 중 적어도 하나와 관련되고; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여, 컬러 원색 신택스 엘리먼트, 전달 특성 신택스 엘리먼트, 및 행렬 계수 신택스 엘리먼트의 값을 결정할 수도 있고, 여기서 코덱 파라미터는 코덱들의 AVC 패밀리를 나타내고; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여, VR, 또는 360 도 비디오, 또는 프레임 패킹 중 적어도 하나에 대한 데이터를 결정할 수도 있으며, 여기서 코덱 파라미터는 코덱들의 AVC 패밀리를 나타내고; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여, 컬러 원색 신택스 엘리먼트, 전달 특성 신택스 엘리먼트, 및 행렬 계수 신택스 엘리먼트의 값을 결정할 수도 있고, 여기서 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타내고; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여, VR, 360 도 비디오, 또는 프레임 패킹 중 적어도 하나에 관련한 데이터를 결정할 수도 있으며, 여기서 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타내고; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여 데이터를 결정할 수도 있으며, 그 데이터는 비디오 정보의 어레이를 포함하며; 및 그 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은 코덱들의 AVC 패밀리 또는 코덱들의 HEVC 패밀리에 대한 파일 포맷을 따르는 파일 내의 박스로부터 본질적 SEI 메시지들의 타입들의 리스트를 획들할 수도 있다. 일부 예들에서, 박스는 AVCSampleEntry, AVC2SampleEntry, AVCSVCSampleEntry, AVC2SVCSampleEntry, SVCSampleEntry, AVCMVCSampleEntry, AVC2MVCSampleEntry, MVCSampleEntry, MVCDSampleEntry, A3DSampleEntry, HEVCSampleEntry, HEVCLHVCSampleEntry, 또는 LHEVCSampleEntry 중 하나 내에 캡슐화된다. 박스는 리스트를 포함하는 신택스 구조를 포함할 수도 있다. 더욱이, 파일은 미디어 콘텐츠와 연관된다. 또, 일부 예들에서, 파일 프로세싱 유닛 (128) 은, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 미디어 콘텐츠에 기초하여, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러 (예를 들어, 비디오 디코더 (30) 과 같은 비디오 디코더) 가 미디어 콘텐츠를 렌더링할 수 있다고 결정할 수도 있다. 박스는 파일의 디코더 구성 박스들 (예를 들어, AVCConfigurationBox, SVCConfigurationBox, MVCConfigurationBox, MVCDConfigurationBox, A3DConfigurationBox, HEVCConfigurationBox, 또는 LHEVCConfigurationBox) 후에 파일에 포함될 수도 있다. 일부 예들에서, 박스는 샘플 엔트리 구조 내에 존재한다. 일부 예들에서, 박스는 샘플 엔트리 구조 내의 ColourDescriptorBox 에 후속할 수도 있다. 더욱이, 일부 예들에서, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다는 결정에 기초하여, 파일 프로세싱 유닛 (149) 은 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청하는 것, 파일과 연관된 미디어 콘텐츠를 디코딩하는 것 중 적어도 하나를 수행할 수도 있다.
일부 예들에서, 파일 프로세싱 유닛 (149) 은 비디오 코덱에 대한 파일 포맷을 따르는 파일의 디코더 구성 리코드 구조로부터 본질적 SEI 메시지들의 타입들의 리스트를 획득할 수도 있다. 파일 프로세싱 유닛 (128) 은, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 미디어 콘텐츠에 기초하여, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다고 결정할 수도 있다. 일부 예들에서, 디코더 구성 리코드 구조는 AVCDecoderConfigurationRecord 또는 HEVCDecoderConfigurationRecord 중 하나이다. 디코더 구성 리코드 구조는 프로파일/계층/레벨 신택스 엘리먼트들 직후에 그리고 SEI NAL 유닛들 및 파라미터 세트들의 어레이들 전에 존재한다. 일부 예들에서, 리스트는 어레이들의 세트에 존재하며, 어레이들의 세트의 각각의 별개의 어레이는 프로파일/계층/레벨 데이터의 각각의 세트, HDR 데이터, WCG 데이터, VR 데이터, 360도 비디오 데이터의 각각의 세트, 또는 본질적 SEI 메시지들의 타입들의 리스트를 포함한다. 더욱이, 일부 예들에서, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다는 결정에 기초하여, 파일 프로세싱 유닛 (149) 은 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청하는 것, 파일과 연관된 미디어 콘텐츠를 디코딩하는 것 중 적어도 하나를 수행할 수도 있다.
본 개시의 예에서, 파일 프로세싱 유닛 (149) 은 파일의 MIME 타입의 코덱 파라미터에서의 엘리먼트 (예를 들어, 'avcoti' 엘리먼트 또는 다른 엘리먼트) 에 기초하여, 본질적 SEI 메시지 타입들의 어레이를 결정할 수도 있다. 타입들 각각은 비트들의 각각의 세트 (예를 들어, 1 바이트) 에서 표시될 수도 있다. 이러한 예에서, 코덱 파라미터는 코덱들의 AVC 패밀리를 표시한다. 더욱이, 일부 예들에서, 파일 프로세싱 유닛 (149) 은, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 미디어 콘텐츠에 기초하여, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다고 결정할 수도 있다. 일부 예들에서, 파일 프로세싱 유닛 (128) 은, 그 엘리먼트로부터, 어레이 내의 본질적 SEI 메시지 타입들의 수를 나타내는 하나 이상의 비트들을 획득할 수도 있다. 예를 들어, 그 엘리먼트는 어레이 내의 SEI 메시지 타입들의 수와 동일한 바이트를 포함할 수도 있다. 더욱이, 일부 예들에서, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다는 결정에 기초하여, 파일 프로세싱 유닛 (149) 은 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청하는 것, 파일과 연관된 미디어 콘텐츠를 디코딩하는 것 중 적어도 하나를 수행할 수도 있다.
본 개시의 예에서, 파일 프로세싱 유닛 (128) 은, 파일의 MIME 타입의 코덱 파라미터의 엘리먼트에 기초하여, 본질적 SEI 메시지들 타입들의 어레이를 결정할 수도 있다. 일부 예들에서, 그 엘리먼트는 '.' 문자 및 그 엘리먼트가 본질적 SEI 메시지 타입들의 어레이를 포함한다는 것을 나타내는 문자열 (예를 들어, “esei”) 이 선행된다. 이러한 예에서, 코덱 파라미터는 코덱들의 HEVC 패밀리를 나타낸다. 더욱이, 일부 예들에서, 파일 프로세싱 유닛 (149) 은, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 미디어 콘텐츠에 기초하여, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다고 결정할 수도 있다. 이러한 예에서, 파일 프로세싱 유닛 (128) 은, 그 엘리먼트로부터, 어레이 내의 본질적 SEI 메시지 타입들의 수를 나타내는 하나 이상의 비트들을 획득할 수도 있다. 더욱이, 일부 예들에서, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다는 결정에 기초하여, 파일 프로세싱 유닛 (149) 은 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청하는 것, 파일과 연관된 미디어 콘텐츠를 디코딩하는 것 중 적어도 하나를 수행할 수도 있다.
도 4 는 네트워크 (200) 의 부분을 형성하는 디바이스들의 예시의 세트를 도시하는 블록도이다. 이러한 예에서, 네트워크 (200) 는 라우팅 디바이스들 (204A, 204B) (라우팅 디바이스들 (204)) 및 트랜스코딩 디바이스 (206) 를 포함한다. 라우팅 디바이스들 (204) 및 트랜스코딩 디바이스 (206) 는 네트워크 (200) 의 부분을 형성할 수도 있는 적은 수의 디바이스들을 표현하도록 의도된다. 스위치들, 허브들, 게이트웨이들, 방화벽들, 브리지들, 및 다른 그러한 디바이스들과 같은 다른 네트워크 디바이스들은 또한 네트워크 (200) 내에 포함될 수도 있다. 게다가, 추가의 네트워크 디바이스들이 서버 디바이스 (202) 와 클라이언트 디바이스 (208) 사이의 네트워크 경로를 따라 제공될 수도 있다. 일부 예들에서, 서버 디바이스 (202) 는 소스 디바이스 (12) (도 1) 에 대응할 수도 있는 반면, 클라이언트 디바이스 (208) 는 목적지 디바이스 (14) (도 1) 에 대응할 수도 있다.
일반적으로, 라우팅 디바이스들 (204) 은 네트워크 (200) 를 통해 네트워크 데이터를 교환하기 위해 하나 이상의 라우팅 프로토콜들을 구현한다. 일부 예들에서, 라우팅 디바이스들 (204) 은 프록시 또는 캐시 동작들을 수행하도록 구성될 수도 있다. 따라서, 일부 예들에서, 라우팅 디바이스들 (204) 은 프록시 디바이스들로서 지칭될 수도 있다. 일반적으로, 라우팅 디바이스들 (204) 은 네트워크 (200) 를 통해 라우트들을 발견하기 위해 라우팅 프로토콜들을 실행한다. 그러한 라우팅 프로토콜들을 실행함으로써, 라우팅 디바이스 (204B) 는 그 자신으로부터 라우팅 디바이스 (204A) 를 통해 서버 디바이스 (202) 로 네트워크 라우트를 발견할 수도 있다.
본 개시의 기법들은 라우팅 디바이스들 (204) 및 트랜스코딩 디바이스 (206) 와 같은 네트워크 디바이스들에 의해 구현될 수도 있지만, 또한 클라이언트 디바이스 (208) 에 의해 구현될 수도 있다. 이러한 방식으로, 라우팅 디바이스들 (204), 트랜스코딩 디바이스 (206), 및 클라이언트 디바이스 (208) 는 본 개시의 기법들을 수행하도록 구성된 디바이스들의 예들을 나타낸다. 게다가, 도 1 의 디바이스들 및 도 2 에 도시된 비디오 인코더 (20) 및 도 3 에 도시된 비디오 디코더 (30) 는 또한 본 개시의 기법들 중 하나 이상을 수행하도록 구성된 디바이스들의 예들을 나타낸다.
도 5 는 본 개시의 하나 이상의 기법들에 따라 파일 (300) 의 예시의 구조를 도시하는 개념도이다. 도 5 의 예에서, 파일 (300) 은 영화 박스 (302) 및 복수의 미디어 데이터 박스들 (304) 를 포함한다. 동일한 파일인 것으로 도 5 의 예에서 도시되지만, 다른 예들에서, 영화 박스 (302) 및 미디어 데이터 박스들 (304) 은 별개의 파일들에 있을 수도 있다. 상술된 바와 같이, 박스는 고유한 타입 식별자 및 길이에 의해 정의된 객체 지향 번들링 블록일 수도 있다. 예를 들어, 박스는 4 문자 코딩된 박스 타입, 박스의 바이트 카운트, 및 페이로드를 포함하여, ISOBMFF 에서의 기본 신택스 구조일 수도 있다.
영화 박스 (302) 는 파일 (300) 의 트랙들에 대한 메타데이터를 포함할 수도 있다. 파일 (300) 의 각 트랙은 미디어 데이터의 연속 스트림을 포함할 수도 있다. 미디어 데이터 박스들 (304) 각각은 하나 이상의 샘플들 (305) 을 포함할 수도 있다. 샘플들 (305) 각각은 오디오 또는 비디오 액세스 유닛을 포함할 수도 있다. 각각의 액세스 유닛은 멀티뷰 코딩 (예를 들어, MV-HEVC 및 2D-HEVC) 및 스케일러블 비디오 코딩 (예를 들어, SHVC) 에서 다수의 코딩된 픽쳐들을 포함할 수도 있다. 예를 들어, 액세스 유닛은 각 계층에 대한 하나 이상의 코딩된 픽쳐들을 포함할 수도 있다.
더욱이, 도 5 의 예에서, 영화 박스 (302) 는 트랙 박스 (306) 를 포함한다. 트랙 박스 (306) 는 파일 (300) 의 트랙에 대한 메타데이터를 인클로징할 수도 있다. 다른 예에서, 영화 박스 (302) 는 파일 (300) 의 상이한 트랙들에 대한 다수의 트랙 박스들을 포함할 수도 있다. 트랙 박스 (306) 는 트랙 참조 박스 (308) 및 미디어 박스 (310) 를 포함한다. 트랙 참조 박스 (308) 는 트랙 참조 타입 박스 (309) 를 포함할 수도 있다. 트랙 참조 타입 박스 (309) 는 타입 (예를 들어, 'tbas') 및 다른 트랙을 식별하는 트랙 식별자와 연관될 수도 있다. 본 개시의 제 6 기법에 따르면, 타일 트랙들의 트랙 참조 박스들은 타입 식별자 'tbas' 와 연관된 트랙 참조 타입 박스들을 포함할 수도 있거나 포함하지 않을 수도 있다.
미디어 박스 (310) 는 트랙 내의 미디어 데이터에 대한 정보를 선언하는 모든 오브젝트들을 포함할 수도 있다. 미디어 박스 (310) 는 미디어 정보 박스 (312) 를 포함한다. 미디어 정보 박스 (312) 는 트랙의 미디어의 특성 정보를 선언하는 모든 오브젝트들을 포함할 수도 있다. 미디어 정보 박스 (312) 는 샘플 테이블 박스 (314) 를 포함한다. 샘플 테이블 박스 (314) 는 샘플 특정 메타데이터를 특정할 수도 있다.
도 5 의 예에서, 샘플 테이블 박스 (314) 는 SampleDesription 박스 (316) 를 포함하고, SampleDesription 박스 (316) 는 Sample Entry (318) 를 포함한다. 다른 예들에서, 샘플 테이블 박스 (314) 는 SampleDesription 박스 (316) 및 Sample Entry (318) 에 더하여 다른 박스들을 포함할 수도 있다. 도 5 에 도시되지는 않지만, Sample Entry (318) 는 디코더 구성 리코드를 포함할 수도 있다. 위에서 더 상세히 기술된 바와 같이, 본 개시는 Sample Entry (318) 와 같은 샘플 엔트리에 새로운 타입들의 중요 정보를 포함시키기 위한 기법들을 기술한다.
도 6 은 예시의 멀티미디어 콘텐츠 (420) 의 엘리먼트들을 도시하는 개념도이다. 도 6 의 예에서, 멀티미디어 콘텐츠 (420) 는 MPD (422) 및 복수의 표현들 (424A-424N) (표현들 (424)) 을 포함한다. 표현 (424A) 은 선택적 헤더 데이터 (426) 및 세그먼트들 (428A-428N) (세그먼트들 (428)) 을 포함하는 반면, 표현 (424N) 은 선택적 헤더 데이터 (430) 및 세그먼트들 (432A-432N) (세그먼트들 (432)) 을 포함한다. 글자 N 은 편리함으로 문제로서 표현들 (424) 각각에서 마지막 영화 프래그먼트를 지정하는데 사용된다. 일부 예들에서, 표현들 (424) 사이에 상이한 수들의 영화 프래그먼트들이 존재할 수도 있다.
MPD (422) 는 표현들 (424) 로부터 분리된 데이터 구조를 포함할 수도 있다. MPD (422) 는 도 4 의 메니페스트 파일 (66) 에 대응할 수도 있다. 일반적으로, MPD (422) 는 코딩 및 렌더링 특성들과 같은 표현들 (424) 의 특성들, 적응 세트들, MPD (422) 가 대응하는 프로파일, 텍스트 타입 정보, 카메라 각도 정보, 레이팅 정보, 트릭 모드 정보 (예를 들어, 시간적 서브 시퀀스들을 포함하는 표현들을 나타내는 정보), 및/또는 (예를 들어, 재생 동안 미디어 콘텐츠로의 타겟팅된 광고 삽입에 대한) 원격 주기들을 취출하기 위한 정보를 일반적으로 기술하는 데이터를 포함할 수도 있다.
헤더 데이터 (426) 는, 존재하는 경우, 세그먼트들 (428) 의 특성들, 예를 들어 랜덤 액세스 포인트들 (RAPs, 스트림 액세스 포인트들 (SAPs) 로서도 지칭됨) 의 시간적 위치들, 세그먼트들 (428) 중 어느 것이 랜덤 액세스 포인트들을 포함하는지, 세그먼트들 (428) 내의 랜덤 액세스 포인트들에 대한 바이트 오프셋들, 세그먼트들 (428) 의 유니폼 리소스 로케이터들 (URLs), 또는 세그먼트들 (428) 의 다른 양태들을 기술할 수도 있다. 헤더 데이터 (430) 는, 존재하는 경우, 세그먼트들 (432) 에 대한 유사한 특성들을 기술할 수도 있다. 추가적으로 또는 대안적으로, 그러한 특성들은 MPD (422) 내에 완전히 포함될 수도 있다.
세그먼트들 (428, 432) 은 하나 이상의 코딩된 비디오 샘플들을 포함하고, 이들 각각은 비디오 데이터의 프레임들 또는 슬라이스들을 포함할 수도 있다. 세그먼트들 (428) 의 코딩된 비디오 샘플들 각각은 유사한 특성들, 예를 들어, 높이, 너비, 및 대역폭 요건들을 가질 수도 있다. 그러한 특성들은 MPD (422) 의 데이터에 의해 기술될 수도 있지만, 그러한 데이터는 도 6 의 예에 도시되지 않는다. MPD (422) 는 본 개시에서 기술된 임의의 또는 모든 시그널링된 정보를 추가하여, 3GPP 사양에 의해 기술된 특성들을 포함할 수도 있다.
세그먼트들 (428, 432) 각각은 고유한 유니폼 리소스 로케이터 (URL) 와 연관될 수도 있다. 따라서, 세그먼트들 (428, 432) 각각은 DASH 와 같은 스트리밍 네트워크 프로토콜을 사용하여 독립적으로 취출가능할 수도 있다. 이러한 방식으로, 클라이언트 디바이스 (40) 와 같은 목적지 디바이스는 세그먼트들 (428 또는 432) 을 취출하기 위해 HTTP GET 요청을 사용할 수도 있다. 일부 예들에서, 클라이언트 디바이스 (40) 는 세그먼트들 (428 또는 432) 의 특정의 바이트 범위들을 취출하기 위해 HTTP 부분적 GET 요청들을 사용할 수도 있다.
도 7 은 예시의 비디오 파일 (450) 의 엘리먼트들을 도시하는 블록도이다. 비디오 파일 (450) 은 세그먼트를 캡슐화하는 것으로 언급될 수도 있다. 상술된 바와 같이, ISO 기본 미디어 파일 포맷 및 그것의 확장들에 따른 비디오 파일들은 “박스들” 로서 지칭되는 일련의 오브젝트들에 데이터를 저장한다. 도 7 의 예에서, 비디오 파일 (450) 은 파일 타입 (FTYP) 박스 (452), 영화 (MOOV) 박스 (454), 세그먼트 인덱스 (sidx) 박스들 (462), 영화 프래그먼트 (MOOF) 박스들 (464), 및 영화 프래그먼트 랜덤 액세스 (MFRA) 박스 (466) 를 포함한다. 도 7 은 비디오 파일의 예를 나타내지만, 다른 미디어 파일들이 ISO 기본 미디어 파일 포맷 및 그것의 확장들에 따른 비디오 파일 (450) 의 데이터에 대해 유사하게 구조화되는 다른 타입들의 미디어 데이터 (예를 들어, 오디오 데이터, 타이밍된 텍스트 데이터 등) 를 포함할 수도 있다.
FTYP 박스 (452) 는 일반적으로 비디오 파일 (450) 에 대한 파일 타입을 기술한다. 파일 타입 박스 (452) 는 비디오 파일 (450) 에 대한 최선의 사용을 기술하는 사양을 식별하는 데이터를 포함할 수도 있다. 파일 타입 박스 (452) 는 대안적으로 MOOV 박스 (454), 영화 프래그먼트 박스들 (464), 및/또는 MFRA 박스 (466) 앞에 배치될 수도 있다.
일부 예들에서, 비디오 파일 (450) 과 같은 세그먼트는 FTYP 박스 (452) 앞에 MPD 업데이트 박스 (미도시) 를 포함할 수도 있다. MPD 업데이트 박스는 MPD 를 업데이트하기 위한 정보와 함께, 비디오 파일 (450) 을 포함하는 표현에 대응하는 MPD 가 업데이트되어야 한다고 표시하는 정보를 포함할 수도 있다. 예를 들어, MPD 업데이트 박스는 MPD 를 업데이트하는데 사용될 리소스를 위한 URI 또는 URL 을 제공할 수도 있다. 다른 예로서, MPD 업데이트 박스는 MPD 를 업데이트하기 위한 데이터를 포함할 수도 있다. 일부 예들에서, MPD 업데이트 박스는 비디오 파일 (450) 의 세그먼트 타입 (STYP) 박스 (미도시) 에 바로 후속할 수도 있으며, 여기서 STYP 박스는 비디오 파일 (450) 에 대한 세그먼트 타입을 정의할 수도 있다.
도 7 의 예에서, MOOV 박스 (454) 는 영화 헤더 (MVHD) 박스 (456), 트랙 (TRAK) 박스 (458), 및 하나 이상의 영화 확장들 (MVEX) 박스들 (460) 을 포함한다. 일반적으로, MVHD 박스 (456) 는 비디오 파일 (450) 의 일반적 특성들을 기술할 수도 있다. 예를 들어, MVHD 박스 (456) 는 비디오 파일 (450) 이 원래 생성되었던 때, 비디오 파일 (450) 이 마지막으로 변경된 때, 비디오 파일 (450) 에 대한 타임스케일, 비디오 파일 (450) 에 대한 재생의 지속기간, 또는 일반적으로 비디오 파일 (450) 을 기술하는 다른 데이터를 기술하는 데이터를 포함할 수도 있다.
TRAK 박스 (458) 는 비디오 파일 (450) 의 트랙에 대한 데이터를 포함할 수도 있다. TRAK 박스 (458) 는 TRAK 박스 (458) 에 대응하는 트랙의 특성을 기술하는 트랙 헤더 (TKHD) 박스를 포함할 수도 있다. 일부 예들에서, TRAK 박스 (458) 는 코딩된 비디오 픽쳐들을 포함할 수도 있는 반면, 다른 예들에서는, 트랙의 코딩된 비디오 픽쳐들은 TRAK 박스 (458) 및/또는 sidx 박스들 (462) 의 데이터에 의해 참조될 수도 있는 영화 프래그먼트들 (464) 에 포함될 수도 있다.
일부 예들에서, 비디오 파일 (450) 은 2 이상의 트랙을 포함할 수도 있다. 이에 따라, MOOV 박스 (454) 는 비디오 파일 (450) 에서의 트랙들의 수와 동일한 TRAK 박스들의 수를 포함할 수도 있다. TRAK 박스 (458) 는 비디오 파일 (450) 의 대응하는 트랙의 특성들을 기술할 수도 있다. 예를 들어, TRAK 박스 (458) 는 대응하는 트랙에 대한 시간 및/또는 공간 정보를 기술할 수도 있다. MOOV 박스 (454) 의 TRAK 박스 (458) 와 유사한 TRAK 박스는 파라미터 세트 트랙이 비디오 파일 (450) 과 같은 비디오 파일에 포함될 때 파라미터 세트 트랙의 특성들을 기술할 수도 있다. 시퀀스 레벨 SEI 메시지들의 존재는 파라미터 세트 트랙을 기술하는 TRAK 박스 내의 파라미터 세트 트랙에서 시그널링될 수도 있다.
MVEX 박스들 (460) 은 예를 들어 존재하는 경우 MOOV 박스 (454) 내에 포함된 비디오 데이터에 더하여, 비디오 파일 (450) 이 영화 프래그먼트들 (464) 을 포함한다는 것을 시그널링하기 위해 대응하는 영화 프래그먼트들 (464) 의 특성들을 기술할 수도 있다. 스트리밍 비디오 데이터의 콘텍스트에서, 코딩된 비디오 픽쳐들은 MOOV 박스 (454) 에라기 보다는 영화 프래그먼트들 (464) 에 포함될 수도 있다. 이에 따라, 모든 코딩된 비디오 샘플들은 MOOV 박스 (454) 에라기 보다는 영화 프래그먼트들 (464) 에 포함될 수도 있다.
MOOV 박스 (454) 는 비디오 파일 (450) 내의 영화 프래그먼트들 (464) 의 수와 동일한 MVEX 박스들 (460) 의 수를 포함할 수도 있다. MVEX 박스들 (460) 각각은 영화 프래그먼트들 (464) 중 대응하는 것의 특성들을 기술할 수도 있다. 예를 들어, 각각의 MVEX 박스는 영화 프래그먼트들 (464) 중 대응하는 것에 대한 시간 지속기간을 기술하는 영화 확장 헤더 박스 (MEHD) 박스를 포함할 수도 있다.
시퀀스 데이터 세트는 실제의 코딩된 비디오 데이터를 포함하지 않는 비디오 샘플에 저장될 수도 있다. 비디오 샘플은 일반적으로 특정의 시간 인스턴스에서의 코딩된 픽쳐의 표현인 액세스 유닛에 대응할 수도 있다. AVC 의 콘텍스트에서, 코딩된 픽쳐는 액세스 유닛의 모든 픽셀들을 구성하는 정보를 포함하는 하나 이상의 VCL NAL 유닛들 및 SEI 메시지들과 같은 다른 연관된 비 VCL NAL 유닛들을 포함한다. 이에 따라, 시퀀스 레벨 SEI 메시지들을 포함할 수도 있는 시퀀스 데이터 세트는 영화 프래그먼트들 (464) 중 하나에 포함될 수도 있다. 시퀀스 데이터 세트 및/또는 시퀀스 레벨 SEI 메시지들의 존재는 영화 프래그먼트들 (464) 중 하나에 대응하는 MVEX 박스들 (460) 중 하나 내의 영화 프래그먼트들 (464) 중 하나에 존재하는 것으로서 시그널링될 수도 있다.
SIDX 박스들 (462) 은 비디오 파일 (450) 의 선택적 엘리먼트들이다. 즉, 3GPP 파일 포맷, 또는 다른 그러한 파일 포맷들을 따르는 비디오 파일들은 반드시 SIDX 박스들 (462) 을 포함하지는 않는다. 3GPP 파일 포맷의 예에 따르면, SIDX 박스는 세그먼트 (예를 들어, 비디오 파일 (450) 내에 포함된 세그먼트) 의 서브 세그먼트를 식별하는데 사용될 수도 있다. 3GPP 파일 포맷은 서브 세그먼트를 “대응하는 미디어 데이터 박스(들) 을 갖는 하나 이상의 연속적인 영화 프래그먼트 박스들의 자립식 세트로서 정의하고 영화 프래그먼트 박스에 의해 참조되는 데이터를 포함하는 미디어 데이터 박스는 영화 프래그먼트 박스에 후속하고 동일한 트랙에 대한 정보를 포함하는 다음 영화 프래그먼트 박스에 선행해야 한다”. 3GPP 파일 포맷은 또한 SIDX 박스가 “박스에 의해 문서화된 (서브) 세그먼트의 서브세그먼트들에 대한 참조들의 시퀀스를 포함한다고 표시한다. 참조된 서브세그먼트들은 제시 시간에 있어서 인접한다. 유사하게, 세그먼트 인덱스 박스에 의해 참조되는 바이트들은 항상 세그먼트 내에서 인접한다. 참조된 사이즈는 참조된 자료 내의 바이트들의 수의 카운트를 제공한다.
SIDX 박스들 (462) 은 일반적으로 비디오 파일 (450) 에 포함된 세그먼트의 하나 이상의 서브 세그먼트들을 나타내는 정보를 제공한다. 예를 들어, 그러한 정보는 서브 세그먼트들이 시작하고 및/또는 종료하는 재생 시간들, 서브 세그먼트들에 대한 바이트 오프셋들, 서브 세그먼트들이 스트림 액세스 포인트 (SAP) 를 포함하는지 (SAP 으로 시작하는지) 여부, SAP 에 대한 타입 (예를 들어, SAP 이 순간적인 디코더 리프레시 (IDR) 픽쳐, 클린 랜덤 액세스 (CRA) 픽쳐, 브로큰 링크 액세스 (BLA) 픽쳐, 등인지 여부), 서브 세그먼트에서의 (재생 시간 및/또는 바이트 오프셋의 면에서) SAP 의 위치 등을 포함할 수도 있다.
영화 프래그먼트들 (464) 은 하나 이상의 코딩된 비디오 픽쳐들을 포함할 수도 있다. 일부 예들에서, 영화 프래그먼트들 (464) 은 하나 이상의 픽쳐들의 그룹들 (GOPs) 을 포함할 수도 있으며, 이들 각각은 다수의 코딩된 비디오 픽쳐들, 예를 들어, 프레임들 또는 픽쳐들을 포함할 수도 있다. 또, 상술된 바와 같이, 영화 프래그먼트들 (464) 은 일부 예들에서 시퀀스 데이터 세트들을 포함할 수도 있다. 영화 프래그먼트들 (464) 각각은 영화 프래그먼트 헤더 박스 (MFHD, 도 7 에 미도시) 를 포함할 수도 있다. MFHD 박스는 영화 프래그먼트에 대한 시퀀스 번호와 같은 대응하는 영화 프래그먼트의 특성들을 기술할 수도 있다. 영화 프래그먼트들 (464) 은 비디오 파일 (450) 에 시퀀스 번호의 순서로 포함될 수도 있다.
MFRA 박스 (466) 는 비디오 파일 (450) 의 영화 프래그먼트들 (464) 내의 랜덤 액세스 포인트들을 기술할 수도 있다. 이것은 비디오 파일 (450) 에 의해 캡슐화된 세그먼트 내의 특정의 시간 위치들 (즉, 재생 시간들) 에 대한 찾기를 수행하는 것과 같은 트릭 모드들을 수행하는 것을 도울 수도 있다. MFRA 박스 (466) 는 일반적으로 선택적이고 일부 예들에서 비디오 파일들에 포함될 필요가 없다. 마찬가지로, 클라이언트 디바이스 (40) 와 같은 클라이언트 디바이스는 비디오 파일 (450) 의 비디오 데이터를 올바르게 디코딩하고 디스플레이하기 위해 반드시 MFRA 박스 (466) 를 참조할 필요는 없다. MFRA 박스 (466) 는 비디오 파일 (450) 의 트랙들의 수와 동일한, 또는 일부 예들에서는 비디오 파일 (450) 의 미디어 트랙들 (예를 들어, 비힌트 트랙들) 의 수와 동일한 트랙 프래그먼트 랜덤 액세스 (TFRA) 박스들 (미도시) 의 수를 포함할 수도 있다.
일부 예들에서, 영화 프래그먼트들 (464) 은 IDR 픽쳐들과 같은 하나 이상의 스트림 액세스 포인트들 (SAPs) 을 포함할 수도 있다. 마찬가지로, MFRA 박스 (466) 는 SAP 들의 비디오 파일 (450) 내의 위치들의 표시들을 제공할 수도 있다. 이에 따라, 비디오 파일 (450) 의 시간적 서브 시퀀스는 비디오 파일 (450) 의 SAP 들로부터 형성될 수도 이다. 시간적 서브 시퀀스는 또한 SAP 들로부터 의존하는 P-프레임들 및/또는 B-프레임들과 같은 다른 픽쳐들을 포함할 수도 있다. 시간적 서브 시퀀스의 프레임들 및/또는 슬라이스들은 서브 시퀀스의 다른 프레임들/슬라이스들에 의존하는 시간적 서브 시퀀스의 프레임들/슬라이스들이 적절하게 디코딩될 수 있도록 세그먼트들 내에서 배열될 수도 있다. 예를 들어, 데이터의 계층적 배열에서, 다른 데이터에 대한 예측에 사용되는 데이터는 또한 시간적 서브 시퀀스에 포함될 수도 있다.
비디오 파일 (450) 은 또한 이러한 예에서 샘플 설명 박스 (468) 를 포함한다. 특히, 샘플 설명 박스 (468) 는 이러한 예에서 TRAK 박스 (458) 내에 포함된다. 도 7 의 예에서, 샘플 설명 박스 (468) 는 코덱에 따라 인코딩되는 비디오 데이터를 포함하지 않는다.
예시의 샘플 설명 박스 (468) 는 다음과 같이 정의될 수도 있다:
샘플 엔트리 및 박스 타입들: 'hvc2', 'hev2', 'lhv1', 'lhe1', 'lhvC'
* 컨테이너: 샘플 설명 박스 ('stsd')
* 필수: 'hvc1', 'hev1', 'hvc2', 'hev2', 'lhv1', 또는 'lhe1' 샘플 엔트리는 필수적이다.
* 양: 하나 이상의 샘플 엔트리들이 존재할 수도 있다
샘플 설명 박스 (468) 에 대한 이러한 예시의 정의에서, 샘플 엔트리 네임이 'lhv1' 인 경우, array_completeness 의 디폴트 및 필수 값은 파라미터 세트들의 모든 타입들의 어레이들에 대해 4 이고, 모든 다른 어레이들에 대해 0 이다. 샘플 엔트리 네임이 'lhe1' 인 경우, array_completeness 의 디폴트 값은 모든 어레이들에 대해 0 이다.
도 8 은 본 개시의 기법에 따라 파일을 프로세싱하기 위한 디바이스의 예시의 동작을 도시하는 플로우챠트이다. 본 개시의 플로우챠트는 예로서 제공된다. 다른 예들에서, 상이한 액션들이 수행될 수도 있거나 액션들이 상이한 순서들 또는 병렬로 수행될 수도 있다. 도 8 의 예는 소스 디바이스 (12) (도 1), 파일 생성 디바이스 (34) (도 1), 파일 프로세싱 유닛 (128) (도 2), 파일 서버 (예를 들어, 도 4 의 서버 디바이스 (202)), 스트리밍 디바이스, MANE, 또는 다른 타입의 디바이스 또는 유닛과 같은 여러 타입들의 디바이스들에 의해 수행될 수도 있다.
도 8 의 예에서, 디바이스는 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리되고 파일 포맷을 따르는 파일 내에 있는 박스 내에 데이터를 생성한다 (500). 박스는 데이터를 포함하는 신택스 구조를 포함하고, 파일은 미디어 컨텐츠와 연관된다. 데이터는 클라이언트가 파일과 연관된 미디어 컨텐츠를 수락하거나 거절하는지 여부를 결정함에 있어서 사용을 위한 것이다. 디바이스는 박스에의 포함을 위해 SEI 메시지들의 타입들의 리스트를 생성하고, 신택스 구조는 그 리스트를 포함할 수도 있다. 일부 예들에서, 박스는 샘플 엔트리 구조일 수도 있다. 일부 예들에서, 박스는 파일의 디코더 구성 박스들 후에 파일에 포함될 수도 있다. 다른 예들에서, 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는 MPD 박스를 포함할 수도 있다. 일부 예들에서, 데이터는 MPD 박스에 포함된 코덱 파라미터에 포함된다. 디바이스는 파일을 출력한다 (502). 디바이스는 예를 들어 컴퓨터 판독가능 매체상에 파일을 저장함으로써 또는 다른 디바이스로 파일을 송신함으로써 파일을 출력할 수도 있다.
도 9 는 본 개시의 기법에 따라 파일을 프로세싱하기 위한 디바이스의 예시의 동작을 도시하는 플로우챠트이다. 도 9 의 예는 목적지 디바이스 (14), 파일 프로세싱 유닛 (149), 클라이언트 디바이스 (208), 파일 서버, 스트리밍 디바이스, MANE, 또는 다른 타입의 디바이스와 같은 여러 타입들의 디바이스들에 의해 수행될 수도 있다.
도 9 의 예에서, 디바이스는 인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리되고 비디오 코덱에 대한 파일 포맷을 따르는 파일 내에 있는 박스로부터 데이터를 획득한다 (510). 박스는 데이터를 포함하는 신택스 구조를 포함하고, 파일은 미디어 콘텐츠와 연관된다. 미디어 콘텐츠는 비디오 코덱에 따라 코딩된다. 디바이스는 예를 들어 박스로부터 SEI 메시지들의 타입들의 리스트를 획득하고, 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 미디어 콘텐츠에 기초하여, 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 미디어 콘텐츠를 렌더링할 수 있다고 결정할 수도 있다. 일부 예들에서, 박스는 샘플 엔트리 구조에 있다. 일부 예들에서, 박스는 데이터를 포함하는 디코더 구성 리코드 구조를 포함한다. 일부 예들에서, 박스는 파일의 디코더 구성 박스들 후에 파일에 포함된다. 다른 예들에서, 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는 MPD 박스를 포함한다. 일부 예들에서, 데이터는 MPD 박스에 포함되는 코덱 파라미터에 포함된다.
디바이스는 박스로부터 획득된 데이터에 기초하여, 파일과 연관된 미디어 콘텐츠를 수락할지 또는 거절할지 여부를 결정한다 (512). 파일과 연관된 미디어 콘텐츠를 수락하는 결정에 기초하여, 디바이스는 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청할 수도 있다. 예를 들어, 렌더러가 미디어 콘텐트가 하나 이상의 품질 기준을 충족시키거나 초과하도록 미디어 콘텐트를 렌더링 할 수 있다는 결정에 기초하여, 디바이스는 스트리밍 서버로부터 파일과 연관된 미디어 콘텐츠를 요청하고 및/또는 파일과 연관된 미디어 콘텐츠를 디코딩할 수도 있다. 미디어 콘텐츠는, 예를 들어, 하이 다이나믹 레인지 비디오 콘텐츠, 와이드 색 영역 비디오 콘텐츠, VR 비디오 콘텐츠 또는 360도 비디오 콘텐츠 중 하나 이상을 포함할 수도 있다. 요청된 미디어 콘텐츠를 수신한 후, 디바이스는 예를 들어 미디어 콘텐츠를 디코딩하고 디스플레이하기 위해 콘텐츠를 출력할 수 있거나, 또는 미디어 콘텐츠를 디코딩하고 디스플레이하기 위해 미디어 콘텐츠를 출력하는 다른 디바이스로 미디어 콘텐트를 전송할 수있다.
본 개시의 특정 양태들이 예시의 목적을 위해 HEVC 표준의 확장들에 관하여 설명되었다. 하지만, 본 개시에 설명된 기법들은, 아직 개발되지 않은 다른 표준 또는 사유 (proprietary) 비디오 코딩 프로세스들을 포함한, 다른 비디오 코딩 프로세스들에 유용할 수도 있다.
본 개시에서 설명된 바와 같은 비디오 코더는 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 유사하게, 비디오 코딩 유닛은 비디오 인코더 또는 비디오 디코더를 지칭할 수도 있다. 마찬가지로, 비디오 코딩은, 적용가능한 바에 따라, 비디오 인코딩 또는 비디오 디코딩을 지칭할 수도 있다. 이 개시물에서, 문구 "~ 에 기초하여" 는 오직 ~ 기초하여, 적어도 부분적으로 기초하여, 또는 어떤 방식으로 기초하여를 나타낼 수도 있다. 본 개시는 하나 이상의 샘플 블록들 및 하나 이상의 샘플 블록들의 샘플들을 코딩하는데 이용된 신택스 구조들을 지칭하기 위하여 용어 "비디오 유닛", "비디오 블록" 또는 "블록" 을 이용할 수도 있다. 비디오 유닛의 예시적인 타입은 CTU, CU, PU, TU, 매크로블록, 매크로블록 파티션 등을 포함할 수도 있다. 일부 맥락에서는, PU에 대한 논의가 매크로블록 또는 매크로블록 파티션에 대한 논의와 상호 교환될 수도 있다. 비디오 블록들의 예시적인 타입들은 코딩 트리 블록들, 코딩 블록들, 및 다른 타입들의 비디오 데이터의 블록들을 포함할 수도 있다.
본 개시의 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트, 케이블 텔레비전 송신, 위성 텔레비전 송신, DASH (dynamic adaptive streaming over HTTP) 와 같은 인터넷 스트리밍 비디오 송신, 데이터 저장 매체 상에 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션 등의 다양한 멀티미디어 애플리케이션들 중 어느 것을 지원하는 비디오 코딩에 적용될 수도 있다.
예에 의존하여, 본 명세서에서 설명된 기법들의 임의의 특정 행위들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가되거나 병합되거나 또는 제거될 수도 있음 (예를 들어, 설명된 모든 행위들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 특정 예들에 있어서, 행위들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중의 프로세서들을 통해 동시에 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다.  소프트웨어로 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 이를 통해 송신되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들면, 통신 프로토콜에 따라, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방식으로, 컴퓨터 판독가능 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다.  데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세싱 회로들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다.  컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.  또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 소프트웨어가 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 커넥션들, 캐리어파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않지만 대신 비일시적인 유형의 저장 매체들로 지향됨을 이해해야 한다. 본원에서 이용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크(disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
본 개시에서 설명된 기능은 고정 기능 및/또는 프로그램 가능한 처리 회로에 의해 수행 될 수있다. 예를 들어, 명령들은 고정 기능 및/또는 프로그램 가능한 처리 회로에 의해 실행될 수도 있다. 그러한 프로세싱 회로는 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 집적된 또는 별도의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서" 는 본 명세서에서 설명된 기법들의 구현에 적합한 전술한 구조 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 추가로, 일부 양태들에서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나, 또는 결합된 코덱에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다. 프로세싱 회로는 다양한 방식으로 다른 구성 요소에 결합 될 수있다. 예를 들어, 프로세싱 회로는 내부 장치 상호 접속, 유선 또는 무선 네트워크 접속, 또는 다른 통신 매체를 통해 다른 구성 요소에 결합 될 수있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에서 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호동작가능한 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (29)

  1. 미디어 콘텐츠를 프로세싱하기 위한 방법으로서,
    인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하는 단계로서, 상기 박스는 비디오 코덱에 대한 파일 포맷을 따르는 파일 내에 있고, 상기 박스는 상기 데이터를 포함하는 신택스 구조를 포함하며, 상기 파일은 상기 미디어 콘텐츠와 연관되고 상기 미디어 콘텐츠는 상기 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하는 단계; 및
    상기 박스로부터 획득된 상기 데이터에 기초하여, 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는 단계를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 박스로부터, 보충 강화 정보 (SEI) 메시지들의 타입들의 리스트를 획득하는 단계로서, 상기 신택스 구조는 상기 리스트를 포함하는, 상기 리스트를 획득하는 단계를 더 포함하고,
    상기 박스로부터 획득된 상기 데이터에 기초하여, 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는 단계는, 상기 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 상기 미디어 콘텐츠에 기초하여, 상기 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 상기 미디어 콘텐츠를 렌더링할 수 있다고 결정하는 단계를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 상기 렌더러가 상기 미디어 콘텐츠를 렌더링할 수 있다는 상기 결정에 기초하여,
    스트리밍 서버로부터 상기 파일과 연관된 상기 미디어 콘텐츠를 요청하는 것; 또는
    상기 파일과 연관된 상기 미디어 콘텐츠를 디코딩하는 것
    중 적어도 하나를 수행하는 단계를 더 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 박스는 샘플 엔트리 구조에 있는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 박스는 상기 데이터를 포함하는 디코더 구성 리코드 구조인, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 박스는 미디어 제시 설명 (MPD) 박스를 포함하고,
    상기 MPD 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  7. 제 6 항에 있어서,
    상기 데이터는 상기 MPD 박스 내에 포함된 코덱 파라미터에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  8. 제 6 항에 있어서,
    상기 파일과 연관된 상기 미디어 콘텐츠를 수락하는 결정에 기초하여, 상기 스트리밍 서버로부터 상기 파일과 연관된 상기 미디어 콘텐츠를 요청하는 단계를 더 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  9. 미디어 콘텐츠를 프로세싱하기 위한 방법으로서,
    인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하는 단계로서, 상기 박스는 파일 포맷을 따르는 파일 내에 있고, 상기 박스는 상기 데이터를 포함하는 신택스 구조를 포함하며, 상기 파일은 상기 미디어 콘텐츠와 연관되고, 상기 데이터는 클라이언트가 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하는 단계; 및
    상기 파일을 출력하는 단계를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  10. 제 9 항에 있어서,
    상기 박스에의 포함을 위해, 보충 강화 정보 (SEI) 메시지들의 타입들의 리스트를 생성하는 단계로서, 상기 신택스 구조는 상기 리스트를 포함하는, 상기 리스트를 생성하는 단계를 더 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  11. 제 9 항에 있어서,
    상기 박스는 샘플 엔트리 구조에 있는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  12. 제 9 항에 있어서,
    상기 박스는 상기 파일의 디코더 구성 박스들 후에 상기 파일에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  13. 제 9 항에 있어서,
    상기 박스는 미디어 제시 설명 (MPD) 박스를 포함하고,
    상기 MPD 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  14. 제 13 항에 있어서,
    상기 데이터는 상기 MPD 박스 내에 포함된 코덱 파라미터에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 방법.
  15. 미디어 콘텐츠를 프로세싱하기 위한 장치로서,
    상기 미디어 콘텐츠를 저장하도록 구성된 하나 이상의 저장 매체들; 및
    상기 하나 이상의 저장 매체들에 커플링된 하나 이상의 프로세싱 회로들을 포함하고,
    상기 하나 이상의 프로세싱 회로들은,
    인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스로부터 데이터를 획득하는 것으로서, 상기 박스는 비디오 코덱에 대한 파일 포맷을 따르는 파일 내에 있고, 상기 박스는 상기 데이터를 포함하는 신택스 구조를 포함하며, 상기 파일은 상기 미디어 콘텐츠와 연관되고 상기 미디어 콘텐츠는 상기 비디오 코덱에 따라 코딩되는, 상기 박스로부터 데이터를 획득하고; 및
    상기 박스로부터 획득된 상기 데이터에 기초하여, 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하도록
    구성된, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  16. 제 15 항에 있어서,
    상기 하나 이상의 프로세싱 회로들은 또한,
    상기 박스로부터, 보충 강화 정보 (SEI) 메시지들의 타입들의 리스트를 획득하는 것으로서, 상기 신택스 구조는 상기 리스트를 포함하는, 상기 리스트를 획득하도록 구성되고,
    상기 박스로부터 획득된 상기 데이터에 기초하여, 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하기 위해, 상기 하나 이상의 프로세싱 회로들은 또한, 상기 리스트 내의 SEI 메시지 타입에 속하는 SEI 메시지를 포함하는 상기 미디어 콘텐츠에 기초하여, 상기 미디어 콘텐츠가 하나 이상의 품질 기준들을 충족시키거나 초과하도록 렌더러가 상기 미디어 콘텐츠를 렌더링할 수 있다고 결정하도록 구성되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  17. 제 16 항에 있어서,
    상기 하나 이상의 프로세싱 회로들은 또한,
    상기 미디어 콘텐츠가 상기 하나 이상의 품질 기준들을 충족시키거나 초과하도록 상기 렌더러가 상기 미디어 콘텐츠를 렌더링할 수 있다는 상기 결정에 기초하여,
    스트리밍 서버로부터 상기 파일과 연관된 상기 미디어 콘텐츠를 요청하는 것; 또는
    상기 파일과 연관된 상기 미디어 콘텐츠를 디코딩하는 것
    중 적어도 하나를 수행하도록 구성되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  18. 제 15 항에 있어서,
    상기 박스는 샘플 엔트리 구조에 있는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  19. 제 15 항에 있어서,
    상기 박스는 상기 데이터를 포함하는 디코더 구성 리코드 구조를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  20. 제 15 항에 있어서,
    상기 박스는 상기 파일의 디코더 구성 박스들 후에 상기 파일에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  21. 제 15 항에 있어서,
    상기 박스는 미디어 제시 설명 (MPD) 박스를 포함하고,
    상기 MPD 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  22. 제 21 항에 있어서,
    상기 데이터는 상기 MPD 박스 내에 포함된 코덱 파라미터에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  23. 제 21 항에 있어서,
    상기 하나 이상의 프로세싱 회로들은 또한,
    상기 파일과 연관된 상기 미디어 콘텐츠를 수락하는 결정에 기초하여, 상기 스트리밍 서버로부터 상기 파일과 연관된 상기 미디어 콘텐츠를 요청하도록 구성되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  24. 미디어 콘텐츠를 프로세싱하기 위한 장치로서,
    상기 미디어 콘텐츠를 저장하도록 구성된 하나 이상의 저장 매체들; 및
    상기 하나 이상의 저장 매체들에 커플링된 하나 이상의 프로세싱 회로들을 포함하고,
    상기 하나 이상의 프로세싱 회로들은,
    인코딩된 비디오 데이터의 비트스트림을 포함하는 박스들로부터 분리된 박스에 데이터를 생성하는 것으로서, 상기 박스는 파일 포맷을 따르는 파일 내에 있고, 상기 박스는 상기 데이터를 포함하는 신택스 구조를 포함하며, 상기 파일은 상기 미디어 콘텐츠와 연관되고, 상기 데이터는 클라이언트가 상기 파일과 연관된 상기 미디어 콘텐츠를 수락하거나 거절할지 여부를 결정하는데 사용하기 위한 것인, 상기 박스에 데이터를 생성하고; 및
    상기 파일을 출력하도록
    구성된, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  25. 제 24 항에 있어서,
    상기 하나 이상의 프로세싱 회로들은 또한,
    상기 박스에의 포함을 위해, 보충 강화 정보 (SEI) 메시지들의 타입들의 리스트를 생성하는 것으로서, 상기 신택스 구조는 상기 리스트를 포함하는, 상기 리스트를 생성하도록 구성되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  26. 제 24 항에 있어서,
    상기 박스는 샘플 엔트리 구조에 있는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  27. 제 24 항에 있어서,
    상기 박스는 상기 파일의 디코더 구성 박스들 후에 상기 파일에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  28. 제 24 항에 있어서,
    상기 박스는 미디어 제시 설명 (MPD) 박스를 포함하고,
    상기 MPD 박스는 스트리밍 서버상에서 이용가능한 미디어의 리스트를 포함하는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
  29. 제 28 항에 있어서,
    상기 데이터는 상기 MPD 박스 내에 포함된 코덱 파라미터에 포함되는, 미디어 콘텐츠를 프로세싱하기 위한 장치.
KR1020197019790A 2017-01-10 2018-01-10 파일 포맷에서의 중요한 비디오 정보의 시그널링 KR102420676B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762444725P 2017-01-10 2017-01-10
US62/444,725 2017-01-10
US201762445151P 2017-01-11 2017-01-11
US62/445,151 2017-01-11
US15/866,262 US10999605B2 (en) 2017-01-10 2018-01-09 Signaling of important video information in file formats
US15/866,262 2018-01-09
PCT/US2018/013113 WO2018132441A1 (en) 2017-01-10 2018-01-10 Signaling of important video information in file formats

Publications (2)

Publication Number Publication Date
KR20190103180A true KR20190103180A (ko) 2019-09-04
KR102420676B1 KR102420676B1 (ko) 2022-07-13

Family

ID=62783582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197019790A KR102420676B1 (ko) 2017-01-10 2018-01-10 파일 포맷에서의 중요한 비디오 정보의 시그널링

Country Status (7)

Country Link
US (1) US10999605B2 (ko)
EP (1) EP3568994A1 (ko)
KR (1) KR102420676B1 (ko)
CN (1) CN110178379B (ko)
AU (1) AU2018208576A1 (ko)
BR (1) BR112019014094A2 (ko)
WO (1) WO2018132441A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10924822B2 (en) 2017-04-04 2021-02-16 Qualcomm Incorporated Segment types as delimiters and addressable resource identifiers
EP3759920A1 (en) 2018-03-21 2021-01-06 Huawei Technologies Co., Ltd. Signaling a constraint flag in a video bitstream
WO2020009344A1 (ko) * 2018-07-06 2020-01-09 엘지전자 주식회사 360 비디오 데이터의 서브픽처 기반 처리 방법 및 그 장치
WO2020064733A1 (en) * 2018-09-25 2020-04-02 Telefonaktiebolaget Lm Ericsson (Publ) Media bistream having backwards compatibility
CN112805998A (zh) * 2018-10-01 2021-05-14 三星电子株式会社 传输视频内容的方法和设备以及接收视频内容的方法和设备
US11356706B2 (en) 2020-01-08 2022-06-07 Qualcomm Incorporated Storage and delivery of video data for video coding
EP4135320A1 (en) * 2020-04-11 2023-02-15 LG Electronics, Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method
GB2597642B (en) * 2020-06-16 2023-08-02 Canon Kk Method, device, and computer program for encapsulating media data into a media file
WO2023274877A1 (en) * 2021-06-29 2023-01-05 Canon Kabushiki Kaisha Method, device, and computer program for dynamically encapsulating media content data
WO2024063559A1 (ko) * 2022-09-23 2024-03-28 엘지전자 주식회사 프로파일을 정의하는 하이 레벨 신택스에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011049517A1 (en) * 2009-10-20 2011-04-28 Telefonaktiebolaget Lm Ericsson (Publ) Provision of supplemental processing information
EP2898698B1 (en) * 2012-09-24 2016-07-20 Qualcomm Incorporated Bitstream properties in video coding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1500002A1 (en) 2002-04-29 2005-01-26 Sony Electronics Inc. Supporting advanced coding formats in media files
CN103907347B (zh) 2011-08-31 2018-01-30 诺基亚技术有限公司 多视图视频编码和解码
US20140078249A1 (en) 2012-09-20 2014-03-20 Qualcomm Incorporated Indication of frame-packed stereoscopic 3d video data for video coding
US9479774B2 (en) 2012-09-24 2016-10-25 Qualcomm Incorporated Buffering period and recovery point supplemental enhancement information messages
US9521393B2 (en) * 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
US10609395B2 (en) * 2015-07-28 2020-03-31 Vid Scale, Inc. High dynamic range video coding architectures with multiple operating modes
US10652630B2 (en) 2016-05-24 2020-05-12 Qualcomm Incorporated Sample entries and random access
US10291923B2 (en) 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
US10652631B2 (en) 2016-05-24 2020-05-12 Qualcomm Incorporated Sample entries and random access

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011049517A1 (en) * 2009-10-20 2011-04-28 Telefonaktiebolaget Lm Ericsson (Publ) Provision of supplemental processing information
EP2898698B1 (en) * 2012-09-24 2016-07-20 Qualcomm Incorporated Bitstream properties in video coding

Also Published As

Publication number Publication date
WO2018132441A1 (en) 2018-07-19
EP3568994A1 (en) 2019-11-20
CN110178379A (zh) 2019-08-27
CN110178379B (zh) 2022-01-11
AU2018208576A1 (en) 2019-06-20
US20180199071A1 (en) 2018-07-12
US10999605B2 (en) 2021-05-04
BR112019014094A2 (pt) 2020-02-11
KR102420676B1 (ko) 2022-07-13

Similar Documents

Publication Publication Date Title
KR102420676B1 (ko) 파일 포맷에서의 중요한 비디오 정보의 시그널링
KR102614206B1 (ko) 비디오 코딩을 위한 서브-픽처 비트스트림들을 포함한 비디오 컨텐츠의 시그널링
JP6874169B2 (ja) コンテナファイルおよびビデオビットストリームにおける関心領域の発展型シグナリング
JP6932144B2 (ja) Hevcおよびl−hevcファイルフォーマットでのタイルグルーピングおよびサンプルのマッピング
US10389999B2 (en) Storage of virtual reality video in media files
EP3363203B1 (en) Signaling of parameter sets in files of multi-layer bitstreams
EP3363205B1 (en) Alignment of operation point sample group in multi-layer bitstreams file format
US10536721B2 (en) Restricted scheme design for video
US20170111642A1 (en) Support of random access and switching of layers and sub-layers in multi-layer video files
JP2017535176A (ja) 階層化されたhevcビットストリームの搬送のための動作点
JP2023517440A (ja) ビデオコーディングのためのビデオデータの記憶および配信
CN116601963A (zh) 生成/接收包括nal单元阵列信息的媒体文件的方法和装置及发送媒体文件的方法
CN116569557A (zh) 支持以样本为单位的随机访问的媒体文件生成/接收方法和设备及发送媒体文件的方法
CN116235502A (zh) 生成/接收包括输出层集合信息的媒体文件的方法和设备及发送媒体文件的方法
BR112016008953B1 (pt) Condução de dados de fluxo de bits com extensão- padrão de codificação de vídeo com o uso de sistemas de mpeg-2

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant