KR20220155292A - 비디오 코딩에서 설정한 비디오 파라미터 세트의 사용 - Google Patents

비디오 코딩에서 설정한 비디오 파라미터 세트의 사용 Download PDF

Info

Publication number
KR20220155292A
KR20220155292A KR1020227031200A KR20227031200A KR20220155292A KR 20220155292 A KR20220155292 A KR 20220155292A KR 1020227031200 A KR1020227031200 A KR 1020227031200A KR 20227031200 A KR20227031200 A KR 20227031200A KR 20220155292 A KR20220155292 A KR 20220155292A
Authority
KR
South Korea
Prior art keywords
video
picture
ols
value
bitstream
Prior art date
Application number
KR1020227031200A
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 KR20220155292A publication Critical patent/KR20220155292A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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/186Methods 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 colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

코딩 및 디코딩을 포함하는 비디오 처리를 위한 방법 및 장치가 개시된다. 하나의 예시적인 비디오 처리 방법은 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비트스트림은 하나 이상의 출력 계층 세트들(OLS)을 포함하고, 각각의 OLS는 하나 이상의 코딩된 계층 비디오 시퀀스를 포함하고, 상기 포맷 규칙은 비디오 파라미터 세트가 하나 이상의 OLS 각각에 대해 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀을 나타내는 데 사용되는 비트 심도의 최대 허용 값을 표시하도록 명시한다.

Description

비디오 코딩에서 설정한 비디오 파라미터 세트의 사용
이 특허 문서는 이미지 및 비디오 인코딩 및 디코딩에 관한 것이다.
적용 가능한 특허법 및/또는 파리 협약에 따른 규칙에 따라, 이 출원은 2020년 3월 17일에 출원된 미국의 가특허출원 제62/990,749호의 우선권과 이익을 적시에 주장하기 위해 이루어진다. 법에 따른 모든 목적들을 위해, 전술한 출원의 전체 개시 내용은 본 출원의 개시의 일부로서 참고로 포함된다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크에서 가장 많은 대역폭을 사용한다. 비디오를 수신하고 표시할 수 있는 연결된 사용자 장치의 수가 증가함에 따라 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
본 문서는 코딩된 표현(coded representation)의 디코딩(decoding)에 유용한 제어 정보(control information)를 사용하여 비디오의 코딩된 표현을 처리하기 위해 비디오 인코더(encoder) 및 디코더(decoder)에 의해 사용될 수 있는 기술을 개시한다.
하나의 예시적인 측면에서, 비디오 처리 방법(video processing method)이 개시된다. 이 방법은 하나 이상의 비디오 픽처들(video pictures)을 포함하는 하나 이상의 비디오 레이어들(video layers)을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 크로마 포맷 표시자(chroma format indicator)의 최대값 및/또는 비디오의 픽셀들을 표현하는 데 사용되는 비트 심도(bit depth)의 최대값을 나타내는 비디오 파라미터 세트를 포함한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이가 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 크로마 포맷 표시자의 최대값 및/또는 비디오 제어의 픽셀들을 나타내는데 사용되는 비트 심도의 최대값이 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부가 별개의 컬러 평면들이 비디오 인코딩에 사용되는지 여부와 무관함을 나타내는 변수값을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수의 값이 액세스 유닛(AU: Access Unit) 레벨에서 코딩된 표현에 포함됨을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 액세스 유닛의 비디오 픽처에 대한 픽처 출력 플래그가 액세스 유닛에 있는 다른 비디오 픽처의 pic_output_flag 변수에 기초하여 결정됨을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 출력 계층에 속하지 않는 비디오 픽처에 대해, 픽처 출력 플래그의 값을 명시하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 비트스트림은 하나 이상의 출력 계층 세트들(OLSs: Outpu Layer Sets)을 포함하고, 각각의 OLS는 하나 이상의 코딩된 계층 비디오 시퀀스를 포함하고, 상기 포맷 규칙은 비디오 파라미터 세트가 하나 이상의 OLS 각각에 대해 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀들을 나타내는데 사용되는 비트 심도의 최대 허용 값을 표시하도록 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이가, 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트 스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀들을 나타내는데 사용되는 비트 심도의 최대 허용 값이, 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트 스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 규칙은 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부가 별개의 컬러 평면들이 비디오 인코딩에 사용되는지 여부와 무관함을 나타내는 변수값을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 이전에 디코딩되고 디코딩된 픽처 버퍼로부터 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는 플래그 값이, 특정 유형의 액세스 유닛을 디코딩할 때 비트스트림에 포함됨을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 이전에 디코딩되고 디코딩된 픽처 버퍼로부터 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는 제1 플래그 값이, 특정 유형의 액세스 유닛을 디코딩할 때 비트스트림에 포함되지 않음을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 이전에 디코딩되고 디코딩된 픽처 버퍼로부터 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는는, 액세스 유닛과 연관된 플래그 값이 액세스 유닛의 각 픽처의 플래그 값에 의존함을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 액세스 유닛에서 픽처를 출력할지 여부를 나타내는 변수의 값이 액세스 유닛에서 또다른 픽처를 출력할지 여부를 나타내는 플래그에 기초하여 결정됨을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 액세스 유닛에서 픽처를 출력할지 여부를 나타내는 변수의 값이 픽처가 출력 계층에 속하지 않는 경우 특정 값과 동일하게 설정함을 명시한다.
다른 예시적인 측면에서, 다른 비디오 처리 방법이 개시된다. 이 방법은 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고, 상기 포맷 규칙은 비디오가 단 하나의 출력 계층을 포함하는 경우에 출력 계층을 포함하지 않는 액세스 유닛이 액세스 유닛의 픽처를 출력할지 여부를 나타내는 변수를 가장 높은 레이어 식별자(ID: Identification) 값을 갖는 픽처에 대해서는 첫 번째 값으로 설정하고 다른 모든 픽처들에 대해서는 두 번째 값으로 설정함으로써 코딩됨을 명시한다.
또 다른 예시적인 측면에서, 비디오 인코더 장치가 개시된다. 비디오 인코더는 전술한 방법들을 구현하도록 구성된 프로세서를 포함한다.
또 다른 예시적인 측면에서, 비디오 디코더 장치가 개시된다. 비디오 디코더는 전술한 방법들을 구현하도록 구성된 프로세서를 포함한다.
또 다른 예시적인 측면에서, 코드가 저장된 컴퓨터 판독 가능 매체가 개시된다. 이 코드는 프로세서 실행 가능 코드의 형태로 여기에 설명된 방법들 중 하나를 구현한다.
이러한 기능들 및 기타 기능들은 본 문서 전체에 걸쳐 설명되어 있다.
도 1은 예시적인 비디오 처리 시스템(video processing system)의 블록도이다.
도 2는 비디오 처리 장치(video processing apparatus)의 블록도이다.
도 3은 비디오 처리 방법의 하나의 예시적인 방법에 대한 흐름도이다.
도 4는 본 개시의 일부 실시예들에 따른 비디오 코딩 시스템을 예시하는 블록도이다.
도 5는 본 개시의 일부 실시예들에 따른 인코더를 예시하는 블록도이다.
도 6은 본 개시의 일부 실시예들에 따른 디코더를 예시하는 블록도이다.
도 7a 내지 7d는 개시된 기술의 일부 구현들에 기초한 비디오 처리의 예시적인 방법들에 대한 흐름도들을 도시한다.
도 8a 내지 8c는 개시된 기술의 일부 구현들에 기초한 비디오 처리의 예시적인 방법들에 대한 흐름도들을 도시한다.
도 9a 내지 9c는 개시된 기술의 일부 구현들에 기초한 비디오 처리의 예시적인 방법들에 대한 흐름도를 도시한다.
섹션 제목들은 이해의 편의를 위해 본 문서에서 사용되며 각 섹션에 개시된 기술 및 실시예들의 적용 가능성을 해당 섹션에만 제한하지 않는다. 또한, H.266 용어는 설명의 편의를 위해서만 사용되며 개시된 기술의 범위를 제한하지 않는다. 이와 같이, 여기에 설명된 기술은 다른 비디오 코덱 프로토콜들 및 설계들에도 적용할 수 있다.
1. 초기 논의
이 특허 문서는 비디오 코딩 기술(video coding technology)과 관련이 있다. 특히, 디코딩된 픽처 버퍼(DPB: decoded picture buffer) 메모리 할당을 위한 DPB 파라미터의 시그널링과 스케일러블 비디오 코딩에서 디코딩된 픽처들의 출력을 지정하는 것에 관한 것이다. 여기서 비디오 비트스트림은 하나 이상의 레이어를 포함할 수 있다. 이 아이디어는 다중 계층(multi-layer) 비디오 코딩, 예를 들어 개발 중인 다용도 비디오 코딩(VVC: Versatile Video Coding)을 지원하는 임의의 비디오 코딩 표준 또는 비표준 비디오 코덱에 개별적으로 또는 다양한 조합으로 적용될 수 있다.
2. 약어
APS 적응형 파라미터 세트
AU 액세스 유닛
AUD 엑세스 유닛 구분자
AVC 고급 비디오 코딩
CLVS 코딩된 레이어(계층) 비디오 시퀀스
CPB 코딩된 픽처 버퍼
CRA 클린 랜덤 액세스
CTU 코딩 트리 유닛
CVS 코딩된 비디오 시퀀스
DCI 디코딩 기능 정보
DPB 디코딩된 픽처 버퍼
EOB 비트스트림의 끝
EOS 시퀀스의 끝
GDR 점진적 디코딩 리프레시
HEVC 고효율 비디오 코딩
HRD 가상 레퍼런스 디코더
IDR 인스턴스 디코딩 리프레시
JEM 공동 연구 모델
MCTS 모션 제한 타일 세트
NAL 네트워크 추상화 계층
OLS 출력 계층 세트 (Output Layer Set)
PH 픽처 헤더
PPS 픽처 파라미터 세트
PTL 프로파일(Profile), 단계(Tier) 및 레벨(Level)
PU 픽처 유닛
RAP 랜덤 액세스 포인트
RBSP 원시 바이트 시퀀스 페이로드
SEI 추가 개선 정보
SPS 시퀀스 파라미터 세트
SVC 스케일러블 비디오 코딩
VCL 비디오 코딩 레이어
VPS 비디오 파라미터 세트
VTM VVC 테스트 모델
VUI 비디오 사용성 정보
VVC 다목적 비디오 코딩
3. 비디오 코딩 소개
비디오 코딩 표준은 잘 알려진 ITU-T 및 ISO/IEC 표준의 개발을 통해 주로 발전해 왔다. ITU-T는 H.261및 H.263을 제작했으며, ISO/IEC는 MPEG-1 및 MPEG-4 비주얼을 제작했으며, 두 조직은 H.262/MPEG-2 비디오 및 H.264/MPEG-4 고급 비디오 코딩(AVC) 및 H.265/HEVC 표준들을 공동 제작했다. H.262 이후, 비디오 코딩 표준들은 시간적 예측 (temporal prediction)과 트랜스폼 코딩(transform coding)이 사용되는 하이브리드 비디오 코딩 구조에 기초한다. HEVC를 넘어 미래의 비디오 코딩 기술을 연구하기 위해, 공동 비디오 연구팀(JVET: Joint Video Exploration Team)이 VCEG와 MPEG의 공동으로 2015년에 설립되었다. 그 이후로, JVET에 의해 많은 새로운 방법들이 채택되었고 공동 연구 모델 (JEM: Joint Exploration Model)이라는 레퍼런스 소프트웨어에 적용되었다. JVET 회의는 분기마다 한번 동시 개최되며, 새로운 코딩 표준은 HEVC 대비 비트레이트 50% 감소를 목표로 하고 있다. 새로운 비디오 코딩 표준은 2018년 4월 JVET 회의에서 공식적으로 다목적 비디오 코딩(Versatile Video Coding; VVC)으로 명명되었으며, 당시 VVC 테스트 모델(VTM)의 첫 번째 버전이 출시되었다. VVC 표준화에 기여하는 지속적인 노력이 있기 때문에 모든 JVET 회의에서 새로운 코딩 기술이 VVC 표준에 채택되고 있다. VVC 작업 드래프트와 테스트 모델 VTM은 모든 회의 후에 업데이트된다. VVC 프로젝트는 현재 2020년 7월 회의에서 기술 완료(FDIS)를 목표로 하고 있다.
3.1. 일반 및 VVC에서 스케일러블 비디오 코딩(SVC)
스케일러블 비디오 코딩(SVC, 때때로 비디오 코딩에서 스케일러빌러티라고도 함)은 기본 계층(BL: Base Layer)(때로는 참조 계층(RL: Reference Layer)라고도 함)과 하나 이상의 스케일러블 향상 계층들(ELs: Enhancement layers)이 사용되는 비디오 코딩을 의미한다. SVC에서, 기본 계층은 기본 수준의 품질로 비디오 데이터를 전달할 수 있다. 하나 이상의 향상 계층들은 예를 들어 더 높은 공간, 시간 및/또는 신호 대 잡음(SNR) 레벨들을 지원하기 위해 추가 비디오 데이터를 전달할 수 있다. 향상 계층들은 이전에 인코딩된 레이어(계층)에 대해 정의될 수 있다. 예를 들어, 하부 계층은 BL의 역할을 할 수 있고 상부 계층은 EL의 역할을 할 수 있습니다. 중간 계층들은 ELs 또는 RLs 또는 두 가지 모두의 역할을 할 수 있다. 예를 들어, 중간 계층(예를 들어, 최하위 계층도 최상위 계층도 아닌 계층)은 기본 계층 또는 임의의 중간에 끼어 있는 향상 계층과 같은 중간 계층 아래의 계층들에 대한 EL일 수 있으며, 동시에 중간 계층 위의 하나 이상의 향상 계층들에 대한 RL 역할을 한다. 유사하게, HEVC 표준의 멀티뷰(Multiview) 또는 3D 확장(3D extension)에서, 다중 뷰가 있을 수 있고, 하나의 뷰의 정보는 다른 뷰의 정보(예를 들어, 움직임 추정, 움직임 벡터 예측 및/또는 다른 리던던시)의 정보를 코딩(예를 들어, 인코딩 또는 디코딩)하는데 이용될 수 있다.
SVC에서, 인코더 또는 디코더에 의해 사용되는 파라미터들은 그것들이 활용될 수 있는 코딩 레벨(예를 들어, 비디오 레벨, 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨 등)에 기초하여 파라미터 세트들로 그룹화된다. 예를 들어, 비트스트림에서 상이한 레이어들의 하나 이상의 코딩된 비디오 시퀀스들에 의해 이용될 수 있는 파라미터들은 비디오 파라미터 세트(VPS)에 포함될 수 있고, 코딩된 비디오 시퀀스에서 하나 이상의 픽처들에 의해 이용되는 파라미터들은 SPS(시퀀스 파라미터 집합)에 포함된다. 유사하게, 픽처의 하나 이상의 슬라이스들에 의해 활용되는 파라미터들은 픽처 파라미터 세트(PPS)에 포함될 수 있고, 단일 슬라이스에 특정한 다른 파라미터들은 슬라이스 헤더에 포함될 수 있다. 유사하게, 특정 계층이 주어진 시간에 어떤 파라미터 세트(들)를 사용하고 있는지의 표시는 다양한 코딩 레벨들에서 제공될 수 있다.
VVC에서 참조 픽처 리샘플링(RPR: Reference Picture Resampling) 지원 덕분에, VVC에서 SD 및 HD 해상도의 2개 계층들과 같이 다중 계층들(multiple layers)을 포함하는 비트스트림의 지원은 추가 신호 처리 레벨 코딩 툴 없이도 설계될 수 있고, 공간 스케일러빌리티 지원에 필요한 업샘플링은 RPR 업샘플링 필터만 사용할 수 있다. 그럼에도 불구하고 스케일러빌리티(scalability) 지원을 위해서는 높은 수준의 구문 변경(스케일러빌리티를 지원하지 않는 것과 비교하여)이 필요하다. 스케일러빌리티 지원은 VVC 버전 1에서 지정됩니다. AVC 및 HEVC의 확장을 포함하여 이전 비디오 코딩 표준의 스케일러빌리티 지원과 달리 VVC 스케일러빌리티 설계는 가능한 한 단일 계층 디코더 설계에 친숙하게 만들어졌다. 다중 계층 비트스트림에 대한 디코딩 기능은 비트스트림에 단일 계층만 있는 것처럼 지정된다. 예를 들어, DPB 크기와 같은 디코딩 기능은 디코딩될 비트스트림의 계층들의 개수와 독립된 방식으로 지정된다. 기본적으로 단일 계층 비트스트림용으로 설계된 디코더는 다중 계층 비트스트림을 디코딩하기 위해 많은 변경이 필요하지 않다. AVC 및 HEVC의 다중 계층 확장 설계와 비교할 때, HLS 측면은 일부 유연성을 희생하면서 상당히 단순화되었다. 예를 들어, IRAP AU는 CVS에 있는 각 계층에 대한 픽처를 포함하도록 요구된다.
3.2. 임의 액세스 및 HEVC 및 VVC 지원
랜덤 액세스는 디코딩 순서에서 비트스트림의 첫 번째 픽처가 아닌 픽처로부터 비트스트림에 대한 액세스 및 디코딩을 시작하는 것을 의미한다. 로컬 재생(local playback) 및 스트리밍뿐만 아니라 스트리밍에서 스트림 적응을 요구하는, 브로드캐스트/멀티캐스트 및 다자간 화상 회의에서 튜닝 및 채널 전환을 지원하려면, 비트스트림은 빈번한 랜덤 액세스 포인트들을 포함해야 하는데, 이는 일반적으로 인트라 코딩된(intra coded) 픽처이지만 인터 코딩된(inter-coded) 픽처일 수도 있다(예를 들어, 점진적 디코딩 리프레시의 경우).
HEVC는 NAL 유닛 타입을 통해 NAL 유닛 헤더에 인트라 랜덤 액세스 포인트(IRAP: Intra Random Access Point) 픽처들의 시그널링을 포함한다. 인스턴스 디코더 리프레시(IDR: Instantaneous Decoder Refresh), 클린 랜덤 액세스(CRA: Clean Random Access) 및 끊어진 링크 액세스(BLA: Broken Link Access)의 세 가지 유형의 IRAP 픽처들이 지원된다. IDR 픽처들은 일반적으로 폐쇄형 GOP 랜덤 액세스 포인트라고 하는 현재 그룹 오브 픽처들(GOP: Group-Of-Pictures) 이전의 픽처를 참조하지 않도록 픽처 간 예측 구조를 제한하고 있다. CRA 픽처들은 특정 픽처들인 현재 GOP 이전의 픽처들을 참조하도록 허용함으로써 덜 제한적이며, 이들 모두는 임의 액세스의 경우 폐기된다. CRA 픽처들은 일반적으로 개방형 GOP 랜덤 액세스 포인트라고 한다. BLA 픽처들은 일반적으로 예를 들어 스트림 스위칭 동안 CRA 픽처에서 2개의 비트스트림들 또는 그 일부의 스플라이싱(splicing)에서 발생한다. IRAP 픽처들의 더 나은 시스템 사용을 가능하게 하기 위해, IRAP 픽처들의 속성을 알리기 위해 모두 6개의 다른 NAL 유닛들이 정의되며, 이는 ISO 기본 미디어 파일 포맷(ISOBMFF)에 정의된 스트림 액세스 포인트 유형과 더 잘 일치하는 데 사용될 수 있으며, 이는 HTTP를 통한 동적 적응적 스트리밍(DASH: Dynamic Adaptive Streaming)에서 랜덤 액세스 지원에 활용된다.
VVC는 3가지 유형의 IRAP 픽처들, 2가지 유형의 IDR 픽처들(관련 RADL 픽처가 있는 유형 또는 없는 유형) 및 CRA 픽처의 한 유형을 지원한다. 이들은 기본적으로 HEVC에서와 동일하다. HEVC의 BLA 픽처들 유형은 주로 두 가지 이유로 인해 VVC에 포함되지 않는다: i) BLA 픽처들의 기본 기능은 CRA 픽처들과 시퀀스 NAL 유닛의 끝을 더하여 실현될 수 있으며, 그 존재는 후속 픽처가 단일 계층 비트스트림에서 새로운 CVS를 시작한다는 것을 나타낸다. ii) NAL 유닛 헤더의 NAL 유닛 유형 필드에 6 비트 대신 5 비트의 사용에 의해 나타나 듯이, VVC를 개발하는 동안 HEVC보다 적은 NAL 유닛 유형들을 지정하려는 요구가 있었다.
VVC와 HEVC 간의 랜덤 액세스 지원의또 다른 주요 차이점은 VVC에서 보다 규범적인 방식으로 GDR을 지원한다는 것입니다. GDR에서 비트스트림의 디코딩은 인터 코딩된 픽처에서 시작할 수 있으며 처음에는 전체 픽처 영역이 올바르게 디코딩될 수 없지만 여러 개의 픽처들 후에 전체 픽처 영역이 정확할 것입니다. AVC 및 HEVC는, GDR 랜덤 액세스 포인트 및 복구 지점들(recovery points)의 시그널링에 대한 복구 지점 SEI 메시지를 사용하여, GDR을 역시 지원한다. VVC에서, GDR 픽처들을 표시하기 위해 새로운 NAL 유닛 유형이 지정되고 복구 지점은 픽처 헤더 신택스 구조에서 시그널링 된다. CVS 및 비트스트림은 GDR 픽처로 시작할 수 있다. 이는 전체 비트스트림이 단일 인트라 코딩된 픽처 없이 인터 코딩된 픽처만 포함할 수 있음을 의미한다. 이러한 방식으로 GDR 지원을 지정할 때의 주요 이점은 GDR에 적합한 행동을 제공하는 것이다. GDR을 사용하면 인코더가 전체 픽처를 인트라 코딩하는 것과는 대조적으로 인트라 코딩 된 슬라이스들 또는 블록들을 여러 픽처에 배포하여 비트스트림의 비트 전송률을 부드럽게 할 수 있으며, 따라서 엔드-투-엔드(end-to-end) 지연을 크게 줄일 수 있고, 이는 무선 디스플레이, 온라인 게임, 드론 기반 애플리케이션(application)과 같은 초 저지연 애플리케이션이 대중화됨에 따라 요즘은 이전보다 더 중요하다고 간주된다.
VVC의 또 다른 GDR 관련 기능은 가상 경계 시그널링이다. GDR 픽처와 그 복구 포인트 사이의 픽처에서 리프레쉬된 영역(즉, 올바르게 디코딩된 영역)과 리프레쉬 되지 않은 영역 사이의 경계는 가상 경계(virtual boundary)로서 시그널링될 수 있으며, 시그널링될 때, 경계를 가로지르는 인루프 필터링(in-loop filtering)이 적용되지 않으므로, 경계 또는 경계 근처에서 일부 샘플들에 대해 디코딩 미스매치가 발생하지 않는다. 이는 애플리케이션이 GDR 프로세스 중에 올바르게 디코딩된 영역을 표시하기로 결정할 때 유용할 수 있다.
IRAP 픽처들과 GDR 픽처들을 통칭하여 랜덤 액세스 포인트 (RAP: Random Access Point) 픽처들이라고 할 수 있다.
3.3. 파라미터 세트
AVC, HEVC 및 VVC는 파라미터 세트를 지정한다. 파라미터 세트의 유형은 SPS, PPS, APS 및 VPS를 포함한다. SPS 및 PPS는 모든 AVC, HEVC 및 VVC에서 지원된다. VPS는 HEVC 이후 도입되었으며 HEVC와 VVC에 모두 포함되어 있다. APS는 AVC 또는 HEVC에 포함되지 않았지만 최신 VVC 초안 텍스트에는 포함되어 있다.
SPS는 시퀀스 레벨 헤더 정보를 전달하도록 설계되었으며, PPS는 드물게 변경되는 픽처 레벨 헤더 정보를 전달하도록 설계되었습니다. SPS 및 PPS를 사용하면, 각 시퀀스 또는 픽처에 대해 드물게 변경되는 정보를 반복할 필요가 없으므로 이 정보의 중복 시그널링을 피할 수 있다. 또한 SPS 및 PPS를 사용하면 중요한 헤더 정보의 대역 외 전송(out-of-band transmission)이 가능하므로 중복 전송의 필요성을 피할 뿐만 아니라 오류 복원력(error resilience)도 개선된다.
VPS는 다중 계층 비트스트림의 모든 계층들에 공통인 시퀀스 수준 헤더 정보를 전달하기 위해 도입되었다.
APS는 코딩하는 데 상당한 비트가 필요하고 여러 픽처에서 공유될 수 있으며 순서대로 매우 다양한 변형들이 있을 수 있는 픽처 레벨 또는 슬라이스 레벨 정보를 전달하기 위해 도입되었다.
3.4. VVC의 관련 정의
최신 VVC 텍스트(JVET-Q2001-vE/V15)의 관련 정의는 다음과 같다:
관련 IRAP 픽처(특정 픽처의): 특정 픽처와 동일한 nuh_layer_id 값을 갖는 디코딩 순서 (존재하는 경우)의 이전 IRAP 픽처
코딩된 비디오 시퀀스(CVS): 디코딩 순서로, CVSS AU 로 구성되는 AU 시퀀스로서, CVSS AU인 모든 후속 AU 들을 포함하지만 CVSS AU인 후속 AU 는 포함하지 않는, CVSS AU들이 아닌 0개 이상의 AU 가 따르는 AU 시퀀스.
코딩된 비디오 시퀀스 시작(CVSS) AU: CVS의 각 레이어에 대한 PU가 있고, 각 PU 의 코딩된 픽처가 CLVSS 픽처인 AU
점진적 디코딩 리프레시(GDR) AU: 각각의 현재 PU 의 코딩된 픽처가 GDR 픽처인 AU
점진적 디코딩 리프레시(GDR) PU: 코딩된 픽처가 GDR 픽처인 PU.
점진적 디코딩 리프레시(GDR) 픽처: 각 VCL NAL 유닛이 GDR_NUT와 동일한 nal_unit_type을 갖는픽처.
인트라 랜덤 액세스 포인트 (IRAP: Intra Random Access Point) AU: CVS의 각 레이어에 대한 PU가 있고, 각 PU의 코딩된 픽처가 IRAP 픽처인 AU.
인트라 랜덤 액세스 포인트 (IRAP: Intra Random Access Point) 픽처: 모든 VCL NAL 유닛들이 IDR_W_RADL에서 CRA_NUT까지의 범위에서 nal_unit_type의 동일한 값을 갖는 코딩된 픽처 (포함).
주요 픽처:연관된 IRAP 픽처와 동일한 계층에 있고 출력 순서에서 연관된 IRAP 픽처보다 앞선 픽처.
트레일링 픽처 (trailing picture): 출력 순서에서 연관된 IRAP 픽처를 따르고 STSA 픽처가 아닌 비-IRAP 픽처.
노트 - IRAP 픽처와 연관된 트레일링 픽처도 디코딩 순서에 따라 IRAP 픽처를 따른다. 출력 순서에서 연관된 IRAP 픽처를 따르고 디코딩 순서에서 연관된 IRAP 픽처 앞에 오는 픽처는 허용되지 않는다.
3.5. VVC의 VPS 구문(syntax) 및 의미(semantics)
VVC는 다중 계층들이 하나의 코딩된 비디오 비트스트림으로 인코딩될 수 있는 스케일러블 비디오 코딩이라고도 알려진 스케일러빌리티를 지원한다.
최신 VVC 텍스트(JVET-Q2001-VE/V15)에서, 스케일러빌리티 정보(scalability information)는 VPS에서 시그널링되며 구문 및 의미는 다음과 같다.
7.3.2.2 비디오 파라미터 집합 구문
video_parameter_set_rbsp( ) { 기술자
vps_video_parameter_set_id u(4)
vps_max_layers_minus1 u(6)
vps_max_sublayers_minus1 u(3)
if( vps_max_layers_minus1 > 0 && vps_max_sublayers_minus1 > 0 )
vps_all_layers_same_num_sublayers_flag u(1)
if( vps_max_layers_minus1 > 0 )
vps_all_independent_layers_flag u(1)
for( i = 0; i <= vps_max_layers_minus1; i++ ) {
vps_layer_id[ i ] u(6)
if( i > 0 && !vps_all_independent_layers_flag ) {
vps_independent_layer_flag[ i ] u(1)
if( !vps_independent_layer_flag[ i ] ) {
for( j = 0; j < i; j++ )
vps_direct_ref_layer_flag[ i ][ j ] u(1)
max_tid_ref_present_flag[ i ] u(1)
if( max_tid_ref_present_flag[ i ] )
max_tid_il_ref_pics_plus1[ i ] u(3)
}
}
}
if( vps_max_layers_minus1 > 0 ) {
if( vps_all_independent_layers_flag )
each_layer_is_an_ols_flag u(1)
if( !each_layer_is_an_ols_flag ) {
if( !vps_all_independent_layers_flag )
ols_mode_idc u(2)
if( ols_mode_idc = = 2 ) {
num_output_layer_sets_minus1 u(8)
for( i = 1; i <= num_output_layer_sets_minus1; i ++)
for( j = 0; j <= vps_max_layers_minus1; j++ )
ols_output_layer_flag[ i ][ j ] u(1)
}
}
}
vps_num_ptls_minus1 u(8)
for( i = 0; i <= vps_num_ptls_minus1; i++ ) {
if( i > 0 )
pt_present_flag[ i ] u(1)
if( vps_max_sublayers_minus1 > 0 && !vps_all_layers_same_num_sublayers_flag )
ptl_max_temporal_id[ i ] u(3)
}
while( !byte_aligned( ) )
vps_ptl_alignment_zero_bit /* equal to 0 */ f(1)
for( i = 0; i <= vps_num_ptls_minus1; i++ )
profile_tier_level( pt_present_flag[ i ], ptl_max_temporal_id[ i ] )
for( i = 0; i < TotalNumOlss; i++ )
if( vps_num_ptls_minus1 > 0 )
ols_ptl_idx[ i ] u(8)
if( !vps_all_independent_layers_flag )
vps_num_dpb_params ue(v)
if( vps_num_dpb_params > 0 && vps_max_sublayers_minus1 > 0 )
vps_sublayer_dpb_params_present_flag u(1)
for( i = 0; i < vps_num_dpb_params; i++ ) {
if( vps_max_sublayers_minus1 > 0 && !vps_all_layers_same_num_sublayers_flag )
dpb_max_temporal_id[ i ] u(3)
dpb_parameters( dpb_max_temporal_id[ i ], vps_sublayer_dpb_params_present_flag )
}
for( i = 0; i < TotalNumOlss; i++ ) {
if( NumLayersInOls[ i ] > 1 ) {
ols_dpb_pic_width[ i ] ue(v)
ols_dpb_pic_height[ i ] ue(v)
if( vps_num_dpb_params > 1 )
ols_dpb_params_idx[ i ] ue(v)
}
}
if( !each_layer_is_an_ols_flag )
vps_general_hrd_params_present_flag u(1)
if( vps_general_hrd_params_present_flag ) {
general_hrd_parameters( )
if( vps_max_sublayers_minus1 > 0 )
vps_sublayer_cpb_params_present_flag u(1)
num_ols_hrd_params_minus1 ue(v)
for( i = 0; i <= num_ols_hrd_params_minus1; i++ ) {
if( vps_max_sublayers_minus1 > 0 && !vps_all_layers_same_num_sublayers_flag )
hrd_max_tid[ i ] u(3)
firstSubLayer = vps_sublayer_cpb_params_present_flag ? 0 : hrd_max_tid[ i ]
ols_hrd_parameters( firstSubLayer, hrd_max_tid[ i ] )
}
if( num_ols_hrd_params_minus1 + 1 != TotalNumOlss &&
num_ols_hrd_params_minus1 > 0 )
for( i = 1; i < TotalNumOlss; i++ )
if( NumLayersInOls[ i ] > 1 )
ols_hrd_idx[ i ] ue(v)
}
vps_extension_flag u(1)
if( vps_extension_flag )
while( more_rbsp_data( ) )
vps_extension_data_flag u(1)
rbsp_trailing_bits( )
}
7.4.3.2 시퀀스 파라미터 세트 RBSP 시맨틱
VPS RBSP는 참조되기 전에 디코딩 프로세스에서 사용할 수 있어야 하며, TemporalId가 0인 적어도 하나의 AU에 포함되거나 외부 수단을 통해 제공됩니다.
CVS에서 vps_video_parameter_set_id의 특정 값을 갖는 모든 VPS NAL 유닛들은 동일한 내용을 가져야 한다.
vps_video_parameter_set_id는 다른 구문 요소들이 참조할 수 있도록 VPS에 대한 식별자를 제공한다. vps_video_parameter_set_id의 값은 0보다 커야 한다.
Vps_max_layers_minus1 더하기 1은 VPS를 참조하는 각 CVS에서 허용되는 최대 계층들의 개수를 지정한다.
vps_max_sublayers_minus1 더하기 1은 VPS를 참조하는 각 CVS의 계층에 존재할 수 있는 시간적 서브계층들(sublayers)의 최대 개수를 지정한다. vps_max_sublayers_minus1의 값은 0에서 6까지의 범위에 있어야 한다.
1과 동일한 vps_all_layers_same_num_sublayers_flag는 시간적 서브계층들의 개수가 VPS를 참조하는 각 CVS의 모든 계층들에 대해 동일함을 지정한다. 0과 동일한 vps_all_layers_same_num_sublayers_flag는 VPS를 참조하는 각 CVS의 계층이 동일한 개수의 시간적 서브계층들을 가질 수도 있고 갖지 않을 수도 있음을 지정한다. 존재하지 않는 경우, vps_all_layers_same_num_sublayer_flag의 값은 1과 동일한 것으로 유추된다.
1과 동일한 vps_all_independent_layers_flag 는 CVS의 모든 계층들이 계층간 예측을 사용하지 않고 독립적으로 코딩됨을 지정한다. 0과 동일한 vps_all_independent_layers_flag는 CVS의 하나 이상의 계층들이 계층간 예측을 사용할 수 있음을 지정한다. 존재하지 않는 경우, vps_all_dependent_layers_flag의 값은 1과 동일한 것으로 유추된다.
vps_layer_id[ i ]는 i번째 계층의 nuh_layer_id 값을 지정한다. m과 n의 두 개의 음이 아닌 정수 값에 대해 m이 n보다 작을 때 vps_layer_id[ m ]의 값은 vps_layer_id[ n ]보다 작아야 한다.
1과 동일한 vps_independent_layer_flag[ i ]는 인덱스 i를 갖는 계층이 계층간 예측을 사용하지 않음을 지정한다. 0과 동일한 vps_independent_layer_flag[ i ]는 인덱스 i를 갖는 계층이 계층간 예측을 사용할 수 있고 0에서 i - 1(포함) 범위의 j에 대한 구문 요소 vps_direct_ref_layer_flag[ i ][ j ]가 VPS에 존재함을 지정한다. 존재하지 않는 경우, vps_independent_layer_flag[ i ]의 값은 1과 동일한 것으로 유추된다.
0과 동일한 vps_direct_ref_layer_flag[ i ][ j ]는 인덱스 j를 갖는 계층이 인덱스 i를 갖는 계층에 대한 직접 참조 계층이 아님을 지정한다. 1과 동일한 vps_direct_ref_layer_flag [ i ][ j ]는 인덱스 j를 갖는 계층이 인덱스 i를 갖는 레이어에 대한 직접 참조 계층임을 지정한다. vps_direct_ref_layer_flag[ i ][ j ] 가 0에서 vps_max_layers_minus1까지를 포함하는 범위의 I 및 j에 대해, 존재하지 않는 경우 0과 동일한 것으로 유추된다. vps_independent_layer_flag[ i ]가 0과 동일한 경우, vps_direct_ref_layer_flag[ i ][ j ]의 값이 1과 동일하도록 0에서 I - 1까지를 포함하는 범위에 적어도 하나의 j 값이 존재해야 한다.
변수NumDirectRefLayers[ i ], DirectRefLayerIdx[ i ][ d ], NumRefLayers[ i ], RefLayerIdx[ i ][ r ], and LayerUsedAsRefLayerFlag[ j ]는 다음과 같이 유도된다:
for( i = 0; i <= vps_max_layers_minus1; i++ ) {
for( j = 0; j <= vps_max_layers_minus1; j++ ) {
dependencyFlag[ i ][ j ] = vps_direct_ref_layer_flag[ i ][ j ]
for( k = 0; k < i; k++ )
if( vps_direct_ref_layer_flag[ i ][ k ] && dependencyFlag[ k ][ j ] )
dependencyFlag[ i ][ j ] = 1
}
LayerUsedAsRefLayerFlag[ i ] = 0
}
for( i = 0; i <= vps_max_layers_minus1; i++ ) {
for( j = 0, d = 0, r = 0; j <= vps_max_layers_minus1; j++ ) { (37)
if( vps_direct_ref_layer_flag[ i ][ j ] ) {
DirectRefLayerIdx[ i ][ d++ ] = j
LayerUsedAsRefLayerFlag[ j ] = 1
}
if( dependencyFlag[ i ][ j ] )
RefLayerIdx[ i ][ r++ ] = j
}
NumDirectRefLayers[ i ] = d
NumRefLayers[ i ] = r
}
vps_layer_id[ i ]와 동일한 nuh_layer_id 를 갖는 계층의 계층 인덱스를 지정하는, 변수 General Layerldx| I ]는 다음과 같이 유도된다:
for( i = 0; i <= vps_max_layers_minus1; i++ ) (38)
GeneralLayerIdx[ vps_layer_id[ i ] ] = i
i와 j의 두 개의 다른 값에 대해, 0에서 vps_max_layers_minus1까지를 포함하는 범위에서, dependencyFlag[ i ][ j ] 가 1인 경우, i번째 계층에 적용되는 크로마 포맷 idc 및 bit_depth_minus8의 값이 j번째 계층에 적용되는 chroma_format_idc 및 bit_depth_minus8의 값과 각각 동일해야 하는 것이 비트스트림 적합성의 요구 사항이다.
1과 동일한 max_tid_ref_present_flag[i]는 구문 요소 max_tid_il_ref_pics_plus1[ i ]이 존재함을 지정한다. 0과 동일한 max_tid_ref_present_flag[ i ]는 구문 요소 max_tid_il_ref_pics_plus1[ i ]이 존재하지 않음을 지정한다.
0과 동일한 max_tid_il_ref_pics_plus1[i]는 계층간 예측이 i번째 계층의 비-IRAP 픽처들에 의해 사용되지 않음을 지정한다. 0보다 큰 max_tid_il_ref_pics_plus1[ i ]은 i 번째 계층의 픽처들을 디코딩하기 위해 max_tid_il_ref_pics_plus1[ i ] - 1보다 큰 TemporalId를 갖는 픽처가 ILRP로 사용되지 않음을 지정한다. 존재하지 않는 경우, max_tid_il_ref_pics_plus1[ i ] 의 값은 7과 동일한 것으로 유추된다.
1과 동일한 each_layer_is_an_ols_flag는 각 OLS가 하나의 계층만 포함하고 VPS를 참조하는 CVS의 각 계층 자체가 단일 포함 계층(single included layer)이 유일한 출력 계층인 OLS임을 지정한다. each_layer_is_an_ols_flag는 OLS가 하나 이상의 레이어를 포함할 수 있다는 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과 동일한 것으로 유추된다.
0과 동일한 ols_mode_idc는 VPS에서 지정한 총 OLS 개수가 vps_max_layers_minus1+1과 동일하고, i번째 OLS는 계층 인덱스가 0에서 i까지를 포함하는 계층들을 포함하고, 각 OLS에 대해 OLS에서 가장 높은 계층만 출력된다고 지정한다.
1과 동일한 ols_mode_idc는 VPS에서 지정한 총 OLS 개수가 vps_max_layers_minus1+1과 동일하고, i번째 OLS에는 계층 인덱스가 0에서 i 까지를 포함하는 계층들을 포함하고, 각 OLS에 대해 OLS의 모든 계층들이 출력된다고 지정한다.
2와 동일한 ols_mode_idc는 VPS에서 지정한 총 OLS 개수가 명시적으로 시그널링되고, 각 OLS에 대해 출력 계층들이 명시적으로 시그널링 되고, 다른 계층들은 OLS 출력 계층들의 직접 또는 간접 참조 계층들인 계층이 되도록 지정한다.
ols_mode_idc의 값은 0에서 2까지의 범위에 있어야 한다. ols_mode_idc의 값 3은 ITU-T | ISO/IEC에서 향후 사용할 수 있도록 예약되어 있다.
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는 다음과 같이 유도된다:
if( vps_max_layers_minus1 = = 0 )
TotalNumOlss = 1
else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 )
TotalNumOlss = vps_max_layers_minus1 + 1 (39)
else if( ols_mode_idc = = 2 )
TotalNumOlss = num_output_layer_sets_minus1 + 1
1과 동일한 ols_output_layer_flag[ i ][ j ]는 vps_layer_id[ j ]와 동일한 nuh_layer_id를 갖는 계층이 ols_mode_idc가 2와 같을 때 i번째 OLS의 출력 계층임을 지정한다. 0과 동일한 ols_output_layer_flag[ i ][ j ]는 vps_layer_id[ j ]와 동일한 nuh_layer_id를 갖는 계층이 ols_mode_idc가 2일 때 i번째 OLS의 출력 계층이 아님을 지정한다.
i번째 OLSF[ i ] 의 출력 계층들 개수를 지정하는 변수 NumOutputLayersinOLSF[ i ], i번째 OLS에서 j번째 계층의 서브계층들 개수를 지정하는 변수 numSublayerinols[ i ][ j ], i번째 OLS에서 j번째 출력 계층의 nuh_layer_id 값을 지정하는 변수 OutputLayerldlnOls[ i ][ j ], 및 적어도 하나의 OLS에서 k번째 계층이 출력 계층으로 사용되는지 여부를 지정하는 변수 layerUsedasOutputLayerflag[k] 는, 다음과 같이 유도된다:
NumOutputLayersInOls[ 0 ] = 1
OutputLayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
NumSubLayersInLayerInOLS[ 0 ][ 0 ] = vps_max_sub_layers_minus1 + 1
LayerUsedAsOutputLayerFlag[ 0 ] = 1
for( i = 1, i <= vps_max_layers_minus1; i++ ) {
if( each_layer_is_an_ols_flag | | ols_mode_idc < 2 )
LayerUsedAsOutputLayerFlag[ i ] = 1
else /*( !each_layer_is_an_ols_flag && ols_mode_idc = = 2 ) */
LayerUsedAsOutputLayerFlag[ i ] = 0
}
for( i = 1; i < TotalNumOlss; i++ )
if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 ) {
NumOutputLayersInOls[ i ] = 1
OutputLayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
for( j = 0; j < i && ( ols_mode_idc = = 0 ); j++ )
NumSubLayersInLayerInOLS[ i ][ j ] = max_tid_il_ref_pics_plus1[ i ]
NumSubLayersInLayerInOLS[ i ][ i ] = vps_max_sub_layers_minus1 + 1
} else if( ols_mode_idc = = 1 ) {
NumOutputLayersInOls[ i ] = i + 1
for( j = 0; j < NumOutputLayersInOls[ i ]; j++ ) {
OutputLayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
NumSubLayersInLayerInOLS[ i ][ j ] = vps_max_sub_layers_minus1 + 1
}
} else if( ols_mode_idc = = 2 ) {
for( j = 0; j <= vps_max_layers_minus1; j++ ) {
layerIncludedInOlsFlag[ i ][ j ] = 0
NumSubLayersInLayerInOLS[ i ][ j ] = 0
}
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ ) (40)
if( ols_output_layer_flag[ i ][ k ] ) {
layerIncludedInOlsFlag[ i ][ k ] = 1
LayerUsedAsOutputLayerFlag[ k ] = 1
OutputLayerIdx[ i ][ j ] = k
OutputLayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]
NumSubLayersInLayerInOLS[ i ][ j ] = vps_max_sub_layers_minus1 + 1
}
NumOutputLayersInOls[ i ] = j
for( j = 0; j < NumOutputLayersInOls[ i ]; j++ ) {
idx = OutputLayerIdx[ i ][ j ]
for( k = 0; k < NumRefLayers[ idx ]; k++ ) {
layerIncludedInOlsFlag[ i ][ RefLayerIdx[ idx ][ k ] ] = 1
if( NumSubLayersInLayerInOLS[ i ][ RefLayerIdx[ idx ][ k ] ] <
max_tid_il_ref_pics_plus1[ OutputLayerIdInOls[ i ][ j ] ] )
NumSubLayersInLayerInOLS[ i ][ RefLayerIdx[ idx ][ k ] ] =
max_tid_il_ref_pics_plus1[ OutputLayerIdInOls[ i ][ j ] ]
}
}
}
0에서 vps_max_layers_minus1까지를 포함하는 범위의 각각의 i 값에 대해, LayerUsedAsRefLayerFlag[ i ] 및 LayerUsedAsOutputLayerFlag[ i ]의 값은 모두 0과 동일하지 않아야 한다. 즉, 적어도 하나의 OLS의 출력 계층도 아니고 다른 어떠한 계층의 직접 참조 계층(direct reference layer)도 아닌 계층은 없어야 한다.
각 OLS에는 출력 계층인 계층이 적어도 하나 이상 존재해야 한다. 즉, 0에서 TotalNumOlss - 1까지를 포함하는 범위의 어떠한 i 값에 대해서도, NumOutputLayersInOls[ i ] 의 값은 1보다 크거나 같아야 한다.
i번째 OLS의 계층들의 개수를 지정하는 변수 NumLayersInOls[ i ] 와 i번째 OLS에서 j번째 계층의 nuh_layer_id 값을 지정하는 변수 LayerldlnOls[ i ][ j ]는 다음과 같이 유도된다:
NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1; i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ] (41)
} else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
} else if( ols_mode_idc = = 2 ) {
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( layerIncludedInOlsFlag[ i ][ k ] )
LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]
NumLayersInOls[ i ] = j
}
}
노트 1 - 0번째 OLS는 최저 계층(즉, nuh_layer_id가 vps_layer_id[0] 와 동일한 계층)만 포함하고, 0번째 OLS의 경우 포함된 계층만 출력된다.
LayerldlnOlsf I ][ j ]와 동일한 nuh_layer_id를 갖는 게층의 OLS 계층 인덱스를 지정하는 변수 OlsLayerIdx[ i ][ j ]는 다음과 같이 유도된다:
for( i = 0; i < TotalNumOlss; i++ )
for j = 0; j < NumLayersInOls[ i ]; j++ ) (42)
OlsLayerIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j
각 OLS의 최하위 계층은 독립 계층이어야 한다. 즉, 0에서 TotalNumOlss - 1까지를 포함하는 범위의, 각 i에 대해, vps_independent_layer_flag[ General Layerldx| LayerldlnOlsf I ][ 0 ] ] ]의 값은 1과 동일해야 한다.
각 계층은 VPS에서 지정된 적어도 하나의 OLS에 포함되어야 한다. 즉, 0에서 vps_max_layers_minus1까지를 포함하는 범위의 k에 대한 vps_layer_id[k] 중 하나와 동일한 nuh_layer_id nuhLayerld의 특정 값을 갖는 각 계층에 대해, i와 j의 값들의 쌍이 적어도 하나 존재해야 하고, 여기서 i는 0에서 TotalNumOlss - 1 까지를 포함하는 범위에 있고, j는 NumLaycrsInOls| I ] - 1를 포함하는 범위에 있으므로, LayerldlnOls[ i ][j ]의 값은 nuhLayerld와 동일하다.
vps_num_ptls_minus1 더하기 1은 VPS의 profile_tier_level() 신택스 구조들(syntax structures)의 개수를 지정한다. vps_num_ptls_minus1의 값은 TotalNumOlss보다 작아야 한다.
1과 동일한 pt_present_flag[ i ]는 프로파일(profile), 단계(tier) 및 일반 제약 정보(general constraints information)가 VPS의 i번째 profile_tier_level() 신택스 구조에 존재함을 지정한다. 0과 동일한 pt_present_flag[ i ]는 프로파일, 단계 및 일반 제약 정보가 VPS의 i번째 profile_tier_level() 신택스 구조에 존재하지 않음을 지정한다. pt_present_flag[0] 의 값은 1과 동일한 것으로 유추된다. pt_present_flag[ i ] 가 0과 같으면, VPS의 i번째 profile_tier_level() 신택스 구조에 대한 프로파일, 단계 및 일반 제약 조건 정보는 VPS의 (i - 1) 번째 profile_tier_level() 신택스 구조에 대한 것과 동일한 것으로 유추된다.
Ptl_max_temporal_id[ i ]는, 레벨 정보가 VPS의 i번째 profile_tier_level() 신택스 구조에 존재하는 최상위 서브 계층 표현의 Temporalld를 지정한다. ptl_max_temporal_id[ i ] 의 값은 0에서 vps_max_layers_minus1까지를 포함하는 범위여야 한다. vps_max_layers_minus1이 0이면, ptl_max_temporal_id[ i ] 의 값은 0과 동일한 것으로 유추된다. vps_max_layers_minus1이 0보다 크고 vps_all_layers_same_num_sublayer_flag가 1과 동일한 경우, ptl_max_temporal_id[ i ] 의 값은 vps_max_layers_minus1과 동일한 것으로 유추된다.
Vps_ptl_alignment_zero_bit는 0과 동일해야 한다.
Ols_ptl_idx[ i ] 는, VPS의 profile_tier_level() 신택스 구조 목록에 대해, i번째 OLS에 적용되는 profile_tier_level() 신택스 구조의 인덱스를 지정한다. 존재하는 경우, ols_ptl_idx[ i ] 의 값은 0에서 vps_num_ptls_minus1까지를 포함하는 범위여야 한다. vps_num_ptls_minus1이 0인 경우 ols_ptl_idx[ i ] 의 값은 0과 동일한 것으로 유추된다.
NumLayersInOls[ i ]가 1과 같으면, i번째 OLS에 적용되는 profile_tier_level() 신택스 구조는 i번째 OLS의 계층에서 참조하는 SPS에도 존재한다. NumLayersInOls[ i ]가 1과 같을 때, VPS 및 i번째 OLS에 대한 SPS에서 시그널링 되는 profile_tier_level() 신택스 구조들이 동일해야 한다는 것이 비트스트림 적합성의 요구 사항이다.
Vps_num_dpb_params는 VPS에서 dpb_parameter() 신택스 구조들의 개수를 지정한다.
vps_num_dpb_params의 값은 0에서 16까지를 포함하는 범위여야 한다. 존재하지 않는 경우, vps_num_dpb_params의 값은 0과 동일한 것으로 유추된다.
Vps_sublayer_dpb_params_present_flag는 VPS의 dpb_parameters() 신택스 구조에서 max_dec_pic_buffering_minus1[], max_num_reorder_pics[] 및 max_latency_increase_plus1[ ] 신택스 요소들의 존재를 제어하는 데 사용된다. 존재하지 않을 경우, sps_sub_dpb_params_info_present_flag의 값은 0과 동일한 것으로 유추된다.
Dpb_max_temporal_id[ i ]는, DPB 파라미터들이 VPS의 i번째 dpb_parameters() 신택스 구조에 존재할 수 있는 최상위 서브계층 표현의 Temporalld를 지정한다. dpb_max_temporal_id[ i ] 의 값은 0에서 vps_max_layers_minus1까지를 포함하는 범위여야 한다. vps_max_layers_minus1이 0이면, dpb_max_temporal_id[ i ] 의 값은 0과 동일한 것으로 유추된다. vps_max_layers_minus1이 0보다 크고 vps_all_layers_same_num_sublayer_flag가 1과 동일한 경우, dpb_max_temporal_id[ i ] 의 값은 vps_max_layers_minus1과 동일한 것으로 유추된다.
Ols_dpb_pic_width[ i ] 는 i번째 OLS에 대한 각 픽처 저장 버퍼의 너비를 루마 샘플 유닛들로 지정한다.
Ols_dpb_pic_height[ i ] 는 i번째 OLS에 대한 각 픽처 저장 버퍼의 높이를 루마 샘플 유닛들로 지정한다.
Ols_dpb_params_idx[ i ] 는, VPS의 dpb_parameters() 신택스 구조 목록에 대해, NumLayersIn0ls[ i ]가 1보다 클 때, i번째 OLS에 적용되는 dpb_parameters() 신택스 구조의 인덱스를 지정한다. 존재하는 경우, ols_dpb_params_idx[ i ] 의 값은 0에서 vps_num_dpb_params - 1까지를 포함하는 범위여야 한다.
ols_dpb_params_idx[ i ] 가 존재하지 않는 경우, ols_dpb_params_idx[ i ] 의 값은 0과 동일한 것으로 유추된다.
NumLayersInOls[ i ] 가 1과 동일한 경우, i번째 OLS에 적용되는 dpb_parameters() 신택스 구조가 i번째 OLS의 계층에서 참조하는 SPS에 존재한다.
1과 동일한 vps_general_hrd_params_present_flag는 VPS가 general_hrd_parameters() 신택스 구조 및 다른 HRD 파라미터를 포함함을 지정한다.
0과 동일한 vps_general_hrd_params_present_flag는 VPS가 general_hrd_parameters() 신택스 구조 또는 다른 HRD 파라미터들을 포함하지 않음을 지정한다. 존재하지 않을 때, vps_general_hrd_params_present_flag의 값은 0과 같은 것으로 유추된다.
NumLayersInOls[ i ] 가 1과 동일한 경우, i번째 OLS에 적용되는 general_hrd_parameters() 신택스 구조와 ols_hrd_parameters() 신택스 구조가 i번째 OLS의 계층에서 참조하는 SPS에 존재한다.
1과 동일한 vps_sublayer_cpb_params_present_flag는 VPS의 i번째 ols_hrd_parameters() 신택스 구조가 0에서 hrd_max_tid[ i ]까지를 포함하는 범위에 있는 TemporalId를 갖는 서브계층 표현을 위한 HRD 파라미터들을 포함함을 지정한다. 0과 동일한 vps_sublayer_cpb_params_present_flag는 VPS의 i번째 ols_hrd_parameters() 신택스 구조가 오직 hrd_max_tid[ i ]와 동일한 TemporalId를 갖는 서브계층 표현을 위한 HRD 매개변수를 포함함을 지정한다.
vps_max_sublayers_minus1이 0과 동일할 때, vps_sublayer_cpb_params_present_flag의 값은 0과 동일한 것으로 유추된다.
vps_sublayer_cpb_params_present_flag가 0과 동일할 때, 0에서 hrd_max_tid[ i ] - 1까지를 포함하는 범위에 있는 TemporalId를 갖는 서브계층 표현에 대한 HRD 파라미터들은 hrd_max_tid[ i ]와 동일한 TemporalId를 갖는 서브계층 표현에 대한 것과 동일한 것으로 유추된다. 여기는 fixed_pic_rate_general_flag[ i ] 신택스 요소에서 시작하여 ols_hrd_parameters 신택스 구조의 "if(general_vcl_hrd_params_present_flag)" 조건 바로 아래의 sublayer_hrd_parameters( i ) 신택스 구조까지의 HRD 파라미터들을 포함한다.
num_ols_hrd_params_minus1 더하기 1은, vps_general_hrd_params_present_flag 가 1과 같을 때 VPS에 있는 ols_hrd_parameter() 신택스 구조들의 개수를 지정한다. num_ols_hrd_params_minus1의 값은 0에서 TotalNumOlss -1까지를 포함하는 범위여야 한다.
hRD_max_tid[ i ] 는 HRD 파라미터가 i-번째 ols_hrd_parameters() 신택스 구조에 포함되도록 최상위 서브계층 표현의 Temporalld를 지정한다. hrd_max_tid[ i ] 의 값은 0에서 vps_max_sublayer_minus1까지를 포함하는 범위여야 한다. vps_max_layers_minus1이 0인 경우, hrd_max_tid[ i ] 의 값은 0으로 추정된다. vps_max_layers_minus1이 0보다 크고 vps_all_layers_same_num_sublayers_flag가 1인 경우, hrd_max_tid[ i ] 의 값은 vps_max_sublayer_minus1과 같다고 추정된다.
ols_hrd_idx[ i ] 는 VPS의 ols_hrd_parameters() 신택스 구조 목록에 대해, NumLayersIn0ls[ i ]가 1보다 클 때, i번째 OLS에 적용되는 ols_hrd_parameters() 신택스 구조의 인덱스를 지정한다. ols_hrd_idx[ i ] 의 값은 0에서 num_ols_hrd_params_minus1까지를 포함하는 범위여야 한다.
NumLayersInOls[ i ]가 1과 동일한 경우, i번째 OLS에 적용되는 ols_hrd_parameters() 신택스 구조가 i번째 OLS의 계층에서 참조하는 SPS에 있다.
num_ols_hrd_param_minus1 + 1의 값이 TotalNumOlss와 동일한 경우, ols_hrd_idx[ i ] 의 값은 i와 동일한 것으로 유추된다. 그렇지 않으면 NumLayersInOls[ i ]가 1보다 크고 num_ols_hrd_params_minus1이 0인 경우, ols_hrd_idx[ i ] 의 값은 0과 동일한 것으로 유추된다.
0과 동일한 vps_extension_flag는 VPS RBSP 신택스 구조에 vps_extension_data_flag 신택스 요소들이 존재하지 않음을 지정한다. 1과 동일한 vps_extension_flag는 VPS RBSP 신택스 구조에 vps_extension_data_flag 신택스 요소들이 존재함을 지정한다.
Vps_extension_data_flag는 임의의 값을 가질 수 있다. 그것의 존재와 가치는 이 사양의 이 버전에서 지정된 프로파일에 대한 디코더 적합성에 영향을 미치지 않는다. 이 사양의 이 버전을 따르는 디코더는 모든 vps_extension_data_flag 신택스 요소들을 무시해야 한다.
3.6. VVC의 SPS 구문 및 의미
최신 VVC 텍스트(JVET-Q2001-vE/v15에서의)에서 본 발명과 가장 관련이 있는 SPS 구문 및 의미는 다음과 같다.
7.3.2.3 시퀀스 파라미터 세트(Sequence parameter set) RBSP 신택스
seq_parameter_set_rbsp( ) { 기술자
... ue(v)
gdr_enabled_flag u(1)
chroma_format_idc u(2)
... ue(v)
bit_depth_minus8 ue(v)
... ue(v)
}
7.4.3.3 시퀀스 파라미터 세트 RBSP 시맨틱
...
1과 동일한 gdr_enabled_flag는 GDR 픽처들이 SPS를 참조하는 CLVS에 존재할 수 있음을 지정한다. 0과 동일한 gdr_enabled_flag는 GDR 픽처들이 SPS를 참조하는 CLVS에 존재하지 않음을 지정한다.
chroma_format_idc는 6.2절에 명시된 루마 샘플링에 상대적인 크로마 샘플링을 지정한다.
...
bit_depth_minus8은 다음과 같이 루마 및 크로마 어레이 샘플들의 비트 심도, BitDepth, 및 루마 및 크로마 양자화 파라미터 범위 오프셋의 값, QpBdOffset를 지정한다:
BitDepth = 8 + bit_depth_minus8 (45)
QpBdOffset = 6 * bit_depth_minus8 (46)
bit_depth_minus8은 0에서 8까지를 포함하는 범위에 있어야 한다.
...
3.7. VVC의 픽처 헤더 구조 신택스 및 시맨틱
최신 VVC 텍스트(JVET-Q2001-vE/v15)에서 여기에 설명된 본 발명과 가장 관련이 있는 픽처 헤더 구조 신택스 및 시맨틱은 다음과 같다.
7.3.2.7 픽처 헤더 구조 신택스
picture_header_structure( ) { 기술자
gdr_or_irap_pic_flag u(1)
if( gdr_or_irap_pic_flag )
gdr_pic_flag u(1)
...
ph_pic_order_cnt_lsb u(v)
if( gdr_or_irap_pic_flag )
no_output_of_prior_pics_flag u(1)
if( gdr_pic_flag )
recovery_poc_cnt ue(v)
... ue(v)
}
7.4.3.7 픽처 헤더 구조 시맨틱
PH 신택스 구조는 PH 신택스 구조와 연관된 코딩된 픽처의 모든 슬라이스에 공통적인 정보를 포함한다.
1과 동일한 gdr_or_irap_pic_flag는 현재 픽처가 GDR 또는 IRAP 픽처임을 지정한다. 0과 동일한 gdr_or_irap_pic_flag는 현재 픽처가 GDR 또는 IRAP 픽처일 수도 있고 아닐 수도 있음을 지정한다.
1과 동일한 gdr_pic_flag는 PH와 연관된 픽처가 GDR 픽처임을 지정한다. 0과 동일한 gdr_pic_flag는 PH와 연관된 픽처가 GDR 픽처가 아님을 지정한다. 존재하지 않을 때, gdr_pic_flag의 값은 0과 동일한 것으로 유추된다. gdr_enabled_flag가 0과 동일할 때, gdr_pic_flag의 값은 0과 동일해야 한다.
노트 1 - gdr_or_irap_pic_flag가 1이고 gdr_pic_flag가 0과 동일하면, PH와 연관된 픽처는 IRAP 픽처이다.
...
ph_pic_order_cnt_lsb는 현재 픽처에 대한 픽처 순서 카운트 모듈로 MaxPicOrderCntLsb를 지정한다. ph_pic_order_cnt_lsb 신택스 요소의 길이는 log2_max_pic_order_cnt_lsb_minus4 + 4비트이다. ph_pic_order_cnt_lsb의 값은 0에서 MaxPicOrderCntLsb-1까지를 포함하는 범위에 있어야 한다.
no_output_of_prior_pics_flag는 부록 C에 지정된 비트스트림의 제1 픽처가 아닌 CLVSS 픽처의 디코딩 후 DPB에서 이전에 디코딩된 픽처의 출력에 영향을 준다.
recovery_poc_cnt는 출력 순서대로 디코딩된 픽처의 복구 지점을 지정한다. 현재 픽처가 PH와 연관된 GDR 픽처이고, 현재 GDR 픽처의 PicOrderCntVal에 recovery_poc_cnt 값을 더한 것과 동일한 PicOrderCntVal을 갖는 CLVS에서 디코딩 순서에서 현재 GDR 픽처를 따르는 픽처 picA가 있는 경우, 픽처 picA는 복구 포인트 픽처로 지칭된다. 그렇지 않으면, 현재 픽처의 PicOrderCntVal에 recovery_poc_cnt의 값을 더한 것보다 더 큰 PicOrderCntVal을 갖는 출력 순서의 제1 픽처를 복구 포인트 픽처라고 한다. 복구 지점 픽처는 디코딩 순서에서 현재 GDR 픽처보다 선행하지 않아야 한다. recovery_poc_cnt의 값은 0에서 MaxPicOrderCntLsb-1까지를 포함하는 범위에 있어야 한다.
현재 픽처가 GDR 픽처인 경우, 변수 RpPicOrderCntVal은 다음과 같이 유도된다:
RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (81)
노트 2 - gdr_enabled_flag가 1이고 현재 픽처의 PicOrderCntVal이 연관된 GDR 픽처의 RpPicOrderCntVal보다 크거나 같을 때, 출력 순서의 현재 및 후속 디코딩된 픽처는 디코딩 순서에서 연관된 GDR 픽처에 선행하는 이전 IRAP 픽처(존재하는 경우)로부터 디코딩 프로세스를 시작함으로써 생성된 대응하는 픽처와 정확히 일치한다.
...
3.8. PictureOutputFlag의 설정
최신 VVC 텍스트(JVET-Q2001-vE/v15)에서, 변수 PictureOutputFlag의 값 설정에 대한 사양은 다음과 같다(코딩된 픽처에 대한 8.1.2절 디코딩 프로세스의 일부로).
8.1.2 코딩된 픽처의 디코딩 프로세스
이 절에 지정된 디코딩 프로세스는, BitstreamToDecode에서, 현재 픽처라고 하고 변수 CurrPic으로 표시된, 코딩된 각 픽처에 적용된다.
chroma_format_idc의 값에 따라 현재 픽처의 샘플 어레이들의 개수는 다음과 같다:
- chroma_format_idc가 0이면, 현재 픽처는 1개의 샘플 어레이 SL로 구성된다.
- 그렇지 않으면 (chroma_format_idc 0과 동일하지 않음), 현재 픽처는 3 개의 샘플 어레이 들 SL, SCb, SCr 로 구성된다.
현재 픽처에 대한 디코딩 프로세스는 절 7의 신택스 요소들과 대문자 변수들을 입력으로 사용한다. 각 NAL 유닛 및 절 8의 나머지 부분에서, 각 신택스 요소의 시맨틱을 해석할 때, 용어 "비트스트림"(또는 그 일부, 예를 들어, 비트스트림의 CVS)은 BitstreamToDecode (또는 그 일부)를 지칭한다.
separate_colour_plane_flag의 값에 따라, 디코딩 프로세스는 다음과 같이 구조화된다:
- separate_colour_plane_flag가 0과 동일하면, 디코딩 프로세스가 출력이 현재 픽처로 단일 시간 호출된다.
- 그렇지 않으면(separate_colour_plane_flag 1과 동일함), 디코딩 프로세스는 세 번 호출된다. 디코딩 프로세스에 대한 입력은 colour_plane_id와 동일한 값을 갖는 코딩된 픽처의 모든 NAL 유닛들이다. 특정 값이 colour_plane_id인 NAL 유닛의 디코딩 프로세스는 마치 특정 값이 colour_plane_id인 단색 형식의 CVS만 비트스트림에 있는 것 같이 지정된다. 3개의 디코딩 프로세스 각각의 출력은 현재 픽처의 3개의 샘플 어레이들 중 하나에 할당되고, 0, 1 및 2와 동일한 colour_plane_id의 NAL 유닛들은 각각 SL, SCb, SCr에 할당된다.
노트 - 변수 ChromaArrayType은, separate_colour_plane_flag가 1과 동일하고 chroma_format_idc가 3과 동일할 때, 0과 동일하게 유도된다. 디코딩 프로세스에서, 이 변수의 값이 평가되어 흑백 픽처의 동작과 동작이 생긴다 (chroma_format_idc가 0인 경우).
디코딩 프로세스는 현재 픽처 CurrPic에 대해 다음과 같이 동작한다:
1. NAL 유닛의 디코딩은 절 8.2에 지정되어 있다.
2. 8.3절의 프로세스 슬라이스 헤더 레이어 이상에서 구문 요소를 사용하여 다음 디코딩 프로세스를 명시한다.
- 픽처 순서 수와 관련된 변수 및 함수는 절 8.3.1에 지정된 대로 유도된다. 이것은 픽처의 제1 슬라이스에 대해서만 호출되야 한다.
- IDR이 아닌 픽처의 각 슬라이스에 대한 디코딩 프로세스의 시작에서, 절 8.3.2에서 지정된 레퍼런스 픽처 목록 구성을 위한 디코딩 프로세스는 레퍼런스 픽처 목록 0(RefPicList[ 0 ]) 및 레퍼런스 픽처 목록 1(RefPicList[ 1 ])의 유도를 위해 호출된다.
- 8.3.3 절에서 레퍼런스 픽처 마킹을 위한 디코딩 프로세스가 호출되고, 여기서 레퍼런스 픽처는 "참조에 사용되지 않음" 또는 "장기 참조에 사용됨"으로 마킹될 수 있다. 이것은 픽처의 제1 슬라이스에 대해서만 호출되야 한다.
- 현재 픽처가 NoOutputBeforeRecoveryFlag가 1인 CRA 픽처이거나 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처인 경우 하위 절 8.3.4에 지정된 사용할 수 없는 레퍼런스 픽처를 생성하기 위한 디코딩 프로세스가 호출되고, 이는 픽처의 제1 슬라이스에 대해서만 호출되어야 한다.
- PictureOutputFlag는 다음과 같이 설정된다:
- 다음 조건 중 하나가 참이면, PictureOutputFlag가 0으로 설정된다:
- 현재 픽처는 RASL 픽처이고 연관된 IRAP 픽처의 NoOutputBeforeRecoveryFlag는 1과 동일하다.
- gdr_enabled_flag는 1과 동일하고 현재 픽처는 1과 동일한 NoOutputBeforeRecoveryFlag를 갖는 GDR 픽처이다.
- gdr_enabled_flag 1과 동일하고, 현재 픽처는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처와 연관되고, 현재 픽처의 PicOrderCntVal은 연관된 GDR 픽처의 RpPicOrderCntVal보다 작다.
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc은 0과 동일하고 현재 AU에는 다음 조건을 모두 충족하는 픽처 picA를 포함한다:
- PicA의 1과 동일한 PictureOutputFlag를 갖는다.
- PicA는 현재 픽처보다 더 큰 nuh_layer_id nuhLid을 갖는다.
- PicA는 OLS의 출력 계층에 속한다 (즉, OutputLayerIdInOls[ TargetOlsIdx ][ 0 ] 은 nuhLid와 동일하다).
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc 2와 동일하고, 및 ols_output_layer_flag[ TargetOlsIdx ][ GeneralLayerIdx[ nuh_layer_id ] ] 는 0과 동일하다.
- 그렇지 않으면, PictureOutputFlag가 pic_output_flag와 동일하게 설정된다.
3. 8.4절, 8,5절, 8,6절, 8,7절 및 8,8절의 프로세스는 모든 신택스 구조 계층에서 신택스 요소를 사용하여 디코딩 프로세스를 명시한다. 픽처의 코딩된 슬라이스에는 픽처의 모든 CTU에 대한 슬라이스 데이터가 포함되어야 하므로 픽처를 슬라이스로 나누고 슬라이스를 CTU로 나누면 각각 픽처의 파티셔닝을 형성하는 비트스트림의 적합성 요구 사항이다.
4. 현재 픽처의 모든 슬라이스가 디코딩된 후, 현재 디코딩된 픽처는 "단기 참조에 사용됨"으로 표시되고 RefPicList[ 0 ] 또는 RefPicList[ 1 ]의 각 ILRP 항목은 "단기 참조에 사용됨"으로 표시된다.
3.9. HRD 작업을 위한 DPB 파라미터들의 설정
최신 VVC 텍스트(JVET-Q2001-vE/v15)에서 HRD 작업을 위한 DPB 매개변수 설정 사양은 다음과 같다(절 C.1의 일부로).
C.1 일반사항
...
각 비트스트림 적합성 테스트에 대해, CPB 크기(비트 수)는 절 7,4,6,3에 지정된 CpbSize[ Htid ][ ScIdx ]이고, 여기서 ScIdx 및 HRD 매개변수는 이 절에서 위에서 지정하고, DPB 파라미터들 max_dec_pic_buffering_minus1[ Htid ], max_num_reorder_pics[ Htid ] 및 MaxLatencyPictures[ Htid ]는 대상 OLS에 적용되는 dpb_parameters() 신택스 구조에서 다음과 같이 발견되거나 파생된다:
- 대상 OLS가 하나의 계층만 포함하는 경우, dpb_parameters() 신택스 구조는 대상 OLS의 계층이라고 하는 SPS에서 발견된다.
- 그렇지 않으면(대상 OLS가 둘 이상의 계층들을 포함함), dpb_parameters( )는 VPS에서 찾은 ols_dpb_params_idx[ TargetOlsIdx ]에 의해 식별됩니다.
3.10. NoOutputOfPriorPicsFlag의 설정
최신 VVC 텍스트(JVET-Q2001-vE/v15)에서 변수 NoOutputOfPriorPicsFlag의 값 설정에 대한 사양은 다음과 같습니다(DPB에서 픽처 제거 사양의 일부로).
C.3.2 현재 픽처를 디코딩하기 전에 DPB에서 픽처 제거
현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 제거는 AU n(현재 픽처를 포함하는)의 첫 번째 DU의 CPB 제거 시간에 즉시 발생하여 다음과 같이 진행된다:
- 8.3.2절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스가 호출되고, 8.3.3절에 지정된 참조 픽처 표시를 위한 디코딩 프로세스가 호출된다.
- 현재 AU가 AU 0이 아닌 CVSS AU인 경우 다음과 같은 순서화된 단계들이 적용된다.
1. 변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 파생된다.
- 현재 AU의 어떠한 픽처로부터 유도된 pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값이 pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, 또는 max_dec_pic_buffering_minus1[ Htid ] 의 값과 각각 다르다면, 동일한 CLVS의 선행 픽처에 대해 유도된 NoOutputOfPriorPicsFlag는 no_output_of_prior_pics_flag의 값에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있지만 설정되어서는 안 된다.
노트 - NoOutputOfPriorPicsFlag를 no_output_of_prior_pics_flag와 동일하게 설정하는 것이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, NoOutputOfPriorPicsFlag는 no_output_of_prior_pics_flag와 동일하게 설정된다.
2. 테스트 중인 디코더에 대해 파생된 NoOutputOfPriorPicsFlag의 값은 HRD에 적용되어 NoOutputOfPriorPicsFlag의 값이 1과 같을 때 DPB의 모든 픽처 저장 버퍼는 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0과 동일하게 설정된다.
- DPB의 모든 픽처 k에 대해 다음의 두 조건들이 참이면, DPB의 모든 픽처 k가 DPB에서 제거됩니다.
- 픽처 k는 "참조용으로 사용되지 않음"으로 표시됩니다.
- 픽처 k는 0과 동일한 PictureOutputFlag를 갖거나 그것의 DPB 출력 시간은 현재 픽처 n의 첫 번째 DU(DU m으로 표시됨)의 CPB 제거 시간보다 작거나 같고; 즉, DpbOutputTime[ k ]은 DuCpbRemovalTime[ m ]보다 작거나 같다.
- DPB에서 제거된 각 픽처에 대해 DPB 충만도가 1씩 감소한다.
C.5.2.2 DPB에서 픽처 출력 및 제거
현재의 픽처를 포함하는 AU의 첫 번째 DU가 CPB로부터 제거되고 다음과 같이 진행될 때, 현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 출력과 제거는 즉시 발생한다.
- 8.3.2 절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스 및 8.3.3 절에 명시된 참조 픽처 마킹을 위한 디코딩 프로세스가 호출된다.
- 현재 픽처이 픽처 0이 아닌 CLVSS 픽처이면 다음과 같은 순서화된 단계가 적용된다.
1.변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 파생된다..
- 현재 AU의 어떠한 픽처로부터 유도된 pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, or max_dec_pic_buffering_minus1[ Htid ]의 값이 pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_minus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값과 각각 다르다면, 동일한 CLVS의 선행 픽처에 대해 파생된 NoOutputOfPriorPicsFlag는 no_output_of_prior_pics_flag의 값에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있지만 설정되어서는 안 된다.
노트 - NoOutputOfPriorPicsFlag를 no_output_of_prior_pics_flag와 동일하게 설정하는 것이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, NoOutputOfPriorPicsFlag는 no_output_of_prior_pics_flag와 동일하게 설정된다.
2. 테스트 중인 디코더에 대해 파생된 NoOutputOfPriorPicsFlag 값은 다음과 같이 HRD에 적용된다.
- NoOutputOfPriorPicsFlag가 1과 같으면 DPB의 모든 픽처 저장 버퍼들은 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(NoOutputOfPriorPicsFlag가 0과 같음), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처을 포함하는 모든 픽처 저장 버퍼들은 비워지고(출력 없이) DPB의 비어 있지 않은 모든 픽처 저장 버퍼들은 C.5.2.4 절에 지정된 "범핑"(bumping) 프로세스를 반복적으로 호출하여 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(현재 픽처가 CLVSS 픽처가 아니거나 CLVSS 픽처이가 픽처 0임), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처를 포함하는 모든 픽처 저장 버퍼들이 비워진다(출력 없이). 비워지는 각각의 픽처 저장 버퍼에 대해, DPB 충만도가 1씩 감소한다. 다음 조건들 중 하나 이상이 참일 때, 다음 조건들 중 어느 것도 참이 아닐 때까지, 비워지는 각각의 추가 픽처 저장 버퍼에 대해 DPB 충만도를 하나씩 감소시키는 동안, C.5.2.4 절에 지정된 "범핑" 프로세스가 반복적으로 호출된다.
"출력에 필요함"으로 표시된 DPB의 픽처들 개수가 max_num_reorder_pics[ Htid ]보다 크다.
max_latency_increase_plus1[ Htid ]는 0이 아니며 관련 변수 PicLatencyCount가 MaxLatencyPictures[ Htid ]보다 크거나 또는 같은 "출력에 필요함"으로 표시된 DPB에 적어도 하나 이상의 픽처가 있다.
DPB의 픽처 개수는 max_dec_pic_buffering_minus1[ Htid ] + 1 보다 크거나 같다.
4. 개시된 기술 솔루션으로 해결된 기술적 문제
최신 VVC 텍스트(JVET-Q2001-vE/v15)의 기존 스케일러빌리티 설계에는 다음과 같은 문제가 있다:
1) 현재, 디코더가 DPB에 대한 메모리를 적절하게 할당할 수 있도록 모든 레이어들의 모든 픽처들에 대한 픽처 폭 및 높이의 최대값들이 VPS에서 시그널링된다. 픽처 폭 및 높이와 마찬가지로, 현재 SPS 신택스 요소 chroma_format_idc 및 bit_depth_minus8에 의해 각각 지정된 크로마 포맷 및 비트 심도도 DPB의 픽처 저장 버퍼 크기에 영향을 미친다. 다만, 모든 레이어들의 모든 픽처들에 대한 chroma_format_idc 및 bit_depth_minus8의 최대값들은 시그널링되지 않는다.
2) 현재, NoOutputOfPriorPicsFlag 변수의 값 설정은 pic_width_max_in_luma_samples 또는 pic_height_max_in_luma_samples 값의 변경을 포함한다. 그러나, 모든 레이어들의 모든 픽처들에 대한 픽처 폭과 높이의 최대값들을 대신 사용해야 한다.
3) 현재, NoOutputOfPriorPicsFlag의 설정은 chroma_format_idc 또는 bit_depth_minus8 값의 변경을 포함한다. 그러나, 모든 레이어들의 모든 픽처들에 대한 크로마 포맷 및 비트 심도의 최대값들을 대신 사용해야 한다.
4) 현재, NoOutputOfPriorPicsFlag의 설정은 Separate_colour_plane_flag의 값의 변경을 포함한다. 그러나, separate_colour_plane_flag는 chroma_format_idc가 3과 같을 때만 존재하며 사용되고, 이는 4:4:4 크로마 포맷을 지정하는 반면에, 4:4:4 크로마 포맷의 경우, 0 또는 1과 동일한 separator_colour_plane_flag의 값은 디코딩된 픽처를 저장하는 데 필요한 버퍼 크기에 영향을 주지 않는다. 따라서, NoOutputOfPriorPicsFlag의 설정은 separate_colour_plane_flag의 값의 변경을 포함하지 않아야 한다.
5) 현재, no_output_of_prior_pics_flag는 IRAP 및 GDR 픽처들에 대한 PH에서 시그널링되고, 이 플래그의 시맨틱과 NoOutputOfPriorPicsFlag의 설정을 위한 프로세스는 no_output_of_prior_pics_flag가 레이어 특정 또는 PU 특정 방식으로 지정된다. 그러나, DPB 동작은 OLS 특정 또는 AU 특정이기 때문에 no_output_of_prior_pics_flag의 시맨틱과 NoOutputOfPriorPicsFlag 설정 모두에서 이 플래그의 사용은 모두 AU 특정 방식으로 지정되어야 한다.
6) 현재 픽처에 대한 변수 PictureOutputFlag의 값을 설정하기 위한 현재 텍스트는 현재 픽처와 동일한 AU 및 현재 픽처보다 상위 계층에 있는 픽처의 PictureOutputFlag 사용을 포함한다. 다만, 현재 픽처보다 nuh_layer_id가 큰 픽처 picA의 경우, 현재 픽처의 PictureOutputFlag가 유도되고 있을 때 picA의 PictureOutputFlag가 아직 도출되지 않았다.
7) PictureOutputFlag 변수의 값을 설정하기 위한 현재 텍스트에는 아래와 같은 문제가 있다. OLS의 비트스트림에는 두 개의 계층들이 있으며, 상위 계층만 출력 계층이며 특정 AU auA에서 상위 계층의 픽처는 0과 동일한 pic_output_flag를 갖는다. 디코더 측에서 auA의 상위 레이어 픽처는 존재하지 않는 반면에(예를 들어 손실 또는 레이어 다운-스위칭으로 인해), auA의 하위 레이어 픽처는 존재하고 1과 동일한 pic_output_flag를 갖는다. 그러면, auA의 하위 계층 픽처의 PictureOutputFlag 값은 1로 설정된다. 그러나, OLS에 단지 하나의 출력 계층만 있고 출력 계층의 픽처가 0과 동일한 pic_output_flag를 가질 때, 인코더(또는 콘텐츠 제공자)가 해당 픽처를 포함하는 AU에 대해 픽처가 출력되는 것을 원하지 않았다고 해석되어야 한다.
8) PictureOutputFlag 변수의 값을 설정하기 위한 현재 텍스트에는 아래와 같은 문제가 있다. OLS의 비트스트림에는 3개 이상의 레이어들이 있으며 최상위 레이어만 출력 계층이다. 디코더 측에서 현재 AU의 상위 레이어 픽처는 존재하지 않는 반면에(예: 손실 또는 레이어 다운-스위칭으로 인해), 현재 AU에 대한 하위 레이어들의 2개 이상의 픽처들이 존재하고 이러한 픽처들은 1과 동일한 pic_output_flag를 갖는다. 그러면 이 AU에 대해 하나 이상의 픽처가 출력된다. 그러나, 이것은 OLS에 대한 출력 계층이 하나뿐이므로 인코더 또는 콘텐츠 공급자가 단지 하나의 픽처만 출력할 것으로 예상했기 때문에 문제가 된다.
9) PictureOutputFlag 변수의 값을 설정하기 위한 현재 텍스트에는 아래와 같은 문제가 있다. OLS 모드 2(ols_mode_idc가 2인 경우)는 모드 0과 같이 하나의 출력 계층만 지정할 수도 있지만, 출력 계층 픽처(또한 최상위 레이어 픽처이기도 함)가 존재하지 않을 때 AU에 대한 출력 계층 픽처의 행동은 모드 0에 대해서만 지정된다.
10) 하나의 출력 계층만 포함하는 OLS의 경우, 출력 계층의 픽처(가장 높은 레이어의 픽처이기도 함)를 디코더에 사용할 수 없는 경우(예: 손실 또는 레이어 다운스위칭으로 인해), 디코더는 해당 픽처의 pic_output_flag가 1이었는지 0이었는지 알 수 없다. 1과 같았다면 하위 계층 픽처를 출력하는 것이 의미가 있지만 0과 같았다면 인코더(컨텐츠 제공자)가 값을 0으로 두어야 하는 이유, 예를 들어 이 특정 OLS에 대해 이 AU에 대한 픽처 출력이 없어야 하기 때문에, 하위 계층 픽처를 출력하는 것이 사용자 경험 관점에서 더 나쁠 수 있다.
5. 실시예 및 기술의 예시 목록
상기와 같은 문제점들을해결하기위하여, 아래와 같이 정리한 방법을 개시한다. 나열된 항목들은 일반적인 개념을 설명하기 위한 예로 간주되어야 하며 좁은 의미로 해석되어서는 안 됩니다. 또한, 이러한 항목들은 개별적으로 적용하거나 어떤 방식으로든 결합할 수 있다.
문제 1~5들을 해결하기 위한 솔루션들
1) 문제 1을 해결하기 위해 모든 레이어들의 모든 픽처들에 대한 chroma_format_idc 및 bit_depth_minus8의 최대값들 중 하나 또는 둘 모두가 VPS에서 시그널링될 수 있다.
2) 문제 2를 해결하기 위해, 변수NoOutputOfPriorPicsFlag의 값의 설정은 VPS에서 모든 레이어의 모든 픽처에 대한 최대 픽처 폭 및 높이 중 적어도 하나 또는 둘 모두를 기반으로 하도록 지정될 수 있음이 시그널링될 수 있다.
3) 문제 3을 해결하기 위해, 변수 NoOutputOfPriorPicsFlag의 값의 설정은 VPS에서 모든 레이어들의 모든 픽처들에 대한 chroma_format_idc 및 bit_depth_minus8의 최대값들 중 적어도 하나 또는 둘 모두에 기초하도록 지정될 수 있음이 시그널링될 수 있다.
4)문제 4를 해결하기 위해 변수 NoOutputOfPriorPicsFlag 값의 설정은 separate_colour_plane_flag 값과 독립적으로 지정될 수 있다.
5) 문제 5를 해결하기 위해, no_output_of_prior_pics_flag의 시맨틱과 NoOutputOfPriorPicsFlag의 설정 모두에서 이 플래그의 사용은 AU 특정 방식으로 지정될 수 있다.
a. 하나의 예에서, 존재하는 경우, no_output_of_prior_pics_flag의 값은 AU의 모든 픽처들에 대해 동일해야 하고 AU의 no_output_of_prior_pics_flag 값은 AU의 픽처들의 no_output_of_prior_pics_flag의 값으로 간주되는 것이 요구될 수 있다.
b. 또달리, 한 예에서, no_output_of_prior_pics_flag는 irap_or_gdr_au_flag가 1과 같을 때 PH 구문에서 제거될 수 있고 AUD 구문으로 시그널링될 수 있다.
i. 단일 계층 비트스트림의 경우, AUD가 선택 사항이므로 IRAP 또는 GDR AU에 대해 AUD가 존재하지 않을 때 no_output_of_prior_pics_flag의 값은 1과 동일한 것으로 유추될 수 있다(이는 인코더가 no_output_of_prior_pics_flag에 대한 값 0을 시그널링하려는 경우 단일 계층 비트스트림의 IRAP 또는 GDR AU의 경우 비트스트림에서 해당 AU에 대한 AUD를 신호해야 함을 의미한다).
c. 대안적으로, 일 예에서, AU의 no_output_of_prior_pics_flag의 값은 AU의 각 픽처에 대한 no_output_of_prior_pics_flag가 0과 동일한 경우에만 0과 동일한 것으로 간주될 수 있고, 그렇지 않으면 AU의 no_output_of_prior_pics_flag의 값이 1과 동일한 것으로 간주될 수 있다.
i. 이 접근 방식의 단점은 NoOutputOfPriorPicsFlag의 설정과 CVSS AU의 픽처 출력이 AU에 있는 모든 픽처들의 도착을 기다려야 한다는 것이다.
문제 6-10들을 해결하기 위한 솔루션
6) 문제 6을 해결하기 위해, 현재 픽처에 대한 PictureOutputFlag의 설정은 현재 픽처와 동일한 AU 및 현재 픽처보다 상위 계층에 있는 픽처의 pic_output_flag(PictureOutputFlag를 대신하여)를 적어도 기반으로 하도록 지정될 수 있다.
7) 문제 7~9를 해결하기 위해 현재 픽처가 출력 계층에 속하지 않을 때마다 현재 픽처에 대한 PictureOutputFlag의 값을 0으로 설정한다.
a. 또달리, 문제 7과 8을 해결하기 위해 출력 계층이 하나뿐이고 출력 계층(출력 계층이 하나만 있는 경우 최상위 레이어여야 함)이 AU에 존재하지 않는 경우, PictureOutputFlag는 디코더가 사용할 수 있는 AU의 모든 픽처들 중에서 nuh_layer_id가 가장 높고 pic_output_flag가 1인 픽처에 대해 1로 설정되고 디코더가 사용할 수 있는 AU의 다른 모든 픽처들에 대해 0으로 설정된다.
8) 문제 10을 해결하기 위해, AU의 출력 계층 픽처의 pic_output_flag 값은 AU 내의 AUD 또는 SEI 메시지에서 시그널링되거나, AU 내의 하나 이상의 다른 픽처들의 PH에서 시그널링될 수 있다.
6. 실시예들
아래는 섹션 5에 요약된 본 발명의 측면들 중 일부에 대한 몇 가지 예시적인 실시예들이고, 이들은 VVC 사양에 적용될 수 있습니다. 변경된 텍스트는 JVET-Q2001-vE/v15의 최신 VVC 텍스트를 기반으로 한다. 추가 또는 수정된 대부분의 관련 부분은굵은 기울임꼴로 강조표시 되고 일부 삭제된 부분은 이중 괄호로 표시됩니다(예: [[a]]는 문자 "a"의 삭제를 나타냄). 편집되어 강조 표시되지 않은 몇 가지 다른 변경 사항들이 있다.
6.1 제1 실시예
이 실시예는 항목 1, 2, 3, 4, 5 및 5a에 대한 것이다.
7.3.2.2 비디오 파라미터 집합 구문
video_parameter_set_rbsp( ) { 기술자
...
for( i = 0; i < TotalNumOlss; i++ ) {
if( NumLayersInOls[ i ] > 1 ) {
ols_dpb_pic_width[ i ] ue(v)
ols_dpb_pic_height[ i ] ue(v)
ols_dpb_chroma_format[ i ] u(2)
ols_dpb_bitdepth_minus8[ i ] ue(v)
if( vps_num_dpb_params > 1 )
ols_dpb_params_idx[ i ] ue(v)
}
}
...
}
...7.4.3.2 시퀀스 파라미터 세트 RBSP 시맨틱
...
Ols_dpb_pic_width[ i ] 는 i번째 OLS에 대한 각 픽처 저장 버퍼의 너비를 루마 샘플 유닛들로 지정한다.
Ols_dpb_pic_height[ i ] 는 i번째 OLS에 대한 각 픽처 저장 버퍼의 높이를 루마 샘플 유닛들로 지정한다.
ols_dpb_chroma_format[ i ]은 i 번째 OLS에 대한 CVS에서 CLVS에 의해 참조되는 모든 SPS에 대해 chroma_format_idc의 최대 허용 값을 지정한다.
ols_dpb_bitdepth_minus8[ i ]은 i 번째 OLS에 대한 CVS의 CLVS에 의해 참조되는 모든 SPS에 대해 bit_depth_minus8의 최대 허용 값을 지정한다.
노트2 - 둘 이상의 레이어를 포함하고 OLS 인덱스 i를 갖는 OLS를 디코딩하기 위해, 디코더는 신택스 요소 ols_dpb_pic_width[ i ], ols_dpb_pic_height[ i ], ols_dpb_chroma_format[ i ] 및 ols_minus8_의 값에 따라 DPB에 대한 메모리를 안전하게 할당할 수 있다.
Ols_dpb_params_idx[ i ] 는, VPS의 dpb_parameters() 신택스 구조 목록에 대해, NumLayersIn0ls[ i ]가 1보다 클 때, i번째 OLS에 적용되는 dpb_parameters() 신택스 구조의 인덱스를 지정한다. 존재하는 경우, ols_dpb_params_idx[ i ] 의 값은 0에서 vps_num_dpb_params - 1까지를 포함하는 범위여야 한다.
ols_dpb_params_idx[ i ] 가 존재하지 않는 경우, ols_dpb_params_idx[ i ] 의 값은 0과 동일한 것으로 유추된다.
NumLayersInOls[ i ] 가 1과 동일한 경우, i번째 OLS에 적용되는 dpb_parameters() 신택스 구조가 i번째 OLS의 계층에서 참조하는 SPS에 존재한다.
...
7.4.3.3 시퀀스 파라미터 세트 RBSP 시맨틱
...
1과 동일한 gdr_enabled_flag는 GDR 픽처들이 SPS를 참조하는 CLVS에 존재할 수 있음을 지정한다. 0과 동일한 gdr_enabled_flag는 GDR 픽처들이 SPS를 참조하는 CLVS에 존재하지 않음을 지정한다.
chroma_format_idc는 6.2절에 명시된 루마 샘플링에 상대적인 크로마 샘플링을 지정한다.
sps_video_parameter_set_id가 0보다 클 때, SPS를 참조하는 하나 이상의 레이어를 포함하는 OLS 인덱스 i를 가진 모든 OLS에 대해 chroma_format_idc의 값은 ols_dpb_chroma_format[ i ]의 값보다 작거나 같아야 하는 것이 비트스트림 적합성의 요구 사항이다.
...
bit_depth_minus8은 다음과 같이 루마 및 크로마 어레이 샘플들의 비트 심도, BitDepth, 및 루마 및 크로마 양자화 파라미터 범위 오프셋의 값, QpBdOffset를 지정한다:
BitDepth = 8 + bit_depth_minus8 (45)
QpBdOffset = 6 * bit_depth_minus8 (46)
bit_depth_minus8은 0에서 8까지를 포함하는 범위에 있어야 한다.
sps_video_parameter_set_id가 0보다 크면 SPS를 참조하는 하나 이상의 레이어를 포함하는 OLS 인덱스 i를 가진 모든 OLS에 대해 bit_depth_minus8 값이 ols_dpb_bitdepth_minus8 [ i ]값보다 작거나 같아야 하는 것이 비트스트림 적합성의 요구 사항이다.
...
7.4.3.7 픽처 헤더 구조 시맨틱
...
no_output_of_prior_pics_flag는 부록 C에 지정된 비트스트림의 제1 픽처가 아닌 CLVSS 픽처의 디코딩 후 DPB에서 이전에 디코딩된 픽처의 출력에 영향을 준다.
비트스트림 적합성의 요구사항은 존재하는 경우 no_output_of_prior_pics_flag의 값이 AU의 모든 픽처들에 대해 동일해야 한다는 것이다.
no_output_of_prior_pics_flag가 AU의 픽처들의 PH에 존재할 때, AU의 no_output_of_prior_pics_flag의 값은 AU의 픽처들의 no_output_of_prior_pics_flag의 값이다.
...
C.1 일반사항
...
각 비트스트림 적합성 테스트에 대해, CPB 크기(비트 수)는 절 7,4,6,3에 지정된 CpbSize[ Htid ][ ScIdx ]이고, 여기서 ScIdx 및 HRD 매개변수는 이 절에서 위에서 지정하고, DPB 파라미터들 max_dec_pic_buffering_minus1[ Htid ], max_num_reorder_pics[ Htid ] 및 MaxLatencyPictures[ Htid ]는 대상 OLS에 적용되는 dpb_parameters() 신택스 구조에서 다음과 같이 발견되거나 파생된다:
- NumLayersInOls[ TargetOlsIdx ]가 1과 같으면dpb_parameters() 신택스 구조는 대상 OLS의 레이어라고 하는 SPS에서 발견되고 변수 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepth_luma_in_max_in_max_luma_는 equals_로 설정됩니다. chroma_format_idc 및 bit_depth_minus8은 각각 타겟 OLS의 레이어에 의해 참조되는 SPS에서 발견됩니다.
- 그렇지 않으면(대상 OLS에 둘 이상의 레이어가 포함됨) dpb_parameters()는 VPS에서 찾은 ols_dpb_params_idx[ TargetOlsIdx ]에 의해 식별되고변수 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat 및 MaxBitDepthMinus_8은 동일하게 설정됩니다. TargetOlsIdx ], ols_dpb_chroma_format[ TargetOlsIdx ] 및 ols_dpb_bitdepth_minus8[ TargetOlsIdx ]는 각각 VPS에서 찾을 수있습니다.
...
C.3.2 현재 픽처의 디코딩 전에 DPB에서 픽처 제거
현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 제거는 AU n(현재 픽처를 포함하는)의 첫 번째 DU의 CPB 제거 시간에 즉시 발생하여 다음과 같이 진행된다:
- 8.3.2절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스가 호출되고, 8.3.3절에 지정된 참조 픽처 표시를 위한 디코딩 프로세스가 호출된다.
- 현재 AU가 AU 0이 아닌 CVSS AU인 경우 다음과 같은 순서화된 단계들이 적용된다.
1.변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 유도된다.
- 현재 AU로부터 유도된 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8 또는 max_dec_pic_buffering_minus1[ Htid ]의 값이 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값과 각각 다르다면, 디코딩 순서에 따라 선행 AU로부터 유도된 NoOutputOfPriorPicsFlag는 현재 AU 의 no_output_of_prior_pics_flag 값에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있지만 설정되어서는 안 된다.
노트 - NoOutputOfPriorPicsFlag를 현재 AU의 no_output_of_prior_pics_flag와 동일하게 설정하는 것이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, NoOutputOfPriorPicsFlag는 현재 AU의 no_output_of_prior_pics_flag와 동일하게 설정된다.
2. 테스트 중인 디코더에 대해 파생된 NoOutputOfPriorPicsFlag의 값은 HRD에 적용되어 NoOutputOfPriorPicsFlag의 값이 1과 같을 때 DPB의 모든 픽처 저장 버퍼는 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0과 동일하게 설정된다.
-DPB의 모든 픽처 k에 대해 다음 조건이 모두 참이면 DPB의 모든 픽처 k가 DPB에서 제거된다.
-픽처 k는 "참조용으로 사용되지 않음"으로 표시된다.
- 픽처 k는 0과 동일한 PictureOutputFlag를 갖거나 그것의 DPB 출력 시간은 현재 픽처 n의 첫 번째 DU(DU m으로 표시됨)의 CPB 제거 시간보다 작거나 같고; 즉, DpbOutputTime[ k ]은 DuCpbRemovalTime[ m ]보다 작거나 같다.
- DPB에서 제거된 각 픽처에 대해 DPB 충만도가 1씩 감소한다.
C.5.2.2 DPB에서 픽처 출력 및 제거
현재의 픽처를 포함하는 AU의 첫 번째 DU가 CPB로부터 제거되고 다음과 같이 진행될 때, 현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 출력과 제거는 즉시 발생한다.
- 8.3.2절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스 및 8.3.3 절에 명시된 참조 픽처 마킹을 위한 디코딩 프로세스가 호출된다.
를 포함하고, 현재 AU가 AU 0이 아닌 CVSS AU인 경우 다음과 같은 순서화된 단계들이 적용된다.
1. 변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 유도된다.
- 현재 AU로부터 유도된 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8 또는 max_dec_pic_buffering_minus1[ Htid ]의 값이 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값과 각각 다르다면, 디코딩 순서에 따라 선행 AU로부터 유도된 NoOutputOfPriorPicsFlag는 현재 AU 의 no_output_of_prior_pics_flag 값에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있지만 설정되어서는 안 된다.
노트 - NoOutputOfPriorPicsFlag를 현재 AU의 no_output_of_prior_pics_flag와 동일하게 설정하는 것이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, NoOutputOfPriorPicsFlag는현재 AU의 no_output_of_prior_pics_flag와 동일하게 설정된다.
2. 테스트 중인 디코더에 대해 파생된 NoOutputOfPriorPicsFlag 값은 다음과 같이 HRD에 적용된다.
- NoOutputOfPriorPicsFlag가 1과 동일하면 DPB의 모든 픽처 저장 버퍼들은 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(NoOutputOfPriorPicsFlag가 0과 같음), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처을 포함하는 모든 픽처 저장 버퍼들은 비워지고(출력 없이) DPB의 비어 있지 않은 모든 픽처 저장 버퍼들은 C.5.2.4 절에 지정된 "범핑"(bumping) 프로세스를 반복적으로 호출하여 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(현재 픽처가 CLVSS 픽처가 아니거나 CLVSS 픽처이가 픽처 0임), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처를 포함하는 모든 픽처 저장 버퍼들이 비워진다(출력 없이). 비워지는 각각의 픽처 저장 버퍼에 대해, DPB 충만도가 1씩 감소한다. 다음 조건들 중 하나 이상이 참일 때, 다음 조건들 중 어느 것도 참이 아닐 때까지, 비워지는 각각의 추가 픽처 저장 버퍼에 대해 DPB 충만도를 하나씩 감소시키는 동안, C.5.2.4 절에 지정된 "범핑" 프로세스가 반복적으로 호출된다.
- "출력에 필요함"으로 표시된 DPB의 픽처들 개수가 max_num_reorder_pics[ Htid ]보다 크다.
- max_latency_increase_plus1[ Htid ]는 0이 아니며 관련 변수 PicLatencyCount가 MaxLatencyPictures[ Htid ]보다 크거나 또는 같은 "출력에 필요함"으로 표시된 DPB에 적어도 하나 이상의 픽처가 있다.
- DPB의 픽처 개수는 max_dec_pic_buffering_minus1[ Htid ] + 1 보다 크거나 같다.
6.2 제2 실시예
이 실시예는 항목 1, 2, 3, 4, 5, 및 5c에 대한 것으로, 제1 실시예의 텍스트에 대한 텍스트 변경이 있다.
7.4.3.7 픽처 헤더 구조 시맨틱
...
no_output_of_prior_pics_flag는 부록 C에 지정된 비트스트림의 제1 픽처가 아닌 CLVSS 픽처의 디코딩 후 DPB에서 이전에 디코딩된 픽처의 출력에 영향을 준다.
[[비트스트림 적합성의 요구사항은, 존재하는 경우 no_output_of_prior_pics_flag의 값이 AU의 모든 픽처들에 대해 동일해야 한다는 것이다.
no_output_of_prior_pics_flag가 AU의 픽처의 PH에 존재할 때, AU의 no_output_of_prior_pics_flag의 값은 AU의 픽처들의 no_output_of_prior_pics_flag의 값]이다]]
...
C.3.2 현재 픽처의 디코딩 전에 DPB에서 픽처 제거
현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 제거는 AU n(현재 픽처를 포함하는)의 첫 번째 DU의 CPB 제거 시간에 즉시 발생하여 다음과 같이 진행된다:
- 8.3.2절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스가 호출되고, 8.3.3절에 지정된 참조 픽처 표시를 위한 디코딩 프로세스가 호출된다.
- 현재 AU가 AU 0이 아닌 CVSS AU인 경우 다음과 같은 순서화된 단계들이 적용된다.
1. 변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 유도된다.
- 현재 AU로부터 유도된 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8 또는 max_dec_pic_buffering_minus1[ Htid ]의 값이 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값과 각각 다르다면, 디코딩 순서에 따라 선행 AU로부터 유도된 NoOutputOfPriorPicsFlag는 현재 AU의 각 픽처에 대해 no_output_of_prior_pics_flag [[현재 AU의]]의 값이 0과 동일한지 여부에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있다(그러나 그렇지 않아야 함).
노트 - 현재 AU의 각 픽처에 대해 no_output_of_prior_pics_flag가 0과 같을 때, [[비록]] NoOutputOfPriorPicsFlag를 0으로 설정[[현재 AU의 no_output_of_prior_pics_flag와 동일]]하는 것이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, [[NoOutputOfPriorPicsFlag는 현재 AU의 no_output_of_prior_pics_flag와 동일하게 설정됨]] 현재 AU의 각 픽처에 대해 no_output_of_prior_pics_flag가 0과 동일하면 NoOutputOfPriorPicsFlag는 1과 동일하게 설정된다.
- 그렇지 않으면 NoOutputOfPriorPicsFlag가 1로 설정된다.
2. 테스트 중인 디코더에 대해 파생된 NoOutputOfPriorPicsFlag의 값은 HRD에 적용되어 NoOutputOfPriorPicsFlag의 값이 1과 같을 때 DPB의 모든 픽처 저장 버퍼는 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0과 동일하게 설정된다.
-DPB의 모든 픽처 k에 대해 다음 조건이 모두 참이면 DPB의 모든 픽처 k가 DPB에서 제거된다.
-픽처 k는 "참조용으로 사용되지 않음"으로 표시된다.
- 픽처 k는 0과 동일한 PictureOutputFlag를 갖거나 그것의 DPB 출력 시간은 현재 픽처 n의 첫 번째 DU(DU m으로 표시됨)의 CPB 제거 시간보다 작거나 같고; 즉, DpbOutputTime[ k ]은 DuCpbRemovalTime[ m ]보다 작거나 같다.
를 포함하고, - DPB에서 제거된 각 픽처에 대해 DPB 충만도가 1씩 감소한다.
C.5.2.2 DPB에서 픽처 출력 및 제거
현재의 픽처를 포함하는 AU의 첫 번째 DU가 CPB로부터 제거되고 다음과 같이 진행될 때, 현재 픽처의 디코딩 전(그러나 현재 픽처의 첫 번째 슬라이스의 슬라이스 헤더를 파싱한 후) DPB에서 픽처들의 출력과 제거는 즉시 발생한다.
- 8.3.2절에 명시된 참조 픽처 목록 구성을 위한 디코딩 프로세스 및 8.3.3 절에 명시된 참조 픽처 마킹을 위한 디코딩 프로세스가 호출된다.
- 현재 AU가 AU 0이 아닌 CVSS AU인 경우 다음과 같은 순서화된 단계들이 적용된다.
1. 변수 NoOutputOfPriorPicsFlag는 다음과 같이 테스트 중인 디코더에 대해 유도된다.
- 현재 AU로부터 유도된 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8 또는 max_dec_pic_buffering_minus1[ Htid ]의 값이 PicWidthMaxInSamplesY, PicHeightMaxInSamplesY, MaxChromaFormat, MaxBitDepthMinus8, 또는 max_dec_pic_buffering_minus1[ Htid ]의 값과 각각 다르다면, 디코딩 순서에 따라 선행 AU로부터 유도된 NoOutputOfPriorPicsFlag는 현재 AU의 각 픽처에 대해 no_output_of_prior_pics_flag [[현재 AU의]]의 값이 0과 동일한지 여부에 관계없이 테스트 중인 디코더에 의해 1로 설정될 수 있다(그러나 그렇지 않아야 함).
노트 - no_output_of_prior_pics_flag가 현재 AU의 각 픽처에 대해 0과 같을 때[[비록]] NoOutputOfPriorPicsFlag를 0으로 설정[[현재 AU의 no_output_of_prior_pics_flag와 동일]]이 이러한 조건들에서 선호되지만, 테스트 중인 디코더는 이 경우 NoOutputOfPriorPicsFlag를 1로 설정할 수 있다.
- 그렇지 않으면, no_output_of_prior_pics_flag가 현재 AU의 각 픽처에 대해 0과 동일하다면, NoOutputOfPriorPicsFlag는 0과 동일하게 설정된다 [[현재 AU의 no_output_of_prior_pics_flag와 동일]].
- 그렇지 않으면 NoOutputOfPriorPicsFlag가 1로 설정된다.
2. 테스트 중인 디코더에 대해 유도된 NoOutputOfPriorPicsFlag 값은 다음과 같이 HRD에 적용된다.
- NoOutputOfPriorPicsFlag가 1과 동일하면 DPB의 모든 픽처 저장 버퍼들은 포함된 픽처의 출력 없이 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(NoOutputOfPriorPicsFlag가 0과 같음), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처을 포함하는 모든 픽처 저장 버퍼들은 비워지고(출력 없이) DPB의 비어 있지 않은 모든 픽처 저장 버퍼들은 C.5.2.4 절에 지정된 "범핑"(bumping) 프로세스를 반복적으로 호출하여 비워지고 DPB 충만도는 0으로 설정된다.
- 그렇지 않으면(현재 픽처가 CLVSS 픽처가 아니거나 CLVSS 픽처이가 픽처 0임), "출력에 필요하지 않음" 및 "참조에 사용되지 않음"으로 표시된 픽처를 포함하는 모든 픽처 저장 버퍼들이 비워진다(출력 없이). 비워지는 각각의 픽처 저장 버퍼에 대해, DPB 충만도가 1씩 감소한다. 다음 조건들 중 하나 이상이 참일 때, 다음 조건들 중 어느 것도 참이 아닐 때까지, 비워지는 각각의 추가 픽처 저장 버퍼에 대해 DPB 충만도를 하나씩 감소시키는 동안, C.5.2.4 절에 지정된 "범핑" 프로세스가 반복적으로 호출된다.
- "출력에 필요함"으로 표시된 DPB의 픽처들 개수가 max_num_reorder_pics[ Htid ]보다 크다.
- max_latency_increase_plus1[ Htid ]는 0이 아니며 관련 변수 PicLatencyCount가 MaxLatencyPictures[ Htid ]보다 크거나 또는 같은 "출력에 필요함"으로 표시된 DPB에 적어도 하나 이상의 픽처가 있다.
- DPB의 픽처 개수는 max_dec_pic_buffering_minus1[ Htid ] + 1 보다 크거나 같다.
6.3 제3 실시예
이 실시예는 항목 6, 항목 7 (8.1.2절에 추가된 주석을 제외한 변경된 텍스트) 및 항목 7a (8.1.2절에 추가된 주석)에 대한 것이다.
7.4.3.7 픽처 헤더 구조 시맨틱
...
recovery_poc_cnt는 출력 순서대로 디코딩된 픽처의 복구 지점을 지정한다.
현재 픽처가 GDR 픽처인 경우, 변수 recoveryPointPocVal은 다음과 같이 유도된다:
recoveryPointPocVal = PicOrderCntVal + recovery_poc_cnt (81)
현재 픽처가 [[PH와 연관된]] GDR 픽처이고, [[현재 GDR 픽처의 PicOrderCntVal에 recovery_poc_cnt 값을 더한]] recoveryPointPocVal와 동일한 PicOrderCntVal을 갖는 CLVS에서 디코딩 순서에서 현재 GDR 픽처를 따르는 픽처 picA가 있는 경우, 픽처 picA는 복구 포인트 픽처로 지칭된다. 그렇지 않으면, [[현재 픽처의 PicOrderCntVal에 recovery_poc_cnt의 값을 더한]] recoveryPointPocVal 보다 더 큰 PicOrderCntVal을 갖는 출력 순서의 제1 픽처를 복구 포인트 픽처라고 한다. 복구 지점 픽처는 디코딩 순서에서 현재 GDR 픽처보다 선행하지 않아야 한다. 현재 GDR 픽처와 연관되어 있고 recoveryPointPocVal보다 작은 PicOrderCntVal을 갖는 픽처들을 GDR 픽처의 복구하는 픽처라고 한다. recovery_poc_cnt의 값은 0에서 MaxPicOrderCntLsb-1까지를 포함하는 범위에 있어야 한다.
[[현재 픽처가 GDR 픽처인 경우, 변수 RpPicOrderCntVal은 다음과 같이 유도된다:
RpPicOrderCntVal = PicOrderCntVal + recovery_poc_cnt (81)]]
노트 2 - gdr_enabled_flag가 1이고 현재 픽처의 PicOrderCntVal이 연관된 GDR 픽처의 recoveryPointPocVal [[RpPicOrderCntVal]]보다 크거나 같을 때, 출력 순서의 현재 및 후속 디코딩된 픽처는 디코딩 순서에서 연관된 GDR 픽처에 선행하는 이전 IRAP 픽처(존재하는 경우)로부터 디코딩 프로세스를 시작함으로써 생성된 대응하는 픽처와 정확히 일치한다.
...
8.1.2 코딩된 픽처의 디코딩 프로세스
...
- 현재 픽처의 변수 PictureOutputFlag는 다음과 같이 설정된다.
- sps_video_parameter_set_id가 0보다 크고 현재 계층이 출력 계층이 아닌 경우(즉, 0에서 NumOutputLayersInOls[ TargetOlsIdx ] -1을 포함하는 범위의 모든 i 값에 대해 nuh_layer_id가 OutputLayerIdInOls[ TargetOlsIdx ][ i ]와 같지 않음), 또는 다음 조건들 중 하나가 참이면, PictureOutputFlag가 0으로 설정된다.
- 현재 픽처는 RASL 픽처이고 연관된 IRAP 픽처의 NoOutputBeforeRecoveryFlag는 1과 동일하다.
- 현재 픽처는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처 또는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처의 복구 픽처이다.
- 그렇지 않으면, PictureOutputFlag가 pic_output_flag와 동일하게 설정된다.
노트 - 구현에서 디코더는 출력 계층에 속하지 않는 픽처를 출력할 수 있다. 예를 들어, AU에 있는 동안 출력 계층의 픽처를 사용할 수 없는 동안 출력 계층이 하나만 있는 경우, 손실 또는 레이어 다운-스위칭으로 인해 디코더는 디코더에 이용가능한 AU의 모든 픽처들 중에서 nuh_layer_id의 가장 높은 값을 갖는 픽처에 대해 PictureOutputFlag 세트를 1로 설정할 수 있고, 1과 동일한 pic_output_flag를 갖고, 디코더에 이용가능한 AU의 모든 다른 픽처들에 대해 PictureOutputFlag를 0과 동일하게 설정한다.
- [[PictureOutputFlag는 다음과 같이 설정된다.
다음 조건 중 하나가 참이면 PictureOutputFlag가 0으로 설정된다.
- 현재 픽처는 RASL 픽처이고 연관된 IRAP 픽처의 NoOutputBeforeRecoveryFlag는 1과 동일하다.
- gdr_enabled_flag는 1과 동일하고 현재 픽처는 1과 동일한 NoOutputBeforeRecoveryFlag를 갖는 GDR 픽처이다.
- gdr_enabled_flag가 1과 동일하고, 현재 픽처는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처와 연관되고, 현재 픽처의 PicOrderCntVal은 연관된 GDR 픽처의 RpPicOrderCntVal보다 작다.
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc은 0과 동일하고 현재 AU에는 다음 조건들을 모두 충족하는 픽처 picA를 포함한다:
- PicA는 1과 동일한 PictureOutputFlag를 갖는다.
- PicA는 현재 픽처보다 더 큰 nuh_layer_id nuhLid을 갖는다.
- PicA는 OLS의 출력 계층에 속한다 (즉, OutputLayerIdInOls[ TargetOlsIdx ][ 0 ] 은 nuhLid와 동일하다).
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc 2와 동일하고, 및 ols_output_layer_flag[ TargetOlsIdx ][ GeneralLayerIdx[ nuh_layer_id ] ] 는 0과 동일하다.
- 그렇지 않으면, PictureOutputFlag가 pic_output_flag와 동일하게 설정된다.]]
6.4 제4 실시예
이 실시예는 항목 6 및 7a에 대한 것이다.
8.1.2 코딩된 픽처의 디코딩 프로세스
...
- PictureOutputFlag는 다음과 같이 설정된다:
- 다음 조건들 중 하나가 참이면 PictureOutputFlag가 0으로 설정된다.
- 현재 픽처는 RASL 픽처이고 연관된 IRAP 픽처의 NoOutputBeforeRecoveryFlag는 1과 동일하다.
- gdr_enabled_flag는 1과 동일하고 현재 픽처는 1과 동일한 NoOutputBeforeRecoveryFlag를 갖는 GDR 픽처이다.
- gdr_enabled_flag가 1과 동일하고, 현재 픽처는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처와 연관되고, 현재 픽처의 PicOrderCntVal은 연관된 GDR 픽처의 RpPicOrderCntVal보다 작다.
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc는 0과 동일하고, 현재 계층은 대상 출력 계층이 아니고(즉, nuh_layer_id는 OutputLayerIdInOls[ TargetOlsIdx ][ 0 ]보다 작음), pic_output_flag가 1보다 크고 현재 AU의 현재 픽처보다 큰 nuh_layer_id를 가진 픽처가 존재한다.
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc은 0과 동일하고 현재 AU에는 다음 조건들을 모두 충족하는 픽처 picA를 포함한다:
- PicA는 1과 동일한 PictureOutputFlag를 갖는다.
- PicA는 현재 픽처보다 더 큰 nuh_layer_id nuhLid을 갖는다.
- PicA는 OLS의 출력 계층에 속한다 (즉, OutputLayerIdInOls[ TargetOlsIdx ][ 0 ] 은 nuhLid와 동일하다).
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc 2와 동일하고, ols_output_layer_flag[ TargetOlsIdx ][ GeneralLayerIdx[ nuh_layer_id ] ] 는 0과 동일하다.
- 그렇지 않으면, PictureOutputFlag가 pic_output_flag와 동일하게 설정된다.
...
6.5 제5 실시예
이 실시예는 항목 6에만 해당된다.
8.1.2 코딩된 픽처의 디코딩 프로세스
...
를 포함하고, PictureOutputFlag는 다음과 같이 설정된다:
- 다음 조건들 중 하나가 참이면 PictureOutputFlag가 0으로 설정된다.
- 현재 픽처는 RASL 픽처이고 연관된 IRAP 픽처의 NoOutputBeforeRecoveryFlag는 1과 동일하다.
- gdr_enabled_flag는 1과 동일하고 현재 픽처는 1과 동일한 NoOutputBeforeRecoveryFlag를 갖는 GDR 픽처이다.
- gdr_enabled_flag가 1과 동일하고, 현재 픽처는 NoOutputBeforeRecoveryFlag가 1인 GDR 픽처와 연관되고, 현재 픽처의 PicOrderCntVal은 연관된 GDR 픽처의 RpPicOrderCntVal보다 작다.
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc은 0과 동일하고 현재 AU에는 다음 조건들을 모두 충족하는 픽처 picA를 포함한다:
- PicA는 1과 동일한 pic_output_flag [[PictureOutputFlag]]를 갖는다.
- PicA는 현재 픽처보다 더 큰 nuh_layer_id nuhLid을 갖는다.
- PicA는 OLS의 출력 계층에 속한다 (즉, OutputLayerIdInOls[ TargetOlsIdx ][ 0 ] 은 nuhLid와 동일하다).
- sps_video_parameter_set_id는 0보다 크고, ols_mode_idc 2와 동일하고, 및 ols_output_layer_flag[ TargetOlsIdx ][ GeneralLayerIdx[ nuh_layer_id ] ] 는 0과 동일하다.
- 그렇지 않으면, PictureOutputFlag가 pic_output_flag와 동일하게 설정된다.
도 1은 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(video processing system)(1900)을 도시하는 블록도이다. 다양한 구현은 시스템(system)(1900)의 컴포넌트 중 일부 또는 전부를 포함할 수 있다. 시스템(1900)은 비디오 컨텐츠를 수신하기 위한 입력(input)(1902)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들어, 8 또는 10비트 다중 컴포넌트 픽셀 값으로 수신될 수 있거나 압축 또는 인코딩된 포맷일 수 있다. 입력(1902)은 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예로는 이더넷, 수동 광 네트워크(PON) 등과 같은 유선 인터페이스와 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스가 있다.
시스템(1900)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(coding component)(1904)를 포함할 수 있다. 코딩 컴포넌트(1904)는 비디오의 코딩된 표현을 생성하기 위해 입력(1902)으로부터 코딩 컴포넌트(1904)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술은 비디오 압축 또는 비디오 트랜스코딩(transcoding) 기술이라고도 한다. 코딩 컴포넌트(1904)의 출력은 컴포넌트(component)(1906)에 의해 표현되는 바와 같이, 연결된 통신을 통해 저장되거나 전송될 수 있다. 입력(1902)에서 수신된 비디오의 저장되거나 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(1910)로 전송되는 픽셀 값 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(1908)에 의해 사용될 수 있다. 비트스트림 표현( bitstream representation)에서 사용자가 볼 수 있는 비디오를 생성하는 프로세스를 비디오 압축 해제(decompression)라고도 한다. 또한, 특정 비디오 처리 동작을 "코딩" 동작(coding operation) 또는 툴(tools)로 지칭하지만, 코딩 툴 또는 동작이 인코더에서 사용되고 코딩 결과를 되돌리는 대응하는 디코딩 툴 또는 동작이 디코더에 의해 수행된다는 점을 이해할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예로는 범용 직렬 버스(USB) 또는 고화질 멀티미디어 인터페이스(HDMI) 또는 디스플레이포트 등이 포함될 수 있다. 저장 인터페이스의 예로는 직렬 첨단 기술 첨부파일(SATA: Serial Advanced Technology Attachment), PCI, IDE 인터페이스 등이 있다. 본 문서에 기재된 기술은 휴대전화, 노트북, 스마트폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 기타 장치와 같은 다양한 전자 기기에 구현될 수 있다.
도 2는 비디오 처리 장치(1200)의 블록도이다. 장치(apparatus)(3600)는 여기에 설명된 방법 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(3600)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(3600)는 하나 이상의 프로세서(processor)(3602), 하나 이상의 메모리(memory)(3604) 및 비디오 처리 하드웨어(video processing hardware)(3606)를 포함할 수 있다. 프로세서(들)(3602)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(3604)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(video processing hardware)(3606)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있다.
도 4는 본 개시물의 기법들을 이용할 수도 있는 예시적인 비디오 코딩 시스템(video coding system)(100)을 예시하는 블록도이다.
도 4에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 장치(source device)(110) 및 목적 장치(destination device)(120)를 포함할 수 있다. 소스 장치(110)는 인코딩된 비디오 데이터를 생성하고, 비디오 인코딩 장치로 참조될 수 있다. 목적 장치(120)는 소스 장치(110)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있고, 비디오 디코딩 장치로 참조될 수 있다.
소스 장치(110)에는 비디오 소스(112), 비디오 인코더(114) 및 입력/출력(I/O) 인터페이스(116)가 포함될 수 있다.
비디오 소스(112)에는 비디오 캡처 장치, 비디오 컴텐츠 공급자로부터 비디오 데이터를 수신하는 인터페이스, 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템 또는 이러한 소스의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림에는 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스가 포함될 수 있다. 비트스트림에는 코딩된 픽처 및 연관된 데이터가 포함될 수 있다. 코딩된 픽처는 픽처의 코딩된 표현(representation)이다. 연관된 데이터에는 시퀀스 파라미터 세트, 픽처 파라미터 세트 및 기타 신택스 구조가 포함될 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기(transmitter)를 포함할 수 있다. 인코딩된 비디오 데이터는 네트워크(130a)를 거쳐, I/O 인터페이스(116)를 통해 목적 장치(120)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 목적 장치(120)에 의한 액세스를 위해 저장매체/서버(130b)에 저장될 수도 있다.
목적 장치(120)는 입력/출력(I/O) 인터페이스(126), 비디오 디코더(124) 및 디스플레이 장치(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 장치(110) 또는 저장매체/서버(130b)로부터 인코딩된 비디오 데이터를 획득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 장치(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이 할 수 있다. 디스플레이 장치(122)는 목적 장치(120)와 통합될 수 있거나, 외부 디스플레이 장치와 인터페이스 하도록 구성된 목적 장치(120)의 외부에 위치할 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는 고효율 비디오 코딩(HEVC) 표준, 다목적 비디오 코딩(VVC) 표준 및 기타 현재 및/또는 추가 표준과 같은 비디오 압축 표준에 따라 동작할 수 있다.
도 5는 도 4에 예시된 시스템(100)의 비디오 인코더(video encoder)(114)일 수 있는 비디오 인코더(video encoder)(200)의 예를 도시하는 블록도이다.
비디오 인코더(200)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 5의 예에서, 비디오 인코더(200)는 복수의 기능적 컴포넌트들을 포함한다. 본 개시에 기재된 기술은 비디오 인코더(200)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
비디오 인코더(video encoder)(200)의 기능적 컴포넌트는 파티션 유닛(partition unit)(201)와, 모드 선택 유닛(mode select unit)(203), 모션 추정 유닛(motion estimation unit)(204), 모션 보상 유닛(motion compensation unit)(205) 및 인트라 예측 유닛(intra prediction unit)(206)을 포함할 수 있는 예측 유닛(predication unit)(202)과, 잔차 생생 유닛(residual generation unit)(207), 트랜스폼 유닛(transform unit)(208), 양자화 유닛(quantization unit)(209), 역양자화 유닛(inverse quantization unit)(210), 역트랜스폼 유닛(inverse transform unit)(211), 재구성 유닛(reconstruction unit)(212), 버퍼(buffer)(213), 및 엔트로피 인코딩 유닛(entropy encoding unit)(214)를 포함할 수 있다.
다른 예에서, 비디오 인코더(200)에는 더 많거나, 더 적거나, 또는 다른 기능적 컴포넌트가 포함될 수 있다. 예를 들어, 예측 유닛(202)는 인트라 블록 카피(IBC) 유닛을 포함할 수 있다. IBC 유닛은 IBC 모드에서 적어도 하나의 레퍼런스 픽처가 현재 비디오 블록이 있는 픽처인 경우 예측을 수행할 수 있다.
또한, 모션 추정 유닛(204) 및 모션 보정 유닛(205)과 같은 일부 컴포넌트는 고집적될 수 있으나, 도 5의 예에서는 설명의 목적을 위해 분리된 것으로 표현되었다.
파티션 장치(201)는 픽처를 하나 이상의 비디오 블록으로 파티셔닝할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기를 지원할 수 있다.
모드 선택 유닛(203)는 오류 결과에 기초하여 코딩 모드, 예를 들면, 인트라 또는 인터 등을 선택하고, 결과인 인트라 또는 인터 코딩된 블록을, 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하고, 재구성 유닛(212)으로 제공하여 레퍼런스 픽처로 사용하기 위한 인커딩된 블록을 재구성한다. 일부 예에서, 모드 선택 유닛(203)는 인트라 및 인터 예측(CIIP) 모드의 조합을 선택할 수 있고, 이 모드에서 예측은 인터 예측 시그널 및 인트라 예측 시그널에 기초한다. 모드 선택 유닛(203)는 또한, 인터 예측의 경우, 블록에 대한 모션 벡터의 해상도(예를 들어, 서브 픽셀 또는 정수 픽셀 정밀도)를 선택할 수 있다.
현재 비디오 블록에서 인터 예측을 수행하기 위해, 모션 추정 유닛(204)는 버퍼(213)에서 현재 비디오 블록에 하나 이상의 레퍼런스 프레임을 비교하여 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 모션 정보 및 디코딩된 픽처 샘플에 기초하여 현재 비디오 블록에 대한 예측 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)는 현재 비디오 블록이 I 슬라이스, P 슬라이스 또는 B 슬라이스에 있는지 여부에 따라 현재 비디오 블록에 대해 서로 다른 동작을 수행할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 유니-디렉셔널(uni-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 list 0 또는 list 1의 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 현재 비디오 블록과 레퍼런스 비디오 블록 사이의 공간 변위(spatial displacement)를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 또는 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스(reference index)를 생성할 수 있다. 모션 추정 유닛(204)는 레퍼런스 인덱스, 예측 디렉션 표시자 및 모션 벡터를 현재 비디오 블록의 모션 정보로 출력할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 바이-디렉셔널(bi-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 목록 0에서 레퍼런스 픽처를 검색할 수 있으며, 또한 현재 비디오 블록에 대한 다른 레퍼런스 비디오 블록에 대한 목록 1에서 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 레퍼런스 비디오 블록과 현재 비디오 블록 사이의 공간 변위를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 및 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스를 생성할 수 있다. 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보로서 현재 비디오 블록의 레퍼런스 인덱스 및 모션 벡터를 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 비디오 블록의 예측 비디오 블록을 생성할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 디코더의 디코딩 처리를 위한 전체 모션 정보 세트를 출력할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오에 대한 전체 모션 정보 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)는 다른 비디오 블록의 동작 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(motion estimation unit)(204)는 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 동작 정보와 충분히 유사하다고 결정할 수 있다.
하나의 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연결된 신택스 구조에서 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 가지고 있음을 비디오 디코더(300)에 나타내는 값을 나타낼 수 있다.
또 다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 사이의 차이를 나타낸다. 비디오 디코더(300)는 현재 비디오 블록의 모션 벡터를 결정하기 위해 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 사용할 수 있다.
위에서 설명한 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측 시그널링 기술의 두 가지 예는, 어드밴스드 모션 벡터 예측(AMVP) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대한 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대한 인트라 예측을 수행하는 경우, 인트라 예측 유닛(206)는 동일 픽처에서 다른 비디오 블록의 디코딩된 샘플에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터에는 예측된 비디오 블록 및 다양한 신택스 요소가 포함될 수 있다.
잔차 생성 유닛(207)는 현재 비디오 블록으로부터 예측된 비디오 블록의 예측 비디오 블록(예를 들어, 마이너스 기호로 표시)을 빼서 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록에서 샘플의 상이한 샘플 컴포넌트에 대응하는 잔차 비디오 블록을 포함할 수 있다.
다른 예에서, 현재 비디오 블록에 대한 현재 비디오 블록에 대한 잔차 데이터가 없을 수 있고, 예를 들어 스킵(skip) 모드에서, 잔차 생성 유닛(207)는 빼기 동작을 수행하지 않을 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 연결된 잔차 비디오 블록에 하나 이상의 트랜스폼을 적용하여 현재 비디오 블록에 대해 하나 이상의 트랜스폼 계수 비디오 블록을 생성할 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 연관된 트랜스폼 계수 비디오 블록을 생성한 후, 양자화 유닛(209)는 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 트랜스폼 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210)와 역트랜스폼부 유닛(211)는 트랜스폼 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성하기 위해, 트랜스폼 계수 비디오 블록에 역양자화 유닛 및 역트랜스폼 유닛을 각각 적용할 수 있다. 재구성 유닛(212)은 예측 유닛(202)에 의해 생성된 하나 이상의 예측된 비디오 블록으로부터 대응하는 샘플에 재구성된 잔차 비디오 블록을 추가하여 버퍼(213)에 저장하기 위한 현재 블록과 연관된 재구성된 비디오 블록을 생성할 수 있다.
재구성 유닛(212)가 비디오 블록을 재구성한 후, 비디오 블록에서 비디오 차단 아티팩트를 줄이기 위해 루프 필터링 동작이 수행된다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 함수 컴포넌트로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)가 데이터를 수신하는 경우, 엔트로피 인코딩 유닛(214)는 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 6은 도 10에 예시된 시스템(100)의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 도시하는 블록도이다.
비디오 디코더(300)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 6의 예에서, 비디오 디코더(300)는 복수의 기능적 컴포넌트를 포함한다. 본 개시에 기재된 기술은 비디오 디코더(300)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
도 6의 예에서, 비디오 디코더(video decoder)(300)는 엔트로피 디코딩 유닛(entropy decoding unit)(301), 모션 보상 유닛(motion compensation unit)(302), 인트라 예측 유닛(intra prediction unit)(303), 역양자화 유닛(inverse quantization unit)(304), 역트랜스폼 유닛(inverse transformation uni)(305), 및 재구성 유닛(reconstruction unit)(306) 및 버퍼(buffer)(307)를 포함한다. 비디오 디코더(300)는, 일부 예에서, 비디오 인코더(200)에 대하여 기술된 인코딩 패스(pass)와 일반적으로 서로 주고 받는(reciprocal) 디코딩 패스를 수행할 수 있다(도 5).
엔트로피 디코딩 유닛(301)는 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림에는 엔트로피 코딩된 비디오 데이터(예를 들어, 비디오 데이터의 인코딩된 블록)가 포함될 수 있다. 엔트로피 디코딩 유닛(301)는 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터 모션 보상 유닛(302)는 모션 벡터, 모션 벡터 정밀도, 레퍼런스 픽처 목록 인덱스 및 기타 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어 AMVP 및 병합 모드를 수행하여 이러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은 보간 필터에 기초하여 보간(interpolation)을 수행하여 모션 보정 블록을 생성할 수 있다. 서브 픽셀 정밀도와 함께 사용되는 보간 필터에 대한 식별자가 신택스 요소에 포함될 수 있다.
모션 보상 유닛(302)은 비디오 블록을 인코딩하는 동안 비디오 인코더(200)에서 사용하는 보간 필터를 사용하여 레퍼런스 블록의 서브 정수 픽셀에 대한 보간 값을 계산할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에서 사용하는 보간 필터를 결정하고 보간 필터를 사용하여 예측 블록을 생성할 수 있다.
모션 보상 유닛(302)은 인코딩된 비디오 시퀀스의 프레임 및/또는 슬라이스를 인코딩하는 데 사용되는 블록의 크기, 인코딩된 비디오 시퀀스의 각 매크로 블록이 파티셔닝되는 방식을 설명하는 파티션 정보, 각 파티션이 인코딩된 방법, 각 파티션이 인코딩되는 방식을 나타내는 모드, 각 인터-인코딩된 블록에 대한 하나 이상의 레퍼런스 프레임(및 레퍼런스 프레임 목록) 및 인코딩된 비디오 시퀀스를 디코딩하는 다른 정보들을 결정하기 위해 일부 신택스 정보를 사용할 수 있다.
인트라 예측 유닛(303)는, 공간적으로 인접한 블록(adjacent block)으로부터 예측 블록을 형성하기 위해 예를 들어 비트스트림에서 수신된 인트라 예측 모드를 사용할 수 있다. 역양자화 유닛(303)는 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에서 디코딩된 양자화된 비디오 블록 계수를 역양자화(예를 들어, 비양자화(de-quantize))한다. 역트랜스폼 유닛(Inverse transform unit)(303)은 역트랜스폼을 적용한다.
재구성 유닛(Reconstruction unit)(306)은 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성된 대응하는 예측 블록과 잔차 블록을 합산하여 디코딩된 블록을 형성할 수 있다. 원하는 경우, 디블로킹 필터(deblocking filter)를 적용하여 차단 아티팩트를 제거하기 위해 디코딩된 블록을 필터링할 수도 있다. 디코딩된 비디오 블록은 버퍼(307)에 저장되고, 이는 이후의 모션 보상/인트라 예측에 대한 레퍼런스 블록을 제공하고, 디스플레이 장치에서 재생하기 위한 디코딩된 비디오를 생성한다.
일부 실시예에서, 선호하는 솔루션 목록이 다음에 제공된다.
첫 번째 항 세트는 이전 섹션에서 논의된 기술의 예시적인 실시예를 보여준다. 다음 항들은 이전 섹션(예를 들어, 항목 1)에서 논의된 기술의 예시적인 실시예들을 보여준다.
1. 비디오 처리 방법(예를 들어, 도 3에 도시한 방법 3000)으로서, 하나 이상의 비디오 픽처들(video pictures)을 포함하는 하나 이상의 비디오 레이어들(video layers)을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 크로마 포맷 표시자(chroma format indicator)의 최대값 및/또는 비디오의 픽셀들을 표현하는 데 사용되는 비트 심도(bit depth)의 최대값을 나타내는 비디오 파라미터 세트를 포함한다.
다음 항들은 이전 섹션(예를 들어, 항목 1)에서 논의된 기술의 예시적인 실시예들을 보여준다.
2. 비디오 처리 방법으로서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이가 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 포맷 규칙을 따른다.
3. 2항의 방법에서, 변수는 비디오 파라미터 세트에서 시그널링된다.
다음 항들은 이전 섹션(예: 항목 3)에서 논의된 기술의 예시적인 실시예를 보여준다.
4. 비디오 처리 방법에 있어서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 크로마 포맷 표시자의 최대값 및/또는 비디오 제어의 픽셀들을 나타내는데 사용되는 비트 심도의 최대값이 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 포맷 규칙을 따른다.
5. 4항의 방법에서, 변수는 비디오 파라미터 세트에서 시그널링된다.
다음 항들은 이전 섹션(예: 항목 4)에서 논의된 기술의 예시적인 실시예를 보여준다.
6. 비디오 처리 방법에 있어서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부가 별개의 컬러 평면들이 비디오 인코딩에 사용되는지 여부와 무관함을 나타내는 변수값을 명시하는 포맷 규칙을 따른다.
다음 항들은 이전 섹션(예: 항목 5)에서 논의된 기술의 예시적인 실시예를 보여준다.
7. 비디오 처리 방법에 있어서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 디코더 버퍼로부터 제거하기 이전에 디코더 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수의 값이 액세스 유닛(AU: Access Unit) 레벨에서 코딩된 표현에 포함됨을 명시하는 포맷 규칙을 따른다.
8. 7항의 방법에서, 포맷 규칙은 그 값이 코딩된 표현의 모든 AU들에 대해 동일함을 명시한다.
9. 7-8항 중 어느 하나의 방법에 있어서, 변수는 픽처 헤더에 표시된다.
10. 7항 내지 8항 중 어느 한 항에 있어서, 변수는 엑세스 유닛 구분자에 표시된다.
다음 항들은 이전 섹션(예: 항목 6)에서 논의된 기술의 예시적인 실시예를 보여준다.
11. 비디오 처리 방법에 있어서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 액세스 유닛의 비디오 픽처에 대한 픽처 출력 플래그가 액세스 유닛에 있는 다른 비디오 픽처의 pic_output_flag 변수에 기초하여 결정됨을 명시하는 포맷 규칙을 따른다.
다음 항들은 이전 섹션(예: 항목 7)에서 논의된 기술의 예시적인 실시예를 보여준다.
12. 비디오 처리 방법에 있어서, 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 코딩된 표현은 출력 계층에 속하지 않는 비디오 픽처에 대해, 픽처 출력 플래그의 값을 명시하는 포맷 규칙을 따른다.
13. 12항의 방법에서, 포맷 규칙은 비디오 픽처에 대한 픽처 출력 플래그의 값이 0으로 설정되도록 명시한다.
14. 12항의 방법에서, 비디오는 단지 하나의 출력 계층을 포함하고, 출력 계층을 포함하지 않는 액세스 유닛은 가장 높은 레이어 ID 값을 갖는 픽처에 대해 픽처 출력 플래그 값을 논리적 1로 설정하고 다른 모든 픽처들에 대해서는 논리적 0으로 설정한다.
다음 항들은 이전 섹션(예: 항목 8)에서 논의된 기술의 예시적인 실시예를 보여준다.
15. 1-14항 중 어느 하나의 방법에서, 상기 픽처 출력 플래그는 구분된 액세스 유닛에 포함된다.
16. 1-14항 중 어느 하나의 방법에서, 상기 픽처 출력 플래그는 추가 향상 정보 필드(supplemental enhancement information field)에 포함된다.
17. 1-14항 중 어느 하나의 방법에서, 픽처 출력 플래그는 하나 이상의 픽처들의 픽처 헤더들에 포함된다.
18. 1항 내지 17항 중 어느 하나의 방법에서, 변환은 비디오를 코딩된 표현으로 인코딩하는 단계를 포함한다.
19. 1항 내지 17항 중 어느 하나의 방법에서, 변환은 비디오의 픽셀 값을 생성하기 위해 코딩된 표현을 디코딩하는 단계를 포함한다.
20. 1항 내지 19항 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
21.1항 내지 19항 중 어느 하나의 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
22. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램에 있어서, 상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 1항 내지 19항 중 어느 한 항에 기재된 방법을 구현하게 하는 컴퓨터프로그램.
23. 본 문서에 기술된 방법, 장치 및 시스템.
두 번째 항 세트는 이전 섹션(예: 항목 1-4)에서 논의된 기술의 예시적인 실시예를 보여준다.
1. 비디오 처리 방법(예를 들어, 도 7A에 도시한 방법 710)에 있어서, 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(712)를 포함하며, 여기서 비트스트림은 하나 이상의 출력 계층 세트들(OLSs)을 포함하고, 각각의 OLS는 하나 이상의 코딩된 레이어 비디오 시퀀스들을 포함하고, 포맷 규칙은 비디오 파라미터 세트가 하나 이상의 OLS 각각에 대해 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀들을 나타내는 데 사용되는 비트 심도의 최대 허용 값을 표시하도록 명시한다.
2. 1항의 방법에서, OLS에 대한 크로마 포맷 표시자의 최대 허용 값은 OLS에서 하나 이상의 코딩된 레이어 비디오 시퀀스에 의해 참조되는 모든 시퀀스 파라미터 세트에 적용가능하다.
3. 1항 또는 2항의 방법에서, OLS에 대한 비트 심도의 최대 허용 값은 OLS에서 하나 이상의 코딩된 레이어 비디오 시퀀스에 의해 참조되는 모든 시퀀스 파라미터 세트에 적용가능하다.
4. 1항 내지 3항 중 어느 하나의 방법에서, 하나 이상의 코딩된 레이어 비디오 시퀀스를 포함하고 OLS 인덱스 i를 갖는 OLS에 대한 변환을 수행하기 위해, 규칙은 i번째 OLS에 대한 각 픽처 저장 버퍼의 폭을 나타내는 ols_dpb_pic_width[ i ], i번째 OLS에 대한 각 픽처 저장 버퍼의 높이를 나타내는 ols_dpb_pic_height[ i ], i번째 OLS에 대한 크로마 포맷 지시자의 최대 허용값을 나타내는 신택스 요소 및 i번째 OLS에 대한 비트 심도의 최대 허용값을 나타내는 신택스 요소 중에서 적어도 하나의 값에 따라서 디코딩된 버퍼를 위한 메모리를 할당한다.
5. 1항 내지 4항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림에 포함된다.
6. 1항 내지 4항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림과 별도로 표시된다.
7. 비디오 처리 방법(예를 들어, 도 7B에 도시한 방법 720)에 있어서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(722)를 포함하고, 상기 포맷 규칙은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이가, 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트 스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시한다.
8. 7항의 방법에서, 변수는 비디오 파라미터 세트에 포함된 적어도 하나 이상의 신택스 요소에 기초하여 유도된다.
9. 7항의 방법에서, 현재 액세스 유닛에 대해 유도된 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용값, 또는 비트 심도의 최대 허용 값이, 디코딩 순서에서 선행 액세스 유닛에 대해 유도되는 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용 값 또는 비트 심도의 최대 허용 값과 다른 경우, 상기 변수의 값은 1로 설정된다.
10. 9항의 방법에서, 1과 동일한 변수의 값은 디코딩된 픽처 버퍼로부터 픽처가 제거되기 전에, 디코딩 순서로 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되지 않음을 나타낸다.
11. 7항 내지 10항 중 어느 하나의 방법에서, 변수 값은 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀을 표현하는 데 사용되는 비트 심도의 최대 허용 값에 추가로 기초한다.
12. 7항 내지 11항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림에 포함된다.
13. 7항 내지 11항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림과 별도로 표시된다.
14. 비디오 처리 방법(예를 들어, 도 7c에 도시된 바와 같은 730)에 있어서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(732)를 포함하고, 상기 포맷 규칙은 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀을 나타내는 데 사용되는 비트 심도의 최대 허용 값이, 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트스트림의 디코딩 순서에서 현재 픽처 이전에 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시한다.
15. 14항의 방법에서, 변수는 비디오 파라미터 세트에서 시그널링된 하나 이상의 신택스 요소에 적어도 기초하여 유도된다.
16. 14항에 있어서, 현재 액세스 유닛에 대해 유도된 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용값, 또는 비트 심도의 최대 허용 값이, 디코딩 순서에서 선행 액세스 유닛에 대해 유도되는 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용 값 또는 비트 심도의 최대 허용 값과 다른 경우, 상기 변수의 값은 1로 설정된다.
17. 16항의 방법에서, 1과 동일한 변수의 값은 디코딩된 픽처 버퍼로부터 픽처가 제거되기 전에, 디코딩 순서로 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되지 않음을 나타낸다.
18. 14항 내지 17항 중 어느 하나의 방법에서, 변수의 값은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 화상 폭 및/또는 최대 화상 높이에 추가로 기초한다.
19. 14항 내지 18항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림에 포함된다.
20. 14항 내지 18항 중 어느 하나의 방법에서, 비디오 파라미터 세트는 비트스트림과 별도로 표시된다.
21. 비디오 처리 방법(예를 들어, 도 7D에 도시한 방법 740)에서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(742)를 포함하고, 상기 규칙은 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부가 별개의 컬러 평면들이 비디오 인코딩에 사용되는지 여부와 무관함을 나타내는 변수값을 명시한다.
22. 21항의 방법에서, 상기 비디오를 인코딩하기 위해 별도의 컬러 평면이 사용되지 않는 경우, 규칙은 비디오 픽처에 대해 디코딩이 한 번만 수행되도록 명시하거나, 비디오 인코딩에 별도의 컬러 평면들이 사용되는 경우, 규칙은 픽처 디코딩이 세 번 호출되도록 명시한다.
23. 1항 내지 22항 중 어느 하나의 방법에서, 변환은 비디오를 비트스트림으로 인코딩하는 것을 포함한다.
24. 1항 내지 22항 중 어느 하나의 방법에서, 변환은 비트스트림으로부터 비디오를 디코딩하는 것을 포함한다.
25. 1항 내지 22항의 방법에서, 변환은 비디오로부터 비트스트림을 생성하는 단계를 포함하고, 방법은 비트스트림을 비일시적 컴퓨터 판독가능 기록 매체에 저장하는 단계를 더 포함한다.
26. 비디오 디코더 장치는 1항 내지 25항 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함한다.
27. 비디오 스트림을 저장하는 방법으로, 1항 내지 25항 중 어느 한 항에 기재된 방법을 포함하고, 상기 비트스트림을 컴퓨터로 읽을 수 있는 비일시적 기록매체에 저장하는 단계를 더 포함한다.
28. 실행될 때 프로세서로 하여금 1항 내지 16항 중 어느 하나 이상에 기재된 방법을 구현하게 하는 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체.
29. 전술한 방법들 중 어느 하나에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
30. 비트스트림 표현을 저장하기 위한 비디오 처리 장치로서, 상기 비디오 처리 장치는 1항 내지 25절 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된다.
세 번째 항 세트는 이전 섹션(예를 들어, 항목 5)에서 논의된 기술의 예시적인 실시예를 보여준다.
1. 비디오 처리 방법(예를 들어, 도 8A에 도시된 바와 같은 방법(810))으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(812)를 포함하고, 상기 포맷 규칙은 특정 유형의 엑세스 유닛을 디코딩할 때 디코딩된 픽처 버퍼에서 이전에 디코딩되어 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는 플래그 값이 비트스트림에 포함됨을 명시한다.
2. 1항의 방법에 있어서, 포맷 규칙은 액세스 유닛의 모든 픽처들에 대해 동일함을 명시한다.
3. 1항 또는 2항의 방법에서, 포맷 규칙은 비트스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 픽처들이 디코딩된 픽처로부터 제거되기 전에 출력되는지 여부를 나타내는 변수의 값이 플래그 값을 기반으로 함을 명시한다.
4. 1항 내지 3항 중 어느 하나의 방법에 있어서, 변수는 픽처 헤더에 표시된다.
5. 1항 내지 3항 중 어느 하나의 방법에 있어서, 변수는 픽처 헤더에 표시된다.
6. 비디오 처리 방법(예를 들어, 도 8B에 도시된 바와 같은 방법(820))으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(822)를 포함하고, 상기 포맷 규칙은 특정 유형의 엑세스 유닛을 디코딩할 때 디코딩된 픽처 버퍼에서 이전에 디코딩되어 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는 플래그 값이 픽처 헤더에 포함됨을 명시한다.
7. 6항의 방법에서, 상기 제1 플래그는 액세스 유닛 구분자에 표시되는 방법.
8. 6항의 방법에서, IRAP(인트라 랜덤 액세스 포인트 픽처) 또는 GDR(점진적 디코딩 리프레시) 엑세스 유닛을 나타내는 제2 플래그는 특정 값을 갖는다.
9. 6항의 방법에서, IRAP(인트라 랜덤 액세스 포인트 픽처) 또는 GDR(점진적 디코딩 리프레시) 액세스 유닛에 대한 액세스 유닛 구분자가 존재하지 않는 경우에, 제1 플래그의 값은 1과 동일한 것으로 추정된다.
10. 비디오 처리 방법(예를 들어, 도 8C에 도시된 바와 같은 방법(830))으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(832)를 포함하고, 상기 포맷 규칙은 디코딩된 픽처 버퍼로부터 디코딩된 픽처 버퍼에 이전에 디코딩되고 디코딩된 픽처 버퍼에 저장된 픽처들을 제거할지 여부를 나타내는 액세스 유닛과 연관된 플래그 값이 액세스 유닛의 각 픽처의 플래그 값에 의존함을 명시한다.
11. 10항의 방법에서, 포맷 규칙은 액세스 유닛의 각각의 픽처에 대한 플래그가 0인 경우에 액세스 유닛의 플래그의 값이 0과 동일한 것으로 간주되고, 그렇지 않으면 액세스 유닛의 플래그의 값이 1과 동일한 것으로 간주됨을 명시한다.
12. 1항 내지 11항 중 어느 하나의 방법에서, 변환은 비디오를 비트스트림으로 인코딩하는 것을 포함한다.
13. 1항 내지 11항 중 어느 하나의 방법에서, 변환은 비트스트림으로부터 비디오를 디코딩하는 것을 포함한다.
14. 1항 내지 22항 중 어느 하의 방법에서, 변환은 비디오로부터 비트스트림을 생성하는 단계를 포함하고, 방법은 비트스트림을 비일시적 컴퓨터 판독가능 기록 매체에 저장하는 단계를 더 포함한다.
15. 비디오 처리 장치는 1항 내지 14항 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함한다.
16. 비디오 스트림을 저장하는 방법에서, 1항 내지 14항 중 어느 한 항에 기재된 방법을 포함하고, 상기 비트스트림을 컴퓨터 판독가능 기록매체에 저장하는 단계를 더 포함한다.
17. 컴퓨터 판독가능 매체는 실행될 때 프로세서로 하여금 1항 내지 14항 중 어느 하나 이상에 기재된 방법을 구현하게 하는 프로그램 코드를 저장한다.
18. 컴퓨터 판독 가능 매체는 전술한 방법들 중 어느 하나에 따라 생성된 비트스트림을 저장한다.
19. 비트스트림 표현을 저장하기 위한 비디오 처리 장치로서, 상기 비디오 처리 장치는 1항 내지 25항 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된다.
네 번째 항 세트는 이전 섹션(예: 항목 6-8)에서 논의된 기술의 예시적인 실시예를 보여줍니다.
1.비디오 처리 방법(예를 들어, 도 9A에 도시된 방법(910))으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어를 갖는 비디오와 비디오의 비트스트림 간의 변환을 수행하는 단계(912)를 포함하고, 상기 포맷 규칙은 액세스 유닛에서 픽처를 출력할지 여부를 나타내는 변수의 값이 액세스 유닛에서 또다른 픽처를 출력할지 여부를 나타내는 플래그에 기초하여 결정되는 것을 명시한다.
2. 1항의 방법에서, 상기 또다른 픽처는 상기 픽처보다 상위 계층에 있다.
3. 1항 또는 2항의 방법에서, 상기 플래그는 상기 디코딩된 픽처 출력 및 제거 프로세스를 제어한다.
4. 1항 또는 2항의 방법에서, 상기 플래그는 시퀀스 파라미터 세트(SPS),비디오 파라미터 세트(VPS), 픽처 파라미터 세트(PPS), 픽처 헤더, 슬라이스 헤더, 및 타일 그룹 헤더에 포함된 신택스 요소이다.
5. 1항 내지 4항 중 어느 한 항의 방법에서, 상기 변수의 값은 i) 비디오 파라미터 세트(VPS)에 대한 식별자의 값을 지정하는 플래그, ii) 현재 비디오 계층이 출력 계층인지, iii) 현재 픽처가 랜덤 액세스 스킵된 리딩 픽처, 점진적 디코딩 리프레시 픽처, 점진적 디코딩 리프레시 픽처의 복구 픽처인지, 또는 iv) 디코딩 순서로 상기 현재 픽처 이전의 상기 디코딩된 픽처 버퍼의 픽처들이 상기 픽처들이 복구되기 이전에 출력되는지 중에서 적어도 하나에 더 기초합니다.
6. 5항의 방법에서, i) VPS에 대한 식별자의 값을 지정하는 플래그가 0보다 크고 현재 계층이 출력 계층이 아니거나, 또는 ii) 다음 조건들 중에서 하나가 참일 때, 상기 변수의 값이 0과 동일하게 설정된다:
현재 픽처는 랜덤 액세스 스킵된 리딩 픽처(random access skipped leading picture)이고, 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 연관된 인트라 랜덤 액세스 포인트 픽처는 인트라 랜덤 액세스 포인트 픽처가 복구되기 전에 출력되지 않는다; 또는
현재 픽처는 디코딩된 픽처 버퍼에 있는 픽처들을 가진 점진적 디코딩 리프레시 픽처이며, 픽처들이 복구되기 전에 디코딩된 순서로 현재 픽처의 이전에 출력되지 않거나, 디코딩된 픽처 버퍼에 있는 픽처들을 가진 점진적 디코딩 리프레시 픽처의 복구 픽처이며 픽처들이 복구되기 전에 디코딩 순서로 현재 픽처의 이전에 출력되지 않는다.또는 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처를 갖는 점진적 디코딩 리프레시 픽처의 복구 픽처는 픽처가 복구되기 전에 출력되지 않는다.
7. 6항의 방법에서, 변수의 값은 i) 및 ii)가 모두 충족되지 않는 경우 플래그의 값과 동일하게 설정된다.
8. 6항의 방법에서, 0과 동일한 변수의 값은 액세스 유닛에서 픽처를 출력하지 않음을 표시한다.
9. 1항의 방법에서, 변수는 PictureOutputFlag이고 플래그는 pic_output_flag이다.
10. 1항 내지 9항 중 어느 하나의 방법에서, 플래그는 액세스 유닛 구분자에 포함된다.
11. 1항 내지 9항 중 어느 하나의 방법에서, 플래그는 추가 향상 정보 필드에 포함된다.
12. 1항 내지 9항 중 어느 하나의 방법에서, 플래그는 하나 이상의 픽처의 픽처 헤더에 포함된다.
13. 비디오 처리 방법(예를 들어, 도 9B에 도시된 바와 같은 방법 920)으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(922)를 포함하고, 상기 포맷 규칙은 픽처가 출력 계층에 속하지 않는 경우 엑세스 유닛에서 픽처를 출력할지 여부를 나타내는 변수의 값이 특정 값과 동일하게 설정되도록 명시한다.
14. 13항의 방법에서, 특정 값은 0이다.
15. 비디오 처리 방법(예를 들어, 도 9c에 도시된 바와 같은 방법 930)으로서, 포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(932)를 포함하고, 상기 포맷 규칙은 비디오가 하나의 출력 계층만을 포함하는 경우, 출력 계층을 포함하지 않는 액세스 유닛은 액세스 유닛의 픽처를 가장 높은 계층 식별자(layer ID)를 갖는 픽처에 대해서 첫 번째 값으로, 다른 모든 픽처들에 대해서 두 번째 값으로 출력할지 여부를 나타내는 변수를 설정함으로써 코딩됨을 명시한다.
16. 15항의 방법에서, 첫 번째 값은 1이고 두 번째 값은 0이다.
17. 1항 내지 16항 중 어느 하나의 방법에서, 상기 변환은 비디오를 비트스트림으로 인코딩하는 것을 포함한다.
18. 1항 내지 16항 중 어느 하나의 방법에서, 상기 변환은 비트스트림으로부터 비디오를 디코딩하는 것을 포함한다.
19. 1항 내지 16항의 방법에서, 상기 변환은 비디오로부터 비트스트림을 생성하는 단계를 포함하고, 상기 방법은 비트스트림을 비일시적 컴퓨터 판독가능 기록 매체에 저장하는 단계를 더 포함한다.
20. 비디오 처리 장치는 1항 내지 19항 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함한다.
21. 비디오 스트림을 저장하는 방법에서, 1항 내지 19항 중 어느 한 항에 기재된 방법을 포함하고, 상기 비트스트림을 비일시적 컴퓨터 판독가능 기록매체에 저장하는 단계를 더 포함한다.
22. 컴퓨터 판독가능 매체는 실행될 때 프로세서로 하여금 1항 내지 19항 중 어느 하나 이상에 기재된 방법을 구현하게 하는 프로그램 코드를 저장한다.
23. 컴퓨터 판독 가능 매체는 전술한 방법들 중 어느 하나에 따라 생성된 비트스트림을 저장한다.
24. 비트스트림 표현을 저장하기 위한 비디오 처리 장치로서, 상기 비디오 처리 장치는 1항 내지 19항 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된다.
본 문서에서 "비디오 처리(video processing)"라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제(decompression)를 의미할 수 있다. 예를 들어, 비디오 압축 알고리즘은 비트스트림 표현에 대응하는 비디오의 픽셀 표현으로부터의 변환 또는 그 반대의 변환 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이 비트스트림의 다른 위치들에 함께 배치(병치)(co-located)되거나 확산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록(macroblock)은 변환 및 코딩된 오류 잔차 값의 관점에서, 그리고 또한 비트스트림의 헤더 및 기타 필드에 비트를 사용하여 인코딩 될 수 있다. 또한, 변환 동안, 디코더는 위의 솔루션에서 설명된 바와 같이 결정에 기초하여 일부 필드들이 존재하거나 없을 수 있다는 지식으로 비트스트림을 파싱할 수 있다. 유사하게, 인코더는 특정 구문 필드가 포함되는지 여부를 결정할 수 있고, 이에 따라 코딩된 표현으로부터 구문 필드를 포함하거나 또는 제외함으로써 코딩된 표현을 생성할 수 있다.
본 문서에 기재된 개시 및 기타 솔루션, 예, 실시예, 모듈 및 기능적 동작(operation)은 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 여기에는 이 문서 및 그 구조적 등가물 또는 그 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 기타 실시예는 하나 이상의 컴퓨터 프로그램 제품으로 구현될 수 있고, 즉, 컴퓨터 프로그램 지침의 하나 이상의 모듈을 컴퓨터 판독 가능한 매체에 인코딩 하여 실행하거나, 데이터 처리 장치의 작동을 제어할 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 조성 또는 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치"는 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 장치, 장치 및 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 대응 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 기계에서 생성된 전기, 광학 또는 전자기 신호이고, 이는 적합한 수신기 장치로 전송하기 위한 정보를 인코딩 하기 위해 생성된다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 된 언어를 비롯한 모든 형태의 프로그래밍 언어로 작성할 수 있으며 독립 실행형 프로그램 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴 또는 기타 유닛으로 모든 형태로 배포할 수 있다. 컴퓨터 프로그램이 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트), 대응하는 프로그램에 전용되는 단일 파일 또는 여러 조정된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장할 수 있다. 컴퓨터 프로그램은 한 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행하도록 배포할 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 프로그래밍 가능한 프로세서가 하나 이상의 프로그래밍 가능한 프로세서에서 수행하여 입력 데이터에서 작동하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름도 수행될 수 있으며, 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능한 게이트 어레이) 또는 ASIC(애플리케이션 별 집적 회로)로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서에는 예를 들어, 일반 및 특수 목적 마이크로프로세서와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서가 포함된다. 일반적으로 프로세서는 읽기 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다에서 지침과 데이터를 받게 된다. 컴퓨터의 필수 요소는 지침과 데이터를 저장하기 위한 하나 이상의 메모리 장치를 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 전체를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에 이러한 장치가 필요하지 않다. 컴퓨터 프로그램 지침 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능 미디어에는 반도체 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치, 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동식 디스크; 마그네토 광학 디스크; 및 CD ROM 및 DVD-ROM 디스크를 비롯한 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치가 포함된다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보충되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이는 어떤 주제의 범위 나 청구 될 수 있는 것에 대한 제한으로 해석되어서는 안되고, 오히려 특정 기술의 특정 구현예에 특정할 수 있는 특징에 대한 설명으로 해석되어서는 안 된다. 이 특허 문서에 기재된 특정 특징은 별도의 실시예의 맥락에서 또한 단일 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 조합으로 다중 실시예들에서도 구현될 수 있다. 더욱이, 앞서와 같이 특징들은 특정 조합으로 작용하는 것으로 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징은 어떤 경우에는 조합으로부터 제외될 수 있고, 주장된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
마찬가지로, 동작은 특정 순서로 도면에 묘사되어 있지만, 바람직한 결과를 달성하기 위하여, 이러한 동작이 표시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 기재된 실시예들에서, 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
몇 가지 구현 및 예제만 설명되고 있으며, 이 특허 문서에 설명되고 예시된 내용에 기초하여 다른 구현, 개선 및 변형을 만들 수 있다.

Claims (30)

  1. 비디오 처리 방법에 있어서,
    포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계로서, 상기 비트스트림은 하나 이상의 출력 계층 세트(OLS)를 포함하고, 각각의 OLS는 하나 이상의 코딩된 계층 비디오 시퀀스를 포함하는 단계를 포함하고,
    상기 포맷 규칙은 비디오 파라미터 세트가 하나 이상의 OLS 각각에 대해 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀을 표현하는 데 사용되는 비트 심도의 최대 허용 값을 표시하도록 지정하는 비디오 처리 방법.
  2. 제1항에 있어서, OLS에 대한 상기 크로마 포맷 표시자의 상기 최대 허용 값은 상기 OLS에서 상기 하나 이상의 코딩된 레이어 비디오 시퀀스에 의해 참조되는 모든 시퀀스 파라미터 세트에 적용가능한 방법.
  3. 제1항 또는 제2항에 있어서, OLS에 대한 상기 비트 심도의 상기 최대 허용 값은 상기 OLS에서 상기 하나 이상의 코딩된 레이어 비디오 시퀀스에 의해 참조되는 모든 시퀀스 파라미터 세트에 적용가능한 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 하나 이상의 코딩된 계층 비디오 시퀀스를 포함하고 OLS 인덱스 i를 갖는 OLS에 대한 상기 변환을 수행하기 위해, 상기 규칙은 i번째 OLS에 대한 각 픽처 저장 버퍼의 폭을 나타내는 ols_dpb_pic_width[ i ], 상기 i번째 OLS에 대한 각 픽처 저장 버퍼의 높이를 나타내는 ols_dpb_pic_height[ i ], 상기 i번째 OLS에 대한 상기 크로마 포맷 지시자의 상기 최대 허용값을 나타내는 신택스 요소 및 상기 i번째 OLS에 대한 비트 심도의 상기 최대 허용값을 나타내는 신택스 요소 중에서 적어도 하나의 값에 따라서 디코딩된 버퍼를 위한 메모리를 할당하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 비디오 파라미터 세트는 상기 비트스트림에 포함되는 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 비디오 파라미터 세트는 상기 비트스트림과 별도로 표시되는 방법.
  7. 비디오 처리 방법에 있어서,
    포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 간의 변환을 수행하는 단계를 포함하고,
    상기 포맷 규칙은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이가, 상기 픽처들이 상기 디코딩된 픽처 버퍼로부터 제거되기 이전에, 상기 비트 스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 방법.
  8. 제7항에 있어서, 상기 변수는 비디오 파라미터 세트에 포함된 적어도 하나 이상의 신택스 요소에 기초하여 유도되는 방법.
  9. 제7항에 있어서, 현재 액세스 유닛에 대해 유도된 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용값, 또는 비트 심도의 최대 허용 값이, 디코딩 순서에서 선행 액세스 유닛에 대해 유도되는 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용 값 또는 비트 심도의 최대 허용 값과 다른 경우, 상기 변수의 값은 1로 설정되는 방법.
  10. 제9항에 있어서, 1과 동일한 상기 변수의 값은 상기 디코딩된 픽처 버퍼로부터 상기 픽처들이 제거되기 전에, 디코딩 순서로 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되지 않음을 나타내는 방법.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서, 상기 변수 값은 크로마 포맷 표시자의 최대 허용 값 및/또는 상기 비디오의 픽셀을 표현하는 데 사용되는 비트 심도의 최대 허용 값에 추가로 기초하는 방법.
  12. 제7항 내지 제11항 중 어느 한 항에 있어서,상기 비디오 파라미터 세트는 상기 비트스트림에 포함되는, 방법.
  13. 제7항 내지 제11항 중 어느 한 항에 있어서, 상기 비디오 파라미터 세트는 상기 비트스트림과 별도로 표시되는 방법.
  14. 비디오 처리 방법에 있어서,
    포맷 규칙에 따라 하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림 간의 변환을 수행하는 단계를 포함하고,
    상기 포맷 규칙은 크로마 포맷 표시자의 최대 허용 값 및/또는 비디오의 픽셀을 나타내는 데 사용되는 비트 심도의 최대 허용 값이, 픽처들이 디코딩된 픽처 버퍼로부터 제거되기 이전에, 비트스트림의 디코딩 순서에서 현재 픽처 이전에 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부를 나타내는 변수값을 제어함을 명시하는 방법.
  15. 제14항에 있어서, 상기 변수는 비디오 파라미터 세트에서 시그널링된 적어도 하나 이상의 신택스 요소에 기초하여 유도되는 방법.
  16. 제14항에 있어서, 현재 액세스 유닛에 대해 유도된 각 픽처의 최대 폭 , 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용값, 또는 비트 심도의 최대 허용 값이, 디코딩 순서에서 선행 액세스 유닛에 대해 유도되는 각 픽처의 최대 폭, 각 픽처의 최대 높이, 크로마 포맷 지시자의 최대 허용 값 또는 비트 심도의 최대 허용 값과 다른 경우, 상기 변수의 값은 1로 설정되는 방법.
  17. 제16항에 있어서, 1과 동일한 상기 변수의 값은 상기 디코딩된 픽처 버퍼로부터 상기 픽처들이 제거되기 전에, 디코딩 순서로 현재 픽처 이전의 디코딩된 픽처가 출력되지 않음을 나타내는 방법.
  18. 제14항 내지 제17항 중 어느 한 항에 있어서, 상기 변수의 값은 모든 비디오 계층들의 비디오 픽처들에 대한 최대 픽처 폭 및/또는 최대 픽처 높이에 더 기초하는 방법.
  19. 제14항 내지 제18항 중 어느 한 항에 있어서, 상기 비디오 파라미터 세트는 상기 비트스트림에 포함되는 방법.
  20. 제14항 내지 제18항 중 어느 한 항에 있어서, 상기 비디오 파라미터 세트는 비트스트림과 별도로 표시되는 방법.
  21. 비디오 처리 방법에 있어서,
    하나 이상의 비디오 레이어들을 갖는 비디오와 비디오의 비트스트림을 규칙에 따라 변환하는 단계를 포함하고,
    상기 규칙은 픽처들이 상기 디코딩된 픽처 버퍼로부터 제거되기 이전에, 상기 비트스트림의 디코딩 순서에서 현재 픽처 이전의 디코딩된 픽처 버퍼의 픽처들이 출력되는지 여부가 별개의 컬러 평면들이 비디오 인코딩에 사용되는지 여부와 무관함을 나타내는 변수값을 명시하는 방법.
  22. 제21항에 있어서, 상기 비디오를 인코딩하기 위해 별도의 컬러 평면들이 사용되지 않는 경우, 상기 규칙은 비디오 픽처에 대해 디코딩이 한 번만 수행되도록 명시하거나, 상기 비디오를 인코딩하기 위해 별도의 컬러 평면들이 사용되는 경우, 상기 규칙은 픽처 디코딩이 세 번 호출되도록 명시하는 방법.
  23. 제1항 내지 제22항 중 어느 하나의 항에 있어서, 상기 변환은 상기 비디오를 상기 비트스트림으로 인코딩하는 단계를 포함하는 방법.
  24. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 변환은 상기 비트스트림으로부터 상기 비디오를 디코딩하는 단계를 포함하는 방법.
  25. 제1항 내지 제22항 중 어느 한 항에 있어서, 상기 변환하는 단계는 상기 비디오로부터 상기 비트스트림을 생성하는 단계를 포함하고,상기 방법은 상기 비트스트림을 비일시적 컴퓨터 판독가능 기록 매체에 저장하는 단계를 더 포함하는 방법.
  26. 제1항 내지 제25항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 처리 장치.
  27. 제1항 내지 제25항 중 어느 한 항에 기재된 방법을 포함하고, 상기 비트스트림을 비일시적 컴퓨터 판독가능 기록매체에 저장하는 단계를 더 포함하는 방법.
  28. 실행될 때 프로세서로 하여금 제1항 내지 제25항 중 어느 하나 이상의 항에 기재된 방법을 구현하게 하는 프로그램 코드를 저장하는 컴퓨터 판독가능 매체.
  29. 제1항 내지 제28항 중에서 어느 하나의 항에 기재된 방법에 따라 생성된 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
  30. 비디오 처리 장치로서, 비트스트림 표현을 저장하고, 제1항 내지 제25항 중 어느 한 항에 기재된 방법을 구현하도록 구성되는 비디오 처리 장치.
KR1020227031200A 2020-03-17 2021-03-16 비디오 코딩에서 설정한 비디오 파라미터 세트의 사용 KR20220155292A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062990749P 2020-03-17 2020-03-17
US62/990,749 2020-03-17
PCT/US2021/022547 WO2021188527A1 (en) 2020-03-17 2021-03-16 Using video parameter set in video coding

Publications (1)

Publication Number Publication Date
KR20220155292A true KR20220155292A (ko) 2022-11-22

Family

ID=77768274

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227031200A KR20220155292A (ko) 2020-03-17 2021-03-16 비디오 코딩에서 설정한 비디오 파라미터 세트의 사용
KR1020227031211A KR20220155293A (ko) 2020-03-17 2021-03-16 비디오 코딩에서 픽처 출력 플래그 표시

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227031211A KR20220155293A (ko) 2020-03-17 2021-03-16 비디오 코딩에서 픽처 출력 플래그 표시

Country Status (8)

Country Link
US (4) US11838555B2 (ko)
EP (2) EP4104434A4 (ko)
JP (2) JP7415035B2 (ko)
KR (2) KR20220155292A (ko)
CN (3) CN115315942A (ko)
BR (1) BR112022018108A2 (ko)
MX (1) MX2022011208A (ko)
WO (3) WO2021188527A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12088846B2 (en) * 2020-04-01 2024-09-10 Lg Electronics Inc. Signaling-based image or video coding of information related to recovery point for GDR
US11877011B2 (en) 2020-09-17 2024-01-16 Lemon Inc. Picture dimension indication in decoder configuration record
CA3229953A1 (en) * 2021-08-26 2023-03-02 Yue Yu Operation range extension for versatile video coding

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391807B2 (en) 2002-04-24 2008-06-24 Mitsubishi Electric Research Laboratories, Inc. Video transcoding of scalable multi-layer videos to single layer video
CN100591138C (zh) * 2002-11-25 2010-02-17 松下电器产业株式会社 图像编码方法及其装置、图像解码方法及其装置
US7535383B2 (en) * 2006-07-10 2009-05-19 Sharp Laboratories Of America Inc. Methods and systems for signaling multi-layer bitstream data
KR20150013776A (ko) 2010-04-09 2015-02-05 미쓰비시덴키 가부시키가이샤 동화상 부호화 장치 및 동화상 복호 장치
US9131245B2 (en) * 2011-09-23 2015-09-08 Qualcomm Incorporated Reference picture list construction for video coding
US9479774B2 (en) 2012-09-24 2016-10-25 Qualcomm Incorporated Buffering period and recovery point supplemental enhancement information messages
US10230956B2 (en) * 2012-09-26 2019-03-12 Integrated Device Technology, Inc. Apparatuses and methods for optimizing rate-distortion of syntax elements
US20140092961A1 (en) * 2012-09-28 2014-04-03 Sharp Laboratories Of America, Inc. Signaling decoder picture buffer information
CN109982078B (zh) 2012-12-14 2023-03-28 Lg 电子株式会社 编码视频的方法、解码视频的方法以及使用其的装置
US9942545B2 (en) * 2013-01-03 2018-04-10 Texas Instruments Incorporated Methods and apparatus for indicating picture buffer size for coded scalable video
US9591321B2 (en) 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
SG10201913539SA (en) * 2013-04-07 2020-02-27 Dolby Int Ab Signaling change in output layer sets
US9565437B2 (en) * 2013-04-08 2017-02-07 Qualcomm Incorporated Parameter set designs for video coding extensions
CN105379273B (zh) 2013-07-14 2019-03-15 夏普株式会社 对来自比特流的视频进行解码的方法和设备
US9794579B2 (en) * 2013-07-15 2017-10-17 Qualcomm Incorporated Decoded picture buffer operations for video coding
US10284858B2 (en) * 2013-10-15 2019-05-07 Qualcomm Incorporated Support of multi-mode extraction for multi-layer video codecs
WO2015056182A2 (en) * 2013-10-15 2015-04-23 Nokia Technologies Oy Video encoding and decoding
US10560710B2 (en) * 2014-01-03 2020-02-11 Qualcomm Incorporated Method for coding recovery point supplemental enhancement information (SEI) messages and region refresh information SEI messages in multi-layer coding
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
WO2015104451A1 (en) * 2014-01-07 2015-07-16 Nokia Technologies Oy Method and apparatus for video coding and decoding
US11388441B2 (en) 2014-03-18 2022-07-12 Qualcomm Incorporated Derivation of SPS temporal ID nesting information for multi-layer bitstreams
US10477232B2 (en) * 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US20160373771A1 (en) * 2015-06-18 2016-12-22 Qualcomm Incorporated Design of tracks and operation point signaling in layered hevc file format
WO2017154563A1 (ja) * 2016-03-07 2017-09-14 ソニー株式会社 符号化装置および符号化方法
JP7379655B2 (ja) * 2019-07-19 2023-11-14 ウィルス インスティテュート オブ スタンダーズ アンド テクノロジー インコーポレイティド ビデオ信号処理方法及び装置
AU2020354368A1 (en) * 2019-09-24 2022-04-14 Huawei Technologies Co., Ltd. Temporal identifier constraints for SEI messages
GB2587365B (en) 2019-09-24 2023-02-22 Canon Kk Method, device, and computer program for coding and decoding a picture
US11582463B2 (en) * 2019-12-30 2023-02-14 Tencent America LLC Method for alignment across layers in coded video stream
WO2021162016A1 (ja) * 2020-02-10 2021-08-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法

Also Published As

Publication number Publication date
EP4104434A1 (en) 2022-12-21
US20240129544A1 (en) 2024-04-18
EP4104434A4 (en) 2023-08-23
JP2023518752A (ja) 2023-05-08
EP4104447A1 (en) 2022-12-21
KR20220155293A (ko) 2022-11-22
EP4104447A4 (en) 2023-08-16
US20230028609A1 (en) 2023-01-26
WO2021188527A1 (en) 2021-09-23
US11910022B2 (en) 2024-02-20
WO2021188532A1 (en) 2021-09-23
US11838555B2 (en) 2023-12-05
CN115315942A (zh) 2022-11-08
BR112022018108A2 (pt) 2022-10-25
JP7415035B2 (ja) 2024-01-16
CN115336277A (zh) 2022-11-11
US20230023356A1 (en) 2023-01-26
MX2022011208A (es) 2022-09-19
JP2023519561A (ja) 2023-05-11
CN115315941A (zh) 2022-11-08
US20230025260A1 (en) 2023-01-26
JP2024138288A (ja) 2024-10-08
WO2021188542A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
EP4319149A2 (en) Constraints on reference picture lists for subpictures
KR20220120566A (ko) 비디오 비트스트림들에서의 가상 참조 디코더 파라미터들의 시그널링에 대한 제약들
KR20220155277A (ko) 스케일러블 비디오 코딩의 랜덤 액세스 포인트 액세스 유닛
KR20220114558A (ko) 비디오 코딩에서의 프로필, 티어 및 계층 표시
US11910022B2 (en) Decoded picture buffer memory allocation and picture output in scalable video coding
KR20230015382A (ko) 비디오 비트스트림 처리에서 픽처 유형들에 대한 제약들
KR20230025787A (ko) 코딩된 비디오에서 양자화 정보의 시그널링
CN115486082A (zh) 视频编解码中的虚拟边界
WO2021257529A1 (en) Decoded picture buffer management and subpictures in video coding
KR20230016050A (ko) 점진적인 디코딩 리프레시 및 레퍼런스 픽처 목록의 시그널링
EP4107958A2 (en) Intra random access points for picture coding
CN115699732A (zh) 视频编解码中的参考图片重采样
KR20230002395A (ko) 레퍼런스 픽처 목록에 대한 제약
JP7572447B2 (ja) 映像コーディングにおける映像パラメータセットの使用
KR20230013051A (ko) 코딩된 비디오의 nal 유닛의 순서