KR20220065066A - 스케일러블 네스팅 sei 메시지 관리 - Google Patents

스케일러블 네스팅 sei 메시지 관리 Download PDF

Info

Publication number
KR20220065066A
KR20220065066A KR1020227013760A KR20227013760A KR20220065066A KR 20220065066 A KR20220065066 A KR 20220065066A KR 1020227013760 A KR1020227013760 A KR 1020227013760A KR 20227013760 A KR20227013760 A KR 20227013760A KR 20220065066 A KR20220065066 A KR 20220065066A
Authority
KR
South Korea
Prior art keywords
ols
layer
bitstream
sei message
scalable
Prior art date
Application number
KR1020227013760A
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 KR20220065066A publication Critical patent/KR20220065066A/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

비디오 코딩 메커니즘이 개시된다. 이 메커니즘은 하나 이상의 출력 레이어 세트(OLS)를 포함하는 비트스트림을 인코딩하는 것을 포함한다. HRD(Hypothetical Reference Decoder)에 의해 서브-비트스트림 추출 프로세스가 수행되어 OLS로부터 타깃 OLS를 추출한다. 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않는 경우 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL(network abstraction layer) 유닛이 비트스트림에서 제거된다. 타깃 OLS에서 비트스트림 적합성 테스트 세트가 수행된다. 비트스트림은 디코더로의 통신을 위해 저장된다.

Description

스케일러블 네스팅 SEI 메시지 관리
관련 출원에 대한 상호 참조
본 특허 출원은 Ye-Kui Wang이 2019년 9월 24일에 제출하고 "멀티 레이어 비디오 비트스트림용 가상 참조 디코더(HRD)"라는 제목의 미국 가특허 출원 번호 62/905,244의 이익을 주장하며, 이는 여기에 참조로 포함된다.
본 개시는 일반적으로 비디오 코딩과 관련되고, 특히 멀티 레이어 비트스트림의 효율적인 인코딩 및/또는 적합성 테스트를 지원하기 위한 가상 참조 디코더(HRD) 파라미터 변경과 관련된다.
비교적 짧은 비디오라도 묘사하는 데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 데이터가 스트리밍되거나 제한된 대역폭 용량으로 통신 네트워크를 통해 통신될 때 어려움을 초래할 수 있다. 따라서 비디오 데이터는 일반적으로 현대의 통신 네트워크를 통해 통신되기 전에 압축된다. 메모리 리소스가 제한될 수 있기 때문에 비디오가 저장 장치에 저장될 때 비디오의 크기도 문제가 될 수 있다. 비디오 압축 장치는 송신 또는 저장 전에 비디오 데이터를 코딩하기 위해 소스에서 소프트웨어 및/또는 하드웨어를 사용하여 디지털 비디오 이미지를 나타내는 데 필요한 데이터의 양을 줄이는 경우가 많다. 그 다음, 압축된 데이터가 비디오 데이터를 디코딩하는 비디오 압축 해제 장치에 의해 목적지에서 수신된다. 제한된 네트워크 리소스와 더 높은 비디오 품질에 대한 계속 증가하는 요구로 인해 이미지 품질을 거의 또는 전혀 희생하지 않으면서 압축률을 개선하는 개선된 압축 및 압축 해제 기술이 바람직하다.
일 실시예에서, 본 개시는 디코더에 의해 구현되는 방법을 포함하고, 상기 방법은: 디코더의 수신기에 의해, 타깃 출력 레이어 세트(OLS, output layer set)를 포함하는 비트스트림을 수신하는 단계 - 스케일러블 네스팅(scalable nesting) SEI(supplemental enhancement information) 메시지 내의 어떠한 스케일러블 네스티드(scalable nested) SEI 메시지도 타깃 OLS를 참조하지 않고 또 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 서브-비트스트림 추출 프로세스의 일부로서 상기 스케일러블 네스팅 SEI 메시지를 포함하는 상기 SEI NAL(network abstraction layer) 유닛이 상기 비트스트림으로부터 제거되어 있음 -; 및 상기 프로세서에 의해, 상기 타깃 OLS로부터의 픽처를 디코딩하는 단계를 포함한다.
비디오 코딩 시스템은 비트스트림이 디코더에 의해 디코딩될 수 있는지 확인하기 위해 다양한 적합성 테스트를 사용한다. 예를 들어, 적합성 검사는 적합성을 위해 전체 비트스트림을 테스트한 다음, 적합성을 위해 비트스트림의 각 레이어를 테스트하고, 최종적으로 적합성을 위해 잠재적인 디코딩 가능한 출력을 검사하는 것을 포함할 수 있다. 적합성 검사를 구현하기 위해 해당 파라미터가 비트스트림에 포함된다. HRD(가상 참조 디코더)는 파라미터를 읽고 테스트를 수행할 수 있다. 비디오에는 많은 레이어와 다양한 OLS가 포함될 수 있다. 요청에 따라, 인코더는 선택된 OLS의 하나 이상의 레이어를 전송한다. 예를 들어, 인코더는 현재 네트워크 대역폭에 의해 지원될 수 있는 OLS로부터 최상의 레이어(들)을 전송할 수 있다. 문제는 OLS에 포함된 레이어와 관련이 있다. 각 OLS는 디코더에 표시되도록 구성된 하나 이상의 출력 레이어를 포함한다. 인코더의 HRD는 각 OLS가 표준을 준수하는지 검사할 수 있다. 표준을 준수하는 OLS는 항상 표준을 준수하는 디코더에서 디코딩되고 표시될 수 있다. HRD 프로세스는 부분적으로 SEI 메시지에 의해 관리될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지를 포함할 수 있다. 각각의 스케이러블 네스티드 SEI 메시지는 해당 레이어와 관련된 데이터를 포함할 수 있다. 적합성 검사를 수행할 때 HRD는 타깃 OLS에 대해 비트스트림 추출 프로세스를 수행할 수 있다. OLS의 레이어와 관련이 없는 데이터는 일반적으로 각 OLS를 개별적으로(예: 전송 전) 검사할 수 있도록 적합성 테스트 전에 제거된다. 일부 비디오 코딩 시스템은 서브-비트스트림 추출 프로세스 동안 스케일러블 네스팅 SEI 메시지를 제거하지 않는데, 이러한 메시지가 멀티 레이어와과 관련되기 때문이다. 이는, 스케일러블 네스팅 SEI 메시지가 타깃 OLS(추출되는 OLS)의 레이어와 관련이 없는 경우에도 서브-비트스트림 추출 후 비트스트림에 스케일러블 네스팅 SEI 메시지가 남아 있는 결과를 가져올 수 있다. 이것은 추가 기능을 제공하지 않고 최종 비트스트림의 크기를 증가시킬 수 있다. 본 예는 멀티 레이어비트스트림의 크기를 줄이는 메커니즘을 포함한다. 서브-비트스트림 추출 동안 스케일러블 네스팅 SEI 메시지를 비트스트림에서 제거하는 것으로 고려할 수 있다. 스케일러블 네스팅 SEI 메시지가 하나 이상의 OLS와 관련된 경우, 스케일러블 네스팅 SEI 메시지에서 스케일러블 네스팅 SEI 메시지가 검사된다. 스케일러블 네스티드 SEI 메시지가 타깃 OLS의 레이어와 관련이 없는 경우 전체 스케일러블 네스팅 SEI 메시지가 비트스트림에서 제거될 수 있다. 이것은 디코더로 보내질 비트스트림의 크기를 줄이는 결과를 가져온다. 따라서, 본 예는 코딩 효율을 증가시키고 인코더 및 디코더 모두에서 프로세서, 메모리, 및/또는 네트워크 리소스 사용을 감소시킨다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 서브-비트스트림 추출 프로세스는 인코더 상의 가상 참조 디코더(HRD)에 의해 수행된다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 특정 OLS에 적용된다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 스케일러블 네스팅 SEI 메시지가 0 이상 '스케일러블 네스팅 OLS 수 마이너스 1(scalable nesting num_olss_minus1)' 이하의 범위에서 어떠한 index(i) 값도 포함하지 않는 경우, 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않으며, 이로써 i번째 네스팅 OLS 인덱스(NestingOlsIdx[ i ])가 상기 타깃 OLS와 연관된 타깃 OLS 인덱스(targetOlsIdx)와 동일하다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 스케일러블 네스팅 num_olss_minus1은 상기 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 수를 지정하고, 상기 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 OLS 총 수 마이너스 1(TotalNumOlss-1) 이하의 범위로 제한된다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 targetOlsIdx는 타깃 OLS의 OLS 인덱스를 식별한다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 NestingOlsIdx[ i ]는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 스케일러블 네스팅 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정한다.
일 실시예에서, 본 개시는 인코더에 의해 구현되는 방법을 포함하고, 상기 방법은, 상기 인코더의 프로세서에 의해, 하나 이상의 출력 레이어 세트(OLS)를 포함하는 비트스트림을 인코딩하는 단계; 상기 프로세서에서 동작하는 HRD(Hypothetical Reference Decoder)에 의해, 상기 OLS로부터 타깃 OLS를 추출하기 위한 서브-비트스트림 추출 프로세스를 수행하는 단계; 상기 프로세서에서 동작하는 상기 HRD에 의해, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고, 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용되는 때, 상기 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL(network abstraction layer) 유닛을 상기 비트스트림으로부터 제거하는 단계; 및 상기 프로세서에서 동작하는 HRD에 의해, 상기 타깃 OLS에 대해 비트스트림 적합성 테스트 세트를 수행하는 단계를 포함한다.
비디오 코딩 시스템은 비트스트림이 디코더에 의해 디코딩될 수 있는지 확인하기 위해 다양한 적합성 테스트를 사용한다. 예를 들어, 적합성 검사는 적합성을 위해 전체 비트스트림을 테스트한 다음, 적합성을 위해 비트스트림의 각 레이어를 테스트하고, 최종적으로 적합성을 위해 잠재적인 디코딩 가능한 출력을 검사하는 것을 포함할 수 있다. 적합성 검사를 구현하기 위해 해당 파라미터가 비트스트림에 포함된다. HRD(가상 참조 디코더)는 파라미터를 읽고 테스트를 수행할 수 있다. 비디오에는 많은 레이어와 다양한 OLS가 포함될 수 있다. 요청 시 인코더는 선택된 OLS의 하나 이상의 레이어를 전송한다. 예를 들어, 인코더는 현재 네트워크 대역폭에 의해 지원될 수 있는 OLS로부터 최상의 레이어(들)을 전송할 수 있다. 문제는 OLS에 포함된 레이어와 관련이 있다. 각 OLS는 디코더에 표시되도록 구성된 하나 이상의 출력 레이어를 포함한다. 인코더의 HRD는 각 OLS가 표준을 준수하는지 확인할 수 있다. 표준을 준수하는 OLS는 항상 표준을 준수하는 디코더에서 디코딩되고 표시될 수 있다.
HRD 프로세스는 부분적으로 SEI 메시지에 의해 관리될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지를 포함할 수 있다. 각각의 스케이러블 네스티드 SEI 메시지는 해당 레이어와 관련된 데이터를 포함할 수 있다. 적합성 검사를 수행할 때 HRD는 타깃 OLS에 대해 비트스트림 추출 프로세스를 수행할 수 있다. OLS의 레이어와 관련이 없는 데이터는 일반적으로 각 OLS를 개별적으로(예: 전송 전) 검사할 수 있도록 적합성 테스트 전에 제거된다. 일부 비디오 코딩 시스템은 서브-비트스트림 추출 프로세스 동안 스케일러블 네스팅 SEI 메시지를 제거하지 않는데, 이러한 메시지가 멀티 레이어와과 관련되기 때문이다. 이는, 스케일러블 네스팅 SEI 메시지가 타깃 OLS(추출되는 OLS)의 레이어와 관련이 없는 경우에도 서브-비트스트림 추출 후 비트스트림에 스케일러블 네스팅 SEI 메시지가 남아 있는 결과를 가져올 수 있다. 이것은 추가 기능을 제공하지 않고 최종 비트스트림의 크기를 증가시킬 수 있다. 본 예는 멀티 레이어비트스트림의 크기를 줄이는 메커니즘을 포함한다. 서브-비트스트림 추출 동안 스케일러블 네스팅 SEI 메시지를 비트스트림에서 제거하는 것으로 고려할 수 있다. 스케일러블 네스팅 SEI 메시지가 하나 이상의 OLS와 관련된 경우, 스케일러블 네스팅 SEI 메시지에서 스케일러블 네스팅 SEI 메시지가 검사된다. 스케일러블 네스티드 SEI 메시지가 타깃 OLS의 레이어와 관련이 없는 경우 전체 스케일러블 네스팅 SEI 메시지가 비트스트림에서 제거될 수 있다. 이것은 디코더로 보내질 비트스트림의 크기를 줄이는 결과를 가져온다. 따라서, 본 예는 코딩 효율을 증가시키고 인코더 및 디코더 모두에서 프로세서, 메모리, 및/또는 네트워크 리소스 사용을 감소시킨다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 특정 OLS에 적용된다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 스케일러블 네스팅 SEI 메시지가 0 이상 스케일러블 네스팅 num_olss_minus1 이하의 범위에서 어떠한 index(i) 값도 포함하지 않는 경우, 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않으며, 이로써 i번째 네스팅 OLS 인덱스(NestingOlsIdx[ i ])가 상기 타깃 OLS와 연관된 타깃 OLS 인덱스(targetOlsIdx)와 동일하다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 스케일러블 네스팅 num_olss_minus1은 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 수를 지정한다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 TotalNumOlss-1 이하의 범위로 제한된다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 targetOlsIdx는 타깃 OLS의 OLS 인덱스를 식별한다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 NestingOlsIdx[ i ]는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 스케일러블 네스팅 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정한다.
일 실시예에서, 본 개시는 프로세서, 프로세서에 결합된 수신기, 프로세서에 결합된 메모리, 및 프로세서에 결합된 송신기를 포함하는 비디오 코딩 장치를 포함하고, 여기서 프로세서, 수신기, 메모리, 및 송신기는 전술한 양태 중 하나의 방법을 수행한다.
일 실시예에서, 본 개시는 비디오 코딩 장치에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는 비일시적 컴퓨터 판독가능 매체를 포함하고, 컴퓨터 프로그램 제품은 비일시적 컴퓨터 판독가능 매체에 저장된 컴퓨터 실행가능 명령을 포함하며, 이 컴퓨터 실행가능 명령은 프로세서에 의해 실행된 때 비디오 코딩 장치로 하여금 전술한 양태 중 임의의 양태의 방법을 수행하게 한다.
일 실시예에서, 본 개시는 타깃 출력 레이어 세트(OLS)를 포함하는 비트스트림을 수신하기 위한 수신 수단 - 스케일러블 네스팅(scalable nesting) SEI(supplemental enhancement information) 메시지 내의 어떠한 스케일러블 네스티드(scalable nested) SEI 메시지도 타깃 OLS를 참조하지 않고 또 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 서브-비트스트림 추출 프로세스의 일부로서 상기 스케일러블 네스팅 SEI 메시지를 포함하는 상기 SEI NAL(network abstraction layer) 유닛이 상기 비트스트림으로부터 제거되어 있음 -; 상기 타깃 OLS로부터 픽처를 디코딩하기 위한 디코딩 수단; 및 디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 상기 픽처를 전달하기 위한 전달 수단을 포함한다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 디코더는 전술한 양태 중 임의의 양태의 방법을 수행하도록 추가로 구성된다.
일 실시예에서, 본 개시는 하나 이상의 OLS를 포함하는 비트스트림을 인코딩하기 위한 인코딩 수단; HRD 수단: OLS로부터 타깃 OLS를 추출하기 위해 서브-비트스트림 추출 프로세스를 수행하는 단계; 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스팅 SEI 메시지가 타깃 OLS를 참조하지 않고 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛을 비트스트림으로부터 제거하는 단계; 및 타깃 OLS에 대해 비트스트림 적합성 테스트 세트를 수행하는 단계; 및 디코더로의 통신을 위한 비트스트림을 저장하기 위한 저장 수단을 포함한다.
선택적으로, 선행 양태들 중 임의의 양태에서, 이 양태의 다른 구현이 제공되며, 여기서 인코더는 선행 양상들 중 임의의 것의 방법을 수행하도록 추가로 구성된다.
명료함을 위해, 전술한 실시예 중 임의의 하나는 본 개시의 범위 내에서 새로운 실시예를 생성하기 위해 임의의 하나 이상의 다른 전술한 실시예와 조합될 수 있다.
이들 및 다른 특징은 첨부된 도면 및 청구범위와 관련하여 취해진 다음의 상세한 설명으로부터 더 명확하게 이해될 것이다.
본 개시의 보다 완전한 이해를 위해, 유사한 참조 번호가 유사한 부분을 나타내는 첨부 도면 및 상세한 설명과 관련하여 취해진 다음의 간략한 설명을 이제 참조한다.
도 1은 비디오 신호를 코딩하는 예시적인 방법의 흐름도이다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템의 개략도이다.
도 3은 예시적인 비디오 인코더를 설명하는 개략도다.
도 4는 예시적인 비디오 디코더를 설명하는 개략도다.
도 5는 예시적인 가상 참조 디코더(HRD)를 설명하는 개략도다.
도 6은 레이어 간 예측을 위해 구성된 예시적인 멀티 레이어 비디오 시퀀스를 설명하는 개략도다.
도 7은 시간적 확장성를 위해 구성된 예시적인 멀티 레이어 비디오 시퀀스를 설명하는 개략도다.
도 8은 예시적인 비트스트림을 설명하는 개략도다.
도 9는 예시적인 비디오 코딩 장치의 개략도이다.
도 10은, 스케일러블 네스팅 SEI(Supplemental enhancement information) 메시지 내의 어떤 스케일러블 네스티드(scalable nested) SEI 메시지도 타깃 OLS를 참조하지 않을 때, 스케일러블 네스팅 SEI 메시지를 제거하는 것에 의해, 비디오 시퀀스를 비트스트림으로 인코딩하는 예시적인 방법의 흐름도이다.
도 11은, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스팅 SEI 메시지도 타깃 OLS를 참조하지 않을 때, 스케일러블 네스팅 SEI 메시지가 제거된 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법의 흐름도이다.
도 12는 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않을 때, 스케일러블 네스팅 SEI 메시지를 제거함으로써 비트스트림에서 비디오 시퀀스를 코딩하기 위한 예시적인 시스템의 개략도이다.
하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는 임의의 수의 기술을 사용하여 구현될 수 있다는 것이 처음부터 이해되어야 한다. 본 개시는 본 명세서에 예시되고 설명된 예시적인 설계 및 구현을 포함하여 아래에 예시된 예시적인 구현, 도면 및 기술에 결코 제한되어서는 안 되며, 등가물의 전체 범위와 함께 첨부된 청구범위의 범위 내에서 수정될 수 있다.
하기 용어는 여기에서 반대되는 맥락에서 사용되지 않는 한 하기와 같이 정의된다. 구체적으로, 하기 정의는 본 개시에 추가적인 명확성을 제공하기 위한 것이다. 그러나, 용어는 상이한 맥락에서 상이하게 설명될 수 있다. 따라서, 하기 정의는 보충으로 간주되어야 하며 여기에서 이러한 용어에 대해 제공된 설명의 임의의 다른 정의를 제한하는 것으로 간주되어서는 안 된다.
비트스트림은 인코더와 디코더 사이의 송신을 위해 압축된 비디오 데이터를 포함하는 비트 시퀀스이다. 인코더는 비디오 데이터를 비트스트림으로 압축하기 위해 인코딩 프로세스를 사용하도록 구성된 장치이다. 디코더는 디스플레이를 위해 비트스트림으로부터 비디오 데이터를 재구성하기 위해 디코딩 프로세스를 사용하도록 구성된 장치이다. 픽처는 프레임 또는 그 필드를 생성하는 루마 샘플의 어레이 및/또는 크로마 샘플의 어레이이다. 인코딩 또는 디코딩되는 픽처는 논의의 명확성을 위해 현재 픽처로 불릴 수 있다. 네트워크 추상화 레이어(NAL) 유닛은 RBSP(Raw Byte Sequence Payload) 형태의 데이터, 데이터 유형 표시 및 에뮬레이션 방지 바이트를 원하는 대로 산재하여 포함하는 신택스 구조이다. 비디오 코딩 레이어(VCL) NAL 유닛은 픽처의 코딩된 슬라이스와 같은, 비디오 데이터를 포함하도록 코딩된 NAL 유닛이다. 비-VCL NAL 유닛은 비디오 데이터 디코딩, 적합성 검사의 수행 또는 다른 동작을 지원하는 신택스 및/또는 파라미터와 같은 비-비디오 데이터를 포함하는 NAL 유닛이다. 액세스 유닛(AU)는 명시된 분류 규칙에 따라 서로 연관되고 하나의 특정 출력 시간에 속하는 NAL 유닛의 집합이다. 디코딩 유닛(DU)은 AU 또는 AU 및 연관된 비-VCL NAL 유닛의 서브세트이다. 예를 들어, AU는 VCL NAL 유닛 및 AU 내의 VCL NAL 유닛과 연관된 임의의 비-VCL NAL 유닛을 포함한다. 또한, DU는 AU로부터의 VCL NAL 유닛 세트 또는 그의 서브세트뿐만 아니라 DU의 VCL NAL 유닛과 연관된 임의의 비-VCL NAL 유닛을 포함한다. 레이어는 명시된 특성(예: 공통 해상도, 프레임 레이트, 이미지 크기 등) 및 연관된 비 VCL NAL 유닛을 공유하는 VCL NAL 유닛 세트이다. 디코딩 순서는 신택스 요소가 디코딩 프로세스에서 처리되는 순서이다. 비디오 파라미터 세트(VPS)는 전체 비디오에 관한 파라미터를 포함하는 데이터 유닛이다.
시간적 스케일러블 비트스트림은 다양한 시간 해상도/프레임 레이트를 제공하는 다수의 레이어(예: 각각의 레이어는 상이한 프레임 레이트를 지원하도록 코딩됨)에서 코딩된 비트스트림이다. 서브레이어는 특정 시간적 식별자 값을 갖는 VCL NAL 유닛 및 연관된 비-VCL NAL 유닛을 포함하는 시간적 스케일러블 비트스트림의 시간적 스케일러블 레이어이다. 예를 들어, 시간적 서브레이어는 명시된 프레임 레이트와 관련된 비디오 데이터를 포함하는 레이어이다. 서브레이어 표현은 특정 서브레이어 및 하위 서브레이어의 NAL 유닛을 포함하는 비트스트림의 서브세트이다. 따라서, 하나 이상의 시간적 서브레이어가 결합되어 명시된 프레임 레이트를 갖는 비디오 시퀀스를 생성하도록 디코딩될 수 있는 서브레이어 표현을 달성할 수 있다. 출력 레이어 세트(OLS)는 하나 이상의 레이어가 출력 레이어로 명시된 레이어 세트이다. 출력 레이어는 출력(예: 디스플레이)을 위해 지정된 레이어이다. OLS 인덱스는 해당 OLS를 고유하게 식별하는 인덱스이다. 0번째 OLS는 최하위 레이어(최하위 레이어 식별자가 있는 레이어)만 포함하고 따라서 출력 레이어만 포함하는 OLS이다. 시간적 식별자(ID)는 데이터가 비디오 시퀀스의 시간 위치에 해당함을 나타내는 데이터 요소이다. 서브 비트스트림 추출 프로세스는 타깃 OLS 인덱스 및 타깃 최고 시간 ID에 의해 결정된 타깃 세트에 속하지 않는 비트스트림에서 NAL 유닛을 제거하는 프로세스이다. 서브 비트스트림 추출 프로세스는 타깃 세트의 일부인 비트스트림으로부터 NAL 유닛을 포함하는 출력 서브 비트스트림을 생성한다.
HRD는 명시된 제약 조건에 대한 적합성을 검증하기 위해 인코딩 프로세스에 의해 생성된 비트스트림의 가변성을 검사하는 인코더에서 동작하는 디코더 모델이다. 비트스트림 적합성 테스트는 인코딩된 비트스트림이 VVC(Versatile Video Coding)와 같은 표준을 준수하는지 여부를 결정하는 테스트이다. HRD 파라미터는 HRD의 동작 조건을 초기화 및/또는 정의하는 신택스 요소이다. HRD 파라미터는 HRD 파라미터 신택스 구조 내에 수용될 수 있다. 신택스 구조는 복수의 상이한 파라미터를 포함하도록 구성된 데이터 객체이다. 신택스 요소는 동일한 유형의 하나 이상의 파라미터를 수용하는 데이터 객체이다. 그러므로, 신택스 구조는 복수의 신택스 요소를 수용할 수 있다. 시퀀스 레벨 HRD 파라미터는 전체 코딩된 비디오 시퀀스에 적용되는 HRD 파라미터이다. 최대 HRD 시간 ID(hrd_max_tid[i])는 HRD 파라미터가 OLS HRD 파라미터의 i번째 세트에 포함되는 최상위 서브레이어 표현의 시간 ID를 명시한다. 일반 HRD 파라미터(general_hrd_parameters) 신택스 구조는 시퀀스 레벨 HRD 파라미터를 포함하는 신택스 구조이다. OP(Operation Point)는 OLS 인덱스와 가장 높은 시간 ID로 식별되는 OLS의 시간적 서브세트이다. 테스트 중인 OP(targetOp)는 HRD에서 적합성 테스트를 위해 선택된 OP이다. 타깃 OLS는 비트스트림에서 추출하기 위해 선택된 OLS이다. 디코딩 유닛 HRD 파라미터 존재 플래그(decoding_unit_hrd_params_present_flag)는 해당 HRD 파라미터가 DU 레벨 또는 AU 레벨에서 동작하는지 여부를 나타내는 플래그이다. 코딩된 픽처 버퍼(CPB)는 비트스트림 적합성 검증 동안 사용하기 위해 디코딩 순서로 코딩된 픽처를 포함하는 HRD의 선입선출(first-in first out) 버퍼이다. 디코딩된 픽처 버퍼(DPB)는 참조, 출력 재정렬 및/또는 출력 지연을 위해 디코딩된 픽처를 유지하기 위한 버퍼이다.
SEI(supplemental enhancement information) 메시지는 디코딩된 픽처의 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않은 정보를 전달하는 명시된 의미(semantic)을 갖는 신택스 구조이다. 스케일러블 네스팅(scalable-nesting) SEI 메시지는 하나 이상의 OLS 또는 하나 이상의 레이어에 대응하는 복수의 SEI 메시지를 포함하는 메시지이다. 스케일러블 네스팅되지 않은(non-scalable-nested) SEI 메시지는 중첩되지 않아 단일 SEI 메시지를 포함하는 메시지이다. BP(buffering period) SEI 메시지는 CPB를 관리하기 위해 HRD를 초기화하기 위한 HRD 파라미터를 포함하는 SEI 메시지이다. PT(picture timing) SEI 메시지는 CPB 및/또는 DPB에서 AU에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 SEI 메시지이다. 디코딩 유닛 정보(DUI) SEI 메시지는 CPB 및/또는 DPB에서 DU에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 SEI 메시지이다.
CPB 제거 지연은 대응하는 현재 AU가 제거되어 DPB로 출력되기 전에 CPB에 남아 있을 수 있는 기간이다. 초기 CPB 제거 지연은 비트스트림, OLS 및/또는 레이어에서 각 픽처 AU 및/또는 DU에 대한 기본 CPB 제거 지연이다. CPB 제거 오프셋은 CPB에서 해당 AU의 경계를 결정하는 데 사용되는 CPB 내의 위치이다. 초기 CPB 제거 오프셋은 비트스트림, OLS 및/또는 레이어에서 각 픽처, AU 및/또는 DU와 연관된 디폴트 CPB 제거 오프셋이다. DPB(decoded picture buffer) 출력 지연 정보는 해당 AU가 출력되기 전에 DPB에 남아 있을 수 있는 기간이다. CPB 제거 지연 정보는 CPB에서 해당 DU를 제거하는 것과 관련된 정보이다. 전달 스케줄은 CPB 및/또는 DPB와 같은 메모리 위치로 및/또는 메모리 위치로부터 비디오 데이터를 전달하기 위한 타이밍을 명시한다. VPS 레이어 ID(vps_layer_id)는 VPS에서 지시하는 i번째 레이어의 레이어 ID를 나타내는 신택스 요소이다. 출력 레이어 세트의 수 마이너스 1(num_output_layer_sets_minus1)은 VPS에 의해 명시된 총 OLS 수를 명시하는 신택스 요소이다. HRD 코딩된 픽처 버퍼 카운트(hrd_cpb_cnt_minus1)는 대안적인 CPB 전달 스케줄의 수를 명시하는 신택스 요소이다. 서브레이어 CPB 파라미터 존재 플래그(sublayer_cpb_params_present_flag)는 OLS HRD 파라미터 세트가 명시된 서브레이어 표현에 대한 HRD 파라미터를 포함하는지 여부를 명시하는 신택스 요소이다. 스케줄 인덱스(ScIdx)는 전달 스케줄을 식별하는 인덱스이다. BP CPB 카운트 마이너스 1(bp_cpb_cnt_minus1)은 초기 CPB 제거 지연 및 오프셋 쌍의 수, 따라서 시간적 서브레이어에 대해 이용 가능한 전달 스케줄의 수를 명시하는 신택스 요소이다. NAL 유닛 헤더 레이어 식별자(nuh_layer_id)는 NAL 유닛을 포함하는 레이어의 식별자를 명시하는 신택스 요소이다. 고정 픽처 레이트 일반 플래그(fixed_pic_rate_general_flag) 신택스 요소는 출력 순서에서 연속적인 픽처의 HRD 출력 시간 간의 시간적 거리가 제한되는지 여부를 명시하는 신택스 요소이다. 서브레이어 HRD 파라미터(sublayer_hrd_parameters) 신택스 구조는 해당 서브레이어에 대한 HRD 파라미터를 포함하는 신택스 구조이다. 일반 VCL HRD 파라미터 존재 플래그(general_vcl_hrd_params_present_flag)는 VCL HRD 파라미터가 일반 HRD 파라미터 신택스 구조에 존재하는지 여부를 명시하는 플래그이다. BP 최대 서브레이어 마이너스 1(bp_max_sublayers_minus1) 신택스 요소는 BP SEI 메시지에서 CPB 제거 지연 및 CPB 제거 오프셋이 지시되는 시간적 서브레이어의 최대 개수를 명시하는 신택스 요소이다. VPS 최대 서브레이어 마이너스 1(vps_max_sublayers_minus1) 신택스 요소는 VPS에 의해 명시된 레이어에 존재할 수 있는 시간적 서브레이어의 최대 수를 명시하는 신택스 요소이다. 스케일러블 네스팅 OLS 플래그는 스케일러블 네스티드 SEI 메시지가 특정 OLS 또는 특정 레이어에 적용되는지 여부를 명시하는 플래그이다. OLS의 스케일러블 네스팅 수 마이너스 1(num_olss_minus1)은 스케일러블 네스티드 SEI 메시지가 적용되는 OLS의 수를 명시하는 신택스 요소이다. 네스팅 OLS 인덱스(NestingOlsIdx)는 스케일러블 네스티드 SEI 메시지가 적용되는 OLS의 OLS 인덱스를 명시하는 신택스 요소이다. 타깃 OLS 인덱스(targetOlsIdx)는 디코딩할 타깃 OLS의 OLS 인덱스를 식별하는 변수이다. 총 OLS 수 마이너스 1(TotalNumOlss-1)은 VPS에 명시된 총 OLS 수를 명시하는 신택스 요소이다.
본 명세서에서는 다음 약어를 사용한다. 액세스 유닛(AU), 코딩 트리 블록(CTB), 코딩 트리 유닛(CTU), 코딩 유닛(CU), 코딩된 레이어 비디오 시퀀스(CLVS), 코딩된 레이어 비디오 시퀀스 시작(CLVSS), 코딩된 레이어 비디오 시퀀스(CVS), 코딩된 레이어 비디오 시퀀스 시작(CVSS), 공동 비디오 전문가 팀(JVET), 가상 참조 디코더(HRD), MCTS(Motion Constrained Tile Set), 최대 전송 유닛(MTU), 네트워크 추상화 레이어(NAL), 출력 레이어 세트(OLS), 픽처 순서 카운트(POC), 랜덤 액세스 포인트(RAP), RBSP(Raw Byte Sequence Payload), 시퀀스 파라미터 세트(SPS), 비디오 파라미터 세트(VPS), VVC(Versatile Video Coding).
많은 비디오 압축 기술을 사용하여 데이터 손실을 최소화하면서 비디오 파일의 크기를 줄일 수 있다. 예를 들어, 비디오 압축 기술은 비디오 시퀀스에서 데이터 중복성을 감소 또는 제거하기 위해 공간적(예: 인트라-픽처) 예측 및/또는 시간적(예: 인터-픽처) 예측을 수행하는 것을 포함할 수 있다. 블록 기반 비디오 코딩을 위해, 비디오 슬라이스(예: 비디오 픽처 또는 비디오 픽처의 일부)는 트리블록, 코딩 트리 블록(CTB), 코딩 트리 유닛(CTU), 코딩 유닛(CU) 및/또는 코딩 노드라고도 불리는 비디오 블록으로 분할될 수 있다. 픽처의 인트라 코딩된(I) 슬라이스의 비디오 블록은 동일한 픽처의 이웃 블록에 있는 참조 샘플에 대한 공간 예측을 사용하여 코딩된다. 픽처의 인터 코딩된 단방향 예측(P) 또는 양방향 예측(B) 슬라이스의 비디오 블록은 동일한 픽처의 이웃 블록에 있는 참조 샘플에 대한 공간적 예측 또는 다른 참조 픽처의 참조 샘플에 대한 시간적 예측을 사용하여 코딩될 수 있다. 픽처는 프레임 및/또는 이미지라고 불릴 수 있고, 참조 픽처는 참조 프레임 및/또는 참조 이미지라고 불릴 수 있다. 공간적 또는 시간적 예측은 이미지 블록을 나타내는 예측 블록을 생성한다. 잔차 데이터는 원본 이미지 블록과 예측 블록 사이의 픽셀 차이를 나타낸다. 따라서, 인터-코딩된 블록은 예측 블록을 형성하는 참조 샘플의 블록을 가리키는 움직임 벡터 및 코딩된 블록과 예측 블록 사이의 차이를 나타내는 잔차 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔차 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔차 데이터는 픽셀 도메인에서 변환 도메인으로 변환될 수 있다. 이는 양자화될 수 있는 잔차 변환 계수를 생성한다. 양자화된 변환 계수는 초기에 2차원 어레이로 배열될 수 있다. 양자화된 변환 계수는 변환 계수의 1차원 벡터를 생성하기 위해 스캔될 수 있다. 더 많은 압축을 달성하기 위해 엔트로피 코딩이 적용될 수 있다. 이러한 비디오 압축 기술은 아래에서 더 자세히 논의된다.
인코딩된 비디오가 정확하게 디코딩될 수 있도록 하기 위해, 비디오는 해당 비디오 코딩 표준에 따라 인코딩 및 디코딩된다. 비디오 코딩 표준에는 ITU(International Telecommunication Union) 표준화 부문(ITU-T) H.261, ISO/IEC(International Organization for Standardization/International Electrotechnical Commission) MPEG(Motion Picture Experts Group)-1 파트 2, ITU-T H.262 또는 ISO/IEC MPEG-2 파트 2, ITU-T H.263, ISO/IEC MPEG-4 파트 2, ITU-T H.264 또는 ISO/IEC MPEG-4 파트 10으로도 알려진 AVC(Advanced Video Coding) 및 ITU-T H.265 또는 MPEG-H 파트 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에는 스케일러블 HEVC(SHVC), 멀티뷰 HEVC(MV-HEVC) 및 3D HEVC(3D-HEVC)와 같은 확장이 포함된다. ITU-T와 ISO/IEC의 공동 비디오 전문가 팀(JVET)은 VVC(Versatile Video Coding)라고 불리는 비디오 코딩 표준을 개발하기 시작했다. VVC는 JVET-O2001-v14를 포함하는 규격 초안(WD)에 포함되어 있다.
비디오 코딩 시스템은 비트스트림이 디코더에 의해 디코딩될 수 있는지 확인하기 위해 다양한 적합성 테스트를 사용한다. 예를 들어, 적합성 검사는 적합성을 위해 전체 비트스트림을 테스트하고, 그 다음에 적합성을 위해 비트스트림의 각 레이어를 테스트하고, 최종적으로 적합성을 위해 잠재적인 디코딩 가능한 출력을 검사하는 것을 포함할 수 있다. 적합성 검사를 구현하기 위해 해당 파라미터가 비트스트림에 포함된다. 가상 참조 디코더(HRD)는 파라미터를 읽고 테스트를 수행할 수 있다. 비디오에는 많은 레이어와 다양한 출력 레이어 세트(OLS)가 포함될 수 있다. 요청 시 인코더는 선택된 OLS의 하나 이상의 레이어를 송신한다. 예를 들어, 인코더는 현재 네트워크 대역폭에 의해 지원될 수 있는 OLS로부터 최상의 레이어(들)을 송신할 수 있다. 이 접근 방식의 첫 번째 문제는 상당한 수의 레이어가 테스트되지만, 실제로 디코더로 송신되지 않는다는 것이다. 그러나, 이러한 테스트를 지원하는 파라미터는 여전히 비트스트림에 포함될 수 있으며, 이는 불필요하게 비트스트림 크기를 증가시킨다.
제1 예에서, 비트스트림 적합성 테스트를 각각의 OLS에만 적용하기 위한 메커니즘이 본 명세서에 개시된다. 이러한 방식으로, 해당 OLS가 테스트될 때 전체 비트스트림, 각 레이어 및 디코딩 가능한 출력이 집합적으로 테스트된다. 따라서, 적합성 테스트 횟수가 줄어들어 인코더에서 프로세서 및 메모리 리소스 사용량이 줄어든다. 또한, 적합성 테스트의 수를 줄이는 것은 비트스트림에 포함된 관련 파라미터의 수를 줄일 수 있다. 이는 비트스트림 크기를 줄이고, 따라서 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용량을 감소시킨다.
두 번째 문제는 일부 비디오 코딩 시스템에서 HRD 적합성 테스트에 사용되는 HRD 파라미터 시그널링 프로세스가 멀티 레이어 컨텍스트에서 복잡해질 수 있다는 것이다. 예를 들어, HRD 파라미터 세트가 각 OLS의 각 레이어에 대해 시그널링될 수 있다. 이러한 HRD 파라미터는 파라미터의 의도된 범위에 따라 비트스트림의 다른 위치에서 시그널링될 수 있다. 이는 더 많은 레이어 및/또는 OLS가 추가될수록 더 복잡해지는 방식을 초래한다. 또한, 다른 레이어 및/또는 OLS에 대한 HRD 파라미터는 중복 정보를 포함할 수 있다.
제2 예에서, OLS 및 대응하는 레이어에 대한 HRD 파라미터의 글로벌 세트를 시그널링하기 위한 메커니즘이 본 명세서에 개시된다. 예를 들어, 모든 OLS 및 OLS에 포함된 모든 레이어에 적용되는 모든 시퀀스 레벨 HRD 파라미터는 비디오 파라미터 세터(VPS)로 시그널링된다. VPS는 비트스트림에서 한 번 시그널링되므로, 시퀀스 레벨 HRD 파라미터는 한 번 시그널링된다. 또한, 시퀀스 레벨 HRD 파라미터는 모든 OLS에 대해 동일하도록 제한될 수 있다. 이러한 방식으로 중복 시그널링이 감소되어 코딩 효율성이 증가한다. 또한, 이 접근 방식은 HRD 프로세스를 단순화한다. 그 결과, 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 시그널링 리소스 사용량이 감소한다.
비디오 코딩 시스템이 비트스트림에 대한 적합성 검사를 수행할 때 세 번째 문제가 발생할 수 있다. 비디오는 다수의 레이어 및/또는 서브레이어로 코딩될 수 있고, 그 다음에 이를 OLS로 구성할 수 있다. 각 OLS의 각 레이어 및/또는 서브레이어는 전달 스케줄에 따라 적합성을 검사한다. 각 전달 스케줄은 서로 다른 송신 대역폭 및 시스템 능력을 설명하기 위해 서로 다른 코딩된 픽처 버퍼(CPB) 크기 및 CPB 지연과 연관된다. 일부 비디오 코딩 시스템에서는 각 서브레이어가 원하는 수의 전달 스케줄을 정의할 수 있다. 이는 적합성 검사를 지원하기 위해 많은 양의 시그널링을 발생시킬 수 있으며, 이는 비트스트림에 대한 코딩 효율성을 감소시킨다.
제3 예에서, 다수의 레이어를 포함하는 비디오에 대한 코딩 효율을 증가시키기 위한 메커니즘이 본 명세서에 개시된다. 구체적으로, 모든 레이어 및/또는 서브레이어는 동일한 수의 CPB 전달 스케줄을 포함하도록 제한된다. 예를 들어, 인코더는 어느 한 레이어에 사용되는 최대 CPB 전달 스케줄 수를 결정하고 모든 레이어에 대한 CPB 전달 스케줄의 수를 최대로 설정할 수 있다. 그 다음, 전달 스케줄의 수는 한 번, 예컨대 VPS에서 HRD 파라미터의 일부로서 시그널링될 수 있다. 이것은 각 계층/서브레이어에 대한 다수의 스케줄을 시그널링할 필요를 피한다. 일부 예에서, OLS의 모든 계층/서브레이어는 동일한 전달 스케줄 인덱스를 공유할 수도 있다. 이러한 변경은 적합성 검사와 관련된 신호 데이터에 사용되는 데이터의 양을 감소시킨다. 이는 비트스트림 크기를 줄이고, 따라서 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용량을 감소시킨다.
네 번째 문제는 비디오가 다수의 레이어 및/또는 서브레이어로 코딩되고, 그 다음에 OLS로 구성될 때 발생할 수 있다. OLS는 출력 레이어만을 포함하는 0번째 OLS를 포함할 수 있다. SEI(supplemental enhancement information) 메시지는 표준에 대한 적합성을 위해 비트스트림의 레이어를 테스트하는 데 사용되는 계층/OLS 특정 파라미터를 HRD에 알리기 위해 비트스트림에 포함될 수 있다. 구체적으로, OLS가 비트스트림에 포함될 때 스케일러블 네스팅 SEI 메시지가 사용된다. 스케일러블 네스팅 SEI 메시지에는 하나 이상의 OLS 및/또는 하나 이상의 OLS 레이어에 적용되는 네스팅된 SEI 메시지 그룹이 포함된다. 네스팅된 SEI 메시지는 각각, 대응하는 OLS 및/또는 레이어와의 연관을 나타내는 지시자를 포함할 수 있다. 네스팅된 SEI 메시지는 다수의 레이어와 함께 사용하도록 구성되며 단일 레이어를 포함하는 0번째 OLS에 적용될 때 관련 없는 정보를 포함할 수 있다.
제4 예에서, 0번째 OLS를 포함하는 비디오에 대한 코딩 효율을 증가시키기 위한 메커니즘이 본 명세서에 개시된다. 0번째 OLS에는 논 스케일러블 네스티드(non-scalable-nested) SEI 메시지를 사용한다. 논 스케일러블 네스티드(non-scalable-nested) SEI 메시지는 0번째 OLS에만 적용되고 따라서 0번째 OLS에 포함된 출력 레이어에만 적용되도록 제한된다. 이러한 방식으로, 네스팅 관계, 레이어 표시 등과 같은 관련 없는 정보는 SEI 메시지에서 생략될 수 있다. 논 스케일러블 네스티드(non-scalable-nested) SEI 메시지는 버퍼링 주기(BP) SEI 메시지, 픽처 타이밍(PT) SEI 메시지, 디코딩 유닛(DU) SEI 메시지 또는 이들의 조합으로 사용될 수 있다. 이러한 변경은 0번째 OLS에 대한 적합성 검사 관련 정보를 시그널링하는 데 사용되는 데이터의 양을 감소시킨다. 이는 비트스트림 크기를 줄이고, 따라서 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용량을 감소시킨다.
다섯 번째 문제는 비디오가 다수의 레이어 및/또는 서브레이어로 분리될 때도 발생할 수 있다. 인코더는 이러한 레이어를 비트스트림으로 인코딩할 수 있다. 또한, 인코더는 표준에 대한 적합성을 위해 비트스트림을 검사하기 위해 적합성 테스트를 수행하기 위해 HRD를 사용할 수 있다. 인코더는 이러한 적합성 테스트를 지원하기 위해 레이어-특정 HRD 파라미터를 비트스트림에 포함하도록 구성될 수 있다. 레이어-특정 HRD 파라미터는 일부 비디오 코딩 시스템에서 각 레이어에 대해 인코딩될 수 있다. 어떤 경우에는 레이어-특정 HRD 파라미터가 각 레이어에 대해 동일하므로 비디오 인코딩의 크기를 불필요하게 증가시키는 중복 정보가 발생한다.
제5 예에서, 다수의 레이어를 사용하는 비디오에 대한 HRD 파라미터 중복성을 감소시키는 메커니즘이 본 명세서에 개시된다. 인코더는 최상위 레이어에 대한 HRD 파라미터를 인코딩할 수 있다. 인코더는 또한 서브레이어 CPB 파라미터 존재 플래그(sublayer_cpb_params_present_flag)를 인코딩할 수 있다. sublayer_cpb_params_present_flag는 모든 하위 레이어가 최상위 레이어와 동일한 HRD 파라미터를 사용해야 함을 나타내기 위해 0으로 설정될 수 있다. 이 컨텍스트에서 최상위 레이어는 가장 큰 레이어 ID(ID)를 가지며 하위 레이어는 최상위 레이어의 레이어 ID보다 작은 레이어 ID를 갖는 모든 레이어이다. 이러한 방식으로 하위 레이어에 대한 HRD 파라미터는 비트스트림에서 생략될 수 있다. 이는 비트스트림 크기를 줄이고, 따라서 인코더와 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용량을 감소시킨다.
여섯 번째 문제는 비디오의 각 비디오 시퀀스와 관련된 신택스 요소를 포함하기 위한 시퀀스 파라미터 세트(SPS)의 사용에 관한 것이다. 비디오 코딩 시스템은 레이어 및/또는 서브레이어에서 비디오를 코딩할 수도 있다. 비디오 시퀀스는 다른 레이어 및/또는 서브레이어에서 다르게 동작할 수 있다. 따라서 다른 레이어는 다른 SPS를 참조할 수 있다. BP SEI 메시지는 표준에 대한 적합성을 검사할 레이어/서브레이어를 나타낼 수 있다. 일부 비디오 코딩 시스템은 BP SEI 메시지가 SPS에 표시된 레이어/서브레이어에 적용됨을 나타낼 수 있다. 이는 서로 다른 레이어가 서로 다른 SPS를 참조할 때 문제를 일으킬 수 있는데, 이러한 SPS가 모순된 정보를 포함할 수 있어 예기치 않은 오류를 발생시킬 수 있기 때문이다.
제6 예에서, 다수의 레이어가 비디오 시퀀스에 사용될 때 적합성 검사와 관련된 오류를 처리하기 위한 메커니즘이 본 명세서에 개시된다. 구체적으로, BP SEI 메시지는 VPS에 설명된 임의의 수의 레이어/서브레이어가 적합성을 위해 검사될 수 있음을 나타내도록 수정된다. 예를 들어, BP SEI 메시지는 BP SEI 메시지의 데이터와 연관된 레이어/서브레이어의 수를 표시하는 BP 최대 서브레이어 마이너스 1(bp_max_sublayers_minus1) 신택스 요소를 포함할 수 있다. 한편, VPS에서 VPS 최대 서브레이어 마이너스 1(vps_max_sublayers_minus1) 신택스 요소는 전체 비디오에서 서브레이어의 개수를 나타낸다. bp_max_sublayers_minus1 신택스 요소는 0부터 vps_max_sublayers_minus1 신택스 요소의 값까지 임의의 값으로 설정될 수 있다. 이러한 방식으로 SPS 불일치와 관련된 레이어 기반 시퀀스 문제를 방지하면서 비디오의 임의의 수의 레이어/서브레이어에서 적합성을 확인할 수 있다. 따라서, 본 개시는 레이어 기반 코딩 오류를 피하고, 따라서 인코더 및/또는 디코더의 기능을 증가시킨다. 또한, 본 예는 레이어 기반 코딩을 지원하므로 코딩 효율을 높일 수 있다. 이와 같이, 본 예는 인코더 및/또는 디코더에서 감소된 프로세서, 메모리 및/또는 네트워크 리소스 사용을 지원한다.
일곱 번째 문제는 OLS에 포함된 레이어에 관한 것이다. 각 OLS는 디코더에 디스플레이되도록 구성된 적어도 하나의 출력 레이어를 포함한다. 인코더의 HRD는 각 OLS가 표준을 준수하는지 확인할 수 있다. 일치하는 OLS는 항상 일치하는 디코더에서 디코딩되고 디스플레이될 수 있다. HRD 프로세스는 부분적으로 SEI 메시지에 의해 관리될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스티드 SEI 메시지를 포함할 수 있다. 각각의 스케일러블 네스티드 SEI 메시지는 해당 레이어와 관련된 데이터를 포함할 수 있다. HRD는 적합성 검사를 수행할 때 타깃 OLS에 대해 비트스트림 추출 프로세스를 수행할 수 있다. OLS의 레이어와 관련이 없는 데이터는 일반적으로 각 OLS를 개별적으로(예: 송신 전) 확인할 수 있도록 적합성 테스트 전에 제거된다. 일부 비디오 코딩 시스템은 서브 비트스트림 추출 프로세스 동안 스케일러블 네스팅 SEI 메시지를 제거하지 않는데, 이러한 메시지는 다수의 레이어와 관련되기 때문이다. 이는 스케일러블 네스팅 SEI 메시지가 타깃 OLS(추출되는 OLS)의 레이어와 관련이 없는 경우에도 서브 비트스트림 추출 후 비트스트림에 남아 있는 스케일러블 네스팅 SEI 메시지를 초래할 수 있다. 이는 추가 기능을 제공하지 않고 최종 비트스트림의 크기를 증가시킬 수 있다.
제7 예에서, 멀티 레이어 비트스트림의 크기를 줄이기 위한 메커니즘이 본 명세서에 개시된다. 서브 비트스트림 추출 동안 스케일러블 네스팅 SEI 메시지를 비트스트림에서 제거하는 것으로 고려할 수 있다. 스케일러블 네스팅 SEI 메시지가 적어도 하나의 OLS와 관련된 경우, 스케일러블 네스팅 SEI 메시지에서 스케일러블 네스티드 SEI 메시지가 확인된다. 스케일러블 네스티드 SEI 메시지가 타깃 OLS의 레이어와 관련이 없는 경우, 전체 스케일러블 네스팅 SEI 메시지가 비트스트림에서 제거될 수 있다. 이는 디코더로 전송될 비트스트림의 크기를 줄이는 결과를 가져온다. 따라서, 본 예는 코딩 효율을 증가시키고 인코더 및 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용을 감소시킨다.
도 1은 비디오 신호를 코딩하는 예시적인 동작 방법(100)의 흐름도이다. 구체적으로, 비디오 신호는 인코더에서 인코딩된다. 인코딩 프로세스는 비디오 파일 크기를 줄이기 위해 다양한 메커니즘을 사용하여 비디오 신호를 압축한다. 파일 크기가 작을수록 압축된 비디오 파일을 사용자에게 송신할 수 있으며, 관련 대역폭 오버헤드가 줄어든다. 그 다음, 디코더는 압축된 비디오 파일을 디코딩하여 최종 사용자에게 디스플레이할 원본 비디오 신호를 재구성한다. 디코딩 프로세스는 일반적으로 디코더가 비디오 신호를 일관되게 재구성할 수 있도록 인코딩 프로세스를 미러링한다.
단계 101에서, 비디오 신호는 인코더에 입력된다. 예를 들어, 비디오 신호는 메모리에 저장된 비압축 비디오 파일일 수 있다. 다른 예로서, 비디오 파일은 비디오 카메라와 같은 비디오 캡처 장치에 의해 캡처될 수 있고 비디오의 라이브 스트리밍을 지원하도록 인코딩될 수 있다. 비디오 파일은 오디오 컴포넌트와 비디오 컴포넌트를 모두 포함할 수 있다. 비디오 컴포넌트에는 일련의 이미지 프레임이 포함되어 있어 시퀀스로 볼 때 움직임에 대한 시각적 인상을 준다. 프레임은 여기에서 루마 성분(또는 루마 샘플)이라고 불리는 밝기와 크로마 성분(또는 컬러 샘플)이라고 불리는 색상으로 표현되는 픽셀을 포함한다. 일부 예에서, 프레임은 또한 3차원 보기를 지원하기 위해 깊이 값을 포함할 수 있다.
단계 103에서, 비디오는 블록으로 분할된다. 분할에는 압축을 위해 각 프레임의 픽셀을 정사각형 및/또는 직사각형 블록으로 세분화하는 작업이 포함된다. 예를 들어, HEVC(High Efficiency Video Coding, H.265 및 MPEG-H 파트 2로도 알려짐)에서 프레임은 먼저 미리 정의된 크기(예: 64 픽셀 x 64픽셀)의 블록인 코딩 트리 유닛(CTU)로 나눌 수 있다. CTU에는 루마 및 크로마 샘플이 모두 포함되어 있다. 코딩 트리를 사용하여 CTU를 블록으로 나누고 그 다음에 추가 인코딩을 지원하는 구성이 달성될 때까지 블록을 재귀적으로 세분화할 수 있다. 예를 들어, 프레임의 루마 성분은 개별 블록이 상대적으로 균일한 밝기 값을 포함할 때까지 세분화될 수 있다. 또한, 프레임의 크로마 성분은 개별 블록이 비교적 균일한 색상 값을 포함할 때까지 세분화될 수 있다. 따라서, 비디오 프레임의 내용에 따라 분할 메커니즘이 달라진다.
단계105에서, 단계 103에서 분할된 이미지 블록을 압축하기 위해 다양한 압축 메커니즘이 사용된다. 예를 들어, 인터 예측 및/또는 인트라 예측이 사용될 수 있다. 인터 예측은 공통 장면의 객체가 연속 프레임에 나타나는 경향이 있다는 사실을 이용하도록 설계되었다. 따라서, 참조 프레임에서 객체를 나타내는 블록은 인접 프레임에서 반복적으로 기술될 필요가 없다. 구체적으로, 테이블과 같은 객체는 다수의 프레임에 걸쳐 일정한 위치에 남아 있을 수 있다. 따라서 테이블은 한 번 설명되고 인접 프레임은 참조 프레임을 다시 참조할 수 있다. 패턴 일치 메커니즘을 사용하여 다수의 프레임에 걸쳐 개체를 일치시킬 수 있다. 또한, 움직이는 물체는 예를 들어 물체의 움직임이나 카메라의 움직임으로 인해 다수의 프레임에 걸쳐 표현될 수 있다. 특정 예로서, 비디오는 다수의 프레임에 걸쳐 화면을 가로질러 움직이는 자동차를 보여줄 수 있다. 움직임 벡터는 이러한 움직임을 설명하는 데 사용할 수 있다. 움직임 벡터는 프레임에 있는 객체의 좌표에서 참조 프레임에 있는 객체의 좌표까지 오프셋을 제공하는 2차원 벡터이다. 이와 같이 인터 예측은 현재 프레임의 이미지 블록을 참조 프레임의 해당 블록으로부터의 오프셋을 나타내는 움직임 벡터의 세트로 인코딩할 수 있다.
인트라 예측은 공통 프레임의 블록을 인코딩한다. 인트라 예측은 루마 및 크로마 성분이 프레임에서 클러스터링되는 경향이 있다는 사실을 이용한다. 예를 들어, 나무의 한 부분에 있는 녹색 패치는 유사한 녹색 패치에 인접하게 배치되는 경향이 있다. 인트라 예측은 다수의 방향성 예측 모드(예: HEVC에서 33개), 플라나 모드 및 DC(direct current) 모드를 사용한다. 방향성 모드는 현재 블록이 해당 방향에서 이웃 블록의 샘플과 유사/동일함을 나타낸다. 플라나 모드는 행/열(예: 평면)을 따라 일련의 블록이 행 가장자리에 있는 인접 블록을 기반으로 보간될 수 있음을 나타낸다. 실제로 플라나 모드는 값을 변경할 때 상대적으로 일정한 기울기를 사용하여 행/열에 걸쳐 조명/색상의 부드러운 전환을 나타낸다. DC 모드는 경계 평활화에 사용되며 방향 예측 모드의 각도 방향과 관련된 모든 인접 블록의 샘플과 관련된 평균값과 유사/동일한 블록을 나타낸다. 따라서, 인트라 예측 블록은 실제 값이 아닌 다양한 관계형 예측 모드 값으로 이미지 블록을 표현할 수 있다. 또한, 인터 예측 블록은 실제 값이 아닌 움직임 벡터 값으로 이미지 블록을 나타낼 수 있다. 어느 경우든 예측 블록은 경우에 따라 이미지 블록을 정확하게 나타내지 않을 수 있다. 모든 차이는 잔차 블록에 저장된다. 파일을 추가로 압축하기 위해 잔차 블록에 변환을 적용할 수 있다.
단계 107에서, 다양한 필터링 기술이 적용될 수 있다. HEVC에서, 필터는 인루프 필터링 방식에 따라 적용된다. 위에서 논의된 블록 기반 예측은 디코더에서 블록 이미지의 생성을 초래할 수 있다. 또한, 블록 기반 예측 방식은 블록을 인코딩한 다음 나중에 참조 블록으로 사용하기 위해 인코딩된 블록을 복원할 수 있다. 인루프 필터링 방식은 노이즈 억제 필터, 디블로킹 필터, 적응 루프 필터 및 샘플 적응 오프셋(SAO) 필터를 블록/프레임에 반복적으로 적용한다. 이러한 필터는 인코딩된 파일이 정확하게 재구성될 수 있도록 이러한 차단 아티팩트를 완화한다. 또한, 이러한 필터는 재구성된 참조 블록에서 아티팩트를 완화하여 아티팩트가 재구성된 참조 블록에 기초하여 인코딩되는 후속 블록에서 추가 아티팩트를 생성할 가능성이 적다.
비디오 신호가 분할, 압축 및 필터링되면 결과 데이터는 단계 109에서 비트스트림으로 인코딩된다. 비트스트림은 디코더에서 적절한 비디오 신호 재구성을 지원하기 위해 원하는 시그널링 데이터 뿐만 아니라 위에서 논의된 데이터를 포함한다. 예를 들어, 이러한 데이터는 파티션 데이터, 예측 데이터, 잔차 블록 및 디코더에 코딩 명령을 제공하는 다양한 플래그를 포함할 수 있다. 비트스트림은 요청 시 디코더를 향한 송신을 위해 메모리에 저장될 수 있다. 비트스트림은 또한 복수의 디코더로를 향해 브로드캐스트 및/또는 멀티캐스트될 수 있다. 비트스트림 생성은 반복적인 프로세스이다. 따라서, 단계 101, 103, 105, 107 및 109는 많은 프레임 및 블록에 걸쳐 연속적으로 및/또는 동시에 발생할 수 있다. 도 1에 도시된 순서는 논의의 명료함과 용이함을 위해 제시되며, 비디오 코딩 프로세스를 특정 순서로 제한하려는 의도가 아니다.
디코더는 비트스트림을 수신하고 단계 111에서 디코딩 프로세스를 시작한다. 구체적으로, 디코더는 비트스트림을 대응하는 신택스 및 비디오 데이터로 변환하기 위해 엔트로피 디코딩 방식을 사용한다. 디코더는 단계 111에서 프레임에 대한 파티션을 결정하기 위해 비트스트림의 신택스 데이터를 사용한다. 분할은 단계 103의 블록 분할 결과와 일치해야 한다. 이제 단계 111에서 사용된 엔트로피 인코딩/디코딩이 설명된다. 인코더는 입력 이미지에서 값의 공간적 위치를 기반으로 여러 가능한 선택 중에서 블록 분할 방식을 선택하는 것과 같이 압축 프로세스 동안 많은 선택을 한다. 정확한 선택에 대한 신호는 많은 수의 빈(bin)을 사용할 수 있다. 본 명세서에서 사용된 바와 같이, 빈은 변수로 취급되는 이진 값(예: 컨텍스트에 따라 변할 수 있는 비트 값)이다. 엔트로피 코딩을 사용하면 인코더가 특정 경우에 명확하게 실행 가능하지 않은 옵션을 버리고 허용 가능한 옵션 세트를 남길 수 있다. 그런 다음 각 허용 가능한 옵션에 코드 단어가 할당된다. 코드 단어의 길이는 허용 가능한 옵션의 수에 기초한다(예: 2개의 옵션에 대한 1개의 빈, 3 내지 4개의 옵션에 대한 2개의 빈 등). 그런 다음 인코더는 선택한 옵션에 대한 코드 단어를 인코딩한다. 가능한 모든 옵션의 잠재적으로 큰 세트에서의 선택을 고유하게 나타하는 것과 대조적으로 허용 가능한 옵션의 작은 서브 세트에서의 선택을 고유하게 나타내도록 코드 워드가 원하는 만큼 크므로 이 방식은 코드 워드의 크기를 감소시킨다. 그런 다음 디코더는 인코더와 유사한 방식으로 허용 가능한 옵션 세트를 결정하여 선택을 디코딩한다. 허용 가능한 옵션 세트를 결정함으로써 디코더는 코드 워드를 읽고 인코더에 의해 만들어진 선택을 결정할 수 있다.
단계 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) 및 헤더 포맷팅 및 CABAC(context adaptive binary arithmetic coding) 컴포넌트(231)를 포함한다. 이러한 컴포넌트는 도시된 바와 같이 결합된다. 도 2에서, 흑색선은 인코딩될/디코딩될 데이터의 이동을 나타내고, 점선은 다른 컴포넌트의 동작을 제어하는 제어 데이터의 이동을 나타낸다. 코덱 시스템(200)의 컴포넌트는 모두 인코더에 존재할 수 있다. 디코더는 코덱 시스템(200)의 컴포넌트들의 서브세트를 포함할 수 있다. 예를 들어, 디코더는 인트라 픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 스케일링 및 역변환 컴포넌트(229), 인루프 필터 컴포넌트(225) 및 디코딩된 픽처 버퍼 컴포넌트(223)를 포함할 수 있다. 이제 이러한 컴포넌트에 대해 설명한다.
분할된 비디오 신호(201)는 코딩 트리에 의해 픽셀 블록으로 분할된 캡처된 비디오 시퀀스이다. 코딩 트리는 픽셀 블록을 더 작은 픽셀 블록으로 세분화하기 위해 다양한 분할 모드를 사용한다. 그런 다음, 이러한 블록을 더 작은 블록으로 세분화할 수 있다. 블록은 코딩 트리 상의 노드로 불릴 수 있다. 더 큰 부모 노드는 더 작은 자식 노드로 분할된다. 노드가 세분화되는 횟수를 노드/코딩 트리의 깊이라고 한다. 나눠진 블록은 경우에 따라 CU(Coding Unit)에 포함될 수 있다. 예를 들어, CU는 CU에 대한 해당 신택스 명령과 함께 루마 블록, 빨간색 차이 크로마(Cr) 블록 및 파란색 차이 크로마(Cb) 블록을 포함하는 CTU의 하위 부분일 수 있다. 분할 모드는 사용되는 분할 모드에 따라 다양한 모양의 노드를 각각 2, 3 또는 4개의 자식 노드로 분할하는 데 사용되는 이진 트리(BT), 삼중 트리(TT) 및 쿼드 트리(QT)를 포함할 수 있다. 분할된 비디오 신호(201)는 압축을 위해 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라 픽처 추정 컴포넌트(215), 필터 제어 분석 컴포넌트(227) 및 움직임 추정 컴포넌트(221)로 전달된다.
일반 코더 제어 컴포넌트(211)는 애플리케이션 제한에 따라 비디오 시퀀스의 이미지를 비트스트림으로 코딩하는 것과 관련된 결정을 내리도록 구성된다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 비트레이트/비트스트림 크기 대 재구성 품질의 최적화를 관리한다. 이러한 결정은 저장 공간/대역폭 가용성 및 이미지 해상도 요청에 기초하여 할 수 있다. 일반 코더 제어 컴포넌트(211)는 또한 버퍼 언더런 및 오버런 문제를 완화하기 위해 송신 속도에 비추어 버퍼 활용을 관리한다. 이러한 문제를 관리하기 위해 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트에 의한 분할, 예측 및 필터링을 관리한다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 해상도를 증가시키고 대역폭 사용을 증가시키기 위해 압축 복잡도를 동적으로 증가시키거나 해상도 및 대역폭 사용을 감소시키기 위해 압축 복잡도를 감소시킬 수 있다. 따라서, 일반 코더 제어 컴포넌트(211)는 코덱 시스템(200)의 다른 컴포넌트를 제어하여 비디오 신호 재구성 품질과 비트 레이트 문제의 균형을 맞춘다. 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트의 동작을 제어하는 제어 데이터를 생성한다. 제어 데이터는 또한 디코더에서 디코딩하기 위한 신호 파라미터로 비트스트림에서 인코딩되도록 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달된다.
분할된 비디오 신호(201)는 또한 인터 예측을 위해 움직임 추정 컴포넌트(221) 및 움직임 보상 컴포넌트(219)로 전송된다. 분할된 비디오 신호(201)의 프레임 또는 슬라이스는 다수의 비디오 블록으로 나눠질 수 있다. 움직임 추정 컴포넌트(221) 및 움직임 보상 컴포넌트(219)는 시간 예측을 제공하기 위해 하나 이상의 참조 프레임의 하나 이상의 블록에 대해 수신된 비디오 블록의 예측간 코딩을 수행한다. 코덱 시스템(200)은 예컨대 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택하기 위해 다수의 코딩 패스를 수행할 수 있다.
움직임 추정 컴포넌트(221) 및 움직임 보상 컴포넌트(219)는 고도로 통합될 수 있지만, 개념적 목적을 위해 별도로 예시된다. 움직임 추정 컴포넌트(221)에 의해 수행되는 움직임 추정은 비디오 블록에 대한 움직임을 추정하는 움직임 벡터를 생성하는 프로세스이다. 예를 들어, 움직임 벡터는 예측 블록에 대한 코딩된 객체의 변위를 나타낼 수 있다. 예측 블록은 픽셀 차이 측면에서 코딩할 블록과 밀접하게 일치하는 것으로 발견된 블록이다. 예측 블록은 참조 블록으로도 불릴 수 있다. 이러한 픽셀 차이는 절대 차이의 합(SAD), 차이의 제곱 합(SSD) 또는 다른 차이 메트릭에 의해 결정될 수 있다. HEVC는 CTU, 코딩 트리 블록(CTB) 및 CU를 비롯한 여러 코딩된 객체를 사용한다. 예를 들어, CTU는 CTB로 나눠질 수 있으며, 그런 다음 CU에 포함하기 위해 CB로 나눠질 수 있다. CU는 예측 데이터를 포함하는 예측 유닛(PU) 및/또는 CU에 대한 변환된 잔차 데이터를 포함하는 변환 유닛(TU)로서 인코딩될 수 있다. 움직임 추정 컴포넌트(221)는 레이트 왜곡 최적화 프로세스의 일부로서 레이트 왜곡 분석을 사용함으로써 움직임 벡터, PU 및 TU를 생성한다. 예를 들어, 움직임 추정 컴포넌트(221)는 현재 블록/프레임에 대한 다수의 참조 블록, 다수의 움직임 벡터 등을 결정할 수 있고, 최상의 레이트 왜곡 특성을 갖는 참조 블록, 움직임 벡터 등을 선택할 수 있다. 최고의 비율 왜곡 특성은 비디오 재구성의 품질(예: 압축에 의한 데이터 손실의 양)과 코딩 효율성(예: 최종 인코딩의 크기)의 균형을 유지한다.
일부 예에서, 코덱 시스템(200)은 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된 참조 픽처들의 정수 이하 픽셀 위치들에 대한 값들을 계산할 수도 있다. 예를 들어, 비디오 코덱 시스템(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)는 레이트 왜곡 최적화(RDO)에 기초한 깊이 모델링 모드(DMM)를 사용하여 깊이 맵의 깊이 블록을 코딩하도록 구성될 수 있다.
인트라 픽처 예측 컴포넌트(217)는 인코더 상에서 구현될 때 인트라 픽처 추정 컴포넌트(215)에 의해 결정된 선택된 인트라 예측 모드에 기초하여 예측 블록으로부터 잔차 블록을 생성하거나 디코더 상에서 구현될 때 비트스트림으로부터 잔차 블록을 판독할 수 있다. 잔차 블록은 예측 블록과 원본 블록 간의 값의 차이를 포함하며 행렬로 표현된다. 그 다음, 잔차 블록은 변환 스케일링 및 양자화 컴포넌트(213)로 전달된다. 인트라 픽처 추정 컴포넌트(215) 및 인트라 픽처 예측 컴포넌트(217)는 루마 및 크로마 성분 모두에 대해 동작할 수 있다.
변환 스케일링 및 양자화 컴포넌트(213)는 잔차 블록을 추가로 압축하도록 구성된다. 변환 스케일링 및 양자화 컴포넌트(213)는 이산 코사인 변환(DCT), 이산 사인 변환(DST) 또는 개념적으로 유사한 변환과 같은 변환을 잔차 블록에 적용하여 잔차 변환 계수 값을 포함하는 비디오 블록을 생성한다. 웨이블릿 변환, 정수 변환, 부분대역 변환 또는 다른 유형의 변환도 사용할 수 있다. 변환은 잔차 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 예를 들어 주파수에 기초하여 변환된 잔차 정보를 스케일링하도록 구성된다. 이러한 스케일링은 상이한 주파수 정보가 상이한 입도(granularity)에서 양자화되도록 잔차 정보에 스케일 팩터를 적용하는 것을 포함하며, 이는 재구성된 비디오의 최종 시각적 품질에 영향을 미칠 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 비트 레이트를 추가로 감소시키기 위해 변환 계수를 양자화하도록 구성된다. 양자화 프로세스는 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예에서, 변환 스케일링 및 양자화 컴포넌트(213)는 그 다음, 양자화된 변환 계수들을 포함하는 행렬의 스캔을 수행할 수 있다. 양자화된 변환 계수는 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달되어 비트스트림에서 인코딩된다.
스케일링 및 역변환 컴포넌트(229)는 움직임 추정을 지원하기 위해 변환 스케일링 및 양자화 컴포넌트(213)의 역 연산을 적용한다. 스케일링 및 역변환 컴포넌트(229)는 예를 들어 다른 현재 블록에 대한 예측 블록이 될 수 있는 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔차 블록을 재구성하기 위해 역 스케일링, 변환 및/또는 양자화를 적용한다. 움직임 추정 컴포넌트(221) 및/또는 움직임 보상 컴포넌트(219)는 나중의(later) 블록/프레임의 움직임 추정에 사용하기 위해 대응하는 예측 블록에 잔차 블록을 다시 추가함으로써 참조 블록을 계산할 수도 있다. 필터는 스케일링, 양자화 및 변환 중에 생성된 아티팩트를 완화하기 위해 재구성된 참조 블록에 적용된다. 그렇지 않으면 후속 블록이 예측될 때 이러한 아티팩트가 부정확한 예측을 야기하고 추가 아티팩트를 생성할 수 있다.
필터 제어 분석 컴포넌트(227) 및 인루프 필터 컴포넌트(225)는 필터를 잔차 블록 및/또는 재구성된 이미지 블록에 적용한다. 예를 들어, 스케일링 및 역변환 컴포넌트(229)로부터의 변환된 잔차 블록은 인트라 픽처 예측 컴포넌트(217) 및/또는 움직임 보상 컴포넌트(219)로부터의 대응하는 예측 블록과 결합되어 원본 이미지 블록을 재구성할 수 있다. 그런 다음 필터가 재구성된 이미지 블록에 적용될 수 있다. 일부 예에서, 필터들은 그 대신에 잔차 블록들에 적용될 수 있다. 도 2의 다른 컴포넌트와 마찬가지로, 필터 제어 분석 컴포넌트(227) 및 인루프 필터 컴포넌트(225)는 고도로 통합되어 함께 구현될 수 있지만 개념적 목적을 위해 별도로 도시된다. 재구성된 참조 블록에 적용된 필터는 특정 공간 영역에 적용되며 이러한 필터가 적용되는 방식을 조정하기 위해 다수의 파라미터를 포함한다. 필터 제어 분석 컴포넌트(227)는 재구성된 참조 블록을 분석하여 이러한 필터가 적용되어야 하는 위치를 결정하고 대응하는 파라미터를 설정한다. 이러한 데이터는 인코딩을 위한 필터 제어 데이터로서 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달된다. 인루프 필터 컴포넌트(225)는 필터 제어 데이터에 기초하여 이러한 필터를 적용한다. 필터는 디블로킹 필터, 잡음 억제 필터, SAO 필터 및 적응 루프 필터를 포함할 수 있다. 이러한 필터는 예에 따라 공간/픽셀 도메인(예: 재구성된 픽셀 블록에서) 또는 주파수 도메인에서 적용될 수 있다.
인코더로서 동작할 때, 필터링된 재구성된 이미지 블록, 잔차 블록 및/또는 예측 블록은 앞에서 논의된 바와 같이 움직임 추정에서 나중에 사용하기 위해 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된다. 디코더로서 동작할 때, 디코딩된 픽처 버퍼 컴포넌트(223)는 재구성되고 필터링된 블록을 저장하고 출력 비디오 신호의 일부로서 디스플레이를 향해 포워딩한다. 디코딩된 픽처 버퍼 컴포넌트(223)는 예측 블록 잔차 블록 및/또는 재구성된 이미지 블록을 저장할 수 있는 임의의 메모리 장치일 수 있다.
헤더 포맷팅 및 CABAC 컴포넌트(231)는 코덱 시스템(200)의 다양한 컴포넌트로부터 데이터를 수신하고 디코더를 향한 송신을 위해 이러한 데이터를 코딩된 비트스트림으로 인코딩한다. 구체적으로, 헤더 포맷팅 및 CABAC 컴포넌트(231)는 일반 제어 데이터 및 필터 제어 데이터와 같은 제어 데이터를 인코딩하기 위한 다양한 헤더를 생성한다. 또한, 인트라 예측 및 움직임 데이터를 포함하는 예측 데이터와 양자화된 변환 계수 데이터 형태의 잔차 데이터가 모두 비트스트림에서 인코딩된다. 최종 비트스트림은 원래의 분할된 비디오 신호(201)를 재구성하기 위해 디코더가 원하는 모든 정보를 포함한다. 이러한 정보는 또한 인트라 예측 모드 인덱스 테이블(코드워드 매핑 테이블로도 불림), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 가장 가능성 있는 인트라 예측 모드의 표시, 파티션 정보의 표시 등을 포함할 수 있다. 이러한 데이터는 엔트로피 코딩을 사용하여 인코딩될 수 있다. 예를 들어, 정보는 CAVLC(context adaptive variable length coding), CABAC, SBAC(syntax-based context-adaptive binary arithmetic coding), 확률 간격 분할 엔트로피(PIPE) 코딩, 또는 다른 엔트로피 코딩 기술을 사용하여 인코딩될 수 있다. 엔트로피 코딩에 이어, 코딩된 비트스트림은 다른 장치(예: 비디오 디코더)로 송신되거나 나중의 송신 또는 리트리빙(retrieval)을 위해 보관될 수 있다.
도 3은 예시적인 비디오 인코더(300)를 설명하는 블록도이다. 비디오 인코더(300)는 코덱 시스템(200)의 인코딩 기능을 구현하고/하거나 동작 방법(100)의 단계 101, 103, 105, 107 및/또는 109를 구현하기 위해 사용될 수 있다. 인코더(300)는 입력 비디오 신호를 분할하여 분할된 비디오 신호(201)와 실질적으로 유사한 분할된 비디오 신호(301)를 생성한다. 그 다음, 분할된 비디오 신호(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)는 프레임에서 참조 블록을 찾기 위해 예측 모드를 사용하고 인트라 예측된 이미지 블록을 재구성하기 위해 결과에 잔차 블록을 적용한다. 재구성된 인트라 예측된 이미지 블록 및/또는 잔차 블록 및 대응하는 인터 예측 데이터는 디코딩된 픽처 버퍼 컴포넌트(423)로 인루프 필터 컴포넌트(425)를 통해 전달되고, 이는 각각 디코딩된 픽처 버퍼 컴포넌트(223) 및 인루프 필터 컴포넌트(225)와 실질적으로 유사할 수 있다. 인루프 필터 컴포넌트(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)는 가상 스트림 스케줄러(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 및 연관된 비-비디오 코딩 레이어(VCL) 네트워크 추상화 레이어(NAL) 유닛의 서브세트이다. 구체적으로, AU는 출력 시간과 관련된 하나 이상의 픽처를 포함한다. 예를 들어, AU는 단일 레이어 비트스트림에서 단일 픽처를 포함할 수 있고, 멀티 레이어 비트스트림에서 각 레이어에 대한 픽처를 포함할 수 있다. AU의 각 픽처는 해당 VCL NAL 유닛에 각각 포함되는 슬라이스로 나눠질 수 있다. 따라서, DU(553)는 하나 이상의 픽처, 픽처의 하나 이상의 슬라이스 또는 이들의 조합을 포함할 수 있다. 또한, AU, 픽처 및/또는 슬라이스를 디코딩하는 데 사용되는 파라미터가 비-VCL NAL 유닛에 포함될 수 있다. 이와 같이, DU(553)는 DU(553)에서 VCL NAL 유닛들의 디코딩을 지원하는데 필요한 데이터를 포함하는 비-VCL NAL 유닛을 포함한다. CPB(543)은 HRD(500)의 선입선출 버퍼이다. CPB(543)는 디코딩 순서로 비디오 데이터를 포함하는 DU(553)를 포함한다. CPB(543)는 비트스트림 적합성 검증 동안 사용하기 위해 비디오 데이터를 저장한다.
CPB(543)는 DU(553)를 디코딩 프로세스 컴포넌트(545)로 전달한다. 디코딩 프로세스 컴포넌트(545)는 VVC 표준을 따르는 컴포넌트이다. 예를 들어, 디코딩 프로세스 컴포넌트(545)는 최종 사용자에 의해 사용되는 디코더(400)를 에뮬레이트할 수 있다. 디코딩 프로세스 컴포넌트(545)는 예시적인 최종 사용자 디코더에 의해 달성될 수 있는 레이트로 DU(553)를 디코딩한다. 디코딩 프로세스 컴포넌트(545)가 CPB(543)의 오버플로를 방지하기에 충분히 빠르게 DU(553)를 디코딩할 수 없다면, 비트스트림(551)은 표준을 따르지 않고 재인코딩되어야 한다.
디코딩 프로세스 컴포넌트(545)는 디코딩된 DU(555)를 생성하는 DU(553)를 디코딩한다. 디코딩된 DU(555)는 디코딩된 픽처를 포함한다. 디코딩된 DU(555)는 DPB(547)로 전달된다. DPB(547)는 디코딩된 픽처 버퍼 컴포넌트(223, 323 및/또는 423)와 실질적으로 유사할 수 있다. 인터 예측을 지원하기 위해, 디코딩된 DU(555)로부터 획득된 참조 픽처(556)로서 사용하도록 표시된 픽처는 추가 디코딩을 지원하기 위해 디코딩 프로세스 컴포넌트(545)로 리턴된다. DPB(547)는 디코딩된 비디오 시퀀스를 일련의 픽처(557)로 출력한다. 픽처(557)는 인코더에 의해 비트스트림(551)으로 인코딩된 픽처를 일반적으로 미러링하는 재구성된 픽처이다.
픽처(557)는 출력 크로핑 컴포넌트(549)로 전달된다. 출력 크로핑 컴포넌트(549)는 픽처(557)에 적합성 크로핑 창을 적용하도록 구성된다. 결과적으로 크로핑된 픽처(559)가 출력된다. 출력 크로핑된 픽처(559)는 완전히 재구성된 픽처이다. 따라서, 출력 크로핑된 픽처(559)는 최종 사용자가 비트스트림(551)을 디코딩할 때 보게 될 것을 모방한다. 이와 같이, 인코더는 인코딩이 만족스러운지 확인하기 위해 출력 크로핑된 픽처(559)를 검토할 수 있다.
HRD(500)는 비트스트림(551)의 HRD 파라미터에 기초하여 초기화된다. 예를 들어, HRD(500)는 VPS, SPS 및/또는 SEI 메시지로부터 HRD 파라미터를 판독할 수 있다. 그 다음, HRD(500)는 이러한 HRD 파라미터의 정보에 기초하여 비트스트림(551)에 대한 적합성 테스트 동작을 수행할 수 있다. 특정 예로서, HRD(500)는 HRD 파라미터로부터 하나 이상의 CPB 전달 스케줄(561)을 결정할 수 있다. 전달 스케줄은 CPB 및/또는 DPB와 같은 메모리 위치로 및/또는 메모리 위치로부터 비디오 데이터를 전달하기 위한 타이밍을 명시한다. 따라서, CPB 전달 스케줄(561)은 CPB(543)로/로부터의 AU, DU(553) 및/또는 픽처의 전달을 위한 타이밍을 명시한다. 예를 들어, CPB 전달 스케줄(561)은 CPB(543)에 대한 비트 레이트 및 버퍼 크기를 기술할 수 있으며, 여기서 이러한 비트 레이트 및 버퍼 크기는 디코더 및/또는 네트워크 조건의 특정 클래스에 대응한다. 따라서, CPB 전달 스케줄(561)은 축출 전에 데이터가 CPB(543)에 얼마나 오래 남아 있을 수 있는지를 나타낼 수 있다. 적합성 테스트 동안 HRD(500)에서 CPB 전달 스케줄(561)을 유지하지 못하는 것은 CPB 전달 스케줄(561)에 대응하는 디코더가 대응하는 비트스트림을 디코딩할 수 없을 것이라는 표시이다. HRD(500)는 CPB 전달 스케줄(561)과 유사한 DPB(547)에 대한 DPB 전달 스케줄을 사용할 수 있다.
비디오는 다양한 레벨의 하드웨어 기능과 다양한 네트워크 조건을 갖는 디코더에서 사용하기 위해 다른 레이어 및/또는 OLS로 코딩될 수 있다. CPB 전달 스케줄(561)은 이러한 문제를 반영하도록 선택된다. 따라서, 상위 레이어 서브-비트스트림이 최적의 하드웨어 및 네트워크 조건을 위해 지정되므로, 상위 레이어는 CPB(543)에서 많은 양의 메모리와 DPB(547)를 향한 DU(553)의 전송을 위한 짧은 지연을 사용하는 하나 이상의 CPB 전달 스케줄(561)을 수신할 수 있다. 마찬가지로, 하위 레이어 서브 비트스트림은 제한된 디코더 하드웨어 기능 및/또는 열악한 네트워크 조건에 대해 지정된다. 따라서, 하위 레이어는 CPB(543)에서 소량의 메모리를 사용하고 DPB(547)를 향한 DU(553)의 전송을 위해 더 긴 지연을 사용하는 하나 이상의 CPB 전달 스케줄(561)을 수신할 수 있다. 그 다음, OLS, 레이어, 서브레이어, 또는 이들의 조합은 대응하는 전달 스케줄(561)에 따라 테스트되어 결과적인 서브 비트스트림이 서브 비트스트림에 대해 예상되는 조건 하에서 올바르게 디코딩될 수 있음을 보장할 수 있다. CPB 전달 스케줄(561)은 각각 스케줄 인덱스(ScIdx, 563)와 연관된다. ScIdx(563)은 전달 스케줄을 식별하는 인덱스이다. 따라서, 비트스트림(551)의 HRD 파라미터는 ScIdx(563)에 의한 CPB 전달 스케줄(561)을 나타낼 수 있을 뿐만 아니라 HRD(500)가 CPB 전달 스케줄(561)을 결정하고 CPB 전달 스케줄(561)을 대응하는 OLS, 레이어 및/또는 서브레이어에 상관시키기에 충분한 데이터를 포함할 수 있다.
도 6은 레이어 간 예측(621)을 위해 구성된 예시적인 멀티 레이어 비디오 시퀀스를 설명하는 개략도이다. 멀티 레이어 비디오 시퀀스(600)는 코덱 시스템(200) 및/또는 인코더(300)와 같은 인코더에 의해 인코딩되고 코덱 시스템(200) 및/또는 디코더(400)와 같은 디코더에 의해, 예컨대 방법(100)에 따라 디코딩될 수 있다. 또한, 멀티 레이어 비디오 시퀀스(600)는 HRD(500)와 같은 HRD에 의해 표준 적합성에 대해 검사될 수 있다. 멀티 레이어 비디오 시퀀스(600)는 코딩된 비디오 시퀀스의 레이어에 대한 예시적인 애플리케이션을 묘사하기 위해 포함된다. 다수의 레이어 비디오 시퀀스(600)는 레이어 N(631) 및 레이어 N+1(632)과 같은 복수의 레이어를 사용하는 임의의 비디오 시퀀스이다.
예에서, 멀티 레이어 비디오 시퀀스(600)는 인터 레이어 예측(621)을 사용할 수 있다. 인터 레이어 예측(621)은 서로 다른 레이어의 픽처(611, 612, 613, 614)와 픽처(615, 616, 617, 618) 사이에 적용된다. 도시된 예에서, 픽처 611, 612, 613 및 614는 레이어 N+1(632)의 일부이고 픽처 615, 616, 617 및 618은 레이어 N(631)의 일부이다. 레이어는 유사한 크기, 품질, 해상도, 신호 대 잡음비, 능력 등과 같은 특성의 유사한 값과 모두 연관된 픽쳐 그룹이다. 레이어는 공식적으로 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)는 대안에서 디스플레이되도록 구성된다. 이와 같이, 상이한 레이어(631-632)의 픽처는 픽처가 동일한 AU에 포함되는 한 시간적 ID(622)를 공유할 수 있다. 시간적 ID(622)는 데이터가 비디오 시퀀스의 시간 위치에 대응함을 나타내는 데이터 요소이다. AU는 명시된 분류 규칙에 따라 서로 연관되고 하나의 특정 출력 시간에 속하는 NAL 유닛 세트이다. 예를 들어, AU는 픽처(611) 및 픽처(615)와 같은 하나 이상의 픽처를, 이러한 픽처가 동일한 시간적 ID(622)와 연관되는 경우, 상이한 레이어에 포함할 수 있다. 구체적인 예로서, 디코더는 더 작은 픽처가 요구되는 경우 현재 디스플레이 시간에 픽처(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) 중 하나 또는 2개를 사용하여 인터 예측(623)을 사용함으로써 코딩될 수 있으며, 여기서 단방향 인터 예측을 위해 하나의 픽처가 참조되고/참조되거나 양방향 인터 예측을 위해 두 개의 픽처가 참조된다. 또한, 픽처(617)는 참조로서 레이어 N(531)의 픽처(615, 616 및/또는 618) 중 하나 또는 2개를 사용하여 인터 예측(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에 포함되고 하위 레이어에 있는 인터 레이어 참조 픽처(들)만을 사용할 수 있도록 제한된다. 다수의 레이어(예: 2개 이상)가 이용 가능한 경우, 인터 레이어 예측(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)보다 훨씬 낮은 코딩 효율을 갖는 인트라 예측을 사용하는 것을 피할 수 있다. 이와 같이, 인트라 예측의 열악한 코딩 효율은 최소/최저 품질 픽처로 제한될 수 있고, 따라서 가장 적은 양의 비디오 데이터를 코딩하는 것으로 제한될 수 있다. 참조 픽처 및/또는 인터 레이어 참조 픽처로 사용되는 픽처는 참조 픽처 리스트 구조에 포함된 참조 픽처 리스트(들)의 엔트리에서 지시될 수 있다.
이러한 동작을 수행하기 위해, 하나 이상의 OLS(625, 626)에 레이어 N(631) 및 레이어 N+1(632)과 같은 레이어가 포함될 수 있다. 구체적으로, 픽처(611-618)는 비트스트림(600)에서 레이어(631-632)로서 인코딩되고, 그 다음 화상의 각 레이어(631-632)는 하나 이상의 OLS(625 및 626)에 할당된다. 그 다음 OLS(625 및/또는 626)가 선택될 수 있고 대응하는 레이어(631 및/또는 632)는 디코더에서의 능력 및/또는 네트워크 조건에 따라 디코더로 송신될 수 있다. OLS(625)는 하나 이상의 레이어가 출력 레이어로 명시된 레이어 세트이다. 출력 레이어는 출력(예: 디스플레이)을 위해 지정된 레이어이다. 예를 들어, 레이어 N(631)은 인터 레이어 예측(621)을 지원하기 위해 단독으로 포함될 수 있고 결코 출력되지 않을 수 있다. 이러한 경우, 레이어 N+1(632)은 레이어 N(631)에 기초하여 디코딩되어 출력된다. 이러한 경우, OLS(625)는 출력 레이어로서 레이어 N+1(632)을 포함한다. OLS가 출력 레이어만 포함할 때, OLS는 0번째 OLS(626)라고 불린다. 0번째 OLS(626)는 최하위 레이어(최하위 레이어 식별자를 갖는 레이어)만을 포함하고 따라서 출력 레이어만을 포함하는 OLS이다. 다른 경우에, OLS(625)는 상이한 조합으로 많은 층을 포함할 수 있다. 예를 들어, OLS(625)의 출력 레이어는 하나, 둘 또는 많은 하위 레이어에 기초한 인터 레이어 예측(621)에 따라 코딩될 수 있다. 또한, OLS(625)는 하나 이상의 출력 레이어를 포함할 수 있다. 따라서, OLS(625)는 하나 이상의 출력 레이어 및 출력 레이어를 재구성하는 데 필요한 임의의 지원 레이어를 포함할 수 있다. 2개의 OLS(625 및 626)만이 도시되어 있지만, 멀티 레이어 비디오 시퀀스(600)는 각각이 층의 상이한 조합을 사용하는 많은 상이한 OLS(625 및/또는 626)를 사용함으로써 코딩될 수 있다. OLS(625, 626)는 각각 대응하는 OLS(625, 626)를 고유하게 식별하는 인덱스인 OLS 인덱스(629)와 연관되어 있다.
HRD(500)에서 표준 적합성을 위해 멀티 레이어 비디오 시퀀스(600)를 검사하는 것은 레이어(631-632)와 OLS(625, 626)의 수에 따라 복잡해질 수 있다. HRD(500)는 테스트를 위해 멀티 레이어 비디오 시퀀스(600)를 동작 포인트(627)의 시퀀스로 분리할 수 있다. OLS(625 및/또는 626)는 OLS 인덱스(629)로 식별된다. 동작 포인트(627)는 OLS(625/626)의 시간적 서브세트이다. 동작 포인트(627)는 대응하는 OLS(625/626)의 OLS 인덱스(629)와 가장 높은 시간적 ID(622) 모두에 의해 식별될 수 있다. 특정 예로서, 제1 동작 포인트(627)는 시간적 ID 0에서 시간적 ID 200까지의 제1 OLS(625)의 모든 픽처를 포함할 수 있고, 제2 동작 포인트(627)는 시간적 ID 201부터 시간적 ID 400까지의 제1 OLS(625)의 모든 픽처를 포함할 수 있다. 이러한 경우, 제1 동작 포인트(627)는 제1 OLS(625)의 OLS 인덱스(629)와 200의 시간적 ID로 기술된다. 또한, 제2 동작 포인트(627)는 제1 OLS(625)의 OLS 인덱스(629) 및 400의 시간적 ID로 기술된다. 명시된 순간에 테스트를 위해 선택된 동작 포인트(627)는 테스트 대상 OP(targetOp)로 불린다. 따라서, targetOp는 HRD(500)에서 적합성 테스트를 위해 선택된 동작 포인트(627)이다.
도 7은 시간적 확장성를 위해 구성된 예시적인 멀티 레이어 비디오 시퀀스(700)를 설명하는 개략도이다. 멀티 레이어 비디오 시퀀스(700)는 코덱 시스템(200) 및/또는 인코더(300)와 같은 인코더에 의해 인코딩되고 코덱 시스템(200) 및/또는 디코더(400)와 같은 디코더에 의해, 예컨대 방법(100)에 따라 디코딩될 수 있다. 또한, 멀티 레이어 비디오 시퀀스(700)는 HRD(500)와 같은 HRD에 의해 표준 적합성에 대해 검사될 수 있다. 멀티레이어 비디오 시퀀스(700)는 코딩된 비디오 시퀀스의 레이어에 대한 다른 예시적인 애플리케이션을 묘사하기 위해 포함된다. 예를 들어, 멀티 레이어 비디오 시퀀스(700)는 별도의 실시예로서 사용될 수 있거나 멀티 레이어 비디오 시퀀스(600)에 대해 설명된 기술과 결합될 수 있다.
멀티 레이어 비디오 시퀀스(700)는 서브레이어(710, 720, 730)를 포함한다. 서브레이어는 특정 시간적 식별자 값을 갖는 VCL NAL 유닛(예: 픽처) 및 연관된 비-VCL NAL 유닛(예: 지원 파라미터)을 포함하는 시간적 스케일러블 비트스트림의 시간적 스케일러블 레이어이다. 예를 들어, 레이어 N(631) 및/또는 레이어 N+1(632)과 같은 레이어는 시간적 확장성을 지원하기 위해 서브레이어(710, 720, 730)로 더 나눠질 수 있다. 서브레이어(710)는 베이스 레이어로 불릴 수 있고, 서브레이어(720 및 730)는 향상 레이어로 불릴 수 있다. 도시된 바와 같이, 서브레이어(710)는 초당 30개의 프레임과 같은 제1 프레임 레이트의 픽처(711)를 포함한다. 서브레이어(710)는 베이스/최저 프레임 레이트를 포함하기 때문에 서브레이어(710)는 베이스 레이어이다. 서브레이어(720)는 서브레이어(710)의 픽처(711)로부터 시간적으로 오프셋된 픽처(721)를 포함한다. 그 결과, 서브레이어(710) 및 서브레이어(720)가 결합될 수 있고, 이는 서브레이어(710) 단독의 프레임 레이트보다 집합적으로 더 높은 프레임 레이트를 초래한다. 예를 들어, 서브레이어(710 및 720)는 초당 60프레임의 결합된 프레임 레이트를 가질 수 있다. 따라서, 서브레이어(720)는 서브레이어(710)의 프레임 레이트를 향상시킨다. 또한, 서브레이어(730)는 서브레이어(720 및 710)의 픽처(721 및 711)로부터 시간적으로 오프셋된 픽처(731)를 포함한다. 이와 같이, 서브레이어(730)는 서브레이어(710)를 추가로 향상시키기 위해 서브레이어(720 및 710)와 결합될 수 있다. 예를 들어, 서브레이어(710, 720, 730)는 초당 90프레임의 합성 프레임 레이트를 가질 수 있다.
서브레이어 표현(740)은 서브레이어(710, 720 및/또는 730)를 결합함으로써 동적으로 생성될 수 있다. 서브레이어 표현(740)은 특정 서브레이어 및 하위 서브레이어의 NAL 유닛을 포함하는 비트스트림의 서브세트이다. 도시된 예에서, 서브레이어 표현(740)은 서브레이어(710, 720, 730)의 결합된 픽처(711, 721, 731)인 픽처(741)를 포함한다. 따라서, 멀티 레이어 비디오 시퀀스(700)는 원하는 서브레이어 세트(710, 720 및/또는 730)를 포함하는 서브레이어 표현(740)을 선택함으로써 원하는 프레임 레이트로 시간적으로 스케일링될 수 있다. 서브레이어 표현(740)은 서브레이어(710, 720 및/또는 730)를 레이어로서 포함하는 OLS를 사용함으로써 생성될 수 있다. 이러한 경우, 서브레이어 표현(740)은 출력 레이어로서 선택된다. 따라서, 시간적 확장성은 멀티 레이어 메커니즘을 사용하여 달성할 수 있는 여러 메커니즘 중 하나이다.
도 8은 예시적인 비트스트림(800)을 설명하는 개략도이다. 예를 들어, 비트스트림(800)은 방법(100)에 따라 코덱 시스템(200) 및/또는 디코더(400)에 의한 디코딩을 위해 코덱 시스템(200) 및/또는 인코더(300)에 의해 생성될 수 있다. 또한, 비트스트림(800)은 멀티 레이어 비디오 시퀀스(600 및/또는 700)를 포함할 수 있다. 또한, 비트스트림(800)은 HRD(500)와 같은 HRD의 동작을 제어하기 위한 다양한 파라미터를 포함할 수 있다. 이러한 파라미터에 기초하여, HRD는 디코딩을 위한 디코더를 향한 송신 이전에 표준에 대한 적합성을 위해 비트스트림(800)을 검사할 수 있다.
비트스트림(800)은 VPS(811), 하나 이상의 SPS(813), 복수의 픽처 파라미터 세트(PPS, 815), 복수의 슬라이스 헤더(817), 이미지 데이터(820) 및 SEI 메시지(819)를 포함한다. VPS(811)는 전체 비트스트림(800)와 관련된 데이터를 포함한다. 예를 들어, VPS(811)는 비트스트림(800)에서 사용되는 OLS, 레이어 및/또는 서브레이어와 관련된 데이터를 포함할 수 있다. SPS(813)는 비트스트림(800)에 포함된 코딩된 비디오 시퀀스의 모든 픽처에 공통인 시퀀스 데이터를 포함한다. 예를 들어, 각각의 레이어는 하나 이상의 코딩된 비디오 시퀀스를 포함할 수 있고, 각각의 코딩된 비디오 시퀀스는 대응하는 파라미터에 대해 SPS(813)를 참조할 수 있다. SPS(813)의 파라미터는 픽처 크기 조정, 비트 심도, 코딩 도구 파라미터, 비트 레이트 제한 등을 포함할 수 있다. 각각의 시퀀스가 SPS(813)를 참조하는 반면, 단일 SPS(813)는 일부 예에서 다수의 시퀀스에 대한 데이터를 포함할 수 있다. PPS(815)에는 전체 픽처에 적용되는 파라미터가 포함되어 있다. 따라서, 비디오 시퀀스의 각 픽처는 PPS(815)를 참조할 수 있다. 각각의 픽처가 PPS(815)를 참조하지만, 일부 예에서 단일 PPS(815)가 다수의 픽처에 대한 데이터를 포함할 수 있다. 예를 들어, 다수의 유사한 픽처가 유사한 파라미터에 따라 코딩될 수 있다. 이러한 경우, 단일 PPS(815)는 이러한 유사한 픽처에 대한 데이터를 포함할 수 있다. PPS(815)는 해당 픽처의 슬라이스, 양자화 파라미터, 오프셋 등에 이용 가능한 코딩 도구를 나타낼 수 있다.
슬라이스 헤더(817)는 픽처의 각 슬라이스에 특정한 파라미터를 포함한다. 따라서, 비디오 시퀀스의 슬라이스당 하나의 슬라이스 헤더(817)가 있을 수 있다. 슬라이스 헤더(817)는 슬라이스 유형 정보, POC, 참조 픽처 리스트, 예측 가중치, 타일 엔트리 포인트, 디블로킹 파라미터 등을 포함할 수 있다. 일부 예에서, 비트스트림(800)은 또한 단일 픽처에서 모든 슬라이스에 적용되는 파라미터를 포함하는 신택스 구조인 픽처 헤더를 포함할 수 있다. 이러한 이유로, 픽처 헤더와 슬라이스 헤더(817)는 일부 컨텍스트에서 혼용될 수 있다. 예를 들어, 특정 파라미터는 이러한 파라미터가 픽처의 모든 슬라이스에 공통되는지 여부에 따라 슬라이스 헤더(817)와 픽처 헤더 사이에서 이동될 수 있다.
이미지 데이터(820)는 인터 예측 및/또는 인트라 예측에 따라 인코딩된 비디오 데이터와 대응하는 변환 및 양자화된 잔차 데이터를 포함한다. 예를 들어, 이미지 데이터(820)는 AU(821), DU(822) 및/또는 픽처(823)를 포함할 수 있다. AU(821)는 명시된 분류 규칙에 따라 서로 연관되고 하나의 특정 출력 시간에 속하는 NAL 유닛 세트이다. DU(822)는 AU 또는 AU 및 연관된 비-VCL NAL 유닛의 서브세트이다. 픽처(823)는 프레임 또는 그 필드를 생성하는 루마 샘플의 어레이 및/또는 크로마 샘플의 어레이이다. 일반 언어에서 AU(821)는 지원 신택스 데이터뿐만 아니라 비디오 시퀀스에서 명시된 순간에 디스플레이될 수 있는 다양한 비디오 데이터를 포함한다. 따라서, AU(821)는 단일 레이어 비트스트림의 단일 픽처(823) 또는 멀티 레이어 비트스트림의 동일한 순간과 모두 연관된 다수의 레이어로부터의 다수의 픽처를 포함할 수 있다. 한편, 픽처(823)는 디스플레이를 위해 출력되거나 출력을 위해 다른 픽처(들)(823)의 코딩을 지원하기 위해 사용될 수 있는 코딩된 이미지이다. DU(822)는 하나 이상의 픽처(823) 및 디코딩에 필요한 임의의 지원 신택스 데이터를 포함할 수 있다. 예를 들어, DU(822) 및 AU(821)는 단순 비트스트림(예: AU가 단일 픽처를 포함하는 경우)에서 상호교환가능하게 사용될 수 있다. 그러나, 더 복잡한 멀티 레이어 비트스트림에서, DU(822)는 AU(821)로부터의 비디오 데이터의 일부만을 포함할 수 있다. 예를 들어, AU(821)는 픽처(823)의 일부가 상이한 OLS와 연관되는 여러 레이어 및/또는 서브레이어에서 픽처(823)를 포함할 수 있다. 이러한 경우, DU(822)는 명시된 OLS 및/또는 명시된 레이어/서브레이어로부터의 픽처(들)(823)만을 포함할 수 있다.
픽처(823)는 하나 이상의 슬라이스(825)를 포함한다. 슬라이스(825)는 픽처(823)의 완전한 타일의 정수 또는 연속적인 완전한 코딩 트리 유닛(CTU) 행의 정수(예: 타일 내)로 정의될 수 있고, 여기서 타일 또는 CTU 행은 단일 NAL 유닛(829)에 단일 NAL 유닛(829)에 독점적으로 포함된다. 따라서, 슬라이스(825)는 하나의 NAL 유닛(829)에도 포함된다. 슬라이스(825)는 CTU 및/또는 코딩 트리 블록(CTB)으로 더 나눠진다. CTU는 코딩 트리로 분할될 수 있는 미리 정의된 크기의 샘플 그룹이다. CTB는 CTU의 서브세트이고 CTU의 루마 성분 또는 크로마 성분을 포함한다. CTU/CTB는 코딩 트리에 기초하여 코딩 블록으로 더 나눠진다. 그 다음, 코딩 블록은 예측 메커니즘에 따라 인코딩/디코딩될 수 있다.
비트스트림(800)은 NAL 유닛(829)의 시퀀스이다. NAL 유닛(829)은 비디오 데이터 및/또는 지원 신택스를 위한 컨테이너이다. NAL 유닛(829)은 VCL NAL 유닛 또는 비-VCL NAL 유닛일 수 있다. VCL NAL 유닛은 코딩된 슬라이스(825) 및 연관된 슬라이스 헤더(817)와 같은 비디오 데이터를 포함하도록 코딩된 NAL 유닛(829)이다. 비-VCL NAL 유닛은 비디오 데이터의 디코딩, 적합성 검사의 수행 또는 다른 동작을 지원하는 신택스 및/또는 파라미터와 같은 비-비디오 데이터를 포함하는 NAL 유닛(829)이다. 예를 들어, 비-VCL NAL 유닛은 VPS(811), SPS(813), PPS(815), SEI 메시지(819) 또는 다른 지원 신택스를 포함할 수 있다.
SEI 메시지(819)는 디코딩된 픽처의 샘플 값을 결정하기 위해 디코딩 프로세스에서 필요하지 않은 정보를 전달하는 명시된 의미를 갖는 신택스 구조이다. 예를 들어, SEI 메시지(819)는 HRD 프로세스를 지원하기 위한 데이터 또는 디코더에서 비트스트림(800)을 디코딩하는 것과 직접적으로 관련이 없는 다른 지원 데이터를 포함할 수 있다. 비트스트림(800)에 사용된 SEI 메시지(819)는 스케일러블 네스팅 SEI 메시지 및/또는 스케일러블 네스티드 SEI 메시지를 포함할 수 있다. 스케일러블 네스팅 SEI 메시지는 하나 이상의 OLS 또는 하나 이상의 레이어에 대응하는 복수의 SEI 메시지를 포함하는 메시지이다. 스케이러블 네스티드 SEI 메시지는 스케이러블 네스팅 SEI 메시지 내에 포함된 SEI 메시지이다. 논 스케일러블 네스티드(non-scalable-nested) SEI 메시지는 네스팅되지 않아 단일 SEI 메시지를 포함하는 메시지이다. SEI 메시지(819)는 CPB를 관리하기 위해 HRD를 초기화하기 위한 HRD 파라미터를 포함하는 BP SEI 메시지를 포함할 수 있다. SEI 메시지(819)는 또한 CPB 및/또는 DPB에서 AU(821)에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 PT SEI 메시지를 포함할 수 있다. SEI 메시지(819)는 또한 CPB 및/또는 DPB에서 DU(822)에 대한 전달 정보를 관리하기 위한 HRD 파라미터를 포함하는 DUI SEI 메시지를 포함할 수 있다. BP SEI 메지시 내에 포함된 파라미터, PT SEI 메시지, 및/또는 DUI SEI 메시지는, HRD에서 CPB 전달 스케줄을 결정하기 위해 채용될 수 있다. 예컨대, 스케일러블 네스팅 SEI 메시지는 BP SEI 메시지 세트, PT SEI 메시지 세트, 또는 DUI SEI 메시지 세트를 포함할 수 있다.
위에서 언급한 바와 같이, 비디오 스트림은 OLS(625), 레이어 N(631), 레이어 N+1(632), 서브레이어(710), 서브레이어(720) 및/또는 서브레이어(730)과 같은 많은 OLS 및 많은 레이어를 포함할 수 있다. 또한, 일부 레이어는 다중 OLS에 포함될 수 있다. 이와 같이, 멀티 레이어 비디오 시퀀스(600 및/또는 700)와 같은 멀티 레이어 비디오 시퀀스는 상당히 복잡해질 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 많은 OLS, 레이어 및/또는 서브레이어에 적용되는 스케일러블 네스티드 SEI 메시지를 포함할 수 있다. 디코더가 타깃 OLS를 요청하는 경우, 인코더/HRD는 비트스트림(800)에 대한 서브비트스트림 추출 프로세스를 수행할 수 있다. 인코더/HRD는 예를 들어 VPS(811), SPS(813), PPS(815), 슬라이스 헤더(817), SEI 메시지(819) 등으로부터 파라미터를 지원하고 타깃 OLS를 형성하는 이미지 데이터(820)를 추출한다. 이러한 추출은 NAL 유닛(829)에 의해 NAL 유닛(829)에서 수행된다. 결과는 타깃 OLS를 디코딩하기에 충분한 정보를 포함하는 비트스트림(800)의 서브비트스트림이다. 추출되지 않은 정보는 요청된 타깃 OLS의 일부가 아니며 디코더로 전송되지 않는다. 스케일러블 네스팅 SEI 메시지에는 많은 레이어, 서브레이어 및/또는 OLS와 관련된 데이터가 포함될 수 있다. 따라서, 일부 비디오 코딩 시스템은 타깃 OLS가 표준을 준수하는지 검사되고, 디코더에서 적절하게 디코딩될 수 있도록 보장하기 위해 추출된 서브비트스트림에 모든 스케일러블 네스팅 SEI 메시지를 포함할 수 있다. 그런 다음 HRD는 디코더로 전송하기 전에 일련의 적합성 테스트를 수행한다. 이 접근 방식은 지나치게 포괄적이어서 비효율적일 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지 중 일부는 타깃 OLS와 완전히 관련이 없을 수 있다. 이러한 관련 없는 스케일러블 네스팅 SEI 메시지는 추출된 서브비트스트림에 남아 디코더로 전송된다. 이것은 추가 기능을 제공하지 않고 최종 서브비트스트림의 크기를 증가시킬 수 있다.
본 개시는 멀티 레이어 비트스트림(600 및/또는 700)과 같은 멀티 레이어 비트스트림을 인코딩하는 비트스트림(800)으로부터 추출된 서브비트스트림의 크기를 줄이기 위한 메커니즘을 포함한다. 서브비트스트림 추출 동안 스케일러블 네스팅 SEI 메시지를 비트스트림에서 제거하는 것으로 고려할 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 OLS 및/또는 레이어와 관련될 수 있다. 스케일러블 네스팅 SEI 메시지가 특정 OLS와 관련된 경우, 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지(예: SEI 메시지(819))가 검사된다. 스케일러블 네스티드 SEI 메시지가 타깃 OLS의 레이어와 관련이 없는 경우 전체 스케일러블 네스팅 SEI 메시지가 서브비트스트림에서 제거될 수 있다. 이것은 디코더에 보내질 서브비트스트림의 크기를 줄이는 결과를 가져온다. 따라서, 본 예는 코딩 효율을 증가시키고 인코더 및 디코더 모두에서 프로세서, 메모리, 및/또는 네트워크 리소스 사용을 감소시킨다.
서브비트스트림은 비트스트림(800)의 한 유형이라는 점에 유의해야 한다. 구체적으로, 서브비트스트림은 더 큰 비트스트림(800)으로부터 추출된 비트스트림(800)이다. 따라서, 용어 비트스트림(800)은 문맥에 따라 초기에 인코딩된 비트스트림(800), 추출된 서브비트스트림, 또는 둘 다를 지칭할 수 있다.
예를 들어, VPS(811)는 총 OLS의 수(TotalNumOlss)(833)를 포함할 수 있다. TotalNumOlss(833)는 VPS(811)에 지정된 총 OLS 수를 지정하는 신택스 요소이다. 이것은 특정 사용자 요청과 관련이 없을 수 있는 임의의 다른 OLS(예를 들어, 상이한 스크린 해상도, 프레임 레이트 등과 관련된 다른 OLS)와 함께 추출될, 타깃 OLS를 포함하는 비트스트림(800)의 모든 OLS를 포함할 수 있다.
또한, SEI 메시지(819)는 스케일러블 네스팅 OLS 플래그(831)를 포함할 수 있다. 스케일러블 네스팅 OLS 플래그(831)는 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용되는지 특정 레이어에 적용되는지를 지정하는 플래그이다. 스케일러블 네스팅 OLS 플래그(831)는 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지가 특정 OLS에 적용되도록 지정하기 위해 1과 동일하게 설정되거나 스케일러블 네스티드 SEI 메시지가 특정 레이어에 적용되도록 지정하기 위해 0으로 설정될 수 있다. SEI 메시지(819)는 또한 OLS의 수 마이너스 1(num_olss_minus1)(835) 및 OLS 인덱스 차이 마이너스 1(ols_idx_delta_minus1)(837)과 같은 다른 신택스 요소를 포함할 수 있다. num_olss_minus1(835)은 스케일러블 네스팅 SEI 메시지에서 대응하는 스케일러블 네스티드 SEI 메시지가 적용되는 OLS의 개수를 지정하는 신택스 요소이다. num_olss_minus1(835) 값은 0 이상 TotalNumOlss(833) 마이너스 1 이하의 범위에 있도록 제한된다. ols_idx_delta_minus1(837)은, 스케일러블 네스팅 OLS 플래그(831)가 1인 경우, 스케일러블 네스티드 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정하는 네스팅 OLS 인덱스(NestingOlsIdx[ i ])의 변수를 도출하는 데 사용될 수 있는 값을 포함한다. i번째 OLS에 대한 ols_idx_delta_minus1(837)의 값은 0 이상 TotalNumOlss(833) 마이너스 2 이하의 범위에 있도록 제한된다. 마이너스 패러다임은 값을 나타내는 데 사용되는 비트 수를 줄이는 데 사용될 수 있다. 예를 들어, 마이너스 1 신택스 요소의 실제 값은 1을 더하여 결정할 수 있다.
선행 데이터는 적합성 테스트 및/또는 전송 전에 스케일러블 네스팅 SEI 메시지를 서브비트스트림에 포함할지 또는 스케일러블 네스팅 SEI 메시지를 제거할지 여부를 결정하는 데 사용될 수 있다. 구체적으로, 스케일러블 네스팅 OLS 플래그(831)가 스케일러블 네스팅 SEI 메시지가 하나 이상의 특정 OLS에 적용됨을 나타내도록 설정될 때, 예를 들어 스케일러블 네스팅 OLS 플래그가 1로 설정된다. 그런 다음 인코더/HRD는 스케일러블 네스팅 SEI 메시지를 확인하여 포함된 스케일러블 네스티드 SEI 메시지가 타깃 OLS의 레이어와 관련이 있는지 여부를 결정한다. 스케일러블 네스팅 SEI 메시지나 스케일러블 네스티드 SEI 메시지 중 어느 것도 타깃 OLS를 참조하지 않을 때 스케일러블 네스팅 SEI 메시지는 서브비트스트림에서 제거될 수 있다. 예를 들어, 인코더/HRD는 num_olss_minus1(835)의 값을 검사하여 얼마나 많은 OLS가 스케일러블 네스팅 SEI 메시지와 연관되는지를 결정할 수 있다. 그러면 인코더는 타깃 OLS에 대한 관련성에 대해 0과 num_olss_minus1(835) 사이의 각 OLS를 확인할 수 있다. 각각의 현재 OLS에 대해 인코더/HRD는 ols_idx_delta_minus1(837)의 값을 검사하여 NestingOlsIdx[ i ]의 값을 유도하여 스케일러블 네스티드 SEI 메시지가 적용되는 현재(i번째) OLS의 OLS 인덱스를 결정할 수 있다. ols_idx_delta_minus1(837)에서 도출된 NestingOlsIdx[ i ]의 값이 타깃 OLS와 관련된 타깃 OLS 인덱스(targetOlsIdx)와 동일하지 않은 경우, 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지 중 어느 것도 타깃 OLS에 적용되지 않는다. 그러한 경우, 스케일러블 네스팅 SEI 메시지는 HRD 적합성 테스트 또는 디코딩에 부정적인 영향을 미치지 않고 추출된 서브비트스트림에서 제거될 수 있다. 이 메커니즘은 일부 SEI 메시지(819)가 비트스트림(800)으로부터 서브비트스트림 추출 동안 제거되는 것을 허용한다. 이는 결과적인 서브비트스트림에 대한 코딩 효율성을 증가시키고, 이는 인코더 및 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용을 감소시킨다. 또한, 관련 없는 SEI 메시지(819)를 제거하는 것은 HRD 적합성 테스팅 프로세스의 복잡성을 감소시킬 수 있고, 이는 인코더 및/또는 HRD에서 프로세서 및/또는 메모리 리소스 사용을 감소시킨다.
이전 정보는 이제 아래에서 더 자세히 설명된다. 레이어화된 비디오 코딩은 또한 스케일러블 비디오 코딩 또는 확장성을 갖는 비디오 코딩이라고도 불린다. 비디오 코딩에서의 확장성은 멀티 레이어 코딩 기술을 사용함으로써 지원될 수 있다. 멀티 레이어 비트스트림은 기본 레이어(BL) 및 하나 이상의 향상 레이어(EL)을 포함한다. 확장성의 예로는 공간적 확장성, 품질/SNR(signal to noise ratio) 확장성, 다시점 확장성, 프레임 레이트 확장성 등이 있다. 멀티 레이어 코딩 기법을 사용하는 경우, 참조 픽처(인트라 예측)를 사용하지 않고 픽처 또는 그 일부를 코딩하고/코딩하거나 동일한 레이어에 있는 참조 픽처(인터 예측)를 참조하여 코딩하고/코딩하거나, 다른 레이어(들)에 있는 참조 픽처(인터 레이어 예측)를 참조함으로써 코딩될 수 있다. 현재 픽처의 인터 레이어 예측에 사용되는 참조 픽처는 ILRP(Inter Layer Reference Picture)라고 불린다. 도 6은 서로 다른 레이어의 픽처가 서로 다른 해상도를 갖는 공간적 확장성를 위한 멀티 레이어 코딩의 예를 나타낸다.
일부 비디오 코딩 패밀리는 단일 레이어 코딩을 위한 프로필과 분리된 프로필의 확장성을 지원한다. 스케일러블 비디오 코딩(SVC)은 공간, 시간 및 품질 확장성을 지원하는 고급 비디오 코딩(AVC)의 스케일러블 확장이다. SVC의 경우, 플래그는 EL 픽처의 각 매크로블록(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에서만 제공되며 LTRP(long-term reference picture)로 처리된다. 이러한 픽처에는 현재 레이어의 다른 시간 참조 픽처와 함께 참조 픽처 리스트(들)의 참조 인덱스가 할당된다. 인터 레이어 예측(ILP)은 참조 픽처 리스트(들)의 인터 레이어 참조 픽처(들)을 참조하도록 참조 인덱스의 값을 설정함으로써 예측 유닛(PU) 레벨에서 달성된다. 공간적 확장성은 ILRP가 인코딩 또는 디코딩되는 현재 픽처와 다른 공간 해상도를 가질 때 참조 픽처 또는 그 일부를 재샘플링한다. 참조 픽처 리샘플링은 픽처 레벨 또는 코딩 블록 레벨에서 실현될 수 있다.
VVC는 레이어화된 비디오 코딩도 지원할 수 있다. VVC 비트스트림은 다수의 레이어를 포함할 수 있다. 레이어는 모두 서로 독립적일 수 있다. 예를 들어, 각 레이어는 인터 레이어 예측을 사용하지 않고 코딩될 수 있다. 이 경우, 레이어는 동시 전송 레이어라고도 불린다. 일부 경우에, 일부 레이어는 ILP를 사용하여 코딩된다. VPS의 플래그는 레이어가 사이멀캐스트(simulcast) 레이어인지 여부 또는 일부 레이어가 ILP를 사용하는지 여부를 나타낼 수 있다. 일부 레이어가 ILP를 사용하는 경우, 레이어 간의 레이어 종속 관계도 VPS에서 시그널링된다. SHVC 및 MV-HEVC와 달리, VVC는 OLS를 명시하지 않을 수 있다. OLS는 명시된 레이어 세트를 포함하고, 레이어 세트의 하나 이상의 레이어가 출력 레이어로 지정된다. 출력 레이어는 출력되는 OLS의 레이어이다. VVC의 일부 구현에서, 레이어가 사이멀캐스트 레이어인 경우 디코딩 및 출력을 위해 하나의 레이어만이 선택될 수 있다. VVC의 일부 구현에서, 모든 레이어를 포함하는 전체 비트스트림은 임의의 레이어가 ILP를 사용할 때 디코딩되도록 지정된다. 또한, 레이어 중 특정 레이어는 출력 레이어로 명시된다. 출력 레이어는 최상위 레이어, 모든 레이어, 또는 최상위 레이어 플러스 지시되는 하위 레이어 세트로만 지시될 수 있다.
비디오 코딩 표준은 지정된 HRD 적합성 테스트를 통해 비트스트림의 적합성을 검증하기 위해 HRD를 명시할 수 있다. SHVC 및 MV-HEVC에서는 비트스트림의 적합성을 확인하기 위해 세 가지 세트의 비트스트림 적합성 테스트가 사용된다. 비트스트림은 전체 비트스트림이라고 불리고, entireBitstream로 표시된다. 비트스트림 적합성 테스트의 첫 번째 세트는 전체 비트스트림 및 해당 시간적 서브세트의 적합성을 테스트하기 위한 것이다. 이러한 테스트는 전체 비트스트림에 존재하는 VCL NAL 유닛의 모든 nuh_layer_id 값을 포함하는 활성 VPS에 의해 명시된 레이어 세트가 있는지 여부에 관계없이 사용된다. 따라서, 하나 이상의 레이어가 출력 세트에 포함되지 않은 경우에도 전체 비트스트림의 적합성이 항상 검사된다. 비트스트림 적합성 테스트의 두 번째 세트는 활성 VPS 및 연관된 시간적 서브세트에 의해 명시되는 레이어 세트의 적합성을 테스트하기 위해 사용된다. 이 모든 테스트에서 기본 레이어 픽처(예: nuh_layer_id가 0인 픽처)만 디코딩되어 출력된다. 디코딩 프로세스가 호출될 때 다른 픽처는 디코더에 의해 무시된다. 비트스트림 적합성 테스트의 세 번째 세트는 활성 VPS의 VPS 확장 부분과 OLS 및 비트스트림 파티션에 기초하는 관련 시간적 서브세트에 의해 명시된 OLS의 적합성을 테스트하는 데 사용된다. 비트스트림 파티션은 멀티 레이어 비트스트림의 OLS의 하나 이상의 레이어를 포함한다.
이전 양상에는 특정 문제가 있다. 예를 들어, 처음 두 세트의 적합성 테스트는 디코딩되지 않고 출력되지 않는 레이어에 적용될 수 있다. 예를 들어, 최하위 레이어 이외의 레이어는 디코딩되지 않고 출력되지 않을 수 있다. 실제 애플리케이션에서, 디코더는 디코딩할 데이터만 수신할 수 있다. 따라서, 처음 두 세트의 적합성 테스트를 모두 사용하면 코덱 설계가 복잡해지고 적합성 테스트를 지원하는 데 사용되는 시퀀스 레벨 및 픽처 레벨 파라미터를 모두 전달하는 데 비트가 낭비될 수 있다. 세 번째 적합성 테스트 세트에는 비트스트림 파티션이 포함된다. 이러한 파티션은 멀티 레이어 비트스트림의 OLS의 하나 이상의 레이어와 관련될 수 있다. 대신 적합성 테스트가 항상 각 레이어 대해 별도로 동작한다면 HRD가 크게 단순화될 수 있다.
시퀀스 레벨 HRD 파라미터의 시그널링은 복잡할 수 있다. 예를 들어, 시퀀스 레벨 HRD 파라미터는 SPS 및 VPS 모두와 같은 다수의 위치에서 시그널링될 수 있다. 또한, 시퀀스 레벨 HRD 파라미터 시그널링은 리던던시를 포함할 수 있다. 예를 들어, 전체 비트스트림에 대해 일반적으로 동일할 수 있는 정보는 각 OLS의 각 레이어에서 반복될 수 있다. 또한, HRD 방식의 예는 각 계층에 대해 상이한 전달 스케줄을 선택할 수 있도록 한다. 이러한 전달 스케줄은 동작 포인트가 OLS 또는 OLS의 시간적 서브세트인 각 동작 포인트에 대해 각 레이어에 대해 시그널링되는 스케줄 리스트에서 선택될 수 있다. 이러한 시스템은 복잡하다. 또한, 예시적인 HRD 방식은 불완전한 AU가 버퍼링 기간 SEI 메시지와 연관될 수 있도록 한다. 불완전한 AU는 CVS에 있는 모든 레이어에 대한 픽처가 없는 AU이다. 그러나, 이러한 AU에서의 HRD 초기화는 문제가 될 수 있다. 예를 들어, HRD는 불완전한 AU에 존재하지 않는 레이어 액세스 유닛이 있는 레이어에 대해 적절하게 초기화되지 않을 수 있다. 또한, 레이어 비트스트림을 유도하기 위한 역다중화 과정은 타깃 레이어에 적용되지 않는 네스팅된 SEI 메시지를 충분하고 효율적으로 제거하지 않을 수 있다. 레이어 비트스트림은 비트스트림 파티션이 하나의 레이어만 포함할 때 발생한다. 또한, 스케일러블 네스팅되지 않은 버퍼링 주기, 픽처 타이밍 및 디코딩 유닛 정보 SEI 메시지의 적용 가능한 OLS가 전체 비트스트림에 대해 명시될 수 있다. 그러나, 스케일러블 네스팅되지 않은 버퍼링 기간은 대신 0번째 OLS에 적용되어야 한다.
또한, 일부 VVC 구현은 sub_layer_cpb_params_present_flag가 0과 같을 때 HDR 파라미터를 추론하는 데 실패할 수 있다. 이러한 추론은 적절한 HRD 작업을 가능하게 할 수 있다. 또한, bp_max_sub_layers_minus1 및 pt_max_sub_layers_minus1의 값은 sps_max_sub_layers_minus1의 값과 동일해야 할 수 있다. 그러나, 버퍼링 주기 및 픽처 타이밍 SEI 메시지는 네스팅될 수 있고 다수의 OLS 및 다수의 OLS 각각의 다수의 레이어에 적용될 수 있다. 이러한 컨텍스트에서, 관련된 레이어는 다수의 SPS를 참조할 수 있다. 따라서, 시스템은 어떤 SPS가 각 레이어에 해당하는 SPS인지 추적하기 어려울 수 있다. 따라서, 이 두 신택스 요소의 값은 대신 vps_max_sub_layers_minus1 값에 기초하여 제한되어야 한다. 더욱이, 상이한 레이어는 상이한 수의 서브 레이어를 가질 수 있기 때문에, 이들 2개의 신택스 요소의 값은 모든 버퍼링 주기 및 픽처 타이밍 SEI 메시지에서 특정 값과 항상 동일하지 않을 수 있다.
또한, SHVC/MV-HEVC 및 VVC 모두에서 HRD 설계와 관련된 다음 문제가 있다. 서브 비트스트림 추출 프로세스는 타깃 OLS에 필요하지 않은 네스팅된 SEI 메시지를 포함하는 SEI NAL 유닛을 제거하지 않을 수 있다.
일반적으로, 본 개시는 멀티 레이어 비디오 비트스트림에서 출력 레이어 세트에 대한 SEI 메시지의 스케일러블 네스팅을 위한 접근 방식을 설명한다. 기술에 대한 설명은 VVC를 기반으로 한다. 그러나, 이 기술은 다른 비디오 코덱 사양에 기초하는 레이어화된 비디오 코딩에도 적용된다.
위에서 언급한 문제 중 하나 이상은 다음과 같이 해결할 수 있다. 구체적으로, 본 개시는 SHVC 및 MV-HEVC에 비해 훨씬 더 단순한 HRD 동작으로 HRD 파라미터의 효율적인 시그널링을 허용하는 HRD 설계 및 관련 양상을 위한 방법을 포함한다. 아래에 설명된 각 솔루션은 위에 설명된 문제에 해당한다. 예를 들어, 세 세트의 적합성 테스트를 요구하는 대신, 본 개시는 VPS에 의해 명시된 OLS의 적합성을 테스트하기 위해 한 세트의 적합성 테스트만을 사용할 수 있다. 또한, 비트스트림 파티션에 기초한 설계 대신에, 개시된 HRD 메커니즘은 항상 OLS의 각 레이어에 대해 별도로 동작할 수 있다. 또한, 모든 레이어 및 모든 OLS의 서브레이어에 대해 전역적인 시퀀스 레벨 HRD 파라미터는, 예컨대 VPS에서 한 번만 시그널링될 수 있다. 또한, 모든 OLS의 모든 레이어 및 서브레이어에 대해 단일 수의 전달 스케줄을 시그널링할 수 있다. OLS의 모든 레이어에 동일한 전달 스케줄 인덱스를 적용할 수도 있다. 또한, 불완전한 AU는 버퍼링 주기 SEI 메시지와 연관되지 않을 수 있다. 불완전한 AU는 CVS에 있는 모든 레이어에 대한 픽처를 포함하지 않는 AU이다. 이는 HRD가 OLS의 모든 레이어에 대해 항상 적절하게 초기화될 수 있도록 한다. 또한, OLS에서 타깃 레이어에 적용되지 않는 네스팅된 SEI 메시지를 효율적으로 제거하기 위한 메커니즘이 개시된다. 이는 레이어 비트스트림을 유도하기 위한 역다중화 프로세스를 지원한다. 또한, 스케일러블 네스팅되지 않은 버퍼링 주기, 픽처 타이밍, 디코딩 유닛 정보 SEI 메시지의 적용 가능한 OLS는 0번째 OLS로 명시될 수 있다. 또한, HDR 파라미터는 sub_layer_cpb_params_present_flag가 0과 같을 때 추론될 수 있으며, 이는 적절한 HRD 동작을 가능하게 할 수 있다. bp_max_sub_layers_minus1 및 pt_max_sub_layers_minus1의 값은 0 이상 vps_max_sub_layers_minus1 이하의 범위에 있어야 할 수 있다. 이러한 방식으로, 이러한 파라미터는 모든 버퍼링 주기 및 픽처 타이밍 SEI 메시지에 대해 특정 값일 필요가 없다. 또한, 서브 비트스트림 추출 프로세스는 타깃 OLS에 적용되지 않는 네스팅된 SEI 메시지를 포함하는 SEI NAL 유닛을 제거할 수 있다.
이전의 메커니즘의 구현 예는 다음과 같다. 출력 레이어는 출력되는 출력 레이어 세트의 레이어이다. OLS는 명시된 레이어 세트를 포함하는 레이어 세트로, 레이어 세트의 하나 이상의 레이어가 출력 레이어로 명시된다. OLS 레이어 인덱스는 OLS의 레이어 리스트에 대한 OLS의 레이어 인덱스이다. 서브 비트스트림 추출 프로세스는 타깃 OLS 인덱스 및 타깃 최대 TemporalId에 의해 결정된 타깃 집합에 속하지 않는 비트스트림의 NAL 유닛이 타깃 세트에 속하는 비트스트림의 NAL 유닛을 포함하는 출력 서브 비트스트림과 함께 비트스트림에서 제거되는 명시된 프로세스이다.
비디오 파라미터 세트 신택스의 예는 다음과 같다.
video_parameter_set_rbsp( ) { Descriptor
...
general_hrd_params_present_flag u(1)
if( general_hrd_params_present_flag ) {
num_units_in_tick u(32)
time_scale u(32)
general_hrd_parameters( )
}
vps_extension_flag u(1)
if( vps_extension_flag )
while( more_rbsp_data( ) )
vps_extension_data_flag u(1)
rbsp_trailing_bits( )
}
예시적인 시퀀스 파라미터 세트 RBSP 신택스는 다음과 같다.
seq_parameter_set_rbsp( ) { Descriptor
sps_decoding_parameter_set_id u(4)
sps_video_parameter_set_id u(4)
sps_max_sub_layers_minus1 u(3)
sps_reserved_zero_4bits u(4)
same_nonoutput_level_and_dpb_size_flag u(1)
profile_tier_level( 1, sps_max_sub_layers_minus1 )
if( !same_nonoutput_level_and_dpb_size_flag )
profile_tier_level( 0, sps_max_sub_layers_minus1 )
...
if( sps_max_sub_layers_minus1 > 0 )
sps_sub_layer_ordering_info_present_flag u(1)
dpb_parameters( 1 )
if( !same_nonoutput_level_and_dpb_size_flag )
dpb_parameters( 0 )
long_term_ref_pics_flag u(1)
...
sps_scaling_list_enabled_flag u(1)
vui_parameters_present_flag u(1)
if( vui_parameters_present_flag )
vui_parameters( )
sps_extension_flag u(1)
if( sps_extension_flag )
while( more_rbsp_data( ) )
sps_extension_data_flag u(1)
rbsp_trailing_bits( )
}
DPB 파라미터 신택스의 예는 다음과 같다.
dpb_parameters( reorderMaxLatencyPresentFlag ) { Descriptor
for( i = ( sps_sub_layer_ordering_info_present_flag ? 0 : sps_max_sub_layers_minus1 );
i <= sps_max_sub_layers_minus1; i++ ) {
sps_max_dec_pic_buffering_minus1[ i ] ue(v)
if( reorderMaxLatencyPresentFlag ) {
sps_max_num_reorder_pics[ i ] ue(v)
sps_max_latency_increase_plus1[ i ] ue(v)
}
}
}
일반적인 HRD 파라미터 신택스의 예는 다음과 같다.
general_hrd_parameters( ) { Descriptor
general_nal_hrd_params_present_flag u(1)
general_vcl_hrd_params_present_flag u(1)
if( general_nal_hrd_params_present_flag | | general_vcl_hrd_params_present_flag ) {
decoding_unit_hrd_params_present_flag u(1)
if( decoding_unit_hrd_params_present_flag ) {
tick_divisor_minus2 u(8)
decoding_unit_cpb_params_in_pic_timing_sei_flag u(1)
}
bit_rate_scale u(4)
cpb_size_scale u(4)
if( decoding_unit_hrd_params_present_flag )
cpb_size_du_scale u(4)
}
if( vps_max_sub_layers_minus1 > 0 )
sub_layer_cpb_params_present_flag u(1)
if( TotalNumOlss > 1 )
num_layer_hrd_params_minus1 ue(v)
hrd_cpb_cnt_minus1 ue(v)
for( i = 0; i <= num_layer_hrd_params_minus1; i++ ) {
if( vps_max_sub_layers_minus1 > 0 )
hrd_max_temporal_id[ i ] u(3)
layer_level_hrd_parameters( hrd_max_temporal_id[ i ] )
}
if( num_layer_hrd_params_minus1 > 0 )
for( i = 1; i < TotalNumOlss; i++ )
for( j = 0; j < NumLayersInOls[ i ]; j++ )
layer_level_hrd_idx[ i ][ j ] ue(v)
}
예시적인 비디오 파라미터 세트 RBSP 의미는 다음과 같다. each_layer_is_an_ols_flag는 각 출력 레이어 세트가 하나의 레이어만 포함하고 비트스트림의 각 레이어 자체가 유일한 출력 레이어인 단일 포함 레이어가 있는 출력 레이어 세트임을 명시하기 위해 1과 동일하게 설정된다. each_layer_is_an_ols_flag는 출력 레이어 세트가 하나 이상의 레이어를 포함할 수 있음을 명시하기 위해 0으로 설정된다. vps_max_layers_minus1이 0과 같다면, each_layer_is_an_ols_flag의 값은 1과 같은 것으로 추론된다. 그렇지 않고, vps_all_independent_layers_flag가 0과 같을 때, each_layer_is_an_ols_flag의 값은 0과 같은 것으로 추론된다.ols_mode_idc는 VPS에 의해 명시된 총 OLS 수가 vps_max_layers_minus1 + 1과 같고, i번째 OLS는 0 이상 I 이하의 레이어 인덱스를 갖는 레이어를 포함하고, 각 OLS에 대해 OLS에서 가장 높은 레이어 인덱스만 출력되는 것을 명시하기 위해 0과 동일하게 설정된다. ols_mode_idc는 VPS에 의해 명시된 총 OLS 수가 vps_max_layers_minus1 + 1과 같고, i번째 OLS는 0 이상 I 이하의 레이어 인덱스를 갖는 레이어를 포함하고, 각 OLS에 대해 OLS에서 모든 레이어가 출력되는 것을 명시하기 위해 1과 동일하게 설정된다. ols_mode_idc는 VPS에 의해 명시된 총 OLS 수가 명시적으로 시그널링되고 각 OLS에 대해 OLS에서 가장 높은 레이어 및 OLS에서 명시적으로 시그널링된 하위 레이어 세트가 출력되는 것을 명시하기 위해 2와 동일하게 설정된다. ols_mode_idc의 값은 0에서 2까지의 범위에 있어야 한다. ols_mode_idc의 값 3은 예약되어 있다. vps_all_independent_layers_flag가 1과 동일하고 each_layer_is_an_ols_flag가 0일 때, ols_mode_idc의 값은 2와 동일한 것으로 추론된다. num_output_layer_sets_minus1 플러스 1은 ols_mode_idc가 2일 때 VPS에 의해 명시된 총 OLS 수를 명시한다.
VPS에 의해 명시된 총 OLS 수를 명시하는 변수 TotalNumOlss는 다음과 같이 유도된다.
Figure pct00001
layer_included_flag[ i ][ j ]는 ols_mode_idc가 2일 때 j번째 레이어(nuh_layer_id가 vps_layer_id[ j ]와 동일한 레이어)가 i번째 OLS에 포함되는지 여부를 명시한다. layer_included_flag[ i ][ j ]는 j번째 레이어가 i번째 OLS에 포함된다는 것을 명시하기 위해 1과 동일하게 설정된다. layer_included_flag[ i ][ j ]는 j번째 레이어가 i번째 OLS에 포함되지 않음을 명시하기 위해 0으로 설정된다.
i번째 OLS의 레이어 수를 명시하는 변수 NumLayerInOls[ i ] 및 i 번째 OLS에서 j 번째 레이어의 nuh_layer_id 값을 명시하는 변수 LayerIdInOls[ i ][ j ]는 다음과 같이 유도된다.
Figure pct00002
nuh_layer_id가 LayerIdInOls[ i ][ j ]와 동일한 레이어의 OLS 레이어 인덱스를 명시하는 변수 OlsLayeIdx[ i ][ j ]는 다음과 같이 유도된다.
Figure pct00003
각 OLS의 최하위 레이어는 독립적인 레이어야 한다. 다시 말해, 0 이상 TotalNumOlss - 1 이하의 범위에 있는 각 i에 대해 vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ]의 값은 1과 동일해야 한다. 각 레이어는 VPS에 의해 지정된 적어도 하나의 OLS에 포함되어야 한다. 다시 말해, 0 이상 vps_max_layers_minus1 이하의 범위에서 k에 대한 vps_layer_id[ k ] 중 하나와 동일한 nuh_layer_id nuhLayerId의 특정 값을 갖는 각 레이어에 대해, i 및 j 값의 적어도 한 쌍이 있어야 하고, i는 0 이상 TotalNumOlss - 1 이하의 범위에 있고 j는 0 이상 NumLayerInOls[ i ] - 1 이하의 범위에 있으므로, LayerIdInOls[ i ][ j ]의 값이 nuhLayerId와 동일하다. OLS의 모든 레이어는 OLS의 출력 레이어거나 OLS의 출력 레이어의 (직접 또는 간접) 참조 레이어야 한다.
vps_output_layer_flag[ i ][ j ]는 ols_mode_idc가 2일 때 i번째 OLS에서 j번째 레이어가 출력되는지 여부를 지정한다. 1과 동일한 vps_output_layer_flag[ i ]는 i번째 OLS에서 j번째 레이어가 출력되는 것을 명시한다. vps_output_layer_flag[ i ]는 i번째 OLS에서 j번째 레이어가 출력되지 않음을 명시하기 위해 0과 동일하게 설정된다. vps_all_independent_layers_flag가 1이고 each_layer_is_an_ols_flag가 0일 때, vps_output_layer_flag[ i ]의 값은 1과 동일한 것으로 추론된다. 값 1이 i번째 OLS의 j번째 레이어가 출력되는 것을 명시하고, 값 0가 i번째 OLS의 j번째 레이어가 출력되지 않음을 명시하는 변수 OutputLayerFlag[ i ][ j ]는 다음과 같이 유도된다.
Figure pct00004
0번째 OLS는 최하위 레이어(nuh_layer_id가 vps_layer_id[ 0 ]인 레이어)만 포함하고 0번째 OLS의 경우 포함된 유일한 레이어가 출력된다.
vps_extension_flag는 vps_extension_data_flag 신택스 요소가 VPS RBSP 신택스 구조에 존재하지 않는다는 것을 명시하기 위해 0과 동일하게 설정된다. vps_extension_flag는 VPS RBSP 신택스 구조에 존재하는 vps_extension_data_flag 신택스 요소가 있음을 명시하기 위해 1과 동일하게 설정된다. vps_extension_data_flag는 임의의 값을 가질 수 있다. vps_extension_data_flag의 존재와 값은 명시된 프로파일에 대한 디코더 적합성에 영향을 미치지 않는다. 디코더는 모든 vps_extension_data_flag 신택스 요소를 무시해야 한다.
DPB 파라미터 의미의 예는 다음과 같다. dpb_parameters() 신택스 구조는 DPB 크기 정보를 제공하고, 선택적으로 최대 픽처 재정렬 수와 최대 지연 시간(MRML) 정보를 제공한다. 각 SPS는 하나 또는 dpb_parameters() 신택스 구조를 포함한다. SPS의 첫 번째 dpb_parameters() 신택스 구조는 DPB 크기 정보와 MRML 정보를 모두 포함한다. 존재하는 경우, SPS의 두 번째 dpb_parameters() 신택스 구조에는 DPB 크기 정보만 포함된다. SPS의 첫 번째 dpb_parameters() 신택스 구조의 MRML 정보는 해당 레이어가 OLS의 출력 레이어인지 여부에 관계없이 SPS를 참조하는 레이어에 적용된다. SPS에서 첫 번째 dpb_parameters() 신택스 구조의 DPB 크기 정보는 레이어가 OLS의 출력 레이어인 경우 SPS를 참조하는 레이어에 적용된다. 존재하는 경우, SPS에서 제2 dpb_parameters() 신택스 구조에 포함된 DPB 크기 정보는 레이어가 OLS의 비출력 레이어일 때 SPS를 참조하는 레이어에 적용된다. SPS가 하나의 dpb_parameters() 신택스 구조만을 포함하는 경우, 비출력 레이어인 레이어에 대한 DPB 크기 정보는 출력 레이어인 레이어에 대한 DPB 크기 정보와 동일한 것으로 추론된다.
일반적인 HRD 파라미터 의미의 예는 다음과 같다. general_hrd_parameters() 신택스 구조는 HRD 동작에 사용되는 HRD 파라미터를 제공한다. sub_layer_cpb_params_present_flag는 i번째 layer_level_hrd_parameters() 신택스 구조가 0 이상 hrd_max_temporal_id[ i ] 이하의 범위에 있는 TemporalId를 갖는 서브레이어 표현을 위한 HRD 파라미터를 포함하는 것을 명시하기 위해 1과 동일하게 설정된다. sub_layer_cpb_params_present_flag는 i번째 layer_level_hrd_parameters() 신택스 구조가 hrd_max_temporal_id[ i ]와 동일한 TemporalId를 갖는 서브레이어 표현을 위한 HRD 파라미터만을 포함하는 것을 명시하기 위해 0과 동일하게 설정된다. vps_max_sub_layers_minus1이 0과 같을 때, sub_layer_cpb_params_present_flag의 값은 0과 같은 것으로 추론된다. sub_layer_cpb_params_present_flag가 0과 같을 때, TemporalId가 0 이상 hrd_max_temporal_id[ i ] - 1 이하의 범위에 있는 서브레이어 표현에 대한 HRD 파라미터는 hrd_max_temporal_id[ i ]와 동일한 TemporalId를 갖는 서브레이어 표현에 대한 HRD 파라미터와 동일한 것으로 추정된다. 여기에는 layer_level_hrd_parameters 신택스 구조에서 조건 if( general_vcl_hrd_params_present_flag ) 바로 아래의 fixed_pic_rate_general_flag[ i ] 신택스 요소에서 sub_layer_hrd_parameters( i ) 신택스 구조까지의 HRD 파라미터가 포함된다. num_layer_hrd_params_minus1 + 1은 general_hrd_parameters() 신택스 구조에 존재하는 layer_level_hrd_parameters() 신택스 구조의 수를 명시한다. num_layer_hrd_params_minus1의 값은 0 이상 63 이하의 범위에 있어야 한다. hrd_cpb_cnt_minus1 + 1은 CVS의 비트스트림에서 대체 CPB 사양의 수를 명시한다. hrd_cpb_cnt_minus1의 값은 0 이상 31 이하의 범위에 있어야 한다. hrd_max_temporal_id[ i ]는 HRD 파라미터가 i번째 layer_level_hrd_parameters() 신택스 구조에 포함되는 최상위 서브레이어 표현의 TemporalId를 명시한다. hrd_max_temporal_id[ i ]의 값은 0 이상 vps_max_sub_layers_minus1 이하의 범위에 있어야 한다. vps_max_sub_layers_minus1이 0과 같을 때, hrd_max_temporal_id[ i ]의 값은 0과 같은 것으로 추론된다. layer_level_hrd_idx[ i ][ j ]는 i번째 OLS에서 j번째 레이어에 적용되는 layer_level_hrd_parameters() 신택스 구조의 인덱스를 명시한다. layer_level_hrd_idx[[ i ][ j ]의 값은 0 이상 num_layer_hrd_params_minus1 이하의 범위에 있어야 한다. 존재하지 않을 때, layer_level_hrd_idx[[ 0 ][ 0 ]의 값은 0과 같은 것으로 추론된다.
예시적인 서브 비트스트림 추출 프로세스는 다음과 같다. 이 프로세스에 대한 입력은 비트스트림 inBitstream, 타깃 OLS 인덱스 targetOlsIdx 및 타깃 최고 TemporalId 값 tIdTarget이다. 이 프로세스의 출력은 서브 비트스트림 outBitstream이다. 입력 비트스트림에 대한 비트스트림 적합성의 요구사항은 입력으로 다음의 조건을 만족하는 비트스트림과 함께 이 절에 명시된 프로세스의 출력인 임의의 출력 서브 비트스트림, VPS에 의해 명시된 OLS 리스트에 대한 인덱스와 동일한 targetOlsIdx 및 0 이상 6 이하의 범위의 임의의 값과 동일한 tIdTarget가 일치하는 비트스트림이어야 하는 것이다. 출력 서브 비트스트림은 LayerIdInOls[ targetOlsIdx ]의 nuh_layer_id 값 각각과 동일한 nuh_layer_id를 갖는 적어도 하나의 VCL NAL 유닛을 포함해야 한다. 출력 서브 비트스트림에는 TemporalId가 tIdTarget과 같은 VCL NAL 유닛이 하나 이상 포함되어야 한다. 일치하는 비트스트림은 TemporalId가 0인 코딩된 슬라이스 NAL 유닛을 하나 이상 포함하지만, nuh_layer_id가 0인 코딩된 슬라이스 NAL 유닛을 포함할 필요는 없다.
출력 서브 비트스트림 OutBitstream은 다음과 같이 유도된다. 비트스트림 outBitstream은 비트스트림 inBitstream과 동일하게 설정된다. TemporalId가 tIdTarget보다 큰 모든 NAL 유닛을 outBitstream에서 제거한다. LayerIdInOls[ targetOlsIdx ] 리스트에 포함되지 않은 nuh_layer_id가 있는 모든 NAL 장치를 outBitstream에서 제거한다. nesting_ols_flag가 1이고 NestingOlsIdx[ i ]가 targetOlsIdx와 같도록 0 이상 nesting_num_olss_minus1 이하의 범위에 i 값이 없는 스케일러블 네스팅 SEI 메시지를 포함하는 모든 SEI NAL 유닛을 outBitstream에서 제거한다. targetOlsIdx가 0보다 크면, payloadType이 0(버퍼링 기간), 1(픽처 타이밍) 또는 130(디코딩 유닛 정보)인 스케일러블 네스팅되지 않은 SEI 메시지를 포함하는 모든 SEI NAL 유닛을 outBitstream에서 제거한다.
HRD 일반 측면의 예는 다음과 같다. 이 섹션에서는 HRD와 비트스트림 및 디코더 적합성을 검사하기 위한 HRD의 사용을 명시한다. 비트스트림 적합성 테스트 세트는 전체 비트스트림으로 불리고, 비트스트림의 적합성을 검사하기 위해 사용되며, entireBitstream으로 표시된다. 비트스트림 적합성 테스트 세트는 VPS에 의해 명시된 각 OLS의 적합성 및 각 OLS의 시간적 서브세트를 테스트하기 위한 것이다. 각 테스트에 대해, 다음 순서 단계가 나열된 순서대로 적용된다.
OLS 인덱스 opOlsIdx 및 가장 높은 TemporalId 값 opTid가 있는 타깃 OLS를 선택하여 targetOp로 표시된 테스트 중인 작업 포인트를 선택한다. opOlsIdx의 값은 0 이상 TotalNumOlss - 1 이하의 범위에 있다. opTid의 값은 0 이상 vps_max_sub_layers_minus1 이하의 범위에 있다. opOlsIdx와 opTid의 값은 entireBitstream, opOlsIdx 및 opTid를 입력으로 하여 서브 비트스트림 추출 프로세스를 호출하여 출력되는 서브 비트스트림 BitstreamToDecode가 다음 조건을 만족하도록 한다. BitstreamToDecode의 LayerIdInOls[ opOlsIdx ]에 있는 nuh_layer_id 값의 각각과 동일한 nuh_layer_id를 갖는 적어도 하나의 VCL NAL 유닛이 있다. BitstreamToDecode에는 TemporalId가 opTid와 동일한 VCL NAL 유닛이 하나 이상 있다.
TargetOlsIdx 및 Htid의 값은 각각 targetOp의 opOlsIdx 및 opTid와 동일하게 설정된다. ScIdx 값이 선택된다. 선택된 ScIdx는 0 이상 hrd_cpb_cnt_minus1 이하의 범위에 있어야 한다. TargetOlsIdx에 적용 가능한 (TargetLayerBitstream에 있거나 본 명세서에 명시되지 않은 외부 메커니즘을 통해 이용 가능한) 버퍼링 기간 SEI 메시지와 연관된 BitstreamToDecode의 액세스 유닛은 HRD 초기화 포인트로 선택되고 타깃 OLS의 각 레이어에 대한 액세스 유닛 0로 불린다.
후속 단계는 타깃 OLS에서 OLS 레이어 인덱스 TargetOlsLayerIdx가 있는 각 레이어에 적용된다. 타깃 OLS에 레이어가 하나만 있는 경우, TargetLayerBitstream 테스트 중인 레이어 비트스트림은 BitstreamToDecode와 동일하게 설정된다. 그렇지 않으면, BitstreamToDecode, TargetOlsIdx 및 TargetOlsLayerIdx를 입력으로 사용하여 레이어 비트스트림을 유도하기 위한 역다중화 프로세스를 호출하여 TargetLayerBitstream을 유도하고 출력을 TargetLayerBitstream에 할당한다.
TargetLayerBitstream에 적용 가능한 layer_level_hrd_parameters() 신택스 구조와 sub_layer_hrd_parameters() 신택스 구조는 다음과 같이 선택된다. VPS의 layer_level_hrd_idx[ TargetOlsIdx ][ TargetOlsLayerIdx ] 번째 layer_level_hrd_parameters( ) 신택스 구조(또는 사용자 입력과 같은 외부 메커니즘을 통해 제공됨)가 선택된다. 선택된 layer_level_hrd_parameters() 신택스 구조 내에서 BitstreamToDecode가 유형 I 비트스트림이면 조건 if( general_vcl_hrd_params_present_flag ) 바로 다음에 오는 sub_layer_hrd_parameters( Htid ) 신택스 구조가 선택되고 변수 NalHrdModeFlag가 0으로 설정된다. 그렇지 않으면(BitstreamToDecode는 유형 II 비트스트림임), 조건 if( general_vcl_hrd_params_present_flag )(이 경우 변수 NalHrdModeFlag가 0으로 설정됨) 또는 조건 if( general_nal_hrd_params_present_flag ) (이 경우 변수 NalHrdModeFlag가 1로 설정된 경우)가 선택된다. BitstreamToDecode가 유형 II 비트스트림이고 NalHrdModeFlag가 0과 같을 때, 필러 데이터 NAL 유닛을 제외한 모든 비-VCL NAL 유닛, 그리고 존재하는 경우 NAL 유닛 스트림으로부터 바이트 스트림을 형성하는 모든 leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes 및 trailing_zero_8bits 신택스 요소는 TargetLayerBitstream에서 삭제되고 나머지 비트스트림은 TargetLayerBitstream에 할당된다.
Decoding_unit_hrd_params_present_flag가 1과 같을 때, CPB는 액세스 유닛 레벨(이 경우 변수 DecodingUnitHrdFlag가 0으로 설정됨) 또는 디코딩 유닛 레벨(이 경우 변수 DecodingUnitHrdFlag 1로 설정됨)에서 동작하도록 스케줄링된다. 그렇지 않으면, DecodingUnitHrdFlag는 0으로 설정되고 CPB는 액세스 유닛 수준에서 동작하도록 스케줄링된다. 액세스 유닛 0부터 시작하는 TargetLayerBitstream의 각 액세스 유닛에 대해, 액세스 유닛과 연관되고 TargetOlsIdx 및 TargetOlsLayerIdx에 적용되는 버퍼링 기간 SEI 메시지(TargetLayerBitstream에 존재하거나 외부 메커니즘을 통해 사용 가능)가 선택되고, 액세스 유닛과 연관되고 TargetOlsIdx 및 TargetOlsLayerIdx에 적용되는 픽처 타이밍 SEI 메시지(TargetLayerBitstream에 존재하거나 외부 메커니즘을 통해 사용 가능)가 선택되며, DecodingUnitHrdFlag가 1이고 decoding_unit_cpb_params_in_pic_timing_sei_flag가 0일 때, 액세스 유닛의 디코딩 유닛과 연관되고 TargetOlsIdx 및 TargetOlsLayerIdx에 적용되는 디코딩 유닛 정보 SEI 메시지(TargetLayerBitstream에 존재하거나 또는 외부 메커니즘을 통해 사용 가능)가 선택된다.
각 적합성 테스트에는 위의 각 단계에서 하나의 옵션 조합이 포함된다. 단계에 대해 둘 이상의 옵션이 있는 경우, 특정 적합성 테스트에 대해 하나의 옵션만 선택된다. 모든 단계의 가능한 모든 조합은 전체 적합성 테스트 세트를 형성한다. 테스트 중인 각 연산 포인트에 대해, 수행할 비트스트림 적합성 테스트의 수는 n0 * n1 * n2 * n3과 동일하며, 여기서 n0, n1, n2 및 n3의 값은 다음과 같이 지정된다. n1은 hrd_cpb_cnt_minus1 + 1과 같다. n1은 버퍼링 기간 SEI 메시지와 관련된 BitstreamToDecode의 액세스 유닛 수이다. n2는 다음과 같이 유도된다. BitstreamToDecode가 유형 I 비트스트림인 경우, n0은 1과 같다. 그렇지 않으면(BitstreamToDecode는 유형 II 비트스트림임), n0은 2와 같다. n3은 다음과 같이 유도된다. Decoding_unit_hrd_params_present_flag가 0과 같으면 n3은 1과 같다. 그렇지 않으면 n3은 2와 같다.
HRD는 비트스트림 역다중화기(선택적으로 존재), 각 레이어에 대한 코딩된 픽처 버퍼(CPB), 각 레이어에 대한 즉각적인 디코딩 프로세스, 각 레이어에 대한 서브 DPB를 포함하는 디코딩된 픽처 버퍼(DPB) 및 출력 크로핑을 포함한다.
예에서, HRD는 다음과 같이 동작한다. HRD는 디코딩 유닛 0에서 초기화되고, DPB의 각 서브-DPB 및 각 CPB는 비어 있는 것으로 설정된다. 각 sub-DPB에 대한 sub-DPB 충만도는 0과 동일하게 설정된다. 초기화 후, HRD는 후속 버퍼링 주기 SEI 메시지에 의해 다시 초기화되지 않는다. 명시된 도착 스케줄에 따라 각 CPB로 흐르는 디코딩 유닛과 관련된 데이터는 HSS에 의해 전달된다. 각각의 디코딩 유닛과 관련된 데이터는 디코딩 유닛의 CPB 제거 시점에서 순시 디코딩 프로세스에 의해 즉시 제거 및 디코딩된다. 각 디코딩된 픽처는 DPB에 배치된다. 디코딩된 픽처는 인터 예측 참조에 더 이상 필요하지 않고 출력에 더 이상 필요하지 않을 때 DPB에서 제거된다.
일 예에서, 레이어 비트스트림을 유도하기 위한 역다중화 프로세스는 다음과 같다. 이 프로세스에 대한 입력은 비트스트림 inBitstream, 타깃 OLS 인덱스 targetOlsIdx 및 타깃 OLS 레이어 인덱스 targetOlsLayerIdx이다. 이 프로세스의 출력은 레이어 비트스트림 outBitstream이다. 출력 레이어 비트스트림 outBitstream은 다음과 같이 유도된다. 비트스트림 outBitstream은 비트스트림 inBitstream과 동일하게 설정된다. nuh_layer_id가 LayerIdInOls[ targetOlsIdx ][ targetOlsLayerIdx ]와 같지 않은 모든 NAL 유닛을 outBitstream에서 제거한다. nesting_ols_flag가 1이고 각각 0 이상 nesting_num_olss_minus1 이하 및 0 이상 nesting_num_ols_layers_minus1[ i ] 이하의 범위에 i 및 j 값이 없는 스케일러블 네스팅 SEI 메시지를 포함하는 모든 SEI NAL 유닛을 outBitstream에서 제거하여 NestingOlsLayerIdx[ i ][ j ]가 targetOlsLayerIdx와 동일하도록 한다. nesting_ols_flag가 1이고 각각 0 이상 nesting_num_olss_minus1 이하 및 0 이상 nesting_num_ols_layers_minus1[ i ] 이하의 범위에 i 및 j 값이 있는 스케일러블 네스팅 SEI 메시지를 포함하는 모든 SEI NAL 유닛을 outBitstream에서 제거하여 NestingOlsLayerIdx[ i ][ j ]가 targetOlsLayerIdx보다 작도록 한다. nesting_ols_flag가 0이고 0 이상 NestingNumLayers - 1 이하의 범위에 i 값이 없는 스케일러블 네스팅 SEI 메시지를 포함하는 모든 SEI NAL 유닛을 outBitstream에서 제거하여 NestingLayerId[ i ]가 LayerIdInOls[ targetOlsIdx ][ targetOlsLayerIdx ]와 같도록 한다.
버퍼링 주기 SEI 메시지 신택스의 예는 다음과 같다.
buffering_period( payloadSize ) { Descriptor
...
bp_max_sub_layers_minus1 u(3)
bp_cpb_cnt_minus1 ue(v)
...
}
스케일러블 네스팅 SEI 메시지 신택스의 예는 다음과 같다.
scalable_nesting( payloadSize ) { Descriptor
nesting_ols_flag u(1)
if( nesting_ols_flag ) {
nesting_num_olss_minus1 ue(v)
for( i = 0; i <= nesting_num_olss_minus1; i++ ) {
nesting_ols_idx_delta_minus1[ i ] ue(v)
if( NumLayersInOls[ NestingOlsIdx[ i ] ] > 1 ) {
nesting_num_ols_layers_minus1[ i ] ue(v)
for( j = 0; j <= nesting_num_ols_layers_minus1[ i ]; j++ )
nesting_ols_layer_idx_delta_minus1[ i ][ j ] ue(v)
}
}
} else {
nesting_all_layers_flag u(1)
if( !nesting_all_layers_flag ) {
nesting_num_layers_minus1 ue(v)
for( i = 1; i <= nesting_num_layers_minus1; i++ )
nesting_layer_id[ i ] u(6)
}
}
nesting_num_seis_minus1 ue(v)
while( !byte_aligned( ) )
nesting_zero_bit /* equal to 0 */ u(1)
for( i = 0; i <= nesting_num_seis_minus1; i++ )
sei_message( )
}
일반적인 SEI 페이로드 의미의 예는 다음과 같다. 다음은 스케일러블 네스팅되지 않은 SEI 메시지의 적용 가능한 레이어(OLS의 컨텍스트에서 또는 일반적으로)에 적용된다. 스케일러블 네스팅되지 않은 SEI 메시지의 경우, payloadType이 0(버퍼링 주기), 1(픽처 타이밍) 또는 130(디코딩 유닛 정보)일 때 스케일러블 네스팅되지 않은 SEI 메시지는 0번째 OLC의 컨텍스트에서 최하위 레이어에만 적용된다. 스케일러블 네스팅되지 않은 SEI 메시지의 경우, payloadType이 VclAssociatedSeiList 중 임의의 값과 같을 때, 스케일러블 네스팅되지 않은 SEI 메시지는 VCL NAL 유닛이 SEI 메시지를 포함하는 SEI NAL 유닛의 nuh_layer_id와 동일한 nuh_layer_id를 갖는 레이어에만 적용된다.예시적인 버퍼링 주기 SEI 메시지 의미는 다음과 같다. 버퍼링 주기 SEI 메시지는 디코딩 순서에서 연관된 액세스 유닛의 위치에서 HRD의 초기화를 위한 초기 CPB 제거 지연 및 초기 CPB 제거 지연 오프셋 정보를 제공한다. 버퍼링 기간 SEI 메시지가 존재할 때, 픽처가 0과 동일한 TemporalId를 갖고 RASL 또는 RADL(Random Access Decodeable Leading) 픽처가 아닌 경우 픽처는 notDiscardablePic 픽처라고 한다. 현재 픽처가 디코딩 순서에서 비트스트림의 첫 번째 픽처가 아닌 경우, prevNonDiscardablePic이 RASL 또는 RADL 픽처가 아닌 TemporalId가 0과 동일한 디코딩 순서에서 이전 픽처가 되도록 한다.버퍼링 기간 SEI 메시지의 존재는 다음과 같이 명시된다. NalHrdBpPresentFlag가 1과 같거나 VclHrdBpPresentFlag가 1과 같으면, CVS의 각 액세스 유닛에 대해 다음이 적용된다. 액세스 유닛이 IRAP 또는 GDR(Gradual Decoder Refresh) 액세스 유닛인 경우, 동작 포인트에 적용 가능한 버퍼링 주기 SEI 메시지는 액세스 유닛과 연관되어야 한다. 그렇지 않고, 액세스 유닛이 notDiscardablePic을 포함하는 경우, 동작 포인트에 적용 가능한 버퍼링 기간 SEI 메시지는 액세스 유닛과 연관되거나 연관되지 않을 수 있다. 그렇지 않으면, 액세스 유닛은 동작 포인트에 적용 가능한 버퍼링 기간 SEI 메시지와 연관되지 않는다. 그렇지 않으면(NalHrdBpPresentFlag 및 VclHrdBpPresentFlag가 둘 다 0임) CVS의 액세스 유닛이 버퍼링 기간 SEI 메시지와 연관되지 않는다. 일부 애플리케이션의 경우, 버퍼링 주기 SEI 메시지의 빈번한 존재가 바람직할 수 있다(예: IRAP 픽처 또는 비-IRAP 픽처에서의 랜덤 액세스 또는 비트스트림 스플라이싱의 경우). 액세스 유닛의 픽처가 버퍼링 주기 SEI 메시지와 연관될 때, 액세스 유닛은 CVS에 존재하는 각 레이어의 픽처를 가져야 하고 액세스 유닛의 각 픽처는 버퍼링 주기 SEI 메시지와 함께 있어야 한다.
bp_max_sub_layers_minus1 + 1은 버퍼링 주기 SEI 메시지에서 CPB 제거 지연 및 CBP 제거 오프셋이 지시되는 시간적 서브레이어의 최대 개수를 명시한다. bp_max_sub_layers_minus1의 값은 0 이상 vps_max_sub_layers_minus1 이하의 범위에 있어야 한다. bp_cpb_cnt_minus1 + 1은 bp_nal_hrd_params_present_flag가 1과 같을때, i 번째 시간적 서브레이어의 nal_initial_cpb_removal_delay[ i ][ j ]와 nal_initial_cpb_removal_offset[ i ][ j ] 신택스 요소 쌍의 개수를 명시하고 bp_vcl_hrd_params_present_flag가 1과 같을 때, i 번째 시간적 서브레이어의 vcl_initial_cpb_removal_delay[ i ][ j ]와 vcl_initial_cpb_removal_offset[ i ][ j ] 신택스 요소 페어의 개수를 명시한다. bp_cpb_cnt_minus1의 값은 0 이상 31 이하의 범위에 있어야 한다. bp_cpb_cnt_minus1의 값은 hrd_cpb_cnt_minus1의 값과 동일해야 한다.
예시적인 픽처 타이밍 SEI 메시지 의미는 다음과 같다. 픽처 타이밍 SEI 메시지는 SEI 메시지와 연관된 액세스 유닛에 대한 CPB 제거 지연 및 DPB 출력 지연 정보를 제공한다. 현재 액세스 유닛에 적용 가능한 버퍼링 주기 SEI 메시지의 bp_nal_hrd_params_present_flag 또는 bp_vcl_hrd_params_present_flag가 1인 경우 변수 CpbDpbDelaysPresentFlag는 1로 설정된다. 그렇지 않으면 CpbDpbDelaysPresentFlag가 0으로 설정된다. 픽처 타이밍 SEI 메시지의 존재는 다음과 같이 명시된다. CpbDpbDelaysPresentFlag가 1과 같으면 픽처 타이밍 SEI 메시지는 현재 액세스 유닛과 연관되어야 한다. 그렇지 않으면(CpbDpbDelaysPresentFlag가 0과 동일), 현재 액세스 유닛과 관련된 픽처 타이밍 SEI 메시지가 없어야 한다. 픽처 타이밍 SEI 메시지 신택스 내의 TemporalId는 픽처 타이밍 SEI 메시지를 포함하는 SEI NAL 유닛의 TemporalId이다. pt_max_sub_layers_minus1 + 1은 CPB 제거 지연 정보가 픽처 타이밍 SEI 메시지에 포함되는 최상위 서브레이어 표현의 TemporalId를 명시한다. pt_max_sub_layers_minus1의 값은 0 이상 vps_max_sub_layers_minus1 이하의 범위에 있어야 한다.
스케일러블 네스팅 SEI 메시지 의미의 예는 다음과 같다. 스케일러블 네스팅 SEI 메시지는 SEI 메시지를 특정 OLS의 컨텍스트에서 특정 레이어와 연관시키거나 OLS의 컨텍스트가 아닌 특정 레이어와 연관시키는 메커니즘을 제공한다. 스케일러블 네스팅 SEI 메시지에는 하나 이상의 SEI 메시지가 포함된다. 스케일러블 네스팅 SEI 메시지에 포함된 SEI 메시지는 스케일러블 네스팅된 SEI 메시지라고도 불린다. 스케일러블 네스팅 SEI 메시지에 SEI 메시지를 포함할 때 다음 제한 사항이 적용되는 것은 비트스트림 적합성의 요구 사항이다. 132(디코딩된 픽처 해시) 또는 133(스케일러블 네스팅)과 같은 payloadType을 갖는 SEI 메시지는 스케일러블 네스팅 SEI 메시지에 포함되지 않는다. 스케일러블 네스팅 SEI 메시지가 버퍼링 주기, 픽처 타이밍 또는 디코딩 유닛 정보 SEI 메시지를 포함할 때, 스케일러블 네스팅 SEI 메시지는 0(버퍼링 주기), 1(픽처 타이밍) 또는 130 (디코딩 유닛 정보)과 같지 않은 payloadType을 갖는 다른 SI 메시지를 포함하지 않는다.
스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛의 nal_unit_type 값에 다음 제한 사항이 적용되는 것은 비트스트림 적합성의 요구 사항이다. 스케일러블 네스팅 SEI 메시지가 0(버퍼링 주기), 1(픽처 타이밍), 130(디코딩 유닛 정보), 145(종속 RAP 표시) 또는 168(프레임 필드 정보)과 같은 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 ]번째 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과 동일할 때 NestingOlsIdx[ i ]번째 OLS의 컨텍스트에서 스케일러블 네스팅된 SEI 메시지를 적용하는 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는 1로 설정되어 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 레이어에 일반적으로 스케일러블 네스팅된 SEI 메시지가 적용됨을 명시한다. nesting_all_layers_flag는 0으로 설정되어 현재 SEI NAL 유닛의 nuh_layer_id보다 크거나 같은 nuh_layer_id를 갖는 모든 레이어에 일반적으로 스케일러블 네스팅된 SEI 메시지가 적용되거나 적용되지 않을 수 있음을 명시한다. 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가 0과 같을 때, 스케일러블 네스팅된 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과 같아야 한다.
도 9는 예시적인 비디오 코딩 장치(900)의 개략도이다. 비디오 코딩 장치(900)는 본 명세서에 설명된 바와 같이 개시된 예/실시예를 구현하기에 적합하다. 비디오 코딩 장치(900)는 네트워크를 통해 데이터 업스트림 및/또는 다운스트림을 통신하기 위한 송신기 및/또는 수신기를 포함하는 다운스트림 포트(920), 업스트림 포트(950) 및/또는 트랜시버 유닛(Tx/Rx, 910)을 포함한다. 비디오 코딩 장치(900)는 또한 데이터를 처리하기 위한 논리 유닛 및/또는 중앙 처리 유닛(CPU) 및 데이터를 저장하기 위한 메모리(932)를 포함하는 프로세서(930)를 포함한다. 비디오 코딩 장치(900)는 또한 전기, 광-전기(OE) 컴포넌트, 전기-광(EO) 컴포넌트 및/또는 전기, 광 또는 무선 통신 네트워크를 통한 데이터의 통신을 위해 업스트림 포트(950) 및/또는 다운스트림 포트(920)에 결합된 무선 통신 컴포넌트를 포함할 수 있다. 비디오 코딩 장치(900)는 또한 사용자와 데이터를 통신하기 위한 입력 및/또는 출력(I/O) 장치(960)를 포함할 수 있다. 입출력 장치(960)는 비디오 데이터를 디스플레이하기 위한 디스플레이, 오디오 데이터를 출력하기 위한 스피커 등과 같은 출력 장치를 포함할 수 있다. I/O 장치(960)는 또한 키보드, 마우스, 트랙볼 등과 같은 입력 장치 및/또는 이러한 출력 장치와 상호 작용하기 위한 대응하는 인터페이스를 포함할 수 있다.
프로세서(930)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(930)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티 코어 프로세서로서), FPGA(field-programmable gate arrays), ASIC(application specific integrated circuit) 및 DSP(digital signal processor)로서 구현될 수 있다. 프로세서(930)는 다운스트림 포트(920), Tx/Rx(910), 업스트림 포트(950) 및 메모리(932)와 통신한다. 프로세서(930)는 코딩 모듈(914)을 포함한다. 코딩 모듈(914)은 멀티-레이어 비디오 시퀀스(600), 멀티-레이어 비디오 시퀀스(700) 및/또는 비트스트림(800)을 사용할 수 있는 방법(100, 1000, 1100)과 같은 여기에 설명된 개시된 실시예를 구현한다. 코딩 모듈(914)은 또한 여기에 설명된 임의의 다른 방법/메커니즘을 구현할 수 있다. 또한, 코딩 모듈(914)은 코덱 시스템(200), 인코더(300), 디코더(400) 및/또는 HRD(500)를 구현할 수 있다. 예를 들어, 코딩 모듈(914)은 HRD를 구현하기 위해 사용될 수 있다. 또한, 코딩 모듈(914)은 HRD 적합성 검사 프로세스를 지원하기 위해 파라미터를 비트스트림으로 인코딩하는 데 사용될 수 있다. 따라서, 코딩 모듈(914)은 위에서 논의된 문제들 중 하나 이상을 해결하기 위한 메커니즘을 수행하도록 구성될 수 있다. 따라서, 코딩 모듈(914)은 비디오 코딩 장치(900)가 비디오 데이터를 코딩할 때 추가적인 기능 및/또는 코딩 효율성을 제공하게 한다. 이와 같이, 코딩 모듈(914)은 비디오 코딩 장치(900)의 기능을 개선할 뿐만 아니라 비디오 코딩 기술에 특정한 문제를 해결한다. 또한, 코딩 모듈(914)은 비디오 코딩 장치(900)를 상이한 상태로 변환시킨다. 대안적으로, 코딩 모듈(914)은 메모리(932)에 저장되고 프로세서(930)에 의해 실행되는 명령어로서 구현될 수 있다(예를 들어, 비일시적 매체에 저장된 컴퓨터 프로그램 제품으로서).
메모리(932)는 디스크, 테이프 드라이브, 솔리드 스테이트 드라이브, 읽기 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 플래시 메모리, 삼진 콘텐츠 주소 지정 가능 메모리(TCAM), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 하나 이상의 메모리 유형을 포함한다. 메모리(932)는 오버플로우 데이터 저장 장치로 사용될 수 있고, 그러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령 및 데이터를 저장한다.
도 10은 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지가 타깃 OLS를 참조하지 않을 때, 스케일러블 네스팅 SEI 메시지를 제거함으로써 비디오 시퀀스를 비트스트림으로 인코딩하는 예시적인 방법(1000)의 흐름도이다. 이 방법(1000)은이 방법(100)을 수행할 때 코덱 시스템(200), 인코더(300), 및/또는 비디오 코딩 장치(900)와 같은 인코더에 의해 이용될 수 있다. 또한, 이 방법(1000)은 HRD(500)에서 동작할 수 있고, 따라서 멀티 레이어비디오 시퀀스(600), 멀티 레이어비디오 시퀀스(700), 및/또는 비트스트림(800)에 대한 적합성 테스트를 수행할 수 있다.
이 방법(1000)은 인코더가 비디오 시퀀스를 수신하고 예를 들어 사용자 입력에 기초하여 그 비디오 시퀀스를 멀티 레이어비트스트림으로 인코딩하기로 결정할 때 시작할 수 있다. 단계 1001에서, 인코더는 레이어(631), 레이어(632), 서브레이어(710), 서브레이어(720), 및/또는 서브레이어(730)를 포함하는 OLS(625)와 같은 하나 이상의 OLS를 포함하는 비트스트림을 인코딩한다. 단계 1003에서, 인코더 및/또는 HRD는 OLS로부터 타깃 OLS를 추출하기 위해 서브-비트스트림 추출 프로세스를 수행할 수 있다.
단계 1005에서, 인코더/HRD는 비트스트림으로부터 SEI NAL 유닛을 제거할 수 있다. 구체적으로, SEI NAL 유닛은 스케일러블 네스팅 SEI 메시지를 포함한다. 예를 들어, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지가 타깃 OLS를 참조하지 않고 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때 스케일러블 네스팅 SEI 메시지가 제거된다. 특정 예에서, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 특정 OLS(들)(예를 들어, 특정 레이어가 아니라)에 적용될 수 있다. 따라서, 인코더/HRD는 스케일러블 네스팅 SEI 메시지가 하나 이상의 특정 OLS에 적용됨을 나타내도록 스케일러블 네스팅 OLS 플래그가 설정될 때 서브-비트스트림으로부터 제거를 위해 그 스케일러블 네스팅 SEI 메시지를 확인할 수 있다.
인코더/HRD는 그런 다음 포함된 스케일러블 네스팅 SEI 메시지 중 어느 것이 타깃 OLS의 어느 레이어와 관련이 있는지 여부를 결정하기 위해 스케일러블 네스팅 SEI 메시지를 검사할 수 있다. 스케일러블 네스팅 SEI 메시지나 스케일러블 네스티드 SEI 메시지 중 어느 것도 타깃 OLS를 참조하지 않을 때 스케일러블 네스팅 SEI 메시지는 서브-비트스트림에서 제거될 수 있다. 특정 예에서, 스케일러블 네스팅 SEI 메시지가 0 이상 스케일러블 네스팅 num_olss_minus1 이하의 범위에 index(i) 값을 포함하지 않은 경우, 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지는 타깃 OLS를 참조하지 않고, 이로써 NestingOlsIdx[ i ]는 타깃 OLS와 연관된 targetOlsIdx와 같다. 스케일러블 네스팅 num_olss_minus1은 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 수를 지정할 수 있다. 스케일러블 네스팅 num_olss_minus1은 0 이상 'TotalNumOlss에서 1을 뺀 값(TotalNumOlss-1)' 이하의 범위에 있도록 제한될 수 있다. 따라서 인코더/HRD는 스케일러블 네스팅 num_olss_minus1의 값을 확인하여 얼마나 많은 OLS가 스케일러블 네스팅 SEI 메시지와 연관되는지 결정할 수 있다. 그러면 인코더는 0과 스케일러블 네스팅 num_olss_minus1 사이의 각 OLS에 대해 타깃 OLS와의 관련성을 검사할 수 있다. 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 '총 OLS 수 마이너스 1(TotalNumOlss-1)' 이하로 제한될 수 있다. TotalNumOlss-1은 비트스트림/서브-비트스트림에서 OLS를 지정하는 VPS에 포함될 수 있다. NestingOlsIdx[ i ]는 스케일러블 네스팅 OLS 플래그가 1로 설정되는 경우 스케일러블 네스티드 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정할 수 있다. 각 현재 OLS에 대해, 인코더/HRD는 스케일러블 네스팅 ols_idx_delta_minus1의 값을 확인하여 스케일러블 네스팅 SEI 메시지가 적용되는 현재/i번째 OLS의 OLS 인덱스를 결정하기 위해 NestingOlsIdx[ i ] 값을 도출할 수 있다. ols_idx_delta_minus1에서 도출된 NestingOlsIdx[ i ]의 어떤 값도 타깃 OLS와 연관된 targetOlsIdx와 동일하지 않은 경우, 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지 중 어느 것도 타깃 OLS에 적용되지 않는다. 그러한 경우, 스케일러블 네스팅 SEI 메시지는 HRD 적합성 테스트 또는 디코딩에 부정적인 영향을 미치지 않고 추출된 서브-비트스트림에서 제거될 수 있다. targetOlsIdx는, 예를 들어, 디코더에 의해 요청된 바와 같이, 타깃 OLS의 OLS 인덱스를 식별할 수 있다는 점에 유의해야 한다.
단계 1007에서, 인코더/HRD는, 예를 들어, 타깃 OLS와 연관되고 추출된 서브-비트스트림에 포함되거나 제거되지 않은 SEI 메시지에 기초하여 타깃 OLS에 대한 비트스트림 적합성 테스트 세트를 수행한다. 단계 1009에서, 인코더는 디코더를 향한 통신을 위해 비트스트림을 저장한다. 앞의 메커니즘은 타깃 OLS의 어떠한 레이어와 관련된 스케일러블 네스티드 SEI 메시지를 포함하지 않는 서브-비트스트림에서 스케일러블 네스팅 SEI 메시지를 제거한다. 이것은 디코더에 보내질 서브-비트스트림의 크기를 줄이는 결과를 가져온다. 따라서, 본 예는 코딩 효율을 증가시키고 인코더 및 디코더 모두에서 프로세서, 메모리 및/또는 네트워크 리소스 사용을 감소시킨다.
도 11은 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스팅 SEI 메시지도 타깃 OLS를 참조하지 않을 때, 스케일러블 네스팅 SEI 메시지가 제거된 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법(1100)의 흐름도이다. 나머지 SEI 메시지는 HRD(500)과 같은 HRD에서 비트스트림 적합성 테스트에 사용할 수 있다. 이 방법(1100)은 이 방법(100)을 수행할 때 코덱 시스템(200), 디코더(400), 및/또는 비디오 코딩 장치(900)와 같은 디코더에 의해 이용될 수 있다. 또한, 이 방법(1100)은 멀티 레이어비디오 시퀀스(600) 및/또는 멀티 레이어비디오 시퀀스(700)를 포함하는 비트스트림(800)과 같은 비트스트림에 대해 동작할 수 있다.
이 방법(1100)은 디코더가 예를 들어 방법(1000)의 결과로서 멀티 레이어비디오 시퀀스를 나타내는 코딩된 데이터의 비트스트림을 수신하기 시작할 때 시작할 수 있다. 단계 1101에서, 디코더는 타깃 OLS를 포함하는 비트스트림을 수신할 수 있다. 타깃 OLS는 레이어(631), 레이어(632), 서브레이어(710), 서브레이어(720), 및/또는 서브레이어(730)를 포함하는 OLS(625)와 같은 OLS일 수 있다. 또한, 디코더가 타깃 OLS를 요청할 수 있다. 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고 또 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 스케일러블 네스팅 SEI 메시지를 포함하는 스케일러블 네스팅 SEI NAL 유닛은 서브-비트스트림 추출 프로세스의 일부로서 디코더에서 수신하기에 앞서 비트스트림으로부터 제거되어 있다. 서브-비트스트림 추출 프로세스는 인코더 상의 HRD에 의해 수행될 수 있다. 예를 들어, 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스팅 OLS 플래그가 1로 설정된 경우 특정 OLS(예: 레이어가 아닌)에 적용된다. 따라서, 스케일러블 네스팅 SEI 메시지가 하나 이상의 특정 OLS에 적용된다는 것을 나타내도록 스케일러블 네스팅 OLS 플래그가 설정될 때 스케일러블 네스팅 SEI 메시지는 서브-비트스트림에서 제거될 수 있다.
또한, 스케일러블 네스팅 SEI 메시지나 어떠한 스케일러블 네스팅 SEI 메시지도 타깃 OLS를 참조하지 않는 경우, 스케일러블 네스팅 SEI 메시지는 서브-비트스트림에서 제거될 수 있다. 특정 예에서, 스케일러블 네스팅 SEI 메시지가 0 이상 스케일러블 네스팅 num_olss_minus1 이하의 범위에서 어떠한 index(i) 값도 포함하지 않는 경우, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않는다. 이로써, NestingOlsIdx[ i ]는 타깃 OLS와 연관된 targetOlsIdx와 같다. 스케일러블 네스팅 num_olss_minus1은 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 개수를 지정할 수 있다. 스케일러블 네스팅 num_olss_minus1은 0 이상 'TotalNumOlss에서 1을 뺀 값(TotalNumOlss-1)' 이하의 범위에 있도록 제한될 수 있다. 따라서, 스케일러블 네스팅 num_olss_minus1의 값은 스케일러블 네스팅 SEI 메시지에 얼마나 많은 OLS가 연관되어 있는지를 나타낼 수 있다. 0과 스케일러블 네스팅 num_olss_minus1 사이의 각 OLS는 타깃 OLS에 대한 관련성에 대해 검사될 수 있다. 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 TotalNumOlss-1 이하의 범위로 제한될 수 있다. TotalNumOlss-1은 비트스트림/서브-비트스트림에서 OLS를 지정하는 VPS에 포함될 수 있다. NestingOlsIdx[ i ]는 스케일러블 네스팅 OLS 플래그가 1로 설정되는 경우 스케일러블 네스티드 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정할 수 있다. 각각의 현재 OLS에 대해 스케일러블 네스팅 ols_idx_delta_minus1의 값을 검사하여 스케일러블 네스팅 SEI 메시지가 적용되는 현재/i번째 OLS의 OLS 인덱스를 결정하기 위해 NestingOlsIdx[ i ] 값을 도출할 수 있다. ols_idx_delta_minus1에서 도출된 NestingOlsIdx[ i ]의 값이 타깃 OLS와 연관된 targetOlsIdx와 동일하지 않은 경우, 스케일러블 네스팅 SEI 메시지 내의 스케일러블 네스티드 SEI 메시지 중 어느 것도 타깃 OLS에 적용되지 않는다. 그러한 경우, 스케일러블 네스팅 SEI 메시지는 디코더에서 수신하기 전에 추출된 서브-비트스트림에서 제거된다. targetOlsIdx는 예를 들어 디코더에 의해 요청된 바와 같이 타깃 OLS의 OLS 인덱스를 식별할 수 있다는 점에 유의해야 한다.
단계 1103에서, 디코더는 타깃 OLS로부터 픽처를 디코딩할 수 있다. 디코더는 또한 단계 1107에서 디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 그 픽처를 전달할 수 있다.
도 12는 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않을 때 스케일러블 네스팅 SEI 메시지를 제거함으로써 비트스트림에서 비디오 시퀀스를 코딩하기 위한 예시적인 시스템(1200)의 개략도이다. 이 시스템(1200)은 코덱 시스템(200), 인코더(300), 디코더(400), 및/또는 비디오 코딩 장치(900)와 같은 인코더 및 디코더에 의해 구현될 수 있다. 또한, 이 시스템(1200)은 멀티 레이어비디오 시퀀스(600), 멀티 레이어비디오 시퀀스(700), 및/또는 비트스트림(800)에 대한 적합성 테스트를 수행하기 위해 HRD(500)를 사용할 수 있다. 또한, 이 시스템(1200)은 방법(100, 1000, 및/또는 1100)을 구현할 때 이용될 수 있다.
이 시스템(1200)은 비디오 인코더(1202)를 포함한다. 비디오 인코더(1202)는 하나 이상의 OLS를 포함하는 비트스트림을 인코딩하기 위한 인코딩 모듈(1203)을 포함한다. 비디오 인코더(1202)는 OLS로부터 타깃 OLS를 추출하기 위해 서브-비트스트림 추출 프로세스를 수행하기 위한 HRD 모듈(1205)을 더 포함한다. HRD 모듈(1205)은 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL 유닛을 비트스트림으로부터 제거하기 위한 것이다. . HRD 모듈(1205)은 또한 타깃 OLS에 대한 비트스트림 적합성 테스트 세트를 수행하기 위한 것이다. 비디오 인코더(1202)는 디코더를 향한 통신을 위해 비트스트림을 저장하기 위한 저장 모듈(1206)을 더 포함한다. 비디오 인코더(1202)는 비디오 디코더(1210)를 향해 비트스트림을 전송하기 위한 전송 모듈(1207)을 더 포함한다. 비디오 인코더(1202)는 방법(1000)의 단계들 중 임의의 단계를 수행하도록 추가로 구성될 수 있다.
시스템(1200)은 또한 비디오 디코더(1210)를 포함한다. 비디오 디코더(1210)는 타깃 OLS를 포함하는 비트스트림을 수신하기 위한 수신 모듈(1211)을 포함하고, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고 또 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 스케일러블 네스팅 SEI 메시지를 포함하는 스케일러블 네스팅 SEI NAL 유닛은 서브-비트스트림 추출 프로세스의 일부로서 디코더에서 수신하기에 앞서 비트스트림으로부터 제거되어 있다.
비디오 디코더(1210)는 타깃 OLS로부터 픽처를 디코딩하기 위한 디코딩 모듈(1213)을 더 포함한다. 비디오 디코더(1210)는 디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 픽처를 전달하기 위한 전달 모듈(1215)을 더 포함한다. 비디오 디코더(1210)는 방법(1100)의 단계들 중 임의의 단계를 수행하도록 추가로 구성될 수 있다.
제1 구성요소는 제1 구성요소와 제2 구성요소 사이에 선, 궤적 또는 다른 매체를 제외하고는 개재 구성요소가 없을 때 제2 구성요소에 직접 결합된다. 제1 구성요소는 제1 구성요소와 제2 구성요소 사이에 선, 궤적 또는 다른 매체 이외의 개재 구성요소가 있는 경우 제2 구성요소에 간접적으로 결합된다. "결합된"이라는 용어와 그 변형에는 직접 결합된 것과 간접적으로 결합된 것이 모두 포함된다. "약"이라는 용어의 사용은 달리 명시되지 않는 한 후속 숫자의 ±10%를 포함하는 범위를 의미한다.
또한 여기에 설명된 예시적인 방법의 단계는 설명된 순서대로 수행될 필요가 없으며 이러한 방법의 단계의 순서는 단지 예시적인 것으로 이해되어야 한다. 마찬가지로, 이러한 방법에는 추가적인 단계가 포함될 수 있으며, 본 개시의 다양한 실시예에 따른 방법에서 특정 단계는 생략되거나 결합될 수 있다.
본 개시에서 몇몇 실시예가 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해할 수 있다.
본 예는 예시적인 것으로 간주되어야 하며 제한적이지 않으며, 그 의도는 여기에 주어진 세부 사항으로 제한되지 않는다.
예를 들어, 다양한 구성 요소 또는 구성 요소가 다른 시스템에 결합 또는 통합되거나 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 별개의 또는 별개의 것으로 다양한 실시예에서 설명되고 예시된 기술, 시스템, 서브시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 구성요소, 기술, 또는 방법과 결합되거나 통합될 수 있다.
변경, 대체 및 변경의 다른 예는 당업자에 의해 확인 가능하고 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (20)

  1. 디코더에 의해 구현되는 방법으로서,
    디코더의 수신기에 의해, 타깃 출력 레이어 세트(OLS, output layer set)를 포함하는 비트스트림을 수신하는 단계 - 스케일러블 네스팅(scalable nesting) SEI(supplemental enhancement information) 메시지 내의 어떠한 스케일러블 네스티드(scalable nested) SEI 메시지도 타깃 OLS를 참조하지 않고 또 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 서브-비트스트림 추출 프로세스의 일부로서 상기 스케일러블 네스팅 SEI 메시지를 포함하는 상기 SEI NAL(network abstraction layer) 유닛이 상기 비트스트림으로부터 제거되어 있음 -; 및
    상기 프로세서에 의해, 상기 타깃 OLS로부터의 픽처를 디코딩하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 서브-비트스트림 추출 프로세스는 인코더 상의 가상 참조 디코더(HRD, hypothetical reference decoder)에 의해 수행되는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 특정 OLS에 적용되는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지가 0 이상 '스케일러블 네스팅 OLS 수 마이너스 1(scalable nesting num_olss_minus1)' 이하의 범위에서 어떠한 index(i) 값도 포함하지 않는 경우, 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않으며, 이로써 i번째 네스팅 OLS 인덱스(NestingOlsIdx[ i ])가 상기 타깃 OLS와 연관된 타깃 OLS 인덱스(targetOlsIdx)와 동일한, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 num_olss_minus1은 상기 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 수를 지정하고, 상기 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 OLS 총 수 마이너스 1(TotalNumOlss-1) 이하의 범위에 포함되는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 targetOlsIdx는 타깃 OLS의 OLS 인덱스를 식별하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 NestingOlsIdx[ I ]는 상기 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 상기 스케일러블 네스팅 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정하는, 방법.
  8. 인코더에 의해 구현되는 방법으로서,
    상기 인코더의 프로세서에 의해, 하나 이상의 출력 레이어 세트(OLS)를 포함하는 비트스트림을 인코딩하는 단계;
    상기 프로세서에서 동작하는 HRD(Hypothetical Reference Decoder)에 의해, 상기 OLS로부터 타깃 OLS를 추출하기 위한 서브-비트스트림 추출 프로세스를 수행하는 단계;
    상기 프로세서에서 동작하는 상기 HRD에 의해, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고, 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용되는 때, 상기 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL(network abstraction layer) 유닛을 상기 비트스트림으로부터 제거하는 단계; 및
    상기 프로세서에서 동작하는 HRD에 의해, 상기 타깃 OLS에 대해 비트스트림 적합성 테스트 세트를 수행하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지는 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 특정 OLS에 적용되는, 방법.
  10. 제8항 또는 제9항에 있어서,
    상기 스케일러블 네스팅 SEI 메시지가 0 이상 스케일러블 네스팅 OLS 수 마이너스 1(scalable nesting num_olss_minus1) 이하의 범위에 어떠한 index(i) 값도 포함하지 않는 경우, 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않으며, 이로써 i번째 네스팅 OLS 인덱스(NestingOlsIdx[ i ])가 상기 타깃 OLS와 연관된 타깃 OLS 인덱스(targetOlsIdx)와 동일한, 방법.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 num_olss_minus1은 상기 스케일러블 네스팅 SEI 메시지가 적용되는 OLS의 수를 지정하는, 방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 스케일러블 네스팅 num_olss_minus1의 값은 0 이상 OLS의 총 수에서 1을 뺀 값(TotalNumOlss-1) 이하의 범위로 제한되는, 방법.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서,
    상기 targetOlsIdx는 상기 타깃 OLS의 OLS 인덱스를 식별하는, 방법.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    상기 NestingOlsIdx[ I ]는 상기 스케일러블 네스팅 OLS 플래그가 1로 설정될 때 상기 스케일러블 네스팅 SEI 메시지가 적용되는 i번째 OLS의 OLS 인덱스를 지정하는, 방법.
  15. 비디오 코딩 장치로서,
    프로세서, 프로세서에 연결된 수신기, 프로세서에 연결된 메모리, 및 프로세서에 연결된 송신기를 포함하고, 상기 프로세서, 상기 수신기, 상기 메모리, 및 상기 송신기는 제1항 내지 제14항 중 어느 한 항의 방법을 수행하도록 구성되어 있는, 비디오 코딩 장치.
  16. 비디오 코딩 장치에 의해 사용하기 위한 컴퓨터 프로그램 제품을 포함하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 프로그램 제품은 상기 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 실행 가능 명령을 포함하고, 상기 컴퓨터 실행 가능 명령은 프로세서에 의해 실행될 때 상기 비디오 코딩 장치로 하여금 제1항 내지 제14항 중 어느 한 항의 방법을 수행하게 하는, 비디오 코딩 장치.
  17. 디코더로서,
    타깃 출력 레이어 세트(OLS)를 포함하는 비트스트림을 수신하기 위한 수신 수단 - 스케일러블 네스팅(scalable nesting) SEI(supplemental enhancement information) 메시지 내의 어떠한 스케일러블 네스티드(scalable nested) SEI 메시지도 타깃 OLS를 참조하지 않고 또 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용될 때, 서브-비트스트림 추출 프로세스의 일부로서 상기 스케일러블 네스팅 SEI 메시지를 포함하는 상기 SEI NAL(network abstraction layer) 유닛이 상기 비트스트림으로부터 제거되어 있음 -;
    상기 타깃 OLS로부터 픽처를 디코딩하기 위한 디코딩 수단; 및
    디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 상기 픽처를 전달하기 위한 전달 수단
    을 포함하는 디코더.
  18. 제17항에 있어서,
    상기 디코더는 제1항 내지 제7항 중 어느 한 항의 방법을 수행하도록 추가로 구성되는, 디코더.
  19. 인코더로서,
    하나 이상의 출력 레이어 세트(OLS)를 포함하는 비트스트림을 인코딩하기 위한 인코딩 수단;
    상기 OLS로부터 타깃 OLS를 추출하기 위해 서브-비트스트림 추출 과정을 수행하고, 스케일러블 네스팅 SEI 메시지 내의 어떠한 스케일러블 네스티드 SEI 메시지도 타깃 OLS를 참조하지 않고, 상기 스케일러블 네스팅 SEI 메시지가 특정 OLS에 적용되는 때, 상기 스케일러블 네스팅 SEI 메시지를 포함하는 SEI NAL(network abstraction layer) 유닛을 상기 비트스트림으로부터 제거하며, 상기 타깃 OLS에 대해 비트스트림 적합성 테스트 세트를 수행하기 위한 가상 참조 디코더(HRD) 수단; 및
    디코더로의 통신을 위해 상기 비트스트림을 저장하기 위한 저장 수단
    을 포함하는 인코더.
  20. 제19항에 있어서,
    상기 인코더는 제8항 내지 제14항 중 어느 한 항의 방법을 수행하도록 추가로 구성되는, 인코더.
KR1020227013760A 2019-09-24 2020-09-08 스케일러블 네스팅 sei 메시지 관리 KR20220065066A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962905244P 2019-09-24 2019-09-24
US62/905,244 2019-09-24
PCT/US2020/049731 WO2021061393A1 (en) 2019-09-24 2020-09-08 Scalable nesting sei message management

Publications (1)

Publication Number Publication Date
KR20220065066A true KR20220065066A (ko) 2022-05-19

Family

ID=75166788

Family Applications (6)

Application Number Title Priority Date Filing Date
KR1020227013759A KR20220065867A (ko) 2019-09-24 2020-09-08 레이어에 대한 hrd 파라미터
KR1020227013764A KR20220062659A (ko) 2019-09-24 2020-09-08 비디오 코딩에서 서브레이어에 대한 오류 완화
KR1020227013762A KR20220065869A (ko) 2019-09-24 2020-09-08 레이어 기반 적합성 테스트를 위한 hrd 파라미터
KR1020227013760A KR20220065066A (ko) 2019-09-24 2020-09-08 스케일러블 네스팅 sei 메시지 관리
KR1020227013761A KR20220065868A (ko) 2019-09-24 2020-09-08 Ols에 대한 hrd 적합성 테스트
KR1020227013763A KR20220065870A (ko) 2019-09-24 2020-09-08 시퀀스-레벨 hrd 파라미터

Family Applications Before (3)

Application Number Title Priority Date Filing Date
KR1020227013759A KR20220065867A (ko) 2019-09-24 2020-09-08 레이어에 대한 hrd 파라미터
KR1020227013764A KR20220062659A (ko) 2019-09-24 2020-09-08 비디오 코딩에서 서브레이어에 대한 오류 완화
KR1020227013762A KR20220065869A (ko) 2019-09-24 2020-09-08 레이어 기반 적합성 테스트를 위한 hrd 파라미터

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020227013761A KR20220065868A (ko) 2019-09-24 2020-09-08 Ols에 대한 hrd 적합성 테스트
KR1020227013763A KR20220065870A (ko) 2019-09-24 2020-09-08 시퀀스-레벨 hrd 파라미터

Country Status (12)

Country Link
US (7) US20220217381A1 (ko)
EP (7) EP4026328A4 (ko)
JP (7) JP7440197B2 (ko)
KR (6) KR20220065867A (ko)
CN (21) CN114430905B (ko)
AU (6) AU2020352892A1 (ko)
BR (7) BR112022005458A2 (ko)
CA (5) CA3152325A1 (ko)
CL (5) CL2022000706A1 (ko)
IL (1) IL291689A (ko)
MX (5) MX2022003550A (ko)
WO (7) WO2021061388A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7388612B2 (ja) 2019-09-24 2023-11-29 ホアウェイ・テクノロジーズ・カンパニー・リミテッド マルチレイヤビデオビットストリームのためのdpbパラメータのシグナリング
WO2021117644A1 (en) * 2019-12-11 2021-06-17 Sharp Kabushiki Kaisha Systems and methods for signaling output layer set information in video coding
EP4062640A4 (en) 2019-12-26 2023-01-11 ByteDance Inc. PROFILE, ROW AND LAYER INDICATION IN VIDEO CODING
WO2021134020A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Constraints on signaling of hypothetical reference decoder parameters in video bitstreams
CN114902566A (zh) 2019-12-27 2022-08-12 字节跳动有限公司 参数集中的子图片信令
CN117395441A (zh) 2020-01-09 2024-01-12 字节跳动有限公司 视频流中的填充数据单元的处理
JP2023526955A (ja) * 2020-05-22 2023-06-26 ジーイー ビデオ コンプレッション エルエルシー ビデオエンコーダ、ビデオデコーダ、符号化及び復号のための方法、並びに高度なビデオ符号化概念を実現するためのビデオデータストリーム
KR20230013264A (ko) * 2020-05-22 2023-01-26 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브픽처 서브-비트스트림 추출 개선들
CN115699740A (zh) 2020-06-09 2023-02-03 字节跳动有限公司 视频编解码中的子图片级别信息信令通知
EP4150913A4 (en) * 2020-06-09 2023-11-15 ByteDance Inc. REPORTING UNSCALABLE HYPOTHETICAL REFERENCE VIDEO DECODER INFORMATION
CN115225913A (zh) * 2021-04-20 2022-10-21 中兴通讯股份有限公司 一种码流处理方法、装置、终端设备及存储介质
US11695965B1 (en) 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266147B2 (en) * 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7676733B2 (en) * 2006-01-04 2010-03-09 Intel Corporation Techniques to perform forward error correction for an electrical backplane
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
US8345774B2 (en) * 2008-01-11 2013-01-01 Apple Inc. Hypothetical reference decoder
CN101895748B (zh) * 2010-06-21 2014-03-26 华为终端有限公司 一种编解码方法以及编解码装置
US20130170561A1 (en) * 2011-07-05 2013-07-04 Nokia Corporation Method and apparatus for video coding and decoding
US9912941B2 (en) * 2012-07-02 2018-03-06 Sony Corporation Video coding system with temporal layers and method of operation thereof
US10110890B2 (en) * 2012-07-02 2018-10-23 Sony Corporation Video coding system with low delay and method of operation thereof
RU2612577C2 (ru) * 2012-07-02 2017-03-09 Нокиа Текнолоджиз Ой Способ и устройство для кодирования видеоинформации
US9426462B2 (en) * 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding
US9351005B2 (en) * 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding
US9479774B2 (en) * 2012-09-24 2016-10-25 Qualcomm Incorporated Buffering period and recovery point supplemental enhancement information messages
KR101812615B1 (ko) * 2012-09-28 2017-12-27 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
US8989508B2 (en) * 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
US9154785B2 (en) * 2012-10-08 2015-10-06 Qualcomm Incorporated Sub-bitstream applicability to nested SEI messages in video coding
US9374581B2 (en) * 2013-01-07 2016-06-21 Qualcomm Incorporated Signaling of picture order count to timing information relations for video timing in video coding
WO2014106692A1 (en) * 2013-01-07 2014-07-10 Nokia Corporation Method and apparatus for video coding and decoding
US9521393B2 (en) * 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
CA3129121C (en) * 2013-04-07 2024-02-20 Dolby International Ab Signaling change in output layer sets
US20140301477A1 (en) * 2013-04-07 2014-10-09 Sharp Laboratories Of America, Inc. Signaling dpb parameters in vps extension and dpb operation
US9565437B2 (en) * 2013-04-08 2017-02-07 Qualcomm Incorporated Parameter set designs for video coding extensions
US10003815B2 (en) * 2013-06-03 2018-06-19 Qualcomm Incorporated Hypothetical reference decoder model and conformance for cross-layer random access skipped pictures
US20160173887A1 (en) * 2013-07-10 2016-06-16 Sharp Kabushiki Kaisha Scaling list signaling and parameter sets activation
US10595031B2 (en) * 2013-07-12 2020-03-17 Qualcomm Incorporated Selection of target output layers in high efficiency video coding extensions
US20150016547A1 (en) * 2013-07-15 2015-01-15 Sony Corporation Layer based hrd buffer management for scalable hevc
US10165218B2 (en) * 2013-07-24 2018-12-25 Samsung Electronics Co., Ltd. Display power reduction using histogram metadata
US9819941B2 (en) * 2013-10-10 2017-11-14 Qualcomm Incorporated Signaling for sub-decoded picture buffer (sub-DPB) based DPB operations in video coding
CN105556975A (zh) * 2013-10-11 2016-05-04 夏普株式会社 信令告知用于编码的信息
EP3058735B1 (en) * 2013-10-14 2019-05-08 Nokia Technologies Oy Multi-layer hypothetical reference decoder
US10284858B2 (en) * 2013-10-15 2019-05-07 Qualcomm Incorporated Support of multi-mode extraction for multi-layer video codecs
EP3058747B1 (en) * 2013-10-15 2019-11-20 Nokia Technologies Oy Scalable video encoding and decoding using syntax element
US9854270B2 (en) * 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
JPWO2015098713A1 (ja) * 2013-12-27 2017-03-23 シャープ株式会社 画像復号装置および画像符号化装置
KR102307283B1 (ko) * 2014-03-07 2021-09-30 소니그룹주식회사 화상 부호화 장치 및 방법과 화상 처리 장치 및 방법
WO2015137237A1 (ja) * 2014-03-14 2015-09-17 シャープ株式会社 画像復号装置
US20150264099A1 (en) * 2014-03-14 2015-09-17 Sharp Laboratories Of America, Inc. Systems and methods for constraining a bitstream
WO2015138979A2 (en) * 2014-03-14 2015-09-17 Sharp Laboratories Of America, Inc. Dpb capacity limits
US20150264404A1 (en) * 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
KR102224703B1 (ko) * 2014-03-17 2021-03-09 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩 장치, 방법 및 컴퓨터 프로그램
US10645404B2 (en) * 2014-03-24 2020-05-05 Qualcomm Incorporated Generic use of HEVC SEI messages for multi-layer codecs
US9712871B2 (en) * 2014-05-01 2017-07-18 Qualcomm Incorporated Determination bitstream decoding capability in video coding
US9769492B2 (en) * 2014-06-06 2017-09-19 Qualcomm Incorporated Conformance parameters for bitstream partitions
WO2015194179A1 (en) * 2014-06-17 2015-12-23 Sharp Kabushiki Kaisha Bitstream partitions operation
US10063867B2 (en) * 2014-06-18 2018-08-28 Qualcomm Incorporated Signaling HRD parameters for bitstream partitions
WO2015194183A1 (en) * 2014-06-18 2015-12-23 Sharp Kabushiki Kaisha Slice Type and Decoder Conformance
US9716900B2 (en) * 2014-06-20 2017-07-25 Qualcomm Incorporated Extensible design of nesting supplemental enhancement information (SEI) messages
US9930342B2 (en) * 2014-06-20 2018-03-27 Qualcomm Incorporated Systems and methods for signaling hypothetical reference decoder parameters in a parameter set
US10432951B2 (en) 2014-06-24 2019-10-01 Qualcomm Incorporated Conformance and inoperability improvements in multi-layer video coding
US10244242B2 (en) * 2014-06-25 2019-03-26 Qualcomm Incorporated Multi-layer video coding
US20160112724A1 (en) * 2014-10-15 2016-04-21 Qualcomm Incorporated Hrd descriptor and buffer model of data streams for carriage of hevc extensions
ES2907602T3 (es) * 2014-12-31 2022-04-25 Nokia Technologies Oy Predicción entre capas para la codificación y decodificación de vídeo escalable
WO2018011042A1 (en) * 2016-07-14 2018-01-18 Koninklijke Kpn N.V. Video coding
CN108243339B (zh) * 2016-12-27 2021-02-26 浙江大学 图像编解码方法及装置
US11856231B2 (en) * 2019-05-30 2023-12-26 Sharp Kabushiki Kaisha Systems and methods for signaling hypothetical reference decoder parameters in video coding
EP4018670A4 (en) * 2019-08-22 2023-08-16 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR SIGNALING IMAGE INFORMATION IN VIDEO CODING
WO2021040480A1 (ko) * 2019-08-29 2021-03-04 엘지전자 주식회사 인루프 필터링 기반 영상 코딩 장치 및 방법
MX2022002782A (es) * 2019-09-06 2022-05-13 Huawei Tech Co Ltd Método de codificación, método de decodificación, codificador, decodificador y medio legible por computadora no transitorio.
MX2022002916A (es) * 2019-09-19 2022-04-06 Beijing Bytedance Network Tech Co Ltd Derivacion de posiciones de muestra de referencia en codificacion de video.
KR20220070325A (ko) * 2019-10-07 2022-05-30 후아웨이 테크놀러지 컴퍼니 리미티드 서브 비트스트림 추출의 sps 오류 방지

Also Published As

Publication number Publication date
BR112022005466A2 (pt) 2022-06-14
BR112022005448A2 (pt) 2022-06-21
WO2021061388A9 (en) 2022-03-03
KR20220065869A (ko) 2022-05-20
US20220217394A1 (en) 2022-07-07
CN114424556A (zh) 2022-04-29
JP2022549643A (ja) 2022-11-28
CN114514741A (zh) 2022-05-17
US20220217395A1 (en) 2022-07-07
CN117834898A (zh) 2024-04-05
MX2022003562A (es) 2022-06-16
EP4026315A4 (en) 2022-12-14
CN114556951A (zh) 2022-05-27
BR112022005271A2 (pt) 2022-06-21
AU2020352893A1 (en) 2022-04-14
US20220217381A1 (en) 2022-07-07
US20220217359A1 (en) 2022-07-07
MX2022003453A (es) 2022-04-19
CN114430905A (zh) 2022-05-03
EP4026314A4 (en) 2022-11-09
CL2022000706A1 (es) 2022-11-18
CA3152330A1 (en) 2021-04-01
CA3152342A1 (en) 2021-04-01
WO2021061392A1 (en) 2021-04-01
CN114424558B (zh) 2023-11-10
CN114467309A (zh) 2022-05-10
EP4026314A1 (en) 2022-07-13
WO2021061389A1 (en) 2021-04-01
CL2022000709A1 (es) 2022-11-18
IL291689A (en) 2022-05-01
CA3152322A1 (en) 2021-04-01
WO2021061393A1 (en) 2021-04-01
EP4026330A1 (en) 2022-07-13
KR20220065870A (ko) 2022-05-20
BR112022005314A2 (pt) 2022-06-14
CN117294855A (zh) 2023-12-26
BR112022005458A2 (pt) 2022-06-21
EP4026327A1 (en) 2022-07-13
EP4026315A1 (en) 2022-07-13
CN117499660A (zh) 2024-02-02
CA3152325A1 (en) 2021-04-01
CA3152345A1 (en) 2021-04-01
MX2022003560A (es) 2022-06-14
WO2021061388A1 (en) 2021-04-01
AU2020354305A1 (en) 2022-04-14
BR112022005527A2 (pt) 2022-06-21
AU2020354905A1 (en) 2022-04-21
CN114556951B (zh) 2023-11-03
US20220217374A1 (en) 2022-07-07
CN114467309B (zh) 2023-09-22
CN114503547B (zh) 2023-09-22
AU2020352892A1 (en) 2022-04-14
CL2022000707A1 (es) 2022-11-18
CN114514741B (zh) 2023-06-16
EP4026330A4 (en) 2023-01-25
EP4026328A1 (en) 2022-07-13
CN116723332A (zh) 2023-09-08
CN117615157A (zh) 2024-02-27
EP4026338A4 (en) 2022-11-02
MX2022003550A (es) 2022-06-02
JP2022549447A (ja) 2022-11-25
CL2022000708A1 (es) 2022-11-18
CN114503547A (zh) 2022-05-13
US20220217417A1 (en) 2022-07-07
JP7472425B2 (ja) 2024-04-23
JP2022549443A (ja) 2022-11-25
WO2021061386A1 (en) 2021-04-01
EP4026327A4 (en) 2022-11-30
EP4026339A1 (en) 2022-07-13
JP2024073415A (ja) 2024-05-29
JP7440197B2 (ja) 2024-02-28
US20220217393A1 (en) 2022-07-07
CN116708804A (zh) 2023-09-05
KR20220065867A (ko) 2022-05-20
KR20220065868A (ko) 2022-05-20
MX2022003561A (es) 2022-06-14
CN117596412A (zh) 2024-02-23
JP2022550713A (ja) 2022-12-05
CN117336493A (zh) 2024-01-02
CN117319674A (zh) 2023-12-29
WO2021061391A1 (en) 2021-04-01
AU2020352432A1 (en) 2022-04-14
CL2022000705A1 (es) 2022-11-18
CN114424556B (zh) 2023-11-10
JP2022549642A (ja) 2022-11-28
KR20220062659A (ko) 2022-05-17
CN114424558A (zh) 2022-04-29
EP4026328A4 (en) 2022-10-19
CN117319673A (zh) 2023-12-29
EP4026339A4 (en) 2022-11-16
AU2020354306A1 (en) 2022-04-14
CN117528101A (zh) 2024-02-06
EP4026338A1 (en) 2022-07-13
JP2022549641A (ja) 2022-11-28
CN117440164A (zh) 2024-01-23
CN117156146A (zh) 2023-12-01
WO2021061390A1 (en) 2021-04-01
CN114430905B (zh) 2023-10-20
CN117294856A (zh) 2023-12-26
BR112022005402A2 (pt) 2022-06-21

Similar Documents

Publication Publication Date Title
JP7427774B2 (ja) サブビットストリーム抽出におけるspsエラー回避
JP7440197B2 (ja) レイヤベースの適合性試験のためのhrdパラメータ
KR20220065054A (ko) 비디오 코딩에서 sei 메시지 의존성 단순화
KR20220063275A (ko) 지정된 계층에 대한 스케일러블 네스팅 sei 메시지
RU2820076C1 (ru) Тесты на соответствие hrd для ols

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal