KR101949071B1 - 이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 - Google Patents

이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101949071B1
KR101949071B1 KR1020177025156A KR20177025156A KR101949071B1 KR 101949071 B1 KR101949071 B1 KR 101949071B1 KR 1020177025156 A KR1020177025156 A KR 1020177025156A KR 20177025156 A KR20177025156 A KR 20177025156A KR 101949071 B1 KR101949071 B1 KR 101949071B1
Authority
KR
South Korea
Prior art keywords
image
file
picture
derived
description
Prior art date
Application number
KR1020177025156A
Other languages
English (en)
Other versions
KR20170116089A (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 KR20170116089A publication Critical patent/KR20170116089A/ko
Application granted granted Critical
Publication of KR101949071B1 publication Critical patent/KR101949071B1/ko

Links

Images

Classifications

    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/063Content adaptation, e.g. replacement of unsuitable content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams

Abstract

제1 파일의 제1 서술을 수신하는 단계(제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지의 속성을 포함함)와, 파생 이미지를 획득할지를 파생 이미지의 속성에 기반하여 결정하는 단계와, 파생 이미지를 획득할 것을 결정하는 것에 응답하여, 파생 이미지를 포함하는 제1 파일을 획득하는 단계를 포함하는 방법.

Description

이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
본 발명은 이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램에 관련된다.
ISO 베이스 미디어 파일 포맷(ISO Base Media File Format: ISOBMFF)은 오디오(audio), 비디오(video) 및 텔레텍스트(teletext)와 같은 시간맞춤 미디어(timed media)의 저장 및 전송을 위한 포괄적인 구조를 명시한다. 최근에, 스틸 이미지(still image)의 취급과 이미지 시퀀스(image sequence)의 취급도 가능하게 할 ISOBMFF의 능력을 확장하는 것을 향하여 작업이 개시되었다. 이미지 시퀀스의 저장 및 전송을 가능하게 하기 위하여, MPEG-H Part 12로도 알려진 ISO/IEC 23008-12에 이미지 파일 포맷(Image File Format)이 정의되었는데, 그 정의는 ISO 베이스 미디어 파일 포맷에 기반한다.
다른 속성보다도, 이미지 파일 포맷은 파생 이미지(derived image)를 지원한다. 아이템(item)은 그것이 다른 아이템에 대한 'dimg' 아이템 참조(reference)를 포함하는 경우 파생 이미지이다. 파생 이미지는 명시된 입력 이미지에 대해 명시된 동작, 예를 들어 회전(rotation)을 수행함으로써 획득된다. 파생 이미지를 획득하기 위해 수행되는 동작은 아이템의 아이템 유형에 의해 식별된다. 파생 이미지에 대한 입력으로서 사용되는 이미지 아이템은 코딩된 이미지(coded image)일 수 있거나 그것은 다른 파생 이미지 아이템일 수 있다.
다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME)은 인터넷 상에서 상이한 종류의 데이터 파일, 예컨대 비디오와 오디오, 이미지, 소프트웨어 등등을 송신하고 수신할 수 있게 하는 이메일 프로토콜(email protocol)에 대한 확장이다. 인터넷 미디어 유형(internet media type)은 파일이 포함한 데이터의 유형을 나타내기 위해 인터넷 상에서 사용되는 식별자(identifier)이다. 그러한 인터넷 미디어 유형은 또한 콘텐츠 유형(content type)으로 칭해질 수 있다. 상이한 미디어 포맷을 포함할 수 있는 몇 개의 MIME 유형/서브유형(subtype) 조합이 존재한다. 콘텐츠 유형 정보는 미디어 송신의 시작에서 MIME 헤더(header) 내에 송신 개체(transmitting entity)에 의해 포함될 수 있다. 그러므로 수신 개체(receiving entity)는 코덱(codec)의 가용 세트가 주어지면 특정 요소가 렌더링될(rendered) 수 있는지 결정하기 위해 그러한 미디어 콘텐츠의 세부사항을 조사할 필요가 있을 수 있다. 여기에 기술된 파라미터의 부재 시에, 콘텐츠를 렌더링하는 데에 요구되는 코덱 또는 다른 특징을 결정하기 위해서 각각의 미디어 요소(media element)를 조사하는 것이 필요하다.
이미지 파일 포맷은 두 개의 MIME 유형을 명시하는데, 하나는 이미지 및 이미지 모음(image collection)을 위한 것이고, 다른 하나는 이미지 시퀀스를 위한 것이다. codecs 파라미터의 포맷은 이들 MIME 유형에 대해 명시된다. 그러나, 사양은 파생 이미지에 대한 고려가 부족한데, 이는 다양한 문제, 예를 들어 동작을 수행하기 전에 파생 이미지를 작성하는 것(composing)이 가능한지를 가늠하기 위한 플레이어(player) 소비 시간으로 이어질 수 있다.
이제 위의 문제를 적어도 완화하기 위해서, 파생 이미지를 작성하는 능력을 가늠하기 위한 방법이 본 문서에 제시된다.
제1 양상에 따른 방법은
제1 파일(file)의 제1 서술(description)을 수신하는 단계(제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지(derived image)의 속성을 포함함),
파생 이미지를 획득할지를 파생 이미지의 속성에 기반하여 결정하는 단계, 그리고
파생 이미지를 획득할 것을 결정하는 것에 응답하여, 파생 이미지를 포함하는 제1 파일을 획득하는 단계를 포함한다.
실시예에 따라, 방법은
파생 이미지에 의해 표현된 바로서의 대응하는 이미지 콘텐츠(image content)의 표현을 포함하는 제2 파일의 제2 서술을 수신하는 단계, 그리고
제1 파일을 또는 제2 파일을 획득할지를 파생 이미지의 속성 및 제2 서술에 기반하여 결정하는 단계를 더 포함한다.
실시예에 따라, 제1 서술은 MIME 유형을 포함한다.
실시예에 따라, 제1 서술, 예를 들어 MIME 유형은, 적어도 하나의 파생 이미지를 위한 이하의 정보 부분 중 하나 이상을 포함한다:
- 적어도 하나의 파생 이미지를 위해 사용되는 명령어 세트의 제1 식별,
- 적어도 하나의 파생 이미지를 위한 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별,
- 적어도 하나의 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트(resource count).
실시예에 따라, 방법은
파생 픽처(derived picture)를 작성하는 것의 필요한 리소스를 나타내는 적어도 하나의 값을 제1 파일로부터 파싱하는(parsing) 단계, 그리고
파생 픽처가 작성될 수 있는지를 적어도 하나의 값에 기반하여 결정하는 단계를 더 포함한다.
제2 양상은
적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 장치에 관련되는데, 상기 적어도 하나의 메모리에는 코드가 저장되되, 이는 상기 적어도 하나의 프로세서에 의해 실행되는 경우, 장치로 하여금 적어도
제1 파일의 제1 서술을 수신하는 것(제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지의 속성을 포함함),
파생 이미지를 획득할지를 파생 이미지의 속성에 기반하여 결정하는 것, 그리고
파생 이미지를 획득할 것을 결정하는 것에 응답하여, 파생 이미지를 포함하는 제1 파일을 획득하는 것을 수행하게 한다.
제3 양상에 따라,
하나 이상의 입력 이미지를 획득하는 단계,
파생 이미지를 획득하기 위해 적어도 하나의 입력에 대해 수행될 적어도 하나의 동작을 결정하는 단계,
제1 파일의 제1 서술을 미디어 콘텐츠 서술(media content description) 내에 포함시키는 단계(제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지의 속성을 포함함)를 포함하는 방법이 제공된다.
실시예에 따라, 방법은
파생 이미지에 의해 표현된 바로서의 대응하는 이미지 콘텐츠의 표현을 포함하는 제2 파일의 제2 서술을 포함시키는 단계를 더 포함한다.
실시예에 따라, 제1 서술은 다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME) 유형을 포함한다.
실시예에 따라, 제1 서술, 예를 들어 MIME 유형은, 적어도 하나의 파생 이미지를 위한 이하의 정보 부분 중 하나 이상을 포함한다:
- 적어도 하나의 파생 이미지를 위해 사용되는 명령어 세트의 제1 식별,
- 적어도 하나의 파생 이미지를 위한 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별,
- 적어도 하나의 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트.
실시예에 따라, 방법은
파생 이미지를 표현하는 데이터 구조를 제1 파일 내에 포함시키는 단계와,
파생 픽처를 작성하는 것의 필요한 리소스를 나타내는 적어도 하나의 값을 제1 파일 내에 포함시키는 단계를 더 포함한다.
실시예에 따라, 필요한 리소스를 나타내는 값은 이하 중 하나 이상을 포함한다:
- 파생 픽처를 작성하는 것의 임의의 스테이지에서 필요한 최대 픽셀(pixel), 샘플(sample) 및/또는 바이트(byte) 카운트보다 크거나 같은 값,
- 파생 픽처를 작성하는 데에 필요한 임의의 픽처를 위해 필요한 최대 픽셀, 샘플 및/또는 바이트 카운트보다 크거나 같은 값(파생 픽처를 작성하는 데에 필요한 픽처는 파생 픽처를 작성하기 위한 중간 동작의 출력 픽처를 포함함),
- 파생 픽처를 작성하는 데에서 사용될 수 있는 동작 유형의 세트를 식별하기 위한 식별자(반면에 동작 유형의 세트 내에 포함되지 않은 동작 유형은 파생 픽처를 작성하는 데에서 사용되지 않음).
제4 양상은
적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하는 장치에 관련되는데, 상기 적어도 하나의 메모리에는 코드가 저장되되, 이는 상기 적어도 하나의 프로세서에 의해 실행되는 경우, 장치로 하여금 적어도
하나 이상의 입력 이미지를 획득하는 것,
파생 이미지를 획득하기 위해 적어도 하나의 입력에 대해 수행될 적어도 하나의 동작을 결정하는 것, 그리고
제1 파일의 제1 서술을 미디어 콘텐츠 서술 내에 포함시키는 것(제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지의 속성을 포함함)을 수행하게 한다.
본 발명의 더 나은 이해를 위하여, 첨부된 도면에 대한 언급이 이제 예로서 행해질 것인데,
도 1은 발명의 실시예를 이용하는 전자 디바이스를 개략적으로 도시하고,
도 2는 발명의 실시예를 이용하기에 적합한 사용자 장비(user equipment)를 개략적으로 도시하며,
도 3은 또한 무선 및 유선 네트워크 연결을 사용하여 연결된 발명의 실시예를 이용하는 전자 디바이스를 개략적으로 도시하고,
도 4는 발명의 실시예를 구현하기에 적합한 인코더(encoder)를 개략적으로 도시하며,
도 5는 ISOBMFF 박스(box) 구조의 예를 도시하고,
도 6은 발명의 실시예에 따라 미디어 플레이어(media player)의 동작의 흐름도를 도시하며,
도 7은 발명의 실시예에 따라 파일 생성기(file creator)의 동작의 흐름도를 도시하고,
도 8은 발명의 실시예를 구현하기에 적합한 디코더(decoder)의 개략도를 도시한다.
이하는 뷰포인트 스위치(viewpoint switch)를 개시하기 위한 적합한 장치 및 가능한 메커니즘을 더 상세히 기술한다. 이와 관련하여 우선 도 1 및 도 2에 대한 참조가 행해지는데, 여기서 도 1은 예시적 실시예에 따른 비디오 코딩 시스템의 블록도를 예시적인 장치 또는 전자 디바이스(50)의 개략적인 블록도로서 도시하는데, 이는 발명의 실시예에 따른 코덱을 포함할 수 있다. 도 2는 예시적 실시예에 따른 장치의 레이아웃을 도시한다. 도 1 및 도 2의 구성요소가 다음에서 설명될 것이다.
전자 디바이스(50)는 예컨대 무선 통신 시스템의 모바일 단말(mobile terminal) 또는 사용자 장비(user equipment)일 수 있다. 그러나, 발명의 실시예는 비디오 이미지를 인코딩하고 디코딩하는 것 또는 인코딩하는 것 또는 디코딩하는 것을 요구할 수 있는 임의의 전자 디바이스 또는 장치 내에 구현될 수 있음이 인식될 것이다.
장치(50)는 디바이스를 포함하고 보호하기 위한 하우징(housing)(30)을 포함할 수 있다. 장치(50)는 또한 액정 디스플레이(liquid crystal display)의 형태로 된 디스플레이(32)를 포함할 수 있다. 발명의 다른 실시예에서 디스플레이는 이미지 또는 비디오를 디스플레이하기에 적합한 임의의 적합한 디스플레이 기술일 수 있다. 장치(50)는 키패드(keypad)(34)를 더 포함할 수 있다. 발명의 다른 실시예에서 임의의 적합한 데이터 또는 사용자 인터페이스 메커니즘이 이용될 수 있다. 예컨대 사용자 인터페이스는 터치 감응 디스플레이(touch-sensitive display)의 일부로서 가상 키보드 또는 데이터 입력 시스템으로서 구현될 수 있다.
장치는 마이크(microphone)(36) 또는 임의의 적합한 오디오 입력부(audio input)(디지털 또는 아날로그 신호 입력부일 수 있음)를 포함할 수 있다. 장치(50)는 발명의 실시예에서 수화기(earpiece)(38), 스피커(speaker), 또는 아날로그 오디오 또는 디지털 오디오 출력 연결부 중의 임의의 것일 수 있는 오디오 출력 디바이스(audio output device)를 더 포함할 수 있다. 장치(50)는 또한 배터리(40)를 포함할 수 있(거나 발명의 다른 실시예에서, 디바이스에는 임의의 적합한 모바일 에너지 디바이스(mobile energy device), 예를 들어 태양광 전지(solar cell), 연료 전지(fuel cell) 또는 태엽 발전기(clockwork generator)에 의해 전력이 공급될 수 있)다. 장치는 이미지 및/또는 비디오를 기록하는 것(recording) 또는 포착하는 것(capturing)이 가능한 카메라(42)를 더 포함할 수 있다. 장치(50)는 다른 디바이스로의 단거리 가시선 통신(short range line of sight communication)을 위한 적외선 포트(infrared port)를 더 포함할 수 있다. 다른 실시예에서 장치(50)는 예컨대 블루투스(Bluetooth) 무선 연결 또는 USB/파이어와이어(firewire) 유선 연결과 같은 임의의 적합한 단거리 통신 방안을 더 포함할 수 있다.
장치(50)는 장치(50)를 제어하기 위한 제어기(56) 또는 프로세서를 포함할 수 있다. 제어기(56)는 발명의 실시예에서 이미지 및 오디오 데이터의 형태로 양 데이터 모두를 저장할 수 있고/있거나 제어기(56) 상의 구현을 위한 명령어를 또한 저장할 수 있는 메모리(58)에 연결될 수 있다. 제어기(56)는 오디오 및/또는 비디오 데이터의 코딩 및 디코딩을 수행하거나 제어기에 의해 수행되는 코딩 및 디코딩을 돕는 데에 적합한 코덱 회로(54)에 또한 연결될 수 있다.
장치(50)는 카드 판독기(card reader)(48) 및 스마트 카드(smart card)(46), 예컨대 사용자 정보를 제공하는, 그리고 네트워크에서 사용자의 인증(authentication) 및 인가(authorization)를 위한 인증 정보를 제공하는 데에 적합한 UICC 및 UICC 판독기를 더 포함할 수 있다.
장치(50)는 제어기에 연결된, 그리고 예컨대 셀룰러 통신 네트워크(cellular communications network), 무선 통신 시스템 또는 무선 로컬 영역 네트워크(wireless local area network)와의 통신을 위한 무선 통신 신호를 생성하는 데 적합한 무선 인터페이스 회로(radio interface circuitry)(52)를 포함할 수 있다. 장치(50)는 무선 인터페이스 회로(52)에서 생성된 무선 주파수(radio frequency) 신호를 다른 장치(들)에 송신하기 위해 그리고 무선 주파수 신호를 다른 장치(들)로부터 수신하기 위해 무선 인터페이스 회로(52)에 연결된 안테나(44)를 더 포함할 수 있다.
장치(50)는 이후에 처리를 위해 코덱(54) 또는 제어기에 전달되는 개별 프레임을 기록하거나 검출하는 것이 가능한 카메라를 포함할 수 있다. 장치는 송신 및/또는 저장 전에 다른 디바이스로부터 처리를 위해 비디오 이미지 데이터를 수신할 수 있다. 장치(50)는 또한 코딩/디코딩을 위해 이미지를 무선으로든 또는 유선 연결에 의해서든 수신할 수 있다.
도 3에 관하여, 본 발명의 실시예가 활용될 수 있는 시스템의 예가 도시된다. 시스템(10)은 하나 이상의 네트워크를 통해 통신할 수 있는 여러 통신 디바이스를 포함한다. 시스템(10)은 (GSM, UMTS, CDMA 네트워크 등등과 같은) 무선 셀룰러 전화 네트워크, IEEE 802.x 표준 중 임의의 것에 의해 정의된 바와 같은 무선 로컬 영역 네트워크(Wireless Local Area Network: WLAN), 블루투스 개인 영역 네트워크(Bluetooth personal area network), 이더넷 로컬 영역 네트워크(Ethernet local area network), 토큰 링 로컬 영역 네트워크(token ring local area network), 광역 네트워크(wide area network) 및 인터넷을 포함하나 이에 한정되지 않는 유선 또는 무선 네트워크의 임의의 조합을 포함할 수 있다.
시스템(10)은 발명의 실시예를 구현하는 데 적합한 유선 및 무선 양자 모두의 통신 디바이스 및/또는 장치(50)를 포함할 수 있다.
예컨대, 도 3에 도시된 시스템은 인터넷(28)의 표현 및 모바일 전화 네트워크(mobile telephone network)(11)를 도시한다. 인터넷(28)으로의 연결성(connectivity)은 장거리 무선 연결과, 단거리 무선 연결과, 전화선, 케이블 선, 전력선 및 유사한 통신 경로를 포함하나 이에 한정되지 않는 다양한 유선 연결을 포함할 수 있으나, 이에 한정되지 않는다.
시스템(10) 내에 도시된 예시적 통신 디바이스는 전자 디바이스 또는 장치(50), 개인용 디지털 보조기기(Personal Digital Assistant: PDA)와 모바일 전화의 조합(14), PDA(16), 통합 메시징 디바이스(Integrated Messaging Device: IMD)(18), 데스크톱 컴퓨터(desktop computer)(20), 노트북 컴퓨터(notebook computer)(22)를 포함할 수 있으나, 이에 한정되지 않는다. 장치(50)는 움직이고 있는 개인에 의해 소지될 경우 이동식(mobile)이거나 고정식(stationary)일 수 있다. 장치(50)는, 차, 트럭, 택시, 버스, 기차, 보트, 비행기, 자전거, 오토바이 또는 임의의 유사한 적합한 운송수단(mode of transport)을 포함하나 이에 한정되지 않는 운송수단 내에 또한 위치될 수 있다.
실시예는 셋톱 박스(set-top box), 즉 디스플레이 또는 무선 능력을 가질/갖지 않을 수 있는 디지털 TV 수신 내에, 다양한 운영 체제에서, 인코더/디코더 구현의 하드웨어 또는 소프트웨어 또는 조합을 가진 태블릿(tablet) 또는 (랩톱(laptop)) 개인용 컴퓨터(Personal Computer: PC) 내에, 그리고 하드웨어/소프트웨어 기반 코딩을 제공하는 칩셋, 프로세서, DSP 및/또는 임베디드(embedded) 시스템 내에 또한 구현될 수 있다.
몇몇 또는 추가의 장치는 기지국(base station)(24)으로 무선 연결(25)을 통해 호출(call) 및 메시지를 발신하고 수신하고 서비스 제공자와 통신할 수 있다. 기지국(24)은 모바일 전화 네트워크(11) 및 인터넷(28) 간의 통신을 가능하게 하는 네트워크 서버(26)에 연결될 수 있다. 시스템은 추가적인 통신 디바이스 및 다양한 유형의 통신 디바이스를 포함할 수 있다.
통신 디바이스는, 코드 분할 다중 액세스(Code Division Multiple Access: CDMA), 모바일 통신을 위한 글로벌 시스템(Global Systems for Mobile communications: GSM), 범용 모바일 전기통신 시스템(Universal Mobile Telecommunications System: UMTS), 시분할 다중 액세스(Time Divisional Multiple Access: TDMA), 주파수 분할 다중 액세스(Frequency Division Multiple Access: FDMA), 송신 제어 프로토콜-인터넷 프로토콜(Transmission Control Protocol-Internet Protocol: TCP-IP), 단문 서비스(Short Messaging Service: SMS), 멀티미디어 메시징 서비스(Multimedia Messaging Service: MMS), 이메일, 인스턴트 메시징 서비스(Instant Messaging Service: IMS), 블루투스, IEEE 802.11 및 임의의 유사한 무선 통신 기술을 포함하나 이에 한정되지 않는 다양한 송신 기술을 사용하여 통신할 수 있다. 본 발명의 다양한 실시예를 구현하는 데에 수반되는 통신 디바이스는, 무선 연결, 적외선 연결, 레이저 연결, 케이블 연결 및 임의의 적합한 연결을 포함하나 이에 한정되지 않는 다양한 매체를 사용하여 통신할 수 있다.
전기통신 및 데이터 네트워크에서, 채널(channel)은 물리적 채널이든 또는 논리적 채널이든 나타낼 수 있다. 물리적 채널은 전선과 같은 물리적 송신 매체를 나타낼 수 있는 반면, 논리적 채널은 몇 개의 논리적 채널을 전달하는 것이 가능한 다중화된 매체(multiplexed medium) 상에서의 논리적 연결을 나타낼 수 있다. 채널은 정보 신호, 예컨대 비트스트림(bitstream)을 하나 또는 몇몇 발신기(또는 송신기)로부터 하나 또는 몇몇 수신기로 전달하기 위해 사용될 수 있다.
실시간 전송 프로토콜(Real-time Transport Protocol: RTP)은 오디오 및 비디오와 같은 시간맞춤 미디어의 실시간 전송을 위해 널리 사용된다. RTP는 사용자 데이터그램 프로토콜(User Datagram Protocol: UDP) 위에서 동작할 수 있는데, 이는 결국 인터넷 프로토콜(Internet Protocol: IP) 상에서 동작할 수 있다. RTP는 www.ietf.org/rfc/rfc3550.txt에서 입수가능한 인터넷 엔지니어링 태스트 포스(Internet Engineering Task Force: IETF) 코멘트 요청(Request For Comments: RFC) 3550에 명시된다. RTP 전송에서, 미디어 데이터는 RTP 패킷 내로 캡슐화된다(encapsulated). 전형적으로, 각각의 미디어 유형 또는 미디어 코딩 포맷은 전용 RTP 페이로드(payload) 포맷을 가진다.
RTP 세션(session)은 RTP로써 통신하는 참여자의 그룹 간의 연관(association)이다. 그것은 잠재적으로 다수의 RTP 스트림을 전달할 수 있는 그룹 통신 채널이다. RTP 스트림은 미디어 데이터를 포함하는 RTP 패킷의 스트림이다. RTP 스트림은 특정한 RTP 세션에 속한 SSRC에 의해 식별된다. SSRC는 동기화 소스(Synchronization source) 아니면 동기화 소스 식별자(synchronization source identifier)(RTP 패킷 헤더 내의 32 비트 SSRC 필드임)를 나타낸다. 동기화 소스는 동기화 소스로부터의 모든 패킷이 동일한 타이밍(timing) 및 시퀀스 번호 공간(sequence number space)을 형성하여서, 수신기가 플레이백(playback)을 위해 동기화 소스에 의거해서 패킷을 그룹화할 수 있다는 점에서 특징지어진다. 동기화 소스의 예는 RTP 믹서(mixer), 또는 마이크나 카메라와 같은 신호 소스(signal source)로부터 도출된 패킷의 스트림의 발신기를 포함한다. 각각의 RTP 스트림은 RTP 세션 내에서 고유한 SSRC에 의해 식별된다. RTP 스트림은 논리적 채널로 간주될 수 있다.
ISO/IEC 13818-1 내에 또는 동등하게 ITU-T 권장(Recommendation) H.222.0 내에 명시된 MPEG-2 전송 스트림(Transport Stream: TS)은 다중화된 스트림 내에서, 프로그램 메타데이터(metadata) 또는 다른 메타데이터뿐만 아니라 오디오, 비디오 및 다른 미디어를 전달하기 위한 포맷이다. TS 내의 기초 스트림(elementary stream)(패킷화된(packetized) 기초 스트림으로도 알려짐)을 식별하는 데에 패킷 식별자(packet identifier)(PID)가 사용된다. 그러므로, MPEG-2 TS 내의 논리적 채널은 특정 PID 값에 대응하는 것으로 간주될 수 있다.
비디오 코덱은 입력 비디오를 저장/송신에 적합한 압축된 표현(compressed representation)으로 변환하는 인코더(encoder)와, 압축된 비디오 표현을 도로 가시적 형태(viewable form)로 압축을 풀(uncompress) 수 있는 디코더(decoder)로 이루어진다. 비디오 인코더 및/또는 비디오 디코더는 서로 별개일 수도, 즉 코덱을 형성할 필요가 없을 수 있다. 전형적으로 인코더는 비디오를 더욱 조밀한 형태로(즉 더 낮은 비트율(bitrate)로) 표현하기 위해서 원래의 비디오 시퀀스 내의 어떤 정보를 폐기한다(discard). 나중에 정의되는 바와 같이, 이미지 시퀀스를 인코딩하는 데에 비디오 인코더가 사용될 수 있고, 코딩된 이미지 시퀀스를 디코딩하는 데에 비디오 디코더가 사용될 수 있다. 이미지를 인코딩하는 데에 이미지 인코더 또는 비디오 인코더의 인트라 코딩(intra coding) 부분 또는 비디오 인코더가 사용될 수 있고, 코딩된 이미지를 디코딩하는 데에 이미지 디코더 또는 비디오 디코더의 인터 디코딩(inter decoding) 부분 또는 비디오 디코더가 사용될 수 있다.
전형적인 복합(hybrid) 비디오 인코더, 예컨대 ITU-T H.263 및 H.264의 많은 인코더 구현은, 두 단계로 비디오 정보를 인코딩한다. 먼저 어떤 픽처 영역(picture area)(또는 "블록"(block)) 내의 픽셀 값이 예컨대 움직임 보상(motion compensation) 수단(코딩되는 블록에 밀접히 대응하는, 이전에 코딩된 비디오 프레임 중의 하나 내의 영역을 찾아내고 표시함)에 의해 또는 공간적(spatial) 수단(지정된 방식으로 코딩될 블록 주위의 픽셀 값을 사용함)에 의해 예측된다. 다음으로 예측 오차(prediction error), 즉 예측된 픽셀 블록(predicted block of pixels) 및 원래의 픽셀 블록(original block of pixels) 간의 차이가 코딩된다. 전형적으로 이것은 지정된 변환(가령, 이산 코사인 변환(Discrete Cosine Transform: DCT) 또는 그것의 변형)을 사용하여 픽셀 값에서의 차이를 변환하고, 계수를 양자화하며, 양자화된 계수를 엔트로피 코딩함(entropy coding)으로써 행해질 수 있다. 양자화 프로세스의 충실도(fidelity)를 바꿈으로써, 인코더는 픽셀 표현의 정확도(픽처 품질) 및 결과적인 코딩된 비디오 표현의 크기(파일 크기 또는 송신 비트율) 간의 균형을 제어할 수 있다.
시간적 예측(temporal prediction), 움직임 보상, 또는 움직임 보상된 예측(motion-compensated prediction)으로도 지칭될 수 있는 인터 예측(inter prediction)은 시간적 중복성(temporal redundancy)을 감소시킨다. 인터 예측에서 예측의 소스는 이전에 디코딩된 픽처이다. 인트라 예측(intra prediction)은 동일한 픽처 내의 인접한 픽셀이 상관될(correlated) 공산이 있다는 사실을 활용한다. 인트라 예측은 공간적 또는 변환 도메인 내에서 수행될 수 있는바, 즉 샘플 값이든 또는 변환 계수든 예측될 수 있다. 인트라 예측은 어떤 인터 예측도 적용되지 않는 인트라 코딩에서 전형적으로 쓰인다.
코딩 절차의 결과 하나는 움직임 벡터 및 양자화된 변환 계수와 같은 코딩 파라미터의 세트이다. 많은 파라미터는 만일 그것이 우선 공간적으로 또는 시간적으로 이웃하는 파라미터로부터 예측되는 경우 더욱 효율적으로 엔트로피 코딩될 수 있다. 예컨대, 움직임 벡터는 공간적으로 인접한 움직임 벡터로부터 예측될 수 있고 움직임 벡터 예측기(motion vector predictor)에 대한 차이만이 코딩될 수 있다. 인트라 예측 및 코딩 파라미터의 예측은 집합적으로 픽처내 예측(in-picture prediction)으로 지칭될 수 있다.
도 4는 발명의 실시예를 이용하기에 적합한 비디오 인코더의 블록도를 도시한다. 도 4는 두 계층을 위한 인코더를 제시하나, 제시된 인코더는 유사하게 오직 하나의 계층을 인코딩하도록 단순화되거나 둘보다 많은 계층을 인코딩하도록 확장될 수 있음이 인식될 것이다. 도 4는 기본 계층(base layer)을 위한 제1 인코더 섹션(encoder section)(500) 및 향상 계층(enhancement layer)을 위한 제2 인코더 섹션(502)을 포함하는 비디오 인코더의 실시예를 보여준다. 제1 인코더 섹션(500) 및 제2 인코더 섹션(502) 각각은 유입 픽처를 인코딩하기 위한 유사한 요소를 포함할 수 있다. 인코더 섹션(500, 502)은 픽셀 예측기(pixel predictor)(302, 402), 예측 에러 인코더(prediction error encoder)(303, 403) 및 예측 에러 디코더(prediction error decoder)(304, 404)를 포함할 수 있다. 도 4는 인터 예측기(inter-predictor)(306, 406), 인트라 예측기(intra-predictor)(308, 408), 모드 선택기(mode selector)(310, 410), 필터(filter)(316, 416) 및 참조 프레임 메모리(reference frame memory)(318, 418)를 포함하는 것으로 픽셀 예측기(302, 402)의 실시예를 또한 도시한다. 제1 인코더 섹션(500)의 픽셀 예측기(302)는 (이미지 및 움직임 보상된 참조 프레임(318) 간의 차이를 결정하는) 인터 예측기(306) 및 (현재의 프레임 또는 픽처의 이미 처리된 부분에만 기반하여 이미지 블록에 대한 예측을 결정하는) 인트라 예측기(308) 양자 모두에서 인코딩될 비디오 스트림의 기본 계층 이미지를 수신한다(300). 인터 예측기 및 인트라 예측기 양자 모두의 출력은 모드 선택기(310)로 전해진다. 인트라 예측기(308)는 하나보다 많은 인트라 예측 모드를 가질 수 있다. 따라서, 각각의 모드는 인트라 예측을 수행하고 예측된 신호를 모드 선택기(310)에 제공할 수 있다. 모드 선택기(310)는 또한 기본 계층 픽처(300)의 카피(copy)를 수신한다. 상응하여, 제2 인코더 섹션(502)의 픽셀 예측기(402)는 (이미지 및 움직임 보상된 참조 프레임(418) 간의 차이를 결정하는) 인터 예측기(406) 및 (현재의 프레임 또는 픽처의 이미 처리된 부분에만 기반하여 이미지 블록에 대한 예측을 결정하는) 인트라 예측기(408) 양자 모두에서 인코딩될 비디오 스트림의 향상 계층 이미지를 수신한다(400). 인터 예측기 및 인트라 예측기 양자 모두의 출력은 모드 선택기(410)로 전해진다. 인트라 예측기(408)는 하나보다 많은 인트라 예측 모드를 가질 수 있다. 따라서, 각각의 모드는 인트라 예측을 수행하고 예측된 신호를 모드 선택기(410)에 제공할 수 있다. 모드 선택기(410)는 또한 향상 계층 픽처(400)의 카피를 수신한다.
현재의 블록을 인코딩하기 위해 어느 인코딩 모드가 선택되는지에 따라서, 인터 예측기(306, 406)의 출력 또는 선택적인 인트라 예측기 모드 중 하나의 모드의 출력 또는 모드 선택기 내의 표면적 인코더(surface encoder)의 출력이 모드 선택기(310, 410)의 출력으로 전달된다. 모드 선택기의 출력은 제1 가산 디바이스(summing device)(321, 421)에 전해진다. 예측 에러 인코더(303, 403)에 입력되는 제1 예측 에러 신호(320, 420)를 산출하기 위해 제1 가산 디바이스는 기본 계층 픽처(300)/향상 계층 픽처(400)로부터 픽셀 예측기(302, 402)의 출력을 감산할 수 있다.
픽셀 예측기(302, 304)는 이미지 블록(312, 412)의 예측 표현 및 예측 에러 디코더(304, 404)의 출력(338, 438)의 조합을 예비적 재구성기(preliminary reconstructor)(339, 439)로부터 또한 수신한다. 예비적 재구성된 이미지(preliminary reconstructed image)(314, 414)는 인트라 예측기(308, 408)로 그리고 필터(316, 416)로 전해질 수 있다. 예비적 표현을 수신하는 필터(316, 416)는 예비적 표현을 필터링하고 최종 재구성된 이미지(final reconstructed image)(340, 440)를 출력할 수 있는데, 이는 참조 프레임 메모리(318, 418) 내에 세이브될(saved) 수 있다. 참조 프레임 메모리(318)는 참조 이미지(reference image)(장래의 기본 계층 픽처(300)가 인터 예측 동작에서 이와 비교됨)로서 사용되도록 인터 예측기(306)에 연결될 수 있다.
몇몇 실시예에 따라 기본 계층이 향상 계층의 계층간 샘플 예측(inter-layer sample prediction) 및/또는 계층간 움직임 정보 예측(inter-layer motion information prediction)을 위한 소스라고 선택되고 나타내어짐에 따라서, 참조 프레임 메모리(318)는 장래의 향상 계층 픽처(400)가 인터 예측 동작에서 비교되는 참조 이미지로서 사용되도록 인터 예측기(406)에 또한 연결될 수 있다. 더욱이, 참조 프레임 메모리(418)는 장래의 향상 계층 픽처(400)가 인터 예측 동작에서 비교되는 참조 이미지로서 사용되도록 인터 예측기(406)에 연결될 수 있다.
제1 인코더 섹션(500)의 필터(316)로부터의 필터링 파라미터는 몇몇 실시예에 따라 기본 계층이 향상 계층의 필터링 파라미터를 예측하기 위한 소스라고 선택되고 나타내어짐에 따라서 제2 인코더 섹션(502)에 제공될 수 있다.
예측 에러 인코더(303, 403)는 변환 유닛(342, 442) 및 양자화기(quantizer)(344, 444)를 포함한다. 변환 유닛(342, 442)은 제1 예측 에러 신호(320, 420)를 변환 도메인(transform domain)으로 변환한다. 변환은, 예컨대, DCT 변환이다. 양자화기(344, 444)는 변환 도메인 신호, 가령 DCT 계수를 양자화하여, 양자화된 계수를 형성한다.
예측 에러 디코더(304, 404)는 예측 에러 인코더(303, 403)로부터 출력을 수신하고 예측 에러 인코더(303, 403)의 정반대의 프로세스를 수행하여 디코딩된 예측 에러 신호(338, 438)를 산출하는데 이는, 제2 가산 디바이스(339, 439)에서 이미지 블록(312, 412)의 예측 조합과 조합되는 경우, 예비적 재구성된 이미지(314, 414)를 산출한다. 예측 에러 디코더는 역양자화기(dequantizer)(361, 461)(이는 양자화된 계수 값, 가령 DCT 계수를 역양자화하여 변환 신호를 재구성함) 및 역변환 유닛(inverse transformation unit)(363, 463)(이는 재구성된 변환 신호에 대한 역변환을 수행하는데 역변환 유닛(363, 463)의 출력은 재구성된 블록(들)을 포함함)을 포함하는 것으로 간주될 수 있다. 예측 에러 디코더는 재구성된 블록(들)을 추가의 디코딩된 정보 및 필터 파라미터에 따라 필터링할 수 있는 블록 필터(block filter)를 또한 포함할 수 있다.
엔트로피 인코더(330, 430)는 예측 에러 인코더(303, 403)의 출력을 수신하며 에러 검출 및 정정 능력을 제공하기 위해 신호에 대해 적합한 엔트로피 인코딩/가변 길이 인코딩을 수행할 수 있다. 엔트로피 인코더(330, 430)의 출력은 가령 다중화기(multiplexer)(508)에 의해 비트스트림(bitstream) 내로 삽입될 수 있다.
H.264/AVC 표준은 국제 전기통신 연합 전기통신 표준화 섹터(Telecommunications Standardization Sector of International Telecommunication Union)(ITU-T)의 비디오 코딩 전문가 그룹(Video Coding Experts Group: VCEG) 및 국제 표준화 기구(International Organisation for Standardization: ISO)/국제 전기기술 위원회(International Electrotechnical Commission: IEC)의 동화상 전문가 그룹(Moving Picture Experts Group: MPEG)의 공동 비디오 팀(Joint Video Team: JVT)에 의해 개발되었다. H.264/AVC 표준은 두 모체 표준화 기구에 의해 발행되고, 그것은 ITU-T Recommendation H.264 및 ISO/IEC 국제 표준(International Standard) 14496-10으로 지칭되는데, MPEG-4 Part 10 고급 비디오 코딩(Advanced Video Coding: AVC)으로도 알려져 있다. H.264/AVC 표준의 버전이 여럿 있었는데, 새로운 확장 또는 특징을 사양에 통합한다. 이들 확장은 스케일가능 비디오 코딩(Scalable Video Coding: SVC) 및 멀티뷰 비디오 코딩(Multiview Video Coding: MVC)을 포함한다.
고효율 비디오 코딩(High Efficiency Video Coding)(HEVC라고도 알려진 H.265/HEVC) 표준의 버전 1은 VCEG 및 MPEG의 비디오 코딩 공동 협력 팀(Joint Collaborative Team - Video Coding: JCT-VC)에 의해 개발되었다. 표준은 두 모체 표준화 기구에 의해 발행되었고, 그것은 ITU-T Recommendation H.265 및 ISO/IEC International Standard 23008-2로 지칭되는데, MPEG-H Part 2 고효율 비디오 코딩(High Efficiency Video Coding: HEVC)으로도 알려져 있다. H.265/HEVC의 버전 2는 스케일가능, 멀티뷰 및 충실도 범위 확장을 포함하였는데, 이는 각각 SHVC, MV-HEVC 및 REXT로 약칭될 수 있다. H.265/HEVC의 버전 2는 ITU-T Recommendation H.265 (10/2014)로서 사전발행되었고 2015년에 ISO/IEC 23008-2의 에디션(Edition) 2로서 발행될 가능성이 있다. 각각 3D-HEVC 및 SCC로 약칭될 수 있는 3차원(three-dimensional) 및 스크린 콘텐츠 코딩(screen content coding) 확장을 비롯하여, H.265/HEVC에 대한 추가 확장을 개발하기 위해 현재 진행 중인 표준화 프로젝트가 있다.
SHVC, MV-HEVC 및 3D-HEVC는 HEVC 표준의 버전 2의 부록(Annex) F에 명시된 공통 기준 사양(common basis specification)을 사용한다. 이 공통 기준은 예컨대 고수준(high-level) 구문론(syntax) 및 의미론(semantics), 가령 다층(multi-layer) 비트스트림을 위한 계층간 참조 픽처 및 픽처 순서 카운트 도출(picture order count derivation)을 포함하는 참조 픽처 리스트 구성과 같은 디코딩 프로세스뿐만 아니라, 계층간 종속성(inter-layer dependency)과 같은 비트스트림의 계층의 특성 중 일부를 명시하는 것을 포함한다. 부록 F는 HEVC의 잠재적인 차후의 다층 확장에서 또한 사용될 수 있다. 비디오 인코더, 비디오 디코더, 인코딩 방법, 디코딩 방법, 비트스트림 구조 및/또는 실시예가 특정한 확장, 예를 들어 SHVC 및/또는 MV-HEVC를 참조하여 이하에서 기술될 수 있을지라도, 그것은 일반적으로 HEVC의 임의의 다층 확장에, 그리고 훨씬 더 일반적으로 임의의 다층 비디오 코딩 방안에 적용가능함이 이해될 것이다.
몇몇 중요한 정의, 비트스트림 및 코딩 구조와, H.264/AVC 및 HEVC의 개념이 실시예가 구현될 수 있는 비디오 인코더, 디코더, 인코딩 방법, 디코딩 방법 및 비트스트림 구조의 예로서 이 부문에서 기술된다. 중요한 정의, 비트스트림 및 코딩 구조와, H.264/AVC의 개념은 HEVC에서와 동일한바 - 따라서, 그것은 공동으로 아래에 기술된다. 발명의 양상은 H.264/AVC 또는 HEVC에 한정되지 않고, 오히려 설명은 발명이 의거해서 부분적으로 또는 전적으로 실현될 수 있는 하나의 가능한 기준을 위해 주어진다.
많은 더 이른 비디오 코딩 표준과 유사하게, 에러 없는(error-free) 비트스트림을 위한 디코딩 프로세스뿐만 아니라 비트스트림 구문론 및 의미론이 H.264/AVC 및 HEVC 내에 명시된다. 인코딩 프로세스는 명시되지 않지만, 인코더는 합치하는 비트스트림을 생성하여야 한다. 비트스트림 및 디코더 합치는 가상적 참조 디코더(Hypothetical Reference Decoder: HRD)로써 확인될 수 있다. 표준은 송신 에러 및 손실에 대처하는 것을 돕는 코딩 도구를 포함하나, 인코딩에서의 그 도구의 사용은 선택적이며 에러 있는(erroneous) 비트스트림에 대해 어떤 디코딩 프로세스도 명시되지 않았다.
예시적 실시예의 설명에서뿐만 아니라 기존의 표준의 설명에서, 구문론 요소(syntax element)는 비트스트림 내에 표현된 데이터의 요소로서 정의된다. 구문론 구조(syntax structure)는 지정된 순서로 비트스트림 내에 함께 존재하는 0개 이상의 구문론 요소로서 정의될 수 있다. 예시적 실시예의 설명에서뿐만 아니라 기존의 표준의 설명에서, 구문 "외부 수단에 의해" 또는 "외부 수단을 통해"가 사용될 수 있다. 예컨대, 디코딩 프로세스에서 사용되는 변수의 값 또는 구문론 구조와 같은 개체는 "외부 수단에 의해" 디코딩 프로세스에 제공될 수 있다. 구문 "외부 수단에 의해"는 개체가 인코딩에 의해 생성된 비트스트림 내에 포함되지 않고, 오히려 예컨대 제어 프로토콜을 사용하여 비트스트림으로부터 외부에서 전달됨을 나타낼 수 있다. 대안적으로 또는 추가적으로 그것은 개체가 인코더에 의해 생성되지 않지만, 예컨대 디코더를 사용하고 있는 플레이어 또는 디코딩 제어 로직 또는 비슷한 것에서 생성될 수 있음을 의미한다. 디코더는 변수 값과 같은 외부 수단을 입력하기 위한 인터페이스를 가질 수 있다.
프로파일(profile)은 디코딩/코딩 표준 또는 사양에 의해 명시된 전체 비트스트림 구문론의 서브세트(subset)로서 정의될 수 있다. 주어진 프로파일의 구문론에 의해 부과된 한계 내에서, 디코딩된 픽처의 지정된 크기와 같은 비트스트림 내의 구문론 요소에 의해 취해지는 값에 따라 인코더 및 디코더의 성능에서 매우 큰 변동을 요구하는 것은 여전히 가능하다. 많은 응용에서, 특정한 프로파일 내의 구문론의 모든 가상적 사용을 다루는 것이 가능한 디코더를 구현하는 것은 현실적이지도 않고 경제적이지도 않을 수 있다. 이 문제점을 다루기 위해서, 레벨이 사용될 수 있다. 레벨은 디코딩/코딩 표준 또는 사양 내에 명시된 변수 및 비트스트림 내의 구문론 요소의 값에 부과된 제한의 지정된 세트로서 정의될 수 있다. 이들 제한은 값에 대한 간단한 한정일 수 있다. 대안적으로 또는 추가로, 그것은 값의 산술적 조합(arithmetic combination)에 대한 제한의 형태를 취할 수 있다(가령, 픽처 폭에 픽처 높이를 곱한 데에 초당(per second) 디코딩되는 픽처의 수를 곱함). 레벨을 위한 제한을 명시하는 다른 수단이 또한 사용될 수 있다. 레벨 내에 명시된 제한 중 일부는 예컨대 초(second)와 같은 시구간(time period)당, 매크로블록(macroblock)과 같은 코딩 단위의 측면에서 최대 픽처 크기, 최대 비트율 및 최대 데이터율에 관련될 수 있다. 모든 프로파일에 대해 동일한 세트의 레벨이 정의될 수 있다. 상이한 프로파일에 걸쳐 각각의 레벨의 정의의 대부분의 또는 모든 양상이 공통적일 수 있도록, 예컨대 상이한 프로파일을 구현하는 단말의 상호운영성(interoperability)을 증가시키는 것이 바람직할 수 있다. 티어(tier)는 비트스트림 내의 구문론 요소의 값에 부과된 레벨 제한의 지정된 카테고리(category)로서 정의될 수 있는데, 여기서 레벨 제한은 티어 내에 중첩되며(nested) 어떤 티어 및 레벨에 합치하는 디코더는 동일한 티어 또는 그 레벨의 더 낮은 티어 또는 그것 아래의 임의의 레벨에 합치하는 모든 비트스트림을 디코딩하는 것이 가능할 것이다.
몇몇 경우에, 합치점(conformance point)은 특정한 프로파일 및 특정한 레벨의 조합 또는 특정한 프로파일, 특정한 티어 및 특정한 레벨의 조합으로서 정의될 수 있다. 합치점은 대안적인 방식으로 정의될 수 있으나, 비트스트림의 특성과 한정 및/또는 디코더의 특성과 (최대) 리소스를 지정하려는 그것의 의도는 변함없이 유지될 수 있음이 이해될 필요가 있다.
각각 H.264/AVC 또는 HEVC 인코더로의 입력 및 H.264/AVC 또는 HEVC 디코더의 출력을 위한 기초 단위는 픽처이다. 인코더에 입력으로서 주어진 픽처는 소스 픽처(source picture)로 지칭될 수도 있고, 디코더에 의해 디코딩된 픽처는 디코딩된 픽처(decoded picture)로 지칭될 수 있다.
소스 및 디코딩된 픽처는 각각 하나 이상의 샘플 어레이(sample array), 예를 들어 샘플 어레이의 다음 세트 중 하나로 구성된다:
- 오직 루마(Luma)(Y)(모노크롬(monochrome)).
- 루마 및 두 개의 크로마(chroma)(YCbCr 또는 YCgCo).
- 녹색(Green), 청색(Blue) 및 적색(Red)(GBR, 또한 RGB로 알려짐).
- 다른 지정되지 않은 모노크롬 또는 3자극(tri-stimulus) 컬러 샘플링(예컨대, YZX, 또한 XYZ로 알려짐)을 표현하는 어레이.
이하에서, 이들 어레이는 루마(또는 L 또는 Y) 및 크로마로서 지칭될 수 있는데, 두 크로마 어레이는 Cb 및 Cr로 지칭될 수 있는데, 사용 중인 실제 컬러 표현(actual color representation)과는 무관하다. 사용 중인 실제 컬러 표현 방법은 가령 H.264/AVC 및/또는 HEVC의 비디오 유용성 정보(Video Usability Information: VUI) 구문론을 사용하여 가령 코딩된 비트스트림 내에 표시될 수 있다. 컴포넌트(component)는 모노크롬 포맷으로 픽처를 작성하는 어레이의 단일 샘플 또는 어레이 또는 세 개의 샘플 어레이 어레이(루마 및 두 크로마) 중 하나로부터의 어레이 또는 단일 샘플로서 정의될 수 있다.
H.264/AVC 및 HEVC에서, 픽처는 프레임(frame)이거나 아니면 필드(field)일 수 있다. 프레임은 루마 샘플, 그리고 가능하게는 대응하는 크로마 샘플의 매트릭스(matrix)를 포함한다. 필드는 프레임의 교번(alternate) 샘플 행의 세트이고, 소스 신호가 인터레이싱되는(interlaced) 경우 인코더 입력으로서 사용될 수 있다. 크로마 샘플 어레이는 부재할 수 (있고 따라서 모노크롬 샘플링이 사용 중일 수) 있거나 크로마 샘플 어레이는 루마 샘플 어레이와 비교될 때 서브샘플링될(subsampled) 수 있다. 크로마 포맷은 다음과 같이 요약될 수 있다:
- 모노크롬 샘플링에서 오직 하나의 샘플 어레이가 있는데, 이는 루마 어레이로 명목상 간주될 수 있다.
- 4:2:0 샘플링에서, 두 크로마 어레이 각각은 루마 어레이의 절반의 높이 및 절반의 폭을 가진다.
- 4:2:2 샘플링에서, 두 크로마 어레이 각각은 루마 어레이와 동일한 높이 및 절반의 폭을 가진다.
- 4:4:4 샘플링에서 어떤 별개의 컬러 평면도 사용 중이지 않은 경우, 두 크로마 어레이 각각은 루마 어레이와 동일한 높이와 폭을 가진다.
H.264/AVC 및 HEVC에서, 샘플 어레이를 별개의 컬러 평면으로서 비트스트림 내로 코딩하고 비트스트림으로부터 별개로 코딩된 컬러 평면을 각각 디코딩하는 것이 가능하다. 별개의 컬러 평면이 사용 중인 경우, 그것들 각각은 모노크롬 샘플링으로써 픽처로서 (인코더 및/또는 디코더에 의해) 따로따로 처리된다.
파티셔닝(partitioning)은 세트의 각각의 요소가 서브세트 중 정확히 하나 내에 있도록 서브세트로의 세트의 분할(division)로서 정의될 수 있다.
H.264/AVC에서, 매크로블록은 루마 샘플의 16x16 블록 및 크로마 샘플의 대응하는 블록이다. 예컨대, 4:2:0 샘플링 패턴에서, 매크로블록은 크로마 샘플의 하나의 8x8 블록을 각각의 크로마 컴포넌트마다 포함한다. H.264/AVC에서, 픽처는 하나 이상의 슬라이스 그룹(slice group)으로 파티셔닝되고, 슬라이스 그룹은 하나 이상의 슬라이스를 포함한다. H.264/AVC에서, 슬라이스는 특정한 슬라이스 그룹 내에서 래스터 스캔(raster scan)에서 연속적으로 순서화된 정수 개의 매크로블록으로 이루어진다.
HEVC 인코딩 및/또는 디코딩의 동작을 기술하는 경우, 이하의 용어가 사용될 수 있다. 코딩 블록(coding block)은 어떤 값의 N에 대해 샘플의 NxN 블록으로서 정의될 수 있는바 코딩 블록으로의 코딩 트리 블록(coding tree block)의 분할은 파티셔닝이다. 코딩 트리 블록(Coding Tree Block: CTB)은 어떤 값의 N에 대해 샘플의 NxN 블록으로서 정의될 수 있는바 코딩 트리 블록으로의 컴포넌트의 분할은 파티셔닝이다. 코딩 트리 단위(Coding Tree Unit: CTU)는 세 개의 샘플 어레이를 가진 픽처의 루마 샘플의 코딩 트리 블록, 크로마 샘플의 두 개의 대응하는 코딩 트리 블록, 또는 모노크롬 픽처 또는 샘플을 코딩하는 데에 사용된 세 개의 별개의 컬러 평면 및 구문론 구조를 사용하여 코딩된 픽처의 샘플의 코딩 트리 블록으로서 정의될 수 있다. 코딩 단위(Coding Unit: CU)는 세 개의 샘플 어레이를 가진 픽처의 루마 샘플의 코딩 블록, 크로마 샘플의 두 개의 대응하는 코딩 블록, 또는 모노크롬 픽처 또는 샘플을 코딩하는 데에 사용된 세 개의 별개의 컬러 평면 및 구문론 구조를 사용하여 코딩된 픽처의 코딩 블록으로서 정의될 수 있다.
몇몇 비디오 코덱, 예를 들어 고효율 비디오 코딩(High Efficiency Video Coding: HEVC) 코덱에서, 비디오 픽처는 그 픽처의 영역을 커버하는(covering) 코딩 단위(Coding Unit: CU)들로 분할된다. CU는 CU 내의 샘플을 위한 예측 프로세스를 정의하는 하나 이상의 예측 단위(Prediction Unit: PU) 및 상기 CU 내의 샘플을 위한 예측 에러 코딩 프로세스를 정의하는 하나 이상의 변환 단위(Transform Unit: TU)로 이루어진다. 전형적으로, CU는 가능한 CU 크기의 사전정의된 세트로부터 선택가능한 크기를 갖는 샘플의 정방형 블록(square block)으로 이루어진다. 최대 허용 크기(maximum allowed size)를 갖는 CU는 LCU(최대 코딩 단위(largest coding unit)) 또는 코딩 트리 단위(Coding Tree Unit: CTU)로 명명될 수 있고 비디오 픽처는 비중첩(non-overlapping) LCU로 분할된다. LCU는, 가령 LCU 및 결과적인 CU를 재귀적으로 나눔(recursively splitting)으로써, 더 작은 CU의 조합으로 더 나뉠 수 있다. 전형적으로 각각의 결과적인 CU는 그것과 연관된 적어도 하나의 PU 및 적어도 하나의 TU를 가진다. 각각의 PU 및 TU는 각각 예측 및 예측 에러 코딩 프로세스의 입도(granularity)를 증가시키기 위해서 더 작은 PU와 TU로 더 나뉠 수 있다. 각각의 PU는 어떤 종류의 예측이 그 PU 내의 픽셀을 위해 적용될 것인지를 정의하는 그것과 연관된 예측 정보를 가진다(가령, 인터 예측된(inter-predicted) PU를 위한 움직임 벡터 정보 및 인트라 예측된(intra predicted) PU를 위한 인트라 예측 방향성 정보).
각각의 TU는 (가령 DCT 계수 정보를 포함하여) 상기 TU 내의 샘플을 위한 예측 에러 디코딩 프로세스를 기술하는 정보와 연관될 수 있다. 각각의 CU에 대해 예측 에러 코딩이 적용되는지 여부는 전형적으로 CU 레벨에서 시그널링된다(signaled). CU와 연관된 예측 에러 잔차(prediction error residual)가 전혀 없는 경우에, 상기 CU를 위한 TU가 전혀 없다고 간주될 수 있다. 이미지를 CU로 분할하는 것과, CU를 PU 및 TU로 분할하는 것은 전형적으로, 디코더가 이들 단위의 의도된 구조를 재현할 수 있게 비트스트림 내에 시그널링된다.
HEVC에서, 픽처는, 사각형이고 정수 개의 LCU를 포함하는 타일(tile)로 파티셔닝될 수 있다. HEVC에서, 타일로의 파티셔닝은 정규 그리드(regular grid)를 형성하는데, 여기서 타일의 높이와 폭은 최대치에서 하나의 LCU만큼 서로 상이하다. HEVC에서, 슬라이스는 하나의 독립적인 슬라이스 세그먼트(slice segment) 및 동일한 액세스 단위(access unit) 내의 다음의 독립적인 슬라이스 세그먼트(만일 있다면)에 선행하는 모든 차후의 종속적인 슬라이스 세그먼트(만일 있다면) 내에 포함된 정수 개의 코딩 트리 단위라고 정의된다. HEVC에서, 슬라이스 세그먼트는 단일 NAL 단위 내에 포함되고 타일 스캔에서 연속적으로 순서화된 정수 개의 코딩 트리 단위라고 정의된다. 슬라이스 세그먼트로의 각각의 픽처의 분할은 파티셔닝이다. HEVC에서, 독립적인 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 구문론 요소의 값이 선행 슬라이스 세그먼트를 위한 값으로부터 추론되지 않는 슬라이스 세그먼트라고 정의되고, 종속적인 슬라이스 세그먼트는 슬라이스 세그먼트 헤더의 몇몇 구문론 요소의 값이 디코딩 순서로 선행의 독립적인 슬라이스 세그먼트를 위한 값으로부터 추론되는 슬라이스 세그먼트라고 정의된다. HEVC에서, 슬라이스 헤더(slice header)는 현재의 슬라이스 세그먼트이거나 현재의 종속적인 슬라이스 세그먼트에 선행하는 독립적인 슬라이스 세그먼트인 독립적인 슬라이스 세그먼트의 슬라이스 세그먼트 헤더라고 정의되고, 슬라이스 세그먼트 헤더(slice segment header)는 슬라이스 세그먼트 내에 표현된 첫 번째 또는 모든 코딩 트리 단위에 관한 데이터 요소를 포함하는 코딩된 슬라이스 세그먼트의 일부라고 정의된다. CU는 타일 내에서 또는 만일 타일이 사용 중이지 않은 경우에는 픽처 내에서 LCU의 래스터 스캔 순서로 스캐닝된다. LCU 내에서, CU는 특정 스캔 순서를 가진다.
디코더는 (인코더에 의해 생성되고, 압축된 표현으로 저장된 움직임 또는 공간 정보를 사용하여) 픽셀 블록의 예측된 표현을 형성하기 위해 인코더와 유사한 예측 수단과, 예측 에러 디코딩(공간 픽셀 도메인(spatial pixel domain) 내의 양자화된 예측 에러 신호를 복구하는 예측 에러 코딩의 역연산(inverse operation))을 적용함으로써 출력 비디오를 재구성한다. 예측 및 예측 에러 디코딩 수단을 적용한 후 디코더는 출력 비디오 프레임을 형성하기 위해 예측 및 예측 에러 신호(픽셀 값)을 총합한다(sum up). 디코더(그리고 인코더)는 또한 추가적인 필터링 수단을, 출력 비디오의 품질을 개선하고자, 디스플레이를 위해 그것을 전달하고/하거나 비디오 시퀀스 내의 도래하는(forthcoming) 프레임을 위한 예측 참조(prediction reference)로서 그것을 저장하기 전에 적용할 수 있다.
필터링은 예컨대 다음 중 하나 이상을 포함할 수 있다: 블록해제(deblocking), 샘플 적응적 오프셋(Sample Adaptive Offset: SAO) 및/또는 적응적 루프 필터링(Adaptive Loop Filtering: ALF). H.264/AVC는 블록해제를 포함하는 반면, HEVC는 블록해제 및 SAO 양자 모두를 포함한다.
전형적인 비디오 코덱에서 움직임 정보는 예측 단위와 같은 각각의 움직임 보상된 이미지 블록과 연관된 움직임 벡터로써 표시된다. 이들 움직임 벡터 각각은 (인코더 측에서) 코딩되거나 (디코더 측에서) 디코딩될 픽처 내의 이미지 블록 및 이전에 코딩된 또는 디코딩된 픽처 중 하나 내의 예측 소스 블록(prediction source block)의 변위(displacement)를 나타낸다. 효율적으로 움직임 벡터를 나타내기 위해서, 그것들은 전형적으로 블록별 예측된 움직임 벡터(block specific predicted motion vector)들에 대해서 차동적으로(differentially) 코딩된다. 전형적인 비디오 코덱에서, 예측된 움직임 벡터는 사전정의된 방식으로, 예컨대 인접한 블록의 인코딩된 또는 디코딩된 움직임 벡터의 중간값(median)을 계산함으로써 생성된다. 움직임 벡터 예측을 생성하는 다른 방식은 시간적 참조 픽처(temporal reference picture) 내의 코로케이팅된(co-located) 블록 및/또는 인접한 블록으로부터 후보 예측의 리스트(list)를 생성하고, 선택된 후보를 움직임 벡터 예측자로서 시그널링하는 것이다. 움직임 벡터 값을 예측하는 것에 더하여, 어느 참조 픽처(들)가 움직임 보상된 예측을 위해 사용되는지 예측될 수 있고 이 예측 정보는 예컨대 이전에 코딩된/디코딩된 픽처의 참조 인덱스에 의해 표현될 수 있다. 참조 인덱스는 전형적으로 시간적 참조 픽처 내의 인접 블록 및/또는 코로케이팅된 블록으로부터 예측된다. 더욱이, 전형적인 고효율 비디오 코덱은 흔히 병합하기/병합 모드(merging/merge mode)로 불리는 추가 움직임 정보 코딩/디코딩 메커니즘을 이용하는데, 여기서 각각의 이용가능한 참조 픽처 리스트에 대해 움직임 벡터 및 대응하는 참조 픽처 인덱스를 포함하는 움직임 필드 정보(motion field information) 전부가, 어떤 수정/정정도 없이 예측되고 사용된다. 유사하게, 움직임 필드 정보를 예측하는 것은 시간적 참조 픽처 내의 인접한 블록 및/또는 코로케이팅된 블록의 움직임 필드 정보를 사용하여 수행되고 사용된 움직임 필드 정보는 이용가능한 인접한/코로케이팅된 블록의 움직임 필드 정보로써 채워진 움직임 필드 후보 리스트 중의 리스트 중에 시그널링된다.
전형적인 비디오 코덱은 (디)코딩되는 블록을 위해 단일 예측 블록이 사용되는 단예측(uni-prediction)과, (디)코딩되는 블록을 위한 예측을 형성하기 위해 두 개의 예측 블록이 조합되는 쌍예측(bi-prediction)의 사용을 가능하게 한다. 몇몇 비디오 코덱은 가중화된 예측(weighted prediction)을 가능하게 하는데, 여기서 예측 블록의 샘플 값은 잔차 정보를 추가하기 전에 가중화된다. 예컨대, 승산적 가중 인자(multiplicative weighting factor) 및 가산적 오프셋(additive offset)이 적용될 수 있다. 몇몇 비디오 코덱에 의해 가능하게 되는 명시적인 가중화된 예측에서, 가중 인자 및 오프셋은 예컨대 각각의 허용가능한 참조 픽처 인덱스에 대해 슬라이스 헤더 내에 코딩될 수 있다. 몇몇 비디오 코덱에 의해 가능하게 되는 묵시적인 가중화된 예측에서, 가중 인자 및/또는 오프셋은 코딩되지 않으나 가령 참조 픽처의 상대적인 픽처 순서 카운트(Picture Order Count: POC) 거리에 기반하여 도출된다.
전형적인 비디오 코덱에서 움직임 보상 후의 예측 잔차는 우선 (DCT 같은) 변환 커널(transform kernel)로써 변환되고 이후에 코딩된다. 이러한 것의 이유는 흔히 잔치 간에 어떤 상관(correlation)이 여전히 존재하고 변환은 많은 경우에 이 상관을 감소시키고 더 효율적인 코딩을 제공하는 데 도움이 될 수 있다는 것이다.
전형적인 비디오 인코더는 최적의 코딩 모드, 가령 원하는 매크로블록 모드 및 연관된 움직임 벡터를 찾아내기 위해 라그랑주 비용 함수(Lagrangian cost function)를 활용한다. 이 종류의 비용 함수는 손실 코딩(lossy coding) 방법으로 인한 (정확한 또는 추정된) 이미지 왜곡 및 이미지 영역 내의 픽셀 값을 표현하는 데에 요구되는 정보의 (정확한 또는 추정된) 양을 함께 결부시키기(tie) 위해 가중 인자 λ를 사용한다:
Figure 112017086840446-pct00001
여기서 C는 최소화될 라그랑주 비용(Lagrangian cost)이고, D는 모드 및 움직임 벡터가 고려된 이미지 왜곡(가령, 평균 제곱 오차(Mean Squared Error))이며, R은 (후보 움직임 벡터를 나타내기 위한 데이터의 양을 포함하여) 디코더에서 이미지 블록을 재구성하기 위한 요구되는 데이터를 나타내는 데에 필요한 비트(bit)의 개수이다.
비디오 코딩 표준 및 사양은 인코더로 하여금 코딩된 픽처를 코딩된 슬라이스 또는 비슷한 것으로 분할할 수 있도록 할 수 있다. 픽처내 예측은 전형적으로 슬라이스 경계에 걸쳐 불능화된다(disabled). 그러므로, 슬라이스는 코딩된 픽처를 독립적으로 디코딩가능한 단편으로 나누는 방식으로 간주될 수 있다. H.264/AVC 및 HEVC에서, 픽처내 예측은 슬라이스 경계에 걸쳐 불능화될 수 있다. 그러므로, 슬라이스는 코딩된 픽처를 독립적으로 디코딩가능한 단편으로 나누는 방식으로 간주될 수 있고, 따라서 슬라이스는 흔히 송신을 위한 기초 단위로 간주된다. 많은 경우에, 인코더는 어느 유형의 픽처내 예측이 슬라이스 경계에 걸쳐 꺼지는지(turned off)를 비트스트림 내에 나타낼 수 있고, 디코더 동작은 이 정보를 예컨대 어느 예측 소스가 이용가능한지를 판단을 내리는 경우에 고려한다. 예컨대, 만일 이웃 매크로블록 또는 CU가 상이한 슬라이스 내에 상주하는(reside) 경우, 이웃 매크로블록 또는 CU로부터의 샘플은 인트라 예측을 위해 이용불가한 것으로 간주될 수 있다.
각각 H.264/AVC 또는 HEVC 인코더의 출력 및 H.264/AVC 또는 HEVC 디코더의 입력을 위한 기초 단위는, 네트워크 추상화 계층(Network Abstraction Layer: NAL) 단위이다. 패킷 지향형(packet-oriented) 네트워크 상에서의 전송 또는 구조화된 파일 내로의 저장을 위해, NAL 단위는 패킷 또는 유사한 구조 내로 캡슐화될 수 있다. 프레이밍 구조(framing structure)를 제공하지 않는 송신 또는 저장 환경을 위해 H.264/AVC 및 HEVC 내에 바이트스트림(bytestream) 포맷이 명시되었다. 바이트스트림 포맷은 각각의 NAL 단위 앞에 시작 코드(start code)를 붙임으로써 NAL 단위를 서로 분리한다. NAL 단위 경계의 오검출(false detection)을 피하기 위하여, 인코더는 바이트 지향형(byte-oriented) 시작 코드 에뮬레이션(emulation) 방지 알고리즘을 구동하는데, 이는 만일 그렇지 않으면 시작 코드가 나타났을 것인 경우 에뮬레이션 방지 바이트를 NAL 단위 페이로드에 추가한다. 패킷 지향형 시스템 및 스트림 지향형(stream-oriented) 시스템 간의 간단한 게이트웨이(gateway) 동작을 가능하게 하기 위해서, 시작 코드 에뮬레이션 방지는 바이트스트림 포맷이 사용 중인지 여부와 무관하게 항상 수행될 수 있다. NAL 단위는 후속할 데이터의 유형의 표시 및 에뮬레이션 방지 바이트와 함께 필요에 따라 점재된(interspersed) RBSP의 형태로 그 데이터를 포함하는 바이트를 포함하는 구문론 구조로서 정의될 수 있다. 미가공 바이트 시퀀스 페이로드(Raw Byte Sequence Payload: RBSP)는 NAL 단위 내에 캡슐화된 정수 개의 바이트를 포함하는 구문론 구조로서 정의될 수 있다. RBSP는 비어 있거나 아니면 RBSP 정지 비트(stop bit)가 후속하고 0과 동일한 0개 이상의 차후의 비트가 후속하는 구문론 요소를 포함하는 데이터 비트의 스트링(string)의 형태를 가진다.
NAL 단위는 헤더 및 페이로드로 이루어진다. H.264/AVC 및 HEVC에서, NAL 단위 헤더는 NAL 단위의 유형을 나타낸다.
H.264/AVC NAL 단위 헤더는 2비트 nal_ref_idc 구문론 요소를 포함하는데, 이는 0과 동일한 경우 NAL 단위 내에 포함된 코딩된 슬라이스가 비참조 픽처(non-reference picture)의 일부임을 나타내고, 0보다 더 큰 경우 NAL 단위 내에 포함된 코딩된 슬라이스가 참조 픽처의 일부임을 나타낸다. SVC 및 MVC NAL 단위를 위한 헤더는 스케일가능성 및 멀티뷰 계층구조(hierarchy)에 관련된 다양한 표시를 추가적으로 포함할 수 있다. HEVC에서, 2바이트 NAL 단위 헤더는 모든 지정된 NAL 단위 유형을 위해 사용된다. NAL 단위 헤더는 하나의 보류된(reserved) 비트, 여섯 비트의 NAL 단위 유형 표시, 한시적 레벨(temporal level)을 위한 세 비트의 nuh_temporal_id_plus1 표시(1보다 더 크거나 동일하도록 요구될 수 있음) 및 여섯 비트의 nuh_layer_id 구문론 요소를 포함한다. temporal_id_plus1 구문론 요소는 NAL 단위를 위한 한시적 식별자(temporal identifier)로 간주될 수 있고, 0에서부터의(zero-based) TemporalID 변수가 다음과 같이 도출될 수 있다: TemporalId = temporal_id_plus1 - 1. 0과 동일한 TemporalId는 가장 낮은 한시적 레벨에 대응한다. temporal_id_plus1의 값은 두 NAL 단위 헤더 바이트를 수반하는 시작 코드 에뮬레이션을 피하기 위해서 0이 아니도록 요구된다. 선택된 값보다 더 크거나 동일한 TemporalId를 가진 모든 VCL NAL 단위를 배제하고 모든 다른 VCL NAL 단위를 포함시킴으로써 생성된 비트스트림은 합치하는 채로 있다. 결과적으로, TID와 동일한 TemporalId를 가진 픽처는 TID보다 더 큰 TemporalId를 가진 어떤 픽처도 인터 예측 참조로서 사용하지 않는다. 서브계층(sub-layer) 또는 시간적 서브계층은 TemporalId 변수의 특정한 값을 갖는 VCL NAL 단위 및 연관된 비-VCL NAL 단위(non-VCL NAL unit)으로 이루어진 시간적 스케일가능(temporal scalable) 비트스트림의 시간적 스케일가능 계층이라고 정의될 수 있다. nuh_layer_id는 스케일가능성 계층 식별자(scalability layer identifier)로서 이해될 수 있다.
NAL 단위는 비디오 코딩 계층(Video Coding Layer: VCL) NAL 단위 및 비-VCL NAL 단위로 분류될 수 있다. 전형적으로 VCL NAL 단위는 코딩된 슬라이스 NAL 단위이다. H.264/AVC에서, 코딩된 슬라이스 NAL 단위는 압축되지 않은 픽처 내의 샘플의 블록에 각각이 대응하는 하나 이상의 코딩된 매크로블록을 표현하는 구문론 요소를 포함한다. HEVC에서, VCL NAL 단위는 하나 이상의 CU를 표현하는 구문론 요소를 포함한다.
H.264/AVC에서, 코딩된 슬라이스 NAL 단위는 순간적 디코딩 리프레시(Instantaneous Decoding Refresh: IDR) 픽처 내의 코딩된 슬라이스 또는 비-IDR 픽처 내의 코딩된 슬라이스이도록 나타내어질 수 있다.
HEVC에서, 코딩된 슬라이스 NAL 단위는 이하의 유형 중 하나이도록 나타내어질 수 있다:
Figure 112017086840446-pct00002
HEVC에서, 픽처 유형을 위한 약칭은 다음과 같이 정의될 수 있다: 트레일링(trailing)(TRAIL) 픽처, 시간적 서브계층 액세스(Temporal Sub-layer Access: TSA), 단계식 시간적 서브계층 액세스(Step-wise Temporal Sub-layer Access: STSA), 랜덤 액세스 디코딩가능 리딩(Random Access Decodable Leading: RADL) 픽처, 랜덤 액세스 생략형 리딩(Random Access Skipped Leading: RASL) 픽처, 절단 링크 액세스(Broken Link Access: BLA) 픽처, 순간적 디코딩 리프레시(Instantaneous Decoding Refresh: IDR) 픽처, 클린 랜덤 액세스(Clean Random Access: CRA) 픽처.
랜덤 액세스 포인트(Random Access Point: RAP) 픽처는, 인트라 랜덤 액세스 포인트(Intra Random Access Point: IRAP) 픽처로도 지칭될 수 있는 것으로서, 각각의 슬라이스 또는 슬라이스 세그먼트가 16에서 23까지(16과 23도 포함함)의 범위 내의 nal_unit_type을 가진 픽처이다. 독립적인 계층 내의 IRAP 픽처는 오직 인트라 코딩된 슬라이스를 포함한다. nuh_layer_id 값 currLayerId를 갖는 예측 계층(predicted layer)에 속한 IRAP 픽처는 P, B 및 I 슬라이스를 포함할 수 있고, currLayerId와 동일한 nuh_layer_id를 갖는 다른 픽처로부터 인터 예측을 사용할 수 없으며, 그것의 직접적인 참조 계층으로부터 계층간 예측을 사용할 수 있다. HEVC의 현재 버전에서, IRAP 픽처는 BLA 픽처, CRA 픽처 또는 IDR 픽처일 수 있다. 기본 계층을 포함하는 비트스트림 내의 첫 번째 픽처는 기본 계층에서의 IRAP 픽처이다. 만약에 필요한 파라미터 세트가 그것이 활성화될 필요가 있는 경우에 이용가능하다면, 독립적인 계층에서의 IRAP 픽처 및 디코딩 순서에 있어서 독립적인 계층에서의 모든 차후의 비-RASL 픽처는 디코딩 순서에 있어서 IRAP 픽처를 선행하는 어떤 픽처의 디코딩 프로세스도 수행하지 않고서 정확히 디코딩될 수 있다. nuh_layer_id 값 currLayerId를 갖는 예측 계층에 속한 IRAP 픽처 및 디코딩 순서에 있어서 currLayerId와 동일한 nuh_layer_id를 갖는 모든 차후의 비-RASL 픽처는, 필요한 파라미터 세트가 그것이 활성화될 필요가 있는 경우에 이용가능한 경우 그리고 currLayerId와 동일한 nuh_layer_id를 갖는 계층의 각각의 직접적인 참조 계층의 디코딩이 개시된 경우(즉 currLayerId와 동일한 nuh_layer_id를 갖는 계층의 직접적인 참조 계층의 모든 nuh_layer_id 값과 동일한 refLayerId에 대해 LayerInitializedFlag[refLayerId]가 1과 동일한 경우), 디코딩 순서에 있어서 IRAP 픽처에 선행하는 currLayerId와 동일한 nuh_layer_id를 갖는 어떤 픽처의 디코딩 프로세스도 수행하지 않고서 정확히 디코딩될 수 있다. IRAP 픽처가 아닌 인트라 코딩된 슬라이스만을 포함하는 픽처가 비트스트림 내에 있을 수 있다.
HEVC에서 CRA 픽처는 디코딩 순서로 비트스트림 내의 첫 번째 픽처일 수 있거나, 비트스트림 내에서 나중에 출현할 수 있다. HEVC에서의 CRA 픽처는 디코딩 순서에서 CRA 픽처에 후속하나 출력 순서에서 그것에 선행하는 이른바 리딩 픽처(leading picture)를 허용한다. 리딩 픽처 중 일부, 이른바 RASL 픽처는, 참조로서 CRA 픽처 전에 디코딩된 픽처를 사용할 수 있다. 디코딩 및 출력 순서 양자 모두에서 CRA 픽처에 후속하는 픽처는 만일 랜덤 액세스가 CRA 픽처에서 수행되는 경우 디코딩가능하고, 따라서 IDR 픽처의 클린 랜덤 액세스 기능과 유사하게 클린 랜덤 액세스가 달성된다.
CRA 픽처는 연관된 RADL 또는 RASL 픽처를 가질 수 있다. CRA 픽처가 디코딩 순서로 비트스트림 내의 첫 번째 픽처인 경우, CRA 픽처는 디코딩 순서에 있어서 코딩된 비디오 시퀀스의 첫 번째 픽처이고, 어떤 연관된 RASL 픽처도 디코더에 의해 출력되지 않으며 디코딩가능하지 않을 수 있는데, 그것은 비트스트림 내에 존재하지 않는 픽처에 대한 참조를 포함할 수 있기 때문이다.
리딩 픽처는 출력 순서에 있어서 연관된 RAP 픽처에 선행하는 픽처이다. 연관된 RAP 픽처는 (만일 존재한다면) 디코딩 순서에서 이전의 RAP 픽처이다. 리딩 픽처는 RADL 픽처이거나 아니면 RASL 픽처이다.
모든 RASL 픽처는 연관된 BLA 또는 CRA 픽처의 리딩 픽처이다. 연관된 RAP 픽처가 BLA 픽처이거나 비트스트림 내의 첫 번째 코딩된 픽처인 경우, RASL 픽처는 출력되지 않으며 정확히 디코딩가능하지 않을 수 있는데, RASL 픽처는 비트스트림 내에 존재하지 않는 픽처에 대한 참조를 포함할 수 있기 때문이다. 그러나, RASL 픽처는 만일 RASL 픽처의 연관된 RAP 픽처 전에 RAP 픽처로부터 디코딩이 시작한 경우 정확히 디코딩될 수 있다. RASL 픽처는 비-RASL 픽처의 디코딩 프로세스를 위해 참조 픽처로서 사용되지 않는다. 존재하는 경우, 모든 RASL 픽처는, 디코딩 순서에 있어서, 동일한 연관된 RAP 픽처의 모든 트레일링 픽처에 선행한다. HEVC 표준의 몇몇 초안에서, RASL 픽처는 폐기를 위해 태깅된(Tagged for Discard: TFD) 픽처로 참조되었다.
모든 RADL 픽처는 리딩 픽처이다. RADL 픽처는 동일한 연관된 RAP 픽처의 트레일링 픽처의 디코딩 프로세스를 위해 참조 픽처로서 사용되지 않는다. 존재하는 경우, 모든 RADL 픽처는, 디코딩 순서에 있어서, 동일한 연관된 RAP 픽처의 모든 트레일링 픽처에 선행한다. RADL 픽처는 디코딩 순서에 있어서 연관된 RAP 픽처에 선행하는 어떤 픽처도 참조하지 않으며 따라서 연관된 RAP 픽처로부터 디코딩이 시작하는 경우 정확히 디코딩될 수 있다. HEVC 표준의 몇몇 초안에서, RADL 픽처는 디코딩가능 리딩 픽처(Decodable Leading Picture: DLP)로 참조되었다.
CRA 픽처로부터 시작하는 비트스트림의 일부가 다른 비트스트림 내에 포함되는 경우, CRA 픽처와 연관된 RASL 픽처는 정확히 디코딩가능하지 않을 수 있는데, 그것의 참조 픽처 중 일부는 조합된 비트스트림 내에 존재하지 않을 수가 있기 때문이다. 그러한 접합(splicing) 동작을 간단하게 하기 위하여, CRA 픽처의 NAL 단위 유형은 그것이 BLA 픽처임을 나타내도록 변경될 수 있다. BLA 픽처와 연관된 RASL 픽처는 정확히 디코딩가능하지 않을 수 있는바 따라서 출력/디스플레이되지 않는다. 나아가, BLA 픽처와 연관된 RASL 픽처는 디코딩으로부터 제외될 수 있다.
BLA 픽처는 디코딩 순서로 비트스트림 내의 첫 번째 픽처일 수 있거나, 비트스트림 내에 나중에 출현할 수 있다. 각각의 BLA 픽처는 새로운 코딩된 비디오 시퀀스를 시작하고, 디코딩 프로세스에 대해 IDR 픽처와 유사한 효과를 가진다. 그러나, BLA 픽처는 비어 있지 않은 참조 픽처 세트를 명시하는 구문론 요소를 포함한다. BLA 픽처가 BLA_W_LP와 동일한 nal_unit_type을 가진 경우, 그것은 연관된 RASL 픽처를 가질 수 있되, 이는 디코더에 의해 출력되지 않으며 디코딩가능하지 않을 수 있는데, 그것은 비트스트림 내에 존재하지 않는 픽처에 대한 참조를 포함할 수 있기 때문이다. BLA 픽처가 BLA_W_LP와 동일한 nal_unit_type을 가진 경우, 그것은 연관된 RADL 픽처를 또한 가질 수 있되, 이는 디코딩될 것으로 명시된다. BLA 픽처가 BLA_W_DLP와 동일한 nal_unit_type을 가진 경우, 그것은 연관된 RASL 픽처를 갖지 않지만 연관된 RADL 픽처를 가질 수 있되, 이는 디코딩될 것으로 명시된다. BLA 픽처가 BLA_N_LP와 동일한 nal_unit_type을 가진 경우, 그것은 어떤 연관된 리딩 픽처도 갖지 않는다.
IDR_N_LP와 동일한 nal_unit_type을 가진 IDR 픽처는 비트스트림 내에 존재하는 연관된 리딩 픽처를 갖지 않는다. IDR_W_LP와 동일한 nal_unit_type을 가진 IDR 픽처는 비트스트림 내에 존재하는 연관된 RASL 픽처를 갖지 않지만, 비트스트림 내의 연관된 RADL 픽처를 가질 수 있다.
nal_unit_type의 값이 TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12, 또는 RSV_VCL_N14와 동일한 경우, 디코딩된 픽처는 동일한 시간적 서브계층의 어떤 다른 픽처를 위해서도 참조로서 사용되지 않는다. 즉, HEVC에서, nal_unit_type의 값이 TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12, 또는 RSV_VCL_N14와 동일한 경우, 디코딩된 픽처는 동일한 값의 TemporalId를 갖는 임의의 픽처의 RefPicSetStCurrBefore, RefPicSetStCurrAfter 및 RefPicSetLtCurr 중 어느 것 내에도 포함되지 않는다. TRAIL_N, TSA_N, STSA_N, RADL_N, RASL_N, RSV_VCL_N10, RSV_VCL_N12, 또는 RSV_VCL_N14와 동일한 nal_unit_type을 갖는 코딩된 픽처는 동일한 값의 TemporalId를 갖는 다른 픽처의 디코딩가능성에 영향을 미치지 않고서 폐기될 수 있다.
트레일링 픽처는 출력 순서에 있어서 연관된 RAP 픽처에 후속하는 픽처로서 정의될 수 있다. 트레일링 픽처인 어떤 픽처도 RADL_N, RADL_R, RASL_N 또는 RASL_R과 동일한 nal_uni_type을 갖지 않는다. 리딩 픽처인 임의의 픽처는, 디코딩 순서에 있어서, 동일한 RAP 픽처와 연관된 모든 트레일링 픽처에 선행하도록 제한될 수 있다. BLA_W_DLP 또는 BLA_N_LP와 동일한 nal_unit_type을 가진 BLA 픽처와 연관된 RASL 픽처는 비트스트림 내에 하나도 존재하지 않는다. BLA_N_LP와 동일한 nal_unit_type을 가진 BLA 픽처와 연관된 또는 IDR_N_LP와 동일한 nal_unit_type을 가진 IDR 픽처와 연관된 RADL 픽처는 비트스트림 내에 하나도 존재하지 않는다. CRA 또는 BLA 픽처와 연관된 임의의 RASL 픽처는 출력 순서에 있어서 CRA 또는 BLA 픽처와 연관된 임의의 RADL 픽처에 선행하도록 제한될 수 있다. CRA 픽처와 연관된 임의의 RASL 픽처는, 디코딩 순서에 있어서 CRA 픽처에 선행하는 임의의 다른 RAP 픽처를 출력 순서에 있어서 후속하도록 제한될 수 있다.
HEVC에서 두 개의 픽처 유형, TSA 및 STSA 픽처 유형이 있는데 그것은 시간적 서브계층 전환점(temporal sub-layer switching point)을 나타내는 데에 사용될 수 있다. 만일 최대 N의 TemporalId를 갖는 시간적 서브계층이 TSA 또는 STSA 픽처(배타적임) 및 TSA 또는 STSA 픽처가 N+1과 동일한 TemporalId를 가질 때까지 디코딩된 경우, TSA 또는 STSA 픽처는 N+1과 동일한 TemporalId를 가진 (디코딩 순서에 있어서) 모든 차후의 픽처의 디코딩을 가능하게 한다. TSA 픽처 유형은 TSA 픽처 자체, 그리고 디코딩 순서에 있어서 TSA 픽처에 후속하는 동일한 서브계층 내의 모든 픽처에 대해 제한을 부과할 수 있다. 이들 픽처 중 아무것도 디코딩 순서에 있어서 TSA 픽처에 선행하는 동일한 서브계층 내의 임의의 픽처로부터 인터 예측을 사용하도록 허용되지 않는다. TSA 정의는 디코딩 순서에 있어서 TSA 픽처에 후속하는 더 높은 서브계층 내의 픽처에 대해 제한을 더 부과할 수 있다. 이들 픽처 중 아무것도 디코딩 순서에 있어서 TSA 픽처에 선행하는 픽처를, 만일 그 픽처가 TSA 픽처와 동일하거나 더 높은 서브계층에 속하는 경우 참조하도록 허용되지 않는다. TSA 픽처는 0보다 더 큰 TemporalId를 가진다. STSA는 TSA 픽처와 유사하나 디코딩 순서에 있어서 STSA 픽처에 후속하는 더 높은 서브계층 내의 픽처에 대해 제한을 부과하지 않고 따라서 STSA 픽처가 상주하는 서브계층 상으로만 상향전환(up-switching)을 가능하게 한다.
비-VCL NAL 단위는 예컨대 이하의 유형 중 하나일 수 있다: 시퀀스 파라미터 세트, 픽처 파라미터 세트, 보충적 향상 정보(Supplemental Enhancement Information: SEI) NAL 단위, 액세스 단위 구분자(access unit delimiter), 시퀀스 NAL 단위의 종단, 비트스트림 NAL 단위의 종단, 또는 필러(filler) 데이터 NAL 단위. 파라미터 세트는 디코딩된 픽처의 재구성을 위해 필요할 수 있는 반면, 다른 비-VCL NAL 단위 중 다수는 디코딩된 샘플 값의 재구성에 필요하지 않다.
코딩된 비디오 시퀀스 내내 변함없이 남아 있는 파라미터가 시퀀스 파라미터 세트 내에 포함될 수 있다. 디코딩 프로세스가 필요로 할 수 있는 파라미터에 더하여, 시퀀스 파라미터 세트는, 버퍼링(buffering), 픽처 출력 타이밍(picture output timing), 렌더링(rendering) 및 리소스 예약(resource reservation)에 중요할 수 있는 파라미터를 포함하는 비디오 유용성 정보(Video Usability Information: VUI)를 선택적으로 포함할 수 있다. 시퀀스 파라미터 세트를 전달하도록 H.264/AVC에 명시된 세 개의 NAL 단위가 있다: 시퀀스 내의 H.264/AVC VCL NAL 단위를 위한 모든 데이터를 포함하는 시퀀스 파라미터 세트 NAL 단위, 보조적 코딩된 픽처(auxiliary coded picture)를 위한 데이터를 포함하는 시퀀스 파라미터 세트 확장 NAL 단위, 그리고 MVC 및 SVC VCL NAL 단위를 위한 서브세트 시퀀스 파라미터 세트. HEVC에서 시퀀스 파라미터 세트 RBSP는 하나 이상의 픽처 파라미터 세트 RBSP에 의해 또는 버퍼링 기간 SEI 메시지를 포함하는 하나 이상의 SEI NAL 단위에 의해 참조될 수 있는 파라미터를 포함한다. 픽처 파라미터 세트는 몇 개의 코딩된 픽처 내에서 변경되지 않을 공산이 있는 그러한 파라미터를 포함한다. 픽처 파라미터 세트 RBSP는 하나 이상의 코딩된 픽처의 코딩된 슬라이스 NAL 단위에 의해 참조될 수 있는 파라미터를 포함할 수 있다.
HEVC에서, 비디오 파라미터 세트(Video Parameter Set: VPS)는 각각의 슬라이스 세그먼트 헤더 내에서 발견되는 구문론 요소에 의해 참조되는 PPS 내에서 발견되는 구문론 요소에 의해 참조되는 SPS 내에서 발견되는 구문론 요소의 내용에 의해 결정되는 바와 같이 0개 이상의 전체적인 코딩된 비디오 시퀀스에 적용되는 구문론 요소를 포함하는 구문론 구조로서 정의될 수 있다.
비디오 파라미터 세트 RBSP는 하나 이상의 시퀀스 파라미터 세트 RBSP에 의해 참조될 수 있는 파라미터를 포함할 수 있다.
비디오 파라미터 세트(Video Parameter Set: VPS), 시퀀스 파라미터 세트(Sequence Parameter Set: SPS) 및 픽처 파라미터 세트(Picture Parameter Set: PPS) 간의 관계 및 계층구조는 다음과 같이 기술될 수 있다. VPS는 스케일가능성 및/또는 3D 비디오의 맥락 내에서 그리고 파라미터 세트 계층구조 내에서 SPS보다 한 레벨 위에 상주한다. VPS는, 전체적인 코딩된 비디오 시퀀스 내의 모든 (스케일가능성 또는 뷰) 계층에 걸쳐서 모든 슬라이스에 대해 공통적인 파라미터를 포함할 수 있다. SPS는, 전체적인 코딩된 비디오 시퀀스 내의 특정한 (스케일가능성 또는 뷰) 계층 내의 모든 슬라이스에 대해 공통적이며, 여러 (스케일가능성 또는 뷰) 계층에 의해 공유될 수 있는 파라미터를 포함한다. PPS는, 특정한 계층 표현(하나의 액세스 단위 내의 하나의 스케일가능성 또는 뷰 계층의 표현) 내의 모든 슬라이스에 대해 공통적이고 여러 계층 표현 내의 모든 슬라이스에 의해 공유될 공산이 있는 파라미터를 포함한다.
VPS는 비트스트림 내의 계층의 종속성 관계에 대한 정보는 물론, 전체적인 코딩된 비디오 시퀀스 내의 모든 (스케일가능성 또는 뷰) 계층에 걸쳐서 모든 슬라이스에 적용가능한 많은 다른 정보를 제공할 수 있다. VPS는 두 부분, 기본 VPS 및 VPS 확장을 포함한다고 간주될 수 있는데, 여기서 VPS 확장은 선택적으로 존재할 수 있다. HEVC에서, 기본 VPS는 vps_extension() 구문론 구조 없이 video_parameter_set_rbsp() 구문론 구조를 포함한다고 간주될 수 있다. video_parameter_set_rbsp() 구문론 구조는 주로 이미 HEVC 버전 1을 위해 명시되었고 기본 계층 디코딩을 위해 소용 있을 수 있는 구문론 요소를 포함한다. HEVC에서, VPS 확장은 vps_extension() 구문론 구조를 포함한다고 간주될 수 있다. vps_extension() 구문론 구조는 주로 다층 확장을 위해 HEVC 버전 2에 명시되었고 하나 이상의 비기본(non-base) 계층의 디코딩을 위해 소용 있을 수 있는 구문론 요소, 예를 들어 계층 종속성 관계를 나타내는 구문론 요소를 포함한다.
H.264/AVC 및 HEVC 구문론은 파라미터 세트의 많은 인스턴스를 허용하고, 각각의 인스턴스는 고유한 식별자로써 식별된다. 파라미터 세트를 위해 필요한 메모리 사용을 한정하기 위해서, 파라미터 세트 식별자를 위한 값 범위는 한정되었다. H.264/AVC 및 HEVC에서, 각각의 슬라이스 헤더는 슬라이스를 포함하는 픽처의 디코딩을 위해 활성인 픽처 파라미터 세트의 식별자를 포함하고, 각각의 픽처 파라미터 세트는 활성 시퀀스 파라미터 세트의 식별자를 포함한다. 결과적으로, 픽처 및 시퀀스 파라미터 세트의 송신은 슬라이스의 송신과 정확하게 동기화될(synchronized) 필요가 없다. 대신에, 활성 시퀀스 및 파라미터 세트는 그것이 참조되기 전에 어느 때라도 수신되는 것으로 충분한데, 이는 슬라이스 데이터를 위해 사용되는 프로토콜에 비해 더 신뢰할 만한 송신 메커니즘을 사용하여 "대역외"(out-of-band)로 파라미터 세트의 송신을 가능케 한다. 예컨대, 실시간 전송 프로토콜(Real-time Transport Protocol: RTP) 세션을 위한 세션 서술(session description) 내에 파라미터로서 파라미터 세트가 포함될 수 있다. 만일 파라미터 세트가 대역내(in-band)로 송신되는 경우, 그것은 에러 강인성(error robustness)을 개선하기 위해 반복될 수 있다.
대역외 송신, 시그널링 또는 저장은 추가적으로 또는 대안적으로 송신 에러에 대한 내성(tolerance) 외에 다른 목적, 예를 들어 액세스 또는 세션 협상의 용이함을 위해 사용될 수 있다. 예컨대, ISO 베이스 미디어 파일 포맷(ISO Base Media File Format)에 합치하는 파일 내의 트랙(track)의 샘플 엔트리(sample entry)는 파라미터 세트를 포함할 수 있으나, 비트스트림 내의 코딩된 데이터는 그 파일 내의 타처에 또는 다른 파일 내에 저장된다. 구문 비트스트림을 따라서(along the bitstream)(가령 비트스트림을 따라서를 나타냄)는 대역외 데이터가 비트스트림과 연관된 방식으로 대역외 송신, 시그널링 또는 저장을 나타내도록 청구항 및 기술된 실시예에서 사용될 수 있다. 구문 비트스트림을 따라서 디코딩(decoding along the bitstream) 또는 비슷한 것은 비트스트림과 연관된 (대역외 송신, 시그널링 또는 저장으로부터 획득될 수 있는) 언급된 대역외 데이터를 디코딩함을 나타낼 수 있다.
파라미터 세트는 슬라이스로부터 또는 다른 활성 파라미터 세트로부터 또는 몇몇 경우에는 버퍼링 기간 SEI 메시지와 같은 다른 구문론 구조로부터 참조에 의해 활성화될 수 있다.
SEI NAL 단위는 하나 이상의 SEI 메시지를 포함할 수 있는데, 이는 출력 픽처의 디코딩을 위해 요구되지 않지만 관련된 프로세스, 예를 들어 픽처 출력 타이밍, 렌더링, 에러 검출, 에러 은폐 및 리소스 예약에서 도움이 될 수 있다. 몇 개의 SEI 메시지가 H.264/AVC 및 HEVC에 명시되고, 사용자 데이터 SEI 메시지는 조직 및 회사로 하여금 자기 자신의 사용을 위해 SEI 메시지를 명시할 수 있게 한다. H.264/AVC 및 HEVC는 명시된 SEI 메시지를 위한 구문론 및 의미론을 포함하나 수신자(recipient)에서의 메시지의 취급을 위한 어떤 프로세스도 정의되지 않는다. 결과적으로, 인코더는 그것이 SEI 메시지를 생성하는 경우 H.264/AVC 표준 또는 HEVC 표준을 따를 것이 요구되고, 각각 H.264/AVC 표준 또는 HEVC 표준에 합치하는 디코더는 출력 순서 합치를 위해 SEI 메시지를 처리하도록 요구되지 않는다. H.264/AVC 및 HEVC 내에 SEI 메시지의 구문론 및 의미론을 포함하는 이유 중 하나는 상이한 시스템 사양으로 하여금 동일하게 보충적 정보를 해석하고 따라서 연동될(interoperate) 수 있도록 하는 것이다. 시스템 사양은 인코딩 종단(encoding end) 및 디코딩 종단(decoding end) 양자 모두에서 특정한 SEI 메시지의 사용을 요구할 수 있다고 의도되고, 추가적으로 수신자에서 특정한 SEI 메시지를 취급하기 위한 프로세스가 명시될 수 있다.
HEVC에서, 서로 상이한 nal_unit_type 값을 가진 두 유형의 SEI NAL 단위, 즉 접미(suffix) SEI NAL 단위 및 접두(prefix) SEI NAL 단위가 있다. 접미 SEI NAL 단위 내에 포함된 SEI 메시지(들)는, 디코딩 순서에 있어서, 접미 SEI NAL 단위에 선행하는 VCL NAL 단위와 연관된다. 접두 SEI NAL 단위 내에 포함된 SEI 메시지(들)는, 디코딩 순서에 있어서, 접두 SEI NAL 단위에 후속하는 VCL NAL 단위와 연관된다.
코딩된 픽처는 픽처의 코딩된 표현(coded representation)이다. H.264/AVC에서의 코딩된 픽처는 픽처의 디코딩을 위해 요구되는 VCL NAL 단위를 포함한다. H.264/AVC에서, 코딩된 픽처는 주요 코딩된 픽처(primary coded picture) 또는 중복적 코딩된 픽처(redundant coded picture)일 수 있다. 주요 코딩된 픽처는 유효한 비트스트림의 디코딩 프로세스에서 사용되는 반면, 중복적인 코딩된 픽처는 주요 코딩된 픽처가 성공적으로 디코딩될 수 없는 경우에 디코딩될 뿐이어야 하는 중복적 표현이다. HEVC에서, 어떤 중복적 코딩된 픽처도 명시되지 않았다.
H.264/AVC에서, 액세스 단위(Access Unit: AU)는 주요 코딩된 픽처 및 그것과 연관된 그런 NAL 단위를 포함한다. H.264/AVC에서, 액세스 단위 내의 NAL 단위의 출현 순서는 다음과 같이 제한된다. 선택적인 액세스 단위 구분자 NAL 단위가 액세스 단위의 시작을 나타낼 수 있다. 그것에 0개 이상의 SEI NAL 단위가 뒤따른다. 주요 코딩된 픽처의 코딩된 슬라이스가 다음에 나타난다. H.264/AVC에서, 주요 코딩된 픽처의 코딩된 슬라이스에는 0개 이상의 중복적인 코딩된 픽처를 위한 코딩된 슬라이스가 후속할 수 있다. 중복적 코딩된 픽처는 픽처 또는 픽처의 일부의 코딩된 표현이다. 중복적 코딩된 픽처는 만일 주요 코딩된 픽처가 예컨대 송신에서의 손실(loss) 또는 물리적 저장 매체에서의 변질(corruption)로 인해 디코더에 의해 수신되지 않는 경우 디코딩될 수 있다.
H.264/AVC에서, 액세스 단위는, 주요 코딩된 픽처를 보충하는 픽처이며 예컨대 디스플레이 프로세스에서 사용될 수 있는 보조적 코딩된 픽처를 또한 포함할 수 있다. 보조적 코딩된 픽처는 예컨대 디코딩된 픽처 내의 샘플의 투명성 레벨(transparency level)을 명시하는 알파 채널(alpha channel) 또는 알파 평면(alpha plane)으로서 사용될 수 있다. 알파 채널 또는 평면은 계층화된(layered) 작성 또는 렌더링 시스템에서 사용될 수 있는데, 여기서 출력 픽처는 서로의 위에 적어도 부분적으로 투명한 픽처를 오버레이함(overlaying)으로써 형성된다. 보조적 코딩된 픽처는 모노크롬 중복적 코딩된 픽처와 동일한 구문론적 및 의미론적 제한을 가진다. H.264/AVC에서, 보조적 코딩된 픽처는 주요 코딩된 픽처와 동일한 수의 매크로블록을 포함한다.
HEVC에서, 코딩된 픽처는 픽처의 모든 코딩 트리 단위를 포함하는 픽처의 코딩된 표현으로서 정의될 수 있다. HEVC에서, 액세스 단위(Access Unit: AU)는 명시된 분류 규칙에 따라 서로 연관되고, 디코딩 순서에서 연속적이며, 임의의 특정 값의 nuh_layer_id를 갖는 기껏해야 하나의 픽처를 포함하는 NAL 단위의 세트로서 정의될 수 있다. 코딩된 픽처의 VCL NAL 단위를 포함하는 것에 더하여, 액세스 단위는 비-VCL NAL 단위를 또한 포함할 수 있다.
코딩된 픽처가 액세스 단위 내에서 어떤 순서로 나타나는 것이 요구될 수 있다. 예컨대 nuhLayerIdA와 동일한 nuh_layer_id를 갖는 코딩된 픽처는, 디코딩 순서에 있어서, 동일한 액세스 단위 내에서 nuhLayerIdA보다 더 큰 nuh_layer_id를 갖는 모든 코딩된 픽처에 선행하도록 요구될 수 있다.
HEVC에서, 픽처 단위는 코딩된 픽처의 모든 VCL NAL 단위 및 그것의 연관된 비-VCL NAL 단위를 포함하는 NAL 단위의 세트로서 정의될 수 있다. 비-VCL NAL 단위를 위한 연관된 VCL NAL 단위는, 어떤 유형의 비-VCL NAL 단위에 대해 비-VCL NAL 단위의, 디코딩 순서에 있어서의 선행 VCL NAL 단위 및 다른 유형의 비-VCL NAL 단위에 대해 비-VCL NAL 단위의, 디코딩 순서에 있어서의 다음 VCL NAL 단위로서 정의될 수 있다. VCL NAL 단위를 위한 연관된 비-VCL NAL 단위는, 비-VCL NAL 단위로서 이에 대해 VCL NAL 단위는 연관된 VCL NAL 단위인 것이라고 정의될 수 있다. 예컨대, HEVC에서, 연관된 VCL NAL 단위는 EOS_NUT, EOB_NUT, FD_NUT, 또는 SUFFIX_SEI_NUT과 동일하거나 RSV_NVCL45...RSV_NVCL47 또는 UNSPEC56...UNSPEC63의 범위 내의 nal_unit_type을 갖는 비-VCL NAL 단위에 대해 디코딩 순서에 있어서의 선행 VCL NAL 단위, 또는 그렇지 않으면 디코딩 순서에 있어서의 다음 VCL NAL 단위로서 정의될 수 있다.
비트스트림은, 코딩된 픽처 및 연관된 데이터(하나 이상의 코딩된 비디오 시퀀스를 형성함)의 표현을 형성하는, NAL 단위 스트림 또는 바이트 스트림의 형태로 된, 비트의 시퀀스로서 정의될 수 있다. 동일한 논리적 채널 내에서, 예를 들어 동일한 파일 내에서 또는 통신 프로토콜의 동일한 연결 내에서, 제2 비트스트림이 제1 비트스트림에 후속할 수 있다. (비디오 코딩의 맥락 내의) 기초 스트림은 하나 이상의 비트스트림의 시퀀스로서 정의될 수 있다. 제1 비트스트림의 종단은 특정 NAL 단위에 의해 나타내어질 수 있는데, 이는 비트스트림 종단(End Of Bitstream: EOB) NAL 단위로서 지칭될 수 있고 이는 비트스트림의 마지막 NAL 단위이다. HEVC 및 그것의 현재의 초안 확장에서, EOB NAL 단위는 0과 동일한 nuh_layer_id를 갖도록 요구된다.
H.264/AVC에서, 코딩된 비디오 시퀀스는 IDR 액세스 단위(포함함)로부터 다음의 IDR 액세스 단위(배제함) 또는 비트스트림의 종단, 어느 쪽이든 더 일찍 나타나는 것까지 디코딩 순서에 있어서 연속적인 액세스 단위의 시퀀스라고 정의된다.
HEVC에서, 코딩된 비디오 시퀀스(Coded Video Sequence: CVS)는, 예컨대, 디코딩 순서에 있어서 1과 동일한 NoRaslOutputFlag를 갖는 IRAP 액세스 단위, 이에 뒤이어 1과 동일한 NoRaslOutputFlag를 갖는 IRAP 액세스 단위가 아닌 0개 이상의 액세스 단위(1과 동일한 NoRaslOutputFlag를 갖는 IRAP 액세스 단위인 임의의 차후의 액세스 단위까지이나 이는 포함하지 않는 모든 차후의 액세스 단위를 포함함)로 이루어진 액세스 단위의 시퀀스로서 정의될 수 있다. IRAP 액세스 단위는 기본 계층 픽처가 IRAP 픽처인 액세스 단위로서 정의될 수 있다. 디코딩 순서에 있어서 동일한 값의 nuh_layer_id를 가진 시퀀스 NAL 단위의 종단에 후속하는 첫 번째 IRAP 픽처인, 디코딩 순서에 있어서 비트스트림 내에서 그 특정한 계층 내의 첫 번째 픽처인 각각의 IRAP 픽처와, 각각의 BLA 픽처, 각각의 IDR 픽처에 대해 NoRaslOutputFlag의 값은 1과 동일하다. 다층 HEVC에서, 각각의 IRAP 픽처에 대해, 그것의 nuh_layer_id가, j가 0에서부터 NumDirectRefLayers[nuh_layer_id]-1까지(이들을 포함함)의 범위 내인 경우에 IdDirectRefLayer[nuh_layer_id][j]와 동일한 refLayerId의 모든 값에 대해 LayerInitializedFlag[nuh_layer_id]가 0과 동일하고 LayerInitializedFlag[refLayerId]가 1과 동일한 그러한 것인 경우에, NoRaslOutputFlag의 값은 1과 동일하다. 그렇지 않으면, NoRaslOutputFlag의 값은 HandleCraAsBlaFlag와 동일하다. 1과 동일한 NoRaslOutputFlag는 NoRaslOutputFlag가 설정된 IRAP 픽처와 연관된 RASL 픽처가 디코더에 의해 출력되지 않는다는 영향을 준다. 디코더를 제어할 수 있는 외부 개체, 예를 들어 플레이어 또는 수신기로부터 디코더에 HandleCraAsBlaFlag의 값을 제공하는 수단이 있을 수 있다. HandleCraAsBlaFlag는 예컨대 비트스트림 내의 새로운 위치를 구하거나 브로드캐스트(broadcast) 내로 튜닝하고(tune) 디코딩을 시작하며 이후 CRA 픽처로부터 디코딩을 시작하는 플레이어에 의해 1로 설정될 수 있다. HandleCraAsBlaFlag가 CRA 픽처에 대해 1과 동일한 경우, CRA 픽처는 마치 그것이 BLA 픽처인 것처럼 취급되고 디코딩된다.
HEVC에서, 시퀀스 종료(End Of Sequence: EOS) NAL 단위로서 지칭될 수 있는 특정 NAL 단위가 비트스트림 내에 나타나고 0과 동일한 nuh_layer_id를 가진 경우, 코딩된 비디오 시퀀스가 종료하도록 (위의 사양에 대해) 추가적으로 또는 대안적으로 명시될 수 있다.
HEVC에서, 코딩된 비디오 시퀀스 그룹(Coded Video Sequence Group: CVSG)은, 예컨대, 디코딩 순서에 있어서, 아직 활성이 아니었던 VPS RBSP firstVpsRbsp를 활성화하는 IRAP 액세스 단위, 이에 뒤이어 비트스트림의 종단 또는 firstVpsRbsp와는 상이한 VPS RBSP를 활성화하는 액세스 단위, 어느 쪽이든 디코딩 순서에서 더 이른 것까지이되 이는 배제하고서 firstVpsRbsp가 활성 VPS RBSP인, 디코딩 순서에 있어서의 모든 차후의 액세스 단위로 집합적으로 이루어진 하나 이상의 연속적인 CVS로서 정의될 수 있다.
픽처 구조(Structure of Pictures: SOP)는 디코딩 순서에 있어서 연속적인 하나 이상의 코딩된 픽처로서 정의될 수 있는데, 여기에서 디코딩 순서에서 첫 번째 코딩된 픽처는 가장 낮은 시간적 서브계층에서의 참조 픽처이고 잠재적으로 디코딩 순서에서의 첫 번째 코딩된 픽처 외의 어떤 코딩된 픽처도 RAP 픽처가 아니다. 이전의 SOP 내의 모든 픽처는 디코딩 순서에 있어서 현재의 SOP 내의 모든 픽처에 선행하고 다음의 SOP 내의 모든 픽처는 디코딩 순서에 있어서 현재의 SOP 내의 모든 픽처를 뒤따른다. SOP는 계층구조적(hierarchical)이고 반복적인 인터 예측 구조를 표현할 수 있다. 용어 픽처 그룹(Group Of Pictures: GOP)은 용어 SOP와 교환가능하게 때때로 사용되고 SOP의 의미론과 동일한 의미론을 가질 수 있다.
H.264/AVC 및 HEVC의 비트스트림 구문론은 특정한 픽처가 임의의 다른 픽처의 인터 예측을 위한 참조 픽처인지를 나타낸다. 임의의 코딩 유형(I, P, B)의 픽처가 H.264/AVC 및 HEVC에서 참조 픽처이거나 비참조 픽처일 수 있다.
동형 리소스 식별자(Uniform Resource Identifier: URI)는 리소스의 이름을 식별하는 데에 사용되는 문자의 스트링으로서 정의될 수 있다. 그러한 식별은 특정 프로토콜을 사용하는, 네트워크 상에서의 리소스의 표현과의 상호작용(interaction)을 가능하게 한다. URI는 URI를 위한 구체적인 구문론 및 연관된 프로토콜을 명시하는 방안을 통해 정의된다. 동형 리소스 로케이터(Uniform Resource Locator: URL) 및 동형 리소스 명칭(Uniform Resource Name: URN)은 URI의 형태이다. URL은, 웹 리소스(web resoure)를 식별하고 리소스의 표현에 따라 작동하거나 이를 획득하는 수단을 명시하여, 그것의 주요 액세스 메커니즘 및 네트워크 위치 양자 모두를 명시하는 URI로서 정의될 수 있다. URN은 특정한 이름공간(namespace) 내의 이름에 의해 리소스를 식별하는 URI로서 정의될 수 있다. URN은 리소스를, 그것의 위치 또는 어떻게 그것을 액세스하는지를 암시하지 않고서 식별하기 위해 사용될 수 있다.
ISO 국제 표준 23009-1은 HTTP 상의 동적인 적응적 스트리밍(Dynamic Adaptive Streaming over HTTP: DASH)을 명시한다. 실시예가 구현될 수 있는 비디오 스트리밍 시스템의 예로서 MPEG-DASH의 몇몇 개념, 포맷 및 동작이 아래에 기술된다. 발명의 양상은 MPEG-DASH에 한정되지 않고, 오히려 설명은 발명이 의거해서 부분적으로 또는 전적으로 실현될 수 있는 하나의 가능한 기준을 위해 주어진다.
HTTP 상의 동적인 적응적 스트리밍(Dynamic Adaptive Streaming over HTTP: DASH)에서, 멀티미디어 콘텐츠(multimedia content)는 HTTP 서버 상에서 포착되고 저장될 수 있고 HTTP를 사용하여 전달될 수 있다. 콘텐츠는 서버 상에 두 부분으로 저장될 수 있다: 이용가능한 콘텐츠, 그것의 다양한 대안, 그것들의 URL 주소들, 그리고 다른 특성의 매니페스트(manifest)를 서술하는 미디어 제시 서술(Media Presentation Description: MPD), 그리고 단일 또는 여러 파일 내에, 청크(chunk)의 형태로, 실제의 멀티미디어 비트스트림을 포함하는 세그먼트. 콘텐츠를 재생하기(play) 위하여, DASH 클라이언트는 가령 HTTP, 이메일, 썸 드라이브(thumb drive), 브로드캐스트, 또는 다른 전송 방법을 사용함으로써 MPD를 획득할 수 있다. MPD를 파싱함(parsing)으로써, DASH 클라이언트는 프로그램 타이밍, 미디어 콘텐츠 가용성, 미디어 유형, 해상도, 최소 및 최대 대역폭, 그리고 멀티미디어 컴포넌트, 액세스가능성 특징과 요구되는 디지털 권한 관리(Digital Rights Management: DRM), 네트워크 상의 미디어 컴포넌트 위치 및 다른 콘텐츠 특성의 다양한 인코딩된 대안의 존재를 인지하게 될 수 있다. 이 정보를 사용하여, DASH 클라이언트는 적절한 인코딩된 대안을 선택하고 가령 HTTP GET 요청을 사용하여 세그먼트를 페치함(fetching)으로써 콘텐츠를 스트리밍하기 시작할 수 있다. 네트워크 쓰루풋(throughput) 변화를 가능케 하기 위한 적절한 버퍼링 후에, 클라이언트는 차후의 세그먼트를 페치하기를 계속하고 또한 네트워크 대역폭 변동을 모니터링할 수 있다. 클라이언트는 적당한 버퍼를 유지하기 위해 (더 낮은 또는 더 높은 비트율을 갖는) 상이한 대안의 세그먼트를 페치함으로써 가용 대역폭에 어떻게 적응할지를 판단할 수 있다.
미디어 제시 서술(Media Presentation Description: MPD)은 클라이언트가 HTTP 상의 동적인 적응적 스트리밍을 수립하기 위한 정보를 제공할 수 있다. MPD는 GET Segment 요청을 행하기 위한 각각의 세그먼트의 HTTP- 동형 리소스 로케이터(Uniform Resource Locator: URL)와 같은, 미디어 제시를 서술하는 정보를 포함할 수 있다. DASH에서, 도 6에 도시된 바와 같이 미디어 제시를 구조화하는 데에 계층구조적 데이터 모델(hierarchical data model)이 사용될 수 있다. 미디어 제시는 하나 이상의 기간(Period)의 시퀀스를 포함할 수 있고, 각각의 기간은 하나 이상의 그룹(Group)을 포함할 수 있으며, 각각의 그룹은 하나 이상의 적응 세트(Adaptation Set)를 포함할 수 있고, 각각의 적응 세트는 하나 이상의 표현(Representation)을 포함할 수 있으며, 각각의 표현은 하나 이상의 세그먼트(Segment)를 포함할 수 있다. 표현은 인코딩 선택에 의해, 가령 비트율, 해상도, 언어, 코덱 등등에 의해 상이할 수 있는 미디어 콘텐츠의 대안적인 선택들 또는 이의 서브세트 중의 하나이다. 세그먼트는 어떤 지속기간(duration)의 미디어 데이터와, 포함된 미디어 콘텐츠를 디코딩하고 제시하기 위한 메타데이터를 포함할 수 있다. 세그먼트는 동형 리소스 지시자(Uniform Resource Indicator: URI)에 의해 식별될 수 있고 HTTP GET 요청에 의해 요청될 수 있다. 세그먼트는 HTTP-URL과 연관된 데이터의 단위, 그리고 선택적으로는 MPD에 의해 명시된 바이트 범위(byte range)로서 정의될 수 있다.
MPEG-DASH와 유사한 스트리밍 시스템은 예컨대 IETF 인터넷 초안(Internet Draft) draft-pantos-http-live-streaming-13(그리고 동일한 인터넷 초안의 다른 버전) 내에 명시된 HTTP 라이브 스트리밍(HTTP Live Streaming)(HLS로도 알려짐)을 포함한다. MPD에 대응하는 매니페스트 포맷으로서, HLS는 확장된 M3U 포맷을 사용한다. M3U는 원래 오디오 파일을 위해 개발된, 멀티미디어 플레이리스트를 위한 파일 포맷이다. M3U 플레이리스트는 개별적인 라인(line)으로 이루어진 텍스트 파일(text file)이고, 각각의 라인은 URI, 공백(blank)이거나, 태그(tag) 또는 코멘트(comment)를 나타내는 문자 '#'로 시작한다. URI 라인은 미디어 세그먼트 또는 플레이리스트 파일을 식별한다. 태그는 #EXT로 시작한다. HLS 사양은 키-값(key-value) 쌍으로 간주될 수 있는 태그의 수를 명시한다. 태그의 값 부분은 속성-값(attribute-value) 쌍의 콤마 구분 리스트(comma-separated list)인 속성 리스트를 포함할 수 있는데, 여기서 속성-값 쌍은 구문론 AttributeName=AttributeValue (속성이름=속성값)을 가진다고 간주될 수 있다. 그러므로, HLS M3U8 파일의 태그는 MPD 또는 XML 내의 요소(Element)와 유사하다고 간주될 수 있고, HLS M3U8 파일의 속성은 MPD 또는 XML 내의 속성(Attribute)과 유사하다고 간주될 수 있다. HLS 내의 미디어 세그먼트는 MPEG-2 전송 스트림에 따라 포맷화되고(formatted) 단일 MPEG-2 프로그램을 포함한다. 각각의 미디어 세그먼트는 프로그램 연관 테이블(Program Association Table: PAT) 및 프로그램 맵 테이블(Program Map Table: PMT)로 시작하도록 권장된다.
컨테이너 파일(container file)은 미디어 데이터와 같은 콘텐츠와, 콘텐츠에 관련된 메타데이터를 포함할 수 있다. 컨테이너 파일은 상이한 데이터 유형을 식별하고 인터리빙하는(interleave) 데에 사용될 수 있다. 멀티미디어 컨테이너 파일은 예컨대 오디오, 비디오 및 이미지를 포함할 수 있다. 멀티미디어 컨테이너 파일은 멀티미디어 콘텐츠 생산, 조작(manipulation), 송신 및 소비(consumption)의 체인(chain)에서 사용되는 요소로서 사용될 수 있다. 코딩 포맷(기초 스트림 포맷 또는 비트스트림 포맷으로도 알려짐) 및 컨테이너 파일 포맷 간에 실질적인 차이가 있을 수 있다. 코딩 포맷은 콘텐츠 정보를 비트스트림으로 코딩하는 특정 코딩 또는 압축 알고리즘의 작동에 관련될 수 있다. (미디어 파일 포맷으로도 지칭될 수 있는) 컨테이너 파일 포맷은 생성된 비트스트림 또는 비트스트림들을, 그것이 가령 로컬(local) 디코딩 및 플레이백을 위해 액세스되거나, 파일로서 전송되거나, 스트리밍될 수 있는(모두 다양한 저장 및 전송 아키텍처를 활용함) 그러한 방식으로 조직화하기 위한 구문론 및 의미론을 명시할 수 있다. 나아가, 파일 포맷은 수신된 실시간 스트림을 파일로 기록하는 것뿐만 아니라 미디어의 상호교환 및 편집을 가능하게 할 수 있다.
이용가능한 미디어 파일 포맷 표준은 ISO 베이스 미디어 파일 포맷(ISO/IEC 14496-12, 이는 ISOMBFF로 약칭될 수 있음)은 물론, ISOBMFF로부터 파생된 표준, 예를 들어 MPEG-4 파일 포맷(ISO/IEC 14496-14, MP4 포맷으로도 알려짐), NAL 단위 구조화된 비디오(NAL unit structured video)를 위한 파일 포맷(ISO/IEC 14496-15) 및 3GPP 파일 포맷(3GPP TS 26.244, 3GP 포맷으로도 알려짐)을 포함한다. ISO/IEC 14496-15는 ISOBMFF 준수 파일로 H.264/AVC 및/또는 HEVC 및/또는 그것의 확장의 비트스트림을 저장하는 것을 명시한다. (ISO 파일 포맷 자체를 포함하는) 언급된 파일 포맷은 물론 ISOBMFF로부터 파생된 다른 파일 포맷은 ISO 계통(family)의 파일 포맷으로 칭해질 수 있다.
컨테이너 파일 포맷(이에 기반하여 실시예가 구현될 수 있음)의 예로서 ISOBMFF의 몇몇 개념, 구조 및 사양이 아래에 기술된다. 발명의 양상은 ISOBMFF에 한정되지 않고, 오히려 설명은 발명이 의거해서 부분적으로 또는 전적으로 실현될 수 있는 하나의 가능한 기준을 위해 주어진다.
ISO 베이스 미디어 파일 포맷 내의 기본적인 빌딩 블록(building block)은 박스(box)로 칭해진다. 각각의 박스는 헤더 및 페이로드를 가진다. 박스 헤더는 박스의 유형 및 바이트의 측면에서의 박스의 크기를 나타낸다. 박스는 다른 박스를 둘러쌀(enclose) 수 있고, ISO 파일 포맷은 소정의 유형의 박스 내에 어느 박스 유형이 허용되는지를 명시한다. 나아가, 몇몇 박스의 존재는 각각의 파일 내에서 의무적일 수 있으나, 다른 박스의 존재는 선택적일 수 있다. 추가적으로, 몇몇 박스 유형에 대해, 파일 내에 존재하는 하나보다 많은 박스를 갖는 것이 허용가능할 수 있다. 그러므로, ISO 베이스 미디어 파일 포맷은 박스의 계층구조적인 구조를 명시한다고 간주될 수 있다.
ISO 계통의 파일 포맷에 따르면, 파일은 박스 내에 캡슐화된 미디어 데이터와 메타데이터를 포함한다. 각각의 박스는 4개 문자 코드(four character code)(4CC, fourCC)에 의해 식별될 수 있다. 4개 문자 코드는 (8비트 값으로의 문자의 어떤 변환, 어떤 비트 엔디언(bit endianness) 및 어떤 바이트 엔디언(byte endianness)을 가정함으로써) 32비트 무부호(unsigned) 정수에 의해 교환가능하게 표현될 수 있다. 헤더는 박스의 유형과 크기에 대한 정보를 제공할 수 있다. ISOBMFF 박스 구조의 예시적인 포함 계층구조가 도 5에 도시된다.
ISO 계통의 파일 포맷에 따르면, 파일은 별개의 박스 내에 둘러싸일 수 있는 미디어 데이터와 메타데이터를 포함할 수 있다. 예시적 실시예에서, 미디어 데이터는 미디어 데이터 (mdat) 박스 내에 제공될 수 있고 무비(movie) (moov) 박스는 메타데이터를 둘러싸는 데에 사용될 수 있다. 몇몇 경우에, 파일이 동작가능하기 위해, mdat 및 moov 박스 양자 모두가 존재하여야 한다. 무비(moov) 박스는 하나 이상의 트랙을 포함할 수 있고, 각각의 트랙은 하나의 대응하는 트랙 (trak) 박스 내에 상주할 수 있다. 각각의 트랙을 위한 데이터는 논리적 채널이라고 간주될 수 있다. 각각의 트랙은 트랙 유형을 명시하는, 4개 문자 코드에 의해 식별되는 핸들러(handler)와 연관된다. 비디오, 오디오 및 이미지 시퀀스 트랙은 집합적으로 미디어 트랙으로 칭해질 수 있고, 그것은 기초 미디어 스트림(elementary media stream)을 포함한다. 다른 트랙 유형은 힌트 트랙(hint track) 및 시간맞춤 메타데이터 트랙(timed metadata track)을 포함한다. 트랙은 오디오 또는 비디오 프레임과 같은 샘플을 포함한다. 미디어 트랙은 미디어 압축 포맷(그리고 ISO 베이스 미디어 파일 포맷으로의 그것의 캡슐화)에 따라 포맷화된 (미디어 샘플로도 지칭될 수 있는) 샘플을 나타낸다. 힌트 트랙은 표시된 통신 프로토콜 상에서의 송신을 위한 패킷을 구성하기 위한 쿡북(cookbook) 명령어를 포함하는 힌트 샘플을 나타낸다. 쿡북 명령어는 패킷 헤더 구성을 위한 안내를 포함할 수 있고 패킷 페이로드 구성을 포함할 수 있다. 패킷 페이로드 구성에서, 다른 트랙 또는 아이템 내에 상주하는 데이터가 참조될 수 있다. 이와 같이, 예컨대, 다른 트랙 또는 아이템 내에 상주하는 데이터는 패킷 구성 프로세스 동안에 특정한 트랙 또는 아이템 내의 데이터 중 어느 부분이 패킷 내로 복사되도록 지시되는지에 관한 참조에 의해 나타내어질 수 있다. 시간맞춤 메타데이터 트랙은 언급된 미디어 및/또는 힌트 샘플을 서술하는 샘플을 나타낼 수 있다. 하나의 미디어 유형의 제시를 위해, 하나의 미디어 트랙이 선택될 수 있다. 트랙의 샘플은 샘플의 표시된 디코딩 순서에서 가령 1만큼 증분될(incremented) 수 있는 샘플 번호와 묵시적으로 연관될 수 있다. 트랙 내의 첫 번째 샘플은 샘플 번호 1과 연관될 수 있다.
ISO 베이스 미디어 파일 포맷에 따른 단순화된 파일 구조의 예가 다음과 같이 기술될 수 있다. 파일은 'moov' 박스 및 'mdat' 박스를 포함할 수 있고 'moov' 박스는 각기 비디오와 오디오에 대응하는 하나 이상의 트랙을 포함할 수 있다.
ISO 베이스 미디어 파일 포맷에 따라 포맷화된 많은 파일은 ftyp 박스로도 지칭되는 파일 유형 박스로 시작한다. ftyp 박스는 파일에 라벨을 붙이는(labeling) 브랜드(brand)의 정보를 포함한다. ftyp 박스는 하나의 주 브랜드(major brand) 표시 및 호환가능(compatible) 브랜드의 리스트를 포함한다. 주 브랜드는 파일을 파싱하기 위해 사용될 가장 적합한 파일 포맷 사양을 식별한다. 호환가능 브랜드는 파일이 어느 파일 포맷 사양 및/또는 합치점에 합치하는지를 나타낸다. 파일이 여러 사양에 합치하는 것이 가능하다. 호환가능 브랜드의 서브세트를 이해할 뿐인 독자가 파일이 파싱될 수 있다는 징조를 얻을 수 있도록, 이들 사양에의 호환가능성을 나타내는 모든 브랜드가 열거되어야(listed) 한다. 호환가능 브랜드는 또한 특정한 파일 포맷 사양의 파일 파서(file parser)가 ftyp 박스 내의 동일한 특정 파일 포맷 브랜드를 포함하는 파일을 처리하도록 허락을 한다. 파일 플레이어(file player)는 파일의 ftyp 박스가 그것이 지원하는 브랜드를 포함하는지를 체크할 수 있고, 파일 플레이어에 의해 지원되는 임의의 파일 포맷 사양이 호환가능 브랜드 중에 열거된 경우에만 파일을 파싱하고 재생할 수 있다.
ISOBMFF에 합치하는 파일은 메타 박스(fourCC: 'meta') 내에 임의의 비시간맞춤 객체(non-timed object)(아이템, 메타 아이템 또는 메타데이터 아이템으로 지칭됨)을 포함할 수 있다. 메타 박스의 이름은 메타데이터를 나타내나, 아이템은 일반적으로 메타데이터 또는 미디어 데이터를 포함할 수 있다. 메타 박스는 무비 박스(fourCC: 'moov') 내에, 그리고 트랙 박스(fourCC: 'trak') 내에, 파일의 최상위 레벨에 상주할 수 있지만, 기껏해야 하나의 메타 박스가 파일 레벨, 무비 레벨 또는 트랙 레벨 각각에서 생길 수 있다. 메타 박스는 'meta' 박스 내용의 구조 또는 포맷을 나타내는 'hdlr' 박스를 포함하도록 요구될 수 있다. 메타 박스는 참조될 수 있는 임의의 수의 아이템을 열거하고 특징지을 수 있고 그것들 각각은 파일 이름과 연관될 수 있고 정수 값인 아이템 식별자(item_id)에 의해 파일과 고유하게 식별된다. 메타데이터 아이템은 예컨대 메타 박스의 'idat' 박스 내에 또는 'mdat' 박스 내에 저장되거나 별개의 파일 내에 상주할 수 있다. 만일 메타데이터가 파일의 외부에 위치되면 그것의 위치는 DataInformationBox(fourCC: 'dinf')에 의해 선언될 수 있다. 메타데이터가 XML 구문론을 사용하여 포맷화되고, MetaBox 내에 직접 저장되도록 요구되는 특정한 경우에, 메타데이터는 XMLBox(fourCC: 'xml ') 내로든 또는 BinaryXMLBox(fourcc: 'bxml') 내로든 캡슐화될 수 있다. 아이템은 인접 바이트 범위(contiguous byte range)로서 저장될 수 있거나, 그것은 각각이 인접 바이트 범위인 몇 개의 구역 내에 저장될 수 있다. 다시 말해, 아이템은, 가령 인터리빙을 가능하게 하기 위해, 구역 내로 단편화되어(fragmented) 저장될 수 있다. 구역(extent)은 리소스의 바이트의 인접 서브세트(contiguous subset)인데, 리소스는 구역들을 결부시킴(concatenating)으로써 형성될 수 있다.
계층구조의 임의의 레벨(파일, 무비 또는 트랙)에서 하나보다 많은 메타 박스를 지원하기 위해서, 메타 박스 컨테이너 박스(meta box container box)('meco')가 하나의 ISO 베이스 미디어 파일 포맷으로서 사용될 수 있다. 메타 박스 컨테이너 박스는 계층구조의 임의의 레벨(파일, 무비 또는 트랙)에서 임의의 수의 추가적인 메타 박스를 지닐 수 있다. 이것은 가령 동일한 메타데이터가 두 개의 상이한, 대안적인 메타데이터 시스템 내에 제시되고 있는 것을 허용할 수 있다. 메타 박스 관계 박스(meta box relation box)('mere')는 얼마나 상이한 메타 박스가 서로 관련되는지, 가령 그것들이 정확히 동일한 (그러나 상이한 방안으로써 서술된) 메타데이터를 포함하는지 또는 하나가 다른 것의 수퍼세트(superset)를 표현하는지 서술하는 것을 가능하게 할 수 있다.
ISO 베이스 미디어 파일 포맷은 제시를 하나의 파일 내에 포함되도록 한정하지 않는다. 이와 같이, 제시는 몇 개의 파일 내에 포함될 수 있다. 일례로서, 하나의 파일은 전체 제시를 위한 메타데이터를 포함할 수 있고 이로써, 제시가 자족적(self-contained)이게 하기 위해 모든 미디어 데이터를 포함할 수 있다. 다른 파일은, 만일 사용되는 경우, ISO 베이스 미디어 파일 포맷으로 포맷화될 것이 요구되지 않을 수 있고, 미디어 데이터를 포함하는 데에 사용될 수 있으며, 사용되지 않는 미디어 데이터, 또는 다른 정보를 또한 포함할 수 있다. ISO 베이스 미디어 파일 포맷은 오직 제시 파일(presentation file)의 구조에 관계한다. 미디어 데이터 파일의 포맷은 미디어 파일 내의 미디어 데이터가 ISO 베이스 미디어 파일 포맷 또는 그것의 파생 포맷에 명시된 바와 같이 포맷화된다는 점에서만 ISO 베이스 미디어 파일 포맷 또는 그것의 파생 포맷에 의해 제한될 수 있다.
외부의 파일을 참조할 능력은 데이터 참조를 통해 실현될 수 있다. 몇몇 예에서, 각각의 트랙 내에 포함된 샘플 서술(sample description) 'stsd' 박스는 샘플 엔트리의 리스트를 제공할 수 있는데, 각각은 사용되는 코딩 유형에 대한 상세 정보와, 그 코딩에 필요한 임의의 초기화 정보를 제공한다. 청크의 모든 샘플 및 트랙 단편(track fragment)의 모든 샘플은 동일한 샘플 엔트리를 사용할 수 있다. 청크는 하나의 트랙을 위한 샘플의 인접 세트(contiguous set)로서 정의될 수 있다. 각각의 트랙 내에 또한 포함된 데이터 참조(Data Reference) 'dref' 박스는 동형 리소스 로케이터(Uniform Resource Locator: URL), 동형 리소스 명칭(Uniform Resource Name: URN), 그리고/또는 메타데이터를 포함하는 파일에 대한 자기참조(self-reference)의 색인된 리스트(indexed list)를 정의할 수 있다. 샘플 엔트리는 데이터 참조 박스의 하나의 인덱스(index)를 가리킬 수 있는바, 이로써 각 청크 또는 트랙 단편의 샘플을 포함하는 파일을 나타낸다.
무비 단편은 만일 기록 애플리케이션이 고장 나거나, 메모리 공간을 다 써버리거나, 몇몇 다른 사건이 일어나는 경우 데이터를 잃어버리는 것을 피하기 위해서 ISO 파일로 콘텐츠를 기록하는 경우에 사용될 수 있다. 무비 단편이 없으면, 파일 포맷은 전형적으로 모든 메타데이터, 가령, 무비 박스가 파일의 하나의 인접 영역(contiguous area) 내에 기입될 것을 요구할 수 있기 때문에 데이터 손실이 발생할 수 있다. 나아가, 파일을 기록하는 경우, 이용가능한 스토리지의 크기에 대해 무비 박스를 버퍼링할 충분한 양의 메모리 공간(가령, RAM)이 있지 않을 수 있고, 무비가 닫힌 경우에 무비 박스의 내용을 재계산하는 것은 너무 느릴 수 있다. 더욱이, 무비 단편은 정규의 ISO 파일 파서를 사용하여 파일의 동시적인 기록 및 플레이백을 가능하게 할 수 있다. 끝으로, 무비 단편이 사용되고 무비 단편 없이 구조화되나 동일한 미디어 콘텐츠를 갖는 파일에 비해 초기 무비 박스가 더 작은 경우, 점진적인 다운로딩, 가령 파일의 동시적인 수신 및 플레이백을 위해 초기 버퍼링의 더 작은 지속기간이 요구될 수 있다.
무비 단편 특징은 종래에는 무비 박스 내에 상주하였을 메타데이터를 여러 조각으로 나누는 것을 가능하게 할 수 있다. 각각의 조각은 트랙을 위한 어떤 시간 구간에 대응할 수 있다. 다시 말해, 무비 단편 특징은 파일 메타데이터 및 미디어 데이터를 인터리빙하는 것을 가능하게 할 수 있다. 결과적으로, 무비 박스의 크기는 한정될 수 있고 위에 언급된 용례가 실현될 수 있다.
몇몇 예에서, 무비 단편을 위한 미디어 샘플은, 만일 그것이 moov 박스와 동일한 파일 내에 있는 경우, 여느 때와 같이, mdat 박스 내에 상주할 수 있다. 그러나, 무비 단편의 메타데이터를 위해, moof 박스가 제공될 수 있다. moof 박스는 이전에 moov 박스 내에 있었을 것인 플레이백 시간의 어떤 지속기간을 위한 정보를 포함할 수 있다. moov 박스는 혼자서 유효한 무비를 여전히 표현할 수 있지만, 추가로, 그것은 동일한 파일 내에 무비 단편이 후속할 것임을 나타내는 mvex 박스를 포함할 수 있다. 무비 단편은 제때에 moov 박스에 연관된 제시를 확장할 수 있다.
무비 단편 내에는, 트랙당 0부터 복수 개까지 아무 데든 포함하여, 트랙 단편의 세트가 있을 수 있다. 트랙 단편은 결국 0부터 복수까지 아무 데의 트랙 런(track run)을 포함할 수 있는데, 그 문서 각각은 그 트랙을 위한 샘플의 인접 런(contiguous run)이다. 이들 구조 내에서, 많은 필드가 선택적이며 디폴트화될(defaulted) 수 있다. moof 박스 내에 포함될 수 있는 메타데이터는 몇몇 경우에 상이하게 코딩될 수 있고 moov 박스 내에 포함될 수 있는 메타데이터의 서브세트로 한정될 수 있다. moof 박스 내에 포함될 수 있는 박스에 관한 세부사항은 ISO 베이스 미디어 파일 포맷 사양으로부터 찾아볼 수 있다.
ISO 베이스 미디어 파일 포맷 및 그것의 파생물, 예를 들어 AVC 파일 포맷 및 SVC 파일 포맷 내의 샘플 그룹화(sample grouping)는, 그룹화 기준에 기반하여, 하나의 샘플 그룹의 멤버(member)이도록 트랙 내의 각각의 샘플을 할당하는 것으로 정의될 수 있다. 샘플 그룹화 내의 샘플 그룹은 인접 샘플인 것으로 한정되지 않으며 접하지 않는(non-adjacent) 샘플을 포함할 수 있다. 트랙 내의 샘플을 위한 하나보다 많은 샘플 그룹화가 있을 수 있으므로, 각각의 샘플 그룹화는 그룹화의 유형을 나타내는 유형 필드(type field)를 가진다. 샘플 그룹화는 두 개의 링크된(linked) 데이터 구조에 의해 표현된다: (1) SampleToGroup 박스(sbgp 박스)는 샘플 그룹으로의 샘플의 할당을 표현하고, (2) SampleGroupDescription 박스(sgpd 박스)는 그룹의 특질을 서술하는 각각의 샘플 그룹을 위한 샘플 그룹 엔트리를 포함한다. 상이한 그룹화 기준에 기반하여 SampleToGroup 및 SampleGroupDescription 박스의 여러 인스턴스가 있을 수 있다. 이들은 그룹화의 유형을 나타내는 데에 사용되는 유형 필드에 의해 구별된다.
샘플 그룹 박스(SampleGroupDescription Box 및 SampleToGroup Box)는 무비(moov) 박스 내에서 미디어 정보(minf), 미디어(mdia) 및 트랙(trak) 박스 내에 (그 순서로) 둘러싸인 샘플 테이블(sample table)(stbl) 박스 내에 상주한다. SampleToGroup 박스는 무비 단편 내에 상주하도록 허용된다. 그러므로, 샘플 그룹화는 단편 일일이(fragment by fragment) 행해질 수 있다.
(URL 형태로도 지칭될 수 있는) URL 단편 식별자는 (단편 식별자 없이) URL의 기본 부분(base part)에 의해 표시되는, 파일과 같은 리소스의 일부를 액세스하기 위해 특정한 콘텐츠 유형에 대해 지정될 수 있다. URL 단편 식별자는 예컨대 URL 내의 해쉬(hash)('#') 문자에 의해 식별될 수 있다. ISOBMFF를 위해, URL 단편 "#X"는 X와 동일한 track_ID를 갖는 트랙을 나타냄, "#item_ID=" 및 "#item_name="은 파일 레벨 메타 박스(들)를 나타냄, "#/item_ID=" 및 "#/item_name="은 무비 박스 내의 메타 박스(들)를 나타냄, 그리고 "#track_ID=X/item_ID=" 및 "#track_ID=X/item_name="은 X와 동일한 track_ID를 갖는 트랙 내의 메타 박스를 나타냄(무비 단편 내에서 잠재적으로 발견되는 메타 박스를 포함함)이 명시될 수 있다.
마트로스카(Matroska) 파일 포맷은 하나의 파일 내에 비디오, 오디오, 픽처 또는 서브타이틀(subtitle) 트랙 중 임의의 것을 저장하는 것이 가능하(나 이에 한정되지 않는)다. 마트로스카는 파생된 파일 포맷, 예를 들어 WebM을 위한 기준 포맷(basis format)으로서 사용될 수 있다. 마트로스카는 기준으로서 확장가능 이진 메타 언어(Extensible Binary Meta Language: EBML)를 사용한다. EBML은 XML의 원리에 의해 인도된 이진 및 옥텟(octet)(바이트) 정렬된(aligned) 포맷을 명시한다. EBML 그 자체는 이진 마크업(markup)의 기법의 일반화된 서술이다. 마트로스카 파일은 EBML "문서"(document)를 이루는 요소로 이루어진다. 요소는 요소 ID(Element ID), 요소의 크기를 위한 서술자(descriptor) 및 이진 데이터 그 자체를 포함한다. 요소는 중첩될 수 있다. 마트로스카의 세그먼트 요소(Segment Element)는 다른 최상위 레벨(레벨 1) 요소를 위한 컨테이너(container)이다. 마트로스카 파일은 하나의 세그먼트(Segment)를 포함할 수 있(으나 하나의 세그먼트로 이루어지도록 한정되지 않는)다. 마트로스카 파일 내의 멀티미디어 데이터는 각각 전형적으로 몇 초의 멀티미디어 데이터를 포함하는 클러스터(Cluster)(또는 클러스터 요소(Cluster Element)) 내에 조직화된다. 클러스터는 블록그룹(BlockGroup) 요소를 포함하는데, 이는 결국 블록 요소(Block Element)를 포함한다. 단서 요소(Cues Element)는 랜덤 액세스 또는 조사에서 도움이 될 수 있고 조사점(seek point)을 위한 파일 포인터(file pointer) 또는 각 타임스탬프(timestamp)를 포함할 수 있는 메타데이터를 포함한다.
이미지 버스트(image burst)로도 지칭될 수 있는 이미지 시퀀스는 다양한 수단으로써 획득될 수 있거나, 이하 중 하나 이상을 포함하나 이에 한정되지 않는 다양한 목적을 위해 사용될 수 있다:
- 이미지 시퀀스는, 가령 버스트 포토그래피(burst photography) 또는 그런한 것을 사용하여, 순차적으로 포착된 픽처를 표현할 수 있다.
- 이미지 시퀀스는 초점 스택(focal stack), 노출 스택(exposure stack) 또는 그러한 것을 표현할 수 있는데, 여기서 카메라는 거의 정지된 채 유지된다고 간주될 수 있고 포착 파라미터는 이미지 시퀀스의 픽처 간에 달랐다.
- 이미지 시퀀스는 파노라마(panorama)를 표현할 수 있는데 여기서 카메라는 패닝되었음(panned)(또는 기타 등등)이고 시간상 및/또는 병진상(translation-wise) 거의 동일한 거리의 픽처가 카메라 이동 동안에 찍혔다.
- 이미지 시퀀스는 애니메이션(animation) 또는 시네마그래프(cinemagraph)를 표현할 수 있다. 시네마그래프는, 작고 반복된 움직임이 일어나는 스틸 픽처(still picture)로서 정의될 수 있다.
이미지 시퀀스는 공간적 및 시간적 예측 수단으로써 코딩된 인터 픽처나 아니면 공간적 예측 수단으로써 코딩된 스틸 픽처의 시퀀스로서 압축될 수 있다. 개별 픽처를 편집하기 위한 지원과 랜덤 액세스가 있는 이미지 시퀀스는 전통적으로, 그 시퀀스를 일련의 독립적으로 코딩된 인트라 픽처로서 표현하는 것에 의해 가능하게 되었다. 그러한 포맷은, 예컨대, 모션 JPEG(Motion JPEG), 애니메이티드 GIF(animated GIF) 및 H.264의 인트라 프로파일(Intra profiles)을 포함한다.
만일 이미지의 시퀀스가 일련의 스틸 픽처로서 표현되는 경우, 코딩 효율은 전형적으로 열악하며 고해상도 시퀀스를 위한 파일 크기 요구는 거대하게 될 수 있다. 시간적 예측이 있는 비디오로서 시퀀스가 코딩된 경우에, 어떻게 시퀀스가 디코딩될 필요가 있는지, 그것이 어떻게 도로 재생될 수 있는지 및 시퀀스 내의 이미지 중 일부를 사용자가 편집하기를 원하는 경우의 문제에 대해 엄격한 한정이 있다.
MPEG-H 이미지 파일 포맷(Image File Format)(ISO/IEC 23008-12)은 ISO 베이스 미디어 파일 포맷(ISO Base Media File Format: ISOBMFF)의 파생 사양이다. 이 특허 출원을 쓰는 시기에, ISO/IEC 23008-12는 초안 표준(draft standard)이었고 따라서 표준의 이름 및/또는 별명은 따라서 표준의 최종 버전에서 바뀔 수 있음이 이해될 필요가 있다. ISO 이미지 파일 포맷(ISO Image File Format: ISOIFF) 및 MPEG 이미지 파일 포맷과 같은 이름이 고려되었다. 표준 사양 자체 내에서(또는 아니면 문맥이 명확한 경우에), 이름 "이미지 파일 포맷"(Image File Format)은 ISO/IEC 23008-12를 나타내는 데에 사용될 수 있다.
MPEG-H 이미지 파일 포맷의 몇몇 개념, 구조 및 사양이 컨테이너 파일 포맷의 예로서 아래에 기술되는데, 이에 기반하여 실시예가 구현될 수 있다. 발명의 양상은 MPEG-H 이미지 파일 포맷에 한정되지 않고, 오히려 설명은 발명이 의거해서 부분적으로 또는 전적으로 실현될 수 있는 하나의 가능한 기준을 위해 주어진다.
ISO/IEC 23008-12 내에 정의된 포맷은 고효율 비디오 코딩(High Efficiency Video Coding: HEVC) 또는 임의의 다른 이미지 또는 비디오 코덱을 사용하여 코딩된 이미지의 교환, 편집 및 디스플레이를, 그리고 그런 이미지와 연관된 메타데이터의 수송을 가능하게 한다. 이미지 파일 포맷은 단일 이미지, 이미지의 모음, 그리고 이미지의 시퀀스를 위한 상호운영적(interoperable) 저장 포맷을 정의하기 위해 ISO 베이스 미디어 파일 포맷 내에 저장된 도구를 기반으로 한다. 이미지 파일 포맷은 파일 내에 저장된 이미지를 코딩하는 데에 사용되는 코덱을 제한하지 않는 구조적 브랜드(structural brand) 및 코딩된 이미지를 위한 HEVC의 사용을 요구하는 HEVC 기반 브랜드(HEVC-based brand)를 포함한다.
스틸 이미지를 인코딩하기 위한 HEVC 비디오 코더의 사용은, 이미지가 다른 이미지에 종속적일 수 있고, 플레이어 및/또는 디코더에서 선택적으로 사용되는 타이밍과 함께, 이미지 시퀀스의 저장뿐만 아니라, 단일 이미지 및 독립적으로 코딩된 이미지의 모음의 저장을 커버하기 위해 이미지 파일 포맷에 의해 지원된다.
이미지 파일 포맷에 합치하는 파일은 스틸 이미지 및 이미지 시퀀스 양자 모두를 포함할 수 있는데, 단일 파일로 하여금 다양한 필요성(가령 프린팅(printing)을 위한 단일 이미지, 그리고 그 이미지를 합성하는 데에 사용된 이미지 버스트의 기록)을 충족하도록 구성될 수 있게 한다. 일반적으로, 스틸 이미지 지원은 타이밍도 픽처간 코딩 종속성도 요구되지 않는 때와 같은 경우를 위해 사용된다. 만일 트랙을 위해 이용가능한 ISO 베이스 미디어 파일 포맷으로부터의 타이밍 또는 다른 도구가 필요하거나(가령 간단한 동화상(animated image)), 픽처간 코딩 종속성으로써 픽처가 코딩되었으면, 트랙으로서 저장된 이미지 시퀀스가 사용될 수 있다.
ISOBMFF와 유사한 이미지 파일 포맷은 객체 지향형(object oriented) 메커니즘을 사용하는데, 여기서 각각의 객체는 박스로 칭해진다. 모든 미디어 데이터 및 그것의 관련된 메타데이터가 박스 내로 캡슐화된다. 각각의 박스는 4개 문자 코드(four character code)(4CC)에 의해 식별되며, 박스의 유형과 크기에 대해 알리는 헤더로 시작한다.
MPEG-H 이미지 파일 포맷에 따르면, 스틸 이미지는 아이템으로서 저장된다. 코딩된 이미지를 포함하는 이미지 아이템은 독립적으로 코딩되고 그것의 디코딩에서 어떤 다른 아이템에도 의존하지 않는 것이 요구될 수 있다.
MPEG-H 이미지 파일 포맷의 맥락 내에서, 이하의 박스는 루트 레벨(root-level) 'meta' 박스 내에 포함될 수 있고 이하에 기술된 바와 같이 사용될 수 있다. MPEG-H 이미지 파일 포맷에서, 'meta' 박스의 핸들러(Handler) 박스의 핸들러 값은 'pict'이다. 코딩된 미디어 데이터를 포함하는 리소스(동일한 파일 내에 있든, 또는 동형 리소스 식별자에 의해 식별된 외부 파일 내에 있든)는 데이터 정보(Data Information)('dinf') 박스를 통해 리졸브되는(resolved) 반면, 아이템 위치(Item Location)('iloc') 박스는 참조된 파일 내의 매 아이템의 위치와 크기를 저장한다. 아이템 참조(Item Reference)('iref') 박스는 유형화된 참조(typed referencing)를 사용하여 아이템 간의 관계를 문서화한다(document). 만일 아이템의 모음 중에서 어떤 점에서 다른 것에 비해 가장 중요하다고 간주될 아이템이 있으면 이 아이템은 주요 아이템(Primary Item)('pitm') 박스에 의해 시그널링된다(signaled). 여기서 언급된 박스 외에, 'meta' 박스는 또한 아이템을 기술하는 데에 필요할 수 있는 다른 박스를 포함하도록 융통성이 있다.
'meta' 박스 접근법을 사용함으로써 저장된 모음 이미지가 주어지면, 이미지 간의 어떤 관계를 적합화하는(qualify) 것이 때때로 필수적이다. 그러한 관계의 예는 모음을 위한 커버 이미지를 표시하는 것, 모음 내의 이미지 중 일부 또는 전부를 위한 썸네일(thumbnail) 이미지를 제공하는 것, 그리고 모음 내의 이미지 중 일부 또는 전부를 알파 평면과 같은 보조적 이미지와 연관시키는 것을 포함한다. 이미지의 모음 중의 커버 이미지는 'pitm' 박스를 사용하여 표시된다. 썸네일 이미지 또는 보조적 이미지는 각각 유형 'thmb' 또는 'auxl'의 아이템 참조를 사용하여 주요 이미지 아이템에 링크된다.
이미지 파일 포맷은 파생 이미지를 지원한다. 아이템은 그것이 다른 아이템에 대한 'dimg' 아이템 참조를 포함하는 경우 파생 이미지이다. 파생 이미지는 명시된 입력 이미지에 대해 명시된 동작(일명 이미지 동작), 예를 들어 회전을 수행함으로써 획득된다. 파생 이미지를 획득하기 위해 수행되는 동작은 아이템의 item_type에 의해 식별된다. 파생 이미지에 대한 입력으로서 사용되는 이미지 아이템은, 가령 아이템 유형 'hvc1'을 갖는, 코딩된 이미지일 수 있거나, 그것은 다른 파생 이미지 아이템일 수 있다.
이미지 파일 포맷 사양은 클린 어퍼처(clean aperture)(즉 크로핑(cropping)) 동작('clap'과 동일한 item_type), 90도 배수(multiple-of-90-degree) 회전을 위한 회전 동작('irot'과 동일한 item_type) 및 이미지 오버레이(image overlay) 동작('iovl'과 동일한 item_type)의 사양을 포함한다. 이미지 오버레이 'iovl' 파생 이미지는 더 큰 캔버스(canvas) 내에서 주어진 계층화 순서(layering order)로 하나 이상의 입력 이미지를 위치시킨다.
이미지 파일 포맷의 파생 이미지 특징은 이미지 파일 포맷 자체의 나중의 버전뿐만 아니라 외부의 사양이 새로운 동작을 명시할 수 있도록 확장가능하다.
이하의 정의는 가령 MPEG-H 이미지 파일 포맷 또는 유사한 파일 포맷의 맥락에서 사용될 수 있다. 코딩된 이미지는 이미지의 코딩된 표현으로서 정의될 수 있다. 파생 이미지는, 표시된 이미지에 대한 표시된 동작에 의해 파일 내에 표현되는 이미지로서 정의될 수 있고 표시된 동작을 표시된 이미지에 대해 수행함으로써 획득될 수 있다. 이미지는, 용어 이미지가 사용되는 맥락에 따라, 코딩된 이미지, 파생 이미지, 또는 상이한 컬러 컴포넌트의 픽셀의 하나 이상의 어레이(array)로서 정의될 수 있다. 이미지 모음은 MPEG-H 이미지 파일 포맷(또는 비슷한 것)에 따라 단일 파일의 아이템으로서 저장된 이미지의 세트로서 정의될 수 있다. 보조적 이미지(auxiliary image)는, 디스플레이되도록 의도되지 않을 수 있으나 보충적인 정보, 예를 들어 투명성 데이터(transparency data)를 제공하여, 각자의 주요 이미지(primary image)를 보완하는 이미지로서 정의될 수 있다. 커버 이미지는, 이미지 모음 또는 이미지 시퀀스를 나타내며 이미지 모음 또는 이미지 시퀀스의 선호되는 디스플레이 방법에 대해 어떤 다른 정보도 이용가능하지 않은 경우에 디스플레이되어야 하는 이미지로서 정의될 수 있다. 사전계산된 파생 이미지(pre-computed derived image)는 하나 이상의 다른 이미지로부터 파생된 코딩된 이미지로서 정의될 수 있다. 주요 이미지는, 아이템으로서 저장되며 보조적 이미지 또는 썸네일 이미지가 아닌 이미지로서 정의될 수 있다. 썸네일 이미지는 주요 이미지의 더 작은 해상도 표현으로서 정의될 수 있다.
이미지 시퀀스는, 권고 타이밍(advisory timing)과 연관될 수 있고 이미지가 인터 예측될 수 있는 이미지의 시퀀스로서 정의될 수 있다. MPEG-H 이미지 파일 포맷에서, 이미지 시퀀스는 ISOBMFF의 트랙 메커니즘에 따라 저장된다. 이미지 시퀀스 트랙은 이미지 간에 코딩 종속성(coding dependency)이 있는 경우 또는 이미지의 플레이백이 시간맞춤된 경우에 사용된다. 이미지 시퀀스 트랙 내의 타이밍은 플레이어를 위한 권고라고 정의될 수 있다. 이미지 시퀀스 및 모션 비디오(motion video) 간을 구별하기 위해서, 새로운 핸들러 유형 'pict'가 MPEG-H 이미지 파일 포맷 내에 도입되었다.
MPEG-H 이미지 파일 포맷은 MPEG-H 이미지 파일 포맷에 합치하는 파일 내로 HEVC 코딩된 스틸 이미지 및 이미지 시퀀스를 (포함에 의해 및/또는 참조에 의해) 캡슐화하기 위한 사양을 포함한다. 다른 코딩 포맷으로써 코딩된 이미지 및 이미지 시퀀스를 MPEG-H 이미지 파일 포맷에 합치하는 파일 내로 캡슐화하는 것을 명시하는 것이 가능하다.
다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME)은 인터넷 상에서 상이한 종류의 데이터 파일, 예컨대 비디오와 오디오, 이미지, 소프트웨어 등등을 송신하고 수신할 수 있게 하는 이메일 프로토콜에 대한 확장이다. 인터넷 미디어 유형은 파일이 포함한 데이터의 유형을 나타내기 위해 인터넷 상에서 사용되는 식별자이다. 그러한 인터넷 미디어 유형은 또한 콘텐츠 유형으로 칭해질 수 있다. 상이한 미디어 포맷을 포함할 수 있는 몇 개의 MIME 유형/서브유형 조합이 존재한다. 콘텐츠 유형 정보는 미디어 송신의 시작에서 MIME 헤더 내에 송신 개체에 의해 포함될 수 있다. 그러므로 수신 개체는 코덱의 가용 세트가 주어지면 특정 요소가 렌더링될 수 있는지 결정하기 위해 그러한 미디어 콘텐츠의 세부사항을 조사할 필요가 있을 수 있다. 특히 종단 시스템이 한정된 리소스를 갖거나, 종단 시스템으로의 연결이 한정된 대역폭을 갖는 경우에, 콘텐츠가 렌더링될 수 있는지를 콘텐츠 유형만으로부터 아는 것이 유익할 수 있다.
RFC 6381은 두 파라미터, 'codecs' 및 'profiles'를 명시하는데, 이들은 전반적인 컨테이너 포맷의 프로파일(들), 또는 그 안에 포함된 미디어 포맷에 의해 이용되는 코덱의 명료한 사양을 가능케 하기 위해 다양한 MIME 유형 또는 유형/서브유형 조합과 함께 사용된다.
포함된 미디어를 렌더링하도록 표시된 특정 코덱으로써 콘텐츠에 라벨을 붙임으로써, 수신 시스템은 코덱이 종단 시스템에 의해 지원되는지를 결정할 수 있고, 만일 그렇지 않은 경우, 적절한 조치(예를 들어 콘텐츠를 거부함, 상황의 통지를 발신함, 지원되는 유형으로 콘텐츠를 트랜스코딩함(transcoding), 요구되는 코덱을 페치하고 설치함, 표시된 코덱의 서브세트를 지원하기에 충분할 것인지를 결정하는 추가 점검 등등)를 취할 수 있다.
ISOBMFF로부터 파생된 파일 포맷을 위해, RFC 6381 내에 명시된 codecs 파라미터는 나중에 기술된 정규 표현(regular expression) 구문론에 따라 이하의 구조를 가지는 것으로 간주될 수 있다:
Figure 112017086840446-pct00003
.
유사하게, RFC 6381 내에 명시된 profiles 파라미터는 콘텐츠가 따르는 사양의 전반적인 표시를 수신기에 제공할 수 있다. 이것은 어떤 사양에 대한 컨테이너 포맷 및 그것의 내용의 호환가능성의 표시이다. 수신기는 그것이 취급할 수 있는 정도를 알아내고, 그것이 선언된 프로파일 중 어느 것을 지원하는지와, 그것이 의미하는 바를 알아보려고 조사함으로써 콘텐츠를 렌더링하는 것이 가능할 수 있다.
MIME을 위한 원래의 동기 중 하나는 메시지 부분의 특정 미디어 유형을 식별할 능력이다. 그러나, 다양한 요인으로 인해, MIME 유형 및 서브유형을 살피는 것으로부터 어느 특정 미디어 포맷이 본체 부분(body part) 내에 포함되어 있는지 또는 콘텐츠를 렌더링하기 위해서 어느 코덱이 표시되는지를 아는 것이 항상 가능하지는 않다.
세트로부터 선택된 코덱을 포함하는 몇 개의 미디어 유형/서브유형(현재 등록된 것이든 또는 등록 계류와 함께 배치된 것이든)이 있다. 여기에 기술된 파라미터의 부재 시에, 콘텐츠를 렌더링하는 데에 요구되는 코덱 또는 다른 특징을 결정하기 위해서 각각의 미디어 요소를 조사하는 것이 필요하다.
이미지 파일 포맷은 두 개의 MIME 유형을 명시하는데, 하나는 이미지 및 이미지 모음을 위한 것이고, 다른 하나는 이미지 시퀀스를 위한 것이다. codecs 파라미터의 포맷은 이들 MIME 유형에 대해 명시된다. 예컨대, RFC 6381에 따른 코덱 파라미터의 포괄적 구문론 내의 각각의
Figure 112017086840446-pct00004
은 이미지 파일 포맷 내에서 다음과 같이 포맷화된다고 간주될 수 있다:
Figure 112017086840446-pct00005
(여기서 |는 양자택일(either-or) 관계를 나타냄). codecs 스트링은 파일 내에 포함된 트랙 및 아이템 간을 구분하기 위한 식별자 'trak' 또는 'item'을 포함한다. 이미지 시퀀스 트랙 및 비디오 트랙 간의 구분을 지원하기 위하여, 핸들러 유형
Figure 112017086840446-pct00006
이 codecs 스트링 내에 포함된다. AVC 및 HEVC 기반의 코덱에 대해, 프로파일 티어 레벨 정보(profile-tier-level information)
Figure 112017086840446-pct00007
및 샘플 엔트리 유형
Figure 112017086840446-pct00008
(또는 동등하게 아이템 유형)을 포함하는 스트링은 ISO/IEC 14496-15에 명시된 것과 동일하다.
예컨대,
Figure 112017086840446-pct00009
은 HEVC에 대해 다음과 같이 명시된다:
Figure 112017086840446-pct00010
의 요소는 마침표 문자(".")에 의해 구분된, 가령 HEVC 디코더 구성 기록으로부터의 일련의 값이다. 모든 수적(numeric) 인코딩에서, 선두에 있는 0은 생략될 수 있다. ProfileTierLevel은 이하의 요소를 포함한다:
- general_profile_space, 이는 문자 없음으로서 인코딩되거나general_profile_space==0), general_profile_space 1, 2, 3을 위해 'A', 'B', 'C'로서 인코딩되는데, 십진수로서 인코딩된 general_profile_idc가 뒤따름,
- general_profile_compatibility_flags, 이는 16진법으로 인코딩됨(선두에 있는 0은 생략될 수 있음),
- general_tier_flag, 이는 'L'(general_tier_flag==0) 또는 'H'(general_tier_flag==1)로서 인코딩되는데, 십진수로서 인코딩된 general_level_idc가 뒤따름,
- 제한 플래그의 6개 바이트 각각, 이는 general_progressive_source_flag를 포함하는 바이트로부터 시작하되, 각각은 16진수로서 인코딩되고, 각각의 바이트의 인코딩은 마침표에 의해 구분되는데, 0인 트레일링 바이트는 생략될 수 있음.
그러나, 이미지 파일 포맷을 위한 codecs 파라미터의 사양은 파생 이미지에 대한 고려가 부족하다.
이것은 다양한 문제로 이어질 수 있고, 그 중 일부는 이하의 부분의 HTML 5.1 코드의 예로써 본 문서에 보여진다. 동일한 이미지의 두 개의 코딩된 표현, 제1 파일 preferred_image.hevc 및 제2 파일 fallback_img.jpg이 있다. 파일 preferred_image.hevc는 이미지 파일 포맷에 합치하고 파생 이미지를 그것의 주요 아이템으로서 가진다. 결과적으로 codecs MIME 파라미터는 현재의 초안 ISO/IEC 23008-12로써 온전히 명시되지 않는다. 파일 preferred_img.hevc는 이미지의 디코딩이 지원된다면 웹 브라우저가 다운로드할 (가령 각자의 JPEG 이미지에 비해 그것의 더 작은 크기로 인해) 선호되는 이미지이다. 그러나, 앞서 열겨된 정보의 부족으로 인해, 웹 브라우저는 그것이 preferred_img.hevc를 처리할 수 있는지 판단을 내리기가 불가능할 것이고 파일 fallback_img.jpg을 다운로드할 것이다. 포맷 중 어느 것도 또는 전혀 이미지를 지원하지 않는 브라우저는 alt 속성으로써 표시된 예비 서술 텍스트(fallback descriptive text)를 다운로드할 것이다.
Figure 112017086840446-pct00011
(가령 브라우저 내의) 이미지 플레이어가 파생 이미지의 표현을 재생하려고 의도하는 경우, 그것은 파생 이미지의 표현 내에 문서화된 동작을 사용하여 원래의 이미지(들)로부터 파생 이미지를 작성할 필요가 있다. 플레이어는 동작 자체를 수행하기 전에 그것이 파생 이미지를 작성할 수가 있는지를 가늠할 필요가 있을 수 있는데, 그렇지 않으면 플레이어는 파생 이미지를 작성하는 데에 실패하고 단지 (다운로드하고 처리하는 데에) 시간을, 그리고 컴퓨팅 리소스를 낭비할 수 있기 때문이다. 플레이어가 파생 이미지를 작성하기 위한 모든 필요한 리소스를 갖는지의 가늠은 이하의 난제 중 하나 이상을 포함할 수 있다:
- 플레이어는 그것이 파생 이미지 표현에서 사용되는 모든 유형의 동작을 수행할 수가 있는지를 가늠할 필요가 있다.
- 플레이어는 그것이 파생 이미지의 구성을 위해 입력 이미지로서 사용된 코딩된 이미지를 디코딩할 수가 있는지를 가늠할 필요가 있다. 이것은 다음을 수반할 수 있다:
°코덱(가령 HEVC) 및 코딩 프로파일(가령 메인(Main) 프로파일)이 지원되는지 결정하는 것. 또한 선택적으로 입력 이미지의 레벨 및 티어가 지원되는지.
°플레이어가 동작을 수행하는 데에 필요한 이용가능한 메모리 리소스를 갖는지를 가늠하는 것.
따라서, 플레이어가 파생 이미지를 작성하는 것이 가능한지를 가늠하기 위한 단순화된 방법에 대한 필요성이 있다.
이제 위의 문제를 적어도 완화하기 위해서, 파생 이미지를 작성할 능력을 가늠하기 위한 방법이 이하에서 제시된다.
도 6에 개시된 가늠 방법에서, 플레이어는 제1 파일의 제1 서술(description)을 수신하는데(600), 제1 서술은 적어도 파생 이미지(제1 파일 내에 포함되거나 제1 파일에 의해 참조됨)의 속성을 포함한다. 플레이어는 파생 이미지를 획득할지를, 파생 이미지의 속성에 기반하여 결정하고(602), 파생 이미지를 획득할 것을 결정하는 것에 응답하여, 파생 이미지를 포함하는 제1 파일을 획득한다(604).
실시예에 따라, 플레이어는 또한 파생 이미지에 의해 표현된 바로서의 대응하는 이미지 콘텐츠의 표현을 포함하는 제2 파일의 제2 서술을 수신하고(606), 제1 파일을 또는 제2 파일을 획득할지를 파생 이미지의 속성 및 제2 서술에 기반하여 결정할(608) 수 있다. 그러면 플레이어는 제1 파일 아니면 제2 파일을 획득한다(610).
그러므로, 플레이어는 파생 이미지의 재구성이 가능한지를 결정할 수 있다. 따라서, 표시된 속성은, 만일 파일 내의 파생 이미지가 수신기, 웹 브라우저, 또는 그러한 것의 플레이어에 의해 재구성될 수 없는 경우, 파일의 불필요한 다운로딩을 방지하는 데에 사용될 수 있다. 실시예에 따라, 이용가능한 동일한 콘텐츠를 갖는 복수의 대안적인 이미지 파일이 있을 수 있고, 플레이어는 서술에 기반하여 상기 대안 중 어느 이미지 파일이 다운로드되고 재구성되는지를 고를 수 있다.
실시예에 따라, 제1 서술은 MIME 유형을 포함한다.
실시예에 따라, 제1 서술, 예를 들어 MIME 유형은, 적어도 하나의 파생 이미지를 위한 이하의 정보 부분 중 하나 이상을 포함한다:
- 적어도 하나의 파생 이미지를 위해 사용되는 명령어 세트의 제1 식별, 이는 예컨대, 적어도 하나의 파생 이미지에 특정적인 인덱스(인덱스는 명령어의 식별의 리스트의 리스트 요소를 가리킴)와, 파일의 파생 이미지에서 사용되는 명령어 세트를 명시하는 URI의 리스트를 포함하는 제1 선택적 MIME 파라미터와 같은, 명령어 세트의 식별의 리스트를 포함할 수 있음,
- 적어도 하나의 파생 이미지를 위한 코딩된 입력 이미지의 코덱(codecs) 및 코덱 프로파일(codec profiles)의 제2 식별, 여기서 상기 식별은, 가령 codecs 파라미터로 명명될 수 있는 제2 선택적 MIME 파라미터 내에 포함될 수 있음,
- 적어도 하나의 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트(resource count), 예를 들어 적어도 하나의 파생 이미지를 구성하는 데에 사용되는 임의의 단일 이미지 동작의 입력 및 출력 이미지를 위해 요구되는 픽셀의 누적 수(cumulative number).
파생 이미지를 위한 명령어 세트는 파생 이미지 유형의 세트 또는 이미지 동작 유형의 세트로서 정의될 수 있다. 특정한 명령어 세트는, 파생 이미지가 명령어 세트에 의해 정의된 동작을 사용하여 구성될 수 있는 경우, 파생 이미지를 위해 사용되는 것으로 간주될 수 있다.
제1 선택적 MIME 파라미터는, 예컨대, dimg-instr-set로 지칭될 수 있고, 그것은 특정한 파생 이미지 및 특정한 파생 이미지를 위해 입력으로서 직접적으로 또는 간접적으로 사용되는 임의의 파생 이미지를 위해 사용되는 하나 이상의 명령어 세트(들)를 정의할 수 있다. 예컨대, ISO/IEC 23008-12에 명시된 이미지 동작(클린 어퍼처, 회전 및 오버레이)은 명령어 세트라고 간주될 수 있다.
codecs MIME 파라미터는 특정한 파생 이미지를 위해 입력으로서 직접적으로 또는 간접적으로 사용되는 코딩된 이미지를 위해 사용되는 코덱(가령 HEVC) 및 프로파일(가령 Main 프로파일)을 정의할 수 있다. 티어 및 레벨이 또한 포함될 수 있으나 절대적으로 필요하지는 않은데, 일반적으로 개별 이미지의 디코딩에 수반되는 어떤 실시간 처리 요건도 없기 때문이다.
(가장 큰 샘플 어레이 내의) 픽셀의 누적 수는 이미지를 위해 필요한 메모리 리소스를 특징짓는 데에 사용될 수 있(으나 다른 인자, 예를 들어 비트 깊이(bit depth) 및 크로마 포맷(chroma format)은, 코덱 프로파일 및 파생 이미지 명령어 세트로부터 판단될 수 있)다. 특정한 파생 이미지, 또는 직접적 또는 간접적 입력 이미지 중 임의의 것을 위해 몇 개의 입력 이미지가 필요할 수 있으므로, 이미지의 누적 픽셀 카운트(cumulative pixel count)가 제공된다. 이것은 특정한 파생 이미지를 위해 입력으로서 직접적으로 또는 간접적으로 사용되는 모든 중간(intermediate) 이미지가 플레이어의 메모리 한도 내에서 유지될 수 있음을 보장하는 것을 돕는다.
다음으로, MIME 유형의 구현에 관련된 다양한 실시예가 개시되는데, 정규 표현 구문론이 사용되되, 이탤릭체로 된 키워드는 그것을 그것의 값으로 대체함으로써 리졸브되는 변수로 간주되고, ( )는 하나 이상의 문자의 스트링을 나타내며, *는 0번 이상으로 선행 괄호 내에 둘러싸인 스트링이 포함됨을 나타내고, ?는 0번 또는 1번 선행 괄호 내에 둘러싸인 스트링이 포함됨을 나타내며, 글자숫자(alphanumeric) 문자는 그와 같이 포함된다. 정규 표현 구문론이 아닌 구문론 규칙 및/또는 적어도 하나의 파생 이미지를 위한 제1 식별, 제2 식별 및 리소스 카운트 중 하나 이상을 나타내기 위한 구문론의 다른 변종을 사용하여 유사한 실시예가 형성될 수 있음이 이해될 필요가 있다.
이미지 파일 포맷에 합치하는 파일을 위한 codecs 파라미터는 이하의 구조를 가진다:
Figure 112017086840446-pct00012
여기서 각각의
Figure 112017086840446-pct00013
은,
Figure 112017086840446-pct00014
이 코딩 포맷을 나타내는 경우, 이하의 구조를 가지는 것으로 제안된다:
Figure 112017086840446-pct00015
실시예에 따라, 이미지 파일 포맷에 합치하는 파일/리소스의 MIME 유형을 위한 이하의 추가적인 사양이 마련된다:
dimg-instr-set 선택적 MIME 파라미터는 다음을 포함하도록 명시된다:
Figure 112017086840446-pct00016
여기서 각각의
Figure 112017086840446-pct00017
은 URI이고, 각각의
Figure 112017086840446-pct00018
은 꺾쇠 괄호 내에 둘러싸인다. 만일 dimg-instr-set이 존재하지 않지만 codecs 파라미터에 의해 참조되는 경우, dimg-instr-set는, 가령 이미지 파일 포맷 내에 명시된 파생 이미지의 명령어 세트 또는 아이템 유형을 나타낼 수 있는, 값 urn:mpeg:isoiff:2015와 같은 사전정의된 디폴트(default) 값을 갖는 오직
Figure 112017086840446-pct00019
로 이루어진다고 추론된다.
예컨대, URI urn:mpeg:isoiff:2015는 클린 어퍼처, 회전 및 오버레이 동작으로 이루어진 파생 이미지 명령어 세트를 나타내도록 지정될 수 있다. 다른 예에서, URI urn:mpeg:isoiff:2015:baseline은 클린 어퍼처 및 회전 파생 이미지로 이루어진 파생 이미지 명령어 세트를 나타내도록 지정될 수 있고, URI urn:mpeg:isoiff:2015:extended는 클린 어퍼처, 회전 및 오버레이 파생 이미지로 이루어진 파생 이미지 명령어 세트를 나타내도록 지정될 수 있다.
실시예에 따라, 이미지 파일 포맷의 MIME 유형의 codecs 파라미터 구문론 내의
Figure 112017086840446-pct00020
을 위한 이하의 사양이 마련된다: 파생 이미지에 대해, dimg와 동일한
Figure 112017086840446-pct00021
Figure 112017086840446-pct00022
의 구문론에서 사용되고
Figure 112017086840446-pct00023
은 이하의 구조를 가진다:
Figure 112017086840446-pct00024
여기서
Figure 112017086840446-pct00025
은 파생 이미지를 위해 사용되는 명령어 세트를 식별하는 URI
Figure 112017086840446-pct00026
의 인덱스
Figure 112017086840446-pct00027
을 나타낸다. 만일
Figure 112017086840446-pct00028
가 존재하지 않는 경우,
Figure 112017086840446-pct00029
는 1과 동일하다고 추론된다;
Figure 112017086840446-pct00030
는 파생 이미지를 구성하는 데에 사용되는 임의의 단일 이미지 동작의 입력 및 출력 이미지를 위해 요구되는 픽셀의 최대 수를 나타내는 양의 십진법 정수(positive decimal integer)이다;
Figure 112017086840446-pct00031
는 이하의 구조를 가진다:
Figure 112017086840446-pct00032
, 여기서
Figure 112017086840446-pct00033
Figure 112017086840446-pct00034
쌍의 상이한 값을 가질 수 있는 코딩된 입력 이미지의 양의 정수이고, 쌍
Figure 112017086840446-pct00035
의 수는
Figure 112017086840446-pct00036
와 동일하다.
Figure 112017086840446-pct00037
은 파생 이미지를 위한 입력으로서의 코딩된 이미지의 4개 문자 아이템 유형이고,
Figure 112017086840446-pct00038
은 RFC 6381 내에 ISO 베이스 미디어 파일 포맷 이름 공간의 codecs 파라미터를 위해 명시된 바와 같은 프로파일 레벨 정보이다. AVC 및 HEVC 기반 코덱을 위해,
Figure 112017086840446-pct00039
의 포맷이 ISO/IEC 14496-15에 명시된다.
Figure 112017086840446-pct00040
는 그것이 종단으로부터 절단될(truncated) 수 있도록
Figure 112017086840446-pct00041
의 마지막 부분이도록 선택된다. 예컨대, 대부분의 경우 온전한 HEVC
Figure 112017086840446-pct00042
스트링은 포함될 필요가 없는 트레일링 0을 포함한다.
실시예의 구문론의 예는 이하를 포함한다:
Figure 112017086840446-pct00043
이미지 파일에 있어서 파일의 주요 아이템은 파생 이미지인데 이미지 파일 포맷 내에 명시된 명령어 세트를 사용한다.
Figure 112017086840446-pct00044
이미지 파일에 있어서 파일의 주요 아이템은 파생 이미지인데 이미지 파일 포맷 내에 명시된 명령어 세트를 사용하고 최대 두 개의 이미지의 저장을 요구하는데, 하나는 크기 1920x1080의 것이고 다른 것은 크기 1280x720의 것이며, 메인 티어(Main tier), 레벨 3.1에서의 하나의 점진적(progressive), 비-프레임-묶음(non-frame-packed) HEVC 메인 프로파일 이미지의 디코딩을 요구한다.
실시예에 따라, 이미지 파일 포맷의 MIME 유형의 codec 파라미터 구문론 내의
Figure 112017086840446-pct00045
을 위한 이하의 사양이 마련된다: 파생 이미지에 대해, dimg와 동일한
Figure 112017086840446-pct00046
Figure 112017086840446-pct00047
의 구문론에서 사용될 것이고
Figure 112017086840446-pct00048
은 이하의 구조를 가진다:
Figure 112017086840446-pct00049
여기서
Figure 112017086840446-pct00050
은 파생 이미지를 위해 사용되는 명령어 세트를 식별하는 URI
Figure 112017086840446-pct00051
의 인덱스
Figure 112017086840446-pct00052
을 나타낸다. 만일
Figure 112017086840446-pct00053
가 존재하지 않는 경우,
Figure 112017086840446-pct00054
는 1과 동일하다고 추론된다;
Figure 112017086840446-pct00055
는 이하의 구조를 가진다:
Figure 112017086840446-pct00056
, 여기서
Figure 112017086840446-pct00057
는 메모리의 최대량을 요구하는 단일 이미지 동작을 위해 요구되는 이미지의 수를 나타내는 양의 십진법 정수이고, 쌍
Figure 112017086840446-pct00058
의 수는
Figure 112017086840446-pct00059
와 동일하다.
Figure 112017086840446-pct00060
Figure 112017086840446-pct00061
은 그 특정한 단일 이미지 동작을 위해 요구되는 디코딩된 이미지 또는 파생 이미지의 폭과 높이를 각각 나타내는 양의 십진법 정수이다;
Figure 112017086840446-pct00062
는 이하의 구조를 가진다:
Figure 112017086840446-pct00063
, 여기서
Figure 112017086840446-pct00064
Figure 112017086840446-pct00065
쌍의 상이한 값을 가질 수 있는 코딩된 입력 이미지의 양의 정수이고, 쌍
Figure 112017086840446-pct00066
의 수는
Figure 112017086840446-pct00067
와 동일하다.
Figure 112017086840446-pct00068
은 파생 이미지를 위한 입력으로서의 코딩된 이미지의 4개 문자 아이템 유형이고,
Figure 112017086840446-pct00069
은 RFC 6381 내에 ISO 베이스 미디어 파일 포맷 이름 공간의 codecs 파라미터를 위해 명시된 바와 같은 프로파일 레벨 정보이다. AVC 및 HEVC 기반 코덱을 위해,
Figure 112017086840446-pct00070
의 포맷이 ISO/IEC 14496-15에 명시된다.
위의 실시예 중 일부는 HTML 5.1로 된 이미지 파일 선택의 예에 의해 또한 예시될 수 있는데, 여기서 이하의 구문론이 사용된다.
Figure 112017086840446-pct00071
이 예에서, 동일한 이미지의 두 개의 코딩된 표현, 제1 파일 preferred_image.hevc 및 제2 파일 fallback_img.jpg이 있다. 파일 preferred_image.hevc는 이미지 파일 포맷에 합치하고 파생 이미지를 그것의 주요 아이템으로서 가진다. 이미지 파일 포맷 내에 명시된 명령어 세트는 파생 이미지를 구성하기 위해 요구된다. 파생을 구성하는 데에 요구되는 누적 픽셀 카운트는 2* 1280*720인데, 이는 가령 1280x720 픽셀의 디코딩된 이미지가 파생 이미지를 형성하기 위해 회전될 수 있음을 나타낼 수 있다. 더욱이, 파생 이미지는 메인 티어, 레벨 3.1에서의 하나의 점진적, 비-프레임-묶음 HEVC 메인 프로파일 이미지의 디코딩을 요구한다. 웹 브라우저는 기술된 파생 이미지를 구성하기 위한 능력 및 리소스를 그것이 가진다면 preferred_img.hevc를 다운로드할 것이다. 그렇지 않으면, 앞서 기술된 바와 같이, 웹 브라우저는 파일 fallback_img.jpg 또는 예비 서술 텍스트를 다운로드할 것이다.
미디어 콘텐츠 서술은, MIME 유형(MIME 유형의 선택적인 파라미터를 잠재적으로 포함함), 임베딩된(embedded) 미디어 콘텐츠를 기술하는 요소, 예를 들어 전술된 HTML 5.1의 픽처 요소를 포함하는 HTML 페이지 또는 비슷한 것, 스트리밍 콘텐츠의 매니페스트, 예를 들어 앞서 기술된 바와 같은 MPEG-DASH의 MPD 또는 HLS의 확장된 M3U 포맷, 그리고, 예컨대, RTP 세션을 수립하기 위해 사용될 수 있는, 세션 서술 프로토콜(Session Description Protocol: SDP)에 따른 서술을 포함하나 이에 한정되지 않는, 미디어 콘텐츠의 임의의 서술을 위한 용어로서 정의될 수 있다.
파일 생성기(file creator)의 동작이 도 7에 예시된다. 거기에서, 파일 생성기는 하나 이상의 입력 이미지를 획득하고(700) 파생 이미지를 획득하기 위해 적어도 하나의 입력에 대해 수행될 적어도 하나의 동작을 결정한다(702). 파일 생성기는 제1 파일의 제1 서술을 미디어 콘텐츠 서술 내로 포함시키는데(704), 제1 서술은 제1 파일 내에 포함되거나 제1 파일에 의해 참조되는 적어도 파생 이미지의 속성을 포함한다.
유사하게, 파일 생성기는 파생 이미지에 의해 표현된 바로서의 대응하는 이미지 콘텐츠의 표현을 포함하는 제2 파일의 제2 서술을 또한 포함할 수 있다.
몇몇 전술된 실시예에서, 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트에 대해 예가 주어졌다. 그러나, 실시예에 따라, 임의의 리소스 카운트(가령 위에서 명시된 바와 같은
Figure 112017086840446-pct00072
또는 위에서 명시된 바와 같은
Figure 112017086840446-pct00073
)는 다른 형태(들)의 리소스 카운트에 의해 대체되거나 추가적으로 보완될 수 있다. 파일 생성기와 관련하여 리소스 카운트에 대한 예시적 실시예가 아래에 제공되고 리소스 카운트는 파일 내에 표시되는데, 다만, 파일의 서술과 함께 리소스 카운트를, 파일 내에 그것을 표시하는 것에 더하여 또는 이를 대신하여 표시하는 것 및/또는 콘텐츠 제공기(content provider)와 같은 다른 개체와 관련하여 유사하게 실시예가 기술될 수 있음이 이해될 필요가 있다.
실시예에 따라, 이미지 파일의 서술 내에 파생 이미지의 속성을 포함시키는 것에 더하여 또는 이를 대신하여, 이미지 파일 생성기는 파생 픽처를 표현하는 데이터 구조를 이미지 파일 내에 포함시키고, 파생 픽처를 작성하는 것의 필요한 리소스를 나타내는 적어도 하나의 값을 이미지 파일 내에 포함시킬 수 있다.
실시예에서, 파일 내에 적어도 하나의 파생 이미지를 작성하는 것의 필요한 리소스를 나타내는 선택적 파라미터를 갖는 MIME 유형이 유형 내에 포함된다. 필요한 리소스를 나타내기 위한 선택적 MIME 파라미터의 예가 다른 실시예와 함께 앞서 기술되었다. 예컨대, MIME 유형 스트링을 전달하는 데에 파일 레벨 박스(file level box)가 사용될 수 있다. 다른 예에서, 트랙('trak' 박스) 및/또는 아이템 메타데이터에는 MIME 유형 중 그것 각자의 부분이 부가될 수 있다. codecs 파라미터의
Figure 112017086840446-pct00074
은 'trak' 박스 계층구조 내의 박스 내에 포함될 수 있다. codecs 파라미터의
Figure 112017086840446-pct00075
은, 가령 아이템 정보(Item Information) 박스를 부가하거나 새로운 박스를 도입함으로써, 'meta' 박스 내에 하나 이상의 아이템을 위해 포함될 수 있다.
필요한 리소스를 나타내는 값은 이하 중 하나 이상을 포함할 수 있으나 이에 한정되지 않는다:
- 파생 픽처를 작성하는 것의 임의의 스테이지(stage)에서 필요한 최대 픽셀(pixel), 샘플(sample) 및/또는 바이트 카운트(byte count)보다 크거나 같은 값.
- 파생 픽처를 작성하는 데에 필요한 임의의 픽처를 위해 필요한 최대 픽셀, 샘플 및/또는 바이트 카운트보다 크거나 같은 값(파생 픽처를 작성하는 데에 필요한 픽처는 파생 픽처를 작성하기 위한 중간 동작의 출력 픽처를 포함함).
- 파생 픽처를 작성하는 데에서 사용될 수 있는 동작 유형의 세트를 식별하기 위한 식별자(반면에 동작 유형의 세트 내에 포함되지 않은 동작 유형은 파생 픽처를 작성하는 데에서 사용되지 않음).
실시예에 따라, 파일 생성기는 아래의 하나 이상의 단계를 사용하여 동작할 수 있다:
- 파일 생성기는 파일 내에 파생 이미지를 작성하기 위해 이미지 동작의 순서를 표시한다.
- (파생 이미지를 작성하기 위한) 각각의 이미지 동작에 대해, 파일 생성기는 이 이미지 동작 또는 임의의 차후 이미지 동작을 위해 어느 입력 픽처 및 어느 중간 픽처(더 이른 이미지 동작에서 기인함)가 요구되는지를 결정한다. 파일 생성기는 메모리 내에 이들 요구되는 픽처를 저장하거나 유지하는 데에 필요한 어떤 리소스 유형의 누적 리소스 카운트를 결정한다. 리소스 유형은 예컨대 픽셀의 수, 샘플의 수, 또는 바이트의 수일 수 있다.
- 파일 생성기는 (파생 이미지를 작성하기 위한) 모든 이미지 동작의 누적 리소스 카운트의 최대치를 선택한다. 최대치와 같거나 더 큰 값은 파생 이미지를 작성하기 위한 필요한 리소스의 표시 값(indicative value)으로서 파일 내에 포함된다.
실시예에 따라, 파일 생성기는 아래의 하나 이상의 단계를 사용하여 동작할 수 있다:
이미지 동작 Operation[i](0부터 이미지 동작의 수 NumOperations 마이너스- 1까지의(이들을 포함함) 범위 내의 i의 각각의 값에 대해)은, 이미지 동작 Operation[i]가 i의 오름차순(ascending order)으로 처리될 수 있고, i>j인 채로 Operation[j]가 임의의 동작 Operation[i]에 의존해서는 안 되도록, 명목상의 처리 순서(nominal processing order)로 파일 생성기에 의해 순서화된다. 파일 생성기는, 가령 파생 이미지의 데이터 구조 내에 i의 오름차순으로 이미지 동작 Operation[i]를 포함시킴으로써, 파일 내에 이미지 동작의 순서를 표시한다. 명목상의 처리 순서가 아닌 순서로 이미지 동작을 처리하는 것이 가능할 수 있으나, 리소스 카운트는 명목상의 순서를 사용하여 도출됨에 유의한다.
입력 이미지 InputImage[j]는 0부터 입력 이미지의 수 NumInputImages 마이너스 1까지의(이들을 포함함) 범위 내의 j의 모든 값에 대해 이미지 동작에 "외부에서" 제공되는(즉, 이미지 동작에 의해 생성되지 않은) 입력 이미지라고 하자.
중간 이미지 IntermediateImage[i][j]는 0부터 출력 동작 Operation[i]의 출력 이미지의 수 NumOperOutputImages[i] 마이너스 1까지의(이들을 포함함) 범위 내의 j의 모든 값에 대해 이미지 동작 Operation[i]의 출력이라고 하자.
리소스 카운트 IntermediateImageResourceCount[i][j]는 0부터 출력 이미지의 수 NumOperOutputImages[i] - 1까지의(이들을 포함함) 범위 내의 j의 모든 값에 대해 0부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 i의 각각의 값에 대해 각각의 중간 이미지 IntermediateImage[i][j]에 대해서 따로따로 도출될 수 있다.
유사하게, 리소스 카운트 InputImageResourceCount[j]는 0부터 NumInputImages - 1까지의(이들을 포함함)의 범위 내의 j의 각각의 값에 대해 도출될 수 있다.
이미지의 활성 픽처 세트 ActiveSet[i]는 이하의 이미지로 이루어진다:
0부터 NumInputImages - 1까지의(이들을 포함함) 범위 내의 m의 임의의 값에 대해 입력 이미지 InputImage[m], 그래서 InputImage[m]은 i부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 k의 임의의 값에 대해 임의의 이미지 동작 Operation[k]에 대한 입력으로서 사용된다.
0부터 i - 1까지의(이들을 포함함) 범위 내의 m의 임의의 값에 대해, 그리고 0부터 NumOperOutputImages[m] - 1까지의(이들을 포함함) 범위 내의 n의 임의의 값에 대해 중간 이미지 IntermediateImage[m][n], 그래서 IntermediateImage[m][n]은 i부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 k의 임의의 값에 대해 임의의 이미지 동작 Operation[k]에 대한 입력으로서 사용된다.
0부터 NumOperOutputImages[i] - 1까지의(이들을 포함함) 범위 내의 n의 임의의 값에 대해 중간 이미지 IntermediateImage[i][j].
리소스 카운트 ActiveSetResourceCount[i]는 0부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 i에 대해 각각의 활성 픽처 세트 ActiveSet[i]에 대해, 활성 픽처 세트 ActiveSet[i] 내의 픽처의 리소스 카운트의 합으로서 도출될 수 있다.
최대 누적 리소스 카운트 MaxCumulativeResourceCount는 0부터 NumOperations - 1까지의(이들을 포함함)의 범위 내의 i에 대해 ActiveSetResourceCount[i]의 가장 큰 값과 동일하게 설정될 수 있다.
실시예에 따라, 최대 개별 리소스 카운트 MaxResourceCount는 0부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 i의 임의의 값에 대해, 그리고 0부터 출력 이미지의 수 NumOperOutputImages[i] - 1까지의(이들을 포함함) 범위 내의 j의 임의의 값에 대해 IntermediateImageResourceCount[i][j], 또는 0부터 NumInputImages - 1까지의(이들을 포함함) 범위 내의 k의 임의의 값에 대해 InputImageResourceCount[k]의 가장 큰 값과 동일하게 설정될 수 있다. 대안적인 실시예에서, 최대 개별 리소스 카운트 MaxResourceCount는 0부터 NumOperations - 1까지의(이들을 포함함) 범위 내의 i의 임의의 값에 대해, 그리고 0부터 출력 이미지의 수 NumOperOutputImages[i] - 1까지의(이들을 포함함) 범위 내의 j의 임의의 값에 대해 IntermediateImageResourceCount[i][j]의 가장 큰 값과 동일하게 설정될 수 있다.
실시예에 따라, 파일 생성기는 다음 중 적어도 하나를 설정할 수 있다
- MaxCumulativeResouceCount보다 크거나 동일하다고 필요한 리소스를 나타내는 제1 값.
- MaxResourceCount보다 크거나 동일하다고 필요한 리소스를 나타내는 제2 값.
필요한 리소스를 나타내는 값이 제공될 수 있는 하나 이상의 유형의 리소스 유형이 있을 수 있다. 상이한 리소스 유형에 대해 리소스 카운트 ResourceCount를 도출하는 것의 몇몇 비한정적인 예가 아래에 주어지는데, 여기서 ResourceCount는 단일 이미지로부터 도출될 수 (있고 따라서 실질적으로 InputImageResourceCount[] 또는 IntermediateImageResourceCount[][] 중 하나일 수) 있거나 이미지의 세트로부터 도출될 수 (있고 따라서 실질적으로 ActiveSetResourceCount[]일 수) 있다.
- 픽셀의 수, 즉 이미지의 세트 또는 이미지의 모든 샘플 어레이 중에서 가장 높은 샘플 카운트의 샘플 어레이 내의 샘플의 수.
- 샘플의 수, 즉 이미지의 세트 또는 이미지의 모든 샘플 어레이 내의 샘플의 수.
- 이미지의 세트 또는 이미지를 저장하는 데에 필요한, 바이트의 수와 같은, 메모리 단위의 수. 메모리 단위의 수는 파일 내의 필요한 메모리 단위의 값을 따라 사전정의되거나 표시될 수 있는 샘플 어레이 배열(sample array arrangement)에 관해서 표시될 수 있다. 샘플 어레이 배열은 이하 중 하나일 수 있으나 이에 한정되지 않는다:
°샘플은 별개의 바이트로 저장된다. 만일 샘플의 비트 깊이가 8의 배수가 아닌 경우, 샘플은 다음의 더 큰 정수 개의 바이트를 차지한다고 가정된다. 예컨대, 만일 샘플의 비트 깊이가 10인 경우, 샘플은 2 바이트를 차지한다고 가정된다. 상이한 컬러 컴포넌트의 비트 깊이가 상이할 수 있음에 유의한다. 예컨대, 루마 컴포넌트는 10비트의 비트 깊이를 가질 수 있으나 크로마 컴포넌트는 8비트의 비트 깊이를 가질 수 있다.
°상이한 컬러 컴포넌트의 코로케이팅된 샘플은 정수 개의 바이트로 묶인다(packed). 예컨대, 만일 샘플의 비트 깊이가 10이고 크로마 포맷이 4:4:4인 경우, 코로케이팅된 Y, U 및 V 샘플의 각각의 세트는 4바이트로 묶인 30비트를 할당한다고 가정된다.
실시예에 따라, 파일 생성기는 다음 중 적어도 하나를 설정할 수 있다
- MaxCumulativeResourceCount보다 크거나 동일하다고 필요한 리소스를 나타내는 값의 제1 세트(세트 내의 각각의 요소는 상이한 리소스 유형에 대응함). 요소 유형은 예컨대 파일 포맷 표준 내에 사전정의될 수 있거나 파일 내에 표시될 수 있다.
- MaxResouceCount보다 크거나 동일하다고 필요한 리소스를 나타내는 제2 값(세트 내의 각각의 요소는 상이한 리소스 유형에 대응함). 요소 유형은 예컨대 파일 포맷 표준 내에 사전정의될 수 있거나 파일 내에 표시될 수 있다.
파일 플레이어와 관련하여 리소스 카운트에 대한 예시적 실시예가 아래에 제공되고 리소스 카운트는 파일로부터 파싱되는데, 다만, 파일의 서술로부터 리소스 카운트를 파싱하는 것 및/또는 웹 브라우저와 같은 다른 개체와 관련하여 유사하게 실시예가 기술될 수 있음이 이해될 필요가 있다.
실시예에 따라, 이미지 파일의 서술로부터 파생 이미지의 속성을 파싱하는 것에 더하여 또는 이를 대신하여, 이미지 파일 플레이어는 파생 픽처를 작성하는 것의 필요한 리소스를 나타내는 적어도 하나의 값을 이미지 파일로부터 파싱하고, 그것이 파생 픽처를 작성할 수 있는지를, 적어도 하나의 값에 기반하여 결정한다.
실시예에 따라, 파일 플레이어는 이하의 단계 중 적어도 하나를 수행할 수 있다:
- 파일 플레이어는 파생 이미지를 작성하기 위한 필요한 리소스를 나타내는 적어도 하나의 값을 파일로부터 파싱한다.
- 파일 플레이어는 그것이 파생 이미지를 작성하는 것이 가능한지를 적어도 하나의 값을 기반으로 결정한다.
만일 파일 플레이어가 그것이 파생 이미지를 작성하는 것이 가능함을 결정한 경우, 파일 플레이어는 파생 이미지를 표현하는 데이터 구조를 파일로부터 파싱하되, 데이터 구조는 적어도 하나의 동작의 방향성 비순환 그래프(directed acyclic graph)를 정의하고, 파일 플레이어는 적어도 하나의 동작의 방향성 비순환 그래프를 수행함으로써 파생을 작성한다.
추가적으로, 파일 플레이어는 이하의 단계를 수행할 수 있다:
- 파일 플레이어는 파생 이미지를 작성하기 위한 이미지 동작의 실행 순서(execution order)를 파일로부터 파싱한다.
- 이미지 동작 일일이 실행 순서로 이미지 동작을 수행하는 경우, 각각의 이미지 동작에 대해:
°파일 플레이어는 실행 순서에 있어서 차후의 동작을 위해 어느 픽처가 요구되는지를, 실행 순서 및 적어도 하나의 동작의 입력과 출력을 기반으로 결정한다.
°파일 플레이어는 실행 순서에 있어서 차후의 동작에서 더 이상 필요하지 않은 픽처를 저장하기 위한 리소스를 해제한다(free)(가령, 픽처를 저장하기 위한 메모리를 할당해제한다(deallocate)).
위의 실시예에 더하여, 보완 실시예가 수행될 수 있는데, 그러한 실시예는 제자리(in-place) 이미지 동작에 관련된다. 실시예에 따라, 제자리 이미지 동작은 리소스 카운트에서 고려될 수 있다. 제자리 이미지 동작은 동작의 입력 이미지(들)와 동작의 출력 이미지(들)를 위해 동일한 메모리가 사용될 수 있는 그러한 이미지 동작으로서 정의될 수 있다. 제자리 이미지 동작에서 하나 이상의 입력 이미지의 비중첩 입력 윈도우(non-overlapping input window), 예를 들어 픽셀 또는 픽셀의 블록은 하나 이상의 출력 이미지의 각 윈도우의 출력을 산출하도록 처리되는 것이 고려될 수 있다. 따라서, 어떤 출력 윈도우의 픽셀이 (작업 메모리 내에) 산출되자마자, 입력 윈도우 내의 각 픽셀은 출력 윈도우의 픽셀에 의해 대체될 수 있다. 출력 윈도우의 픽셀에 의해 고쳐 써진 픽셀은 처리 순서에 있어서 차후의 윈도우의 처리에 영향을 미치지 않는다. 예컨대, 톤 맵핑(tone mapping) 이미지 동작은 제자리 이미지 동작일 수 있다.
사전정의된 제자리 이미지 동작의 세트가 예컨대 파일 포맷 표준 내에 정의될 수 있다.
대안적으로 또는 추가적으로, 파일 생성기는 이미지 동작이 제자리 이미지 동작이라고 간주되는지를 파일 내에 표시할 수 있다.
리소스 카운트를 도출하는 경우, 파일 생성기는 제자리 이미지 동작을, 리소스 카운트의 도출이 이미지 동작의 입력 이미지 및 각 출력 이미지를 표현하기 위해 단일 이미지를 고려할 뿐인 방식으로 취급할 수 있다. 더욱 일반적으로, 만일 이미지 동작이 여러 입력 및 출력을 가지는 경우, 파일 생성기는 제자리 이미지 동작을, 리소스 카운트의 도출이 입력 이미지 및 각 출력 이미지의 각각의 쌍을 표현하기 위해 단일 이미지를 고려할 뿐인 방식으로 취급할 수 있다. 몇몇 실시예에서, 파일 생성기는 이미지 동작을, 이미지 동작의 입력 이미지가 실행 순서에 있어서 임의의 차후의 이미지 동작에 대한 입력 이미지로서 사용되지 않는 경우에만 제자리 이미지 동작으로서 취급한다.
이미지 동작이 제자리 이미지 동작이라고 (파일 내에) 표시되거나 사전정의된 경우, 파일 플레이어는 이에 따라 이미지 동작을 제자리 동작으로서 수행할 수 있다. 몇몇 실시예에서, 파일 플레이어는 이미지 동작을, 이미지 동작의 입력 이미지가 실행 순서에 있어서 임의의 차후의 이미지 동작에 대한 입력 이미지로서 사용되지 않는 경우에만 제자리 이미지 동작으로서 취급한다.
도 8은 발명의 실시예를 이용하기에 적합한 비디오 디코더의 블록도를 도시한다. 도 8은 2계층 디코더의 구조를 묘사하나, 디코딩 동작은 단일 계층 디코더에서 유사하게 이용될 수 있음이 인식될 것이다.
비디오 디코더(550)는 기본 뷰(base view) 컴포넌트를 위한 제1 디코더 섹션(552) 및 비기본 뷰(non-base view) 컴포넌트를 위한 제2 디코더 섹션(554)을 포함한다. 블록(556)은 제1 디코더 섹션(552)에 기본 뷰 컴포넌트에 관한 정보를 전달하기 위한, 그리고 제2 디코더 섹션(554)에 비기본 뷰 컴포넌트에 관한 정보를 전달하기 위한 역다중화기(demultiplexer)를 예시한다. 참조 P'n은 이미지 블록의 예측된 표현을 의미한다. 참조 D'n은 재구성된 예측 에러 신호를 의미한다. 블록(704, 804)은 예비적 재구성된 이미지(I'n)를한다. 참조 R'n은 최종 재구성된 이미지를 의미한다. 블록(703, 803)은 역변환(T-1)을 예시한다. 블록(702, 802)은 역양자화(Q-1)을 예시한다. 블록(701, 801)은 엔트로피 디코딩(E-1)을 예시한다. 블록(705, 805)은 참조 프레임 메모리(Reference Frame Memory: RFM)를 예시한다. 블록(706, 806)은 예측(P)(인터 예측이든 또는 인트라 예측이든)을 예시한다. 블록(707, 807)은 필터링(F)을 예시한다. 블록(708, 808)은 예비적 재구성된 이미지(I'n)을 획득하기 위해 디코딩된 예측 에러 정보를 예측된 기본 뷰/비기본 뷰 컴포넌트와 조합하는 데에 사용될 수 있다. 예비적 재구성된 및 필터링된 기본 뷰 이미지가 제1 디코더 섹션(552)으로부터 출력될(709) 수 있고 예비적 재구성된 및 필터링된 기본 뷰 이미지가 제1 디코더 섹션(554)로부터 출력될(809) 수 있다.
본 문서에서, 디코더는 디코딩 동작을 행하는 것이 가능한 임의의 동작 유닛(operational unit), 예를 들어 플레이어, 수신기, 게이트웨이, 역다중화기 및/또는 디코더를 포섭하는 것으로 해석되어야 한다.
위에서, 몇몇 실시예는 MIME 유형 및 선택적 MIME 파라미터에 관해 기술되었다. 선택적 MIME 파라미터 대신에 또는 이에 더하여, 가령 MPEG-DASH의 MPD 또는 다른 미디어 콘텐츠 서술과 같은 XML 서술 내의 속성과 같은 다른 시그널링이 사용될 수 있음이 이해될 필요가 있다.
위에서, 몇몇 실시예는 ISOBMFF에 관해 기술되었다. ISOBMFF에서와 유사한 능력 및/또는 구조를 갖는, Matroska와 같은 임의의 다른 파일 포맷으로써 실시예가 유사하게 실현될 수 있음이 이해될 필요가 있다.
위에서, 몇몇 실시예는 플레이어에 관해 기술되었다. 판독기(reader), 파서(parser), 사용자 에이전트(user agent) 또는 클라이언트(client)와 같은 다른 용어가 교환가능하게 사용될 수 있음이 이해될 필요가 있다. 플레이어는 독립형 애플리케이션(standalone application)일 수 있으나 그럴 필요가 있는 것은 아님이 이해될 필요가 있다. 플레이어는 예컨대 웹 브라우저 내에 임베딩될 수 있다.
위에서, 몇몇 실시예는 플레이어에 관해 기술되었다. 이미지 또는 이미지 파일이 재생되거나 디스플레이되지 않지만 다른 목적으로 인출되는 경우에 실시예가 유사하게 실현될 수 있음이 이해될 필요가 있다. 실시예에서, 프록시 캐시(proxy cache)는 제1 파일의 제1 서술을 수신하는데, 제1 서술은 적어도 파생 이미지(제1 파일 내에 포함되거나 제1 파일에 의해 참조됨)의 속성을 포함한다. 프록시 캐시는 파생 이미지를 획득할지를, 하나 이상의 클라이언트의 능력에 대한 인지와, 파생 이미지의 속성에 기반하여 결정하고, 파생 이미지를 획득할 것을 결정하는 것에 응답하여, 파생 이미지를 포함하는 제1 파일을 획득한다. 실시예에 따라, 프록시 캐시는 또한 파생 이미지에 의해 표현된 바로서의 대응하는 이미지 콘텐츠의 표현을 포함하는 제2 파일의 제2 서술을 수신하고, 하나 이상의 클라이언트의 능력에 대한 인지와 제2 서술과 파생 이미지의 속성에 기반하여, 제1 파일을 획득할지 또는 제2 파일을 획득할지를 결정할 수 있다. 그러면 플레이어는 제1 파일 아니면 제2 파일을 획득한다.
위에서, 몇몇 실시예는 파일 생성기에 관해 기술되었다. 기입기(writer), 파일 발생기 또는 콘텐츠 제공기와 같은 다른 용어가 교환가능하게 사용될 수 있음이 이해될 필요가 있다. 생성기는 독립형 애플리케이션일 수 있으나 그럴 필요가 있는 것은 아님이 이해될 필요가 있다. 생성기는, 가령 스크립트(script)를 사용하여, 예컨대 웹 서버 내에 임베딩될 수 있다.
위에서, 예시적 실시예가 인코더를 참조하여 기술된 경우에, 결과적인 비트스트림 및 디코더는 그것들 내에 대응하는 요소를 가질 수 있음이 이해될 필요가 있다. 마찬가지로, 예시적 실시예가 디코더를 참조하여 기술된 경우에, 인코더는 디코더에 의해 디코딩될 비트스트림을 생성하기 위한 구조 및/또는 컴퓨터 프로그램을 가질 수 있음이 이해될 필요가 있다.
전술된 발명의 실시예는 수반된 프로세스의 이해를 돕기 위해서 별개의 인코더 및 디코더 장치의 측면에서 코덱을 기술한다. 그러나, 장치, 구조 및 동작은 단일 인코더-디코더 장치/구조/동작으로서 구현될 수 있음이 인식될 것이다. 나아가, 코더 및 디코더가 일부 또는 전부의 공통적 요소를 공유할 수 있음이 가능하다.
위의 예는 전자 디바이스 내의 코덕 내에서 동작하는 발명의 실시예를 기술하나, 청구항 내에 정의된 바와 같은 발명이 임의의 비디오 코덱의 일부로서 구현될 수 있음이 인식될 것이다. 그러므로, 예컨대, 발명의 실시예는 고정된 또는 유선 통신 경로 상에서 비디오 코딩을 구현할 수 있는 비디오 코덱 내에 구현될 수 있다.
그러므로, 사용자 장비는 위의 발명의 실시예에 기술된 것과 같은 비디오 코덱을 포함할 수 있다. 용어 사용자 장비(user equipment)는 임의의 적합한 유형의 무선 사용자 장비, 예를 들어 모바일 전화, 휴대가능 데이터 처리 디바이스 또는 휴대가능 웹 브라우저를 포섭하도록 의도됨이 인식될 것이다.
나아가 공중 육상 모바일 네트워크(Public Land Mobile Network: PLMN)의 요소가 전술된 바와 같은 비디오 코덱을 또한 포함할 수 있다.
일반적으로, 발명의 다양한 실시예는 하드웨어 또는 특수 목적 회로, 소프트웨어, 로직 또는 이의 임의의 조합으로 구현될 수 있다. 예컨대, 몇몇 양상은 하드웨어로 구현될 수 있는 반면, 다른 양상은 제어기, 마이크로프로세서 또는 다른 컴퓨팅 디바이스에 의해 실행될 수 있는 펌웨어 또는 소프트웨어로 구현될 수 있는데, 다만 발명은 이에 한정되지 않는다. 발명의 다양한 양상이 블록도, 흐름도로서, 또는 어떤 다른 그림 표현을 사용하여 예시되고 기술될 수 있는데, 본 문서에 기술된 이들 블록, 장치, 시스템, 기법 또는 방법은, 비한정적인 예로서, 하드웨어, 소프트웨어, 펌웨어, 특수 목적 회로 또는 로직, 일반 목적 하드웨어 또는 제어기 또는 다른 컴퓨팅 디바이스, 또는 이의 어떤 조합으로 구현될 수 있음이 잘 이해된다.
발명의 실시예는, 모바일 디바이스의 데이터 프로세서에 의해, 예를 들어 프로세서 개체 내에서, 실행가능한 컴퓨터 소프트웨어에 의해, 또는 하드웨어에 의해, 또는 소프트웨어 및 하드웨어의 조합에 의해 구현될 수 있다. 나아가 이와 관련하여 도면에서와 같은 로직 흐름의 임의의 블록은 프로그램 단계, 또는 상호연결된 로직 회로, 블록 및 기능, 또는 프로그램 단계 및 로직 회로, 블록 및 기능의 조합을 표현할 수 있음에 유의하여야 한다. 소프트웨어는 메모리 칩, 또는 프로세서 내에 구현된 메모리 블록, 하드 디스크 또는 플로피 디스크와 같은 자기적 매체, 그리고 예컨대 DVD 및 이의 데이터 변종인 CD와 같은 광학적 매체와 같은 그러한 물리적 매체 상에 저장될 수 있다.
메모리는 로컬 기술적 환경에 적합한 임의의 유형의 것일 수 있고 임의의 적합한 데이터 저장 기술, 예를 들어 반도체 기반 메모리 디바이스, 자기적 메모리 디바이스 및 시스템, 광학적 메모리 디바이스 및 시스템, 고정된 메모리 및 탈착가능(removable) 메모리를 사용하여 구현될 수 있다. 데이터 프로세서는 로컬 기술적 환경에 적합한 임의의 유형의 것일 수 있고, 비한정적인 예로서, 일반 목적 컴퓨터, 특수 목적 컴퓨터, 마이크로프로세서, 디지털 신호 프로세서(Digital Signal Processor: DSP), 그리고 다중코어(multi-core) 프로세서 아키텍처에 기반한 프로세서 중 하나 이상을 포함할 수 있다.
발명의 실시예는 집적 회로(integrated circuit) 모듈과 같은 다양한 컴포넌트 내에서 실시될 수 있다. 집적 회로의 설계는 대체로 매우 자동화된 프로세스이다. 로직 레벨 설계를 에칭되어 반도체 기판 상에 형성될 준비가 된 반도체 회로 설계로 변환하기 위해 복잡하고 강력한 소프트웨어 도구가 이용가능하다.
캘리포니아주 마운틴 뷰(Mountain View, California)의 시놉시스 사(Synopsys, Inc.) 캘리포니아주 새너제이(San Jose, California)의 케이던스 디자인(Cadence Design)에 의해 제공되는 것과 같은 프로그램은 사전저장된 설계 모듈의 라이브러리(library)뿐만 아니라 확립된 설계 규칙을 사용하여, 도체를 자동으로 라우팅하고 컴포넌트를 반도체 칩 상에 위치시킨다. 반도체 회로에 대한 설계가 일단 완료되면, 표준화된 전자 포맷(가령, Opus, GDSII 또는 유사한 것)으로 된 결과적인 설계는 제조를 위해 반도체 제조 설비(semiconductor fabrication facility) 또는 "팹"(fab)으로 보내어질 수 있다.
전술한 설명은 이 발명의 예시적인 실시예의 온전하고 유익한 설명을 예시적이고 비한정적인 예로서 제공하였다. 그러나, 첨부된 도면 및 부기된 청구항과 함께 읽히는 경우, 전술한 설명에 비추어 관련 업계에서 숙련된 자에게 다양한 수정 및 적응이 명백하게 될 수 있다. 그러나, 이 발명의 교시의 모든 그러한 그리고 유사한 수정은 이 발명의 범주 내에 여전히 속할 것이다.

Claims (24)

  1. 장치로서,
    제1 파일의 제1 서술을 수신 - 상기 제1 서술은 상기 제1 파일 내에 포함되는 파생 이미지(derived image)의 속성을 포함하고, 상기 파생 이미지는 적어도 하나의 코딩된 입력 이미지에 대한 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트(resource count) 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함함 - 하고,
    상기 파생 이미지의 속성을 포함하는 상기 제1 서술에 기반하여 상기 파생 이미지를 획득할지를 결정하도록 구성되고,
    상기 장치는, 상기 파생 이미지를 획득하기로 결정한 것에 응답하여, 상기 파생 이미지를 포함하는 상기 제1 파일을 획득하도록 또한 구성된,
    장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 서술은 다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME) 유형을 포함하는,
    장치.
  4. 삭제
  5. 삭제
  6. 장치로서,
    하나 이상의 코딩된 입력 이미지를 획득하고,
    파생 이미지를 획득하기 위해 적어도 하나의 코딩된 입력 이미지에 대해 수행될 적어도 하나의 동작을 결정하며,
    제1 파일의 제1 서술을 미디어 콘텐츠 서술(media content description) 내에 포함시키도록 구성되되,
    상기 제1 서술은 상기 제1 파일 내에 포함되는 적어도 상기 파생 이미지의 속성을 포함하고, 상기 파생 이미지는 상기 적어도 하나의 코딩된 입력 이미지에 대한 상기 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함하는,
    장치.
  7. 삭제
  8. 제6항에 있어서,
    상기 제1 서술은 다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME) 유형을 포함하는,
    장치.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제1 파일의 제1 서술을 수신하는 단계 - 상기 제1 서술은 상기 제1 파일 내에 포함되는 파생 이미지의 속성을 포함하고, 상기 파생 이미지는 적어도 하나의 코딩된 입력 이미지에 대한 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함함 - 와,
    상기 파생 이미지의 속성을 포함하는 상기 제1 서술에 기반하여 상기 파생 이미지를 획득할지를 결정하는 단계와,
    상기 파생 이미지를 획득하기로 결정한 것에 응답하여, 상기 파생 이미지를 포함하는 상기 제1 파일을 획득하는 단계를 포함하는
    방법.
  13. 삭제
  14. 제12항에 있어서,
    상기 제1 서술은 다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME) 유형을 포함하는,
    방법.
  15. 삭제
  16. 삭제
  17. 방법으로서,
    하나 이상의 코딩된 입력 이미지를 획득하는 단계와,
    파생 이미지를 획득하기 위해 적어도 하나의 코딩된 입력 이미지에 대해 수행될 적어도 하나의 동작을 결정하는 단계와,
    제1 파일의 제1 서술을 미디어 콘텐츠 서술 내에 포함시키는 단계를 포함하되,
    상기 제1 서술은 상기 제1 파일 내에 포함되는 적어도 상기 파생 이미지의 속성을 포함하고, 상기 파생 이미지는 상기 적어도 하나의 코딩된 입력 이미지에 대한 상기 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함하는,
    방법.
  18. 삭제
  19. 제17항에 있어서,
    상기 제1 서술은 다목적 인터넷 메일 확장(Multipurpose Internet Mail Extension: MIME) 유형을 포함하는,
    방법.
  20. 삭제
  21. 삭제
  22. 삭제
  23. 장치에 의한 사용을 위한 코드가 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 코드는, 프로세서에 의해 실행되는 경우, 상기 장치로 하여금
    제1 파일의 제1 서술을 수신하는 것 - 상기 제1 서술은 상기 제1 파일 내에 포함되는 파생 이미지의 속성을 포함하고, 상기 파생 이미지는 적어도 하나의 코딩된 입력 이미지에 대한 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함함 - 과,
    상기 파생 이미지를 획득할지를 상기 파생 이미지의 속성을 포함하는 상기 제1 서술에 기반하여 결정하는 것과,
    상기 파생 이미지를 획득하기로 결정한 것에 응답하여, 상기 파생 이미지를 포함하는 상기 제1 파일을 획득하는 것을
    수행하게 하는,
    컴퓨터 판독가능 저장 매체.
  24. 장치에 의한 사용을 위한 코드가 저장된 컴퓨터 판독가능 저장 매체로서,
    상기 코드는, 프로세서에 의해 실행되는 경우, 상기 장치로 하여금
    하나 이상의 코딩된 입력 이미지를 획득하는 것과,
    파생 이미지를 획득하기 위해 적어도 하나의 코딩된 입력 이미지에 대해 수행될 적어도 하나의 동작을 결정하는 것과,
    제1 파일의 제1 서술을 미디어 콘텐츠 서술 내에 포함시키는 것 - 상기 제1 서술은 상기 제1 파일 내에 포함되는 적어도 상기 파생 이미지의 속성을 포함하고, 상기 파생 이미지는 상기 적어도 하나의 코딩된 입력 이미지에 대한 상기 적어도 하나의 동작에 의해 표현되는 이미지이고, 상기 파생 이미지의 속성을 포함하는 상기 제1 서술은, 상기 파생 이미지를 위해 사용되는 상기 적어도 하나의 동작을 나타내는 명령어 세트의 제1 식별, 상기 파생 이미지를 위한 상기 적어도 하나의 코딩된 입력 이미지의 코덱 및 코덱 프로파일의 제2 식별, 및 상기 파생 이미지의 구성을 위해 필요한 리소스를 나타내는 리소스 카운트 중 하나 이상의 상기 파생 이미지에 대한 정보를 포함함 - 을
    수행하게 하는,
    컴퓨터 판독가능 저장 매체.
KR1020177025156A 2015-02-09 2016-02-02 이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램 KR101949071B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/617,266 US10291561B2 (en) 2015-02-09 2015-02-09 Apparatus, a method and a computer program for image coding and decoding
US14/617,266 2015-02-09
PCT/FI2016/050063 WO2016128612A1 (en) 2015-02-09 2016-02-02 An apparatus, a method and a computer program for image coding and decoding

Publications (2)

Publication Number Publication Date
KR20170116089A KR20170116089A (ko) 2017-10-18
KR101949071B1 true KR101949071B1 (ko) 2019-02-15

Family

ID=56567195

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177025156A KR101949071B1 (ko) 2015-02-09 2016-02-02 이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램

Country Status (7)

Country Link
US (1) US10291561B2 (ko)
EP (1) EP3257244B1 (ko)
JP (1) JP6649404B2 (ko)
KR (1) KR101949071B1 (ko)
CN (1) CN107431810B (ko)
WO (1) WO2016128612A1 (ko)
ZA (1) ZA201705953B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016015009A (ja) * 2014-07-02 2016-01-28 ソニー株式会社 情報処理システム、情報処理端末、および情報処理方法
US20160277767A1 (en) * 2015-03-16 2016-09-22 Thomson Licensing Methods, systems and apparatus for determining prediction adjustment factors
GB2538997A (en) * 2015-06-03 2016-12-07 Nokia Technologies Oy A method, an apparatus, a computer program for video coding
US10681107B2 (en) * 2015-06-16 2020-06-09 Apple Inc. Adaptive video content for cellular communication
US10951874B2 (en) * 2016-09-02 2021-03-16 Mediatek Inc. Incremental quality delivery and compositing processing
US10652553B2 (en) * 2016-12-07 2020-05-12 Qualcomm Incorporated Systems and methods of signaling of regions of interest
GB2560921B (en) 2017-03-27 2020-04-08 Canon Kk Method and apparatus for encoding media data comprising generated content
US10924822B2 (en) * 2017-04-04 2021-02-16 Qualcomm Incorporated Segment types as delimiters and addressable resource identifiers
US10560726B2 (en) * 2017-07-26 2020-02-11 CodeShop BV System and method for delivery and caching of personalized media streaming content
CN110545456B (zh) * 2018-05-29 2022-04-01 北京字节跳动网络技术有限公司 媒体文件的同步播放方法、装置及存储介质
CN108876882A (zh) * 2018-06-26 2018-11-23 史艳艳 一种画面非循环的gif文件播放方法及系统
EP3854105A4 (en) 2018-09-20 2022-06-22 Nokia Technologies Oy ARTIFICIAL INTELLIGENCE APPARATUS AND METHOD
JP7303625B2 (ja) * 2018-12-18 2023-07-05 キヤノン株式会社 画像ファイル生成装置、画像ファイル生成方法、及びプログラム
GB2585052B (en) * 2019-06-26 2023-07-26 Canon Kk Method and apparatus for encapsulating panorama images in a file
EP3992916A4 (en) * 2019-07-01 2023-06-21 Canon Kabushiki Kaisha DEVICE, METHOD AND PROGRAM FOR GENERATION OF IMAGE FILES
US11172232B2 (en) * 2019-09-06 2021-11-09 Sharp Kabushiki Kaisha Systems and methods for signaling level information in video coding
US11722751B2 (en) 2020-01-07 2023-08-08 Nokia Technologies Oy Method, an apparatus and a computer program product for video encoding and video decoding
US11683529B2 (en) * 2020-09-17 2023-06-20 Lemon Inc. Operational point sample group in coded video

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005086625A2 (en) 2004-02-10 2005-09-22 Thomson Licensing Storage of advanced video coding (avc) parameter sets in avc file format
JP5569830B2 (ja) * 2011-03-25 2014-08-13 日本電気株式会社 映像処理システム、映像処理方法、映像処理装置及びその制御方法と制御プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004235739A (ja) 2003-01-28 2004-08-19 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
CN1812583A (zh) * 2005-09-22 2006-08-02 上海广电(集团)有限公司中央研究院 块组编码结构及基于该结构的自适应分阶段预测编码方法
US8949737B2 (en) * 2009-10-28 2015-02-03 Red Hat, Inc. Centralized application package distribution
KR101404251B1 (ko) 2010-09-10 2014-06-09 한국전자통신연구원 컨텐츠의 부가서비스 정보를 보조 단말기에 표시하는 시스템 및 방법
CN105325003B (zh) 2013-04-17 2019-05-28 诺基亚技术有限公司 用于视频编码和解码的装置、方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005086625A2 (en) 2004-02-10 2005-09-22 Thomson Licensing Storage of advanced video coding (avc) parameter sets in avc file format
JP5569830B2 (ja) * 2011-03-25 2014-08-13 日本電気株式会社 映像処理システム、映像処理方法、映像処理装置及びその制御方法と制御プログラム

Also Published As

Publication number Publication date
CN107431810A (zh) 2017-12-01
EP3257244A4 (en) 2018-10-17
WO2016128612A1 (en) 2016-08-18
US10291561B2 (en) 2019-05-14
EP3257244A1 (en) 2017-12-20
ZA201705953B (en) 2019-09-25
CN107431810B (zh) 2020-06-05
EP3257244B1 (en) 2022-07-27
US20160234144A1 (en) 2016-08-11
KR20170116089A (ko) 2017-10-18
JP6649404B2 (ja) 2020-02-19
JP2018510595A (ja) 2018-04-12

Similar Documents

Publication Publication Date Title
KR101949071B1 (ko) 이미지 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
KR102089457B1 (ko) 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
US10674170B2 (en) Apparatus, a method and a computer program for video coding and decoding
KR102411337B1 (ko) 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
RU2746934C9 (ru) Межуровневое предсказание для масштабируемого кодирования и декодирования видеоинформации
EP3245793B1 (en) A method, an apparatus and a computer readable storage medium for video streaming
US9800893B2 (en) Apparatus, a method and a computer program for video coding and decoding
CN112673638B (zh) 处理媒体数据的方法和装置
US10575010B2 (en) Apparatus, a method and a computer program for image sequence coding and decoding
WO2017140946A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2017140948A1 (en) An apparatus, a method and a computer program for video coding and decoding
WO2016185090A1 (en) An apparatus, a method and a computer program for video coding and decoding
EP4266690A1 (en) An apparatus, a method and a computer program for video coding and decoding

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant