KR20230004797A - 파티션 신택스를 위한 엔트로피 코딩 - Google Patents

파티션 신택스를 위한 엔트로피 코딩 Download PDF

Info

Publication number
KR20230004797A
KR20230004797A KR1020227041341A KR20227041341A KR20230004797A KR 20230004797 A KR20230004797 A KR 20230004797A KR 1020227041341 A KR1020227041341 A KR 1020227041341A KR 20227041341 A KR20227041341 A KR 20227041341A KR 20230004797 A KR20230004797 A KR 20230004797A
Authority
KR
South Korea
Prior art keywords
context
video
block
way
allowed
Prior art date
Application number
KR1020227041341A
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 KR20230004797A publication Critical patent/KR20230004797A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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)
  • Television Systems (AREA)

Abstract

비디오 처리를 위한 시스템, 방법 및 장치가 설명된다. 비디오 처리는 비디오 인코딩, 비디오 디코딩 또는 비디오 트랜스코딩을 포함할 수 있다. 비디오 처리의 하나의 예시적 방법은 규칙에 따라 비디오의 현재 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 규칙은 블록이 수평으로 분할되는지 또는 수직으로 분할되는지를 지정하는 신택스 요소를 코딩하기 위한 컨텍스트 선택이 허용되는 수직 분할의 수와 허용되는 수평 분할의 수를 기반으로 하도록 지정한다. 수직 분할의 허용 개수는 이진 수직 분할의 허용 수와 삼진 수직 분할의 허용 수를 포함하고, 수평 분할의 허용 수는 이진 수평 분할의 허용 수와 삼진 수평 분할의 허용 수를 포함한다.

Description

파티션 신택스를 위한 엔트로피 코딩
이 문서는 비디오(video) 및 이미지 코딩 기술(image coding technology)에 관한 것이다.
적용 가능한 특허법 및/또는 파리 협약에 따른 규칙에 따라, 본 출원은 2020년 5월 1일에 출원된 국제 특허 출원 번호 PCT/CN2020/088564에 대한 우선권 및 혜택을 적시에 주장하기 위해 만들어졌다,법에 따른 모든 목적을 위해, 상기 출원의 전체 개시는 본 출원의 개시의 일부로 참조에 의해 통합된다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크에서 가장 많은 대역폭을 사용한다. 비디오(video)를 수신하고 나타낼 수 있는 연결된 사용자 장치(connected user device)의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
개시된 기술은 컨텍스트 기반 코딩(context based coding) 및 디코딩(decoding)을 사용하여 인코딩 또는 디코딩을 수행하기 위해 비디오 또는 이미지 디코더 또는 인코더 실시예에 의해 사용될 수도 있다.
하나의 예시적인 측면에서, 비디오를 처리하는 방법이 개시된다. 방법은 비디오의 비디오 블록(video block)과 비디오의 코딩된 표현(coded representation) 사이의 변환(conversion)을 수행하는 단계를 포함하고, 코딩된 표현(coded representation)은 포맷 규칙을 따르고, 변환은 비디오 블록에 대한 모션 벡터(motion vector) 또는 모션 벡터 차(motion vector difference) 또는 모션 벡터 예측자(motion vector predictor)의 표현이 적응형 해상도(adaptive resolution)를 사용하여 코딩된 표현으로 표현되는 적응형 모션 벡터 차 해상도(adaptive motion vector difference resolution)(AMVR) 툴에 기초하고; 포맷 규칙은 비디오 블록 또는 비디오 블록의 이웃 블록의 코딩된 정보에 의존하는 컨텍스트 모델링(context modeling)에 의한 코딩된 표현에서의 적응적 해상도의 사용을 나타내도록 지정한다.
다른 예시적인 측면에서, 비디오를 처리하는 다른 방법이 개시된다. 방법은 비디오의 비디오 블록(video block)과 비디오의 코딩된 표현(coded representation) 사이의 변환(conversion)을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 변환은 비디오 블록에 대한 모션 벡터(motion vector) 또는 모션 벡터 차(motion vector difference) 또는 모션 벡터 예측자(motion vector predictor)의 표현이 적응형 해상도(adaptive resolution)를 사용하여 코딩된 표현으로 표현되는 적응형 모션 벡터 차 해상도(adaptive motion vector difference resolution)(AMVR) 툴에 기초하고; 포맷 규칙은 컨텍스트(context)가 AMVR 툴에 의해 사용되는 해상도의 인덱스에 대해 제1 빈 및 제2 빈을 코딩하는데 사용되도록 컨텍스트 모델링에 의해 코딩된 표현에서 적응형 해상도의 사용을 표현하는 방법을 지정한다.
다른 예시적인 측면에서, 비디오를 처리하는 다른 방법이 개시된다. 방법은 복수의 비디오 블록을 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고; 코딩된 표현은 하나 이상의 비디오 블록의 적응 모션 벡터 차 해상도(AMVR) 코딩에 관한 정보를 시그널링하기 위한 포맷 규칙을 따르고; 포맷 규칙은 제1 코딩 모드를 사용하여 코딩된 제1 비디오 블록의 AMVR 정밀도 인덱스의 빈 및 제2 코딩 모드를 사용하여 코딩된 제2 비디오 블록의 AMVR 정밀도 인덱스의 빈을 코딩하기 위해 동일한 컨텍스트가 사용됨을 지정한다.
다른 예시적인 측면에서, 비디오를 처리하는 다른 방법이 개시된다. 방법은 비디오의 비디오 블록(video block)과 비디오의 코딩된 표현(coded representation) 사이의 변환(conversion)을 수행하는 단계를 포함하고, 비디오 블록은 하나 이상의 수직 및/또는 하나 이상의 수평 파티션(partition)으로 분할되고, 코딩된 표현은 비디오 블록에 대한 분할 정보의 컨텍스트 기반 코딩을 지정하는 포맷 규칙을 따른다.
다른 예시적인 측면에서, 비디오를 처리하는 다른 방법이 개시된다. 방법은 비디오의 비디오 블록(video block)과 비디오의 코딩된 표현(coded representation) 사이의 변환(conversion)을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 포맷 규칙은 트랜스폼 계수(transform coefficient)의 부호를 나타내기 위해 컨텍스트 코딩을 사용하거나 바이패스 코딩을 사용하는 것 사이에서 결정하는 데 사용되는 코딩 조건을 지정한다.
다른 예시적인 측면에서, 비디오를 처리하는 다른 방법이 개시된다. 방법은 비디오의 비디오 블록(video block)과 비디오의 코딩된 표현(coded representation) 사이의 변환(conversion)을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 포맷 규칙은 트랜스폼 스킵 잔차 코딩 프로세스의 제3 또는 나머지 계수 스캔 패스에서 나머지 신택스 요소에 대한 바이패스 코딩(bypass coding)의 시작 부분에서, 나머지 허용된 컨텍스트 코딩된 빈의 수를 지정하는 변수에 동작이 적용되는 것을 지정한다.
다른 예시적인 측면에서, 전술한 방법은 프로세서를 포함하는 비디오 인코더 장치에 의해 구현될 수 있다.
또 다른 예시적인 측면에서, 이러한 방법들은 프로세서 실행 가능한 명령어로 실현되고, 컴퓨터 판독 가능한 프로그램 매체에 저장될 수 있다.
이러한 측면들 및 기타 다른 측면들은 본 문서에서 더 설명된다.
도 1은 인코더 블록도의 예를 나타낸다.
도 2는 67 개의 인트라 예측 모드의 예를 도시한다.
도 3a는 4-파라미터 아핀 모델 예를 도시한다.
도 3b는 6-파라미터 아핀 모델 예를 도시한다.
도 4는 서브블록당 아핀 MVF의 예를 나타낸다.
도 5는 상속된 아핀 모션 예측자의 예시적인 위치를 도시한다.
도 6은 제어 포인트 모션 벡터 상속의 예를 도시한다.
도 7은 구성된 아핀 병합 모드(affine merge mode)에 대한 후보 위치의 예시 위치를 보여준다.
도 8은 제안된 결합 방법에 대한 모션 벡터 사용의 예시이다.
도 9는 서브블록 MV VSB 및 픽셀
Figure pct00001
의 예를 보여준다.
도 10은 다중 유형 트리 분할 모드의 예를 나타낸다.
도 11은 중첩된 다중 유형 트리 코딩 트리 구조를 사용하여 쿼드트리에서 플래그 시그널링을 분할하는 예를 나타낸다.
도 12는 예시적인 비디오 처리 시스템의 블록도이다.
도 13은 비디오 처리 장치의 일례를 도시한 도면이다.
도 14는 비디오 처리 방법의 하나의 예의 방법에 대한 순서도이다.
도 15는 본 개시의 일부 실시예에 따른 비디오 코딩 시스템을 예시하는 블록도이다.
도 16은 본 개시의 일부 실시예에 따른 인코더를 예시하는 블록도이다.
도 17은 본 개시의 일부 실시예에 따른 디코더를 예시하는 블록도이다.
도 18은 본 기술의 하나 이상의 실시예에 따른 비디오 처리 방법의 흐름도 표현이다.
도 19는 본 기술의 하나 이상의 실시예에 따른 다른 비디오 처리 방법의 흐름도 표현이다.
도 20은 본 기술의 하나 이상의 실시예에 따른 또 다른 비디오 처리 방법의 흐름도 표현이다.
본 문서는 압축해제 또는 디코딩 된 디지털 비디오 또는 이미지들의 품질을 개선하기 위해 이미지 또는 비디오 비트스트림의 디코더에 의해 사용될 수 있는 다양한 기술을 제공한다. 간결함을 위해, "비디오"(video)라는 용어는 연속적인 픽처들(pictures)(전통적으로 비디오라고 함)과 개별 이미지들을 모두 포함하는 데 사용된다. 또한, 비디오 인코더(video encoder)는 추가 인코딩에 사용되는 디코딩된 프레임을 재구성하기 위해 인코딩 프로세스(process) 동안 이러한 기술들을 구현할 수도 있다.
섹션 제목들(section headings)은 이해의 편의를 위해 본 문서에서 사용되며 실시예 및 기술을 해당 섹션으로 제한하지 않는다. 이와 같이, 한 섹션의 실시 예는 다른 섹션의 실시 예와 결합될 수 있다.
1. 개요
이 문서는 비디오 코딩 기술(video coding technologies)과 관련이 있다. 특히 적응형 모션 벡터 해상도(Adaptive Motion Vector Resolution)(AMVR), 블록 파티셔닝 및 이미지/비디오 코딩의 기타 코딩 툴과 관련이 있다. HEVC와 같은 기존 비디오 코딩 표준 또는 최종 확정될 표준(다목적 비디오 코딩)에 적용될 수 있다. 향후 비디오 코딩 표준 또는 비디오 코덱에도 적용될 수 있다.
2. 초기 논의
비디오 코딩 표준은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준의 개발을 통해 발전해 왔다. ITU-T는 H.261및 H.263을 제작했으며, ISO/IEC는 MPEG-1 및 MPEG-4 비주얼을 제작했으며, 두 조직은 H.262/MPEG-2 비디오 및 H.264/MPEG-4 고급 비디오 코딩(AVC) 및 H.265/HEVC 표준을 공동 제작했다. H.262 이후, 비디오 코딩 표준은 시간적 예측(temporal prediction)과 트랜스폼 코딩(transform coding)이 활용되는 하이브리드 비디오 코딩 구조에 기초한다. HEVC를 넘어 미래의 비디오 코딩 기술을 연구하기 위해, 공동 비디오 연구팀(JVET: Joint Video Exploration Team)이 2015년에 VCEG와 MPEG의 공동으로 설립되었다. 그 이후로, JVET에 의해 많은 새로운 방법들이 채택되었고, 공동 연구 모델 (JEM: Joint Exploration Model)이라고 명명된 레퍼런스 픽처소프트웨어(reference software)에 적용되었다. 2018년 4월, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 사이의 공동 비디오 전문가 팀(Joint Video Expert Team)(JVET)는 HEVC에 비해 50% 비트 전송률 감소를 목표로 하는 VVC 표준 작업을 위해 만들어졌다.
2.1. 일반적인 비디오 코덱의 코딩 흐름
도 1은 3개의 인루프 필터링 블록을 포함하는 VVC의 인코더 블록도의 예를 보여준다: 디블로킹 필터(deblocking filter)(DF), 샘플 적응형 오프셋(sample adaptive offset)(SAO) 및 ALF. 미리 정의된 필터를 사용하는 DF와 달리, SAO 및 ALF는 오프셋을 추가하고 오프셋 및 필터 계수를 시그널링 하는 코딩된 부가 정보(side information)와 함께 유한 임펄스 응답(finite impulse response)(FIR) 필터를 각각 적용하여 원래 샘플과 재구성된 샘플 사이의 평균 제곱 오류를 줄이기 위해 현재 픽처의 원래 샘플을 활용한다. ALF는 각 픽처의 마지막 처리 단계에 위치하며 이전 단계에서 만든 아티팩트를 포착하고 수정하려는 툴(tool)로 간주될 수 있다.
2.2 67 개의 인트라 예측 모드를 사용한 인트라 모드 코딩.
자연스러운 비디오에 제시된 임의의 에지 방향을 캡처 하기 위해 방향성 인트라 모드의 수가 HEVC에서 사용되는 33 개에서 65 개로 확장되었다. 추가 방향 모드는 도 2에서 빨간 점선 화살표로 표시되고 플라나(planar) 및 DC 모드는 동일하게 유지된다. 이러한 조밀한 방향성 인트라 예측 모드는 모든 블록 크기와 루마 및 크로마 인트라 예측 모두에 적용된다.
종래의 각도 인트라 예측 방향은 도 2에 도시된 바와 같이 시계 방향으로 45도에서 -135도까지 정의된다. VTM에서는 기존의 여러 각도 인트라 예측 모드가 정사각형이 아닌 블록에 대한 광각 인트라 예측 모드로 적응적으로 대체된다. 대체된 모드는 원래 방법을 사용하여 시그널링 하고 파싱 후 광각 모드의 인덱스로 다시 매핑 된다. 인트라 예측 모드의 총 수는 변경되지 않으며, 예를 들어, 67, 인트라 모드 코딩은 변경되지 않는다.
HEVC에서 모든 인트라 코딩 된 블록은 정사각형 모양(shape)이며 각 변의 길이는 2의 제곱이다. 따라서, DC 모드를 사용하여 내부 예측자를 생성하기 위해 분할 작업이 필요하지 않다. VVC에서, 블록은 일반적인 경우 블록 당 분할 연산을 사용해야 하는 직사각형 모양을 가질 수 있다. DC 예측을 위한 분할 연산을 방지하려면, 정사각형이 아닌 블록의 평균을 계산하는 데는 긴 변만 사용된다.
2.2. 인터 예측(Inter prediction)
인터 예측된 각 CU에 대해 모션 벡터(motion vector), 레퍼런스 픽처 인덱스(reference picture indices) 및 레퍼런스 픽처 목록 사용 인덱스(reference picture list usage index)로 구성된 모션 파라미터(motion parameter), 및 인터 예측된 샘플 생성에 사용할 VVC의 새로운 코딩 기능에 필요한 추가 정보. 모션 파라미터는 명시적 또는 암시적 방식으로 시그널링 될 수 있다. CU가 스킵 모드(skip mode)로 코딩 되면, PU가 하나의 PU와 연관되고, 상당한 잔차 계수를 갖지 않고, 코딩된 모션 벡터 델타 또는 레퍼런스 픽처 인덱스가 없다. 병합 모드(merge mode)는 현재 CU에 대한 모션 파라미터가 공간적 및 시간적 후보를 포함하는 이웃 CU로부터 획득되고 VVC에 도입된 추가 스케줄이 지정된다. 병합 모드는 스킵 모드뿐만 아니라 인터 예측된 CU에 적용될 수 있다. 병합 모드의 대안은 모션 파라미터의 명시적 전송이며, 각 레퍼런스 픽처 목록에 대한 모션 벡터, 대응하는 레퍼런스 픽처 인덱스 및 레퍼런스 픽처 목록 사용 플래그 및 다른 필요한 정보가 각 CU당 명시적으로 시그널링 된다.
2.3. 인트라 블록 복사(Intra block copy)(IBC)
인트라 블록 복사(Intra block copy)(IBC)는 SCC의 HEVC 확장에 채택된 툴이다. 이는 화면 콘텐츠 자료(screen content material)의 코딩 효율성을 크게 향상시키는 것으로 잘 알려져 있다. IBC 모드는 블록 레벨 코딩 모드로 구현되기 때문에, 각 CU에 대한 최적의 블록 벡터(또는 모션 벡터)를 찾기 위해 인코더에서 블록 매칭(BM)이 수행된다. 여기서, 블록 벡터는 현재 블록에서 현재 픽처 내부에 이미 재구축된 레퍼런스 블록으로의 변위를 나타내기 위해 사용된다. IN VVC에서, IBC 코딩 된 CU의 루마 블록 벡터는 정수 정밀도이다. 크로마 블록 벡터도 정수 정밀도로 반올림된다. AMVR과 결합할 때, IBC 모드는 1-펠(pel) 및 4-펠(pel) 모션 벡터 정밀도 간에 스위치 할 수 있다. IBC 코딩 된 CU는 인트라 또는 인터 예측 모드 이외의 제3 예측 모드로 취급된다. IBC 모드는 너비와 높이가 모두 64 루마 샘플보다 작거나 동일한 CU에 적용할 수 있다.
인코더 측에서는 IBC에 대해 해시 기반 모션 추정(ash-based motion estimation)이 수행된다. 인코더는 너비 또는 높이가 16 루마 샘플 보다 크지 않은 블록에 대해 RD 검사를 수행한다. 비 병합 모드의 경우 먼저 해시 기반 검색을 사용하여 블록 벡터 검색을 수행한다. 해시 검색(hash search)에서 유효한 후보가 반환되지 않으면, 블록 매치 기반 로컬 검색(block matching based local search)이 수행된다.
해시 기반 검색에서는 현재 블록과 레퍼런스 블록 사이의 해시 키 매칭(hash key matching)(32 비트 CRC)이 허용되는 모든 블록 크기로 확장된다. 현재 픽처의 모든 위치에 대한 해시 키 계산은 4x4 서브 블록을 기반으로 한다. 더 큰 크기의 현재 블록의 경우, 모든 4Х4 서브 블록의 모든 해시 키(hash key)가 대응하는 레퍼런스 위치의 해시 키와 매치할 때 레퍼런스 블록의 해시 키와 매치하도록 해시 키가 결정된다. 여러 레퍼런스 블록의 해시 키가 현재 블록의 해시 키와 매치하는 경우, 매치하는 각 레퍼런스의 블록 벡터 비용을 계산하여 비용이 가장 작은 것을 선택한다.
블록 매치 검색에서 검색 범위는 이전 및 현재 CTU를 모두 포함하도록 설정된다.
CU 레벨에서, IBC 모드는 플래그로 시그널링되며, 다음과 같이 IBC AMVP 모드 또는 IBC 스킵/머지 모드로 시그널링될 수 있다:
- IBC 스킵/병합 모드: 병합 후보 인덱스는 이웃 후보 IBC 코딩된 블록의 목록에 있는 블록 벡터 중 현재 블록을 예측하는 데 사용되는 블록 벡터를 나타내는 데 사용된다. 병합 목록은 공간, HMVP 및 쌍별 후보를 포함한다.
- IBC AMVP 모드: 블록 벡터 차는 모션 벡터 차(motion vector difference)와 동일한 방식으로 코딩된다. 블록 벡터 예측 방법은 두 개의 후보를 예측자로 사용하고, 하나는 왼쪽 이웃에서, 다른 하나는 위쪽 이웃(IBC 코딩된 경우)이다. 이웃 중 하나를 사용할 수 없는 경우 기본 블록 벡터가 예측자로 사용된다. 블록 벡터 예측자 인덱스를 나타내기 위해 플래그가 시그널링된다.
2.4. 아핀 모션 보상 예측(Affine motion compensated prediction)
HEVC에서는 모션 보상 예측(Motion Compensation Prediction)(MCP)에 전환 모션 모델 만 적용된다. 실제 세계에는, 예를 들어, 확대/축소, 회전, 원근 동작 및 기타 불규칙한 동작 여러 종류의 모션이 있다. VVC에서, 블록 기반 아핀 트랜스폼 모션 보상 예측(block-based affine transform motion compensation prediction)이 적용된다. 도 3a-3b에 도시된 바와 같이, 블록의 아핀 모션 필드는 2개의 제어 포인트(4-파라미터) 또는 3개의 제어 포인트 모션 벡터(6-파라미터)의 모션 정보로 기술된다.
도 6은 제어 포인트 모션 벡터 상속의 예를 도시한다.
4-파라미터 아핀 모션 모델의 경우, 블록의 샘플 위치(x, y)에서 모션 벡터는 다음과 같이 유도된다:
Figure pct00002
(2-1)
6-파라미터 아핀 모션 모델의 경우 블록의 샘플 위치(x, y)에서 모션 벡터는 다음과 같이 유도된다:
Figure pct00003
(2-2)
여기서 (mv 0x , mv0y )는 왼쪽 상단 모서리 제어 포인트의 모션 벡터이고 ( mv1x , mv1y )는 오른쪽 상단 모서리 제어 포인트의 모션 벡터이고 ( mv2x, mv2y)는 왼쪽 하단 모서리 제어 포인트의 모션 벡터이다.
모션 보상 예측을 단순화하기 위해, 블록 기반 아핀 변형 예측이 적용된다. 각 4X4 루마 서브블록의 모션 벡터를 유도하기 위해, 도 4와 같이, 각 서브블록의 중앙 샘플의 모션 벡터를 위의 방정식에 따라 계산하여 1/16 부분 정확도(fraction accuracy)로 반올림한다. 그런 다음 유도된 모션 벡터로 각 서브블록의 예측을 생성하기 위해 모션 보상 보간 필터가 적용된다. 크로마 컴포넌트의 서브블록 크기도 4Х4로 설정한다. 4Х4 크로마 서브블록의 MV는 4개의 대응하는 4Х4 루마 서브블록의 MV의 평균으로 계산된다.
병진 모션 인터 예측(translational motion inter prediction)에 대해 수행된 것처럼, 아핀 병합 모드와 아핀 AMVP 모드의 두 가지 아핀 모션 인터 예측 모드도 있다.
2.5.1 아핀 병합 예측(Affine merge prediction)
AF_MERGE 모드는 너비와 높이가 모두 8 이상인 CU에 적용할 수 있다. 이 모드에서 현재 CU의 CPMV는 공간적으로 이웃하는 CU의 모션 정보를 기반으로 생성된다. 최대 5개의 CPMVP 후보가 있을 수 있으며 인덱스는 현재 CU에 사용할 하나를 나타내기 위해 시그널링 된다. 다음 세 가지 유형의 CPVM 후보가 아핀 병합 후보 목록을 구성하는 데 사용된다:
- 이웃 CU의 CPMV에서 외삽된 상속된 아핀 병합 후보
- 이웃 CU의 병진 MV(Translational MV)를 사용하여 유도된 구축된 아핀 병합 후보 CPMVP
- 제로(zero) MVs
VVC에서, 최대 2개의 상속된 아핀 후보가 있으며, 이는 이웃 블록의 아핀 모션 모델에서 유도되고, 하나는 왼쪽 이웃 CU에서, 다른 하나는 이웃 CU 위에 있다. 후보 블록은 도 5에 도시되어 있다. 왼쪽 예측자의 경우, 스캔 순서는 A0->A1이고 위의 예측자의 경우 스캔 순서는 B0->B1->B2이다. 양쪽에서 첫 번째로 상속된 후보자만 선택된다. 두 개의 상속된 후보 간에 가지치기 검사가 수행되지 않는다. 이웃 아핀 CU가 식별될 때, 그것의 제어 포인트 모션 벡터는 현재 CU의 아핀 병합 목록에서 CPMVP 후보를 유도하는 데 사용된다. 도 6에 도시된 바와 같이, 이웃 좌측 하단 블록 A가 아핀 모드로 코딩되면, 블록 A를 포함하는 CU의 왼쪽 상단 모서리, 위쪽 오른쪽 모서리 및 왼쪽 하단 모서리의 모션 벡터
Figure pct00004
,
Figure pct00005
Figure pct00006
가 달성된다. 블록 A가 4-파라미터 아핀 모델로 코딩되면, 현재 CU의 두 CPMV는
Figure pct00007
, 및
Figure pct00008
에 따라 계산된다. 블록 A가 6-파라미터 아핀 모델로 코딩된 경우, 현재 CU의 3개 CPMV는
Figure pct00009
,
Figure pct00010
Figure pct00011
에 따라 계산된다.
구축된 아핀 후보는 각 제어 포인트의 이웃 병진 모션 정보(neighbor translational motion information)를 조합하여 후보가 구축되는 것을 의미한다. a) 제어 포인트에 대한 모션 정보는 도 27에 도시된 특정 공간적 이웃과 시간적 이웃으로부터 유도된다. CPMVk(k=1, 2, 3, 4)는 k번째 제어 포인트을 나타낸다. CPMV1의 경우 B2->B3->A2 블록을 확인하고 첫 번째 사용 가능한 블록의 MV를 사용한다. CPMV2의 경우 B1->B0 블록이 확인되고 CPMV 3의 경우 A1->A0 블록이 확인된다. TMVP의 경우 사용 가능한 경우 CPMV4로 사용된다.
4개의 제어 포인트의 MV를 얻은 후, 그 모션 정보를 기반으로 아핀 병합 후보를 구성한다. 제어 포인트 MV의 다음 조합은 순서대로 구성하는 데 사용된다:
{CPMV1, CPMV2, CPMV3}, {CPMV1, CPMV2, CPMV4}, {CPMV1, CPMV3, CPMV4},
{CPMV2, CPMV3, CPMV4}, {CPMV1, CPMV2}, {CPMV1, CPMV3}
3개의 CPMV의 조합은 6-파라미터 아핀 병합 후보를 구성하고 2개의 CPMV의 조합은 4-파라미터 아핀 병합 후보를 구성한다. 모션 스케일링 프로세스를 피하기 위해, 제어 포인트의 레퍼런스 인덱스가 다른 경우, 제어 포인트 MV의 관련 조합은 폐기된다.
상속된 아핀 병합 후보와 구성된 아핀 병합 후보를 확인한 후, 목록이 아직 가득 차지 않은 경우 목록 끝에 0개의 MV가 삽입된다.
2.5.2. 아핀 AMVP 예측
아핀 AMVP 모드는 너비와 높이가 모두 16 이상인 CU에 적용할 수 있다. CU 레벨의 아핀 플래그는 비트스트림에서 시그널링 되어 아핀 AMVP 모드가 사용되는지 여부를 표시한 다음 다른 플래그가 시그널링 되어 4-파라미터 아핀 또는 6-파라미터 아핀 여부를 나타낸다. 이 모드에서, 현재 CU의 CPMV와 그들의 예측자 CPMVP의 차는 비트스트림에서 시그널링 된다. 아핀 AVMP 후보 목록 크기는 2이고 다음 네 가지 유형의 CPVM 후보를 순서대로 사용하여 생성된다:
- 이웃 CU의 CPMV에서 외삽된(extrapolated) 상속된 아핀 AMVP 후보
- 이웃 CU의 병진 MV(Translational MV)를 사용하여 유도된 구축된 아핀 AMVP 후보 CPMVP
- 이웃 CU의 병진 MV
- 제로(zero) MVs
상속된 아핀 AMVP 후보의 확인 순서는 상속된 아핀 병합 후보의 확인 순서와 동일하다. 유일한 차이점은 AVMP 후보의 경우 현재 블록과 동일한 레퍼런스 픽처를 갖는 아핀 CU만 고려된다는 것이다. 구축된 아핀 모션 예측자를 후보 목록에 삽입할 때 프루닝 프로세스(pruning process)가 적용되지 않는다.
도 7에서 보듯이, 구축된 AMVP 후보는 지정된 공간적 이웃에서 유도된다. 아핀 병합 후보 구성(affine merge candidate construction)에서와 동일한 검사 순서가 사용된다. 또한, 이웃 블록의 레퍼런스 픽처 인덱스(reference picture index)가 확인한다. 인터 코딩 되고 현재 CU에서와 동일한 레퍼런스 픽처를 갖는 검사 순서의 제1 블록이 사용된다. 현재 CU가 4-파라미터 아핀 모드로 코딩 되고, mv 0 mv 1 둘 다 사용 가능하면, 아핀 AMVP 목록에 하나의 후보로 추가된다. 현재 CU가 6-파라미터 아핀 모드로 코딩 되고 세 가지 CPMV가 모두 사용 가능하면, 아핀 AMVP 목록에 하나의 후보로 추가된다. 그렇지 않으면, 구축된 AMVP 후보가 사용 불가능으로 설정된다.
상속된 아핀 AMVP 후보 및 구축된 AMVP 후보를 확인한 후에도 아핀 AMVP 목록 후보가 여전히 2보다 작으면, mv0, mv1, 및 mv2가 현재 CU의 모든 제어 포인트 MV를 예측하는 병진 MV(translational MV)로 순서대로 추가된다. 마지막으로, 0 MV는 여전히 가득 차 있지 않은 경우 아핀 AMVP 목록을 채우는 데 사용된다.
2.5.3. 아핀 모션 정보 저장
VVC에서, 아핀 CU(affine CU)의 CPMV는 별도의 버퍼에 저장된다. 저장된 CPMV는 최근에 코딩된 CU에 대해 아핀 병합 모드 및 아핀 AMVP 모드에서 상속된 CPMVP를 생성하는 데에만 사용된다. CPMV에서 유도된 서브블록 MV는 모션 보상, 변환 MV의 병합/AMVP 목록 및 디블로킹의 MV 유도에 사용된다.
추가 CPMV에 대한 픽처 라인 버퍼를 피하기 위해, 위의 CTU로부터의 CU로부터의 아핀 모션 데이터 상속은 정상적인 이웃 CU로부터의 상속과 다르게 취급된다. 아핀 모션 데이터 상속을 위한 후보 CU가 위의 CTU 라인에 있는 경우, CPMV 대신 라인 버퍼의 왼쪽 하단 및 오른쪽 하단 서브블록 MV가 아핀 MVP 유도에 사용된다. 이러한 방식으로, CPMV는 로컬 버퍼에만 저장된다. 후보 CU가 6-파라미터 아핀 코딩된 경우, 아핀 모델은 4-파라미터 모델로 저하된다. 도 8에 도시된 바와 같이, 상부 CTU 경계를 따라, CU의 하부 좌측 및 하부 우측 서브블록 모션 벡터는 하부 CTU에서 CU의 아핀 상속을 위해 사용된다.
2.5.4. 아핀 모드에 대한 광학 흐름으로 예측 정제
서브블록 기반 아핀 모션 보상은 메모리 액세스 대역폭을 절약하고 픽셀 기반 모션 보상과 비교하여 예측 정확도 패널티를 희생시키면서 계산 복잡성을 줄일 수 있다. 모션 보상의 더 미세한 입도를 달성하기 위해, 광학 흐름의 예측 정제(Prediction Refinement with Optical Flow)(PROF)는 모션 보상을 위한 메모리 액세스 대역폭을 증가시키지 않고 서브블록 기반 아핀 모션 보상 예측을 개선하는 데 사용된다. VVC에서, 서브블록 기반 아핀 모션 보상이 수행된 후, 루마 예측 샘플은 광학 흐름 식에 의해 유도된 차를 추가하여 정제된다. PROF는 다음 4단계로 설명된다:
단계 1) 서브블록 기반 아핀 모션 보상은 서브블록 예측을 생성하기 위해 수행된다.
단계 2) 3-탭 필터 [-1, 0, 1]을 사용하여 각 샘플 위치에서 서브블록
Figure pct00012
예측의 공간적 그레디언트
Figure pct00013
및 서브블록 예측이 계산된다 . 그레디언트 계산(gradient calculation)은 BDOF의 기울기 계산과 정확히 동일하다.
Figure pct00014
(2-3)
Figure pct00015
(2-4)
Figure pct00016
는 그래디언트의 정밀도를 제어하는 데 사용된다. 서브블록(예를 들어, 4x4) 예측은 그레디언트 계산을 위해 각 측면에서 하나의 샘플만큼 확장된다. 추가 메모리 대역폭과 추가 보간 계산을 피하기 위해, 확장 경계의 확장 샘플은 레퍼런스 픽처의 가장 가까운 정수 픽셀 위치에서 복사된다.
단계 3) 다음의 광학 흐름 방정식에 의해 루마 예측 정제가 계산된다.
Figure pct00017
(2-5)
여기서
Figure pct00018
Figure pct00019
으로 표시된, 샘플 위치
Figure pct00020
에 대해 계산된 샘플 MV와, 도 9에서 보여지는 바와 같이, 샘플
Figure pct00021
이 속하는 서브블록의 서브블록 MV 사이의 차이다.
Figure pct00022
는 1/32 루마 샘플 정밀도 유닛으로 양자화된다.
아핀 모델 파라미터와 서브블록 중심에 대한 샘플 위치는 서브블록에서 서브블록으로 변경되지 않으므로, Δv(i,j)는 제1 서브블록에 대해 계산될 수 있고, 동일한 CU의 다른 서브블록에 대해 재사용될 수 있다.
Figure pct00023
Figure pct00024
는 샘플 위치
Figure pct00025
에서 서브 블록의 중앙
Figure pct00026
까지 수평 및 수직 오프셋이라 하자,
Figure pct00027
다음 방정식으로 유도할 수 있다.
Figure pct00028
(3-6)
Figure pct00029
(3-7)
정확성을 유지하기 위해, 서브블록의 입력
Figure pct00030
는 ( ( WSB- 1 )/2, ( H SB - 1 ) / 2 )로 계산되며, 여기서 W SB 및 H SB 는 각각 서브블록 너비와 높이이다.
4-파라미터 아핀 모델의 경우,
Figure pct00031
(3-8)
6-파라미터 아핀 모델의 경우,
Figure pct00032
(3-9)
여기서
Figure pct00033
,
Figure pct00034
는 왼쪽 위, 오른쪽 위쪽 및 왼쪽 아래 제어 포인트 모션
Figure pct00035
벡터이고 는 CU의 너비와 높이이다.
단계 4) 마지막으로, 루마 예측 정제
Figure pct00036
가 서브블록 예측
Figure pct00037
에 추가된다. 최종 예측 I'는 다음 식으로 생성된다:
Figure pct00038
(3-10)
PROF는 아핀 코딩된 CU에 대한 두 가지 경우에 적용되지 않는다: 1) 모든 제어 포인트 MV가 동일하며, 이는 CU에 병진 모션만 있음을 나타낸다; 2) 큰 메모리 액세스 대역폭 요구 사항을 피하기 위해 서브블록 기반 아핀 MC가 CU 기반 MC로 저하되기 때문에 아핀 모션 파라미터가 지정된 제한보다 크다.
PROF를 사용한 아핀 모션 추정의 인코딩 복잡도를 줄이기 위해 고속 인코딩 방법이 적용된다. PROF는 다음 두 가지 상황에서 아핀 모션 추정 단계에서 적용되지 않으며: a) 이 CU가 루트 블록이 아니고 부모 블록이 아핀 모드를 최상의 모드로 선택하지 않는 경우, 현재 CU가 아핀 모드를 최상의 모드로 선택할 가능성이 낮기 때문에 PROF는 적용되지 않으며; b) 4개의 아핀 파라미터(C, D, E, F)의 크기가 모두 미리 정의된 임계값보다 작고 현재 화면이 낮은 지연 픽처가 아닌 경우, 이 경우 PROF에 의해 도입된 개선이 작기 때문에 PROF가 적용되지 않는다. 이러한 방식에서, PROF를 사용한 아핀 모션 추정이 가속화될 수 있다.
2.6. 블록 파티셔닝의 가용성 프로세스의 예
6.4.1 허용되는 쿼드 분할 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 루마 샘플의 코딩 블록 크기 cbSize,
- 다중-타입 트리 깊이 mttDepth,
- 단일 트리(single tree)(SINGLE_TREE) 또는 이중 트리(dual tree)가 코딩 트리 노드를 파티셔닝하는 데 사용되는지 여부와, 이중 트리가 사용되는 경우, 루마(DUAL_TREE_LUMA) 또는 크로마 컴포넌트(DUAL_TREE_CHROMA)가 현재 처리되는지 여부를 지정하는 변수 treeType.
- 인트라(MODE_INTRA), IBC(MODE_IBC) 및 인터 코딩 모드를 사용할 수 있는지 여부를 지정하는 변수 modeType(MODE_TYPE_ALL), 또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTRA) 또는 코딩 트리 노드 내부의 코딩 유닛에 대해 인터 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTER).
이 프로세스의 출력은 변수 allowSplitQt이다.
변수 allowSplitQt는 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, allowSplitQt이 거짓(FALSE)과 동일하게 설정된다:
- treeType이 SINGLE_TREE 또는 DUAL_TREE_LUMA와 동일하고 cbSize가 MinQtSizeY보다 작거나 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 cbSize는 ( MinQtSizeC * SubHeightC / SubWidthC ) 보다 작거나 동일하다.
- mttDepth가 0이 아니다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 ( cbSize / SubWidthC )는 4보다 작거나 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 modeType은 MODE_TYPE_INTRA와 동일하다.
- 그렇지 않으면, allowSplitQt가 참(TRUE)과 동일하게 설정된다.
6.4.2 허용되는 이진 분할 프로세스(Allowed binary split process)
이 프로세스에 대한 입력은 다음과 같다:
- 이진 분할 모드 btSplit,
- 루마 샘플의 코딩 블록 너비 cbWidth,
- 루마 샘플의 코딩 블록 높이 cbHeight,
- 픽처의 좌측 상단 루마 샘플에 대한 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치( x0, y0 ),
- 다중-타입 트리 깊이 mttDepth,
- 오프셋 maxMttDepth가 있는 최대 다중-타입 트리 깊이,
- 최대 이진 트리 크기 maxBtSize,
- 최소 쿼드트리 크기 minQtSize,
- 파티션 인덱스 partIdx.
- 단일 트리(single tree)(SINGLE_TREE) 또는 이중 트리(dual tree)가 코딩 트리 노드를 파티셔닝하는 데 사용되는지 여부와, 이중 트리가 사용되는 경우, 루마(DUAL_TREE_LUMA) 또는 크로마 컴포넌트(DUAL_TREE_CHROMA)가 현재 처리되는지 여부를 지정하는 변수 treeType.
- 인트라(MODE_INTRA), IBC(MODE_IBC) 및 인터 코딩 모드를 사용할 수 있는지 여부를 지정하는 변수 modeType(MODE_TYPE_ALL), 또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTRA) 또는 코딩 트리 노드 내부의 코딩 유닛에 대해 인터 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTER).
이 프로세스의 출력은 변수 allowBtSplit이다.
표 2-1. btSplit 기반 parallelTtSplit 및 cbSize 사양(specification).
Figure pct00039
변수들 parallelTtSplit 및 cbSize는 표 2-1에 명시된 바와 같이 유도된다.
변수 allowBtSplit은 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다:
- cbSize가 MinBtSizeY보다 작거나 동일하다
- cbWidth가 maxBtSize보다 크다
- cbHeight가 maxBtSize보다 크다
- mttDepth가 maxMttDepth보다 크거나 동일하다
- treeType은 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )는 16보다 작거나 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC )는 4와 동일하고 btSplit은 SPLIT_BT_VER와 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 modeType은 MODE_TYPE_INTRA와 동일하다.
- cbWidth * cbHeight는 32와 동일하고 modeType은 MODE_TYPE_INTER와 동일하다.
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER와 동일하다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER와 동일하다
cbHeight가 64보다 크다.
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR와 동일하다
cbWidth가 64보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
cbWidth가 minQtSize보다 크다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR와 동일하다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 작거나 동일하다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다:
- mttDepth가 0보다 크다
- partIdx는 1과 동일하다
- MttSplitMode[ x0 ][ y0 ][ mttDepth - 1 ]는 parallelTtSplit과 동일하다
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_VER와 동일하다
cbWidth가 64보다 작거나 동일하다
cbHeight가 64보다 크다.
- 그렇지 않고, 다음 조건들이 모두 참이면, allowBtSplit이 거짓(FALSE)과 동일하게 설정된다.
- btSplit가 SPLIT_BT_HOR와 동일하다
- cbWidth가 64보다 크다
- cbHeight가 VPDUSizeY보다 작거나 동일하다
- 그렇지 않으면, allowBtSplit이 참(TRUE)과 동일하게 설정된다.
6.4.3 허용되는 삼진 분할 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 삼진 분할 모드 ttSplit,
- 루마 샘플의 코딩 블록 너비 cbWidth,
- 루마 샘플의 코딩 블록 높이 cbHeight,
- 픽처의 좌측 상단 루마 샘플에 대한 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치( x0, y0 ),
- 다중-타입 트리 깊이 mttDepth
- 오프셋 maxMttDepth가 있는 최대 다중-타입 트리 깊이,
- 최대 삼진 트리 크기 maxTtSize
- 단일 트리(single tree)(SINGLE_TREE) 또는 이중 트리(dual tree)가 코딩 트리 노드를 파티셔닝하는 데 사용되는지 여부와, 이중 트리가 사용되는 경우, 루마(DUAL_TREE_LUMA) 또는 크로마 컴포넌트(DUAL_TREE_CHROMA)가 현재 처리되는지 여부를 지정하는 변수 treeType.
- 인트라(MODE_INTRA), IBC(MODE_IBC) 및 인터 코딩 모드를 사용할 수 있는지 여부를 지정하는 변수 modeType(MODE_TYPE_ALL), 또는 인트라 및 IBC 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTRA) 또는 코딩 트리 노드 내부의 코딩 유닛에 대해 인터 코딩 모드만 사용할 수 있는지 여부 (MODE_TYPE_INTER).
이 프로세스의 출력들은 변수 allowTtSplit이다.
표 2-2. ttSplit 기반 cbSize 사양
Figure pct00040
변수 cbSize는 표 2에 명시된 바와 같이 유도된다.
변수 allowTtSplit은 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, allowTtSplit이 거짓(FALSE)과 동일하게 설정된다:
- cbSize는 2* MinTtSizeY보다 작거나 동일하다
- cbWidth가 Min( 64, maxTtSize )보다 크다
- cbHeight가 Min( 64, maxTtSize )보다 크다
- mttDepth가 maxMttDepth보다 크거나 동일하다
- x0 + cbWidth가 pic_width_in_luma_samples보다 크다
- y0 + cbHeight가 pic_height_in_luma_samples보다 크다
- treeType은 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC ) * ( cbHeight / SubHeightC )는 32보다 작거나 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 ( cbWidth / SubWidthC )는 8이고 ttSplit은 SPLIT_TT_VER와 동일하다.
- treeType은 DUAL_TREE_CHROMA와 동일하고 modeType은 MODE_TYPE_INTRA와 동일하다.
- cbWidth * cbHeight는 64와 동일하고 modeType은 MODE_TYPE_INTER와 동일하다.
- 그렇지 않으면, allowTtSplit이 참(TRUE)과 동일하게 설정된다.
6.4.4 이웃 블록 가용성 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
현재 픽처의 왼쪽 위쪽 루마 샘플에 대한 현재 블록의 왼쪽 위쪽 샘플의 루마 위치( xCurr, yCurr ),
현재 픽처의 왼쪽 상단 루마 샘플에 상대적인 이웃 블록에 의해 덮인 루마 위치( xNbY, yNbY ),
가용성이 예측 모드에 따라 달라지는지 여부를 지정하는 변수 checkPredModeY,
현재 블록의 컬러 컴포넌트를 지정하는 변수 cIdx,
이 프로세스의 출력은 availableN으로 표시된 위치( xNbY, yNbY )를 포함하는 이웃 블록의 가용성이다.
이웃 블록 가용성 availableN은 다음과 같이 유도된다:
- 다음 조건들 중 하나 이상이 참이면, availableN이 거짓(FALSE)과 동일하게 설정된다:
- xNbY는 0보다 작다.
- yNbY는 0보다 작다.
- xNbY는 pic_width_in_luma_samples보다 크거나 동일하다.
- yNbY는 pic_height_in_luma_samples보다 크거나 동일하다.
- IsAvailable[ cIdx ][ xNbY ][ yNbY ]는 거짓(FALSE)과 동일하다.
- 이웃 블록이 현재 블록과 다른 슬라이스에 포함되어 있다.
- 이웃 블록이 현재 블록과 다른 타일에 포함되어 있다.
- sps_entropy_coding_sync_enabled_flag는 1이고 ( xNbY >> CtbLog2SizeY )는 (xCurr >> CtbLog2SizeY ) + 1 이상이다.
- 그렇지 않으면, availableN이 참(TRUE)과 동일하게 설정된다.
다음 조건이 모두 참이면, availableN이 거짓(FALSE)과 동일하게 설정된다:
- checkPredModeY는 참(TRUE)와 동일하다.
- availableN은 참(TRUE)와 동일하게 설정된다.
- CuPredMode[ 0][ xNbY ][ yNbY ]는 CuPredMode[ 0][ xCurr ][ yCurr ]와 동일하지 않다.
2.7. 적응형 모션 벡터 해상도(Adaptive motion vector resolution)(AMVR)
HEVC에서, 슬라이스 헤더(slice header)에서 use_integer_mv_flag가 0일 때 모션 벡터 차(MVD: Motion Ventor Differences)(모션 벡터와 CU의 예측된 모션 벡터 간)는 1/4-루마-샘플(quarter-luma-sample)의 유닛으로 시그널링 된다. VVC에서, CU-레벨 적응형 모션 벡터 해상도(AMVR: Adaptive Motion Vector Resolution) 방식이 도입된다. AMVR을 사용하면 CU의 MVD를 다른 정밀도로 코딩할 수 있다. 현재 CU의 모드(일반 AMVP 또는 IBC 모드 또는 아핀(affine) AVMP 모드)에 따라, 현재 CU의 MVD는 다음과 같이 적응적으로 선택될 수 있다:
- 일반 AMVP 모드: 1/4 루마-샘플, 1/2 루마-샘플, 1 루마-샘플 또는 4 루마-샘플.
- 아핀 AMVP 모드: 1/4 루마-샘플, 1 루마-샘플 또는 1/16 루마-샘플.
- IBC 모드: 1 루마-샘플 또는 1/4 루마-샘플.
현재 CU가 적어도 하나 이상의 0이 아닌 MVD 컴포넌트를 가지고 있으면, CU-레벨 MVD 해상도 표시가 조건부로 시그널링 된다. 모든 MVD 컴포넌트(즉, 레퍼런스 목록 L0 및 레퍼런스 목록 L1에 대한 수평 및 수직 MVD 모두)가 0이면, 1/4-루마-샘플 MVD 해상도가 유추된다.
적어도 하나의 0이 아닌 MVD 컴포넌트가 있는 일반 AMVP 인터 모드(비-IBC, 비-아핀)로 코딩된 CU의 경우, 제1 플래그(예를 들어, amvr_flag)는 1/4 루마-샘플 MVD 정밀도가 CU에 사용되는지 여부를 나타내기 위해 시그널링된다. 제1 플래그가 0이면, 추가 시그널링이 필요하지 않으며 현재 CU에 대해 1/4-루마-샘플 MVD 정밀도가 사용된다. 그렇지 않으면, 두 번째 플래그(예를 들어, amvr_precision_idx의 제1 빈)는 1/2 루마-샘플 또는 다른 MVD 정밀도(1 루마-샘플 또는 4 루마-샘플)가 일반 AMVP CU에 사용됨을 나타내기 위해 시그널링된다. 1/2 루마-샘플의 경우, 기본 8탭 보간 필터 대신 6탭 보간 필터가 1/2 루마-샘플 위치에 사용된다. 그렇지 않으면, 1 루마-샘플 또는 4 루마-샘플 MVD 정밀도가 일반 AMVP CU에 사용되는지 여부를 나타내기 위해 제3 플래그(예를 들어, amvr_precision_idx의 제2 빈)가 시그널링된다.
affine AMVP 모드로 코딩된 CU의 경우, 제2 플래그는 1 루마-샘플 또는 1/16 루마-샘플 MVD 정밀도가 사용되는지 여부를 나타내는 데 사용된다.
IBC 모드로 코딩된 CU의 경우 제1 플래그는 시그널링되지 않고 1과 동일한 것으로 유추된다.
AMVR의 현재 설계에서 0과 동일한 amvr_flag는 모션 벡터 차(motion vector difference)의 해상도가 루마 샘플의 1/4임을 지정한다. 1과 동일한 amvr_flag는 모션 벡터 차(motion vector difference)의 해상도가 amvr_precision_idx에 의해 추가로 지정됨을 지정한다.
amvr_precision_idx 는 AmvrShift와의 모션 벡터 차(motion vector difference)의 해상도가 표 2-3에 정의되어 있음을 지정한다.
AMVR의 신택스 표 예
7.3.10.5 코딩 유닛 신택스
Figure pct00041
Figure pct00042
Figure pct00043
Figure pct00044
보다 구체적으로, amvr_flag 및 amvr_precision_idx에 대한 bin 문자열을 코딩하는 데 사용되는 bin 문자열 및 컨텍스트는 다음과 같이 정의된다:
Figure pct00045
Figure pct00046
Figure pct00047
7.4.11.5 코딩 유닛 시맨틱
amvr_precision_idx[ x0 ][ y0 ]은 AmvrShift와의 모션 벡터 차(motion vector difference)의 해상도가 표 2-3에 정의되어 있음을 지정한다. 어레이 인덱스(array indices) x0, y0은 픽처의 왼쪽 상단 루마 샘플을 기준으로 고려된 코딩 블록의 왼쪽 상단 루마 샘플의 위치(x0, y0)를 지정한다.
amvr_precision_flag[ x0 ][ y0 ]가 없으면, 0과 동일한 것으로 유추된다.
표 2-3. AmvrShift 사양
Figure pct00048
9.3.3 이진화 프로세스(Binarization process)
표 126 - 신택스 요소 및 관련 이진화
Figure pct00049
Figure pct00050
Figure pct00051
9.3.2.2 컨텍스트 변수의 초기화 프로세스(Initialization process for context variables)
표 51 - 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연결
초기화 프로세스에서
Figure pct00052
표 88 - amvr_flag의 ctxIdx에 대한 initValue 및 shiftIdx 지정
Figure pct00053
표 89 - amvr_precision_idx의 ctxIdx에 대한 initValue 및 shiftIdx 사양
Figure pct00054
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 ctxInc 할당
Figure pct00055
2.8. 정보 분할
VVC에서 이진 및 삼진 파티셔닝 세그멘테이션 구조(binary and ternary splits segmentation structure)를 사용하는 중첩된 다중 유형 트리가 있는 쿼드트리는 다중 파티션 유닛 유형의 개념을 대체하고, 예를 들어, 최대 트랜스폼 길이에 비해 크기가 너무 큰 CU에 필요한 경우를 제외하고 CU, PU 및 TU 개념의 분리를 제거하고 CU 파티션 형태에 대해 더 많은 유연성을 지원한다. 코딩 트리 구조에서, CU는 정사각형 또는 직사각형 형태를 가질 수 있다. 코딩 트리 유닛(CTU)는 먼저 4차 트리(quaternary tree)(쿼드트리(quadtree)라고도 함) 구조로 파티션된다. 그런 다음, 4차 트리 리프 노드(quaternary tree leaf node)는 다중 유형 트리 구조(multi-type tree structure)로 더 파티션될 수 있다. 도 10에 도시된 바와 같이, 다중형 트리 구조에는 수직 이진 분할(SPLIT_BT_VER), 수평 이진 분할(SPLIT_BT_HOR), 수직 삼진 분할(SPLIT_TT_VER) 및 수평 삼진 분할(SPLIT_TT_HOR)의 4가지 분할 유형들이 있다. 다중 유형 트리 리프 노드들은 코딩 유닛(CUs: coding units)이라고 하며, CU가 최대 트랜스폼 길이에 비해 너무 크지 않은 경우 이 세그멘테이션은 어떠한 추가 파티션 없이 예측 및 트랜스폼 처리에 사용된다. 이는 대부분의 경우 CU, PU 및 TU가 중첩된 다중 유형 트리 코딩 블록 구조를 갖는 쿼드트리에서 동일한 블록 크기를 갖는다는 것을 의미한다. 최대 지원되는 트랜스폼 길이가 CU의 컬러 컴포넌트 너비 또는 높이보다 작은 경우 예외가 발생한다.
도 11은 중첩된 다중 유형 트리 코딩 트리 구조를 가진 쿼드트리의 파티션 분할 정보의 신호 전달 메커니즘을 나타낸다. 코딩 트리 유닛 (CTU) 은 4차 트리의 루트로 취급되고, 먼저 4차 트리 구조에 의해 파티션된다. 그런 다음 각 4차 트리 리프 노드 (허용하기에 충분히 큰 경우)는 다중 유형 트리 구조로 추가로 파티션된다. 멀티-타입 트리 구조에서, 노드가 더 파티셔닝되었는지 여부를 나타내기 위해 제1 플래그 (mtt_split_cu_flag) 가 시그널링되고; 노드가 추가로 파티션될 때, 분할 방향을 나타내기 위해 제2 플래그 (mtt_split_cu_vertical_flag) 가 시그널링되고, 그 다음 제3 플래그 (mtt_split_cu_binary_flag) 는분할이 이진 분할인지 삼진 분할인지를 나타내기 위해 시그널링 된다. mtt_split_cu_수직_플래그 및 mtt_split_cu_binary_flag의 값을 기반으로 CU의 다중 유형 트리 슬리팅 모드 (MTTSplitMode)는 표 2-4에 표시된 대로 유도된다.
표 2-4. 다중 유형 트리 신택스 요소를 기반으로 하는 MTTSplitMode 유도
Figure pct00056
0과 동일한 mtt_split_cu_vertical_flag는 코딩 유닛이 수평으로 분할되는 것을 지정한다. 1과 동일한 mtt_split_cu_vertical_flag는 코딩 유닛이 수직으로 분할되는 것을 지정한다.
mtt_split_cu_vertical_flag가 없으면, 다음과 같이 유추된다:
allowSplitBtHor가 참(TRUE)과 동일하거나 allowSplitTtHor가 참(TRUE)과 동일하면, mtt_split_cu_vertical_flag의 값은 0과 동일한 것으로 유추된다.
그렇지 않으면, mtt_split_cu_vertical_flag의 값은 1과 동일한 것으로 유추된다.
mtt_split_cu_vertical_flag에 대한 신택스 표의 예
9.3.2.2 컨텍스트 변수의 초기화 프로세스(Initialization process for context variables)
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연관
Figure pct00057
표 61 - mtt_split_cu_vertical_flag의 ctxInc에 대한 initValue 및 shiftIdx 사양
Figure pct00058
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00059
9.3.4.2.3 신택스 요소 mtt_split_cu_vertical_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 현재 픽처의 왼쪽 위쪽 샘플에 상대적인 현재 루마 블록의 왼쪽 위쪽 루마 샘플을 지정하는 루마 위치( x0, y0 ), 이중 트리 채널 유형 chType, 루마 샘플 cbWidth 및 cbHeight에서 현재 코딩 블록의 너비 및 높이, 및 절 7.4.11.4의 코딩 트리 의미에서 유도되는 변수 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer, allowSplitTtHor 및 allowSplitQt이다.
이 프로세스의 출력은 ctxInc이다.
위치( xNbL, yNbL )는 ( x0 - 1, y0 )과 동일하게 설정되고 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 ( x0, y0 )과 동일한 위치( xCurr, yCurr ) 설정 및 ( xNbL, yNbL )과 동일한 이웃 위치( xNbY, yNbY ) 설정으로 호출되고, checkPredModeY는 거짓(FALSE)과 동일하게 설정되고, cIdx는 입력으로 설정되고 출력은 availableL에 할당된다.
위치( xNbA, yNbA )는 ( x0, y0 - 1 )과 동일하게 설정되고 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 ( xCurr, yCurr ) 위치가 ( x0, y0 )과 동일하게 설정된 상태에서 호출되고, 이웃 위치( xNbY, yNbY )는 ( xNbA, yNbA )와 동일하게 설정되고, checkPredModeY는 거짓(FALSE)과 동일하게 설정되고, cIdx는 입력으로 설정되고 출력은 availableA에 할당된다.
ctxInc의 할당은 다음과 같이 지정된다:
- allowSplitBtVer + allowSplitBtHor가 allowSplitTtVer + allowSplitTtHor보다 크면, ctxInc는 4로 설정된다.
- 그렇지 않고, allowSplitBtVer + allowSplitBtHor가 allowSplitTtVer + allowSplitTtHor보다 작으면, ctxInc는 4로 설정된다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 dA 및 dL은 다음과 같이 유도된다.
dA = cbWidth / ( availableA ? CbWidth[ chType ][ xNbA ][ yNbA ] : 1 ) (1563)
dL = cbHeight / ( availableL ? CbHeight[ chType ][ xNbL ][ yNbL ] : 1 ) (1564)
- 다음 조건 중 하나라도 참이면, ctxInc는 0으로 설정된다:
- dA는 dL과 동일하고,
- availableA는 거짓(FALSE)과 동일하다.
- availableL은 거짓(FALSE)과 동일하다.
- 그렇지 않고, dA가 dL보다 작으면 ctxInc는 1로 설정된다.
그렇지 않으면, ctxInc는 0으로 설정된다.
2.9. 트랜스폼 스킵 모드의 계수 코딩
현재 VVC 초안에서, 트랜스폼 스킵 레벨의 통계 및 신호 특성에 잔차 코딩을 적응시키기 위해 비-TS 계수 코딩과 비교하여 트랜스폼 스킵(TS) 모드에서 계수 코딩(coefficients coding)에 대해 몇 가지 수정이 제안된다.
7.3.10.11 잔차 코딩 신택스
Figure pct00060
Figure pct00061
Figure pct00062
Figure pct00063
Figure pct00064
Figure pct00065
Figure pct00066
Figure pct00067
2.9.1. 부호 플래그 coeff_sign_flag의 컨텍스트 모델링 및 컨텍스트 인덱스 오프셋 유도
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연관
Figure pct00068
표 125 - coeff_sign_flag의 ctxInc에 대한 initValue 및 shiftIdx 지정
Figure pct00069
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00070
9.3.4.2.10 트랜스폼 스킵 모드에 대한 신택스 요소 coeff_sign_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 컬러 컴포넌트 인덱스 cIdx, 현재 픽처의 왼쪽 상단 샘플에 상대적인 현재 트랜스폼 블록의 왼쪽 상단 샘플을 지정하는 루마 위치(x0, y0), 현재 계수 스캔 위치(xC, yC)이다.
이 프로세스의 출력은 변수 ctxInc이다.
변수 leftSign 및 aboveSign은 다음과 같이 유도된다:
leftSign = ( xC = = 0 ) ? 0 : CoeffSignLevel[ xC - 1 ][ yC ] (1595)
aboveSign = ( yC = = 0 ) ? 0 : CoeffSignLevel[ xC ][ yC - 1 ] (1596)
변수 ctxInc는 다음과 같이 유도된다:
leftSign이 0이고 aboveSign이 0인 경우, 또는 leftSign이 -aboveSign과 동일하면, 다음이 적용된다:
ctxInc = ( BdpcmFlag[ x0 ][ y0 ][ cIdx ] = = 0 ? 0 : 3 ) (1597)
그렇지 않고, leftSign이 0보다 크거나 동일하고 aboveSign이 0보다 크거나 동일하면, 다음이 적용된다:
ctxInc = ( BdpcmFlag[ x0 ][ y0 ][ cIdx ] ? 1 : 4 ) (1598)
그렇지 않으면, 다음이 적용된다:
ctxInc = ( BdpcmFlag[ x0 ][ y0 ][ cIdx ] ? 2 : 5 ) (1599)
3. 개시된 기술 솔루션 및 예로 해결된 기술적 문제의 예
AMVR 정밀도 인덱스 및 분할 CU 수직 플래그에 대한 컨텍스트 유도 프로세스의 현재 설계에는 다음과 같은 문제가 있다:
1. 블록이 수평 또는 수직으로 분할되도록 지정하는 신택스 요소(예를 들어,mtt_split_cu_vertical_flag)에 대한 컨텍스트 모델링은 "allowSplitBtVer + allowSplitBtHor"와 "allowSplitTtVer + allowSplitTtHor" 간의 관계에 따라 다르다. 그러나, BT/TT 수평을 허용하는 것에 비해 분할 정보와 BT/TT 수직 허용 사이의 상관관계가 더 높다는 것을 알 수 있다.
2. 현재 VVC에서 AMVR 정밀도 인덱스의 제1 빈(예를 들어, amvr_precision_idx)은 블록이 IBC 모드, 아핀 모드 또는 일반 인터 모드(비-IBC, 비-아핀)로 코딩되었는지 여부를 고려하지 않고 하나의 컨텍스트로 컨텍스트 코딩된다. AMVR 정밀도 인덱스를 코딩하는 것은 덜 효율적일 수 있다. 또한, amvr_precision_idx의 제2 빈이 일반 인터 모드의 블록에 대해 코딩되기 위해서는 amvr_precision_idx의 제1 빈에 사용되는 컨텍스트와 다른 별도의 컨텍스트를 사용한다. 신택스 요소를 코딩하는 데 사용되는 다중 컨텍스트는 신택스 요소가 덜 자주 코딩될 때 차선책일 수 있다.
3. 계수 코딩이 화면 콘텐츠 코딩에서 코딩 이점을 얻을 수 있지만, 계수 코딩 및 TS(변환 스킵) 모드에는 여전히 몇 가지 단점들이 있을 수 있다.
a. 다음의 경우에는 부호 플래그에 대해 바이패스 코딩 또는 컨텍스트 코딩을 사용할지 여부가 명확하지 않다:
i. 나머지 허용된 컨텍스트 코딩된 빈(RemCcbs로 표시)의 수는 0과 동일하다.
ii. 현재 블록은 TS 모드로 코딩된다.
iii. sh_ts_residual_coding_disabled_flag는 거짓이다.
4. 기술 솔루션 및 구현 목록
아래 아이템은 일반적인 개념을 설명하기 위한 예로 고려되어야 한다. 이러한 항목을 좁은 의미로 해석해서는 안된다. 또한, 이러한 항목은 어떤 방식으로든 결합할 수 있다.
본 개시에서, 용어 AMVR은 적응적 모션 벡터 차 해상도가 모션 벡터(MV)/MV 차(MVD) 코딩 또는 MV 예측기(MVP)에 사용되는 코딩 툴을 나타낸다. 이는 VVC에 설명된 AMVR 및 블록 파티셔닝 기술에 제한되지 않는다.
amvr_precision_idx라는 용어는 허용 가능한 모션 벡터 차 해상도(motion vector difference resolution)의 인덱스(또는 표시자(indicator))를 지정하는 신택스 요소를 나타낸다. 하나의 예에서, VVC 텍스트에 정의된 amvr_precision_idx일 수 있다. amvr_precision_idx는 하나 또는 여러 개의 bin을 포함할 수 있는 bin 문자열로 이진화될 수 있다.
mtt_split_cu_vertical_flag라는 용어는 코딩 블록의 수직 파티셔닝 여부를 지정하는 신택스 요소를 나타낸다. 하나의 예에서, VVC 텍스트에 정의된 mtt_split_cu_vertical_flag일 수 있다.
amvr_precision_idx에 대한 컨텍스트 유도
1. 제1 (빈 인덱스가 0임) 및/또는 AMVR의 사용을 나타내는 신택스 요소(SE)의 bin 문자열의 다른 빈(예를 들어, amvr_precision_idx 및/또는 amvr_flag)에 대한 컨텍스트 모델링(예를 들어, 컨텍스트 선택 방법)은 현재 블록 및/또는 이웃 블록의 코딩된 정보(예를 들어, 코딩된 모드)에 의존할 수 있다.
a. 하나의 예에서, 코딩된 정보는 IBC, 아핀 AMVR, 및 일반 인터(예를 들어, 비-IBC, 비-아핀) 모드, 이중 예측 및/또는 단일 예측, 현재 블록의 블록 차원 및/또는 이웃 블록의 블록 차원 중 적어도 하나를 포함할 수 있고, 코딩된 정보에 따라 빈(예를 들어, 제1 빈)을 코딩하기 위해 상이한 컨텍스트가 이용될 수 있다.
i. 대안적으로, 또한, IBC 코딩된 블록에 대한 SE의 하나의 빈(예를 들어, 제1 빈)은 CtxM으로 표시되는 단일 컨텍스트로 코딩된다.
ii. 대안적으로, 또한, 아핀 코딩된 블록에 대한 SE의 하나의 빈(예를 들어, 제1 빈)은 CtxN으로 표시되는 단일 컨텍스트로 코딩된다.
iii. 대안적으로, 또한, 일반 인터(예를 들어, 비-아핀 및 비-IBC) 코딩된 블록에 대한 SE의 하나의 빈(예를 들어, 제1 빈)은 CtxP로 표시되는 단일 컨텍스트로 코딩된다.
iv. 대안적으로, 또한, 3개의 컨텍스트 CtxM, CtxN 및 CtxP 중 적어도 하나는 다른 2개와 상이하다.
v. 대안적으로, 또한, 3개의 컨텍스트 CtxM, CtxN 및 CtxP 각각은 서로 상이하다.
vi. 예를 들어, SE의 하나의 빈(예를 들어, 제1 빈)은 양방향 예측 블록에 대해 CtxBi로 표시되는 단일 컨텍스트로 코딩되고 단일 예측 코딩된 블록에 대해 CtxUni로 표시되는 단일 컨텍스트로 코딩된다.
1) 하나의 예에서, CtxBi는 CtxUni와 상이하다.
b. 하나의 예에서, SE의 빈 스트링의 제1 빈 및/또는 다른 빈을 코딩하기 위해 하나보다 많은 컨텍스트가 이용될 수 있다.
i. 하나의 예에서, X 컨텍스트는 X > 1인 제1 빈에 대해 사용될 수 있다.
1) 하나의 예에서, X = 3이다.
a) 대안적으로, 더욱이, 컨텍스트의 선택은 코딩된 정보(예를 들어, 위에서 언급된 모드)에 의존한다.
2) 하나의 예에서, X = 2이다.
a) 대안적으로, 더욱이, 컨텍스트의 선택은 코딩된 정보(예를 들어, 위에서 언급된 모드) 및 IBC 코딩된 블록에 대한 하나의 컨텍스트 및 다른 블록(예를 들어, 아핀 또는 일반 인터로 코딩된)에 대한 다른 하나의 컨텍스트에 의존한다.
b) 대안적으로, 더욱이, 컨텍스트의 선택은 코딩된 정보(예를 들어, 위에서 언급된 모드) 및 IBC 및 아핀 AMVR 코딩된 블록에 대한 하나의 컨텍스트 및 다른 블록(예를 들어, 일반 인터로 코딩된)에 대한 다른 하나의 컨텍스트에 의존한다.
c. 하나의 예에서, 코딩된 정보(예를 들어, 코딩된 모드)에 따라 SE의 빈 스트링의 제1(빈 인덱스가 0임) 및/또는 다른 빈에 대한 상이한 모델이 상이한 초기화 값으로 초기화될 수 있다.
d. 하나의 예에서, 코딩된 정보(예를 들어, 코딩된 모드)에 따라 SE의 빈 스트링의 제1(빈 인덱스가 0임) 및/또는 다른 빈에 대한 상이한 모델은 동일한 초기화 값으로 초기화될 수 있다.
2. amvr_precision_idx 의 빈 문자열의 제1 및 제2 빈에 대해 서로 다른 컨텍스트를 사용하는 대신, 제2 빈을 코딩하는 데 사용되는 컨텍스트가 빈 문자열의 제1 빈 을 코딩하는 데 사용되는 컨텍스트 중 하나 이상과 동일할 수 있다고 제안한다.
a. 대안적으로, 빈 스트링의 제2 빈은 일반 인터(예를 들어, 비-아핀 및 비-IBC) 코딩된 블록에 대해서만 코딩된다.
b. 또는 빈 문자열의 제2 빈은 CtxQ로 표시되는 단일 컨텍스트로 코딩된다.
c. 대안적으로, 또한, IBC 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx 의 제2 빈을 코딩하기 위해 동일한 컨텍스트가 사용될 수 있다.
d. 대안적으로, 추가로, 동일한 컨텍스트가 아핀 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제2 빈을 코딩하는 데 사용될 수 있다.
e. 대안적으로, 또한, 동일한 컨텍스트가 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제2 빈을 코딩하는 데 사용될 수 있다.
3. 동일한 컨텍스트가 CtxM =CtxQ 와 같이 IBC 코딩된 블록(CtxM 으로 표시됨)에 대한 amvr_precision_idx 의 제1 빈 및 일반 인터 코딩된 블록(CtxQ로 표시됨)에 대한 amvr_precision_idx의 제2 빈을 코딩하는 데 사용될 수 있다.
a. 하나의 예에서, X1(X1 = 3과 같은) 컨텍스트는 amvr_precision_idx를 코딩하기 위해 활용될 수 있다.
b. 대안적으로, 또한, 비IBC 코딩된 블록에 대한 amvr_precision_idx의 빈 스트링의 제1 빈을 코딩하기 위한 상이한 컨텍스트가 이용될 수 있다.
4. CtxM = CtxPxN = Ct와 같은, IBC 코딩된 블록에 대한 amvr_precision_idx의 제1 빈, 아핀 코딩된 블록에 대한 amvr_precision_idx 의 제1 빈 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈을 코딩하는 데 동일한 컨텍스트가 사용될 수 있다.
a. 하나의 예에서, (X2=2와 같은) X2 컨텍스트는 amvr_precision_idx를 코딩하기 위해 이용될 수 있다.
b. 대안적으로, 또한, 비-IBC 및 비-아핀 코딩된 블록에 대한 amvr_precision_idx의 빈 스트링의 제1 빈을 코딩하기 위한 상이한 컨텍스트가 이용될 수 있다.
5. IBC 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 및 CtxM = CtxP와 같은 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈을 코딩하는 데 동일한 컨텍스트가 사용될 수 있다.
a. 하나의 예에서, (X3=3과 같은) X3 컨텍스트는 amvr_precision_idx를 코딩하기 위해 이용될 수 있다.
b. 대안적으로, 또한, 비-IBC 및 비-정규 인터 코딩된 블록(non-normal inter coded block)(예를 들어, 아핀 AMVR로 코딩됨)에 대한 amvr_precision_idx의 빈 스트링의 제1빈을 코딩하기 위한 상이한 컨텍스트가 이용될 수 있다.
c. 대안적으로, 또한, amvr_precision_idx의 bin 스트링의 제2 bin을 코딩하기 위한 상이한 컨텍스트가 이용될 수 있다.
6. CtxM = CtxN과 같이 IBC 코딩된 블록에 대한 amvr_precision_idx 의 제1 빈 및 아핀 코딩된 블록에 대한 amvr_precision_idx 의 제1 빈을 코딩하는 데 동일한 컨텍스트가 사용될 수 있다.
7. 동일한 컨텍스트가 IBC 코딩된 블록, 아핀 코딩된 블록 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 모든 빈을 코딩하는 데 사용될 수 있다.
a. 하나의 예에서, amvr_precision_idx코딩을 위해 단일 컨텍스트가 이용될 수 있다.
8. IBC 코딩된 블록, 아핀 코딩된 블록 및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈을 코딩하기 위해 다중 컨텍스트가 사용될 수 있고, 단일 컨텍스트는 제1 빈을 코딩하는 데 사용되는 것과 다른 제2 빈을 코딩하는 데 사용될 수 있다.
a. 하나의 예에서, X4(X4 = 4와 같은) 컨텍스트는 amvr_precision_idx를 코딩하기 위해 활용될 수 있다.
b. 예를 들어, CtxM != CtxQ != CtxN != CtxP이다.
9. amvr_precision_idx를 코딩하는 데 사용되는 적어도 하나의 컨텍스트는 amvr_flag를 코딩하는 데 사용되는 컨텍스트와 동일할 수 있다고 제안된다.
a. 아핀 코딩된 블록의 AMVR 플래그(예를 들어, amvr_flag)를 코딩하기 위한 동일한 컨텍스트가 IBC 코딩된 블록에 대한 amvr_precision_idx의 제1 빈, 또는/및 아핀 코딩된 블록에 대한 amvr_precision_idx 의 제1 빈, 또는/및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 또는/및 제2 빈을 위해 활용될 수 있다.
b. 비-아핀 코딩된 블록의 AMVR 플래그(예를 들어, amvr_flag)를 코딩하기 위한 동일한 컨텍스트가 IBC 코딩된 블록에 대한 amvr_precision_idx의 제1 빈, 또는/및 아핀 코딩된 블록에 대한 amvr_precision_idx의 제1 빈, 또는/및 일반 인터 코딩된 블록에 대한 amvr_precision_idx의 제1 빈 또는/및 제2 빈을 위해 활용될 수 있다.
c. amvr_precision_idx의 제1 빈에 대한 컨텍스트 모델링은 블록에 아핀 모드가 적용되는지 여부에 따라 다르다.
i. 대안적으로, 더욱이, 하나의 컨텍스트는 아핀 코딩된 블록의 제1 빈을 코딩하는 데 사용되고 다른 컨텍스트는 비-아핀 코딩된 블록(예를 들어, 일반 인터 및 IBC 코딩된 블록을 포함)에 사용된다.
ii. 대안적으로, 더욱이, 제1 컨텍스트는 아핀 코딩된 블록의 제1 빈을 코딩하는 데 사용되고 제2 컨텍스트는 비-아핀 코딩된 블록(예를 들어, 일반 인터 및 IBC 코딩된 블록을 포함함)에 대해 사용된다. 그리고 제1 컨텍스트는 아핀 코딩된 블록의 amvr_flag를 코딩하는 데 사용되는 컨텍스트와 동일하고; 제2 컨텍스트는 비-아핀(non-affine) 코딩된 블록의 amvr_flag를 코딩하는 데 사용되는 컨텍스트와 동일하다.
mtt_split_cu_vertical_flag에 대한 컨텍스트 유도
변수 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer 및 allowSplitTtHor가 각각 수직 BT 분할, 수평 BT 분할, 수직 TT 분할 및 수평 TT 분할이 현재 코딩 트리 노드에 대해 허용되는지 여부를 나타내도록 한다. 그리고 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer 및 allowSplitTtHor의 값은 2.6절에서 유도된 0 또는 1과 동일할 수 있다. 현재 블록의 너비, 현재 블록의 높이, 왼쪽 이웃 블록의 너비, 왼쪽 이웃 블록의 높이, 위쪽 이웃 블록 및 각각 curW, curH, leftW, leftH, aboveW 및 aboveH에 의한 이웃 블록 위쪽의 높이를 나타낸다. "numV"는 allowSplitBtVer 및 allowSplitTtVer의 합과 동일한 값이고 "numH"는 allowSplitBtHor 및 allowSplitTtHor의 합과 동일한 값이다.
10. 블록 분할 정보(예를 들어, mtt_split_cu_vertical_flag)를 나타내는 SE에 대한 컨텍스트 모델링은 수직 분할을 허용하는(예를 들어, BT 및 TT에 대해) 수평 분할을 허용하는 수(예를 들어, BT 및 TT에 대해)에 의존할 수 있다.
a. 하나의 예에서, 수평 분할에 비해 수직 분할이 허용되는 경우가 더 많은 경우(예를 들어, numV > numH), 컨텍스트의 제1 세트가 활용된다.
b. 하나의 예에서, 수평 분할에 비해 수직 분할이 허용되는 경우가 더 적은 경우(예를 들어, numV < numH), 컨텍스트의 제2 세트가 활용된다.
c. 하나의 예에서, 수직 분할이 수평 분할에 비해 허용되는 동일한 경우(예를 들어, numV = numH)가 있는 경우 제3 컨텍스트 세트가 활용된다.
d. 대안적으로, 또한, 제1/제2/제3 세트의 컨텍스트 중 어느 것도 동일하지 않다.
e. 대안적으로, 또한, 제1/제2/제3 세트의 컨텍스트 중 적어도 하나는 다른 세트에 포함된 것과 동일하다.
f. 대안적으로, 또한, 3개의 세트 각각에 대한 컨텍스트의 수는 세트 인덱스에 의존할 수 있다.
i. 하나의 예에서, 제1 및/또는 제2 세트에는 오직 하나의 컨텍스트만 포함된다.
ii. 하나의 예에서 여러 컨텍스트가 제3 세트에 포함된다.
1) 대안적으로, 더욱이, 제3 세트로부터의 컨텍스트의 선택은 위쪽 및 왼쪽 이웃 블록의 가용성, 및/또는 현재 블록의 블록 차원 및 이웃 블록의 블록 차원에 더 의존할 수 있다.
g. 예는 섹션 5.4의 실시예 #4에 나와 있다.
h. 예는 섹션 5.5의 실시예 #5에 나와 있다.
11. 블록을 수직으로 분할할지 여부를 나타내는 SE(예를 들어, mtt_split_cu_vertical_flag)는 N개의 컨텍스트로 코딩되며, 이는 BT/TT 분할이 허용되는지 여부, 또는/및 현재 블록의 너비/높이, 또는/및 이웃 블록의 너비/높이에 따라 달라질 수 있다.
i. 하나의 예에서, SE를 코딩하기 위해 어떤 컨텍스트가 사용되는지는 numV 및 numH에 의존할 수 있다.
i. 예를 들어, numV가 numH보다 큰지 여부에 따라 다르다.
ii. 예를 들어, numV가 numH보다 작은지 여부에 따라 다르다.
iii. 예를 들어, numV가 numH와 동일한지 여부는 수단에 따라 다르다.
j. 하나의 예에서, SE의 빈 문자열은 BT/TT 분할이 허용되는지 여부에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
i. 하나의 예에서, SE는 numV가 numH보다 클 때 CtxA로 표시된 컨텍스트로 코딩된다.
ii. 하나의 예에서, SE는 numV가 numH보다 작을 때 CtxB로 표시되는 컨텍스트로 코딩된다.
iii. 하나의 예에서, SE는 numV가 numH와 동일할 때 CtxC로 표시되는 컨텍스트로 코딩된다.
iv. 하나의 예에서, CtxA는 CtxB와 동일하고, CtxB는 CtxC와 동일하다(예를 들어, CtxA = CtxB = CtxC), 예를 들어 CtxA = CtxB = CtxC = 0.
v. 하나의 예에서, CtxA != CtxB != CtxC, 예를 들어 CtxA = 0, CtxB = 1, CtxC = 2.
k. 하나의 예에서, SE의 빈 스트링은 현재 블록의 폭/높이, 또는/및 이웃 블록의 폭/높이에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
i. 하나의 예에서, 이웃 블록은 위의 이웃 블록, 또는/및 왼쪽 이웃 블록을 참조할 수 있다.
ii. 하나의 예에서, SE는 현재 블록의 폭 또는 높이, 또는/및 이웃 블록의 폭 또는 높이의 함수에 의존할 수 있는 N개의 컨텍스트로 코딩된다. dA = curW / aboveW 및 dL = curH / leftH를 나타낸다.
1) 하나의 예에서, SE는 왼쪽 이웃 블록 또는 위쪽 이웃 블록 중 어느 하나를 이용할 수 없거나 dA가 dL과 동일할 때 CtxD로 표시되는 컨텍스트로 코딩된다.
2) 하나의 예에서, SE는 dA가 dL보다 작을 때 CtxE로 표시되는 컨텍스트로 코딩된다.
3) 하나의 예에서, SE는 dA가 dL보다 클 때 CtxF로 표시되는 컨텍스트로 코딩된다.
l. 하나의 예에서, SE의 빈 스트링은 BT/TT 분할이 허용되는지 여부, 또는/및 현재 블록의 폭/높이, 또는/및 이웃 블록의 폭/높이에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
i. 하나의 예에서, SE는 numV가 numH보다 클 때 CtxA로 표시된 컨텍스트로 코딩된다.
ii. 하나의 예에서, SE는 numV가 numH보다 작을 때 CtxB로 표시되는 컨텍스트로 코딩된다.
iii. 하나의 예에서, SE는 numV가 numH와 동일할 때 CtxC로 표시되는 컨텍스트로 코딩된다(왼쪽 이웃 블록 또는 위쪽 이웃 블록은 이용 불가능하거나 dA가 dL과 동일).
iv. 하나의 예에서, SE는 numV가 numH와 동일하고 dA가 dL보다 작은 경우 CtxE로 표시된 컨텍스트로 코딩된다.
v. 하나의 예에서, SE는 numV가 numH와 동일하고 dA가 dL보다 클 때 CtxF로 표시되는 컨텍스트로 코딩된다.
하나의 예에서, N = 5, CtxA != CtxB != CtxC != CtxE != CtxF이다.
m. 하나의 예에서, SE의 빈 스트링은 현재 블록이 픽처 경계에 있는지 여부에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
n. 하나의 예에서, SE의 빈 스트링은 이중-트리 및/또는 로컬 이중-트리가 적용되는지 여부에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
o. 하나의 예에서, SE의 빈 스트링은 파티셔닝될 샘플의 컬러 컴포넌트(들)에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
p. 하나의 예에서, SE의 빈 스트링은 현재 블록의 폭/높이에 따라 N개의 컨텍스트로 컨텍스트 코딩될 수 있다.
i. 하나의 예에서, 컨텍스트 증가는 블록 폭 또는 높이의 함수로 설정될 수 있다.
12. 분할 CU 수직 플래그(예를 들어, mtt_split_cu_vertical_flag)는 단일 컨텍스트로 코딩될 수 있다.
계수 부호 플래그에 대해 바이패스 코딩 또는 컨텍스트 코딩을 사용하는 방법
13. 트랜스폼 계수 레벨(예를 들어, 신택스 요소coeff_sign_flag)의 부호에 대해 컨텍스트 코딩을 사용할지 또는 바이패스 코딩을 사용할지 여부는 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수 및/또는 현재 블록(예를 들어, DCT2, DST7 또는 트랜스폼 스킵)의 트랜스폼에 사용되는 트랜스폼의 종류에 따라 다르다.
a. 하나의 예에서, 트랜스폼 스킵 잔차 코딩의 절차에서, RemCcbs가 T1보다 큰 경우(예를 들어, T1 = 0), 컨텍스트 코딩이 coeff_sign_flag에 사용될 수 있다.
i. 추가적으로, 트랜스폼 스킵 잔차 코딩의 절차에서, RemCcbs가 T1과 동일한 경우(예를 들어, T1 = 0), 바이패스 코딩이 coeff_sign_flag에 사용될 수 있다.
b. 하나의 예에서, 트랜스폼 스킵 잔차 코딩의 절차에서, RemCcbs가 T2(예를 들어, T2 = 3)보다 크거나 동일할 때, 컨텍스트 코딩은 coeff_sign_flag에 사용될 수 있다.
i. 또한, 트랜스폼 스킵 잔차 코딩 과정에서 RemCcbs가 T2보다 작은 경우(예를 들어, T2 = 3), 바이패스 코딩은 coeff_sign_flag에 사용될 수 있다.
14. 트랜스폼 스킵 잔차 코딩 프로세스의 제3/나머지 계수 스캔 패스에서 나머지 신택스 요소(예를 들어, 신택스 요소 abs_remainder 및 coeff_sign_flag)에 대한 바이패스 코딩의 시작에서, 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수를 지정하는 변수에 동작(operation)이 적용될 수 있다.
c. 하나의 예에서, 동작은 RemCcbs를 특정 값(예를 들어, 0)과 동일하게 설정하는 것일 수 있다.
d. 하나의 예에서, 동작은 RemCcbs를 제외한 적어도 하나의 변수 또는 신택스 요소에 따른 값과 동일하도록 RemCcbs를 설정하는 것일 수 있다.
i. 하나의 예에서, 동작은 RemCcbs에서 1을 뺀 것과 동일하도록 RemCcbs를 설정하는 것일 수 있다.
15. 예는 섹션 5.7의 실시예 #7에 나와 있다.
16. 예는 섹션 5.8의 실시예 #8에 나와 있다.
17. 트랜스폼 계수 레벨(예를 들어, coeff_sign_flag)가 바이패스 모드(bypass mode) 또는 컨텍스트 코딩 모드(context-coding mode)로 코딩되는지 여부는 남아 있는 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수에 의존할 수 있다.
e. 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수가 N보다 작은 경우 트랜스폼 계수 레벨(예를 들어,coeff_sign_flag)의 부호가 바이패스 모드로 코딩되도록 제안된다.
f. 하나의 예에서, 부호 플래그는 RemCcbs <= N일 때 바이패스 모드로 코딩된다.
i. 대안적으로, 하나의 예에서, 부호 플래그는 RemCcbs >N일 때 컨텍스트 모드로 코딩된다.
g. 하나의 예에서, 부호 플래그는 RemCcbs가 N과 동일할 때 바이패스 모드로 코딩된다.
i. 대안적으로, 하나의 예에서, 부호 플래그는 RemCcbs > N일 때 바이패스 모드로 코딩된다.
ii. 하나의 예에서, N은 4와 동일하게 설정될 수 있다.
1) 대안적으로, 하나의 예에서, N은 0과 동일하게 설정될 수 있다.
iii. 하나의 예에서, RemCcbs는 트랜스폼 계수 레벨의 나머지 절대값을 디코딩하기 전에 X로 수정될 수 있으며, 여기서 X는 N과 동일하다.
h. 하나의 예에서, 부호 플래그는 RemCcbs가 N보다 작을 때 바이패스 모드로 코딩된다.
i. 대안적으로, 하나의 예에서, 부호 플래그는 RemCcbs >= N일 때 컨텍스트 모드로 코딩된다.
ii. 하나의 예에서, N은 3과 동일하게 설정될 수 있다.
iii. 하나의 예에서, RemCcbs는 트랜스폼 계수 레벨의 나머지 절대값을 디코딩하기 전에 X로 수정될 수 있으며, 여기서 X는 N보다 작다.
i. 하나의 예에서, N은 정수이고 다음을 기반으로 할 수 있다.
i. SPS/VPS/PPS/picture header/slice header/tile group header/LCU row/group of LCUs/LCU/CU에서 시그널링 되는 표시
ii. 현재 블록 및/또는 이웃 블록의 블록 차원
iii. 현재 블록 및/또는 이웃 블록의 블록 모양
iv. 컬러 포멧의 표시(예를 들어, 4:2:0, 4:4:4)
v. 분리 또는 이중 코딩 트리 구조가 사용 중인지 여부
vi. 슬라이스 유형 및/또는 픽처 유형
vii. 컬러 컴포넌트의 수
j. 트랜스폼 계수 레벨(예를 들어, coeff_sign_flag)을 코딩하는 데 사용되는 코딩 컨텍스트는 나머지 허용된 컨텍스트 코딩된 빈(예를 들어, RemCcbs)의 수에 의존할 수 있다.
k. 위의 예는 BDPCM 코딩된 블록을 포함하거나 제외하는 트랜스폼 블록 및/또는 트랜스폼 스킵 블록에 적용될 수 있다.
일반
18. 위에 개시된 방법을 적용할지 여부 및/또는 적용하는 방법은 시퀀스 헤더/픽처 헤더/SPS/VPS/DPS/DCI/PPS/APS/슬라이스 헤더/타일 그룹 헤더와 같은 시퀀스 레벨/픽처 레벨/슬라이스 레벨/타일 그룹 레벨에서 시그널링될 수 있다.
19. 위에 개시된 방법을 적용할지 여부 및/또는 적용하는 방법은 컬러 포맷, 단일/이중 트리 파티셔닝과 같은 코딩된 정보에 따라 달라질 수 있다.
5. 실시예
9.3.2.2 컨텍스트 변수의 초기화 프로세스(Initialization process for context variables)
표 51 - 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연결
초기화 프로세스에서
Figure pct00071
표89 - amvr_precision_idx의 ctxIdx에 대한 initValue 및 shiftIdx 지정
Figure pct00072
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00073
X, Y 및 Z 중 임의의 2개가 서로 동일하지 않은 경우(예를 들어, X != Y != Z), 예를 들어, X = 1, Y = 0, Z = 2.
대안 1: X != Y != Z, X = 0, Y = 2, Z = 1
대안 2: X != Y != Z, X = 0, Y = 1, Z = 2.
대안 3: X != Y != Z, X = 1, Y = 2, Z = 0
대안 4: X != Y != Z, X = 2, Y = 0, Z = 1
대안 5: X != Y != Z, X = 2, Y = 1, Z = 0
대안적으로, 다음을 적용한다:
Figure pct00074
위의 예에서 X!=Y, X!=Z, Y!=Z이다.
또는 다음이 적용된다:
1) 하나의 예에서, S는 T와 동일하다.
2) 또는 W는 Y와 동일하다.
3) 또는 W는 Z와 동일하다.
5.2. 실시예 2
9.3.2.2 컨텍스트 변수의 초기화 프로세스(Initialization process for context variables)
표 51 - 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연결
초기화 프로세스에서
Figure pct00075
표 89 - amvr_precision_idx의 ctxIdx에 대한 initValue 및 shiftIdx 사양
Figure pct00076
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00077
여기서 X, Y, Z 및 W 중 임의의 2개가 서로 동일하지 않은 경우(예를 들어, X != Y != Z != W), 예를 들어, X = 0, Y = 1, Z = 2, W = 3.
5.3. 실시예 3
9.3.2.2 컨텍스트 변수의 초기화 프로세스(Initialization process for context variables)
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소의 연관
Figure pct00078
표 89 - amvr_precision_idx의 ctxIdx에 대한 initValue 및 shiftIdx 사양
Figure pct00079
5.4. 실시예 4
작업 초안은 아래와 같이 변경할 수 있다.
9.3.4.2.3 신택스 요소 mtt_split_cu_vertical_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 현재 픽처의 왼쪽 위쪽 샘플에 상대적인 현재 루마 블록의 왼쪽 위쪽 루마 샘플을 지정하는 루마 위치( x0, y0 ), 이중 트리 채널 유형 chType, 루마 샘플 cbWidth 및 cbHeight에서 현재 코딩 블록의 너비 및 높이, 및 절 7.4.11.4의 코딩 트리 의미에서 유도되는 변수 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer, allowSplitTtHor 및 allowSplitQt이다.
이 프로세스의 출력은 ctxInc이다.
위치( xNbL, yNbL )는 ( x0 - 1, y0 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbL, yNbL )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableL에 할당된다.
위치( xNbA, yNbA )는 ( x0, y0-1 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbA, yNbA )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableA에 할당된다.
ctxInc의 할당은 다음과 같이 지정된다:
- allowSplitBtVer + [[allowSplitBtHor]] allowSplitTtVer 가 [[allowSplitTtVer]] allowSplitBtHor + allowSplitTtHor보다 크면, ctxInc는 4로 설정된다.
- 그렇지 않고, allowSplitBtVer + [[allowSplitBtHor]] allowSplitTtVer 가 [[allowSplitTtVer]] allowSplitBtHor + allowSplitTtHor보다 작으면, ctxInc는 [[4]]3과 동일하게 설정된다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 dA 및 dL은 다음과 같이 유도된다.
dA = cbWidth / ( availableA ? CbWidth[ chType ][ xNbA ][ yNbA ] : 1 ) (1563)
dL = cbHeight / ( availableL ? CbHeight[ chType ][ xNbL ][ yNbL ] : 1 ) (1564)
- 다음 조건 중 하나라도 참이면, ctxInc는 0으로 설정된다:
- dA는 dL과 동일하고,
- availableA는 거짓(FALSE)과 동일하고,
- availableL은 거짓(FALSE)과 동일하다.
- 그렇지 않고, dA가 dL보다 작으면 ctxInc는 1로 설정된다.
- 그렇지 않으면, ctxInc는 [[0]] 2 와 동일하게 설정된다.
1.2. 실시예 5
작업 초안은 아래와 같이 변경할 수 있다.
9.3.4.2.3 신택스 요소 mtt_split_cu_vertical_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 현재 픽처의 왼쪽 위쪽 샘플에 상대적인 현재 루마 블록의 왼쪽 위쪽 루마 샘플을 지정하는 루마 위치( x0, y0 ), 이중 트리 채널 유형 chType, 루마 샘플 cbWidth 및 cbHeight에서 현재 코딩 블록의 너비 및 높이, 및 절 7.4.11.4의 코딩 트리 의미에서 유도되는 변수 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer, allowSplitTtHor 및 allowSplitQt이다.
이 프로세스의 출력은 ctxInc이다.
위치( xNbL, yNbL )는 ( x0 - 1, y0 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbL, yNbL )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableL에 할당된다.
위치( xNbA, yNbA )는 ( x0, y0-1 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbA, yNbA )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableA에 할당된다.
ctxInc의 할당은 다음과 같이 지정된다:
- allowSplitBtVer + [[allowSplitBtHor]] allowSplitTtVer 가 [[allowSplitTtVer]] allowSplitBtHor + allowSplitTtHor보다 크면, ctxInc는 [[4]] X 와 동일하게 설정된다.
- 그렇지 않고, allowSplitBtVer + [[allowSplitBtHor]] allowSplitTtVer 가 [[allowSplitTtVer]] allowSplitBtHor + allowSplitTtHor보다 작으면 ctxInc는 [[4]] Y 와 동일하게 설정된다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 dA 및 dL은 다음과 같이 유도된다.
dA = cbWidth / ( availableA ? CbWidth[ chType ][ xNbA ][ yNbA ] : 1 ) (1563)
dL = cbHeight / ( availableL ? CbHeight[ chType ][ xNbL ][ yNbL ] : 1 ) (1564)
- 다음 조건 중 하나라도 참이면, ctxInc는 [[0]] Z 와 동일하게 설정된다:
- dA는 dL과 동일하고,
- availableA는 거짓(FALSE)과 동일하고,
- availableL은 거짓(FALSE)과 동일하다.
- 그렇지 않고, dA가 dL보다 작으면, ctxInc는 [[1]] W 와 동일하게 설정된다.
- 그렇지 않으면, ctxInc는 [[0]] V 와 동일하게 설정된다.
여기서 X != Y != Z != W != V, 예를 들어, X = 4, Y = 3, Z = 0, W = 1, V = 2.
대안 1: X = 3, Y = 4, Z = 0, W = 1, V = 2
대안 2: X = 4, Y = 3, Z = 2, W = 1, V = 0
대안 3: X = 0, Y = 1, Z = 2, W = 3, V = 4
5.5. 실시예 6
작업 초안은 아래와 같이 변경할 수 있다.
9.3.2.2 컨텍스트 변수의 초기화 과정
표 51 - 초기화 프로세스에서 각 initializationType에 대한 ctxIdx 및 신택스 요소 연관
Figure pct00080
표 61 - mtt_split_cu_vertical_flag의 ctxInc에 대한 initValue 및 shiftIdx 사양
Figure pct00081
9.3.4.2 ctxTable, ctxIdx 및 bypassFlag에 대한 유도 프로세스
9.3.4.2.1 일반
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00082
[[9.3.4.2.3 신택스 요소 mtt_split_cu_vertical_flag에 대한 ctxInc의 유도 프로세스
이 프로세스에 대한 입력은 현재 픽처의 왼쪽 위쪽 샘플에 상대적인 현재 루마 블록의 왼쪽 위쪽 루마 샘플을 지정하는 루마 위치( x0, y0 ), 이중 트리 채널 유형 chType, 루마 샘플 cbWidth 및 cbHeight에서 현재 코딩 블록의 너비 및 높이, 및 절 7.4.11.4의 코딩 트리 의미에서 유도되는 변수 allowSplitBtVer, allowSplitBtHor, allowSplitTtVer, allowSplitTtHor 및 allowSplitQt이다.
이 프로세스의 출력은 ctxInc이다.
위치( xNbL, yNbL )는 ( x0 - 1, y0 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbL, yNbL )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableL에 할당된다.
위치( xNbA, yNbA )는 ( x0, y0-1 )과 동일하게 설정되고, 6.4.4절에 명시된 이웃 블록 가용성에 대한 유도 프로세스는 위치 ( x0, y0 )와 동일하게 설정된 위치( xCurr, yCurr ), ( xNbA, yNbA )와 동일하게 설정된 이웃 위치( xNbY, yNbY ), 거짓과 동일하게 설정된 checkPredModeY, 및 cIdx을 입력으로 하여 호출되고, 출력은 availableA에 할당된다.
ctxInc의 할당은 다음과 같이 지정된다:
- allowSplitBtVer + allowSplitBtHor가 allowSplitTtVer + allowSplitTtHor보다 크면, ctxInc는 4로 설정된다.
- 그렇지 않고, allowSplitBtVer + allowSplitBtHor가 allowSplitTtVer + allowSplitTtHor보다 작으면, ctxInc는 4로 설정된다.
- 그렇지 않으면, 다음이 적용된다:
- 변수 dA 및 dL은 다음과 같이 유도된다.
dA = cbWidth / ( availableA ? CbWidth[ chType ][ xNbA ][ yNbA ] : 1 ) (1563)
dL = cbHeight / ( availableL ? CbHeight[ chType ][ xNbL ][ yNbL ] : 1 ) (1564)
- 다음 조건 중 하나라도 참이면, ctxInc는 0으로 설정된다:
- dA는 dL과 동일하고,
- availableA는 거짓(FALSE)과 동일하고,
- availableL은 거짓(FALSE)과 동일하다.
- 그렇지 않고, dA가 dL보다 작으면 ctxInc는 1로 설정된다.
그렇지 않으면, ctxInc는 0으로 설정된다.]]
5.7. 실시예 7
작업 초안은 아래와 같이 변경될 수 있다.
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
Figure pct00083
Figure pct00084
Figure pct00085
Figure pct00086
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00087
5.8. 실시예 8
작업 초안은 아래와 같이 변경할 수 있다.
7.3.10.11 잔차 코딩 신택스(Residual coding syntax)
Figure pct00088
Figure pct00089
Figure pct00090
Figure pct00091
표 131 - 컨텍스트 코딩된 빈이 있는 신택스 요소에 대한 ctxInc 할당
Figure pct00092
도 12는 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(video processing system)(1200)을 도시하는 블록도이다. 다양한 구현은 시스템(system)(1200)의 컴포넌트 중 일부 또는 전부를 포함할 수 있다. 시스템(1200)은 비디오 콘텐츠를 수신하기 위한 입력(input)(1202)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들어, 8 또는 10비트 다중 컴포넌트 픽셀 값으로 수신될 수 있거나 압축 또는 인코딩된 포맷일 수 있다. 입력(1202)은 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예로는 이더넷, 수동 광 네트워크(PON) 등과 동일한 유선 인터페이스와 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스가 있다.
시스템(1200)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(coding component)(1204)를 포함할 수 있다. 코딩 컴포넌트(1204)는 비디오의 코딩된 표현을 생성하기 위해 입력(1202)으로부터 코딩 컴포넌트(1204)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술은 비디오 압축 또는 비디오 트랜스코딩 기술이라고도 한다. 코딩 컴포넌트(1204)의 출력은 컴포넌트(component)(1206)에 의해 표현되는 바와 같이, 연결된 통신을 통해 저장되거나 전송될 수 있다. 입력(1202)에서 수신된 비디오의 저장되거나 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(1210)로 전송되는 픽셀 값 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(1208)에 의해 사용될 수 있다. 비트스트림 표현(bitstream representation)에서 사용자가 볼 수 있는 비디오를 생성하는 프로세스를 비디오 압축 해제(decompression)라고도 한다. 또한, 특정 비디오 처리 동작을 "코딩" 동작(coding operation) 또는 툴(tools)로 지칭하지만, 코딩 툴 또는 동작이 인코더에서 사용되고 코딩 결과를 되돌리는 대응하는 디코딩 툴 또는 동작이 디코더에 의해 수행된다는 점을 이해할 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예로는 범용 직렬 버스(USB) 또는 고화질 멀티미디어 인터페이스(HDMI) 또는 디스플레이포트 등이 포함될 수 있다. 스토리지 인터페이스의 예로는 SATA(직렬 첨단 기술 첨부 파일), PCI, IDE 인터페이스 등이 있다. 본 문서에 기재된 기술은 휴대전화, 노트북, 스마트폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 기타 장치와 같은 다양한 전자 기기에 구현될 수 있다.
도 13은 비디오 처리 장치(3600)의 블록도이다. 장치(apparatus)(3600)는 여기에 설명된 방법 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(3600)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(3600)는 하나 이상의 프로세서(processor)(3602), 하나 이상의 메모리(memory)(3604) 및 비디오 처리 하드웨어(video processing hardware)(3606)를 포함할 수 있다. 프로세서(들)(3602)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(3604)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(video processing hardware)(3606)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있다.
도 15는 본 개시의 기술을 활용할 수 있는 예제 비디오 코딩 시스템(100)을 예시하는 블록도이다.
도 15에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 장치(110)와 목적 장치(120)를 포함할 수 있다. 소스 장치(110)는 인코딩된 비디오 데이터를 생성하고, 비디오 인코딩 장치로 참조될 수 있다. 목적 장치(120)는 소스 장치(110)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있고, 비디오 디코딩 장치로 참조될 수 있다.
소스 장치(110)에는 비디오 소스(112), 비디오 인코더(114) 및 입력/출력(I/O) 인터페이스(116)가 포함될 수 있다.
비디오 소스(112)에는 비디오 캡처 장치, 비디오 컴텐츠 공급자로부터 비디오 데이터를 수신하는 인터페이스, 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템 또는 이러한 소스의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림에는 비디오 데이터의 코딩된 표현을 형성하는 비트들의 시퀀스가 포함될 수 있다. 비트스트림에는 코딩된 픽처 및 관련 데이터가 포함될 수 있다. 코딩된 픽처는 픽처의 코딩된 표현(representation)이다. 관련 데이터에는 시퀀스 파라미터 세트, 픽처 파라미터 세트 및 기타 신택스 구조가 포함될 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기(transmitter)를 포함할 수 있다. 인코딩된 비디오 데이터는 네트워크(130a)를 거쳐, I/O 인터페이스(116)를 통해 목적 장치(120)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 목적 장치(120)에 의한 액세스를 위해 저장 매체/서버(130b)에 저장될 수도 있다.
목적 장치(120)는 I/O 인터페이스(126), 비디오 디코더(124) 및 디스플레이 장치(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 장치(110) 또는 저장 매체/서버(130b)로부터 인코딩된 비디오 데이터를 획득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 장치(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이 할 수 있다. 디스플레이 장치(122)는 목적 장치(120)와 통합될 수 있거나, 외부 디스플레이 장치와 인터페이스 하도록 구성된 목적 장치(120)의 외부에 위치할 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는 고효율 비디오 코딩(HEVC) 표준, 다목적 비디오 코딩(VVC) 표준 및 기타 현재 및/또는 추가 표준과 같은 비디오 압축 표준에 따라 동작할 수 있다.
도 16은 도 15에 도시된 시스템(100)에서 비디오 인코더(114)일 수 있는 비디오 인코더(200)의 예를 나타내는 블록도이다.
비디오 인코더(200)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 16의 예에서, 비디오 인코더(200)는 복수의 함수 컴포넌트를 포함한다.본 개시에 기재된 기술은 비디오 인코더(200)의 다양한 컴포넌트들 사이에 공유될 수 있다. 본 개시에 기재된 기술은 비디오 인코더(200)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
비디오 인코더(video encoder)(200)의 기능적 컴포넌트는 파티션 유닛(partition unit)(201)와, 모드 선택 유닛(mode select unit)(203), 모션 추정 유닛(motion estimation unit)(204), 모션 보상 유닛(motion compensation unit)(205) 및 인트라 예측 유닛(intra prediction unit)(206)을 포함할 수 있는 예측 유닛(predication unit)(202)과, 잔차 생생 유닛(residual generation unit)(207), 트랜스폼 유닛(transform unit)(208), 양자화 유닛(quantization unit)(209), 역양자화 유닛(inverse quantization unit)(210), 역트랜스폼 유닛(inverse transform unit)(211), 재구성 유닛(reconstruction unit)(212), 버퍼(buffer)(213), 및 엔트로피 인코딩 유닛(entropy encoding unit)(214)를 포함할 수 있다.
다른 예에서, 비디오 인코더(200)에는 더 많거나, 적거나, 다른 기능적 컴포넌트가 포함될 수 있다. 예를 들어, 예측 유닛(202)는 인트라 블록 카피(IBC) 유닛을 포함할 수 있다. IBC 유닛은 IBC 모드에서 적어도 하나의 레퍼런스 픽처가 현재 비디오 블록이 있는 픽처인 경우, IBC 모드의 예측을 수행할 수 있다.
더욱이, 모션 추정 유닛(204) 및 모션 보상 유닛(205)과 같은 일부 컴포넌트는 고도로(highly) 통합될 수 있으나, 도 16의 예에서는 설명의 목적을 위해 분리된 것으로 표현되었다.
파티션 장치(201)는 픽처를 하나 이상의 비디오 블록으로 파티셔닝할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기를 지원할 수 있다.
모드 선택 유닛(203)는 오류 결과에 기초하여 코딩 모드, 예를 들면, 인트라 또는 인터 등을 선택하고, 결과인 인트라 또는 인터 코딩된 블록을, 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하고, 재구성 유닛(212)으로 제공하여 레퍼런스 픽처로 사용하기 위한 인커딩된 블록을 재구성한다. 일부 예에서, 모드 선택 유닛(203)는 인트라 및 인터 예측(CIIP) 모드의 조합을 선택할 수 있고, 이 모드에서 예측은 인터 예측 시그널 및 인트라 예측 시그널에 기초한다. 모드 선택 유닛(203)는 또한, 인터 예측의 경우, 블록에 대한 모션 벡터의 해상도(예를 들어, 서브 픽셀 또는 정수 픽셀 해상도)를 선택할 수 있다.
현재 비디오 블록에서 인터 예측을 수행하기 위해, 모션 추정 유닛(204)는 버퍼(213)에서 현재 비디오 블록에 하나 이상의 레퍼런스 프레임을 비교하여 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 모션 정보 및 디코딩된 픽처 샘플에 기초하여 현재 비디오 블록에 대한 예측 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)는 현재 비디오 블록이 I 슬라이스, P 슬라이스 또는 B 슬라이스에 있는지 여부에 따라 현재 비디오 블록에 대해 서로 다른 동작을 수행할 수 있다.
일부 예에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 유니-디렉셔널(uni-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 list 0 또는 list 1의 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 현재 비디오 블록과 레퍼런스 비디오 블록 사이의 공간적 변위(spatial displacement)를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 또는 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스(reference index)를 생성할 수 있다. 모션 추정 유닛(204)는 레퍼런스 인덱스, 예측 디렉션 표시자 및 모션 벡터를 현재 비디오 블록의 모션 정보로 출력할 수 있다. 모션 보상 유닛(205)는 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 바이-디렉셔널(bi-directional) 예측을 수행할 수 있고, 모션 추정 유닛(204)는 현재 비디오 블록에 대한 레퍼런스 비디오 블록에 대한 목록 0에서 레퍼런스 픽처를 검색할 수 있으며, 또한 현재 비디오 블록에 대한 다른 레퍼런스 비디오 블록에 대한 목록 1에서 레퍼런스 픽처를 검색할 수 있다. 그런 다음, 모션 추정 유닛(204)는 레퍼런스 비디오 블록과 현재 비디오 블록 사이의 공간적 변위를 나타내는 레퍼런스 비디오 블록 및 모션 벡터를 포함하는 목록 0 및 목록 1에서 레퍼런스 픽처를 나타내는 레퍼런스 인덱스를 생성할 수 있다. 모션 추정 유닛(204)는 현재 비디오 블록의 모션 정보로서 현재 비디오 블록의 레퍼런스 인덱스 및 모션 벡터를 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 동작 정보에 의해 표시된 레퍼런스 비디오 블록에 기초하여 현재 비디오 블록의 예측 비디오 블록을 생성할 수 있다.
일부 예에서, 모션 추정 유닛(204)는 디코더의 디코딩 처리를 위한 전체 모션 정보 세트를 출력할 수 있다.
일부 예에서, 모션 추정 유닛(204)는 현재 비디오에 대한 전체 모션 정보 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)는 다른 비디오 블록의 동작 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(motion estimation unit)(204)는 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 동작 정보와 충분히 유사하다고 결정할 수 있다.
하나의 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연결된 신택스 구조에서 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 가지고 있음을 비디오 디코더(300)에 나타내는 값을 나타낼 수 있다.
또 다른 예에서, 모션 추정 유닛(204)는 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차(motion vector difference)(MVD)를 식별할 수 있다. 모션 벡터 차(motion vector difference)는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 사이의 차를 나타낸다. 비디오 디코더(300)는 현재 비디오 블록의 모션 벡터를 결정하기 위해 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차(motion vector difference)를 사용할 수 있다.
위에서 설명한 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측 시그널링 기술의 두 가지 예는, 어드밴스드 모션 벡터 예측(AMVP) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대한 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대한 인트라 예측을 수행하는 경우, 인트라 예측 유닛(206)는 동일 픽처에서 다른 비디오 블록의 디코딩된 샘플에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터에는 예측된 비디오 블록 및 다양한 신택스 요소가 포함될 수 있다.
잔차 생성 유닛(207)는 현재 비디오 블록으로부터 예측된 비디오 블록의 예측 비디오 블록(예를 들어, 마이너스 기호로 표시)을 빼서 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록에서 샘플의 상이한 샘플 컴포넌트에 대응하는 잔차 비디오 블록을 포함할 수 있다.
다른 예에서, 현재 비디오 블록에 대한 현재 비디오 블록에 대한 잔차 데이터가 없을 수 있고, 예를 들어 스킵(skip) 모드에서, 잔차 생성 유닛(207)는 빼기 동작을 수행하지 않을 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 연결된 잔차 비디오 블록에 하나 이상의 트랜스폼을 적용하여 현재 비디오 블록에 대해 하나 이상의 트랜스폼 계수 비디오 블록을 생성할 수 있다.
트랜스폼 처리 유닛(208)는 현재 비디오 블록과 연관된 트랜스폼 계수 비디오 블록을 생성한 후, 양자화 유닛(209)는 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 트랜스폼 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210)와 역트랜스폼부 유닛(211)는 트랜스폼 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성하기 위해, 트랜스폼 계수 비디오 블록에 역양자화 유닛 및 역트랜스폼 유닛을 각각 적용할 수 있다. 재구성 유닛(212)는 예측 유닛(202)에 의해 생성된 하나 이상의 예측된 비디오 블록으로부터 대응하는 샘플에 재구성된 잔차 비디오 블록을 추가하여 버퍼(213)에 저장하기 위한 현재 블록과 연관된 재구성된 비디오 블록을 생성할 수 있다.
재구성 유닛(212)가 비디오 블록을 재구성한 후, 비디오 블록에서 비디오 차단 아티팩트를 줄이기 위해 루프 필터링 동작이 수행된다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 함수 컴포넌트로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)가 데이터를 수신하는 경우, 엔트로피 인코딩 유닛(214)는 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 17은 도 15에 도시된 시스템(100)에서 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 보여주는 블록 다이어그램이다.
비디오 디코더(300)는 본 개시의 기술 중 어느 또는 전부를 수행하도록 구성될 수 있다. 도 17의 예에서, 비디오 디코더(300)는 복수의 기능성 컴포넌트를 포함한다. 본 개시에 기재된 기술은 비디오 디코더(300)의 다양한 컴포넌트들 간에 공유될 수 있다. 일부 예에서, 프로세서는 본 개시에 기재된 임의 또는 전부를 수행하기 위해 구성될 수 있다.
도 17의 예에서, 비디오 디코더(video decoder)(300)는 엔트로피 디코딩 유닛(entropy decoding unit)(301), 모션 보상 유닛(motion compensation unit)(302), 인트라 예측 유닛(intra prediction unit)(303), 역양자화 유닛(inverse quantization unit)(304), 역트랜스폼 유닛(inverse transformation uni)(305), 및 재구성 유닛(reconstruction unit)(306) 및 버퍼(buffer)(307)를 포함한다. 비디오 디코더(300)는, 일부 예에서, 비디오 인코더(200)에 대하여 기술된 인코딩 패스(pass)와 일반적으로 서로 주고받는(reciprocal) 디코딩 패스를 수행할 수 있다(도 16).
엔트로피 디코딩 유닛(301)는 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림에는 엔트로피 코딩된 비디오 데이터(예를 들어, 비디오 데이터의 인코딩된 블록)가 포함될 수 있다. 엔트로피 디코딩 유닛(301)는 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터 모션 보상 유닛(302)는 모션 벡터, 모션 벡터 정밀도, 레퍼런스 픽처 목록 인덱스 및 기타 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)는, 예를 들어 AMVP 및 병합 모드를 수행하여 이러한 정보를 결정할 수 있다.
모션 보상 유닛(302)는 보간 필터에 기초하여 보간(interpolation)을 수행하여 모션 보정 블록을 생성할 수 있다. 서브 픽셀 정밀도와 함께 사용되는 보간 필터에 대한 식별자가 신택스 요소에 포함될 수 있다.
모션 보상 유닛(302)는 비디오 블록을 인코딩하는 동안 비디오 인코더(200)에서 사용하는 보간 필터를 사용하여 레퍼런스 블록의 서브 정수 픽셀에 대한 보간 값을 계산할 수 있다. 모션 보상 유닛(302)는 수신된 신택스 정보에 따라 비디오 인코더(200)에서 사용하는 보간 필터를 결정하고 보간 필터를 사용하여 예측 블록을 생성할 수 있다.
모션 보상 유닛(302)는 인코딩된 비디오 시퀀스의 프레임 및/또는 슬라이스를 인코딩하는 데 사용되는 블록의 크기, 인코딩된 비디오 시퀀스의 각 매크로 블록이 파티셔닝되는 방식을 설명하는 파티션 정보, 각 파티션이 인코딩된 방법, 각 파티션이 인코딩되는 방식을 나타내는 모드, 각 인터-인코딩된 블록에 대한 하나 이상의 레퍼런스 프레임(및 레퍼런스 프레임 목록) 및 인코딩된 비디오 시퀀스를 디코딩하는 다른 정보들을 결정하기 위해 일부 신택스 정보를 사용할 수 있다.
인트라 예측 유닛(303)는, 공간적으로 인접한 블록(adjacent block)으로부터 예측 블록을 형성하기 위해 예를 들어 비트스트림에서 수신된 인트라 예측 모드를 사용할 수 있다. 역양자화 유닛(303)은 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에서 디코딩된 양자화된 비디오 블록 계수를 역양자화, 예를 들어, 비양자화(de-quantize)한다. 역트랜스폼 유닛(Inverse transform unit)(303)은 역트랜스폼을 적용한다.
재구성 유닛(Reconstruction unit)(306)은 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성된 대응하는 예측 블록과 잔차 블록을 합산하여 디코딩된 블록을 형성할 수 있다. 원하는 경우, 디블로킹 필터(deblocking filter)를 적용하여 차단 아티팩트를 제거하기 위해 디코딩된 블록을 필터링할 수도 있다. 디코딩된 비디오 블록은 버퍼(307)에 저장되고, 이는 이후의 모션 보상/인트라 예측에 대한 레퍼런스 블록을 제공하고, 디스플레이 장치에서 재생하기 위한 디코딩된 비디오를 생성한다.
일부 실시예에서, 선호하는 솔루션 목록이 다음에 제공된다.
다음 솔루션은 이전 섹션(예를 들어, 항목 1)에서 논의된 기술의 예시적인 실시예를 보여준다.
1. 비디오 처리 방법(예를 들어, 도 14에 도시된 방법(1400))으로서, 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계, 코딩된 표현은 포맷 규칙을 따르고, 변환은 비디오 블록에 대한 모션 벡터(motion vector) 또는 모션 벡터 차(motion vector difference) 또는 모션 벡터 예측자(motion vector predictor)의 표현이 적응형 해상도(adaptive resolution)를 사용하여 코딩된 표현으로 표현되는 적응형 모션 벡터 차 해상도(adaptive motion vector difference resolution)(AMVR) 툴에 기초하고; 포맷 규칙은 비디오 블록 또는 비디오 블록의 이웃 블록의 코딩된 정보에 의존하는 컨텍스트 모델링(context modeling)에 의한 코딩된 표현에서의 적응적 해상도의 사용을 나타내도록 지정한다.
2. 솔루션 1의 방법에서, 코딩된 정보는 인트라 블록 복사 모드의 사용을 포함한다.
3. 솔루션 1의 방법에서, 코딩된 정보는 아핀 AMVR 모드 또는 비-아핀 및 비-인트라 블록 복사 모드, 이중 예측 또는 단일 예측 모드의 사용을 포함한다.
4. 솔루션 1 내지 솔루션 3 중 어느 하나에서, 코딩된 정보는 비디오 블록의 차원을 포함한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 2)에서 논의된 기술의 예시적인 실시예를 보여준다.
5. 비디오 처리 방법에서, 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 변환은 비디오 블록에 대한 모션 벡터(motion vector) 또는 모션 벡터 차(motion vector difference) 또는 모션 벡터 예측자(motion vector predictor)의 표현이 적응형 해상도(adaptive resolution)를 사용하여 코딩된 표현으로 표현되는 적응형 모션 벡터 차 해상도(adaptive motion vector difference resolution)(AMVR) 툴에 기초하고; 포맷 규칙은 컨텍스트(context)가 AMVR 툴에 의해 사용되는 해상도의 인덱스에 대해 제1 빈 및 제2 빈을 코딩하는데 사용되도록 컨텍스트 모델링에 의해 코딩된 표현에서 적응형 해상도의 사용을 표현하는 방법을 지정한다.
6. 솔루션 5의 방법에서, 포맷 규칙은 제1 빈을 사용하도록 지정하고 제2 빈은 동일한 컨텍스트를 사용하여 코딩된다.
7. 솔루션 5의 방법에서, 포맷 규칙은 제2 빈은 비-아핀 및 비-인트라 블록 복사 모드가 코딩된 표현에서 비디오 블록을 표현하기 위해 사용되는 경우에만 코딩된 표현에서 코딩됨을 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 3-8)에서 논의된 기술의 예시적인 실시예를 보여준다.
8. 비디오 처리 방법에서, 복수 개의 비디오 블록을 포함하는 하나 이상의 비디오 픽처를 포함하는 비디오와 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고; 코딩된 표현은 하나 이상의 비디오 블록의 적응 모션 벡터 차 해상도(AMVR) 코딩에 관한 정보를 시그널링하기 위한 포맷 규칙을 따르고; 포맷 규칙은 제1 코딩 모드를 사용하여 코딩된 제1 비디오 블록의 AMVR 정밀도 인덱스의 빈 및 제2 코딩 모드를 사용하여 코딩된 제2 비디오 블록의 AMVR 정밀도 인덱스의 빈을 코딩하기 위해 동일한 컨텍스트가 사용됨을 지정한다.
9. 솔루션 8의 방법에서, 제1 코딩 모드는 인트라 블록 복사 모드에 대응하고 제2 코딩 모드는 인터-코딩에 대응하고, 제1 비디오 블록의 빈은 AMVR 정밀도 인덱스의 제1 빈이고, 제2 비디오 블록의 빈은 대응하는 AMVR 정밀도 인덱스의 제2 빈이다.
10. 솔루션 8의 방법에서, 제1 코딩 모드는 인트라 블록 복사 모드에 대응하고 제2 코딩 모드는 인터-코딩에 대응하고, 제1 비디오 블록의 빈은 AMVR 정밀도 인덱스의 제1 빈이고, 제2 비디오 블록의 빈은 대응하는 AMVR 정밀도 인덱스의 제1 빈이다.
11. 솔루션 8의 방법에서, 제1 코딩 모드는 인트라 블록 복사 모드에 대응하고 제2 코딩 모드는 인터-코딩에 대응하고, 제1 비디오 블록의 빈은 AMVR 정밀도 인덱스의 제1 빈이고, 제2 비디오 블록의 빈은 대응하는 AMVR 정밀도 인덱스의 제1 빈이다.
12. 솔루션 8의 방법에서, 제1 코딩 모드는 인트라 블록 복사 모드에 대응하고 제2 코딩 모드는 아핀 코딩에 대응하고, 제1 비디오 블록의 빈은 AMVR 정밀도 인덱스의 제1 빈이고, 제2 비디오 블록의 빈은 대응하는 AMVR 정밀도 인덱스의 제1 빈이다.
13. 솔루션 8의 방법에서, 포맷 규칙은 인트라 블록 복사 모드, 아핀 모드 및 인터 코딩 모드를 갖는 제1 비디오 블록, 제2 비디오 블록 및 제3 비디오 블록의 모든 빈을 코딩하기 위해 동일한 컨텍스트를 사용하도록 추가로 지정한다.
14. 솔루션 8의 방법에서, 포맷 규칙은 인트라 블록 복사 모드, 아핀 모드 및 인터 코딩 모드를 갖는 제1 비디오 블록, 제2 비디오 블록 및 제3 비디오 블록의 제1 빈을 코딩하기 위해 상이한 컨텍스트 및 제1 비디오 블록, 제2 비디오 블록 및 제3 비디오 블록의 제2 빈을 코딩하기 위한 동일한 컨텍스트를 사용하도록 추가로 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 5)에서 논의된 기술의 예시적인 실시예를 보여준다.
15. 솔루션 1 내지 14 중 어느 하나의 방법에서, 포맷 규칙은 정밀도 값을 코딩하는 데 사용되는 적어도 하나의 컨텍스트가 AMVR 툴의 적용 가능성을 나타내는 플래그를 코딩하는 데 사용되는 컨텍스트와 동일하다는 것을 추가로 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 10-11)에서 논의된 기술의 예시적인 실시예를 보여준다.
16. 비디오 처리 방법에서, 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 비디오 블록은 하나 이상의 수직 및/또는 하나 이상의 수평 파티션(partition)으로 분할되고, 코딩된 표현은 비디오 블록에 대한 분할 정보의 컨텍스트 기반 코딩을 지정하는 포맷 규칙을 따른다.
17. 솔루션 16의 방법에서, 포맷 규칙은 분할 정보를 표시하는 신택스 요소에 대한 컨텍스트 모델링이 비디오 블록에 대해 허용된 수직 분할의 수 및/또는 비디오 블록에 대해 허용된 수평 분할의 수에 의존함을 지정한다.
18. 솔루션 17의 방법에서, 포맷 규칙은 비디오 블록에 대해 허용된 수직 분할의 수가 비디오 블록에 대해 허용된 수평 분할의 수보다 큰지 여부에 의존한다.
19. 솔루션 17 내지 솔루션 18 중 어느 하나의 방법에서, 포맷 규칙은 신택스 요소를 코딩하기 위해 N개의 컨텍스트를 사용하도록 지정하고, 여기서 N은 비디오 블록의 차원 또는 이웃하는 비디오 블록의 차원에 기초한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 12)에서 논의된 기술의 예시적인 실시예를 보여준다.
20. 솔루션 16 내지 19 중 어느 하나에 있어서, 포맷 규칙은 비디오 블록에 대한 수직 분할의 적용 가능성을 나타내는 플래그를 코딩하기 위해 단일 컨텍스트를 사용하도록 지정한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 3, 17)에서 논의된 기술의 예시적인 실시예를 보여준다.
21. 비디오 처리 방법에서, 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 포맷 규칙은 트랜스폼 계수(transform coefficient)의 부호를 나타내기 위해 컨텍스트 코딩을 사용하거나 바이패스 코딩을 사용하는 것 사이에서 결정하는 데 사용되는 코딩 조건을 지정한다.
22. 솔루션 21의 방법에서, 코딩 조건은 나머지 허용된 컨텍스트 코딩된 빈의 수에 대응한다.
23. 솔루션 21의 방법에서, 코딩 조건은 비디오 블록과 코딩된 표현 사이의 변환에 사용되는 일종의 트랜스폼에 대응한다.
다음 솔루션은 이전 섹션(예를 들어, 항목 14)에서 논의된 기술의 예시적인 실시예를 보여준다.
24. 비디오 처리 방법에서, 비디오의 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 코딩된 표현은 포맷 규칙을 따르고, 포맷 규칙은 트랜스폼 스킵 잔차 코딩 프로세스의 제3 또는 나머지 계수 스캔 패스에서 나머지 신택스 요소에 대한 바이패스 코딩(bypass coding)의 시작 부분에서, 나머지 허용된 컨텍스트 코딩된 빈의 수를 지정하는 변수에 동작이 적용되는 것을 지정한다.
25. 솔루션 1 내지 24항의 방법 중 어느 하나에서, 변환은 비디오를 코딩된 표현으로 인코딩하는 단계를 포함한다.
26. 1항 내지 24항의 방법 중 어느 하나에서, 변환은 비디오의 픽셀 값을 생성하기 위해 코딩된 표현을 디코딩하는 단계를 포함한다.
27. 1항 내지 26항의 방법 중 하나에서 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
28. 1항 내지 26항의 방법 중 어느 하나에서 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
29. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램에서, 코드는, 프로세서에 의해 실행 시, 프로세서로 하여금 솔루션 1 내지 26 중 어느 하나 이상에 인용된 방법을 구현하도록 한다.
30. 본 문서에 기술된 방법, 장치 및 시스템.
도 18은 본 기술의 하나 이상의 실시예에 따른 비디오 처리 방법(1800)의 흐름도 표현이다. 방법(1800)은, 동작(1810)에서, 규칙에 따라 비디오의 블록과 비디오의 비트스트림 간의 변환을 수행하는 단계를 포함한다. 변환은 적응적 모션 벡터 차 해상도(Adaptive Motion Vector Difference Resolution)(AMVR) 툴을 기반으로 하고, 규칙은 AMVR 시프트와 연관된 모션 벡터 차(motion vector difference)의 해상도를 지정하는 제1 신택스 요소의 빈 스트링 내의 제1 빈에 대한 컨텍스트의 선택이 블록에 대한 코딩 모드의 사용에 기초하여 유도된다는 것을 지정한다.
일부 실시예에서, 블록은 코딩 유닛이다. 일부 실시예에서, 블록에 대한 코딩 모드는 아핀 인터 모드, 인트라 블록 복사 모드, 또는 비-아핀 인터 모드인 일반 인터 모드 중 하나이다. 일부 실시예에서, 상이한 코딩 모드에 대응하는 다수의 컨텍스트가 제1 빈에 적용가능하다. 일부 실시예에서, 다중 컨텍스트는 3개의 컨텍스트를 포함한다. 일부 실시예에서, 각각의 코딩 모드는 단일 컨텍스트에 대응한다.
일부 실시예에서, 블록이 IBC 모드를 사용하여 코딩되는 경우 제1 빈에 대한 제1 컨텍스트에 제1 값이 할당되고, 블록이 IBC 모드를 사용하여 코딩되지 않은 경우, 제1 컨텍스트와 상이한 적어도 하나의 컨텍스트가 적어도 하나의 인터 코딩 모드에 대해 제1 빈에 적용가능하다. 일부 실시예에서, 블록이 아핀 인터 모드를 사용하여 코딩되는 경우에 제1 빈에 대한 제2 컨텍스트에 제2 값이 할당되고, 블록이 비-아핀 인터 모드인 일반 인터 모드를 사용하여 코딩되는 경우에 제1 빈에 대한 제3 컨텍스트에 제3 값이 할당된다. 제2 값과 제3 값은 서로 상이하다.
일부 실시예에서, 빈 스트링의 제2 빈의 컨텍스트는 제1 빈에 대해 사용된 컨텍스트 중 하나 이상과 동일하다. 일부 실시예에서, 빈 스트링의 제2 빈은 단일 컨텍스트 값으로 코딩된다. 일부 실시양태에서, 동일한 컨텍스트가 IBC 모드를 사용하여 코딩된 제1 블록에 대한 빈 문자열의 제1 빈 및 비-아핀 인터 모드인 일반 인터 모드를 사용하여 코딩된 제2 블록에 대한 빈 문자열의 제2 빈에 대해 선택된다.
일부 실시예에서, 블록이 IBC 모드 또는 아핀 인터 모드를 사용하여 코딩되는 경우, 빈 스트링은 제1 빈을 포함한다. 블록이 비-아핀 인터 모드인 일반 인터 모드를 사용하여 코딩되는 경우, 빈 스트링은 제2 빈을 더 포함한다. 일부 실시예에서, 제1 빈에 적용 가능한 다중 컨텍스트 중 적어도 하나는 모션 벡터 차(motion vector difference)의 해상도가 루마 샘플의 1/4인지 또는 제1 신택스 요소에 의해 지정되는지 여부를 지정하는 제2 신택스 요소에 대해 선택된 적어도 하나의 컨텍스트와 동일하다. 일부 실시예에서, 블록이 IBC 모드를 사용하여 코딩되는 경우, 모션 벡터 차(motion vector difference)의 해상도를 지정하는 제1 신택스 요소에 대한 컨텍스트는 모션 벡터 차(motion vector difference)의 해상도가 루마 샘플의 1/4인지 또는 제1 신택스 요소에 의해 지정되는지 여부를 지정하는 제2 신택스 요소에 대해 선택된 컨텍스트와 동일하다. 일부 실시예에서, 블록이 IBC 모드 또는 아핀 모드를 사용하여 코딩되지 않은 경우, 모션 벡터 차(motion vector difference)의 해상도를 지정하는 제1 신택스 요소에 대한 컨텍스트는 모션 벡터 차(motion vector difference)의 해상도가 루마 샘플의 1/4인지 또는 제1 신택스 요소에 의해 지정되는지 여부를 지정하는 제2 신택스 요소에 대해 선택된 컨텍스트와 동일하다. 일부 실시예에서, 빈 스트링 내의 제1 빈에 대한 컨텍스트에는 CtxM 값이 할당되고, 빈 스트링을 갖는 제2 빈에 대한 컨텍스트에는 CtxQ 값이 할당되며, 여기서 CtxM = CtxQ이다. 일부 실시예에서, 제1 빈과 비교하여 제2 빈에 대해 상이한 컨텍스트가 선택된다.
일부 실시예에서, 블록이 IBC 모드로 코딩된 경우 제1 빈에 대한 제1 컨텍스트, 블록이 아핀 모드를 사용하여 코딩되는 경우 제1 빈에 대한 제2 컨텍스트, 및 블록이 IBC 모드와 아핀 모드를 사용하지 않고 코딩된 경우 제1 빈에 대한 제3 컨텍스트가 동일하다. 일부 실시예에서, 블록이 IBC 모드로 코딩된 경우의 제1 빈에 대한 제1 컨텍스트 및 블록이 IBC 모드와 아핀 모드를 사용하지 않고 코딩되는 경우의 제1 빈에 대한 제2 컨텍스트는 동일하다. 일부 실시예에서, 블록이 아핀 모드를 사용하여 코딩되는 경우 제1 빈에 대한 제3 컨텍스트는 제1 컨텍스트 및 제2 컨텍스트와 상이하다. 일부 실시예에서, 블록이 IBC 모드로 코딩되는 경우 제1 빈에 대한 제1 컨텍스트 및 블록이 아핀 모드를 사용하여 코딩되는 경우 제1 빈에 대한 제2 컨텍스트는 동일하다. 일부 실시예에서, 블록이 IBC 모드로 코딩되는 경우 빈 문자열 내의 모든 빈에 대한 컨텍스트, 블록이 아핀 모드를 사용하여 코딩되는 경우 빈 문자열 내의 모든 빈에 대한 컨텍스트, 및 블록이 IBC 모드와 아핀 모드를 사용하지 않고 코딩된 경우 빈 문자열 내의 모든 빈에 대한 컨텍스트는 동일하다.
일부 실시예에서, AMVR 툴은 모션 벡터 차(motion vector difference)의 해상도가 블록 유닛으로 적응적으로 조정되는 코딩 툴이다.
도 19는 본 기술의 하나 이상의 실시예에 따른 비디오 처리 방법(1900)의 흐름도 표현이다. 방법(1900)은, 동작(1910)에서, 규칙에 따라 비디오의 현재 블록과 비디오의 비트스트림 간의 변환을 수행하는 단계를 포함한다. 규칙은 블록이 수평으로 분할되는지 또는 수직으로 분할되는지를 지정하는 신택스 요소를 코딩하기 위한 컨텍스트 선택이 허용되는 수직 분할의 수와 허용되는 수평 분할의 수를 기반으로 하도록 지정한다. 수직 분할의 허용 개수는 이진 수직 분할의 허용 수와 삼진 수직 분할의 허용 수를 포함하고, 수평 분할의 허용 수는 이진 수평 분할의 허용 수와 삼진 수평 분할의 허용 수를 포함한다.
일부 실시예에서, 블록은 코딩 유닛이다. 일부 실시예에서, 콘텐츠는 허용된 수직 분할의 수와 허용된 수평 분할의 수를 비교함으로써 선택된다. 일부 실시예에서, 허용된 수직 분할의 수가 허용된 수평 분할의 수보다 큰 경우 컨텍스트는 제1 컨텍스트 세트로부터 선택된다. 일부 실시예에서, 허용된 수직 분할의 수가 허용된 수평 분할의 수보다 작은 경우 컨텍스트는 제2 컨텍스트 세트로부터 선택된다. 일부 실시예에서, 제1 컨텍스트 세트 및 제2 컨텍스트 세트 각각은 단일 컨텍스트를 포함한다. 일부 실시예에서, 제1 컨텍스트 세트의 단일 컨텍스트는 4의 값을 갖는다. 일부 실시예에서, 제2 컨텍스트 세트의 단일 컨텍스트는 3의 값을 갖는다.
일부 실시예에서, 허용된 수직 분할의 수가 허용된 수평 분할의 수와 동일한 경우 컨텍스트는 제3 컨텍스트 세트로부터 선택된다. 일부 실시예에서, 제3 컨텍스트 세트는 다수의 컨텍스트를 포함한다. 일부 실시예에서, 제3 컨텍스트 세트는 0의 값을 갖는 제3 컨텍스트, 1의 값을 갖는 제4 컨텍스트, 및 2의 값을 갖는 제5 컨텍스트를 포함한다.
일부 실시예에서, 제3 컨텍스트 세트로부터 컨텍스트의 선택은 (1) 현재 블록 위에 위치된 제1 이웃 블록 및 현재 블록의 왼쪽에 위치된 제2 이웃 블록의 가용성, (2) a 현재 블록의 차원, 및/또는 (3) 이웃 블록의 차원에 추가로 기초한다. 일부 실시예에서, 컨텍스트는 (1) 현재 블록 위쪽에 위치된 제1 이웃 블록 또는 현재 블록의 왼쪽에 위치된 제2 이웃 블록이 이용 불가능한 경우, 또는 (2) dA가 dL과 동일한 경우, CtxD의 값에 할당되고, 여기서 dA는 현재 블록의 너비를 현재 블록 위에 위치한 제1 이웃 블록의 너비로 나눈 값이고, 여기서 dL은 현재 블록의 높이를 현재 블록의 왼쪽에 위치한 두 번째 이웃 블록의 높이로 나눈 값을 나타낸다. 일부 실시예들에서, 컨텍스트는 dA가 dL보다 작은 경우에 CtxE의 값에 할당되고, 여기서 dA는 현재 블록의 너비를 현재 블록 위에 위치한 제1 이웃 블록의 너비로 나눈 값이고, 여기서 dL은 현재 블록의 높이를 현재 블록의 왼쪽에 위치한 두 번째 이웃 블록의 높이로 나눈 값을 나타낸다. 일부 실시예에서, 컨텍스트는 dA가 dL보다 큰 경우에 CtxF의 값에 할당되고, 여기서 dA는 현재 블록의 너비를 현재 블록 위에 위치한 제1 이웃 블록의 너비로 나눈 값이고, 여기서 dL은 현재 블록의 높이를 현재 블록의 왼쪽에 위치한 두 번째 이웃 블록의 높이로 나눈 값을 나타낸다.
일부 실시예에서, 제1 컨텍스트 세트, 제2 컨텍스트 세트, 및 제3 컨텍스트 세트의 컨텍스트는 서로 상이하다.
도 20은 본 기술의 하나 이상의 실시예에 따른 비디오 처리 방법(2000)의 흐름도 표현이다. 방법(2000)은, 동작(2010)에서, 규칙에 따라 비디오의 현재 블록과 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함한다. 규칙은 트랜스폼 계수 레벨의 부호를 지정하는 신택스 요소에 대해 컨텍스트 코딩을 사용할지 바이패스 코딩을 사용할지 여부가 현재 블록에 사용되는 트랜스폼 유형 또는 나머지 허용 컨텍스트 코딩된 빈의 수를 기반으로 한다는 것을 지정한다.
일부 실시예에서, 남아있는 허용된 컨텍스트 코딩된 빈의 수가 임계값보다 크거나 동일한 경우에 컨텍스트 코딩은 현재 블록에 대한 트랜스폼 스킵 잔차 코딩 프로세스에서 신택스 요소에 대해 사용된다. 일부 실시예에서, 나머지 허용된 컨텍스트 코딩된 빈의 수가 임계값보다 작은 경우에 현재 블록에 대한 트랜스폼 스킵 잔차 코딩 프로세스에서 신택스 요소에 대해 바이패스 코딩이 사용된다. 일부 실시예에서, 임계값치는 4, 8, 또는 16이다.
일부 실시예에서, 나머지 허용된 컨텍스트 코딩된 빈의 수가 N보다 작거나 동일한 경우 신택스 요소에 대해 바이패스 코딩이 사용된다. 일부 실시예에서, 남은 허용된 컨텍스트의 수가 코딩된 빈은 N보다 크거나 동일하다. 일부 실시예에서, 나머지 허용된 컨텍스트 코딩된 빈의 수는 변환에서 트랜스폼 계수 레벨의 나머지 절대값을 처리하기 전에 N보다 작거나 동일하도록 수정된다. 일부 실시예에서, N은 0, 3, 또는 4이다. 일부 실시예에서, N은 현재 블록의 특성에 기초한 정수이다. 일부 실시예에서, 현재 블록의 특성은 시퀀스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 대형 코딩 유닛 행, 큰 코딩 유닛의 그룹, 큰 코딩 유닛, 또는 코딩 유닛의 표시를 포함한다. 일부 실시예에서, 현재 블록의 특성은 현재 블록 또는 현재 블록의 이웃 블록의 차원 또는 모양을 포함한다. 일부 실시예에서, 현재 블록의 특성은 비디오의 컬러 포맷의 표시를 포함한다. 일부 실시예에서, 현재 블록의 특성은 변환을 위해 개별 또는 이중 코딩 트리 구조가 사용되는지 여부를 나타내는 표시를 포함한다. 일부 실시예에서, 현재 블록의 특성은 슬라이스 유형 또는 픽처 유형을 포함한다. 일부 실시예에서, 현재 블록의 특성은 비디오의 다수의 컬러 컴포넌트를 포함한다.
일부 실시예에서, 신택스 요소의 컨텍스트 코딩은 나머지 허용된 컨텍스트 코딩된 빈의 수에 기초한다. 일부 실시예에서, 나머지 허용된 컨텍스트 코딩된 빈의 수를 지정하는 변수는 트랜스폼 스킵 잔차 코딩 프로세스의 제3 또는 나머지 계수 스캔 패스에서 나머지 신택스 요소의 바이패스 코딩의 시작 부분에서 수정된다. 일부 실시예에서, 변수는 0의 고정 값으로 설정된다. 일부 실시예에서, 변수는 1만큼 감소한다. 일부 실시예에서, 현재 블록은 블록 기반 델타 펄스 코드 변조 코딩된 블록을 포함하거나 제외하는 트랜스폼 블록 또는 트랜스폼 스킵 블록을 포함한다.
일부 실시예에서, 방법을 적용할지 여부 또는 방법은 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨, 또는 타일 그룹 레벨로 표시된다. 일부 실시예에서, 표시는 시퀀스 헤더, 픽처 헤더, 시퀀스 파라미터 세트, 비디오 파라미터 세트, 디코더 파라미터 세트, 디코딩 능력 정보, 픽처 파라미터 세트, 적응 파라미터 세트, 슬라이스 헤더, 또는 타일 그룹 헤더에 포함된다. 일부 실시예에서, 방법을 적용할지 여부 또는 적용 방법은 비디오의 코딩된 정보에 기초한다.
일부 실시예에서, 변환은 비디오를 비트스트림으로 인코딩하는 단계를 포함한다. 일부 실시예에서, 변환은 비트스트림으로부터 비디오를 디코딩하는 단계를 포함한다.
본 문서에서 "비디오 처리(video processing)"라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제(decompression)를 의미할 수 있다. 예를 들어, 비디오 압축 알고리즘은 비디오의 픽셀 표현에서 대응하는 비트스트림 표현으로 또는 그 반대로 변환 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이 비트스트림 내의 다른 위치들에 함께 배치(병치)(co-located)되거나 확산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록(macroblock)은 트랜스폼 및 코딩된 오류 잔차 값의 관점에서, 그리고 또한 비트스트림의 헤더 및 기타 필드에 비트를 사용하여 인코딩 될 수 있다. 또한, 변환 동안, 디코더는 위의 솔루션에서 설명된 바와 같이 결정에 기초하여 일부 필드들이 존재하거나 없을 수 있다는 지식으로 비트스트림을 파싱할 수 있다. 유사하게, 인코더는 특정 신택스 필드가 포함되는지 여부를 결정할 수 있고, 이에 따라 코딩된 표현으로부터 신택스 필드를 포함하거나 또는 제외함으로써 코딩된 표현을 생성할 수 있다.
본 문서에 기재된 개시 및 기타 솔루션, 예, 실시예, 모듈 및 기능적 동작(operation)은 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 여기에는 이 문서 및 그 구조적 등가물 또는 그 중 하나 이상의 조합으로 구현될 수 있다. 개시된 및 기타 실시예는 하나 이상의 컴퓨터 프로그램 제품으로 구현될 수 있고, 예를 들어, 컴퓨터 프로그램 지침의 하나 이상의 모듈을 컴퓨터 판독 가능한 매체에 인코딩 하여 실행하거나, 데이터 처리 장치의 작동을 제어할 수 있다. 컴퓨터가 읽을 수 있는 매체는 기계가 읽을 수 있는 저장 장치, 기계가 읽을 수 있는 스토리지 기판, 메모리 장치, 기계가 읽을 수 있는 전파 신호에 영향을 미치는 물질의 조성 또는 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치"는 예를 들어, 프로그래밍 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함하여 데이터를 처리하기 위한 모든 장치, 장치 및 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 대응 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 기계에서 생성된 전기, 광학 또는 전자기 신호이고, 이는 적합한 수신기 장치로 전송하기 위한 정보를 인코딩 하기 위해 생성된다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일 된 언어를 비롯한 모든 형태의 프로그래밍 언어로 작성할 수 있으며 독립 실행형 프로그램 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴 또는 기타 유닛으로 모든 형태로 배포할 수 있다. 컴퓨터 프로그램이 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트), 대응하는 프로그램에 전용되는 단일 파일 또는 여러 조정된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장할 수 있다. 컴퓨터 프로그램은 한 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행하도록 배포할 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 프로그래밍 가능한 프로세서가 하나 이상의 프로그래밍 가능한 프로세서에서 수행하여 입력 데이터에서 작동하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름도 수행될 수 있으며, 장치는 특수 목적 논리 회로, 예를 들어, FPGA(필드 프로그래밍 가능한 게이트 어레이) 또는 ASIC(애플리케이션 별 집적 회로)로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서에는 예를 들어, 일반 및 특수 목적 마이크로프로세서와 모든 종류의 디지털 컴퓨터의 하나 이상의 프로세서가 포함된다. 일반적으로 프로세서는 읽기 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다에서 지침과 데이터를 받게 된다. 컴퓨터의 필수 요소는 지침과 데이터를 저장하기 위한 하나 이상의 메모리 장치를 수행하기 위한 프로세서이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 전체를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에 이러한 장치가 필요하지 않다. 컴퓨터 프로그램 지침 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능한 미디어에는 반도체 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치, 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동식 디스크; 마그네토 광학 디스크; 및 CD ROM 및 DVD-ROM 디스크를 비롯한 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치가 포함된다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보충되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이는 어떤 주제의 범위 나 청구될 수 있는 것에 대한 제한으로 해석되어서는 안 되고, 오히려 특정 기술의 특정 구현예에 특정할 수 있는 특징에 대한 설명으로 해석되어서는 안 된다. 이 특허 문서에 기재된 특정 특징은 별도의 실시예의 맥락에서 또한 단일 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 서브 조합으로 다중 실시예들에서도 구현될 수 있다. 더욱이, 앞서와 같이 특징들은 특정 조합으로 작용하는 것으로 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징은 어떤 경우에는 조합으로부터 제외될 수 있고, 주장된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
마찬가지로, 동작은 특정 순서로 도면에 묘사되어 있지만, 바람직한 결과를 달성하기 위하여, 이러한 동작이 표시된 특정 순서 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 기재된 실시예들에서, 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
몇 가지 구현 및 예제만 설명되며 이 특허 문서에 설명되고 도시된 내용에 따라 다른 구현, 개선 및 변형을 만들 수 있다.

Claims (49)

  1. 비디오 처리 방법에서,
    상기 방법은:
    규칙에 따라 비디오의 현재 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고,
    상기 규칙은 상기 블록이 수평으로 분할되는지 또는 수직으로 분할되는지를 지정하는 신택스 요소를 코딩하기 위한 컨텍스트 선택이 허용되는 수직 분할의 수와 허용되는 수평 분할의 수를 기반으로 하도록 지정하고, 허용된 수직 분할의 수는 허용된 이진 수직 분할의 수와 허용된 삼진 수직 분할의 수를 포함하고, 허용된 수평 분할의 수는 허용된 이진 수평 분할의 수와 허용된 삼진 수평 분할의 수를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 블록은 코딩 유닛인
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 컨텐츠는 허용된 수직 분할의 수와 허용된 수평 분할의 수를 비교하여 선택되는
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 컨텍스트는 허용된 수직 분할의 수가 허용된 수평 분할의 수보다 큰 경우 제1 컨텍스트 세트로부터 선택되는
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 컨텍스트는 허용되는 수직 분할의 수가 허용되는 수평 분할의 수보다 작은 경우 제2 컨텍스트 세트로부터 선택되는
    방법.
  6. 제4항 또는 제5항에 있어서,
    상기 제1 컨텍스트 세트 및 상기 제2 컨텍스트 세트 각각은 단일 컨텍스트를 포함하는
    방법.
  7. 제6항에 있어서,
    상기 제1 컨텍스트 세트의 단일 컨텍스트는 4의 값을 갖는
    방법.
  8. 제6항에 있어서,
    상기 제2 컨텍스트 세트의 단일 컨텍스트는 3의 값을 갖는
    방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 컨텍스트는 허용되는 수직 분할의 수가 허용되는 수평 분할의 수와 동일한 경우 제3 컨텍스트 세트로부터 선택되는
    방법.
  10. 제9항에 있어서,
    상기 제3 컨텍스트 세트는 다중 컨텍스트를 포함하는
    방법,
  11. 제10항에 있어서,
    상기 제3 컨텍스트 세트는 값이 0인 제3 컨텍스트, 값이 1인 제4 컨텍스트, 및 값이 2인 제5 컨텍스트를 포함하는
    방법,
  12. 제10항 또는 제11항에 있어서,
    상기 제3 컨텍스트 세트로부터 상기 컨텍스트의 선택은 (1) 상기 현재 블록 위쪽에 위치된 제1 이웃 블록 및 상기 현재 블록의 왼쪽에 위치된 제2 이웃 블록의 가용성, (2) 상기 현재 블록의 차원, 및/또는 (3) 상기 이웃 블록의 차원에 추가로 기초하는
    방법,
  13. 제12항에 있어서,상기 컨텍스트는 (1) 상기 현재 블록 위쪽에 위치된 제1 이웃 블록 또는 현재 블록의 왼쪽에 위치된 제2 이웃 블록이 이용 불가능한 경우, 또는 (2) dA가 dL과 동일한 경우, CtxD의 값에 할당되고, dA는 상기 현재 블록의 너비를 상기 현재 블록 위쪽에 위치한 상기 제1 이웃 블록의 너비로 나눈 값이고, dL은 상기 현재 블록의 높이를 상기 현재 블록의 왼쪽에 위치한 상기 제2 이웃 블록의 높이로 나눈 값을 나타내는
    방법,
  14. 제12항에 있어서,
    상기 컨텍스트는 dA가 dL보다 작은 경우 CtxE의 값으로 할당되고, dA는 상기 현재 블록의 너비를 상기 현재 블록 위에 위치된 상기 제1 이웃 블록의 너비로 나눈 값이고, dL은 상기 현재 블록의 높이를 상기 현재 블록의 왼쪽에 위치한 상기 제2 이웃 블록의 높이로 나눈 값을 나타내는
    방법.
  15. 제12항에 있어서,
    상기 컨텍스트는 dA가 dL보다 큰 경우 CtxF 값으로 할당되고, dA는 상기 현재 블록의 너비를 상기 현재 블록 위에 위치된 상기 제1 이웃 블록의 너비로 나눈 값이고, dL은 상기 현재 블록의 높이를 상기 현재 블록의 왼쪽에 위치된 상기 제2 이웃 블록의 높이로 나눈 값으로 나타내는
    방법.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 제1 컨텍스트 세트, 상기 제2 컨텍스트 세트 및 상기 제3 컨텍스트 세트의 컨텍스트는 서로 상이한
    방법,
  17. 비디오 처리 방법에서,
    상기 방법은:
    규칙에 따라 비디오의 현재 블록과 상기 비디오의 비트스트림 사이의 변환을 수행하는 단계를 포함하고,
    상기 규칙은 트랜스폼 계수 레벨의 부호를 지정하는 신택스 요소에 대해 컨텍스트 코딩을 사용할지 우회 코딩을 사용할지 여부가 상기 현재 블록에 사용되는 트랜스폼 유형 또는 나머지 허용 컨텍스트 코딩된 빈의 수를 기반으로 한다는 것을 지정하는
    방법,
  18. 제17항에 있어서,
    남아있는 허용된 컨텍스트 코딩된 빈의 수가 임계값보다 크거나 동일한 경우에 컨텍스트 코딩은 상기 현재 블록에 대한 트랜스폼 스킵 잔차 코딩 프로세스에서 상기 신택스 요소에 대해 사용되는
    방법,
  19. 제17항에 있어서,
    남아있는 허용된 바이패스 코딩된 빈의 수가 임계값보다 작은 경우에 컨텍스트 코딩은 상기 현재 블록에 대한 트랜스폼 스킵 잔차 코딩 프로세스에서 상기 신택스 요소에 대해 사용되는
    방법.
  20. 제18항 또는 제19항에 있어서,
    상기 임계값은 0 또는 3인
    방법,
  21. 제17항에 있어서,
    나머지 허용된 컨텍스트 코딩된 빈의 수가 N보다 작거나 동일한 경우 신택스 요소에 대해 바이패스 코딩이 사용되는
    방법.
  22. 제17항에 있어서,
    상기 컨텍스트 코딩은 나머지 허용된 컨텍스트 코딩된 빈의 수가 N 이상인 경우 상기 신택스 요소에 사용되는
    방법.
  23. 제17항 내지 제22항 중 어느 한 항에 있어서,
    나머지 허용된 컨텍스트 코딩된 빈의 수는 상기 변환에서 트랜스폼 계수 레벨의 나머지 절대값을 처리하기 전에 N보다 작거나 동일하도록 수정되는
    방법,
  24. 제21항 내지 제23항 중 어느 한 항에 있어서,
    N이 0, 3 또는 4인
    방법,
  25. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 N은 상기 현재 블록의 특성에 기초한 정수인
    방법,
  26. 제25항에 있어서,
    상기 현재 블록의 특성은 시퀀스 파라미터 세트, 비디오 파라미터 세트, 픽처 파라미터 세트, 픽처 헤더, 슬라이스 헤더, 타일 그룹 헤더, 대형 코딩 유닛 행, 큰 코딩 유닛의 그룹, 큰 코딩 유닛, 또는 코딩 유닛의 표시를 포함하는
    방법,
  27. 제25항에 있어서,
    상기 현재 블록의 특성은 상기 현재 블록 또는 상기 현재 블록의 이웃 블록의 차원 또는 모양을 포함하는
    방법,
  28. 제25항에 있어서,
    상기 현재 블록의 특성은 상기 비디오의 컬러 포맷의 표시를 포함하는
    방법,
  29. 제25항에 있어서,
    상기 현재 블록의 특성은 상기 변환을 위해 개별 또는 이중 코딩 트리 구조가 사용되는지 여부를 나타내는 표시를 포함하는
    방법,
  30. 제25항에 있어서,
    상기 현재 블록의 특성은 슬라이스 타입 또는 픽처 타입을 포함하는
    방법,
  31. 제25항에 있어서,
    상기 현재 블록의 특성은 상기 비디오의 다수의 컬러 컴포넌트를 포함하는
    방법,
  32. 제17항 내지 제31항 중 어느 한 항에 있어서,
    상기 신택스 요소의 컨텍스트 코딩은 나머지 허용된 컨텍스트 코딩된 빈의 수에 기초하는
    방법,
  33. 제17항 내지 제31항 중 어느 한 항에 있어서,
    나머지 허용된 컨텍스트 코딩된 빈의 수를 지정하는 변수는 트랜스폼 스킵 잔차 코딩 프로세스의 제3 또는 나머지 계수 스캔 패스에서 나머지 신택스 요소의 바이패스 코딩의 시작에서 수정되는
    방법,
  34. 제33항에 있어서,
    상기 변수는 0의 고정값으로 설정되는
    방법,
  35. 제33항에 있어서,
    상기 변수는 1만큼 감소되는
    방법,
  36. 제17항 내지 제35항 중 어느 한 항에 있어서,
    상기 현재 블록은 블록 기반 델타 펄스 코드 변조 코딩된 블록을 포함하거나 제외하는 트랜스폼 블록 또는 트랜스폼 스킵 블록을 포함하는
    방법,
  37. 제1항 내지 제36항 중 어느 한 항에 있어서,
    상기 방법의 적용 여부 또는 방법은 시퀀스 레벨, 픽쳐 레벨, 슬라이스 레벨 또는 타일 그룹 레벨로 표시되는
    방법,
  38. 제37항에 있어서,
    표시는 시퀀스 헤더, 픽처 헤더, 시퀀스 파라미터 세트, 비디오 파라미터 세트, 디코더 파라미터 세트, 디코딩 능력 정보, 픽처 파라미터 세트, 적응 파라미터 세트, 슬라이스 헤더, 또는 타일 그룹 헤더에 포함되는
    방법,
  39. 제1항 내지 제38항 중 어느 한 항에 있어서,
    상기 방법을 적용할지 여부는 상기 비디오의 코딩된 정보에 기초하는
    방법,
  40. 제1항 내지 제39항 중 어느 한 항에 있어서,
    상기 변환은 상기 비디오를 상기 비트스트림으로 인코딩하는 단계를 포함하는
    방법,
  41. 제1항 내지 제39항 중 어느 한 항에 있어서,
    상기 변환은 상기 비트스트림으로 부터 상기 비디오를 디코딩하는 단계를 포함하는
    방법.
  42. 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
    규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계, 및
    비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하고,
    상기 규칙은 상기 블록이 수평으로 분할되는지 또는 수직으로 분할되는지를 지정하는 신택스 요소를 코딩하기 위한 컨텍스트 선택이 허용되는 수직 분할의 수와 허용되는 수평 분할의 수를 기반으로 하도록 지정하고, 허용된 수직 분할의 수는 허용된 이진 수직 분할의 수와 허용된 삼진 수직 분할의 수를 포함하고, 허용된 수평 분할의 수는 허용된 이진 수평 분할의 수와 허용된 삼진 수평 분할의 수를 포함하는
    방법.
  43. 비디오의 비트스트림을 저장하기 위한 방법에 있어서,
    규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계, 및
    비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하고,
    상기 규칙은 트랜스폼 계수 레벨의 부호를 지정하는 신택스 요소에 대해 컨텍스트 코딩을 사용할지 우회 코딩을 사용할지 여부가 상기 현재 블록에 사용되는 트랜스폼 유형 또는 나머지 허용 컨텍스트 코딩된 빈의 수를 기반으로 한다는 것을 지정하는
    방법.
  44. 제1항 내지 제43항 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
  45. 제1항 내지 제43항 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
  46. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램에 있어서,
    상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제43항 중 어느 한 항에서 인용된 방법을 구현하게 하는
    컴퓨터프로그램.
  47. 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
    상기 방법은:
    규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계, 및
    비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하고,
    상기 규칙은 상기 블록이 수평으로 분할되는지 또는 수직으로 분할되는지를 지정하는 신택스 요소를 코딩하기 위한 컨텍스트 선택이 허용되는 수직 분할의 수와 허용되는 수평 분할의 수를 기반으로 하도록 지정하고, 허용된 수직 분할의 수는 허용된 이진 수직 분할의 수와 허용된 삼진 수직 분할의 수를 포함하고, 허용된 수평 분할의 수는 허용된 이진 수평 분할의 수와 허용된 삼진 수평 분할의 수를 포함하는
    방법.
  48. 비디오 처리 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비일시적 컴퓨터 판독 가능 기록 매체에 있어서,
    상기 방법은:
    규칙에 따라 상기 비디오의 블록으로부터 상기 비디오의 비트스트림을 생성하는 단계, 및
    비일시적 컴퓨터 판독 가능 기록 매체에 상기 비트스트림을 저장하는 단계를 포함하고,
    상기 규칙은 트랜스폼 계수 레벨의 부호를 지정하는 신택스 요소에 대해 컨텍스트 코딩을 사용할지 우회 코딩을 사용할지 여부가 상기 현재 블록에 사용되는 트랜스폼 유형 또는 나머지 허용 컨텍스트 코딩된 빈의 수를 기반으로 한다는 것을 지정하는
    방법.
  49. 본 문서에 기술된 방법, 장치 및 시스템.
KR1020227041341A 2020-05-01 2021-05-06 파티션 신택스를 위한 엔트로피 코딩 KR20230004797A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2020/088546 2020-05-01
CN2020088546 2020-05-01
PCT/CN2021/091870 WO2021219144A1 (en) 2020-05-01 2021-05-06 Entropy coding for partition syntax

Publications (1)

Publication Number Publication Date
KR20230004797A true KR20230004797A (ko) 2023-01-06

Family

ID=78374081

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227041341A KR20230004797A (ko) 2020-05-01 2021-05-06 파티션 신택스를 위한 엔트로피 코딩
KR1020227041329A KR20230003061A (ko) 2020-05-01 2021-05-06 모션 정밀 신택스을 위한 엔트로피 코딩

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227041329A KR20230003061A (ko) 2020-05-01 2021-05-06 모션 정밀 신택스을 위한 엔트로피 코딩

Country Status (7)

Country Link
US (3) US11856202B2 (ko)
EP (2) EP4128795A4 (ko)
JP (2) JP2023523839A (ko)
KR (2) KR20230004797A (ko)
CN (1) CN115516863A (ko)
BR (1) BR112022021916A2 (ko)
WO (2) WO2021219143A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110933427B (zh) * 2018-09-19 2023-05-12 北京字节跳动网络技术有限公司 仿射模式编码的模式相关自适应运动矢量分辨率

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150189321A1 (en) * 2014-01-02 2015-07-02 Mediatek Inc. Method of Binarization and Context Adaptive Binary Arithmetic Coding of Depth Coding Syntax
WO2018066242A1 (en) * 2016-10-04 2018-04-12 Sharp Kabushiki Kaisha Systems and methods for adaptively clipping sample values
EP3306938A1 (en) * 2016-10-05 2018-04-11 Thomson Licensing Method and apparatus for binary-tree split mode coding
CN110169067B (zh) 2016-12-16 2021-12-31 夏普株式会社 图像解码装置以及图像编码装置
US10484695B2 (en) * 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
EP3818701A4 (en) 2018-07-14 2022-07-20 HFI Innovation Inc. METHODS AND APPARATUS FOR PROCESSING VIDEO IMAGES WITH PARTITIONAL CONSTRAINTS IN A VIDEO CODING SYSTEM
KR20210072098A (ko) * 2018-10-24 2021-06-16 후아웨이 테크놀러지 컴퍼니 리미티드 현재 블록에 대한 모션 정보를 결정하는 방법, 히스토리 기반 모션 벡터 예측기 목록을 구성하고 업데이트하는 방법, 및 비 일시적 컴퓨터 판독 가능형 저장 매체, 및 비디오 인코딩/디코딩 방법 및 장치
WO2020141163A1 (en) 2019-01-02 2020-07-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoding and decoding a picture
CN113661709A (zh) * 2019-03-27 2021-11-16 北京字节跳动网络技术有限公司 仿射高级运动矢量预测中的运动信息精度对齐
CN113382251B (zh) * 2019-06-21 2022-04-08 杭州海康威视数字技术股份有限公司 一种编解码方法、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2021219143A1 (en) 2021-11-04
WO2021219144A1 (en) 2021-11-04
BR112022021916A2 (pt) 2023-02-14
US11997270B2 (en) 2024-05-28
EP4128780A1 (en) 2023-02-08
US20230179766A1 (en) 2023-06-08
EP4128780A4 (en) 2023-11-08
CN115516863A (zh) 2022-12-23
US20230115118A1 (en) 2023-04-13
US20240155130A1 (en) 2024-05-09
EP4128795A1 (en) 2023-02-08
EP4128795A4 (en) 2023-08-30
JP2023523638A (ja) 2023-06-06
KR20230003061A (ko) 2023-01-05
JP2023523839A (ja) 2023-06-07
US11856202B2 (en) 2023-12-26

Similar Documents

Publication Publication Date Title
CN113728642B (zh) 编解码视频的量化残差差分脉冲编解码调制表示
US20210185342A1 (en) Pruning in multi-motion model based skip and direct mode coded video blocks
KR20210149043A (ko) 변환 스킵 모드를 위한 컨텍스트 코딩
US20220400252A1 (en) Chroma intra mode derivation in screen content coding
US11438602B2 (en) Coding mode based on a coding tree structure type
US11917197B2 (en) Extensions of intra coding modes in video coding
KR102649584B1 (ko) 크로마 인트라 모드에 기초한 크기 제한
JP2023120212A (ja) 変換スキップモードにおける信号通知
CN113796069B (zh) 使用量化残差差分脉冲编解码调制编解码的帧内编解码视频
US20240155130A1 (en) Entropy coding for motion precision syntax
KR102624438B1 (ko) 팔레트 모드에 대한 양자화 파라미터 도출
CN112997496B (zh) 仿射预测模式的改进
CN114747218A (zh) Hmvp表的更新
CN114747217A (zh) 调色板编解码模式

Legal Events

Date Code Title Description
A201 Request for examination