Nothing Special   »   [go: up one dir, main page]

KR20220165277A - 비디오 코딩에서 변환 스킵 블록들에 대한 최소 허용 양자화 - Google Patents

비디오 코딩에서 변환 스킵 블록들에 대한 최소 허용 양자화 Download PDF

Info

Publication number
KR20220165277A
KR20220165277A KR1020227039256A KR20227039256A KR20220165277A KR 20220165277 A KR20220165277 A KR 20220165277A KR 1020227039256 A KR1020227039256 A KR 1020227039256A KR 20227039256 A KR20227039256 A KR 20227039256A KR 20220165277 A KR20220165277 A KR 20220165277A
Authority
KR
South Korea
Prior art keywords
video
mode
equal
block
chroma
Prior art date
Application number
KR1020227039256A
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 KR20220165277A publication Critical patent/KR20220165277A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • 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/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

비디오 프로세싱 방법은 규칙에 따라 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하며, 여기서 규칙은 팔레트 모드의 인에이블과 비디오 영역의 코딩 유형 사이의 관계를 지정한다. 비디오 영역은 비디오의 코딩 블록을 나타낼 수 있다.

Description

비디오 코딩에서 변환 스킵 블록들에 대한 최소 허용 양자화
관련 출원들의 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2020년 4월 10일에 출원된 국제 특허 출원 제PCT/CN2020/084291호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원의 전체 개시내용은 참조에 의해 본 출원의 개시내용의 일부로서 포함된다.
기술 분야
본 문서는 비디오 및 이미지 코딩 및 디코딩 기술들에 관한 것이다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크들에서 가장 많은 대역폭 사용을 차지한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
개시된 기술들은 참조 픽처들이 비디오 코딩 또는 디코딩에서 사용되는 비디오 또는 이미지 디코더 또는 인코더 실시예들에 의해 사용될 수 있다.
하나의 예시적인 양상에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 영역과 비디오 영역의 코딩된 표현 사이의 변환을 위해, 비디오 영역의 크로마 블록 크기와 색상 포맷 사이의 관계를 정의하는 신택스 규칙에 따라 코딩된 표현을 파싱하는 단계 및 신택스 규칙에 따라 파싱을 수행하는 것에 의해 변환을 수행하는 단계를 포함한다.
다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 속성 및 비디오의 크로마 포맷에 기초하여, 비디오의 코딩 트리 노드의 코딩 모드를 결정하는 단계 및 결정된 코딩 모드를 사용하여 비디오의 코딩된 표현과 코딩 트리 노드의 비디오 블록 사이의 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 규칙에 기초하여, 비디오의 비디오 영역에서 특정 크기의 크로마 블록들이 허용되는지 여부를 결정하는 단계 및 결정에 기초하여 비디오 영역과 비디오 영역의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오 조건에 대해 코딩 모드의 사용을 허용하는 규칙에 기초하여, 코딩 모드가 비디오 영역에 대해 허용된다고 결정하는 단계 및 결정에 기초하여 비디오 영역 내의 픽셀들의 코딩된 표현과 비디오 영역의 픽셀들 사이의 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은 비디오 코딩 모드를 사용하여 비디오의 비디오 블록과 비디오 블록의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 코딩 모드를 시그널링하는 신택스 요소는 규칙에 기초하여 코딩된 표현에 선택적으로 포함된다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 크로마 블록이 임계 크기보다 작은 크기를 갖는 것으로 인해, 크로마 블록과 크로마 블록의 코딩된 표현 사이의 변환 동안 사용되는 변환 유형이 대응하는 루마 블록 변환에 사용되는 변환 유형과 상이하다고 결정하는 단계 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오 영역의 코딩 조건에 기초하여, 비디오 영역의 코딩된 표현과 비디오 영역의 픽셀 값들 사이의 변환 동안 최소 크로마 블록 규칙이 시행되는지 여부를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 4:2:2 포맷의 비디오 영역의 코딩된 표현과 비디오 영역의 픽셀 값들 사이의 변환을 위해, 최소 크로마 블록 규칙이 비디오 영역에 대해 인에이블되는지 여부에 기초하여 변환에 사용될 모드 유형을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오 블록의 코딩된 표현과 비디오의 비디오 블록 사이의 변환을 위해, 변환 동안 사용되는 모드 유형 또는 비디오 블록의 치수에 기초하여, 변환 동안 블록 분할이 허용되는지 여부를 결정하는 단계; 및 결정을 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 세그먼트의 코딩된 표현과 비디오 세그먼트 사이의 변환을 위해, 크기 MxN의 크로마 블록에 대해 특수 프로세싱 모드를 적용하도록 결정하는 단계 - M 및 N은 정수들임 -; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은 규칙에 따라 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하며, 여기서 규칙은 팔레트 모드의 인에이블과 비디오 영역의 코딩 유형 사이의 관계를 지정한다.
다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은 규칙에 따라 제1 비디오 영역 및 제2 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하며; 여기서 규칙은 제1 블록이 인트라 블록 복사 모드에 있고 제2 블록이 팔레트 모드에 있는 경우에 비디오의 크로마 성분들에 대한 디블로킹 필터의 경계 강도(bs)가 0으로 설정된다는 것을 지정한다.
다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하며, 여기서 포맷 규칙은 비디오의 입력 비트 깊이에 관련된 변수가 비트스트림의 프로파일에 따라 제약된다는 것을 지정한다.
다른 예시적인 양상에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하며, 여기서 포맷 규칙은 최소 허용 양자화 파라미터를 나타내는 변수가 비트스트림의 프로파일에 따라 제약된다는 것을 지정한다.
또 다른 예시적인 양상에서, 위에서 설명된 방법은 프로세서를 포함하는 비디오 인코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 양상에서, 위에서 설명된 방법은 프로세서를 포함하는 비디오 디코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 양상에서, 이러한 방법들은 프로세서 실행 가능 명령어들 형태로 구체화되고 컴퓨터 판독 가능 프로그램 매체에 저장될 수 있다.
이들 및 다른 양상들이 본 문서에서 더 설명된다.
도 1은 인트라 블록 복사 코딩 툴의 예를 도시한다.
도 2는 팔레트 모드로 코딩되는 블록의 예를 도시한다.
도 3은 팔레트 엔트리들을 시그널링하는 데 팔레트 예측자를 사용하는 것의 예를 도시한다.
도 4는 수평 트래버스 스캔(horizontal traverse scan) 및 수직 트래버스 스캔(vertical traverse scan)의 예들을 도시한다.
도 5는 팔레트 인덱스들의 코딩의 예들을 도시한다.
도 6은 67 개의 인트라 예측 모드의 예를 도시한다.
도 7은 현재 블록의 좌측 이웃 및 위쪽 이웃의 예들을 도시한다.
도 8은 ALF 필터 형상들(크로마: 5x5 다이아몬드 형상, 루마: 7x7 다이아몬드 형상)의 예들을 도시한다.
도 9는 서브샘플링된 라플라시안 계산의 예를 도시한다.
도 10은 가상 경계들에서의 수정된 블록 분류의 예를 도시한다.
도 11은 가상 경계들에서의 루마 성분에 대한 수정된 ALF 필터링의 예시적인 예시이다.
도 12는 EO에서의 픽셀 분류를 위한 4 개의 1-D 3-픽셀 패턴의 예들을 도시한다.
도 13은 4 개의 밴드가 함께 그룹화되어 그의 시작 밴드 위치에 의해 표현되는 것을 도시한다.
도 14는 CIIP 가중치 도출에서 사용되는 상단 이웃 블록 및 좌측 이웃 블록을 도시한다.
도 15는 LMCS(luma mapping with chroma scaling) 아키텍처를 도시한다.
도 16은 SCIPU의 예들을 도시한다.
도 17a 및 도 17b는 본 문서에서 설명되는 기술들을 구현하는 데 사용되는 하드웨어 플랫폼의 예들의 블록 다이어그램들을 도시한다.
도 18은 예시적인 비디오 프로세싱 방법에 대한 플로차트이다.
도 19는 공간 병합 후보들의 위치들의 예들을 도시한다.
도 20은 공간 병합 후보들의 중복성 검사를 위해 고려되는 후보 쌍들의 예들을 도시한다.
도 21은 예시적인 비디오 코딩 시스템을 예시하는 블록 다이어그램이다.
도 22는 개시된 기술의 일부 실시예들에 따른 인코더를 예시하는 블록 다이어그램이다.
도 23은 개시된 기술의 일부 실시예들에 따른 디코더를 예시하는 블록 다이어그램이다.
도 24a 내지 도 24d는 개시된 기술의 일부 실시예들에 따른 예시적인 비디오 프로세싱 방법들에 대한 플로차트들이다.
본 문서는 압축 해제되거나 디코딩된 디지털 비디오 또는 이미지들의 품질을 개선시키기 위해 이미지 또는 비디오 비트스트림들의 디코더에 의해 사용될 수 있는 다양한 기술들을 제공한다. 간결함을 위해, "비디오"라는 용어는 픽처들의 시퀀스(전통적으로 비디오라고 불림) 및 개별 이미지들 양쪽 모두를 포함하도록 사용된다. 게다가, 비디오 인코더는 또한 추가의 인코딩에 사용되는 디코딩된 프레임들을 재구성하기 위해 인코딩 프로세스 동안 이러한 기술들을 구현할 수 있다.
섹션 표제들은 이해의 편의를 위해 본 문서에서 사용되며 실시예들 및 기술들을 대응하는 섹션들로 제한하지 않는다. 이에 따라, 하나의 섹션으로부터의 실시예들은 다른 섹션들로부터의 실시예들과 결합될 수 있다.
1. 간략한 요약
이 문서는 비디오 코딩 기술들에 관한 것이다. 구체적으로, 이는 비디오 코딩에서 기본 색상들 기반 표현을 이용하는 팔레트 코딩에 관련되어 있다. 이는 HEVC와 같은 기존의 비디오 코딩 표준, 또는 완성될 표준(다목적 비디오 코딩(Versatile Video Coding))에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준들 또는 비디오 코덱에 적용 가능할 수 있다.
2. 초기 논의
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래의 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 이름의 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET(Joint Video Expert Team)가 만들어졌다.
최신 버전의 VVC 초안, 즉 다목적 비디오 코딩(Versatile Video Coding)(초안 4)은 http://phenix.it-sudparis.eu/jvet/doc_end_user/current_document.php?id=5755에 나와 있을 수 있다.
VTM이라고 명명된 VVC의 최신 참조 소프트웨어는 https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-5.0에 나와 있을 수 있다.
2.1 인트라 블록 복사
현재 픽처 참조(current picture referencing)라고도 하는 인트라 블록 복사(IBC)는 HEVC 스크린 콘텐츠 코딩 확장들(HEVC-SCC) 및 현재 VVC 테스트 모델(VTM-4.0)에 채택되었다. IBC는 모션 보상이라는 개념을 인터 프레임 코딩(inter-frame coding)으로부터 인트라 프레임 코딩(intra-frame coding)으로 확장시킨다. 도 1에 나타낸 바와 같이, IBC가 적용될 때 현재 블록이 동일한 픽처 내의 참조 블록에 의해 예측된다. 참조 블록 내의 샘플들은 현재 블록이 코딩되거나 디코딩되기 전에 이미 재구성되어 있어야만 한다. IBC가, 대부분의 카메라로 캡처된 시퀀스들에 대해서는 그다지 효율적이지 않지만, 스크린 콘텐츠에 대해서는 상당한 코딩 이득을 보여준다. 그 이유는, 스크린 콘텐츠 픽처에서의 아이콘들 및 텍스트 문자들과 같은, 많은 반복 패턴들이 있기 때문이다. IBC는 이러한 반복 패턴들 사이의 중복성을 효과적으로 제거할 수 있다. HEVC-SCC에서, 인터 코딩된 코딩 유닛(CU)은, 현재 픽처를 그의 참조 픽처로서 선택하는 경우, IBC를 적용할 수 있다. 이 경우에 MV는 블록 벡터(BV)라고 재명명되고, BV는 항상 정수 픽셀 정밀도를 갖는다. 메인 프로파일 HEVC와 호환되도록, 현재 픽처는 디코딩된 픽처 버퍼(Decoded Picture Buffer, DPB)에서 "장기(long-term)" 참조 픽처라고 표시된다. 유사하게, 다중 뷰/3D 비디오 코딩 표준들에서, 인터 뷰(inter-view) 참조 픽처가 또한 "장기" 참조 픽처라고 표시된다는 점에 유의해야 한다.
BV를 따라가서 그의 참조 블록을 찾은 후에, 참조 블록을 복사하는 것에 의해 예측이 생성될 수 있다. 잔차는 원래 신호들로부터 참조 픽셀들을 감산하는 것에 의해 얻어질 수 있다. 이어서 다른 코딩 모드들에서와 같이 변환 및 양자화가 적용될 수 있다.
도 1은 인트라 블록 복사의 예시이다.
그렇지만, 참조 블록이 픽처 외부에 있거나, 현재 블록과 중첩되거나, 재구성된 영역 외부에 있거나, 또는 일부 제약들에 의해 제한되는 유효 영역 외부에 있을 때, 일부 또는 모든 픽셀 값들이 정의되지 않는다. 기본적으로, 그러한 문제를 처리하는 두 가지 해결책이 있다. 하나는, 예를 들면, 비트스트림 적합성에서, 그러한 상황을 허용하지 않는 것이다. 다른 하나는 그러한 정의되지 않은 픽셀 값들에 대해 패딩을 적용하는 것이다. 이하의 하위 섹션들은 해결책들에 대해 상세히 설명한다.
2.2 HEVC 스크린 콘텐츠 코딩 확장들에서의 IBC
HEVC의 스크린 콘텐츠 코딩 확장들에서, 블록이 현재 픽처를 참조로서 사용할 때, 이하의 명세 텍스트에 나타낸 바와 같이, 전체 참조 블록이 이용 가능한 재구성된 영역 내에 있도록 보장되어야 한다.
변수들 offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00001
참조 픽처가 현재 픽처일 때, 루마 모션 벡터 mvLX가 다음 제약들을 준수해야 한다는 것이 비트스트림 적합성의 요구사항이다:
- ( xCb, yCb )와 동일하게 설정된 ( xCurr, yCurr ) 및 ( xPb + (mvLX[ 0 ] >> 2) - offsetX, yPb + ( mvLX[ 1 ] >> 2 ) - offsetY )와 동일하게 설정된 이웃 루마 위치 ( xNbY, yNbY )를 입력들로 하여 6.4.1절에 명시된 바와 같은 z-스캔 순서 블록 이용 가능성에 대한 도출 프로세스가 호출될 때, 출력은 TRUE와 동일해야 한다.
- ( xCb, yCb )와 동일하게 설정된 ( xCurr, yCurr ) 및 ( xPb + (mvLX[ 0 ] >> 2) + nPbW - 1 + offsetX, yPb + (mvLX[ 1 ] >> 2) + nPbH - 1 + offsetY)와 동일하게 설정된 이웃 루마 위치 ( xNbY, yNbY )를 입력들로 하여 6.4.1절에 명시된 바와 같은 z-스캔 순서 블록 이용 가능성에 대한 도출 프로세스가 호출될 때, 출력은 TRUE와 동일해야 한다.
- 다음 조건들 중 하나 또는 양쪽 모두가 참이어야 한다:
- ( mvLX[ 0 ] >> 2 ) + nPbW + xB1 + offsetX의 값이 0보다 작거나 같다.
- ( mvLX[ 1 ] >> 2 ) + nPbH + yB1 + offsetY의 값이 0보다 작거나 같다.
- 다음 조건이 참이어야 한다:
Figure pct00002
따라서, 참조 블록이 현재 블록과 중첩되거나 참조 블록이 픽처 외부에 있는 경우가 발생하지 않을 것이다. 참조 또는 예측 블록을 패딩할 필요가 없다.
2.3 VVC 테스트 모델에서의 IBC
현재 VVC 테스트 모델, 즉 VTM-4.0 설계에서, 전체 참조 블록은 현재 코딩 트리 유닛(CTU)과 함께 있어야 하며, 현재 블록과 중첩되지 않는다. 따라서, 참조 또는 예측 블록을 패딩할 필요가 없다. IBC 플래그는 현재 CU의 예측 모드로서 코딩된다. 따라서, 각각의 CU에 대해 총 세 가지 예측 모드, 즉 MODE_INTRA, MODE_INTER 및 MODE_IBC가 있다.
2.3.1 IBC 병합 모드
IBC 병합 모드에서, IBC 병합 후보들 리스트에서의 엔트리를 가리키는 인덱스가 비트스트림으로부터 파싱된다. IBC 병합 리스트의 구성은 이하의 일련의 단계들에 따라 요약될 수 있다:
Figure pct00003
단계 1: 공간 후보들의 도출
Figure pct00004
단계 2: HMVP 후보들의 삽입
Figure pct00005
단계 3: 쌍별 평균 후보들의 삽입
공간 병합 후보들의 도출에서, 도 19에 묘사된 위치들에 위치하는 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 도출 순서는 A1, B1, B0, A0 및 B2이다. 위치 A1, B1, B0, A0의 임의의 PU가 (예를 들면, 다른 슬라이스 또는 타일에 속하기 때문에) 이용 가능하지 않거나 또는 IBC 모드로 코딩되지 않을 때에만 위치 B2가 고려된다. 위치 A1에 있는 후보가 추가된 후에, 나머지 후보들의 삽입은 중복성 검사를 거치며, 이는 동일한 모션 정보를 가진 후보들이 리스트로부터 제외됨으로써 코딩 효율이 개선되도록 보장한다. 계산 복잡도를 감소시키기 위해, 언급된 중복성 검사에서 모든 가능한 후보 쌍들이 고려되는 것은 아니다. 그 대신에 도 20에서 화살표로 연결된 쌍들만이 고려되고, 중복성 검사에 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 리스트에 추가된다.
공간 후보들의 삽입 이후에, IBC 병합 리스트 크기가 최대 IBC 병합 리스트 크기보다 여전히 더 작은 경우, HMVP 테이블로부터의 IBC 후보들이 삽입될 수 있다. HMVP 후보들을 삽입할 때 중복성 검사가 수행된다.
마지막으로, 쌍별 평균 후보들이 IBC 병합 리스트에 삽입된다.
병합 후보에 의해 식별되는 참조 블록이 픽처 외부에 있거나, 현재 블록과 중첩되거나, 재구성된 영역 외부에 있거나 또는 일부 제약들에 의해 제한되는 유효 영역 외부에 있을 때, 병합 후보는 유효하지 않은 병합 후보라고 불린다.
유효하지 않은 병합 후보들이 IBC 병합 리스트에 삽입될 수 있다는 점에 유의한다.
2.3.2 IBC AMVP 모드
IBC AMVP 모드에서, IBC AMVP 리스트에서의 엔트리를 가리키는 AMVP 인덱스가 비트스트림으로부터 파싱된다. IBC AMVP 리스트의 구성은 이하의 일련의 단계들에 따라 요약될 수 있다:
Figure pct00006
단계 1: 공간 후보들의 도출
o 이용 가능한 후보가 발견될 때까지 A0, A1을 검사한다.
o 이용 가능한 후보가 발견될 때까지 B0, B1, B2를 검사한다.
Figure pct00007
단계 2: HMVP 후보들의 삽입
Figure pct00008
단계 3: 제로 후보들의 삽입
공간 후보들의 삽입 이후에, IBC AMVP 리스트 크기가 최대 IBC AMVP 리스트 크기보다 여전히 더 작은 경우, HMVP 테이블로부터의 IBC 후보들이 삽입될 수 있다.
마지막으로, 제로 후보들이 IBC AMVP 리스트에 삽입된다.
2.4 팔레트 모드
팔레트 모드를 뒷받침하는 기본 아이디어는 CU에서의 샘플들이 작은 대표 색상 값 세트에 의해 표현된다는 것이다. 이 세트는 팔레트라고 지칭된다. 이스케이프(escape) 심벌에 뒤이어 (어쩌면 양자화된) 성분 값들을 시그널링하는 것에 의해 팔레트 외부에 있는 샘플을 나타내는 것도 가능하다. 이러한 종류의 샘플은 이스케이프 샘플이라고 불린다. 팔레트 모드는 도 2에 예시되어 있다.
도 2는 팔레트 모드로 코딩되는 블록의 예를 도시한다.
2.5 HEVC 스크린 콘텐츠 코딩 확장들(HEVC-SCC)에서의 팔레트 모드
HEVC-SCC에서의 팔레트 모드에서, 팔레트와 인덱스 맵을 코딩하는 데 예측 방식이 사용된다.
2.5.1 팔레트 엔트리들의 코딩
팔레트 엔트리들의 코딩을 위해, 팔레트 예측자가 유지된다. 팔레트는 물론 팔레트 예측자의 최대 크기는 SPS에서 시그널링된다. HEVC-SCC에서, palette_predictor_initializer_present_flag가 PPS에 도입된다. 이 플래그가 1일 때, 팔레트 예측자를 초기화하기 위한 엔트리들은 비트스트림에서 시그널링된다. 팔레트 예측자는 각각의 CTU 행, 각각의 슬라이스 및 각각의 타일의 시작 부분에서 초기화된다. palette_predictor_initializer_present_flag의 값에 따라, 팔레트 예측자는 0으로 리셋되거나 PPS에서 시그널링되는 팔레트 예측자 초기화기 엔트리들을 사용하여 초기화된다. HEVC-SCC에서, PPS 레벨에서의 팔레트 예측자 초기화의 명시적인 디스에이블을 가능하게 하기 위해 크기 0의 팔레트 예측자 초기화기가 인에이블되었다.
팔레트 예측자에서의 각각의 엔트리에 대해, 그것이 현재 팔레트의 일부인지 여부를 나타내기 위해 재사용 플래그가 시그널링된다. 이것은 도 3에 예시되어 있다. 재사용 플래그들은 제로들의 런 길이 코딩을 사용하여 송신된다. 이후에, 새로운 팔레트 엔트리들의 수가 차수 0의 지수 골롬 코드를 사용하여 시그널링된다. 마지막으로, 새로운 팔레트 엔트리들에 대한 성분 값들이 시그널링된다.
도 3은 팔레트 엔트리들을 시그널링하기 위해 팔레트 예측자를 사용하는 것의 예를 도시한다.
2.5.2 팔레트 인덱스들의 코딩
팔레트 인덱스들은 도 4에 도시된 바와 같이 수평 및 수직 트래버스 스캔들을 사용하여 코딩된다. 스캔 순서는 palette_transpose_flag를 사용하여 비트스트림에서 명시적으로 시그널링된다. 나머지 하위 섹션에서는, 스캔이 수평이라고 가정된다.
도 4는 수평 트래버스 스캔 및 수직 트래버스 스캔의 예들을 도시한다.
팔레트 인덱스들은 두 가지 주요 팔레트 샘플 모드: 'INDEX' 및 'COPY_ABOVE'를 사용하여 코딩된다. 이전에 설명된 바와 같이, 이스케이프 심벌이 또한 'INDEX' 모드로서 시그널링되고 최대 팔레트 크기와 동일한 인덱스를 할당받는다. 상단 행 또는 이전 모드가 'COPY_ABOVE'였을 때를 제외하고 모드는 플래그를 사용하여 시그널링된다. 'COPY_ABOVE' 모드에서, 위의 행에 있는 샘플의 팔레트 인덱스가 복사된다. 'INDEX' 모드에서는, 팔레트 인덱스가 명시적으로 시그널링된다. 'INDEX' 모드 및 'COPY_ABOVE' 모드 양쪽 모두에 대해, 역시 동일한 모드를 사용하여 코딩되는 후속 샘플들의 수를 지정하는 런 값(run value)이 시그널링된다. 이스케이프 심벌이 'INDEX' 또는 'COPY_ABOVE' 모드에서 런의 일부일 때, 각각의 이스케이프 심벌에 대해 이스케이프 성분 값들이 시그널링된다. 팔레트 인덱스들의 코딩은 도 5에 예시되어 있다.
이 신택스 순서는 다음과 같이 달성된다. 먼저 CU에 대한 인덱스 값들의 수가 시그널링된다. 이에 이어서 절단 이진 코딩(truncated binary coding)을 사용하는 전체 CU에 대한 실제 인덱스 값들의 시그널링이 뒤따른다. 인덱스들의 수는 물론 인덱스 값들 양쪽 모두는 바이패스 모드로 코딩된다. 이는 인덱스 관련 바이패스 빈들을 함께 그룹화한다. 이어서 팔레트 샘플 모드(필요한 경우)와 런이 인터리빙된 방식으로 시그널링된다. 마지막으로, 전체 CU에 대한 이스케이프 샘플들에 대응하는 성분 이스케이프 값들이 함께 그룹화되고 바이패스 모드로 코딩된다.
추가적인 신택스 요소인 last_run_type_flag는 인덱스 값들을 시그널링한 후에 시그널링된다. 이 신택스 요소는, 인덱스들의 수와 함께, 블록에서의 마지막 런에 대응하는 런 값을 시그널링할 필요성을 없애준다.
HEVC-SCC에서, 팔레트 모드는 또한 4:2:2, 4:2:0 및 단색(monochrome) 크로마 포맷들에 대해 인에이블된다. 팔레트 엔트리들 및 팔레트 인덱스들의 시그널링은 모든 크로마 포맷들에 대해 거의 동일하다. 비단색(non-monochrome) 포맷들의 경우, 각각의 팔레트 엔트리는 3 개의 성분으로 구성된다. 단색 포맷의 경우, 각각의 팔레트 엔트리는 단일 성분으로 구성된다. 서브샘플링된 크로마 방향들의 경우, 크로마 샘플들은 2로 나누어질 수 있는 루마 샘플 인덱스들과 연관된다. CU에 대한 팔레트 인덱스들을 재구성한 후에, 샘플이 그와 연관된 단일 성분만을 갖는 경우, 팔레트 엔트리의 첫 번째 성분만이 사용된다. 시그널링에서의 유일한 차이점은 이스케이프 성분 값들에 대한 것이다. 각각의 이스케이프 샘플에 대해, 시그널링되는 이스케이프 성분 값들의 수는 해당 샘플과 연관된 성분들의 수에 따라 상이할 수 있다.
VVC에서, 이중 트리 코딩 구조는 인트라 슬라이스들을 코딩하는 데 사용되며, 따라서 루마 성분과 2 개의 크로마 성분이 상이한 팔레트 및 팔레트 인덱스들을 가질 수 있다. 추가적으로, 2 개의 크로마 성분은 동일한 팔레트 및 팔레트 인덱스들을 공유한다.
도 5는 팔레트 인덱스들의 코딩의 예들을 도시한다.
2.6 VVC에서의 인트라 모드 코딩
자연 비디오에 제시되는 임의의 에지 방향들을 캡처하기 위해, VTM5에서의 방향성(directional) 인트라 모드들의 수가 HEVC에서 사용되는 바와 같은 33 개로부터 65 개로 확장된다. HEVC에 없는 새로운 방향성 모드들은 도 6에서 적색 점선 화살표들로서 묘사되며, 플래너(planar) 및 DC 모드들은 동일하게 유지된다. 이러한 보다 조밀한 방향성 인트라 예측 모드들은 모든 블록 크기들에 대해 그리고 루마 인트라 예측과 크로마 인트라 예측 양쪽 모두에 대해 적용된다.
VTM5에서, 여러 종래의 앵귤러(angular) 인트라 예측 모드들은 정사각형이 아닌 블록들에 대해 광각 인트라 예측 모드들로 적응적으로 대체된다.
HEVC에서, 모든 인트라 코딩된 블록은 정사각형 형상을 가지며, 그의 측면 각각의 길이는 2의 거듭제곱이다. 따라서, DC 모드를 사용하여 인트라 예측자를 생성하기 위해 나눗셈 연산들이 필요하지 않다. VTM5에서, 블록들은 일반적인 경우에 블록마다 나눗셈 연산의 사용을 필요로 하는 직사각형 형상을 가질 수 있다. DC 예측을 위한 나눗셈 연산들을 피하기 위해, 긴 쪽 측면만이 정사각형이 아닌 블록들에 대한 평균을 계산하는 데 사용된다
도 6은 67 개의 인트라 예측 모드의 예를 도시한다.
최고 확률 모드(most probable mode, MPM) 리스트 생성의 복잡도를 낮게 유지하기 위해, 2 개의 이용 가능한 이웃 인트라 모드를 고려하는 것에 의해 6 개의 MPM을 갖는 인트라 모드 코딩 방법이 사용된다. MPM 리스트를 구성하는 데 다음 세 가지 측면이 고려된다:
- 디폴트 인트라 모드들
- 이웃 인트라 모드들
- 도출된 인트라 모드들
MRL 및 ISP 코딩 툴들이 적용되는지 여부에 관계없이 인트라 블록들에 대해 통합된 6-MPM 리스트가 사용된다. MPM 리스트는 좌측 및 위쪽 이웃 블록의 인트라 모드들에 기초하여 구성된다. 좌측 블록의 모드가 Left로서 표기되고 위쪽 블록의 모드가 Above로서 표기된다고 가정하면, 통합된 MPM 리스트는 다음과 같이 구성된다(좌측 블록과 위쪽 블록은 도 7에 도시되어 있다).
도 7은 현재 블록의 좌측 이웃 및 위쪽 이웃의 예를 도시한다.
- 이웃 블록이 이용 가능하지 않을 때, 그의 인트라 모드는 기본적으로 플래너로 설정된다.
- 모드 Left 와 모드 Above 양쪽 모두가 비-앵귤러(non-angular) 모드들인 경우:
o MPM 리스트
Figure pct00009
{Planar, DC, V, H, V-4, V+4}
- 모드 Left 및 모드 Above 중 하나가 앵귤러 모드이고 다른 하나가 비-앵귤러인 경우:
o 모드 Max LeftAbove 중에서 큰 쪽 모드로서 설정한다
o MPM 리스트
Figure pct00010
{Planar, Max, DC, Max -1, Max +1, Max -2}
- LeftAbove가 양쪽 모두 앵귤러이고 이들이 상이한 경우:
o 모드 Max를 LeftAbove 중에서 큰 쪽 모드로서 설정한다
o 모드 Left와 모드 Above의 차이가 2 내지 62의 범위(경계 포함)에 있는 경우
Figure pct00011
MPM 리스트
Figure pct00012
{Planar, Left, Above, DC, Max -1, Max +1}
o 그렇지 않은 경우
Figure pct00013
MPM 리스트
Figure pct00014
{Planar, Left, Above, DC, Max -2, Max +2}
- LeftAbove가 양쪽 모두 앵귤러이고 이들이 동일한 경우:
o MPM 리스트
Figure pct00015
{Planar, Left, Left -1, Left +1, DC, Left -2}
게다가, MPM 인덱스 코드워드의 첫 번째 빈은 CABAC 콘텍스트 코딩된다. 현재 인트라 블록이 MRL 인에이블되는지, ISP 인에이블되는지 또는 정규 인트라 블록(normal intra block)인지 여부에 대응하여, 총 3 개의 콘텍스트가 사용된다.
6-MPM 리스트 생성 프로세스 동안, 고유 모드들만이 MPM 리스트에 포함될 수 있도록 중복된 모드들을 제거하기 위해 프루닝이 사용된다. 61 개의 비-MPM 모드의 엔트로피 코딩을 위해, 절단된 이진 코드(TBC)가 사용된다.
크로마 인트라 모드 코딩의 경우, 크로마 인트라 모드 코딩을 위해 총 8 개의 인트라 모드가 허용된다. 이러한 모드들은 5 개의 전통적인 인트라 모드와 3 개의 교차 성분 선형 모델 모드(CCLM, LM_A 및 LM_L)를 포함한다. 크로마 모드 시그널링 및 도출 프로세스는 표 2-4에 나와 있다. 크로마 모드 코딩은 대응하는 루마 블록의 인트라 예측 모드에 직접 의존한다. I 슬라이스들에서 루마 및 크로마 성분들에 대한 개별적인 블록 분할 구조가 인에이블되기 때문에, 하나의 크로마 블록이 다수의 루마 블록들에 대응할 수 있다. 따라서, 크로마 DM 모드의 경우, 현재 크로마 블록의 중앙 위치를 커버하는 대응하는 루마 블록의 인트라 예측 모드가 직접 상속된다.
표 2-4 - cclm이 인에이블되어 있을 때 루마 모드로부터의 크로마 예측 모드의 도출
Figure pct00016
2.7 양자화된 잔차 블록 차분 펄스 코드 변조(QR-BDPCM)
JVET-M0413에서, 스크린 콘텐츠를 효율적으로 코딩하기 위해 양자화된 잔차 블록 차분 펄스 코드 변조(QR-BDPCM)가 제안된다.
QR-BDPCM에서 사용되는 예측 방향들은 수직 예측 모드 및 수평 예측 모드일 수 있다. 인트라 예측은 인트라 예측과 유사한 예측 방향(수평 또는 수직 예측)에서의 샘플 복사에 의해 전체 블록에 대해 행해진다. 잔차는 양자화되고, 양자화된 잔차와 그의 예측자 (수평 또는 수직) 양자화된 값 사이의 델타가 코딩된다. 이것은 이하에 의해 설명될 수 있다: M(행) × N(열) 크기의 블록에 대해,
Figure pct00017
을 위쪽 또는 좌측 블록 경계 샘플들로부터의 필터링되지 않은 샘플들을 사용하여 수평으로 인트라 예측을 수행하는 것(예측된 블록을 가로질러 좌측 이웃 픽셀 값을 라인 단위로 복사하는 것) 또는 수직으로 인트라 예측을 수행하는 것(상단 이웃 라인을 예측된 블록에서의 각각의 라인으로 복사하는 것) 이후의 예측 잔차라고 하자.
Figure pct00018
이 잔차
Figure pct00019
의 양자화된 버전을 나타낸다고 하고, 여기서 잔차는 원래 블록 값과 예측된 블록 값 간의 차이이다. 이어서 블록 DPCM이 양자화된 잔차 샘플들에 적용되어, 요소들
Figure pct00020
를 갖는 수정된 M × N 어레이
Figure pct00021
을 결과한다. 수직 BDPCM이 시그널링될 때:
Figure pct00022
수평 예측의 경우, 유사한 규칙들이 적용되고, 잔차 양자화된 샘플들은 다음과 같이 획득된다:
Figure pct00023
잔차 양자화된 샘플들
Figure pct00024
는 디코더로 송신된다.
디코더 측에서, 위의 계산들이 반대로 행해져
Figure pct00025
을 생성한다. 수직 예측의 경우,
Figure pct00026
수평 예측의 경우,
Figure pct00027
역양자화된 잔차들
Figure pct00028
는 인트라 블록 예측 값들에 가산되어 재구성된 샘플 값들을 생성한다.
이 방식의 주요 이점은 역 DPCM이 계수들이 파싱될 때 계수 파싱 동안 예측자를 단순히 가산하는 것으로 즉각적으로 행해질 수 있거나 또는 파싱 이후에 수행될 수 있다는 것이다.
2.8 적응적 루프 필터
VTM5에서는, 블록 기반 필터 적응을 갖는 적응적 루프 필터(ALF)가 적용된다. 루마 성분의 경우, 로컬 구배들의 방향 및 활성도(activity)에 기초하여, 각각의 4x4 블록에 대해 25 개의 필터 중 하나가 선택된다.
2.8.1.1 필터 형상
VTM5에서는, (도 8에 도시된 바와 같은) 2 개의 다이아몬드 필터 형상이 사용된다. 7×7 다이아몬드 형상은 루마 성분에 적용되고 5x5 다이아몬드 형상은 크로마 성분들에 적용된다.
도 8은 ALF 필터 형상들(크로마: 5x5 다이아몬드 형상, 루마: 7x7 다이아몬드 형상)의 예들을 도시한다.
2.8.1.2 블록 분류
루마 성분의 경우, 각각의 4x4 블록은 25 개의 클래스 중 하나로 분류된다. 분류 인덱스 C는 다음과 같이 그의 방향성 D 및 활성도
Figure pct00029
의 양자화된 값에 기초하여 도출된다:
Figure pct00030
D 및
Figure pct00031
를 계산하기 위해, 수평 방향, 수직 방향 및 2 개의 대각선 방향의 구배들이 먼저 1-D 라플라시안을 사용하여 계산된다:
Figure pct00032
여기서 인덱스들 i 및 j는 4x4 블록에서의 좌측 상부 샘플의 좌표들을 지칭하고, R(i,j)는 좌표 (i,j)에 있는 재구성된 샘플을 나타낸다.
블록 분류의 복잡도를 감소시키기 위해, 서브샘플링된 1-D 라플라시안 계산이 적용된다. 도 9에 도시된 바와 같이, 동일한 서브샘플링된 위치들이 모든 방향들의 구배 계산에 사용된다.
도 9는 서브샘플링된 라플라시안 계산의 예를 도시한다. (a) 수직 구배에 대한 서브샘플링된 위치들, (b) 수평 구배에 대한 서브샘플링된 위치들, (c) 대각선 구배에 대한 서브샘플링된 위치들 및 (d) 대각선 구배에 대한 서브샘플링된 위치들.
이어서, 수평 방향 및 수직 방향의 구배들의 D 최댓값 및 최솟값은 다음과 같이 설정된다:
Figure pct00033
2 개의 대각선 방향의 구배의 최댓값과 최솟값은 다음과 같이 설정된다:
Figure pct00034
방향성 D의 값을 도출하기 위해, 이러한 값들은 서로 비교되고 2 개의 임계치 t1 및 t2와 비교된다:
단계 1.
Figure pct00035
Figure pct00036
양쪽 모두가 참인 경우, D는 0으로 설정된다.
단계 2.
Figure pct00037
인 경우, 단계 3으로부터 계속되고; 그렇지 않은 경우, 단계 4로부터 계속된다.
단계 3.
Figure pct00038
인 경우, D는 2로 설정되고; 그렇지 않은 경우 D는 1로 설정된다.
단계 4.
Figure pct00039
인 경우, D는 4로 설정되고; 그렇지 않은 경우 D는 3으로 설정된다.
활성도 값 A는 다음과 같이 계산된다:
Figure pct00040
A는 0 내지 4의 범위(경계 포함)로 더 양자화되고, 양자화된 값은
Figure pct00041
로서 표기된다.
픽처 내의 크로마 성분들에 대해, 분류 방법이 적용되지 않으며, 즉, 각각의 크로마 성분에 대해 단일 ALF 계수 세트가 적용된다.
2.8.1.3 필터 계수들 및 클리핑 값들의 기하학적 변환들
각각의 4×4 루마 블록을 필터링하기 전에, 회전 또는 대각선 및 수직 뒤집기와 같은 기하학적 변환들이, 해당 블록에 대해 계산된 구배 값들에 따라, 필터 계수들 f(k,l) 및 대응하는 필터 클리핑 값들 c(k,l)에 적용된다. 이는 필터 서포트 영역(filter support region) 내의 샘플들에 이러한 변환들을 적용하는 것과 동등하다. 아이디어는 ALF가 적용되는 상이한 블록들을 그들의 방향성을 정렬하는 것에 의해 보다 유사하게 만드는 것이다.
대각선, 수직 뒤집기 및 회전을 포함한 세 가지 기하학적 변환이 도입되며:
대각선:
Figure pct00042
수직 뒤집기:
Figure pct00043
회전:
Figure pct00044
여기서 K는 필터의 크기이고 0 ≤ k, l ≤ K-1은 계수들의 좌표들이며, 따라서 위치 (0, 0)은 좌측 상부 코너에 있고 위치 (K-1, K-1)은 우측 하부 코너에 있다. 변환들은 해당 블록에 대해 계산된 구배 값들에 따라 필터 계수들 f(k, l) 및 클리핑 값들 c(k,l)에 적용된다. 변환과 4 개의 방향의 4 개의 구배 사이의 관계는 다음 표에 요약되어 있다.
표 2-5 하나의 블록에 대해 계산된 구배와 변환들의 매핑
Figure pct00045
2.8.1.4 필터 파라미터들 시그널링
VTM5에서는, ALF 필터 파라미터들이 적응 파라미터 세트(APS)에서 시그널링된다. 하나의 APS에서, 최대 25 개의 루마 필터 계수 및 클리핑 값 인덱스 세트와 최대 1 개의 크로마 필터 계수 및 클리핑 값 인덱스 세트가 시그널링될 수 있다. 비트 오버헤드를 감소시키기 위해, 상이한 분류의 필터 계수들은 병합될 수 있다. 슬라이스 헤더에서, 현재 슬라이스에 사용되는 APS들의 인덱스들이 시그널링된다.
APS로부터 디코딩된 클리핑 값 인덱스들은 루마 클리핑 값 테이블과 크로마 클리핑 값 테이블을 사용하여 클리핑 값들을 결정할 수 있게 한다. 이러한 클리핑 값들은 내부 비트 깊이에 의존한다. 보다 정확하게는, 루마 클리핑 값 테이블과 크로마 클리핑 값 테이블은 다음 수식들에 의해 획득되며:
Figure pct00046
B는 내부 비트 깊이와 동일하고 N은 VTM5.0에서의 허용 클리핑 값들의 수인 4와 동일하다.
필터링 프로세스는 CTB 레벨에서 제어될 수 있다. ALF가 루마 CTB에 적용되는지 여부를 나타내기 위해 플래그가 항상 시그널링된다. 루마 CTB는 16 개의 고정 필터 세트 중에서 필터 세트를 선택하고 APS들로부터 필터 세트들을 선택할 수 있다. 어느 필터 세트가 적용되는지를 나타내기 위해 루마 CTB에 대해 필터 세트 인덱스가 시그널링된다. 16 개의 고정 필터 세트는 미리 정의되고 인코더와 디코더 양쪽 모두에 하드 코딩된다.
필터 계수들은 128과 동일한 노름(norm)을 사용하여 양자화된다. 곱셈 복잡도를 제한하기 위해, 비중앙 위치의 계수 값이 -27 내지 27 - 1의 범위(경계 포함)에 있어야 하도록 비트스트림 적합성이 적용된다. 중앙 위치 계수는 비트스트림에서 시그널링되지 않으며 128과 동일한 것으로 간주된다.
2.8.1.5 필터링 프로세스
디코더 측에서, CTB에 대해 ALF가 인에이블될 때, CU 내의 각각의 샘플 R(i,j)는 필터링되고, 아래에 나타낸 바와 같은 샘플 값 R'(i,j)를 결과하며,
Figure pct00047
여기서 f(k,l)은 디코딩된 필터 계수들을 나타내고, K(x,y)는 클리핑 함수이고 c(k,l)은 디코딩된 클리핑 파라미터들을 나타낸다. 변수 k와 l은
Figure pct00048
Figure pct00049
사이에서 변하며 여기서 L은 필터 길이를 나타낸다. 클리핑 함수 K(x,y) = min(y, max(-y,x))이며, 이는 함수 Clip3 (-y,y,x)에 대응한다.
2.8.1.6 라인 버퍼 감소를 위한 가상 경계 필터링 프로세스
VTM5에서는, ALF의 라인 버퍼 요구사항을 감소시키기 위해, 수평 CTU 경계들 근처의 샘플들에 대해 수정된 블록 분류 및 필터링이 이용된다. 이를 위해, 가상 경계는 도 10에 도시된 바와 같이 "N" 개의 샘플을 갖는 수평 CTU 경계를 이동시키는 것에 의해 라인으로서 정의되며 N은 루마 성분의 경우 4와 동일하고 크로마 성분의 경우 2와 동일하다.
도 10은 가상 경계들에서의 수정된 블록 분류의 예를 도시한다.
수정된 블록 분류는 도 11에 묘사된 바와 같이 루마 성분에 적용되고, 활성도 값 A는 1D 라플라시안 구배 계산에서 사용되는 샘플들의 감소된 수를 고려하여 그에 따라 스케일링된다.
필터링 프로세싱을 위해, 가상 경계들에서의 대칭적 패딩 연산이 루마 성분 및 크로마 성분 양쪽 모두에 사용된다. 도 11에 도시된 바와 같이, 필터링되는 샘플이 가상 경계 아래에 위치할 때, 가상 경계 위에 위치하는 이웃 샘플들이 패딩된다. 한편, 다른 쪽 측면들에 있는 대응하는 샘플들도, 대칭적으로, 패딩된다.
도 11은 가상 경계들에서의 루마 성분에 대한 수정된 ALF 필터링의 예들을 도시한다.
2.9 샘플 적응적 오프셋(SAO)
인코더에 의해 각각의 CTB에 대해 지정된 오프셋들을 사용하는 것에 의해 디블로킹 필터 이후에 샘플 적응적 오프셋(SAO)이 재구성된 신호에 적용된다. HM 인코더는 먼저 SAO 프로세스가 현재 슬라이스에 대해 적용되어야 하는지 여부에 대해 결정한다. SAO가 슬라이스에 대해 적용되는 경우, 각각의 CTB는 표 2-6에 나와 있는 바와 같이 5 가지 SAO 유형 중 하나로서 분류된다. SAO라는 개념은 픽셀들을 카테고리들로 분류하고 각각의 카테고리의 픽셀들에 오프셋을 가산하는 것에 의해 왜곡을 감소시키는 것이다. SAO 연산은 SAO 유형 1 내지 SAO 유형 4에서 픽셀 분류를 위해 에지 속성들을 사용하는 에지 오프셋(EO)과 SAO 유형 5에서 픽셀 분류를 위해 픽셀 강도를 사용하는 밴드 오프셋(BO)을 포함한다. 각각의 적용 가능한 CTB는 sao_merge_left_flag, sao_merge_up_flag, SAO 유형 및 4 개의 오프셋을 포함하는 SAO 파라미터들을 갖는다. sao_merge_left_flag가 1과 동일한 경우, 현재 CTB는 좌측에 있는 CTB의 SAO 유형 및 오프셋들을 재사용할 것이다. sao_merge_up_flag가 1과 동일한 경우, 현재 CTB는 위에 있는 CTB의 SAO 유형 및 오프셋들을 재사용할 것이다.
표 2-6 - SAO 유형의 명세
Figure pct00050
2.9.1 각각의 SAO 유형의 연산
에지 오프셋은, 도 12에 도시된 바와 같이, 에지 방향 정보를 고려하여 현재 픽셀 p의 분류를 위해 4 개의 1-D 3-픽셀 패턴을 사용한다. 좌에서 우로, 이들은 0도, 90도, 135도 및 45도이다.
도 12는 EO에서 픽셀 분류를 위한 4 개의 1-D 3-픽셀 패턴의 예들을 도시한다.
각각의 CTB는 표 2-7에 따라 5 가지 카테고리 중 하나로 분류된다.
표 2- 7 - EO에 대한 픽셀 분류 규칙
Figure pct00051
밴드 오프셋(BO)은 픽셀 값의 최상위 5 비트를 밴드 인덱스로서 사용하는 것에 의해 하나의 CTB 영역 내의 모든 픽셀들을 32 개의 균일 밴드로 분류한다. 환언하면, 픽셀 강도 범위는 0부터 최대 강도 값(예를 들면, 8 비트 픽셀의 경우 255)까지 32 개의 동일한 세그먼트로 나누어진다. 4 개의 인접한 밴드가 함께 그룹화되고, 각각의 그룹은 도 13에 도시된 바와 같이 그의 최좌측 위치에 의해 표시된다. 인코더는 각각의 밴드의 오프셋을 보상하는 것에 의해 최대 왜곡 감소를 갖는 그룹을 얻기 위해 모든 위치를 탐색한다.
도 13은 4 개의 밴드가 함께 그룹화되어 그의 시작 밴드 위치에 의해 표현되는 것의 예를 도시한다.
2.10 인터 및 인트라 결합 예측(CIIP)
VTM5에서, CU가 병합 모드에서 코딩될 때, CU가 적어도 64 개의 루마 샘플을 포함하는 경우(즉, CU 폭 x CU 높이가 64보다 크거나 같은 경우) 그리고 CU 폭 및 CU 높이 양쪽 모두가 128 개의 루마 샘플보다 작은 경우, 인터/인트라 결합 예측(CIIP) 모드가 현재 CU에 적용되는지를 나타내기 위해 추가적인 플래그가 시그널링된다. 그의 이름이 나타내는 바와 같이, CIIP 예측은 인터 예측 신호와 인트라 예측 신호를 결합시킨다. CIIP 모드에서의 인터 예측 신호
Figure pct00052
는 일반 병합 모드(regular merge mode)에 적용되는 동일한 인터 예측 프로세스를 사용하여 도출되고; 인트라 예측 신호
Figure pct00053
는 플래너 모드를 사용한 일반 인트라 예측(regular intra prediction) 프로세스에 따라 도출된다. 이어서, 인트라 예측 신호와 인터 예측 신호는 가중 평균을 사용하여 결합되며, 여기서 가중치 값은 다음과 같이 상단 이웃 블록 및 좌측 이웃 블록(도 14에 묘사됨)의 코딩 모드들에 따라 계산된다.
- 상단 이웃이 이용 가능하고 인트라 코딩된 경우, isIntraTop을 1로 설정하고, 그렇지 않은 경우 isIntraTop을 0으로 설정한다;
- 좌측 이웃이 이용 가능하고 인트라 코딩된 경우, isIntraLeft를 1로 설정하고, 그렇지 않은 경우 isIntraLeft를 0으로 설정한다;
- (isIntraLeft + isIntraLeft)가 2와 동일한 경우, wt는 3으로 설정된다;
- 그렇지 않고, (isIntraLeft + isIntraLeft)가 1과 동일한 경우, wt는 2로 설정된다;
- 그렇지 않은 경우, wt를 1로 설정한다.
CIIP 예측은 다음과 같이 형성된다:
Figure pct00054
도 14는 CIIP 가중치 도출에서 사용되는 상단 이웃 블록 및 좌측 이웃 블록의 예들을 도시한다.
2.11 LMCS(luma mapping with chroma scaling)
VTM5에서, LMCS(luma mapping with chroma scaling)라고 불리는 코딩 툴이 루프 필터들 이전에 새로운 프로세싱 블록으로서 추가된다. LMCS는 2 개의 주요 컴포넌트를 갖는다: 1) 적응적 구간별 선형 모델들에 기초한 루마 성분의 인루프 매핑; 2) 크로마 성분들에 대해, 루마 의존적 크로마 잔차 스케일링이 적용된다. 도 15는 디코더의 관점에서 본 LMCS 아키텍처를 도시한다. 도 15에서의 점이 찍혀 있는 블록들은 매핑된 도메인에서 프로세싱이 적용되는 곳을 나타내고; 이들은 역양자화, 역변환, 루마 인트라 예측 및 루마 예측을 루마 잔차와 함께 가산하는 것을 포함한다. 도 15에서의 패턴이 없는 블록들은 원래(즉, 매핑되지 않은) 도메인에서 프로세싱이 적용되는 곳을 나타내며; 이들은 디블로킹, ALF 및 SAO와 같은 루프 필터들, 모션 보상 예측, 크로마 인트라 예측, 크로마 예측을 크로마 잔차와 함께 가산하는 것, 및 디코딩된 픽처들을 참조 픽처들로서 저장하는 것을 포함한다. 도 15에서의 체크무늬의 블록들은, 루마 신호의 순방향 및 역방향 매핑과 루마 의존적 크로마 스케일링 프로세스를 포함한, 새로운 LMCS 기능 블록들이다. VVC에서의 대부분의 다른 툴들과 마찬가지로, LMCS는 SPS 플래그를 사용하여 시퀀스 레벨에서 인에이블/디스에이블될 수 있다.
도 15는 LMCS(luma mapping with chroma scaling) 아키텍처의 예들을 도시한다.
2.12 이중 트리 분할
현재 VVC 설계에서, I 슬라이스들의 경우, 각각의 CTU는 암시적 쿼드트리 분할을 사용하여 64x64 루마 샘플들을 갖는 코딩 유닛들로 분할될 수 있으며 이러한 코딩 유닛들은 루마 및 크로마에 대한 2 개의 개별적인 coding_tree 신택스 구조의 근간이다.
인트라 픽처에서의 이중 트리가 루마 코딩 트리와 비교하여 크로마 코딩 트리에서 상이한 분할을 적용하도록 허용하기 때문에, 이중 트리는 보다 긴 코딩 파이프라인을 도입하고, 크로마 트리에서의 QTBT MinQTSizeC 값 범위 및 MinBtSizeY와 MinTTSizeY는 2x2, 4x2 및 2x4과 같은 작은 크로마 블록들을 허용한다. 이는 실제 디코더 설계에서의 어려움들을 제공한다. 더욱이, CCLM, 플래너 및 앵귤러 모드와 같은 여러 예측 모드들은 곱셈을 필요로 한다. 앞서 언급된 문제들을 완화시키기 위해, 분할 제한으로서 이중 트리에서 작은 크로마 블록 크기들(2x2/2x4/4x2)이 제한된다.
2.13 JVET-O0050에서의 최소 크로마 인트라 예측 유닛(smallest chroma intra prediction unit, SCIPU)
작은 크로마 크기는 하드웨어 구현에 우호적이지 않다. 이중 트리의 경우에, 너무 작은 크기들을 갖는 크로마 블록들은 허용되지 않는다. 그렇지만, 단일 트리의 경우에, VVC 초안 5는 여전히 2x2, 2x4, 4x2 크로마 블록들을 허용한다. 크로마 블록의 크기를 제한하기 위해, 단일 코딩 트리에서, SCIPU는 JVET-O0050에서 크로마 블록 크기가 TH 개의 크로마 샘플보다 크거나 같고 4TH 개의 루마 샘플보다 작은 적어도 하나의 자식 루마 블록을 가지는 코딩 트리 노드로서 정의되며, 여기서 TH는 이 기고문에서 16으로 설정된다. 각각의 SCIPU에서, 모든 CB들이 인터이거나, 또는 모든 CB들이 비-인터(non-inter), 즉, 인트라 또는 IBC인 것이 요구된다. 비-인터 SCIPU의 경우에, 비-인터 SCIPU의 크로마는 더 분할되지 않아야 하고 SCIPU의 루마는 더 분할되도록 허용되는 것이 더 요구된다. 이러한 방식으로, 가장 작은 크로마 인트라 CB 크기는 16 개의 크로마 샘플이며, 2x2, 2x4, 및 4x2 크로마 CB들은 제거된다. 추가적으로, 비-인터 SCIPU의 경우에 크로마 스케일링이 적용되지 않는다.
2 개의 SCIPU 예가 도 16에 도시되어 있다. 도 16(a)에서, 8x4 크로마 샘플들의 하나의 크로마 CB 및 3 개의 루마 CB(4x8, 8x8, 4x8 루마 CB들)는 하나의 SCIPU를 형성하는데, 왜냐하면 8x4 크로마 샘플들로부터 삼진 트리(TT) 분할이 16 개의 크로마 샘플보다 작은 크로마 CB들을 결과할 것이기 때문이다. 도 16(b)에서, 4x4 크로마 샘플들의 1 개의 크로마 CB(8x4 크로마 샘플들의 좌측) 및 3 개의 루마 CB(8x4, 4x4, 4x4 루마 CB들)가 하나의 SCIPU를 형성하고 4x4 샘플들의 다른 하나의 크로마 CB(8x4 크로마 샘플들의 우측) 및 2 개의 루마 CB(8x4, 8x4 루마 CB들)는 하나의 SCIPU를 형성하는데, 왜냐하면 4x4 크로마 샘플들로부터의 이진 트리(BT) 분할이 16 개의 크로마 샘플보다 작은 크로마 CB들을 결과할 것이기 때문이다.
도 16은 SCIPU 예들을 도시한다.
SCIPU의 유형은 현재 슬라이스가 I-슬라이스이거나 또는 (VVC에서 인터 4x4가 허용되지 않기 때문에) 현재 SCIPU가 한 번 더 분할된 후에 그 내에 4x4 루마 분할을 갖는 경우 비-인터인 것으로 추론되고; 그렇지 않은 경우, SCIPU의 유형(인터 또는 비-인터)은 SCIPU 내의 CU들을 파싱하기 전에 하나의 시그널링된 플래그에 의해 표시된다.
2.14 VVC 초안 6에서의 작은 크로마 블록 제약들
VVC 초안 6(JVET-O2001-vE.docx)에서, 작은 크로마 블록들에 대한 제약들은 다음과 같이 구현된다(관련 부분은 굵은 이탤릭체 로 표시되어 있다).
Figure pct00055
Figure pct00056
Figure pct00057
Figure pct00058
2.14.1.1 코딩 유닛 신택스
Figure pct00059
Figure pct00060
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
허용된 쿼드 분할(quad split) 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 루마 샘플 단위의 코딩 블록 크기 cbSize,
- 다중 유형 트리 깊이 mttDepth,
- CTU들을 분할하기 위해 단일 트리(SINGLE_TREE) 또는 이중 트리가 사용되는지 및, 이중 트리가 사용될 때, 현재 루마 성분이 프로세싱되는지(DUAL_TREE_LUMA) 또는 크로마 성분이 프로세싱되는지(DUAL_TREE_CHROMA)를 지정하는 변수 treeType,
- 코딩 트리 노드 내부의 코딩 유닛들에 대해 인트라(MODE_INTRA), IBC(MODE_IBC), 팔레트(MODE_PLT) 및 인터 코딩 모드들이 사용될 수 있는지 여부(MODE_TYPE_ALL), 또는 인트라, IBC 및 팔레트 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTRA), 또는 인터 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTER)를 지정하는 변수 modeType.
이 프로세스의 출력은 변수 allowSplitQt이다.
변수 allowSplitQt는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowSplitQt는 FALSE와 동일하게 설정된다:
- treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 동일하고 cbSize가 MinQtSizeY보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 cbSize / SubWidthC가 MinQtSizeC보다 작거나 같다
- mttDepth가 0과 동일하지 않다
- treeType이 DUAL_TREE_CHROMA와 동일하고 (cbSize / SubWidthC )가 4보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowSplitQt는 TRUE와 동일하게 설정된다.
허용된 이진 분할 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 이진 분할 모드 btSplit,
- 루마 샘플 단위의 코딩 블록 폭 cbWidth,
- 루마 샘플 단위의 코딩 블록 높이 cbHeight,
- 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 ),
- 다중 유형 트리 깊이 mttDepth,
- 오프셋 maxMttDepth를 갖는 최대 다중 유형 트리 깊이,
- 최대 이진 트리 크기 maxBtSize,
- 최소 쿼드트리 크기 minQtSize,
- 분할 인덱스 partIdx,
- CTU들을 분할하기 위해 단일 트리(SINGLE_TREE) 또는 이중 트리가 사용되는지 및, 이중 트리가 사용될 때, 현재 루마 성분이 프로세싱되는지(DUAL_TREE_LUMA) 또는 크로마 성분이 프로세싱되는지(DUAL_TREE_CHROMA)를 지정하는 변수 treeType,
- 코딩 트리 노드 내부의 코딩 유닛들에 대해 인트라(MODE_INTRA), IBC(MODE_IBC), 팔레트(MODE_PLT) 및 인터 코딩 모드들이 사용될 수 있는지 여부(MODE_TYPE_ALL), 또는 인트라, IBC 및 팔레트 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTRA), 또는 인터 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTER)를 지정하는 변수 modeType.
이 프로세스의 출력은 변수 allowBtSplit이다.
표 6-2 - btSplit에 기초한 parallelTtSplit 및 cbSize의 명세.
Figure pct00061
변수들 parallelTtSplit 및 cbSize는 표 6-2에 지정된 바와 같이 도출된다.
변수 allowBtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 같다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER과 동일하다.
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER과 동일하다.
- cbHeight가 MaxTbSizeY보다 크다.
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR과 동일하다
- cbWidth가 MaxTbSizeY보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- cbWidth가 minQtSize보다 크다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR과 동일하다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 작거나 같다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- mttDepth가 0보다 크다
- partIdx는 1과 동일하다
- MttSplitMode[ x0 ][ y0 ][ mttDepth  1 ]이 parallelTtSplit와 동일하다
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER과 동일하다.
- cbWidth가 MaxTbSizeY보다 작거나 같다
- cbHeight가 MaxTbSizeY보다 크다.
- 그렇지 않고, 다음 조건들 모두가 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR과 동일하다
- cbWidth가 MaxTbSizeY보다 크다
- cbHeight가 MaxTbSizeY보다 작거나 같다
- 그렇지 않은 경우, allowBtSplit는 TRUE와 동일하게 설정된다.
허용된 삼진 분할 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 삼진 분할 모드 ttSplit,
- 루마 샘플 단위의 코딩 블록 폭 cbWidth,
- 루마 샘플 단위의 코딩 블록 높이 cbHeight,
- 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 ),
- 다중 유형 트리 깊이 mttDepth
- 오프셋 maxMttDepth를 갖는 최대 다중 유형 트리 깊이,
- 최대 삼진 트리 크기 maxTtSize,
- CTU들을 분할하기 위해 단일 트리(SINGLE_TREE) 또는 이중 트리가 사용되는지 및, 이중 트리가 사용될 때, 현재 루마 성분이 프로세싱되는지(DUAL_TREE_LUMA) 또는 크로마 성분이 프로세싱되는지(DUAL_TREE_CHROMA)를 지정하는 변수 treeType,
- 코딩 트리 노드 내부의 코딩 유닛들에 대해 인트라(MODE_INTRA), IBC(MODE_IBC), 팔레트(MODE_PLT) 및 인터 코딩 모드들이 사용될 수 있는지 여부(MODE_TYPE_ALL), 또는 인트라, IBC 및 팔레트 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTRA), 또는 인터 코딩 모드들만이 사용될 수 있는지 여부(MODE_TYPE_INTER)를 지정하는 변수 modeType.
이 프로세스의 출력은 변수 allowTtSplit이다.
표 6-3 - ttSplit에 기초한 cbSize의 명세.
Figure pct00062
변수 cbSize는 표 6-3에 지정된 바와 같이 도출된다.
변수 allowTtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowTtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 2 * MinTtSizeY보다 작거나 같다
- cbWidth가 Min( MaxTbSizeY, maxTtSize )보다 크다
- cbHeight가 Min( MaxTbSizeY, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowTtSplit는 TRUE와 동일하게 설정된다.
pred_mode_flag가 0과 동일한 것은 현재 코딩 유닛이 인터 예측 모드로 코딩된다는 것을 지정한다. pred_mode_flag가 1과 동일한 것은 현재 코딩 유닛이 인트라 예측 모드로 코딩된다는 것을 지정한다.
pred_mode_flag가 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cbWidth가 4와 동일하고 cbHeight가 4와 동일한 경우, pred_mode_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않고, modeType이 MODE_TYPE_INTRA와 동일한 경우, pred_mode_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않고, modeType이 MODE_TYPE_INTER와 동일한 경우, pred_mode_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않은 경우, pred_mode_flag는, 제각기, I 슬라이스를 디코딩할 때는 1과 동일한 것으로 추정되고, P 또는 B 슬라이스를 디코딩할 때는 0과 동일한 것으로 추론된다.
x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1에 대해 변수 CuPredMode[ chType ][ x ][ y ]는 다음과 같이 도출된다:
- pred_mode_flag가 0과 동일한 경우, CuPredMode[ chType ][ x ][ y ]는 MODE_INTER와 동일하게 설정된다.
- 그렇지 않은 경우(pred_mode_flag가 1과 동일한 경우), CuPredMode[ chType ][ x ][ y ]는 MODE_INTRA와 동일하게 설정된다.
pred_mode_ibc_flag가 1과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩된다는 것을 지정한다. pred_mode_ibc_flag가 0과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩되지 않는다는 것을 지정한다.
pred_mode_ibc_flag가 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cu_skip_flag[ x0 ][ y0 ]가 1과 동일하고 cbWidth가 4와 동일하며 cbHeight가 4와 동일한 경우, pred_mode_ibc_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않은 경우, cbWidth와 cbHeight 양쪽 모두가 128과 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않고, modeType이 MODE_TYPE_INTER와 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않고, treeType이 DUAL_TREE_CHROMA와 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않은 경우, pred_mode_ibc_flag는, 제각기, I 슬라이스를 디코딩할 때는 sps_ibc_enabled_flag의 값과 동일한 것으로 추론되고, P 또는 B 슬라이스를 디코딩할 때는 0과 동일한 것으로 추론된다.
pred_mode_ibc_flag가 1과 동일할 때, x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1에 대해 변수 CuPredMode[ chType ][ x ][ y ]는 MODE_IBC와 동일하게 설정된다.
3. 문제점들
1. 현재, IBC는 MODE_TYPE_INTRA로서 간주되고 따라서 작은 크로마 블록이 허용되지 않으며, 이는 불필요한 코딩 효율 손실에 이르게 한다.
2. 현재, 팔레트는 MODE_TYPE_INTRA로서 간주되고 따라서 작은 크로마 블록이 허용되지 않으며, 이는 불필요한 코딩 효율 손실에 이르게 한다.
3. 현재, 작은 크로마 블록 제약들은 색상 서브샘플링 포맷을 고려하지 않는다.
4. 현재, 작은 블록들에 대한 동일한 분할 및 예측 모드 제약들이 모든 크로마 포맷들에 적용된다. 그렇지만, 4:2:0 및 4:2:2 크로마 포맷들에서 작은 블록들에 대해 상이한 제약 메커니즘들을 설계하는 것이 바람직할 수 있다.
5. 현재, 팔레트 모드 플래그 시그널링은 modeType에 의존하며, 이는 팔레트가 작은 블록 제약들을 적용하지 않을 수 있기 때문에 바람직하지 않다.
6. 현재, IBC 모드 플래그는 cu_skip_flag가 1과 동일하지만 MODE_TYPE이 MODE_TYPE_INTRA와 동일한 P/B 슬라이스에 대해 0인 것으로 추론되며, 이는 신택스 파싱에서 불법이다.
7. 현재, 비-4x4 루마 IBC 모드는 SCIPU 루마 블록들에 대해 허용되지 않으며, 이는 바람직하지 않을 수 있고 코딩 효율 손실을 야기할 수 있다.
8. 2xH 크로마 블록이 여전히 허용되며, 이는 하드웨어 구현에 우호적이지 않다.
9. CIIP는 MODE_INTER로서 간주되지만 인트라 예측을 사용하며, 이는 일부 경우에 제약들을 위반한다.
10. SCIPU가 적용될 때, 루마 분할에 의존하여 크로마에 대한 델타 QP가 시그널링될 수 있다. 예를 들어, 현재 블록 치수가 루마 샘플 단위로 16x8이고 수직 TT를 사용하여 분할될 때, 로컬 이중 트리가 적용될 수 있다. qgOnC = qgOnC && ( cbSubdiv + 2 <= cu_chroma_qp_offset_subdiv )라고 지정된다.
따라서 cbSubdiv + 2 <= cu_chroma_qp_offset_subdiv인 경우 qgOnC가 0으로 설정된다. 이 조건부 설정은 크로마 성분이 또한 TT에 의해 분할된다고 가정한다. 로컬 이중 트리에서는, 크로마 성분이 분할되지 않을 수 있으며, 따라서 cbSubdiv가 cu_chroma_qp_offset_subdiv보다 클 수 있다. 크로마에 대한 델타 QP를 시그널링하는 것을 허용하기 위해 IsCuChromaQpOffsetCoded가 0으로 설정되어야 한다. 그렇지만, qgOnC가 0으로 설정되어 있기 때문에 IsCuChromaQpOffsetCoded는 0으로 설정되지 않는다.
11. 무손실 코딩에 대한 최대 변환 크기가 손실 코딩에 대한 최대 변환 크기와 상이하게 설정될 수 있다.
4. 기술적 해결책들 및 실시예들의 예들
아래의 목록은 예들로서 간주되어야 한다. 이러한 기술들이 좁은 의미로 해석되어서는 안 된다. 게다가, 이러한 기술들은 임의의 방식으로 조합될 수 있다.
이 문서에서, "MxN 코딩 트리 노드"는 MxN 블록(단, M은 루마 샘플 단위의 블록 폭이고 N은 루마 샘플 단위의 블록 높이임)을 나타내며, 이는, 예컨대, QT/BT/TT에 의해 더 분할될 수 있다. 예를 들어, 블록은 QT 노드, 또는 BT 노드, 또는 TT 노드일 수 있다. 코딩 트리 노드는 코딩 유닛(예를 들면, 단일 트리의 경우 3 개의 색상 성분을 갖고, 이중 트리 크로마 코딩의 경우 2 개의 크로마 색상 성분을 가지며, 이중 트리 루마 코딩의 경우 루마 색상 성분만을 가짐), 또는 루마 코딩 블록 또는 크로마 코딩 블록일 수 있다. "작은 코딩 트리 노드 유닛"은 블록 크기 MxN이 루마 샘플 단위로 32/64/128과 동일한 코딩 트리 노드를 나타낼 수 있다.
특별히 언급되지 않는 한, 코딩 블록에 대한 폭 W 및 높이 H는 루마 샘플 단위로 측정된다. 예를 들어, MxN 코딩 블록은 MxN 루마 블록 및/또는 2 개의 (M/SubWidthC) x (N/SubHeightC) 크로마 블록을 의미하며, 여기서 SubWidthC 및 SubHeightC는 아래와 같이 크로마 포맷에 의해 도출된다.
Figure pct00063
1. 작은 블록들로 분할할지 여부 및/또는 어떻게 분할할지는 색상 포맷들에 의존할 수 있다.
a. 일 예에서, 4:4:4 색상 포맷의 경우, 크로마 블록들의 크기들에 대한 제약들은 루마 블록들에 대한 해당 제약들을 따를 수 있다.
b. 일 예에서, 4:2:2 색상 포맷의 경우, 크로마 블록들의 크기들에 대한 제약들은 4:2:0 색상 포맷에 대한 해당 제약들을 따를 수 있다.
c. 일 예에서, 4:0:0 및/또는 4:4:4 크로마 포맷의 경우, 작은 블록 분할들 및/또는 예측 모드들에 대한 제약들이 적용되지 않을 수 있다.
d. 일 예에서, 작은 블록 분할들 및/또는 예측 모드들에 대한 제약들은 상이한 크로마 포맷들에 대해 상이하게 적용될 수 있다.
i. 일 예에서, 수평 BT 분할을 갖는 MxN(예컨대, 8x8) 코딩 트리 노드의 경우, 4:2:2 크로마 포맷에서, 수평 BT 분할은 크로마 블록과 루마 블록 양쪽 모두에 대해 허용될 수 있는 반면, 4:2:0 크로마 포맷에서, 수평 BT 분할은 루마 블록에 대해서는 허용되지만 크로마 블록에 대해서는 디스에이블될 수 있다.
ii. 일 예에서, 수직 BT 분할을 갖는 MxN(예컨대, 16x4) 코딩 트리 노드의 경우, 4:2:2 크로마 포맷에서, 수직 BT 분할은 크로마 블록과 루마 블록 양쪽 모두에 대해 허용될 수 있는 반면, 4:2:0 크로마 포맷에서, 수직 BT 분할은 루마 블록에 대해서는 허용되지만 크로마 블록에 대해서는 디스에이블될 수 있다.
iii. 일 예에서, 수평 TT 분할을 갖는 MxN(예컨대, 8x16) 코딩 트리 노드의 경우, 4:2:2 크로마 포맷에서, 수평 TT 분할은 크로마 블록과 루마 블록 양쪽 모두에 대해 허용될 수 있는 반면, 4:2:0 크로마 포맷에서, 수평 TT 분할은 루마 블록에 대해서는 허용되지만 크로마 블록에 대해서는 디스에이블될 수 있다.
iv. 일 예에서, 수직 TT 분할을 갖는 MxN(예컨대, 32x4) 코딩 트리 노드의 경우, 4:2:2 크로마 포맷에서, 수직 TT 분할은 크로마 블록과 루마 블록 양쪽 모두에 대해 허용될 수 있는 반면, 4:2:0 크로마 포맷에서, 수직 TT 분할은 루마 블록에 대해서는 허용되지만 크로마 블록에 대해서는 디스에이블될 수 있다.
v. 일 예에서, 4:0:0 및/또는 4:4:4 색상 포맷들의 경우, 작은 블록 제약들이 적용되지 않을 수 있다.
e. 일 예에서, SCIPU를 인에이블시킬지 여부는 색상 포맷에 의존한다.
i. 일 예에서, SCIPU는 4:2:0 및 4:2:2 색상 포맷들에 대해 인에이블된다.
ii. 일 예에서 SCIPU는 4:0:0 및/또는 4:4:4 색상 포맷에 대해 디스에이블된다.
1. 일 예에서, modeType은 4:0:0 및/또는 4:4:4 색상 포맷에 대해 항상 MODE_TYPE_ALL과 동일할 수 있다.
2. 일 예에서, modeTypeCondition은 4:0:0 및/또는 4:4:4 색상 포맷에 대해 항상 0과 동일할 수 있다.
2. 코딩 트리 노드의 (서브)블록들에 대한 예측 모드들(및/또는 modeType)을 어떻게 결정할지는 크로마 포맷들에 의존할 수 있다.
a. 일 예에서, 아래의 조건들 중 하나가 참인 경우, 이 코딩 트리 노드에 의해 분할되는 (서브)블록들의 modeType은 4:2:2 크로마 포맷의 경우 MODE_TYPE_ALL과 동일할 수 있는 반면, 4:2:0 크로마 포맷의 경우, modeType은 MODE_TYPE_INTRA 또는 MODE_TYPE_INTER와 동일할 수 있다.
i. 수평 BT 분할을 갖는 MxN(예컨대, 8x8) 코딩 트리 노드
ii. 수직 BT 분할을 갖는 MxN(예컨대, 16x4) 코딩 트리 노드
iii. 수평 TT 분할을 갖는 MxN(예컨대, 8x16) 코딩 트리 노드
iv. 수직 TT 분할을 갖는 MxN(예컨대, 32x4) 코딩 트리 노드
3. MODE_TYPE_INTRA를 MODE_TYPE_NO_INTER로 재명명하고 MODE_INTER의 사용을 제한하는 것이 제안된다.
a. 일 예에서, 코딩 유닛의 modeType이 MODE_TYPE_NO_INTER와 동일할 때, MODE_INTER가 허용되지 않을 수 있다.
4. MODE_TYPE_INTER를 MODE_TYPE_NO_INTRA로 재명명하고 MODE_INTRA의 사용을 제한하는 것이 제안된다.
a. 일 예에서, 코딩 유닛의 modeType이 MODE_TYPE_NO_INTRA와 동일할 때, MODE_INTRA가 허용되지 않을 수 있다.
5. 4:2:2 및/또는 4:0:0 및/또는 4:4:4 크로마 포맷들에서는 모드 제약 플래그가 시그널링되지 않을 수 있다.
a. 일 예에서, 모드 제약 플래그가 존재하지 않을 때, 이는 1과 동일한 것으로 추론될 수 있다.
i. 대안적으로, 모드 제약 플래그가 존재하지 않을 때, 이는 0과 동일한 것으로 추론될 수 있다.
6. 블록 폭이 M이고 블록 높이가 N인 MxN 코딩 블록에 SCIPU를 적용할지 여부 및/또는 어떻게 적용할지는 색상 포맷이 4:2:0인지 4:2:2인지에 의존할 수 있다.
a. 일 예에서, 4:2:2 색상 포맷에서, 블록 폭이 M이고 블록 높이가 N인 MxN 코딩 블록에 대해, M과 N을 곱한 것(M*N에 의해 표기됨)이 64 또는 32와 동일한 경우에만 SCIPU가 인에이블될 수 있다.
b. 일 예에서, M*N = 128인 코딩 트리 노드는 4:2:2 색상 포맷의 SCIPU 블록으로서 취급되지 않을 수 있다.
c. 일 예에서, BT 분할을 갖고 M*N = 64인 코딩 트리 노드는 4:2:2 색상 포맷의 SCIPU 블록으로 취급되지 않을 수 있다.
d. 일 예에서, split_qt_flag가 1과 동일하고 M*N = 64인 코딩 트리 노드는 4:2:2 색상 포맷의 SCIPU 블록일 수 있다.
e. 일 예에서, TT 분할을 갖고 M*N = 64인 코딩 트리 노드는 4:2:2 색상 포맷의 SCIPU 블록으로서 취급될 수 있다.
f. 일 예에서, BT 분할을 갖고 M*N = 32인 코딩 트리 노드는 4:2:2 색상 포맷의 SCIPU 블록으로서 취급될 수 있다.
g. 위의 설명에서, 4:2:2 색상 포맷의 SCIPU 블록에 대해, modeTypeCondition은 항상 1과 동일할 수 있다.
h. 위의 설명에서, 4:2:2 색상 포맷의 SCIPU 블록에 대해, 부모 노드에서의 현재 블록과 자식 리프 노드들 아래의 모든 서브블록들 양쪽 모두에 대해 MODE_TYPE_INTRA만이 허용될 수 있다.
7. 4:2:2 색상 포맷에서, SCIPU 블록의 modeTypeCondition은 항상 1과 동일할 수 있다.
a. 일 예에서, modeTypeCondition은 4:2:2 색상 포맷에 대해 0 또는 1과 동일할 수 있다.
b. 일 예에서, 4:2:2 색상 포맷의 SCIPU 블록들에 대해, modeTypeCondition이 2와 동일하지 않을 수 있다.
8. 4:2:2 색상 포맷에서, SCIPU 블록의 modeType은 항상 MODE_TYPE_INTRA와 동일할 수 있다.
a. 일 예에서, modeType은 4:2:2 색상 포맷에서 MODE_TYPE_ALL 또는 MODE_TYPE_INTRA와 동일할 수 있다.
b. 일 예에서, 4:2:2 색상 포맷의 SCIPU 블록들에 대해, MODE_TYPE_INTER가 디스에이블될 수 있다.
9. 블록 분할이 허용되는지 여부는 modeType 및/또는 블록 크기에 의존할 수 있다.
a. 일 예에서, BT 및/또는 TT 분할이 블록에 대해 허용되는지 여부는 modeType에 의존할 수 있다.
i. 일 예에서, modeType이 MODE_TYPE_INTER와 동일한 경우, BT 분할이 현재 코딩 블록에 대해 허용되지 않을 수 있다(예를 들면, allowBtSplit가 false와 동일하게 설정된다).
ii. 일 예에서, modeType이 MODE_TYPE_INTER와 동일한 경우, TT 분할이 현재 코딩 블록에 대해 허용되지 않을 수 있다(예를 들어, allowTtSplit가 false와 동일하게 설정된다).
b. 일 예에서, BT 및/또는 TT 분할이 블록에 대해 허용되는지 여부는 modeType 및 블록 크기에 의존할 수 있다.
i. 일 예에서, 블록 폭이 M이고 블록 높이가 N인 MxN 코딩 블록에 대해, M*N이 32보다 작거나 같고 modeType이 MODE_TYPE_INTER와 동일할 때, BT 분할이 허용되지 않을 수 있다(예를 들어, allowBtSplit가 false와 동일하게 설정된다).
ii. 일 예에서, 블록 폭이 M이고 블록 높이가 N인 MxN 코딩 블록에 대해, M*N이 64보다 작거나 같고 modeType이 MODE_TYPE_INTER와 동일할 때, TT 분할이 허용되지 않을 수 있다(예를 들어, allowTtSplit가 false와 동일하게 설정된다).
10. 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일할 때, 코딩 트리의 분할이 제한될 수 있다.
a. 일 예에서, 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일할 때, BT 분할이 허용되지 않을 수 있다.
b. 일 예에서, 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일할 때, TT 분할이 허용되지 않을 수 있다.
c. 일 예에서, 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일할 때, QT 분할이 허용되지 않을 수 있다.
d. 일 예에서, 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일하고 루마 블록 크기가 32보다 작거나 같을 때, BT 분할이 허용되지 않을 수 있다.
e. 일 예에서, 코딩 트리의 modeTypeCurr이 MODE_TYPE_INTER와 동일하고 루마 블록 크기가 64보다 작거나 같을 때, TT 분할이 허용되지 않을 수 있다.
11. treeType이 DUAL_TREE_LUMA인 코딩 유닛은 인터 모드로 코딩될 수 있다.
a. 일 예에서, 인터 코딩 모드, 즉 MODE_INTER로 코딩되는 코딩 유닛은 다수의 색상 성분들을 갖는 색상 포맷들에 대해서도 루마 성분만을 포함할 수 있다.
b. 일 예에서, DUAL_TREE_LUMA 블록에 대해 pred_mode_flag가 파싱될 필요가 있을 수 있다.
c. 일 예에서, 인터 모드로 코딩되는 DUAL_TREE_LUMA 블록에 대해, SINGLE_TREE에 대한 인터 모드의 동일한 제약들이 또한 적용될 수 있다.
i. 일 예에서, 4x4 DUAL_TREE_LUMA 인터 블록이 허용되지 않을 수 있다.
12. 블록 폭이 M(예컨대, M=2) 개의 크로마 샘플과 동일한 크로마 인트라(및/또는 IBC) 블록은 허용되지 않을 수 있다.
a. 일 예에서, 2xN(예컨대, N <= 64) 크로마 인트라 블록들은 이중 트리에서 허용되지 않을 수 있다.
i. 일 예에서, treeType이 DUAL_TREE_CHROMA와 동일하고 블록 폭이 4 개의 크로마 샘플과 동일할 때, 수직 BT 분할은 디스에이블될 수 있다.
ii. 일 예에서, treeType이 DUAL_TREE_CHROMA와 동일하고 블록 폭이 8 개의 크로마 샘플과 동일할 때, 수직 TT 분할은 디스에이블될 수 있다.
b. 일 예에서, 2xN(예컨대, N <= 64) 크로마 인트라(및/또는 IBC) 블록들은 단일 트리에서 허용되지 않을 수 있다.
i. 일 예에서, 수직 BT 분할을 갖는 MxN(예컨대, M=8 및 N<=64) 코딩 트리 노드의 경우, 아래의 프로세스들 중 하나가 적용될 수 있다.
1. 수직 BT 분할은 4xN 또는 4x(N/2) 크로마 블록에 대해서는 허용되지 않을 수 있지만 8xN 루마 블록에 대해서는 허용된다.
2. 4xN 또는 4x(N/2) 크로마 블록은 수직 BT 분할이 아닐 수 있으며, MODE_INTRA 또는 MODE_IBC에 의해 코딩될 수 있다.
3. 수직 BT 분할은 8xN 루마 블록과 4xN 또는 4x(N/2) 크로마 블록 양쪽 모두에 대해 허용될 수 있지만, 루마 블록 및 크로마 블록 양쪽 모두가 MODE_INTRA에 의해 코딩되지 않을 수 있다(예를 들면, MODE_INTER 또는 MODE_IBC에 의해 코딩될 수 있음).
ii. 일 예에서, 수직 TT 분할을 갖는 MxN(예컨대, M=16 및 N<=64) 코딩 트리 노드의 경우, 아래의 프로세스들 중 하나가 적용될 수 있다.
1. 수직 TT 분할은 8xN 또는 8x(N/2) 크로마 블록에 대해서는 허용되지 않을 수 있지만 16xN 루마 블록에 대해서는 허용된다.
2. 8xN 또는 8x(N/2) 크로마 블록은 수직 TT 분할이 아닐 수 있으며, MODE_INTRA 또는 MODE_IBC에 의해 코딩될 수 있다.
3. 수직 TT 분할은 16xN 루마 블록과 8xN 또는 8x(N/2) 크로마 블록 양쪽 모두에 대해 허용될 수 있지만, 루마 블록 및 크로마 블록 양쪽 모두가 MODE_INTRA에 의해 코딩되지 않을 수 있다(예를 들면, MODE_INTER 또는 MODE_IBC에 의해 코딩될 수 있음).
13. IBC 모드는 작은 블록 크기를 갖는지 여부에 관계없이 루마 블록 및/또는 크로마 블록에 대해 허용될 수 있다.
a. 일 예에서, modeType이 MODE_TYPE_INTRA와 동일하더라도, IBC 모드는 8x4/8x8/16x4 및 4xN(예컨대, N<=64) 루마 블록들을 포함한 루마 블록들에 대해 허용될 수 있다.
b. 일 예에서, modeType이 MODE_TYPE_INTRA와 동일하더라도, IBC 모드는 크로마 블록들에 대해 허용될 수 있다.
14. IBC 예측 모드 플래그의 시그널링은 예측 모드 유형(예를 들면, MODE_TYPE_INTRA)에 의존할 수 있다.
a. 일 예에서, treeType이 DUAL_TREE_CHROMA와 동일하지 않고 modeType이 MODE_TYPE_INTRA와 동일할 때 비-SKIP 블록(예를 들면, 스킵 모드에 의해 코딩되지 않은 코딩 블록)에 대한 IBC 예측 모드 플래그는 비트스트림에서 명시적으로 시그널링될 수 있다.
15. IBC 예측 모드 플래그는 CU SKIP 플래그 및 모드 유형(예를 들면, modeType)에 따라 추론될 수 있다.
a. 일 예에서, 현재 블록이 SKIP 모드로 코딩되고(예컨대, cu_skip_flag가 1과 동일하고), modeType이 MODE_TYPE_INTRA와 동일한 경우, IBC 예측 모드 플래그(예컨대, pred_mode_ibc_flag)는 1과 동일한 것으로 추론될 수 있다.
16. 팔레트 모드 플래그의 명시적 시그널링은 modeType에 의존하지 않을 수 있다.
a. 일 예에서, 팔레트 모드 플래그(예컨대, pred_mode_plt_flag) 시그널링은 슬라이스 유형, 블록 크기, 예측 모드 등에 의존할 수 있지만, modeType이 무엇이든 상관없다.
b. 일 예에서, modeType이 MODE_TYPE_INTER 또는 MODE_TYPE_INTRA와 동일할 때 팔레트 모드 플래그(예컨대, pred_mode_plt_flag)는 0인 것으로 추론된다.
17. modeType이 MODE_TYPE_INTER와 동일할 때 IBC 모드는 사용하도록 허용될 수 있다.
a. 일 예에서, modeType이 MODE_TYPE_INTRA와 동일할 때 크로마 IBC는 허용되지 않을 수 있다.
b. 일 예에서, modeType이 MODE_TYPE_INTRA 또는 MODE_TYPE_INTER와 동일할 때 IBC 모드는 사용하도록 허용될 수 있다.
c. 일 예에서, modeType이 무엇인지에 관계없이 IBC 모드는 사용하도록 허용될 수 있다.
d. 일 예에서, 하나의 SCIPU 내에서, IBC와 인터 모드가 양쪽 모두 허용될 수 있다.
e. 일 예에서, IBC 크로마 블록의 크기는 항상 대응하는 루마 블록의 크기에 대응할 수 있다.
f. 일 예에서, modeType이 MODE_TYPE_INTER와 동일하고 코딩 유닛 크기가 루마 단위로 4x4일 때, pred_mode_ibc_flag의 시그널링은 스킵될 수 있고 pred_mode_ibc_flag는 1과 동일한 것으로 추론될 수 있다.
18. modeType이 MODE_TYPE_INTER일 때 팔레트 모드는 사용하도록 허용될 수 있다.
a. 일 예에서, modeType이 MODE_TYPE_INTRA일 때 크로마 팔레트는 허용되지 않을 수 있다.
b. 일 예에서, modeType이 MODE_TYPE_INTRA 또는 MODE_TYPE_INTER와 동일할 때 IBC 모드가 사용하도록 허용될 수 있다.
c. 일 예에서, modeType이 무엇인지에 관계없이 IBC 모드가 사용하도록 허용될 수 있다.
d. 일 예에서, modeType이 MODE_TYPE_INTRA 또는 MODE_TYPE_INTER와 동일할 때 팔레트 모드는 사용하도록 허용될 수 있다.
e. 일 예에서, modeType이 무엇인지에 관계없이 팔레트 모드는 사용하도록 허용될 수 있다.
f. 일 예에서, 하나의 SCIPU 내에서, 팔레트와 인터 모드가 양쪽 모두 허용될 수 있다.
g. 일 예에서, 하나의 SCIPU 내에서, 팔레트, IBC 및 인터 모드가 모두 허용될 수 있다.
h. 일 예에서, 팔레트 크로마 블록의 크기는 항상 대응하는 루마 블록의 크기에 대응할 수 있다.
i. 일 예에서, modeType이 MODE_TYPE_INTER와 동일하고 코딩 유닛 크기가 루마 단위로 4x4일 때, pred_mode_plt_flag의 시그널링은 스킵될 수 있고 pred_mode_plt_flag는 1과 동일한 것으로 추론될 수 있다.
j. 일 예에서, modeType이 MODE_TYPE_INTER와 동일하고 코딩 유닛 크기가 루마 단위로 4x4일 때, 현재 예측 모드가 IBC 또는 팔레트인지를 나타내기 위해 하나의 메시지가 송신될 수 있다.
k. 일 예에서, 팔레트 모드를 인에이블/디스에이블시킬지는 슬라이스 유형들 및 modeType에 의존할 수 있다.
i. 일 예에서, MODE_TYPE_INTRA를 갖는 I 슬라이스들에 대해, 팔레트 모드가 인에이블될 수 있다.
ii. 일 예에서, MODE_TYPE_INTER를 갖는 P/B 슬라이스들에 대해, 팔레트 모드가 인에이블될 수 있다.
19. 팔레트 모드가 인에이블될 때, 로컬 이중 트리가 허용되지 않을 수 있다.
a. 일 예에서 팔레트 모드가 인에이블될 때, modeTypeCondition은 항상 0과 동일하게 설정될 수 있다.
20. 폭이 M(예를 들면, M=2)과 동일하거나 높이가 N(예를 들면, N=2)과 동일한 작은 크로마 블록들의 경우, 허용된 인트라 예측 모드들은 큰 크로마 블록들에 대해 허용되는 것들과 상이하도록 제한될 수 있다.
a. 일 예에서, 이용 가능한 크로마 인트라 예측 모드들의 인트라 예측 모드의 서브세트만이 사용될 수 있다.
b. 일 예에서, INTRA_DC 모드만이 사용될 수 있다.
c. 일 예에서, INTRA_PLANAR 모드만이 사용될 수 있다.
d. 일 예에서, INTRA_ANGULAR18 모드만이 사용될 수 있다.
e. 일 예에서, INTRA_ANGULAR50 모드만이 사용될 수 있다.
f. 일 예에서, CCLM 모드는 허용되지 않을 수 있다.
21. 폭이 M(예를 들면, M = 2)과 동일하거나 높이가 N(예를 들면, N=2)과 동일한 작은 크로마 블록들의 경우, 변환 유형들은 큰 크로마 블록들에 대해 허용되는 것들과 상이하도록 제한될 수 있다.
a. 일 예에서, 변환 스킵만이 사용될 수 있다.
b. 일 예에서, 1차원 변환만이 사용될 수 있다.
c. 일 예에서, 다수의 유형들의 변환들을 지원하는 코딩 툴들은 허용되지 않는다.
i. 대안적으로, 다수의 유형들의 변환들을 지원하는 코딩 툴들의 시그널링이 생략된다.
22. CIIP는 MODE_TYPE_INTRA로서 간주될 수 있다.
a. 일 예에서 이중 트리 분할이 사용될 때 CIIP 모드는 허용될 수 있다.
i. 일 예에서, CU 유형이 DUAL_TREEE_CHROMA일 때 CIIP 모드는 허용될 수 있다.
b. 대안적으로, CIIP는 MODE_TYPE_INTER로서 간주될 수 있다.
i. 일 예에서, 크로마 블록 폭이 M(예를 들면, M=2)과 동일할 때, CIIP 모드는 허용되지 않을 수 있다.
ii. 일 예에서, 크로마 블록 폭이 M(예를 들면, M=2)과 동일할 때, CIIP에서의 크로마에 대한 인트라 예측 모드들은 단순 인트라 예측 모드로 제한될 수 있다.
1. 일 예에서, 크로마 블록 폭이 M(예를 들면, M=2)과 동일할 때, INTRA_DC는 크로마 인트라 예측에 사용될 수 있다.
2. 일 예에서, 크로마 블록 폭이 M(예를 들면, M=2)과 동일할 때, INTRA_ ANGULAR18은 크로마 인트라 예측에 사용될 수 있다.
3. 일 예에서, 크로마 블록 폭이 M(예를 들면, M=2)과 동일할 때, INTRA_ANGULAR50은 크로마 인트라 예측에 사용될 수 있다.
iii. 일 예에서, CIIP에서의 크로마에 대한 인트라 예측 모드들은 단순 인트라 예측 모드로 제한될 수 있다.
1. 일 예에서, INTRA_DC는 크로마 인트라 예측에 사용될 수 있다.
2. 일 예에서, INTRA_ANGULAR18 모드는 크로마 인트라 예측에 사용될 수 있다.
3. 일 예에서, INTRA_ANGULAR50 모드는 크로마 인트라 예측에 사용될 수 있다.
23. 위의 글머리 기호들에 대해, 변수들 M 및/또는 N이 미리 정의되거나 시그널링될 수 있다.
a. 일 예에서, M 및/또는 N은 색상 포맷들(예를 들면, 4:2:0, 4:2:2, 4:4:4)에 더 의존할 수 있다.
24. modeType이 보다 많은 유형들을 커버하도록 확장될 수 있다.
a. 일 예에서, modeType이 MODE_TYPE_IBC일 수 있다. modeType이 MODE_TYPE_IBC와 동일할 때, 예측 모드는 IBC인 것으로 추론된다.
i. 일 예에서, 이 경우에 pred_mode_flag가 시그널링되지 않는다.
ii. 일 예에서, 이 경우에 pred_mode_ibc_flag가 시그널링되지 않는다.
iii. 일 예에서, 이 경우에 pred_mode_plt_flag가 시그널링되지 않는다.
b. 일 예에서, modeType이 MODE_TYPE_PALETTE일 수 있다. modeType이 MODE_TYPE_PALETTE와 동일할 때, 예측 모드는 팔레트 모드인 것으로 추론된다.
i. 일 예에서, 이 경우에 pred_mode_flag가 시그널링되지 않는다.
ii. 일 예에서, 이 경우에 pred_mode_ibc_flag가 시그널링되지 않는다.
iii. 일 예에서, 이 경우에 pred_mode_plt_flag가 시그널링되지 않는다.
c. 일 예에서, 허용된 modeType들 중 어느 것이 사용되는지 알려주기 위해 mode_constraint_flag가 인덱스로 대체될 수 있다.
25. 일 예에서, QT 분할이 치수 W×H를 갖는 블록에 대해 허용되는지 여부는 치수와 결합된 modeType에 의존할 수 있다.
a. 예를 들어, modeType이 MODE_TYPE_INTER와 동일하고 W가 8과 동일하며 H가 8과 동일한 경우, QT 분할이 허용되지 않는다.
26. 일 예에서, 수직 TT 분할이 치수 W×H를 갖는 블록에 대해 허용되는지 여부는 치수와 결합된 modeType에 의존할 수 있다.
a. 예를 들어, modeType이 MODE_TYPE_INTER와 동일하고 W가 16과 동일하며 H가 4와 동일한 경우, 수직 TT 분할이 허용되지 않는다.
27. 일 예에서, 수평 TT 분할이 치수 W×H를 갖는 블록에 대해 허용되는지 여부는 치수와 결합된 modeType에 의존할 수 있다.
a. 예를 들어, modeType이 MODE_TYPE_INTER와 동일하고 W가 4와 동일하며 H가 16과 동일한 경우, 수평 TT 분할이 허용되지 않는다.
28. 일 예에서, 수직 BT 분할이 치수 W×H를 갖는 블록에 대해 허용되는지 여부는 치수와 결합된 modeType에 의존할 수 있다.
a. 예를 들어, modeType이 MODE_TYPE_INTER와 동일하고 W가 8과 동일하며 H가 4와 동일한 경우, 수직 BT 분할이 허용되지 않는다.
29. 일 예에서, 수평 TT 분할이 치수 W×H를 갖는 블록에 대해 허용되는지 여부는 치수와 결합된 modeType에 의존할 수 있다.
a. 예를 들어, modeType이 MODE_TYPE_INTER와 동일하고 W가 4와 동일하며 H가 8과 동일한 경우, 수평 BT 분할이 허용되지 않는다.
30. 일 예에서, CU의 예측 모드가 modeType에 의해 추론되는지 여부는 색상 성분들 및/또는 블록 치수 W×H에 의존할 수 있다.
a. 예를 들어, 크로마 CU의 예측 모드는 modeType에 의해 추론되지만; 루마 CU의 예측 모드는 modeType에 의해 추론되는 대신에 시그널링된다.
i. 예를 들어, W>4이거나 H>4인 경우 루마 CU의 예측 모드는 modeType에 의해 추론되는 대신에 시그널링된다.
31. SCIPU가 적용될 때, 제1 성분의 델타 QP에 관련된 정보를 시그널링할지 여부 및/또는 어떻게 시그널링할지는 제1 성분의 분할 방식에 의존할 수 있다.
a. 일 예에서, SCIPU가 적용될 때, 제1 성분의 델타 QP에 관련된 정보를 시그널링할지 여부 및/또는 어떻게 시그널링할지는 제1 성분의 분할 방식에 의존할 수 있고 제2 성분의 분할 방식으로부터 분리될 수 있다.
b. 일 예에서, 제1 성분은 루마이고 제2 성분은 크로마이다.
c. 일 예에서, 제1 성분은 크로마이고 제2 성분은 루마이다.
32. 이중 트리 및/또는 로컬 이중 트리 코딩 구조가 적용될 때 제2 성분의 디코딩 또는 파싱 프로세스 동안 제1 성분의 델타 QP에 관련된 어떠한 변수도 수정될 수 없다.
a. 일 예에서, SCIPU에 따라 로컬 이중 트리 코딩 구조가 사용될 수 있다.
b. 일 예에서, 제1 성분은 루마이고 제2 성분은 크로마이다.
i. 변수는 IsCuQpDeltaCoded일 수 있다.
c. 일 예에서, 제1 성분은 크로마이고 제2 성분은 루마이다.
i. 변수는 IsCuChromaQpOffsetCoded일 수 있다.
33. SCIPU가 적용될 때, 루마 성분과 크로마 성분이 동일한 모드 유형(예컨대, MODE_TYPE_INTER 또는 MODE_TYPE_INTRA)을 공유할 필요가 있는 특정 영역에서 성분(예컨대, 루마 또는 크로마)의 델타 QP에 관련된 정보가 최대 한 번 시그널링될 수 있다.
a. 일 예에서, 특정 영역은 양자화 그룹으로서 간주된다.
34. 블록 폭 M 및 블록 높이 N을 갖는 MxN 크로마 인트라 블록들이 허용되지 않을 수 있다.
a. 일 예에서, MxN 크로마 인트라 예측, 예를 들어, M = 2 크로마 샘플, N = 8 및/또는 16 및/또는 32 크로마 샘플에 대해 DC 예측이 사용될 수 있다.
i. 일 예에서, 재구성된 이웃 픽셀들은 DC 예측을 위해 사용되지 않을 수 있다.
ii. 일 예에서, 이웃 참조 픽셀들은 DC 예측을 위해 1 << (bitDepth - 1)과 동일하게 설정될 수 있다.
iii. 일 예에서, PDPC는 DC 예측을 위해 적용되지 않을 수 있다.
iv. 일 예에서, DC 모드 정보가 MxN 크로마 인트라 블록에 대해 코딩되지 않고 도출될 수 있다.
b. 일 예에서, MxN 크로마 인트라 예측, 예를 들어, M = 2 크로마 샘플, N = 8 및/또는 16 및/또는 32 크로마 샘플에 대해 CCLM 예측이 사용될 수 있다.
i. 일 예에서, 재구성된 이웃 픽셀들은 CCLM 예측을 위해 사용되지 않을 수 있다.
ii. 일 예에서, 크로마 예측 값 predC가 루마 재구성된 값 recL로부터 도출되는 CCLM 예측 predC = a*recL + b에 대해, 파라미터들 a 및 b는 SPS/VPS/PPS/픽처/서브픽처/슬라이스/타일/브릭/CTU 행/CTU/VPDU/CU/PU/TU와 같은 비디오 유닛의 시작 부분에서 기본 고정 값들(예컨대, a=0, b=512)로 초기화될 수 있다.
1. 일 예에서, CCLM 파라미터들 a 및 b를 업데이트하기 위해 선입선출(first-in-first-out) 테이블이 온 더 플라이로(on the fly) 유지될 수 있다.
iii. 일 예에서, PDPC는 CCLM 예측을 위해 적용되지 않을 수 있다.
iv. 일 예에서, CCLM 모드 정보가 MxN 크로마 인트라 블록에 대해 코딩되지 않고 도출될 수 있다.
v. 대안적으로, 제안된 방법들이 M과 동일하지 않은 폭 또는 N과 동일하지 않은 높이를 갖는 다른 종류들의 CCLM 코딩된 크로마 블록들에 적용될 수 있다.
1. 일 예에서, 현재 블록의 이웃 블록들의 재구성 정보에 기초하여 도출되는 대신에, 현재 블록에 대해 이전에 코딩된 블록들의 CCLM 파라미터들이 사용될 수 있다.
2. 일 예에서, CCLM 파라미터들은 테이블에 저장되고 온 더 플라이로, 예컨대, FIFO를 사용하여, 업데이트될 수 있다.
c. 일 예에서, 이중 트리에서 MxN 크로마 인트라 블록들, 예를 들어, M = 2 크로마 샘플, N = 8 및/또는 16 및/또는 32 크로마 샘플이 허용되지 않을 수 있다.
i. 일 예에서, treeType이 DUAL_TREE_CHROMA와 동일할 때, (M*a)x(N*b)와 동일한 치수를 갖는 코딩 트리 노드에 대해 X 분할이 디스에이블될 수 있으며, 여기서 M*a는 크로마 샘플 단위의 코딩 트리 노드의 폭이고, N*b는 크로마 샘플 단위의 코딩 트리 노드의 높이이다.
1. 일 예에서, X는 수직 BT 분할이고, a = 2이며, b = 1이다
2. 일 예에서, X는 수평 BT 분할이고, a = 1이며, b = 2이다
3. 일 예에서, X는 수직 TT 분할이고, a = 4이며, b = 1이다
4. 일 예에서, X는 수평 TT 분할이고, a = 1이며, b = 4이다
d. 일 예에서, 단일 트리에서 MxN 크로마 인트라 블록들, 예를 들어, M = 2 크로마 샘플, N = 8 및/또는 16 및/또는 32 크로마 샘플이 허용되지 않을 수 있다.
i. 일 예에서, 단일 트리에서, (M*a*subWidthC) x (N*b*subHeightC)와 동일한 치수를 갖는 코딩 트리 노드의 크로마 성분들에 대해 X 분할이 디스에이블될 수 있으며, 여기서 M*a는 루마 샘플 단위의 코딩 트리 노드의 폭이고, N*b는 루마 샘플 단위의 코딩 트리 노드의 높이이며, subWidthC 및 subHeightC는 폭 치수 및 높이 치수에서의 크로마 서브샘플링 비율이고, 예를 들면, 4:2:0 크로마 포맷에 대해 subWidthC 및 subHeightC는 2와 동일하다.
1. 일 예에서, X = 수직 BT 분할이고, a = 2이며, b = 1이다
2. 일 예에서, X = 수직 TT 분할이고, a = 4이며, b = 1이다
3. 일 예에서, X = 수평 BT 분할이고, a = 1이며, b = 2이다
4. 일 예에서, X = 수평 TT 분할이고, a = 1이며, b = 2이다
5. 일 예에서, X = 수평 TT 분할이고, a = 1이며, b = 4이다
6. 일 예에서, 비분할 크로마 블록은 (M*a) x (N*d)와 동일한 치수를 가질 수 있다.
7. 일 예에서, 비분할 크로마 블록은 MODE_TYPE_INTRA로서 결정될 수 있고 이 크로마 블록에 대해 인트라 예측(및/또는 IBC 및/또는 PLT 모드들)만이 허용될 수 있다.
8. 일 예에서, 이 코딩 트리 노드의 루마 성분들에 대해 X 분할이 허용될 수 있으며, 예를 들면, 루마 코딩 트리 노드는 다수의 루마 자식 노드들로 더 분할될 수 있고, 각각의 루마 자식 노드들은 MODE_TYPE_INTER로 결정될 수 있고 인터 예측(및/또는 IBC 모드)만이 허용될 수 있다.
9. 대안적으로, 크로마 성분이 동일 위치 루마 성분과 함께 더 분할될 수 있지만, 모드 유형은 MODE_TYPE_INTER와 동일할 수 있고 인터 예측(및/또는 IBC 모드)만이 허용될 수 있다.
ii. 일 예에서, CIIP에서 MxN 크로마 인트라 블록들이 허용되지 않을 수 있다.
1. 일 예에서, 루마 샘플 단위의 (M*subWidthC) x (N*subHeightC)와 동일한 치수를 갖는 코딩 블록에 대해 CIIP가 허용되지 않을 수 있다.
a) CIIP가 허용되지 않을 때, CIIP 플래그와 같은 연관 신택스 요소가 비트스트림에 코딩되지 않을 수 있다.
2. 일 예에서, CIIP에서의 크로마 블렌딩 프로세스는 인터 부분으로부터의 예측들로만 채워질 수 있다.
a) 일 예에서, 루마 인트라 예측만이 CIIP 코딩된 블록에 적용될 수 있는 반면, 크로마 인트라 예측이 루마 샘플 단위의 (M*subWidthC) x (N*subHeightC)와 동일한 치수를 갖는 CIIP 코딩된 블록에 적용되지 않을 수 있다.
3. 일 예에서, DC 예측은, 글머리 기호 34(a)에 설명된 바와 같이, CIIP 블록에 대한 MxN 크로마 인트라 예측에 사용될 수 있다.
4. 일 예에서, CCLM 예측은, 글머리 기호 34(b)에 설명된 바와 같이, CIIP 블록에 대한 MxN 크로마 인트라 예측에 사용될 수 있다.
losslessSizeY와 maxCTB/maxTBsize/maxTSsize 사이의 관계
35. 최대 변환 크기는 무손실(및/또는 준무손실) 코딩 및 손실 코딩에 대해 상이한 방식들로 시그널링 및/또는 추론될 수 있다.
a. 일 예에서, 무손실 및/또는 준무손실 코딩에 대한 최대 변환 크기는 변환이 수반되지 않기 때문에 "최대 잔차 크기" 또는 "최대 표현 크기"와 같은 다른 용어들로 지칭될 수 있다. 본 개시에서, 이는 "maxLosslessTbSizeY"로 지칭될 수 있다.
b. 일 예에서, 블록에 대한 무손실 코딩은 해당 블록에 대한 cu_transquant_bypass_flag가 1과 동일한 것으로 지칭될 수 있다.
c. 일 예에서, 블록에 대한 준무손실 코딩은 QP가 주어진 임계치보다 작은 코딩으로 지칭될 수 있다.
i. 일 예에서, 임계치는 DPS/VPS/SPS/PPS/타일/슬라이스/브릭 헤더에 표시될 수 있다.
d. 일 예에서, 블록에 대한 준무손실 코딩은 QP가 주어진 임계치보다 작은 코딩으로 지칭될 수 있고 해당 블록에 대해 transform_skip_flag는 1과 동일하다.
i. 일 예에서, 임계치는 DPS/VPS/SPS/PPS/타일/슬라이스/브릭 헤더에 표시될 수 있다.
e. 무손실 및/또는 준무손실 코딩에 대한 제1 최대 변환 크기(예를 들어, maxLosslessTbSizeY)는 손실 코딩에 사용될 수 있는 제2 최대 변환 크기, 및/또는 최대 코딩 트리 유닛 크기, 및/또는 최대 변환 스킵 크기를 조건으로 하여 설정될 수 있다.
f. 무손실 및/또는 준무손실 코딩에 대한 최대 변환 크기는 SPS/VPS/PPS/서브픽처/슬라이스/타일/브릭/CTU/VPDU에 있는 신택스 요소(SE)와 같은 비디오 유닛 레벨에서 시그널링될 수 있다.
i. 일 예에서, SE가 최대 CTB 크기(예를 들면, log2_ctu_size_minus5, CtbSizeY 등)에 따라 시그널링될 수 있다.
1. 예를 들어, log2_ctu_size_minus5가 N(예컨대, N=0)보다 클 때 플래그가 시그널링될 수 있다.
ii. 일 예에서, SE가 최대 변환 크기(예를 들면, sps_max_luma_transform_size_64_flag, MaxTbSize 등)에 따라 시그널링될 수 있다.
1. 예를 들어, sps_max_luma_transform_size_64_flag가 M(예컨대, M=1)과 동일할 때 SE가 시그널링될 수 있다.
iii. 일 예에서, SE가 최대 변환 스킵 크기(예를 들면, log2_transform_skip_max_size_minus2, MaxTsSize 등)에 따라 시그널링될 수 있다.
1. 예를 들어, log2_transform_skip_max_size_minus2가 K(예컨대, K=3)보다 클 때 SE가 시그널링될 수 있다.
iv. 일 예에서, log(maxLosslessTbSizeY)와 X 사이의 델타 값이 시그널링될 수 있다.
1. 예를 들어, X는 log2_ctu_size_minus5와 동일할 수 있다
2. 예를 들어, X는 sps_max_luma_transform_size_64_flag와 동일할 수 있다
3. 예를 들어, X는 log2_transform_skip_max_size_minus2와 동일할 수 있다
4. 예를 들어, X는 고정된 정수와 동일할 수 있다.
5. 일 예에서, 델타 - K가 시그널링될 수 있으며, 여기서 K는 정수, 예컨대, 1이다.
v. 일 예에서, maxLosslessTbSizeY와 X 사이의 델타 값이 시그널링될 수 있다.
1. 예를 들어, X는 CtbSizeY와 동일할 수 있다
2. 예를 들어, X는 MaxTbSize와 동일할 수 있다
3. 예를 들어, X는 MaxTsSize와 동일할 수 있다
4. 예를 들어, X는 고정된 정수와 동일할 수 있다.
5. 일 예에서, 델타 - K가 시그널링될 수 있으며, 여기서 K는 정수, 예컨대, 1이다.
vi. 일 예에서, 비디오 유닛(예컨대, 시퀀스/픽처/서브픽처/슬라이스/타일/CTU/VPDU/CU/PU/TU)의 maxLosslessTbSizeY는 SE로부터 도출될 수 있다.
vii. SE는 플래그일 수 있다.
ⅷ. 플래그가 존재하지 않을 때, 이는 양의 정수 N과 동일한 것으로 추론될 수 있다.
g. 일 예에서, 무손실 및/또는 준무손실 코딩이 비디오 유닛에 적용되는 경우(예컨대, cu_transquant_bypass_flag가 1과 동일한 경우), 비디오 유닛에 대한 최대 변환 크기는, maxTbSizeY가 아니라, maxLosslessTbSizeY와 동일하게 설정될 수 있다.
h. 대안적으로, 비디오 유닛(예컨대, 시퀀스/픽처/서브픽처/슬라이스/타일/CTU/VPDU/CU/PU/TU)에 대한 무손실 및/또는 준무손실 코딩에 대한 최대 변환 크기는 시그널링되지 않고 도출될 수 있다.
i. 예를 들어, 이는 고정된 정수 값 M(예컨대, 루마 샘플 단위로 M = 32)과 동일하게 설정될 수 있다.
ii. 예를 들어, 이는 손실 코딩에 사용될 수 있는 제2 최대 변환 크기와 동일하게 설정될 수 있다.
iii. 예를 들어, 이는 최대 코딩 트리 유닛 크기와 동일하게 설정될 수 있다.
iv. 예를 들어, 이는 VPDU 크기와 동일하게 설정될 수 있다.
v. 예를 들어, 이는 최대 변환 스킵 블록 크기와 동일하게 설정될 수 있다.
vi. 예를 들어, 이는 최대 잔차 코딩 블록 크기와 동일하게 설정될 수 있다.
36. 무손실 코딩(및/또는 준무손실 코딩)에 의한 MxN 잔차 블록의 경우, 이는 maxLosslessTbSizeY에 따라 둘 이상의 보다 작은 잔차 서브블록으로 분할될 수 있다.
a. 분할 이후에, 모든 서브블록들의 폭 및 높이는 maxLosslessTbSizeY보다 크지 않다.
b. 일 예에서, 이는 모든 서브블록들의 폭 및 높이가 maxLosslessTbSizeY보다 크지 않을 때까지 재귀적 방식으로 서브블록들로 분할될 수 있다.
디블로킹 관련
37. 팔레트 모드는 MODE_TYPE_ALL 또는 MODE_TYPE_INTRA에서 인에이블될 수 있지만, MODE_TYPE_INTER에서는 항상 허용되지 않는다.
38. 크로마 성분들에 대한 디블로킹 경계 강도(bS)는 한쪽이 IBC 모드이고 다른 쪽이 팔레트 모드일 때 0으로 설정될 수 있다.
a. 일 예에서, ChromaArrayType이 0과 동일하지 않을 때 크로마 성분들에 대한 bS는 한쪽이 IBC 모드이고 다른 쪽이 팔레트 모드일 때 0으로 설정된다.
변환 스킵 블록들에 대한 최소 허용 QP 관련
39. 신택스 요소, 예를 들면, JVET-R0045에 나와 있는 internal_minus_input_bit_depth - 이로부터 입력 비트 깊이가 추론될 수 있음 - 는 특정 프로파일에 따라 제약될 수 있다.
a. 일 예에서, (QpPrimeTsMin - 4)/6은 10-비트 프로파일에서 [0, 2]의 범위 내로 제약될 수 있다.
b. 일 예에서, (QpPrimeTsMin - 4)/6은 8-비트 프로파일에서 0으로 제약될 수 있다.
c. 일 예에서, (QpPrimeTsMin - 4)/6은 (K+8)-비트 프로파일에서 [0, K] 내로 제약될 수 있다.
d. 일 예에서, (QpPrimeTsMin - 4)/6은 (K+8)-비트 프로파일에서 [0, K] 내로 제약될 수 있다.
40. 최소 허용 QP, 예를 들면, QpPrimeTsMin은 특정 프로파일에 따라 제약될 수 있다.
a. 일 예에서, (QpPrimeTsMin - 4)/6은 10-비트 프로파일에서 [0, 2]의 범위 내로 제약될 수 있다.
b. 일 예에서, (QpPrimeTsMin - 4)/6은 8-비트 프로파일에서 0으로 제약될 수 있다.
c. 일 예에서, (QpPrimeTsMin - 4)/6은 (K+8)-비트 프로파일에서 [0, K] 내로 제약될 수 있다.
d. 일 예에서, (QpPrimeTsMin - 4)/6은 (K+8)-비트 프로파일에서 [0, K] 내로 제약될 수 있다.
5. 실시예들
새로 추가된 부분들은 굵은 기울임꼴로 표시되며, VVC 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 "a"의 삭제를 나타낸다). 수정 사항들은 최신 VVC 작업 초안(JVET-O2001-v11)을 기반으로 한다.
5.1 예시적인 실시예 #1
아래의 실시예는 작은 블록 분할들에 대한 제약들에 관한 것이며, 예측 모드들은 4:2:0 및 4:4:4 크로마 포맷들에만 적용된다(4:0:0 및 4:4:4 크로마 포맷들에는 적용되지 않음).
7.4.9.4 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- chroma_format_idc가 0과 동일하다
- chroma_format_idc가 3과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
5.2 예시적인 실시예 #2
아래의 실시예는 Palette 모드 플래그의 시그널링이 modeType에 의존하지 않는 것에 관한 것이다.
7.3.8.5 코딩 유닛 신택스
Figure pct00064
5.3 예시적인 실시예 #3
아래의 실시예는 IBC 예측 모드 플래그가 CU SKIP 플래그 및 modeType에 따라 추론되는 것에 관한 것이다.
pred_mode_ibc_flag가 1과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩된다는 것을 지정한다. pred_mode_ibc_flag가 0과 동일한 것은 현재 코딩 유닛이 IBC 예측 모드로 코딩되지 않는다는 것을 지정한다.
pred_mode_ibc_flag가 존재하지 않을 때, 이는 다음과 같이 추론된다:
- cu_skip_flag[ x0 ][ y0 ]가 1과 동일하고 cbWidth가 4와 동일하며 cbHeight가 4와 동일한 경우, pred_mode_ibc_flag는 1과 동일한 것으로 추론된다.
- 그렇지 않은 경우, cbWidth와 cbHeight 양쪽 모두가 128과 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- [[그렇지 않고, cu_skip_flag[ x0 ][ y0 ]이 1과 동일하고, modeType이 MODE_TYPE_INTRA와 동일한 경우, pred_mode_ibc_flag는 1과 동일한 것으로 추론된다.]]
- 그렇지 않고, modeType이 MODE_TYPE_INTER와 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않고, treeType이 DUAL_TREE_CHROMA와 동일한 경우, pred_mode_ibc_flag는 0과 동일한 것으로 추론된다.
- 그렇지 않은 경우, pred_mode_ibc_flag는, 제각기, I 슬라이스를 디코딩할 때는 sps_ibc_enabled_flag의 값과 동일한 것으로 추론되고, P 또는 B 슬라이스를 디코딩할 때는 0과 동일한 것으로 추론된다.
pred_mode_ibc_flag가 1과 동일할 때, x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1에 대해 변수 CuPredMode[ chType ][ x ][ y ]는 MODE_IBC와 동일하게 설정된다.
5.4 예시적인 실시예 #4
아래의 실시예는 IBC 예측 모드 플래그의 시그널링이 MODE_TYPE_INTRA에 의존하고/하거나 루마 블록이 작은 블록 크기인지 여부에 관계없이 IBC 모드가 루마 블록들에 대해 허용되는 것에 관한 것이다.
7.3.8.5 코딩 유닛 신택스
Figure pct00065
5.5 예시적인 실시예 #5
아래의 실시예는 4:2:0 및 4:2:2 색상 포맷들에 대해 상이한 인트라 블록 제약들을 적용하는 것에 관한 것이다.
7.4.9.4 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하며 chroma_format_idc가 1과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하며 chroma_format_idc가 1과 동일하다
- cbWidth가 8과 동일하고 cbHeight가 8과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER과 동일하고 chroma_format_idc가 2와 동일하다
- cbWidth가 4와 동일하고 cbHeight가 16과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR과 동일하고 chroma_format_idc가 2와 동일하다
- cbWidth가 16과 동일하고 cbHeight가 8과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_VER과 동일하고 chroma_format_idc가 2와 동일하다
- cbWidth가 4와 동일하고 cbHeight가 32와 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR과 동일하고 chroma_format_idc가 2와 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
5.6 예시적인 실시예 #6
아래의 실시예는 단일 트리에서 2xN 크로마 인트라 블록들을 허용하지 않는 것에 관한 것이다.
7.4.9.4 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth가 8과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER과 동일하다
- cbWidth가 16과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_VER과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
5.7 예시적인 실시예 #7
아래의 실시예는 이중 트리에서 2xN 크로마 인트라 블록들을 허용하지 않는 것에 관한 것이다.
6.4.2 허용된 이진 분할 프로세스
변수 allowBtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 같다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16보다 작거나 같다
- btSplit가 SPLIT_BT_VER과 동일하고 treeType이 DUAL_TREE_CHROMA와 동일하며 ( cbWidth / SubWidthC )가 4보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
...
6.4.3 허용된 삼진 분할 프로세스
변수 allowTtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowTtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 2 * MinTtSizeY보다 작거나 같다
- cbWidth가 Min( MaxTbSizeY, maxTtSize )보다 크다
- cbHeight가 Min( MaxTbSizeY, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32보다 작거나 같다
- btSplit가 SPLIT_TT_VER과 동일하고 treeType이 DUAL_TREE_CHROMA와 동일하며 ( cbWidth / SubWidthC )가 8보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowTtSplit는 TRUE와 동일하게 설정된다.
5.8 예시적인 실시예 #8
아래의 실시예는 SCIPU 크로마 블록들에 대해 MODE_IBC를 인에이블시키는 것에 관한 것이다.
7.3.8.5 코딩 유닛 신택스
Figure pct00066
5.9 modeType이 MODE_TYPE_INTER일 때 블록 분할을 허용하지 않는 것에 관한 예시적인 실시예 #9(해결책 1)
6.4.2 허용된 이진 분할 프로세스
변수 allowBtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 같다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16보다 작거나 같다
- modeType이 MODE_TYPE_INTER와 동일하고 cbWidth* cbHeight가 32보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
...
6.4.3 허용된 삼진 분할 프로세스
변수 allowTtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowTtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 2 * MinTtSizeY보다 작거나 같다
- cbWidth가 Min( MaxTbSizeY, maxTtSize )보다 크다
- cbHeight가 Min( MaxTbSizeY, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32보다 작거나 같다
- modeType이 MODE_TYPE_INTER와 동일하고 cbWidth* cbHeight가 64보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowTtSplit는 TRUE와 동일하게 설정된다.
5.10 modeType이 MODE_TYPE_INTER일 때 블록 분할을 허용하지 않는 것에 관한 예시적인 실시예 #10(해결책 2)
6.4.2 허용된 이진 분할 프로세스
변수 allowBtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 같다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16보다 작거나 같다
- modeType이 MODE_TYPE_INTER와 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
...
6.4.3 허용된 삼진 분할 프로세스
변수 allowTtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowTtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 2 * MinTtSizeY보다 작거나 같다
- cbWidth가 Min( MaxTbSizeY, maxTtSize )보다 크다
- cbHeight가 Min( MaxTbSizeY, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32보다 작거나 같다
- modeType이 MODE_TYPE_INTER와 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowTtSplit는 TRUE와 동일하게 설정된다.
5.11 예시적인 실시예 #11
아래의 실시예는 MODE_TYPE_INTER가 도출될 때 코딩 트리의 추가 분할에 대한 제약들에 관한 것이다.
7.3.8.4 코딩 트리 신택스
Figure pct00067
5.12 예시적인 실시예 #12
아래의 실시예는 팔레트 모드가 인에이블될 때 적용되지 않는 작은 블록 분할들 및 예측 모드들에 대한 제약들에 관한 것이다.
7.4.9.4 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- sps_palette_enabled_flag가 1과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
-
5.13 예시적인 실시예 #13
아래의 실시예는 4:2:2 색상 포맷들에 대한 작은 크로마 인트라 블록 제약들에 관한 것이다.
7.4.9.4 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, chroma_format_idc가 1과 동일하고 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
5.14 SCIPU에서의 델타 QP 시그널링의 예 #1
Figure pct00068
Figure pct00069
Figure pct00070
Figure pct00071
5.15 SCIPU에서의 델타 QP 시그널링의 예 #2
Figure pct00072
Figure pct00073
Figure pct00074
Figure pct00075
5.16 SCIPU에서의 델타 QP 시그널링의 예 #3
Figure pct00076
Figure pct00077
Figure pct00078
Figure pct00079
5.17 SCIPU에서의 델타 QP 시그널링의 예 #4
Figure pct00080
Figure pct00081
Figure pct00082
Figure pct00083
5.18 2x8 크로마 인트라 블록들을 디스에이블시키는 것의 예 #14
6.4.2. 허용된 이진 분할 프로세스
변수 allowBtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowBtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 같다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 btSplit가 SPLIT_BT_VER과 동일하며 ( cbWidth / SubWidthC )가 4와 동일하고 ( cbHeight / SubHeightC )가 8과 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 btSplit가 SPLIT_BT_HOR과 동일하며 ( cbWidth / SubWidthC )가 2와 동일하고 ( cbHeight / SubHeightC )가 16과 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
...
6.4.3. 허용된 삼진 분할 프로세스
변수 allowTtSplit는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, allowTtSplit는 FALSE와 동일하게 설정된다:
- cbSize가 2 * MinTtSizeY보다 작거나 같다
- cbWidth가 Min( MaxTbSizeY, maxTtSize )보다 크다
- cbHeight가 Min( MaxTbSizeY, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 같다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType이 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32보다 작거나 같다
- treeType이 DUAL_TREE_CHROMA와 동일하고 btSplit가 SPLIT_TT_VER과 동일하며 ( cbWidth / SubWidthC )가 8과 동일하고 ( cbHeight / SubHeightC )가 8과 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 btSplit가 SPLIT_TT_HOR과 동일하며 ( cbWidth / SubWidthC )가 2와 동일하고 ( cbHeight / SubHeightC )가 32와 동일하다
- treeType이 DUAL_TREE_CHROMA와 동일하고 modeType이 MODE_TYPE_INTRA와 동일하다
- 그렇지 않은 경우, allowTtSplit는 TRUE와 동일하게 설정된다.
7.4.9.4. 코딩 트리 시맨틱스
변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 0과 동일하게 설정된다
- slice_type = = I이고 qtbtt_dual_tree_intra_flag가 1과 동일하다
- modeTypeCurr이 MODE_TYPE_ALL과 동일하지 않다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 split_qt_flag가 1과 동일하다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth * cbHeight가 32와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- 그렇지 않고, 다음 조건들 중 하나가 참인 경우, modeTypeCondition은 1 + (slice_type != I ? 1 : 0)과 동일하게 설정된다
- cbWidth * cbHeight가 64와 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER과 동일하다
- cbWidth * cbHeight가 128과 동일하고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER과 동일하다
- cbWidth가 8과 동일하고 ( cbHeight / SubHeightC )가 8과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER과 동일하다
- cbWidth가 16과 동일하고 ( cbHeight / SubHeightC )가 8과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_VER과 동일하다
- cbWidth가 4와 동일하고 ( cbHeight / SubHeightC )가 16과 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_TT_HOR과 동일하다
- cbWidth가 4와 동일하고 ( cbHeight / SubHeightC )가 32와 동일하며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR과 동일하다
- 그렇지 않은 경우, modeTypeCondition은 0과 동일하게 설정된다
7.4.9.7. 병합 데이터 시맨틱스
ciip_flag[ x0 ][ y0 ]은 현재 코딩 유닛에 대해 결합된 인터 픽처 병합 및 인트라 픽처 예측(combined inter-picture merge and intra-picture prediction)이 적용되는지 여부를 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
ciip_flag[ x0 ][ y0 ]이 존재하지 않을 때, 이는 다음과 같이 추론된다:
- 다음 조건들 모두가 참인 경우, ciip_flag[ x0 ][ y0 ]은 1과 동일한 것으로 추론된다:
- sps_ciip_enabled_flag가 1과 동일하다.
- general_merge_flag[ x0 ][ y0 ]이 1과 동일하다.
- merge_subblock_flag[ x0 ][ y0 ]이 0과 동일하다.
- regular_merge_flag[ x0 ][ y0 ]이 0과 동일하다.
- cbWidth가 128보다 작다.
- cbHeight가 128보다 작다.
- cbWidth가 4보다 크고 cbHeight가 16과 동일하지 않다.
- cbWidth * cbHeight가 64보다 크거나 같다.
- 그렇지 않은 경우, ciip_flag[ x0 ][ y0 ]은 0과 동일한 것으로 추론된다.
7.3.8.7. 병합 데이터 신택스
Figure pct00084
Figure pct00085
5.18 크로마 디블로킹 경계 강도를 0으로 설정하는 예
새로 추가된 부분들인 이하의 변경 사항들은 굵은 기울임꼴로 표시되고, 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 "a"의 삭제를 표기한다). 수정 사항들은 JVET-Q2001-vE를 기반으로 한다.
8.8.3.5 경계 필터링 강도의 도출 프로세스
......
xDi(단, i = 0..xN) 및 yDj(단, j = 0..yN)에 대해, 다음이 적용된다:
- edgeFlags[ xDi ][ yDj ]가 0과 동일한 경우, 변수 bS[ xDi ][ yDj ]는 0과 동일하게 설정된다.
- 그렇지 않은 경우, 다음이 적용된다:
- 샘플 값들 p0 및 q0은 다음과 같이 도출된다:
- edgeType이 EDGE_VER과 동일한 경우, p0은 recPicture[ xCb + xDi - 1 ][ yCb + yDj ]와 동일하게 설정되고 q0은 recPicture[ xCb + xDi ][ yCb + yDj ]와 동일하게 설정된다.
- 그렇지 않은 경우(edgeType이 EDGE_HOR과 동일한 경우), p0은 recPicture[ xCb + xDi ][ yCb + yDj - 1 ]과 동일하게 설정되고 q0은 recPicture[ xCb + xDi ][ yCb + yDj ]와 동일하게 설정된다.
- 변수 bS[ xDi ][ yDj ]는 다음과 같이 도출된다:
- cIdx가 0과 동일하고 샘플들 p0 및 q0 양쪽 모두가 intra_bdpcm_luma_flag가 1과 동일한 코딩 블록에 있는 경우, bS[ xDi ][ yDj ]는 0과 동일하게 설정된다.
- 그렇지 않고, cIdx가 0보다 크고 샘플들 p0 및 q0 양쪽 모두가 intra_bdpcm_chroma_flag가 1과 동일한 코딩 블록에 있는 경우, bS[ xDi ][ yDj ]는 0과 동일하게 설정된다.
- 그렇지 않고, 샘플 p0 또는 q0이 인트라 예측 모드로 코딩되는 코딩 유닛의 코딩 블록에 있는 경우, bS[ xDi ][ yDj ]는 2와 동일하게 설정된다.
- 그렇지 않고, 블록 에지가 또한 코딩 블록 에지이고 샘플 p0 또는 q0이 ciip_flag가 1과 동일한 코딩 블록에 있는 경우, bS[ xDi ][ yDj ]는 2와 동일하게 설정된다.
- 그렇지 않고, 블록 에지가 또한 변환 블록 에지이고 샘플 p0 또는 q0이 하나 이상의 영이 아닌 변환 계수 레벨을 포함하는 변환 블록에 있는 경우, bS[ xDi ][ yDj ]는 1과 동일하게 설정된다.
- [[그렇지 않고, 샘플 p0을 포함하는 코딩 서브블록의 예측 모드가 샘플 q0을 포함하는 코딩 서브블록의 예측 모드와 상이한 경우(즉, 코딩 서브블록들 중 하나가 IBC 예측 모드로 코딩되고 다른 하나가 인터 예측 모드로 코딩되는 경우), bS[ xDi ][ yDj ]는 1과 동일하게 설정된다.]]
- 그렇지 않고, cIdx가 0과 동일하고, edgeFlags[ xDi ][ yDj ]가 2와 동일하게 설정되며, 다음 조건들 중 하나 이상이 참인 경우, bS[ xDi ][ yDj ]는 1과 동일하게 설정된다:
- 샘플 p 0 을 포함하는 코딩 서브블록의 예측 모드는 샘플 q 0 을 포함하는 코딩 서브블록의 예측 모드와 상이하다.
- 샘플 p0을 포함하는 코딩 서브블록 및 샘플 q0을 포함하는 코딩 서브블록이 양쪽 모두 IBC 예측 모드로 코딩되고, 2 개의 코딩 서브블록의 예측에서 사용되는 블록 벡터들의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같다.
- 샘플 p0을 포함하는 코딩 서브블록의 예측을 위해, 샘플 q0을 포함하는 코딩 서브블록의 예측에서와 상이한 참조 픽처들 또는 상이한 수의 모션 벡터들이 사용된다.
비고 1 - 2 개의 코딩 서브블록에 사용되는 참조 픽처들이 동일한지 상이한지의 결정은, 예측이 참조 픽처 리스트 0에 대한 인덱스 또는 참조 픽처 리스트 1에 대한 인덱스를 사용하여 형성되는지와 관계없이, 그리고 또한 참조 픽처 리스트 내에서의 인덱스 위치가 상이한지 여부와 관계없이, 어느 픽처들이 참조되는지에만 기초한다.
비고 2 - 좌측 상단 샘플이 ( xSb, ySb )를 커버하는 코딩 서브블록의 예측에 사용되는 모션 벡터들의 수는 PredFlagL0[ xSb ][ ySb ] + PredFlagL1[ xSb ][ ySb ]와 동일하다.
- 하나의 모션 벡터가 샘플 p0을 포함하는 코딩 서브블록을 예측하는 데 사용되고, 하나의 모션 벡터가 샘플 q0을 포함하는 코딩 서브블록을 예측하는 데 사용되며, 사용되는 모션 벡터들의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같다.
- 2 개의 모션 벡터 및 2 개의 상이한 참조 픽처가 샘플 p0을 포함하는 코딩 서브블록을 예측하는 데 사용되고, 동일한 2 개의 참조 픽처에 대한 2 개의 모션 벡터가 샘플 q0을 포함하는 코딩 서브블록을 예측하는 데 사용되며, 동일한 참조 픽처에 대한 2 개의 코딩 서브블록의 예측에서 사용되는 2 개의 모션 벡터의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같다.
- 동일한 참조 픽처에 대한 2 개의 모션 벡터가 샘플 p0을 포함하는 코딩 서브블록을 예측하는 데 사용되고, 동일한 참조 픽처에 대한 2 개의 모션 벡터가 샘플 q0을 포함하는 코딩 서브블록을 예측하는 데 사용되며, 다음 조건들 양쪽 모두가 참이다:
- 2 개의 코딩 서브블록의 예측에서 사용되는 리스트 0 모션 벡터들의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같거나, 또는 2 개의 코딩 서브블록의 예측에서 사용되는 리스트 1 모션 벡터들의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같다.
- 샘플 p0을 포함하는 코딩 서브블록의 예측에서 사용되는 리스트 0 모션 벡터와 샘플 q0을 포함하는 코딩 서브블록의 예측에서 사용되는 리스트 1 모션 벡터의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같거나, 또는 샘플 p0을 포함하는 코딩 서브블록의 예측에서 사용되는 리스트 1 모션 벡터와 샘플 q0을 포함하는 코딩 서브블록의 예측에서 사용되는 리스트 0 모션 벡터의 수평 또는 수직 성분 간의 절대 차이가 1/16 루마 샘플 단위로 8보다 크거나 같다.
- 그렇지 않은 경우, 변수 bS[ xDi ][ yDj ]는 0과 동일하게 설정된다.
도 17a는 비디오 프로세싱 장치(1700)의 블록 다이어그램이다. 장치(1700)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(1700)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(1700)는 하나 이상의 프로세서(1702), 하나 이상의 메모리(1704) 및 비디오 프로세싱 하드웨어(1706)를 포함할 수 있다. 프로세서(들)(1702)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(1704)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(1706)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다.
도 17b는 개시된 기술들이 구현될 수 있는 비디오 프로세싱 시스템의 블록 다이어그램의 다른 예이다. 도 17b는 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(1710)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(1710)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(1710)은 비디오 콘텐츠를 수신하기 위한 입력(1712)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(1712)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(1710)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(1714)를 포함할 수 있다. 코딩 컴포넌트(1714)는 비디오의 코딩된 표현을 생성하기 위해 입력(1712)으로부터 코딩 컴포넌트(1714)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(1714)의 출력은 저장되거나, 컴포넌트(1716)에 의해 표현된 바와 같은, 연결된 통신을 통해 전송될 수 있다. 입력(1712)에 수신되는 비디오의 저장되거나 통신되는 비트스트림 표현(또는 코딩된 표현)은 디스플레이 인터페이스(1720)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(1718)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 연산들이 "코딩" 연산들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 연산들이 인코더에서 사용되고 코딩의 결과들을 반대로 하는 대응하는 디코딩 툴들 또는 연산들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
도 21은 본 개시의 기술들을 활용할 수 있는 예시적인 비디오 코딩 시스템(100)을 예시하는 블록 다이어그램이다.
도 21에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(120)를 포함할 수 있다. 비디오 인코딩 디바이스라고 지칭될 수 있는 소스 디바이스(110)는 인코딩된 비디오 데이터를 생성한다. 비디오 디코딩 디바이스라고 지칭될 수 있는 목적지 디바이스(120)는 소스 디바이스(110)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다.
소스 디바이스(110)는 비디오 소스(112), 비디오 인코더(114), 및 입출력(I/O) 인터페이스(116)를 포함할 수 있다.
비디오 소스(112)는 비디오 캡처 디바이스와 같은 소스, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 그러한 소스들의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)로부터의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트 시퀀스를 포함할 수 있다. 비트스트림은 코딩된 픽처들 및 연관 데이터를 포함할 수 있다. 코딩된 픽처는 픽처의 코딩된 표현이다. 연관 데이터는 시퀀스 파라미터 세트들, 픽처 파라미터 세트들, 및 다른 신택스 구조들을 포함할 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 인코딩된 비디오 데이터는 I/O 인터페이스(116)를 통해 네트워크(130a)를 거쳐 목적지 디바이스(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(High Efficiency Video Coding) 표준, VVC(Versatile Video Coding) 표준 및 다른 현재 및/또는 추가 표준들과 같은, 비디오 압축 표준에 따라 동작할 수 있다.
도 22는 도 21에 예시된 시스템(100) 내의 비디오 인코더(114)일 수 있는, 비디오 인코더(200)의 예를 예시하는 블록 다이어그램이다.
비디오 인코더(200)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 22의 예에서, 비디오 인코더(200)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 인코더(200)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
비디오 인코더(200)의 기능 컴포넌트들은 분할 유닛(201), 모드 선택 유닛(203), 모션 추정 유닛(204), 모션 보상 유닛(205) 및 인트라 예측 유닛(206)을 포함할 수 있는 예측 유닛(202), 잔차 생성 유닛(207), 변환 유닛(208), 양자화 유닛(209), 역양자화 유닛(210), 역변환 유닛(211), 재구성 유닛(212), 버퍼(213), 및 엔트로피 인코딩 유닛(214)을 포함할 수 있다.
다른 예들에서, 비디오 인코더(200)는 보다 많은, 보다 적은 또는 상이한 기능 컴포넌트들을 포함할 수 있다. 예에서, 예측 유닛(202)은 인트라 블록 복사(intra block copy, IBC) 유닛을 포함할 수 있다. IBC 유닛은 적어도 하나의 참조 픽처가 현재 비디오 블록이 위치하는 픽처인 IBC 모드에서 예측을 수행할 수 있다.
게다가, 모션 추정 유닛(204) 및 모션 보상 유닛(205)과 같은 일부 컴포넌트들은 고도로 통합될 수 있지만, 설명의 목적을 위해 도 22의 예에서 개별적으로 표현되어 있다.
분할 유닛(201)은 픽처를 하나 이상의 비디오 블록으로 분할할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기들을 지원할 수 있다.
모드 선택 유닛(203)은, 예를 들어, 오차 결과들에 기초하여, 코딩 모드들, 즉 인트라(intra) 또는 인터(inter) 중 하나를 선택할 수 있고, 결과적인 인트라 코딩된 또는 인터 코딩된 블록을 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하도록 하고 재구성 유닛(212)에 제공하여 참조 픽처로서 사용하기 위한 인코딩된 블록을 재구성하도록 할 수 있다. 일부 예에서, 모드 선택 유닛(203)은 예측이 인터 예측 신호 및 인트라 예측 신호에 기초하는 CIIP(combination of intra and inter predication) 모드를 선택할 수 있다. 모드 선택 유닛(203)은 또한 인터 예측의 경우에 블록에 대한 모션 벡터의 분해능(예를 들면, 서브픽셀 또는 정수 픽셀 정밀도)을 선택할 수 있다.
현재 비디오 블록에 대한 인터 예측을 수행하기 위해, 모션 추정 유닛(204)은 버퍼(213)로부터의 하나 이상의 참조 프레임을 현재 비디오 블록과 비교하는 것에 의해 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 픽처들의 디코딩된 샘플들 및 모션 정보에 기초하여 현재 비디오 블록에 대한 예측된 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)은, 예를 들어, 현재 비디오 블록이 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지 여부에 따라, 현재 비디오 블록에 대해 상이한 동작들을 수행할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 단방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 또는 리스트 1의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록을 포함하는 리스트 0 또는 리스트 1 내의 참조 픽처를 나타내는 참조 인덱스 및 현재 비디오 블록과 참조 비디오 블록 사이의 공간적 변위를 나타내는 모션 벡터를 생성할 수 있다. 모션 추정 유닛(204)은 참조 인덱스, 예측 방향 지시자, 및 모션 벡터를 현재 비디오 블록의 모션 정보로서 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대해 양방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 내의 참조 픽처들을 탐색할 수 있고, 또한 현재 비디오 블록에 대한 다른 참조 비디오 블록에 대해 리스트 1 내의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록들을 포함하는 리스트 0 및 리스트 1 내의 참조 픽처들을 나타내는 참조 인덱스들 및 참조 비디오 블록들과 현재 비디오 블록 사이의 공간적 변위들을 나타내는 모션 벡터들을 생성할 수 있다. 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보로서 참조 인덱스들 및 현재 비디오 블록의 모션 벡터들을 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록들에 기초하여 현재 비디오 블록의 예측된 비디오 블록을 생성할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 디코더의 디코딩 프로세싱을 위한 모션 정보의 전체 세트를 출력할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오에 대한 모션 정보의 전체 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)은 다른 비디오 블록의 모션 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 모션 정보와 충분히 유사하다고 결정할 수 있다.
일 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에, 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 갖는다는 것을 비디오 디코더(300)에 알려주는 값을 표시할 수 있다.
다른 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 간의 차이를 나타낸다. 비디오 디코더(300)는 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 이용하여 현재 비디오 블록의 모션 벡터를 결정할 수 있다.
위에서 논의된 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측적 시그널링 기술의 두 가지 예는 AMVP(advanced motion vector predication) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대해 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대해 인트라 예측을 수행할 때, 인트라 예측 유닛(206)은 동일한 픽처 내의 다른 비디오 블록들의 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터는 예측된 비디오 블록 및 다양한 신택스 요소들을 포함할 수 있다.
잔차 생성 유닛(207)은 현재 비디오 블록으로부터 현재 비디오 블록의 예측된 비디오 블록(들)을 감산(예를 들면, 마이너스 부호로 표시됨)하는 것에 의해 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록 내의 샘플들의 상이한 샘플 성분들에 대응하는 잔차 비디오 블록들을 포함할 수 있다.
다른 예들에서, 예를 들어, 스킵 모드에서 현재 비디오 블록에 대한 현재 비디오 블록의 잔차 데이터가 없을 수 있고, 잔차 생성 유닛(207)은 감산 연산을 수행하지 않을 수 있다.
변환 프로세싱 유닛(208)은 현재 비디오 블록과 연관된 잔차 비디오 블록에 하나 이상의 변환을 적용하는 것에 의해 현재 비디오 블록에 대한 하나 이상의 변환 계수 비디오 블록을 생성할 수 있다.
변환 프로세싱 유닛(208)이 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 생성한 후에, 양자화 유닛(209)은 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210) 및 역변환 유닛(211)은, 제각기, 변환 계수 비디오 블록에 역양자화 및 역변환을 적용하여 변환 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성할 수 있다. 재구성 유닛(212)은 버퍼(213)에 저장할 현재 블록과 연관된 재구성된 비디오 블록을 생성하기 위해 예측 유닛(202)에 의해 생성되는 하나 이상의 예측된 비디오 블록으로부터의 대응하는 샘플들에 재구성된 잔차 비디오 블록을 가산할 수 있다.
재구성 유닛(212)이 비디오 블록을 재구성한 후에, 비디오 블록에서의 비디오 블로킹 아티팩트를 감소시키기 위해 루프 필터링 동작이 수행될 수 있다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 기능 컴포넌트들로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)이 데이터를 수신할 때, 엔트로피 인코딩 유닛(214)은 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 23은 도 21에 예시된 시스템(100) 내의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록 다이어그램이다.
비디오 디코더(300)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 23의 예에서, 비디오 디코더(300)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 디코더(300)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
도 23의 예에서, 비디오 디코더(300)는 엔트로피 디코딩 유닛(301), 모션 보상 유닛(302), 인트라 예측 유닛(303), 역양자화 유닛(304), 역변환 유닛(305), 및 재구성 유닛(306) 및 버퍼(307)를 포함한다. 비디오 디코더(300)는, 일부 예들에서, 비디오 인코더(200)(예를 들면, 도 22)와 관련하여 설명된 인코딩 패스(encoding pass)와 일반적으로 반대인 디코딩 패스(decoding pass)를 수행할 수 있다.
엔트로피 디코딩 유닛(301)은 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림은 엔트로피 코딩된 비디오 데이터(예를 들면, 비디오 데이터의 인코딩된 블록들)를 포함할 수 있다. 엔트로피 디코딩 유닛(301)은 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터, 모션 보상 유닛(302)은 모션 벡터, 모션 벡터 정밀도, 참조 픽처 리스트 인덱스, 및 다른 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어, AMVP 및 병합 모드를 수행하는 것에 의해 그러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은 모션 보상된 블록들을 생성할 수 있으며, 어쩌면 보간 필터들에 기초하여 보간을 수행할 수 있다. 사용될 보간 필터들에 대한 식별자들이 서브픽셀 정밀도와 함께 신택스 요소들에 포함될 수 있다.
모션 보상 유닛(302)은 참조 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안 비디오 인코더(20)에 의해 사용되는 바와 같이 보간 필터들을 사용할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에 의해 사용되는 보간 필터들을 결정할 수 있고 예측 블록들을 생성하기 위해 보간 필터들을 사용할 수 있다.
모션 보상 유닛(302)은 인코딩된 비디오 시퀀스의 프레임(들) 및/또는 슬라이스(들)를 인코딩하는 데 사용되는 블록들의 크기들, 인코딩된 비디오 시퀀스의 픽처의 각각의 매크로블록이 어떻게 분할되는지를 기술하는 분할 정보, 각각의 분할이 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터 인코딩된 블록에 대한 하나 이상의 참조 프레임(및 참조 프레임 리스트), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정하기 위해 신택스 정보의 일부를 사용할 수 있다.
인트라 예측 유닛(303)은 공간적으로 인접한 블록들로부터 예측 블록을 형성하기 위해, 예를 들어, 비트스트림에서 수신되는 인트라 예측 모드들을 사용할 수 있다. 역양자화 유닛(303)은 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에 의해 디코딩되는 양자화된 비디오 블록 계수들을 역양자화(inverse quantize), 즉 양자화 해제(de-quantize)한다. 역변환 유닛(303)은 역변환을 적용한다.
재구성 유닛(306)은 디코딩된 블록들을 형성하기 위해 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성되는 대응하는 예측 블록들과 잔차 블록들을 합산할 수 있다. 원하는 경우, 디코딩된 블록들을 필터링하여 블록성 아티팩트(blockiness artifact)를 제거하기 위해 디블로킹 필터가 또한 적용될 수 있다. 디코딩된 비디오 블록들은 이어서 버퍼(307)에 저장되며, 버퍼(307)는 후속 모션 보상을 위한 참조 블록들을 제공한다.
도 18은 비디오를 프로세싱하는 방법(1800)에 대한 플로차트이다. 방법(1800)은, 비디오의 비디오 영역과 비디오 영역의 코딩된 표현 사이의 변환을 위해, 비디오 영역의 크로마 블록 크기와 색상 포맷 사이의 관계를 정의하는 신택스 규칙에 따라 코딩된 표현을 파싱하는 단계(1802); 및 신택스 규칙에 따라 파싱을 수행하는 것에 의해 변환을 수행하는 단계(1804)를 포함한다.
일부 실시예들에 의해 선호되는 예들의 목록이 다음에 제공된다. 본 문서에서, 비디오 영역은 코딩 블록 또는 슬라이스 또는 코딩 트리 유닛 또는 예측 블록 또는 변환 블록일 수 있다.
제1 조항 세트는 이전 섹션에서 논의된 기술들의 예시적인 실시예들을 보여준다. 이하의 조항들은 이전 섹션의 항목 1에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
1. 비디오 프로세싱 방법으로서, 비디오의 비디오 영역과 비디오 영역의 코딩된 표현 사이의 변환을 위해, 비디오 영역의 크로마 블록 크기와 색상 포맷 사이의 관계를 정의하는 신택스 규칙에 따라 코딩된 표현을 파싱하는 단계; 및 신택스 규칙에 따라 파싱을 수행하는 것에 의해 변환을 수행하는 단계를 포함하는, 방법.
2. 조항 1의 방법으로서, 색상 포맷은 4:4:4이고, 신택스 규칙은 크로마 블록이 루마 블록들에 대한 것과 동일한 크기 제약을 받는다는 것을 지정하는, 방법.
3. 조항 1의 방법으로서, 색상 포맷은 4:2:2이고, 신택스 규칙은 크로마 블록이 4:2:0 색상 포맷에 대한 것과 동일한 크기 제약을 받는다는 것을 지정하는, 방법.
4. 조항 1 내지 조항 3 중 어느 조항의 방법으로서, 신택스는 예측 모드들 및 작은 블록 분할들이 크로마 포맷 의존적 방식으로 사용된다는 것을 지정하는, 방법.
5. 조항 1의 방법으로서, 신택스 규칙은 비디오 영역의 색상 포맷에 기초하여 비디오 영역의 변환에 대해 최소 허용 크기 특징이 인에이블된다는 것을 정의하는, 방법.
다음 조항들은 이전 섹션의 항목 2에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
6. 비디오 프로세싱 방법으로서, 비디오의 속성 및 비디오의 크로마 포맷에 기초하여, 비디오의 코딩 트리 노드의 코딩 모드를 결정하는 단계; 및 결정된 코딩 모드를 사용하여 비디오의 코딩된 표현과 코딩 트리 노드의 비디오 블록 사이의 변환을 수행하는 단계를 포함하는, 방법.
7. 조항 6의 방법으로서, 속성이
i. 코딩 노드가 수평 이진 트리 분할을 갖는 MxN 코딩 트리 노드이거나;
ii. 코딩 노드가 수직 이진 트리 분할을 갖는 MxN 코딩 트리 노드이거나;
iii. 코딩 노드가 수평 삼진 트리 분할을 갖는 MxN 코딩 트리 노드이거나; 또는
iv. 코딩 노드가 수직 삼진 트리 분할을 갖는 MxN 코딩 트리 노드인
경우에 코딩 모드는 4:2:2인 크로마 포맷에 대해 MODE_TYPE_ALL로 결정되고, 4:2:0인 크로마 포맷에 대해 MODE_TYPE_INTRA 또는 MODE_TYPE_INTER로 결정되는, 방법.
8. 조항 7의 방법으로서, M = 8 또는 16 또는 32이고 N = 4 또는 8 또는 16인, 방법.
다음 조항들은 이전 섹션의 항목 12에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
9. 비디오 프로세싱 방법으로서, 규칙에 기초하여, 비디오의 비디오 영역에서 특정 크기의 크로마 블록들이 허용되는지 여부를 결정하는 단계; 및 결정에 기초하여 비디오 영역과 비디오 영역의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
10. 조항 9의 방법으로서, 규칙은 비디오 영역이 이중 트리 분할을 포함하는 것으로 인해 2xN 크로마 블록들이 허용되지 않는다는 것을 지정하는, 방법.
11. 조항 9의 방법으로서, 규칙은 비디오 영역이 단일 트리 분할을 포함하는 것으로 인해 2N 크로마 블록들이 허용되지 않는다는 것을 지정하는, 방법.
12. 조항 10 또는 조항 11의 방법으로서, N <= 64인, 방법.
다음 조항들은 이전 섹션의 항목 13, 항목 14 및 항목 15에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
13. 비디오 프로세싱 방법으로서, 비디오 조건에 대해 코딩 모드의 사용을 허용하는 규칙에 기초하여, 코딩 모드가 비디오 영역에 대해 허용된다고 결정하는 단계; 및 결정에 기초하여 비디오 영역 내의 픽셀들의 코딩된 표현과 비디오 영역의 픽셀들 사이의 변환을 수행하는 단계를 포함하는, 방법.
14. 조항 13의 방법으로서, 비디오 조건은 블록 크기이고, 규칙은 루마 블록들의 작은 블록 크기들에 대해 인트라 블록 복사 모드의 사용을 허용하는, 방법.
15. 조항 14의 방법으로서, 작은 블록 크기들은 8x4, 8x8, 16x4 또는 4xN 루마 블록 크기들을 포함하는, 방법.
16. 조항 13의 방법으로서, 규칙은 MODE_TYPE_INTER 코딩 모드를 사용하는 비디오 영역의 변환을 위해 인트라 블록 복사 모드의 사용을 허용하는, 방법.
17. 조항 13의 방법으로서, 규칙은 MODE_TYPE_INTER 코딩 모드를 사용하는 비디오 영역의 변환을 위해 팔레트 코딩 모드의 사용을 허용하는, 방법.
다음 조항들은 이전 섹션의 항목 16, 항목 17 및 항목 18에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
18. 비디오 프로세싱 방법으로서, 비디오 코딩 모드를 사용하여 비디오의 비디오 블록과 비디오 블록의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하며, 코딩 모드를 시그널링하는 신택스 요소는 규칙에 기초하여 코딩된 표현에 선택적으로 포함되는, 방법.
19. 조항 18의 방법으로서, 비디오 코딩 모드는 인트라 블록 코딩 모드이고, 규칙은 코딩된 표현에 신택스 요소를 포함시키는 것을 제어하기 위해 비디오 코딩 모드의 유형을 사용하도록 지정하는, 방법.
20. 조항 19의 방법으로서, 규칙은 비-SKIP 블록을 명시적으로 시그널링하는 것을 지정하는, 방법.
21. 조항 18의 방법으로서, 규칙은 비디오 블록의 모드 유형 및 스킵 플래그에 기초하여 인트라 블록 복사 플래그를 암시적으로 시그널링하도록 지정하는, 방법.
22. 조항 18의 방법으로서, 코딩 모드는 팔레트 코딩 모드이고, 규칙은 비디오 블록의 모드 유형에 기초하여 팔레트 코딩 표시자를 선택적으로 포함하도록 지정하는, 방법.
다음 조항들은 이전 섹션의 항목 21에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
23. 비디오 프로세싱 방법으로서, 크로마 블록이 임계 크기보다 작은 크기를 갖는 것으로 인해, 크로마 블록과 크로마 블록의 코딩된 표현 사이의 변환 동안 사용되는 변환 유형이 대응하는 루마 블록 변환에 사용되는 변환 유형과 상이하다고 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
24. 조항 23의 방법으로서, 임계 크기는 MxN이고, M은 2인, 방법.
다음 조항들은 이전 섹션의 항목 22에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
25. 조항 1 내지 조항 24 중 어느 조항의 방법으로서, 변환은 인터 및 인트라 결합 예측 모드를 MODE_TYPE_INTRA 모드로서 사용하는, 방법.
26. 조항 18 내지 조항 22 중 어느 조항의 방법으로서, 변환은 인터 및 인트라 결합 예측 모드를 MODE_TYPE_INTER 모드로서 사용하는, 방법. 예를 들어, CIIP를 MODE_TYPE_INTER로서 간주할 때, 이전 섹션에서의 항목 14 내지 항목 17에서 설명된 방법들이 적용될 수 있다. 또는 항목 14 내지 항목 16에서 설명된 방법들이 적용될 때, CIIP는 MODE_TYPE_INTER로서 간주될 수 있다.
다음 조항들은 이전 섹션의 항목 3 내지 항목 6에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
27. 비디오 프로세싱 방법으로서, 비디오 영역의 코딩 조건에 기초하여, 비디오 영역의 코딩된 표현과 비디오 영역의 픽셀 값들 사이의 변환 동안 최소 크로마 블록 규칙이 시행되는지 여부를 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
28. 조항 17의 방법으로서, 코딩 조건은 비디오 영역의 색상 포맷을 포함하는, 방법.
29. 조항 18의 방법으로서, 비디오 영역은 M 픽셀의 폭과 N 픽셀의 높이를 가지며, 코딩 조건은 M 및/또는 N의 값들에 더 의존하는, 방법.
30. 조항 29의 방법으로서, 비디오 영역이 4:2:2 색상 포맷을 가지며 M*N = 32 또는 M*N = 64인 것으로 인해 최소 크로마 블록 규칙이 인에이블되는, 방법.
다음 조항들은 이전 섹션의 항목 7 내지 항목 11에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
31. 비디오 프로세싱 방법으로서, 4:2:2 포맷의 비디오 영역의 코딩된 표현과 비디오 영역의 픽셀 값들 사이의 변환을 위해, 최소 크로마 블록 규칙이 비디오 영역에 대해 인에이블되는지 여부에 기초하여 변환에 사용될 모드 유형을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
32. 조항 31의 방법으로서, 비디오 영역이 4:2:2 포맷을 가지며 최소 크로마 블록 규칙이 인에이블되는 것으로 인해 비디오 영역의 모드 유형은 1로 설정되는, 방법.
33. 조항 31의 방법으로서, 모드 유형을 결정하는 단계는 최소 크로마 블록 규칙이 비디오 영역에 대해 인에이블되는 것으로 인해 모드 유형을 INTRA 유형이도록 결정하는 단계를 포함하는, 방법.
34. 조항 31의 방법으로서, 모드 유형을 결정하는 단계는 최소 크로마 블록 규칙이 비디오 영역에 대해 인에이블되는 것으로 인해 모드 유형 INTER가 디스에이블된다고 결정하는 단계를 포함하는, 방법.
다음 조항들은 이전 섹션의 항목 7 내지 항목 11에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
35. 비디오 프로세싱 방법으로서, 비디오 블록의 코딩된 표현과 비디오의 비디오 블록 사이의 변환을 위해, 변환 동안 사용되는 모드 유형 또는 비디오 블록의 치수에 기초하여, 변환 동안 블록 분할이 허용되는지 여부를 결정하는 단계; 및 결정을 사용하여 변환을 수행하는 단계를 포함하는, 방법.
36. 조항 35의 방법으로서, 블록 분할은 이진 트리 분할 또는 삼진 트리 분할을 포함하는, 방법.
37. 조항 35 및 조항 36 중 어느 조항의 방법으로서, 모드 유형이 INTER 모드인 경우에, 블록 분할은 분할 유형들을 허용하거나 허용하지 않는 제한 규칙에 기초하는, 방법.
다음 조항들은 이전 섹션의 항목 34에서 설명된 추가적인 기술들과 함께 구현될 수 있다.
38. 비디오 프로세싱 방법으로서, 비디오의 비디오 세그먼트의 코딩된 표현과 비디오 세그먼트 사이의 변환을 위해, 크기 MxN의 크로마 블록에 대해 특수 프로세싱 모드를 적용하도록 결정하는 단계 - M 및 N은 정수들임 -; 및 결정에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
39. 조항 38의 방법으로서, 특수 프로세싱 모드는 변환 동안 크로마 블록들의 사용을 디스에이블시키는, 방법.
40. 조항 38의 방법으로서, 특수 프로세싱 모드는 크로마 블록의 인트라 예측을 위해 DC 예측을 사용하는, 방법.
41. 조항 38의 방법으로서, 특수 프로세싱 모드는 대응하는 다운샘플링된 루마 계수들로부터 크로마 블록의 인트라 계수들을 예측하기 위해 교차 성분 선형 모델을 사용하는 것을 포함하는, 방법.
42. 조항 38 내지 조항 41 중 어느 조항의 방법으로서, 특수 프로세싱 모드는 비디오 세그먼트가 이중 트리 분할을 사용하는 것으로 인해 크로마 블록의 사용을 디스에이블시키는, 방법.
43. 조항 38 내지 조항 41 중 어느 조항의 방법으로서, 특수 프로세싱 모드는 비디오 세그먼트가 단일 트리 분할을 사용하는 것으로 인해 크로마 블록의 사용을 디스에이블시키는, 방법.
44. 조항 1 내지 조항 43 중 어느 조항의 방법으로서, 변환은 비디오를 코딩된 표현으로 인코딩하는 것을 포함하는, 방법.
45. 조항 1 내지 조항 43 중 어느 조항의 방법으로서, 변환은 코딩된 표현을 디코딩하여 비디오의 픽셀 값들을 생성하는 것을 포함하는, 방법.
46. 조항 1 내지 조항 45 중 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
47. 조항 1 내지 조항 45 중 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
48. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램 제품으로서, 코드는, 프로세서에 의해 실행될 때, 프로세서로 하여금 조항 1 내지 조항 45 중 어느 조항에 기재된 방법을 구현하게 하는, 컴퓨터 프로그램 제품.
49. 본 문서에 설명된 방법, 장치 또는 시스템.
제2 조항 세트는 이전 섹션(예를 들면, 항목 37 내지 항목 40)에서 논의된 기술들의 예시적인 실시예들을 보여준다.
1. 비디오 프로세싱 방법(예를 들면, 도 24a에 도시된 바와 같은 방법(2400))으로서, 규칙에 따라 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(2402)를 포함하며, 규칙은 팔레트 모드의 인에이블과 비디오 영역의 코딩 유형 사이의 관계를 지정하는, 방법.
2. 조항 1에 있어서, 규칙은 코딩 유형이 변환을 위해 인트라 모드, 팔레트 모드, 및 인트라 블록 복사 모드를 허용하는 MODE_TYPE ALL이거나 변환을 위해 인트라 모드의 사용을 허용하는 MODE_TYPE_INTRA인 경우에 팔레트 모드가 인에이블된다는 것을 지정하는, 방법.
3. 조항 2에 있어서, 규칙은 코딩 유형이 인터 코딩 모드만을 허용하는 MODE_TYPE_INTER인 경우에 팔레트 모드가 항상 디스에이블된다는 것을 지정하는, 방법.
4. 비디오 프로세싱 방법(예를 들면, 도 24b에 도시된 바와 같은 방법(2410))으로서, 규칙에 따라 제1 비디오 영역 및 제2 비디오 영역을 포함하는 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(2412)를 포함하며; 규칙은 제1 블록이 인트라 블록 복사 모드에 있고 제2 블록이 팔레트 모드에 있는 경우에 비디오의 크로마 성분들에 대한 디블로킹 필터의 경계 강도(bs)가 0으로 설정된다는 것을 지정하는, 방법.
5. 조항 4에 있어서, 규칙은 비디오에서의 크로마 성분에 관련된 변수가 특정 값을 갖는 경우에 경계 강도가 0으로 설정된다는 것을 추가로 지정하는, 방법.
6. 조항 5에 있어서, 특정 값은 0과 동일하지 않은, 방법.
7. 비디오 프로세싱 방법(예를 들면, 도 24c에 도시된 바와 같은 방법(2420))으로서, 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(2422)를 포함하며, 포맷 규칙은 비디오의 입력 비트 깊이에 관련된 변수가 비트스트림의 프로파일에 따라 제약된다는 것을 지정하는, 방법.
8. 조항 7에 있어서, 변수는 internal_minus_input_bit_depth인, 방법.
9. 조항 7에 있어서, 포맷 규칙은 10-비트 프로파일의 경우에 변수가 [0, 2]의 범위 내로 제약된다는 것을 지정하는, 방법.
10. 조항 7에 있어서, 포맷 규칙은 8-비트 프로파일의 경우에 변수가 0으로 제약된다는 것을 지정하는, 방법.
11. 조항 7에 있어서, 포맷 규칙은 (K+8)-비트 프로파일의 경우에 변수가 [0, K]의 범위 내로 제약된다는 것을 지정하며, 여기서 K는 0보다 큰 정수인, 방법.
12. 비디오 프로세싱 방법(예를 들면, 도 24d에 도시된 바와 같은 방법(2430))으로서, 포맷 규칙에 따라 비디오와 비디오의 비트스트림 사이의 변환을 수행하는 단계(2432)를 포함하며, 포맷 규칙은 최소 허용 양자화 파라미터를 나타내는 변수가 비트스트림의 프로파일에 따라 제약된다는 것을 지정하는, 방법.
13. 조항 12에 있어서, 변수는 QpPrimeTsMin인, 방법.
14. 조항 13에 있어서, 포맷 규칙은 10-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 [0, 2]의 범위 내로 제약된다는 것을 지정하는, 방법.
15. 조항 13에 있어서, 포맷 규칙은 8-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 0으로 제약된다는 것을 지정하는, 방법.
16. 조항 12에 있어서, 포맷 규칙은 (K+8)-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 [0, K]의 범위 내로 제약된다는 것을 지정하며, 여기서 K는 0보다 큰 정수인, 방법.
17. 조항 1 내지 조항 16 중 어느 한 조항에 있어서, 변환은 비디오를 비트스트림으로 인코딩하는 것을 포함하는, 방법.
18. 조항 1 내지 조항 16 중 어느 한 조항에 있어서, 변환은 비트스트림으로부터 비디오를 디코딩하는 것을 포함하는, 방법.
19. 조항 1 내지 조항 16 중 어느 한 조항에 있어서, 변환은 비디오로부터 비트스트림을 생성하는 것을 포함하고, 이 방법은: 비트스트림을 비일시적 컴퓨터 판독 가능 기록 매체에 저장하는 단계를 더 포함하는, 방법.
20. 비디오 프로세싱 장치로서, 조항 1 내지 조항 19 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는, 비디오 프로세싱 장치.
21. 비디오의 비트스트림을 저장하는 방법으로서, 조항 1 내지 조항 19 중 어느 한 조항에 기재된 방법을 포함하며, 비트스트림을 비일시적 컴퓨터 판독 가능 기록 매체에 저장하는 단계를 더 포함하는, 방법.
22. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서, 프로그램 코드는, 실행될 때, 프로세서로 하여금 조항 1 내지 조항 19 중 어느 하나 이상의 조항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
23. 위에서 설명된 방법들 중 어느 하나에 따라 생성되는 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
24. 비트스트림 표현을 저장하기 위한 비디오 프로세싱 장치로서, 비디오 프로세싱 장치는 조항 1 내지 조항 19 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성되는, 비디오 프로세싱 장치.
본 문서에 설명된 개시된 및 다른 해결책들, 예들, 실시예들, 모듈들 및 기능 동작들은 디지털 전자 회로로, 또는 본 문서에 개시된 구조 및 그의 구조적 등가물을 포함한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 다른 실시예들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉 데이터 프로세싱 장치에 의해 실행하기 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 장치들, 디바이스들, 및 머신들을 포괄한다. 장치들은, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파 신호는 인공적으로 생성된 신호, 예를 들면, 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성되는 머신 생성(machine-generated) 전기, 광학, 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어를 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적절한 다른 유닛으로서를 포함하여, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 문서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 작동하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 로직 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치들이 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서들 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 동작 가능하게 결합될 것이거나, 또는 양쪽 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들과 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서, 반도체 메모리 디바이스, 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기 디스크, 예를 들면, 내장형 하드 디스크 또는 이동식 디스크; 자기 광학 디스크; 및 CD ROM과 DVD-ROM 디스크를 포함한, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 주제의 범위 또는 청구될 수 있는 것의 범위에 대한 제한으로서 해석되어서는 안 되며, 오히려 특정 기술들의 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명으로서 해석되어야 한다. 개별적인 실시예들의 맥락에서 본 특허 문서에 설명되는 특정한 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 설명된 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (24)

  1. 비디오 프로세싱 방법으로서,
    규칙에 따라 비디오 영역을 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 규칙은 팔레트 모드의 인에이블과 상기 비디오 영역의 코딩 유형 사이의 관계를 지정하는, 방법.
  2. 제1항에 있어서, 상기 규칙은 상기 코딩 유형이 상기 변환을 위해 인트라 모드, 팔레트 모드, 및 인트라 블록 복사 모드를 허용하는 MODE_TYPE ALL이거나 상기 변환을 위해 인트라 모드의 사용을 허용하는 MODE_TYPE_INTRA인 경우에 상기 팔레트 모드가 인에이블된다는 것을 지정하는, 방법.
  3. 제2항에 있어서, 상기 규칙은 상기 코딩 유형이 인터 코딩 모드만을 허용하는 MODE_TYPE_INTER인 경우에 상기 팔레트 모드가 항상 디스에이블된다는 것을 지정하는, 방법.
  4. 비디오 프로세싱 방법으로서,
    규칙에 따라 제1 비디오 영역 및 제2 비디오 영역을 포함하는 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계
    를 포함하며;
    상기 규칙은 제1 블록이 인트라 블록 복사 모드에 있고 제2 블록이 팔레트 모드에 있는 경우에 상기 비디오의 크로마 성분들에 대한 디블로킹 필터의 경계 강도(bs)가 0으로 설정된다는 것을 지정하는, 방법.
  5. 제4항에 있어서, 상기 규칙은 상기 비디오에서의 크로마 성분에 관련된 변수가 특정 값을 갖는 경우에 상기 경계 강도가 0으로 설정된다는 것을 추가로 지정하는, 방법.
  6. 제5항에 있어서, 상기 특정 값은 0과 동일하지 않은, 방법.
  7. 비디오 프로세싱 방법으로서,
    포맷 규칙에 따라 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 포맷 규칙은 상기 비디오의 입력 비트 깊이에 관련된 변수가 상기 비트스트림의 프로파일에 따라 제약된다는 것을 지정하는, 방법.
  8. 제7항에 있어서, 상기 변수는 internal_minus_input_bit_depth인, 방법.
  9. 제7항에 있어서, 상기 포맷 규칙은 10-비트 프로파일의 경우에 상기 변수가 [0, 2]의 범위 내로 제약된다는 것을 지정하는, 방법.
  10. 제7항에 있어서, 상기 포맷 규칙은 8-비트 프로파일의 경우에 상기 변수가 0으로 제약된다는 것을 지정하는, 방법.
  11. 제7항에 있어서, 상기 포맷 규칙은 (K+8)-비트 프로파일의 경우에 상기 변수가 [0, K]의 범위 내로 제약된다는 것을 지정하며, 여기서 K는 0보다 큰 정수인, 방법.
  12. 비디오 프로세싱 방법으로서,
    포맷 규칙에 따라 비디오와 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 포맷 규칙은 최소 허용 양자화 파라미터를 나타내는 변수가 상기 비트스트림의 프로파일에 따라 제약된다는 것을 지정하는, 방법.
  13. 제12항에 있어서, 상기 변수는 QpPrimeTsMin인, 방법.
  14. 제13항에 있어서, 상기 포맷 규칙은 10-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 [0, 2]의 범위 내로 제약된다는 것을 지정하는, 방법.
  15. 제13항에 있어서, 상기 포맷 규칙은 8-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 0으로 제약된다는 것을 지정하는, 방법.
  16. 제12항에 있어서, 상기 포맷 규칙은 (K+8)-비트 프로파일의 경우에 (QpPrimeTsMin - 4)/6이 [0, K]의 범위 내로 제약된다는 것을 지정하며, 여기서 K는 0보다 큰 정수인, 방법.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서, 상기 변환은 상기 비디오를 상기 비트스트림으로 인코딩하는 것을 포함하는, 방법.
  18. 제1항 내지 제16항 중 어느 한 항에 있어서, 상기 변환은 상기 비트스트림으로부터 상기 비디오를 디코딩하는 것을 포함하는, 방법.
  19. 제1항 내지 제16항 중 어느 한 항에 있어서, 상기 변환은 상기 비디오로부터 상기 비트스트림을 생성하는 것을 포함하고, 상기 방법은: 상기 비트스트림을 비일시적 컴퓨터 판독 가능 기록 매체에 저장하는 단계
    를 더 포함하는, 방법.
  20. 비디오 프로세싱 장치로서, 제1항 내지 제19항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는, 비디오 프로세싱 장치.
  21. 비디오의 비트스트림을 저장하는 방법으로서, 제1항 내지 제19항 중 어느 한 항에 기재된 방법을 포함하며, 상기 비트스트림을 비일시적 컴퓨터 판독 가능 기록 매체에 저장하는 단계
    를 더 포함하는, 방법.
  22. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서, 상기 프로그램 코드는, 실행될 때, 프로세서로 하여금 제1항 내지 제19항 중 어느 하나 이상의 항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
  23. 위에서 설명된 방법들 중 어느 하나에 따라 생성되는 비트스트림을 저장하는 컴퓨터 판독 가능 매체.
  24. 비트스트림 표현을 저장하기 위한 비디오 프로세싱 장치로서, 상기 비디오 프로세싱 장치는 제1항 내지 제19항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성되는, 비디오 프로세싱 장치.
KR1020227039256A 2020-04-10 2021-04-12 비디오 코딩에서 변환 스킵 블록들에 대한 최소 허용 양자화 KR20220165277A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2020/084291 2020-04-10
CN2020084291 2020-04-10
PCT/CN2021/086522 WO2021204295A1 (en) 2020-04-10 2021-04-12 Minimum allowed quantization for transform skip blocks in video coding

Publications (1)

Publication Number Publication Date
KR20220165277A true KR20220165277A (ko) 2022-12-14

Family

ID=78023822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227039256A KR20220165277A (ko) 2020-04-10 2021-04-12 비디오 코딩에서 변환 스킵 블록들에 대한 최소 허용 양자화

Country Status (7)

Country Link
US (2) US20230099893A1 (ko)
EP (1) EP4118831A4 (ko)
JP (1) JP7442673B2 (ko)
KR (1) KR20220165277A (ko)
CN (2) CN115362681A (ko)
BR (1) BR112022020449A2 (ko)
WO (1) WO2021204295A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020228662A1 (en) * 2019-05-11 2020-11-19 Beijing Bytedance Network Technology Co., Ltd. Boundary strength determination for deblocking filters in video processing
US20230128313A1 (en) * 2021-10-21 2023-04-27 Tencent America LLC Adaptive Resolution for Single-Reference Motion Vector Difference

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114501033B (zh) * 2014-06-20 2023-11-10 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
US20160234494A1 (en) * 2015-02-10 2016-08-11 Qualcomm Incorporated Restriction on palette block size in video coding
JP2021010046A (ja) * 2017-10-06 2021-01-28 シャープ株式会社 画像符号化装置及び画像復号装置
BR122021012456B1 (pt) * 2019-01-15 2022-03-22 Lg Electronics Inc Método de decodificação de uma imagem realizado por um aparelho de decodificação, método de codificação de uma imagem realizado por um aparelho de codificação, aparelho de decodificação para decodificação de imagem, aparelho de codificação para codificação de imagem e mídia de armazenamento digital legível por computador não transitória
CN110381311B (zh) * 2019-07-01 2023-06-30 腾讯科技(深圳)有限公司 视频帧的编码方法、装置、计算机可读介质及电子设备
CN114556931B (zh) * 2019-08-26 2023-08-08 Lg电子株式会社 基于调色板模式的图像或视频编码
US20220286700A1 (en) * 2019-08-26 2022-09-08 Lg Electronics Inc. Image or video coding based on palette escape coding
WO2021060847A1 (ko) * 2019-09-25 2021-04-01 엘지전자 주식회사 컬러 포맷에 기반하여 분할 모드를 결정하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US11930208B2 (en) * 2020-01-10 2024-03-12 Tencent America LLC Method and apparatus for signaling skip mode flag
CN114930841A (zh) * 2020-01-10 2022-08-19 Lg 电子株式会社 用于亮度分量和色度分量的基于bdpcm的图像解码方法及其装置
KR20220110834A (ko) * 2020-01-10 2022-08-09 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
US11184632B2 (en) * 2020-01-20 2021-11-23 Tencent America LLC Method and apparatus for palette based coding mode under local dual tree structure

Also Published As

Publication number Publication date
US20230099893A1 (en) 2023-03-30
EP4118831A4 (en) 2023-12-27
EP4118831A1 (en) 2023-01-18
BR112022020449A2 (pt) 2022-11-29
US20240056580A1 (en) 2024-02-15
CN115362681A (zh) 2022-11-18
CN117939155A (zh) 2024-04-26
WO2021204295A1 (en) 2021-10-14
JP7442673B2 (ja) 2024-03-04
JP2023521119A (ja) 2023-05-23

Similar Documents

Publication Publication Date Title
KR102601022B1 (ko) 색상 포맷에 기초한 비디오 영역 분할
JP7288084B2 (ja) 変換スキップモードにおける信号通知
KR102649584B1 (ko) 크로마 인트라 모드에 기초한 크기 제한
KR102653559B1 (ko) 색상 포맷에 기초한 비디오 영역 분할
JP2022529169A (ja) 変換スキップモードのためのコンテキスト符号化
JP2022531587A (ja) 符号化ツリー構造タイプに基づく符号化モード
JP7442673B2 (ja) ビデオコーディングにおけるスキップブロックの変換のための最小許容量子化
KR20210132662A (ko) 팔레트 모드 사용 지시의 조인트 코딩
JP7581447B2 (ja) クロマ・イントラモードのベースとなるサイズ制約