KR20220063278A - 모든 계층에 대한 스케일러블 네스팅 sei 메시지 - Google Patents

모든 계층에 대한 스케일러블 네스팅 sei 메시지 Download PDF

Info

Publication number
KR20220063278A
KR20220063278A KR1020227013766A KR20227013766A KR20220063278A KR 20220063278 A KR20220063278 A KR 20220063278A KR 1020227013766 A KR1020227013766 A KR 1020227013766A KR 20227013766 A KR20227013766 A KR 20227013766A KR 20220063278 A KR20220063278 A KR 20220063278A
Authority
KR
South Korea
Prior art keywords
layer
layers
sei message
scalable
picture
Prior art date
Application number
KR1020227013766A
Other languages
English (en)
Inventor
예-쿠이 왕
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20220063278A publication Critical patent/KR20220063278A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Abstract

비디오 코딩 메커니즘이 개시된다. 상기 메커니즘은 디코더에서 비트스트림을 수신하는 것을 포함한다. 상기 비트스트림은 하나 이상의 계층 및 현재 보충 강화 정보(SEI) 네트워크 추상화 계층(NAL) 유닛에서의 스케일러블 네스팅 SEI 메시지를 포함한다. 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지 및 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 계층 식별자(Id) 이상인 계층 Id를 갖는 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있다. 상기 코딩된 픽처는 하나 이상의 계층으로부터 디코딩되어 디코딩된 픽처를 생성한다. 상기 디코딩된 픽처는 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 포워딩된다.

Description

모드 계층에 대한 스케일러블 네스팅 SEI 메시지
관련 출원에 대한 상호 참조
본 특허출원은 2019년 9월 24일에 Ye-Kui Wang이 출원하고 "Scalable Nesting of SEI Messages for Layers"라는 명칭의 미국 가특허출원 제62/905,144호의 이익을 주장하며, 이는 인용에 의해 본 출원에 포함된다.
본 개시는 일반적으로 비디오 코딩에 관한 것이고, 특히 다중 계층 비트스트림에서 인코딩 계층을 지원하는 데 사용되는 스케일러블 네스팅(scalable nesting) 보충 강화 정보(supplemental enhancement information, SEI) 메시지에 관한 것이다.
비교적 짧은 비디오라도 묘사하는 데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 데이터가 스트리밍되거나 한정된 대역폭 용량을 가진 통신 네트워크를 통해 통신될 때 어려움을 초래할 수 있다. 따라서 비디오 데이터는 일반적으로 현대의 통신 네트워크를 통해 통신되기 전에 압축된다. 메모리 자원이 한정될 수 있기 때문에 비디오가 저장 기기에 저장될 때 비디오의 크기도 문제가 될 수 있다. 비디오 압축 기기는 송신 또는 저장 전에 비디오 데이터를 코딩하기 위해 근원지(source)에서 소프트웨어 및/또는 하드웨어를 사용하여, 디지털 비디오 이미지를 나타내는 데 필요한 데이터의 수량을 줄이는 경우가 많다. 그런 다음 압축된 데이터는 비디오 데이터를 디코딩하는 비디오 압축해제 기기에 의해 목적지(destination)에서 수신된다. 한정된 네트워크 자원과, 더 높은 비디오 품질에 대한 수요가 계속 증가함에 따라, 이미지 품질을 거의 또는 전혀 희생하지 않으면서 압축률을 향상시키는 향상된 압축 및 압축해제 기술이 바람직하다.
일 실시예에서, 본 개시는 디코더에서 구현되는 방법을 포함하며, 상기 방법은, 상기 디코더의 수신기가, 하나 이상의 계층 및 현재 SEI NAL 유닛에서의 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림을 수신하는 단계 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지, 및 상기 현재 SEI NAL 유닛의 계층 Id 이상인 계층 Id를 갖는 모든 계층에 상기 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -; 상기 디코더의 프로세서가, 상기 하나 이상의 계층으로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성하는 단계; 및 상기 프로세서가, 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 디코딩된 픽처를 포워딩하는 단계를 포함한다.
일부 비디오 코딩 시스템은 SEI 메시지를 채용한다. SEI 메시지는 디코딩된 픽처에서 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않는 정보를 포함할 수 있다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하는지 검사하는 데 사용되는 파라미터를 포함할 수 있다. 경우에 따라, 비디오는 여러 계층을 사용하여 비트스트림으로 코딩된다. 스케일러블 네스팅 SEI 메시지는 여러 계층에 대한 SEI 메시지를 포함하기 위해 채용될 수 있다. 액세스 유닛(AU)에서 모든 계층에 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하기 위해 플래그를 사용하는 경우에 문제가 발생할 수 있다. AU는 상이한 계층에 포함되고 동일한 출력 시간과 연관되어 있는 코딩된 픽처의 세트이다. 이 접근법은 모든 AU가 모든 계층에 대한 픽처를 포함할 때 동작한다. 그러나 경우에 따라, 일부 계층에서는 출력 시간 동안 픽처가 존재하고 다른 계층에서는 생략될 수 있다. 예를 들어, 높은 프레임 레이트 계층은 각각의 AU에서 픽처를 포함할 수 있는 반면, 낮은 프레임 레이트 계층은 더 높은 프레임 레이트 계층에 의해 점유되는 많은 AU에서 픽처를 생략한다. 그 결과 플래그는 SEI 메시지가 현재 AU에 있는 픽처를 포함하는 계층에만 적용되도록 한다. 이것은 가상 참조 디코더(hypothetical reference decoder, HRD)가 현재 AU에서 픽처를 생략하는 계층에 스케일러블 네스티드 SEI 메시지를 연관시킬 수 없기 때문에 적합성 테스트 오류를 야기한다. 예를 들어, 그러한 계층은 현재 AU 이후의 나중 AU에 있는 픽처를 포함할 수 있다. 이러한 경우에, HRD는 이후 AU가 적합성 테스트를 받을 때 이러한 계층에 스케일러블 네스팅 SEI 메시지가 적용되는 것으로 인식하지 않는다. 따라서 HRD는 모든 계층에 대한 플래그가 불완전한 AU에서 채용되는 경우에 이후 AU에서 이러한 계층의 적합성을 올바르게 테스트하지 못할 수 있다.
본 예는 전술한 오류를 정정하기 위해 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 비디오 파라미터 세트(VPS)에 지정된 모든 계층에 스케일러블 네스팅 SEI 메시지에 있는 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하도록 설정될 수 있다. VPS는 모든 계층를 나열한다. 따라서 이 접근법은 스케일러블 네스팅 SEI 메시지가 모든 계층에 전역적으로 적용되는 경우를 인코더가 명확하게 지시할 수 있도록 해준다. 그런 다음 HRD 적합성 테스트 프로세스는 스케일러블 네스팅 SEI 메시지와 연관된 불완전한 AU를 따르는 AU에서 예측할 수 없는 오류를 돌려주지 않고 비트스트림의 적합성을 검사할 수 있다. 따라서, 스케일러블 네스팅 all_layers_flag는 불완전한 AU가 존재할 때 비트스트림의 적합성이 올바르게 검사되게 함으로써 인코더 및/또는 디코더의 기능을 향상시킨다. 또한, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는 경우 해당 메시지에 대한 명시적인 계층 시그널링을 생략함으로써 인코딩된 비트스트림의 크기를 줄인다. 결과적으로 코딩 효율이 증대하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원의 사용량을 감소시킨다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스팅 all_layers_flag는, 상기 스케일러블 네스팅 SEI 메시지가 상기 현재 SEI NAL 유닛의 nuh_layer_id 이상인 NAL 유닛 헤더 계층 Id(nuh_layer_id)를 갖는 모든 계층에 적용됨을 지정되는 경우에 1과 동일하다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스팅 all_layers_flag는, 상기 스케일러블 네스티드 SEI 메시지가 상기 현재의 nuh_layer_id 이상인 NAL 유닛 헤더 계층 Id(nuh_layer_id)를 갖는 모든 계층에 적용될 수 있거나 적용되지 않을 수 있음을 지정하는 경우에 0과 동일하다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 프로세서가, 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하는 네스팅 계층의 수(nestingNumLayers) 변수를 도출하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 프로세서가, 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 상기 스케일러블 네스티드 SEI 메시지가 적용되는 상기 계층의 nuh_layer_id 값의 목록을 지정하는 네스팅 계층 Id의 목록(NestingLayerId[i])을 도출하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 nestingNumLayers 및 상기 NestingLayerId[i]는 다음과 같이 도출된다:
Figure pct00001
여기서 vps_max_layers_minus1 + 1은 비디오 파라미터 세트(VPS)에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, scalable nesting layer_id[i]는 상기 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연관시키는 메커니즘을 제공한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 코딩된 픽처는 상기 스케일러블 네스티드 SEI 메시지에 기초하여 디코딩된다.
일 실시예에서, 본 개시는 인코더에서 구현되는 방법을 포함하며, 상기 방법은, 상기 인코더의 프로세서가, 하나 이상의 계층을 포함하는 비트스트림을 인코딩하는 단계; 상기 프로세서가, SEI NAL 유닛에서의 스케일러블 네스팅 SEI 메시지를 상기 비트스트림으로 인코딩하는 단계 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지 및 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 계층 식별자(Id) 이상인 계층 Id를 갖는 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -; 상기 프로세서가, 상기 스케일러블 네스티드 SEI 메시지에 기초하여 상기 계층에 대해 비트스트림 적합성 테스트의 세트를 수행하는 단계; 상기 프로세서에 결합된 메모리가, 디코더로의 통신을 위해 상기 비트스트림을 저장하는 단계를 포함한다.
일부 비디오 코딩 시스템은 SEI 메시지를 채용한다. SEI 메시지는 디코딩된 픽처에서 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않는 정보를 포함할 수 있다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하는지 검사하는 데 사용되는 파라미터를 포함할 수 있다. 경우에 따라, 비디오는 여러 계층을 사용하여 비트스트림으로 코딩된다. 스케일러블 네스팅 SEI 메시지는 여러 계층에 대한 SEI 메시지를 포함하기 위해 채용될 수 있다. 액세스 유닛(AU)에서 모든 계층에 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하기 위해 플래그를 사용하는 경우에 문제가 발생할 수 있다. AU는 상이한 계층에 포함되고 동일한 출력 시간과 연관되어 있는 코딩된 픽처의 세트이다. 이 접근법은 모든 AU가 모든 계층에 대한 픽처를 포함할 때 동작한다. 그러나 경우에 따라, 일부 계층에서는 출력 시간 동안 픽처가 존재하고 다른 계층에서는 생략될 수 있다. 예를 들어, 높은 프레임 레이트 계층은 각각의 AU에서 픽처를 포함할 수 있는 반면, 낮은 프레임 레이트 계층은 더 높은 프레임 레이트 계층에 의해 점유되는 많은 AU에서 픽처를 생략한다. 그 결과 플래그는 SEI 메시지가 현재 AU에 있는 픽처를 포함하는 계층에만 적용되도록 한다. 이것은 가상 참조 디코더(hypothetical reference decoder, HRD)가 현재 AU에서 픽처를 생략하는 계층에 스케일러블 네스티드 SEI 메시지를 연관시킬 수 없기 때문에 적합성 테스트 오류를 야기한다. 예를 들어, 그러한 계층은 현재 AU 이후의 나중 AU에 있는 픽처를 포함할 수 있다. 이러한 경우에, HRD는 이후 AU가 적합성 테스트를 받을 때 이러한 계층에 스케일러블 네스팅 SEI 메시지가 적용되는 것으로 인식하지 않는다. 따라서 HRD는 모든 계층에 대한 플래그가 불완전한 AU에서 채용되는 경우에 이후 AU에서 이러한 계층의 적합성을 올바르게 테스트하지 못할 수 있다.
본 예는 전술한 오류를 정정하기 위해 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 비디오 파라미터 세트(VPS)에 지정된 모든 계층에 스케일러블 네스팅 SEI 메시지에 있는 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하도록 설정될 수 있다. VPS는 모든 계층를 나열한다. 따라서 이 접근법은 스케일러블 네스팅 SEI 메시지가 모든 계층에 전역적으로 적용되는 경우를 인코더가 명확하게 지시할 수 있도록 해준다. 그런 다음 HRD 적합성 테스트 프로세스는 스케일러블 네스팅 SEI 메시지와 연관된 불완전한 AU를 따르는 AU에서 예측할 수 없는 오류를 돌려주지 않고 비트스트림의 적합성을 검사할 수 있다. 따라서, 스케일러블 네스팅 all_layers_flag는 불완전한 AU가 존재할 때 비트스트림의 적합성이 올바르게 검사되게 함으로써 인코더 및/또는 디코더의 기능을 향상시킨다. 또한, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는 경우 해당 메시지에 대한 명시적인 계층 시그널링을 생략함으로써 인코딩된 비트스트림의 크기를 줄인다. 결과적으로 코딩 효율이 증대하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원의 사용량을 감소시킨다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 NAL 유닛 헤더 계층 Id(nuh_layer_id) 이상인 nuh_layer_id를 갖는 모든 계층에 적용됨을 지정하는 경우에 상기 스케일러블 네스팅 all_layers_flag를 1과 동일하게 설정하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 nuh_layer_id 이상인 nuh_layer_id를 갖는 모든 계층에 적용될 수 있거나 적용될 수 없음을 지정하는 경우에 상기 스케일러블 네스팅 all_layers_flag를 0과 동일하게 설정하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 비트스트림 적합성 테스트의 세트를 수행하는 단계는, 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하는 네스팅 계층의 수(nestingNumLayers) 변수를 도출하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 비트스트림 적합성 테스트의 세트를 수행하는 단계는, 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 상기 스케일러블 네스티드 SEI 메시지가 적용되는 상기 계층의 nuh_layer_id 값의 목록을 지정하는 네스팅 계층 Id의 목록(NestingLayerId[i])을 도출하는 단계를 더 포함한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 nestingNumLayers 및 상기 NestingLayerId[i]는 다음과 같이 도출된다:
Figure pct00002
여기서 vps_max_layers_minus1 + 1은 VPS에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, scalable nesting layer_id[i]는 상기 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정한다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연관시키는 메커니즘을 제공한다.
일 실시예에서 본 개시는 비디오 코딩 기기를 포함하며, 상기 비디오 코딩 기기는, 프로세서, 상기 프로세서에 결합된 수신기, 상기 프로세서에 결합된 메모리, 및 상기 프로세서에 결합된 송신기를 포함하고, 상기 프로세서, 상기 수신기, 상기 메모리, 및 상기 송신기는 선행 측면 중 어느 측면에서의 방법을 수행하도록 구성된다.
일 실시예에서, 본 개시는 비디오 코딩 기기에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는, 컴퓨터로 판독 가능한 비일시적인 매체를 제공하며, 상기 컴퓨터 프로그램 제품은, 프로세서에 의해 실행될 때 상기 비디오 코딩 기기로 하여금 선행 측면 중 어느 측면에서의 방법을 수행하게 하는, 상기 컴퓨터로 판독 가능한 비일시적인 매체에 저장된, 컴퓨터로 실행 가능한 명령어를 포함한다.
일 실시예에서, 본 개시는 디코더를 포함하며, 상기 디코더는, SEI NAL 유닛에서의 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림을 수신하기 위한 수신 수단 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지, 및 상기 현재 SEI NAL 유닛의 계층 Id 이상인 계층 Id를 갖는 모든 계층에 상기 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -; 상기 하나 이상의 계층으로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성하기 위한 디코딩 수단; 및 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 디코딩된 픽처를 포워딩하기 위한 포워딩 수단을 포함한다.
일부 비디오 코딩 시스템은 SEI 메시지를 채용한다. SEI 메시지는 디코딩된 픽처에서 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않는 정보를 포함할 수 있다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하는지 검사하는 데 사용되는 파라미터를 포함할 수 있다. 경우에 따라, 비디오는 여러 계층을 사용하여 비트스트림으로 코딩된다. 스케일러블 네스팅 SEI 메시지는 여러 계층에 대한 SEI 메시지를 포함하기 위해 채용될 수 있다. 액세스 유닛(AU)에서 모든 계층에 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하기 위해 플래그를 사용하는 경우에 문제가 발생할 수 있다. AU는 상이한 계층에 포함되고 동일한 출력 시간과 연관되어 있는 코딩된 픽처의 세트이다. 이 접근법은 모든 AU가 모든 계층에 대한 픽처를 포함할 때 동작한다. 그러나 경우에 따라, 일부 계층에서는 출력 시간 동안 픽처가 존재하고 다른 계층에서는 생략될 수 있다. 예를 들어, 높은 프레임 레이트 계층은 각각의 AU에서 픽처를 포함할 수 있는 반면, 낮은 프레임 레이트 계층은 더 높은 프레임 레이트 계층에 의해 점유되는 많은 AU에서 픽처를 생략한다. 그 결과 플래그는 SEI 메시지가 현재 AU에 있는 픽처를 포함하는 계층에만 적용되도록 한다. 이것은 가상 참조 디코더(hypothetical reference decoder, HRD)가 현재 AU에서 픽처를 생략하는 계층에 스케일러블 네스티드 SEI 메시지를 연관시킬 수 없기 때문에 적합성 테스트 오류를 야기한다. 예를 들어, 그러한 계층은 현재 AU 이후의 나중 AU에 있는 픽처를 포함할 수 있다. 이러한 경우에, HRD는 이후 AU가 적합성 테스트를 받을 때 이러한 계층에 스케일러블 네스팅 SEI 메시지가 적용되는 것으로 인식하지 않는다. 따라서 HRD는 모든 계층에 대한 플래그가 불완전한 AU에서 채용되는 경우에 이후 AU에서 이러한 계층의 적합성을 올바르게 테스트하지 못할 수 있다.
본 예는 전술한 오류를 정정하기 위해 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 비디오 파라미터 세트(VPS)에 지정된 모든 계층에 스케일러블 네스팅 SEI 메시지에 있는 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하도록 설정될 수 있다. VPS는 모든 계층를 나열한다. 따라서 이 접근법은 스케일러블 네스팅 SEI 메시지가 모든 계층에 전역적으로 적용되는 경우를 인코더가 명확하게 지시할 수 있도록 해준다. 그런 다음 HRD 적합성 테스트 프로세스는 스케일러블 네스팅 SEI 메시지와 연관된 불완전한 AU를 따르는 AU에서 예측할 수 없는 오류를 돌려주지 않고 비트스트림의 적합성을 검사할 수 있다. 따라서, 스케일러블 네스팅 all_layers_flag는 불완전한 AU가 존재할 때 비트스트림의 적합성이 올바르게 검사되게 함으로써 인코더 및/또는 디코더의 기능을 향상시킨다. 또한, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는 경우 해당 메시지에 대한 명시적인 계층 시그널링을 생략함으로써 인코딩된 비트스트림의 크기를 줄인다. 결과적으로 코딩 효율이 증대하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원의 사용량을 감소시킨다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 디코더는 추가로, 선행 측면 중 어느 측면의 방법을 수행하도록 구성된다.
일 실시예에서, 본 개시는 인코더를 포함하며, 상기 인코더, 하나 이상의 계층을 포함하는 비트스트림을 인코딩하고; 현재 SEI NAL 유닛에서의 스케일러블 네스팅 SEI 메시지를 상기 비트스트림으로 인코딩하기 위한 인코딩 수단 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지 및 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 계층 Id 이상인 계층 Id를 갖는 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 all_layers_flag가 들어 있음 -; 상기 스케일러블 네스티드 SEI 메시지에 기초하여 상기 계층에 대해 비트스트림 적합성 테스트의 세트를 수행하기 위한 HRD 수단; 및 디코더로의 통신을 위해 상기 비트스트림을 저장하기 위한 저장 수단을 포함한다.
일부 비디오 코딩 시스템은 SEI 메시지를 채용한다. SEI 메시지는 디코딩된 픽처에서 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않는 정보를 포함할 수 있다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하는지 검사하는 데 사용되는 파라미터를 포함할 수 있다. 경우에 따라, 비디오는 여러 계층을 사용하여 비트스트림으로 코딩된다. 스케일러블 네스팅 SEI 메시지는 여러 계층에 대한 SEI 메시지를 포함하기 위해 채용될 수 있다. 액세스 유닛(AU)에서 모든 계층에 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하기 위해 플래그를 사용하는 경우에 문제가 발생할 수 있다. AU는 상이한 계층에 포함되고 동일한 출력 시간과 연관되어 있는 코딩된 픽처의 세트이다. 이 접근법은 모든 AU가 모든 계층에 대한 픽처를 포함할 때 동작한다. 그러나 경우에 따라, 일부 계층에서는 출력 시간 동안 픽처가 존재하고 다른 계층에서는 생략될 수 있다. 예를 들어, 높은 프레임 레이트 계층은 각각의 AU에서 픽처를 포함할 수 있는 반면, 낮은 프레임 레이트 계층은 더 높은 프레임 레이트 계층에 의해 점유되는 많은 AU에서 픽처를 생략한다. 그 결과 플래그는 SEI 메시지가 현재 AU에 있는 픽처를 포함하는 계층에만 적용되도록 한다. 이것은 가상 참조 디코더(hypothetical reference decoder, HRD)가 현재 AU에서 픽처를 생략하는 계층에 스케일러블 네스티드 SEI 메시지를 연관시킬 수 없기 때문에 적합성 테스트 오류를 야기한다. 예를 들어, 그러한 계층은 현재 AU 이후의 나중 AU에 있는 픽처를 포함할 수 있다. 이러한 경우에, HRD는 이후 AU가 적합성 테스트를 받을 때 이러한 계층에 스케일러블 네스팅 SEI 메시지가 적용되는 것으로 인식하지 않는다. 따라서 HRD는 모든 계층에 대한 플래그가 불완전한 AU에서 채용되는 경우에 이후 AU에서 이러한 계층의 적합성을 올바르게 테스트하지 못할 수 있다.
본 예는 전술한 오류를 정정하기 위해 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 비디오 파라미터 세트(VPS)에 지정된 모든 계층에 스케일러블 네스팅 SEI 메시지에 있는 스케일러블 네스티드 SEI 메시지가 적용됨을 지시하도록 설정될 수 있다. VPS는 모든 계층를 나열한다. 따라서 이 접근법은 스케일러블 네스팅 SEI 메시지가 모든 계층에 전역적으로 적용되는 경우를 인코더가 명확하게 지시할 수 있도록 해준다. 그런 다음 HRD 적합성 테스트 프로세스는 스케일러블 네스팅 SEI 메시지와 연관된 불완전한 AU를 따르는 AU에서 예측할 수 없는 오류를 돌려주지 않고 비트스트림의 적합성을 검사할 수 있다. 따라서, 스케일러블 네스팅 all_layers_flag는 불완전한 AU가 존재할 때 비트스트림의 적합성이 올바르게 검사되게 함으로써 인코더 및/또는 디코더의 기능을 향상시킨다. 또한, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는 경우 해당 메시지에 대한 명시적인 계층 시그널링을 생략함으로써 인코딩된 비트스트림의 크기를 줄인다. 결과적으로 코딩 효율이 증대하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원의 사용량을 감소시킨다.
선택적으로, 선행 측면 중 어느 측면에서, 그 측면의 다른 구현은 다음을 제공한다: 상기 인코더는 추가로, 선행 측면 중 어느 한 측면의 수행하도록 구성된다.
명료함을 위해, 전술한 실시예 중 어느 하나는 본 개시의 범위 내에서 새로운 실시예를 만들기 위해 다른 전술한 실시예 중 어느 하나 이상과 조합될 수 있다.
이들 및 다른 특징은 첨부 도면 및 청구범위와 관련하여 취해진 이하에서의 상세한 설명으로부터 더 명확하게 이해될 것이다.
본 개시의 더욱 완전한 이해를 위해, 이제 첨부 도면 및 상세한 설명과 관련하여 취해진 다음의 간략한 설명을 참조하며, 여기서 유사한 참조 번호가 유사한 부분을 나타낸다.
도 1은 비디오 신호를 코딩하는 예시적인 방법의 흐름도이다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템의 개략도이다.
도 3은 예시적인 비디오 인코더를 나타낸 개략도이다.
도 4는 예시적인 비디오 디코더를 나타낸 개략도이다.
도 5는 예시적인 가상 참조 디코더(hypothetical reference decoder, HRD)를 나타낸 개략도이다.
도 6은 계층 간 예측(inter-layer prediction)을 위해 구성된 예시적인 다중 계층 비디오 시퀀스를 나타낸 개략도이다.
도 7은 예시적인 비트스트림을 나타낸 개략도이다.
도 8은 예시적인 비디오 코딩 기기의 개략도이다.
도 9는 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림으로 비디오 시퀀스를 인코딩하는 예시적인 방법의 흐름도이다.
도 10은 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법의 흐름도이다.
도 11은 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림을 사용하여 비디오 시퀀스를 코딩하기 위한 예시적인 시스템의 개략도이다.
하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는 임의의 수의 기술을 사용하여 구현될 수 있다는 것이 처음부터 이해되어야 한다. 본 개시는 본 명세서에 예시되고 설명된 예시적인 설계 및 구현을 포함하여 아래에 예시된 예시적인 구현, 도면 및 기술에 결코 제한되어서는 안 되며, 등가물의 전체 범위와 함께 첨부된 청구범위의 범위 내에서 수정될 수 있다.
이하의 용어들은 본 명세서에서 상반되는 맥락에서 사용되지 않는 한 이하와 같이 정의된다. 구체적으로, 이하의 정의는 본 개시에 대해 추가적인 명확성을 제공하기 위한 것이다. 그러나 용어는 상황에 따라 다르게 설명될 수 있다. 따라서 이하의 정의는 보충으로서 간주되어야 하며, 본 명세서에서 그러한 용어에 대해 제공된 설명의 다른 정의를 제한하는 것으로 간주되어서는 안 된다.
비트스트림은 인코더와 디코더 사이의 송신을 위해 압축되는 비디오 데이터를 포함하는 비트의 시퀀스일 수 있다. 인코더는 비디오 데이터를 비트스트림으로 압축하기 위해 인코딩 프로세스를 채용하도록 구성된 기기일 수 있다. 디코더는 표시를 위해 비트스트림으로부터 비디오 데이터를 재구축하기 위해 디코딩 프로세스를 채용하도록 구성된 기기일 수 있다. 픽처는 그 프레임 또는 필드를 생성하는 루마 샘플의 배열 및/또는 크로마 샘플의 배열일 수 있다. 인코딩 또는 디코딩되고 있는 픽처는 논의의 명확성을 위해 현재 픽처로 지칭될 수 있다. 코딩된 픽처는 액세스 유닛(access unit, AU) 내에 네트워크 추상화 계층(NAL) 유닛 헤더 계층 식별자(nuh_layer_id)의 특정 값을 가진 비디오 코딩 계층(video coding layer, VCL) 네트워크 추상화 계층(NAL) 유닛을 포함하고 픽처의 모든 코딩 트리유닛(coding tree unit, CTU)가 들어있는, 픽처의 코딩된 표현일 수 있다. 디코딩된 픽처는 코딩된 픽처에 디코딩 프로세스를 적용하여 생성되는 픽처일 수 있다. AU는 상이한 계층에 포함되고 디코딩된 픽처 버퍼(decoded picture buffer, DPB)로부터의 출력을 위해 동일한 시간과 연관되는 코딩된 픽처의 세트일 수 있다. NAL 유닛은 RBSP(Raw Byte Sequence Payload), 데이터 유형의 지시, 및 필요에 따라 에뮬레이션 방지 바이트가 산재된 형태의 데이터를 포함하는 신택스 구조일 수 있다. VCL NAL 유닛은 픽처의 코딩된 슬라이스와 같은, 비디오 데이터를 포함하도록 코딩된 NAL 유닛일 수 있다. 비 VCL NAL 유닛은 비디오 데이터의 디코딩, 적합성 검사의 수행, 또는 다른 동작을 지원하는 신택스 및/또는 파라미터와 같은, 비 비디오 데이터를 포함하는 NAL 유닛일 수 있다. 계층은 계층 Id(identifier, 식별자) 및 연관된 비 VCL NAL 유닛에 의해 지시되는 바와 같은 특정 특성(예: 공통 해상도, 프레임 레이트, 이미지 크기 등)을 공유하는 VCL NAL 유닛의 세트일 수 있다. NAL 유닛 헤더 계층 식별자(nuh_layer_id)는 NAL 유닛을 포함하는 계층의 식별자를 지정하는 신택스 요소일 수 있다. 비디오 파라미터 세트(VPS)는 전체 비디오와 관련된 파라미터를 포함하는 데이터 유닛일 수 있다. 코딩된 비디오 시퀀스는 하나 이상의 코딩된 픽처의 세트일 수 있다. 디코딩된 비디오 시퀀스는 하나 이상의 디코딩된 픽처의 세트일 수 있다.
가상 참조 디코더(HRD)는 지정된 제약 조건에 대한 적합성을 검증하기 위해 인코딩 프로세스에 의해 생성된 비트스트림의 가변성을 검사하는 인코더에서 동작하는 디코더 모델일 수 있다. 비트스트림 적합성 테스트는 인코딩된 비트스트림이 VVC(Versatile Video Coding)와 같은 표준을 준수하는지를 판정하기 위한 테스트일 수 있다. HRD 파라미터는 HRD의 동작 조건을 초기화 및/또는 정의하는 신택스 요소이다. HRD 파라미터는 보충 강화 정보(SEI) 메시지에 포함될 수 있다. SEI 메시지는 디코딩된 픽처에서 샘플의 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않은 정보를 전달하는 지정된 시맨틱스(semantics)를 갖는 신택스 구조일 수 있다. SEI NAL 유닛은 하나 이상의 SEI 메시지를 포함하는 NAL 유닛일 수 있다. 특정 SEI NAL 유닛은 현재 SEI NAL 유닛으로 지칭될 수 있다. 스케일러블 네스팅 SEI 메시지는 하나 이상의 출력 계층 세트(output layer set, OLS) 또는 하나 이상의 계층에 대응하는 복수의 SEI 메시지를 포함하는 메시지일 수 있다. 버퍼링 기간(buffering period, BP) SEI 메시지는 코딩된 픽처 버퍼(coded picture buffer, CPB)를 관리하기 위해 HRD를 초기화하기 위한 HRD 파라미터를 포함하는 SEI 메시지일 수 있다. 픽처 타이밍(picture timing, PT) SEI 메시지는 CPB 및/또는 디코딩된 픽처 버퍼(DPB)에서 액세스 유닛(AU)에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 SEI 메시지일 수 있다. 디코딩 유닛 정보(decoding unit information, DUI) SEI 메시지는 CPB 및/또는 DPB에서 DU에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 SEI 메시지일 수 있다.
스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지의 세트일 수 있다. 스케일러블 네스티드 SEI 메시지는 스케일러블 네스팅 SEI 메시지 내부에 내포된 SEI 메시지일 수 있다. 스케일러블 네스팅 계층 Id(layer_id[i])는 스케일러블 네스팅 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정하는 스케일러블 네스팅 SEI 메시지의 신택스 요소일 수 있다. 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)는 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 SEI 메시지의 신택스 요소일 수 있다. 계층의 스케일러블 네스팅 수 빼기 1(num_layers_minus1)은 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하는 스케일러블 네스팅 SEI 메시지의 신택스 요소일 수 있다. VPS 최대 계층 빼기 1(vps_max_layers_minus1)은 VPS에 의해 지정된 계층의 수를 지정하는 VPS의 신택스 요소일 수 있다. VPS 계층 Id(vps_layer_id[i])는 제i 계층의 nuh_layer_id 값을 지정하는 VPS의 신택스 요소일 수 있다. 네스팅 계층의 수(nestingNumLayers)는 비트스트림에서의 데이터에 기초하여 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수로 설정되는 변수일 수 있다. 네스팅 계층 Id의 목록(NestingLayerId[i])은 비트스트림에서의 데이터에 기초하여 각각의 계층 i에 대해 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 nuh_layer_id 값의 목록을 지정하기 위해 설정되는 변수일 수 있다. 일반 계층 색인(GeneralLayerIdx)은 비트스트림에서의 데이터에 기초하여 nuh_layer_id로 각각의 계층의 계층 색인을 지정하기 위해 설정되는 변수일 수 있다.
본 명세서에서는 다음의 두문자어(acronym)를 사용한다: AU(Access Unit, 액세스 유닛), CTB(Coding Tree Block, 코딩 트리 블록), CTU(Coding Tree Unit, 코딩 트리 유닛), CU(Coding Unit, 코딩 유닛), CLVS(Coded Layer Video Sequence, 코딩된 계층 비디오 시퀀스), CLVSS(Coded Layer Video Sequence Start, 코딩 계층 비디오 시퀀스 시작), CVS(Coded Video Sequence, 코딩된 비디오 시퀀스), CVSS(Coded Video Sequence Start, 코딩 계층 비디오 시퀀스), JVET(Joint Video Experts Team, 공동 비디오 전문가 팀), MCTS(Motion Constrained Tile Set, 움직임 제약된 ㅌ타 세트), MTU(Maximum Transfer Unit, 최대 전송 유닛), NAL(Network Abstraction Layer, 네트워크 추상화 계층), OLS(Output Layer Set, 출력 계층 세트), POC(Picture Order Count, 픽처 순서 카운트), RAP(Random Access Point, 랜덤 액세스 포인트), RBSP(Raw Byte Sequence Payload, 원시 바이트 시퀀스 페이로드), SPS(Sequence Parameter Set, 시퀀스 파라미터 세트), VPS(Video Parameter Set, 비디오 파라미터 세트), VVC(Versatile Video Coding, 다목적 비디오 코딩).
데이터 손실을 최소화하면서 비디오 파일의 크기를 줄이기 위해 많은 비디오 압축 기술이 채용될 수 있다. 예를 들어, 비디오 압축 기술은 비디오 시퀀스에서 데이터 중복성을 감소 또는 제거하기 위해 공간적(예: 인트라 픽처(intra-picture)) 예측 및/또는 시간적(예: 인터-픽처(inter-picture)) 예측을 수행하는 것을 포함할 수 있다. 블록 기반 비디오 코딩의 경우, 비디오 슬라이스(예: 비디오 픽처 또는 비디오 픽처의 일부)는 트리블록, 코딩 트리 블록(CTB), 코딩 트리 유닛(CTU), 코딩 유닛(CU), 및/또는 코딩 노드라고도 하는 비디오 블록으로 파티셔닝될 수 있다. 픽처의 인트라 코딩된(I) 슬라이스의 비디오 블록은 동일한 픽처의 이웃 블록에 있는 참조 샘플에 대한 공간 예측을 사용하여 코딩된다. 픽처의 인터 코딩된 단방향 예측(P) 또는 양방향 예측(B) 슬라이스의 비디오 블록은 동일한 픽처의 이웃 블록에 있는 참조 샘플에 대한 공간적 예측 또는 다른 참조 픽처의 참조 샘플에 대한 시간적 예측을 채용하여 코딩될 수 있다. 픽처는 프레임 및/또는 이미지로 지칭될 수 있고, 참조 픽처는 참조 프레임 및/또는 참조 이미지로 지칭될 수 있다. 공간적 또는 시간적 예측은 이미지 블록을 나타내는 예측 블록을 생성한다. 잔차 데이터는 원본 이미지 블록과 예측 블록 간의 픽셀 차이를 나타낸다. 따라서, 인터 코딩된(inter-coded) 블록은 예측 블록을 형성하는 참조 샘플들의 블록을 가리키는 모션 벡터 및 코딩된 블록과 예측 블록 간의 차이를 나타내는 잔차 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인에서 변환 도메인으로 변환될 수 있다. 이는 양자화될 수 있는 잔차 변환 계수를 생성한다. 양자화된 변환 계수는 초기에 2차원 배열로 배열될 수 있다. 양자화된 변환 계수는 변환 계수의 1차원 벡터를 생성하기 위해 스캔될 수 있다. 훨씬 더 압축을 달성하기 위해 엔트로피 코딩이 적용될 수 있다. 이러한 비디오 압축 기술은 아래에서 더 자세히 논의된다.
인코딩된 비디오가 정확하게 디코딩될 수 있도록 보장하기 위해, 비디오는 대응하는 비디오 코딩 표준에 따라 인코딩 및 디코딩된다. 비디오 코딩 표준으로는 ITU-T(International Telecommunication Union(ITU) Standardization Sector) H.261, ISO/IEC(International Organization for Standardization/International Electrotechnical Commission) MPEG(Motion Picture Experts Group)-1 Part 2, ITU-T H.262 또는 ISO/IEC MPEG-2 Part 2, ITU-T H.263, ISO/IEC MPEG-4 Part 2, ITU-T H.264 또는 ISO/IEC MPEG-4 Part 10으로도 알려진 AVC(Advanced Video Coding), 및 ITU-T H.265 또는 MPEG-H Part 2로도 알려진 HEVC(High Efficiency Video Coding)를 포함한다. AVC는 SVC(Scalable Video Coding), MVC(Multiview Video Coding) 및 MVC+D(Multiview Video Coding plus Depth), 및 3차원(3D) AVC(3D-AVC)와 같은 확장을 포함한다. HEVC는 SHVC(Scalable HEVC, MV-HEVC(Multiview HEVC), 및 3D HEVC(3D-HEVC)과 같은 확장을 포함한다. ITU-T와 ISO/IEC의 공동 비디오 전문가 팀(JVET)은 VVC(Versatile Video Coding)라고 하는 비디오 코딩 표준을 개발하기 시작했다. VVC는 JVET을 포함하는 WD(Working Draft)에 포함되어 있다.
일부 비디오 코딩 시스템은 보충 강화 정보(SEI) 메시지를 사용한다. SEI 메시지에는 디코딩된 픽처에서 샘플의 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않은 정보가 들어있다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하는지를 확인하는 데 사용되는 파라미터를 포함할 수 있다. 경우에 따라, 비디오는 다중 계층을 사용하여 비트스트림으로 코딩된다. 스케일러블 네스팅 SEI 메시지는 다중 계층에 대한 SEI 메시지를 포함하는 데 채용될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지를 포함한다.
첫 번째 문제는, 계층 식별자(Id)의 목록이 스케일러블 네스티드 SEI 메시지와 계층 사이의 대응관계를 지시하기 위해 스케일러블 네스팅 SEI 메시지에 포함되는 경우에 발생할 수 있다. 스케일러블 네스팅 SEI 메시지는 SEI 네트워크 추상화 계층(NAL) 유닛에 포함되며, 이는 논의의 명확성을 위해 현재 SEI NAL 유닛으로 표시될 수 있다. 현재 SEI NAL 유닛은 계층 Id와 연관되어 있다. 스케일러블 네스팅 SEI 메시지는 항상 현재 SEI NAL 유닛과 연관된 계층과 관련이 있다. 이것은 현재 SEI NAL 유닛의 계층 Id가 현재 SEI NAL 유닛에 포함되고 현재 NAL 유닛에 들어있는 스케일러블 네스팅 SEI 메시지에도 포함되기 때문에 중복 시그널링으로 이어진다.
제1 예에서, 특정 계층과 함께 사용하기 위한 스케일러블 네스팅 SEI 메시지에 대한 개선점이 여기에 개시된다. 구체적으로, 계층 Id는 NAL 유닛 헤더 계층 Id(nuh_layer_id)로 지칭될 수 있다. 현재 SEI NAL 유닛의 nuh_layer_id는 스케일러블 네스팅 SEI 메시지에서 배제된다. 이것은 스케일러블 네스티드 SEI 메시지가 적용되는 각각의 계층에 대해 nuh_layer_id를 지정하는 스케일러블 네스팅 계층 Id(layer_id[i]) 신택스 요소를 사용하여 수행될 수 있다. 스케일러블 네스팅 layer_id[i]는 현재 SEI NAL 유닛의 nuh_layer_id보다 큰 nuh_layer_id만 포함하도록 제약된다. 따라서, 현재 SEI NAL 유닛의 nuh_layer_id는 스케일러블 네스팅 SEI 메시지에서 생략되고 현재 SEI NAL 유닛으로부터 추론된다. 이는 중복 Id를 생략함으로써 스케일러블 네스팅 SEI 메시지를 개선한다. 예를 들어, 스케일러블 네스팅 layer_id[i]를 인코딩/디코딩하는 루프는 한 번 덜 실행되는데, 이는 인코딩 및/또는 디코딩 중에 프로세서 자원을 감소시킨다. 또한, 이는 비트스트림 내의 스케일러블 네스팅 SEI 메시지 각각에 대한 인코딩된 비트스트림의 크기를 감소시킨다. 결과적으로, 코딩 효율이 증가하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원 사용량을 줄인다.
두 번째 문제는 스케일러블 네스팅 SEI 메시지에 있는 스케일러블 네스티드 SEI 메시지가 액세스 유닛(AU)의 모든 계층에 적용됨을 지시하기 위해 플래그가 사용되는 경우에 발생한다. AU는 서로 다른 계층에 포함되고 동일한 출력 시간과 연관되어 있는 코딩된 픽처 세트이다. 이 접근법은, 모든 AU가 모든 계층에 대한 픽처를 포함하는 경우에 작동한다. 그러나 경우에 따라 일부 계층에서는 출력 시간 동안 픽처가 존재할 수 있고 다른 계층에서는 생략될 수 있다. 예를 들어, 높은 프레임 레이트 계층은 각각의 AU에 픽처를 포함할 수 있는 반면, 낮은 프레임 레이트 계층은 더 높은 프레임 레이트 계층에 의해 점유되는 많은 AU에서 픽처를 생략한다. 그 결과는 플래그는 SEI 메시지가 현재 AU에 있는 픽처를 포함하는 계층에만 적용되도록 한다. 이것은 가상 참조 디코더(HRD)가 현재 AU에서 픽처를 생략하는 계층에 스케일러블 네스티드 SEI 메시지를 연관지을 수 없기 때문에 적합성 테스트 오류를 야기한다. 예를 들어, 이러한 계층은 현재 AU 이후의 나중 AU에 있는 픽처를 포함할 수 있다. 이런 경우, HRD는 스케일러블 네스팅 SEI 메시지를 나중의 AU가 적합성 테스트를 받을 때 이러한 계층에 적용되는 것으로 인식하지 않는다. 따라서 HRD는 모든 계층에 대한 플래그가 불완전한 AU에서 채용되는 경우에 나중 AU에서 적합성에 대해 이러한 계층을 올바르게 테스트하지 못할 수 있다.
제2 예에서, 전술한 오류를 정정하기 위한 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 여기에 개시되어 있다. 스케일러블 네스팅 all_layers_flag는 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 비디오 파라미터 세트(VPS)에 지정된 모든 계층에 적용됨을 지시하도록 설정될 수 있다. VPS는 모든 계층을 나열한다. 따라서 이 접근법은 스케일러블 네스티드 SEI 메시지가 모든 계층에 전역적으로 적용되는 경우를 인코더가 명확하게 지시할 수 있도록 해준다. 그러면 HRD 적합성 테스트 프로세스는 스케일러블 네스팅 SEI 메시지와 연관된 불완전한 AU를 따르는 AU에서 예측할 수 없는 오류를 반환하지 않고 적합성을 위해 비트스트림을 확인할 수 있다. 따라서 스케일러블 네스팅 all_layers_flag는 불완전한 AU가 존재하는 경우에 비트스트림이 적합성에 대해 올바르게 테스트되도록 함으로써 인코더 및/또는 디코더의 기능을 향상시킨다. 또한, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용되는 경우 대응하는 메시지에 대한 명시적 계층 시그널링을 생략하여 인코딩된 비트스트림의 크기를 줄인다. 그 결과, 코딩 효율이 증가하여, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 자원 사용량을 줄인다.
도 1은 비디오 신호를 코딩하는 예시적인 작업 방법(operating method)(100)의 흐름도이다. 구체적으로, 비디오 신호는 인코더에서 인코딩된다. 인코딩 프로세스는 비디오 파일 크기를 줄이기 위해 다양한 메커니즘을 채용하여 비디오 신호를 압축한다. 파일 크기가 작을수록 연관된 대역폭 오버헤드를 줄이면서 압축된 비디오 파일이 사용자에게 송신될 수 있게 해준다. 그러면 디코더는 압축된 비디오 파일을 디코딩하여 최종 사용자에게 표시하기 위해 원본 비디오 신호를 재구축한다. 디코딩 프로세스는 일반적으로 디코더가 비디오 신호를 일관되게 재구축할 수 있도록 인코딩 프로세스를 미러링(mirroring)한다.
단계 101에서, 비디오 신호가 인코더에 입력된다. 예를 들어, 비디오 신호는 메모리에 저장된 압축되지 않은(비압축) 비디오 파일일 수 있다. 다른 예로서, 비디오 파일은 비디오 카메라와 같은, 비디오 캡처 기기에 의해 캡처되고, 비디오의 라이브 스트리밍(live streaming)을 지원하도록 인코딩될 수 있다. 비디오 파일은 오디오 성분과 비디오 성분을 모두 포함할 수 있다. 비디오 성분은 시퀀스로 볼 때 움직임에 대한 시각적 인상을 주는 일련의 이미지 프레임을 포함한다. 프레임은, 여기에서 루마 성분(또는 루마 샘플)이라고 하는 빛과, 크로마(croma) 성분(또는 색상(color) 샘플)이라고 하는 색상으로 표현되는 화소를 포함한다. 일부 예에서, 프레임은 또한 3차원 보기를 지원하는 깊이 값(depth value)을 포함할 수 있다.
단계 103에서, 비디오는 블록으로 파티셔닝된다(partitioning). 파티셔닝은 압축을 위해 각각의 프레임의 화소를 정사각형 및/또는 직사각형 블록으로 세분화(subdividing)하는 것을 포함한다. 예를 들어, 고효율 비디오 코딩(HEVC)(H.265 및 MPEG-H Part 2로도 알려짐)에서 프레임은 먼저 미리 정의된 크기(예: 64개 화소×64개 화소)의 블록인 코딩 트리 유닛(CTU)으로 나뉠 수 있다. CTU는 루마 및 크로마 샘플을 모두 포함한다. CTU를 블록으로 나눈 다음 추가 인코딩을 지원하는 구성이 달성될 때까지 블록을 재귀적으로 세분화하기 위해 코딩 트리가 채용될 수 있다. 예를 들어, 프레임의 루마 성분은 개별 블록이 비교적 균일한 명암 값(lighting value)을 포함할 때까지 세분화될 수 있다. 또한, 프레임의 크로마 성분은 개별 블록이 비교적 균일한 색상 값을 포함할 때까지 세분화될 수 있다. 따라서 파티셔닝 메커니즘은 비디오 프레임의 내용에 따라 달라진다.
단계 105에서, 단계 103에서 파티셔닝된 이미지 블록을 압축하기 위해 다양한 압축 메커니즘이 채용된다. 예를 들어, 인터 예측(inter-prediction) 및/또는 인트라 예측(intra-prediction)이 사용될 수 있다. 인터 예측은 공통 장면(common scene)의 객체가 연속 프레임에 나타나는 경향이 있다는 사실을 이용하도록 설계되어 있다. 따라서, 참조 프레임에서 객체를 나타내는 블록은 인접 프레임에서 반복적으로 기술될 필요가 없다. 구체적으로, 테이블과 같은 객체는 다수의 프레임에 걸쳐 일정한 위치에 남아 있을 수 있다. 따라서 테이블은 한 번 기술되고 인접 프레임들은 참조 프레임을 다시 참조할 수 있다. 다수의 프레임에 걸쳐 객체들을 매칭시키기 위해 패턴 매칭 메커니즘이 채용될 수 있다. 또한, 움직이는 객체는, 예를 들어 객체의 움직임이나 카메라의 움직임으로 인해 다수의 프레임에 걸쳐 표현될 수 있다. 구체적인 예로서, 비디오는 다수의 프레임에 걸쳐 화면을 가로질러 움직이는 자동차를 보여줄 수 있다. 움직임 벡터가 이러한 움직임을 설명하는 데 채용될 수 있다. 움직임 벡터는 프레임에서의 객체 좌표에서 참조 프레임에서의 객체 좌표까지 오프셋을 제공하는 2차원 벡터이다. 이와 같이, 인터 예측은 현재 프레임의 이미지 블록을 참조 프레임의 대응하는 블록으로부터의 오프셋을 지시하는 움직임 벡터의 세트로서 인코딩할 수 있다.
인트라 예측은 공통 프레임 내의 블록을 인코딩한다. 인트라 예측은 루마 성분과 크로마 성분이 한 프레임에 모여 있는(cluster) 경향이 있다는 사실을 이용한다. 예를 들어, 나무의 일부에 있는 녹색의 패치는 유사한 녹색의 패치에 인접하게 배치되는 경향이 있다. 인트라 예측은 다중 방향 예측 모드(multiple directional prediction mode)(예: HEVC에서 33개), 평면 모드 및 직류(direct current, DC) 모드를 사용한다. 방향 모드(directional mode)는 현재 블록이 대응하는 방향에서 이웃 블록의 샘플과 유사/동일함을 지시한다. 평면 모드는 행/열(예: 평면)을 따라 일련의 블록이 행 가장자리에 있는 이웃 블록에 기초하여 보간될 수 있음을 지시한다. 실제로 평면 모드는 값을 변경할 때 비교적으로 일정한 기울기를 사용하여 행/열에 걸쳐 빛/색상의 매끄러운 이행(smooth transition)을 지시한다. DC 모드는 경계 평활화를 위해 채용되며 방향 예측 모드의 각도 방향과 연관된 모든 이웃 블록의 샘플과 연관된 평균값과 유사/동일한 블록을 지시한다. 따라서 인트라 예측 블록은 실제 값 대신 다양한 관계형(relational) 예측 모드 값으로 픽처 블록을 표현할 수 있다. 또한, 인터 예측 블록은 이미지 블록을 실제 값 대신 움직임 벡터 값으로 나타낼 수 있다. 어느 경우든, 예측 블록은 경우에 따라서는 이미지 블록을 정확하게 나타내지 못할 수 있다. 모든 차이는 잔차 블록에 저장된다. 파일을 추가로 압축하기 위해 잔차 블록에 변환이 적용될 수 있다.
단계 107에서, 다양한 필터링 기술이 적용될 수 있다. HEVC에서, 필터는 인루프(in-loop) 필터링 방식에 따라 적용된다. 위에서 논의된 블록 기반 예측은 디코더에서 블록 이미지를 생성하는 결과를 낳을 수 있다. 또한, 블록 기반 예측 방식은 블록을 인코딩한 다음 나중에 참조 블록으로 사용하기 위해 인코딩된 블록을 재구축할 수 있다. 인루프 필터링 방식은 잡음 억제(noise suppression) 필터, 디블로킹(de-blocking) 필터, 적응형 루프(adaptive loop) 필터, 샘플 적응형 오프셋(sample adaptive offset, SAO) 필터를 블록/프레임에 반복적으로 적용한다. 이러한 필터는 인코딩된 파일이 정확하게 재구축될 수 있도록 이러한 블로킹 아티팩트(blocking artifact)를 완화한다. 또한, 이러한 필터는 재구축된 참조 블록에서의 아티팩트를 완화하여, 재구축된 참조 블록에 기초하여 인코딩되는 후속 블록에서 아티팩트가 추가 아티팩트를 만들어 낼 가능성이 작도록 한다.
비디오 신호가 파티셔닝, 압축, 및 필터링되었으면, 그 결과 데이터는 단계 109에서 비트스트림으로 인코딩된다. 비트스트림은 위에서 논의된 데이터뿐 아니라 디코더에서의 적절한 비디오 신호의 재구축을 지원하기 위해 원하는 시그널링 데이터도 포함한다. 예를 들어, 그러한 데이터로는 파티션(partition) 데이터, 예측 데이터, 잔차 블록, 및 디코더에 코딩 명령을 제공하는 다양한 플래그를 포함할 수 있다. 비트스트림은 요청 시에 디코더를 향한 송신을 위해 메모리에 저장될 수 있다. 비트스트림은 또한 복수의 디코더를 향해 브로드캐스팅 및/또는 멀티캐스팅될 수 있다. 비트스트림의 생성은 반복적인 프로세스이다. 따라서, 단계 101, 103, 105, 107, 및 109는 많은 프레임 및 블록에 걸쳐 계속하여 및/또는 동시에 발생할 수 있다. 도 1에 도시된 순서는 논의의 명확성 및 편의를 위해 제시되며, 비디오 코딩 프로세스를 특정 순서로 한정하기 위한 것이 아니다.
디코더는 비트스트림을 수신하고 단계 111에서 디코딩 프로세스를 시작한다. 구체적으로, 디코더는 엔트로피 디코딩 방식을 채용하여 비트스트림을 대응하는 신택스 및 비디오 데이터로 변환한다. 디코더는 비트스트림으로부터의 신택스 데이터를 채용하여 단계 111에서 프레임에 대한 파티션을 결정한다. 파티셔닝은 단계 103의 블록 파티셔닝의 결과와 매칭되어야 한다. 이제 단계 111에서 채용된 엔트로피 인코딩/디코딩을 설명한다. 인코더는 입력 이미지(들)에서의 값의 공간적 위치에 기초한 여러 가능한 선택 중에서 블록 파티셔닝 방식을 선택하는 것과 같은, 압축 프로세스 동안 많은 선택을 한다. 정확한 선택을 시그널링하는 것은 많은 수의 빈을 채용할 수 있다. 여기에서 사용되는 바와 같이, 빈은 변수로 취급되는 이진 값(예: 컨텍스트에 따라 변할 수 있는 비트 값)이다. 엔트로피 코딩은 인코더가 특정 경우에 명확히 실행 가능하지 않은 옵션을 버리고, 허용 가능한 옵션의 세트를 남길 수 있도록 해준다. 그런 다음 각각의 허용 가능한 옵션에 코드워드가 할당된다. 코드 워드의 길이는 허용 가능한 옵션의 수에 기초한다(예: 두 개의 옵션에 대해 하나의 빈, 3∼4개의 옵션에 대해 두 개의 빈 등). 그러면 인코더는 선택한 옵션에 대한 코드 워드를 인코딩한다. 이 방식은, 코드 워드가 가능한 모든 옵션의 잠재적으로 큰 세트에서의 선택을 유일하게 지시하는 것과는 대조적으로 허용 가능한 옵션의 작은 서브 세트에서의 선택을 유일하게 지시하기 위해 원하는 만큼 크므로, 코드 워드의 크기를 줄인다. 그러면 디코더는 인코더와 유사한 방식으로 허용 가능한 옵션의 세트를 결정함으로써 선택을 디코딩한다. 허용 가능한 옵션 세트를 결정함으로써, 디코더는 코드 워드를 읽고 인코더에 의해 이루어진 선택을 결정할 수 있다.
단계 113에서, 디코더는 블록 디코딩을 수행한다. 구체적으로, 디코더는 역변환을 채용하여 잔차 블록을 생성한다. 그런 다음 디코더는 잔차 블록 및 대응하는 예측 블록을 채용하여 파티셔닝에 따른 이미지 블록을 재구축한다. 예측 블록은 단계 105에서 인코더에서 생성된 바와 같이 인트라 예측 블록 및 인터 예측 블록 모두를 포함할 수 있다. 그런 다음 재구축된 이미지 블록이 단계 111에서 결정된 파티셔닝 데이터에 따라 재구축된 비디오 신호의 프레임에 위치된다. 단계 113의 신택스는 또한 위에서 논의된 바와 같이 엔트로피 코딩을 통해 비트스트림으로 시그널링될 수 있다.
단계 115에서, 인코더에서 단계 107과 유사한 방식으로 재구축된 비디오 신호의 프레임에 대해 필터링이 수행된다. 예를 들어, 노이즈 억제 필터, 디블로킹 필터, 적응형 루프 필터 및 SAO 필터를 프레임에 적용하여, 블로킹 아티팩트를 제거할 수 있다. 프레임이 필터링되면, 비디오 신호는 최종 사용자에 의한 보기를 위해 단계 117에서 디스플레이에 출력될 수 있다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템(200)의 개략도이다. 구체적으로, 코덱 시스템(200)은 작업 방법(100)의 구현을 지원하기 위한 기능을 제공한다. 코덱 시스템(200)은 인코더와 디코더 모두에 채용되는 구성요소를 나타내도록 일반화된다. 코덱 시스템(200)은 작업 방법(100)의 단계 101 및 103과 관련하여 논의된 바와 같이 비디오 신호를 수신하고 파티셔닝하며, 그 결과 파티셔닝된 비디오 신호(201)를 생성한다. 코덱 시스템(200)은 그 후 작업 방법(100)의 단계 105, 107 및 109와 관련하여 논의된 인코더의 역할을 할 때, 파티셔닝된 비디오 신호(201)를 코딩된 비트스트림으로 압축한다. 코덱 시스템(200)은 디코더의 역할을 할 때, 작업 방법(100)의 단계 111, 113, 115, 및 117과 관련하여 논의된 바와 같이 비트스트림으로부터 출력 비디오 신호를 생성한다. 코덱 시스템(200)은 일반 코더 제어 구성요소(211), 변환 스케일링 및 양자화 구성요소(213), 인터 픽처 추정 구성요소(215), 인터 픽처 예측 구성요소(217), 움직임 보상 구성요소(219), 움직임 추정 구성요소(221), 스케일링 및 역변환 구성요소(229), 필터 제어 분석 구성요소(227), 인루프 필터 구성요소(225), 디코딩된 픽처 버퍼 구성요소(223), 및 헤더 포맷팅 및 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC) 구성요소(231)를 포함한다. 이러한 구성요소는 도시된 바와 같이 결합된다. 도 2에서, 검은색 선은 인코딩/디코딩될 데이터의 이동을 지시하는 한편 파선은 다른 구성요소의 동작0을 제어하는 제어 데이터의 이동을 지시한다. 코덱 시스템(200)의 구성요소는 모두 인코더에 존재할 수 있다. 디코더는 코덱 시스템(200)의 구성요소의 서브세트를 포함할 수 있다. 예를 들어, 디코더는 인트라 픽처 예측 구성요소(217), 움직임 보상 구성요소(219), 스케일링 및 역변환 구성요소(229), 인루프 필터 구성요소(225) 및 디코딩된 픽처 버퍼 구성요소(223)를 포함할 수 있다. 이제 이들 구성요소를 설명한다.
파티셔닝된 비디오 신호(201)는 코딩 트리에 의해 화소 블록으로 이미 파티셔닝된, 캡처된 비디오 시퀀스이다. 코딩 트리는 화소 블록을 더 작은 화소 블록으로 세분화하기 위해 다양한 스플릿 모드(split mode)를 사용한다. 그러면 이러한 블록을 더 작은 블록으로 세분화할 수 있다. 블록은 코딩 트리 상의 노드로 지칭될 수 있다. 더 큰 부모 노드는 더 작은 자식 노드로 나뉜다. 노드가 세분화되는 횟수를 노드/코딩 트리의 깊이라고 한다. 나뉜 블록은 경우에 따라서는 CU(Coding Unit)에 포함될 수 있다. 예를 들어, CU는 CU에 대한 대응하는 신택스 명령과 함께 루마 블록, 적색 차이(red difference) 크로마(Cr) 블록(들) 및 청색 차이(blue difference) 크로마(Cb) 블록(들)을 포함하는 CTU의 서브 부분(sub-portion)일 수 있다. 스플릿 모드는 채용된 스플릿 모드에 따라 다양한 모양의 노드를 각각 2, 3 또는 4개의 자식 노드로 파티셔닝하는 데 채용되는 이진 트리(binary tree, BT), 트리플 트리(triple tree, TT) 및 쿼드 트리(quad tree, QT)를 포함할 수 있다. 파티셔닝된 비디오 신호(201)는 압축을 위해 일반 코더 제어 구성요소(211), 변환 스케일링 및 양자화 구성요소(213), 인트라 픽처 추정 구성요소(215), 필터 제어 분석 구성요소(227) 및 움직임 추정 구성요소(221)에 포워딩된다.
일반 코더 제어 구성요소(211)는 애플리케이션 제약에 따라 비디오 시퀀스의 이미지를 비트스트림으로 코딩하는 것과 관련된 결정을 내리도록 구성된다. 예를 들어, 일반 코더 제어 구성요소(211)는 비트레이트/비트스트림 크기 대(vs) 재구축 품질의 최적화를 관리한다. 이러한 결정은 저장 공간/대역폭 가용성 및 이미지 해상도 요청에 기초하여 내릴 수 있다. 일반 코더 제어 구성요소(211)는 또한 버퍼 언더런(underrun) 및 오버런(overrun) 문제를 완화하기 위해 전송 레이트에 비추어 버퍼 활용을 관리한다. 이러한 문제를 관리하기 위해, 일반 코더 제어 구성요소(211)는 다른 구성요소에 의한 파티셔닝, 예측 및 필터링을 관리한다. 예를 들어, 일반 코더 제어 구성요소(211)는 동적으로 해상도를 증가시키고 대역폭 사용을 증가시키기 위해 압축 복잡도를 증가시키거나 해상도 및 대역폭 사용을 감소시키기 위해 압축 복잡도를 감소시킬 수 있다. 따라서, 일반 코더 제어 구성요소(211)는 코덱 시스템(200)의 다른 구성요소를 제어하여 비디오 신호 재구축 품질과 비트 레이트 문제의 균형을 맞춘다. 일반 코더 제어 구성요소(211)는 다른 구성요소의 작동을 제어하는 제어 데이터를 생성한다. 제어 데이터는 또한 디코더에서의 디코딩을 위해 비트스트림에서 신호 파라미터로 인코딩되도록 헤더 포맷팅 및 CABAC 구성요소(231)에 포워딩된다.
파티셔닝된 비디오 신호(201)는 또한 인터 예측을 위해 움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)에 전송된다. 파티셔닝된 비디오 신호(201)의 프레임 또는 슬라이스는 다수의 비디오 블록으로 나뉠 수 있다. 움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)는 시간 예측을 제공하기 위해 하나 이상의 참조 프레임에서 하나 이상의 블록에 대해 수신된 비디오 블록의 인터 예측 코딩(inter-predictive coding)을 수행한다. 코덱 시스템(200)은, 예컨대, 비디오 데이터의 각각의 블록에 대해 적절한 코딩 모드를 선택하기 위해, 다수의 코딩 패스(coding pass)를 수행할 수 있다.
움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)는 고도로 통합될 수 있지만, 개념적 목적을 위해 개별적으로 나타낸다. 움직임 추정 구성요소(221)에 의해 수행되는 움직임 추정은 비디오 블록에 대한 움직임을 추정하는 움직임 벡터를 생성하는 프로세스이다. 예를 들어, 움직임 벡터는 예측 블록에 대한 코딩된 객체의 변위를 지시할 수 있다. 예측 블록은 화소 차이 측면에서, 코딩될 블록과 밀접하게 매칭되는 것으로 발견된 블록이다. 예측 블록은 참조 블록이라고도 할 수 있다. 그러한 화소 차이는 절대 차 합(sum of absolute difference, SAD), 제곱 차의 합(sum of square difference, SSD), 또는 기타 차의 메트릭에 의해 결정될 수 있다. HEVC는 CTU, 코딩 트리 블록(CTB) 및 CU를 포함한 여러 코딩된 객체를 채용한다. 예를 들어, CTU는 CTB로 나뉠 수 있으며, 이는 그 후 CU에 포함하기 위해 CB로 나뉠 수 있다. CU는 예측 데이터를 포함하는 예측 유닛(PU) 및/또는 CU에 대한 변환된 잔차 데이터를 포함하는 변환 유닛(TU)으로서 인코딩될 수 있다. 움직임 추정 구성요소(221)는 레이트 왜곡 최적화 프로세스의 일부로서 레이트 왜곡 분석을 사용함으로써 움직임 벡터, PU, 및 TU를 생성한다. 예를 들어, 움직임 추정 구성요소(221)는 현재 블록/프레임에 대한 다수의 참조 블록, 다수의 움직임 벡터 등을 결정할 수 있고, 최상의 레이트 왜곡 특성을 갖는 참조 블록, 움직임 벡터 등을 선택할 수 있다. 최상의 레이트 왜곡 특성은 비디오 재구축의 품질(예: 압축에 의한 데이터 손실의 양)과 코딩 효율(예: 최종 인코딩의 크기)의 균형을 유지한다.
일부 예에서, 코덱 시스템(200)은 디코딩된 픽처 버퍼 구성요소(223)에 저장된 참조 픽처의 정수 이하 화소 위치(sub-integer pixel position)에 대한 값을 계산할 수 있다. 예를 들어, 비디오 코덱 시스템(200)은 참조 픽처의 1/4 화소 위치, 1/8 화소 위치, 또는 기타 분수 화소 위치의 값을 보간할 수 있다. 따라서, 움직임 추정 구성요소(221)는 전체 화소 위치 및 분수 화소 위치에 대한 움직임 검색을 수행하고 분수 화소 정밀도를 갖는 움직임 벡터를 출력할 수 있다. 움직임 추정 구성요소(221)는 PU의 위치를 참조 픽처의 예측 블록의 위치와 비교함으로써 인터 코딩된 슬라이스에서 비디오 블록의 PU에 대한 움직임 벡터를 계산한다. 움직임 추정 구성요소(221)는 계산된 움직임 벡터를 움직임 데이터로서 인코딩을 위해 헤더 포맷팅 및 CABAC 구성요소(231)에, 그리고 움직임 보상을 위해 움직임 보상 구성요소(219)에 출력한다.
움직임 보상 구성요소(219)에 의해 수행되는 움직임 보상은 움직임 추정 구성요소(221)에 의해 결정된 움직임 벡터에 기초하여 예측 블록을 가져오거나(fetch) 또는 생성하는 것을 수반할 수 있다. 다시, 움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)는 일부 예에서, 기능적으로 통합될 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상 구성요소(219)는 움직임 벡터가 가리키는 예측 블록을 찾을 수 있다. 그런 다음, 코딩되는 현재 비디오 블록의 화소 값에서 예측 블록의 화소 값을 빼서 화소 차이 값을 형성함으로써 잔차 비디오 블록이 형성된다. 일반적으로, 움직임 추정 구성요소(221)는 루마 성분에 대한 움직임 추정을 수행하고, 움직임 보상 구성요소(219)는 루마 성분에 기초하여 크로마 성분과 루마 성분 모두에 대해 계산된 움직임 벡터를 사용한다. 예측 블록 및 잔차 블록은 변환 스케일링 및 양자화 구성요소(213)에 포워딩된다.
파티셔닝된 비디오 신호(201)는 또한 인트라 픽처 추정 구성요소(215) 및 인트라 픽처 예측 구성요소(217)에 전송된다. 움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)와 마찬가지로, 인트라 픽처 추정 구성요소(215) 및 인트라 픽처 예측 구성요소(217)는 고도로 통합될 수 있지만, 개념적 목적을 위해 개별적으로 나타낸다. 인트라 픽처 추정 구성요소(215)와 인트라 픽처 예측 구성요소(217)는 위에서 설명한 바와 같이, 움직임 추정 구성요소(221)와 움직임 보상 구성요소(219)에 의해 프레임 간에 수행되는 인터 예측에 대한 대안으로서 현재 프레임 내의 블록들에 대해 현재 블록을 인트라 예측한다. 특히, 인트라 픽처 추정 구성요소(215)는 현재 블록을 인코딩하는 데 사용할 인트라 예측 모드를 결정한다. 일부 예에서, 인트라 픽처 추정 구성요소(215)는 다수의 테스트된 인트라 예측 모드 중에서 현재 블록을 인코딩하기 위해 적절한 인트라 예측 모드를 선택한다. 선택된 인트라 예측 모드는 인코딩을 위해 헤더 포맷팅 및 CABAC 구성요소(231)에 포워딩된다.
예를 들어, 인트라 픽처 추정 구성요소(215)는 다양한 테스트된 인트라 예측 모드에 대한 레이트 왜곡 분석을 사용하여 레이트 왜곡 값을 계산하고, 테스트된 모드 중에서 최상의 레이트 왜곡 특성을 갖는 인트라 예측 모드를 선택한다. 레이트 왜곡 분석은 일반적으로 인코딩된 블록과 인코딩된 블록을 생성하기 위해 인코딩되었던 인코딩되지 않은 원본 블록 사이의 왜곡(또는 오차)의 양뿐 아니라 인코딩된 블록을 생성하는 데 사용된 비트 레이트(예: 비트 수)도 결정한다. 인트라 픽처 추정 구성요소(215)는 블록에 대한 최상의 레이트 왜곡 값을 보이는 인트라 예측 모드를 결정하기 위해 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산한다. 또한, 인트라 픽처 추정 구성요소(215)는 레이트 왜곡 최적화(rate-distortion optimization, RDO)에 기초한 깊이 모델링 모드(depth modeling mode, DMM)를 사용하여 깊이 맵의 깊이 블록을 코딩하도록 구성될 수 있다.
인트라 픽처 예측 구성요소(217)는 인코더에서 구현될 때 인트라 픽처 추정 구성요소(215)에 의해 결정되는 선택된 인트라 예측 모드에 기초하여 예측 블록으로부터 잔차 블록을 생성하거나, 디코더에서 구현될 때 비트스트림으로부터 잔차 블록을 읽을 수 있다. 잔차 블록은 행렬로 표현된, 예측 블록과 원본 블록 간의 값의 차이를 포함한다. 그 후, 잔차 블록은 변환 스케일링 및 양자화 구성요소(213)에 포워딩된다. 인트라 픽처 추정 구성요소(215) 및 인트라 픽처 예측 구성요소(217)는 루마 및 크로마 성분 모두에 대해 작동할 수 있다.
변환 스케일링 및 양자화 구성요소(213)는 잔차 블록을 추가로 압축하도록 구성된다. 변환 스케일링 및 양자화 구성요소(213)는 이산 코사인 변환(discrete cosine transform, DCT), 이산 사인 변환(discrete sine transform, DST) 또는 개념적으로 유사한 변환과 같은, 변환을 잔차 블록에 적용하여 잔차 변환 계수 값을 포함하는 비디오 블록을 생성한다. 웨이블릿 변환, 정수 변환, 서브 대역 변환 또는 기타 유형의 변환도 사용될 수 있다. 변환은 잔차 정보를 화소 값 영역에서 주파수 영역과 같은, 변환 영역으로 변환할 수 있다. 변환 스케일링 및 양자화 구성요소(213)는 또한, 예를 들어 주파수에 기초하여, 변환된 잔차 정보를 스케일링하도록 구성된다. 그러한 스케일링은 스케일 인자를 잔차 정보에 적용하여 상이한 주파수 정보가 상이한 그래뉼래러티(granularity)로 양자화되도록 하는 것을 포함하며, 이는 재구축된 비디오의 최종 시각적 품질에 영향을 미칠 수 있다. 변환 스케일링 및 양자화 구성요소(213)는 또한 비트 레이트를 추가로 감소시키기 위해 변환 계수를 양자화하도록 구성된다. 양자화 프로세스는 계수의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예에서, 변환 스케일링 및 양자화 구성요소(213)는 그 후 양자화된 변환 계수들을 포함하는 행렬의 스캔을 수행할 수 있다. 양자화된 변환 계수는 헤더 포맷팅 및 CABAC 구성요소(231)에 포워딩되어 비트스트림에 인코딩된다.
스케일링 및 역변환 구성요소(229)는 움직임 추정을 지원하기 위해 변환 스케일링 및 양자화 구성요소(213)의 역작업(reverse operation)을 적용한다. 스케일링 및 역변환 구성요소(229)는 예컨대, 다른 현재 블록에 대한 예측 블록이 될 수 있는 참조 블록으로서 나중에 사용하기 위해, 화소 영역에서 잔차 블록을 재구축하기 위해 역 스케일링, 변환, 및/또는 양자화를 적용한다. 움직임 추정 구성요소(221) 및/또는 움직임 보상 구성요소(219)는 나중에 블록/프레임의 움직임 추정에 사용하기 위해 대응하는 예측 블록에 잔차 블록을 다시 추가함으로써 참조 블록을 계산할 수도 있다. 스케일링, 양자화 및 변환 중에 생성된 아티팩트를 완화하기 위해 재구축된 참조 블록에 필터가 적용된다. 그렇지 않으면 그러한 아티팩트는 후속 블록이 예측될 때 부정확한 예측을 야기(하고 추가 아티팩트를 생성)할 수 있다.
필터 제어 분석 구성요소(227) 및 인루프 필터 구성요소(225)는 필터를 잔차 블록 및/또는 재구축된 이미지 블록에 적용한다. 예를 들어, 스케일링 및 역변환 구성요소(229)로부터의 변환된 잔차 블록은 인트라 픽처 예측 구성요소(217) 및/또는 움직임 보상 구성요소(219)로부터의 대응하는 예측 블록과 결합되어 원래의 이미지 블록을 재구축할 수 있다. 그런 다음 필터가 재구축된 이미지 블록에 적용될 수 있다. 일부 예에서, 필터는 대신에 잔차 블록에 적용될 수 있다. 도 2의 다른 구성요소와 마찬가지로, 필터 제어 분석 구성요소(227) 및 인루프 필터 구성요소(225)는 고도로 통합되어 함께 구현될 수 있지만, 개념적 목적을 위해 개별적으로 나타낸다. 재구축된 참조 블록에 적용된 필터는 특정 공간 영역에 적용되며 이러한 필터가 적용되는 방식을 조정하기 위해 다수의 파라미터를 포함한다. 필터 제어 분석 구성요소(227)는 재구축된 참조 블록을 분석하여 그러한 필터가 적용되어야 하는 곳을 결정하고 대응하는 파라미터를 설정한다. 이러한 데이터는 인코딩을 위한 필터 제어 데이터로서 헤더 포맷팅 및 CABAC 구성요소(231)에 포워딩된다. 인루프 필터 구성요소(225)는 필터 제어 데이터에 기초하여 이러한 필터를 적용한다. 필터로는 디블로킹 필터, 잡음 억제 필터, SAO 필터 및 적응형 루프 필터를 포함할 수 있다. 그러한 필터는 예에 따라, 공간/화소 영역(예: 재구축된 화소 블록) 또는 주파수 영역에 적용될 수 있다.
인코더로서 동작할 때, 필터링된 재구축된 이미지 블록, 잔차 블록, 및/또는 예측 블록은 위에서 논의된 바와 같이 움직임 추정에서 나중에 사용하기 위해 디코딩된 픽처 버퍼 구성요소(223)에 저장된다. 디코더로서 동작할 때, 디코딩된 픽처 버퍼 구성요소(223)는 재구축되고 필터링된 블록을 저장하고 출력 비디오 신호의 일부로서 디스플레이를 향해 포워딩한다. 디코딩된 픽처 버퍼 구성요소(223)는 예측 블록, 잔차 블록, 및/또는 재구축된 이미지 블록을 저장할 수 있는 임의의 메모리 기기일 수 있다.
헤더 포맷팅 및 CABAC 구성요소(231)는 코덱 시스템(200)의 다양한 구성요소로부터 데이터를 수신하고 이러한 데이터를 디코더로의 전송을 위해 코딩된 비트스트림으로 인코딩한다. 구체적으로, 헤더 포맷팅 및 CABAC 구성요소(231)는 일반 제어 데이터 및 필터 제어 데이터와 같은 제어 데이터를 인코딩하기 위한 다양한 헤더를 생성한다. 또한, 인트라 예측 및 움직임 데이터를 포함한, 예측 데이터뿐 아니라 양자화된 변환 계수 데이터 형태의 잔차 데이터도 모두 비트스트림에 인코딩된다. 최종 비트스트림은 원래의 파티셔닝된 비디오 신호(201)를 재구축하기 위해 디코더가 원하는 모든 정보를 포함한다. 이러한 정보는 또한 인트라 예측 모드 색인표(코드워드 매핑표라고도 함), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 가장 가능성 있는 인트라 예측 모드, 분할 정보의 지시 등을 포함할 수 있다. 이러한 데이터는 엔트로피 코딩을 채용하여 인코딩될 수 있다. 예를 들어, 정보는 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding, CAVLC), CABAC, 신택스 기반 컨텍스트 적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 구간 분할 엔트로피(probability interval partitioning entropy, PIPE) 코딩 또는 기타 엔트로피 코딩 기술을 적용하여 인코딩될 수 있다. 엔트로피 코딩에 이어, 코딩된 비트스트림은 다른 기기(예: 비디오 디코더)로 송신되거나 나중의 송신 또는 검색을 위해 보관될 수 있다.
도 3은 예시적인 비디오 인코더(300)를 나타낸 블록도이다. 비디오 인코더(300)는 코덱 시스템(200)의 인코딩 기능을 구현하고/하거나 작업 방법(100)의 단계 101, 103, 105, 107, 및/또는 109를 구현하기 위해 채용될 수 있다. 인코더(300)는 입력 비디오 신호를 파티셔닝하여, 결과로서 파티셔닝된 비디오 신호(301)를 생성하며, 이는 파티셔닝된 비디오 신호(201)와 실질적으로 유사하다. 파티셔닝된 비디오 신호(301)는 그 후 인코더(300)의 구성요소에 의해 압축되고 비트스트림으로 인코딩된다.
구체적으로, 파티셔닝된 비디오 신호(301)는 인트라 예측을 위해 인트라 픽처 예측 구성요소(317)로 포워딩된다. 인트라 픽처 예측 구성요소(317)는 인트라 픽처 추정 구성요소(215) 및 인트라 픽처 예측 구성요소(217)와 실질적으로 유사할 수 있다. 파티셔닝된 비디오 신호(301)는 또한 디코딩된 픽처 버퍼 구성요소(323) 내의 참조 블록에 기초한 인터 예측을 위해 움직임 보상 구성요소(321)에도 포워딩된다. 움직임 보상 구성요소(321)는 움직임 추정 구성요소(221) 및 움직임 보상 구성요소(219)와 실질적으로 유사할 수 있다. 인터 픽처 에측 구성요소(317) 및 움직임 보상 구성요소(321)로부터의 예측 블록 및 잔차 블록은 잔차 블록의 변환 및 양자화를 위해 변환 및 양자화 구성요소(313)에 포워딩된다. 변환 및 양자화 구성요소(313)는 변환 스케일링 및 양자화 구성요소(213)와 실질적으로 유사할 수 있다. 변환 및 양자화된 잔차 블록 및 대응하는 예측 블록(연관된 제어 데이터와 함께)은 비트스트림으로 코딩하기 위해 엔트로피 코딩 구성요소(331)에 포워딩된다. 엔트로피 코딩 구성요소(331)는 헤더 포맷팅 및 CABAC 구성요소(231)와 실질적으로 유사할 수 있다.
변환 및 양자화된 잔차 블록 및/또는 대응하는 예측 블록은 또한 움직임 보상 구성요소(321)에 의해 사용하기 위한 참조 블록으로의 재구축을 위해 변환 및 양자화 구성요소(313)로부터 역변환 및 양자화 구성요소(329)로 포워딩된다. 역변환 및 양자화 구성요소(329)는 스케일링 및 역변환 구성요소(229)와 실질적으로 유사할 수 있다. 인루프 필터 구성요소(325) 내의 인루프 필터는 또한 예에 따라, 잔차 블록 및/또는 재구축된 참조 블록에도 적용된다. 인루프 필터 구성요소(325)는 필터 제어 분석 구성요소(227) 및 인루프 필터 구성요소(225)와 실질적으로 유사할 수 있다. 인루프 필터 구성요소(325)는 인루프 필터 구성요소(225)와 관련하여 논의된 바와 같이 다수의 필터를 포함할 수 있다. 필터링된 블록은 그 후 움직임 보상 구성요소(321)에 의해 참조 블록으로서 사용하기 위해 디코딩된 픽처 버퍼 구성요소(323)에 저장된다. 디코딩된 픽처 버퍼 구성요소(323)는 디코딩된 픽처 버퍼 구성요소(223)와 실질적으로 유사할 수 있다.
도 4는 예시적인 비디오 디코더(400)를 나타낸 블록도이다. 비디오 디코더(400)는 코덱 시스템(200)의 디코딩 기능을 구현하고 및/또는 작업 방법(100)의 단계 111, 113, 115, 및/또는 117을 구현하기 위해 채용될 수 있다. 디코더(400)는, 예를 들어 인코더(300)로부터, 비트스트림을 수신하고, 최종 사용자에게 표시하기 위해 비트스트림에 기초하여 재구축된 출력 비디오 신호를 생성한다.
비트스트림은 엔트로피 디코딩 구성요소(433)에 의해 수신된다. 엔트로피 디코딩 구성요소(433)는 CAVLC, CABAC, SBAC, PIPE 코딩, 또는 기타 엔트로피 코딩 기술과 같은, 엔트로피 디코딩 방식을 구현하도록 구성된다. 예를 들어, 엔트로피 디코딩 구성요소(433)는 헤더 정보를 채용하여 비트스트림에서 코드워드로서 인코딩된 추가 데이터를 해석하기 위한 컨텍스트를 제공할 수 있다. 디코딩된 정보는 일반 제어 데이터, 필터 제어 데이터, 파티션 정보, 움직임 데이터, 예측 데이터 및 잔차 블록으로부터의 양자화된 변환 계수와 같은, 비디오 신호를 디코딩하기 위한 임의의 원하는 정보를 포함한다. 양자화된 변환 계수는 잔차 블록으로의 재구축을 위해 역변환 및 양자화 구성요소(429)에 포워딩된다. 역변환 및 양자화 구성요소(429)는 역변환 및 양자화 구성요소(329)와 유사할 수 있다.
재구축된 잔차 블록 및/또는 예측 블록은 인트라 예측 작업에 기초한 이미지 블록으로의 재구축을 위해 인트라 픽처 예측 구성요소(417)에 포워딩된다. 인트라 픽처 예측 구성요소(417)는 인트라 픽처 추정 구성요소(215) 및 인트라 픽처 예측 구성요소(217)와 유사할 수 있다. 구체적으로, 인트라 픽처 예측 구성요소(417)는 예측 모드를 채용하여 프레임 내의 참조 블록의 위치를 찾아내고 그 결과에 잔차 블록을 적용하여 인트라 예측된 이미지 블록을 재구축한다. 재구축된 인트라 예측된 이미지 블록 및/또는 잔차 블록 및 대응하는 인터 예측 데이터는 인루프 필터 구성요소(425)를 통해, 디코딩된 픽처 버퍼 구성요소(223) 및 인루프 필터 구성요소(225)와 각각 실질적으로 유사할 수 있는 디코딩된 픽처 버퍼 구성요소(423)로 포워딩된다. 인루프 필터 구성요소(425)는 재구축된 이미지 블록, 잔차 블록 및/또는 예측 블록을 필터링하고, 그러한 정보는 디코딩된 픽처 버퍼 구성요소(423)에 저장된다. 디코딩된 픽처 버퍼 구성요소(423)로부터의 재구축된 이미지 블록은 인터 예측을 위해 움직임 보상 구성요소(421)에 포워딩된다. 움직임 보상 구성요소(421)는 움직임 추정 구성요소(221) 및/또는 움직임 보상 구성요소(219)와 실질적으로 유사할 수 있다. 구체적으로, 움직임 보상 구성요소(421)는 예측 블록을 생성하기 위해 참조 블록으로부터의 움직임 벡터를 채용하고 그 결과에 잔차 블록을 적용하여 이미지 블록을 재구축한다. 결과인 재구축된 블록은 또한 인루프 필터 구성요소(425)를 통해 디코딩된 픽처 버퍼 구성요소(423)에 포워딩될 수 있다. 디코딩된 픽처 버퍼 구성요소(423)는 파티션 정보를 통해 프레임으로 재구축될 수 있는 추가의 재구축된 이미지 블록을 계속해서 저장한다. 이러한 프레임은 시퀀스에도 배치될 수 있다. 이 시퀀스는 재구축된 출력 비디오 신호로서 디스플레이에 출력된다.
도 5는 예시적인 HRD(500)를 나타낸 개략도이다. HRD(500)는 코덱 시스템(200) 및/또는 인코더(300)와 같은, 인코더에 채용될 수 있다. HRD(500)는 비트스트림이 디코더(400)와 같은, 디코더에 포워딩되기 전에 방법(100)의 단계 109에서 생성된 비트스트림을 검사할 수 있다. 일부 예에서, 비트스트림은 비트스트림이 인코딩됨에 따라 HRD(500)를 통해 연속적으로 포워딩될 수 있다. 비트스트림의 일부가 연관된 제약을 준수하는 데 실패하는 경우, HRD(500)는 인코더로 하여금 해당 섹션의 비트스트림을 다른 메커니즘으로 다시 인코딩하게 하기 위해 그러한 실패를 인코더에 지시할 수 있다.
HRD(500)는 가상 스트림 스케줄러(hypothetical stream scheduler, HSS)(541)를 포함한다. HSS(541)는 가상 전달 메커니즘을 수행하도록 구성된 구성요소이다. HRD(500)에 입력되는 비트스트림(551)의 타이밍 및 데이터 흐름과 관련하여 비트스트림 또는 디코더의 적합성을 검사하기 위해 가상 전달 메커니즘이 사용된다. 예를 들어, HSS(541)는 인코더로부터 출력되는 비트스트림(551)을 수신하고 비트스트림(551)에 대한 적합성 테스트 프로세스를 관리한다. 구체적인 예에서, HSS(541)는 코딩된 픽처가 HRD(500)를 통해 이동하는 레이트를 제어할 수 있고 비트스트림(551)이 부적합 데이터를 포함하지 않는다는 것을 검증할 수 있다.
HSS(541)는 비트스트림(551)을 미리 정의된 레이트로 CPB(543)에 포워딩할 수 있다. HRD(500)는 디코딩 유닛(DU)(553)에서 데이터를 관리할 수 있다. DU(553)는 액세스 유닛(AU) 또는 AU 및 연관된 비 비디오 코딩 계층(non-video coding layer, VCL) 네트워크 추상화 계층(NAL) 유닛의 서브세트이다. 구체적으로, AU는 출력 시간과 연관된 하나 이상의 픽처를 포함한다. 예를 들어, AU는 단일 계층 비트스트림에서 단일 픽처를 포함할 수 있고, 다중 계층 비트스트림에서 계층 각각에 대한 픽처를 포함할 수 있다. AU의 픽처 각각은 대응하는 VCL NAL 유닛에 각각 포함되는 슬라이스로 분할될 수 있다. 따라서, DU(553)는 하나 이상의 픽처, 픽처의 하나 이상의 슬라이스, 또는 이들의 조합을 포함할 수 있다. 또한, AU, 픽처 및/또는 슬라이스를 디코딩하는 데 사용되는 파라미터는 비 VCL NAL 유닛에 포함될 수 있다. 이와 같이, DU(553)는 DU(553)에서 VCL NAL 유닛의 디코딩을 지원하는 데 필요한 데이터를 포함하는 비 VCL NAL 유닛을 포함한다. CPB(543)는 HRD(500)에서 선입선출(first-in first-out) 버퍼이다. CPB(543)는 디코딩 순서로 비디오 데이터를 포함하는 DU(533)를 포함한다. CPB(543)는 비트스트림 적합성 검증 시에 사용하기 위해 비디오 데이터를 저장한다.
CPB(543)는 DU(553)를 디코딩 프로세스 구성요소(545)에 포워딩한다. 디코딩 프로세스 구성요소(545)는 VVC 표준을 따르는 구성요소이다. 예를 들어, 디코딩 프로세스 구성요소(545)는 최종 사용자에 의해 채용되는 디코더(400)를 에뮬레이션할 수 있다. 디코딩 프로세스 구성요소(545)는 예시적인 최종 사용자 디코더에 의해 달성될 수 있는 레이트로 DU(553)를 디코딩한다. 디코딩 프로세스 구성요소(545)가 CPB(543)의 오버플로를 방지하기에 충분히 빠르게 DU(553)를 디코딩할 수 없으면, 비트스트림(551)은 표준을 따르지 않고 다시 인코딩되어야 한다.
디코딩 프로세스 구성요소(545)는 DU(553)를 디코딩하는데, 이는 디코딩된 DU(555)를 생성한다. 디코딩된 DU(555)는 디코딩된 픽처를 포함한다. 디코딩된 DU(555)는 DPB(547)에 포워딩된다. DPB(547)는 디코딩된 픽처 버퍼 구성요소(223, 323, 및/또는 423)와 실질적으로 유사할 수 있다. 디코딩된 DU(555)로부터 획득되는 참조 픽처(556)로서 사용하기 위해 마킹되는 픽처는 추가 디코딩을 지원하기 위해 디코딩 프로세스 구성요소(545)에 회신된다. DPB(547)는 디코딩된 비디오 시퀀스를 일련의 픽처(557)로서 출력한다. 픽처(557)는 인코더에 의해 비트스트림(551)으로 인코딩된 픽처를 일반적으로 미러링하는 재구축된 픽처이다.
픽처(557)는 출력 크로핑 구성요소(output cropping component)(549)로 포워딩다. 출력 크로핑 구성요소(549)는 픽처(557)에 적합성 크로핑 윈도(conformance cropping window)를 적용하도록 구성된다. 이는 출력 크로핑 픽처(559)를 생성한다. 출력 크로핑 픽처(559)는 완전히 재구축된 픽처이다. 따라서, 출력 크로핑된 픽처(559)는 최종 사용자가 비트스트림(551)을 디코딩할 때 보게 될 것을 모방한다. 이와 같이, 인코더는 인코딩이 만족스럽도록 보장하기 위해 출력 크로핑된 픽처(559)를 검토할 수 있다.
HRD(500)는 비트스트림(551)의 HRD 파라미터에 기초하여 초기화된다. 예를 들어, HRD(500)는 VPS, SPS, 및/또는 SEI 메시지로부터 HRD 파라미터를 판독할 수 있다. 그런 다음, HRD(500)는 이러한 HRD 파라미터의 정보에 기초하여 비트스트림(551)에 대한 적합성 테스트 동작을 수행할 수 있다. 구체적인 예로서, HRD(500)는 HRD 파라미터로부터 하나 이상의 CPB 전달 스케줄을 결정할 수 있다. 전달 스케줄은 CPB 및/또는 DPB와 같은, 메모리 위치에 및/또는 메모리 위치로부터 비디오 데이터를 전달하기 위한 타이밍을 지정한다. 따라서, CPB 전달 스케줄은 CPB(543)에/로부터 AU, DU(553), 및/또는 픽처의 전달을 위한 타이밍을 지정한다. HRD(500)는 CPB 전달 스케둘과 유사한 DPB(547)에 대한 DPB 전달 스케줄을 채용한다.
비디오는 다양한 레벨의 하드웨어 능력과 다양한 네트워크 조건을 가진 디코더에 의한 사용하기 위해 상이한 계층 및/또는 OLS로 코딩될 수 있다. CPB 전달 스케줄은 이러한 문제를 반영하기 위해 선택된다. 따라서, 상위 계층 서브비트스트림은 최적의 하드웨어 및 네트워크 상태에 지정되고, 따라서 상위 계층은 CPB(543)에서 대량의 메모리를 채용하고 DPB(547)를 향한 DU(553)의 전송에 짧은 지연을 채용하는 하나 이상의 CPB 전달 스케줄을 수신할 수 있다. 마찬가지로, 하위 계층 서브비트스트림은 디코더 하드웨어 기능이 제한되거나 네트워크 상태가 좋지 않은 경우에 지정된다. 따라서, 하위 계층은 CPB(543)에서 소량의 메모리를 채용하고 DPB(547)를 향한 DU(553)의 전송에 더 긴 지연을 채용하는 하나 이상의 CPB 전달 스케줄을 수신할 수 있다. 그러면 OLS, 계층, 서브계층 또는 이들의 조합이 결과로 생성되는 서브비트스트림이 서브비트스트림에 대해 예상되는 조건에서 올바르게 디코딩될 수 있음을 보장하기 위해 대응하는 전달 스케줄에 따라 테스트된다. 따라서, 비트스트림(551)의 HRD 파라미터는 CPB 전달 스케줄을 지시할 수 있을 뿐만 아니라 HRD(500)가 CPB 전달 스케줄을 결정하고 CPB 전달 스케줄을 대응하는 OLS, 계층, 및/또는 서브계층과 상관시킬 수 있기에 충분한 데이터를 포함할 수 있다.
도 6은 계층 간 예측(621)을 위해 구성된 예시적인 다중 계층 비디오 시퀀스(600)를 나타낸 개략도이다. 다중 계층 비디오 시퀀스(600)는 코덱 시스템(200) 및/또는 인코더(300)와 같은, 인코더에 의해 인코딩될 수 있고, 예를 들어 방법(100)에 따라 코덱 시스템(200) 및/또는 디코더(400)와 같은, 디코더에 의해 디코딩될 수 있다. 또한, 다중 계층 비디오 시퀀스(600)는 HRD(500)와 같은, HRD에 의해 표준 적합성에 대해 검사될 수 있다. 다중 계층 비디오 시퀀스(600)는 코딩된 비디오 시퀀스의 계층에 대한 예시적인 애플리케이션을 나타내기 위해 포함된다. 다중 계층 비디오 시퀀스(600)는 계층 N(631) 및 계층 N+1(632)과 같은, 복수의 계층을 채용하는 임의의 비디오 시퀀스이다.
일례에서, 다중 계층 비디오 시퀀스(600)는 계층 간 예측(621)을 채용할 수 있다. 계층 간 예측(621)은 서로 다른 계층에 있는 픽처(611, 612, 613, 614)와 픽처(15, 616, 617, 618) 사이에 적용된다. 도시된 예에서, 픽처(611, 612, 613, 614)는 계층 N+1(632)의 일부이고, 픽처(15, 616, 617, 618)는 계층 N(631)의 일부이다. 계층 N(631) 및/또는 계층 N+1(632)과 같은, 계층은 유사한 크기, 품질, 해상도, 신호 대 잡음비, 능력 등과 같은, 유사한 값의 특성과 모두 연관된 픽처의 그룹이다. 계층은 VCL NAL 유닛과 비 VCL NAL 유닛의 세트로서 공식적으로 정의될 수 있다. VCL NAL 유닛은 픽처의 코딩된 슬라이스와 같은, 비디오 데이터를 포함하도록 코딩된 NAL 유닛이다. 비 VCL NAL 유닛은 비디오 데이터 디코딩, 적합성 검사 수행, 또는 기타 동작을 지원하는 신택스 및/또는 파라미터와 같은, 비 비디오 데이터를 포함하는 NAL 유닛이다.
도시된 예에서, 계층 N+1(632)은 계층 N(631)보다 더 큰 이미지 크기와 연관된다. 따라서, 계층 N+1(632)에 있는 픽처(611, 612, 613, 614)는 이 예에서 계층 N(631)에 있는 픽처(615, 616, 617, 618)보다 더 큰 픽터 크기(예: 더 큰 높이와 너비, 따라서 더 많은 샘플)를 갖는다. 그러나 이러한 픽처는 다른 특성에 의해 계층 N+1(632)과 계층 N(631) 사이에서 분리될 수 있다. 두 개의 계층, 계층 N+1(632)과 계층 N(631)만 표시되어 있지만, 한 세트의 픽처는 연관된 특성에 기초하여 임의의 수의 계층으로 분리될 수 있다. 계층 N+1(632) 및 층 N(631)은 또한 층 Id로 표시될 수 있다. 계층 Id는 픽처과 연관되고 픽처가 지시된 계층의 일부임을 표시하는 데이터 항목이다. 따라서, 각각의 픽처(611-618)는 대응하는 픽처를 포함하는 계층 N+1(632) 또는 계층 N(631)을 지시하기 위한 대응하는 계층 Id와 연관될 수 있다. 예를 들어, 계층 Id는 NAL 유닛을 포함하는(예컨대, 계층에 있는 픽처의 슬라이스 및/또는 픽처를 포함하는) 계층의 식별자를 지정하는 신택스 요소인 NAL 유닛 헤더 계층 식별자(nuh_layer_id)를 포함할 수 있다. 계층 N(631)과 같은, 더 낮은 품질/비트스트림 크기와 연관된 계층은 일반적으로 하위 계층 Id가 할당되고 하위 계층으로 지칭된다. 또한, 계층 N+1(632)과 같은, 더 높은 품질/비트스트림 크기와 연관된 계층은 일반적으로 상위 계층 Id가 할당되고 상위 계층으로 지칭된다.
상이한 계층(631-632)의 픽처(611-618)는 대안으로 디스플레이되도록 구성된다. 구체적인 예로서, 더 작은 픽처가 요구되는 경우 디코더는 현재 표시 시간에 픽처(615)를 디코딩하여 표시할 수 있고, 더 큰 픽처가 요구되는 경우 디코더는 현재 표시 시간에 픽처(611)를 디코딩하여 표시할 수 있다. 이와 같이, 상위 계층 N+1(632)의 픽처(611-614)는 (픽처 크기의 차이에도 불구하고) 하위 계층 N(631)에서의 대응하는 픽처(615-618)와 실질적으로 동일한 이미지 데이터를 포함한다. 구체적으로, 픽처(611)는 픽처(615)과 실질적으로 동일한 이미지 데이터를 포함하고, 픽처(612)는 픽처(616)와 실질적으로 동일한 이미지 데이터를 포함한다.
픽처(611-618)는 동일한 계층 N(631) 또는 N+1(632)의 다른 픽처(611-618)를 참조하여 코딩될 수 있다. 동일한 계층의 다른 픽처를 참조하여 픽처를 코딩하면 인터 예측(623)이 발생한다. 인터 예측(623)은 실선 화살표로 표시된다. 예를 들어, 픽처(613)는 참조로서 계층 N+1(632)의 픽처(611, 612, 및/또는 614) 중 하나 또는 두 개를 사용하는 인터 예측(623)을 채용함으로써 코딩될 수 있으며, 여기서 단방향 인터 예측에 하나의 픽처가 참조되고 및/또는 또는 양방향 인터 예측에 두 개의 픽처가 참조된다. 또한, 픽처(617)는 참조로서 계층 N(631)의 픽처(615, 616 및/또는 618) 중 하나 또는 두 개를 사용하는 인터 예측(623)을 채용함으로써 코딩될 수 있으며, 여기서 단방향 인터 예측에 하나의 픽처가 참조되고 및/또는 양방향 인터 예측에 두 개의 픽처가 참조된다. 인터 예측(623)을 수행할 때 픽처가 동일 계층의 다른 픽처에 대한 참조로 사용되는 경우, 그 픽처는 참조 픽처로 지칭될 수 있다. 예를 들어, 픽처(612)는 인터 예측(623)에 따라 픽처(613)를 코딩하는 데 사용되는 참조 픽처일 수 있다. 인터 예측(623)은 또한 다중 계층 컨텍스트에서 인트라-계층 예측으로 지칭될 수 있다. 이와 같이, 인터 예측(623)은 참조 픽처와 현재 픽처가 동일한 계층에 있는 현재 픽처와 다른 참조 픽처에서 지시된 샘플을 참조하여 현재 픽처의 샘플을 코딩하는 메커니즘이다.
픽처(611-618)는 또한 상이한 계층의 다른 픽처(611-618)를 참조하여 코딩될 수 있다. 이 프로세스는 계층 간 예측(621)으로 알려져 있으며, 파선 화살표로 표시된다. 계층 간 예측(621)은 현재 픽처와 참조 픽처가 서로 다른 계층에 있고 따라서 서로 다른 계층 Id를 갖는 참조 픽처에서 지시된 샘플을 참조하여 현재 픽처의 샘플을 코딩하는 메커니즘이다. 예를 들어, 하위 계층 N(631)의 픽처는 상위 계층 N+1(632)에서의 대응 픽처를 코딩하기 위한 참조 픽처로 사용될 수 있다. 구체적인 예로, 픽처(611)는 계층 간 예측(621)에 따라 픽처(615)를 참조하여 코딩될 수 있다. 이러한 경우에, 픽처(615)는 계층 간 참조 픽처로서 사용된다. 계층 간 참조 픽처는 계층 간 예측(621)에 사용되는 참조 픽처이다. 대부분의 경우, 계층 간 예측(621)은 픽처(611)와 같은 현재 픽처가, 픽처(615)와 같은 동일한 AU에 포함되고 하위 계층에 있는 계층 간 참조 픽처(들)만 사용할 수 있도록 제약된다. 다중 계층(예: 둘 이상)이 이용 가능한 경우, 계층 간 예측(621)은 현재 픽처보다 낮은 레벨에서 다수의 계층 간 참조 픽처(들)에 기초하여 현재 픽처를 인코딩/디코딩할 수 있다.
비디오 인코더는 인터 예측(623)과 계층 간 예측(621)의 많은 상이한 조합 및/또는 순열을 통해 픽처(611-618)를 인코딩하기 위해 다중 계층 비디오 시퀀스(600)를 사용할 수 있다. 예를 들어, 픽처(615)는 인트라 예측에 따라 코딩될 수 있다. 그러면, 픽처(616-618)는 픽처(615)를 참조 픽처로서 사용함으로써 인터 예측(623)에 따라 코딩될 수 있다. 또한, 픽처(611)는 픽처(615)를 계층 간 참조 픽처로서 사용함으로써 계층 간 예측(621)에 따라 코딩될 수 있다. 그러면, 픽처(612-614)는 픽처(611)를 참조 픽처로서 사용함으로써 인터 예측(623)에 따라 코딩될 수 있다. 이와 같이, 참조 픽처는 상이한 코딩 메커니즘을 위한 단일 계층 참조 픽처와 계층 간 참조 픽처 모두의 역할을 할 수 있다. 하위 계층 N(631) 픽처에 기초하여 상위 계층 N+1(632) 픽처를 코딩함으로써, 상위 계층 N+1(632)은 인터 예측(623) 및 계층 간 예측(621)보다 훨씬 낮은 코딩 효율을 갖는 인트라 예측을 채용하는 것을 피할 수 있다. 이와 같이, 인트라 예측의 나쁜 코딩 효율은 최소/최저 품질 픽처로 제한될 수 있고, 따라서 최소량의 비디오 데이터를 코딩하는 것으로 제한될 수 있다. 참조 픽처 및/또는 계층 간 참조 픽처로서 사용되는 픽처는 참조 픽처 리스트 구조에 포함된 참조 픽처 리스트(들)의 엔트리에 표시될 수 있다.
픽처(611-618)는 또한 액세스 유닛(AU)(627, 628)에 포함될 수 있다. AU(627-628)는 상이한 계층에 포함되고 디코딩 동안 동일한 출력 시간과 연관된 코딩된 픽처의 세트이다. 따라서, 동일한 AU(627-628)의 코딩된 픽처는 디코더에서 동시에 DPB로부터의 출력을 위해 스케줄링된다. 예를 들어, 픽처(614)와 픽처(618)는 동일한 AU(628)에 있다. 픽처(613)와 픽처(617)은 픽처(614) 및 픽처(618)와 다른 AU(627)에 있다. 동일한 AU(628)의 픽처(614)와 픽처(618)가 대안으로 표시될 수 있다. 예를 들어, 픽처(618)는 작은 픽처 크기를 원할 때 표시될 수 있고, 픽처(614)은 큰 픽처 크기를 원할 때 표시될 수 있다. 큰 픽처 크기를 원하는 경우, 픽처(614)가 출력되고 픽처(618)는 계층 간 예측(621)에만 사용된다. 이 경우, 픽처(618)는 계층 간 예측(621)이 완료되면 출력되지 않고 폐기된다. 모든 계층에서 픽처를 포함하는 AU(627)는 완전한 AU(627)로 지칭될 수 있다. 모든 계층에서 픽처를 포함하지 않는 AU(628)는 불완전한 AU(628)로 지칭될 수 있다.
계층 N-1(633)은 AU(628)가 불완전하다는 시나리오를 나타내기 위해 포함된다. 계층 N-1(633)은 각각 픽처(615) 및 픽처(617)와 실질적으로 동일한 픽처(625) 및 픽처(626)을 포함한다. 그러나 계층 N-1(633)은 대응하는 픽처(616) 및 픽처(618)을 포함하지 않는다. 따라서, 계층 N-1(633)은 실질적으로 계층 N(631)과 유사하지만, 더 낮은 프레임 레이트를 포함한다. 따라서, 픽처(611, 615, 625)를 포함하는 AU(627)는 완전하다. 그러나 픽처(612, 616)를 포함하는 AU(628)는 불완전한 AU(628)인데, 그 이유는 이 AU(628)가 계층 N-1(633)에서 픽처를 놓치고 있기 때문이다.
불완전한 AU(628)를 인코딩하는 것은 이것이 다중 계층 비디오 시퀀스(600)가 상이한 프레임 레이트로 상이한 사용자에게 송신될 수 있도록 하기 때문에 유용할 수 있다. 그러나 불완전한 AU(628)는 코딩된 비디오 시퀀스의 적합성을 검사할 때 문제를 일으킬 수 있다. 예를 들어, SEI 메시지는 다중 계층 비디오 시퀀스(600)이 표준에 준거하는지를 검사하는 경우, HRD(500)와 같은, HRD에 의해 사용되는 파라미터를 송신하는 데 채용될 수 있다. 일부 비디오 코딩 시스템은 SEI 메시지가 AU(627-628)의 모든 계층에 적용되도록 허용한다. 문제는 이러한 SEI 메시지가 여러 AU(627-628)에 걸쳐 지속될 수 있다는 것이다. 불완전한 AU(628)의 모든 계층에 SEI 메시지가 적용되는 경우, 계층 N-1(633)은 불완전한 AU(628)에 포함되지 않기 때문에 이러한 SEI 메시지는 계층 N-1(633)에 적용되지 않는다. 따라서, 불완전한 AU(628) 뒤에 오는 완전한 AU(627)의 계층 N-1(633)에 SEI 메시지는 적용되지 않는다. SEI 메시지는 그러한 메시지가 완전한 AU(627)와 연관될 때 계층 N-1(633)에 적절하게 적용되고, 그러한 메시자가 불완전한 AU(628)와 연관될 때 계층 N-1(633)에 적용되지 않기 때문에, 이는 예측할 수 없는 오류를 야기할 수 있다. 이 문제 및 기타 문제는 아래에 설명된 시그널링 방식에 의해 해결된다.
도 7은 예시적인 비트스트림(700)을 나타낸 개략도이다. 예를 들어, 비트스트림(700)은 방법(100)에 따른 코덱 시스템(200) 및/또는 디코더(400)에 의한 디코딩을 위해 코덱 시스템(200) 및/또는 인코더(300)에 의해 생성될 수 있다. 또한 비트스트림(700)은 다중 계층 비디오 시퀀스(600)를 포함할 수 있다. 또, 비트스트림(700)은 HRD(500)와 같은, HRD의 동작을 제어하기 위한 다양한 파라미터들을 포함할 수 있다. 이러한 파라미터에 기초하여, HRD(500)는 디코딩을 위해 디코더로 송신하기 전에 비트스트림(700)이 표준을 준수하는지 검사할 수 있다.
비트스트림(700)은 VPS(711), 하나 이상의 SPS(713), 복수의 픽처 파라미터 세트(PPS)(715), 복수의 슬라이스 헤더(717), 이미지 데이터(720), 및 SEI 메시지(719)를 포함한다. VPS(711)는 비트스트림(700) 전체에 관련된 데이터를 포함한다. 예를 들어, VPS(711)는 비트스트림(700)에서 사용되는 데이터 관련 OLS, 계층 및/또는 서브계층에 관련된 데이터를 포함할 수 있다. SPS(713)는 비트스트림(700)에 포함된 코딩된 비디오 시퀀스의 모든 픽처에 공통인 시퀀스 데이터를 포함한다. 예를 들어, 각각의 계층은 하나 이상의 코딩된 비디오 시퀀스를 포함할 수 있고, 각각의 코딩된 비디오 시퀀스는 대응하는 파라미터에 대해 SPS(713)를 참조할 수 있다. SPS(713)에 있는 파라미터는 픽처 크기조정(picture sizing), 비트 심도(bit depth), 코딩 도구 파라미터, 비트 레이트 제한 등을 포함할 수 있다. 각각의 시퀀스는 SPS(713)를 참조하지만, 단일 SPS(713)는 일부 예에서 여러 시퀀스에 대한 데이터를 포함할 수 있다. PPS(715)는 전체 픽처에 적용되는 파라미터를 포함한다. 따라서, 비디오 시퀀스의 각각 픽처는 PPS(715)를 참조할 수 있다. 각각의 픽처가 PPS(715)를 참조하는 반면, 단일 PPS(715)는 일부 예에서 다수의 픽처에 대한 데이터를 포함할 수 있다는 점에 유의해야 한다. 예를 들어, 다수의 유사한 픽처는 유사한 파라미터에 따라 코딩될 수 있다. 이러한 경우, 단일의 PPS(715)는 이러한 유사한 픽처에 대한 데이터를 포함할 수 있다. PPS(715)는 대응하는 픽처의 슬라이스, 양자화 파라미터, 오프셋 등에 사용 가능한 코딩 도구를 지시할 수 있다.
슬라이스 헤더(717)는 픽처의 슬라이스 각각에 특정한 파라미터를 포함한다. 따라서, 비디오 시퀀스의 슬라이스당 하나의 슬라이스 헤더(717)가 있을 수 있다. 슬라이스 헤더(717)는 슬라이스 유형 정보, POC, 참조 픽처 목록, 예측 가중치, 타일 진입점(tile entry point), 디블로킹 파라미터 등을 포함할 수 있다. 일부 예에서, 비트스트림(700)은 또한 단일 픽처의 모든 슬라이스에 적용되는 파라미터를 포함하는 신택스 구조인 픽처 헤더를 포함할 수 있다. 이러한 이유로 픽처 헤더와 슬라이스 헤더(717)는 일부 상황에서 상호 교환적으로 사용될 수 있다. 예를 들어, 특정 파라미터는 그러한 파라미터가 픽처의 모든 슬라이스에 공통인지 여부에 따라 슬라이스 헤더(717)와 픽처 헤더 사이에서 이동될 수 있다.
이미지 데이터(720)는 인터 예측 및/또는 인트라 예측에 따라 인코딩된 비디오 데이터는 물론 대응하는 변환 및 양자화된 잔차 데이터를 포함한다. 예를 들어, 이미지 데이터(720)는 계층(723), 픽처(725), 및/또는 슬라이스(727)를 포함할 수 있다. 계층(723)은 nuh_layer_id(729)와 같은 계층 ID로 지시된 바와 같은 지정된 특성(예: 공통 해상도, 프레임 레이트, 이미지 크기 등)을 공유하는 VCL NAL 유닛과 연관된 비 VCL NAL 유닛의 세트이다. 예를 들어, 계층(723)은 동일한 nuh_layer_id를 공유하는 픽처(725)의 세트를 포함할 수 있다. 계층(723)은 계층(631, 632, 633)과 실질적으로 유사할 수 있다. nuh_layer_id(729)는 적어도 하나의 NAL 유닛을 포함하는 계층(723)의 식별자를 지정하는 신택스 요소이다. 예를 들어, 기본 계층으로 알려진 최저 품질의 계층(723)은 더 높은 품질의 계층(723)에 대해 nuh_layer_id(729)의 값을 증가시키면서 nuh_layer_id(729)의 최저 값을 포함할 수 있다. 따라서, 하위 계층은 더 작은 값의 nuh_layer_id(729)를 갖는 계층(723)이고 상위 계층은 더 큰 값의 nuh_layer_id(729)을 갖는 계층(723)이다.
픽처(725)는 그 프레임 또는 필드를 생성하는 루마 샘플의 배열 및/또는 크로마 샘플의 배열이다. 예를 들어, 픽처(725)는 표시를 위해 출력되거나 출력을 위해 다른 픽처(들)(725)의 코딩을 지원하는 데 사용될 수 있는 코딩된 이미지이다. 픽처(725)는 하나 이상의 슬라이스(727)를 포함한다. 슬라이스(727)는 단일 NAL 유닛에 배타적으로 포함되는 픽처(725)의 정수 개의 완전한 타일 또는 정수 개의 연속적인 완전한 코딩 트리 단위(CTU) 행(예: 타일 내)으로 정의될 수 있다. 슬라이스(727)는 CTU 및/또는 코딩 트리 블록(CTB)으로 더 분할된다. CTU는 코딩 트리로 파티셔닝될 수 있는 미리 정의된 크기의 샘플 그룹이다. CTB는 CTU의 서브세트이며 CTU의 루마 성분 또는 크로마 성분을 포함한다. CTU/CTB는 코딩 트리를 기반으로 코딩 블록으로 더 나뉜다. 그런 다음, 코딩 블록은 예측 메커니즘에 따라 인코딩/디코딩될 수 있다.
비트스트림(700)은 NAL 유닛의 시퀀스로서 코딩될 수 있다. NAL 유닛은 비디오 데이터 및/또는 지원 신택스를 위한 컨테이너이다. NAL 유닛은 VCL NAL 유닛 또는 비 VCL NAL 유닛일 수 있다. VCL NAL 유닛은, 이미지 데이터(720) 및 연관된 슬라이스 헤더(717)와 같은, 비디오 데이터를 포함하도록 코딩된 NAL 유닛이다. 비 VCL NAL 유닛은 비디오 데이터 디코딩, 적합성 검사의 수행 또는 기타 동작을 지원하는 신택스 및/또는 파라미터와 같은, 비 비디오 데이터를포함하는 NAL 유닛이다. 예를 들어, 비 VCL NAL 유닛은 VPS(711), SPS(713), PPS(715), SEI 메시지(719), 또는 다른 지원 신택스를 포함할 수 있다.
SEI 메시지(719)는 디코딩된 픽처에서 샘플의 값을 결정하기 위해 디코딩 프로세스에 의해 필요하지 않은 정보를 전달하는 지정된 시맨틱스를 갖는 신택스 구조이다. 예를 들어, SEI 메시지(719)는 디코더에서 비트스트림(700)을 디코딩하는 것과 직접적으로 관련이 없는 HRD 프로세스 또는 다른 지원 데이터를 지원하기 위한 데이터를 포함할 수 있다. SEI 메시지(719)의 세트는 스케일러블 네스팅 SEI 메시지(741)로서 구현될 수 있다. 스케일러블 네스팅 SEI 메시지(741)는 SEI 메시지(719)를 특정 계층(723)과 연관시키는 메커니즘을 제공한다. 스케일러블 네스팅 SEI 메시지(741)는 복수의 스케일러블 네스티드 SEI 메시지(742)를 포함하는 메시지이다. 스케일러블 네스티드 SEI 메시지(742)는 하나 이상의 OLS 또는 하나 이상의 계층(723)에 대응하는 SEI 메시지(719)이다. OLS는 계층(723)의 세트이며, 여기서 계층(723) 중 적어도 하나는 출력 계층이다. 따라서, 스케일러블 네스팅 SEI 메시지(741)는 컨텍스트에 따라, 스케일러블 네스티드 SEI 메시지(742)의 세트를 포함하거나 SEI 메시지 세트(719)를 포함한다고 말할 수 있다. 또한, 스케일러블 네스팅 SEI 메시지(741)는 동일한 유형의 스케일러블 네스티드 SEI 메시지(742)의 세트를 포함한다. SEI 메시지(719)는 대응하는 OLS 및/또는 계층(723)을 테스트하기 위한 CPB를 관리하기 위해 HRD를 초기화하기 위한 HRD 파라미터를 포함하는 BP SEI 메시지를 포함할 수 있다. SEI 메시지(719)는 또한 대응하는 OLS 및/또는 계층(723)을 테스트하기 위한 CPB 및/또는 DPB에서의 AU에 대한 전달 정보를 관리하기 위한 HRD 파라미터를포함하는 PT SEI 메시지를 포함할 수 있다. SEI 메시지(719)는 또한 대응하는 OLS 및/또는 계층(723)을 테스트하기 위한 CPB 및/또는 DPB에서의 AU에 대한 전달 정보를 관리하기 위한 HRD 파라미터를포함하는 DUI SEI 메시지를 포함할 수 있다.
위에서 언급한 바와 같이, SEI 메시지(719)는 비 VCL NAL에 포함될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지(741)는 SEI NAL 유닛(743)에 포함될 수 있다. SEI NAL 유닛(743)은 SEI NAL 유닛(743)이 SEI 데이터를 포함함을 지시하는 유형 데이터를 가진 NAL 유닛이다. 스케일러블 네스팅 SEI 메시지(741)의 이점 중 하나는, 스케일러블 네스팅 SEI 메시지(741)가 단일 SEI NAL 유닛(743)에 스케일러블 네스티드 SEI 메시지(742)의 세트가 포함될 수 있도록 해준다는 것이다. 스케일러블 네스팅 SEI 메시지(741)가 채용되지 않는 경우, 각각의 SEI 메시지(719)는 개별의 SEI NAL 유닛(743)에 포함된다. 설명의 명확성을 위해, 특정 SEI NAL 유닛(743)은 현재 SEI NAL 유닛(743)으로 지칭될 수 있다.
스케일러블 네스팅 SEI 메시지(741)의 문제 중 하나는 스케일러블 네스티드 SEI 메시지(742)의 전체 세트가 단일 SEI NAL 유닛(743)에 포함된다는 것이다. 그러나 스케일러블 네스티드 SEI 메시지(742)의 세트는 여러 가지 방법으로 대응하는 계층(723)을 관련될 수 있다. 예를 들어, 세트 내의 스케일러블 네스티드 SEI 메시지(742) 각각은 모든 계층(723)과 관련될 수 있다. 다른 예에서, 세트 내의 스케일러블 네스티드 SEI 메시지(742) 각각은 계층(723) 중 하나 이상에 관련될 수 있다. 다양한 플래그는 스케일러블 네스티드 SEI 메시지(742)와 계층(723) 사이의 상관관계를 지시하기 위해 사용될 수 있다. 위에서 언급한 바와 같이, 스케일러블 네스티드 SEI 메시지(742) 플래그의 한 가지 문제는, AU의 모든 계층에 적용되는 스케일러블 네스티드 SEI 메시지(742)를 지시하는 플래그가 비디오 시퀀스에 불완전한 AU가 포함된 경우에 오류를 일으킬 수 있다는 것이다. 또 다른 문제는, 스케일러블 네스팅 SEI 메시지(741)를 포함하는 SEI NAL 유닛(743)이 항상 계층(723), 예를 들어 가장 낮은 nuh_layer_id(729)를 갖는 계층(723)과 연관된다는 것이다. 스케일러블 네스티드 SEI 메시지(742)가 SEI NAL 유닛(743)과 연관은 계층에 적용되는 경우, 연관관계가 SEI NAL 유닛(743) 및 스케일러블 네스팅 SEI 메시지(741) 모두에서 시그널링된다. 이것은 중복되고 비트를 낭비한다.
비트스트림(700)은 위에서 언급된 문제를 해결하면서 SEI 메시지(719)의 구성을 시그널링하기 위한 다양한 플래그를 포함한다. 예를 들어, 스케일러블 네스팅 SEI 메시지(741)는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)(735)를 포함할 수 있다. 스케일러블 네스팅 all_layers_flag(735) 신택스 요소는, 예를 들어 VPS(711)에 지정된 바와 같이, 스케일러블 네스팅 SEI 메시지(741) 내의 스케일러블 네스티드 SEI 메시지(742)가 모든 계층(723)에 적용되는지를 지정한다. AU를 다루지 않는 스케일러블 네스팅 all_layers_flag(735)를 채용함으로써, 불완전한 AU 문제를 피할 수 있다. 따라서, 스케일러블 네스팅 all_layers_flag(735)가 설정되는 경우, 스케일러블 네스팅 SEI 메시지(741)에 포함된 스케일러블 네스티드 SEI 메시지(742)는 스케일러블 네스팅 SEI 메시지(741)가 적용되는 AU에 포함된 계층(723)의 수와 상관없이 모든 계층(723)에 적용된다. 특정 예에서, 스케일러블 네스팅 all_layers_flag(735)는, 스케일러블 네스티드 SEI 메시지(742)가 현재 SEI NAL 유닛(743)의 nuh_layer_id(729)보다 크거나 같은 nuh_layer_id(729)를 갖는 모든 계층(723)에 적용됨을 지정하는 경우에 1과 동일하게 설정된다. 또한, 스케일러블 네스팅 all_layers_flag(735)는, 스케일러블 네스티드 SEI 메시지(742)가 현재 SEI NAL 유닛(743)의 nuh_layer_id(729)보다 크거나 같은 nuh_layer_id(729)를 갖는 모든 계층(723)에 적용될 수 있거나 적용되지 않을 수 있음을 지정하는 경우에 0과 동일하게 설정될 수 있다. NAL 유닛(743). 따라서, 스케일러블 네스팅 all_layers_flag(735)는 불완전한 AU가 존재하는 경우에 비트스트림(700)의 적합성이 정확하게 검사되게 함으로써 인코더 및/또는 디코더의 기능을 증대시킨다. 또한, 스케일러블 네스팅 all_layers_flag(735)는 스케일러블 네스티드 SEI 메시지(742)가 모든 계층(723)에 적용될 때 스케일러블 네스티드 SEI 메시지(742)에 대한 명시적 계층 시그널링을 생략함으로써 인코딩된 비트스트림(700)의 크기를 줄이다. 결과적으로 코딩 효율이 증대되어, 인코더 및 디코더 모두에서 프로세서, 메모리, 및/또는 네트워크 시그널링 자원 사용량이 감소한다.
중복 시그널링 문제를 해결하기 위해, 스케일러블 네스팅 SEI 메시지(741)는 스케일러블 네스팅 계층 id(layer_id[i])(739)를 포함할 수 있다. 스케일러블 네스팅 layer_id[i](739)는 스케일러블 네스티드 SEI 메시지(742)가 적용되는 제i 계층의 nuh_layer_id(729) 값을 지정하는 신택스 요소이다. 스케일러블 네스팅 layer_id[i](739)는 스케일러블 네스팅 all_layers_flag(735)가 0으로 설정될 때 채용될 수 있다. 이와 같이, layer_id[i](739)는 각각의 스케일러블 네스티드 SEI 메시지(742)를 대응하는 계층(723)와 상관시키는 데 사용될 수 있다. 또한, 스케일러블 네스팅 계층 id(layer_id[i])(739)는 SEI NAL 유닛(743)에 대응하는 계층(723)의 nuh_layer_id(729)를 제외하고 스케일러블 네스티드 SEI 메시지(742)에 대응하는 모든 계층(723)의 nuh_layer_id(729)를 시그널링하도록 구성된다. 스케일러블 네스티드 SEI 메시지(742)가 스케일러블 네스팅 계층 id(layer_id[i])(739)에서 nuh_layer_id(729)와 연관되지 않는 경우, 스케일러블 네스티드 SEI 메시지(742)는 SEI NAL 유닛(743)과 연관된 계층(723)과 관련된 것으로 추론될 수 있다. 예를 들어, SEI NAL 유닛(743)은 nuh_layer_id(729)의 가장 낮은 값과 연관될 수 있다. 따라서, 스케일러블 네스팅 layer_id[i](739)는 각각의 계층 i에 대해 스케일러블 네스팅 layer_id[i](739)의 값이 현재 SEI NAL 유닛(743)의 nuh_layer_id(729)보다 커야 하도록 제약될 수 있다. 이것은 현재 SEI NAL 유닛(743)의 nuh_layer_id(729)가 현재 SEI NAL 유닛(743)에서 시그널링되지만 스케일러블 네스팅 SEI 메시지(741)의 스케일러블 네스팅 layer_id[i](739)에 반복되지 않도록 보장한다. 이것은 중복 Id를 생략함으로써 스케일러블 네스팅 SEI 메시지(741)를 개선한다. 예를 들어, 스케일러블 네스팅 layer_id[i](739)를 인코딩/디코딩하는 루프는 한 번 덜 실행되어, 인코딩 및/또는 디코딩 동안의 프로세서 자원을 감소시킨다. 또한, 이것은 비트스트림(700)의 스케일러블 네스팅 SEI 메시지(741) 각각에 대한 인코딩된 비트스트림(700)의 크기를 감소시킨다. 그 결과, 코딩 효율이 증대되고, 이는 인코더와 디코더 모두에서 프로세서, 메모리, 및/또는 네트워크 시그널링 자원 사용량을 감소시킨다.
HRD 및/또는 디코더는, 예를 들어 비트스트림(700)의 다른 신택스 요소에 기초하여, 스케일러블 네스팅 layer_id[i](739) 및 스케일러블 네스팅 all_layers_flag(735)를 사용하여 스케일러블 네스티드 SEI 메시지(742)를 계층(723)에 상관시킬 수 있다. 예를 들어, HRD 및/또는 디코더는 네스팅 계층의 수(nestingNumLayers) 변수와 네스팅 계층 Id의 목록(NestingLayerId[i]) 변수를 사용할 수 있다. 명명법의 문제로, 밑줄이 있는 신택스 요소는 인코더에 의해 비트스트림(700)에서 시그널링될 수 있는 반면, 밑줄 또는 공백이 없는 신택스 요소는 비트스트림(700)으로부터 데이터를 읽을 때(예: HRD 및/또는 디코더에서) 결정되는 변수일 수 있다. nestingNumLayers 변수는 비트스트림(700)의 데이터를 기반으로 스케일러블 네스티드 SEI 메시지(742)가 적용되는 계층(723)의 수를 지정한다. NestingLayerId[i] 변수는 비트스트림(700)의 데이터에 기초하여, 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 스케일러블 네스티드 SEI 메시지(742)가 적용되는 계층(723)의 nuh_layer_id 값의 목록을 지정하도록 설정되는 변수이다. nestingNumLayers 및 NestingLayerId[i]는 다음과 같이 결정될 수 있다:
Figure pct00003
전술한 코드는 VPS 최대 계층에서 1을 뺀 값(vps_max_layers_minus1)(731)에 의존한다. vps_max_layers_minus1(731)은 비트스트림(700)에서 계층(723)의 수를 지정하는 VPS(711)에서 실려 전달되는 신택스 요소이다. 전술한 코드는 또한 VPS 계층 Id(vps_layer_id[i])(733)에도 의존한다. vps_layer_id[i](733)는 제i 계층의 nuh_layer_id(729) 값을 지정하는 VPS(733)에 실려 전달된 신택스 요소이다. 따라서, vps_layer_id[i](733)는 nuh_layer_id(729)가 계층 색인 i에 의해 액세스될 수 있도록 모든 계층(723)에 대해 nuh_layer_id(729)를 지정한다.
전술한 코드는 또한 일반 계층 색인(GeneralLayerIdx) 변수에 의존한다. GeneralLayerIdx는 nuh_layer_id가 vps_layer_id[ i ](733)와 동일한 계층(723)의 계층 색인을 지정하는 HRD 및/또는 디코더에 의해 결정되는 변수이다. 전술한 코드는 또한 계층의 스케일러블 네스팅 수에서 1을 뺀 값(num_layers_minus1)(737)에 의존한다. 스케일러블 네스팅 num_layers_minus1(737)은 스케일러블 네스팅 SEI 메시지(741)의 스케일러블 네스티드 SEI 메시지(742)가 적용되는 계층(723)의 수를 지정하는 스케일러블 네스팅 SEI 메시지(741)에 실려 전달되는 신택스 요소이다. 스케일러블 네스팅 num_layers_minus1(737)은 빼기 1 포맷(minus one format)을 사용하므로 실제 값보다 1 작은 값을 포함한다. 예를 들어, 스케일러블 네스팅 SEI 메시지(741)가 5개의 계층(723)와 관련된 스케일러블 네스티드 SEI 메시지(742)를 포함하면, 스케일러블 네스팅 num_layers_minus1(737)은 4의 값으로 설정된다. 일부 예에서, 스케일러블 네스팅 num_layers_minus1(737)은 0 내지 vps_max_layers_minus1(731) - GeneralLayerIdx[nuh_layer_id](포함)의 범위에 있도록 제약되며, 여기서 nuh_layer_id(729)는 현재 SEI의 nuh_layer_id(729)이다.
아래에서는 이제 전술한 정보를 더 자세히 설명한다. 계층화된 비디오 코딩은 또한 스케일러블 비디오 코딩 또는 확장성(scalability)이 있는 비디오 코딩이라고도 한다. 비디오 코딩에서의 확장성은 다중 계층 코딩 기술을 사용함으로써 지원될 수도 있다. 다중 계층 비트스트림은 기본 계층(base layer, BL) 및 하나 이상의 강화 계층(enhancement layer, EL)을 포함한다. 확장성의 예로는 공간적 확장성, 품질/신호 대 잡음비(signal to noise ratio, SNR) 확장성, 다시점(multi-view), 프레임 레이트 확장성 등을 포함한다. 다중 계층 코딩 기법을 사용하는 경우, 픽처 또는 그 일부는 참조 픽처를 사용하지 않고 코딩될 수 있고(인트라 예측), 동일한 계층에 있는 참조 픽처를 참조하여 코딩될 수 있고(인터 예측), 및/또는 다른 계층(들)에 있는 참조 픽처를 참조하여 코딩될 수 있다(계층 간 예측). 현재 픽처의 계층 간 예측에 사용되는 참조 픽처를 ILRP(Inter Layer Reference Picture)라고 한다. 도 6은 서로 다른 계층의 픽처가 서로 다른 해상도를 가지는 공간적 확장성을 위한 다중 계층 코딩의 예를 나타낸다.
일부 비디오 코딩 패밀리는 단일 계층 코딩을 위한 프로파일(들)로부터 분리된 프로파일(들)의 확장성에 대한 지원을 제공한다. 스케일러블 비디오 코딩(SVC)은 공간, 시간 및 품질 확장성에 대한 지원을 제공하는 고급 비디오 코딩(advanced video coding, AVC)의 스케일러블 확장이다. SVC의 경우, 플래그는 EL 픽처의 각 매크로블록(macroblock, MB)에서 시그널링되어 EL MB가 하위 계층으로부터 병된(collocated) 블록을 사용하여 예측되는지를 지시한다. 병치된 블록으로부터의 예측은 텍스처, 움직임 벡터, 및/또는 코딩 모드를 포함할 수 있다. SVC 구현은 설계에서 수정되지 않은 AVC 구현을 직접 재사용할 수 없다. SVC EL 매크로블록 신택스 및 디코딩 프로세스는 AVC 신택스 및 디코딩 프로세스와 다르다.
스케일러블 HEVC(SHVC)는 공간 및 품질 확장성에 대한 지원을 제공하는 HEVC의 확장이다. 다시점 HEVC(MV-HEVC)는 다시점 확장성을 지원하는 HEVC의 확장이다. 3D HEVC(3D-HEVC)는 MV-HEVC보다 더 발전되고 효율적인 3D 비디오 코딩에 대한 지원을 제공하는 HEVC의 확장이다. 시간 확장성은 단일 계층 HEVC 코덱의 필수적인 부분으로 포함될 수 있다. HEVC의 다중 계층 확장에서, 계층 간 예측에 사용되는 디코딩된 픽처는 동일한 AU로부터만 제공되고, 장기 참조 픽처(long-term reference picure, LTRP)로 처리된다. 이러한 픽처에는 현재 계층의 다른 시간 참조 픽처와 함께 참조 픽처 목록(들)의 참조 색인이 할당된다. 계층 간 예측(inter-layer prediction ILP)은 참조 픽처 목록(들)의 계층 간 참조 픽처(들)를 참조하도록 참조 색인의 값을 설정함으로써 예측 유닛(PU) 레벨에서 달성된다. 공간 확장성은 ILRP가 인코딩 또는 디코딩되는 현재 픽처와 다른 공간 해상도를 갖는 경우에 참조 픽처 또는 그 일부를 다시 샘플링(리샘플링)한다. 참조 픽처 리샘플링은 픽처 레벨 또는 코딩 블록 레벨에서 실현될 수 있다.
VVC는 또한 계층화된 비디오 코딩을 지원할 수도 있다. VVC 비트스트림은 다수의 계층을 포함할 수 있다. 계층은 모두 서로 독립적일 수 있다. 예를 들어, 각각의 계층은 계층 간 예측을 사용하지 않고 코딩될 수 있다. 이 경우, 계층은 시뮬캐스트 계층(simulcast layer)이라고도 한다. 경우에 따라, 계층 중 일부는 ILP를 사용하여 코딩된다. VPS에서의 플래그는 계층이 시뮬캐스트 계층인지 또는 일부 계층이 ILP를 사용하는지를 지시할 수 있다. 일부 계층이 ILP를 사용하는 경우, 계층 간의 계층 종속 관계도 VPS에서 시그널링된다. SHVC 및 MV-HEVC와 달리, VVC는 OLS를 지정하지 않을 수 있다. OLS는 지정된 세트의 계층을 포함하며, 여기서 계층의 세트의 하나 이상의 계층이 출력 계층으로 지정된다. 출력 계층은 출력되는 OLS의 계층이다. VVC의 일부 구현에서, 계층이 시뮬캐스트 계층인 경우, 디코딩 및 출력을 위해 하나의 계층만이 선택될 수 있다. VVC의 일부 구현에서, 모든 계층을 포함하는 전체 비트스트림은 임의의 계층이 ILP를 사용하는 경우에 디코딩되도록 지정된다. 또한, 계층 중 특정 계층이 출력 계층으로 지정된다. 출력 계층은 최상위 계층만, 모든 계층, 또는 최상위 계층와 지시된 하위 계층의 세트로 지시될 수 있다.
전술한 측면은 특정 문제를 포함한다. 일부 비디오 코딩 시스템은 비트스트림 서브세트와 연관시키기 위한 스케일러블 네스팅 SEI 메시지가 특정 계층 및/또는 서브계층과 함께, 다양한 동작 포인트에 대응한다고 지정한다. 첫 번째 문제는 특정 nuh_layer_id 값이 nuhLayerId인 SEI NAL 유닛에 포함된 스케일러블 네스팅 SEI 메시지를 사용하여 특정 계층에 대한 SEI 메시지를 내포할 때 발생한다. 이 경우, 내포된(네스티드) SEI 메시지가 모든 계층에 적용되지 않을 때 nuh_layer_id가 nuhLayerId와 동일한 적용 가능한 계층도 명시적으로 시그널링된다. 그러나 nuh_layer_id가 nuhLayerId와 같은 적용 가능한 계층은 항상 적용 가능한 계층이다. 따라서 SEI NAL 유닛의 nuh_layer_id의 시그널링은 필요하지 않으며(예를 들어, 중복), 비트 낭비이다.
네스티드 SEI 메시지가 모든 계층에 적용될 때 두 번째 문제가 발생한다. 시맨틱스는, all_layers_flag가 값의 오름차순으로, 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같도록 목록 nestingLayerIdList[ 0 ]이 현재 액세스 유닛에 존재하는 nuh_layer_id의 모든 값을 포함하도록 지정하기 위해 all_layers_flag가 1과 동일하게 설정되었음을 나타낼 수 있다. 그러나 현재 AU는 불완전한 AU일 수 있다. 이것은 AU에 모든 계층에 존재하는 픽처를 갖고 있지 않을 때 발생할 수 있다. 네스티드 SEI 메시지의 지속 범위는 현재 AU보다 더 많은 계층에 대한 픽처를 포함하는 다른 AU를 포함할 수 있다. 결과적으로, 현재 AU( 스케일러블 네스팅 SEI 메시지를 포함하는 AU)에 누락되어 있는 계층은 적용 가능하도록 지정되지 않는다. 네스티드 SEI 메시지의 지속 범위에 있는 일부 다른 AU가 현재 AU에서 누락된 계층의 픽처를 갖고 있는 경우, 네스티드 SEI 메시지에 실려 전달되는 정보는 그러한 픽처에 적용할 수 없는 것으로 해석된다. 결과적으로, 오류가 발생할 수 있다. 예를 들어, 프레임 패킹 SEI 메시지가 네스티드 SEI 메시지에 포함된 경우, 렌더링된 픽처는 나쁜 사용자 경험을 초래하는 아티팩트를 포함할 수 있다.
일반적으로, 본 개시는 다중 계층 비디오 비트스트림에서의 계층에 대한 SEI 메시지의 스케일러블 네스팅을 위한 접근법을 설명한다. 이 기술에 대한 설명은 VVC를 기반으로 한다. 그러나 이 기술은 다른 비디오 코덱 사양을 기반으로 하는 계층화된 비디오 코딩에도 적용된다.
위에서 언급한 문제 중 하나 이상은 다음과 같이 해결될 수 있다. 구체적으로, 본 개시는 위에서 설명된 바와 같이 불완전한 AU와 더불어, 계층과 함께 사용하기 위해 SEI 메시지를 효율적으로 내포하는 방법을 포함한다. 먼저, 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛의 계층 Id와 동일한 계층 Id를 갖는 계층은 명시적으로 시그널링되지 않고 네스티드 SEI 메시지가 적용되는 계층으로 유추된다. 둘째, 네스티드 SEI 메시지가 모든 계층에 적용되는 경우, 네스티드 SEI 메시지는 현재 AU에 있는 모든 계층 대신, 비트스트림에 존재할 수 있는 모든 계층인 VPS에 의해 지정된 모든 계층에 적용된다.
전술한 메커니즘의 예시적인 구현은 다음과 같다. 스케일러블 네스팅 SEI 메시지 시택스의 일례는 다음과 같다.
Figure pct00004
대안적인 예에서, 신택스 요소 nesting_layer_id[ i ]는 VPS에 의해 지정된 계층들 사이의 계층 색인의 ue(v) 코딩이다. 다른 대안적인 예에서, 신택스 요소 nesting_layer_id[ i ]는 VPS에 의해 지정된 계층들 간의 계층 색인 델타의 ue(v) 코딩이다. 다른 대안적인 예에서, 신택스 요소 nesting_layer_id[ i ]는 nuh_layer_id의 델타의 ue(v) 코딩이다.
예시적인 스케일러블 네스팅 SEI 메시지 시맨틱스는 다음과 같다. 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 OLS 컨텍스트에 있는 특정 계층 또는 OLS 컨텍스트에 없는 아닌 특정 계층과 연관시키는 메커니즘을 제공한다. 스케일러블 네스팅 SEI 메시지에는 하나 이상의 SEI 메시지가 포함된다. 스케일러블 네스팅 SEI 메시지에 포함된 SEI 메시지는 스케일러블 네스티드 SEI 메시지라고도 한다. 비트스트림 적합성은 SEI 메시지가 스케일러블 네스팅 SEI 메시지에 포함될 때 다음 제한 사항이 적용되도록 요구할 수 있다.
132(디코딩된 픽처 해시) 또는 133(스케일러블 네스팅)과 동일한 payloadType을 갖는 SEI 메시지는 스케일러블 네스팅 SEI 메시지에 포함되어서는 안 된다. 스케일러블 네스팅 SEI 메시지가 버퍼링 주기, 픽처 타이밍 또는 디코딩 유닛 정보 SEI 메시지를 포함하는 경우, 스케일러블 네스팅 SEI 메시지는 0(버퍼링 주기), 1(픽처 타이밍), 또는 130(디코딩 유닛 정보)과 동일한 payloadType를 가진 기타 다른 SEI 메시지를 포함해서는 안 된다..
비트스트림 적합성은 또한 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛의 nal_unit_type 값에 대해 다음과 같은 제한이 적용될 것을 요구할 수 있다. 스케일러블 네스팅 SEI 메시지가 0(버퍼링 주기), 1(픽처 타이밍), 130(디코딩 유닛 정보), 145(종속 RAP 표시) 또는 160(프레임 필드 정보)과 같은 payloadType을 가진 SEI 메시지를 포함하는 경우, 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛은 PREFIX_SEI_NUT와 동일한 nal_unit_type 세트를 가져야 한다. 스케일러블 네스팅 SEI 메시지가 132(디코딩된 픽처 해시)와 동일한 payloadType을 갖는 SEI 메시지를 포함하는 경우, 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛은 SUFFIX_SEI_NUT와 동일한 nal_unit_type 세트를 가져야 한다.
nesting_ols_flag는 스케일러블 네스티드 SEI 메시지가 특정 OLS의 컨텍스트에서 특정 계층에 적용되는 것을 지정하기 위해 1과 동일하게 설정될 수 있다. nesting_ols_flag는 스케일러블 네스티드 SEI 메시지가 일반적으로 특정 계층에 적용됨(예: OLS의 컨텍스트에 있는 것이 아님)을 지정하기 위해 0과 동일하게 설정될 수 있다.
비트스트림 적합성은 다음과 같은 제한이 nesting_ols_flag의 값에 적용될 것을 요구할 수 있다. 스케일러블 네스팅 SEI 메시지가 0(버퍼링 주기), 1(픽처 타이밍) 또는 130(디코딩 유닛 정보)과 같은 payloadType을 갖는 SEI 메시지를 포함하는 경우, nesting_ols_flag의 값은 1과 같아야 한다. 스케일러블 네스팅 SEI 메시지가 VclAssociatedSeiList에서의 값과 동일한 payloadType을 갖는 SEI 메시지를 포함하는 경우, nesting_ols_flag의 값은 0과 같아야 한다.
nesting_num_olss_minus1 더하기 1은 스케일러블 네스티드 SEI 메시지가 적용되는 OLS의 수를 지정한다. nesting_num_olss_minus1의 값은 0 내지 TotalNumOlss - 1(포함)의 범위에 있어야 한다. nesting_ols_idx_delta_minus1[ i ]은 nesting_ols_flag가 1과 동일한 경우에 스케일러블 네스티드 SEI 메시지가 적용되는 제i OLS의 OLS 색인을 지정하는 변수 NestingOlsIdx[ i ]를 도출하는 데 사용된다. nesting_ols_idx_delta_minus1[ i ]의 값은 0 내지 TotalNumOlss - 2(포함)의 범위에 있어야 한다. 변수 NestingOlsIdx[ i ]는 다음과 도출될 수 있다:
Figure pct00005
nesting_num_ols_layers_minus1[ i ] 더하기 1은 NestingOlsIdx[ i ]-th OLS의 컨텍스트에서 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정한다. nesting_num_ols_layers_minus1[ i ]의 값은 0 내지 NumLayersInOls[ NestingOlsIdx[ i ] ] - 1(포함)의 범위에 있어야 한다.
nesting_ols_layer_idx_delta_minus1[ i ][ j ]는 nesting_ols_flag가 1과 동일한 경우에 스케일러블 네스티드 SEI 메시지가 NestingOlsIdx[ i ]-th OLS의 컨텍스트에서 적용되는 제j 계층의 OLS 계층 색인을 지정하는 변수 NestingOlsLayerIdx[ i ][ j ]를 도출하는 데 사용된다. nesting_ols_layer_idx_delta_minus1[ i ]의 값은 0 내지 NumLayersInOls[ nestingOlsIdx[ i ] ] - 2(포함)의 범위에 있어야 한다.
변수 NestingOlsLayerIdx[ i ][ j ]는 다음과 같이 도출될 수 있다:
Figure pct00006
0 내지 nesting_num_olss_minus1(포함)의 범위에 있는 i에 대한 LayerIdInOls[ NestingOlsIdx[ i ] ][ NestingOlsLayerIdx[ i ][ 0 ] ]의 모든 값 중에서 가장 작은 값은 현재 SEI NAL 유닛(예: 스케일러블 네스팅 내포 SEI 메시지를 포함하는 SEI NAL 유닛)의 nuh_layer_id와 같아야 한다. nesting_all_layers_flag는 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 일반적으로 스케일러블 네스티드 SEI 메시지가 적용됨을 지정하기 위해 1과 동일하게 설정될 수 있다. nesting_all_layers_flag는 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 일반적으로 적용될 수도 있고 적용되지 않을 수도 있음을 지정하기 위해 0과 동일하게 설정될 수 있다.
nesting_num_layers_minus1에 1을 더한 값은 스케일러블 네스티드 SEI 메시지가 일반적으로 적용되는 계층의 수를 지정한다. nesting_num_layers_minus1의 값은 0 내지 vps_max_layers_minus1 - GeneralLayerIdx[ nuh_layer_id ](포함)의 범위에 있어야 하며, 여기서 nuh_layer_id는 현재 SEI NAL 유닛의 nuh_layer_id이다. nesting_layer_id[ i ]는 nesting_all_layers_flag가 0일 때 스케일러블 네스티드 SEI 메시지가 일반적으로 적용되는 제i 계층의 nuh_layer_id 값을 지정한다. nesting_layer_id[ i ]의 값은 nuh_layer_id보다 커야 하며, 여기서 nuh_layer_id는 현재 SEI NAL 유닛의 nuh_layer_id이다.
nesting_ols_flag가 1과 동일한 경우, 스케일러블 네스티드 SEI 메시지가 일반적으로 적용되는 계층의 수를 지정하는 변수 NestingNumLayers, 및 스케일러블 네스티드 SEI 메시지가 일반적으로 적용되는 계층의 nuh_layer_id 값의 목록을 지정하는 0 내지 NestingNumLayers - 1(포함)의 범위의 i에 대한 목록 NestingLayerId[ i ]는 다음과 같이 도출되며, 여기서 nuh_layer_id는 현재 SEI NAL 유닛의 nuh_layer_id이다:
Figure pct00007
nesting_num_seis_minus1 +1은 스케일러블 네스티드 SEI 메시지의 수를 지정한다. nesting_num_seis_minus1의 값은 0 내지 63까지의 범위에 있어야 한다. nesting_zero_bit는 0과 동일하게 설정되어야 한다.
도 8은 예시적인 비디오 코딩 기기(800)의 개략도이다. 비디오 코딩 기기(800)는 여기에 설명된 바와 같이 개시된 예/실시예를 구현하는 데 적합하다. 비디오 코딩 기기(800)는 네트워크를 통해 데이터 업스트림 및/또는 다운스트림을 통신하기 위한 송신기 및/또는 수신기를 포함하는 다운스트림 포트(820), 업스트림 포트(850), 및/또는 송수신기 유닛(Tx/Rx)(810)을 포함한다. 비디오 코딩 기기(800)는 또한 데이터를 처리하기 위한 논리 유닛 및/또는 중앙 처리 유닛(CPU)과 데이터를 저장하기 위한 메모리(832)를 포함하는 프로세서(830)를 포함한다. 비디오 코딩 기기(800)는 또한 전기, 광, 또는 모선 통신 네트워크를 통한 데이터의 통신을 위해 업스트림 포트(850) 및/또는 다운스트림 포트(820)에 결합된 전기적, 광전(optical-to-electrical, OE) 구성요소, 전광(electrical-to-optical, EO) 구성요소, 및/또는 무선 통신 구성요소를 포함할 수 있다. 비디오 코딩 기기(800)는 또한 사용자와의 데이터 통신을 위한 입력 및/또는 출력(I/O) 기기(860)를 포함할 수 있다. I/O 기기(860)는 비디오 데이터를 표시하기 위한 디스플레이, 오디오 데이터를 출력하기 위한 스피커 등과 같은 출력 기기를 포함할 수 있다. I/O 기기(860)는 또한 키보드, 마우스, 트랙볼 등과 같은 입력 기기, 및/또는 그러한 출력 장치와 상호작용하기 위한 대응하는 인터페이스를 포함할 수 있다.
프로세서(830)는 하드웨어 및 소프트웨어에 의해 구현된다. 프로세서(830)는 하나 이상의 CPU 칩, 코어(예: 멀티코어 프로세서로서), FPGA(Field-Programmable Gate Arrays), ASIC(Application Specific Integrated Circuit), 및 DSP(Digital Signal Processor)로서 구현될 수 있다. 프로세서(830)는 다운스트림 포트(820), Tx/Rx(810), 업스트림 포트(850), 및 메모리(832)와 통신한다. 프로세서(830)는 코딩 모듈(814)을 포함한다. 코딩 모듈(814)은 다중 계층 비디오 시퀀스(600) 및/또는 비트스트림(700)을 채용할 수 있는 방법(100, 900, 1000)과 같은, 여기에 설명한 개시된 실시예를 구현한다. 코딩 모듈(814)은 또한 여기에 설명한 임의의 다른 방법/메커니즘을 구현할 수 있다. 또한, 코딩 모듈(814)은 코덱 시스템(200), 인코더(300), 디코더(400), 및/또는 HRD(500)를 구현할 수 있다. 예를 들어, 코딩 모듈(814)은 HRD를 구현하기 위해 사용될 수 있다. 또한, 코딩 모듈(814)은 스케일러블 네스팅 SEI 메시지와 대응하는 계층에서의 스케일러블 네스팅 SEI 메시지 간의 상관관계의 명확하고 간결한 시그널링을 지원하기 위해 대응하는 플래그로 스케일러블 네스팅 SEI 메시지를 인코딩하는 데 채용될 수 있다. 따라서, 코딩 모듈(814)은 위에서 논의된 문제들 중 하나 이상을 해결하기 위한 메커니즘을 수행하도록 구성될 수 있다. 따라서, 코딩 모듈(814)은 비디오 코딩 기기(800)로 하여금 비디오 데이터를 코딩할 때 추가적인 기능 및/또는 코딩 효율성을 제공하게 한다. 이와 같이, 코딩 모듈(814)은 비디오 코딩 기기(800)의 기능을 개선할 뿐만 아니라 비디오 코딩 기술에 특정한 문제를 해결한다. 또한, 코딩 모듈(814)은 비디오 코딩 기기(800)를 다른 상태로 변환시킨다. 대안적으로, 코딩 모듈(814)은 메모리(832)에 저장된 명령어로서 구현될 수 있고 프로세서(830)에 의해 실행될 수 있다(예: 비일시적 매체에 저장된 컴퓨터 프로그램 제품으로서).
메모리(832)는 디스크, 테이프 드라이브, 솔리드 스테이트 드라이브, 판독 전용 메모리(read only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 플래시 메모리, TCAM(Ternary Content-Addressable Memory), 정적 랜덤 액세스 메모리(static random-access memory, SRAM) 등과 같은 하나 이상의 메모리 유형을 포함할 수 있다. 메모리(832)는 오버플로우 데이터 저장 기기로 사용될 수 있고, 그러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령어 및 데이터를 저장하기 위해 사용될 수 있다.
도 9는 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림(700)과 같은, 비트스트림으로 비디오 시퀀스를 인코딩하는 예시적인 방법(900)의 흐름도이다. 방법(900)은 방법(100)을 수행할 때 코덱 시스템(200), 인코더(300), 및/또는 비디오 코딩 기기(800)와 같은 인코더에 의해 채용될 수 있다. 또한, 방법(900)은 HRD(500)에서 동작할 수 있고 따라서 다중 계층 비디오 시퀀스(600)에 대한 적합성 테스트를 수행할 수 있다.
방법(900)은 인코더가 비디오 시퀀스를 수신하고 예를 들어 사용자 입력에 기초하여 그 비디오 시퀀스를 다중 계층 비트스트림으로 인코딩하기로 결정할 때 시작할 수 있다. 단계 901에서, 인코더는 비디오 시퀀스를 하나 이상의 계층으로 인코딩하고 계층을 다중 계층 비트스트림으로 인코딩한다. 따라서, 비트스트림은 하나 이상의 계층을 포함한다. 계층은 동일한 계층 Id 및 연관된 비 VCL NAL 유닛을 가진 VCL NAL 유닛의 세트를 포함할 수 있다. 예를 들어, 계층은 인코딩된 픽처의 비디오 데이터를 포함하는 VCL NAL 유닛의 세트 및 그러한 픽처를 코딩하는 데 사용되는 임의의 파라미터 세트를 포함할 수 있다. 하나 이상의 계층은 출력 계층일 수 있다. 출력 계층이 아닌 계층은 출력 계층(들)의 재구축을 지원하도록 인코딩되지만, 이러한 지원 계층은 디코더에서의 출력을 위한 것이 아니다. 이러한 방식으로, 인코더는 요청 시 디코더로의 송신을 위해 계층의 다양한 조합을 인코딩할 수 있다. 계층은 디코더가 네트워크 조건, 하드웨어 능력 및/또는 사용자 설정에 따라 비디오 시퀀스의 다른 표현을 얻을 수 있도록 원하는 대로 송신될 수 있다.
단계 903에서, 인코더는 하나 이상의 스케일러블 네스팅 SEI 메시지를 현재 SEI NAL 유닛의 비트스트림으로 인코딩한다. SEI 메시지는 디코딩에 사용되지 않는 데이터를 포함하는 신택스 구조이다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하도록 보장하기 위해 적합성 테스트를 지원하는 데이터를 포함할 수 있다. 다중 계층 비트스트림과 함께 사용될 때 단순화된 시그널링을 지원하기 위해, SEI 메시지는 스케일러블 네스팅 SEI 메시지로서 인코딩된다. 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연결하는 메커니즘을 제공한다. 스케일러블 네스팅 SEI 메시지는 하나 이상의 스케일러블 네스티드 SEI 메시지를 포함한다. 스케일러블 네스티드 SEI 메시지는 각각 하나 이상의 OLS 및/또는 하나 이상의 계층에 적용될 수 있다. 단순화된 시그널링을 지원하기 위해, 스케일러블 네스팅 SEI 메시지는 현재 SEI NAL 유닛의 계층 Id보다 크거나 같은 계층 Id를 갖는 모든 계층에 스케일러블 네스티드 SEI 메시지가 적용되지를 지정하는 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 전역적이며 대응하는 AU에 따라 지정되지 않기 때문에, 스케일러블 네스팅 all_layers_flag는 실제로 모든 계층에 적용된다. 이것은 현재 SEI NAL 유닛이 불완전한 AU와 연관되어 있는 경우에도 위에서 설명한 오류를 방지한다. 이와 같이, 스케일러블 네스팅 all_layers_flag는 현재 AU가 완전한 AU인지 불완전한 AU인지에 관계없이 스케일러블 네스팅 SEI 메시지가 모든 계층에 적용되도록 허용한다.
일부 예에서, 스케일러블 네스팅 all_layers_flag는 스케일러블 네스팅 SEI 메시지가 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 적용된다고 지정하는 경우에 1과 동일하게 설정된다. 일부 예에서, 스케일러블 네스티드 SEI 메시지가 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 적용될 수 있거나 적용되지 않을 수 있음을 지정하는 경우에 스케일러블 네스팅 all_layers_flag는 0과 동일하게 설정된다.
단계 905에서, 인코더에서 동작하는 HRD는 스케일러블 네스팅 SEI 메시지에 기초하여 계층에 대한 비트스트림 적합성 테스트의 세트를 수행할 수 있다. 예를 들어, HRD는 스케일러블 네스팅 SEI 메시지에서 플래그를 읽어 스케일러블 네스팅 SEI 메시지에 포함된 스케일러블 네스티드 SEI 메시지를 해석하는 방법을 결정할 수 있다. 그런 다음 HRD는 스케일러블 네스티드 SEI 메시지 및/또는 스케일러브 네스팅 SEI 메시지의 대응하는 플래그에 기초하여 계층에 대한 적합성 테스트를 수행할 수 있다.
일부 예에서, HRD는 스케일러블 네스티드 SEI 메시지와 계층 사이의 상관관계를 결정하기 위해 nestingNumLayers 변수 및 NestingLayerId[i] 변수를 채용할 수 있다. nestingNumLayers 변수는 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정한다. NestingLayerId[i] 변수는 0 내지 nestingNumLayers에서 1을 뺀 범위의 i에 대해 스케일러블 네스팅 SEI 메시지가 적용되는 계층의 nuh_layer_id 값의 목록을 지정한다. nestingNumLayers 및 NestingLayerId[i]는 비트스트림의 데이터에 기초하여 HRD에 의해 도출될 수 있다. 그런 다음 HRD는 적합성 테스트를 지원하기 위해 원하는 대로 nestingNumLayers 변수와 NestingLayerId[i] 변수를 사용할 수 있다. 일부 예에서 nestingNumLayers 및 NestingLayerId[i]는 다음과 같이 도출된다:
Figure pct00008
여기서 vps_max_layers_minus1 + 1은 VPS에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, 스케일러블 네스팅 layer_id[i]는 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정한다. 일부 예에서, scalable nesting num_layers_minus1은 0 내지 vps_max_layers_minus1- GeneralLayerIdx[nuh_layer_id](포함)의 범위에 유지되도록 제약되며, 여기서 nuh_layer_id는 현재 SEI NAL 유닛의 nuh_layer_id이다. 밑줄을 포함하는 것으로 여기에서 설명된 신택스 요소는 비트스트림에 포함될 수 있는 반면, 공백이 없는 신택스 요소는 도출될 수 있다는 점에 유의해야 한다.
단계 907에서, 인코더는 요청 시 디코더로의 통신을 위해 비트스트림을 저장할 수 있다. 인코더는 또한 원하는 대로 인코더를 향해 비트스트림을 송신할 수 있다.
도 10은 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림(700)과 같은, 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법(1000)의 흐름도이다. 방법(1000)은 방법(100)을 수행할 때 코덱 시스템(200), 디코더(400), 및/또는 비디오 코딩 기기(800)와 같은 디코더에 의해 채용될 수 있다. 또한, 방법(1000)은 HRD 500과 같은, HRD에 의한 적합성이 검사된 다중 계정 비디오 시퀀스(600)에 대해 채용될 수 있다.
방법(1000)은 예를 들어 방법(900)의 결과로서, 디코더가 다중 계층 비디오 시퀀스를 나타내는 코딩된 데이터의 비트스트림을 수신하기 시작할 때 시작할 수 있다. 단계 1001에서, 디코더는 하나 이상의 계층을 포함하는 비트스트림을 수신한다. 계층은 동일한 계층 Id를 가진 VCL NAL 유닛의 세트와 연관된 비 VCL NAL 유닛을 포함할 수 있다. 예를 들어, 계층은 인코딩된 픽처의 비디오 데이터를 포함하는 VCL NAL 유닛의 세트는 물론 그러한 픽처를 코딩하는 데 사용되는 임의의 파라미터 세트를 포함할 수 있다. 하나 이상의 계층은 출력 계층일 수 있다. 출력 계층이 아닌 계층은 출력 계층(들)의 디코딩을 지원하기 위해 디코딩되지만, 이러한 지원 계층은 출력되지 않는다.
비트스트림은 또한 하나 이상의 스케일러블 네스팅 SEI 메시지를 포함한다. SEI 메시지는 디코딩에 사용되지 않는 데이터를 포함하는 신택스 구조이다. 예를 들어, SEI 메시지는 비트스트림이 표준을 준수하도록 보장하기 위해 적합성 테스트를 지원하는 데이터를 포함할 수 있다. 다중 계층 비트스트림과 함께 사용되는 경우에 단순화된 신호를 지원하기 위해, SEI 메시지는 스케일러블 네스팅 SEI 메시지로 코딩된다. 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연관시키는 메커니즘을 제공한다. 스케일러블 네스팅 SEI 메시지는 하나 이상의 스케일러블 네스티드 SEI 메시지를 포함한다. 지정된 스케일러블 네스팅 SEI 메시지는 SEI 메시지(들)를 포함하는 비 VCL NAL 유닛인 현재 SEI NAL 유닛에 포함될 수 있다. 스케일러블 네스티드 SEI 메시지는 각각 하나 이상의 OLS 및/또는 하나 이상의 계층에 적용될 수 있다. 단순화된 시그널링을 지원하기 위해, 스케일러블 네스팅 SEI 메시지는, 현재 SEI NAL 유닛의 계층 Id보다 크거나 같은 계층 Id를 갖는 모든 계층에 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 all_layers_flag를 포함한다. 스케일러블 네스팅 all_layers_flag는 전역적이며 대응하는 AU에 따라 지정되지 않으므로, 스케일러블 네스팅 all_layers_flag는 실제로 모든 계층에 적용된다. 이것은 현재 SEI NAL 유닛이 불완전한 AU와 연관되어 있는 경우에도 위에서 설명한 오류를 방지한다. 이와 같이, 스케일러블 네스팅 all_layers_flag는 현재 AU가 완전한 AU인지 불완전한 AU인지에 관계없이 스케일러블 네스티드 SEI 메시지가 모든 계층에 적용될 수 있도록 한다.
일부 예에서, 스케일러블 네스티드 SEI 메시지가 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 적용됨을 지정하는 경우에 스케일러블 네스팅 all_layers_flag는 1과 동일하게 설정된다. 일부 예에서, 스케일러블 네스티드 SEI 메시지가 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 계층에 적용될 수 있거나 적용되지 않을 수 있음을 지정하는 경우에 스케일러블 네스팅 all_layers_flag는 0과 동일하게 설정된다.
일부 예에서, 디코더는 스케일러블 네스티드 SEI 메시지와 계층 사이의 상관관계를 결정하기 위해 nestingNumLayers 변수 및 NestingLayerId[i] 변수를 사용할 수 있다. nestingNumLayers 변수는 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정한다. NestingLayerId[i] 변수는 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 nuh_layer_id 값의 목록을 지정한다. nestingNumLayers 및 NestingLayerId[i]는 비트스트림의 데이터에 기초하여 디코더에 의해 도출될 수 있다. 그런 다음 디코더는 디코딩 및/또는 표시를 지원하기 위해 원하는 대로 nestingNumLayers 변수 및 NestingLayerId[i] 변수를 채용할 수 있다. 일부 예에서 nestingNumLayers 및 NestingLayerId[i]는 다음과 같이 도출된다:
Figure pct00009
여기서 vps_max_layers_minus1 + 1은 VPS에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, 스케일러블 네스팅 layer_id[i]는 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정한다. 일부 예에서, scalable nesting num_layers_minus1은 0 내지 vps_max_layers_minus1- GeneralLayerIdx[nuh_layer_id](포함)의 범위에 유지되도록 제약되며, 여기서 nuh_layer_id는 현재 SEI NAL 유닛의 nuh_layer_id이다. 밑줄을 포함하는 것으로 여기에서 설명된 신택스 요소는 비트스트림에 포함될 수 있는 반면, 공백이 없는 신택스 요소는 도출될 수 있다는 점에 유의해야 한다.
일 실시예에서, 비디오 디코더는 VVC 또는 일부 다른 표준에 기초하여 위에서 설명된 바와 같이 스케일러블 네스팅 SEI 메시지가 스케일러블 네스팅 all_layers_flag를 사용하기를 기대한다. 그러나 디코더가 이 조건이 참이 아니라고 결정하면, 디코더는 오류를 검출하고, 오류를 시그널링하고, 수정된 비트스트림(또는 그 일부)을 재전송하도록 요청하거나, 적합한 비트스트림(conforming bitstream)이 수신되도록 보장하기 위해 몇 가지 다른 수정 조치를 취한다.
단계 1003에서, 디코더는 하나 이상의 계층로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성할 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지의 존재는 비트스트림이 인코더에서 HRD에 의해 검사되었고 따라서 표준을 준수함을 지시할 수 있다. 따라서, 스케일러블 네스팅 SEI 메시지의 존재는 비트스트림이 디코딩될 수 있음을 지시한다. 단계 1005에서, 디코더는 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 디코딩된 픽처를 포워딩할 수 있다. 예를 들어, 디코딩된 픽처 및/또는 비디오 시퀀스는 전자 기기(예: 스마트폰, 태블릿, 랩톱, 개인용 컴퓨터 등)의 디스플레이 또는 스크린에서 사용자에게 표시될 수 있다.
도 11은 계층에 적용되는 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림을 사용하여 비디오 시퀀스를 코딩하기 위한 예시적인 시스템(1100)의 개략도이다. 시스템(1100)은 코덱 시스템(200), 인코더(300), 디코더(400), 및/또는 비디오 코딩 기기치(800)와 같은, 인코더 및 디코더에 의해 구현될 수 있다. 또한, 시스템(1100)은 다중 계층 비디오 시퀀스(600) 및/또는 비트스트림(700)에 대한 적합성 테스트를 수하기 위해 HRD(500)를 채용할 수 있다. 또한, 시스템(1100)은 방법(100, 900, 및/또는 1000)을 구현하는 경우에 채용될 수 있다.
시스템(1100)은 비디오 인코더(1102)를 포함한다. 비디오 인코더(1102)는 하나 이상의 계층을 포함하는 비트스트림을 인코딩하기 위한 인코딩 모듈(1103)을 포함한다. 인코딩 모듈(1103)은 또한 현재 SEI NAL 유닛에서 스케일러블 네스팅 SEI 메시지를 비트스트림으로 인코딩하기 위한 것이며, 여기서 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지, 및 현재 SEI NAL 유닛의 계층 Id보다 크거나 동일한 계층 IdFMF 갖는 모든 계층에 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 all_layers_flag를 포함한다. 비디오 인코더(1102)는 디코더로의 통신을 위해 비트스트림을 저장하기 위한 저장 모듈(1106)을 더 포함한다. 비디오 인코더(1102)는 비디오 디코더(1110)를 향해 비트스트림을 송신하기 위한 송신 모듈(1107)을 더 포함한다. 비디오 인코더(1102)는 추가로, 방법(900)의 단계 중 임의의 단계를 수행하도록 구성될 수 있다.
시스템(1100)은 또한 비디오 디코더(1110)를 포함한다. 비디오 디코더(1110)는 하나 이상의 계층을 포함하는 비트스트림, 및 현재 SEI NAL 유닛의 스케일러블 네스팅 SEI 메시지를 수신하기 위한 수신 모듈(1111)을 포함하고, 여기서 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지, 및 현재 SEI NAL 유닛의 계층 Id보다 크거나 같은 계층 Id를 갖는 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케이러블 네스팅 all_layers_flag를 포함한다. 비디오 디코더(1110)는 하나 이상의 계층으로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성하기 위한 디코딩 모듈(1113)을 더 포함한다. 비디오 디코더(1110)는 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 디코딩된 픽처를 포워딩하기 위한 포워딩 모듈(1115)을 더 포함한다. 비디오 디코더(1110)는 추가로, 방법(1000)의 단계들 중 임의의 단계를 수행하도록 구성될 수 있다.
제1 구성요소와 제2 구성요소 사이의 라인(line), 트레이스(trace), 또는 다른 매체를 제외하고는 개재하는 구성요소가 없을 때 제1 구성요소는 제2 구성요소에 직접 결합된다. 제1 구성요소와 제2 구성요소 사이에 라인, 트레이스, 또는 다른 매체를 제외한 개재하는 구성요소가 있을 때 제1 구성요소는 제2 구성요소에 간접적으로 결합된다. "결합된다(coupled)"라는 용어와 그 변형에는 직접 결합된 것과 간접적으로 결합된 것이 모두 포함된다. "약(about)"이라는 용어의 사용은 달리 명시되지 않는 한 후속 숫자의 ±10%를 포함하는 범위를 의미한다.
또한, 여기에 설명된 예시적인 방법의 단계는 반드시 설명된 순서대로 수행될 필요가 없다는 것을 이해해야 하며, 이러한 방법의 단계 순서는 단지 예시적인 것으로 이해되어야 한다. 마찬가지로, 이러한 방법에는 추가적인 단계가 포함될 수 있으며, 본 개시의 다양한 실시예에 따른 방법에서 특정 단계는 생략되거나 결합될 수 있다.
몇몇 실시예가 본 개시에서 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않으면서 많은 다른 구체적인 형태로 구현될 수 있음을 이해할 수 있을 것이다. 본 예는 제한적인 것이 아닌 예시적인 것으로 간주되어야 하며, 그 의도는 여기에 주어진 세부사항으로 제한되지 않는다. 예를 들어, 다양한 요소 또는 구성요소는 다른 시스템에 결합 또는 통합되거나 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시예에서 개별적 또는 분리된 것으로 설명되고 예시된 기술, 시스템, 서브시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 구성요소, 기술, 또는 방법과 결합되거나 통합될 수 있다. 변경, 대체 및 개조의 다른 예들이 당업자에 의해 확인 가능하며 여기에 개시된 사상 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (21)

  1. 디코더에서 구현되는 방법으로서,
    상기 디코더의 수신기가, 하나 이상의 계층 및 현재 보충 강화 정보(supplemental enhancement information, SEI) 네트워크 추상화 계층(network abstraction layer, NAL) 유닛에서의 스케일러블 네스팅(scalable nesting) SEI 메시지를 포함하는 비트스트림을 수신하는 단계 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드(scalable-nested) SEI 메시지, 및 상기 현재 SEI NAL 유닛의 계층 식별자(identifier, Id) 이상인 계층 Id를 갖는 모든 계층에 상기 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -;
    상기 디코더의 프로세서가, 상기 하나 이상의 계층으로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성하는 단계; 및
    상기 프로세서가, 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 디코딩된 픽처를 포워딩하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 스케일러블 네스팅 all_layers_flag는, 상기 스케일러블 네스팅 SEI 메시지가 상기 현재 SEI NAL 유닛의 nuh_layer_id 이상인 NAL 유닛 헤더 계층 Id(nuh_layer_id)를 갖는 모든 계층에 적용됨을 지정되는 경우에 1과 동일한, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 스케일러블 네스팅 all_layers_flag는, 상기 스케일러블 네스티드 SEI 메시지가 상기 현재의 nuh_layer_id 이상인 NAL 유닛 헤더 계층 Id(nuh_layer_id)를 갖는 모든 계층에 적용될 수 있거나 적용되지 않을 수 있음을 지정하는 경우에 0과 동일한, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 프로세서가, 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하는 네스팅 계층의 수(nestingNumLayers) 변수를 도출하는 단계를 더 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 프로세서가, 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 상기 스케일러블 네스티드 SEI 메시지가 적용되는 상기 계층의 nuh_layer_id 값의 목록을 지정하는 네스팅 계층 Id의 목록(NestingLayerId[i])을 도출하는 단계를 더 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 nestingNumLayers 및 상기 NestingLayerId[i]는 다음과 같이 도출되며:
    Figure pct00010

    여기서 vps_max_layers_minus1 + 1은 비디오 파라미터 세트(video parameter set, VPS)에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, scalable nesting layer_id[i]는 상기 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연관시키는 메커니즘을 제공하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 코딩된 픽처는 상기 스케일러블 네스티드 SEI 메시지에 기초하여 디코딩되는, 방법.
  9. 인코더에서 구현되는 방법으로서,
    상기 인코더의 프로세서가, 하나 이상의 계층을 포함하는 비트스트림을 인코딩하는 단계;
    상기 프로세서가, 현재 보충 강화 정보(SEI) 네트워크 추상화 계층(NAL) 유닛에서의 스케일러블 네스팅 SEI 메시지를 상기 비트스트림으로 인코딩하는 단계 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지 및 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 계층 식별자(Id) 이상인 계층 Id를 갖는 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -;
    상기 프로세서가, 상기 스케일러블 네스티드 SEI 메시지에 기초하여 상기 계층에 대해 비트스트림 적합성 테스트의 세트를 수행하는 단계;
    상기 프로세서에 결합된 메모리가, 디코더로의 통신을 위해 상기 비트스트림을 저장하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서,
    상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 NAL 유닛 헤더 계층 Id(nuh_layer_id) 이상인 nuh_layer_id를 갖는 모든 계층에 적용됨을 지정하는 경우에 상기 스케일러블 네스팅 all_layers_flag를 1과 동일하게 설정하는 단계를 더 포함하는 방법.
  11. 제9항 또는 제10항에 있어서,
    상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 nuh_layer_id 이상인 nuh_layer_id를 갖는 모든 계층에 적용될 수 있거나 적용될 수 없음을 지정하는 경우에 상기 스케일러블 네스팅 all_layers_flag를 0과 동일하게 설정하는 단계를 더 포함하는 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 비트스트림 적합성 테스트의 세트를 수행하는 단계는, 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하는 네스팅 계층의 수(nestingNumLayers) 변수를 도출하는 단계를 더 포함하는, 방법.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서,
    상기 비트스트림 적합성 테스트의 세트를 수행하는 단계는, 0 내지 nestingNumLayers 빼기 1(포함) 범위의 i에 대해 상기 스케일러블 네스티드 SEI 메시지가 적용되는 상기 계층의 nuh_layer_id 값의 목록을 지정하는 네스팅 계층 Id의 목록(NestingLayerId[i])을 도출하는 단계를 더 포함하는, 방법.
  14. 제9항 내지 제13항 중 어느 한 항에 있어서,
    상기 nestingNumLayers 및 상기 NestingLayerId[i]는 다음과 같이 도출되며:
    Figure pct00011

    여기서 vps_max_layers_minus1 + 1은 비디오 파라미터 세트(VPS)에 의해 지정된 계층 수를 지정하고, GeneralLayerIdx는 vps_layer_id[ i ]와 동일한 nuh_layer_id를 가진 계층의 계층 색인을 지정하는 변수이고, vps_layer_id[i]는 제i 계층의 nuh_layer_id 값을 지정하고, scalable nesting num_layers_minus1 + 1은 상기 스케일러블 네스티드 SEI 메시지가 적용되는 계층의 수를 지정하고, scalable nesting layer_id[i]는 상기 스케일러블 네스티드 SEI 메시지가 적용되는 제i 계층의 nuh_layer_id 값을 지정하는, 방법.
  15. 제9항 내지 제14항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 계층과 연관시키는 메커니즘을 제공하는, 방법.
  16. 비디오 코딩 기기로서,
    프로세서, 상기 프로세서에 결합된 수신기, 상기 프로세서에 결합된 메모리, 및 상기 프로세서에 결합된 송신기를 포함하고, 상기 프로세서, 상기 수신기, 상기 메모리, 및 상기 송신기는 제1항 내지 제15항 중 어느 한 항의 방법을 수행하도록 구성되는,
    비디오 코딩 기기.
  17. 비디오 코딩 기기에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는, 컴퓨터로 판독 가능한 비일시적인 매체로서,
    상기 컴퓨터 프로그램 제품은, 프로세서에 의해 실행될 때 상기 비디오 코딩 기기로 하여금 제1항 내지 제15항 중 어느 한 항의 방법을 수행하도록 하는, 상기 컴퓨터로 판독 가능한 비일시적인 매체에 저장된, 컴퓨터로 실행 가능한 명령어를 포함하는,
    컴퓨터로 판독 가능한 비일시적인 매체.
  18. 디코더로서,
    하나 이상의 계층 및 현재 보충 강화 정보(SEI) 네트워크 추상화 계층(NAL) 유닛에서의 스케일러블 네스팅 SEI 메시지를 포함하는 비트스트림을 수신하기 위한 수신 수단 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지, 및 상기 현재 SEI NAL 유닛의 계층 식별자(Id) 이상인 계층 Id를 갖는 모든 계층에 상기 스케일러블 네스티드 SEI 메시지가 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -;
    상기 하나 이상의 계층으로부터의 코딩된 픽처를 디코딩하여 디코딩된 픽처를 생성하기 위한 디코딩 수단; 및
    디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 디코딩된 픽처를 포워딩하기 위한 포워딩 수단
    을 포함하는 디코더.
  19. 제18항에 있어서,
    상기 디코더는 추가로 제1항 내지 제8항 중 어느 한 항의 방법을 수행하도록 구성되는, 디코더.
  20. 인코더로서,
    하나 이상의 계층을 포함하는 비트스트림을 인코딩하고; 현재 보충 강화 정보(SEI) 네트워크 추상화 계층(NAL) 유닛에서의 스케일러블 네스팅 SEI 메시지를 상기 비트스트림으로 인코딩하기 위한 인코딩 수단 - 상기 스케일러블 네스팅 SEI 메시지에는 스케일러블 네스티드 SEI 메시지 및 상기 스케일러블 네스티드 SEI 메시지가 상기 현재 SEI NAL 유닛의 계층 식별자(Id) 이상인 계층 Id를 갖는 모든 계층에 적용되는지를 지정하는 스케일러블 네스팅 모든 계층 플래그(all_layers_flag)가 들어 있음 -;
    상기 스케일러블 네스티드 SEI 메시지에 기초하여 상기 계층에 대해 비트스트림 적합성 테스트의 세트를 수행하기 위한 가상 참조 디코더(hypothetical reference decoder, HRD) 수단; 및
    디코더로의 통신을 위해 상기 비트스트림을 저장하기 위한 저장 수단
    을 포함하는 인코더.
  21. 제20항에 있어서,
    상기 인코더는 추가로, 제9항 내지 제15항 중 어느 한 항의 방법을 수행하도록 구성되는, 인코더.
KR1020227013766A 2019-09-24 2020-09-21 모든 계층에 대한 스케일러블 네스팅 sei 메시지 KR20220063278A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962905144P 2019-09-24 2019-09-24
US62/905,144 2019-09-24
PCT/US2020/051859 WO2021022263A1 (en) 2019-09-24 2020-09-21 Scalable nesting sei messages for all layers

Publications (1)

Publication Number Publication Date
KR20220063278A true KR20220063278A (ko) 2022-05-17

Family

ID=74229295

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227013657A KR20220063275A (ko) 2019-09-24 2020-09-21 지정된 계층에 대한 스케일러블 네스팅 sei 메시지
KR1020227013766A KR20220063278A (ko) 2019-09-24 2020-09-21 모든 계층에 대한 스케일러블 네스팅 sei 메시지

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227013657A KR20220063275A (ko) 2019-09-24 2020-09-21 지정된 계층에 대한 스케일러블 네스팅 sei 메시지

Country Status (8)

Country Link
US (2) US20220217391A1 (ko)
EP (2) EP4022888A4 (ko)
JP (4) JP7392124B2 (ko)
KR (2) KR20220063275A (ko)
CN (10) CN116980610A (ko)
AU (2) AU2020319901A1 (ko)
BR (2) BR112022005372A2 (ko)
WO (2) WO2021022263A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023526661A (ja) 2020-05-22 2023-06-22 バイトダンス インコーポレイテッド 適合出力サブビットストリームの生成技術
KR20230020980A (ko) * 2020-06-09 2023-02-13 바이트댄스 아이엔씨 다중-계층 비디오 비트스트림의 서브-비트스트림 추출

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101255226B1 (ko) * 2005-09-26 2013-04-16 한국과학기술원 스케일러블 비디오 코딩에서 다중 roi 설정, 복원을위한 장치 및 방법
US8699583B2 (en) * 2006-07-11 2014-04-15 Nokia Corporation Scalable video coding and decoding
US20100142613A1 (en) * 2007-04-18 2010-06-10 Lihua Zhu Method for encoding video data in a scalable manner
WO2009001313A2 (en) * 2007-06-26 2008-12-31 Nokia Corporation System and method for indicating temporal layer switching points
CN103416003B (zh) * 2011-01-14 2015-05-27 维德约股份有限公司 改进的nal单元头部
CA2881141C (en) * 2012-08-10 2017-09-19 Lg Electronics Inc. Method and apparatus for transceiving image component for 3d image
US9154785B2 (en) 2012-10-08 2015-10-06 Qualcomm Incorporated Sub-bitstream applicability to nested SEI messages in video coding
US9521393B2 (en) * 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
SG10201913551WA (en) * 2013-04-07 2020-03-30 Dolby Int Ab Signaling change in output layer sets
GB2516424A (en) * 2013-07-15 2015-01-28 Nokia Corp A method, an apparatus and a computer program product for video coding and decoding
EP3092806A4 (en) 2014-01-07 2017-08-23 Nokia Technologies Oy Method and apparatus for video coding and decoding
US10645404B2 (en) * 2014-03-24 2020-05-05 Qualcomm Incorporated Generic use of HEVC SEI messages for multi-layer codecs
US10136152B2 (en) * 2014-03-24 2018-11-20 Qualcomm Incorporated Use of specific HEVC SEI messages for multi-layer video codecs
US10432951B2 (en) * 2014-06-24 2019-10-01 Qualcomm Incorporated Conformance and inoperability improvements in multi-layer video coding
US9807419B2 (en) * 2014-06-25 2017-10-31 Qualcomm Incorporated Recovery point SEI message in multi-layer video codecs
EP4020983A1 (en) * 2014-12-31 2022-06-29 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
US9979639B2 (en) * 2015-07-28 2018-05-22 Futurewei Technologies, Inc. Single network interface for multiple interface virtual network functions

Also Published As

Publication number Publication date
JP2024026142A (ja) 2024-02-28
CN117221559A (zh) 2023-12-12
CN116980610A (zh) 2023-10-31
CN116866598A (zh) 2023-10-10
EP4022889A1 (en) 2022-07-06
JP2022551413A (ja) 2022-12-09
KR20220063275A (ko) 2022-05-17
CN114424526B (zh) 2023-06-27
CN114424527B (zh) 2023-07-11
BR112022005372A2 (pt) 2022-06-14
WO2021022262A1 (en) 2021-02-04
EP4022888A1 (en) 2022-07-06
US20220217391A1 (en) 2022-07-07
CN116939219A (zh) 2023-10-24
EP4022888A4 (en) 2022-10-12
CN114424527A (zh) 2022-04-29
JP7392124B2 (ja) 2023-12-05
JP7425185B2 (ja) 2024-01-30
CN116781914A (zh) 2023-09-19
CN116996686A (zh) 2023-11-03
BR112022005377A2 (pt) 2022-06-21
AU2020320295A1 (en) 2022-04-21
JP2023500429A (ja) 2023-01-06
WO2021022263A1 (en) 2021-02-04
CN116962711A (zh) 2023-10-27
CN114424526A (zh) 2022-04-29
AU2020319901A1 (en) 2022-04-21
EP4022889A4 (en) 2022-10-12
CN116939221A (zh) 2023-10-24
JP2024045249A (ja) 2024-04-02
US20220217412A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
JP7440197B2 (ja) レイヤベースの適合性試験のためのhrdパラメータ
KR20220070325A (ko) 서브 비트스트림 추출의 sps 오류 방지
JP2022548404A (ja) 解像度変更のためのデコードされたピクチャバッファ動作
KR20220003618A (ko) 비디오 코딩에서 복구 포인트 시그널링
JP7419507B2 (ja) Olsのためのスケーラブルネスティングseiメッセージ
US20220217391A1 (en) Scalable Nesting SEI Messages For Specified Layers

Legal Events

Date Code Title Description
A201 Request for examination