KR102670878B1 - 비디오 인코더, 비디오 디코더 및 대응 방법 - Google Patents

비디오 인코더, 비디오 디코더 및 대응 방법 Download PDF

Info

Publication number
KR102670878B1
KR102670878B1 KR1020217016061A KR20217016061A KR102670878B1 KR 102670878 B1 KR102670878 B1 KR 102670878B1 KR 1020217016061 A KR1020217016061 A KR 1020217016061A KR 20217016061 A KR20217016061 A KR 20217016061A KR 102670878 B1 KR102670878 B1 KR 102670878B1
Authority
KR
South Korea
Prior art keywords
hps
parameter
slice
parameter set
coding tool
Prior art date
Application number
KR1020217016061A
Other languages
English (en)
Other versions
KR20210080533A (ko
Inventor
프뉴 헨드리
예-쿠이 왕
장러 천
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20210080533A publication Critical patent/KR20210080533A/ko
Application granted granted Critical
Publication of KR102670878B1 publication Critical patent/KR102670878B1/ko

Links

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/109Selection of coding mode or of prediction mode among a plurality of temporal 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/117Filters, e.g. for pre-processing or post-processing
    • 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/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

비디오 코딩 메커니즘이 개시된다. 메커니즘은 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 헤더 파라미터 세트(header parameter set, HPS), 제2 유형의 코딩 툴 파라미터를 포함하는 제2 HPS, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 포함하는 비트스트림을 수신하는 단계를 포함한다. 상기 메커니즘은 상기 슬라이스 헤더가 상기 제1 HPS에 대한 제1 레퍼런스 및 상기 제2 HPS에 대한 제2 레퍼런스를 포함하는 것으로 결정하는 단계를 더 포함한다. 상기 메커니즘은 상기 슬라이스 헤더가 제1 레퍼런스 및 제2 레퍼런스를 포함한다는 결정에 기초하여 상기 제1 유형의 코딩 툴 파라미터 및 상기 제2 유형의 코딩 툴 파라미터를 사용하여 상기 슬라이스를 디코딩하는 단계를 더 포함한다. 상기 메커니즘은 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 슬라이스를 포워딩하는 단계를 더 포함한다.

Description

비디오 인코더, 비디오 디코더 및 대응 방법
본 개시는 일반적으로 비디오 코딩에 관한 것이며, 구체적으로 비디오 코딩에서 비디오 데이터를 압축하는 데 사용되는 코딩 툴 파라미터의 효과적인 시그널링에 관한 것이다.
비교적 짧은 비디오를 묘사하는 데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 데이터가 스트리밍되어야 할 때 또는 대역폭 용량이 제한된 통신 네트워크를 통해 통신할 때 어려움을 초래할 수 있다. 따라서 비디오 데이터는 일반적으로 현대 통신 네트워크를 통해 통신되기 전에 압축된다. 메모리 리소스가 제한될 수 있기 때문에 비디오가 저장 장치에 저장될 때 비디오의 크기가 문제가 될 수도 있다. 비디오 압축 장치는 종종 소스에서 소프트웨어 및/또는 하드웨어를 사용하여 전송 또는 저장 전에 비디오 데이터를 코딩하여 디지털 비디오 이미지를 표현하는 데 필요한 데이터 양을 줄인다. 압축된 데이터는 비디오 데이터를 디코딩하는 비디오 압축 해제 장치에 의해 목적지에서 수신된다. 네트워크 리소스는 제한되어 있고 더 높은 비디오 품질에 대한 요구는 계속 증가함에 따라 이미지 품질을 거의 또는 전혀 희생하지 않고 압축 비율을 개선하는 개선된 압축 및 압축 해제 기술이 요망된다.
실시예에서, 본 개시는 디코더에서 실행되는 방법을 포함하며, 상기 방법은: 상기 디코더의 수신기가 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 헤더 파라미터 세트(header parameter set, HPS), 제2 유형의 코딩 툴 파라미터를 포함하는 제2 HPS, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 포함하는 비트스트림을 수신하는 단계; 상기 디코더의 프로세서가 상기 슬라이스 헤더가 상기 제1 HPS에 대한 제1 레퍼런스 및 상기 제2 HPS에 대한 제2 레퍼런스를 포함하는 것으로 결정하는 단계; 상기 프로세서가 상기 슬라이스 헤더가 제1 레퍼런스 및 제2 레퍼런스를 포함한다는 결정에 기초하여 상기 제1 유형의 코딩 툴 파라미터 및 상기 제2 유형의 코딩 툴 파라미터를 사용하여 상기 슬라이스를 디코딩하는 단계; 및 상기 프로세서가 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 슬라이스를 포워딩하는 단계를 포함한다. 적응 파라미터 세트(Adaptation Parameters Set, APS)라고도 알려진 HPS는 픽처 파라미터 세트(picture parameter set, PPS)보다 낮은 입도 및 슬라이스 헤더보다 높은 입도에서 비디오 데이터를 설명하기 위해 사용될 수 있다. 개시된 관점은 단일 슬라이스 헤더가 여러 유형의 HPS를 참조할 수 있게 한다. 단일 슬라이스 헤더가 여러 유형의 HPS를 참조할 수 있도록 하는 메커니즘을 제공함으로써 다양한 코딩 툴 파라미터가 HPS 수준에서 시그널링될 수 있다. 이를 통해 코딩 툴 파라미터가 추가 데이터와 함께 슬라이스 헤더를 로드하지 않고도 동일한 픽처/프레임의 슬라이스 간에 변경할 수 있다. 따라서, 인코더는 동일한 픽처의 슬라이스들 사이에서 변하는 코딩 툴 파라미터가 모든 슬라이스 헤더에 로드되지 않을 수 있기 때문에 레이트 왜곡 최적화(rate distortion optimization, RDO)를 수행할 때 더 큰 유연성을 갖는다. 또한, 인코더가 최적의 코딩 솔루션을 찾을 때 더 많은 인코딩 옵션에 액세스할 수 있으므로 평균 코딩 효율이 증가한다. 이것은 비디오 데이터를 저장하고 비디오 데이터를 전송할 때 인코더와 디코더 모두에서 메모리 리소스 사용량과 네트워크 리소스 사용량을 줄여준다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 HPS 및 상기 제2 HPS는 적응형 루프 필터(adaptive loop filter, ALF) HPS, 크로마 스케일링과의 루마 매핑(luma mapping with chroma scaling, LMCS) HPS, 스케일링 리스트 파라미터 HPS, 또는 이것들의 조합을 포함한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 비트스트림은 상기 제1 HPS 및 상기 제2 HPS를 포함하는 복수의 HPS를 더 포함하며, 상기 복수의 HPS 각각은 상기 복수의 HPS 중 다른 HPS로부터 코딩 툴 파라미터를 참조하는 것이 제한된다. 일부 시스템에서, 현재 HPS는 이전 HPS를 참조하여 코딩 파라미터를 상속할 수 있다. 이론적으로 이것은 현재 HPS와 이전 HPS 간의 차이만 현재 HPS가 포함하도록 허용한다. 그러나 실제로 이 접근 방식은 종종 긴 상속 체인을 생성하므로, 후속 HPS가 이전 HPS를 다시 참조할 수 있는 한 디코더는 버퍼에 많은 수의 이전 HPS를 유지해야 한다. 이로 인해 버퍼 메모리 문제가 발생하고 HPS가 전송 중에 손실될 경우 코딩 오류가 발생할 가능성이 높아진다. 본 개시의 일부 관점은 각각의 HPS가 다른 HPS를 참조하지 않고 모든 관련 코딩 파라미터를 포함하도록 요구함으로써 이 문제를 해결한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 HPS는 임시 식별자(temporal identifier)와 연관된 액세스 유닛에 포함되고, 상기 제1 HPS는 상기 제1 HPS를 포함하는 상기 액세스 유닛과 연관된 상기 임시 ID를 포함한다. 일례에서, 각 HPS는 HPS를 포함하는 액세스 유닛과 동일한 임시 ID를 유지해야 한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 슬라이스는 픽처의 일부이고, 상기 픽처는 임시 식별자(ID)와 연관되며, 상기 제1 HPS는 상기 픽처와 연관된 상기 임시 ID를 포함한다. 일부 예들에서, 각 HPS는 HPS를 참조하는 제1 슬라이스와 연관된 픽처와 동일한 임시 ID를 유지해야 한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 비트스트림은 상기 슬라이스를 포함하는 하나 이상의 슬라이스를 각각 포함하는 복수의 픽처를 포함하고, 상기 비트스트림은 상기 제1 HPS 및 상기 제2 HPS를 포함하는 복수의 HPS를 더 포함하고, 각각의 HPS 및 각각의 슬라이스는 복수의 임시 ID 중 하나와 연관되며, 제1 임시 ID를 가진 각각의 슬라이스는 상기 제1 임시 ID보다 큰 제2 임시 ID로 임의의 HPS를 참조하는 것이 제한된다. 일부 예에서, 픽처 및 슬라이스의 비트스트림은 복수의 임시 ID 중 하나(예를 들어, 3 개 중 하나)와 연관될 수 있다. 임시 ID는 대응하는 프레임 레이트와 각각 연관된다. 프레임 레이트가 높은 데이터 항목은 낮은 프레임 레이트가 렌더링될 때 무시될 수 있다. 이 예에서, 임시 ID가 더 높고 그에 따라 프레임 레이트가 높을 때 슬라이스가 HPS를 참조하는 것을 방지한다. 이 접근 방식은 슬라이스의 낮은 프레임 레이트가 렌더링될 때 무시되는 높은 프레임 레이트 HPS를 슬라이스가 참조하지 않도록 한다. 이렇게 하면 HPS가 실제로 슬라이스에서 사용 가능하고 프레임 레이트 불일치로 인해 무시되지 않도록 할 수 있다.
실시예에서, 본 개시는 인코더에서 실행되는 방법을 포함하며, 상기 방법은: 상기 인코더의 프로세서가 복수의 픽처를 복수의 슬라이스로 분할하는 단계; 상기 프로세서가 상기 복수의 슬라이스를 비트스트림을 인코딩하는 단계 - 상기 슬라이스는 적어도 제1 유형의 코딩 툴 파라미터에 기초한 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩됨 - ; 상기 프로세서가 제1 헤더 파라미터 세트(HPS) 및 제2 HPS를 상기 비트스트림으로 인코딩하는 단계 - 상기 제1 HPS는 상기 제1 유형의 코딩 툴 파라미터를 포함하고 상기 제2 HPS는 상기 제2 유형의 코딩 툴 파라미터를 포함함 - ; 상기 프로세서가 상기 복수의 슬라이스 중 제1 슬라이스의 인코딩을 설명하는 상기 비트스트림으로 슬라이스 헤더를 인코딩하는 단계 - 상기 슬라이스 헤더는 상기 제1 HPS에 대한 제1 레퍼런스 및 상기 제2 HPS에 대한 제1 레퍼런스를 포함함 - ; 및 상기 프로세서에 결합된 메모리가 디코더와의 통신을 위해 상기 비트스트림을 저장하는 단계를 포함한다. APS 라고도 알려진 HPS는 PPS보다 낮은 입도 및 슬라이스 헤더보다 높은 입도에서 비디오 데이터를 설명하는 데 사용될 수 있다. 개시된 관점은 단일 슬라이스 헤더가 여러 유형의 HPS를 참조할 수 있게 한다. 단일 슬라이스 헤더가 여러 유형의 HPS를 참조할 수 있도록 하는 메커니즘을 제공함으로써 다양한 코딩 툴 파라미터가 HPS 수준에서 시그널링될 수 있다. 이를 통해 코딩 툴 파라미터가 추가 데이터와 함께 슬라이스 헤더를 로드하지 않고도 동일한 그림/프레임의 슬라이스 간에 변경할 수 있다. 따라서, 인코더는 동일한 픽처의 슬라이스들 사이에 변화하는 코딩 툴 파라미터가 모든 슬라이스 헤더에 로드되지 않을 수 있으므로 RDO를 수행할 때 더 큰 유연성을 갖는다. 또한, 인코더가 최적의 코딩 솔루션을 찾을 때 더 많은 인코딩 옵션에 액세스할 수 있으므로 평균 코딩 효율이 증가한다. 이것은 비디오 데이터를 저장하고 비디오 데이터를 전송할 때 인코더와 디코더 모두에서 메모리 리소스 사용량과 네트워크 리소스 사용량을 줄여준다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 HPS 및 상기 제2 HPS는 적응형 루프 필터(ALF) HPS, 크로마 스케일링과의 루마 매핑(LMCS) HPS, 스케일링 리스트 파라미터 HPS, 또는 이것들의 조합을 포함한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 프로세서가 복수의 HPS를 상기 비트스트림으로 인코딩하는 단계를 더 포함하며, 상기 복수의 HPS는 상기 제1 HPS 및 상기 제2 HPS를 포함하며, 상기 복수의 HPS 각각은 상기 복수의 HPS 중 다른 HPS로부터 코딩 툴 파라미터를 참조하는 것이 제한된다. 일부 시스템에서, 현재 HPS는 이전 HPS를 참조하여 코딩 파라미터를 상속할 수 있다. 이론적으로 이것은 현재 HPS와 이전 HPS 간의 차이만 현재 HPS가 포함하도록 허용한다. 그러나 실제로 이 접근 방식은 종종 긴 상속 체인을 생성하므로, 후속 HPS가 이전 HPS를 다시 참조할 수 있는 한 디코더는 버퍼에 많은 수의 이전 HPS를 유지해야 한다. 이로 인해 버퍼 메모리 문제가 발생하고 HPS가 전송 중에 손실될 경우 코딩 오류가 발생할 가능성이 높아진다. 본 개시의 일부 관점은 각각의 HPS가 다른 HPS를 참조하지 않고 모든 관련 코딩 파라미터를 포함하도록 요구함으로써 이 문제를 해결한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 HPS는 임시 식별자(ID)와 연관된 액세스 유닛에 포함되고, 상기 제1 HPS는 상기 제1 HPS를 포함하는 상기 액세스 유닛과 연관된 상기 임시 ID를 포함한다. 일례에서, 각 HPS는 HPS를 포함하는 액세스 유닛과 동일한 임시 ID를 유지해야 한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 슬라이스는 제1 픽처로 분할되고, 상기 제1 픽처는 임시 식별자(ID)와 연관되며, 상기 제1 HPS는 상기 픽처와 연관된 상기 임시 ID를 포함한다. 일부 예들에서, 각 HPS는 HPS를 참조하는 제1 슬라이스와 연관된 픽처와 동일한 임시 ID를 유지해야 한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 상기 제1 HPS 및 상기 제2 HPS를 포함하는 복수의 HPS가 인코딩되고, 각각의 상기 복수의 HPS 및 각각의 상기 슬라이스는 복수의 임시 ID 중 하나와 연관되며, 제1 임시 ID를 가진 각각의 슬라이스는 상기 제1 임시 ID보다 큰 제2 임시 ID로 임의의 HPS를 참조하는 것이 제한된다. 일부 예에서, 픽처 및 슬라이스의 비트스트림은 복수의 임시 ID 중 하나(예를 들어, 3 개 중 하나)와 연관될 수 있다. 프레임 레이트가 높은 데이터 항목은 낮은 프레임 레이트가 렌더링될 때 무시될 수 있다. 이 예에서, 임시 ID가 더 높고 그에 따라 프레임 레이트가 높을 때 슬라이스가 HPS를 참조하는 것을 방지한다. 이 접근 방식은 슬라이스의 낮은 프레임 레이트가 렌더링될 때 무시되는 높은 프레임 레이트 HPS를 슬라이스가 참조하지 않도록 한다. 이렇게 하면 HPS가 실제로 슬라이스에서 사용 가능하고 프레임 레이트 불일치로 인해 무시되지 않도록 할 수 있다.
실시예에서, 본 개시는 비디오 코딩 장치를 포함하며, 상기 장치는: 프로세서, 상기 프로세서에 결합된 수신기, 상기 프로세서에 결합된 메모리 및 상기 프로세서에 결합된 전송기를 포함하며, 상기 프로세서, 수신기, 메모리 및 전송기는 제1항 내지 제12항 중 어느 한 항의 방법을 수행하도록 구성되어 있다.
실시예에서, 본 개시는 비 일시적 컴퓨터 판독 가능형 매체를 포함하며, 상기 매체는 비디오 코딩 장치가 사용하기 위한 컴퓨터 프로그램 제품을 포함하며, 프로세서에 의해 실행될 때 상기 비디오 코딩 장치로 하여금 선행의 관점 중 어느 하나의 방법을 수행하도록 상기 컴퓨터 프로그램 제품은 상기 비 일시적 컴퓨터 판독 가능형 매체에 저장된 실행 가능형 명령을 포함한다.
실시예에서, 본 개시는 디코더를 포함하며, 상기 디코더는: 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 헤더 파라미터 세트(header parameter set, HPS), 제2 유형의 코딩 툴 파라미터를 포함하는 제2 HPS, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 포함하는 비트스트림을 수신하기 위한 수신 수단; 상기 슬라이스 헤더가 상기 제1 HPS에 대한 제1 레퍼런스 및 상기 제2 HPS에 대한 제2 레퍼런스를 포함하는 것으로 결정하기 위한 결정 수단; 상기 슬라이스 헤더가 제1 레퍼런스 및 제2 레퍼런스를 포함한다는 결정에 기초하여 상기 제1 유형의 코딩 툴 파라미터 및 상기 제2 유형의 코딩 툴 파라미터를 사용하여 상기 슬라이스를 디코딩하기 위한 디코딩 수단; 및 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 슬라이스를 포워딩하기 위한 포워딩 수단을 포함한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 디코더는 선행 관점 중 임의의 관점의 방법을 수행하도록 추가로 구성된다.
실시예에서, 본 개시는 인코더를 제공하며, 상기 인코더는: 복수의 픽처를 복수의 슬라이스로 분할하기 위한 분할 수단; 상기 복수의 슬라이스를 비트스트림을 인코딩하고 - 상기 슬라이스는 적어도 제1 유형의 코딩 툴 파라미터에 기초한 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩됨 - ; 제1 헤더 파라미터 세트(HPS) 및 제2 HPS를 상기 비트스트림으로 인코딩하며 - 상기 제1 HPS는 상기 제1 유형의 코딩 툴 파라미터를 포함하고 상기 제2 HPS는 상기 제2 유형의 코딩 툴 파라미터를 포함함 - ; 그리고 상기 복수의 슬라이스 중 제1 슬라이스의 인코딩을 설명하는 상기 비트스트림으로 슬라이스 헤더를 인코딩하기 위한 인코딩 수단 - 상기 슬라이스 헤더는 상기 제1 HPS에 대한 제1 레퍼런스 및 상기 제2 HPS에 대한 제1 레퍼런스를 포함함 - ; 및 디코더와의 통신을 위해 상기 비트스트림을 저장하기 위한 저장 수단을 포함한다.
선택적으로, 선행의 관점 중 어느 하나에서, 관점의 다른 구현이 제공되며, 여기서 인코더는 선행 관점 중 임의의 관점의 방법을 수행하도록 추가로 구성된다.
명확성을 위해, 전술한 실시예 중 어느 하나는 본 개시의 범위 내에서 새로운 실시예를 생성하기 위해 다른 전술한 실시예 중 임의의 하나 이상과 조합될 수 있다.
이들 및 다른 특징은 첨부된 도면 및 청구 범위와 함께 취해진 다음의 상세한 설명으로부터 보다 명확하게 이해될 것이다.
본 개시의 보다 완전한 이해를 위해, 첨부된 도면 및 상세한 설명과 관련하여 취해진 다음의 간단한 설명이 참조되며, 여기서 유사한 참조 번호는 유사한 부분을 나타낸다.
도 1은 비디오 신호를 코딩하는 예시적인 방법의 흐름도이다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템의 개략도이다.
도 3은 예시적인 비디오 인코더를 예시하는 개략도이다.
도 4는 예시적인 비디오 디코더를 예시하는 개략도이다.
도 5는 헤더 파라미터 세트(header parameter set, HPS)를 갖는 인코딩된 비디오 시퀀스를 포함하는 예시적인 비트스트림을 예시하는 개략도이다.
도 6은 시간적 스케일링을 위한 예시적인 메커니즘을 예시하는 개략도이다.
도 7은 예시적인 비디오 코딩 장치의 개략도이다.
도 8은 HPS를 사용하여 비디오 시퀀스를 비트스트림으로 인코딩하는 예시적인 방법의 흐름도이다.
도 9는 HPS를 사용하여 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법의 흐름도이다.
도 10은 HPS를 사용하여 비트스트림에서 이미지의 비디오 시퀀스를 코딩하기 위한 예시적인 시스템의 개략도이다.
하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는지에 관계없이 임의의 수의 기술을 사용하여 구현될 수 있다는 것을 처음부터 이해해야 한다. 본 개시는 본 명세서에 예시되고 설명된 예시적인 설계 및 구현을 포함하여 아래에 예시된 예시적인 구현, 도면 및 기술로 제한되지 않아야 하며, 등가물의 전체 범위와 함께 첨부된 청구항의 범위 내에서 수정될 수 있다.
본 명세서에서는 적응형 루프 필터(Adaptive Loop Filter, ALF), 코딩 트리 블록(Coding Tree Block, CTB), 코딩 트리 유닛(Coding Tree Unit, CTU), 코딩 유닛(Coding Unit, CU), 코딩된 비디오 시퀀스(Coding Video Sequence, CVS), 하이퍼텍스트 전송 프로토콜을 통한 동적 적응 스트리밍(Dynamic Adaptive Streaming over Hypertext transfer protocol, DASH), 공동 비디오 전문가 팀(Joint Video Experts Team, JVET), 모션-제약 타일 세트(Motion-Constrained Tile Set, MCTS), 최대 트랜스퍼 유닛(Maximum Transfer Unit, MTU), 네트워크 추상 계층 NAL(Network Abstraction Layer), 픽처 순서 카운트(Picture Order Count, POC), 원시 바이트 시퀀스 페이로드(Raw Byte Sequence Payload, RBSP), 샘플 적응 오프셋(Sample Adaptive Offset, SAO), 시퀀스 파라미터 세트(Sequence Parameter Set, SPS), 다목적 비디오 코딩(Versatile Video Coding, VVC) 및 작업 초안(Working Draft, WD)과 같은 다음 머리문자가 사용된다.
데이터 손실을 최소화하면서 비디오 파일의 크기를 줄이기 위해 많은 비디오 압축 기술을 사용할 수 있다. 예를 들어, 비디오 압축 기술은 비디오 시퀀스에서 데이터 중복성을 감소 또는 제거하기 위해 공간(예를 들어, 인트라-픽처) 예측 및/또는 시간적(예를 들어, 인터-픽처) 예측을 수행하는 것을 포함할 수 있다. 블록 기반 비디오 코딩의 경우, 비디오 슬라이스(예를 들어, 비디오 픽처 또는 비디오 픽처의 일부)는 비디오 블록으로 분할될 수 있으며, 이는 트리 블록, 코딩 트리 블록(coding tree block, CTB), 코딩 트리 유닛(coding tree unit, CTU), 코딩 단위(coding unit, CU) 및/또는 코딩 노드라고도 할 수 있다. 픽처의 인트라 코딩(I) 슬라이스의 비디오 블록은 동일한 픽처의 인접 블록에 있는 참조 샘플에 대한 공간 예측을 사용하여 코딩된다. 픽처의 인터 코딩된 단방향 예측(P) 또는 양방향 예측(B) 슬라이스의 비디오 블록은 동일한 픽처의 인접 블록에 있는 참조 샘플에 대한 공간 예측 또는 다른 참조 픽처의 참조 샘플에 대한 시간적 예측을 사용하여 코딩될 수 있다. 픽처는 프레임 및/또는 이미지로 지칭될 수 있고, 참조 픽처는 참조 프레임 및/또는 참조 이미지로 지칭될 수 있다. 공간적 또는 시간적 예측은 이미지 블록을 나타내는 예측 블록을 생성한다. 잔여 데이터는 원본 이미지 블록과 예측 블록 간의 픽셀 차이를 나타낸다. 따라서, 인터 코딩된 블록은 예측 블록을 형성하는 참조 샘플의 블록을 가리키는 모션 벡터 및 코딩된 블록과 예측 블록의 차이를 나타내는 잔여 데이터에 따라 인코딩된다. 인트라 코딩된 블록은 인트라 코딩 모드 및 잔여 데이터에 따라 인코딩된다. 추가 압축을 위해, 잔여 데이터는 픽셀 도메인에서 변환 도메인으로 변환될 수 있다. 이로 인해 양자화될 수 있는 잔여 변환 계수가 생성된다. 양자화된 변환 계수는 초기에 2 차원 어레이로 배열될 수 있다. 양자화된 변환 계수는 변환 계수의 1 차원 벡터를 생성하기 위해 스캔될 수 있다. 엔트로피 코딩은 더 많은 압축을 달성하기 위해 적용될 수 있다. 이러한 비디오 압축 기술은 아래에서 자세히 설명한다.
인코딩된 비디오가 정확하게 디코딩될 수 있음을 보장하기 위해, 비디오는 대응하는 비디오 코딩 표준에 따라 인코딩 및 디코딩된다. 비디오 코딩 표준에는 국제통신연합(International Telecommunication Union, ITU) 표준화 부문(Standardization Sector)(ITU-T) H.261, ISO/IEC 표준화를 위한 국제기구/국제전자기술 위원회(International Organization for Standardization/International Electrotechnical Commission) 동영상 전문가 그룹(Motion Picture Experts Group, MPEG)-1 Part 2, ITU-T H.262 또는 ISO/IEC MPEG-2 Part 2,, ITU-T H.263, ISO/IEC MPEG-4 Part 2, ITU-T H.264 또는 ISO/IEC MPEG-4 Part 10라고도 하는 고급 비디오 코딩(Advanced Video Coding, AVC), 및 ITU-T H.265 또는 MPEG-H Part 2라고도 하는 고효율 비디오 코딩(High Efficiency Video Coding, HEVC)이 포함된다. AVC에는 스케일러블 비디오 코딩(Scalable Video Coding, SVC), 멀티뷰 비디오 코딩(Multiview Video Coding, MVC) 및 멀티뷰 비디오 코딩 플러스 깊이(MVC+D) 및 3 차원(3D) AVC(3D-AVC)와 같은 확장이 포함된다. HEVC에는 스케일러블 HEVC(Scalable HEVC)(SHVC), 멀티뷰 HEVC(MV-HEVC) 및 3D HEVC(3D-HEVC)와 같은 확장이 포함된다. ITU-T와 ISO/IEC의 공동 비디오 전문가 팀(JVET)은 버서타일 비디오 코딩(Versatile Video Coding, VVC)라고 하는 비디오 코딩 표준을 개발하기 시작했다. VVC는 알고리즘 설명, VVC WD의 인코더 측 설명 및 참조 소프트웨어를 제공하는 JVET-L1001-v1 및 JVET-K1002-v3을 포함하는 작업 초안(Working Draft, WD)에 포함되어 있다.
비디오 이미지를 코딩하기 위해 이미지가 먼저 분할되고 분할이 비트스트림으로 코딩된다. 다양한 픽처 분할 체계를 사용할 수 있다. 예를 들어, 이미지는 정규 슬라이스, 종속 슬라이스, 타일 및/또는 웨이브프론트 병렬 프로세싱(Wavefront Parallel Processing, WPP)에 따라 분할될 수 있다. 단순화를 위해 HEVC는 인코더를 제한하여 비디오 코딩을 위해 슬라이스를 CTB 그룹으로 분할할 때 정규 슬라이스, 종속 슬라이스, 타일, WPP 및 이들의 조합만 사용할 수 있도록 한다. 이러한 파티셔닝은 최대 전송 유닛(Maximum Transfer Unit, MTU) 크기 일치, 병렬 처리 및 종단 간 지연 감소를 지원하기 위해 적용될 수 있다. MTU는 단일 패킷으로 전송할 수 있는 최대 데이터 양을 나타낸다. 패킷 페이로드가 MTU를 초과하는 경우 해당 페이로드는 조각화라는 프로세스를 통해 두 개의 패킷으로 분할된다.
단순히 슬라이스라고도 하는 정규 슬라이스는 루프 필터링 동작으로 인한 일부 상호 의존성에도 불구하고 동일한 인-픽처의 다른 정규 슬라이스와 독립적으로 재구성될 수 있는 이미지의 분할된 부분이다. 각 정규 슬라이스는 전송을 위해 자체 네트워크 추상 계층(Network Abstraction Layer, NAL) 단위로 캡슐화된다. 또한, 인-픽처 예측(인트라 샘플 예측, 모션 정보 예측, 코딩 모드 예측) 및 슬라이스 경계를 통한 엔트로피 코딩 종속성은 독립적인 재구성을 지원하기 위해 디스에이블될 수 있다. 이러한 독립적인 재구성은 병렬화를 지원한다. 예를 들어, 일반적인 슬라이스 기반 병렬화는 최소한의 인터-프로세서 또는 인터-코어 통신을 사용한다. 그러나 각 정규 슬라이스는 독립적이므로 각 슬라이스는 별도의 슬라이스 헤더와 연결된다. 정규 슬라이스를 사용하면 각 슬라이스에 대한 슬라이스 헤더의 비트 비용과 슬라이스 경계에 걸친 예측 부족으로 인해 상당한 코딩 오버헤드가 발생할 수 있다. 또한 MTU 크기 요구 사항에 대한 일치를 지원하기 위해 정규 슬라이스를 사용할 수 있다. 특히, 정규 슬라이스는 별도의 NAL 단위로 캡슐화되고 독립적으로 코딩될 수 있으므로, 각 정규 슬라이스는 슬라이스가 여러 패킷으로 분할되는 것을 방지하기 위해 MTU 방식의 MTU보다 작아야 한다. 따라서 병렬화의 목표와 MTU 크기 일치의 목표는 인-픽처의 슬라이스 레이아웃에 모순되는 요구를 둘 수 있다.
종속 슬라이스는 정규 슬라이스와 유사하지만 슬라이스 헤더가 짧아지고 인트라-픽처 예측을 깨지 않고 이미지 트리 블록 경계를 분할할 수 있다. 따라서, 종속 슬라이스는 전체 정규 슬라이스의 인코딩이 완료되기 전에 정규 슬라이스의 일부가 전송되도록 허용함으로써 감소된 종단 간 지연(end-to-end delay)을 제공하는 정규 슬라이스가 다수의 NAL 단위로 단편화될 수 있게 한다.
타일은 타일의 열과 행을 생성하는 수평 및 수직 경계에 의해 생성된 이미지의 분할된 부분이다. 타일은 래스터 스캔 순서(오른쪽에서 왼쪽 그리고 위에서 아래로)로 코딩될 수 있다. CTB의 스캔 순서는 타일 내에서 로컬이다. 따라서 제1 타일의 CTB는 다음 타일의 CTB로 진행하기 전에 래스터 스캔 순서로 코딩된다. 정규 슬라이스와 마찬가지로 타일은 엔트로피 디코딩 종속성(entropy decoding dependencies)뿐만 아니라 인-픽처 예측 종속성(in-picture prediction dependencies)을 깨뜨린다. 그러나 타일은 개별 NAL 단위에 포함되지 않을 수 있으므로 MTU 크기 일치에 타일을 사용할 수 없다. 각 타일은 하나의 프로세서/코어에 의해 처리될 수 있으며, 인접 타일을 디코딩하는 프로세싱 유닛 간의 인-픽처 예측에 사용되는 인터-프로세서/인터-코어 통신은 (인접 타일이 동일한 슬라이스일 때) 공유 슬라이스 헤더를 전달하는 것과 재구성된 샘플 및 메타데이터의 공유와 관련된 루프 필터링 수행하는 것으로 제한될 수 있다. 하나 이상의 타일이 슬라이스에 포함되는 경우, 슬라이스의 제1 엔트리 포인트 오프셋을 제외한 각 타일에 대한 엔트리 포인트 바이트 오프셋이 슬라이스 헤더에서 시그널링될 수 있다. 각 슬라이스 및 타일에 대해 다음 조건 중 하나 이상이 충족되어야 한다: 1) 슬라이스의 모든 코딩된 트리 블록이 동일한 타일에 속하고; 그리고 2) 타일의 모든 코딩된 트리 블록은 동일한 슬라이스에 속한다.
WPP에서 이미지는 단일 행의 CTB로 분할된다. 엔트로피 디코딩 및 예측 메커니즘은 다른 행에 있는 CTB의 데이터를 사용할 수 있다. 병렬 처리는 CTB 행의 병렬 디코딩을 통해 가능하다. 예를 들어, 현재 행은 이전 행과 병렬로 디코딩될 수 있다. 그러나 현재 행의 디코딩은 이전 행의 디코딩 과정에서 2 개의 CTB만큼 지연된다. 이 지연은 현재 CTB가 코딩되기 전에 현재 행에서 현재 CTB의 위 CTB와 관련된 데이터 및 위와 오른쪽의 CTB와 관련된 데이터를 사용할 수 있도록 한다. 이 접근 방식은 그래픽으로 표시될 때 웨이브프론트로 나타난다. 이 시차적 시작(staggered start)은 이미지에 CTB 행이 포함된 만큼의 프로세서/코어까지 병렬화할 수 있다. 픽처 내의 인접한 트리 블록 행 사이의 인-픽처 예측이 허용되기 때문에, 인-픽처 예측을 가능하게 하는 인터-프로세서/인터-코어 통신이 상당할 수 있다. WPP 분할은 NAL 단위 크기를 고려한다. 따라서 WPP는 MTU 크기 일치를 지원하지 않는다. 그러나 특정 코딩 오버헤드가 있는 WPP와 함께 정규 슬라이스를 사용하여 원하는대로 MTU 크기 일치를 구현할 수 있다.
타일은 그림을 타일 열과 행으로 분할하는 수평 및 수직 경계를 정의한다. CTB의 스캔 순서는 픽처의 타일 래스터 스캔 순서에서 다음 타일의 좌측 상단 CTB를 디코딩하기 전에 타일 내에서 로컬로 변경될 수 있다. 로컬 스캔 순서는 타일의 CTB 래스터 스캔 순서를 나타낸다. 정규 슬라이스와 마찬가지로 타일은 엔트로피 디코딩 종속성뿐만 아니라 인-픽처 예측 종속성을 깨뜨릴 수 있다. 그러나 타일은 개별 NAL 단위에 포함되지 않을 수 있다. 따라서 타일은 MTU 크기 일치에 사용되지 않을 수 있다. 각 타일은 하나의 프로세서/코어에서 처리할 수 있다. 이웃 타일들을 디코딩하는 프로세싱 유닛들 사이의 인-픽처 예측에 사용되는 인터-프로세서/인터-코어 통신은 슬라이스가 하나 이상의 타일에 걸쳐 있는 경우 공유된 슬라이스 헤더를 전달하는 것으로 제한될 수 있다. 인터-프로세서/인터-코어 통신은 또한 재구성된 샘플 및 메타데이터의 공유와 관련된 루프 필터링을 위해 사용될 수 있다. 하나 이상의 타일 또는 WPP 세그먼트가 슬라이스에 포함되는 경우, 슬라이스의 제1 타일이 아닌 각 타일 또는 WPP 세그먼트에 대한 엔트리 포인트 바이트 오프셋이 슬라이스 헤더에서 시그널링될 수 있다. 단순성을 지원하기 위해 4 개의 서로 다른 픽처 분할 방식의 적용에 대한 제한이 적용될 수 있다. 예를 들어, 코딩된 비디오 시퀀스(coded video sequence, CVS)는 HEVC에 지정된 대부분의 프로필에 대해 타일과 웨이브프론트를 모두 포함하지 않을 수 있다. 각 슬라이스 및 타일에 대해 다음 조건 중 하나 또는 둘 모두가 충족될 수도 있다. 슬라이스의 모든 코딩된 트리 블록은 동일한 타일에 속할 수 있고, 타일의 모든 코딩된 트리 블록은 동일한 슬라이스에 속할 수 있다. 또한 웨이브프론트 세그먼트에는 정확히 하나의 CTB 행이 포함될 수 있다. 또한 WPP가 사용 중일 때 CTB 행 내에서 시작하는 슬라이스는 동일한 CTB 행에서 끝나야 한다.
VVC에는 타일 및 타일 그룹 픽처 분할 방식이 포함될 수 있다. VVC의 타일은 HEVC의 타일과 동일할 수 있다. VVC는 슬라이스 대신 타일 그룹을 사용할 수 있다. 슬라이스는 CTU 그룹을 포함하는 것으로 정의되고 타일 그룹은 타일 그룹을 포함하는 것으로 정의된다. 코딩된 픽처는 하나 이상의 슬라이스(또는 타일 그룹)로 구성될 수 있다. 각 슬라이스/타일 그룹에는 슬라이스 디코딩에 사용되는 정보를 나타내는 구문 요소가 포함된 슬라이스 헤더가 있다. 각 슬라이스 헤더에는 슬라이스만 디코딩하기 위한 정보가 포함될 수 있다. 그러나 슬라이스 헤더의 정보는 동일한 그림의 다른 슬라이스에 대해 동일할 수 있다. 이는 코딩 툴이 픽처 레벨에서 작동할 수 있으므로 인-픽처의 모든 슬라이스에 대한 파라미터가 동일할 수 있기 때문이다. 이러한 상황으로 인해 슬라이스 헤더에 중복 정보가 발생할 수 있다.
중복 슬라이스 헤더 정보와 관련된 문제를 극복하기 위해 APS로도 알려진 헤더 파라미터 세트(HPS)가 사용될 수 있다. HPS에는 여러 슬라이스에서 공유하는 슬라이스 수준 정보가 포함될 수 있다. HPS는 인코더에 의해 생성될 수 있고 디코더에서 대응하는 슬라이스를 디코딩할 때 사용되는 코딩 툴 파라미터를 포함할 수 있다. 일부 시스템은 HPS 및 참조 HPS를 사용하여 HPS 체계를 구현한다. 이 체계에서 코딩 순서의 초기 HPS에는 해당 슬라이스에 대한 모든 관련 코딩 툴 파라미터가 포함된다. 이러한 파라미터가 후속 슬라이스에 대해 변경되면 후속 HPS에는 변경된 파라미터만 포함된다. 그런 다음 후속 HPS는 초기 HPS를 다시 참조한다. 따라서 초기 HPS는 후속 HPS에 대한 참조 HPS 역할을 한다. 그런 다음 추가 HPS를 사용하여 이전 HPS 등을 참조할 수 있다.
이러한 방식으로 참조하는 HPS에는 몇 가지 문제가 있다. 예를 들어 HPS가 다른 HPS를 참조하도록 허용하면 복잡한 메커니즘이 생성된다. 특정 예로서, 이 메커니즘은 일련의 HPS 참조를 생성할 수 있다. 비디오 데이터를 포함하는 비트스트림에서 사용되는 HPS 참조 수에 대한 명시적인 제한이 없을 수 있으므로 이러한 접근 방식은 HPS의 긴 체인을 초래할 수 있다. 이러한 방식을 관리하기 위해 디코더는 가능한 후속 참조를 준비하기 위해 디코딩된 픽처 버퍼에서 HPS에 임의의 숫자를 유지해야 할 수 있다. 이 문제를 해결하기 위해 HPS 재설정 메커니즘을 추가하여 확장된 HPS 참조 체인을 끊을 수 있으며, 이로 인해 복잡성이 추가된다. 또한 이 접근 방식은 잠재적으로 오류가 발생하기 쉽다. 예를 들어, 전송 오류로 인해 초기 HPS가 손실된 경우 후속 참조 HPS에는 해당 슬라이드를 디코딩하기에 충분한 데이터가 포함되지 않는다. 또한 이 접근 방식은 비트스트림에 많은 HPS를 생성할 수 있다. 그러나 HPS 식별자(ID)의 수는 큰 HPS ID 값을 코딩하지 않도록 제한될 수 있다. 따라서 HPS ID는 비트스트림에서 재사용될 수 있다. 예를 들어 HPS가 둘 이상의 참조 HPS에서 사용하는 HPS ID를 참조하는 경우 모호성이 발생할 수 있다. 또한, HPS는 대역 내 시그널링(in-band signaling)으로 지칭되는 코딩된 비트스트림 내에서 시그널링될 수 있다. HPS는 메타데이터 정보와 같은 외부 메커니즘에 의해 시그널링될 수도 있다. 이러한 시그널링을 대역 외 시그널링(out-of-band signaling)이라고 한다. 이러한 이중 신호 메커니즘은 HPS 체계의 복잡성을 더욱 증가시킨다.
본 명세서에는 HPS 시그널링의 복잡성을 감소시키기 위한 다양한 메커니즘이 개시된다. HPS는 최신 표준 문서에서 HPS라고 한다. 따라서, 다음 개시는 일반적으로 논의의 명확성을 위해 HPS를 지칭한다. 그러나 HPS 및 APS라는 용어는 대부분의 측면에서 서로 바꿔서 사용할 수 있다. 본 개시는 HPS가 다른 HPS를 참조하는 것을 방지함으로써 HPS의 복잡성과 오류가 발생하기 쉬운 특성을 제거한다. HPS는 다른 HPS를 참조하지 않을 수 있으므로 단일 HPS가 손실되면 현지화된 오류만 발생한다. 또한, 디코더는 후속 HPS가 이전 HPS를 대체하므로 메모리에서 HPS를 유지하는 데 필요하지 않을 수 있다. 특정 예로서, HPS 유형이 HPS에 포함된 코딩 툴 파라미터의 유형을 나타내는 경우 여러 유형의 HPS가 사용될 수 있다. 이러한 HPS 유형은 적응형 루프 필터(ALF) HPS, 채도 스케일링(LMCS) HPS를 사용한 루마 매핑 및/또는 스케일링 목록 파라미터 HPS를 포함할 수 있다. 이러한 예에서, 제1 유형의 현재 HPS가 디코더에 의해 획득될 때, 현재 HPS가 그러한 이전 HPS를 대체하기 때문에 제1 유형의 이전 HPS는 폐기될 수 있다. 또한, 여러 유형의 HPS를 허용하기 위해, 단일 슬라이스 헤더는 해당 슬라이스에 대한 모든 코딩 툴 파라미터를 참조하기 위해 하나 이상의 HPS를 참조할 수 있다. 이것은 슬라이스 헤더가 단일 HPS를 참조한 다음 다른 HPS를 참조하도록 허용하는 다른 체계와 대조된다. 따라서 단일 슬라이스 헤더가 여러 HPS를 참조하도록 허용하면 HPS 참조 체인을 피하는 구현이 된다. 또한, 본 개시는 HPS가 시간적 스케일링으로 동작할 수 있도록 하는 메커니즘을 설명한다. 시간적 스케일링에서, 비트스트림은 디코더 및/또는 사용자가 복수의 프레임 레이트 중에서 선택할 수 있도록 구성된다. 이러한 방식을 구현하기 위해 픽처/프레임에는 각각 임시 ID가 할당된다. 임시 ID가 낮은 프레임은 각 프레임 레이트로 표시된다. 더 높은 임시 ID를 가진 프레임은 더 낮은 프레임 레이트에 대해서는 건너뛰고 더 높은 프레임 레이트에 대해서만 표시된다. 이러한 시간적 스케일링을 지원하기 위해 HPS에는 임시 ID가 할당된다. HPS는 HPS를 참조하는 제1 슬라이스를 포함하는 그림의 임시 ID를 수신할 수 있다. 다른 예들에서, HPS는 HPS를 포함하는 액세스 유닛의 임시 ID를 수신할 수 있다. 액세스 단위는 해당 픽처를 디코딩하기에 충분한 비디오 데이터를 포함하는 비트스트림 데이터 그룹이다. 시간적 스케일링을 추가로 지원하기 위해, 더 낮은 임시 ID와 연관된 슬라이스는 더 큰 임시 ID를 포함하는 HPS를 참조하지 못하도록 제한될 수 있다. 이렇게 하면 낮은 프레임 레이트 설정으로 인해 슬라이스가 시간적 스케일링으로 인해 무시되는 HPS를 참조하지 않도록 하므로 낮은 프레임 레이트에서 특정 슬라이스를 디코딩할 때 코딩 툴 파라미터를 사용할 수 없게 되는 것을 방지한다.
도 1은 비디오 신호를 코딩하는 예시적인 동작 방법(100)의 흐름도이다. 특히, 비디오 신호는 인코더에서 인코딩된다. 인코딩 프로세스는 비디오 파일 크기를 줄이기 위해 다양한 메커니즘을 사용하여 비디오 신호를 압축한다. 파일 크기가 작을수록 압축된 비디오 파일을 사용자에게 전송하는 동시에 관련 대역폭 오버헤드를 줄일 수 있다. 그런 다음 디코더는 압축된 비디오 파일을 디코딩하여 최종 사용자에게 표시할 원본 비디오 신호를 재구성한다. 디코딩 프로세스는 일반적으로 디코더가 비디오 신호를 일관되게 재구성할 수 있도록 인코딩 프로세스를 미러링한다.
단계 101에서, 비디오 신호가 인코더에 입력된다. 예를 들어, 비디오 신호는 메모리에 저장된 비 압축 비디오 파일일 수 있다. 다른 예로서, 비디오 파일은 비디오 카메라와 같은 비디오 캡처 장치에 의해 캡처될 수 있고 비디오의 라이브 스트리밍을 지원하도록 인코딩될 수 있다. 비디오 파일에는 오디오 성분과 비디오 성분이 모두 포함될 수 있다. 비디오 성분에는 일련의 이미지 프레임이 포함되어 있으며 순차적으로 볼 때 모션의 시각적인 인상을 준다. 프레임은 빛의 관점에서 표현되는 픽셀을 포함하며, 여기서는 루마 성분(또는 루마 샘플)이라고 하고 크로마 성분(또는 컬러 샘플)이라고 한다. 일부 예에서, 프레임은 또한 3 차원 보기를 지원하기 위해 깊이 값을 포함할 수 있다.
단계 103에서, 비디오는 블록으로 분할된다. 파티셔닝은 압축을 위해 각 프레임의 픽셀을 정사각형 및/또는 직사각형 블록으로 세분화하는 것을 포함한다. 예를 들어, 고효율 비디오 코딩(High Efficiency Video Coding, HEVC)(H.265 및 MPEG-H Part 2라고도 함)에서 프레임은 먼저 미리 정의된 크기(예를 들어, 64 픽셀 x 64 픽셀)의 블록인 코딩 트리 유닛(CTU)으로 나눌 수 있다. CTU에는 루마 및 크로마 샘플이 모두 포함되어 있다. 코딩 트리를 사용하여 CTU를 블록으로 분할하고 그런 다음 추가 인코딩을 지원하는 구성이 달성될 때까지 블록을 반복적으로 세분화할 수 있다. 예를 들어, 프레임의 루마 성분은 개별 블록이 상대적으로 균일한 조명 값(lighting values)을 포함할 때까지 세분화될 수 있다. 또한, 프레임의 크로마 성분은 개별 블록이 상대적으로 균일한 색상 값을 포함할 때까지 세분화될 수 있다. 따라서 분할 메커니즘은 비디오 프레임의 내용에 따라 달라진다.
단계 105에서, 단계 103에서 분할된 이미지 블록을 압축하기 위해 다양한 압축 메커니즘이 사용된다. 예를 들어, 인터 예측 및/또는 인트라-예측이 사용될 수 있다. 인터-예측은 공통 장면의 객체가 연속 프레임에 나타나는 경향이 있다는 사실을 활용하도록 설계된다. 따라서, 참조 프레임에서 객체를 묘사하는 블록은 인접한 프레임에서 반복적으로 설명될 필요가 없다. 구체적으로, 테이블과 같은 개체는 여러 프레임에 걸쳐 일정한 위치에 남아있을 수 있다. 따라서 테이블은 한 번 설명되고 인접 프레임은 참조 프레임을 다시 참조할 수 있다. 패턴 매칭 메커니즘은 여러 프레임에 걸쳐 객체를 매칭하기 위해 사용될 수 있다. 또한, 움직이는 객체는 예를 들어 객체 이동 또는 카메라 이동으로 인해 여러 프레임에 걸쳐 표현될 수 있다. 특정 예로서, 비디오는 여러 프레임에 걸쳐 화면을 가로 질러 움직이는 자동차를 보여줄 수 있다. 이러한 모션을 설명하기 위해 모션 벡터를 사용할 수 있다. 모션 벡터는 프레임에 있는 개체의 좌표에서 참조 프레임에 있는 개체의 좌표까지 오프셋을 제공하는 2 차원 벡터이다. 이와 같이 인터 예측은 현재 프레임의 이미지 블록을 참조 프레임의 해당 블록으로부터 오프셋을 나타내는 모션 벡터의 집합으로 인코딩할 수 있다.
인트라-예측은 공통 프레임의 블록을 인코딩한다. 인트라-예측은 루마 및 크로마 성분이 한 프레임에 클러스터되는 경향이 있다는 사실을 활용한다. 예를 들어, 나무의 일부에 있는 녹색 패치는 유사한 녹색 패치 옆에 위치하는 경향이 있다. 인트라-예측은 다중 방향 예측 모드(예를 들어, HEVC에서 33), 평면 모드 및 직류(direct current, DC) 모드를 사용한다. 방향 모드는 현재 블록이 해당 방향의 인접 블록 샘플과 유사/동일함을 나타낸다. 평면 모드는 행/열을 따라 일련의 블록(예를 들어, 평면)이 행 가장자리의 인접 블록을 기반으로 보간될 수 있음을 나타낸다. 사실상 평면 모드는 값을 변경할 때 상대적으로 일정한 기울기를 사용하여 행/열에 걸쳐 빛/색상이 부드럽게 전환됨을 나타낸다. DC 모드는 경계 평활화에 사용되며 블록이 방향 예측 모드의 각도 방향과 관련된 모든 인접 블록의 샘플과 관련된 평균값과 유사/동일함을 나타낸다. 따라서 인트라-예측 블록은 실제 값이 아닌 다양한 관계형 예측 모드 값으로 영상 블록을 나타낼 수 있다. 또한, 인터 예측 블록은 이미지 블록을 실제 값 대신 모션 벡터 값으로 나타낼 수 있다. 두 경우 모두 예측 블록은 경우에 따라 이미지 블록을 정확하게 표현하지 못할 수 있다. 모든 차이는 잔여 블록에 저장된다. 파일을 추가로 압축하기 위해 나머지 블록에 변환을 적용할 수 있다.
단계 107에서, 다양한 필터링 기술이 적용될 수 있다. HEVC에서 필터는 인-루프 필터링 방식에 따라 적용된다. 위에서 논의된 블록 기반 예측은 디코더에서 블록 이미지의 생성을 초래할 수 있다. 또한, 블록 기반 예측 방식은 블록을 인코딩한 후 나중에 참조 블록으로 사용하기 위해 인코딩된 블록을 재구성할 수 있다. 인-루프 필터링 체계는 노이즈 억제 필터, 디블로킹 필터, 적응형 루프 필터 및 샘플 적응 오프셋(sample adaptive offset, SAO) 필터를 블록/프레임에 반복적으로 적용한다. 이러한 필터는 이러한 차단 아티팩트를 완화하여 인코딩된 파일을 정확하게 재구성할 수 있다. 또한 이러한 필터는 재구성된 참조 블록에서 아티팩트를 완화하여 아티팩트가 재구성된 참조 블록을 기반으로 인코딩된 후속 블록에서 추가 아티팩트를 생성할 가능성을 줄인다.
일단 비디오 신호가 분할, 압축 및 필터링되면, 결과 데이터는 단계 109에서 비트스트림으로 인코딩된다. 비트스트림은 위에서 설명한 데이터뿐만 아니라 디코더에서 적절한 비디오 신호 재구성을 지원하기 위해 원하는 임의의 시그널링 데이터를 포함한다. 예를 들어, 그러한 데이터는 파티션 데이터, 예측 데이터, 잔여 블록, 및 코딩 명령을 디코더에 제공하는 다양한 플래그를 포함할 수 있다. 비트스트림은 요청 시 디코더를 향한 전송을 위해 메모리에 저장될 수 있다. 비트스트림은 또한 복수의 디코더를 향해 브로드캐스트 및/또는 멀티캐스트될 수 있다. 비트스트림의 생성은 반복적인 프로세스이다. 따라서, 단계 101, 단계 103, 단계 105, 단계 107 및 단계 109는 많은 프레임 및 블록에 걸쳐 연속적으로 및/또는 동시에 발생할 수 있다. 도 1에 표시된 순서는 명확성과 논의의 용이성을 위해 제시된 것이며, 비디오 코딩 프로세스를 특정 순서로 제한하려는 것이 아니다.
디코더는 비트스트림을 수신하고 단계(111)에서 디코딩 프로세스를 시작한다. 구체적으로, 디코더는 비트스트림을 대응하는 구문 및 비디오 데이터로 변환하기 위해 엔트로피 디코딩 방식을 사용한다. 디코더는 단계 111에서 프레임에 대한 파티션을 결정하기 위해 비트스트림으로부터의 구문 데이터를 사용한다. 파티셔닝은 단계 103에서 블록 파티셔닝의 결과와 일치해야 한다. 이제 단계 111에서 사용되는 엔트로피 인코딩/디코딩이 설명된다. 인코더는 입력 이미지(들)에서 값의 공간적 위치를 기반으로 여러 가능한 선택에서 블록 분할 방식을 선택하는 것과 같이 압축 프로세스 동안 많은 선택을 한다. 정확한 선택을 시그널링하는 것은 많은 빈(bin)을 사용할 수 있다. 본 명세서에서 사용된 바와 같이, 빈은 변수로 취급되는 이진 값(예를 들어, 컨텍스트에 따라 달라질 수 있는 비트 값)이다. 엔트로피 코딩을 사용하면 인코더가 특정 사례에 대해 명확하게 실행 불가능한 옵션을 버리고 허용 가능한 옵션 세트를 남길 수 있다. 그런 다음 각 허용 옵션에 코드 단어가 할당된다. 코드워드의 길이는 허용 가능한 옵션의 수를 기반으로 한다(예를 들어, 2 개의 옵션에 대해 하나의 빈, 3 ~ 4 개의 옵션에 대해 2 개의 빈 등). 그런 다음 인코더는 선택한 옵션에 대한 코드워드를 인코딩한다. 이 체계는 가능한 모든 옵션의 잠재적으로 큰 세트에서 선택을 고유하게 표시하는 것과 대조적으로 허용 가능한 옵션의 작은 하위 세트에서 선택을 고유하게 나타내기 위해 코드 단어가 원하는 만큼 크므로 코드 단어의 크기를 줄인다. 그런 다음 디코더는 인코더와 유사한 방식으로 허용 가능한 옵션 세트를 결정하여 선택을 디코딩한다. 허용 가능한 옵션 세트를 결정함으로써 디코더는 코드워드를 읽고 인코더가 선택한 사항을 결정할 수 있다.
단계 113에서 디코더는 블록 디코딩을 수행한다. 구체적으로, 디코더는 역변환을 사용하여 잔여 블록을 생성한다. 그런 다음 디코더는 분할에 따라 이미지 블록을 재구성하기 위해 잔여 블록 및 대응하는 예측 블록을 사용한다. 예측 블록은 단계 105에서 인코더에서 생성된 바와 같이 인트라-예측 블록 및 인터-예측 블록을 모두 포함할 수 있다. 그런 다음, 재구성된 이미지 블록은 단계 111에서 결정된 분할 데이터에 따라 재구성된 비디오 신호의 프레임으로 위치 결정된다. 단계 113은 또한 전술한 바와 같이 엔트로피 코딩을 통해 비트스트림에서 시그널링될 수 있다.
단계 115에서, 인코더에서 단계 107과 유사한 방식으로 재구성된 비디오 신호의 프레임에 대해 필터링이 수행된다. 예를 들어, 노이즈 억제 필터, 디블로킹 필터, 적응형 루프 필터 및 SAO 필터를 프레임에 적용하여 블로킹 아티팩트를 제거할 수 있다. 프레임이 필터링되면, 비디오 신호는 최종 사용자가 볼 수 있도록 단계 117에서 디스플레이로 출력될 수 있다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템(200)의 개략도이다. 구체적으로, 코덱 시스템(200)은 동작 방법(100)의 구현을 지원하는 기능을 제공한다. 코덱 시스템(200)은 인코더 및 디코더 모두에서 사용되는 구성 요소를 묘사하도록 일반화된다. 코덱 시스템(200)은 동작 방법(100)에서 단계 101 및 단계 103과 관련하여 논의된 바와 같이 비디오 신호를 수신하고 분할하며, 이는 분할된 비디오 신호(201)를 초래한다. 그런 다음 방법(100)에서 단계 105, 단계 107 및 단계 109와 관련하여 논의된 바와 같은 인코더로서 동작할 때 코덱 시스템(200)은 분할된 비디오 신호(201)를 코딩된 비트스트림으로 압축한다. 디코더로서 동작할 때, 코덱 시스템(200)은 동작에서 단계 111, 단계 113, 단계 115 및 단계 117에 관해 논의된 바와 같이 비트스트림으로부터 출력 비디오 신호를 생성한다. 코덱 시스템(200)은 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라-픽처 추정 컴포넌트(215), 인트라-픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 모션 추정 컴포넌트(221), 스케일링 및 역변환 컴포넌트(229), 필터 제어 분석 컴포넌트(227), 인-루프 필터 컴포넌트(225), 디코딩된 픽처 버퍼 컴포넌트(223) 및 헤더 포맷팅 및 컨텍스트 적응 이진 산술 코딩(CABAC) 컴포넌트(231)를 포함한다. 이러한 컴포넌트는 도시된 바와 같이 결합된다. 도 2에서 검은 색 선은 인코딩/디코딩할 데이터의 이동을 나타내고, 점선은 다른 구성 요소의 동작을 제어하는 제어 데이터의 이동을 나타낸다. 코덱 시스템(200)의 구성 요소는 모두 인코더에 존재할 수 있다. 디코더는 코덱 시스템(200)의 구성 요소들의 서브 세트를 포함할 수 있다. 예를 들어, 디코더는 인터-픽처 예측 구성 요소(217), 모션 보상 컴포넌트(219), 스케일링 및 역변환 구성 요소(229), 인-루프 필터 구성 요소(225), 및 디코딩된 픽처 버퍼 컴포넌트(223)를 포함할 수 있다. 이들 컴포넌트가 이제 설명된다.
분할된 비디오 신호(201)는 코딩 트리에 의해 픽셀 블록으로 분할된 캡처된 비디오 시퀀스이다. 코딩 트리는 다양한 분할 모드를 사용하여 픽셀 블록을 더 작은 픽셀 블록으로 세분화한다. 이 블록은 더 작은 블록으로 더 세분화될 수 있다. 블록은 코딩 트리에서 노드로 지칭될 수 있다. 더 큰 부모 노드는 더 작은 자식 노드로 분할된다. 노드가 세분화되는 횟수를 노드/코딩 트리의 깊이라고 한다. 분할된 블록은 경우에 따라 코딩 단위(CU)에 포함될 수 있다. 예를 들어 CU는 CU에 대한 대응하는 구문 명령과 함께 루마 블록, 빨간색 차이 크로마(Cr) 블록 및 파란색 차이 크로마(Cb) 블록을 포함하는 CTU의 하위 부분이 될 수 있다. 분할 모드는 적용된 분할 모드에 따라 노드를 각각 2 개, 3 개 또는 4 개의 자식 노드로 분할하는 데 사용되는 이진 트리(BT), 트리플 트리(TT) 및 쿼드 트리(QT)를 포함할 수 있다. 분할된 비디오 신호(201)는 압축을 위해 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라-픽처 추정 컴포넌트(215), 필터 제어 분석 컴포넌트(227) 및 모션 추정 컴포넌트(221)로 전달된다.
일반 코더 제어 컴포넌트(211)는 애플리케이션 제약에 따라 비디오 시퀀스의 이미지를 비트스트림으로 코딩하는 것과 관련된 결정을 내리도록 구성된다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 비트 레이트/비트스트림 크기 대 재구성 품질의 최적화를 관리한다. 이러한 결정은 저장 공간/대역폭 가용성 및 이미지 해상도 요청을 기반으로 할 수 있다. 일반 코더 제어 컴포넌트(211)는 또한 버퍼 언더런 및 오버런 문제를 완화하기 위해 전송 속도 측면에서 버퍼 활용을 관리한다. 이러한 문제를 관리하기 위해 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트에 의한 분할, 예측 및 필터링을 관리한다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 해상도를 증가시키고 대역폭 사용을 증가시키기 위해 압축 복잡도를 동적으로 증가시키거나 해상도 및 대역폭 사용을 감소시키기 위해 압축 복잡도를 감소시킬 수 있다. 따라서, 일반 코더 제어 컴포넌트(211)는 비디오 신호 재구성 품질과 비트 레이트 문제의 균형을 맞추기 위해 코덱 시스템(200)의 다른 컴포넌트를 제어한다. 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트의 동작을 제어하는 제어 데이터를 생성한다. 제어 데이터는 또한 헤더 포맷팅 및 CABAC 컴포넌트(231)로 전달되어 비트스트림에서 인코딩되어 디코더에서 디코딩을 위한 파라미터를 시그널링한다.
분할된 비디오 신호(201)는 또한 인터 예측을 위해 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)로 전송된다. 분할된 비디오 신호(201)의 프레임 또는 슬라이스는 다수의 비디오 블록으로 분할될 수 있다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 시간적 예측을 제공하기 위해 하나 이상의 참조 프레임에서 하나 이상의 블록에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 코덱 시스템(200)은 예를 들어 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택하기 위해 다중 코딩 패스를 수행할 수 있다.
모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 고도로 통합될 수 있지만, 개념적 목적을 위해 별도로 예시된다. 모션 추정 컴포넌트(221)에 의해 수행되는 모션 추정은 비디오 블록에 대한 모션을 추정하는 모션 벡터를 생성하는 프로세스이다. 예를 들어, 모션 벡터는 예측 블록에 대한 코딩된 객체의 변위를 나타낼 수 있다. 예측 블록은 픽셀 차이 측면에서 코딩할 블록과 밀접하게 일치하는 것으로 확인된 블록이다. 예측 블록은 참조 블록이라고도 할 수 있다. 이러한 픽셀 차이는 절대 차이의 합(SAD), 제곱 차이의 합(SSD) 또는 다른 차이 메트릭에 의해 결정될 수 있다. HEVC는 CTU, 코딩 트리 블록(CTB) 및 CU를 포함한 여러 코딩된 객체를 사용한다. 예를 들어 CTU는 CTB로 나눌 수 있으며, 그런 다음 CU에 포함되도록 CB로 나눌 수 있다. CU는 예측 데이터를 포함하는 예측 단위(PU) 및/또는 CU에 대한 변환된 잔여 데이터를 포함하는 변환 단위(TU)로서 인코딩될 수 있다. 모션 추정 컴포넌트(221)는 레이트 왜곡 최적화 프로세스의 일부로서 레이트 왜곡 분석을 사용함으로써 모션 벡터, PU 및 TU를 생성한다. 예를 들어, 모션 추정 컴포넌트(221)는 현재 블록/프레임에 대한 다수의 참조 블록, 다수의 모션 벡터 등을 결정할 수 있고, 최상의 레이트-왜곡 특성을 갖는 참조 블록, 모션 벡터 등을 선택할 수 있다. 최고의 레이트-왜곡 특성은 비디오 재구성 품질(예를 들어, 압축에 의한 데이터 손실량)과 코딩 효율성(예를 들어, 최종 인코딩 크기)의 균형을 맞춘다.
일부 예들에서, 코덱 시스템(200)은 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된 참조 픽처의 서브-정수 픽셀 위치에 대한 값을 계산할 수 있다. 예를 들어, 비디오 코덱 시스템(200)은 1/4 픽셀 위치, 1/8 픽셀 위치 또는 참조 픽처의 다른 분수 픽셀 위치의 값을 보간할 수 있다. 따라서, 모션 추정 컴포넌트(221)는 전체 픽셀 위치 및 부분 픽셀 위치에 대한 모션 검색을 수행하고 부분 픽셀 정밀도를 갖는 모션 벡터를 출력할 수 있다. 모션 추정 컴포넌트(221)는 PU의 위치를 참조 픽처의 예측 블록의 위치와 비교함으로써 인터 코딩된 슬라이스에서 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 모션 추정 컴포넌트(221)는 모션 보상 컴포넌트(219)에 대한 인코딩 및 모션을 위해 헤더 포맷 및 CABAC 컴포넌트(231)에 모션 데이터로서 계산된 모션 벡터를 출력한다.
모션 보상 컴포넌트(219)에 의해 수행되는 모션 보상은 모션 추정 컴포넌트(221)에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하거나 생성하는 것을 포함할 수 있다. 다시, 몇 가지 예에서 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 기능적으로 통합될 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신하면, 모션 보상 컴포넌트(219)는 모션 벡터가 가리키는 예측 블록을 찾을 수 있다. 잔여 비디오 블록은 코딩되는 현재 비디오 블록의 픽셀 값에서 예측 블록의 픽셀 값을 감산하여 픽셀 차이 값을 형성함으로써 형성된다. 일반적으로, 모션 추정 컴포넌트(221)는 루마 성분에 대한 모션 추정을 수행하고, 모션 보상 컴포넌트(219)는 크로마 성분 및 루마 성분 모두에 대해 루마 성분에 기초하여 계산된 모션 벡터를 사용한다. 예측 블록 및 잔여 블록은 변환 스케일링 및 양자화 컴포넌트(213)로 포워딩된다.
분할된 비디오 신호(201)는 또한 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)로 전송된다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 마찬가지로, 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)는 고도로 통합될 수 있지만 개념적 목적을 위해 별도로 설명되어 있다. 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)는 프레임 사이의 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)에 의해 수행되는 인터 예측에 대한 대안으로서 위에서 설명한 바와 같이 현재 프레임의 블록에 대한 현재 블록을 인트라-예측한다. 특히, 인트라-픽처 추정 컴포넌트(215)는 현재 블록을 인코딩하기 위해 사용할 인트라-예측 모드를 결정한다. 일부 예들에서, 인터-픽처 추정 컴포넌트(215)는 다수의 테스트된 인트라-예측 모드로부터 현재 블록을 인코딩하기 위해 적절한 인트라-예측 모드를 선택한다. 선택된 인트라-예측 모드는 인코딩을 위해 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩된다.
예를 들어, 인트라 픽처 추정 컴포넌트(215)는 테스트된 다양한 인트라-예측 모드에 대한 레이트 왜곡 분석을 이용하여 레이트-왜곡 값을 계산하고, 테스트된 모드 중에서 가장 좋은 레이트-왜곡 특성을 갖는 인트라-예측 모드를 선택한다. 레이트-왜곡 분석은 일반적으로 인코딩된 블록을 생성하기 위해 인코딩된 원래의 인코딩되지 않은 블록과 인코딩된 블록 간의 왜곡 양뿐만 아니라 인코딩된 블록을 생성하는 데 사용되는 비트레이트(예를 들어, 비트 수)를 결정한다. 인트라-픽처 추정 컴포넌트(215)는 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산하여 블록에 대한 최상의 레이트-왜곡 값을 나타내는 인트라-예측 모드를 결정한다. 또한, 인터-픽처 추정 컴포넌트(215)는 레이트 왜곡 최적화(RDO)에 기초한 깊이 모델링 모드(DMM)를 사용하여 깊이 맵의 깊이 블록을 코딩하도록 구성될 수 있다.
인-픽처 예측 컴포넌트(217)는 인코더에서 구현될 때 인-픽처 추정 컴포넌트(215)에 의해 결정된 선택된 인트라-예측 모드에 기초하여 예측 블록으로부터 잔여 블록을 생성하거나 디코더에서 구현될 때 비트스트림으로부터 잔여 블록을 읽을 수 있다. 잔여 블록에는 예측 블록과 원래 블록 사이의 값 차이가 행렬로 표시된다. 그런 다음 잔여 블록은 변환 스케일링 및 양자화 구성 요소(213)로 포워딩된다. 인터-픽처 추정 구성 요소(215) 및 인터-픽처 예측 구성 요소(217)는 루마 성분 및 크로마 성분 모두에서 동작할 수 있다.
변환 스케일링 및 양자화 컴포넌트(213)는 잔여 블록을 더 압축하도록 구성된다. 변환 스케일링 및 양자화 컴포넌트(213)는 이산 코사인 변환(DCT), 이산 사인 변환(DST) 또는 개념적으로 유사한 변환과 같은 변환을 잔여 블록에 적용하여 잔여 변환 계수 값을 포함하는 비디오 블록을 생성한다. 웨이블릿 변환, 정수 변환, 서브 밴드 변환 또는 기타 유형의 변환도 사용할 수 있다. 변환은 잔여 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 예를 들어 주파수에 기초하여 변환된 잔여 정보를 스케일링하도록 구성된다. 이러한 스케일링은 스케일 팩터를 잔여 정보에 적용하여 상이한 주파수 정보가 상이한 입도에서 양자화되도록 하는 것을 포함하며, 이는 재구성된 비디오의 최종 시각적 품질에 영향을 미칠 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 비트 레이트를 더 감소시키기 위해 변환 계수를 양자화하도록 구성된다. 양자화 프로세스는 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 변환 스케일링 및 양자화 컴포넌트(213)는 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 양자화된 변환 계수는 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩되어 비트스트림으로 인코딩된다.
스케일링 및 역변환 컴포넌트(229)는 모션 추정을 지원하기 위해 변환 스케일링 및 양자화 컴포넌트(213)의 역 동작을 적용한다. 스케일링 및 역변환 컴포넌트(229)는, 예를 들어, 다른 현재 블록에 대한 예측 블록이 될 수 있는 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔여 블록을 재구성하기 위해 역 스케일링, 변환 및/또는 양자화를 적용한다. 모션 추정 컴포넌트(221) 및/또는 모션 보상 컴포넌트(219)는 차후 블록/프레임의 모션 추정에 사용하기 위해 잔여 블록을 대응하는 예측 블록에 다시 추가함으로써 참조 블록을 계산할 수 있다. 스케일링, 양자화 및 변환 중에 생성된 아티팩트를 완화하기 위해 재구성된 참조 블록에 필터가 적용된다. 그렇지 않으면 이러한 아티팩트는 후속 블록이 예측될 때 부정확한 예측을 유발하고 추가 아티팩트를 생성할 수 있다.
필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)는 필터를 잔여 블록 및/또는 재구성된 이미지 블록에 적용한다. 예를 들어, 스케일링 및 역변환 컴포넌트(229)로부터의 변환된 잔여 블록은 원본 이미지 블록을 재구성하기 위해 인터-픽처 예측 컴포넌트(217) 및/또는 모션 보상 컴포넌트(219)로부터 대응하는 예측 블록과 결합될 수 있다. 그런 다음 필터는 재구성된 이미지 블록에 적용될 수 있다. 일부 예에서, 필터는 대신 잔여 블록에 적용될 수 있다. 도 2에서의 다른 구성 요소와 마찬가지로, 필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)는 고도로 통합되고 함께 구현될 수 있지만 개념적 목적을 위해 별도로 도시된다. 재구성된 참조 블록에 적용된 필터는 특정 공간 영역에 적용되며 이러한 필터가 적용되는 방식을 조정하는 여러 파라미터를 포함한다. 필터 제어 분석 컴포넌트(227)는 재구성된 참조 블록을 분석하여 그러한 필터가 적용되어야 하는 위치를 결정하고 대응하는 파라미터를 설정한다. 이러한 데이터는 인코딩을 위한 필터 제어 데이터로서 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩된다. 인-루프 필터 컴포넌트(225)는 필터 제어 데이터에 기초하여 이러한 필터를 적용한다. 필터는 디블로킹 필터, 잡음 억제 필터, SAO 필터 및 적응 루프 필터를 포함할 수 있다. 그러한 필터는 예에 따라 공간/픽셀 도메인(예를 들어, 재구성된 픽셀 블록에) 또는 주파수 도메인에 적용될 수 있다.
인코더로서 동작할 때, 필터링된 재구성된 이미지 블록, 잔여 블록 및/또는 예측 블록은 위에서 논의된 모션 추정에서 나중에 사용하기 위해 디코딩된 픽처 버퍼 컴포넌트(223)에 저장된다. 디코더로서 동작할 때, 디코딩된 픽처 버퍼 컴포넌트(223)는 출력 비디오 신호의 일부로서 디스플레이를 향해 재구성되고 필터링된 블록을 저장하고 포워딩한다. 디코딩된 픽처 버퍼 컴포넌트(223)는 예측 블록, 잔여 블록 및/또는 재구성된 이미지 블록을 저장할 수 있는 임의의 메모리 장치일 수 있다.
헤더 포맷팅 및 CABAC 컴포넌트(231)는 코덱 시스템(200)의 다양한 컴포넌트로부터 데이터를 수신하고 디코더를 향한 전송을 위해 이러한 데이터를 코딩된 비트스트림으로 인코딩한다. 구체적으로, 헤더 포맷팅 및 CABAC 컴포넌트(231)는 일반 제어 데이터 및 필터 제어 데이터와 같은 제어 데이터를 인코딩하기 위해 다양한 헤더를 생성한다. 또한, 인트라-예측 및 모션 데이터를 포함하는 예측 데이터는 물론 양자화된 변환 계수 데이터 형태의 잔여 데이터가 모두 비트스트림으로 인코딩된다. 최종 비트스트림은 원래 분할된 비디오 신호(201)를 재구성하기 위해 디코더에 의해 요구되는 모든 정보를 포함한다. 이러한 정보는 또한 인트라-예측 모드 인덱스 테이블(코드워드 매핑 테이블이라고도 함), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 가장 가능성 있는 인트라-예측 모드의 지시, 파티션 정보의 지시 등을 포함할 수 있다. 이러한 데이터는 엔트로피 코딩을 사용하여 인코딩될 수 있다. 예를 들어, 정보는 컨텍스트 적응 가변 길이 코딩(Context adaptive variable length coding, CAVLC), CABAC, 구문 기반 컨텍스트 적응 이진 산술 코딩(SBAC), 확률 간격 분할 엔트로피(PIPE) 코딩 또는 다른 엔트로피 코딩 기술을 사용하여 인코딩될 수 있다. 엔트로피 코딩에 이어서, 코딩된 비트스트림은 다른 장치(예를 들어, 비디오 디코더)로 전송되거나 추후 전송 또는 검색을 위해 보관될 수 있다.
도 3은 예시적인 비디오 인코더(300)를 예시하는 블록도이다. 비디오 인코더(300)는 코덱 시스템(200)의 인코딩 기능을 구현하고 및/또는 동작 방법(100)의 단계 101, 단계 103, 단계 105, 단계 107 및/또는 단계 109를 구현하기 위해 사용될 수 있다. 인코더(300)는 입력 비디오 신호를 분할하여 분할된 비디오 신호(301)를 생성하는데, 이는 분할된 비디오 신호(201)와 실질적으로 유사하다. 분할된 비디오 신호(301)는 인코더(300)의 구성 요소에 의해 압축되고 비트스트림으로 인코딩된다.
구체적으로, 분할된 비디오 신호(301)는 인트라-예측을 위해 인트라-픽처 예측 컴포넌트(317)로 포워딩된다. 인트라-픽처 예측 컴포넌트(317)는 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)와 실질적으로 유사할 수 있다. 분할된 비디오 신호(301)는 또한 디코딩된 픽처 버퍼 컴포넌트(323) 내의 참조 블록에 기초한 인터 예측을 위해 모션 보상 컴포넌트(321)로 포워딩된다. 모션 보상 컴포넌트(321)는 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 실질적으로 유사할 수 있다. 인트라-픽처 예측 컴포넌트(317) 및 모션 보상 컴포넌트(321)로부터의 예측 블록 및 잔여 블록은 잔류 블록의 변환 및 양자화를 위한 변환 및 양자화 컴포넌트(313)에 포워딩된다. 변환 및 양자화 컴포넌트(313)는 변환 스케일링 및 양자화 컴포넌트(213)와 실질적으로 유사할 수 있다. 변환 및 양자화된 잔여 블록 및 대응하는 예측 블록(관련 제어 데이터와 함께)은 비트스트림으로 코딩하기 위해 엔트로피 코딩 컴포넌트(331)로 전달된다. 엔트로피 코딩 컴포넌트(331)는 헤더 포맷팅 및 CABAC 컴포넌트(231)와 실질적으로 유사할 수 있다.
변환 및 양자화된 잔여 블록 및/또는 대응하는 예측 블록은 또한 변환 및 양자화 컴포넌트(313)로부터 역변환 및 양자화 컴포넌트(329)로 전달되어 모션 보상 컴포넌트(321)에 의해 사용되는 참조 블록으로 재구성된다. 변환 및 양자화 컴포넌트(329)는 스케일링 및 역변환 컴포넌트(229)와 실질적으로 유사할 수 있다. 인-루프 필터 컴포넌트(325)의 인-루프 필터는 또한 예에 따라 잔여 블록 및/또는 재구성된 참조 블록에 적용된다. 인-루프 필터 컴포넌트(325)는 필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)와 실질적으로 유사할 수 있다. 인-루프 필터 컴포넌트(325)는 인-루프 필터 컴포넌트(225)에 대해 논의된 바와 같이 다수의 필터를 포함할 수 있다. 필터링된 블록은 모션 보상 컴포넌트(321)에 의해 참조 블록으로 사용하기 위해 디코딩된 픽처 버퍼 컴포넌트(323)에 저장된다. 디코딩된 픽처 버퍼 컴포넌트(323)는 디코딩된 픽처 버퍼 컴포넌트(223)와 실질적으로 유사할 수 있다.
도 4는 예시적인 비디오 디코더(400)를 예시하는 블록도이다. 비디오 디코더(400)는 코덱 시스템(200)의 디코딩 기능을 구현하고 및/또는 동작 방법(100)의 단계 111, 단계 113, 단계 115 및/또는 단계 117을 구현하기 위해 사용될 수 있다. 디코더(400)는 예를 들어 인코더(300)로부터 비트스트림을 수신하고, 최종 사용자에게 표시하기 위해 비트스트림에 기초하여 재구성된 출력 비디오 신호를 생성한다.
비트스트림은 엔트로피 디코딩 컴포넌트(433)에 의해 수신된다. 엔트로피 디코딩 컴포넌트(433)는 CAVLC, CABAC, SBAC, PIPE 코딩, 또는 다른 엔트로피 코딩 기술과 같은 엔트로피 디코딩 방식을 구현하도록 구성된다. 예를 들어, 엔트로피 디코딩 컴포넌트(433)는 비트스트림에서 코드워드로 인코딩된 추가 데이터를 해석하기 위한 컨텍스트를 제공하기 위해 헤더 정보를 사용할 수 있다. 디코딩된 정보는 일반 제어 데이터, 필터 제어 데이터, 파티션 정보, 모션 데이터, 예측 데이터 및 잔여 블록으로부터의 양자화된 변환 계수와 같은 비디오 신호를 디코딩하기 위한 임의의 원하는 정보를 포함한다. 양자화된 변환 계수는 잔여 블록으로의 재구성을 위해 역변환 및 양자화 컴포넌트(429)로 포워딩된다. 역변환 및 양자화 컴포넌트(429)는 역변환 및 양자화 컴포넌트(329)와 유사할 수 있다.
재구성된 잔여 블록 및/또는 예측 블록은 인트라-예측 연산에 기초하여 이미지 블록으로 재구성하기 위해 인트라 픽처 예측 컴포넌트(417)로 전송된다. 인-픽처 예측 컴포넌트(417)는 인-픽처 추정 컴포넌트(215) 및 인-픽처 예측 컴포넌트(217)와 유사할 수 있다. 구체적으로, 인-픽처 예측 컴포넌트(417)는 프레임에서 참조 블록을 찾기 위해 예측 모드를 사용하고 그 결과에 블록을 잔여 블록을 적용하여 인트라-예측 이미지 블록을 재구성한다. 재구성된 인트라-예측된 이미지 블록 및/또는 잔여 블록 및 대응하는 인터-예측 데이터는 디코딩된 픽처 버퍼 컴포넌트(223) 및 루프 필터 컴포넌트(225)와 실질적으로 유사할 수 있는 인-루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 각각 포워딩된다. 인-루프 필터 구성 요소(425)는 재구성된 이미지 블록, 잔여 블록 및/또는 예측 블록을 필터링하고, 이러한 정보는 디코딩된 픽처 버퍼 컴포넌트(423)에 저장된다. 디코딩된 픽처 버퍼 컴포넌트(423)로부터의 재구성된 이미지 블록은 인터-예측을 위해 모션 보상 컴포넌트(421)로 포워딩된다. 모션 보상 컴포넌트(421)는 모션 추정 컴포넌트(221) 및/또는 모션 보상 컴포넌트(219)와 실질적으로 유사할 수 있다. 구체적으로, 모션 보상 컴포넌트(421)는 참조 블록으로부터의 모션 벡터를 사용하여 예측 블록을 생성하고 그 결과에 잔여 블록을 적용하여 이미지 블록을 재구성한다. 결과적인 재구성된 블록은 또한 인-루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 전달될 수 있다. 디코딩된 픽처 버퍼 컴포넌트(423)는 분할 정보를 통해 프레임으로 재구성될 수 있는 추가의 재구성된 이미지 블록을 계속 저장한다. 이러한 프레임은 시퀀스에 배치될 수도 있다. 시퀀스는 재구성된 출력 비디오 신호로 디스플레이에 출력된다.
도 5는 HPS(513)를 갖는 인코딩된 비디오 시퀀스를 포함하는 예시적인 비트스트림(500)을 예시하는 개략도이다. 예를 들어, 비트스트림(500)은 코덱 시스템(200) 및/또는 코덱 시스템(200)에 의한 디코딩을 위한 인코더(300)에 의해 생성될 수 있다. 다른 예로서, 비트스트림(500)은 단계 111에서 디코더에 의해 사용하기 위해 방법(100)의 단계 109에서 인코더에 의해 생성될 수 있다.
비트스트림(500)은 시퀀스 파라미터 세트(SPS)(510), 복수의 픽처 파라미터 세트(PPS)(512), 복수의 HPSHPS(513), 복수의 슬라이스 헤더(514) 및 이미지 데이터(520)를 포함한다. SPS(510)는 비트스트림(500)에 포함된 비디오 시퀀스의 모든 픽처에 공통인 시퀀스 데이터를 포함한다. 이러한 데이터는 픽처 사이징(picture sizing), 비트 심도(bit depth), 코딩 툴 파라미터(coding tool parameter), 비트 레이트 제한(bit rate restrictions) 등을 포함할 수 있다. PPS(512)는 전체 픽처에 적용되는 파라미터를 포함한다. 따라서, 비디오 시퀀스의 각 픽처는 PPS(512)를 참조할 수 있다. 각 픽처는 PPS(512)를 참조하는 반면, 단일 PPS(512)는 일부 예들에서 다수의 픽처에 대한 데이터를 포함할 수 있다는 점에 유의해야 한다. 예를 들어, 유사한 파라미터에 따라 다수의 유사한 픽처가 코딩될 수 있다. 그러한 경우, 단일 PPS(512)는 그러한 유사한 사진에 대한 데이터를 포함할 수 있다. PPS(512)는 대응하는 픽처, 양자화 파라미터, 오프셋 등의 슬라이스에 이용 가능한 코딩 툴을 나타낼 수 있다. 슬라이스 헤더(514)는 픽처의 각 슬라이스에 특정한 파라미터를 포함한다. 따라서, 비디오 시퀀스의 슬라이스당 하나의 슬라이스 헤더(514)가 있을 수 있다. 슬라이스 헤더(514)는 슬라이스 유형 정보, 픽처 순서 카운트(POC), 참조 픽처 리스트, 예측 가중치, 타일 엔트리 포인트, 디블로킹 파라미터 등을 포함할 수 있다.
HPS(513)는 슬라이스 헤더에서 발견되는 0 개 이상의 구문 요소에 의해 결정되는 0 개 이상의 슬라이스에 적용되는 구문 요소를 포함하는 구문 구조이다. 따라서 HPS(513)에는 다중 슬라이스와 관련된 코딩 툴의 파라미터를 위한 구문 요소가 포함되어 있다. HPS(513)는 일부 시스템에서 HPS라고도 한다. 예를 들어, 하나 이상의 슬라이스는 HPS(513)HPS(513)를 참조할 수 있다. 따라서 디코더는 이러한 참조에 기초하여 HPS(513)를 획득하고, HPS(513)로부터 코딩 툴 파라미터를 획득하고, 코딩 툴 파라미터를 사용하여 대응하는 슬라이스를 디코딩할 수 있다. HPS(513)는 개념적으로 PPS(512)와 슬라이스 헤더(514) 사이의 계층적 위치를 차지한다. 예를 들어, 특정 데이터는 전체 픽처와 관련되지 않고 다중 슬라이스와 관련될 수 있다. 데이터가 전체 사진과 관련이 없기 때문에 이러한 데이터는 PPS(512)에 저장되지 않을 수 있다. 그러나 그러한 데이터는 그렇지 않으면 다중 슬라이스 헤더(514)에 포함될 수 있다. HPS(513)는 다중 슬라이스 헤더(514)에 걸쳐 중복 시그널링을 피하기 위해 그러한 데이터를 받아들일 수 있다. HPS(513) 코딩 구조는 VVC에 도입되고 HEVC 또는 이전 코딩 표준에서 유사한 구조를 갖지 않는다. HPS(513)의 다양한 구현은 아래에서 설명한다.
이미지 데이터(520)는 인터-예측 및/또는 인트라-예측에 따라 인코딩된 비디오 데이터 및 대응하는 변환 및 양자화된 잔여 데이터를 포함한다. 예를 들어, 비디오 시퀀스는 이미지 데이터로 코딩된 복수의 픽처(521)를 포함한다. 픽처(521)는 비디오 시퀀스의 단일 프레임이므로 일반적으로 비디오 시퀀스를 표시할 때 단일 단위로 표시된다. 그러나 가상 현실, 픽처 인 픽처 등과 같은 특정 기술을 구현하기 위해 부분 픽처가 표시될 수 있다. 픽처(521)는 각각 PPS(512)를 참조한다. 픽처(521)는 슬라이스(523)로 분할된다. 슬라이스(523)는 수평 섹션으로 정의될 수 있다. 예를 들어, 슬라이스(523)는 픽처(521)의 높이의 일부 및 픽처(521)의 전체 폭을 포함할 수 있다. 일부 시스템에서 슬라이스(523)는 타일(525)로 세분화된다. 다른 시스템에서, 슬라이스(523)는 타일(525)을 포함하는 타일 그룹으로 대체된다. 슬라이스(523) 및/또는 타일(525)의 타일 그룹은 슬라이스 헤더(514) 및/또는 HPS(513)를 참조한다. 타일(525)은 열과 행에 의해 정의된 바와 같이 픽처(521)의 직사각형 부분 및/또는 픽처(521)의 일부를 포함할 수 있다. 타일(525)은 코딩 트리 유닛(CTU)으로 더 분할된다. CTU는 코딩 트리를 기반으로 코딩 블록으로 더 나뉜다. 코딩 블록은 그런 다음 예측 메커니즘에 따라 인코딩/디코딩될 수 있다.
비트스트림(500)은 VCL NAL 유닛(533) 및 비-VCL NAL 유닛(531)으로 코딩된다. NAL 유닛은 네트워크를 통한 전송을 위한 단일 패킷에 대한 페이로드로서 배치되도록 크기가 지정된 코딩된 데이터 유닛이다. VCL NAL 유닛(533)은 코딩된 비디오 데이터를 포함하는 NAL 유닛이다. 예를 들어, 각각의 VCL NAL 유닛(533)은 대응하는 타일(525), CTU 및/또는 코딩 블록을 포함하는 데이터의 하나의 슬라이스(523) 및/또는 타일 그룹을 포함할 수 있다. 비-VCL NAL 유닛(531)은 지원 구문을 포함하지만 코딩된 비디오 데이터를 포함하지 않는 NAL 유닛이다. 예를 들어, 비-VCL NAL 유닛(531)은 SPS(510), PPS(512), HPS 513, 슬라이스 헤더(514) 등을 포함할 수 있다. 이와 같이 디코더는 개별 VCL NAL 유닛(533) 및 비-VCL NAL 유닛(531)에서 비트스트림(500)을 수신한다. 액세스 유닛(535)은 단일 화상(521)을 코딩하기에 충분한 데이터를 포함하는 VCL NAL 유닛(533) 및/또는 비-VCL NAL 유닛(531)의 그룹이다.
일부 예들에서, HPS(513)는 다음과 같이 구현될 수 있다. HPS(513)는 대역 내 및/또는 대역 외에서 이용 가능할 수 있으며, 대역 내 시그널링은 비트스트림(500)에 포함되고 대역 외 시그널링은 지원 메타데이터에 포함된다. HPS(513)는 비-VCL NAL 유닛(531)과 같은 NAL 유닛에 포함되며, 여기서 HPS(513)는 NAL 유닛 유형에 의해 식별된다. HPS(513)는 ALF, SAO, 디블로킹, 양자화 매트릭스, 인터-예측 파라미터, 참조 픽처 세트 구성 관련 파라미터, 및/또는 참조 픽처 리스트 구성 관련 파라미터와 같은 코딩 툴을 위한 파라미터를 포함할 수 있으나 이에 제한되지 않는다. HPS(513)는 유형을 포함할 수 있다. 유형은 HPS(513)에 포함된 코딩 툴 파라미터를 정의한다. 각 HPS(513)에는 한 가지 유형의 코딩 툴 파라미터만 포함될 수 있다. 다른 유형의 HPS(513)는 그룹 파라미터 집합(GPS)으로 그룹화될 수 있다. 단일 HPS(513)를 참조하는 대신 슬라이스(523)는 GPS를 참조할 수 있다. HPS(513)는 대응하는 슬라이스(523) 및/또는 타일 그룹에 의해 참조되기 전에 디코더에서 이용 가능하게 될 수 있다. 코딩된 화상(521)의 상이한 슬라이스(523)는 상이한 HPS(513)를 참조할 수 있다. HPS(513)는 비트스트림(500)의 임의의 슬라이스(523) 경계에 배치될 수 있다. 이것은 HPS(513) 이후의 현재 픽처(521)의 모든 슬라이스(523)에 대해서도 HPS(513)의 파라미터(예를 들어, ALF 파라미터)의 재사용을 허용한다.
슬라이스 헤더(514)로부터 HPS(513)로의 참조는 선택적일 수 있다. 예를 들어, 슬라이스(523)는 다음 중 하나가 참일 때 HPS(513)를 참조할 수 있다. 첫째, 그러한 참조는 HPS(513)가 비트스트림(500)에 대해 이용 가능하다는 것을 대응하는 PPS(512)에 표시될 수 있다. 둘째, 슬라이스(523)는 HPS(513)에 포함된 코딩 툴 중 적어도 하나가 인에이블될 때 HPS(513)를 참조할 수 있다. 각각의 HPS(513)는 HPS ID와 연관될 수 있다. HPS(513)를 참조하는 슬라이스(523)는 참조된 HPS(513)의 HPS ID를 포함해야 한다. HPS ID는 왼쪽 비트가 먼저 있는(예를 들어, ue( V)) 부호 없는 정수 0 차 Exp-Golomb 코딩 구문 요소로 코딩될 수 있다. HPS ID의 값은 예를 들어 0에서 63까지의 범위로 제한될 수 있다. 코딩 툴의 각 파라미터에 대해, 파라미터가 HPS(513)에 존재하는지를 나타내는 플래그가 HPS(513)에 존재할 수 있다. 코딩 툴이 슬라이스(523)에 대해 인에이블되고 코딩 툴에 대한 파라미터가 슬라이스(523)에 의해 참조되는 HPS(513)에 제공되며, 파라미터는 대응하는 슬라이스 헤더(514)에서 시그널링되지 않을 수 있다. HPS(513)는 하나 이상의 NAL 유닛으로 단편화될 수 있고 HPS(513)의 각 단편은 독립적으로 파싱되고 적용될 수 있다. 슬라이스(523)는 단일 HPS(513) 또는 다중 HPS(513)를 참조할 수 있다. 다중 HPS(513) 참조가 허용될 때, HPS(513)에 대한 각각의 참조는 특정 코딩 툴의 파라미터를 해결하기 위해 사용될 수 있다.
다음 구현은 HPS(513)가 다른 HPS(513)를 참조하고 그러한 참조에 의해 코딩 툴 파라미터를 상속하도록 허용한다. HPS(513)는 다른 HPS(513)에 대한 하나 이상의 참조를 포함할 수 있다. 이러한 예에서 HPS(513)는 HPS(513)가 다른 HPS(513)를 참조하지 않을 때 인트라 HPS라고 할 수 있다. HPS(513)가 다른 HPS(513)를 참조할 때 참조 HPS(513)는 참조 HPS(513)로부터 하나 이상의 파라미터를 복사할 수 있다. HPS(513)는 각 파라미터 그룹에 대해 하나의 참조 HPS(513)와 함께 다른 HPS(513)에 대한 다중 참조를 가질 수 있다. 일부 예에서, HPS(513)의 링크드-리스트(linked-list)는 일련의 HPS(513)가 참조 메커니즘에 의해 연결됨에 따라 형성될 수 있다. 코딩 툴의 파라미터가 HPS(513)에 존재하지 않는 것으로 지정되면(예를 들어, 존재 플래그의 값이 0과 같음), 파라미터가 참조 HPS(513)로부터 추론될 수 있는지를 나타내는 추가 플래그가 존재할 수 있다. HPS(513)에서 다른 HPS(513)에 대한 참조는 암시적으로 지정될 수 있으므로 코딩 툴의 파라미터가 HPS(513)에 없는 경우 이러한 파라미터는 이전 HPS(513)에 대한 코딩 툴의 파라미터와 동일한 것으로 추론된다.
일부 경우에 HPS(513)는 순간적 디코더 리프레시(Instantaneous Decoder Refresh, IDR) 및/또는 클린 랜덤 액세스(Clean Random Access, CRA) 픽처에 대한 랜덤 액세스를 호출할 때 더 이상 존재하지 않을 수 있다. 따라서, 각각의 인트라 랜덤 액세스 포인트(Intra Random Access Point, IRAP) 픽처의 시작 부분에서 번갈아 활성화된 각 버퍼와 함께 HPS(513)를 저장하기 위해 두 개의 HPS 버퍼가 사용될 수 있다. 이러한 경우 수신된 HPS(513)는 활성 HPS 버퍼에 저장된다. 오류 복원력을 향상시키기 위해 현재 사용 중인 HPS ID를 나타내도록 HPS ID 범위를 지정할 수 있다. HPS(513)에 사용 중인 HPS ID 범위를 벗어난 HPS ID가 있는 경우 추가 HPS(513)가 HPS ID를 사용할 수 있다. 그런 다음 사용 중인 HPS ID는 슬라이딩 윈도 방식에 따라 업데이트될 수 있다. 이 기술을 사용할 때 HPS(513)는 HPS ID가 사용 범위 내에 있는 다른 HPS(513)만 참조할 수 있다. 디코더 메모리에서 HPS(513) 저장 요건을 제한하기 위해 활성 HPS(513)의 수에 대한 제한이 정의될 수 있다. 한계에 도달하고 새로운 HPS(513)가 수신되면 버퍼에서 가장 오래된(예를 들어, 가장 먼저 수신된) HPS(513)가 제거되고 새로운 HPS(513)가 삽입된다.
일부 경우에, 모든 HPS(513) 참조는 HPS(513)가 디코더에 의해 수신되는 즉시 해결될 수 있다. 예를 들어, 코딩 툴 파라미터는 디코더가 HPS(513)를 수신하고 코딩 툴 파라미터가 현재 HPS(513)에서 사용 가능하지 않지만 참조 HPS(513)에서 사용 가능할 때 즉시 복사될 수 있다. 오류 복원력을 개선하기 위한 또 다른 접근법은 내부 HPS(513)가 지정된 기간 제공되도록 요구하는 것이다. 인트라 HPS(513)가 수신될 때, 버퍼에 있는 동일한 유형의 사용 가능한 모든 HPS(513)는 폐기될 수 있다. 코딩 툴의 파라미터가 HPS(513)에 존재하지 않는 경우, HPS(513)를 참조하는 슬라이스(523)에 대해 코딩 툴이 비활성화되었는지를 나타내는 플래그가 존재할 수 있다. 또한, NAL 단위 헤더의 플래그(예를 들어, nal_ref_flag)는 NAL 유닛에 포함된 HPS(513)가 참조로 사용되는 픽처(521)로부터 슬라이스(523)에 의해 참조될 수 있는지를 지정할 수 있다. 예를 들어, HPS(513)는 HPS(513)를 포함하는 NAL 유닛의 nal_ref_flag가 0일 때 참조되지 않은 픽처(521)의 슬라이스(523)에 의해서만 참조될 수 있다. 이 플래그는 또한 어떤 HPS(513)가 다른 HPS(513)에 대한 참조로서 사용될 수 있는지를 결정하는데 사용될 수 있다. 예를 들어, HPS(513)는 nal_ref_flag가 0인 NAL 유닛에 포함된 다른 HPS(513)를 참조하지 않을 수 있다. HPS 버퍼에 대한 리셋 주기는 SPS(510)에 지정될 수 있다. HPS(513) 버퍼는 IRAP 픽처 발생 시 리셋될 수 있다.
이전 구현을 검토하여 알 수 있듯이, HPS(513)가 다른 HPS(513)를 참조하도록 허용하는 것은 매우 복잡할 수 있다. 따라서, 개시된 예들에서, HPS(513)는 다른 HPS(513)를 참조하는 것이 제한될 수 있다. 대신, 여러 유형의 HPS(513)가 채용될 수 있다. HPS(513) 유형은 HPS(513)에 포함된 코딩 툴 파라미터의 유형을 나타낸다. 이러한 HPS(513) 유형은 ALF HPS, LMCS HPS 및/또는 스케일링 목록 파라미터 HPS를 포함할 수 있다. ALF HPS는 해당 슬라이스의 적응형 루프 필터링의 일부로 사용되는 코딩 툴 파라미터를 포함하는 HPS이다. LMCS HPS에는 LMCS 메커니즘에 사용되는 코딩 툴 파라미터가 포함되어 있다. LMCS는 레이트 왜곡을 줄이기 위해 해당 크로마 성분에 대한 매핑을 기반으로 루마 성분을 재구성하는 필터링 기술이다. 스케일링 목록 파라미터 HPS에는 지정된 필터에서 사용하는 양자화 행렬과 관련된 코딩 툴 파라미터가 포함되어 있다. 이러한 예에서, 제1 유형의 현재 HPS(513)가 디코더에 의해 획득될 때, 현재 HPS(513)가 그러한 이전 HPS(513)를 대체하기 때문에 제1 유형의 이전 HPS(513)는 폐기될 수 있다. 또한, 다중 유형 HPS(513)를 허용하기 위해, 단일 슬라이스 헤더(514)는 대응하는 슬라이스(523) 및/또는 타일 그룹에 대한 모든 코딩 툴 파라미터를 참조하기 위해 하나 이상의 HPS(513)를 참조할 수 있다. 이것은 슬라이스 헤더(514)가 단일 HPS(513)를 참조하고 그런 다음 다른 HPS(513)를 참조하도록 허용하는 다른 방식과 대조적이다. 따라서 단일 슬라이스 헤더(514)가 다중 HPS(513)를 참조하도록 허용하면 HPS(513) 참조 체인을 피하는 구현으로 된다. 이 접근 방식은 복잡성을 크게 줄여 인코더와 디코더 모두에서 처리 리소스 사용량을 줄인다. 또한, 이 프로세스는 디코더에서 버퍼링되는 HPS(513)의 수를 줄인다. 예를 들어, 각 유형의 하나의 HPS(513)만이 디코더에서 버퍼링될 수 있다. 이것은 디코더에서 메모리 사용량을 줄인다. 또한 HPS 513 참조 체인을 피함으로써 잠재적인 오류가 국지화되어 감소된다. 이것은 전송 오류 동안 HPS(513)가 손실되면 HPS(513)를 직접 참조하는 슬라이스(523)에만 영향을 미칠 수 있기 때문이다. 따라서, 개시된 메커니즘은 비트스트림(500)에서 HPS(513)를 사용할 때 인코더와 디코더 모두에서 개선이 이루어진다.
도 6은 시간적 스케일링을 위한 예시적인 메커니즘(600)을 예시하는 개략도이다. 예를 들어, 메커니즘(600)은 비트스트림(500)과 같은 디코딩된 비트스트림을 디스플레이할 때 코덱 시스템(200) 및/또는 디코더(400)와 같은 디코더에 의해 사용될 수 있다. 또한, 디스플레이를 위한 비디오를 출력할 때 메커니즘(600)은 방법(100)의 단계 117의 일부로서 사용될 수 있다. 또한, 코덱 시스템(200) 및/또는 인코더(300)와 같은 인코더는 메커니즘(600)이 디코더에서 발생할 수 있도록 비트스트림의 데이터를 인코딩할 수 있다.
메커니즘(600)은 복수의 디코딩된 픽처(601, 603 및 605)에 대해 동작한다. 픽처(601, 603, 605)는 정렬된 비디오 시퀀스의 일부이며, 예를 들어 위에서 설명된 메커니즘을 사용하여 비트스트림으로부터 디코딩되었다. 비트스트림은 디코더가 제1 프레임 레이트(FR0) 610, 제2 프레임 레이트(FR1) 611 및 제3 프레임 레이트(FR2) 612를 포함한 복수의 프레임 레이트 중 하나로 비디오 시퀀스를 표시할 수 있도록 인코딩된다. 프레임 레이트는 비디오 시퀀스의 프레임/픽처가 표시되는 빈도를 측정한 것이다. 프레임 레이트는 시간에 따른 프레임 단위로 측정될 수 있다. 프레임 레이트의 차이로 인해 서로 다른 디코더가 서로 다른 품질로 동일한 비디오 시퀀스를 표시하여 디코더 기능의 변동을 고려할 수 있다. 예를 들어, 하드웨어 기능이 감소된 디코더 및/또는 저품질 네트워크 연결로부터 스트리밍되는 디코더는 FR0(610)에 표시될 수 있다. 다른 예로서, 고속 네트워크 연결에 액세스하는 고품질 디코더는 FR2(612)에 표시될 수 있다. 또 다른 예로서, 특정 장애가 있는 디코더는 FR1(611)에서 표시할 수 있지만 FR2(612)에서는 표시할 수 없다. 따라서 각 디코더가 가능한 최고 프레임 레이트로 비디오를 표시할 수 있도록 시간적 스케일링(예를 들어, 메커니즘 600)이 사용된다. 다양한 디코더 측 기능 및 제약 조건을 기반으로 최상의 사용자 경험을 제공한다. 대부분의 시스템에서 각 프레임 레이트는 이전 프레임 레이트의 두 배이다. 예를 들어, FR0(610), FR1(611) 및 FR2(612)는 초당 15 프레임(fifteen frames per second, FPS), 30FPS 및 60FPS로 설정될 수 있다.
시간적 스케일링을 구현하기 위해, 픽처(601, 603, 605)는 인코더에 의해 가능한 가장 높은 프레임 레이트로, 이 경우 FR2 612로 비트스트림으로 코딩된다. 인코더는 또한 각 픽처(601, 603, 및 605)에 임시 식별자(TID)를 할당한다. 픽처(601, 603 및 605)는 각각 0, 1 및 2의 TID를 수신하였다. 디코딩된 결과 비디오를 표시할 때 디코더는 프레임 레이트를 선택하고 해당 프레임 레이트 TID를 결정하고 TID가 프레임 레이트 TID보다 작거나 같은 모든 프레임을 표시한다. 선택한 프레임 레이트의 프레임 레이트 TID보다 큰 TID를 가진 픽처는 무시된다. 예를 들어, FR2(612)를 선택하는 디코더는 TID가 2 이하인 모든 픽처를 표시하므로 모든 픽처(601, 603 및 605)를 표시한다. 다른 예로서, FR1(611)을 선택하는 디코더는 TID가 1 또는 그 보다 작은 모든 픽처를 표시하고, 따라서 픽처(605)는 무시하면서 픽처(601 및 603)를 표시한다. 다른 예로서, FR0(610)을 선택하는 디코더는 TID가 0 또는 그 보다 작은 모든 픽처를 표시하고, 따라서 픽처(603 및 605)를 무시하면서 픽처(601)를 표시한다. 이 메커니즘(600)을 적용함으로써, 비디오 시퀀스는 디코더에 의해 선택된 프레임 레이트로 시간적으로 스케일링될 수 있다.
HPS(513)는 도 5에 설명된 바와 같이 메커니즘(600)의 시간적 스케일링을 지원하도록 구현될 수 있다. 이것은 TID 0, TID 1 또는 TID 2와 같은 TID를 각 HPS에 할당함으로써 달성될 수 있다. 시간적 스케일링이 수행되면 TID가 선택된 프레임 레이트 TID 이하인 HPS는 디코딩되고 TID가 선택된 프레임 레이트 TID보다 큰 HPS는 폐기된다. TID는 다양한 실시예에 따라 HPS에 할당될 수 있다.
도 5를 참조하면, 일례에서, HPS(513)는 HPS(513)를 참조하는 제1 슬라이스(523)를 포함하는 픽처(521)의 임시 ID를 수신할 수 있다. 다른 예들에서, HPS(513)는 HPS(513)를 포함하는 액세스 유닛(535)의 임시 ID를 수신할 수 있다. 시간적 스케일링을 더 지원하기 위해, 더 낮은 임시 ID와 연관된 슬라이스(523)는 더 큰 임시 ID를 포함하는 HPS(513)를 참조하는 것으로부터 제한될 수 있다. 이것은 더 낮은 프레임 레이트 설정이 슬라이스(523)가 메커니즘(600)의 시간적 스케일링으로 인해 무시되는 HPS(513)를 참조하게 하지 않도록 보장하고, 따라서 FR0 610 및/또는 FR1 611와 같은 더 낮은 프레임 레이트에서 특정 슬라이스(523)를 디코딩할 때 코딩 툴 파라미터를 사용할 수 없는 것을 방지한다.
전술한 메커니즘은 다음과 같이 구현될 수 있다. 다음 측면은 개별적으로 및/또는 조합하여 적용될 수 있다. 적응 파라미터 세트(Adaptation Parameter Set, APS)는 HPS의 또 다른 이름이다. 비트스트림에 대한 HPS의 가용성은 모두 대역 내에서 사용할 수 있고, 모두 대역 외에서 사용할 수 있으며, 일부는 대역 내에서 사용할 수 있고 일부는 대역 외에서 사용할 수 있다. 대역 외로 제공되는 경우 HPS는 다음 위치에 있을 수 있다. ISO 기반 미디어 파일 형식에서 HPS는 샘플 항목(예를 들어, 샘플 설명 상자)에 있을 수 있다. ISO 기반 미디어 파일 형식에서 HPS는 파라미터 세트 트랙 또는 시간 지정 메타데이터 트랙과 같은 시간 동기화 트랙에 존재할 수 있다.
특정 구현에서, 대역 외로 제공될 때, HPS는 다음과 같이 수행될 수 있다. ISO 기반 미디어 파일 형식에서 HPS 업데이트가 없는 경우 HPS는 샘플 항목(예를 들어, 샘플 설명 상자)에만 표시될 수 있다. 다른 HPS 파라미터가 동일한 HPS ID로 이전에 전송된 HPS와 다른 동안 HPS 식별자(ID)가 재사용되는 경우 HPS 업데이트가 없을 수 있다. HPS 업데이트가 존재하는 경우, 예를 들어, HPS에 적응 루프 필터(Adaptive Loop Filter, ALF) 파라미터가 포함된 경우, 표준화를 위한 국제기구(International Organization for Standardization, ISO) 기반 미디어 파일 형식에서 HIPS는 파라미터 세트 트랙 또는 시간이 지정된 메타데이터 트랙과 같이, 시간 동기화 트랙으로 전달될 수 있다. 이러한 방식으로 각각의 완전한 타일 그룹을 포함하는 슬라이스가 자체 파일 형식 트랙으로 전달될 수 있다. 또한, HPS는 시간 동기화된 트랙에 실려 전달될 수 있다. 결과적으로, 이러한 트랙은 각각 하이퍼텍스트 트랜스퍼 프로토콜의 동적 적응 스트리밍(Dynamic Adaptive Streaming of Hypertext transfer protocol, DASH) 표현으로 전달될 수 있다. 슬라이스/타일 트랙의 서브 세트의 디코딩 및 렌더링을 위해, HPS를 포함하는 DASH 표현뿐만 아니라 슬라이스/타일 트랙의 서브 세트를 포함하는 DASH 표현은 세그먼트 방식으로 클라이언트에 의해 요청될 수 있다.
다른 예에서 HPS는 항상 대역 내에서 제공되도록 지정할 수 있다. HPS는 파라미터 세트 트랙이나 시간이 지정된 메타데이터 트랙과 같은 시간 동기화된 트랙으로 전달될 수도 있다. 따라서 HPS는 위에서 설명한 대로 제공될 수 있다. 또한 비디오 코덱에 대한 파일 형식의 사양에서, 비트스트림 재구성 프로세스는 HPS가 출력 비트스트림의 일부가 되도록 HPS를 포함하는 시간 동기화 트랙과 슬라이스/타일 트랙의 서브 세트에서 출력 비트스트림을 구성할 수 있다.
HPS는 디코딩 순서로 그리고 HPS를 참조하는 제1 슬라이스 이전에 디코더에 존재해야 하고 및/또는 이용 가능해야 한다. 예를 들어, HPS가 대역 내에서 사용 가능한 경우 HPS는 디코딩 순서에서 HPS를 참조하는 제1 슬라이스보다 앞에 올 수 있다. 그렇지 않으면 HPS 디코딩 시간은 HPS를 참조하는 제1 슬라이스의 디코딩 시간과 같거나 작아야 한다.
HPS는 SPS와 같은 시퀀스 레벨 파라미터 세트의 ID를 포함할 수 있다. HPS에 SPS ID가 없는 경우 다음 제약 조건이 적용될 수 있다. HPS를 참조하는 제1 슬라이스가 인트라 랜덤 액세스 포인트(Intra Random Access Point, IRAP) 픽처의 일부이고 HPS가 대역 내에서 전송될 때, HPS는 IRAP 액세스 장치에 존재할 수 있다. HPS를 참조하는 제1 슬라이스가 IRAP 픽처의 일부이고 HPS가 대역 외에서 수행되는 경우, HPS의 디코딩 시간은 IRAP 픽처의 디코딩 시간과 동일할 수 있다. HPS를 참조하는 제1 슬라이스가 IRAP 픽처의 일부가 아니고 HPS가 대역 내에서 전송되는 경우, HPS는 코딩된 비디오 시퀀스를 시작하는 IRAP 액세스 장치와 슬라이스를 포함하는 액세스 유닛 사이의 액세스 장치 중 하나에 포함해서 존재할 수 있다. HPS를 참조하는 제1 슬라이스가 IRAP 픽처의 일부가 아니고 HPS가 대역 외에서 수행되는 경우, HPS의 디코딩 시간은 코딩된 비디오 시퀀스를 시작하는 IRAP 액세스 장치의 디코딩 시간과 슬라이스를 포함하는 액세스 유닛의 디코딩 시간 사이에 포함해서 있을 수 있다.
HPS에 SPS ID가 있는 경우 다음 사항이 적용될 수 있다. 대역 내에서 제공되는 경우, HPS가 디코딩 순서에서 HPS를 참조하는 제1 슬라이스보다 앞에 있는 한, HPS는 비트스트림의 시작 또는 임의의 코딩된 시퀀스에 존재할 수 있다. 그렇지 않으면, HPS 디코딩 시간이 HPS를 참조하는 제1 슬라이스의 디코딩 시간보다 짧은 한 HPS가 샘플 항목 또는 시간 동기화된 트랙에 존재할 수 있다.
HPS에 대한 슬라이스 참조의 경우 다음이 적용될 수 있다. HPS에 SPS ID가 있는 경우 각 슬라이스와 슬라이스가 참조하는 HPS는 동일한 SPS를 참조할 수 있다. 그렇지 않으면 슬라이스는 해당 슬라이스가 연결된 IRAP 액세스 단위보다 앞선 액세스 단위에 있는 HPS를 참조하지 않을 수 있다. 슬라이스는 또한 슬라이스가 연관된 IRAP 액세스 유닛의 디코딩 시간보다 짧은 디코딩 시간을 갖는 HPS를 참조하는 것으로부터 제한될 수 있다.
HPS에서 코딩 툴의 파라미터의 존재를 지정하기 위해 플래그를 사용하는 것에 대한 대안으로서, 2 비트 지표가 사용될 수 있다(예를 들어, u(2)로 코딩됨). 지표의 의미는 다음과 같이 정의된다. 지표의 한 값(예를 들어, 값 0)은 파라미터가 HPS에 없고 파라미터를 도출하기 위한 다른 HPS가 참조되지 않음을 지정한다. 지표의 또 다른 값(예를 들어, 값 1)은 파라미터가 HPS에 없고 파라미터를 도출하기 위해 다른 HPS에 대한 참조가 존재함을 지정한다. 지표의 다른 값(예를 들어, 값 2)은 파라미터가 HPS에 있고 다른 HPS에 대한 참조가 없음을 지정한다. 지표의 다른 값이 예약될 수 있다. 다른 예에서, 지표의 또 다른 값(예를 들어, 값 3)은 파라미터가 HPS에 존재하고 파라미터를 유도하기 위한 또 다른 HPS가 참조임을 지정한다. 이 경우 최종 파라미터는 HPS에서 명시적으로 시그널링되는 파라미터와 참조 HPS에 있는 파라미터의 입력으로 파생된다.
코딩 툴이 임의의 표시 수단에 의해 코딩된 비디오 시퀀스에 대해 디스에이블되도록 지정될 때(예를 들어, 시퀀스 파라미터 플래그의 인에이블 플래그는 코딩 툴이 비활성화됨을 지정함), 다음의 제약이 개별적으로 또는 조합하여 적용될 수 있다. 코딩 툴에 대한 파라미터 및 코딩 툴에 대한 파라미터의 존재에 대한 플래그 또는 지시는 코딩된 비디오 시퀀스와 관련된 HPS에 존재하지 않을 수 있다. 코딩 툴에 대한 파라미터의 존재에 대한 플래그 또는 표시가 존재할 수 있지만 값이 코딩 툴에 대한 파라미터가 존재하지 않고 파라미터를 유도 및/또는 추론하기 위한 참조 HPS가 존재하지 않음을 지정하도록 제한된다.
슬라이스가 코딩 툴의 파라미터를 포함할 수 있는 HPS를 지칭할 때, 다음의 제약은 개별적으로 또는 조합으로 적용될 수 있다. 코딩 툴이 슬라이스에 대해 활성화되고 코딩 툴의 파라미터가 HPS에서 사용 가능하면 코딩 툴의 파라미터가 슬라이스 헤더에 없을 수 있다. 이것은 코딩 툴 파라미터가 HPS에 직접 신호 및/또는 존재하거나 참조 HPS를 통해 사용 가능할 때 발생할 수 있다. 코딩 툴이 슬라이스에 대해 활성화되고 코딩 툴의 파라미터를 HPS에서 사용할 수 없는 경우 코딩 툴의 파라미터가 슬라이스 헤더에 존재할 수 있다. 이것은 코딩 툴 파라미터가 HPS에 직접 신호를 보내지 않거나 HPS에 표시되지 않거나 참조 HPS를 통해 사용할 수 없는 경우에 발생할 수 있다. 코딩 툴이 슬라이스에 대해 활성화되고 코딩 툴의 파라미터가 HPS에서 사용 가능할 때, 코딩 툴의 파라미터가 슬라이스 헤더에도 존재할 수 있다. 이것은 코딩 툴 파라미터가 HPS에 직접 신호 및/또는 존재하거나 참조 HPS를 통해 사용 가능할 때 발생할 수 있다. 이 경우 슬라이스를 디코딩하는 동안 코딩 툴을 호출하는 데 사용되는 파라미터는 슬라이스 헤더에 있는 파라미터이다.
HPS의 대역 내 및 대역 외 전송이 모두 사용될 때, 다음을 적용할 수 있다. HPS가 대역 내에서 수행되는 경우 HPS는 대역 밖에서 수행되는 다른 HPS를 참조하지 않을 수 있다. 그렇지 않으면 HPS가 대역 내에서 전송되는 다른 HPS를 참조하지 않을 수 있다.
HPS의 대역 내 및 대역 외 전송이 모두 사용되는 경우, 다음 제약이 개별적으로 또는 결합하여 추가로 적용될 수 있다. 대역 외에서 수행되는 HPS는 시간 동기화된 트랙에서만 수행될 수 있다. HPS는 HPS 업데이트가 있는 경우에만 대역 외에서 수행할 수 있다.
HPS ID를 왼쪽 비트를 먼저 사용하여 부호 없는 정수 0 차 Exp-Golomb 코딩 구문 요소(ue(v))로 코딩하는 대신 HPS ID를 u(v)로 코딩할 수 있다. HPS ID를 시그널링하기 위한 비트 수는 SPS에서 지정될 수 있다.
동일한 코딩된 비디오 시퀀스의 두 HPS는 동일한 HPS ID를 가질 수 있으며, 이 경우 다음이 적용될 수 있다. HPS A와 HPS B의 HPS ID가 같으면 HPS B가 디코딩 순서에서 HPS A를 따르고 SPS에 HPS ID를 참조하는 ID가 포함된 경우 HPS B가 HPS A를 대체한다. HPS A와 HPS B가 동일한 HPS를 가지고, ID, HPS B의 디코딩 시간은 HPS A의 디코딩 시간보다 길고 SPS에는 HPS ID를 참조하는 ID가 포함되어 있으면, HPS B가 HPS A를 대체한다. HPS A, HPS B, HPS C 및 HPS D를, 동일한 SPS ID를 갖거나(예를 들어, SPS ID가 HPS에 존재할 때) 또는 HPS를 포함하는 액세스 유닛의 연관에 의해 동일한 코딩된 비디오 시퀀스에 포함된 HPS라 하자. HPS A와 HPS D의 HPS ID가 같고 HPS A, HPS B, HPS C의 HPS ID가 고유한 경우, HPS A, HPS B, HPS C의 HPS ID 값이 단조롭게 증가하도록 제한될 수 있다. HPS가 다른 참조 HPS를 참조할 수 있는지를 지정하기 위해 SPS에 플래그가 있을 수 있다.
HPS 간의 참조가 허용되지 않는 경우, 슬라이스 헤더는 동일한 HPS 또는 다른 HPS에 대한 다중 참조를 가질 수 있다. 이 경우 다음 사항이 적용될 수 있다. 슬라이스에 대해 인에이블된 각 코딩 툴에 대해 HPS 참조가 존재할 수 있으며 코딩 툴의 파라미터는 HPS로부터 추론될 수 있다. 슬라이스가 코딩 툴의 파라미터를 추론하기 위해 HPS를 참조하는 경우 코딩 툴의 파라미터가 해당 HPS에 있어야 한다.
코딩 툴의 파라미터가 HPS에 없고 파라미터에 대한 다른 HPS에 대한 참조가 있는 경우 파라미터는 해당 참조 HPS에 있어야 한다. HPS는 다른 코딩된 비디오 시퀀스의 다른 HPS를 참조할 수 없다. HPS에 SPS ID가 있는 경우 현재 HPS와 해당 참조 HPS의 SPS ID 값은 동일해야 한다. 그렇지 않으면, HPS는 디코딩 순서에서 HPS에 선행하는 마지막 IRAP 액세스 장치 앞에 있는 액세스 장치에 존재하는 다른 HPS를 참조하지 않을 수 있다. 또한 HPS는 디코딩 순서에서 HPS에 선행하는 마지막 IRAP 액세스 단위의 디코딩 시간보다 짧은 디코딩 시간을 가진 다른 HPS를 참조하거나 디코딩 시간이 있는 마지막 IRAP 액세스 단위가 HPS의 디코딩 시간에 가장 가깝고 더 짧다.
HPS가 다른 HPS를 지칭하는 경우, 기준 HPS의 HPS ID는 HPS의 HPS ID보다 작아야 한다. HPS에 SPS ID가 있는 경우 HPS A, HPS B, HPS C 및 HPS D는 모두 동일한 SPS ID를 가질 수 있다. HPS B가 디코딩 순서에서 HPS A를 따르고, HPS C가 디코딩 순서에서 HPS B를 따르고, HPS D가 디코딩 순서에서 HPS C를 따르는 경우 다음 제약 조건이 개별적으로 또는 조합으로 적용될 수 있다. HPS C가 HPS A를 참조할 때 HPS B의 HPS ID는 HPS A의 HPS ID와 동일하지 않을 수 있다. HPS B가 HPS A를 참조하고 HPS C가 HPS A와 동일한 HPS ID를 갖는 경우 HPS D는 HPS A도 참조하지 않고 HPS B도 참조하지 않을 수 있다. HPS B와 HPS A가 동일한 HPS ID를 갖는 경우, HPS A를 참조하는 디코딩 순서에서 HPS B를 따르는 슬라이스가 없을 수 있다. HPS B가 HPS A를 참조하고 HPS C가 HPS A와 동일한 HPS ID를 가질 때, HPS A 또는 HPS B를 참조하는 디코딩 순서에서 HPS C를 따르는 슬라이스가 없을 수 있다.
시간적 확장성을 사용하는 경우 HPS에 대한 임시 ID는 다음과 같이 지정될 수 있다. HPS의 임시 ID는 HPS를 포함하는 액세스 유닛의 임시 ID와 동일하게 설정될 수 있다. 일례로, HPS의 임시 ID는 HPS를 참조하는 제1 슬라이스의 픽처의 임시 ID와 동일하게 설정될 수 있다.
임시 ID(Tid) A를 갖는 픽처의 슬라이스는 Tid B가 Tid A보다 큰 ID Tid B를 갖는 HPS를 참조하지 않을 수 있다. Tid A를 갖는 HPS는 Tid B를 갖는 참조 HPS를 참조하지 않을 수 있다. Tid B는 Tid A보다 크다. Tid A가 있는 HPS는 Tid A가 Tid B보다 큰 Tid B로 다른 HPS를 대체할 수 없다.
슬라이스가 HPS를 참조하는지를 지정하기 위해 시퀀스 레벨 파라미터(예를 들어, SPS)의 플래그가 존재할 수 있다. 플래그 값은 1로 설정될 때 슬라이스가 HPS를 참조하도록 지정하고 슬라이스의 헤더에 HPS ID가 있음을 지정할 수 있다. 플래그 값이 0으로 설정되면 슬라이스가 HPS를 참조하지 않고 슬라이스의 헤더에 HPS ID가 없음을 지정할 수 있다.
이전 관점들은 다음 구문에 따라 구현될 수 있다.
seq_parameter_set_rbsp( ) { 설명자
...
hps_present_flag u(1)
...
}
hps_present_flag를 1과 동일하게 설정하여 hps_id가 슬라이스 헤더에 있음을 지정할 수 있다. hps_present_flag를 0으로 설정하여 hps_id가 슬라이스 헤더에 존재하지 않도록 지정할 수 있다.
header_parameter_set_rbsp( ) { 설명자
header_parameter_set_id ue(v)
hps_seq_parameter_set_id ue(v)
...
alf_parameters_idc[ header_parameter_set_id ] u(1)
if( alf_parameters_idc[ header_parameter_set_id ]  = =  2 )
alf_data( )
else if(alf_parameters_idc[ header_parameter_set_id ]  = =  1 )
alf_ref_hps_id[ header_parameter_set_id ] ue(v)
...
}
header_parameter_set_id는 다른 구문 요소가 참조할 수 있도록 HPS를 식별할 수 있다. hdr_parameter_set_id의 값은 0에서 63까지의 범위에 있을 수 있다. hps_seq_parameter_set_id는 활성 SPS에 대한 sps_seq_parameter_set_id의 값을 지정한다. pps_seq_parameter_set_id의 값은 0에서 15(포함)까지의 범위에 있을 수 있다. alf_parameters_idc [ header_parameter_set_id ]는 HPS에 alf_data( )가 있음을 지정하기 위해 2로 설정될 수 있다. alf_parameters_idc [ header_parameter_set_id ]는 alf_data( )가 HPS에 존재하지 않지만 alf_ref_hps_id [ header_parameter_set_id ]에 의해 지정된 참조 HPS에 존재하는 alf_data( )와 동일한 것으로 추론되도록 지정하기 위해 1과 동일하게 설정될 수 있다. alf_parameters_idc [ header_parameter_set_id ]는 alf_data( ) 또는 alf_ref_hps_id [ header_parameter_set_id ]가 HPS에 없음을 지정하기 위해 0으로 설정될 수 있다. 3과 같은 alf_parameters_idc [ header_parameter_set_id ]의 값은 예약될 수 있다. alf_ref_hps_id [ header_parameter_set_id ]는 alf_data( )의 값을 추론할 참조 HPS의 header_parameter_set_id를 지정할 수 있다.
예시적인 비트스트림 적합성 검사는 다음 제약이 적용되는 것을 요구할 수 있다. 존재하는 경우 alf_ref_hps_id [ header_parameter_set_id ]의 값은 header_parameter_set_id의 값보다 작을 수 있다. 현재 HPS 및 alf_ref_hps_id [ header_parameter_set_id ]에 지정된 HPS의 hps_seq_parameter_set_id 값은 동일할 수 있다. alf_parameters_idc [alf_ref_hps_id [ header_parameter_set_id ]]의 값은 2와 같을 수 있다.
header_parameter_set_id가 hpsA와 같은 HPS A, header_parameter_set_id가 hpsB와 같은 HPS B, header_parameter_set_id가 hpsC와 같은 HPS C, 및 현재 HPS가 주어지면, 다음 조건이 참인 경우 alf_ref_hps_id [ header_parameter_set_id ]의 값은 hpsA 또는 hpsB와 같지 않을 수 있다. 이러한 조건은 디코딩 순서에서 HPS A가 HPS B보다 선행하고, 디코딩 순서에서 HPS B가 HPS C보다 선행하며, 디코딩 순서에서 HPS C가 현재 HPS보다 선행하는 것이다. 이러한 조건에는 alf_ref_id [ hpsB]의 값이 hpsA와 같고 hpsC의 값이 hpsA와 같은 것도 포함된다.
slice_header( ) { 설명자
...
if( hps_present_flag )
slice_hps_id ue(v)
...
if( sps_alf_enabled_flag ) {
slice_alf_enabled_flag u(1)
if( slice_alf_enabled_flag  &&  alf_parameters_idc slice_hps_id ]  = =  0 )
alf_data( )
}
... .
}
slice_hps_id는 슬라이스가 참조하는 HPS의 header_parameter_set_id를 지정한다. slice_hps_id가 없으면 alf_parameters_idc [slice_hps_id ]가 0과 같은 것으로 추론된다. 비트스트림 적합성 검사(bitstream conformance check)의 예에서는 다음 제약 조건이 적용되어야 한다. slice_hps_id와 같은 header_parameter_set_id가 있는 HPS는 슬라이스 헤더를 구문 분석하기 전에 사용할 수 있어야 한다. header_parameter_set_id가 slice_hps_id와 동일한 HPS를 대역 내에서 사용할 수 있는 경우 header_parameter_set_id는 다음 액세스 단위 중 하나에 있어야 한다. 현재 슬라이스의 픽처와 연관된 IRAP 액세스 단위 또는 IRAP 액세스 단위를 따르지만 디코딩 순서에서 현재 액세스 단위보다 선행하는 액세스 단위 또는 현재 액세스 단위이다. header_parameter_set_id가 hpsA와 같은 HPS A, header_parameter_set_id가 hpsB와 같은 HPS B, header_parameter_set_id가 hpsC와 같은 HPS C, 및 현재 슬라이스가 주어지면 다음 두 조건이 모두 참인 경우 slice_hps_id의 값은 hpsA 또는 hpsB와 같지 않다. 조건에는 디코딩 순서에서 HPS A가 HPS B보다 선행하고, 디코딩 순서에서 HPS B가 HPS C보다 선행하고, 디코딩 순서에서 HPS C가 현재 슬라이스보다 선행하는 것이 포함된다. 조건에는 alf_ref_id [ hpsB]의 값이 hpsA와 같고 hpsC의 값이 hpsA와 같은 것도 포함된다.
다른 예시적인 구현이 아래에 설명된다.
header_parameter_set_rbsp( ) { 설명자
header_parameter_set_id ue(v)
hps_seq_parameter_set_id ue(v)
...
if( sps_alf_enabled_flag ) {
alf_parameters_idc[ header_parameter_set_id ] u(1)
if( alf_parameters_idc[ header_parameter_set_id ]  = =  2 )
alf_data( )
else if(alf_parameters_idc[ header_parameter_set_id ]  = =    )
alf_ref_hps_id[ header_parameter_set_id ] ue(v)
}
...
}
alf_parameters_idc [ header_parameter_set_id ]는 HPS에 alf_data( )가 있음을 지정하기 위해 2로 설정될 수 있다. alf_parameters_idc [ header_parameter_set_id ]는 alf_data( )가 HPS에 존재하지 않지만 alf_ref_hps_id [ header_parameter_set_id ]에 의해 지정된 참조 HPS에 존재하는 alf_data( )와 동일한 것으로 추론되도록 지정하기 위해 1과 동일하게 설정될 수 있다. alf_parameters_idc [ header_parameter_set_id ]는 0으로 설정될 수 있고 이는 alf_data( ) 또는 alf_ref_hps_id [ header_parameter_set_id ]가 HPS에 없음을 지정한다. 존재하지 않는 경우, alf_parameters_idc [ header_parameter_set_id ]는 0과 같은 것으로 추론될 수 있다. 3과 같은 alf_parameters_idc [ header_parameter_set_id ]의 값은 예약될 수 있다.
다른 예시적인 구현이 아래에 포함된다.
슬라이스 헤더는 다중 HPS를 참조할 수 있다. 픽처의 슬라이스는 ALF 파라미터(예를 들어, pic_alf_HPS_id_luma [ i ])에 대한 HPS, LMCS 파라미터(예를 들어, pic_lmcs_aps_id)에 대한 HPS, 및 스케일링 목록 파라미터(예를 들어, pic_scaling_list_aps_id)에 대한 HPS를 참조할 수 있다. A pic_alf_aps_id_luma [ i ]는 PH와 관련된 슬라이스의 루마 성분이 참조하는 i 번째 ALF HPS의 adaptation_parameter_set_id를 지정한다. slice_alf_aps_id_luma [ i ]는 슬라이스의 루마 성분이 참조하는 i 번째 ALF HPS의 adaptation_parameter_set_id를 지정한다. aps_params_type이 ALF_APS와 같고 adaptation_parameter_set_id가 slice_alf_aps_id_luma [ i ]와 같은 HPS NAL 유닛의 TemporalId는 코딩된 슬라이스 NAL 유닛의 TemporalId보다 작거나 같아야 한다. slice_alf_enabled_flag가 1이고 slice_alf_aps_luma [ i ]가 없으면 slice_alf_aps_id_luma [ i ]의 값은 pic_alf_aps_id_luma [ i ]의 값과 같은 것으로 추론된다. pic_lmcs_aps_id는 PH와 관련된 슬라이스가 참조하는 LMCS HPS의 adaptation_parameter_set_id를 지정한다. LMCS_APS와 동일한 aps_params_type 및 pic_lmcs_aps_id와 동일한 adaptation_parameter_set_id를 갖는 HPS NAL 유닛의 TemporalId는 PH와 관련된 픽처의 TemporalId보다 작거나 같아야 한다. pic_scaling_list_aps_id는 스케일링 목록 HPS의 adaptation_parameter_set_id를 지정한다. aps_params_type이 SCALING_APS와 같고 adaptation_parameter_set_id가 pic_scaling_list_aps_id와 같은 HPS NAL 유닛의 TemporalId는 PH와 관련된 픽처의 TemporalId보다 작거나 같아야 한다.
HPS NAL 유닛의 TemporalId는 HPS를 포함하는 액세스 유닛(AU)과 동일해야 한다. HPS NAL 유닛의 TemporalId는 HPS를 참조하는 코딩된 슬라이스 NAL 유닛의 TemporalId보다 작거나 같아야 한다. 구체적인 예에서 비 VCL NAL 단위에 대한 TemporalId 값은 다음과 같이 제한된다. nal_unit_type이 DPS_NUT, VPS_NUT 또는 SPS_NUT와 같으면 TemporalId는 0이고 NAL 단위를 포함하는 AU의 TemporalId는 0이 된다. 그렇지 않고 nal_unit_type이 PH_NUT와 같으면 TemporalId는 NAL 단위를 포함하는 PU의 TemporalId와 같아야 한다. 그렇지 않으면 nal_unit_type이 EOS_NUT 또는 EOB_NUT와 같으면 TemporalId는 0이 된다. 그렇지 않고 nal_unit_type이 AUD_NUT, FD_NUT, PREFIX_SEI_NUT 또는 SUFFIX_SEI_NUT와 같으면 TemporalId는 NAL 단위를 포함하는 AU의 TemporalId와 같아야 한다. 그렇지 않으면 nal_unit_type이 PPS_NUT, PREFIX_APS_NUT 또는 SUFFIX_APS_NUT와 같을 때 TemporalId는 NAL 단위를 포함하는 PU의 TemporalId보다 크거나 같아야 한다. NAL 단위가 non-VCL NAL 단위인 경우 TemporalId의 값은 non-VCL NAL 단위가 적용되는 모든 AU의 TemporalId 값의 최솟값과 동일하다. nal_unit_type이 PPS_NUT, PREFIX_APS_NUT 또는 SUFFIX_APS_NUT와 같을 때, TemporalId는 포함하는 AU의 TemporalId보다 크거나 같을 수 있다. 모든 PPS 및 HPS가 비트스트림의 시작 부분에 포함될 수 있기 때문이고(예를 들어, 대역 외 전송되는 경우 수신기는 그들을 비트스트림의 시작 부분에 배치한다), 여기서 제1 코딩된 픽처는 0과 같은 TemporalId를 갖는다.
도 7은 예시적인 비디오 코딩 장치(700)의 개략도이다. 비디오 코딩 장치(700)는 여기에 설명된 바와 같이 개시된 예들/실시예들을 구현하는데 적합하다. 비디오 코딩 장치(700)는 다운스트림 포트(720), 업스트림 포트(750), 및/또는 네트워크를 통해 업스트림 및/또는 다운스트림 데이터를 통신하기 위한 송신기 및/또는 수신기를 포함하는 송수신기 유닛(Tx/Rx)(710)을 포함한다. 비디오 코딩 장치(700)는 또한 데이터를 처리하기 위한 로직 유닛 및/또는 중앙 프로세싱 유닛(CPU)을 포함하는 프로세서(730) 및 데이터를 저장하기 위한 메모리(732)를 포함한다. 비디오 코딩 장치(700)는 또한 전기, 광학 또는 무선 통신 네트워크를 통한 데이터의 통신을 위해 업스트림 포트(750) 및/또는 다운스트림 포트(720)에 연결된 전기, 광-전기(OE) 구성 요소, 전기-광(EO) 구성 요소 및/또는 무선 통신 구성 요소를 포함할 수 있다. 비디오 코딩 장치(700)는 또한 사용자와 데이터를 통신하기 위한 입력 및/또는 출력(I/O) 장치(760)를 포함할 수 있다. I/O 장치(760)는 비디오 데이터를 표시하기 위한 디스플레이, 오디오 데이터를 출력하기 위한 스피커 등과 같은 출력 장치를 포함할 수 있다. I/O 장치(760)는 또한 키보드, 마우스, 트랙볼 등 및/또는 이러한 출력 장치와 상호 작용하기 위한 해당 인터페이스와 같은 입력 장치를 포함할 수 있다.
프로세서(730)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(730)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티-코어 프로세서), 필드-프로그래머블 게이트 어레이(field-programmable gate array, FPGA), 주문형 집적 회로(application specific integrated circuits, ASIC) 및 디지털 신호 프로세서(digital signal processor, DSP)로 구현될 수 있다. 프로세서(730)는 다운스트림 포트(720), Tx/Rx(710), 업스트림 포트(750) 및 메모리(732)와 통신한다. 프로세서(730)는 코딩 모듈(714)을 포함한다. 코딩 모듈(714)은 비트스트림(500) 및/또는 메커니즘(600)을 사용할 수 있는 방법(100, 800 및 900)과 같은 위에서 설명된 개시된 실시예들을 구현한다. 코딩 모듈(714)은 또한 여기에 설명된 임의의 다른 방법/메커니즘을 구현할 수 있다. 또한, 코딩 모듈(714)은 코덱 시스템(200), 인코더(300) 및/또는 디코더(400)를 구현할 수 있다. 예를 들어, 코딩 모듈(714)은 비트스트림에서 픽처를 인코딩/디코딩하고 복수의 HPS에서 픽처의 슬라이스와 관련된 파라미터를 인코딩/디코딩할 수 있다. 다양한 유형의 HPS가 해당 유형의 코딩 툴 파라미터와 함께 포함될 수 있다. 슬라이스 헤더는 다양한 유형의 HPS를 참조하여 해당 슬라이스에 대한 코딩 툴 파라미터를 얻을 수 있다. 이러한 HPS는 시간 스케일링 알고리즘과 함께 작동하도록 임시 ID를 할당할 수도 있다. HPS를 사용하면 여러 슬라이스에서 사용하는 코딩 툴 파라미터를 (예를 들어, 파라미터 변경 시 추가 HPS 사용하여) 단일 위치로 집계할 수 있다. 따라서 중복 시그널링이 제거되어 코딩 효율이 증가하고 비트스트림 저장시 메모리 리소스 사용량이 감소하며 비트스트림 통신시 네트워크 리소스 사용량이 감소한다. 따라서, 코딩 모듈(714)은 비디오 코딩 장치(700)가 비디오 데이터를 코딩할 때 추가 기능 및/또는 코딩 효율을 제공하게 한다. 이와 같이, 코딩 모듈(714)은 비디오 코딩 장치(700)의 기능을 개선할 뿐만 아니라 비디오 코딩 기술에 특정한 문제를 해결한다. 또한, 코딩 모듈(714)은 비디오 코딩 장치(700)를 다른 상태로 변환한다. 대안적으로, 코딩 모듈(714)은 메모리(732)에 저장되고 (예를 들어, 비 일시적 매체에 저장된 컴퓨터 프로그램 제품으로서) 프로세서(730)에 의해 실행되는 명령어로서 구현될 수 있다.
메모리(732)는 디스크, 테이프 드라이브, 솔리드 스테이트 드라이브, ROM(read only memory), RAM(random access memory), 플래시 메모리, TCAM(ternary content-addressable memory), 정적 랜덤 액세스 메모리(SRAM) 등과 같은 하나 이상의 메모리를 포함할 수 있다. 메모리(732)는 오버플로우 데이터 저장 장치로 사용될 수 있고, 그러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령 및 데이터를 저장하기 위해 사용될 수 있다.
도 8은 HPS를 사용하여 비디오 시퀀스를 비트스트림(500)과 같은 비트스트림으로 인코딩하는 예시적인 방법(800)의 흐름도이다. 방법(800)은 방법(100)을 수행할 때 코덱 시스템(200), 인코더(300) 및/또는 비디오 코딩 장치(700)와 같은 인코더에 의해 사용될 수 있다. 방법(800)은 또한 디코더(400)와 같은 디코더에서 메커니즘(600)에 따라 시간적 스케일링을 지원하기 위해 비트스트림을 인코딩할 수 있다.
방법(800)은 인코더가 복수의 이미지를 포함하는 비디오 시퀀스를 수신하고 예를 들어 사용자 입력에 기초하여 그 비디오 시퀀스를 비트스트림으로 인코딩하기로 결정할 때 시작될 수 있다. 비디오 시퀀스는 인코딩 전에 추가 분할을 위해 그림/이미지/프레임으로 분할된다. 단계 801에서, 복수의 픽처가 제1 슬라이스를 포함하는 복수의 슬라이스로 분할된다.
단계 803에서, 제1 슬라이스를 포함하는 복수의 슬라이스가 비트스트림으로 인코딩된다. 슬라이스는 복수의 코딩 툴 파라미터에 의해 인코딩될 수 있다. 일부 예에서, 슬라이스는 적어도 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴에 의해 인코딩된다. 구체적으로, 슬라이스는 제1 유형의 코딩 툴 파라미터에 기초하여 제1 유형의 코딩 툴에 의해 인코딩된다. 슬라이스는 또한 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩된다. 예를 들어, 이러한 코딩 툴은 ALF 코딩 툴, LMCS 코딩 툴 및/또는 스케일링 목록 파라미터 코딩 툴을 포함할 수 있다.
단계 805에서, 복수의 HPS가 비트스트림으로 인코딩된다. 복수의 HPS는 적어도 제1 HPS 및 제2 HPS를 포함할 수 있다. 단계 803에서 슬라이스를 인코딩하기 위해 사용될 때 제1 HPS는 제1 유형의 코딩 툴 파라미터를 포함하고 제2 HPS는 제2 유형의 코딩 툴 파라미터를 포함한다.
단계 807에서, 제1 슬라이스 헤더가 비트스트림으로 인코딩된다. 제1 슬라이스 헤더는 디코더에서의 디코딩을 지원하기 위해 복수의 슬라이스 중 제1 슬라이스의 인코딩을 기술한다. 예를 들어, 제1 슬라이스 헤더는 제1 HPS에 대한 제1 참조 및 제2 HPS에 대한 제2 참조를 포함할 수 있다. 따라서, 슬라이스 헤더는 상이한 유형의 복수의 HPS로부터 코딩 툴 파라미터를 상속할 수 있다. 이것은 그러한 코딩 툴 파라미터가 슬라이스 헤더로부터 생략될 수 있게 하고 중복 코딩 툴 파라미터 시그널링을 감소시킴으로써 비트스트림의 코딩 효율을 증가시킨다. 구체적인 예로서, 제1 HPS 및 제2 HPS는 ALF HPS, LMCS HPS, 스케일링리스트 파라미터 HPS 또는 이들의 조합을 포함할 수 있다.
HPS 관련 코딩 방법의 복잡성을 줄이기 위해 HPS는 다른 HPS에 저장된 코딩 툴 파라미터를 참조하지 못하도록 제한될 수 있다. 따라서, 제1 HPS 및 제2 HPS를 포함하는 단계(805)에서 인코딩된 복수의 HPS는 복수의 HPS에서 다른 HPS로부터 코딩 툴 파라미터를 참조하는 것으로부터 제한된다. 또한, HPS는 각 HPS에 temporal ID를 포함하여 temporal scaling을 지원하도록 인코딩될 수 있다. 일 예에서, 제1 HPS는 임시 ID와 연관된 액세스 유닛에 포함된다. 또한 제1 HPS는 제1 HPS를 포함하는 액세스 유닛과 연관된 동일한 임시 ID를 포함한다. 다른 예에서, 제1 슬라이스는 제1 픽처로부터 분할되고, 제1 픽처는 임시 ID와 연관된다. 이 예에서 제1 HPS에는 픽처와 관련된 임시 ID가 포함되어 있다. 또한, 시간적 스케일링을 지원하기 위해, 복수의 HPS 각각 및 각각의 슬라이스는 복수의 임시 ID 중 하나와 연관된다. 또한, 제1 임시 ID를 갖는 각 슬라이스는 제1 임시 ID보다 큰(예를 들어, 더 높은 프레임 레이트와 관련된) 제2 임시 ID를 갖는 임의의 HPS를 참조하는 것이 제한된다. 이는 낮은 프레임 레이트와 관련된 슬라이스가 더 높은 프레임 레이트와 관련된 HPS를 참조하지 않도록 보장한다. 이러한 HPS는 시간적 스케일링 메커니즘에 따라 낮은 프레임 레이트가 사용될 때 무시되기 때문이다.
단계 809에서, 비트스트림이 메모리에 저장된다. 요청 시, 비트스트림은 예를 들어 송신기를 통해 디코더를 향해 전달될 수 있다.
도 9는 HPS를 사용하여 비트스트림(500)과 같은 비트스트림으로부터 비디오 시퀀스를 디코딩하는 예시적인 방법(900)의 흐름도이다. 방법(900)은 방법(100)을 수행할 때 코덱 시스템(200), 디코더(400) 및/또는 비디오 코딩 장치(700)와 같은 디코더에 의해 사용될 수 있다. 방법(900)의 결과는 또한 디코더에서 메커니즘(600)에 따른 시간적 스케일링을 지원하기 위해 사용될 수 있다. 방법(900)은 인코더(300)와 같은 인코더로부터 비트스트림을 수신하는 것에 응답하여 채택될 수 있고, 따라서 방법(900)은 방법(800)에 응답하여 채택될 수 있다.
방법(900)은 예를 들어 방법(800)의 결과로서 디코더가 비디오 시퀀스를 나타내는 코딩된 데이터의 비트스트림을 수신하기 시작할 때 시작할 수 있다. 단계 901에서, 비트스트림이 디코더에서 수신된다. 비트스트림은 제1 HPS 및 제2 HPS를 포함하는 복수의 HPS를 포함한다. 제1 HPS는 제1 유형의 HPS이며 제1 유형의 코딩 툴 파라미터를 포함한다. 제2 HPS는 제2 유형의 HPS이며 제2 유형의 코딩 툴 파라미터를 포함한다. 비트스트림은 또한 슬라이스 헤더 및 슬라이스 헤더와 관련된 슬라이스를 포함한다.
단계 903에서, 디코더는 슬라이스 헤더가 제1 HPS에 대한 제1 참조 및 제2 HPS에 대한 제2 참조를 포함한다고 결정한다. 따라서, 슬라이스 헤더는 상이한 유형의 복수의 HPS로부터 코딩 툴 파라미터를 상속할 수 있다. 이것은 그러한 코딩 툴 파라미터가 슬라이스 헤더로부터 생략될 수 있게 하고 중복 코딩 툴 파라미터 시그널링을 감소시킴으로써 비트스트림의 코딩 효율을 증가시킨다. 구체적인 예로서, 제1 HPS 및 제2 HPS는 ALF HPS, LMCS HPS, 스케일링리스트 파라미터 HPS 또는 이들의 조합을 포함할 수 있다.
단계 905에서, 디코더는 슬라이스 헤더가 제1 참조 및 제2 참조를 포함한다는 결정에 기초하여 제1 유형의 코딩 툴 파라미터 및 제2 유형의 코딩 툴 파라미터를 사용하여 슬라이스를 디코딩할 수 있다. HPS 관련 코딩 방법의 복잡성을 줄이기 위해 HPS는 다른 HPS에 저장된 코딩 툴 파라미터를 참조하지 못하도록 제한될 수 있다. 따라서, 제1 HPS 및 제2 HPS를 포함하는 단계 901에서 비트스트림에서 수신된 복수의 HPS는 복수의 HPS에서 다른 HPS로부터 코딩 툴 파라미터를 참조하는 것이 제한된다. 또한, HPS는 각 HPS에 임시 ID를 포함하여 시간적 스케일링을 지원하도록 코딩될 수 있다. 일 예에서, 제1 HPS는 임시 ID와 연관된 액세스 유닛에 포함된다. 또한 제1 HPS는 제1 HPS를 포함하는 액세스 유닛과 연관된 동일한 임시 ID를 포함한다. 다른 예에서, 제1 슬라이스는 제1 픽처로부터 분할되고, 제1 픽처는 임시 ID와 연관된다. 이 예에서 제1 HPS에는 그림과 관련된 임시 ID가 포함되어 있다. 또한, 시간적 스케일링을 지원하기 위해, 복수의 HPS 각각 및 각각의 슬라이스는 복수의 임시 ID 중 하나와 연관된다. 또한, 제1 임시 ID를 갖는 각 슬라이스는 제1 임시 ID보다 큰(예를 들어, 더 높은 프레임 레이트와 관련된) 제2 임시 ID를 갖는 임의의 HPS를 참조하는 것이 제한된다. 이것은 낮은 프레임 레이트와 관련된 슬라이스가 더 높은 프레임 레이트와 관련된 HPS를 참조하지 않도록 보장한다. 이러한 HPS는 시간적 스케일링 메커니즘에 따라 낮은 프레임 레이트가 사용될 때 무시되기 때문이다.
단계 907에서, 디코더는 디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 슬라이스를 포워딩할 수 있다.
도 10은 HPS를 사용하여 비트스트림(500)과 같은 비트스트림에서 이미지의 비디오 시퀀스를 코딩하기 위한 예시적인 시스템(1000)의 개략도이다. 시스템(1000)은 코덱 시스템(200), 인코더(300), 디코더(400) 및/또는 비디오 코딩 장치(700)와 같은 인코더 및 디코더에 의해 구현될 수 있다. 또한, 시스템(1000)은 방법(100, 800 및/또는 900)을 구현할 때 적용될 수 있다. 또한, 시스템(1000)은 메커니즘(600)과 관련하여 논의된 바와 같이 시간적 스케일링을 지원하기 위해 사용될 수 있다.
시스템(1000)은 비디오 인코더(1002)를 포함한다. 비디오 인코더(1002)는 복수의 픽처를 복수의 슬라이스로 분할하기 위한 분할 모듈(1001)을 포함한다. 비디오 인코더(1002)는 복수의 슬라이스를 비트스트림으로 인코딩하기 위한 인코딩 모듈(1003)을 더 포함하며, 여기서 슬라이스는 적어도 제1 유형의 코딩 툴 파라미터에 기초한 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩된다. 인코딩 모듈(1003)은 또한 제1 HPS 및 제2 HPS를 비트스트림으로 인코딩하기 위한 것이며, 제1 HPS는 제1 유형의 코딩 툴 파라미터를 포함하고 제2 HPS는 제2 유형의 코딩 툴 파라미터를 포함한다. 인코딩 모듈(1003)은 또한 제1 슬라이스 헤더를 복수의 슬라이스 중 제1 슬라이스의 인코딩을 설명하는 비트스트림으로 인코딩하기 위한 것이며, 여기서 제1 슬라이스 헤더는 제1 HPS에 대한 제1 참조 및 제2 HPS에 대한 제2 참조를 포함한다. 비디오 인코더(1002)는 디코더를 향한 통신을 위해 비트스트림을 저장하기 위한 저장 모듈(1005)을 더 포함한다. 비디오 인코더(1002)는 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴에 기초하여 디코더에서 슬라이스를 디코딩하는 것을 지원하기 위해 제1 HPS 및 제2 HPS로 비트스트림을 전송하기 위한 전송 모듈(1005)을 더 포함한다. 비디오 인코더(1002)는 방법(800)의 임의의 단계를 수행하도록 추가로 구성될 수 있다.
시스템(1000)은 또한 비디오 디코더(1010)를 포함한다. 비디오 디코더(1010)는 제1 유형의 코딩 툴 파라미터를 포함하는 HPS, 제2 유형의 코딩 툴 파라미터를 포함하는 제2 HPS, 슬라이스 헤더 및 슬라이스 헤더와 연관된 슬라이스를 포함하는 비트스트림을 수신하기 위한 수신 모듈(1011)을 포함한다. 비디오 디코더(1010)는 슬라이스 헤더가 제1 HPS에 대한 제1 참조 및 제2 HPS에 대한 제2 참조를 포함한다고 결정하기 위한 결정 모듈(1013)을 더 포함한다. 비디오 디코더(1010)는 슬라이스 헤더가 제1 참조 및 제2 참조를 포함한다는 결정에 기초하여 제1 유형의 코딩 툴 파라미터 및 제2 유형의 코딩 툴 파라미터를 사용하여 슬라이스를 디코딩하기 위한 디코딩 모듈(1015)을 더 포함한다. 비디오 디코더(1010)는 디코딩된 비디오 시퀀스의 일부로서 디스플레이를 위해 슬라이스를 포워딩하기 위한 포워딩 모듈(1017)을 더 포함한다. 비디오 디코더(1010)는 방법(900)의 임의의 단계를 수행하도록 추가로 구성될 수 있다.
제1 구성 요소와 제2 구성 요소 사이의 라인, 트레이스 또는 다른 매체를 제외하고 개재 구성 요소가 없을 때 제1 구성 요소는 제2 구성 요소에 직접 연결된다. 제1 구성 요소와 제2 구성 요소 사이에 라인, 트레이스 또는 다른 매체 이외의 개재 구성 요소가 있을 때 제1 구성 요소는 제2 구성 요소에 간접적으로 결합된다. 용어 "결합" 및 그 변형은 직접 결합 및 간접 결합을 모두 포함한다. 용어 "약"의 사용은 달리 명시되지 않는 한 후속 숫자의 ±10%를 포함하는 범위를 의미한다.
또한, 여기에 설명된 예시적인 방법의 단계가 반드시 설명된 순서대로 수행되어야 하는 것은 아니며, 그러한 방법의 단계의 순서는 단지 예시적인 것으로 이해되어야 한다는 것을 이해해야 한다. 이러한 방법에 포함되고, 특정 단계는 본 개시 내용의 다양한 실시 관점와 일치하는 방법에서 생략되거나 조합될 수 있다.
본 개시에서 여러 실시예가 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해할 수 있다. 본 실시예는 제한적인 것이 아니라 예시적인 것으로 간주되어야 하며, 그 의도는 여기에 제공된 자세한 내용에 제한되지 않는다. 예를 들어, 다양한 요소 또는 구성 요소는 다른 시스템에서 결합 또는 통합될 수 있거나, 특정 기능이 생략되거나 구현되지 않을 수 있다.
또한, 다양한 실시예에서 개별적이거나 별개로 설명되고 예시된 기술, 시스템, 서브 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 구성 요소, 기술 또는 방법과 결합되거나 통합될 수 있다. 변경, 대체 및 변경의 다른 예는 당업자에 의해 확인될 수 있고 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.

Claims (25)

  1. 디코더에서 실행되는 방법으로서,
    상기 디코더의 수신기가 복수의 파라미터 세트, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 나타내는 데이터를 포함하는 비트스트림을 수신하는 단계 - 상기 복수의 파라미터 세트는 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 파라미터 세트 및 제2 유형의 코딩 툴 파라미터를 포함하는 제2 파라미터 세트를 포함하고, 상기 복수의 파라미터 세트 각각은 상기 복수의 파라미터 세트 중 다른 파라미터 세트로부터 코딩 툴 파라미터를 참조하는 것이 제한됨 -;
    상기 디코더의 프로세서가 상기 슬라이스 헤더가 상기 제1 파라미터 세트에 대한 제1 레퍼런스 및 상기 제2 파라미터 세트에 대한 제2 레퍼런스를 포함하는 것으로 결정하는 단계; 및
    상기 프로세서가 상기 슬라이스 헤더가 제1 레퍼런스 및 제2 레퍼런스를 포함한다는 결정에 기초하여 상기 슬라이스를 나타내는 데이터, 상기 제1 유형의 코딩 툴 파라미터 및 상기 제2 유형의 코딩 툴 파라미터를 사용하여 상기 슬라이스를 디코딩하는 단계
    를 포함하는 디코더에서 실행되는 방법.
  2. 제1항에 있어서,
    상기 디코더에서 실행되는 방법은:
    상기 프로세서가 디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 슬라이스를 포워딩하는 단계
    를 더 포함하는 디코더에서 실행되는 방법.
  3. 제1항에 있어서,
    상기 제1 파라미터 세트는 적응형 루프 필터(adaptive loop filter, ALF) 파라미터 세트, 크로마 스케일링과의 루마 매핑(luma mapping with chroma scaling, LMCS) 파라미터 세트, 스케일링 리스트 파라미터 파라미터 세트(scaling list parameters parameter set), 또는 이것들의 조합을 포함하는, 디코더에서 실행되는 방법.
  4. 제1항에 있어서,
    상기 제2 파라미터 세트는 적응형 루프 필터(ALF) 파라미터 세트, 크로마 스케일링과의 루마 매핑(LMCS) 파라미터 세트, 스케일링 리스트 파라미터 파라미터 세트, 또는 이것들의 조합을 포함하는, 디코더에서 실행되는 방법.
  5. 제1항에 있어서,
    상기 제1 파라미터 세트는 임시 식별자(ID)와 연관된 액세스 유닛에 포함되고, 상기 제1 파라미터 세트는 상기 제1 파라미터 세트를 포함하는 상기 액세스 유닛과 연관된 상기 임시 ID를 포함하는, 디코더에서 실행되는 방법.
  6. 제1항에 있어서,
    상기 슬라이스는 픽처의 일부이고, 상기 픽처는 임시 식별자(ID)와 연관되며, 상기 제1 파라미터 세트는 상기 픽처와 연관된 상기 임시 ID를 포함하는, 디코더에서 실행되는 방법.
  7. 제1항에 있어서,
    상기 비트스트림은 상기 슬라이스를 포함하는 하나 이상의 슬라이스를 각각 포함하는 복수의 픽처를 더 포함하고, 각각의 파라미터 세트 및 각각의 슬라이스는 복수의 임시 ID 중 하나와 연관되며, 제1 임시 ID를 가진 각각의 슬라이스는 상기 제1 임시 ID보다 큰 제2 임시 ID로 임의의 파라미터 세트를 참조하는 것이 제한되는, 디코더에서 실행되는 방법.
  8. 인코더에서 실행되는 방법으로서,
    상기 인코더의 프로세서가 복수의 픽처를 복수의 슬라이스로 분할하는 단계;
    상기 프로세서가 상기 복수의 슬라이스를 비트스트림을 인코딩하는 단계 - 상기 슬라이스는 적어도 제1 유형의 코딩 툴 파라미터에 기초한 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩됨 - ;
    상기 프로세서가 제1 파라미터 세트 및 제2 파라미터 세트를 포함하는 복수의 파라미터 세트를 상기 비트스트림으로 인코딩하는 단계 - 상기 제1 파라미터 세트는 상기 제1 유형의 코딩 툴 파라미터를 포함하고 상기 제2 파라미터 세트는 상기 제2 유형의 코딩 툴 파라미터를 포함하고, 상기 복수의 파라미터 세트 각각은 상기 복수의 파라미터 세트 중 다른 파라미터 세트로부터 코딩 툴 파라미터를 참조하는 것이 제한됨 - ; 및
    상기 프로세서가 상기 복수의 슬라이스 중 제1 슬라이스의 인코딩을 설명하는 상기 비트스트림으로 슬라이스 헤더를 인코딩하는 단계 - 상기 슬라이스 헤더는 상기 제1 파라미터 세트에 대한 제1 레퍼런스 및 상기 제2 파라미터 세트에 대한 제2 레퍼런스를 포함함 -
    를 포함하는 인코더에서 실행되는 방법.
  9. 제8항에 있어서,
    상기 인코더에서 실행되는 방법은:
    상기 프로세서에 결합된 메모리가 디코더와의 통신을 위해 상기 비트스트림을 저장하는 단계
    를 더 포함하는 인코더에서 실행되는 방법.
  10. 제8항에 있어서,
    상기 제1 파라미터 세트는 적응형 루프 필터(ALF) 파라미터 세트, 크로마 스케일링과의 루마 매핑(LMCS) 파라미터 세트, 스케일링 리스트 파라미터 파라미터 세트, 또는 이것들의 조합을 포함하는, 인코더에서 실행되는 방법.
  11. 제8항에 있어서,
    상기 제2 파라미터 세트는 적응형 루프 필터(ALF) 파라미터 세트, 크로마 스케일링과의 루마 매핑(LMCS) 파라미터 세트, 스케일링 리스트 파라미터 파라미터 세트, 또는 이것들의 조합을 포함하는, 인코더에서 실행되는 방법.
  12. 제8항에 있어서,
    상기 비트스트림은 상기 슬라이스를 포함하는 하나 이상의 슬라이스를 각각 포함하는 복수의 픽처를 더 포함하고, 상기 제1 파라미터 세트는 임시 식별자(ID)와 연관된 액세스 유닛에 포함되고, 상기 제1 파라미터 세트는 상기 제1 파라미터 세트를 포함하는 상기 액세스 유닛과 연관된 상기 임시 ID를 포함하는, 인코더에서 실행되는 방법.
  13. 제8항에 있어서,
    상기 제1 슬라이스는 제1 픽처로 분할되고, 상기 제1 픽처는 임시 식별자(ID)와 연관되며, 상기 제1 파라미터 세트는 상기 픽처와 연관된 상기 임시 ID를 포함하는, 인코더에서 실행되는 방법.
  14. 제8항에 있어서,
    각각의 상기 복수의 파라미터 세트 및 각각의 상기 슬라이스는 복수의 임시 ID 중 하나와 연관되며, 제1 임시 ID를 가진 각각의 슬라이스는 상기 제1 임시 ID보다 큰 제2 임시 ID로 임의의 파라미터 세트를 참조하는 것이 제한되는, 인코더에서 실행되는 방법.
  15. 비디오 코딩 장치로서,
    프로세서, 상기 프로세서에 결합된 수신기, 상기 프로세서에 결합된 메모리 및 상기 프로세서에 결합된 전송기를 포함하며, 상기 프로세서, 수신기, 메모리 및 전송기는 제1항 내지 제14항 중 어느 한 항에 따른 방법을 수행하도록 구성되어 있는, 비디오 코딩 장치.
  16. 비 일시적 컴퓨터 판독 가능형 매체로서,
    비디오 코딩 장치가 사용하기 위한 컴퓨터 프로그램 제품을 포함하며, 프로세서에 의해 실행될 때 상기 비디오 코딩 장치로 하여금 제1항 내지 제14항 중 어느 한 항에 따른 방법을 수행하도록 상기 컴퓨터 프로그램 제품은 상기 비 일시적 컴퓨터 판독 가능형 매체에 저장된 컴퓨터 실행 가능형 명령을 포함하는, 비 일시적 컴퓨터 판독 가능형 매체.
  17. 디코더로서,
    복수의 파라미터 세트, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 나타내는 데이터를 포함하는 비트스트림을 수신하도록 구성되어 있는 수신 유닛 - 상기 복수의 파라미터 세트는 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 파라미터 세트 및 제2 유형의 코딩 툴 파라미터를 포함하는 제2 파라미터 세트를 포함하고, 상기 복수의 파라미터 세트 각각은 상기 복수의 파라미터 세트 중 다른 파라미터 세트로부터 코딩 툴 파라미터를 참조하는 것이 제한됨 -;
    상기 슬라이스 헤더가 상기 제1 파라미터 세트에 대한 제1 레퍼런스 및 상기 제2 파라미터 세트에 대한 제2 레퍼런스를 포함하는 것으로 결정하도록 구성되어 있는 결정 유닛;
    상기 슬라이스 헤더가 제1 레퍼런스 및 제2 레퍼런스를 포함한다는 결정에 기초하여 상기 슬라이스를 나타내는 데이터, 상기 제1 유형의 코딩 툴 파라미터 및 상기 제2 유형의 코딩 툴 파라미터를 사용하여 상기 슬라이스를 디코딩하도록 구성되어 있는 디코딩 유닛
    을 포함하는 디코더.
  18. 제17항에 있어서,
    상기 디코더는:
    디코딩된 비디오 시퀀스의 일부로서 표시하기 위해 상기 슬라이스를 포워딩하도록 구성되어 있는 포워딩 유닛
    을 더 포함하는 디코더.
  19. 인코더로서,
    복수의 픽처를 복수의 슬라이스로 분할하도록 구성되어 있는 분할 유닛; 및
    상기 복수의 슬라이스를 비트스트림을 인코딩하고 - 상기 슬라이스는 적어도 제1 유형의 코딩 툴 파라미터에 기초한 제1 유형의 코딩 툴 및 제2 유형의 코딩 툴 파라미터에 기초한 제2 유형의 코딩 툴에 의해 인코딩됨 - ; 제1 파라미터 세트 및 제2 파라미터 세트를 포함하는 복수의 파라미터 세트를 상기 비트스트림으로 인코딩하며 - 상기 제1 파라미터 세트는 상기 제1 유형의 코딩 툴 파라미터를 포함하고 상기 제2 파라미터 세트는 상기 제2 유형의 코딩 툴 파라미터를 포함하고, 상기 복수의 파라미터 세트 각각은 상기 복수의 파라미터 세트 중 다른 파라미터 세트로부터 코딩 툴 파라미터를 참조하는 것이 제한됨 - ; 그리고 상기 복수의 슬라이스 중 제1 슬라이스의 인코딩을 설명하는 상기 비트스트림으로 슬라이스 헤더를 인코딩하도록 구성되어 있는 인코딩 유닛 - 상기 슬라이스 헤더는 상기 제1 파라미터 세트에 대한 제1 레퍼런스 및 상기 제2 파라미터 세트에 대한 제2 레퍼런스를 포함함 - ;
    을 포함하는 인코더.
  20. 제19항에 있어서,
    상기 인코더는:
    디코더와의 통신을 위해 상기 비트스트림을 저장하도록 구성되어 있는 저장 유닛
    을 더 포함하는 인코더.
  21. 비디오 코딩 장치로서,
    제1항 내지 제14항 중 어느 한 항에 따른 방법을 수행하기 위한 프로세싱 회로를 포함하는 비디오 코딩 장치.
  22. 비 일시적 저장 매체로서,
    인코딩된 비트스트림을 포함하며, 상기 비트스트림은 복수의 파라미터 세트, 슬라이스 헤더, 및 상기 슬라이스 헤더와 연관된 슬라이스를 나타내는 데이터를 포함하고, 상기 복수의 파라미터 세트는 제1 유형의 코딩 툴 파라미터(coding tool parameter)를 포함하는 제1 파라미터 세트 및 제2 유형의 코딩 툴 파라미터를 포함하는 제2 파라미터 세트를 포함하고, 상기 슬라이스 헤더는 상기 제1 파라미터 세트에 대한 제1 레퍼런스 및 상기 제2 파라미터 세트에 대한 제2 레퍼런스를 포함하고, 상기 제1 파라미터 세트 및 상기 제2 파라미터 세트는 상이한 코딩 툴 파라미터를 보유하는 상이한 유형에 속하고, 상기 복수의 파라미터 세트 각각은 상기 복수의 파라미터 세트 중 다른 파라미터 세트로부터 코딩 툴 파라미터를 참조하는 것이 제한되는, 비 일시적 저장 매체.
  23. 삭제
  24. 삭제
  25. 삭제
KR1020217016061A 2018-11-07 2019-11-06 비디오 인코더, 비디오 디코더 및 대응 방법 KR102670878B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862756983P 2018-11-07 2018-11-07
US62/756,983 2018-11-07
PCT/US2019/060113 WO2020097232A1 (en) 2018-11-07 2019-11-06 Header parameter set for video coding

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247017642A Division KR20240091060A (ko) 2018-11-07 2019-11-06 비디오 인코더, 비디오 디코더 및 대응 방법

Publications (2)

Publication Number Publication Date
KR20210080533A KR20210080533A (ko) 2021-06-30
KR102670878B1 true KR102670878B1 (ko) 2024-05-29

Family

ID=70611094

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217016061A KR102670878B1 (ko) 2018-11-07 2019-11-06 비디오 인코더, 비디오 디코더 및 대응 방법

Country Status (8)

Country Link
US (1) US20210258598A1 (ko)
EP (1) EP3864842A4 (ko)
JP (2) JP7354241B2 (ko)
KR (1) KR102670878B1 (ko)
CN (2) CN113056911A (ko)
BR (1) BR112021008659A2 (ko)
MX (1) MX2021005355A (ko)
WO (1) WO2020097232A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020156528A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Filtering processes based on in-loop reshaping
WO2020156547A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer resetting for intra block copy in video coding
EP3915265A4 (en) 2019-03-01 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. DIRECTION-BASED PREDICTION FOR INTRA BLOCK COPY IN VIDEO CODING
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
WO2020181434A1 (en) * 2019-03-08 2020-09-17 Zte Corporation Parameter set signaling in digital video
CN117499644A (zh) 2019-03-14 2024-02-02 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
WO2020192612A1 (en) * 2019-03-23 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Default in-loop reshaping parameters
WO2020204413A1 (ko) * 2019-04-03 2020-10-08 엘지전자 주식회사 복원 픽처를 수정하는 비디오 또는 영상 코딩
BR112021022174A2 (pt) 2019-05-11 2021-12-21 Beijing Bytedance Network Tech Co Ltd Método para processar dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento e meio de gravação
KR20220024142A (ko) * 2019-06-24 2022-03-03 인터디지털 브이씨 홀딩스 인코포레이티드 하이 레벨 구문 요소들을 이용하여 디코딩 데이터를 시그널링하기 위한 방법 및 장치
JP7303367B2 (ja) * 2019-07-08 2023-07-04 エルジー エレクトロニクス インコーポレイティド スケーリングリストデータのシグナリングに基づくビデオまたは画像コーディング
MX2022000110A (es) 2019-07-10 2022-02-10 Beijing Bytedance Network Tech Co Ltd Identificacion de muestras para la copia intra-bloque en codificacion de video.
CN117560490A (zh) 2019-07-27 2024-02-13 北京字节跳动网络技术有限公司 根据参考图片类型使用工具的限制
EP4029245A4 (en) 2019-10-12 2022-11-23 Beijing Bytedance Network Technology Co., Ltd. HIGH LEVEL SYNTAX FOR VIDEO CODING TOOLS
US11451811B2 (en) * 2020-04-05 2022-09-20 Tencent America LLC Method and apparatus for video coding
US11711518B2 (en) 2020-09-17 2023-07-25 Lemon Inc. Decoding capability information storage in video coding
US20220109856A1 (en) * 2020-10-06 2022-04-07 Samsung Electronics Co., Ltd. Access of essential video coding (evc) slices in a file
US11611752B2 (en) 2020-10-07 2023-03-21 Lemon Inc. Adaptation parameter set storage in video coding
WO2024079334A1 (en) * 2022-10-13 2024-04-18 Telefonaktiebolaget Lm Ericsson (Publ) Video encoder and video decoder
CN117492702B (zh) * 2023-12-29 2024-04-02 成都凯迪飞研科技有限责任公司 一种大小端数据流的转换方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343465A1 (en) * 2012-06-26 2013-12-26 Qualcomm Incorporated Header parameter sets for video coding

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2051527A1 (en) * 2007-10-15 2009-04-22 Thomson Licensing Enhancement layer residual prediction for bit depth scalability using hierarchical LUTs
US9060174B2 (en) * 2010-12-28 2015-06-16 Fish Dive, Inc. Method and system for selectively breaking prediction in video coding
CN103096054B (zh) * 2011-11-04 2015-07-08 华为技术有限公司 一种视频图像滤波处理方法和装置
WO2013109505A2 (en) * 2012-01-19 2013-07-25 Vid Scale, Inc. Methods, apparatus and systems for signaling video coding adaptation parameters
US9351016B2 (en) * 2012-04-13 2016-05-24 Sharp Kabushiki Kaisha Devices for identifying a leading picture
CN104380749A (zh) 2012-04-16 2015-02-25 诺基亚公司 用于视频编码的方法和装置
US9813705B2 (en) * 2012-04-26 2017-11-07 Qualcomm Incorporated Parameter set coding
US9602827B2 (en) * 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9912966B2 (en) * 2014-01-03 2018-03-06 Nokia Technologies Oy Parameter set coding
CN107534769B (zh) 2015-04-17 2021-08-03 交互数字麦迪逊专利控股公司 用于高动态范围视频译码的色度增强滤波
WO2021055114A1 (en) * 2019-09-20 2021-03-25 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
CN114600462A (zh) * 2019-10-25 2022-06-07 夏普株式会社 用于在视频编码中发送信号通知图片信息的***和方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130343465A1 (en) * 2012-06-26 2013-12-26 Qualcomm Incorporated Header parameter sets for video coding

Also Published As

Publication number Publication date
BR112021008659A2 (pt) 2021-08-31
JP2023156358A (ja) 2023-10-24
JP2022506623A (ja) 2022-01-17
US20210258598A1 (en) 2021-08-19
CN113056911A (zh) 2021-06-29
KR20210080533A (ko) 2021-06-30
EP3864842A4 (en) 2021-12-08
EP3864842A1 (en) 2021-08-18
CN114189694B (zh) 2022-11-08
JP7354241B2 (ja) 2023-10-02
CN114189694A (zh) 2022-03-15
MX2021005355A (es) 2021-06-30
WO2020097232A1 (en) 2020-05-14

Similar Documents

Publication Publication Date Title
KR102670878B1 (ko) 비디오 인코더, 비디오 디코더 및 대응 방법
KR102661416B1 (ko) 인코더, 디코더 및 대응하는 방법
WO2020056357A1 (en) Slicing and tiling for sub-image signaling in video coding
JP7368477B2 (ja) ビデオエンコーダ、ビデオデコーダ、及び対応する方法
WO2020226991A1 (en) Hypothetical reference decoder for gradual decoding refresh
US20230344999A1 (en) Explicit Address Signaling In Video Coding
KR20210135621A (ko) 비디오 코딩에서 슬라이스 엔트리 포인트
US11425377B2 (en) Arbitrary and wrap-around tile grouping
JP7383795B2 (ja) ビデオコーディングにおけるalf aps制約
KR20240091060A (ko) 비디오 인코더, 비디오 디코더 및 대응 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant