KR20220047853A - 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치 - Google Patents

분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치 Download PDF

Info

Publication number
KR20220047853A
KR20220047853A KR1020227009187A KR20227009187A KR20220047853A KR 20220047853 A KR20220047853 A KR 20220047853A KR 1020227009187 A KR1020227009187 A KR 1020227009187A KR 20227009187 A KR20227009187 A KR 20227009187A KR 20220047853 A KR20220047853 A KR 20220047853A
Authority
KR
South Korea
Prior art keywords
block
root block
split
type
chroma
Prior art date
Application number
KR1020227009187A
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 에이치에프아이 이노베이션 인크.
Priority to KR1020227009338A priority Critical patent/KR20220042243A/ko
Publication of KR20220047853A publication Critical patent/KR20220047853A/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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree 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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/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
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

비디오 코딩의 방법 및 장치가 개시된다. 본 발명의 한 방법에 따르면, 420 또는 422 크로마 형식으로 하나의 루마 성분 및 하나 이상의 크로마 성분을 포함하는 루트 블록이 인코더 측에서 수신되거나 또는 디코더 측에서 루트 블록을 포함하는 압축된 데이터가 수신된다. 하나 이상의 조건이 충족되면 루트 블록 내의 모든 자식 블록에 대해 타겟 모드 유형이 결정된다. 조건은 크로마 성분에 대해 자식 블록 폭이 2와 같은 것 또는 자식 블록 크기가 16 미만인 것을 포함한다. 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않으면, 타겟 모드 유형은 인트라 또는 인터 유형 모드에 대응하고, 그렇지 않으면 타겟 모드 유형은 인트라 유형 모드에 대응한다. 루트 블록의 자식 블록은 그에 따라 인코딩되거나 디코딩된다.

Description

분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치
관련 출원에 대한 상호 참조
본 출원은 2019년 8월 23일에 출원된 미국 특허 가출원 제62/890,723호 및 2019년 9월 26일에 출원된 미국 특허 가출원 제62/906,435호에 대하여 우선권을 주장한다. 상기 미국 특허 가출원들은 인용에 의해 그 전부가 본원에 통합된다.
본 발명은 비디오 코딩에서 소형 블록에 대한 예측 모드 선택에 관한 것이다. 특히, 본 발명은 작은 블록에 대한 프로세싱 속도를 향상시키는 기술을 개시한다.
HEVC(High Efficiency Video Coding) 표준은 ITU-T VCEG(Video Coding Experts Group) 및 ISO/IEC MPEG(Moving Picture Experts Group) 표준화 조직의 공동 비디오 프로젝트에 따라 개발되며, 특히 JCT-VC(Joint Collaborative Team on Video Coding)로 알려진 파트너십을 맺고 있다. HEVC에서 하나의 슬라이스는 다수의 코딩 트리 단위(coding tree units; CTU)로 분할된다. 기본 프로파일에서, CTU의 최소 크기 및 최대 크기는 시퀀스 파라미터 세트(sequence parameter set; SPS)의 신택스 요소에 의해 명시된다. 허용되는 CTU 크기는 8x8, 16x16, 32x32 또는 64x64일 수 있다. 각 슬라이스에 대해, 슬라이스 내의 CTU는 래스터 스캔 순서에 따라 프로세싱된다.
CTU는 다양한 로컬 특성에 적응하기 위해 다수의 코딩 단위(coding units; CU)로 더 분할된다. 코딩 트리로서 표시된 쿼드 트리는 CTU를 다수의 CU로 분할하는 데 사용된다. CTU 크기를 MxM으로 설정하며, M은 64, 32 또는 16 값 중 하나이다. CTU는 단일 CU(즉, 분할 없음)이거나 동일한 크기(즉, 각각 M/2xM/2)의 더 작은 단위 4개로 분할될 수 있으며, 이는 코딩 트리의 노드에 해당한다. 단위가 코딩 트리의 리프 노드인 경우 단위는 CU가 된다. 그렇지 않으면 노드의 크기가 시퀀스 파라미터 세트(Sequence Parameter Set; SPS)에 명시된 최소 허용 CU 크기에 도달할 때까지 쿼드 트리 분할 프로세스가 반복될 수 있다. 이 표현은 도 1의 코딩 트리(분할 트리 구조라고도 함)(120)에 의해 명시된 바와 같은 재귀 구조를 초래한다. CTU 분할(110)은 도 1에 도시되어 있으며, 실선은 CU 경계를 나타낸다. 인터 화상(시간적) 또는 인트라 화상(공간적) 예측을 사용하여 화상 영역을 코딩할지 여부는 CU 수준에서 결정된다. 최소 CU 크기는 8x8일 수 있으므로 상이한 기본 예측 유형들 간 전환을 위한 최소 세분성(granularity)은 8x8이다.
또한, HEVC에 따르면 각 CU는 하나 이상의 예측 단위(prediction units; PU)로 분할될 수 있다. CU와 결합하여 PU는 예측 정보를 공유하기 위한 기본 대표 블록으로서 작동한다. 각 PU 내부에서는 동일한 예측 프로세스가 적용되고 관련 정보가 PU 단위로 디코더로 송신된다. CU는 PU 분할 유형에 따라 1개, 2개 또는 4개의 PU로 분할될 수 있다. HEVC는 도 2에 도시된 바와 같이 MxM, MxM/2, M/2xM, M/2xM/2, MxM/4(U), MxM/4(D), M/4xM(L) 및 M/4xM(R) 분할 유형들을 포함하여 CU를 PU로 분할하기 위한 8가지 형상을 정의한다. CU와 달리 PU는 HEVC에 따라 한 번만 분할될 수 있다. 제2 행에 도시된 제2 분할은 두 개의 분할된 부분의 크기가 다른 비대칭 분할에 해당한다.
PU 분할 유형을 기반으로 한 예측 프로세스에 의해 잔차 블록을 획득한 후, CU의 예측 잔차는 도 1에 도시된 바와 같이 이 CU에 대한 코딩 트리와 유사한 또 다른 쿼드 트리 구조에 따라 변환 단위(transform units; TU)로 분할될 수 있다. 실선은 CU 경계를 나타내고 점선은 TU 경계를 나타낸다. TU는 정수 변환 및 양자화를 적용하기 위한 잔차 계수 또는 변환 계수를 갖는 기본 대표 블록이다. 각 TU에 대해 TU와 동일한 크기를 갖는 하나의 정수 변환을 적용하여 잔차 계수를 얻는다. 이러한 계수는 TU 기반의 양자화 후에 디코더로 송신된다.
코딩 트리 블록(coding tree block; CTB), 코딩 블록(coding block; CB), 예측 블록(prediction block; PB) 및 변환 블록(transform block; TB)이라는 용어는 CTU, CU, PU 및 CTU와 TU와 각각 연관된 하나의 색상 성분의 2-D 샘플 배열을 명시하기 위해 정의된다. 따라서 CTU는 루마 CTB 1개, 크로마 CTB 2개 및 연관 신택스 요소로 구성된다. 유사한 관계가 CU, PU 및 TU에 대해 유효하다. 트리 분할은 일반적으로 루마와 크로마 모두에 동시에 적용되지만 크로마에 대해 특정 최소 크기가 도달되면 예외가 적용된다.
대안적으로, 이진 트리 분할 구조가 제안된다. 개시된 분할 프로세스에서, 블록은 재귀적으로 2개의 더 작은 블록으로 분할될 수 있다. 도 3은 상이한 유형들의 분할 유형을 도시한다. 대칭 수평 및 수직 분할은 도 3의 상단 두 분할 유형에서 도시된 가장 효율적이고 가장 단순한 분할(즉, M/2xM 및 MxM/2)이다. 따라서 일 실시예로서 이 두 분할 유형만이 사용된다.
MxN 크기의 주어진 블록에 대해, 주어진 블록이 두 개의 작은 블록으로 분할되는지 여부를 나타내는 플래그가 시그널링된다. 플래그가 분할을 나타낸다면, 사용되는 분할 유형을 나타내기 위해 또 다른 신택스 요소가 시그널링된다. 수평 분할이 사용되면 MxN/2 크기의 두 블록으로 분할된다; 그렇지 않으면 M/2xN 크기의 두 블록으로 분할된다. 이진 트리 분할 프로세스는 블록의 크기(폭 또는 높이)가 예를 들어, SPS와 같은 고급 신택스에서 정의된 최소 허용 블록 크기(폭 또는 높이)에 도달할 때까지 반복될 수 있다. 이진 트리는 두 가지 분할 유형(즉, 수평 및 수직)을 가지므로 허용되는 최소 블록 폭과 높이는 모두 명시되어야 한다. 수평 분할은 분할 결과 명시된 최소 높이보다 블록 높이가 작은 경우 암시적으로 금지된다. 마찬가지로, 분할 결과 명시된 최소 폭보다 블록 폭이 작은 경우 수직 분할이 암시적으로 금지된다.
도 4는 블록 분할(410) 및 그에 대응하는 이진 트리(420)의 예를 도시한다. 이진 트리의 각 분할 노드(즉, 리프가 아닌 노드)에서, 사용되는 분할 유형(수평 또는 수직)을 나타내는 데 하나의 플래그가 사용되며, 여기서 0은 수평 분할을 나타내고 1은 수직 분할을 나타낼 수 있다.
이진 트리 구조는 슬라이스를 CTU로, CTU를 CU로, CU를 PU로, 또는 CU를 TU로 분할하는 등과 같이, 이미지 영역을 다수의 더 작은 블록으로 분할하는 데 사용될 수 있다. 이진 트리는 CTU를 CU로 분할하는 데 사용할 수 있으며, 여기서 이진 트리의 루트 노드는 CTU이고 이진 트리의 리프 노드는 CU이다. 리프 노드는 예측 및 변환 코딩에 의해 추가로 프로세싱될 수 있다. 단순화를 위해 CU에서 PU로 또는 CU에서 TU로 더 이상의 분할이 없다. 그러므로, 다른 말로 하면, 이진 트리의 리프 노드는 예측 및 변환 코딩을 위한 기본 단위이다.
QTBT 구조
이진 트리 구조는, 더 많은 분할 형상이 지원될 수 있기 때문에 쿼드 트리 구조보다 더 유연하며 코딩 효율성 향상의 원천이기도 하다. 그러나 최적의 분할 형상을 선택하기 위해 인코딩 복잡성도 증가할 것이다. 복잡성과 코딩 효율성의 균형을 맞추기 위해 쿼드 트리와 이진 트리 구조를 결합하는 방법이 개시되었으며, 이는 쿼드 트리 플러스 이진 트리(quadtree plus binary tree; QTBT) 구조라고도 불린다. QTBT 구조에 따르면, CTU(또는 I 슬라이스의 경우 CTB)는 쿼드 트리의 루트 노드이고 CTU는 쿼드 트리에 의해 먼저 분할되며, 여기서 한 노드의 쿼드 트리 분할은 노드가 최소 허용 쿼드 트리 리프 노드 크기(즉, MinQTSize)에 도달할 때까지 반복될 수 있다. 쿼드 트리 리프 노드 크기가 최대 허용 이진 트리 루트 노드 크기(즉, MaxBTSize)보다 크지 않은 경우, 이진 트리로 더 분할될 수 있다. 한 노드의 이진 트리 분할은 노드가 최소 허용 이진 트리 리프 노드 크기(즉, MinBTSize) 또는 최대 허용 이진 트리 깊이(즉, MaxBTDepth)에 도달할 때까지 반복될 수 있다. 이진 트리 리프 노드, 즉, CU(I 슬라이스의 경우 CB)는 예측(예컨대, 인트라 화상 예측 또는 인터 화상 예측)에 그리고 임의의 추가 분할 없이 변환에 사용될 것이다. 이진 트리 분할에는 대칭 수평 분할과 대칭 수직 분할의 두 가지 분할 유형이 있다. QTBT 구조에서 최소 허용 쿼드 트리 리프 노드 크기, 최대 허용 이진 트리 루트 노드 크기, 최소 허용 이진 트리 리프 노드 폭 및 높이, 그리고 최대 허용 이진 트리 깊이는 예를 들어, SPS에서와 같은 상위 수준 신택스로 표시될 수 있다. 도 5는 블록 분할(510) 및 그에 대응하는 QTBT(520)의 예를 도시한다. 실선은 쿼드 트리 분할을 나타내고 점선은 이진 트리 분할을 나타낸다. 이진 트리의 각 분할 노드(즉, 리프가 아닌 노드)에서, 하나의 플래그는 어느 분할 유형(수평 또는 수직)이 사용되는지를 나타내고, 여기서 0은 수평 분할을 나타내고 1은 수직 분할을 나타낼 수 있다.
상기 QTBT 구조는 예를 들어, 슬라이스를 CTU로, CTU를 CU로, CU를 PU로, 또는 CU를 TU로 분할하는 등과 같이, 이미지 영역(예컨대, 슬라이스, CTU 또는 CU)을 다수의 더 작은 블록으로 분할하는 데 사용될 수 있다. 예를 들어, QTBT는 CTU를 CU로 분할하는 데 사용할 수 있으며, 여기서 QTBT의 루트 노드는 QTBT 구조에 의해 다수의 CU로 분할되는 CTU이고 CU는 예측 및 변환 코딩에 의해 추가로 프로세싱된다. 단순화를 위해 CU에서 PU로 또는 CU에서 TU로 더 이상 분할되지 않는다. 즉, CU는 PU와 같고 PU는 TU와 같다. 그러므로, 다른 말로 하면, QTBT 구조의 리프 노드는 예측 및 변환의 기본 단위이다.
QTBT 구조의 예는 다음과 같다. 크기가 128x128인 CTU의 경우 최소 허용 쿼드 트리 리프 노드 크기는 16x16으로 설정되고 최대 허용 이진 트리 루트 노드 크기는 64x64로 설정되며, 최소 허용 이진 트리 리프 노드 폭 및 높이는 모두 4로 설정되고 최대 허용 이진 트리 깊이는 4로 설정된다. 첫째, CTU는 쿼드 트리 구조로 분할되고 리프 쿼드 트리 단위는 16x16(즉, 최소 허용 쿼드 트리 리프 노드 크기)에서 128x128(CTU 크기와 같음, 즉, 분할 없음)까지의 크기를 가질 수 있다. 리프 쿼드 트리 단위가 128x128이면 크기가 최대 허용 이진 트리 루트 노드 크기 64x64를 초과하므로 이진 트리에 의해 더 이상 분할될 수 없다. 그렇지 않으면 리프 쿼드 트리 단위가 이진 트리에 의해 더 분할될 수 있다. 루트 이진 트리 단위이기도 한 리프 쿼드 트리 단위는 이진 트리 깊이가 0이다. 이진 트리 깊이가 4(즉, 표시된 대로 최대 허용 이진 트리)에 도달하면 분할 없음이 암시적으로 암시된다. 대응 이진 트리 노드의 블록의 폭이 4인 경우 비수평 분할이 암시적으로 암시된다. 대응 이진 트리 노드의 블록의 높이가 4인 경우 비수직 분할이 암시적으로 암시된다. QTBT의 리프 노드는 예측(인트라 화상 또는 인터 화상) 및 변환 코딩에 의해 추가로 프로세싱된다.
I-슬라이스의 경우 QTBT 트리 구조는 일반적으로 루마/크로마 별도 코딩과 함께 적용된다. 예를 들어, QTBT 트리 구조는 I-슬라이스에 대해 루마 성분 및 크로마 성분에 개별적으로 적용되고 P-슬라이스 및 B-슬라이스에 대해 루마 및 크로마(크로마에 대해 특정 최소 크기가 도달되는 경우 제외)에 동시에 적용된다. 즉, I-슬라이스에서 루마 CTB는 QTBT 구조화 블록 분할을 가지고 두 개의 크로마 CTB는 또 다른 QTBT 구조화 블록 분할을 가진다. 또 다른 예에서 두 개의 크로마 CTB는 자체 QTBT 구조화 블록 분할을 가질 수도 있다.
비디오 인코딩 및 디코딩의 방법 및 장치가 개시된다. 본 발명의 한 방법에 따르면, 420 또는 422 크로마 형식으로 하나의 루마 성분과 하나 이상의 크로마 성분을 포함하는 루트 블록이 인코더 측에서 수신되거나 또는 루트 블록을 포함하는 압축된 데이터가 디코더 측에서 수신되며, 여기서 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 하위 블록으로 구성된다. 하나 이상의 조건이 충족될 때, 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형이 결정되며, 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것을 포함하고, 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 타겟 모드 유형은 인트라 유형 모드에 대응한다. 루트 블록의 상기 하나 이상의 자식 블록은 타겟 모드 유형에 따라 인코더 측에서 인코딩되거나 디코더 측에서 디코딩된다.
일 실시예에서, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 폭이 2와 같은 것은, 하나의 루마 성분에 대한 루트 블록의 제2 폭이 8과 같고 루트 블록에 대한 단일 분할 트리가 이진 수직 분할을 포함한다는 하나의 조건에 대응한다. 또 다른 실시예에서, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭이 16과 같고 루트 블록에 대한 단일 분할 트리가 삼진 수직 분할(ternary vertical partition)을 포함한다는 하나의 조건에 대응한다.
일 실시예에서, 루트 블록이 420 크로마 형식일 때, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 8 및 16과 같고 루트 블록에 대한 단일 분할 트리가 이진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 16과 같고 루트 블록에 대한 단일 분할 트리가 삼진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 4 및 32와 같고 루트 블록에 대한 단일 분할 트리가 이진 또는 삼진 수평 분할을 포함한다, 또는 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 4 및 64와 같고 루트 블록에 대한 단일 분할 트리가 삼진 수평 분할을 포함한다는 하나의 조건에 대응한다.
일 실시예에서, 루트 블록이 422 크로마 형식일 때, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 8과 같고 루트 블록에 대한 단일 분할 트리가 이진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 16 및 8과 같고 루트 블록에 대한 단일 분할 트리가 삼진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 4 및 16과 같고 루트 블록에 대한 단일 분할 트리가 이진 또는 삼진 수평 분할을 포함한다, 또는 상기 하나의 루마 성분에 대한 루트 블록의 제2 폭 및 높이가 각각 4 및 32와 같고 루트 블록에 대한 단일 분할 트리가 삼진 수평 분할을 포함한다는 하나의 조건에 대응한다.
일 실시예에서, 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 인트라 유형 모드 또는 인터 유형 모드가 루트 블록에 대해 선택되는 것을 나타내기 위해 제1 신택스가 인코더 측에서 시그널링되거나 디코더 측에서 파싱된다.
코딩 영역은 코딩 트리 단위에 대응할 수 있다. 이미지 영역은 슬라이스에 대응할 수 있다. 이 경우, 슬라이스의 코딩 유형을 나타내기 위해 슬라이스 헤더의 두 번째 신택스가 인코더 측에서 시그널링되거나 디코더 측에서 파싱된다.
단일 분할 트리를 갖는 작은 블록에 대한 모드 유형 제약을 위한 또 다른 방법 및 장치가 또한 개시된다. 이 방법에 따르면 루트 블록 내의 모든 자식 블록에 대한 타겟 모드 유형은 하나 이상의 조건이 충족될 때 결정된다. 조건은 크로마 성분에 대한 하나의 자식 블록의 제1 블록 크기가 16 미만인 것을 포함한다. 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우 타겟 모드 유형은 인트라 유형 모드에 대응한다.
일 실시예에서, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 블록 크기는 4와 같다. 예를 들어, 이 조건은 블록 크기가 64인 420 크로마 형식의 루트 블록과, 쿼드 트리 분할, 삼진 수직 분할, 삼진 수평 분할, 이진 수직 분할 또는 이진 수평 분할을 포함하는 루트 블록에 대한 단일 분할 트리에 대응할 수 있다.
또 다른 실시예에서, 상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 블록 크기는 8과 같다.
도 1은 코딩 트리 단위(CTU)를 코딩 단위(CU)로 분할하기 위해 쿼드 트리 구조를 사용하는 블록 분할의 예를 도시한다.
도 2는 고효율 비디오 코딩(High Efficiency Video Coding; HEVC)에 따른 비대칭 모션 분할(asymmetric motion partition; AMP)을 도시하며, AMP는 CU를 PU로 분할하기 위해 8개의 형상을 정의한다.
도 3은 이진 트리 분할 구조에 의해 사용되는 다양한 이진 분할 유형의 예를 도시하며, 여기서 분할 유형을 사용하여 블록이 두 개의 더 작은 블록으로 재귀적으로 분할될 수 있다.
도 4는 블록 분할 및 대응 이진 트리의 예를 도시하며, 여기서 이진 트리의 각 분할 노드(즉, 리프가 아닌 노드)에서, 사용되는 분할 유형(수평 또는 수직)을 나타내는 데 하나의 신택스가 사용되며, 0은 수평 분할을 나타내고 1은 수직 분할을 나타낼 수 있다.
도 5는 블록 분할과 그에 대응하는 QTBT의 예를 도시하며, 여기서 실선은 쿼드 트리 분할을 나타내고 점선은 이진 트리 분할을 나타낸다.
도 6은 루트 블록의 첫 번째 루마 블록, 루트 블록의 마지막 루마 블록, 루트 블록의 중앙 위치(BR-C로 표시됨)를 덮는 루마 블록일 수 있는 참조 루마 블록의 위치의 예를 도시한다.
도 7은 본 발명의 실시예에 따른 작은 블록에 대한 제약 모드 선택을 갖는 예시적인 코딩 시스템의 흐름도를 도시한다.
도 8은 본 발명의 실시예에 따른 작은 블록에 대한 제약 모드 선택을 갖는 예시적인 코딩 시스템의 또 다른 흐름도를 도시한다.
이하에서는 본 발명의 최상으로 예상되는 실행 모드를 설명한다. 이 설명은 본 발명의 일반적인 원리를 예시하기 위한 것이고 제한하는 의도로 해석되지 않아야 한다. 발명의 범위는 첨부된 청구항들을 참고하여 최상으로 결정된다.
인트라 예측에서, 이웃하는 재구성된 샘플은 현재 블록에 대해 참조 샘플로서 사용된다. 블록 크기가 매우 작은 경우(예컨대, 2x2 크로마 CU), 프로세서는 고작 현재 블록의 샘플만 예측할 수 있고 더 이상은 예측할 수 없기 때문에 프로세싱 처리량이 제한된다. 다수의 작은 블록이 있는 경우, 프로세싱 처리량은 개선될 수 없다. 따라서, 본 발명의 일 실시예에서는 병렬 프로세싱을 개선하기 위해 영역 내에서 동일한 참조 샘플을 공유하는 것이 제안된다.
다음 제안된 방법에서는, 공유 루트 CU/루트 블록이 정의된다. 루트 블록의 상단 좌측 위치는 sharedRootPos이고, 폭은 sharedRootWidth이며, 높이는 sharedRootHeight이다. 루트 블록의 도출은 다음과 같다.
일 실시예에서, 분할 동안, 현재 블록이 하나 이상의 미리 정의된 조건을 충족할 수 있고 루트 블록이 설정되지 않은 경우, 루트 블록의 위치는 현재 블록의 상단 좌측 위치로 설정되고, 루트 블록의 폭과 높이는 현재 블록의 폭과 높이와 같으며, 그렇지 않으면 루트 블록이 설정되지 않는다.
일 실시예에서, 분할 동안, 자식 블록 중 하나가 하나 이상의 사전 정의된 조건을 충족할 수 있고 루트 블록이 설정되지 않은 경우, 루트 블록의 상단 좌측 위치는 현재 블록의 상단 좌측 위치로 설정되고, 루트 블록의 폭과 높이는 현재 블록의 폭과 높이와 같으며; 그렇지 않으면 루트 블록이 설정되지 않는다.
위에서 언급된 미리 정의된 조건은 현재 블록의 크기(또는 면적)와 관련될 수 있다. 일 실시예에서, 사전 정의된 조건은 크기가 사전 정의된 문턱값 TH보다 작거나 같은지(또는 더 작은지) 여부에 대응한다. 문턱값은 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 및 4096일 수 있다.
루트 블록이 존재하고 루트 블록 내에서 인트라 모드가 사용되는 경우, 참조 샘플이 인트라 예측 모드에서 공유되고, 일반 인트라 모드, LM 모드, 및/또는 CIIP 모드에 대한 참조 샘플은 현재 블록 및 루트 블록에 따라 도출되며, 그렇지 않으면 참조 샘플이 원래 방식으로 도출된다.
일 실시예에서, 루트 블록은 프레임 경계를 초과하지 않아야 한다.
일 실시예에서, 공유 루트 블록의 위치는 또한 MPM 도출을 위해 사용될 것이다.
일 실시예에서, 공유 루트 블록은 루마 성분 및 크로마 성분 모두에 대해 사용 가능하다.
일 실시예에서, 공유 루트 블록은 루마 컴포넌트에 대해서만 사용 가능하다.
일 실시예에서, 공유 루트 블록은 크로마 성분에 대해서만 사용 가능하다.
일 실시예에서, 하나의 타일/슬라이스/화상/타일 그룹/비디오 시퀀스에 대해, 현재 타일/슬라이스/화상/타일 그룹/비디오 시퀀스가 루트 블록을 결정할 필요가 있는지 여부를 나타내는 하나의 플래그가 존재한다. 일 실시예에서, 1080P 미만의 해상도를 갖는 시퀀스에서, 이 상위 수준 플래그는 거짓(false)으로 설정된다.
인트라 블록 복사(Intra Block Copy; IBC) 모드가 활성화(enable)될 때:
a. 일 실시예에서, 공유 트리 및 개별 트리 모두에서, IBC 블록의 블록 벡터(Block Vector; BV)로부터 도출된 참조 블록은 루트 블록과 중첩될 수 없다;
b. 또 다른 실시예에서, 공유 트리에서만 IBC 블록의 블록 벡터(BV)로부터 도출된 참조 블록은 루트 블록과 중첩될 수 없다; 그리고
c. 또 다른 실시예에서 별도의 트리에서만 IBC 블록의 블록 벡터(BV)로부터 도출된 참조 블록이 루트 블록과 중첩될 수 없다.
도출된 크로마 BV(또는 크로마 BV와 루마 BV 모두)가, 참조 크로마 블록(또는 크로마 블록과 루마 블록 모두)가 대응 크로마 루트 블록(또는 크로마 루트 블록과 루마 루트 블록 모두)과 중첩되게 할 경우:
일 실시예에서, 이중 트리에서, 크로마 블록(또는 크로마 블록 및 루마 블록 모두)은 IBC 모드를 사용할 수 없다.
또 다른 실시예에서, 이중 트리 또는 공유 트리 또는 둘 모두에서, 도출된 크로마 BV(또는 크로마 BV 및 루마 BV 모두)는, 참조 크로마 블록이 대응 크로마 루트 블록(또는 크로마 루트 블록과 루마 루트 블록 모두)과 중첩되지 않도록 수평/수직 방향 또는 수평 방향 및 수직 방향 모두로 연장될 것이다.
일 실시예에서, 연장된 방향은 중첩된 영역의 폭 및 높이에 의존하고, 폭이 높이보다 크거나 같으면 BV는 수직 방향으로 연장될 것이고; 그렇지 않으면 BV가 수평 방향으로 연장될 것이다.
또 다른 실시예에서, 이중 트리 또는 공유 트리 또는 둘 모두에서, 대응 크로마 루트 블록(또는 크로마 루트 블록 및 루마 루트 블록 모두)과 중첩되는 참조 크로마 블록(또는 크로마 블록 및 루마 블록 모두)의 샘플은 패딩된 샘플로 대체될 것이다.
또 다른 실시예에서, IBC 병합 후보는 위치가 루트 블록 외부에 있는 경우에만 사용될 수 있다.
또 다른 실시예에서, IBC 병합 후보 도출은 이웃 블록을 찾을(locate) 때 루트 블록의 경계를 사용할 것이다.
별도의 트리 분할(이중 트리라고도 함)이 I-슬라이스에 적용되면, 루마 성분 및 크로마 성분이 상이한 트리 분할들을 사용할 수 있다. 크로마 트리 분할의 경우, 최소 CU 크기는 2x2일 수 있으며, 이는 너무 작아서 처리량을 저하시킬 것이다.
일 실시예에서, 최소 크로마 CU 크기는 크기/영역, 폭/높이, 또는 깊이에 의해 제약된다. 예를 들어, 최소 크로마 CU 크기는 (크로마 샘플 해상도에서) 16으로 설정될 수 있다. 또 다른 예에서, 최소 크로마 CU 폭 또는 높이는 4와 같게 설정될 수 있다.
크기 제약은 인코더 전용 변경 또는 규범적 변경(normative change)일 수 있다.
또 다른 실시예에서, 루트 CU 개념은 루마 트리 전용, 크로마 트리 전용, 또는 루마 트리와 크로마 트리 모두에 적용될 수 있다. 예를 들어 루트 CU는 크로마 트리에만 적용된다. 루트 크로마 CU 크기의 문턱값은 64, 32 또는 16이다. 이 루트 크로마 CU의 경우, 추가 CU 분할(split)이 활성화된다. 그러나 이 루트 CU 내의 자식 CU의 경우, 참조 샘플은 인트라 예측 및/또는 LM을 위해 공유된다.
분할 트리가 공유되는 경우(예컨대, 인터-슬라이스의 공유 트리 분할 또는 공유 트리 분할이 있는 I-슬라이스), 작은 크로마 인트라 블록을 회피하거나 연속 크로마 인트라 블록들 간의 데이터 종속성을 감소시키기 위해 다른 방법이 제안된다.
방법 1: 루트 블록 내의 모드 제약
또 다른 실시예에서, 루트 블록이 결정되고 이 루트 블록 내의 모든 블록은 동일한 예측 모드를 가져야 한다.
일 실시예에서, 동일한 모드는 루트 블록 내의 모든 블록이 인트라/IBC 예측 모드 또는 인터 예측 모드이어야 함을 의미한다.
루마 성분은 더 작은 블록으로 더 분할될 수 있으며, 크로마 성분의 분할은 루마 블록을 따른다. 루트 블록 내의 인트라 예측 블록에 대해, 크로마 블록은 루트 블록의 상단 및 좌측 경계를 사용하여 인트라 예측기를 생성할 것이므로 연속 크로마 블록들 간의 데이터 종속성이 줄어든다. 일 실시예에서, 이 크로마 CU에 대해 모든 자식 CU는 하나의 TU를 사용할 수 있다.
인트라 블록 복사(Intra Block Copy; IBC) 모드가 활성화될 때:
· 도출된 크로마 BV가 참조 크로마 블록을 대응 크로마 루트 블록과 중첩되게 할 경우:
i. 일 실시예에서, 이중 트리에서, 크로마 블록은 IBC 모드를 사용할 수 없다.
ii. 또 다른 실시예에서, 이중 트리, 공유 트리 또는 둘 다에서, 도출된 크로마 BV는 수평/수직 방향 또는 수평 및 수직 방향 모두로 연장되어 참조 크로마 블록이 대응하는 크로마 루트 블록과 중첩되지 않게 할 것이다.
iii. 또 다른 실시예에서, 이중 트리, 공유 트리 또는 둘 모두에서, 대응하는 크로마 루트 블록과 중첩되는 참조 크로마 블록의 샘플은 패딩된 샘플로 대체될 것이다.
자식 CU가 동일한 예측 모드를 가져야 하는 루트 CU에 대해, 각 CU의 예측 모드는 일 실시예에서 동일하도록 제약된다. 예를 들어, 각 CU의 예측 모드 신택스들이 여전히 시그널링된다. 그러나 이 신택스들은 동일해야 한다. 일 실시예에서, 루트 CU 내의 예측 모드가 동일해야 하는 것은 비트스트림 일치(conformance)이다. 또 다른 실시예에서, 루트 블록의 첫 번째 CU의 예측 모드가 시그널링된다. 루트 블록의 나머지 CU에 대해 예측 모드는 시그널링되지 않는다. 한 예에서, 인터 모드 CU만이 스킵 플래그 및 관련 신택스를 시그널링할 필요가 있다. CU가 이미 인트라 CU로서 추론되는 경우. 스킵 플래그는 거짓으로서 추론된다.
방법 2: 루트 블록에서 크로마 분할의 불허용(disallow)
루트 블록이 결정된 경우, 이 루트 블록의 루마 성분은 더 작은 블록으로 더 분할될 수 있지만, 이 루트 블록의 크로마 성분은 더 이상 분할될 수 없으므로 다수의 루마 블록이 하나의 크로마 블록에 대응한다. 이 루트 블록 내의 블록은 동일한 예측 모드를 가질 필요가 없다.
일 실시예에서, 비분할 크로마 CU의 예측 모드가 시그널링될 수 있다.
또 다른 실시예에서, 비분할 크로마 CU의 예측 모드가 추론될 수 있다.
이 루트 CU 내의 크로마 블록의 예측 모드가 추론되면, 참조 루마 블록이 결정된다. 참조 루마 블록은 루트 블록의 첫 번째 루마 블록, 루트 블록의 마지막 루마 블록, 루트 블록의 중앙 위치(예컨대, 하단 우측 중앙, 예컨대, 도 6의 BR-C 블록)를 덮는 루마 블록, 루트 블록에서 최대 영역을 갖는 루마 블록, 루트 블록의 네 모서리 중 하나를 덮는 루마 블록, 루트 블록의 첫 번째 인트라 코딩된 루마 블록, 또는 루트 블록의 첫 번째 인터 코딩된 루마 블록일 수 있다. IBC가 활성화된 경우, 참조 블록은 첫 번째 IBC 코딩된 루마 블록, 마지막 IBC 코딩된 루마 블록, 또는 루트 블록에서 미리 정의된 위치(예컨대, 중앙 위치)를 갖는 루마 블록일 수 있다.
일 실시예에서, 참조 루마 블록이 인트라 예측이면, 크로마 블록의 인트라 예측 모드는 참조 루마 블록에 따라 도출될 것이다.
또 다른 실시예에서, 참조 루마 블록이 인트라 예측이면, 크로마 블록의 인트라 예측 모드는 미리 정의된 모드, 예를 들어 DC 또는 평면이 될 것이다.
일 실시예에서, 참조 루마 블록이 인트라 예측인 경우, 크로마 블록은 비-ISP(인트라 서브-분할 예측) 모드로서 취급된다.
또 다른 실시예에서, 크로마 블록에 대해, 그 예측 모드는 명시적으로 시그널링될 수 있고 루마 블록과 다를 수 있다.
일 실시예에서, 참조 루마 블록이 인터 예측이면, 크로마 블록의 MV는 루마 블록의 MV로부터 도출된다.
일 실시예에서, 인터 예측 모드로서 추론된 비분할 크로마 CU는 병합 모드일 수 없다.
일 실시예에서, 인터 예측 모드로서 추론된 비분할 크로마 CU는 서브-블록 변환(sub-block transform; SBT) 모드일 수 없다.
일 실시예에서, 인터 예측 모드로서 추론된 비분할 크로마 CU는 디코더 측 모션 벡터 리파인먼트(decoder-side motion vector refinement; DMVR)를 적용할 수 없고, 참조 MV는 리파인먼트 전/후의 MV이다.
일 실시예에서, 인터 예측 모드로서 추론된 비분할 크로마 CU는 삼각 모드일 수 없다.
또 다른 예에서, 대응하는 루마 CU의 가중 평균된 루마 MV는 이 크로마 CU에 대해 사용될 수 있다. 가중치는 모든 CU에 대해 동일하거나 CU 영역에 따라 다를 수 있다. 일례에서, 대응하는 루마 CU가 서브블록 모드(예컨대, ATMVP 모드 또는 아핀 모드 또는 MV 평면 모드)를 사용하는 경우, 크로마 CU도 동일한 모드를 사용하지만 더 큰 CU 크기를 갖는다. 또 다른 예에서, 크로마 MV는 명시적으로 시그널링된다.
루트 블록 내의 루마 블록이 인터 및 인트라 예측 모드를 가질 때 크로마 인트라 예측 모드를 도출하기 위해 몇 가지 제약이 적용될 수 있다.
일 실시예에서, 크로마 성분은 결합된 인트라 인터 예측(Combined Intra Inter Prediction; CIIP) 모드일 수 있다.
일 실시예에서, 참조 블록은 단지 인터 모드일 수 있다. 인터 예측 모드 정보는 첫 번째 루마 인터 블록, 마지막 인터 루마 블록, 또는 가장 큰 영역을 가진 루마 인터 블록으로부터 상속될 수 있다.
일 실시예에서, 참조 루마 블록이 인트라 예측 모드인 경우, 선형 모델(Linear Model; LM) 모드는 허용되지 않는다.
또 다른 실시예에서, 비분할 크로마 CU에 대한 예측 모드는 조건부로 추론될 수 있다. 참조 루마 블록이 인터 예측 모드인 경우, 크로마 CU는 인터 예측 모드로서 추론되고, 모션 정보는 참조 루마 블록으로부터 상속된다. 참조 루마 블록이 인터 모드가 아니면, 비분할 크로마 CU의 예측 모드가 시그널링될 것이다.
인트라 블록 복사(IBC) 모드가 활성화되면, 참조 크로마 블록이 대응 크로마 루트 블록과 중첩되지 않게 할 BV를 갖는 IBC 블록만 선택될 수 있다. 또 다른 실시예에서, 참조 루마 및 크로마 블록이 대응하는 루마 및 크로마 루트 블록과 중첩되지 않게 할 BV를 갖는 IBC 블록만이 선택될 수 있다.
또 다른 실시예에서, 선택된 참조 루마 블록이 IBC 모드이면, 도출된 루마 참조 블록은 루트 블록과 중첩될 수 없다.
또 다른 실시예에서, 선택된 참조 루마 블록이 IBC 모드이고 도출된 루마 참조 블록이 루트 블록과 중첩되면 루마 BV가 연장될 것이다.
또 다른 실시예에서, 선택된 참조 루마 블록이 IBC 모드이고, 도출된 루마 참조 블록이 루트 블록과 중첩되는 경우, 도출된 크로마 BV만이 연장될 것이다.
방법 3: 모드 제약 및 루트 블록 내에서 크로마 분할의 조건부 불허용
또 다른 실시예에서, 루트 블록이 결정되고; 이 루트 블록의 루마 성분은 더 작은 블록으로 더 분할될 수 있으며; 루트 블록의 크로마 성분이 더 분할될 수 있는지 여부는 동일한 루트 블록 내의 루마 블록의 예측 모드 및 대응하는 크로마 블록 크기에 의해 결정된다.
일 실시예에서, 현재 루트 블록 내의 모든 블록이 인터 예측 모드인 경우, 크로마 성분의 분할은 루마 블록을 따른다. 현재 루트 블록 내의 모든 블록이 인트라/IBC 모드인 경우, 이 루트 블록의 크로마 성분이 더 이상 분할될 수 없으므로 하나의 크로마 블록에 대응하는 다수의 루마 블록이 생성된다. 또한, 인터 모드가 4x4 루마 분할에서 지원되지 않으므로, 분할 노드가 루마 블록 크기가 4x4와 같은 하나 이상의 자식 노드를 갖는 경우, 해당 노드는 비-인터 모드(인트라 또는 IBC 모드)로서 추론된다.
일 실시예에서, 플래그 mode_constraint_flag는 루트 블록의 예측 모드를 나타내기 위해 시그널링된다. 루트 블록 내의 모든 블록은 인터 예측 모드 또는 인트라/IBC 예측 모드이어야 한다. 예를 들어, mode_constraint_flag가 1일 때, 루트 블록 내의 모든 블록은 인터 코딩된 블록이고, 그렇지 않으면 루트 블록 내의 모든 블록은 인트라/IBC 코딩된 블록이다.
mode_constraint_flag를 디코딩할지 여부는 변수 modeTypeCondition에 따라 다르다. 변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건 중 하나가 참이면, modeTypeCondition이 0과 같게 설정된다
- slice_type = = I 및 qtbtt_dual_tree_intra_flag는 1과 같다
- modeTypeCurr이 MODE_TYPE_ALL과 같지 않다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1과 같게 설정된다
- cbWidth * cbHeight는 THRES와 같고 split_qt_flag는 1과 같다
- cbWidth * cbHeight는 THRES와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다
- cbWidth * cbHeight는 (THRES>>1)와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1 + (slice_type != I ? 1 : 0)과 같게 설정된다
- cbWidth * cbHeight는 THRES와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- cbWidth * cbHeight는 (THRES<<1)와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다.
위의 도출에서, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 다중 유형 트리(multi-type tree; MTT) 내 코딩 단위의 수평 및 수직 이진 및 삼진 분할을 나타낸다. 변수 THRES는 다음과 같이 도출된다:
색상 형식이 4:4:4인 경우, THRES는 16과 같게 설정되고,
그렇지 않고, 색상 형식이 4:2:2이면 THRES는 32와 같게 설정되고,
그렇지 않고, 색상 형식이 4:2:0이면 THRES는 64와 같게 설정된다.
또 다른 실시예에서, 변수 THRES는 다음과 같이 도출된다:
색상 형식이 4:4:4인 경우, THRES는 8/16/32/64와 같게 설정되고,
그렇지 않고, 색상 형식이 4:2:2이면, THRES는 16/32/64/128와 같게 설정되고,
그렇지 않으면, 색상 형식이 4:2:0이면, THRES는 32/64/128/256과 같게 설정된다.
또 다른 실시예에서, 크로마 형식은 modeTypeCondition을 결정하기 위한 조건 중 하나로서 사용된다. 422 크로마 형식과 420 크로마 형식에 대한 modeTypeCondition 도출은 다르다. 크로마 형식이 444 크로마 형식과 같을 때, modeTypeCondition은 항상 0으로 설정된다. modeTypeCondition은 다음과 같이 도출된다:
- chroma_format_idc가 1과 같으면(4:2:0 크로마 형식이 사용되는 경우), 변수 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와 같다.
또 다른 실시예에서, 다음 2가지 조건이 추가된다:
- cbWidth는 8과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 16과 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, 다음 4가지 조건이 추가된다:
- cbWidth는 8과 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 16과 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다
- cbWidth는 4와 같고 cbHeight는 32와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같다
- cbWidth는 4와 같고 cbHeight는 64와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR와 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다
- 그렇지 않고, chroma_format_idc가 2와 같으면(4:2:2 크로마 형식이 사용되는 경우), 변수 modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건 중 하나가 참이면, modeTypeCondition이 0과 같게 설정된다
- slice_type = = I 및 qtbtt_dual_tree_intra_flag는 1과 같다
- modeTypeCurr이 MODE_TYPE_ALL과 같지 않다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 0과 같게 설정된다
- 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 설정은 다음과 같이 표시된다:
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1 + (slice_type != I ? 1 : 0)과 같게 설정된다
- cbWidth 8과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 16과 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, modeTypeCondition 설정은 다음과 같이 표시된다:
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1 + (slice_type != I ? 1 : 0)과 같게 설정된다
- cbWidth는 8과 같고 cbHeight는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 16과 같고 cbHeight는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다
- cbWidth 4와 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같다
- cbWidth는 4와 같고 cbHeight는 32와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR와 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다
- 그렇지 않고, chroma_format_idc가 3과 같으면(4:4:4 크로마 형식이 사용되는 경우), 변수 modeTypeCondition은 0과 같게 설정된다.
- 그렇지 않으면, (단색이 사용되는 경우 chroma_format_idc가 0과 같음), 변수 modeTypeCondition이 0과 같게 설정된다.
또 다른 실시예에서, 크로마 형식은 modeTypeCondition을 결정하기 위한 조건 중 하나로서 사용된다. 422 크로마 형식과 420 크로마 형식에 대한 modeTypeCondition 도출은 다르다. 크로마 형식이 444 크로마 형식과 같을 때, modeTypeCondition은 항상 0으로 설정된다. modeTypeCondition은 다음과 같이 도출된다:
- 다음 조건 중 하나가 참이면, modeTypeCondition이 0과 같게 설정된다
- slice_type = = I 및 qtbtt_dual_tree_intra_flag는 1과 같다
- modeTypeCurr이 MODE_TYPE_ALL과 같지 않다
- chroma_format_idc는 0 또는 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)과 같게 설정된다
- chroma_format_idc가 1과 같고 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와 같은 경우.
하나의 실시예에서, 다음 2가지 조건이 추가된다:
- cbWidth는 8과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 16과 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, 다음 8가지 조건이 추가된다:
- chroma_format_idc는 1과 같고 cbWidth는 8과 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER과 같은 경우
- chroma_format_idc는 1과 같고 cbWidth는 16과 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER과 같은 경우
- chroma_format_idc는 1과 같고 cbWidth는 4와 같고 cbHeight는 32와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같은 경우
- chroma_format_idc는 1과 같고 cbWidth는 4와 같고 cbHeight는 64와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR와 같은 경우
- chroma_format_idc는 2와 같고 cbWidth는 8과 같고 cbHeight는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER과 같은 경우
- chroma_format_idc는 2와 같고 cbWidth는 16과 같고 cbHeight는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같은 경우
- chroma_format_idc는 2와 같고 cbWidth가 4와 같고 cbHeight는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같은 경우
- chroma_format_idc는 2와 같고 cbWidth는 4와 같고 cbHeight는 32와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR와 같은 경우
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다.
이 실시예에서, 4:2:0 크로마 형식이 사용되는 경우에만 modeTypeCondition이 2로 설정될 수 있다. 따라서 mode_constraint_flag는 4:2:0 크로마 형식이 사용되는 경우에만 시그널링/파싱된다. 크로마 형식이 4:2:0이 아닌 경우, mode_constraint_flag는 시그널링되지 않는다. 또한, 4:2:0 또는 4:2:2 크로마 형식이 사용되는 경우에만 modeTypeCondition이 1로서 설정될 수 있다. 따라서, 4:2:0 또는 4:2:2 크로마 형식이 사용되는 경우 루트 블록 유형은 MODE_TYPE_INTRA로서 추론된다. 4:2:2 크로마 형식에 대해, modeTypeCondition은 단지 0 또는 1일 수 있다. 4:4:4 크로마 형식에 대해, modeTypeCondition은 단지 0일 수 있다. 4:2:0 크로마 형식에 대해, modeTypeCondition은 단지 0 또는 1 또는 2일 수 있다.
또 다른 실시예에서, 제약은 CB 크기(예컨대, cbWidth * cbHeight)에 의해 정의되지 않는다. 그 대신, 제약은 cbWidth, cbHeight, SubWidthC, SubHeightC를 고려하여 정의되며, 여기서 SubWidthC, SubHeightC는 크로마 형식에 의해 정의된다. modeTypeCondition은 다음과 같이 도출될 수 있다. mode_constraint_flag를 디코딩할지 여부는 변수 modeTypeCondition에 따라 다르다. 변수 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/SubWidthC) * (cbHeight/SubHeightC)는 16과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC) * (cbHeight/SubHeightC)는 32와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다.
위에서 modeTypeCurr은 현재 블록의 modeType을 나타낸다. 코딩 트리 노드 내부의 코딩 단위에 대해, 인트라(즉, MODE_INTRA), IBC(즉, MODE_IBC), 팔레트(즉, MODE_PLT), 및 인터 코딩 모드가 사용될 수 있는지(즉, MODE_TYPE_ALL), 또는 인트라, IBC, 및 팔레트 코딩 모드만 사용될 수 있는지(즉, MODE_TYPE_INTRA), 또는 인터 코딩 모드만 사용될 수 있는지(즉, MODE_TYPE_INTER)를 명시하는 변수 modeType.
하나의 실시예에서, 다음 2가지 조건이 추가된다:
- (cbWidth/SubWidthC)는 4와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC)는 8과 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, 다음 4가지 조건이 추가된다:
- (cbWidth/SubWidthC)는 4와 같고 (cbHeight/SubHeightC)는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC)는 8과 같고 (cbHeight/SubHeightC)는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다
- (cbWidth/SubWidthC)는 2와 같고 (cbHeight/SubHeightC)는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같다
- (cbWidth/SubWidthC)는 2와 같고 (cbHeight/SubHeightC)는 32과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR과 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다.
또 다른 실시예에서, 제약은 cb 크기(예컨대, cbWidth * cbHeight)에 의해 정의되지 않는다. 제약은 크로마 형식, cbWidth, cbHeight, SubWidthC, SubHeightC를 고려하여 정의되며, 여기서 SubWidthC, SubHeightC는 크로마 형식에 의해 정의된다. modeTypeCondition은 다음과 같이 도출될 수 있다. 변수 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/SubWidthC) * (cbHeight/SubHeightC)는 16과 같고 split_qt_flag는 1과 같다
- (cbWidth/SubWidthC) * (cbHeight/SubHeightC)는 16과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다
- (cbWidth/SubWidthC) * (cbHeight/SubHeightC)는 8과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1 + (slice_type != I ? 1 : 0)과 같게 설정된다
- (cbWidth/SubWidthC) * (cbHeight/SubHeightC)는 16과 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC) * (cbHeight/SubHeightC)는 32와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다.
하나의 실시예에서, 다음 2가지 조건이 추가된다:
- (cbWidth/SubWidthC)는 4와 같고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC)는 8과 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, 다음 4가지 조건이 추가된다:
- (cbWidth/SubWidthC)는 4와 같고 (cbHeight/SubHeightC)는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- (cbWidth/SubWidthC)는 8과 같고 (cbHeight/SubHeightC)는 8과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다
- (cbWidth/SubWidthC)는 2와 같고 (cbHeight/SubHeightC)는 16과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같다
- (cbWidth/SubWidthC)는 2와 같고 (cbHeight/SubHeightC)는 32와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR과 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다.
또 다른 실시예에서, 제약은 cb 크기(예컨대, cbWidth * cbHeight)에 의해 정의되지 않는다. 그대신, 제약은 chroma_format_idc, cbWidth, cbHeight, SubWidthC, SubHeightC를 고려하여 정의되며, 여기서 SubWidthC, SubHeightC는 크로마 형식에 의해 정의된다. modeTypeCondition은 다음과 같이 도출될 수 있다. 변수 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과 같게 설정된다.
변수 minLuma는 다음과 같게 설정된다:
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같거나 split_qt_flag가 1과 같은 경우, (cbWidth*cbHeight) >> 2
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같은 경우, (cbWidth*cbHeight) >> 1
- 그렇지 않으면, cbWidth * cbHeight.
변수 minChroma는 minLuma / (SubWidthC * SubHeightC)와 같게 설정된다. 일 실시예에서,
- minChroma가 8보다 높으면 modeTypeCondition이 0과 같게 설정된다.
- 그렇지 않으면, modeTypeCondition은 1 + (slice_type == I || minLuma == 16?) 0:1과 같게 설정된다.
또 다른 실시예에서, 변수 minLumaWidth는 다음과 같게 설정된다:
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_VER와 같은 경우, cbWidth >> 2
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER와 같거나 split_qt_flag가 1과 같은 경우, cbWidth >> 1
- 그렇지 않으면, cbWidth.
변수 minChromaWidth는 minLumaWidth / SubWidthC와 같게 설정된다.
변수 minLumaHeight는 다음과 같게 설정된다:
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_TT_HOR와 같은 경우, cbHeight >> 2
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_HOR와 같거나 split_qt_flag가 1과 같은 경우, cbHeight >> 1
- 그렇지 않으면, cbHeight.
변수 minChromaHeight는 minLumaHeight / SubHeightC와 같게 설정된다.
- minChroma가 8보다 높고 minChromaWidth가 2보다 크며 minChromaHeight가 8보다 크면 modeTypeCondition이 0과 같게 설정된다.
- 그렇지 않으면, modeTypeCondition은 1 + (slice_type == I || minLuma == 16?) 0:1과 같게 설정된다.
또 다른 실시예에서, 변수 minLumaWidth는 다음과 같게 설정된다:
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER와 같고 split_qt_flag가 0과 같으면, cbWidth >> 2
- MttSplitMode[ x0 ][ y0 ][ mttDepth ]가 SPLIT_BT_VER와 같거나 split_qt_flag가 1과 같으면, cbWidth >> 1
- 그렇지 않으면, cbWidth.
변수 minChromaWidth는 minLumaWidth / SubWidthC와 같게 설정된다.
- minChroma가 8보다 크고 minChromaWidth가 2보다 크면 modeTypeCondition이 0과 같게 설정된다.
- 그렇지 않으면, modeTypeCondition은 1 + (slice_type == I || minLuma == 16?) 0:1과 같게 설정된다.
또 다른 실시예에서, 제약은 cb 크기(예컨대, cbWidth * cbHeight)에 의해 정의되지 않는다. 제약은 cbWidth, cbHeight, SubWidthC, SubHeightC를 고려하여 정의되며, 여기서 SubWidthC, SubHeightC는 크로마 형식에 의해 정의된다. modeTypeCondition은 다음과 같이 도출될 수 있다. 변수 modeTypeCondition는 다음과 같이 도출된다:
다음 조건 중 하나가 참이면, modeTypeCondition이 0과 같게 설정된다
- slice_type = = I 및 qtbtt_dual_tree_intra_flag는 1과 같다
- modeTypeCurr이 MODE_TYPE_ALL과 같지 않다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1과 같게 설정된다
- cbWidth * cbHeight는 64이고, cbWidth * cbHeight는 64 * SubWidthC * SubHeightC보다 작으며, split_qt_flag는 1과 같다
- cbWidth * cbHeight는 64와 같고, cbWidth * cbHeight는 64 * SubWidthC * SubHeightC보다 작으며, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다
- cbWidth * cbHeight는 32와 같고, cbWidth * cbHeight는 32 * SubWidthC * SubHeightC보다 작으며, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- 그렇지 않고, 다음 조건 중 하나가 참이면, modeTypeCondition이 1 + (slice_type != I ? 1 : 0)과 같게 설정된다
- cbWidth * cbHeight가 32 * SubWidthC * SubHeightC보다 작고, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_BT_VER와 같다
- cbWidth * cbHeight가 64 * SubWidthC * SubHeightC보다 작고 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR 또는 SPLIT_TT_VER와 같다.
하나의 실시예에서, 다음 2가지 조건이 추가된다:
- cbWidth는 4 * SubWidthC와 같고, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 8 * SubWidthC와 같고 split_qt_flag는 0과 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
또 다른 실시예에서, 다음 4가지 조건이 추가된다:
- cbWidth는 4 * SubWidthC와 같고 cbHeight는 8 * SubHeightC와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_VER와 같다
- cbWidth는 8 * SubWidthC와 같고 cbHeight는 8 * SubHeightC와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_VER와 같다.
- cbWidth는 2 * SubWidthC와 같고 cbHeight는 16 * SubHeightC와 같으며 MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_BT_HOR 또는 SPLIT_TT_HOR와 같다
- cbWidth는 2 * SubWidthC와 같고 cbHeight는 32 * SubHeightC와 같으며, MttSplitMode[ x0 ][ y0 ][ mttDepth ]는 SPLIT_TT_HOR와 같다
- 그렇지 않으면, modeTypeCondition은 0과 같게 설정된다.
또 다른 실시예에서, 단색이 사용될 때, modeTypeCondition은 항상 0과 같게 설정된다.
modeTypeCondition이 2와 같을 때, mode_constraint_flag가 디코딩될 것이고, mode_constraint_flag에 따라 modeType이 설정된다. modeTypeCondition이 1과 같을 때, modeType은 MODE_TYPE_INTRA로 추론되고, 루트 블록 내의 모든 블록은 인트라/IBC 예측된다. modeTypeCondition이 0과 같을 때, modeType은 변경되지 않는다. 신택스 표는 다음과 같다:
coding_tree( x0, y0, cbWidth, cbHeight, qgOn, cbSubdiv, cqtDepth, mttDepth, depthOffset, partIdx, treeTypeCurr, modeTypeCurr ) { 디스크립터
if (( allowSplitBtVer || allowSplitBtHor || allowSplitTtVer || allowSplitTtHor || allowSplitQT ) & & ( x0 + cbWidth <= pic_width_in_luma_samples ) && (y0 + cbHeight <= pic_height_in_luma_samples ))
split_cu_flag ae(v)
if ( cu_qp_delta_enabled_flag && qgOn && cbSubdiv <= cu_qp_delta_subdiv ) {
IsCuQpDeltaCoded = 0
CuQpDeltaVal = 0
CuQgTopLeftX = x0
CuQgTopLeftY = y0
}
if ( split_cu_flag ) {
if (( allowSplitBtVer || allowSplitBtHor || allowSplitTtVer || allowSplitTtHor ) && allowSplitQT )
split_qt_flag ae(v)
if ( !split_qt_flag ) {
if (( allowSplitBtHor || allowSplitTtHor ) && ( allowSplitBtVer || allowSplitTtVer ))
mtt_split_cu_vertical_flag ae(v)
if (( allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag ) || ( allowSplitBtHor && allowSplitTtHor && !mtt_split_cu_vertical_flag ))
mtt_split_cu_binary_flag ae(v)
}
if ( modeTypeCondition = = 2 ) {
mode_constraint_flag ae(v)
modeType = mode_constraint_flag ? MODE_TYPE_INTRA : MODE_TYPE_INTER
}
else
modeType = ( modeTypeCondition == 1 ) ? MODE_TYPE_INTRA : modeTypeCurr
treeType = ( modeType == MODE_TYPE_INTRA ) ? DUAL_TREE_LUMA : treeTypeCurr
if ( !split_qt_flag ) {
if ( MttSplitMode[ x0 ][ y0 ][ mttDepth ] == SPLIT_BT_VER ) {
depthOffset += ( x0 + cbWidth > pic_width_in_luma_samples ) ? 1 : 0
x1 = x0 + ( cbWidth / 2 )
coding_tree( x0, y0, cbWidth / 2, cbHeight, qgOn, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 0, treeType , modeType )
if ( x1 < pic_width_in_luma_samples )
coding_tree( x1, y0, cbWidth / 2, cbHeightY, qgOn, cbSubdiv + 1, cqtDepth, mttDepth + 1, depthOffset, 1, treeType, modeType )
} else if ( MttSplitMode[ x0 ][ y0 ][ mttDepth ] == SPLIT_BT_HOR )
{
……
예시적인 신택스 표
일 실시예에서, 색상 형식에 관계없이, 자식 블록 중 하나의 크로마 CB 크기가 16개의 크로마 샘플보다 작고, 루트 블록이 설정되지 않은 경우, 루트 블록의 상단 좌측 위치는 현재 블록의 상단 좌측 위치가 되도록 설정되고, 루트 블록의 폭 및 높이는 현재 블록의 폭 및 높이와 같으며, 그렇지 않으면 루트 블록이 설정되지 않는다. 문턱값은 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 및 4096일 수 있다.
루트 블록이 인터 모드로서 결정되면 4x4 루마 블록 분할이 허용되지 않는다. 따라서 루마 블록 크기가 4x4인 하나 이상의 자식 서브블록을 생성하는 블록 분할은 허용되지 않는다. 해당 블록 분할 플래그의 신택스는 스킵(skip)되고 블록 분할의 종류에 의해 분할되지 않은 것으로 추론된다.
일 실시예에서, modeTypeCurr이 MODE_TYPE_INTER와 같은 경우, CU/CB 영역이 32와 같을 때 BT 분할이 허용되지 않고, CU/CB 영역이 64와 같을 때 TT 분할이 허용되지 않는다. 여기서 modeTypeCurr은 부모 분할 노드에 의해 결정되고 현재 노드로 전달된다. 따라서 부모 노드로부터 전달된 변수(modeTypeCurr)에 따라, CU/CB가 각각 32 또는 64일 때 BT 분할 또는 TT 분할이 허용되지 않는다. 분할을 허용하지 않는다는 것은 분할 신택스가 시그널링되지 않고 0으로서 추론된다는 것을 의미한다. 예를 들어, modeTypeCurr이 MODE_TYPE_INTER와 같고 cbWidth * cbHeight가 32 또는 64와 같을 때, allowBtSplit 또는 allowTtSplit은 각각 0/False로 설정된다.
방법 4: 크로마 분할 나뉨(chroma partition split)의 불허용시의 디블록킹(de-blocking) 수정
인터 슬라이스(또는 공유 트리)에서, 루마 성분과 크로마 성분을 포함하는 루트 블록이 다른 분할을 갖는 경우, 루마와 크로마에 대한 디블록킹 프로세스가 분리될 것이다. 즉, 루마 블록/CU의 경계 강도(Boundary Strength; Bs) 설정은 크로마 블록/CU에 의해 재사용될 수 없다. 크로마 블록/CU의 경계 강도(Bs) 설정은 별도로 설정되고, 그런 다음, 크로마 성분에 대해 필터링을 적용할 것이다.
일 실시예에서, 현재 CU가 크로마 CU이고, 이웃 CU가 루마 CU이면, 크로마 성분에 대한 경계 강도(BS) 값은 2로 설정될 것이다.
일 실시예에서, 현재 CU가 크로마 CU이고, 이웃 CU가 루마 CU이면, 크로마 성분에 대한 경계 강도(BS) 값은 1로 설정될 것이다.
방법 5: 크로마 분할 나뉨의 불허용시의 감소된 2차 변환(reduced secondary transform; RST) 수정
인터 슬라이스(또는 공유 트리)에서, 루마 성분과 크로마 성분을 포함하는 루트 블록이 상이한 분할을 갖는 경우, 루트 영역에서 루마 블록과 크로마 블록에 대한 RST의 결정이 상이하다.
일 실시예에서, RST는 루트 블록의 크로마 블록에 적용 및 시그널링되지 않는다.
또 다른 실시예에서, RST는, 블록 폭 및 블록 높이가 모두 2개의 크로마 샘플보다 큰 경우에만 루트 블록의 크로마 블록에 대해 적용되고 시그널링된다.
루트 블록의 비영(non-zero) 계수 수준 설정은 이중 트리에서의 설정과 동일하다.
예를 들어, 루트 블록의 루마 블록에 대해, 문턱값이 LFNST_SIG_LUMA로 변경되고, 루트 블록의 크로마 블록에 대해, 문턱값이 LFNST_SIG_CHROMA로 변경되며, 여기서 LFNST_SIG_LUMA 및 LFNST_SIG_CHROMA는 각각 루마 성분 및 크로마 성분에 대한 문턱값이다.
루트 블록의 컨텍스트 변수 도출도 이중 트리에서의 설정과 동일하다.
예를 들어, 단일 트리에서, mts 인덱스가 2보다 작고, 현재 블록이 루트 블록에 있는 경우, 컨텍스트 변수는 1씩 증가될 것이다; 그렇지 않으면(단일 트리에서, mts 인덱스는 2보다 작지만 루트 블록에는 없음), 컨텍스트 변수는 1만큼 증가되지 않을 것이다.
방법 6: 크로마 분할 나뉨의 불허용시의 인트라 서브분할 예측(intra subpartition prediction; ISP) 수정
루트 블록의 루마 블록에 대해, 크로마 서브분할이 없을 것이다.
방법 7: 크로마 분할 나뉨의 불허용시의 델타 QP(Delta QP; DQP) 수정
단일 트리에서, cu 수준 델타 QP는 루트 블록의 크로마 블록에서 시그널링되지 않을 것이다.
방법 8: 크로마 분할 나뉨의 불허용시의 예측 모드 시그널링
루트 블록에서의 예측 모드 시그널링이 추론될 수 있다.
- IBC가 활성화되지 않은 경우:
루트 블록의 루마 블록에 대해:
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않고, 루트 블록이 인트라/IBC 예측 모드인 경우, 예측 모드는 인트라 예측 모드로서 추론되며, 예측 모드를 나타내기 위해 신택스가 시그널링될 필요가 없다.
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않고 루트 블록이 인터 예측 모드인 경우, 예측 모드는 인터 예측 모드로서 추론되며, 신택스가 시그널링될 필요가 없다.
크로마 블록에 대해:
- 일 실시예에서, 예측 모드는 인트라 예측 모드로서 추론된다.
- IBC가 활성화된 경우:
루트 블록의 루마 블록에 대해:
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않고 루트 블록이 인터 예측 모드인 경우, 루마 블록은 인터 예측 모드로서 추론되며, 신택스가 시그널링될 필요가 없다.
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않고, 루트 블록이 인트라/IBC 예측 모드이며, 현재 블록에서 IBC가 허용되지 않는 경우, 예측 모드는 인트라 예측 모드로서 추론되며 신택스가 시그널링될 필요가 없다.
일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않은 경우, 루트 블록이 인트라/IBC 예측 모드이고, 현재 블록에서 IBC가 허용되면, IBC 예측 플래그만이 시그널링될 필요가 있다. IBC 예측 플래그가 참이면 예측 모드는 IBC 모드이다.
일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않은 경우, 루트 블록이 인트라/IBC 예측 모드이고, 현재 블록에서 IBC가 허용되면, 예측 모드 플래그만이 시그널링될 필요가 있다. 예측 모드 플래그가 참이면, 예측 모드는 인트라 모드이다.
크로마 블록에 대해, 일 실시예에서, IBC가 현재 블록에서 허용되지 않고 예측 모드가 인트라 예측 모드로서 추론된다면, 신택스가 시그널링될 필요가 없다. 일 실시예에서, 현재 블록에서 IBC가 허용된다면, IBC 예측 플래그만이 시그널링될 필요가 있다. IBC 예측 플래그가 참이면 예측 모드는 IBC 모드이다. 일 실시예에서, 현재 블록에서 IBC가 허용되지 않으면, 예측 모드 플래그만 시그널링될 필요가 있다. 예측 모드 플래그가 참이면, 예측 모드는 인트라 모드이다.
방법 9: 크로마 분할 나뉨의 불허용시의 스킵 플래그 시그널링
루트 블록에서의 예측 모드 시그널링은 다음과 같이 추론될 수 있다.
- IBC가 활성화되지 않은 경우:
루트 블록의 루마 블록에 대해:
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않고 루트 블록이 인트라/IBC 모드인 경우, 스킵 플래그가 시그널링될 필요가 없고 거짓으로서 추론된다.
크로마 블록에 대해, 스킵 모드가 적용될 수 없으므로 스킵 플래그에 대한 신택스가 요구되지 않는다.
- IBC가 활성화된 경우:
루트 블록의 루마 블록에 대해:
- 일 실시예에서, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않은 경우, 루트 블록이 인트라/IBC 모드이고 현재 블록에서 IBC가 허용되지 않으면, 스킵 플래그는 시그널링될 필요가 없고 거짓으로 추론된다.
또 다른 실시예에서, 스킵 플래그가 참이고, 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 동일하지 않으며, 루트 블록이 인트라/IBC 모드이면, 현재 블록의 예측 모드는 IBC 모드로서 추론되며, IBC 플래그를 시그널링할 필요가 없다. 그렇지 않으면(스킵 플래그가 참이고 루마 블록의 상단 좌측 위치가 루트 블록의 상단 좌측 위치와 같지 않으면 루트 블록이 인터 모드임), 현재 블록의 예측 모드가 인터 모드로서 추론된다.
크로마 블록에 대해, 스킵 모드가 적용될 수 없으므로 스킵 플래그에 대한 신택스가 요구되지 않는다.
위에서 언급된 슬라이스는 하나의 슬라이스, 하나의 타일, 하나의 타일 그룹, 또는 하나의 화상일 수 있다.
VTM-6에서, 프로세싱 처리량을 향상시키기 위해 작은 크로마 인트라 CU를 방지하기 위해 로컬 이중 트리가 채택된다. 예를 들어, 128개의 루마 샘플 CU가 삼진 트리(ternary-tree; TT) 분할에 의해 분할되고 SCIPU가 인트라 모드에서 코딩되면, SCIPU는 로컬 이중 트리이다. 이 SCIPU에서 크로마 블록은 분할될 수 없으며 8x4(즉, 32개의 크로마 샘플) CU가 생성된다.
로컬 이중 트리 또는 SCIPU의 개념에서는 크로마 CU가 16개의 크로마 샘플보다 작지 않도록 한다. 그러나, 32개 크로마 샘플 CU는 제약을 위반하지 않고(즉, 16개의 샘플보다 작은 크로마 샘플이 있는 크로마 CU를 가지지 않음) 2개의 16-크로마 샘플 CU로 추가로 분할될 수 있다. 코딩 효율을 향상시키기 위해, 이러한 종류의 크로마 CU는 이진 트리(binary-tree; BT) 분할에 의해 2개의 크로마 CU로 더 분할될 수 있다. 예를 들어, 이러한 종류의 크로마 CU는 2개의 4x4 크로마 CU 또는 2개의 8x2 크로마 CU로 분할될 수 있다. 유사하게, SCIPU/로컬 이중 트리 크기가 크로마 샘플 크기에서 4x8, 루마 샘플 크기에서 8x16인 경우, 이러한 종류의 크로마 CU는 2개의 4x4 크로마 CU 또는 2개의 2x8 크로마 CU로 더 분할될 수 있다. 이를 달성하기 위해, 일 실시예에서, BT 분할 제약이 수정된다. 현재 노드/CU의 트리 유형이 DUAL_TREE_CHROMA와 같고 SCIPU modeType이 MODE_TYPE_INTRA와 같으며, ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 32와 같거나, 32 이상일 때, BT는 불허용될 필요가 없을 것이다(즉, BT가 적용될 수 있음). 그러나 현재 노드/CU의 트리 유형이 DUAL_TREE_CHROMA와 같고 SCIPU modeType이 MODE_TYPE_INTRA와 같으며, ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC ) / 2가 16개의 샘플보다 작은 경우, BT는 불허용된다. 또 다른 예에서, 현재 노드/CU의 트리 유형이 DUAL_TREE_CHROMA와 같고 SCIPU modeType이 MODE_TYPE_INTRA와 같으며, ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )가 16 이하인 경우, BT는 불허용된다.
일 실시예에서, 원래 신택스의 일부는 다음과 같이 표시된다. 변수 allowBtSplit는 다음과 같이 도출된다:
다음 조건 중 하나 이상이 참이면, allowBtSplit이 거짓으로 설정된다.
- 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는 다음과 같이 도출된다:
다음 조건 중 하나 이상이 참이면, allowBtSplit이 거짓으로 설정된다:
- 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와 같으며 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )는 16 이하이다.
또 다른 실시예에서, 두 가지 조건이 추가된다:
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같으며 cbWidth/SubWidthC는 4 이하이다.
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같으며 cbWidth/SubWidthC는 4 이하이다.
또 다른 실시예에서, 두 가지 조건이 추가된다:
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같고 cbWidth/SubWidthC는 4 이하이며 cbHeight/SubHeightC는 8 이하이다.
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같고 cbWidth/SubWidthC는 4 이하이며 cbHeight/SubHeightC는 8 이하이다.
대안적으로, 신택스는 다음과 같이 수정될 수 있다. 변수 allowBtSplit는 다음과 같이 도출된다:
다음 조건 중 하나 이상이 참이면, allowBtSplit이 거짓으로 설정된다:
- 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 //와 같다 // 여기서, "//" 쌍 사이의 텍스트는 삭제를 나타낸다.
또 다른 실시예에서, 하나의 조건이 추가된다:
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같으며, cbWidth/SubWidthC는 4 이하이다.
또 다른 실시예에서, 하나의 조건이 추가된다:
- btSplit은 SPLIT_BT_VER와 같고 treeType은 DUAL_TREE_CHROMA와 같고 cbWidth/SubWidthC는 4 이하이며 cbHeight/SubHeightC는 8 이하이다.
따라서, 크로마 CU 크기가 전술된 바와 같이 32개의 크로마 샘플일 때, 크로마 CU가 인트라 타입 SCIPU 또는 로컬 이중 트리에서 더 분할(예컨대, BT 분할)될 수 있도록 하는 것이 제안된다.
전술한 제안된 방법 중 임의의 방법은 인코더 및/또는 디코더에서 구현될 수 있다. 예를 들어, 제안된 방법 중 임의의 방법은 인코더 및/또는 디코더의 인트라 예측 또는 블록 분할에서 구현될 수 있다. 대안적으로, 제안된 방법 중 임의의 방법은 인트라 예측 또는 블록 분할에 필요한 정보를 제공하기 위해 인코더 및/또는 디코더의 인트라 예측 또는 블록 분할에 결합된 회로로서 구현될 수 있다.
도 7은 본 발명의 실시예에 따른 작은 블록에 대한 제약 모드 선택을 갖는 예시적인 인코딩 및 디코딩 시스템의 흐름도를 도시한다. 흐름도에 도시된 단계 및 본 개시의 다른 후속 흐름도는 인코더 측 및/또는 디코더 측에서 하나 이상의 프로세서(예컨대, 하나 이상의 CPU)에서 실행 가능한 프로그램 코드로서 구현될 수 있다. 흐름도에 도시된 단계는 또한 예를 들어, 흐름도의 단계를 수행하도록 배열된 하나 이상의 전자 디바이스 또는 프로세서와 같은 하드웨어에 기초하여 구현될 수 있다. 이 방법에 따르면, 단계(710)에서 루트 블록이 인코더 측에서 수신되거나 루트 블록을 포함하는 압축된 데이터가 디코더 측에서 수신되며, 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분과 하나 이상의 크로마 성분을 포함한다. 단계(720)에서, 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형은 하나 이상의 조건이 충족될 때 결정되며, 여기서 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것을 포함하고, 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 타겟 모드 유형은 인트라 유형 모드에 대응한다. 단계(730)에서, 루트 블록의 상기 하나 이상의 자식 블록은 인코더 측에서 타겟 모드 유형에 따라 인코딩되거나 루트 블록의 상기 하나 이상의 자식 블록은 디코더 측에서 타겟 모드 유형에 따라 디코딩된다.
도 8은 본 발명의 실시예에 따른 작은 블록에 대한 제약 모드 선택을 갖는 예시적인 코딩 시스템의 또 다른 흐름도를 도시한다. 이 방법에 따르면, 단계(810)에서 루트 블록이 인코더 측에서 수신되거나 루트 블록을 포함하는 압축된 데이터가 디코더 측에서 수신되며, 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분과 하나 이상의 크로마 성분을 포함한다. 단계(820)에서, 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형은 하나 이상의 조건이 충족될 때 결정되며, 여기서 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 제1 자식 블록 크기가 16 미만인 것을 포함하고, 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 타겟 모드 유형은 인트라 유형 모드에 대응한다. 단계(830)에서, 루트 블록의 상기 하나 이상의 자식 블록은 인코더 측에서 타겟 모드 유형에 따라 인코딩되거나 루트 블록의 상기 하나 이상의 자식 블록은 디코더 측에서 타겟 모드 유형에 따라 디코딩된다.
도시된 흐름도는 본 발명에 따른 비디오 코딩의 예를 도시하도록 의도된다. 당업자는 본 발명의 사상에서 벗어나지 않고 본 발명을 실시하기 위해 각 단계를 수정하거나, 단계들을 재배열하거나, 단계를 분할하거나, 단계들을 결합할 수 있다. 본 개시에서 특정 신택스 및 시맨틱스는 본 발명의 실시예를 구현하는 예를 설명하기 위해 사용되었다. 당업자라면 본 발명의 정신으로부터 벗어나지 않고 신택스 및 시맨틱스를 등가적인 신택스 및 시맨틱스로 대체하여 본 발명을 실시할 수 있다.
전술한 설명은 당업자가 특정 응용 및 그 요건과 관련하여 제공된 대로 본 발명을 실시할 수 있게 하기 위해 제시된다. 당업자에게는 설명한 실시예에 대한 각종 수정이 명백할 것이고, 여기에서 규정된 일반 원리는 다른 실시예에 적용될 수 있다. 따라서, 본 발명은 도시되고 설명된 특정 실시예로 제한되도록 의도되지 않고, 여기에 개시된 원리 및 신규한 특징과 일치하는 가장 넓은 범위에 부합되어야 한다. 위의 상세한 설명에서는 본 발명에 대한 완전한 이해를 제공하기 위해 다양한 특정 세부 사항이 예시되었다. 그럼에도 불구하고, 본 발명이 실시될 수 있다는 것은 당업자에 의해 이해될 것이다.
전술한 바와 같은 본 발명의 실시예는 다양한 하드웨어, 소프트웨어 코드 또는 둘 모두의 조합으로 구현될 수 있다. 예를 들어, 본 발명의 실시예는 여기에 설명된 프로세싱을 수행하기 위해 비디오 압축 칩에 통합된 하나 이상의 회로 또는 비디오 압축 소프트웨어에 통합된 프로그램 코드일 수 있다. 본 발명의 실시예는 또한 여기에 설명된 프로세싱을 수행하기 위해 디지털 신호 프로세서(Digital Signal Processor; DSP)에서 실행될 프로그램 코드일 수 있다. 본 발명은 또한 컴퓨터 프로세서, 디지털 신호 프로세서, 마이크로프로세서, 또는 FPGA(Field Programmable Gate Array)에 의해 수행될 다수의 기능을 수반할 수 있다. 이들 프로세서는 본 발명에 의해 구현된 특정 방법을 정의하는 기계 판독 가능 소프트웨어 코드 또는 펌웨어 코드를 실행함으로써 본 발명에 따른 특정 작업을 수행하도록 구성될 수 있다. 소프트웨어 코드 또는 펌웨어 코드는 상이한 프로그래밍 언어들 및 상이한 형식들 또는 스타일들로 개발될 수 있다. 소프트웨어 코드는 상이한 타겟 플랫폼용으로 또한 컴파일될 수 있다. 그러나 소프트웨어 코드의 상이한 코드 형식들, 스타일들 및 언어들, 및 본 발명에 따른 작업들을 수행하도록 코드를 구성하는 다른 수단은 본 발명의 정신 및 범위로부터 벗어나지 않을 것이다.
본 발명은 그 정신 또는 본질적인 특성에서 벗어나지 않고 다른 특정 형태로 구체화될 수 있다. 설명된 예는 모든 양상에서 제한적인 것이 아니라 예시적인 것으로 간주하여야 한다. 따라서, 본 발명의 범위는 전술한 설명보다는 첨부된 청구항들에 의해 표시된다. 청구항들과 동등한 의미 및 범위 내에 있는 모든 변경은 그 범위 내에 포함되어야 한다.

Claims (21)

  1. 비디오 코딩 방법에 있어서,
    인코더 측에서 루트 블록을 수신하거나 디코더 측에서 상기 루트 블록을 포함하는 압축된 데이터를 수신하는 단계 - 상기 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 상기 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분 및 하나 이상의 크로마 성분을 포함함 -;
    하나 이상의 조건이 충족될 때, 상기 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형을 인트라 모드 유형으로서 결정하는 단계 - 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것을 포함하고, 상기 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 상기 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 상기 타겟 모드 유형은 상기 인트라 유형 모드에 대응함 -; 및
    상기 인코더 측에서 상기 타겟 모드 유형에 따라 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 인코딩하거나 상기 디코더 측에서 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 재구성하기 위해 상기 타겟 모드 유형에 따라 상기 압축된 데이터에 디코딩을 적용하는 단계
    를 포함하는, 비디오 코딩 방법.
  2. 제1항에 있어서,
    상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭이 8과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 이진 수직 분할을 포함한다는 하나의 조건에 대응하는 것인, 비디오 코딩 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭이 16과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 삼진 수직 분할을 포함한다는 하나의 조건에 대응하는 것인, 비디오 코딩 방법.
  4. 제1항에 있어서,
    상기 루트 블록이 상기 420 크로마 형식일 때, 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 8 및 16과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 이진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 16과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 삼진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 4 및 32와 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 이진 또는 삼진 수평 분할을 포함한다, 또는 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 4 및 64와 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 상기 삼진 수평 분할을 포함한다는 하나의 조건에 대응하는 것인, 비디오 코딩 방법.
  5. 제1항에 있어서,
    상기 루트 블록이 상기 422 크로마 형식일 때, 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것은, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 8과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 이진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 16 및 8과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 삼진 수직 분할을 포함한다, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 4 및 16과 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 이진 또는 삼진 수평 분할을 포함한다, 또는 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 폭 및 높이가 각각 4 및 32와 같고 상기 루트 블록에 대한 상기 단일 분할 트리가 상기 삼진 수평 분할을 포함한다는 하나의 조건에 대응하는 것인, 비디오 코딩 방법.
  6. 제1항에 있어서,
    상기 루트 블록을 둘러싸는 상기 이미지 영역에 대해 상기 인트라 유형 모드가 선택되지 않은 경우, 상기 인트라 유형 모드 또는 상기 인터 유형 모드가 상기 루트 블록에 대해 선택되는 것을 나타내기 위해 제1 신택스가 상기 인코더 측에서 시그널링되거나 상기 디코더 측에서 파싱되는 것인, 비디오 코딩 방법.
  7. 제1항에 있어서,
    상기 코딩 영역은 코딩 트리 단위에 대응하는 것인, 비디오 코딩 방법.
  8. 제1항에 있어서,
    상기 이미지 영역은 슬라이스에 대응하는 것인, 비디오 코딩 방법.
  9. 제8항에 있어서,
    상기 슬라이스의 코딩 유형을 나타내기 위해 슬라이스 헤더 내에서, 제2 신택스가 상기 인코더 측에서 시그널링되거나 디코더 측에서 파싱되는 것인, 비디오 코딩 방법.
  10. 비디오 코딩 장치에 있어서,
    하나 이상의 전자 회로 또는 프로세서를 포함하고, 상기 하나 이상의 전자 회로 또는 프로세서는,
    인코더 측에서 루트 블록을 수신하거나 디코더 측에서 상기 루트 블록을 포함하는 압축된 데이터를 수신하고 - 상기 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 상기 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분 및 하나 이상의 크로마 성분을 포함함 -;
    하나 이상의 조건이 충족될 때, 상기 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형을 결정하며 - 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 폭이 2와 같은 것을 포함하고, 상기 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 상기 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 상기 타겟 모드 유형은 상기 인트라 유형 모드에 대응함 -;
    상기 인코더 측에서 상기 타겟 모드 유형에 따라 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 인코딩하거나 상기 디코더 측에서 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 재구성하기 위해 상기 타겟 모드 유형에 따라 상기 압축된 데이터에 디코딩을 적용하도록
    구성되는 것인, 비디오 코딩 장치.
  11. 비디오 코딩 방법에 있어서,
    인코더 측에서 루트 블록을 수신하거나 디코더 측에서 상기 루트 블록을 포함하는 압축된 데이터를 수신하는 단계 - 상기 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 상기 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분 및 하나 이상의 크로마 성분을 포함함 -;
    하나 이상의 조건이 충족될 때, 상기 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형을 결정하는 단계 - 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 블록 크기가 16 미만인 것을 포함하고, 상기 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 상기 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 상기 타겟 모드 유형은 상기 인트라 유형 모드에 대응함 -; 및
    상기 인코더 측에서 상기 타겟 모드 유형에 따라 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 인코딩하거나 상기 디코더 측에서 상기 루트 블록 내의 상기 하나 이상의 자식 블록을 재구성하기 위해 상기 타겟 모드 유형에 따라 상기 압축된 데이터에 디코딩을 적용하는 단계
    를 포함하는, 비디오 코딩 방법.
  12. 제11항에 있어서,
    상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 블록 크기는 4와 같고, 상기 루트 블록이 상기 420 크로마 형식일 때, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 블록 크기는 64와 같고, 상기 루트 블록에 대한 상기 단일 분할 트리는 쿼드 트리 분할, 삼진 수직 분할, 삼진 수평 분할, 이진 수직 분할, 또는 이진 수평 분할을 포함하는 것인, 비디오 코딩 방법.
  13. 제11항에 있어서,
    상기 하나 이상의 크로마 성분에 대한 하나의 자식 블록의 제1 블록 크기는 8과 같은 것인, 비디오 코딩 방법.
  14. 제13항에 있어서,
    상기 루트 블록이 상기 420 크로마 형식일 때, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 블록 크기는 128과 같고, 상기 루트 블록에 대한 상기 단일 분할 트리는 삼진 수직 분할 또는 삼진 수평 분할을 포함하는 것인, 비디오 코딩 방법.
  15. 제13항에 있어서,
    상기 루트 블록이 상기 422 크로마 형식일 때, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 블록 크기는 64와 같고, 상기 루트 블록에 대한 상기 단일 분할 트리는 쿼드 트리 분할, 삼진 수직 분할, 또는 삼진 수평 분할을 포함하는 것인, 비디오 코딩 방법.
  16. 제13항에 있어서,
    상기 루트 블록이 상기 422 크로마 형식일 때, 상기 하나의 루마 성분에 대한 상기 루트 블록의 제2 블록 크기는 32와 같고, 상기 루트 블록에 대한 상기 단일 분할 트리는 이진 수직 분할 또는 이진 수평 분할을 포함하는 것인, 비디오 코딩 방법.
  17. 제11항에 있어서,
    상기 루트 블록을 둘러싸는 상기 이미지 영역에 대해 상기 인트라 유형 모드가 선택되지 않은 경우, 상기 인트라 유형 모드 또는 상기 인터 유형 모드가 상기 루트 블록에 대해 선택되는 것을 나타내기 위해 제1 신택스가 상기 인코더 측에서 시그널링되거나 상기 디코더 측에서 파싱되는 것인, 비디오 코딩 방법.
  18. 제11항에 있어서,
    상기 코딩 영역은 코딩 트리 단위에 대응하는 것인, 비디오 코딩 방법.
  19. 제11항에 있어서,
    상기 이미지 영역은 슬라이스에 대응하는 것인, 비디오 코딩 방법.
  20. 제19항에 있어서,
    상기 슬라이스의 코딩 유형을 나타내기 위해, 슬라이스 헤더 내에서, 제2 신택스가 상기 인코더 측에서 시그널링되거나 디코더 측에서 파싱되는 것인, 비디오 코딩 방법.
  21. 비디오 코딩 장치에 있어서,
    하나 이상의 전자 회로 또는 프로세서를 포함하고, 상기 하나 이상의 전자 회로 또는 프로세서는,
    인코더 측에서 루트 블록을 수신하거나 디코더 측에서 상기 루트 블록을 포함하는 압축된 데이터를 수신하고 - 상기 루트 블록은 단일 분할 트리를 사용하여 코딩 영역을 분할한 결과인 하나 이상의 자식 블록으로 구성되고 상기 루트 블록은 420 또는 422 크로마 형식으로 하나의 루마 성분 및 하나 이상의 크로마 성분을 포함함 -;
    하나 이상의 조건이 충족될 때, 상기 루트 블록 내의 모든 상기 하나 이상의 자식 블록에 대한 타겟 모드 유형을 결정하며 - 상기 하나 이상의 조건은 상기 하나 이상의 크로마 성분에 대해 하나의 자식 블록의 제1 블록 크기가 16 미만인 것을 포함하고, 상기 루트 블록을 둘러싸는 이미지 영역에 대해 인트라 유형 모드가 선택되지 않은 경우, 상기 타겟 모드 유형은 인트라 유형 모드 또는 인터 유형 모드에 대응하고, 그렇지 않은 경우, 상기 타겟 모드 유형은 상기 인트라 유형 모드에 대응함 -;
    상기 인코더 측에서 상기 타겟 모드 유형에 따라 상기 루트 블록에서 상기 하나 이상의 자식 블록을 인코딩하거나 상기 디코더 측에서 상기 루트 블록에서 상기 하나 이상의 자식 블록을 재구성하기 위해 상기 타겟 모드 유형에 따라 상기 압축된 데이터에 디코딩을 적용하도록
    구성되는 것인, 비디오 코딩 장치.
KR1020227009187A 2019-08-23 2020-08-21 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치 KR20220047853A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227009338A KR20220042243A (ko) 2019-08-23 2020-08-21 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962890723P 2019-08-23 2019-08-23
US62/890,723 2019-08-23
US201962906435P 2019-09-26 2019-09-26
US62/906,435 2019-09-26
PCT/CN2020/110561 WO2021036939A1 (en) 2019-08-23 2020-08-21 Method and apparatus of partitioning small size coding units with partition constraints

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009338A Division KR20220042243A (ko) 2019-08-23 2020-08-21 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220047853A true KR20220047853A (ko) 2022-04-19

Family

ID=74684161

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227009187A KR20220047853A (ko) 2019-08-23 2020-08-21 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치

Country Status (8)

Country Link
US (1) US20220286714A1 (ko)
EP (2) EP4044592A3 (ko)
KR (1) KR20220047853A (ko)
CN (2) CN118509582A (ko)
BR (2) BR122022005759A2 (ko)
MX (2) MX2022002126A (ko)
TW (1) TWI751657B (ko)
WO (1) WO2021036939A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9112526B2 (en) * 2011-06-15 2015-08-18 Sony Corporation Binarization of DQP using separate absolute value and sign (SAVS) in CABAC
CN116248873A (zh) * 2016-10-10 2023-06-09 三星电子株式会社 通过块映射来对图像进行编码或解码的方法和装置
WO2021023261A1 (en) 2019-08-06 2021-02-11 Beijing Bytedance Network Technology Co., Ltd. Size restriction based on color format
JP7381722B2 (ja) 2019-09-02 2023-11-15 北京字節跳動網絡技術有限公司 カラーフォーマットに基づいたコーディングモード決定
CN118055248A (zh) 2019-09-21 2024-05-17 北京字节跳动网络技术有限公司 处理视频数据的方法、装置以及计算机可读记录介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
US20140376611A1 (en) * 2013-06-21 2014-12-25 Qualcomm Incorporated Adaptive color transforms for video coding
WO2016154963A1 (en) * 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
CA3025490A1 (en) * 2016-05-28 2017-12-07 Mediatek Inc. Method and apparatus of current picture referencing for video coding using affine motion compensation
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
EP3656127A1 (en) * 2017-07-19 2020-05-27 Fraunhofer Gesellschaft zur Förderung der Angewand Apparatus and method of coding of pictures
WO2019023200A1 (en) * 2017-07-24 2019-01-31 Arris Enterprises Llc INTRA-MODE JVET CODING
KR20200057082A (ko) * 2017-10-09 2020-05-25 애리스 엔터프라이지즈 엘엘씨 적응적 동일하지 않은 가중 평면 예측
WO2021023261A1 (en) * 2019-08-06 2021-02-11 Beijing Bytedance Network Technology Co., Ltd. Size restriction based on color format
EP4005215A4 (en) * 2019-08-15 2022-10-26 Beijing Dajia Internet Information Technology Co., Ltd. LOW CHROMINANCE BLOCK SIZE RESTRICTION IN VIDEO CODING
JP7494289B2 (ja) * 2019-08-15 2024-06-03 バイトダンス インコーポレイテッド 異なるパーティション構造をもつパレット・モード

Also Published As

Publication number Publication date
CN118509582A (zh) 2024-08-16
EP4044592A3 (en) 2022-12-21
CN113906737B (zh) 2024-05-14
TWI751657B (zh) 2022-01-01
CN113906737A (zh) 2022-01-07
US20220286714A1 (en) 2022-09-08
BR112022003469A2 (pt) 2022-05-24
MX2022003795A (es) 2022-05-25
MX2022002126A (es) 2022-05-18
EP4011066A1 (en) 2022-06-15
BR122022005759A2 (pt) 2022-06-07
TW202127880A (zh) 2021-07-16
EP4044592A2 (en) 2022-08-17
EP4011066A4 (en) 2023-10-18
WO2021036939A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
CN107836117B (zh) 一种块分割的方法及装置
EP3363199B1 (en) Method and apparatus of entropy coding and context modelling for video and image coding
CN109479137B (zh) 用于彩色视频数据的调色板模式编解码的方法及装置
KR20220047853A (ko) 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치
US11930174B2 (en) Method and apparatus of luma-chroma separated coding tree coding with constraints
TWI749420B (zh) 在區塊分割中條件式編碼或解碼視訊區塊的方法和裝置
KR20220051403A (ko) 비디오 코딩에서의 픽처 및 서브픽처 경계에서의 적응형 루프 필터링을 위한 방법 및 장치
KR20220061247A (ko) 비디오 코딩을 위한 상이한 크로마 형식들을 사용한 결합된 인터 및 인트라 예측의 방법 및 장치
US11785258B2 (en) Methods and apparatus for signaling coding unit partitioning of video data
WO2020098786A1 (en) Method and apparatus of luma-chroma separated coding tree coding with constraints
US20220224890A1 (en) Method and Apparatus of Partitioning Small Size Coding Units with Partition Constraints
KR20220042243A (ko) 분할 제약을 갖는 소형 크기 코딩 단위의 분할 방법 및 장치
KR20230003029A (ko) 비디오 코딩에서 비트스트림 제약을 부과하기 위한 방법 및 장치
US20230119121A1 (en) Method and Apparatus for Signaling Slice Partition Information in Image and Video Coding
TW202341732A (zh) 視訊編解碼方法和裝置

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination