KR20210138114A - 비디오 코딩 방법 및 장치 - Google Patents

비디오 코딩 방법 및 장치 Download PDF

Info

Publication number
KR20210138114A
KR20210138114A KR1020217035486A KR20217035486A KR20210138114A KR 20210138114 A KR20210138114 A KR 20210138114A KR 1020217035486 A KR1020217035486 A KR 1020217035486A KR 20217035486 A KR20217035486 A KR 20217035486A KR 20210138114 A KR20210138114 A KR 20210138114A
Authority
KR
South Korea
Prior art keywords
chroma
block
luma
size
luma sample
Prior art date
Application number
KR1020217035486A
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 KR20210138114A publication Critical patent/KR20210138114A/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/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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 개시의 관점은 비디오 디코딩 방법 비디오 디코딩을 위한 프로세싱 회로를 포함하는 장치를 제공한다. 프로세싱 회로는 코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩한다. 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타내며 루마 샘플에서의 크로마 블록의 블록 크기 및 루마 샘플에서의 최소 허용 크로마 4차 트리(quaternary tree, QT) 리프 노드 크기를 나타낸다. 프로세싱 회로는 루마 샘플에서의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지를 결정한다. 루마 샘플에서의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작다는 것에 응답하여, 프로세싱 회로는 QT 분할이 크로마 블록에 대해 허용되지 않는 것으로 결정한다.

Description

비디오 코딩 방법 및 장치
참조에 의한 통합
본 출원은 2020년 10월 1일에 출원된 미국 특허 출원 번호 17/060,652, "METHOD AND APPARATUS FOR VIDEO CODING"에 대해 우선권을 주장하며, 이 출원은 2019년 12월 23일에 제출된 미국 가출원 번호 62/953,034("Methods on Constraint of Chroma Quad Tree Split"), 및 2020년 1월 11일에 제출된 미국 가출원 번호 62/959,904("Methods On Coding Block Sizes")에 대한 우선권을 주장한 것이다. 이들 출원의 전체 개시는 그 전체가 여기에 참조로 포함된다.
본 개시는 일반적으로 비디오 코딩과 관련된 실시예를 설명한다.
본 명세서에 제공된 배경 설명은 일반적으로 본 개시 내용의 맥락을 제시하기 위한 것이다. 명세서의 측면뿐 아니라 종래 기술에 기술된 출원시 종래 기술로서 이 배경기술에 기술된 발명자들의 저작물이 이 배경기술 섹션에 기술된 범위 내에서, 출원 당시에 선행 기술로 인정되지 않을 수 있는 설명의 측면은 명시적이거나 묵시적으로 선행 기술로 인정되지 않는다.
비디오 코딩 및 디코딩은 모션 보상(motion compensation)을 가지고 인터 픽처 예측을 사용하여 수행될 수 있다. 압축되지 않은 디지털 비디오는 일련의 픽처를 포함할 수 있으며, 각 픽처는 예를 들어 1920 x 1080 루마 샘플 및 관련 크로마 샘플의 공간 차원을 갖는다. 일련의 픽처들은 예를 들어 초당 60장 또는 60Hz의 고정 또는 가변 픽처 속도(비공식적으로 프레임 레이트라고도 함)를 가질 수 있다. 압축되지 않은 비디오는 특정 비트레이트를 필요로 한다. 예를 들어, 샘플 당 8 비트의 1080p60 4:2:0 비디오(60Hz 프레임 레이트의 1920x1080 루마 샘플 해상도)에는 거의 1.5Gbit/s 대역폭이 필요하다. 이러한 비디오 한 시간은 600GB 이상의 저장 공간이 필요하다.
비디오 코딩 및 디코딩의 한 가지 목적은 압축을 통해 입력 비디오 신호의 리던던시(redundancy, 중복성)을 줄이는 것이다. 압축은 앞서 언급한 대역폭 또는 저장 공간 요건을 줄이는 데 도움이 될 수 있다. 무손실 압축과 손실 압축, 그리고 이들의 조합이 모두 사용될 수 있다. 무손실 압축이란 압축된 원본 신호에서 원본 신호의 정확한 사본을 재구성할 수 있는 기술을 말한다. 손실 압축을 사용하는 경우 재구성된 신호는 원래 신호와 동일하지 않을 수 있지만 원래 신호와 재구성된 신호 사이의 왜곡은 재구성된 신호가 의도한 이용에 유용할 만큼 충분히 작다. 비디오의 경우 손실 압축이 널리 사용된다. 허용되는 왜곡의 양은 응용 분야에 따라 다르다. 예를 들어, 특정 소비자 스트리밍 애플리케이션의 사용자는 텔레비전 배포 애플리케이션의 사용자보다 더 높은 왜곡을 견딜 수 있다. 달성 가능한 압축 비율은 더 높은 허용 왜곡이 더 높은 압축 비율을 가져온다는 것을 반영할 수 있다.
비디오 인코더 및 디코더는 예를 들어 모션 보상, 변환, 양자화 및 엔트로피 코딩을 포함하여 여러 범주의 기술을 활용할 수 있다.
비디오 코덱 기술에는 인트라 코딩이라는 기술이 포함될 수 있다. 인트라 코딩에서 샘플 값은 이전에 재구성된 참조 픽처의 샘플 또는 다른 데이터에 대한 참조 없이 표현된다. 일부 비디오 코덱에서는 픽처가 샘플 블록으로 공간적으로 세분화된다. 모든 샘플 블록이 인트라 모드로 코딩되면 해당 픽처는 인트라 픽처가 될 수 있다. 인트라 픽처 및 독립 디코더 리프레시 픽처와 같은 그 도출물은 디코더 상태를 재설정하는 데 사용될 수 있으며, 따라서 코딩된 비디오 비트스트림 및 비디오 세션의 첫 번째 픽처 또는 스틸 이미지로 사용될 수 있다. 인트라 블록의 샘플은 변환에 노출될 수 있으며 변환 계수는 엔트로피 코딩 전에 양자화될 수 있다. 인트라 예측은 변환 전 도메인(pre-transform domain)에서 샘플 값을 최소화하는 기술일 수 있다. 어떤 경우에는 변환 후 DC 값이 작고 AC 계수가 작을수록, 엔트로피 코딩 후 블록을 표현하기 위해 주어진 양자화 단계 크기에서 필요한 비트는 더 적다.
예를 들어 MPEG-2 생성 코딩 기술에서 알려진 것과 같은 전통적인 인트라 코딩은 인트라 예측을 사용하지 않는다. 그렇지만, 일부 새로운 비디오 압축 기술은, 예를 들어 주변 샘플 데이터 및/또는 공간적으로 이웃하고 디코딩 순서에서 선행하는 데이터 블록의 인코딩 및/또는 디코딩 동안 획득되는 메타데이터로부터 시도하는 기술을 포함한다. 이러한 기술은 이후 "인트라 예측" 기술이라고 한다. 적어도 일부의 경우에, 인트라 예측은 참조 픽처가 아닌 재구성중인 현재 픽처로부터의 참조 데이터만 사용한다.
다양한 형태의 인트라 예측이 있을 수 있다. 이러한 기술 중 하나 이상이 주어진 비디오 코딩 기술에서 사용될 수 있을 때, 사용 중인 이 기술은 인트라 예측 모드에서 코딩될 수 있다. 어떤 경우에는, 모드들은 서브모드 및/또는 파라미터를 가질 수 있으며, 이들은 개별적으로 코딩되거나 모드 코드 워드에 포함될 수 있다. 주어진 모드/서브 모드/파라미터 조합에 사용할 코드 워드는 인트라 예측을 통한 코딩 효율성 이득에 영향을 미칠 수 있으며, 코드 워드를 비트스트림으로 변환하는 데 사용되는 엔트로피 코딩 기술도 마찬가지이다.
특정 모드의 인트라 예측이 H.264로 도입되었고, H.265에서 개선되었으며 JEM(joint exploration model), VVC(다목적 비디오 코딩) 및 벤치 마크 세트(BMS)와 같은 최신 코딩 기술에서 더욱 개선되었다. 이미 사용 가능한 샘플에 속하는 이웃 샘플 값을 사용하여 예측자 블록을 형성할 수 있다. 이웃 샘플의 샘플 값은 방향에 따라 예측자 블록에 복사된다. 사용되는 방향에 대한 참조는 비트스트림에서 코딩되거나 자체적으로 예측될 수 있다.
도 1a를 참조하면, H.265의 33개의 가능한 예측자 방향(35개 인트라 모드의 33개 각도 모드에 대응)으로부터 알려진 9개의 예측자 방향의 서브 세트가 우측 하단에 도시되어 있다. 화살표가 수렴하는 지점(101)은 예측되는 샘플을 나타낸다. 화살표는 샘플이 예측되는 방향을 나타낸다. 예를 들어, 화살표(102)는 샘플(101)이 수평에서 45도 각도로 우측 상단으로 샘플에서 예측된다는 것을 나타낸다. 유사하게, 화살표(103)는 샘플(101)이 수평으로부터 22.5도 각도로 샘플(101)의 좌측 아래에 있는 샘플로부터 예측된다는 것을 나타낸다.
여전히 도 1a를 참조하면, 좌측 상단에는 4x4 샘플의 정사각형 블록(104)이 표시되어 있다(점선, 굵은 선으로 표시됨). 정사각형 블록(104)은 16개 샘플들을 포함하고, 각각은 "S", Y 차원에서의 위치(예컨대, 열 인덱스), 및 X 차원에서의 위치(예컨대, 열 인덱스)로 레이블이 지정된다. 예를 들어, 샘플 S21은 Y 차원의 두 번째 샘플(위에서)이고 X 차원의 첫 번째 샘플(좌측에서)이다. 유사하게, 샘플 S44는 Y 및 X 차원 모두에서 블록(104)의 네 번째 샘플이다. 블록 크기가 4x4 샘플이므로 S44는 우측 하단에 있다. 유사한 번호 매기기 체계를 따르는 참조 샘플이 추가로 표시된다. 참조 샘플은 블록(104)에 상대적인 R, Y 위치(예: 행 인덱스) 및 X 위치(열 인덱스)로 레이블이 지정된다. H.264 및 H.265 모두에서 예측 샘플은 재구성중인 블록에 인접하고, 따라서 음수 값을 사용할 필요가 없다.
인트라 픽처 예측은 시그널링된 예측 방향에 따라 적절하게 이웃 샘플로부터 참조 샘플 값을 복사함으로써 동작할 수 있다. 예를 들어, 코딩된 비디오 비트스트림이, 이 블록에 대해, 화살표(102)와 일치하는 예측 방향을 지시하는 것을 시그널링하는 것을 포함한다고 가정하고 - 즉, 샘플들은 수평에서 45도 각도로 우측 상단에 있는 예측 샘플(들)에서 예측된다. 이 경우 샘플 S41, S32, S23 및 S14는 동일한 참조 샘플 R05에서 예측된다. 그런 다음 샘플 S44는 참조 샘플 R08에서 예측된다.
어떤 경우에, 참조 샘플을 계산하기 위해, 특히 방향이 45도로 균등하게 나눌 수 없을 때, 예를 들어 보간을 통해 여러 참조 샘플의 값들이 결합될 수 있다.
비디오 코딩 기술이 발전함에 따라 가능한 방향의 수가 증가했다. H.264(2003년)에서는 9개의 다른 방향을 나타낼 수 있다. H.265(2013년)에는 33개로 증가했으며 공개 당시 JEM/VVC/BMS는 최대 65개의 방향을 지원할 수 있다. 가능성이 가장 높은 방향을 식별하기 위한 실험이 수행되었으며, 엔트로피 코딩의 특정 기술을 사용하여 가능성이 적은 방향에 대한 특정 페널티를 수용하여 이러한 가능한 방향을 적은 수의 비트로 표현한다. 또한, 이미 디코딩된 이웃 블록에서 사용되는 이웃 방향으로부터 방향 자체를 예측할 수 있다.
도 1b는 시간에 따른 예측 방향의 증가하는 수를 설명하기 위해 JEM에 따른 65개의 인트라 예측 방향을 나타내는 개략도(180)를 보여준다.
방향을 나타내는 코딩된 비디오 비트스트림 내의 인트라 예측 방향 비트들의 매핑은 비디오 코딩 기술에 따라 다를 수 있다. 예를 들어 예측 방향의 단순한 직접 매핑에서 인트라 예측 모드, 코드 워드, 가장 확률이 높은 모드에 관련된 복잡한 적응 방식에 이르기까지, 그리고 유사한 기술에까지 펴져 있다. 그러나 모든 경우에, 비디오 콘텐츠에서 통계적으로 다른 특정 방향보다 발생할 가능성이 낮은 특정 방향이 있을 수 있다. 비디오 압축의 목표는 중복성을 줄이는 것이므로 잘 작동하는 비디오 코딩 기술에서 가능성이 낮은 방향은 가능성이 높은 방향보다 더 많은 수의 비트로 표시된다.
모션 보상은 손실 압축 기술일 수 있으며, 이전에 재구성된 픽처 또는 그 일부(참조 픽처)로부터의 샘플 데이터 블록이 모션 벡터(이후 MV)가 나타내는 방향으로 공간적으로 이동한 후 새로 재구성되는 픽처 또는 픽처 일부의 예측에 사용된다. 경우에 따라, 참조 픽처는 현재 재구성중인 픽처와 동일할 수 있다. MV는 X와 Y의 2차원 또는 3차원을 가질 수 있으며, 세 번째는 사용중인 참조 픽처이다(후자는 간접적으로 시간 차원일 수 있음).
일부 비디오 압축 기술에서, 샘플 데이터의 특정 영역에 적용할 수 있는 MV는 다른 MV, 예를 들어 재구성중인 영역에 공간적으로 인접한 샘플 데이터의 다른 영역과 관련된 MV로부터 예측될 수 있으며, 디코딩 순서에서 해당 MV보다 선행될 수 있다. 이렇게 하면 MV를 코딩하는 데 필요한 데이터 양을 크게 줄일 수 있으므로 중복성을 제거하고 압축률을 높일 수 있다. 예를 들어, 카메라에서 도출된 입력 비디오 신호(자연 비디오(natural video)라고 함)를 코딩할 때 단일 MV가 적용되는 영역보다 큰 영역이 유사한 방향으로 이동할 수 있는 통계적 가능성이 있기 때문에 MV 예측이 효과적으로 작동할 수 있다. 따라서 어떤 경우에는 주변 영역의 MV에서 도출된 유사한 모션 벡터를 사용하여 예측할 수 있다. 그 결과 주어진 영역에 대해 발견된 MV는 주변 MV에서 예측한 MV와 유사하거나 동일하며, 이는, 엔트로피 코딩 후, MV를 직접 코딩할 때 사용되는 비트 수보다 더 적은 수의 비트로 표시될 수 있다. 일부 경우에, MV 예측은 원래 신호(즉, 샘플 스트림)에서 도출된 신호(즉, MV)의 무손실 압축의 예일 수 있다. 다른 경우에는 MV 예측 자체가 손실될 수 있다. 예를 들어 주변의 여러 MV에서 예측자를 계산할 때 반올림 오류가 발생하기 때문이다.
다양한 MV 예측 메커니즘이 H.265/HEVC(ITU-T Rec. H.265, "고효율 비디오 코딩", 2016년 12월)에 기술되어 있다. H.265가 제공하는 많은 MV 예측 메커니즘 중에서 여기에 설명된 기술은 이후 "공간 병합(spatial merge)"이라 한다.
도 2를 참조하면, 현재 블록(201)은 공간적으로 시프트된 동일한 크기의 이전 블록으로부터 예측 가능하도록 모션 검색 프로세스 동안 인코더에 의해 발견된 샘플을 포함할 수 있다. MV를 직접 코딩하는 대신, MV는 A0, A1 및 B0, B1, B2(각각 202 ~ 206)으로 표시된 5개의 주변 샘플 중 하나와 연관된 MV를 사용하여 가장 최근의(디코딩 순서로) 참조 픽처로부터 하나 이상의 참조 픽처와 연관된 메타 데이터에서 도출될 수 있다. H.265에서 MV 예측은 이웃 블록이 사용하는 동일한 참조 픽처의 예측자를 사용할 수 있다.
본 개시의 측면들은 비디오 인코딩 및/또는 디코딩을 위한 방법 및 장치를 제공한다. 일부 예들에서, 비디오 디코딩을 위한 장치는 프로세싱 회로를 포함한다.
본 개시의 관점은 비디오 디코딩 방법 비디오 디코딩을 위한 프로세싱 회로를 포함하는 장치를 제공한다. 프로세싱 회로는 코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩할 수 있다. 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타낼 수 있다. 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기 및 루마 샘플에서의 최소 허용 크로마 4차 트리(quaternary tree, QT) 리프 노드 크기를 추가로 나타낼 수 있다. 프로세싱 회로는 루마 샘플에서의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지를 결정할 수 있다. 루마 샘플에서의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작다는 것에 응답하여, 프로세싱 회로는 QT 분할이 크로마 블록에 대해 허용되지 않는 것으로 결정할 수 있다.
실시예에서, 상기 파티션 정보는 상기 크로마 블록이 다중-유형 트리(multi-type tree, MTT) 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이, 크로마 수평 서브샘플링 인자 및 상기 크로마 블록에 대한 예측 모드 유형을 추가로 나타낸다. 상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 크다는 것에 응답하여, 프로세싱 회로는 (i) 상기 크로마 블록이 MTT 노드인 것을 나타내는 MTT 깊이, (ii) 상기 크로마 수평 서브샘플링 인자로 나눈 상기 루마 샘플에서의 크로마 블록의 블록 크기가 4보다 작거나 같은 것, 및 (iii) 인트라 예측 모드 및 인트라 블록 복사(intra block copy, IBC) 모드가 허용된다는 것을 나타내는 예측 모드 유형 중 적어도 하나에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는 것으로 결정할 수 있다.
실시예에서, 상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 추가로 나타낸다. 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작다. 일 예에서, 상기 코딩된 비디오 비트스트림은 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 나타내는 크로마 신택스 요소 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타내는 루마 신택스 요소를 포함한다. 일 예에서, 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기에 기초하여 유도된다.
실시예에서, 상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기를 추가로 나타낸다. 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기보다 작다.
일부 예에서, 비디오 디코딩 장치는 프로세싱 회로를 포함한다. 상기 프로세싱 회로는 코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩할 수 있다. 상기 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타낸다. 상기 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기 및 루마 샘플에서의 최소 허용 크로마 4차 트리(quaternary tree, QT) 리프 노드 크기를 추가로 나타낸다. 프로세싱 회로는 적어도 루마 샘플에서의 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자, 및 최소 허용 크로마 QT 리프 노드 크기에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는지를 결정할 수 있다. 상기 크로마 블록에 대해 QT 분할이 허용되지 않는다는 것에 응답하여, 프로세싱 회로는 이진 트리 분할 및 삼진 트리 분할 중 적어도 하나가 상기 크로마 블록에 대해 허용되지 않는지를 결정할 수 있다. 실시예에서, 상기 최소 허용 크로마 QT 리프 노드 크기는 루마 샘플에 있고, 상기 파티션 정보는 크로마 수평 서브샘플링 인자를 추가로 나타낸다. 프로세싱 회로는 적어도 상기 루마 샘플의 크로마 블록의 블록 크기, 상기 크로마 수직 서브샘플링 인자, 상기 크로마 수평 서브샘플링 인자 및 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는지를 결정할 수 있다.
일 예에서, 프로세싱 회로는 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 크로마 수직 서브샘플링 인자를 곱하고 상기 크로마 수평 서브샘플링 인자로 나눈 것과 동일한 파라미터를 결정할 수 있다. 프로세싱 회로는 상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 파라미터보다 작거나 같다는 것에 응답하여 상기 QT 분할이 상기 크로마 블록에 대해 허용되지 않는 것으로 결정할 수 있다.
일 예에서, 상기 파티션 정보는 상기 크로마 블록이 다중-유형 트리(multi-type tree, MTT) 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이 및 상기 크로마 블록에 대한 예측 모드 유형을 추가로 나타낸다. 프로세싱 회로는 상기 MTT 깊이 및 상기 예측 모드 유형에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는지를 결정할 수 있다.
일 예에서, 상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 추가로 나타낸다. 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작다.
일 예에서, 상기 코딩된 비디오 비트스트림은 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 나타내는 크로마 신택스 요소 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타내는 루마 신택스 요소를 포함한다.
일 예에서, 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기에 기초하여 유도된다.
일 예에서, 상기 파티션 정보는 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기를 더 포함한다. 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기보다 작다.
일 예에서, 상기 최소 허용 크로마 QT 리프 노드 크기는 크로마 샘플에 있다. 프로세싱 회로는 상기 크로마 수직 서브샘플링 인자로 나눈 상기 루마 샘플에서의 크로마 블록의 블록 크기가 크로마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은 것에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는 것으로 결정할 수 있다.
일 예에서, 상기 파티션 정보는 크로마 수평 서브샘플링 인자, 상기 크로마 블록이 MTT 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이, 및 크로마 블록에 대한 예측 모드 유형을 추가로 나타낸다. 상기 크로마 수직 서브샘플링 인자로 나눈 루마 샘플에서의 크로마 블록의 블록 크기가 크로마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 크다는 것에 응답하여, 프로세싱 회로는 상기 루마 샘플에서 크로마 블록의 블록 크기, 상기 크로마 수평 서브샘플링 인자, 상기 MTT 깊이 및 상기 예측 모드 유형에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는지를 결정할 수 있다.
본 개시의 관점은 명령을 포함하는 비 일시적 컴퓨터 판독 가능형 매체를 제공하며, 명령은 비디오 디코딩을 위한 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금 비디오 디코딩 방법 중 임의의 방법을 수행하게 한다.
개시된 주제의 추가 특징, 특성 및 다양한 이점은 다음의 상세한 설명 및 첨부 도면으로부터 더욱 명백해질 것이다.
도 1a는 인트라 예측 모드의 예시적인 서브세트의 개략도이다.
도 1b는 예시적인 인트라 예측 방향의 예시이다.
도 2는 일 예에서 현재 블록 및 그 주변 공간 병합 후보의 개략도이다.
도 3은 일 실시예에 따른 통신 시스템(300)의 간략화된 블록도의 개략도이다.
도 4는 일 실시예에 따른 통신 시스템(400)의 간략화된 블록도의 개략도이다.
도 5는 일 실시예에 따른 디코더의 단순화된 블록도의 개략도이다.
도 6은 실시예에 따른 인코더의 단순화된 블록도의 개략도이다.
도 7은 다른 실시예에 따른 인코더의 블록도를 도시한다.
도 8은 다른 실시예에 따른 디코더의 블록도를 도시한다.
도 9는 본 개시의 실시예들에 따른 크로마 서브샘플링 포맷들의 예들을 도시한다.
도 10a 내지 도 10c는 본 개시의 실시예에 따른 각각의 픽처에서 대응하는 루마 및 크로마 샘플의 공칭 수직 및 수평 상대 위치를 도시한다.
도 11은 본 개시의 일 실시예에 따라 CTU(1101)로 분할된 픽처(1100)의 예를 도시한다.
도 12는 본 개시의 실시예에 따른 픽처(1200)의 래스터-스캔 슬라이스 분할의 예를 도시한다.
도 13은 본 개시의 일 실시예에 따른 픽처(1300)의 직사각형 슬라이스 분할의 예를 도시한다.
도 14는 본 개시의 실시예에 따라 타일, 브릭(1401)-(1411), 및 직사각형 슬라이스(1421)-(1424)로 분할된 픽처(1400)의 예를 도시한다.
도 15는 본 개시의 실시예에 따른 다중 유형 트리(MTT) 구조에서 예시적인 분할 유형(1521)-(1524)을 도시한다.
도 16은 본 개시의 실시예에 따른 내포된 MTT 코딩 트리 구조를 갖는 4차 트리(QT)에서 시그널링을 분할하는 예를 도시한다.
도 17은 본 개시의 실시예들에 따른 MTT 분할 모드들의 예들을 도시한다.
도 18은 본 개시의 일 실시예에 따른 중첩된 MTT 코딩 블록 구조를 갖는 QT의 예를 도시한다.
도 19는 본 개시의 실시예에 따른 삼항 트리(TT) 분할에 대한 제한의 예를 도시한다.
도 20은 본 개시의 실시예에 따른 이진 트리(BT) 분할 및 TT 분할의 중복 분할 패턴의 예를 도시한다.
도 21은 본 개시의 실시예들에 따라 허용되지 않는 TT 및 BT 파티셔닝의 예들을 도시한다.
도 22는 본 개시의 일 실시예에 따른 시퀀스 파라미터 세트(SPS)에서의 파티셔닝 및 블록 크기와 관련된 예시적인 신택스(2200)를 도시한다.
도 23은 본 개시의 일 실시예에 따른 슬라이스 타입의 예를 도시한다.
도 24는 본 개시의 실시예에 따른 병렬 TT 분할 및 코딩 블록 크기에 대한 변수의 예시적인 유도를 도시한다.
도 25는 본 개시의 실시예에 따른 코딩 블록 크기를 위한 변수의 예시적인 유도를 도시한다.
도 26은 본 개시의 일 실시예에 따른 예시적인 신택스 테이블을 도시한다.
도 27은 본 개시의 실시예에 따른 프로세스(2700)를 개략적으로 나타내는 흐름도를 도시한다.
도 28은 본 개시의 실시예에 따른 프로세스(2800)를 개략하는 흐름도를 도시한다.
도 29는 일 실시예에 따른 컴퓨터 시스템의 개략도이다.
도 3은 본 개시의 일 실시예에 따른 통신 시스템(300)의 단순화된 블록도를 예시한다. 통신 시스템(300)은 예를 들어 네트워크(350)를 통해 서로 통신할 수 있는 복수의 단말 장치를 포함한다. 예를 들어, 통신 시스템(300)은 네트워크(350)를 통해 상호 연결된 제1의 쌍의 단말 장치(310 및 220)를 포함한다. 도 2에서, 예를 들어, 제1의 쌍의 단말 장치(310 및 220)는 데이터의 단방향 전송을 수행한다. 예를 들어, 단말 장치(310)는 네트워크(350)를 통해 다른 단말 장치(320)로 전송하기 위해 비디오 데이터(예를 들어, 단말 장치(310)에 의해 캡처된 비디오 픽처의 스트림)를 코딩할 수 있다. 인코딩된 비디오 데이터는 하나 이상의 코딩된 비디오 비트 스트림의 형태로 전송될 수 있다. 단말 장치(320)는 네트워크(350)로부터 코딩된 비디오 데이터를 수신하고, 코딩된 비디오 데이터를 디코딩하여 비디오 픽처를 복원하고, 복원된 비디오 데이터에 따라 비디오 픽처를 디스플레이할 수 있다. 단방향 데이터 전송은 미디어 서비스 애플리케이션 등에서 일반적일 수 있다.
다른 예에서, 통신 시스템(300)은 예를 들어 픽처 회의 동안 발생할 수 있는 코딩된 비디오 데이터의 양방향 전송을 수행하는 제2 쌍의 단말 장치(330, 240)를 포함한다. 데이터의 양방향 전송의 경우, 예를 들어, 단말 장치(330 및 240)의 각 단말 장치는 네트워크(350)를 통해 단말 장치(330 및 240) 중 다른 단말 장치로의 전송을 위해 비디오 데이터(예: 단말 장치에 의해 캡처된 비디오 픽처의 스트림)를 코딩할 수 있다. 단말 장치(330 및 240)의 각 단말 장치는 또한 단말 장치(330 및 240)의 다른 단말 장치가 전송한 코딩된 비디오 데이터를 수신할 수 있으며, 코딩된 비디오 데이터를 디코딩하여 비디오를 재구성할 수 있다. 재구성된 비디오 데이터에 따라 액세스 가능한 디스플레이 장치에 비디오 픽처를 표시할 수 있다.
도 3에서, 예를 들어, 단말 장치(310, 320, 330, 240)는 서버, 개인용 컴퓨터 및 스마트 폰으로 예시될 수 있지만, 본 개시의 원리는 이에 제한되지 않을 수 있다. 본 개시 내용의 실시예는 랩톱 컴퓨터, 태블릿 컴퓨터, 미디어 플레이어 및/또는 전용 픽처 회의 장비에 응용될 수 있다. 네트워크(350)는 예를 들어 유선 및/또는 무선 통신 네트워크를 포함하여 단말 장치(310, 320, 330 및 240) 사이에서 코딩된 비디오 데이터를 전달하는 임의의 수의 네트워크를 나타낸다. 통신 네트워크(350)는 회선 교환 및/또는 패킷 교환 채널에서 데이터를 교환할 수 있다. 대표적인 네트워크에는 통신 네트워크, 근거리 통신망, 광역 통신망 및/또는 인터넷이 포함된다. 본 설명의 목적을 위해, 네트워크(350)의 아키텍처 및 토폴로지는 아래에서 설명되지 않는 한 본 개시의 동작에 중요하지 않을 수 있다.
도 4는 개시된 발명에 대한 응용의 예로서 스트리밍 환경에서 비디오 인코더 및 비디오 디코더의 배치를 예시한다. 개시된 발명은 예를 들어, 픽처 회의, 디지털 TV, CD, DVD, 메모리 스틱 등을 포함하는 디지털 미디어에 압축된 비디오의 저장을 포함하는 다른 비디오 기능이 있는 장비에도 동일하게 적용될 수 있다.
스트리밍 시스템은 비디오 소스(401), 예를 들어 디지털 카메라를 포함할 수 있는 캡처 서브 시스템(413)을 포함하여, 예를 들어 압축되지 않은 비디오 픽처(402)의 스트림을 생성할 수 있다. 일례에서, 비디오 픽처의 스트림(402)은 디지털 카메라에 의해 촬영된 샘플을 포함한다. 인코딩된 비디오 데이터(404)(또는 코딩된 비디오 비트 스트림)와 비교할 때 높은 데이터 볼륨을 강조하기 위해 굵은 선으로 표시된 비디오 픽처 스트림(402)은 비디오 소스(401)에 연결된 비디오 인코더(403)를 포함하는 전자 장치(420)에 의해 처리될 수 있다. 비디오 인코더(403)는 하드웨어, 소프트웨어, 또는 이들의 조합을 포함하여 아래에서 더 상세히 설명되는 바와 같이 개시된 발명의 측면을 실현하게 하거나 구현할 수 있다. 인코딩된 비디오 데이터(404)(또는 인코딩된 비디오 비트 스트림(404))는 비디오 픽처 스트림(402)과 비교할 때 더 낮은 데이터 볼륨을 강조하기 위해 가는 선으로 묘사되고, 나중에 사용하기 위해 스트리밍 서버(405)에 저장될 수 있다. 도 3에서의 클라이언트 서브 시스템(406 및 408)과 같은 하나 이상의 스트리밍 클라이언트 서브 시스템은 인코딩된 비디오 데이터(404)의 사본(407 및 409)을 검색하기 위해 스트리밍 서버(405)에 액세스할 수 있다. 클라이언트 서브 시스템(406)은 예를 들어 전자 장치(430)에 비디오 디코더(410)를 포함할 수 있다. 비디오 디코더(410)는 인코딩된 비디오 데이터의 유입 사본(407)을 디코딩하고 디스플레이(412)(예를 들어, 디스플레이 스크린) 또는 다른 렌더링 장치(도시되지 않음)에서 렌더링 될 수 있는 비디오 픽처(411)의 유출 스트림을 생성한다. 일부 스트리밍 시스템에서, 인코딩된 비디오 데이터(404, 407 및 409)(예를 들어, 비디오 비트 스트림)은 특정 비디오 코딩/압축 표준에 따라 인코딩될 수 있다. 이러한 표준의 예로는 ITU-T Recommendation H.265가 있다. 예를 들어, 개발중인 비디오 코딩 표준은 비공식적으로 VVC(Versatile Video Coding)로 알려져 있다. 개시된 발명은 VVC의 컨텍스트에서 사용될 수 있다.
전자 장치(420 및 430)는 다른 컴포넌트(도시되지 않음)를 포함할 수 있음에 유의한다. 예를 들어, 전자 장치(420)는 비디오 디코더(도시되지 않음)를 포함할 수 있고, 전자 장치(430)도 비디오 인코더(도시되지 않음)를 포함할 수 있다.
도 5는 본 개시의 일 실시예에 따른 비디오 디코더(510)의 블록도를 도시한다. 비디오 디코더(510)는 전자 장치(530)에 포함될 수 있다. 전자 장치(530)는 수신기(531)(예를 들어, 수신 회로)를 포함할 수 있다. 비디오 디코더(510)는 도 3의 예에서의 비디오 디코더(310) 대신에 사용될 수 있다.
수신기(531)는 비디오 디코더(510)에 의해 디코딩될 하나 이상의 코딩된 비디오 시퀀스를 수신할 수 있고; 동일하거나 다른 실시예에서, 한 번에 하나의 코딩된 비디오 시퀀스에서, 각각의 코딩된 비디오 시퀀스의 디코딩은 다른 코딩된 비디오 시퀀스와 독립적이다. 코딩된 비디오 시퀀스는 인코딩된 비디오 데이터를 저장하는 저장 장치에 대한 하드웨어/소프트웨어 링크일 수 있는 채널(501)로부터 수신될 수 있다. 수신기(531)는 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림과 함께 인코딩된 비디오 데이터를 수신할 수 있으며, 이들은 각각의 사용 엔티티(도시되지 않음)로 전달될 수 있다. 수신기(531)는 코딩된 비디오 시퀀스를 다른 데이터와 분리할 수 있다. 네트워크 지터(network jitter)를 방지하기 위해, 버퍼 메모리(515)가 수신기(531)와 엔트로피 디코더/파서(520)(이하 "파서(520)") 사이에 결합될 수 있다. 특정 적용예에서, 버퍼 메모리(515)는 비디오 디코더(510)의 일부이다. 다른 경우에는 비디오 디코더(510)(도시되지 않음) 외부에 있을 수 있다. 또 다른 경우에는, 예를 들어 네트워크 지터와 싸우기 위해 비디오 디코더(510) 외부에 버퍼 메모리(도시되지 않음)가 있을 수 있으며, 추가로 비디오 디코더(510) 내부에 다른 버퍼 메모리(515)가 있어, 예컨대 플레이아웃 타이밍을 처리한다. 수신기(531)가 충분한 대역폭과 제어 가능성을 갖는 저장/전달 장치 또는 등시성 네트워크(isosynchronous network)로부터 데이터를 수신할 때, 버퍼 메모리(515)는 필요하지 않거나 작을 수 있다. 인터넷과 같은 최선형 패킷 네트워크에서 사용하기 위해, 버퍼 메모리(515)는 필요할 수 있고, 비교적 클 수 있으며, 적응형 크기가 유리할 수 있으며, 운영 체제 또는 비디오 디코더(510)의 외부에 유사한 요소(도시되지 않음)에서 적어도 부분적으로 구현될 수 있다.
비디오 디코더(510)는 코딩된 비디오 시퀀스로부터 심볼(521)을 재구성하기 위해 파서(520)를 포함할 수 있다. 이러한 심볼의 카테고리에는 비디오 디코더(510)의 작동을 관리하는 데 사용되는 정보와, 전자 장치(530)의 일체화된 부분이 아니고 도 5에 도시된 바와 같이 전자 장치(530)에 연결될 수 있는 렌더링 장치(512)(예: 디스플레이 화면)와 같은 렌더링 장치를 제어하기 위한 실질적인 정보가 포함된다. 렌더링 장치(들)에 대한 제어 정보는 SEI 메시지(Supplemental Enhancement Information) 또는 VUI(Video Usability Information) 파라미터 세트 프래그먼트(도시되지 않음)의 형태일 수 있다. 파서(520)는 수신된 코딩된 비디오 시퀀스를 파싱/엔트로피 디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있으며, 가변 길이 코딩, Huffman 코딩, 컨텍스트 민감도가 있거나 없는 산술 코딩 등을 포함한 다양한 규칙을 따를 수 있다. 파서(520)는 그룹에 대응하는 적어도 하나의 파라미터에 기초하여, 비디오 디코더 내의 픽셀의 서브 그룹 중 적어도 하나에 대한 서브 그룹 파라미터의 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 하위 그룹에는, GOP(Group of Pictures), 픽처, 타일, 슬라이스, 매크로 블록, CU(Coding Unit), 블록, TU(Transform Unit), PU(Prediction Unit) 등이 포함될 수 있다. 파서(520)는 또한 변환 계수, 양자화기 파라미터 값, 모션 벡터 등을 코딩된 비디오 시퀀스 정보로부터 추출할 수 있다.
파서(520)는 버퍼 메모리(515)로부터 수신된 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 동작을 수행하여 심볼(521)을 생성할 수 있다.
심볼의 재구성(521)은 코딩된 비디오 픽처 또는 그 일부(예: 인터 및 인트라 픽처, 인터 및 인트라 블록)의 유형 및 기타 요인에 따라 여러 다른 유닛을 포함할 수 있다. 파서(520)에 의해 코딩된 비디오 시퀀스로부터 파싱된 서브 그룹 제어 정보에 의해 어떤 유닛이 관련되고 어떻게 제어될 수 있는지가 제어될 수 있다. 파서(520)와 그 아래의 복수의 유닛 사이의 그러한 하위 그룹 제어 정보의 흐름은 명확성을 위해 묘사되지 않았다.
이미 언급된 기능 블록을 넘어, 비디오 디코더(510)는 아래에 설명된 바와 같이 개념적으로 다수의 기능 유닛으로 세분될 수 있다. 상업적 제약 하에서 작동하는 실제 구현에서 이러한 장치 중 다수는 서로 밀접하게 상호 작용하며 적어도 부분적으로는 서로 통합될 수 있다. 그러나 개시된 발명을 설명하기 위해서는 아래의 기능 유닛으로 개념적으로 세분화하는 것이 적절하다.
제1 유닛은 스케일러/역변환 유닛(551)이다. 스케일러/역변환 유닛(551)은 파서(들)(520)로부터의 심볼(들)(521)로서 블록 크기, 양자화 인자, 양자화 스케일링 매트릭스 등을 이용하기 위해 변환하는 것을 포함하여, 제어 정보뿐만 아니라 양자화된 변환 계수를 수신한다. 스케일러/역변환 유닛(551)은 수집기(aggregator)(555)에 입력될 수 있는 샘플 값을 포함하는 블록을 출력할 수 있다.
일부 경우에, 스케일러/역변환 유닛(551)의 출력 샘플은 인트라 코딩된 블록에 속할 수 있다. 즉, 이전에 재구성된 픽처의 예측 정보를 사용하지 않지만 현재 픽처의 이전에 재구성된 일부의 예측 정보를 사용할 수 있는 블록이다. 이러한 예측 정보는 인트라 픽처 예측 유닛(552)에 의해 제공될 수 있다. 일부 경우에, 인트라 픽처 예측 유닛(552)은 현재 픽처 버퍼(558)로부터 가져온 이미 재구성된 주변 정보를 이용하여 재구성중인 블록과 동일한 크기 및 모양의 블록을 생성한다. 현재 픽처 버퍼(558)는 예를 들어 부분적으로 재구성된 현재 픽처 및/또는 완전히 재구성된 현재 픽처를 버퍼링한다. 수집기(555)는 경우에 따라 인트라 예측 유닛(552)이 생성한 예측 정보를 스케일러/역변환 유닛(551)에 의해 제공되는 출력 샘플 정보에 샘플 단위로 추가한다.
다른 경우에, 스케일러/역변환 유닛(551)의 출력 샘플은 인터 코딩되고 잠재적으로 모션 보상된 블록에 속할 수 있다. 이러한 경우, 모션 보상 예측 유닛(553)은 예측에 사용되는 샘플을 가져 오기 위해 참조 픽처 메모리(557)에 액세스할 수 있다. 블록과 관련된 심볼(521)에 따라 전달된 샘플을 모션 보상한 후, 이러한 샘플은 수집기(555)에 의해 스케일러/역변환 유닛(551)의 출력(이 경우에는 잔차 샘플 또는 잔차 신호)에 추가되어, 출력 샘플 정보를 생성할 수 있다. 모션 보상 예측 유닛(553)이 예측 샘플을 가져오는 참조 픽처 메모리(557) 내의 주소는 모션 벡터에 의해 제어될 수 있으며, 모션 보상 예측 유닛(553)이 사용할 수 있는 심볼(521)의 형태로 예를 들어 X, Y 및 참조 픽처 컴포넌트가 있다. 모션 보상은 또한 서브-샘플 정확한 모션 벡터가 사용 중일 때 참조 픽처 메모리(557)로부터 가져온 샘플 값의 보간, 모션 벡터 예측 메커니즘 등을 포함할 수 있다.
수집기(555)의 출력 샘플은 루프 필터 유닛(556)에서 다양한 루프 필터링 기술의 대상이 될 수 있다. 비디오 압축 기술은 코딩된 비디오 시퀀스(코딩된 비디오 비트 스트림이라고도 함)에 포함된 파라미터에 의해 제어되고 파서(520)로부터의 심볼(521)로서 루프 필터 유닛(556)에 이용 가능하게 되는 인 루프 필터 기술(in-loop filter technologies)을 포함할 수 있다. 그러나 코딩된 픽처 또는 코딩된 비디오 시퀀스의 이전(디코딩 순서로) 부분을 디코딩하는 동안 획득된 메타 정보에 응답할 수 있을 뿐만 아니라 이전에 재구성되고 루프 필터링된 샘플 값에 응답할 수도 있다.
루프 필터 유닛(556)의 출력은 렌더 장치(512)로 출력될 수 있을 뿐만 아니라 미래의 인터 픽처 예측에 사용하기 위해 참조 픽처 메모리(557)에 저장될 수 있는 샘플 스트림일 수 있다.
완전히 재구성된 특정 코딩된 픽처는 나중에 예측을 위한 참조 픽처로 사용할 수 있다. 예를 들어, 현재 픽처에 대응하는 코딩된 픽처가 완전히 재구성되고 코딩된 픽처가 참조 픽처로 식별되면(예를 들어 파서(520)에 의해), 현재 픽처 버퍼(558)는 참조 픽처 메모리(557)의 일부가 될 수 있고, 새로운 현재 픽처 버퍼는 다음 코딩된 픽처의 재구성을 시작하기 전에 재할당될 수 있다.
비디오 디코더(510)는 ITU-T Rec. H.265와 같은 표준에서 미리 정해진 비디오 압축 기술에 따라 디코딩 동작을 수행할 수 있다. 코딩된 비디오 시퀀스는 비디오 압축 기술 또는 표준의 신택스와 비디오 압축 기술에 문서화된 프로파일 모두를 준수한다는 점에서 사용중인 비디오 압축 기술 또는 표준에 의해 지정된 신택스를 따를 수 있다. 특히, 프로필은 비디오 압축 기술 또는 표준에서 사용할 수 있는 모든 도구에서 해당 프로필에서 사용할 수 있는 유일한 도구로 특정 도구를 선택할 수 있다. 또한 컴플라이언스에 필요한 것은 코딩된 비디오 시퀀스의 복잡성이 비디오 압축 기술 또는 표준의 수준에 정의된 범위 내에 있어야 한다는 것이다. 경우에 따라 레벨은 최대 픽처 크기, 최대 프레임 레이트, 최대 재구성 샘플 레이트(예: 초당 메가 샘플로 측정됨), 최대 참조 픽처 크기 등을 제한한다. 레벨별로 설정된 제한은 경우에 따라 코딩된 비디오 시퀀스에서 시그널링된 HRD(Hippothetical Reference Decoder) 버퍼 관리를 위한 HRD 사양 및 메타 데이터를 통해 추가로 제한될 수 있다.
일 실시예에서, 수신기(531)는 인코딩된 비디오와 함께 추가(중복) 데이터를 수신할 수 있다. 추가 데이터는 코딩된 비디오 시퀀스(들)의 일부로 포함될 수 있다. 추가 데이터는 데이터를 적절하게 디코딩하고/하거나 원본 비디오 데이터를 더 정확하게 재구성하기 위해 비디오 디코더(510)에 의해 사용될 수 있다. 추가 데이터는 예를 들어 시간적, 공간적 또는 신호 잡음비(SNR) 향상 계층, 중복 슬라이스, 중복 픽처, 순방향 오류 수정 코드 등의 형태일 수 있다.
도 6은 본 개시의 일 실시예에 따른 비디오 인코더(603)의 블록도를 도시한다. 비디오 인코더(603)는 전자 장치(620)에 포함된다. 전자 장치(620)는 송신기(640)(예를 들어, 송신 회로)를 포함한다. 비디오 인코더(603)는 도 4의 예에서의 비디오 인코더(403) 대신에 사용될 수 있다.
비디오 인코더(603)는 비디오 인코더(603)에 의해 코딩될 비디오 이미지(들)를 캡처할 수 있는 비디오 소스(601)(도 6의 예에서 전자 장치(620)의 일부가 아님)로부터 비디오 샘플을 수신할 수 있다. 다른 예에서, 비디오 소스(601)는 전자 장치(620)의 일부이다.
비디오 소스(601)는 임의의 적절한 비트 깊이(예: 8 비트, 10 비트, 12 비트,…), 모든 색 공간(예: BT.601 Y CrCB, RGB,…) 및 적절한 샘플링 구조(예: Y CrCb 4:2:0, Y CrCb 4:4:4)일 수 있는 디지털 비디오 샘플 스트림의 형태로 비디오 인코더(603)에 의해 코딩될 소스 비디오 시퀀스를 제공할 수 있다. 미디어 서빙 시스템에서 비디오 소스(601)는 미리 준비된 비디오를 저장하는 저장 장치일 수 있다. 픽처 회의 시스템에서, 비디오 소스(601)는 로컬 이미지 정보를 비디오 시퀀스로 캡처하는 카메라일 수 있다. 비디오 데이터는 순차적으로 볼 때 모션을 부여하는 복수의 개별 픽처로 제공될 수 있다. 픽처 자체는 픽셀의 공간적 어레이로 구성될 수 있으며, 각 픽셀은 사용중인 샘플링 구조, 색 공간 등에 따라 하나 이상의 샘플을 포함할 수 있다. 통상의 기술자는 픽셀과 샘플 사이의 관계를 쉽게 이해할 수 있다. 아래 설명은 샘플에 중점을 둔다.
일 실시예에 따르면, 비디오 인코더(603)는 소스 비디오 시퀀스의 픽처를 실시간으로 또는 애플리케이션에 의해 요구되는 임의의 다른 시간 제약하에 코딩된 비디오 시퀀스(643)로 코딩하고 압축할 수 있다. 적절한 코딩 속도를 적용하는 것은 제어기(650)의 기능 중 하나이다. 일부 실시예에서, 제어기(650)는 후술되는 바와 같이 다른 기능 유닛을 제어하고 다른 기능 유닛에 기능적으로 결합된다. 명확성을 위해 결합은 도시되지 않았다. 제어기(650)에 의해 설정되는 파라미터는 속도 제어 관련 파라미터(픽처 스킵, 양자화기, 속도 왜곡 최적화 기술의 람다 값,…), 픽처 크기, 픽처 그룹(GOP) 레이아웃, 최대 모션 벡터 허용 검색 영역, 기타 등등을 포함할 수 있다. 제어기(650)는 특정 시스템 설계에 최적화된 비디오 인코더(603)에 속하는 다른 적절한 기능을 갖도록 구성될 수 있다.
일부 실시예에서, 비디오 인코더(603)는 코딩 루프에서 동작하도록 구성된다. 과도하게 단순화된 설명으로서, 일례에서, 코딩 루프는 소스 코더(630)(예를 들어, 코딩될 입력 픽처에 기초하여 심볼 스트림과 같은 심볼 및 참조 픽처(들)을 생성하는 것을 담당), 및 비디오 인코더(603)에 내장된 (로컬) 디코더(633)를 포함할 수 있다. 디코더(633)는 (심볼과 코딩된 비디오 비트 스트림 간의 압축은 개시된 발명에서 고려되는 비디오 압축 기술에서 무손실이므로) (원격) 디코더가 생성하는 것과 유사한 방식으로 샘플 데이터를 생성하기 위해 심볼을 재구성한다. 재구성된 샘플 스트림(샘플 데이터)은 참조 픽처 메모리(634)에 입력된다. 심볼 스트림의 디코딩이 디코더 위치(로컬 또는 원격)와 무관하게 비트-정확한 결과(bit-exact result)로 이어지므로, 참조 픽처 메모리(634)의 콘텐츠는 로컬 인코더와 원격 인코더 간에 비트 정확(bit exact)이다. 즉, 인코더의 예측 부분은 디코딩 중에 예측을 사용할 때 디코더가 "보는" 것과 정확히 동일한 샘플 값을 참조 픽처 샘플링으로서 "본다". 참조 픽처 동기성(reference picture synchronicity)의 기본 원리(예를 들어 채널 오류로 인해 동기화를 유지할 수 없는 경우 결과 드리프트(resulting drift))는 일부 관련 기술에서도 사용된다.
"로컬" 디코더(633)의 동작은 비디오 디코더(410)와 같은 "원격" 디코더의 동작과 동일할 수 있으며, 이는 이미 도 4와 관련하여 상세하게 설명되었다. 간단히 도 4를 참조하면, 심볼이 이용 가능하고 엔트로피 코더(645) 및 파서(420)에 의해 코딩된 비디오 시퀀스로 심볼의 인코딩 및/또는 디코딩이 무손실될 수 있으므로, 비디오 디코더(410)의 엔트로피 디코딩 부분은 버퍼 메모리(415) 및 파서(420)를 포함하여, 로컬 디코더(633)에서 완전히 구현되지 않을 수 있다.
이 시점에서 관찰할 수 있는 것은 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 모든 디코더 기술이 반드시 상응하는 인코더에 실질적으로 동일한 기능적 형태로 존재해야 한다는 것이다. 이러한 이유로, 개시된 발명은 디코더 동작에 초점을 맞춘다. 인코더 기술에 대한 설명은 포괄적으로 설명된 디코더 기술의 반대이므로 생략할 수 있다. 특정 영역에서만 더 자세한 설명이 필요하며 아래에 제공된다.
동작 동안, 일부 예들에서, 소스 코더(630)는 "참조 픽처"로 지정된 비디오 시퀀스로부터 하나 이상의 이전에 코딩된 픽처를 참조하여 입력 픽처를 예측적으로 코딩하는 모션 보상된 예측 코딩을 수행할 수 있다. 이러한 방식으로, 코딩 엔진(632)은 입력 픽처에 대한 예측 참조(들)로서 선택될 수 있는 입력 픽처의 픽셀 블록과 참조 픽처(들)의 픽셀 블록 간의 차이를 코딩한다.
로컬 비디오 디코더(633)는 소스 코더(630)에 의해 생성된 심볼에 기초하여 참조 픽처로 지정될 수 있는 픽처의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(632)의 동작은 유리하게 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 6에 도시되지 않음)에서 디코딩될 수 있을 때, 재구성된 비디오 시퀀스는 일반적으로 약간의 오류가 있는 소스 비디오 시퀀스의 복제본일 수 있다. 로컬 비디오 디코더(633)는 참조 픽처에 대해 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스를 복제하고, 재구성된 참조 픽처가 참조 픽처 캐시(634)에 저장되게 할 수 있다. 이러한 방식으로, 비디오 인코더(603)는 원단(far-end) 비디오 디코더(전송 오류 없음)에 의해 획득될 재구성된 참조 픽처로서 공통 콘텐츠를 갖는 재구성된 참조 픽처의 사본을 로컬에 저장할 수 있다.
예측기(predictor)(635)는 코딩 엔진(632)에 대한 예측 검색을 수행할 수 있다. 즉, 새로운 픽처를 코딩하기 위해 예측기(635)는 참조 픽처 메모리(634)에서 새로운 픽처에 대한 적절한 예측 참조 역할을 할 수 있는 샘플 데이터(후보 참조 픽셀 블록) 또는 참조 픽처 모션 벡터, 블록 모양 등과 같은 특정 메타 데이터를 검색할 수 있다. 예측기(635)는 적절한 예측 참조를 찾기 위해 샘플 블록 단위로 동작할 수 있다. 일부 경우에, 예측기(635)에 의해 획득된 검색 결과에 의해 결정된 바와 같이, 입력 픽처는 참조 픽처 메모리(634)에 저장된 다수의 참조 픽처로부터 추출된 예측 참조를 가질 수 있다.
제어기(650)는 예를 들어 비디오 데이터를 인코딩 및/또는 디코딩하기 위해 사용되는 파라미터 및 서브 그룹 파라미터의 설정을 포함하는 소스 코더(630)의 코딩 동작을 관리할 수 있다.
전술한 모든 기능 유닛의 출력은 엔트로피 코더(645)에서 엔트로피 코딩을 받을 수 있다. 엔트로피 코더(645)는 호프만(Huffman) 코딩, 가변 길이 코딩, 산술 코딩 등과 같은 기술에 따라 심볼을 무손실 압축함으로써 다양한 기능 유닛에 의해 생성된 심볼을 코딩된 비디오 시퀀스로 변환한다.
송신기(640)는 엔트로피 코더(645)에 의해 생성된 코딩된 비디오 시퀀스(들)를 버퍼링하여 통신 채널(660)을 통한 전송을 준비할 수 있으며, 이는 인코딩된 비디오 데이터를 정장하는 저장 장치에 대한 하드웨어/소프트웨어 링크일 수 있다. 송신기(640)는 비디오 코더(603)로부터 코딩된 비디오 데이터를 전송될 다른 데이터, 예를 들어 코딩된 오디오 데이터 및/또는 보조 데이터 스트림(소스는 도시되지 않음)과 병합할 수 있다.
제어부(650)는 비디오 인코더(603)의 동작을 관리할 수 있다. 코딩 동안, 제어기(650)는 각 코딩된 픽처에 특정 코딩된 픽처 유형을 할당할 수 있으며, 이는 각각의 픽처에 적용될 수 있는 코딩 기술에 영향을 미칠 수 있다. 예를 들어, 픽처는 종종 다음 픽처 유형 중 하나로 지정될 수 있다.
인트라 픽처(I 픽처)는 예측 소스로 시퀀스의 다른 픽처를 사용하지 않고 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱은 예를 들어 "IDR"(Independent Decoder Refresh) 픽처를 포함하여 다양한 유형의 인트라 픽처를 허용한다. 통상의 기술자는 I 픽처의 이러한 변형 및 각각의 응용 및 특징을 알고 있다.
예측 픽처(P 픽처)는 각 블록의 샘플 값을 예측하기 위해 최대 하나의 모션 벡터와 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다.
양방향 예측 픽처(B Picture)는 각 블록의 샘플 값을 예측하기 위해 최대 2개의 모션 벡터 및 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 유사하게, 다중 예측 픽처는 단일 블록의 재구성을 위해 2개 이상의 참조 픽처와 관련 메타 데이터를 사용할 수 있다.
소스 픽처는 일반적으로 공간적으로 복수의 샘플 블록(예를 들어, 각각 4x4, 8x8, 4x8 또는 16x16 샘플 블록)으로 세분화되고 블록 단위로 코딩될 수 있다. 블록은 블록의 각각의 픽처에 적용된 코딩할당에 의해 결정된 대로 다른(이미 코딩된) 블록을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 픽처의 블록은 비-예측적으로 코딩되거나, 동일한 픽처의 이미 코딩된 블록(공간 예측 또는 인트라 예측)을 참조하여 예측적으로 코딩될 수 있다. P 픽처의 픽셀 블록은 하나의 이전에 코딩된 참조 픽처를 참조하여 공간적 예측 또는 시간적 예측을 통해 예측적으로 코딩될 수 있다. B 픽처의 블록은 하나 또는 두 개의 이전에 코딩된 참조 픽처를 참조하여 공간적 예측을 통해 또는 시간적 예측을 통해 예측적으로 코딩될 수 있다.
비디오 인코더(603)는 ITU-T Rec. H.265.와 같은 미리 결정된 비디오 코딩 기술 또는 표준에 따라 코딩 동작을 수행할 수 있다. 그 동작에서, 비디오 인코더(603)는 입력 비디오 시퀀스에서 시간적 및 공간적 중복성을 이용하는 예측 코딩 동작을 포함하는 다양한 압축 동작을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용되는 비디오 코딩 기술 또는 표준에 의해 지정된 신택스를 따를 수 있다.
일 실시예에서, 송신기(640)는 인코딩된 비디오와 함께 추가 데이터를 전송할 수 있다. 소스 코더(630)는 코딩된 비디오 시퀀스의 일부로서 이러한 데이터를 포함할 수 있다. 추가 데이터는 시간/공간/SNR 향상 계층, 중복 픽처 및 슬라이스와 같은 다른 형태의 중복 데이터, SEI 메시지, VUI 파라미터 세트 프래그먼트 등을 포함할 수 있다.
비디오는 시간적 순서로 복수의 소스 픽처(비디오 픽처)로 캡처될 수 있다. 인트라 픽처 예측(종종 인트라 예측으로 축약됨)은 주어진 픽처에서 공간적 상관 관계를 사용하고, 픽처 간 예측은 픽처 간의(시간적 또는 기타) 상관 관계를 사용한다. 예를 들어, 현재 픽처라 불리는 인코딩 및/또는 디코딩 중인 특정 픽처는 블록으로 파티셔닝된다. 현재 픽처의 블록이 이전에 코딩되고 비디오에서 여전히 버퍼링된 참조 픽처의 참조 블록과 유사할 때, 현재 픽처의 블록은 모션 벡터라고 하는 벡터로 코딩될 수 있다. 모션 벡터는 참조 픽처에서 참조 블록을 가리키며, 여러 참조 픽처가 사용중인 경우 참조 픽처를 식별하는 3차원을 가질 수 있다.
일부 실시예에서, 이중 예측 기술(bi-prediction technique)이 인터 픽처 예측에 사용될 수 있다. 이중 예측 기술에 따르면, 비디오에서 현재 픽처에 대해 디코딩 순서가 모두 선행된 제1 참조 픽처 및 제2 참조 픽처와 같은 2개의 참조 픽처(하지만 각각 디스플레이 순서에서 과거 및 미래일 수 있음)가 사용된다. 현재 픽처의 블록은 제1 참조 픽처의 제1 참조 블록을 가리키는 제1 모션 벡터 및 제2 참조 픽처의 제2 참조 블록을 가리키는 제2 모션 벡터에 의해 코딩될 수 있다. 블록은 제1 참조 블록과 제2 참조 블록의 조합에 의해 예측될 수 있다.
또한, 인터 픽처 예측에 병합 모드 기술을 사용하여 코딩 효율을 향상시킬 수 있다.
본 개시의 일부 실시예에 따르면, 인터 픽처 예측 및 인트라 픽처 예측과 같은 예측은 블록 단위로 수행된다. 예를 들어, HEVC 표준에 따르면, 비디오 픽처 시퀀스 내의 픽처는 압축을 위해 코딩 트리 단위(CTU)로 파티셔닝되고 픽처의 CTU는 64x64 픽셀, 32x32 픽셀 또는 16x16 픽셀과 같은 동일한 크기를 갖는다. 일반적으로 CTU에는 루마 CTB 1개와 크로마 CTB 2개인 3개의 코딩 트리 블록(CTB)이 포함된다. 각 CTU는 반복적으로 하나 또는 복수의 코딩 단위(CU)로 쿼드 트리 분할될 수 있다. 예를 들어 64x64 픽셀의 CTU는 64x64 픽셀의 CU 1개 또는 32x32 픽셀의 4개 CU 또는 16x16 픽셀의 16개 CU로 분할될 수 있다. 일례에서, 각 CU는 인터 예측 유형 또는 인트라 예측 유형과 같은 CU에 대한 예측 유형을 결정하기 위해 분석된다. CU는 시간적 및/또는 공간적 예측 가능성에 따라 하나 이상의 예측 단위(PU)로 분할된다. 일반적으로 각 PU는 루마 예측 블록(PB)과 두 개의 크로마 PB를 포함한다. 일 실시예에서, 코딩(인코딩 및/또는 디코딩)에서의 예측 동작은 예측 블록의 단위로 수행된다. 예측 블록의 예로서 루마 예측 블록을 사용하면, 예측 블록은 8x8 픽셀, 16x16 픽셀, 8x16 픽셀, 16x8 픽셀 등과 같은 픽셀에 대한 값의 행렬(예를 들어, 루마 값)을 포함한다.
도 7은 본 개시의 다른 실시예에 따른 비디오 인코더(703)의 다이어그램을 도시한다. 비디오 인코더(703)는 비디오 픽처 시퀀스에서 현재 비디오 픽처 내의 샘플 값의 처리 블록(예를 들어, 예측 블록)을 수신하고 처리 블록을 코딩된 픽처의 일부인 코딩된 비디오 시퀀스의 일부인 코딩된 픽처의 처리 블록을 인코딩하도록 구성된다. 일 예에서, 비디오 인코더(703)는 도 4의 예의 비디오 인코더(403) 대신에 사용된다.
HEVC 예에서, 비디오 인코더(703)는 8x8 샘플의 예측 블록 등과 같은 처리 블록에 대한 샘플 값의 행렬을 수신한다. 비디오 인코더(703)는 처리 블록이 예를 들어 레이트 왜곡 최적화를 사용하여 인트라 모드, 인터 모드 또는 양방향 예측 모드를 사용하여 가장 잘 코딩되는지를 결정한다. 처리 블록이 인트라 모드에서 코딩될 때, 비디오 인코더(703)는 처리 블록을 코딩된 픽처로 인코딩하기 위해 인트라 예측 기술을 사용할 수 있고, 처리 블록이 인터 모드 또는 이중 예측 모드로 코딩될 때, 비디오 인코더(703)는 처리 블록을 코딩된 픽처로 인코딩하기 위해 각각 인터 예측 또는 이중 예측 기술을 사용할 수 있다. 특정 비디오 코딩 기술에서, 병합 모드는 예측기 외부의 코딩된 모션 벡터 컴포넌트의 이점 없이 모션 벡터가 하나 이상의 모션 벡터 예측자로부터 유도되는 인터 픽처 예측 서브 모드일 수 있다. 특정 다른 비디오 코딩 기술에서, 해당 블록에 적용 가능한 모션 벡터 컴포넌트가 존재할 수 있다. 예에서, 비디오 인코더(703)는 처리 블록의 모드를 결정하기 위한 모드 결정 모듈(도시되지 않음)과 같은 다른 컴포넌트를 포함한다.
도 7의 예에서, 비디오 인코더(703)는 인터 인코더(730), 인트라 인코더(722), 잔차 계산기(723), 스위치(726), 잔차 인코더(724), 일반 제어기(721)를 포함하고, 도 7에 도시된 바와 같이 함께 결합된 엔트로피 인코더(725)를 포함한다.
인터 인코더(730)는 현재 블록(예: 처리 블록)의 샘플을 수신하고, 블록을 참조 픽처 내의 하나 이상의 참조 블록(예: 이전 픽처 및 이후 픽처의 블록)과 비교하고, 인터 예측 정보(예를 들어, 인터 인코딩 기술에 따른 중복 정보의 설명, 모션 벡터, 병합 모드 정보)는 임의의 적절한 기술을 사용하여 인터 예측 정보를 기반으로 인터 예측 결과(예를 들어, 예측 블록)를 계산한다. 일부 예에서, 참조 픽처는 인코딩된 비디오 정보에 기초하여 디코딩되는 디코딩된 참조 픽처이다.
인트라 인코더(722)는 현재 블록(예를 들어, 처리 블록)의 샘플을 수신하고, 일부 경우, 그 블록을 동일한 픽처에서 이미 코딩된 블록과 비교하고, 변환 후 양자화된 계수를 생성하고, 일부 경우에는 또한 인트라 예측 정보(예를 들어, 하나 이상의 인트라 인코딩 기술에 따른 인트라 예측 방향 정보)를 생성한다. 일 예에서, 인트라 인코더(722)는 또한 동일한 픽처의 인트라 예측 정보 및 참조 블록에 기초하여 인트라 예측 결과(예를 들어, 예측 블록)를 계산한다.
일반 제어기(721)는 일반 제어 데이터를 결정하고 일반 제어 데이터에 기초하여 비디오 인코더(703)의 다른 컴포넌트를 제어하도록 구성된다. 일 예에서, 일반 제어기(721)는 블록의 모드를 결정하고, 모드에 따라 제어 신호를 스위치(726)에 제공한다. 예를 들어, 모드가 인트라 모드인 경우, 일반 제어부(721)는 스위치(726)를 제어하여 잔차 계산기(723)에서 사용할 인트라 모드 결과를 선택하고 엔트로피 인코더(725)를 제어하여 인트라 예측 정보를 선택하고 비트 스트림에 인트라 예측 정보를 포함시키도록 하고; 모드가 인터 모드인 경우, 일반 제어기(721)는 스위치(726)를 제어하여 잔차 계산기(723)에서 사용할 인터 예측 결과를 선택하고, 엔트로피 인코더(725)를 제어하여 인터 예측 정보를 선택하여 인터 예측 정보를 비트 스트림에 포함시키도록 한다.
잔차 계산기(723)는 수신된 블록과 인트라 인코더(722) 또는 인터 인코더(730)로부터 선택된 예측 결과 사이의 차이(잔차 데이터)를 계산하도록 구성된다. 잔차 인코더(724)는 잔차 데이터에 기초하여 동작하여 잔차 데이터를 인코딩하여 변환 계수를 생성하도록 구성된다. 일례에서, 잔차 인코더(724)는 잔차 데이터를 공간 도메인에서 주파수 도메인으로 변환하고 변환 계수를 생성하도록 구성된다. 변환 계수는 양자화된 변환 계수를 얻기 위해 양자화 처리를 거친다. 다양한 실시예에서, 비디오 인코더(703)는 또한 잔차 디코더(728)를 포함한다. 잔차 디코더(728)는 역변환을 수행하고 디코딩된 잔차 데이터를 생성하도록 구성된다. 디코딩된 잔차 데이터는 인트라 인코더(722) 및 인터 인코더(730)에 의해 적절하게 사용될 수 있다. 예를 들어, 인터 인코더(730)는 디코딩된 잔차 데이터 및 인터 예측 정보에 기초하여 디코딩된 블록을 생성할 수 있고, 인트라 인코더(722)는 디코딩된 잔차 데이터 및 인트라 예측 정보에 기초하여 디코딩된 블록을 생성할 수 있다. 디코딩된 블록은 디코딩된 픽처를 생성하기 위해 적절하게 처리되고 디코딩된 픽처는 메모리 회로(도시되지 않음)에서 버퍼링될 수 있고 일부 예들에서 참조 픽처로서 사용될 수 있다.
엔트로피 인코더(725)는 인코딩된 블록을 포함하도록 비트 스트림을 포맷하도록 구성된다. 엔트로피 인코더(725)는 HEVC 표준과 같은 적합한 표준에 따라 다양한 정보를 포함하도록 구성된다. 일 예에서, 엔트로피 인코더(725)는 일반 제어 데이터, 선택된 예측 정보(예를 들어, 인트라 예측 정보 또는 인터 예측 정보), 잔차 정보 및 기타 적절한 정보를 비트 스트림에 포함하도록 구성된다. 개시된 발명에 따르면, 인터 모드 또는 양방향 예측 모드의 병합 서브 모드에서 블록을 코딩할 때, 잔차 정보가 없음에 유의한다.
도 8은 본 개시의 다른 실시예에 따른 비디오 디코더(810)의 다이어그램을 도시한다. 비디오 디코더(810)는 코딩된 비디오 시퀀스의 일부인 코딩된 픽처를 수신하고, 코딩된 픽처를 디코딩하여 재구성된 픽처를 생성하도록 구성된다. 일 예에서, 비디오 디코더(810)는 도 4의 예에서 비디오 디코더(310) 대신에 사용된다.
도 8의 예에서, 비디오 디코더(810)는 도 8에 도시된 바와 같이 함께 연결된 엔트로피 디코더(871), 인터 디코더(880), 잔차 디코더(873), 재구성 모듈(874) 및 인트라 디코더(872)를 포함한다.
엔트로피 디코더(871)는 코딩된 픽처로부터 코딩된 픽처를 구성하는 신택스 요소를 나타내는 특정 심볼을 재구성하도록 구성될 수 있다. 이러한 심볼은 예를 들어 블록이 코딩되는 모드(예를 들어, 인트라 모드, 인터 모드, 이중 예측 모드, 병합 서브모드(merge submode)의 후자의 두 가지 또는 다른 서브모드), 인트라 디코더(872) 또는 인터 디코더(880)에 의해 각각 예측에 사용되는 특정 샘플 또는 메타 데이터를 식별할 수 있는 예측 정보(인트라 예측 정보 또는 인터 예측 정보), 예컨대 양자화된 변환 계수의 형태로 된 잔차 정보 등을 포함할 수 있다. 일 예에서, 예측 모드가 인터 또는 이중 예측 모드인 경우, 인터 예측 정보는 인터 디코더(880)에 제공되고; 예측 유형이 인트라 예측 유형인 경우, 인트라 예측 정보는 인트라 디코더(872)에 제공된다. 잔차 정보는 역양자화될 수 있으며 잔차 디코더(873)에 제공된다.
인터 디코더(880)는 인터 예측 정보를 수신하고 인터 예측 정보에 기초하여 인터 예측 결과를 생성하도록 구성된다.
인트라 디코더(872)는 인트라 예측 정보를 수신하고 인트라 예측 정보에 기초하여 예측 결과를 생성하도록 구성된다.
잔차 디코더(873)는 역양자화를 수행하여 역양자화된 변환 계수를 추출하고 역양자화된 변환 계수를 처리하여 주파수 도메인에서 공간 도메인으로 잔차를 변환하도록 구성된다. 잔차 디코더(873)는 또한 특정 제어 정보(양자화기 파라미터(QP, Quantizer Parameter)를 포함하도록)를 요구할 수 있으며, 해당 정보는 엔트로피 디코더(871)에 의해 제공될 수 있다(데이터 경로는 저용량 제어 정보일 수 있으므로 표시되지 않음).
재구성 모듈(874)은 공간 도메인에서 잔차 디코더(873)에 의해 출력된 잔차 및 예측 결과(경우에 따라 인터 또는 인트라 예측 모듈에 의해 출력됨)를 결합하여, 재구성된 블록을 형성하도록 구성되고, 재구성된 블록은 재구성된 픽처의 일부일 수 있으며, 재구성된 픽처는 또한 재구성된 비디오의 일부일 수 있다. 디블로킹(deblocking) 동작 등과 같은 다른 적절한 동작이 시각적 품질을 향상시키기 위해 수행될 수 있다는 점에 유의한다.
비디오 인코더(403, 603 및 703) 및 비디오 디코더(410, 510 및 810)는 임의의 적절한 기술을 사용하여 구현될 수 있음에 유의한다. 일 실시예에서, 비디오 인코더(403, 603, 703) 및 비디오 디코더(410, 510 및 810)는 하나 이상의 집적 회로를 사용하여 구현될 수 있다. 다른 실시예에서, 비디오 인코더(403, 603 및 703) 및 비디오 디코더(410, 510 및 810)는 소프트웨어 명령을 실행하는 하나 이상의 프로세서를 사용하여 구현될 수 있다.
본 개시의 관점들은 쿼드-트리(QT) 분할 및/또는 이와 유사한 것을 위해 코딩 블록(CB) 크기가 제한되는 방법과 같은, 비디오 코덱에서 파티셔닝하기 위한 코딩 도구에 관한 것이다. 또한, 본 개시의 관점들은 크로마 코딩 블록의 최소 크기, 크로마 QT 노드의 최소 크기 등을 유도하는 방법들을 포함한다.
비트스트림을 통해 제공되는 소스 및 디코딩된 픽처 간의 예시적인 관계가 아래에 설명된다. 비트스트림에 의해 표현되는 비디오 소스는 디코딩 순서의 픽처 시퀀스일 수 있다. 소스 및 디코딩된 픽처는 각각 (1) 루마(Y) 전용(모노크롬), (2) 루마 및 2개의 크로마(예: YCbCr 또는 YCgCo), (3) 녹색, 청색 및 적색(GBR, RGB라고도 함), 및 (4) 기타 지정되지 않은 모노크롬 또는 삼중 자극 색상 샘플링을 나타내는 배열(예: YZX, XYZ라고도 함)과 같은 하나 이상의 샘플 어레이를 포함할 수 있다.
본 개시에서의 표기법 및 용어의 편의를 위해, 상기 기재된 어레이와 연관된 변수 및 용어는 루마(또는 L 또는 Y) 및 크로마로 지칭될 수 있고, 여기서 2개의 크로마 어레이는 사용 중인 실제 색상 표현 방법에 관계없이 Cb 및 Cr로 지칭될 수 있다. 사용 중인 실제 색상 표현 방법은 신택스로 추가로 표시할 수 있다.
루마 및 크로마 어레이(들)(또는 블록)와 같은 다중 샘플 어레이가 소스 및 디코딩된 픽처에 포함되는 경우, 크로마 수평 서브샘플링 인자(예: SubWidthC) 및 크로마 수직 서브샘플링과 같은 변수 크로마 블록(들)과 대응하는 루마 블록 사이의 인자(예를 들어, SubHeightC)가 지정될 수 있다. 변수 SubWidthC 및 SubHeightC(크로마 서브샘플링 비율이라고도 함)는 예를 들어 크로마 서브샘플링 포맷(또한 크로마 포맷이라고도 하며, 예를 들어, chroma_format_idc에 의해 지정됨) 및 플래그(예를 들어, Separate_colour_plane_flag)(선택 사항)을 통해 지정되는 크로마 포맷 샘플링 구조에 따라 (도 9에 도시된) 표 1에 지정될 수 있다. chroma_format_idc, SubWidthC 및 SubHeightC의 다른 값도 지정될 수 있다.
도 9를 참조하면, 크로마 포맷 인덱스(예, chroma_format_idc)가 0인 경우, 크로마 서브샘플링 포맷은 명목상 루마 어레이로 간주되는 하나의 샘플 어레이만을 갖는 모노크롬 샘플링에 대응하는 '모노크롬(Monochrome)'일 수 있다.
크로마 포맷 인덱스가 1일 때, 크로마 서브샘플링 포맷은 4:2:0 또는 4:2:0 샘플링일 수 있고, 2개의 크로마 어레이 각각은 대응하는 루마 어레이의 높이 및 폭의 절반을 갖는다.
크로마 포맷 인덱스가 2일 때, 크로마 서브샘플링 포맷은 4:2:2 또는 4:2:2 샘플링일 수 있으며, 2개의 크로마 어레이 각각은 루마 어레이의 동일한 높이 및 절반 너비를 갖는다.
크로마 포맷 인덱스가 3일 때, 크로마 서브샘플링 포맷은 4:4:4 또는 4:4:4 샘플링일 수 있고, 별도의 색상 플레인 플래그(예를 들어, Separate_colour_plane_flag)의 값에 따라, 다음이 적용된다: (i) 분리된 색상 평면 플래그가 0과 같으면 두 크로마 어레이 각각은 루마 어레이와 동일한 높이와 너비를 갖는다; (ii) 그렇지 않은 경우, 개별 색상 평면 플래그가 1과 같으면 3개의 색상 평면을 모노크롬 샘플 픽처으로 별도로 처리할 수 있다.
비디오 시퀀스의 루마 및 크로마 어레이의 샘플 각각의 표현에 사용되는 비트 수는 8비트 내지 16비트 범위일 수 있으며, 루마 어레이에 사용되는 비트 수 크로마 어레이에 사용된 비트 수와 다를 수 있다.
도 10a 내지 도 10c는 본 개시의 실시예에 따른 각각의 픽처에서 대응하는 루마 및 크로마 샘플의 공칭 수직 및 수평 상대 위치를 도시한다. 대체 크로마 샘플 상대 위치는 비디오 사용성 정보에 표시될 수 있다.
10a를 참조하면, 크로마 포맷 인덱스(예를 들어, chroma_format_idc)의 값이 1과 동일한 것은 4:2:0을 나타낼 수 있다. 도 10a는 픽처에서 대응하는 루마 및 크로마 샘플의 공칭 수직 및 수평 위치의 예를 도시한다.
도 10b를 참조하면, 크로마 포맷 인덱스의 값이 2와 동일한 것은 4:2:2를 나타낼 수 있고, 따라서 크로마 샘플들은 픽처에서 대응하는 루마 샘플들과 함께 위치(또는 공동 위치)된다. 도 10b는 픽처에서 대응하는 루마 및 크로마 샘플의 공칭 수직 및 수평 위치의 예를 도시한다.
도 10c를 참조하면, 크로마 포맷 인덱스의 값이 3과 동일하면, 모든 어레이 샘플(예를 들어, 루마 어레이 샘플 및 2개의 크로마 어레이 샘플)이 공동 위치(또는 공동 위치)될 수 있다. 도 10c는 픽처에서 대응하는 루마 및 크로마 샘플의 공칭 수직 및 수평 위치의 예를 도시한다.
VVC에서와 같은 파티셔닝의 예가 아래에서 설명된다. 일 실시예에서, 픽처는 CTU로 분할될 수 있다. 픽처는 일련의 CTU로 나눌 수 있다. 3개의 샘플 어레이를 갖는 픽처의 경우, CTU는 크로마 샘플의 2개의 대응 블록(예를 들어, 2개의 크로마 블록)과 함께 루마 샘플의 N×N 블록(예를 들어, 루마 블록)을 포함할 수 있다. 도 11은 본 개시의 일 실시예에 따라 CTU(1101)로 분할된 픽처(1100)의 예를 도시한다. 예에서 CTU에서 허용되는 최대 루마 블록 크기는 128×128로 지정된다. 예에서, 루마 변환 블록의 최대 크기는 64×64이다.
픽처는 슬라이스, 타일 및/또는 브릭으로 분할될 수 있다. 픽처는 하나 이상의 타일 행과 하나 이상의 타일 열로 나눌 수 있다. 타일은 픽처의 직사각형 영역을 덮는 일련의 CTU일 수 있다. 타일은 하나 이상의 브릭으로 나눌 수 있으며, 각 브릭에는 타일 내에 여러 CTU 행이 포함될 수 있다. 여러 개의 브릭으로 분할되지 않은 타일을 브릭이라고도 한다. 그러나 타일의 진정한 하위 집합인 브릭은 타일이라고 하지 않는다.
슬라이스는 픽처의 타일 수 또는 타일의 브릭 수를 포함할 수 있다. 래스터-스캔 슬라이스 모드와 직사각형 슬라이스 모드와 같은 두 가지 슬라이스 모드가 지원될 수 있다. 래스터-스캔 슬라이스 모드에서 슬라이스는 픽처의 타일 래스터-스캔에서 타일 시퀀스를 포함할 수 있다. 직사각형 슬라이스 모드에서 슬라이스는 픽처의 직사각형 영역을 집합적으로 형성할 수 있는 많은 수의 픽처 브릭을 포함할 수 있다. 직사각형 슬라이스 내의 브릭은 슬라이스의 브릭 래스터-스캔 순서이다.
픽처는 타일과 래스터-스캔 슬라이스로 분할될 수 있다. 도 12는 본 개시의 실시예에 따른 픽처(1200)의 래스터-스캔 슬라이스 분할의 예를 도시한다. 픽처(1200)는 12개의 타일(1201)-(1212)(예를 들어, 3개의 열(또는 타일 열) 및 4개의 행(또는 타일 행)의 12개 타일)) 및 3개의 래스터-스캔 슬라이스(1221)-(1223)로 분할될 수 있다. 예를 들어, 래스터-스캔 슬라이스(1221)는 타일(1201)-(1202)을 포함하고, 래스터-스캔 슬라이스(1222)는 타일(1203)-(1207)을 포함하고, 래스터-스캔 슬라이스(1223)는 타일(1208)-(1212)을 포함한다.
픽처는 타일 및 직사각형 슬라이스로 분할될 수 있다. 도 13은 본 개시의 일 실시예에 따른 픽처(1300)의 직사각형 슬라이스 분할의 예를 도시한다. 픽처(1300)는 24개의 타일(1301)-(1324)(예를 들어, 6개의 열(또는 타일 열) 및 4개의 행(또는 타일 행)의 24개 타일)) 및 9개의 직사각형 슬라이스(1331)-(1339)로 분할될 수 있다. 예를 들어, 직사각형 슬라이스(1331)는 타일(1301)-(1302)을 포함하고; 직사각형 슬라이스(1332)는 타일(1303)-(1304)을 포함하고; 직사각형 슬라이스(1333)는 타일(1305)-(1306)을 포함하고; 직사각형 슬라이스(1334)는 타일(1307), (1308), (1313) 및 (1314)를 포함하고; 직사각형 슬라이스(1335)는 타일(1309), (1310), (1315) 및 (1316)을 포함하고; 직사각형 슬라이스(1336)는 타일(1311), (1312), (1317) 및 (1318)을 포함하고; 직사각형 슬라이스(1337)는 타일(1319)-(1320)을 포함하고; 직사각형 슬라이스(1338)는 타일(1321)-(1322)을 포함하고; 직사각형 슬라이스(1339)는 타일(1323)-(1324)을 포함한다.
픽처는 타일, 브릭 및 직사각형 슬라이스로 분할될 수 있다. 도 14는 본 개시의 실시예에 따라 타일, 브릭(1401)-(1411), 및 직사각형 슬라이스(1421)-(1424)로 분할된 픽처(1400)의 예를 도시한다. 픽처(1400)는 4개의 타일(예: 2개의 타일 열 및 2개의 타일 행), 11개의 브릭(1401)-(1411) 및 4개의 직사각형 슬라이스(1421)-(1424)로 나눌 수 있다. 왼쪽 상단 타일은 브릭 1개(1401)를 포함하고, 오른쪽 상단 타일은 브릭 5개(1402)-(1406)을 포함하고, 왼쪽 하단 타일은 브릭 2개(1407)-(1408)을 포함하고, 오른쪽 하단 타일은 3개의 브릭(1409)-(1411)을 포함한다. 직사각형 슬라이스(1421)는 브릭(1401), (1407) 및 (1408)을 포함한다. 직사각형 슬라이스(1422)는 브릭(1402) 및 (1403)을 포함하고; 직사각형 슬라이스(1423)는 브릭(1404)-(1406)을 포함하고; 직사각형 슬라이스(1424)는 브릭(1409)-(1411)을 포함한다.
CTU는 트리 구조를 사용하여 분할될 수 있다. HEVC에서와 같은 실시예에서, CTU는 4차 트리 또는 코딩 트리로 표시된 QT 구조를 사용하여 다양한 로컬 특성에 적응함으로써 CU(들)로 분할될 수 있다. 인터 픽처(또는 시간) 또는 인트라 픽처(또는 공간) 예측을 사용하여 픽처 영역을 코딩할지는 리프 CU 레벨에서 결정될 수 있다. 각 리프 CU는 PU 분할 유형에 따라 1개, 2개 또는 4개의 PU로 더 분할될 수 있다. PU 내부에서도 동일한 예측 과정이 적용될 수 있으며, 해당 정보는 PU 단위로 디코더로 전송될 수 있다. PU 분할 유형에 기반한 예측 프로세스를 적용하여 잔차 블록을 얻은 후, 리프 CU는 CU에 대한 코딩 트리와 유사한 QT 구조에 따라 변환 단위(TU)로 분할될 수 있다. HEVC 구조에서와 같은 예에서, CU, PU, 및 TU와 같은 다중 파티션 유닛은 상이할 수 있다.
VVC와 같은 일 실시예에서, 이진 및 삼항 분할 구조를 사용하는 중첩 다중 유형 트리를 갖는 쿼드트리는 다중 분할 단위 유형의 개념을 대체할 수 있고, 따라서 CU, PU 및 TU의 분리를 제거할 수 있고 CU 파티션 모양에 대해 더 많은 유연성을 지원할 수 있다. 일부 예들에서, CU가 최대 변환 길이에 대해 너무 큰 크기를 가질 때, CU, PU, 및/또는 TU에 대해 상이한 크기들이 사용될 수도 있다. 코딩 트리 구조에서 CU는 정사각형 또는 직사각형 모양을 가질 수 있다. CTU는 먼저 QT 구조로 분할될 수 있다. 그런 다음 QT 리프 노드는 MTT(다중 유형 트리) 구조로 더 분할될 수 있다. 도 15는 본 개시의 실시예에 따른 MTT 구조에서 예시적인 분할 유형(1521)-(1524)을 도시한다. 분할 유형(1521)-(1524)은 수직 이진 분할(SPLIT_BT_VER)(1521), 수평 이진 분할(SPLIT_BT_HOR)(1522), 수직 삼진 분할(SPLIT_TT_VER)(1523) 및 수평 삼진 분할(SPLIT_TT_HOR)(1524)을 포함할 수 있다. MTT 리프 노드는 CU로 지칭될 수 있으며, CU가 최대 변환 길이에 비해 너무 크지 않는 한, 분할(또는 CU)은 추가 분할 없이 예측 및 변환 처리에 사용될 수 있다. 따라서, 대부분의 경우 CU, PU 및 TU는 중첩된 MTT 코딩 블록 구조를 갖는 QT에서 동일한 블록 크기를 가질 수 있다. 지원되는 최대 변환 길이가 CU의 색상 구성 요소의 너비 또는 높이보다 작은 경우 한 가지 예외가 발생한다.
도 16은 본 개시의 일 실시예에 따른 내포된 MTT 코딩 트리 구조를 갖는 QT에 대한 분할 플래그 시그널링의 예를 도시한다. 도 16은 내포된 MTT 코딩 트리 구조를 갖는 QT에서의 파티션 분할 정보의 예시적인 시그널링 메커니즘을 도시한다. CTU와 같은 노드(1611)는 QT의 루트로 취급될 수 있으며 QT 분할 플래그(예: qt_split_flag)가 참(예: 값 '1')일 때 QT 구조에 의해 QT 노드로 먼저 분할되어 QT 노드(1621)를 생성한다. QT 분할 플래그(e.g., qt_split_flag)가 거짓(예: 값 '0')인 경우, 노드(1611)는 QT 분할을 사용하여 분할되지 않으므로 QT 리프 노드(1611)라고 할 수 있다. 각 QT 리프 노드(이를 허용할 만큼 충분히 큰 경우)는 MTT 구조에 의해 추가로 분할될 수 있으며 MTT 노드라고 할 수 있다. 도 16을 참조하면, QT 리프 노드 또는 MTT 노드(1611)는 MTT 분할을 사용하여 더 분할될 수 있다.
MTT 구조에서, 노드(1611)가 더 분할되었는지를 나타내기 위해 제1 플래그(예를 들어, mtt_split_cu_flag)가 시그널링될 수 있다. 노드(1611)가 분할되지 않은 경우(예를 들어, mtt_split_cu_flag가 '0'인 경우), 노드(1611)는 MTT 리프 노드(1611)로 지칭된다. 노드(1611)가 더 분할되면(예를 들어, mtt_split_cu_flag가 '1'인 경우), 제2 플래그(예를 들어, mtt_split_cu_vertical_flag)가 분할 방향(수평 분할 또는 수직 분할)을 지시하도록 시그널링될 수 있고, 그런 다음 제3 플래그(예를 들어, mtt_split_cu_binary_flag)는 분할이 이진 분할인지 삼항 분할인지를 나타내기 위해 시그널링될 수 있다. 따라서, MTT 노드(1651)는 노드(1611)의 수직 이진 분할(예를 들어, BT_VER_split)에 기초하여 생성되고, MTT 노드(1652)는 노드(1611)의 수직 삼항 분할(예를 들어, TT_VER_split)에 기초하여 생성되고, MTT 노드(1653)는 노드(1611)의 수평 이진 분할(예: BT_HOR_split)에 기초하여 생성되고 MTT 노드(1654)는 노드(1611)의 수평 삼진 분할(예: TT_HOR_split)에 기초하여 생성된다.
도 17을 참조하면, 제2 플래그(예를 들어, mtt_split_cu_vertical_flag) 및 제3 플래그(예를 들어, mtt_split_cu_binary_flag)의 값에 기초하여, CU의 MTT 분할 모드(예를 들어, MttSplitMode)는 표 2와 같이 유도될 수 있다. 분할 모드는 수직 이진 분할(예: BT_VER_split 또는 SPLIT_BT_VER), 수직 삼진 분할(예: TT_VER_split 또는 SPLIT_TT_VER), 수평 이진 분할(예: BT_HOR_split 또는 SPLIT_BT_HOR) 및 수평 삼진 분할(예: TT_ HOR_split 또는 SPLIT_TT_HOR)을 포함할 수 있다.
도 18은 본 개시의 일 실시예에 따른 중첩된 MTT 코딩 블록 구조를 갖는 QT의 예를 도시한다. CTU(1800)는 QT 및 중첩된 MTT 코딩 블록 구조를 갖는 다중 CU로 분할될 수 있으며, 여기서 굵은 블록 에지는 QT 분할을 나타내고 나머지 에지는 MTT 분할을 나타낸다. 중첩된 MTT 파티션이 있는 QT는 CU를 포함하는 콘텐츠 적응형 코딩 트리 구조를 제공할 수 있다. CU의 크기는 적절한 크기일 수 있다. CU의 크기는 루마 샘플 단위로 CTU(1800)만큼 크거나 4x4만큼 작을 수 있다. 일 예에서, 4:2:0 크로마 포맷의 경우, 최대 크로마 CB 크기는 64x64일 수 있고 최소 크로마 CB 크기는 2x2일 수 있다.
VVC와 같은 예에서, 지원되는 최대 루마 변환 크기는 64x64이고 지원되는 최대 크로마 변환 크기는 32x32이다. CB의 너비 또는 높이가 최대 변환 너비 또는 높이보다 크면 CB를 가로 및/또는 세로 방향으로 자동 분할하여 각 방향의 변환 크기 제한을 충족할 수 있다.
다음 파라미터는 중첩된 MTT 코딩 트리 방식을 갖는 QT에 대한 시퀀스 파라미터 세트(SPS) 신택스 요소에 의해 정의 및 지정될 수 있다. 다음 파라미터는 (1) QT 트리의 루트 노드 크기인 CTU 크기, (2) 최소 허용 QT 리프 노드 크기인 MinQTSize, (3) 최대 허용 BT 루트 노드 크기인 MaxBtSize, (4) 최대 허용 TT 루트 노드 크기인 MaxTtSize, (5) QT 리프에서 분할되는 MTT의 최대 허용 계층 깊이인 MaxMttDepth, (6) 최소 허용 BT 리프 노드인 MinBtSize 크기, (7) 최소 허용 TT 리프 노드 크기인 MinTtSize 등을 포함할 수 있다.
내포된 MTT 코딩 트리 구조를 갖는 QT의 예에서, CTU 크기는 4:2:0 크로마 샘플의 2개의 대응하는 64x64 블록을 갖는 128x128 루마 샘플로 설정되고, MinQTSize는 16×16으로 설정되고, MaxBtSize는 128×128로 설정되고, MaxTtSize는 64×64로 설정되고, MinBtSize와 MinTtSize(너비와 높이 모두)는 4×4로 설정되고, MaxMttDepth는 4로 설정된다. QT 파티셔닝 QT 리프 노드를 생성하기 위해 먼저 CTU에 적용할 수 있다. QT 리프 노드는 16×16(예: MinQTSize) 내지 128×128(예: CTU 크기)의 크기를 가질 수 있다. 예를 들어, QT 리프 노드가 128×128인 경우, QT 리프 노드는 크기가 MaxBtSize 및 MaxTtSize(예: 64x64)를 초과하므로 BT에 의해 더 이상 분할되지 않는다. 그렇지 않으면, QT 리프 노드는 MTT에 의해 더 분할될 수 있다. 따라서 QT 리프 노드도 MTT의 루트 노드가 될 수 있으며 0의 MTT 깊이(예: MttDepth)를 가질 수 있다. MTT 깊이가 MaxMttDepth(예: 4)에 도달하면 더 이상의 분할은 고려되지 않는다. MTT 노드가 MinBtSize와 동일하고 2xMinTtSize보다 작거나 같은 너비를 가질 때 더 이상의 수평 분할은 고려되지 않는다. 유사하게, MTT 노드가 MinBtSize와 동일하고 2×MinTtSize보다 작거나 같은 높이를 가질 때, 더 이상의 수직 분할은 고려되지 않는다.
일 실시예에서, VVC 하드웨어 디코더에서와 같이 64x64 루마 블록 및 32x32 크로마 파이프라이닝 설계를 허용하기 위해, 루마 코딩 블록의 너비 또는 높이가 제1 임계값(예를 들어, 64)은 도 19에 도시된 바와 같다. 따라서, 128x128 루마 코딩 블록과 같이 64보다 큰 루마 코딩 블록에는 TT 분할이 적용되지 않는다. TT 분할은 크로마 코딩 블록의 너비 또는 높이가 제2 임계값(예: 32)보다 큰 경우에도 금지될 수 있다. 도 19를 참조하면, 제1 임계값은 64이고, 루마 코딩 블록(1911)-(1915)의 크기가 128x128이므로 루마 코딩 블록(1911)-(1915)에서 TT 분할이 금지된다. 예를 들어, 루마 코딩 블록(1911)은 분할되지 않고 루마 코딩 블록(1912)-(1913)은 BT를 사용하여 분할된다. 루마 코딩 블록(1914)-(1915)은 64x64 블록으로 먼저 QT 분할된다. 이어서, TT 분할은 64x64 크기의 루마 코딩 블록(1921)-(1922)에 적용될 수 있다.
일 실시예에서, 코딩 트리 방식은 루마 성분 및 대응하는 크로마 성분(들)이 별개의 블록 트리 구조를 가질 수 있는 능력을 지원한다. 예에서, P 및 B 슬라이스의 경우 CTU의 루마 및 크로마 CTB는 동일한 코딩 트리 구조(예: 단일 트리)를 공유한다. I 슬라이스의 경우 CTU의 루마 및 크로마 CTB는 별도의 블록 트리 구조(예: 이중 트리)를 가질 수 있다. 별도의 블록 트리 모드(예, 듀얼 트리)가 적용될 때, 루마 CTB는 루마 코딩 트리 구조(예, DUAL_TREE_LUMA)에 의해 루마 CU로 분할될 수 있고, 크로마 CTB는 크로마 코딩 트리 구조(예: DUAL_TREE_CHROMA)에 의해 크로마 CU로 분할될 수 있다. 따라서, I 슬라이스의 CU는 루마 성분의 코딩 블록 또는 두 개의 크로마 성분의 코딩 블록을 포함할 수 있고, P 또는 B 슬라이스의 CU는 비디오가 모노크롬이 아닌 한 세 가지 색상 성분 모두의 코딩 블록을 포함할 수 있다.
CU는 후술하는 바와 같이 픽처 경계(경계라고도 함)에서 분할될 수 있다. HEVC에서와 같은 예에서, 트리 노드 블록의 일부가 하단 픽처 경계 또는 오른쪽 픽처 경계를 초과할 때, 트리 노드 블록은 모든 코딩된 CU의 모든 샘플이 픽처 경계 내부에 위치할 때까지 강제로 분할된다. 일부 예에서 다음 분할 규칙을 적용할 수 있다:
- 트리 노드 블록의 일부가 하단 화면 경계와 우측 화면 경계를 모두 초과하는 경우,
Figure pct00001
트리 노드 블록이 QT 노드이고 트리 노드 블록의 크기가 최소 QT 크기보다 크면 트리 노드 블록을 강제로 QT 분할 모드로 분할한다.
Figure pct00002
그렇지 않으면 트리 노드 블록이 SPLIT_BT_HOR 모드로 강제로 분할된다.
- 그렇지 않고, 트리 노드 블록의 일부가 하단 픽처 경계를 초과하는 경우
Figure pct00003
트리 노드 블록이 QT 노드이고 트리 노드 블록의 크기가 최소 QT 크기보다 크고 트리 노드 블록의 크기가 최대 BT 크기보다 크면 트리 노드 블록은 강제로 QT 분할 모드로 분할된다.
Figure pct00004
그렇지 않고, 트리 노드 블록이 QT 노드이고 트리 노드 블록의 크기가 최소 QT 크기보다 크고 트리 노드 블록의 크기가 최대 BT 크기보다 작거나 같으면 트리 노드 블록은 QT 분할 모드 또는 SPLIT_BT_HOR 모드로 강제 분할된다.
Figure pct00005
그렇지 않으면(트리 노드 블록이 BTT 노드이거나 트리 노드 블록의 크기가 최소 QT 크기보다 작거나 같은 경우) 트리 노드 블록은 SPLIT_BT_HOR 모드로 강제로 분할된다.
- 그렇지 않고 트리 노드 블록의 일부가 오른쪽 픽처 경계를 초과하면,
Figure pct00006
트리 노드 블록이 QT 노드이고 트리 노드 블록의 크기가 최소 QT 크기보다 크고 트리 노드 블록의 크기가 최대 BT 크기보다 크면 트리 노드 블록은 강제로 QT 분할 모드로 분할된다.
Figure pct00007
그렇지 않고, 트리 노드 블록이 QT 노드이고 트리 노드 블록의 크기가 최소 QT 크기보다 크고 트리 노드 블록의 크기가 최대 BT 크기보다 작거나 같으면 트리 노드 블록은 QT 분할 모드 또는 SPLIT_BT_VER 모드로 강제로 분할된다.
Figure pct00008
그렇지 않으면(트리 노드 블록이 BTT 노드이거나 트리 노드 블록의 크기가 최소 QT 크기보다 작거나 같은 경우) 트리 노드 블록은 SPLIT_BT_VER 모드로 강제로 분할된다.
중복 CU 분할에 대한 제한이 사용될 수 있다. 중첩된 MTT 코딩 블록 구조를 갖는 QT는 유연한 블록 분할 구조를 제공할 수 있다. MTT에서 지원되는 분할 유형으로 인해 서로 다른 분할 패턴이 잠재적으로 동일한 코딩 블록 구조를 초래할 수 있다. VVC와 같은 예에서 특정 중복 분할 패턴은 허용되지 않는다.
도 20은 본 개시의 실시예에 따른 BT 분할 및 TT 분할의 중복 분할 패턴의 예를 도시한다. 한 방향에서 두 레벨의 연속적인 BT 분할은 중앙 파티션의 BT 분할이 뒤따르는 TT 분할의 것과 동일한 코딩 블록 구조를 가질 수 있다. 위에서 설명한 경우, TT 분할의 중앙 파티션에 대한 BT 분할(주어진 방향)은 예를 들어 신택스에 의해 방지(예: 허용되지 않음)될 수 있다. 일 예에서, 위의 제한은 각 픽처의 CU에 적용된다.
일 예에서, 코딩 블록 구조(2001)는 수직 방향으로 연속적인 BT 분할의 2개 레벨(예를 들어, 제1 레벨 BT 분할(2011)과 뒤따르는 제2 레벨 BT 분할(2021)-(2022))의해 생성된다. 코딩 블록 구조(2002)는 수직 TT 분할(2012)에 이어 수직 TT 분할(2012)의 중앙 파티션의 수직 BT 분할(2023)에 의해 생성될 수 있다. 코딩 블록 구조(2001)는 코딩 블록 구조(2002)와 동일할 수 있으므로 TT 분할(2012)의 중앙 파티션에 대한 BT 분할(2023)(수직 방향)이 예를 들어 신택스로 방지된다.
예에서, 코딩 블록 구조(2003)는 수평 방향으로 연속적인 BT 분할의 2개 레벨(예를 들어, 제1 레벨 BT 분할(2013)과 뒤따르는 제2 레벨 BT 분할(2024)-(2025))에 의해 생성된다. 코딩 블록 구조(2004)는 수평 TT 분할(2014)에 이어 수평 TT 분할(2014)의 중앙 파티션의 수평 BT 분할(2026)에 의해 생성될 수 있다. 코딩 블록 구조(2003)는 코딩 블록 구조(2004)와 동일할 수 있으므로, 예를 들어, TT 분할(2014)의 중앙 파티션의 BT 분할(2026)(수평 방향)이 예를 들어 신택스로 방지된다.
전술한 바와 같이 분할이 금지되는 경우, 금지된 경우를 설명하기 위해 대응하는 신택스 요소의 시그널링이 수정될 수 있다. 예를 들어, 도 20을 참조하면, 중앙 파티션의 CU에 대해 예를 들어 BT 분할 (2023) 또는 (2026)이 금지되는 경우가 식별되는 경우, 분할이 BT 분할인지 TT인지를 지정하는 신택스 요소(예: mtt_split_cu_binary_flag) 분할은 시그널링되지 않고 디코더에 의해 0과 같은 것으로 추론된다. 따라서 CU에 대해 BT 분할이 금지된다.
가상 파이프라인 데이터 유닛(VPDU)은 픽처에서 비중첩 유닛으로 정의될 수 있다. 하드웨어 디코더에서 연속적인 VPDU는 동시에 여러 파이프라인 단계에서 처리될 수 있다. VPDU 크기는 대부분의 파이프라인 단계에서 버퍼 크기에 대략 비례할 수 있으므로 상대적으로 작은 VPDU 크기를 유지하는 것이 중요하다. 대부분의 하드웨어 디코더에서와 같은 다양한 예들에서, VPDU 크기는 최대 변환 블록(TB) 크기로 설정될 수 있다. VVC와 같은 일부 예들에서, TT 및 BT 파티션은 VPDU 크기의 증가로 이어질 수 있다. VPDU 크기를 64x64 루마 샘플과 같은 특정 크기로 유지하기 위해, 도 21에 도시된 바와 같이 다음과 같은 규범적 파티션 제한(예시적인 신택스 시그널링 수정 포함)이 적용될 수 있다. 도 21은 본 개시의 실시예들에 따라 허용되지 않는 TT 및 BT 파티셔닝의 예들을 도시한다.
- 너비, 높이 또는 너비와 높이가 모두 128인 CU에는 TT 분할이 허용되지 않는다. 예를 들어, TT 분할 (2001), (2002) 및 (2005)-(2008)은 허용되지 않는다.
- N ≤ 64인 128xN CU의 경우(즉, 너비가 128과 같고 높이가 128보다 작음) 수평 BT 분할은 허용되지 않는다. 예를 들어 수평 BT 분할(2004)은 128x64 CU에 허용되지 않는다.
- N ≤ 64인 Nx128 CU의 경우(즉, 높이가 128이고 너비가 128보다 작음) 수직 BT 분할은 허용되지 않는다. 예를 들어 수직 BT 분할(2003)은 64x128 CU에 허용되지 않는다.
인트라 크로마 파티셔닝 및 예측 제한은 아래에서 설명된다. 인트라 픽처의 듀얼 트리는 루마 코딩 트리와 비교하여 크로마 코딩 트리에서 다른 파티셔닝을 적용할 수 있으므로 듀얼 트리는 더 긴 코딩 파이프라인을 도입할 수 있다. 크로마 코딩 트리의 QTBT MinQTSizeC 값 범위, MinBtSizeY 및 MinTTSizeY는 2x2, 4x2 및 2x4와 같은 작은 크로마 블록을 허용할 수 있다. 예에서 MinQTSizeC는 최소 허용 크로마 QT 리프 노드 크기를 나타낸다. 따라서 실용적인 디코더 설계는 어려울 수 있다. 또한 교차-성분 선형 모델(cross-component linear model, CCLM), 평면 모드 및 각도 모드와 같은 특정 예측 모드에서는 곱셈을 사용할 수 있다. 위의 문제를 완화하기 위해 분할 제한으로 이중 트리에서 작은 크로마 블록 크기(예: 2x2, 2x4 및/또는 4x2)를 제한할 수 있다.
다양한 하드웨어 비디오 인코더 및 디코더에서, 예를 들어 이웃하는 인트라 블록 간의 샘플 프로세싱 데이터 의존성 때문에, 픽처가 더 작은 인트라 블록을 가질 때 프로세싱 스루풋이 감소할 수 있다. 인트라 블록의 예측자 생성은 인접 블록의 상단 및 왼쪽 경계 재구성된 샘플을 사용할 수 있다. 따라서, 예에서 인트라 예측은 블록 단위로 순차적으로 처리되어야 한다.
HEVC에서와 같은 일부 예들에서, 가장 작은 인트라 CU는 8x8 루마 샘플들이다. 가장 작은 인트라 CU의 루마 성분은 4개의 4x4 루마 인트라 PU로 더 분할될 수 있고, 가장 작은 인트라 CU의 크로마 성분은 더 분할될 수 없다. 따라서, 일례에서, 4x4 크로마 인트라 블록 또는 4x4 루마 인트라 블록이 처리될 때 하드웨어 처리 스루풋이 감소될 수 있다. 일부 예들에서, 스루풋을 개선하기 위해, 16개의 크로마 샘플들보다 작은 크로마 인트라 CB들은 크로마 인트라 CB들의 파티셔닝을 제한함으로써 허용되지 않을 수 있다. 단일 코딩 트리에서, 최소 크로마 인트라 예측 단위(smallest chroma intra prediction unit, SCIPU)는 크로마 블록 크기가 16개 크로마 샘플보다 크거나 같고 64개 루마 샘플보다 작은 자식 루마 블록이 하나 이상 있는 코딩 트리 노드로 정의될 수 있다. 각 SCIPU에서 모든 CB는 인터 예측되거나 인터 예측되지 않는다(예: 인트라 예측 또는 인트라 블록 복사(IBC)). 논-인터(non-inter) SCIPU의 경우, 한 예에서 논-인터 SCIPU의 크로마 CB(s)는 더 이상 분할되지 않고 SCIPU의 루마 CB는 추가 분할이 허용된다. 따라서 가장 작은 크로마 인트라 CB 크기는 16개의 크로마 샘플이 될 수 있으므로 2x2, 2x4, 4x2 크로마 CB를 제거할 수 있다. 또한, 일 예에서 논-인터 SCIPU에 대해서는 크로마 스케일링(chroma scaling)이 적용되지 않는다. 여기서, 추가적인 신택스는 시그널링되지 않으며, SCIPU가 인터 예측되지 않는지는 SCIPU의 첫 번째 루마 CB의 예측 모드에 의해 도출될 수 있다. SCIPU의 유형(인터 SCIPU 또는 논-인터 SCIPU)은 현재 슬라이스가 I-슬라이스이거나 SCIPU가 추가로 분할된 후 (예를 들어, VVC에서는 인터 4x4가 허용되지 않기 때문에) 4x4 루마 파티션을 갖는 경우 논-인터 SCIPU인 것으로 추론할 수 있고; 그렇지 않으면 SCIPU의 유형은 SCIPU의 CU를 신택스 분석하기 전에 플래그로 표시될 수 있다. 또한, 픽처의 너비와 높이를 max(8, MinCbSizeY)의 배수로 고려하여 픽처의 모서리에서 2x2, 2x4, 4x2 인트라 크로마 블록을 피하기 위해 픽처 크기에 대한 제한을 고려할 수 있다.
도 22는 본 개시의 일 실시예에 따른 SPS에서의 파티셔닝 및 블록 크기와 관련된 예시적인 신택스(2200)를 도시한다. 신택스(2200)는 RBSP(raw byte sequence payload) 신택스를 포함할 수 있다. RBSP는 네트워크 추상화 계층(network abstraction layer, NAL) 단위로 캡슐화된 정수 바이트 수를 포함하는 신택스 구조를 참조할 수 있으며 비어 있거나 RBSP 정지 비트가 뒤따르는 신택스 요소를 포함하는 데이터 비트 문자열의 형태 0 또는 0과 같은 그 이상의 후속 비트를 갖는다. 일 예에서, RBSP 정지 비트는 RBSP에서 마지막 논-제로 비트이다.
도 22의 신택스(2200)와 관련된 분할 및 블록 크기 관련 시맨틱를 아래에서 설명할 수 있다.
1과 동일한 qtbtt_dual_tree_intra_flag는 I 슬라이스에 대해, 각 CTU가 암시적 QT 분할을 사용하여 64x64 루마 샘플을 갖는 CU로 분할되고 CU가 루마 및 채도에 대한 2개의 개별 coding_tree 신택스 구조의 루트일 수 있음을 지정할 수 있다. 0과 동일한 qtbtt_dual_tree_intra_flag는 I 슬라이스에 대해 사용되지 않는 별도의 coding_tree 신택스 구조를 지정할 수 있다. qtbtt_dual_tree_intra_flag가 존재하지 않을 때, 0과 같은 것으로 추론될 수 있다.
변수 log2_min_luma_coding_block_size_minus2plus2(즉, log2_min_luma_coding_block_size_minus2 + 2)는 최소 루마 코딩 블록 크기를 지정할 수 있다. log2_min_luma_coding_block_size_minus2의 값 범위는 0에서 log2_ctu_size_minus5 + 3(포함)까지의 범위일 수 있다.
변수 MinCbLog2SizeY, MinCbSizeY, IbcBufWidthY, IbcBufWidthC 및 Vsize는 다음과 같이 유도될 수 있다:
MinCbLog2SizeY = log2_min_luma_coding_block_size_minus2 + 2 (1)
MinCbSizeY = 1 << MinCbLog2SizeY (2)
IbcBufWidthY = 256 * 128 / CtbSizeY (3)
IbcBufWidthC = IbcBufWidthY / SubWidthC (4)
VSize = Min( 64, CtbSizeY ) (5)
MinCbSizeY의 값은 VSize보다 작거나 같을 수 있다:
각 크로마 CTB에 대한 어레이의 너비 및 높이를 각각 지정하는 변수 CtbWidthC 및 CtbHeightC는 다음과 같이 유도될 수 있다:
- chroma_format_idc가 0(모노크롬)과 같거나 Separate_colour_plane_flag가 1인 경우 CtbWidthC 및 CtbHeightC는 모두 0이다.
- 그렇지 않으면 CtbWidthC 및 CtbHeightC는 다음과 같이 유도된다:
CtbWidthC = CtbSizeY / SubWidthC (6)
CtbHeightC = CtbSizeY / SubHeightC (7)
0에서 4까지 범위의 log2BlockWidth 및 0에서 4(포함)까지 범위의 log2BlockHeight에 대해, 오른쪽 위 대각선 및 래스터 스캔 순서 배열 초기화 프로세스는 1 << log2BlockWidth 및 1 << log2BlockHeight를 입력으로 사용하여 호출될 수 있고, 출력은 DiagScanOrder[log2BlockWidth][log2BlockHeight] 및 Raster2DiagScanPos[log2BlockWidth][log2BlockHeight]에할당될 수 있다.
0에서 6까지 범위의 log2BlockWidth 및 0에서 6(포함)까지의 log2BlockHeight에 대해, 수평 및 수직 트래버스 스캔 순서 배열 초기화 프로세스는 1 << log2BlockWidth 및 1 << log2BlockHeight를 입력으로 사용하여 호출될 수 있고, 출력은 HorTravScanOrder[log2BlockWidth][log2BlockHeight] 및 VerTravScanOrder[log2BlockWidth][log2BlockHeight]에할당될 수 있다.
1과 동일한 partition_constraints_override_enabled_flag는 SPS를 참조하는 픽처 헤더(PH)에서 partition_constraints_override_flag의 존재를 지정할 수 있다. 0과 동일한 partition_constraints_override_enabled_flag는 SPS를 참조하는 PH에서 partition_constraints_override_flag의 부재를 지정할 수 있다.
sps_log2_diff_min_qt_min_cb_intra_slice_luma는 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그와 SPS를 참조하는 2(I 슬라이스를 나타냄)와 같은 slice_type을 슬라이스의 루마 CU에 대한 루마 샘플에서의 최소 코딩 블록 크기의 밑이 2인 로그 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 존재하는 pic_log2_diff_min_qt_min_cb_luma에 의해 무시될 수 있다. sps_log2_diff_min_qt_min_cb_intra_slice_luma의 값은 0에서 CtbLog2SizeY - MinCbLog2SizeY(포함)까지의 범위에 있을 수 있다. CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그는 다음과 같이 유도될 수 있다:
MinQtLog2SizeIntraY =
sps_log2_diff_min_qt_min_cb_intra_slice_luma + MinCbLog2SizeY (8)
sps_log2_diff_min_qt_min_cb_inter_slice는 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기의 베이스 2 로그와 SPS를 참조하는 0(B 슬라이스를 나타냄) 또는 1(P 슬라이스 표시)과 같은 slice_type을 갖는 슬라이스의 루마 CU의 루마 샘플에서의 최소 루마 코딩 블록 크기의 베이스 2 로그 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 있는 pic_log2_diff_min_qt_min_cb_luma에 의해 무시될 수 있다. sps_log2_diff_min_qt_min_cb_inter_slice의 값은 0에서 CtbLog2SizeY - MinCbLog2SizeY(포함)까지의 범위에 있을 수 있다. CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그는 다음과 같이 유도될 수 있다:
MinQtLog2SizeInterY =
sps_log2_diff_min_qt_min_cb_inter_slice + MinCbLog2SizeY (9)
sps_max_mtt_hierarchy_depth_inter_slice는 SPS를 참조하는 0(B 슬라이스를 나타냄) 또는 1(P 슬라이스를 나타냄)과 동일한 slice_type을 갖는 슬라이스에서 QT 리프의 MTT 분할로 인해 생기는 코딩 단위에 대한 기본 최대 계층 깊이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 기본 최대 계층 깊이는 SPS를 참조하는 PH에 있는 pic_max_mtt_hierarchy_depth_inter_slice에 의해 무시될 수 있다. sps_max_mtt_hierarchy_depth_inter_slice의 값은 0에서 2x(CtbLog2SizeY - MinCbLog2SizeY 포함)까지의 범위에 있을 수 있다.
sps_max_mtt_hierarchy_depth_intra_slice_luma는 SPS를 참조하는 2(I 슬라이스를 나타냄)와 동일한 slice_type을 갖는 슬라이스에서 QT 리프의 MTT 분할로 인해 생기는 코딩 단위에 대한 기본 최대 계층 깊이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 기본 최대 계층 깊이는 SPS를 참조하는 PH에 있는 pic_max_mtt_hierarchy_depth_intra_slice_luma에 의해 무시될 수 있다. sps_max_mtt_hierarchy_depth_intra_slice_luma의 값은 0에서 2x(CtbLog2SizeY - MinCbLog2SizeY 포함)까지의 범위에 있을 수 있다.
sps_log2_diff_max_bt_min_qt_intra_slice_luma는 이진 분할을 사용하여 분할될 수 있는 루마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2인 로그와 SPS를 참조하는 slice_type이 2(I 슬라이스를 나타냄)와 동일한 슬라이스에서 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같으면 SPS를 참조하는 PH에 있는 pic_log2_diff_max_bt_min_qt_luma에 의해 디폴트 차이가 무시될 수 있다. sps_log2_diff_max_bt_min_qt_intra_slice_luma의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeIntraY(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_bt_min_qt_intra_slice_luma가 존재하지 않는 경우 sps_log2_diff_max_bt_min_qt_intra_slice_luma의 값은 0과 동일한 것으로 유추될 수 있다.
sps_log2_diff_max_tt_min_qt_intra_slice_luma는 삼항 분할을 사용하여 분할될 수 있는 루마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2인 로그와 SPS를 참조하는 slice_type이 2(I 슬라이스를 나타냄)와 동일한 슬라이스에서 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 있는 pic_log2_diff_max_tt_min_qt_luma에 의해 무시될 수 있다. sps_log2_diff_max_tt_min_qt_intra_slice_luma의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeIntraY(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_tt_min_qt_intra_slice_luma가 존재하지 않는 경우 sps_log2_diff_max_tt_min_qt_intra_slice_luma의 값은 0과 동일한 것으로 유추될 수 있다.
sps_log2_diff_max_bt_min_qt_inter_slice는 이진 분할을 사용하여 분할될 수 있는 루마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2인 로그와 SPS를 참조하는 0(B 슬라이스 표시) 또는 1(P 슬라이스 표시)과 동일한 slice_type을 갖는 슬라이스에서 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 있는 pic_log2_diff_max_bt_min_qt_luma에 의해 무시될 수 있다. sps_log2_diff_max_bt_min_qt_inter_slice의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeInterY(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_bt_min_qt_inter_slice가 없는 경우 sps_log2_diff_max_bt_min_qt_inter_slice의 값은 0과 같은 것으로 유추될 수 있다.
sps_log2_diff_max_tt_min_qt_inter_slice는 삼항 분할을 사용하여 분할될 수 있는 루마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2이 로그와 SPS를 참조하는 0(B 슬라이스 표시) 또는 1(P 슬라이스 표시)과 동일한 slice_type을 갖는 슬라이스에서 CTU의 QT 분할로 인해 생기는 루마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 있는 pic_log2_diff_max_tt_min_qt_luma에 의해 무시될 수 있다. sps_log2_diff_max_tt_min_qt_inter_slice의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeInterY(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_tt_min_qt_inter_slice가 없으면 sps_log2_diff_max_tt_min_qt_inter_slice의 값이 0과 같은 것으로 유추될 수 있다.
sps_log2_diff_min_qt_min_cb_intra_slice_chroma는 DUAL_TREE_CHROMA와 동일한 treeType을 갖는 크로마 CTU의 쿼드트리 분할로 인해 생기는 크로마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그와 SPS를 참조하는 slice_type이 2(I 슬라이스를 나타냄)와 동일한 슬라이스의 DUAL_TREE_CHROMA와 동일한 treeType을 갖는 크로마 CU에 대한 루마 샘플에서의 최소 코딩 블록 크기의 밑이 2인 로그 간의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때, 디폴트 차이는 SPS를 참조하는 PH에 존재하는 pic_log2_diff_min_qt_min_cb_chroma에 의해 무시될 수 있다. sps_log2_diff_min_qt_min_cb_intra_slice_chroma의 값은 0에서 CtbLog2SizeY - MinCbLog2SizeY(포함)까지의 범위에 있을 수 있다. 존재하지 않을 때 sps_log2_diff_min_qt_min_cb_intra_slice_chroma의 값은 0과 같도록 유추될 수 있다. DUAL_TREE_CHROMA와 동일한 treeType을 갖는 CTU의 QT 분할로 인해 생기는 크로마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그는 다음과 같이 유도될 수 있다:
MinQtLog2SizeIntraC =
sps_log2_diff_min_qt_min_cb_intra_slice_chroma + MinCbLog2SizeY (10)
sps_max_mtt_hierarchy_depth_intra_slice_chroma는 SPS를 참조하는 slice_type이 2인 슬라이스(I 슬라이스를 나타냄)에서 DUAL_TREE_CHROMA와 동일한 treeType을 갖는 크로마 쿼드트리 리프의 다중 유형 트리 분할로 인해 생기는 크로마 코딩 단위에 대한 기본 최대 계층 깊이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때, 기본 최대 계층 깊이는 SPS를 참조하는 PH에 존재하는 pic_max_mtt_hierarchy_depth_chroma에 의해 무시될 수 있다. sps_max_mtt_hierarchy_depth_intra_slice_chroma의 값은 0 내지 2x(CtbLog2SizeY - MinCbLog2SizeY)(포함)까지의 범위에 있을 수 있다. 존재하지 않을 때, sps_max_mtt_hierarchy_depth_intra_slice_chroma의 값은 0과 같은 것으로 유추될 수 있다.
sps_log2_diff_max_bt_min_qt_intra_slice_chroma는 이진 분할을 사용하여 분할될 수 있는 크로마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2인 로그와 SPS를 참조하는 slice_type이 2인 슬라이스(I 슬라이스를 나타냄)에서 DUAL_TREE_CHROMA와 같은 treeType을 갖는 크로마 CTU의 QT 분할로 인해 생기는 크로마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 사이의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 존재하는 pic_log2_diff_max_bt_min_qt_chroma에 의해 무시될 수 있다. sps_log2_diff_max_bt_min_qt_intra_slice_chroma의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeIntraC(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_bt_min_qt_intra_slice_chroma가 존재하지 않을 때, sps_log2_diff_max_bt_min_qt_intra_slice_chroma의 값은 0과 같은 것으로 추론될 수 있다.
sps_log2_diff_max_tt_min_qt_intra_slice_chroma는 삼항 분할을 사용하여 분할될 수 있는 크로마 코딩 블록의 루마 샘플에서 최대 크기(폭 또는 높이)의 밑이 2인 로그와 SPS를 참조하는 slice_type이 2인 슬라이스(I 슬라이스를 나타냄)에서 DUAL_TREE_CHROMA와 같은 treeType을 갖는 크로마 CTU의 쿼드트리 분할로 인해 생기는 크로마 리프 블록의 루마 샘플에서의 최소 크기(폭 또는 높이) 사이의 디폴트 차이를 지정할 수 있다. partition_constraints_override_enabled_flag가 1과 같을 때 디폴트 차이는 SPS를 참조하는 PH에 존재하는 pic_log2_diff_max_tt_min_qt_chroma에 의해 무시될 수 있다. sps_log2_diff_max_tt_min_qt_intra_slice_chroma의 값은 0에서 CtbLog2SizeY - MinQtLog2SizeIntraC(포함)까지의 범위에 있을 수 있다. sps_log2_diff_max_tt_min_qt_intra_slice_chroma가 존재하지 않는 경우, sps_log2_diff_max_tt_min_qt_intra_slice_chroma의 값은 0과 동일한 것으로 추론될 수 있다.
1과 동일한 sps_max_luma_transform_size_64_flag는 루마 샘플의 최대 변환 크기가 64와 같다는 것을 지정할 수 있다. 0과 동일한 sps_max_luma_transform_size_64_flag는 루마 샘플의 최대 변환 크기가 32보다 작다는 것을 지정할 수 있다. CtbSizeY보다 작은 경우 sps_max_luma_transform_size_64_flag의 값은 0과 같을 수 있다.
변수 MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, 및 MaxTbSizeY는 다음과 같이 유도될 수 있다:
MinTbLog2SizeY = 2 (11)
MaxTbLog2SizeY = sps_max_luma_transform_size_64_flag ? 6 : 5 (12)
MinTbSizeY = 1 << MinTbLog2SizeY (13)
MaxTbSizeY = 1 << MaxTbLog2SizeY (14)
...
pic_log2_diff_min_qt_min_cb_intra_slice_chroma는 DUAL_TREE_CHROMA와 동일한 treeType을 갖는 크로마 CTU의 QT 분할로 인해 생기는 크로마 리프 블록의 루마 샘플에서의 최소 크기의 밑이 2인 로그와 PH와 관련된 2(I 슬라이스를 나타냄)와 동일한 slice_type을 갖는 슬라이스에서 DUAL_TREE_CHROMA와 동일한 treeType을 갖는 크로마 CU에 대한 루마 샘플에서의 최소 크기(폭 또는 높이) 사이의 디폴트 차이를 지정할 수 있다. pic_log2_diff_min_qt_min_cb_intra_slice_chroma의 값은 0에서 CtbLog2SizeY - MinCbLog2SizeY(포함)까지의 범위에 있을 수 있다. 존재하지 않을 때, pic_log2_diff_min_qt_min_cb_intra_slice_chroma의 값은 sps_log2_diff_min_qt_min_cb_intra_slice_chroma와 동일한 것으로 추론될 수 있다.
slice_type은 도 23의 표 3에 따라 슬라이스의 코딩 유형을 지정할 수 있다. 예를 들어, 0-2의 slice_type은 각각 B 슬라이스, P 슬라이스, I 슬라이스에 대응한다.
nal_unit_type이 IDR_W_RADL부터 CRA_NUT까지의 범위에서 nal_unit_type의 값이고, 현재 픽처가 액세스 유닛의 첫 번째 픽처인 경우, slice_type은 2와 같을 수 있다.
변수 MinQtLog2SizeY, MinQtLog2SizeC, MinQtSizeY, MinQtSizeC, MaxBtSizeY, MaxBtSizeC, MinBtSizeY, MaxTtSizeY, MaxTtSizeC, MinTtSizeY, MaxMttDepthY 및 MaxMttDep는 다음과 같이 유도될 수 있다:
MinQtSizeY = 1 << MinQtLog2SizeY (15)
MinQtSizeC = 1 << MinQtLog2SizeC (16)
MinBtSizeY = 1 << MinCbLog2SizeY (17)
MinTtSizeY = 1 << MinCbLog2SizeY (18)
slice_type이 2 (an I slice)와 같으면,
MinQtLog2SizeY = MinCbLog2SizeY +
pic_log2_diff_min_qt_min_cb_intra_slice_luma (19)
MinQtLog2SizeC = MinCbLog2SizeC +
pic_log2_diff_min_qt_min_cb_intra_slice_chroma (20)
MaxBtSizeY = 1 << ( MinQtLog2SizeY +
pic_log2_diff_max_bt_min_qt_intra_slice_luma ) (21)
MaxBtSizeC = 1 << ( MinQtLog2SizeC +
pic_log2_diff_max_bt_min_qt_intra_slice_chroma ) (22)
MaxTtSizeY = 1 << ( MinQtLog2SizeY +
pic_log2_diff_max_tt_min_qt_intra_slice_luma ) (23)
MaxTtSizeC = 1 << ( MinQtLog2SizeC +
pic_log2_diff_max_tt_min_qt_intra_slice_chroma ) (24)
MaxMttDepthY = pic_max_mtt_hierarchy_depth_intra_slice_luma (25)
MaxMttDepthC = pic_max_mtt_hierarchy_depth_intra_slice_chroma (26)
CuQpDeltaSubdiv = pic_cu_qp_delta_subdiv_intra_slice (27)
CuChromaQpOffsetSubdiv =
pic_cu_chroma_qp_offset_subdiv_intra_slice (28)
그렇지 않으면(slice_type은 0 (a B slice) or 1 (a P slice)가 같다),
MinQtLog2SizeY = MinCbLog2SizeY +
pic_log2_diff_min_qt_min_cb_inter_slice (29)
MinQtLog2SizeC = MinCbLog2SizeC +
pic_log2_diff_min_qt_min_cb_inter_slice (30)
MaxBtSizeY = 1 << ( MinQtLog2SizeY +
pic_log2_diff_max_bt_min_qt_inter_slice) (31)
MaxBtSizeC = 1 << ( MinQtLog2SizeC +
pic_log2_diff_max_bt_min_qt_inter_slice) (32)
MaxTtSizeY = 1 << ( MinQtLog2SizeY +
pic_log2_diff_max_tt_min_qt_inter_slice) (33)
MaxTtSizeC = 1 << ( MinQtLog2SizeC +
pic_log2_diff_max_tt_min_qt_inter_slice) (34)
MaxMttDepthY = pic_max_mtt_hierarchy_depth_inter_slice (35)
MaxMttDepthC = pic_max_mtt_hierarchy_depth_inter_slice (36)
CuQpDeltaSubdiv = pic_cu_qp_delta_subdiv_inter_slice (37)
CuChromaQpOffsetSubdiv =
pic_cu_chroma_qp_offset_subdiv_inter_slice (38)
크로마 인트라 예측은 2xN의 크기와 같은 특정 크로마 블록 크기에 대해 비활성화될 수 있다.
일 실시예에서, 듀얼 트리 및 단일 트리 모두에서 2xN 크로마 인트라 블록은 아래에서 설명되는 바와 같이 제거될 수 있다. 듀얼 트리에서 특정 분할을 비활성화하여 2xN 인트라 크로마를 제한할 수 있다. 예를 들어, 이진 트리 및 삼항 트리 분할은 각각 너비가 4 및 8인 블록에 대해 금지된다.
단일 트리에서 2xN을 제거하기 위해 로컬 듀얼 트리의 확장과 크로마 2xN에 대한 CIIP(Combined Inter merge/Intra Prediction)의 제한을 포함하는 두 가지 제한이 사용될 수 있다.
첫 번째 제한에서, 분할 폭이 4이고 분할이 이진 수직 분할이거나 폭이 8이고 분할이 삼진 수직 분할인 경우 크로마 성분은 SCIPU로 취급될 수 있다. SCIPU의 원칙적 제한에 따라 크로마 성분은 인트라 SCIPU에서 분할되지 않는다(모든 루마 블록은 비인터 모드를 사용하여 인코딩되고 비분할 크로마 블록은 인트라 모드를 사용하여 코딩된다). 인터-SCIPU의 경우(모든 루마 및 크로마 블록은 인터 모드를 사용하여 인코딩된다), 크로마 구성요소의 분할은 루마 구성요소에서 상속될 수 있다.
두 번째 제한에서, 예에서, 4xN CIIP 블록에 대해, CIIP는 루마 성분에 대해서만 사용되는 반면 인터 예측은 크로마 성분에 대해서만 사용된다.
상기 제한은 인트라 크로마 블록의 폭이 4 이상임을 보장할 수 있고, 따라서 2xN 픽셀 인트라 프로세스가 제거될 수 있다. 제한 사항은 파이프라인 관리 측면에서 하드웨어 구현에 친숙한 비디오 코덱 구현을 만들 수 있다.
VVC와 같은 분할 가용성 관련 프로세스의 예는 다음과 같이 설명된다.
일 실시예에서, 허용된 쿼드 분할 프로세스가 아래에서 설명된다. 허용된 4분할 프로세스에 대한 입력에는 다음이 포함될 수 있다:
a) 루마 샘플의 코딩 블록 크기(또는 cbSize),
b) MTT 깊이(또는 mttDepth),
c) 단일 트리(또는 SINGLE_TREE) 또는 이중 트리를 사용하여 코딩 트리 노드를 분할하는지를 지정하고, 이중 트리가 사용되는 경우 루마(DUAL_TREE_LUMA) 또는 크로마 구성요소( DUAL_TREE_CHROMA)가 현재 처리 중인지를 지정하는 가변 트리 유형(또는 treeType),
d) 인트라 모드(또는 인트라 예측 모드, MODE_INTRA), IBC 모드(또는 MODE_IBC), 및 인터 코딩 모드가 사용될 수 있는지를 지정하거나(MODE_TYPE_ALL),
또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지를 지정하거나(MODE_TYPE_INTRA) 또는 코딩 트리 노드 내부의 코딩 단위에 대해 인터 코딩 모드만 사용할 수 있는지를 지정하는(MODE_TYPE_INTER) 가변 모드 유형(예측 모드 유형, 예를 들어 modeType이라고도 함). 예에서 MODE_TYPE_ALL은 인트라, IBC 및 인터 코딩 모드가 사용될 수 있음을 나타낸다.
루마 샘플에서의 코딩 블록 크기(또는 cbSize)는 루마 샘플을 갖는 크로마 코딩 블록(또는 크로마 블록)의 블록 크기를 나타낼 수 있다. 따라서, 크로마 샘플의 크로마 코딩 블록의 블록 크기는 크로마 수평 서브샘플링 비율 또는 수평 방향(예: SubWidthC)의 크로마 서브샘플링 비율과 같이, 루마 샘플의 코딩 블록 크기(또는 cbSize) 및 대응하는 크로마 서브샘플링 비율에 기초하여 결정될 수 있다. 예를 들어, 크로마 포맷 4:2:0의 경우, 루마 샘플의 코딩 블록 크기(또는 cbSize)는 루마 샘플을 단위로 사용하여 표현할 때 16이거나 크로마 샘플을 단위로 사용하여 표현할 때 8이다.
일 예에서, 코딩 블록 크기 cbSize는 루마 샘플에서 코딩 블록 크기(cbWidth)의 폭과 동일하게 설정된다. 예를 들어, 크로마 포맷 4:2:2의 경우 루마 샘플의 코딩 블록 크기의 너비는 16루마 샘플이고 크로마 수평 서브샘플링 비율(SubWidthC)은 2이므로 크로마 코딩 블록의 블록 크기는 루마 샘플의 경우 16이거나 또는 크로마 샘플의 경우 16/2(또는 8)이다. 또한, 크로마 포맷 4:2:2의 경우, 루마 샘플의 코딩 블록 크기의 높이는 16 루마 샘플이고 크로마 수직 서브샘플링 비율(SubHeightC)이 1이므로 크로마 코딩 블록의 높이는 루마 샘플에서 16이거나 또는 크로마 샘플에서 16이다.
허용된 쿼드 분할 프로세스의 출력은 QT 분할이 허용되는지(예를 들어, allowSplitQt가 TRUE인지) 또는 허용되지 않는지(예를 들어, allowSplitQt가 FALSE임) 여부를 나타내는 변수 allowSplitQt를 포함할 수 있다. 변수 allowSplitQt는 다음과 같이 유도될 수 있다:
- 다음 조건(QT 분할을 위한 조건이라고도 함) 중 하나 이상이 참인 경우 변수 allowSplitQt를 FALSE로 설정할 수 있으며 QT 분할(또는 QT 분할)이 허용되지 않는다:
Figure pct00009
(a) treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 같고 cbSize가 MinQtSizeY보다 작거나 같다
Figure pct00010
(b) treeType이 DUAL_TREE_CHROMA와 같고 cbSize/SubWidthC가 MinQtSizeC보다 작거나 같다
Figure pct00011
(c) mttDepth가 0과 같지 않다
Figure pct00012
(d) treeType이 DUAL_TREE_CHROMA와 같고 (cbSize/SubWidthC)가 4보다 작거나 같다
Figure pct00013
(e) treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다
- 그렇지 않으면 allowSplitQt를 TRUE로 설정할 수 있다. 따라서 QT 분할(또는 QT 분할)이 허용될 수 있다.
다양한 예에서, 위의 조건 (b), (d), 및 (e)와 같은 특정 조건은 treeType이 DUAL_TREE_CHROMA와 같으므로 조건 (b), (d) 및 (e) QT 분할이 크로마 블록에 적용될 때 참일 수 있고 QT 분할이 루마 블록에 적용될 때 참일 수 없다. 따라서, QT 분할을 위한 조건 (b), (d), (e)는 크로마 QT 분할(또는 크로마 QT 분할)을 위한 조건이라고할 수 있다.
조건 (a)-(e) 중 하나 이상이 수정 및/또는 생략될 수 있다. 조건 (a)-(e)에 추가 조건을 추가할 수 있다.
일 예에서, 코딩 트리 의미론은 다음과 같이 유도될 수 있는 변수 allowSplitQt를 포함한다: 허용된 쿼드 분할 프로세스는 cbWidth(예를 들어, 루마 샘플에서)와 동일한 코딩 블록 크기 cbSize 세트로 호출될 수 있으며, 현재 다중-유형 트리 깊이 mttDepth, treeTypeCurr 및 modeTypeCurr을 입력으로 사용하고 출력을 allowSplitQt에할당할 수 있다.
일 실시예에서, 허용된 이진 분할 프로세스가 아래에 설명된다. 허용된 이진 분할 프로세스에 대한 입력에는 다음이 포함될 수 있다:
a) 이진 분할 모드(또는 btSplit),
b) 루마 샘플의 코딩 블록 폭(또는 cbWidth),
c) 루마 샘플의 코딩 블록 높이(또는 cbHeight),
d) 픽처의 좌상단 루마 샘플에 대한 고려된 코딩 블록의 좌상단 루마 샘플의 위치(x0, y0),
e) 다중 유형 트리 깊이(또는 mttDepth),
f) 오프셋(또는 maxMttDepth)이 있는 최대 다중 유형 트리 깊이,
g) 최대 이진 트리 크기(또는 maxBtSize),
h) 최소 QT 크기(또는 minQtSize),
i) 파티션 인덱스(또는 partIdx),
j) 단일 트리(SINGLE_TREE) 또는 이중 트리를 사용하여 코딩 트리 노드를 분할하는지를 지정하고, 이중 트리가 사용되는 경우 루마(DUAL_TREE_LUMA) 또는 크로마 성분(DUAL_TREE_CHROMA)이 현재 처리 중인지를 지정하는 가변 트리 유형(또는 treeType),
k) 인트라(MODE_INTRA), IBC(MODE_IBC) 및 인터 코딩 모드를 사용할 수 있는지 여부(MODE_TYPE_ALL) 또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지 여부(MODE_TYPE_INTRA), 또는 또는 코딩 트리 노드 내부의 코딩 단위에 인터 코딩 모드만 사용할 수 있는지(MODE_TYPE_INTER)를 지정하는 가변 모드 유형(또는 modeType).
허용된 이진 분할 프로세스의 출력은 변수 allowBtSplit을 포함할 수 있다.
일 예에서, 변수 parallelTtSplit 및 cbSize는 표 4(도 24)에 도시된 바와 같이 변수 btSplit에 기초하여 유도된다.
변수 allowBtSplit은 다음과 같이 유도될 수 있다:
- 다음 조건 중 하나 이상이 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다:
Figure pct00014
cbSize가 MinBtSizeY보다 작거나 같다
Figure pct00015
cbWidth가 maxBtSize보다 크다
Figure pct00016
cbHeight가 maxBtSize보다 크다
Figure pct00017
mttDepth가 maxMttDepth보다 크거나 같다
Figure pct00018
treeType은 DUAL_TREE_CHROMA와 같고 (cbWidth/SubWidthC) × (cbHeight/SubHeightC)는 16보다 작거나 같다
Figure pct00019
treeType은 DUAL_TREE_CHROMA와 같고 (cbWidth/SubWidthC)는 4와 같고 btSplit은 SPLIT_BT_VER와 같다
Figure pct00020
treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다
Figure pct00021
cbWidth × cbHeight는 32와 같고 modeType은 MODE_TYPE_INTER와 같다
- 그렇지 않고 다음 조건이 모두 참이면 eallowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00022
btSplit은 SPLIT_BT_VER와 같다
Figure pct00023
y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00024
btSplit은 SPLIT_BT_VER와 같다
Figure pct00025
cbHeight가 64보다 크다
Figure pct00026
x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00027
btSplit은 SPLIT_BT_HOR와 같다
Figure pct00028
cbWidth가 64보다 크다
Figure pct00029
y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00030
x0 + cbWidth가 pic_width_in_luma_samples보다 크다
Figure pct00031
y0 + cbHeight가 pic_height_in_luma_samples보다 크다
Figure pct00032
cbWidth가 minQtSize보다 크다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00033
btSplit은 SPLIT_BT_HOR와 같다
Figure pct00034
x0 + cbWidth가 pic_width_in_luma_samples보다 크다
Figure pct00035
y0 + cbHeight가 pic_height_in_luma_samples보다 작거나 같다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00036
mttDepth가 0보다 크다
Figure pct00037
partIdx는 1과 같다
Figure pct00038
MttSplitMode[x0][y0][mttDepth - 1]은 parallelTtSplit과 같다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00039
btSplit은 SPLIT_BT_VER와 같다
Figure pct00040
cbWidth가 64보다 작거나 같다
Figure pct00041
cbHeight가 64보다 크다
- 그렇지 않고 다음 조건이 모두 참이면 allowBtSplit 변수를 FALSE로 설정할 수 있다
Figure pct00042
btSplit은 SPLIT_BT_HOR와 같다
Figure pct00043
cbWidth가 64보다 크다
Figure pct00044
cbHeight가 64보다 작거나 같다
- 그렇지 않으면 변수 allowBtSplit을 TRUE로 설정할 수 있다.
일 실시예에서, 허용된 삼진 분할 프로세스가 아래에 설명된다. 허용되는 삼항 분할 프로세스에 대한 입력에는 다음이 포함될 수 있다:
a) 삼항 분할 모드(또는 ttSplit),
b) 루마 샘플의 코딩 블록 폭(또는 cbWidth),
c) 루마 샘플의 코딩 블록 높이(또는 cbHeight),
d) 픽처의 좌상단 루마 샘플에 대한 고려된 코딩 블록의 좌상단 루마 샘플의 위치(x0, y0),
e) 다중 유형 트리 깊이(또는 mttDepth),
f) 오프셋(또는 maxMttDepth)이 있는 최대 다중 유형 트리 깊이,
g) 최대 삼항 트리 크기(또는 maxTtSize),
h) 단일 트리(SINGLE_TREE) 또는 이중 트리를 사용하여 코딩 트리 노드를 분할하는지를 지정하고, 이중 트리가 사용되는 경우 루마(DUAL_TREE_LUMA) 또는 크로마 구성요소(DUAL_TREE_CHROMA)가 현재 처리 중인지를 지정하는 가변 트리 유형(또는 treeType),
i) 인트라(MODE_INTRA), IBC(MODE_IBC) 및 인터 코딩 모드를 사용할 수 있는지 여부(MODE_TYPE_ALL) 또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지 여부(MODE_TYPE_INTRA), 또는 코딩 트리 노드 내부의 코딩 단위에는 인터 코딩 모드만 사용할 수 있는지(MODE_TYPE_INTER)를 지정하는 가변 모드 유형(또는 modeType).
허용된 삼진 분할 프로세스의 출력은 변수 allowTtSplit을 포함할 수 있다.
예에서, 변수 cbSize는 표 5(도 25)에 도시된 바와 같이 변수 ttSplit에 기초하여 유도된다.
변수 allowTtSplit은 다음과 같이 유도될 수 있다:
- 다음 조건 중 하나 이상이 참이면 allowTtSplit 변수를 FALSE로 설정할 수 있다:
Figure pct00045
cbSize는 2 × MinTtSizeY보다 작거나 같다
Figure pct00046
cbWidth가 Min(64, maxTtSize)보다 크다
Figure pct00047
cbHeight가 Min(64, maxTtSize)보다 크다
Figure pct00048
mttDepth가 maxMttDepth보다 크거나 같다
Figure pct00049
x0 + cbWidth가 pic_width_in_luma_samples보다 크다
Figure pct00050
y0 + cbHeight가 pic_height_in_luma_samples보다 크다
Figure pct00051
treeType은 DUAL_TREE_CHROMA와 같고 (cbWidth/SubWidthC) × (cbHeight/SubHeightC)는 32보다 작거나 같다
Figure pct00052
treeType은 DUAL_TREE_CHROMA와 같고 (cbWidth/SubWidthC)는 8과 같고 ttSplit은 SPLIT_TT_VER와 같다
Figure pct00053
treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다
Figure pct00054
cbWidth × cbHeight는 64와 같고 modeType은 MODE_TYPE_INTER와 같다
- 그렇지 않으면 변수 allowTtSplit을 TRUE로 설정할 수 있다.
이웃 블록 가용성을 위한 유도 과정은 다음과 같이 설명될 수 있다.
이웃 블록 가용성에 대한 유도 프로세스에 대한 입력은 다음을 포함할 수 있다:
a) 현재 픽처의 왼쪽 위 루마 샘플에 대한 현재 블록의 왼쪽 위 샘플의 루마 위치(xCurr, yCurr),
b) 현재 픽처의 좌측 상단 루마 샘플에 대한 이웃 블록에 의해 덮인 루마 위치(xNbY, yNbY),
c) 가용성이 예측 모드에 의존하는지를 지정하는 변수 checkPredModeY,
d) 현재 블록의 색상 구성요소를 지정하는 변수 cIdx.
도출 프로세스의 출력은 availableN으로 표시된 위치(xNbY, yNbY)를 커버하는 이웃 블록의 가용성을 포함할 수 있다. 인접 블록 가용성(또는 availableN)은 다음과 같이 유도될 수 있다:
- 다음 조건 중 하나 이상이 참이면, availableN은 거짓으로 설정된다:
Figure pct00055
xNbY는 0보다 작다
Figure pct00056
yNbY는 0보다 작다
Figure pct00057
xNbY는 pic_width_in_luma_samples보다 크거나 같다
Figure pct00058
yNbY는 pic_height_in_luma_samples보다 크거나 같다
Figure pct00059
IsAvailable[cIdx][xNbY][yNbY]는 FALSE와 같다
Figure pct00060
인접 블록이 현재 블록과 다른 슬라이스에 포함되어 있다
Figure pct00061
인접 블록이 현재 블록과 다른 타일에 포함되어 있다
Figure pct00062
entropy_coding_sync_enabled_flag는 1이고 (xNbY >> CtbLog2SizeY)는 (xCurr >> CtbLog2SizeY) + 1 이상이다.
- 그렇지 않으면 변수 availableN을 TRUE로 설정할 수 있다.
다음 조건이 모두 참이면 availableN 변수를 FALSE로 설정할 수 있다:
- checkPredModeY는 TRUE와 같다.
CuPredMode[0][xNbY][yNbY]는 CuPredMode[0][xCurr][yCurr]와 동일하지 않는다. 위에서 설명한 바와 같이, QT 분할을 위한 조건 중 하나(즉, 조건 (b))는 cbSize/SubWidthC가 최소 허용 크로마 QT 리프 노드 크기(예: MinQtSizeC)보다 작거나 같은지를 확인하는 것을 포함한다. cbSize는 루마 샘플에서 크로마 블록의 코딩 블록 크기일 수 있고, SubWidthC는 크로마 수평 서브샘플링 인자(또는 수평 방향에 대한 크로마 서브샘플링 인자)일 수 있다. 일부 예들에서, cbSize/SubWidthC는 크로마 샘플들에서 크로마 블록의 폭에 대응한다. 크로마 포맷이 4:2:2인 경우 가로 방향과 세로 방향의 서브샘플링이 다를 수 있으므로 크로마 샘플에서 크로마 블록의 너비는 크로마 샘플에서 크로마 블록의 높이보다 작을 수 있다. 따라서, QT 분할을 비활성화(또는 허용하지 않음)하는 조건으로 MinQtSizeC보다 작거나 같은 cbSize/SubWidthC를 사용하는 것은 예를 들어 cbSize가 MinQtSizeC와 같을 때 크로마 QT 분할을 비활성화할 가능성이 더 높을 수 있고, 그리고 일부 예에서 크로마 성분에 대한 코딩 성능이 낮을 수 있다.
위에서 설명된 크로마 QT 분할에 대한 조건 (b)는 더 많은 QT 분할을 허용하도록 수정될 수 있다. 본 개시의 관점들에 따르면, 수정된 조건 (b)는 크로마 블록 높이(또는 크로마 블록의 높이)를 최소 허용 크로마 QT 리프 노드 크기(QT 분할에 대한 최소 허용 크로마 블록 크기라고도 함)(MinQtSizeC)와 비교할 수 있다.
본 개시의 관점들에 따르면, 위에서 설명된 허용된 쿼드 분할 프로세스는 조건 (b)를 수정함으로써 수정될 수 있는 반면, 다른 조건들(예를 들어, 조건 (a) 및 (c)-(e))은 변경되지 않은 채로 유지된다. 수정된 조건(예: 조건 b'로 표시)은 다음과 같이 설명할 수 있다.
Figure pct00063
(b') treeType은 DUAL_TREE_CHROMA와 같고 cbSize/SubHeightC는 MinQtSizeC보다 작거나 같다.
허용된 쿼드 분할 프로세스의 입력은 위에서 설명된 것과 동일하게 유지될 수 있는 반면 허용된 쿼드 분할 프로세스의 출력(예를 들어, 변수 allowSplitQt)의 유도는 아래와 같이 업데이트될 수 있다.
- 다음 조건 중 하나 이상이 참이면 변수 allowSplitQt를 FALSE로 설정할 수 있으며 QT 분할이 허용되지 않는다:
Figure pct00064
(a) treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 같고 cbSize가 MinQtSizeY보다 작거나 같다
Figure pct00065
(b') treeType이 DUAL_TREE_CHROMA와 같고 cbSize/SubHeightC가 MinQtSizeC보다 작거나 같다
Figure pct00066
(c) mttDepth가 0과 같지 않다
Figure pct00067
(d) treeType은 DUAL_TREE_CHROMA와 같고 ( cbSize/SubWidthC )는 4보다 작거나 같다
Figure pct00068
(e) treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다
- 그렇지 않으면 allowSplitQt를 TRUE로 설정할 수 있다. 따라서 QT 분할이 허용될 수 있다.
일 실시예에서, 최소 허용 크로마 QT 리프 노드 크기의 단위, 예를 들어 MinQtSizeC는 크로마 샘플에 있다.
본 개시의 관점들에 따르면, 코딩된 비디오 비트스트림으로부터의 파티션 정보가 디코딩될 수 있다. 파티션 정보는 별도의 코딩 트리 구조가 예를 들어 CTU에서 크로마 성분(들)(예를 들어, 크로마 CTB(들)) 및 대응하는 루마 성분(예를 들어, 루마 CTB)을 파티션하기 위해 사용될 수 있음을 나타낼 수 있다. 파티션 정보는 이중 트리가 사용되고 이중 트리의 크로마 코딩 트리 구조(예를 들어, DUAL_TREE_CHROMA로 표시됨)가 예를 들어 CTU에서 크로마 블록에 적용될 수 있음을 나타낼 수 있다. 따라서 일 예에서 treeType은 DUAL_TREE_CHROMA와 같다. 파티션 정보는 루마 샘플에서 크로마 블록의 블록 크기(예: cbSize), 크로마 수직 서브샘플링 인자(예: SubHeightC) 및 최소 허용 크로마 4차 트리(QT) 리프 노드 크기(예: MinQtSizeC)를 추가로 나타낼 수 있다. 크로마 블록에 대해 QT 분할이 허용되지 않는지는 적어도 루마 샘플에서 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자 및 최소 허용 크로마 QT 리프 노드 크기에 기초하여 결정될 수 있다. 크로마 블록에 대해 QT 분할이 허용되지 않는다는 것에 응답하여, 크로마 블록에 대해 이진 트리 분할 및 삼진 트리 분할 중 적어도 하나가 허용되지 않는지가 결정될 수 있다.
일 실시예에서, 파티션 정보는 최소 허용 크로마 QT 리프 노드 크기(예를 들어, MinQtSizeC)가 크로마 샘플에 있다는 것을 추가로 나타낼 수 있다. QT 분할은 루마 샘플의 크로마 블록의 블록 크기를 크로마 수직 서브샘플링 인자로 나눈 값이 크로마 샘플의 최소 허용 크로마 QT 리프 노드 크기( 예를 들어, cbSize/SubHeightC는 크로마 샘플에서 MinQtSizeC보다 작거나 같다.
일 예에서, 크로마 수직 서브샘플링 인자로 나눈 루마 샘플의 크로마 블록의 블록 크기는 크로마 샘플의 크로마 블록의 높이이다. 크로마 샘플의 크로마 블록 높이가 크로마 샘플의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은 경우(예: cbSize/SubHeightC가 크로마 샘플의 MinQtSizeC보다 작거나 같음), QT 분할 또는 크로마 블록에 대한 QT 분할은 허용되지 않을 수 있다. 따라서 예에서 수정된 조건(b')은 허용된 쿼드 분할 프로세스에서 사용된다.
다른 조건(예를 들어, 조건 (a) 및 (c)-(e) 중 하나 이상)은 QT 분할이 허용 또는 허용될 수 있는지를 결정하기 위해 추가로 검사될 수 있다. 일 실시예에서, 파티션 정보는 크로마 수평 서브샘플링 인자(예를 들어, SubWidthC), 크로마 블록이 MTT 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이(예를 들어, mttDepth), 및 예측 중 하나 이상을 더 나타낼 수 있다. 크로마 블록에 대한 모드 유형(예: modeType). 크로마 블록에 대해 QT 분할이 허용되지 않는지는 루마 샘플에서 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자, 크로마 샘플에서 최소 허용 크로마 QT 리프 노드 크기 및 크로마 수평 서브샘플링 인자, MTT 깊이 및 예측 모드 유형 중 하나 이상을 기반으로 결정할 수 있다.
일 예에서, 크로마 샘플에서의 크로마 블록의 높이에 응답하여, 예를 들어 루마 샘플에서의 크로마 블록의 블록 크기는 최소 허용 크로마 QT 리프보다 큰 크로마 수직 서브샘플링 인자로 나누어진다. 크로마 샘플의 노드 크기, 다른 조건 중 하나 이상은 허용된 쿼드 분할 프로세스에서 추가로 확인할 수 있다. 크로마 블록에 대해 QT 분할이 허용되지 않는지는 루마 샘플에서 크로마 블록의 블록 크기, 크로마 수평 서브샘플링 인자, MTT 깊이 및 예측 모드 유형 중 하나 이상에 기초하여 결정될 수 있다.
일 예에서, 크로마 코딩 트리 구조(예를 들어, 듀얼 트리에서 DUAL_TREE_CHROMA 또는 treeType이 DUAL_TREE_CHROMA와 동일함)가 크로마 블록에 적용되고 크로마 샘플에서 크로마 블록의 높이는 크로마 샘플에서 최소 허용 크로마 QT 리프 노드 크기보다 큰 것으로 결정된다. 따라서, 크로마 블록에 대한 QT 분할이 허용되지 않는지는 루마 샘플 내의 크로마 블록의 블록 크기, 크로마 수평 서브샘플링 인자, MTT 깊이 및 예측 모드 유형에 기초하여 더 결정될 수 있다. 예를 들어, 다음 조건 중 적어도 하나가 참인 경우 QT 분할은 크로마 블록에 대해 허용되지 않는다(예: allowSplitQt는 FALSE와 동일하게 설정됨): (c) MTT 깊이가 0과 같지 않음(예: 크로마가 블록은 MTT 노드임), (d') 크로마 샘플에서 크로마 블록의 너비(예: cbSize/SubWidthC)는 4보다 작거나 같음, (e') 예측 모드 유형(예: modeType)은 인트라 예측 모드(또는 인트라 모드) 및 IBC 모드가 허용된다는 것을 나타내는 MODE_TYPE_INTRA이다. 조건 (c) 및 (d')-(e')가 거짓이고 크로마 샘플의 크로마 블록 높이가 크로마에서 허용되는 최소 크로마 QT 리프 노드 크기보다 큰 경우 QT 분할이 허용되도록 결정할 수 있다. 시료. 조건 (d')-(e') 및 DUAL_TREE_CHROMA와 동일한 treeType은 각각 조건 (d)-(e)에 대응한다.
일반적으로, 단일 트리에서 사용되는 것과 같은 파티션 크기 관련 변수(예를 들어, 루마 성분 및 채도 성분(들)(선택 사항)에 대한 SINGLE_TREE), 루마 코딩 트리 구조(예를 들어, 루마 성분 또는 DUAL_TREE_LUMA) 및/또는 크로마 코딩 트리 구조(예: 크로마 성분(들) 또는 DUAL_TREE_CHROMA에 대한 이중 트리)는 루마 샘플 또는 크로마 샘플을 사용하여 지정될 수 있으며 루마 샘플과 크로마 샘플 중 어느 것이 명확하지 않을 수 있다. 크로마 샘플은 파티션 크기 관련 변수를 지정하는 데 사용된다. 크로마 파티션 크기 관련 변수가 루마 샘플 단위 또는 크로마 샘플 단위를 갖는지를 지정하는 것이 유리할 수 있다.
일 실시예에서, 루마 샘플의 단위는 예를 들어, 크로마 코딩 트리 구조(예를 들어, DUAL_TREE_CHROMA)에서 사용되는 크로마 블록 크기 또는 크로마 파티션 크기 관련 변수를 설명하는 데 사용될 수 있다. 예를 들어, 최소 허용 크로마 QT 리프 노드 크기(예: MinQtSizeC)는 루마 샘플에서 설명될 수 있다. 크로마 샘플의 해당 블록 크기는 표 1의 크로마 서브샘플링 비율(예: SubWidthC 및 SubHeightC)에 따라 유도될 수 있다.
예를 들어, 크로마 포맷이 4:2:2일 때, 루마 샘플의 변수 MinQtSizeC(또는 최소 허용 크로마 QT 리프 노드 크기)는 SubWidthC 이후 크로마 샘플의 MinQtSizeC/SubWidthC(또는 MinQtSizeC/2)에 대응한다. 따라서 루마 샘플의 변수 MinQtSizeC가 16(루마 샘플)일 때 최소 허용 크로마 QT 리프 노드 크기는 16(루마 샘플) 또는 8(크로마 샘플)이다.
크로마 포맷이 4:4:4일 때, 루마 샘플의 변수 MinQtSizeC는 크로마 샘플의 MinQtSizeC/SubWidthC에 대응하며, 이는 SubWidthC가 1이기 때문에 크로마 샘플의 MinQtSizeC와 동일하다.
일 실시예에서, 인트라 듀얼 트리가 사용될 때, 가변 모드 유형(예를 들어, modeType)은 MODE_INTRA(인트라 모드가 사용될 수 있음을 나타냄), MODE_IBC(IBC 모드가 사용될 수 있음을 나타냄), 또는 MODE_TYPE_INTRA(인트라 및 IBC 모드를 사용할 수 있음을 나타냄) 중 하나 이상일 수 있다. 예에서, 인트라 듀얼 트리가 사용될 때, 가변 모드 유형(예를 들어, modeType)은 임의의 적절한 비인터 예측 모드일 수 있다.
최소 허용 크로마 코딩 블록 크기는 최소 허용 루마 코딩 블록 크기보다 작을 수 있다. 파티션 정보는 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타낼 수 있다. 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작을 수 있다.
최소 허용 크로마 QT 리프 노드 크기는 최소 허용 luma QT 리프 노드 크기보다 작을 수 있다. 파티션 정보는 루마 샘플에서 허용되는 최소 루마 QT 리프 노드 크기를 나타낼 수 있다. CTU의 QT 분할이 허용되는 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기는 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기(또는 CTU의 QT 분할로 인해 생기는 최소 루마 리프 블록 크기)보다 작을 수 있다.
본 개시의 관점들에 따르면, 최소 허용 크로마 QT 리프 노드 크기(예를 들어, MinQtSizeC)와 같은 크로마 파티셔닝 유닛 크기들은 루마 샘플들에서 설명될 수 있다. 위에서 설명한 바와 같이 크로마 블록에 대해 허용된 쿼드 분할 프로세스는 조건 (b)를 수정하여 수정될 수 있지만 다른 조건(예: 조건 (a) 및 (c)-(e))은 변경되지 않은 상태로 유지된다. 수정된 조건(조건(b'')으로 표시됨)은 다음과 같이 설명할 수 있다.
Figure pct00069
(b'') treeType은 DUAL_TREE_CHROMA와 같고 cbSize는 MinQtSizeC보다 작거나 같다.
여기서 cbSize는 루마 샘플의 크로마 블록 크기이고 MinQtSizeC는 루마 샘플의 블록 크기이다.
허용된 쿼드 분할 프로세스의 입력은 위에서 설명된 것과 동일하게 유지될 수 있는 반면 허용된 쿼드 분할 프로세스의 출력(예를 들어, 변수 allowSplitQt)의 유도는 아래와 같이 업데이트될 수 있다.
- 다음 조건 중 하나 이상이 참이면 변수 allowSplitQt를 FALSE로 설정할 수 있으며 QT 분할이 허용되지 않는다:
Figure pct00070
(a) treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 같고 cbSize가 MinQtSizeY보다 작거나 같다
Figure pct00071
(b'') treeType은 DUAL_TREE_CHROMA와 같고 cbSize는 MinQtSizeC보다 작거나 같다
Figure pct00072
(c) mttDepth가 0과 같지 않다
Figure pct00073
(d) treeType은 DUAL_TREE_CHROMA와 같고 ( cbSize/SubWidthC )는 4보다 작거나 같다
Figure pct00074
(e) treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다.
- 그렇지 않으면 allowSplitQt를 TRUE로 설정할 수 있다. 따라서 QT 분할이 허용될 수 있다.
본 개시의 관점들에 따르면, 파티션 정보는 코딩된 비디오 비트스트림으로부터 디코딩될 수 있다. 파티션 정보는 듀얼 트리의 크로마 코딩 트리 구조(예를 들어, DUAL_TREE_CHROMA 또는 treeType이 DUAL_TREE_CHROMA와 동일)가 크로마 블록에 적용되었음을 나타낼 수 있다. 파티션 정보는 루마 샘플에서 크로마 블록의 블록 크기(예: cbSize) 및 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기(예: MinQtSizeC)를 추가로 나타낼 수 있다. 루마 샘플에서 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지 여부가 결정될 수 있다. 루마 샘플의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기 이하인 것에 응답하여, QT 분할은 크로마 블록에 대해 허용되지 않는 것으로 결정될 수 있다.
일 예에서, 파티션 정보는 크로마 블록이 MTT 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이(예를 들어, mttDepth), 크로마 수평 서브샘플링 인자(예를 들어, SubWidthC), 및 예측 모드를 더 나타낼 수 있다. 크로마 블록에 대한 유형(예: modeType). 루마 샘플의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 큰 경우, 다음 조건 중 적어도 하나가 참인 경우 QT 분할이 크로마 블록에 대해 허용되지 않는 것으로 결정될 수 있다: (c) 크로마 블록이 MTT 노드임을 나타내는 MTT 깊이가 0과 같지 않고, (d') 루마 샘플에서 크로마 블록의 블록 크기를 크로마 수평 서브샘플링 인자로 나눈 값이 4 이하( 또는 cbSize/SubWidthC ≤ 4)이고, (e') 예측 모드 유형(또는 modeType)은 인트라 모드 및 IBC 모드가 허용된다는 것을 나타내는 MODE_TYPE_INTRA이다. 예를 들어, QT 분할은 조건 (c), (d') 및 (e')가 거짓인 경우에 따라 허용되는 것으로 결정된다.
본 개시의 관점들에 따르면, 최소 허용 크로마 QT 리프 노드 크기(예를 들어, MinQtSizeC)와 같은 크로마 파티셔닝 유닛 크기들은 루마 샘플들에서 설명될 수 있다. 위에서 설명한 바와 같이 크로마 블록에 대해 허용된 쿼드 분할 프로세스는 조건 (b)를 수정하여 수정될 수 있지만 다른 조건(예: 조건 (a) 및 (c)-(e))은 변경되지 않은 상태로 유지된다. 수정된 조건(조건(b'''로 표시됨)은 다음과 같이 설명할 수 있다:
Figure pct00075
(b''') treeType은 DUAL_TREE_CHROMA와 같고 cbSize는 (MinQtSizeC×SubHeightC/SubWidthC) 이하이다.
허용된 쿼드 분할 프로세스의 입력은 위에서 설명된 것과 동일하게 유지될 수 있는 반면 허용된 쿼드 분할 프로세스의 출력(예를 들어, 변수 allowSplitQt)의 유도는 아래와 같이 업데이트될 수 있다.
- 다음 조건 중 하나 이상이 참이면 변수 allowSplitQt를 FALSE로 설정할 수 있으며 QT 분할이 허용되지 않는다:
Figure pct00076
(a) treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 같고 cbSize가 MinQtSizeY보다 작거나 같다
Figure pct00077
(b''') treeType은 DUAL_TREE_CHROMA와 같고 cbSize는 (MinQtSizeC×SubHeightC/SubWidthC) 이하이다
Figure pct00078
(c) mttDepth가 0과 같지 않다
Figure pct00079
(d) treeType은 DUAL_TREE_CHROMA와 같고 ( cbSize/SubWidthC )는 4보다 작거나 같다
Figure pct00080
(e) treeType은 DUAL_TREE_CHROMA와 같고 modeType은 MODE_TYPE_INTRA와 같다.
- 그렇지 않으면 allowSplitQt를 TRUE로 설정할 수 있다. 따라서 QT 분할이 허용될 수 있다.
조건 (b''')를 포함하는 상기 변형은 다음과 같이 설명될 수 있다. 위에서 설명된 바와 같이, 일 실시예에서, 코딩된 비디오 비트스트림으로부터의 파티션 정보가 디코딩될 수 있다. 파티션 정보는 듀얼 트리의 크로마 코딩 트리 구조(예를 들어, DUAL_TREE_CHROMA로 표시됨)가 크로마 블록에 적용될 수 있음을 나타낼 수 있다. 파티션 정보는 루마 샘플에서 크로마 블록의 블록 크기(예: cbSize), 크로마 수직 서브샘플링 인자(예: SubHeightC) 및 최소 허용 크로마 4차 트리(QT) 리프 노드 크기(예: MinQtSizeC)를 추가로 나타낼 수 있다. 크로마 블록에 대해 QT 분할이 허용되지 않는지는 적어도 루마 샘플에서 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자 및 최소 허용 크로마 QT 리프 노드 크기에 기초하여 결정될 수 있다. 크로마 블록에 대해 QT 분할이 허용되지 않는다는 것에 응답하여, 크로마 블록에 대해 이진 트리 분할 및 삼진 트리 분할 중 적어도 하나가 허용되지 않는지가 결정될 수 있다. 예에서, 파티션 정보는 크로마 수평 서브샘플링 인자(예를 들어, SubWidthC)를 추가로 나타내고 최소 허용 크로마 QT 리프 노드 크기(예를 들어, MinQtSizeC)가 루마 샘플에 있음을 나타낸다. 따라서, 크로마 블록에 대해 QT 분할이 허용되지 않는지는 적어도 루마 샘플에서 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자, 크로마 수평 서브샘플링 인자 및 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 기초하여 결정될 수 있다.
일 실시예에서, 크로마 수직 서브샘플링 인자(예를 들어, SubHeightC)로 곱해지고 크로마 수평 서브샘플링 인자( 예를 들어, SubWidthC)가 결정될 수 있다. 따라서 파라미터는 MinQtSizeC×SubHeightC/SubWidthC와 같다. 또한, QT 분할은 위에서 설명된 바와 같이 루마 샘플(예를 들어, cbSize)에서 크로마 블록의 블록 크기가 파라미터보다 작거나 같을 때 크로마 블록에 대해 허용되지 않는 것으로 결정될 수 있다.
일 예에서, 파티션 정보는 크로마 블록이 MTT 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이(예를 들어, mttDepth) 및 크로마 블록에 대한 예측 모드 유형(예를 들어, modeType)을 더 나타낼 수 있다. 따라서, 크로마 블록에 대해 QT 분할이 허용되지 않는지는 MTT 깊이 및 예측 모드 유형에 기초하여 더 결정될 수 있다. 예를 들어, QT 분할은 다음 조건 중 하나가 참인 경우 크로마 블록에 대해 허용되지 않는 것으로 결정될 수 있다: (b'''') 루마 샘플에서 크로마 블록의 블록 크기(예: cbSize)는 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 크로마 수직 서브샘플링 인자를 곱하고 크로마 수평 서브샘플링 인자로 나눈 값보다 작거나 같고(또는 cbSize ≤ MinQtSizeC×SubHeightC/SubWidthC인 경우), (c) MTT 깊이(예: mttDepth) 크로마 블록이 MTT 노드임을 나타내는 0과 같지 않고, (d') 루마 샘플에서 크로마 블록의 블록 크기를 크로마 수평 서브샘플링 인자로 나눈 값이 4(또는 cbSize/SubWidthC ≤ 4)보다 작거나 같고, (e') 예측 모드 타입(또는 modeType)은 인트라 예측 모드와 IBC 모드가 사용될 수 있음을 나타내는 MODE_TYPE_INTRA이다. (b''''), (c), (d'), (e') 조건이 거짓일 때 QT 분할이 허용되는 것으로 결정할 수 있다. 조건(b'''')과 DUAL_TREE_CHROMA와 같은 treeType은 조건(b''')에 대응한다. 전술한 바와 같이 조건 (d')-(e') 및 DUAL_TREE_CHROMA와 동일한 treeType은 조건 (d)-(e)에 각각 대응한다. 따라서 (b'''), (c), (d), (e) 조건이 거짓일 때 QT 분할이 허용되는 것으로 결정할 수 있다.
최소 크로마 코딩 블록 크기는 최소 허용 루마 코딩 블록 크기와 별도로 시그널링될 수 있다. 루마 샘플에서의 최소 크로마 코딩 블록 크기는 루마 샘플에서의 최소 허용 루마 코딩 블록 크기와 별도로 시그널링될 수 있다.
일부 예들에서, VVC에서와 같이 최소 크로마 코딩 블록 크기 관련 변수(예를 들어, MinCbLog2SizeC)가 사용된다. 그렇지만, 최소 크로마 코딩 블록 크기를 유도하는 방법은 정의되지 않을 수 있다.
일 실시예에서, 코딩된 비디오 비트스트림은 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 표시하는 크로마 신택스 요소 및 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 표시하는 루마 신택스 요소를 포함한다.
인트라 듀얼 트리가 사용될 때, 신택스 요소(예를 들어, 크로마 신택스 요소, log2_min_chroma_coding_block_size_minus2)는 루마 샘플에서의 최소 크로마 코딩 블록 크기를 나타내기 위해 예를 들어 코딩된 비디오 비트스트림에서 시그널링될 수 있다. 상이한 신택스 요소(예를 들어, 루마 신택스 요소)는 루마 샘플에서 허용되는 최소 루마 코딩 블록 크기를 나타내기 위해 시그널링될 수 있다. 루마 샘플에서의 최소 크로마 코딩 블록 크기는 루마 샘플에서의 최소 허용 루마 코딩 블록 크기와 다를 수 있다. 예를 들어 루마 샘플에서의 최소 크로마 코딩 블록 크기(예: MinCbSizeC)는 다음과 같이 계산할 수 있다:
MinCbLog2SizeC = log2_min_chroma_coding_block_size_minus2 + 2 (39)
MinCbSizeC = 1 << MinCbLog2SizeC (40)
예에서, 신택스 테이블은 박스(2601)에 의해 표시된 바와 같이 신택스 요소(예를 들어, log2_min_chroma_coding_block_size_minus2)를 예시하기 위해 표 6(도 26)에 도시된 바와 같이 수정될 수 있다.
대응하는 의미론은 다음과 같이 설명될 수 있다: log2_min_chroma_coding_block_size_minus2 plus 2는 루마 샘플에서의 최소 크로마 코딩 블록 크기를 지정할 수 있다. log2_min_chroma_coding_block_size_minus2의 값 범위는 0부터 log2_ctu_size_minus5 + 3까지의 범위일 수 있다. 변수 MinCbLog2SizeC 및 MinCbSizeC는 식 39-40를 사용하여 유도될 수 있다.
루마 샘플에서의 최소 크로마 코딩 블록 크기(또는 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기)는 루마 샘플에서의 최소 루마 코딩 블록 크기(또는 루마 샘플에서의 최소 허용 루마 코딩 블록 크기)로부터 유도될 수 있다. 일 예에서 MinCbLog2SizeC는 다음 방정식을 사용하여 유도될 수 있다:
MinCbLog2SizeC = MinCbLog2SizeY (41)
일부 실시예에서, MinQtLog2SizeIntraC가 max(2, MinCbLog2SizeY) 또는 max(2, MinCbLog2SizeC)보다 작지 않다는 순응 제약이 있다.
도 27은 본 개시의 실시예에 따른 프로세스(2700)를 개략적으로 나타내는 흐름도를 도시한다. 프로세스(2700)는 코딩된 비디오 시퀀스의 픽처에서 블록(예를 들어, CB)을 재구성하는 데 사용될 수 있다. 프로세스(2700)는 블록의 재구성에 사용되어 재구성 중인 블록에 대한 예측 블록을 생성할 수 있다. 블록이라는 용어는 예측 블록, CB, CU 등으로 해석될 수 있다. 다양한 실시예에서, 프로세스(2700)는 단말 장치(310), (320), (330) 및 (340)의 프로세싱 회로와 같은 프로세싱 회로, 비디오 인코더(403)의 기능을 수행하는 프로세싱 회로, 비디오 디코더(410)의 기능을 수행하는 프로세싱 회로, 비디오 디코더(510)의 기능을 수행하는 프로세싱 회로, 비디오 인코더(603)의 기능을 수행하는 프로세싱 회로에 의해 실행된다. 일부 실시예에서, 프로세스(2700)는 소프트웨어 명령으로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어를 실행할 때, 프로세싱 회로는 프로세스(2700)를 수행한다. 처리는 (S2701)에서 시작하여 (S2710)로 진행한다. 예에서, 블록은 크로마 CB와 같은 크로마 블록이다.
(S2710)에서는 코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩할 수 있다. 파티션 정보는 크로마 블록에 듀얼 트리(예를 들어, treeType이 DUAL_TREE_CHROMA임)의 크로마 코딩 트리 구조가 적용되었음을 나타낼 수 있다. 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기(예: cbSize) 및 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기(예: MinQtSizeC)를 추가로 나타낼 수 있다.
(S2720)에서, 루마 샘플의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지를 판단할 수 있다. 루마 샘플에서의 크로마 블록의 블록 크기가 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은 것으로 결정되면, 과정(2700)은 (S2730)으로 진행한다. 그렇지 않은 경우, 과정(2700)은 (S2740)으로 진행한다.
(S2730)에서, 크로마 블록에 대해 QT 분할이 허용되지 않는 것으로 결정할 수 있다. 처리(2700)는 (S2799)로 진행하여 종료한다.
(S2740)에서, QT 분할이 허용되지 않는지를 결정하기 위해 하나 이상의 다른 조건이 확인될 수 있다. 다른 조건은 다음을 포함할 수 있다: MTT 깊이는 크로마 블록이 MTT 노드임을 나타내고, 크로마 수평 서브샘플링 인자로 나눈 루마 샘플의 크로마 블록 크기는 4(또는 cbSize/SubWidthC ≤ 4)보다 작거나 같고, 및/또는 예측 모드 유형(또는 modeType)은 인트라 예측 모드 및 IBC 모드가 허용된다는 것을 나타내는 MODE_TYPE_INTRA이다. QT 분할은 하나 이상의 다른 조건 중 적어도 하나가 참인 경우 크로마 블록에 대해 허용되지 않는 것으로 결정될 수 있다(예를 들어, allowSplitQt는 FALSE와 동일하게 설정된다). 다른 조건이 거짓이고 크로마 샘플의 크로마 블록 높이가 크로마 샘플의 최소 허용 크로마 QT 리프 노드 크기보다 큰 경우 QT 분할이 허용되도록 결정할 수 있다. 처리(2700)는 (S2799)로 진행하여 종료한다.
프로세스(2700)는 적절하게 적용될 수 있다. 프로세스(2700)의 단계(들)는 수정 및/또는 생략될 수 있다. 추가 단계를 추가할 수 있다. 적절한 구현 순서를 사용할 수 있다.
도 28은 본 개시의 실시예에 따른 프로세스(2800)를 개략하는 흐름도를 도시한다. 프로세스(2800)는 코딩된 비디오 시퀀스의 픽처에서 블록(예를 들어, CB)을 재구성하는 데 사용될 수 있다. 프로세스(2800)는 블록의 재구성에 사용되어 재구성 중인 블록에 대한 예측 블록을 생성할 수 있다. 블록이라는 용어는 예측 블록, CB, CU 등으로 해석될 수 있다. 다양한 실시예에서, 프로세스(2800)는 비디오 인코더(403)의 기능을 수행하는 프로세싱 회로인 단말 장치(310, 320, 330, 340)의 프로세싱 회로, 비디오 디코더(410)의 기능을 수행하는 프로세싱 회로, 비디오 디코더(510)의 기능을 수행하는 프로세싱 회로, 비디오 인코더(603)의 기능을 수행하는 프로세싱 회로에 의해 실행된다. 일부 실시예에서, 프로세스(2800)는 소프트웨어 명령어로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어를 실행할 때, 프로세싱 회로는 프로세스(2800)를 수행한다. 처리는 (S2801)에서 시작하여 (S2810)로 진행한다. 예에서, 블록은 크로마 CB와 같은 크로마 블록이다.
(S2810)에서, 코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩할 수 있다. 파티션 정보는 듀얼 트리(예를 들어, treeType이 DUAL_TREE_CHROMA임)의 크로마 코딩 트리 구조가 크로마 블록에 적용되었음을 나타낼 수 있다. 파티션 정보는 루마 샘플에서 크로마 블록의 블록 크기(예: cbSize), 크로마 수직 서브샘플링 인자(예: SubHeightC) 및 최소 허용 크로마 QT 리프 노드 크기(예: MinQtSizeC)를 추가로 나타낼 수 있다.
(S2820)에서, 크로마 블록에 대한 QT 분할이 허용되지 않는지는 위에서 설명한 대로 적어도 루마 샘플의 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자, 및 최소 허용 크로마 QT 리프 노드 크기에 기초하여 결정될 수 있다.
(S2830)에서, QT 분할이 허용되지 않는 것으로 결정되면, 크로마 블록에 대해 이진 트리 분할 및 삼진 트리 분할 중 적어도 하나가 허용되지 않는지를 결정할 수 있다. 프로세스(2800)는 (S2899)로 진행하여 종료한다.
프로세스(2800)는 적절하게 적용될 수 있다. 프로세스(2800)의 단계(들)는 수정 및/또는 생략될 수 있다. 추가 단계를 추가할 수 있다. 적절한 구현 순서를 사용할 수 있다.
본 개시에서의 실시예는 개별적으로 사용되거나 임의의 순서로 결합될 수 있다. 또한, 방법(또는 실시예), 인코더 및 디코더 각각은 프로세싱 회로(예를 들어, 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 일례에서, 하나 이상의 프로세서는 비 일시적 컴퓨터 판독 가능 매체에 저장된 프로그램을 실행한다.
전술한 기술은 컴퓨터 판독 가능 명령어를 사용하여 컴퓨터 소프트웨어로 구현될 수 있고 하나 이상의 컴퓨터 판독 가능 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 30은 개시된 발명의 특정 실시예를 구현하기에 적합한 컴퓨터 시스템(2900)을 도시한다.
컴퓨터 소프트웨어는 임의의 적절한 기계어 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있으며, 이는 어셈블리, 컴파일, 링크 또는 유사한 메커니즘 하에서 해석(interpretation), 마이크로 코드 실행 및 하나 이상의 컴퓨터 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 등을 통해 또는 직접 실행될 수 있는 명령을 포함하는 코드를 생성한다.
명령은 예를 들어 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰, 게임 장치, 사물 인터넷 장치 등을 포함하는 다양한 유형의 컴퓨터 또는 그 컴포넌트에서 실행될 수 있다.
컴퓨터 시스템(2900)에 대해 도 29에 도시된 컴포넌트는 본질적으로 예시적이며 본 개시 내용의 실시예를 구현하는 컴퓨터 소프트웨어의 사용 또는 기능의 범위에 대한 어떠한 제한도 제안하려는 것이 아니다. 컴포넌트의 구성은 컴퓨터 시스템(2900)의 예시적인 실시예에 예시된 컴포넌트의 임의의 하나 또는 조합과 관련된 임의의 종속성 또는 요구 사항을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(2900)은 특정 휴먼 인터페이스 입력 장치를 포함할 수 있다. 이러한 휴먼 인터페이스 입력 장치는 촉각 입력(예: 키 입력, 스와이프, 데이터 장갑 움직임), 오디오 입력(예: 음성, 박수), 시각적 입력(예: 제스처), 후각 입력(도시되지 않음)을 통해 한 명 이상의 인간 사용자의 입력에 응답할 수 있다. 휴먼 인터페이스 장치는 또한 오디오(예: 음성, 음악, 주변 소리), 이미지(예: 스캔 한 이미지, 정지 이미지 카메라로부터 획득하는 픽처 이미지), 비디오(예: 2 차원 비디오, 입체 비디오를 포함한 3차원 비디오)와 같이 사람의 의식적 입력과 직접 관련이 없는 특정 미디어를 캡처하는 데 사용할 수도 있다.
입력 휴먼 인터페이스 장치는 키보드(2901), 마우스(2902), 트랙 패드(2903), 터치 스크린(1710), 데이터 장갑(도시되지 않음), 조이스틱(2905), 마이크(2906), 스캐너(2907), 카메라(2908) 중 하나 이상을 포함할 수 있다.
컴퓨터 시스템(2900)은 또한 특정 휴먼 인터페이스 출력 장치를 포함할 수 있다. 이러한 인간 인터페이스 출력 장치는 예를 들어 촉각 출력, 소리, 빛 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 휴먼 인터페이스 출력 장치는, 촉각 출력 장치(예: 터치 스크린(1710), 데이터 장갑(도시되지 않음) 또는 조이스틱(2905)에 의한 촉각 피드백을 포함하지만, 입력 장치로서 기능하지 않는 촉각 피드백 장치일 수도 있다), 오디오 출력 장치(예: 스피커(2909), 헤드폰(표시되지 않음)), 시각 출력 장치(예: CRT 스크린, LCD 스크린, 플라즈마 스크린, OLED 스크린을 포함하는 스크린(1710)를 포함하며, 이들 각각은 터치 스크린 입력 기능을 가지고 있을 수도 없을 수도 있고, 촉각 피드백 기능을 가지고 있을 수도 없을 수도 있으며, 일부는 2차원 시각 출력 또는 스테레오 그래픽 출력, 가상 현실 안경(도시되지 않음), 홀로그래픽 디스플레이 및 스모크 탱크(smoke tank, 도시되지 않음)와 같은 수단을 통한 3차원 출력이 가능하다), 및 프린터(도시되지 않음)를 포함할 수 있다.
컴퓨터 시스템(2900)은 또한 사람이 액세스할 수 있는 저장 장치 및 이와 연관된 매체로서, CD/DVD를 가진 CD/DVD 등의 매체(2921)를 가진 CD/DVD ROM/RW(2920)를 포함하는 광학 매체, 썸 드라이브(thumb-driver)(2922), 탈착식 하드 드라이브 또는 솔리드 스테이트 드라이브(2923), 테이프 및 플로피 디스크(도시되지 않음)와 같은 레거시 자기 매체, 보안 동글(도시되지 않음)과 같은 특수 ROM/ASIC/PLD 기반 장치 등을 포함한다.
통상의 기술자는 또한 현재 개시된 발명과 관련하여 사용되는 "컴퓨터 판독 가능 매체"라는 용어가 전송 매체, 반송파 또는 다른 일시적 신호를 포함하지 않는다는 것을 이해해야한다.
컴퓨터 시스템(2900)은 또한 하나 이상의 통신 네트워크에 대한 인터페이스(2954)를 포함할 수 있다. 네트워크는 예를 들어 무선, 유선, 광일 수 있다. 네트워크는 또한 로컬, 광역, 대도시, 차량 및 산업, 실시간, 지연 허용 등일 수 있다. 네트워크의 예로는 이더넷, 무선 LAN과 같은 LAN, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 TV 유선 또는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량 및 산업을 들 수 있다. 특정 네트워크에는 일반적으로 특정 범용 데이터 포트 또는 주변 장치 버스(2949)(예: 컴퓨터 시스템의 USB 포트(2900))에 연결된 외부 네트워크 인터페이스 어댑터가 필요하다. 다른 것들은 일반적으로 아래에 설명된 바와 같이 시스템 버스에 연결하여 컴퓨터 시스템(2900)의 코어에 통합된다(예: PC 컴퓨터 시스템에 대한 이더넷 인터페이스 또는 스마트 폰 컴퓨터 시스템에 대한 셀룰러 네트워크 인터페이스). 이러한 네트워크 중 하나를 사용하여 컴퓨터 시스템(2900)은 다른 엔티티와 통신할 수 있다. 이러한 통신은 단방향, 수신 전용(예: 방송 TV), 단방향 전송 전용(예: CANbus에서 특정 CANbus 장치로) 또는 양방향(예: 로컬 또는 광역 디지털 네트워크를 사용하는 다른 컴퓨터 시스템)일 수 있다. 특정 프로토콜 및 프로토콜 스택은 위에서 설명한 대로 각 네트워크 및 네트워크 인터페이스에서 사용할 수 있다.
앞서 언급한 휴먼 인터페이스 장치, 사람이 액세스할 수 있는 저장 장치 및 네트워크 인터페이스는 컴퓨터 시스템(2900)의 코어(2940)에 연결될 수 있다.
코어(2940)는 하나 이상의 중앙 처리 장치(CPU)(2941), 그래픽 처리 장치(GPU)(2942), FPGA(Field Programmable Gate Areas)(2943) 형태의 특수 프로그래머블 처리 유닛, 특정 태스크에 대한 가속기(2944) 등을 포함할 수 있다. 읽기 전용 메모리(ROM)(2945), 랜덤 액세스 메모리(2946), 내부 비 사용자 액세스 가능 하드 드라이브, SSD 등과 같은 내부 대용량 저장소(2947)와 함께 이러한 장치는 시스템 버스(2948)를 통해 연결될 수 있다. 일부 컴퓨터 시스템에서, 시스템 버스(2948)는 추가 CPU, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리적 플러그의 형태로 액세스할 수 있다. 주변 장치는 코어의 시스템 버스(2948)에 직접 연결하거나 주변 장치 버스(2949)를 통해 연결할 수 있다. 일 예에서, 디스플레이(2910)는 그래픽 어댑터(2950)에 연결될 수 있다. 주변 버스의 아키텍처에는 PCI, USB 등이 포함된다.
CPU(2941), GPU(2942), FPGA(2943) 및 가속기(2944)는 조합하여 앞서 언급한 컴퓨터 코드를 구성할 수 있는 특정 명령을 실행할 수 있다. 이 컴퓨터 코드는 ROM(2945) 또는 RAM(2946)에 저장할 수 있다. 과도기 데이터는 RAM(2946)에 저장될 수도 있지만 영구 데이터는 예를 들어 내부 대용량 저장소(2947)에 저장될 수 있다. 하나 이상의 CPU(2941), GPU(2942), 대용량 스토리지(2947), ROM(2945), RAM(2946) 등과 밀접하게 연관될 수 있는 캐시 메모리를 사용하여 모든 메모리 장치에 대한 빠른 저장 및 검색을 가능하게할 수 있다.
컴퓨터 판독 가능 매체는 다양한 컴퓨터 구현 동작을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구성된 것이거나, 컴퓨터 소프트웨어 분야의 숙련자에게 잘 알려져 있고 이용 가능한 종류일 수 있다.
예로서, 제한 없이, 아키텍처(2900)를 갖는 컴퓨터 시스템, 특히 코어(2940)는 하나 이상의 유형의 컴퓨터 판독 가능 매체에 구현된 소프트웨어를 실행하는 프로세서(CPU, GPU, FPGA, 가속기 등을 포함)의 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터 판독 가능 매체는 위에서 소개한 사용자 액세스 가능 대용량 저장소와 관련된 미디어일 수 있으며, 코어 내부 대용량 저장소(2947) 또는 ROM(2945)과 같은 비 일시적 특성을 가진 코어(2940)의 특정 저장소일 수 있다. 본 개시의 다양한 실시예를 구현하는 소프트웨어는 이러한 장치에 저장되고 코어(2940)에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 특정 요구에 따라 하나 이상의 메모리 장치 또는 칩을 포함할 수 있다. 소프트웨어는 코어(2940) 및 특히 그 안의 프로세서(CPU, GPU, FPGA 등을 포함)가 RAM(2946)에 저장된 데이터 구조를 정의하는 것과 소프트웨어에서 정의한 프로세스에 따라 이러한 데이터 구조를 수정하는 것을 포함하여 여기에 설명된 특정 프로세스 또는 특정 프로세스를 실행하도록 할 수 있다. 추가로 또는 대안으로, 컴퓨터 시스템은 여기에 설명된 특정 프로세스나 특정 프로세스의 특정 부분을 실행하기 위해 소프트웨어 대신 또는 소프트웨어와 함께 작동할 수 있는 회로(예: 가속기(2944))에 고정되거나 다른 방식으로 구현된 로직의 결과로 기능을 제공할 수 있다. 소프트웨어에 대한 참조는 로직을 포함할 수 있으며 적절한 경우에 그 반대도 마찬가지이다. 컴퓨터 판독 가능 매체에 대한 참조는 실행을 위한 소프트웨어를 저장하는 회로(예: 집적 회로(IC)), 실행을 위한 로직을 구현하는 회로 또는 적절한 경우 둘 다를 포함할 수 있다. 본 개시는 하드웨어 및 소프트웨어의 임의의 적절한 조합을 포함한다.
부록 A: 약어
Appendix A: Acronyms
JEM: joint exploration model
VVC: versatile video coding
BMS: benchmark set
MV: Motion Vector
HEVC: High Efficiency Video Coding
MPM: most probable mode
WAIP: Wide-Angle Intra Prediction
SEI: Supplementary Enhancement Information
VUI: Video Usability Information
GOPs: Groups of Pictures
TUs: Transform Units,
PUs: Prediction Units
CTUs: Coding Tree Units
CTBs: Coding Tree Blocks
PBs: Prediction Blocks
HRD: Hypothetical Reference Decoder
SDR: standard dynamic range
SNR: Signal Noise Ratio
CPUs: Central Processing Units
GPUs: Graphics Processing Units
CRT: Cathode Ray Tube
LCD: Liquid-Crystal Display
OLED: Organic Light-Emitting Diode
CD: Compact Disc
DVD: Digital Video Disc
ROM: Read-Only Memory
RAM: Random Access Memory
ASIC: Application-Specific Integrated Circuit
PLD: Programmable Logic Device
LAN: Local Area Network
GSM: Global System for Mobile communications
LTE: Long-Term Evolution
CANBus: Controller Area Network Bus
USB: Universal Serial Bus
PCI: Peripheral Component Interconnect
FPGA: Field Programmable Gate Areas
SSD: solid-state drive
IC: Integrated Circuit
CU: Coding Unit
PDPC: Position Dependent Prediction Combination
ISP: Intra Sub-Partitions
SPS: Sequence Parameter Setting
본 개시가 몇몇 예시적인 실시예를 설명했지만, 본 개시의 범위 내에 속하는 변경, 순열 및 다양한 대체 등가물이 있다. 따라서, 통상의 기술자는 본 명세서에 명시적으로 도시되거나 설명되지 않았지만, 본 개시의 원리를 구현하고 따라서 그 사상 및 범위 내에 있는 수많은 시스템 및 방법을 고안할 수 있다는 것을 이해할 것이다.

Claims (20)

  1. 디코더에서의 비디오 디코딩 방법으로서,
    코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩하는 단계 - 상기 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타내며, 상기 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기 및 루마 샘플에서의 최소 허용 크로마 4차 트리(quaternary tree, QT) 리프 노드 크기를 추가로 나타냄 - ;
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지를 결정하는 단계; 및
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같다는 것에 응답하여, QT 분할이 크로마 블록에 대해 허용되지 않는 것으로 결정하는 단계
    를 포함하는 비디오 디코딩 방법.
  2. 제1항에 있어서,
    상기 파티션 정보는 상기 크로마 블록이 다중-유형 트리(multi-type tree, MTT) 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이, 크로마 수평 서브샘플링 인자 및 상기 크로마 블록에 대한 예측 모드 유형을 추가로 나타내고; 그리고
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 크다는 것에 응답하여,
    (i) 상기 크로마 블록이 MTT 노드인 것을 나타내는 MTT 깊이,
    (ii) 상기 크로마 수평 서브샘플링 인자로 나눈 상기 루마 샘플에서의 크로마 블록의 블록 크기가 4보다 작거나 같은 것, 및
    (iii) 인트라 예측 모드 및 인트라 블록 복사(intra block copy, IBC) 모드가 허용된다는 것을 나타내는 예측 모드 유형
    중 적어도 하나에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는 것으로 결정하는, 비디오 디코딩 방법.
  3. 제1항에 있어서,
    상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 추가로 나타내고; 그리고
    상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작은, 비디오 디코딩 방법.
  4. 제3항에 있어서,
    상기 코딩된 비디오 비트스트림은 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 나타내는 크로마 신택스 요소 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타내는 루마 신택스 요소를 포함하는, 비디오 디코딩 방법.
  5. 제3항에 있어서,
    상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기에 기초하여 유도되는, 비디오 디코딩 방법.
  6. 제1항에 있어서,
    상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기를 추가로 나타내고; 그리고
    상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기보다 작은, 비디오 디코딩 방법.
  7. 디코더에서의 비디오 디코딩 방법으로서,
    코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩하는 단계 - 상기 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타내며, 상기 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기, 크로마 수직 서브샘플링 인자 및 최소 허용 크로마 4차 트리(QT) 리프 노드 크기를 추가로 나타냄 - ;
    적어도 상기 루마 샘플에서의 크로마 블록의 블록 크기, 상기 크로마 수직 서브샘플링 인자, 및 상기 최소 허용 크로마 QT 리프 노드 크기에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는지를 결정하는 단계; 및
    상기 크로마 블록에 대해 QT 분할이 허용되지 않는다는 것에 응답하여, 이진 트리 분할 및 삼진 트리 분할 중 적어도 하나가 상기 크로마 블록에 대해 허용되지 않는지를 결정하는 단계
    를 포함하는, 비디오 디코딩 방법.
  8. 제7항에 있어서,
    상기 최소 허용 크로마 QT 리프 노드 크기는 루마 샘플에 있고,
    상기 파티션 정보는 크로마 수평 서브샘플링 인자를 추가로 나타내고,
    상기 QT 분할이 허용되지 않는지를 결정하는 단계는:
    적어도 상기 루마 샘플의 크로마 블록의 블록 크기, 상기 크로마 수직 서브샘플링 인자, 상기 크로마 수평 서브샘플링 인자 및 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는지를 결정하는 단계
    를 포함하는, 비디오 디코딩 방법.
  9. 제8항에 있어서,
    상기 QT 분할이 허용되지 않는지를 결정하는 단계는:
    상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기에 상기 크로마 수직 서브샘플링 인자를 곱하고 상기 크로마 수평 서브샘플링 인자로 나눈 것과 동일한 파라미터를 결정하는 단계; 및
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 파라미터보다 작거나 같다는 것에 응답하여 상기 QT 분할이 상기 크로마 블록에 대해 허용되지 않는 것으로 결정하는 단계
    를 더 포함하는, 비디오 디코딩 방법.
  10. 제8항에 있어서,
    상기 파티션 정보는 상기 크로마 블록이 다중-유형 트리(multi-type tree, MTT) 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이 및 상기 크로마 블록에 대한 예측 모드 유형을 추가로 나타내고; 그리고
    상기 QT 분할이 허용되지 않는지를 결정하는 단계는:
    상기 MTT 깊이 및 상기 예측 모드 유형에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는지를 결정하는 단계
    를 포함하는, 비디오 디코딩 방법.
  11. 제7항에 있어서,
    상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 추가로 나타내고; 그리고
    상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작은, 비디오 디코딩 방법.
  12. 제11항에 있어서,
    상기 코딩된 비디오 비트스트림은 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 나타내는 크로마 신택스 요소 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타내는 루마 신택스 요소를 포함하는, 비디오 디코딩 방법.
  13. 제11항에 있어서,
    상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기에 기초하여 유도되는, 비디오 디코딩 방법.
  14. 제7항에 있어서,
    상기 파티션 정보는 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기를 더 포함하고; 그리고
    상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기는 상기 루마 샘플에서의 최소 허용 루마 QT 리프 노드 크기보다 작은, 비디오 디코딩 방법.
  15. 제7항에 있어서,
    상기 최소 허용 크로마 QT 리프 노드 크기는 크로마 샘플에 있고; 그리고
    상기 QT 분할이 허용되지 않는지를 결정하는 단계는:
    상기 크로마 수직 서브샘플링 인자로 나눈 상기 루마 샘플에서의 크로마 블록의 블록 크기가 크로마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은 것에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는 것으로 결정하는 단계
    를 포함하는, 비디오 디코딩 방법.
  16. 제15항에 있어서,
    상기 파티션 정보는 크로마 수평 서브샘플링 인자, 상기 크로마 블록이 MTT 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이, 및 크로마 블록에 대한 예측 모드 유형을 추가로 나타내고; 그리고
    상기 크로마 수직 서브샘플링 인자로 나눈 루마 샘플에서의 크로마 블록의 블록 크기가 크로마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 크다는 것에 응답하여, 상기 비디오 디코딩 방법은:
    상기 루마 샘플에서 크로마 블록의 블록 크기, 상기 크로마 수평 서브샘플링 인자, 상기 MTT 깊이 및 상기 예측 모드 유형에 기초하여 상기 크로마 블록에 대해 상기 QT 분할이 허용되지 않는지를 결정하는 단계
    를 더 포함하는 비디오 디코딩 방법.
  17. 비디오 디코딩 장치로서,
    프로세싱 회로를 포함하며,
    상기 프로세싱 회로는:
    코딩된 비디오 비트스트림으로부터 파티션 정보를 디코딩하고 - 상기 파티션 정보는 듀얼 트리(dual tree)의 크로마 코딩 트리 구조가 크로마 블록에 적용된다는 것을 나타내며, 상기 파티션 정보는 루마 샘플에서의 크로마 블록의 블록 크기 및 루마 샘플에서의 최소 허용 크로마 4차 트리(quaternary tree, QT) 리프 노드 크기를 추가로 나타냄 - ;
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같은지를 결정하며; 그리고
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 작거나 같다는 것에 응답하여, QT 분할이 크로마 블록에 대해 허용되지 않는 것으로 결정하도록 구성되어 있는, 비디오 디코딩 장치.
  18. 제17항에 있어서,
    상기 파티션 정보는 상기 크로마 블록이 다중-유형 트리(multi-type tree, MTT) 분할로부터의 MTT 노드인지를 나타내는 MTT 깊이, 크로마 수평 서브샘플링 인자 및 상기 크로마 블록에 대한 예측 모드 유형을 추가로 나타내고; 그리고
    상기 루마 샘플에서의 크로마 블록의 블록 크기가 상기 루마 샘플에서의 최소 허용 크로마 QT 리프 노드 크기보다 크다는 것에 응답하여,
    (i) 상기 크로마 블록이 MTT 노드인 것을 나타내는 MTT 깊이,
    (ii) 상기 크로마 수평 서브샘플링 인자로 나눈 상기 루마 샘플에서의 크로마 블록의 블록 크기가 4보다 작거나 같은 것, 및
    (iii) 인트라 예측 모드 및 인트라 블록 복사(intra block copy, IBC) 모드가 허용된다는 것을 나타내는 예측 모드 유형
    중 적어도 하나에 기초하여 상기 크로마 블록에 대해 QT 분할이 허용되지 않는 것으로 결정하는, 비디오 디코딩 장치.
  19. 제17항에 있어서,
    상기 파티션 정보는 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 추가로 나타내고; 그리고
    상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기는 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기보다 작은, 비디오 디코딩 장치.
  20. 제19항에 있어서,
    상기 코딩된 비디오 비트스트림은 상기 루마 샘플에서의 최소 허용 크로마 코딩 블록 크기를 나타내는 크로마 신택스 요소 및 상기 루마 샘플에서의 최소 허용 루마 코딩 블록 크기를 나타내는 루마 신택스 요소를 포함하는, 비디오 디코딩 장치.
KR1020217035486A 2019-12-23 2020-10-01 비디오 코딩 방법 및 장치 KR20210138114A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962953034P 2019-12-23 2019-12-23
US62/953,034 2019-12-23
US202062959904P 2020-01-11 2020-01-11
US62/959,904 2020-01-11
US17/060,652 US11445208B2 (en) 2019-12-23 2020-10-01 Method and apparatus for video coding
PCT/US2020/053818 WO2021133450A1 (en) 2019-12-23 2020-10-01 Method and apparatus for video coding
US17/060,652 2020-10-01

Publications (1)

Publication Number Publication Date
KR20210138114A true KR20210138114A (ko) 2021-11-18

Family

ID=76438661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217035486A KR20210138114A (ko) 2019-12-23 2020-10-01 비디오 코딩 방법 및 장치

Country Status (6)

Country Link
US (2) US11445208B2 (ko)
EP (1) EP4082205A4 (ko)
JP (1) JP2022531541A (ko)
KR (1) KR20210138114A (ko)
CN (1) CN113875256B (ko)
WO (1) WO2021133450A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11368717B2 (en) * 2019-09-16 2022-06-21 Tencent America LLC Method and apparatus for point cloud compression
WO2021091252A1 (ko) * 2019-11-05 2021-05-14 엘지전자 주식회사 영상/비디오 코딩을 위한 영상 정보 처리 방법 및 장치
CN118200605A (zh) * 2019-11-05 2024-06-14 Lg 电子株式会社 图像/视频编译方法和装置
WO2022268207A1 (en) * 2021-06-25 2022-12-29 FG Innovation Company Limited Device and method for partitioning blocks in video coding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
WO2018045332A1 (en) * 2016-09-02 2018-03-08 Vid Scale, Inc. Methods and apparatus for coded block flag coding in quad-tree plus binary-tree block partitioning
US10848788B2 (en) * 2017-01-06 2020-11-24 Qualcomm Incorporated Multi-type-tree framework for video coding
US20180199062A1 (en) * 2017-01-11 2018-07-12 Qualcomm Incorporated Intra prediction techniques for video coding
US11496747B2 (en) * 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
US20180367818A1 (en) * 2017-06-15 2018-12-20 Futurewei Technologies, Inc. Block Partition Structure in Video Compression
US11012715B2 (en) * 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
WO2019230670A1 (en) 2018-05-31 2019-12-05 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks in an inter prediction slice of video data
MX2021008449A (es) * 2019-01-15 2021-11-03 Rosedale Dynamics Llc Metodo y dispositivo de codificacion de imagen usando bandera de salto de transformacion.
EP4008109A4 (en) * 2019-09-02 2022-09-14 Beijing Bytedance Network Technology Co., Ltd. ENCODING MODE DETERMINATION BASED ON COLOR FORMAT
US11589044B2 (en) * 2019-10-14 2023-02-21 Hfi Innovation Inc. Video encoding and decoding with ternary-tree block partitioning
CN114830669A (zh) * 2019-12-17 2022-07-29 阿里巴巴集团控股有限公司 用于在图像边界划分块的方法和装置

Also Published As

Publication number Publication date
US11445208B2 (en) 2022-09-13
US11949896B2 (en) 2024-04-02
US20220368933A1 (en) 2022-11-17
CN113875256B (zh) 2024-05-31
JP2022531541A (ja) 2022-07-07
EP4082205A1 (en) 2022-11-02
US20210195225A1 (en) 2021-06-24
CN113875256A (zh) 2021-12-31
WO2021133450A1 (en) 2021-07-01
EP4082205A4 (en) 2023-06-21

Similar Documents

Publication Publication Date Title
KR20200121904A (ko) 비디오 디코딩을 위한 방법 및 장치
JP2021518088A (ja) 小ブロックの予測と変換のための方法、装置、及びプログラム
KR20210006973A (ko) 비디오 코딩을 위한 방법 및 장치
KR102574427B1 (ko) 인트라 예측 모드와 블록 차분 펄스-코드 변조 모드 사이의 상호작용을 위한 방법 및 장치
KR20210118186A (ko) 인트라 픽처 블록 보상을 위한 디코딩된 블록 벡터의 변환
KR20220133319A (ko) 인트라 픽처 블록 보상을 위한 참조 샘플 메모리 재사용 방법 및 장치
US11394957B2 (en) Constraints on reference sample locations in the dedicated buffer for intra picture block compensation
KR20210130808A (ko) 비디오 코딩에서의 최소 코딩 블록 크기의 범위
US11949896B2 (en) Chroma quad tree split constraint
KR20220123329A (ko) 유연한 트리 구조
KR20210079363A (ko) 비디오 코딩에서 이웃 블록 가용성을 위한 방법 및 장치
KR20210068512A (ko) 비디오 코딩을 위한 방법 및 장치
KR20210091316A (ko) 인트라 픽처 블록 보상을 위한 통합 블록 벡터 예측
KR20210107871A (ko) 비디오 성분을 단색 비디오로서 인코딩하기 위한 코딩 툴들의 시그널링
KR102461780B1 (ko) 비디오 코딩을 위한 방법 및 장치
JP7377887B2 (ja) ビデオ符号化又はビデオ復号のための方法、装置及びコンピュータプログラム
KR102456831B1 (ko) 유연한 트리 구조에서의 연접된 코딩 단위들
KR20210130800A (ko) 비디오 코딩을 위한 방법 및 장치
JP7478253B2 (ja) デカップリング変換パーティション分割
KR102663502B1 (ko) 비디오 코딩 방법 및 장치
KR20230085184A (ko) 인트라 예측의 융합에 대한 수정
KR20230054889A (ko) 크로스 컴포넌트 블록 끝 플래그 코딩
KR20220122767A (ko) 비디오 코딩을 위한 방법 및 장치
JP7504296B2 (ja) 非インターリーブ分離ツリー
KR102679144B1 (ko) 인트라 예측 모드와 블록 차분 펄스-코드 변조 모드 사이의 상호작용을 위한 방법 및 장치

Legal Events

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