KR20220101638A - 기하학적 분할을 사용한 단순화된 인터 예측 - Google Patents

기하학적 분할을 사용한 단순화된 인터 예측 Download PDF

Info

Publication number
KR20220101638A
KR20220101638A KR1020227016716A KR20227016716A KR20220101638A KR 20220101638 A KR20220101638 A KR 20220101638A KR 1020227016716 A KR1020227016716 A KR 1020227016716A KR 20227016716 A KR20227016716 A KR 20227016716A KR 20220101638 A KR20220101638 A KR 20220101638A
Authority
KR
South Korea
Prior art keywords
block
mode
video
geometric
geo
Prior art date
Application number
KR1020227016716A
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 KR20220101638A publication Critical patent/KR20220101638A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/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
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/537Motion estimation other than block-based
    • 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

비디오 프로세싱 방법이 제공되며, 이 방법은: 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서, 변환 동안, 현재 비디오 블록에 대해 기하학적 분할 모드의 사용이 허용되고, 여기서 기하학적 분할 모드의 파라미터들은 제1 임계 값보다 작은 제1 수의 각도들을 포함하는 각도 세트 및/또는 제2 임계 값보다 작은 제2 수의 거리들을 포함하는 거리 세트를 사용하여 계산된다.

Description

기하학적 분할을 사용한 단순화된 인터 예측
관련 출원들의 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2019년 11월 30일에 출원된 국제 특허 출원 제PCT/CN2019/122256호; 2020년 1월 8일에 출원된 국제 특허 출원 제PCT/CN2020/071032호; 및 2020년 1월 10일에 출원된 국제 특허 출원 제PCT/CN2020/071552호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원들의 전체 개시들은 본 출원의 개시의 일부로서 참고로 포함된다.
기술 분야
본 특허 문서는 비디오 코딩 및 디코딩 기술들, 디바이스들 및 시스템들에 관한 것이다.
현재, 더 나은 압축률을 제공하기 위해 또는 더 낮은 복잡성 또는 병렬화된 구현들을 가능하게 하는 비디오 코딩 및 디코딩 방식들을 제공하기 위해 현재 비디오 코덱 기술들의 성능을 개선시키려는 노력이 진행 중이다. 업계 전문가들은 최근에 여러 새로운 비디오 코딩 툴들을 제안하였으며, 이들의 효과들을 결정하기 위한 테스트들이 현재 진행 중이다.
디지털 비디오 코딩, 구체적으로는, 모션 벡터들의 관리에 관련된 디바이스들, 시스템들 및 방법들이 설명된다. 설명된 방법들은 기존의 비디오 코딩 표준들(예를 들면, HEVC(High Efficiency Video Coding) 또는 다목적 비디오 코딩(Versatile Video Coding)) 및 미래의 비디오 코딩 표준들 또는 비디오 코덱들에 적용될 수 있다.
하나의 대표적인 양태에서, 개시된 기술은 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서, 변환 동안, 현재 비디오 블록에 대해 기하학적 분할 모드의 사용이 허용되고, 여기서 기하학적 분할 모드의 파라미터들은 제1 임계 값보다 작은 제1 수의 각도들을 포함하는 각도 세트 및/또는 제2 임계 값보다 작은 제2 수의 거리들을 포함하는 거리 세트를 사용하여 계산된다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 비디오 블록의 하나 이상의 치수 및/또는 현재 비디오 블록의 하나 이상의 치수의 수학적 함수에 의존하는 규칙에 기초하여 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 또 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 비디오 블록의 코딩 특성들에 의존하는 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 제외 규칙이 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환에 적용 가능하다고 결정하는 단계 - 제외 규칙은 변환이 현재 비디오 블록에 대해 기하학적 분할 모드와 코딩 툴을 함께 사용하는 것을 허용하지 않는다고 지정함 -; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오와 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 비디오의 상이한 색상 성분들에 대한 상이한 기하학적 분할 모드 인덱스들을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 현재 픽처의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며, 여기서 기하학적 분할 모드는 현재 비디오 블록을 2 개 이상의 예측 서브영역으로 분할하는 것을 포함하고, 여기서 규칙은 2 개 이상의 예측 서브영역과 연관된 하나 이상의 참조 픽처의 해상도에 의존한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 비트스트림 표현은 포맷 규칙을 준수하고, 여기서 포맷 규칙은 현재 비디오 블록에 대해 기하학적 분할 모드가 디스에이블된 경우에 비트스트림 표현이 기하학적 분할 모드에 관련된 신택스 요소를 생략한다고 지정한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 하나 이상의 비디오 블록을 포함하는 비디오 유닛과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 비디오 유닛의 하나 이상의 비디오 블록을 코딩하는 데 다수의 기하학적 분할 모드 세트들이 허용된다고 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 비디오 블록들을 포함하는 비디오와 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서, 변환 동안, 제1 개수의 기하학적 분할 모드들은 분할 각도 인덱스(partition angle index) 및/또는 분할 거리 인덱스(partition distance index)를 계산하는 데 이용 가능하고, 제2 개수의 기하학적 분할 모드들은 비트스트림 표현에서의 코딩에 이용 가능하며, 제3 개수의 기하학적 분할 모드들은 비트스트림 표현에서의 시그널링에 이용 가능하고, 여기서 제1 개수 및/또는 제2 개수 및/또는 제3 개수는 비디오 블록들의 대응하는 치수들에 적어도 기초한다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 규칙에 따라 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 규칙은 제1 기하학적 분할 모드 인덱스 값이 현재 비디오 블록의 비트스트림 표현에서 시그널링되고 제2 기하학적 분할 모드 인덱스 값이 현재 비디오 블록의 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 사용된다고 지정하며, 여기서 제1 기하학적 분할 모드 인덱스 값은 제2 기하학적 분할 모드 인덱스 값과 상이하다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서 현재 비디오 블록의 기하학적 분할 모드 인덱스는 기하학적 분할 모드 인덱스의 이진화가 규칙에 따라 수행되도록 비트스트림에 코딩된다.
다른 대표적인 양태에서, 개시된 기술은 다른 비디오 프로세싱 방법을 제공하는 데 사용될 수 있다. 이 방법은, 비디오의 비디오 유닛의 크로마 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 크로마 블록에 대한 블렌딩 가중치들 및/또는 모션 저장 가중치들을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며, 여기서 크로마 블록에 기하학적 분할 모드가 적용되고, 여기서 규칙은 대응하는 루마 샘플에 대한 크로마 블록 내의 특정 크로마 샘플의 상대 위치를 나타내는 크로마 샘플 위치 유형에 의존한다.
게다가, 대표적인 양태에서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하는 비디오 시스템에서의 장치가 개시된다. 명령어들은, 프로세서에 의한 실행 시에, 프로세서로 하여금 개시된 방법들 중 임의의 하나 이상을 구현하게 한다.
또한, 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램 제품 - 컴퓨터 프로그램 제품은 개시된 방법들 중 임의의 하나 이상을 수행하기 위한 프로그램 코드를 포함함 -이 개시된다.
개시된 기술의 이상의 양태들과 특징들 및 다른 양태들과 특징들은 도면들, 설명 및 청구항들에서 더 상세히 설명된다.
도 1은 공간적 병합 후보(spatial merge candidate)의 예시적인 위치들을 도시한다.
도 2는 공간적 병합 후보들의 중복성 검사를 위해 고려되는 후보 쌍들의 예를 도시한다.
도 3은 시간적 병합 후보(temporal merge candidate)에 대한 모션 벡터 스케일링의 예를 도시한다.
도 4는 시간적 병합 후보에 대한 예시적인 후보 위치들을 도시한다.
도 5는 삼각 분할(triangle partition) 기반 인터 예측 모드의 예를 도시한다.
도 6은 삼각 분할 모드에 대한 단방향 예측 모션 벡터 선택의 예를 도시한다.
도 7은 루마 블록 및 크로마 블록에 대한 블렌딩 프로세스에서 사용되는 가중치들의 예들을, 제각기, 도시한다.
도 8은 삼각 예측 모드(triangle prediction mode)와 관련하여 기존의 형상들 및 제안된 형상들의 예를 도시한다.
도 9는 기하학적 병합 모드(GEO) 분할 경계 설명의 예를 도시한다.
도 10a는 GEO에서 지원되는 에지들의 예시적인 예시를 도시한다.
도 10b는 주어진 픽셀 위치와 2 개의 에지 사이의 기하학적 관계들의 예를 도시한다.
도 11은 GEO에 대한 제안된 각도들의 예를 이들의 대응하는 폭 대 높이 비와 함께 도시한다.
도 12는 좌측 상단 크로마 샘플의 예시적인 위치들을 ChromaLocType 변수의 함수로서 도시한다.
도 13a는 본 문서에 설명되는 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예의 블록 다이어그램이다.
도 13b는 본 문서에 설명되는 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 다른 예의 블록 다이어그램이다.
도 14는 예시적인 비디오 프로세싱 방법의 플로차트를 도시한다.
도 15는 본 개시의 일부 실시예들에 따른 비디오 코딩 시스템을 예시하는 블록 다이어그램이다.
도 16은 본 개시의 일부 실시예들에 따른 인코더를 예시하는 블록 다이어그램이다.
도 17은 본 개시의 일부 실시예들에 따른 디코더를 예시하는 블록 다이어그램이다.
도 18a 내지 도 18h는 개시된 기술의 일부 구현들에 기초한 예시적인 비디오 프로세싱 방법들의 블록 다이어그램들이다.
도 19는 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 테이블을 도시한다.
도 20a는 관련 작업 초안으로부터 이제 삭제된, merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전을 도시한다.
도 20b 내지 도 20g는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 예들을 도시한다.
도 21은 예시적인 실시예 3에 대응하고 wedge_partition_idx' 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 8-10을 도시한다.
도 22는 예시적인 실시예 4에 대응하고 wedge_partition_idx' 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 8-10을 도시한다.
도 23a는 관련 작업 초안으로부터 이제 삭제된 표 8-10의 이전 버전을 도시한다.
도 23b는 wedge_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 8-10의 예를 도시한다.
도 24a는 geo_partition_idx 값에 기초한 geo_partition_idx' 값들의 매핑 테이블을 나타내는 테이블을 도시한다.
도 24b는 관련 작업 초안으로부터 이제 삭제된, geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전을 도시한다.
도 24c 내지 도 24e는 geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36을 도시한다.
HEVC/H.265에서의 비디오 코딩
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간적 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래의 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 이름의 참조 소프트웨어에 추가되었다. JVET 회의는 분기마다 1회 동시에 개최되며, 새로운 코딩 표준은 HEVC에 비해 50% 비트레이트 감소를 목표로 하고 있다. 새로운 비디오 코딩 표준은 2018년 4월 JVET 회의에서 공식적으로 VVC(Versatile Video Coding)라고 명명되었으며, 당시에 VVC 테스트 모델(VTM)의 첫 번째 버전이 발표되었다. VVC 표준화에 기여하는 지속적인 노력이 있기 때문에, 매번의 JVET 회의에서 새로운 코딩 기술들이 VVC 표준에 채택되고 있다. VVC 작업 초안과 테스트 모델 VTM은 이어서 매번의 회의 이후에 업데이트된다. VVC 프로젝트는 이제 2020년 7월 회의에서 기술적 완성(FDIS)을 목표로 하고 있다.
2.1. 확장 병합 예측
VTM에서, 병합 후보 리스트는 다음 5 가지 유형의 후보들을 순서대로 포함하는 것에 의해 구성된다:
1) 공간적 이웃 CU들로부터의 공간적 MVP
2) 동일 위치(collocated) CU들로부터의 시간적 MVP
3) FIFO 테이블로부터의 히스토리 기반 MVP
4) 쌍별 평균 MVP
5) 제로 MV들.
병합 리스트의 크기는 슬라이스 헤더에서 시그널링되며, VTM에서 병합 리스트의 최대 허용 크기는 6이다. 병합 모드에서의 각각의 CU 코드에 대해, 최상의 병합 후보의 인덱스는 절단된 단항 이진화(truncated unary binarization, TU)를 사용하여 인코딩된다. 병합 인덱스의 첫 번째 빈은 콘텍스트로 코딩되고 바이패스 코딩은 다른 빈들에 사용된다.
이 세션에서는 각각의 카테고리의 병합 후보들의 생성 프로세스가 제공된다.
2.1.1. 공간적 후보들의 도출
VVC에서 공간적 병합 후보들의 도출은 HEVC에서와 동일하다. 도 1에 묘사된 위치들에 위치하는 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 도출 순서는 A0, B0, B1, A1 및 B2이다. 위치 A0, B0, B1, A1의 임의의 CU가 (예를 들면, 다른 슬라이스 또는 타일에 속하기 때문에) 이용 가능하지 않거나 인트라 코딩되어 있을 때에만 위치 B2가 고려된다. 위치 A1에 있는 후보가 추가된 후에, 나머지 후보들의 추가는 중복성 검사를 거치는데, 중복성 검사는 코딩 효율성이 개선되도록 동일한 모션 정보를 가진 후보들이 리스트로부터 제외되는 것을 보장한다. 계산 복잡도를 감소시키기 위해, 언급된 중복성 검사에서 모든 가능한 후보 쌍들이 고려되지는 않는다. 그 대신에 도 2에서 화살표로 연결되는 쌍들만이 고려되고, 중복성 검사에 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 리스트에 추가된다.
2.1.2. 시간적 후보들의 도출
이 단계에서는, 단지 하나의 후보가 리스트에 추가된다. 특히, 이 시간적 병합 후보의 도출에서, 스케일링된 모션 벡터가 동일 위치 참조 픽처에 속하는 동일 위치 CU에 기초하여 도출된다. 동일 위치 CU의 도출에 사용될 참조 픽처 리스트는 슬라이스 헤더에서 명시적으로 시그널링된다. POC 거리들 tb 및 td를 사용하여 동일 위치 CU의 모션 벡터로부터 스케일링되는, 시간적 병합 후보에 대한 스케일링된 모션 벡터는 도 3에 점선으로 예시된 바와 같이 획득되며, 여기서 tb는 현재 픽처의 참조 픽처와 현재 픽처 사이의 POC 차이로 정의되고, td는 동일 위치 픽처의 참조 픽처와 동일 위치 픽처 사이의 POC 차이로 정의된다. 시간적 병합 후보의 참조 픽처 인덱스는 0과 동일하게 설정된다.
도 4에 묘사된 바와 같이, 시간적 후보에 대한 위치는 후보들 C0 및 C1 중에서 선택된다. 위치 C0에 있는 CU가 이용 가능하지 않거나, 인트라 코딩되어 있거나, 또는 현재 CTU 행 외부에 있는 경우, 위치 C1이 사용된다. 그렇지 않은 경우, 위치 C0이 시간적 병합 후보의 도출에서 사용된다.
2.1.3. 히스토리 기반 병합 후보들의 도출
히스토리 기반 MVP(HMVP) 병합 후보들은 공간적 MVP 및 TMVP 이후에서 병합 리스트에 추가된다. 이 방법에서, 이전에 코딩된 블록의 모션 정보는 테이블에 저장되고 현재 CU에 대한 MVP로서 사용된다. 인코딩/디코딩 프로세스 동안 다수의 HMVP 후보들을 갖는 테이블이 유지된다. 새로운 CTU 행을 만날 때 테이블이 리셋된다(비워진다). 비-서브블록(non-subblock) 인터 코딩된 CU가 있을 때마다, 연관된 모션 정보가 새로운 HMVP 후보로서 테이블의 마지막 엔트리에 추가된다.
VTM에서, HMVP 테이블 크기 S는 6으로 설정되고, 이는 최대 6 개의 히스토리 기반 MVP(HMVP) 후보가 테이블에 추가될 수 있음을 나타낸다. 새로운 모션 후보를 테이블에 삽입할 때, 제약된 FIFO(first-in-first-out) 규칙이 활용되며 여기서 테이블에 동일한 HMVP가 있는지 여부를 발견하기 위해 중복성 검사가 맨 먼저 적용된다. 발견되는 경우, 동일한 HMVP가 테이블로부터 제거되고 그 이후의 모든 HMVP 후보들이 앞으로 이동된다.
HMVP 후보들은 병합 후보 리스트 구성 프로세스에서 사용될 수 있다. 테이블에서의 최신의 여러 HMVP 후보들이 순서대로 검사되고 TMVP 후보 이후에서 후보 리스트에 삽입된다. 공간적 또는 시간적 병합 후보에 대한 HMVP 후보들에 대해 중복성 검사가 적용된다.
중복성 검사 동작들의 수를 감소시키기 위해, 이하의 단순화들이 도입되었다:
1. 병합 리스트 생성에 사용되는 HMPV 후보들의 수가 (N <= 4 ) ? M: (8 - N)으로서 설정되고, 여기서 N은 병합 리스트 내의 기존의 후보들의 수를 나타내고 M은 테이블 내의 이용 가능한 HMVP 후보들의 수를 나타낸다.
2. 일단 이용 가능한 병합 후보들의 총수가 최대 허용 병합 후보들에서 1을 뺀 값에 도달하면, HMVP로부터의 병합 후보 리스트 구성 프로세스가 종료된다.
2.1.4. 쌍별 평균 병합 후보들의 도출
쌍별 평균 후보들은 기존의 병합 후보 리스트 내의 미리 정의된 후보 쌍들을 평균화하는 것에 의해 생성되고, 미리 정의된 쌍들은 {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}으로서 정의되며, 여기서 숫자들은 병합 후보 리스트에 대한 병합 인덱스들을 표기한다. 평균화된 모션 벡터들은 각각의 참조 리스트에 대해 별도로 계산된다. 하나의 리스트에서 양쪽 모션 벡터들이 이용 가능한 경우, 이러한 2 개의 모션 벡터는, 이들이 상이한 참조 픽처들을 가리킬 때에도, 평균화되고; 단지 하나의 모션 벡터가 이용 가능한 경우, 해당 모션 벡터를 직접 사용하며; 어떠한 모션 벡터도 이용 가능하지 않은 경우, 이 리스트를 유효하지 않은 것으로 유지한다.
쌍별 평균 병합 후보들이 추가된 후에 병합 리스트가 가득 차지 않을 때, 최대 병합 후보 수에 도달할 때까지 끝에 제로 MVP들이 삽입된다.
2.2. 인터 예측을 위한 삼각 분할
VTM에서는, 인터 예측을 위해 삼각 분할 모드(TPM)가 지원된다. 64 개 샘플이거나 이보다 크고 스킵 또는 병합 모드로는 코딩되지만 일반 병합 모드, 또는 MMVD 모드, 또는 CIIP 모드 또는 서브블록 병합 모드로는 코딩되지 않는 CU들에만 삼각 분할 모드가 적용된다. 삼각 분할 모드가 적용되는지 여부를 나타내기 위해 CU 레벨 플래그가 사용된다.
이 모드가 사용될 때, CU는, 대각 분할(diagonal split) 또는 반대각 분할(anti-diagonal split)(도 5) 중 어느 하나를 사용하여, 2 개의 삼각형 형상 파티션으로 균등하게 분할된다. CU 내의 각각의 삼각형 파티션은 그 자신의 모션을 사용하여 인터 예측되고; 각각의 파티션에 대해 단방향 예측만이 허용된다, 즉, 각각의 파티션은 하나의 모션 벡터와 하나의 참조 인덱스를 갖는다. 종래의 양방향 예측과 동일하게, 각각의 CU에 대해 단지 2 개의 모션 보상된 예측이 필요하도록 보장하기 위해 단방향 예측 모션 제약이 적용된다. 각각의 파티션에 대한 단방향 예측 모션은 2.1에서의 확장 병합 예측을 위해 구성되는 병합 후보 리스트로부터 직접 도출되며, 리스트 내의 주어진 병합 후보로부터 단방향 예측 모션을 선택하는 것은 2.2.1에서의 절차에 따른다.
현재 CU에 대해 삼각 분할 모드가 사용되는 경우, 삼각 분할의 방향(대각 또는 반대각)을 나타내는 플래그, 및 2 개의 병합 인덱스(각각의 파티션에 대해 하나씩)가 더 시그널링된다. 삼각형 파티션들 각각을 예측한 후에, 대각 또는 반대각 에지를 따라 있는 샘플 값들이 적응적 가중치들에 의한 블렌딩 프로세싱을 사용하여 조정된다. 이것은 전체 CU에 대한 예측 신호이며, 변환 및 양자화 프로세스가 다른 예측 모드들에서와 같이 전체 CU에 적용될 것이다. 마지막으로, 삼각 분할 모드를 사용하여 예측되는 CU의 모션 필드(motion field)는 2.2.3에서와 같이 4x4 유닛 단위로 저장된다.
2.2.1. 단방향 예측 후보 리스트의 구성
병합 후보 인덱스가 주어지면, 도 6에 예시된 바와 같이, 2.1에서의 프로세스를 사용하여 확장 병합 예측을 위해 구성되는 병합 후보 리스트부터 단방향 예측 모션 벡터가 도출된다. 리스트 내의 후보에 대해, 그의 LX 모션 벡터 - X는 병합 후보 인덱스 값의 패리티와 동일함 - 는 삼각 분할 모드에 대한 단방향 예측 모션 벡터로서 사용된다. 이러한 모션 벡터들은 도 6에서 "x"로 표시되어 있다. 대응하는 LX 모션 벡터가 존재하지 않는 경우에, 확장 병합 예측 후보 리스트 내의 동일한 후보의 L(1-X) 모션 벡터가 삼각 분할 모드에 대한 단방향 예측 모션 벡터로서 사용된다.
2.2.2. 삼각형 파티션 에지를 따른 블렌딩
각각의 삼각형 파티션을 그 자신의 모션을 사용하여 예측한 후에, 대각 또는 반대각 에지 주위의 샘플들을 도출하기 위해 2 개의 예측 신호에 블렌딩이 적용된다. 블렌딩 프로세스에서 다음 가중치들이 사용된다:
도 7에 도시된 바와 같이, 루마의 경우 {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} 및 크로마의 경우 {6/8, 4/8, 2/8}.
2.2.3. 모션 필드의 저장
삼각 분할 모드로 코딩되는 CU의 모션 벡터들은 4x4 유닛 단위로 저장된다. 각각의 4x4 유닛의 위치에 따라, 단방향 예측 모션 벡터 또는 양방향 예측 모션 벡터 중 어느 하나가 저장된다. Mv1 및 Mv2를, 제각기, 파티션 1 및 파티션 2에 대한 단방향 예측 모션 벡터들로 표기한다. 4x4 유닛이 도 7의 예에 도시된 비가중된 구역에 위치하는 경우, 해당 4x4 유닛에 대한 Mv1 또는 Mv2 중 어느 하나가 저장된다. 그렇지 않고 4x4 유닛이 가중된 구역에 위치하는 경우, 양방향 예측 모션 벡터가 저장된다. 양방향 예측 모션 벡터는 이하의 프로세스에 따라 Mv1 및 Mv2로부터 도출된다:
1) Mv1과 Mv2가 상이한 참조 픽처 리스트들로부터의 것인 경우(하나는 L0으로부터의 것이고 다른 하나는 L1로부터의 것인 경우), Mv1과 Mv2는 단순 결합되어 양방향 예측 모션 벡터를 형성한다.
2) 그렇지 않고, Mv1과 Mv2가 동일한 리스트로부터의 것인 경우, 일반성을 잃지 않으면서, 이들 양쪽 모두가 L0으로부터의 것이라고 가정한다. 이 경우에,
2.a) Mv2(또는 Mv1)의 참조 픽처가 L1에서 나타나는 경우, 해당 Mv2(또는 Mv1)가 L1에서의 해당 참조 픽처를 사용하여 L1 모션 벡터로 변환된다. 이어서 2 개의 모션 벡터가 결합되어 양방향 예측 모션 벡터를 형성하고;
그렇지 않은 경우, 양방향 예측 모션 대신에, 단방향 예측 모션 Mv1만이 저장된다.
2.3. 인터 예측을 위한 기하학적 분할(GEO)
이하의 설명은 JVET-P0884, JVET-P0107, JVET-P0304 및 JVET-P0264에서 발췌된 것이다.
기하학적 병합 모드(GEO)는 기존의 삼각 예측 모드(TPM)의 확장으로서 15차 예테보리 JVET 회의에서 제안되었다. 16차 제네바 JVET 회의에서는, JVET-P0884에서의 더 간단하게 설계된 GEO 모드가 추가 연구를 위한 CE 앵커로서 선택되었다. 현재, VVC에서의 기존의 TPM의 대체물로서 GEO 모드가 연구되고 있다.
도 8은 VTM-6.0에서의 TPM과 비직사각형 인터 블록들에 대해 제안된 추가적인 형상들을 예시한다.
기하학적 병합 모드의 분할 경계는 도 9에 도시된 바와 같이, 각도
Figure pct00001
및 거리 오프셋
Figure pct00002
에 의해 기술된다. 각도
Figure pct00003
는 0도와 360도 사이의 양자화된 각도를 나타내고, 거리 오프셋
Figure pct00004
는 최대 거리
Figure pct00005
의 양자화된 오프셋을 나타낸다. 추가적으로, 이진 트리 분할들 및 TPM 분할들과 중첩되는 분할 방향들은 제외된다.
JVET-P0884에서, GEO는 8x8보다 작지 않은 블록 크기들에 적용되고, 각각의 블록 크기에 대해, CU의 중심을 기준으로 24 개의 각도 및 4 개의 에지에 의해 구별되는 82 개의 상이한 분할 방식이 있다. 도 10a는, CU 중심을 통과하는 Edge0으로부터 시작하여, CU 내에 법선 벡터의 방향을 따라 4 개의 에지가 균일하게 분포된다는 것을 도시한다. GEO에서의 각각의 분할 모드(즉, 각도 인덱스와 에지 인덱스의 쌍)는 2 개의 분할된 부분 상의 샘플들을 블렌딩하기 위한 픽셀 적응적 가중치 테이블을 할당받으며, 여기서 샘플의 가중치 값은 0 내지 8의 범위이고, 픽셀의 중심 위치로부터 에지까지의 L2 거리에 의해 결정된다. 기본적으로, 가중치 값들이 할당될 때 단위 이득 제약(unit-gain constraint)이 준수된다, 즉, 한 GEO 분할에 작은 가중치 값이 할당될 때, 합이 8이 되도록 다른 분할에 큰 상보적인 가중치 값이 할당된다.
각각의 픽셀의 가중치 값의 계산은: (a) 픽셀 위치로부터 주어진 에지까지의 변위를 계산하는 것 및 (c) 미리 정의된 룩업 테이블을 통해 계산된 변위를 가중치 값에 매핑하는 것의 두 부분으로 되어 있다. 픽셀 위치 (x, y)로부터 주어진 에지 Edgei까지의 변위를 계산하는 방법은 실제로는 (x, y)로부터 Edge0까지의 변위를 계산하고 이 변위에서 Edge0과 Edgei 사이의 거리 ρ를 차감하는 것과 동일하다. 도 10b는 (x, y)와 에지들 사이의 기하학적 관계들을 예시한다. 구체적으로, (x, y)로부터 Edgei까지의 변위는 다음과 같이 공식화될 수 있다:
Figure pct00006
Figure pct00007
의 값은 법선 벡터의 최대 길이(
Figure pct00008
로 표기됨)와 에지 인덱스 i의 함수이다. 즉:
Figure pct00009
여기서 N은 GEO에 의해 지원되는 에지들의 수이고 "1"은 일부 각도 인덱스들에 대해 마지막 에지 EdgeN-1이 CU 에지에 너무 가까워지는 것을 방지하기 위한 것이다. 수학식 8을 수학식 6에 대입하여, 각각의 픽셀 (x,y)로부터 주어진 Edgei까지의 변위를 계산할 수 있다. 요컨대,
Figure pct00010
를 wIdx(x,y)라고 표기하자.
Figure pct00011
의 계산은 CU당 한 번 필요하고, wIdx(x,y)의 계산은 샘플당 한 번 필요하며, 이들에서 곱셈들이 수반된다.
2.3.1. JVET-P0884
JVET-P0884는, 16차 제네바 JVET 회의의 CE4-1.14에 더하여, JVET-P0107 기울기 기반 버전 2, JVET-P0304 및 JVET-P0264 테스트 1의 제안된 단순화를 결합시켰다.
a) 결합된 기고문에서, geo 각도들은 JVET-P0107 및 JVET-P0264에서와 동일하게 기울기(2의 tangle 거듭제곱)로 정의된다. 이 제안에서 사용되는 기울기는 (1, ½, ¼, 4, 2)이다. 이 경우에, 블렌딩 마스크가 온 더 플라이로(on the fly) 계산되는 경우 곱셈들은 시프트 연산으로 대체된다.
b) rho 계산은 JVET-P304에서 설명된 바와 같이 오프셋 X 및 오프셋 Y로 대체된다. 이 경우에, 블렌딩 마스크를 온 더 플라이로 계산하지 않는 경우에 24 개의 블렌딩 마스크만 저장되면 된다.
2.3.2. JVET-P0107 기울기 기반 버전 2
기울기 기반 GEO 버전 2에 기초하여, Dis[.] 룩업 테이블은 표 1에 예시되어 있다.
표 1 기울기 기반 GEO에 대한 2 비트 Dis[.] 룩업 테이블
Figure pct00012
기울기 기반 GEO 버전 2에서, geo 블렌딩 마스크 도출의 계산 복잡도는 곱셈(최대 2 비트 시프트) 및 덧셈으로 간주된다. TPM과 비교하여 상이한 분할들이 없다. 게다가, 블렌딩 마스크를 더 쉽게 저장하기 위해 distFromLine의 반올림 연산이 제거된다. 이 버그 수정(bugfix)은 샘플 가중치들이 시프트되는 방식으로 각각의 행 또는 열에서 반복되도록 보장한다.
예를 들어:
TPM:
Figure pct00013
GEO
각도 인덱스는 0이다: ((x<<1) + 1)*(4 <<1) - ((y<<1) + 1))*(1<<1) -rho
각도 인덱스는 4이다: ((x<<1) + 1)*(4 <<1) - ((y<<1) + 1))*(4<<1) -rho
각도 인덱스는 6이다: ((x<<1) + 1)*(2 <<1) - ((y<<1) + 1))*(4<<1) -rho
2.3.3. JVET-P0264 테스트 1
JVET-P0264에서, GEO에서의 각도들은 2의 거듭제곱들을 탄젠트로서 갖는 각도들로 대체된다. 제안된 각도들의 탄젠트가 2의 거듭제곱 숫자이므로, 곱셈들의 대부분은 비트 시프트로 대체될 수 있다. 게다가, 이러한 각도들에 대한 가중치 값들은 위상 시프트를 사용하여 행마다 또는 열마다 반복하는 것에 의해 구현될 수 있다. 제안된 각도들을 사용하면, 블록별 크기 및 파티션별 모드를 저장하는 데 하나의 행 또는 열이 필요하다. 도 11은 GEO에 대한 제안된 각도들을 이들의 대응하는 폭 대 높이 비와 함께 도시한다.
2.3.4. JVET-P0304
JVET-P0304에서, 2 개의 미리 정의된 마스크 세트로부터 모든 블록들 및 분할 모드들에 대한 가중치들, 및 모션 필드 저장에 대한 마스크를 도출하는 것이 제안되는데, 하나의 세트는 블렌딩 가중치들의 도출을 위한 것이고 다른 세트는 모션 필드 저장의 마스크들을 위한 것이다. 각각의 세트에는 총 16 개의 마스크가 있다. 각도당 각각의 마스크는 블록 폭 및 블록 높이가 256으로 설정되고 변위가 0으로 설정된 상태에서 GEO에서의 동일한 방정식들을 사용하여 계산된다. 각도
Figure pct00014
및 거리
Figure pct00015
를 갖는 WxH 크기의 블록의 경우, 루마 샘플들에 대한 블렌딩 가중치들은 다음과 같이 계산되는 오프셋들을 사용하여 미리 정의된 마스크들로부터 직접 크로핑된다:
- 변수들 offsetX 및 offsetY는 다음과 같이 계산된다:
Figure pct00016
여기서
Figure pct00017
은 블렌딩 가중치들에 대한 미리 정의된 마스크들이다.
2.4. JVET-P0884에서의 GEO의 사양
이하의 사양은 JVET-O2001-vE에 더하여진 JVET-P0884에서 제공된 작업 초안에서 발췌된 것이다. 아래의 사양에서, GEO는 웨지 병합 모드라고도 한다.
병합 데이터 신택스
Figure pct00018
Figure pct00019
B 슬라이스를 디코딩할 때 현재 코딩 유닛의 예측 샘플들을 생성하기 위해 비직사각형 기반 모션 보상이 사용되는지 여부를 지정하는 변수 wedge_merge_mode[ x0 ][ y0 ]은 다음과 같이 도출된다:
- 이하의 조건들 모두가 참인 경우, wedge_merge_mode[ x0 ][ y0 ]은 1과 동일하게 설정된다:
- sps_wedge_enabled_flag가 1과 동일하다.
- slice_type이 B와 동일하다.
- general_merge_flag[ x0 ][ y0 ]이 1과 동일하다.
- MaxNumWedgeMergeCand가 2보다 크거나 같다.
- cbWidth가 8보다 크고 cbHeight가 8보다 크다.
- regular_merge_flag[ x0 ][ y0 ]이 0과 동일하다.
- merge_subblock_flag[ x0 ][ y0 ]이 0과 동일하다.
- ciip_flag[ x0 ][ y0 ]이 0과 동일하다.
- 그렇지 않은 경우, wedge_merge_mode[ x0 ][ y0 ]은 0과 동일하게 설정된다.
wedge_partition_idx[ x0 ][ y0 ]은 기하학적 병합 모드의 기하학적 분할 유형을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_merge_wedge_idx0[ x0 ][ y0 ]은 비직사각형 형상 기반 모션 보상 후보 리스트의 첫 번째 병합 후보 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
wedge_partition_idx0[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_wedge_idx1[ x0 ][ y0 ]은 웨지 형상 기반 모션 보상 후보 리스트의 두 번째 병합 후보 인덱스를 지정하며, 여기서 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_wedge_idx1[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
웨지 인터 블록들에 대한 디코딩 프로세스
일반
이 프로세스는 wedge_merge_mode[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr을 포함하는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 및 0과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 및 1과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 및 2와 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. 웨지 병합 모드의 분할 각도 및 분할 거리 angleIdx 및 distanceIdex는 표 8-10에 명시된 바와 같이 wedge_partition_idx[ xCb ][ yCb ]의 값에 따라 설정된다.
3. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
4. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 8.5.7.3 절에 명시된 웨지 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다. angleIdx 및 distanceIdx 값들을 지정하는 것은 도 19에서의 표 8-10에 나와 있다.
웨지 병합 모드에 대한 가중 샘플 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록의 폭 및 높이를 지정하는 2 개의 변수 nCbW 및 nCbH.
- 2 개의 (nCbW) x (nCbH) 어레이 predSamplesLA 및 predSamplesLB,
- 웨지 분할의 각도 인덱스를 지정하는 변수 angleIdx,
- 웨지 분할의 거리 인덱스를 지정하는 변수 distanceIdx,
- 색상 성분 인덱스를 지정하는 변수 cIdx,
이 프로세스의 출력은 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수 bitDepth는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우, bitDepth는 BitDepthY와 동일하게 설정된다.
- cIdx가 0과 동일한 경우, nW 및 nH는, 제각기, nCbW 및 nCbH와 동일하게 설정되고, 그렇지 않은 경우(cIdx가 0과 동일하지 않은 경우), nW 및 nH는, 제각기, nCbW x SubWidthC 및 nCbH x SubHeightC와 동일하게 설정된다.
- cIdx가 0과 동일한 경우, subW 및 subH는 양쪽 모두 1로 설정되고, 그렇지 않은 경우(cIdx가 0과 동일하지 않은 경우), subW 및 subH는, 제각기, SubWidthC 및 SubHeightC와 동일하게 설정된다.
- 그렇지 않은 경우, bitDepth는 BitDepthC와 동일하게 설정된다.
변수들 shift1 및 offset1은 다음과 같이 도출된다:
- 변수 shift1은 Max( 5, 17 - bitDepth)와 동일하게 설정된다.
- 변수 offset1은 1  <<  ( shift1 - 1 )과 동일하게 설정된다.
이하의 변수들의 값들은 다음과 같이 설정된다:
- hwRatio는 nH / nW로 설정된다
- displacementX는 angleIdx로 설정된다.
- displacementY는 (displacementX + 6)%24로 설정된다.
- angleIdx >=10 && angleIdx <=20인 경우, PART1 및 PART2는, 제각기, A 및 B와 동일하게 설정되고, 그렇지 않은 경우, PART1 및 PART2는, 제각기, B 및 A와 동일하게 설정된다.
- rho는 표 8-12에 명시된 Dis로 표기된 룩업 테이블들을 사용하여 다음 값으로 설정된다:
Figure pct00020
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % 12가 6과 동일하다
angleIdx % 12가 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00021
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00022
예측 샘플 값들 pbSamples[ x ][ y ](단, x = 0..nCbW - 1이고 y = 0..nCbH - 1임)는 다음과 같은 순서의 단계들에 따라 설정된다:
- 변수들 weightIdx 및 weightIdxAbs는 룩업 테이블 표 8-12를 사용하여 다음과 같이 계산된다:
Figure pct00023
- sampleWeight의 값은 표 8-13에 따라 다음과 같이 도출된다:
Figure pct00024
비고 - 샘플 sampleWeightL[ x ][ y ]의 값이 또한 sampleWeightL[ x -shiftX][ y-shiftY ]로부터 도출될 수 있다. angleIdx가 4보다 크고 12보다 작거나, angleIdx가 20보다 크고 24보다 작은 경우, shiftX는 분할 각도의 탄젠트이고 shiftY는 1이며, 그렇지 않은 경우 shiftX는 1의 분할 각도이고 shiftY는 분할 각도의 코탄젠트이다. 탄젠트(제각기, 코탄젠트) 값이 무한대인 경우, shiftX는 1(제각기, 0)이거나 shift Y는 0(제각기, 1)이다.
- 예측 샘플 값 pbSamples[ x ][ y ]는 다음과 같이 도출된다:
Figure pct00025
표 8-12 웨지메트릭(wedgemetric) 분할 거리를 도출하기 위한 룩업 테이블 Dis.
Figure pct00026
표 8-13 웨지 분할 필터 가중치들을 도출하기 위한 필터 가중치 룩업 테이블 WedgeFilter
Figure pct00027
웨지 병합 모드에 대한 모션 벡터 저장 프로세스
이 프로세스는 MergeWedgeFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
수평 방향 및 수직 방향으로 현재 코딩 블록 내의 4x4 블록들의 수를 지정하는 변수들 numSbX 및 numSbY는 numSbX = cbWidth >> 2 및 numSbY = cbHeight >> 2와 동일하게 설정된다.
이하의 변수들의 값은 다음과 같이 설정된다:
- displacementX는 angleIdx로 설정되고, displacementY는 (displacementX + 6)%24로 설정된다
- hwRatio는 nCbH / nCbW와 동일하게 설정된다
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % 12가 8과 동일하다
angleIdx % 12가 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
partIdx는 angleIdx >=10 && angleIdx <=20 ? 1 : 0으로 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00028
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00029
변수 rho의 값은 아래의 방정식에 따라 그리고 표 8-12에 명시된 Dis 룩업 테이블에 따라 도출된다:
Figure pct00030
motionOffset은, 표 8-11 및 표 8-12에 명시된, Dis로 표기된 룩업 테이블들을 사용하여 다음 값과 동일하게 설정된다:
Figure pct00031
서브블록 인덱스 ( xSbIdx, ySbIdx )(단, xSbIdx = 0..numSbX - 1이고, ySbIdx = 0..numSbY - 1임)에 있는 각각의 4x4 서브블록에 대해, 다음이 적용된다:
변수 motionIdx는 룩업 테이블 표 8-12를 사용하여 다음과 같이 계산된다:
Figure pct00032
변수 sType은 다음과 같이 도출된다:
Figure pct00033
- sType의 값에 따라, 이하의 할당들이 이루어진다:
- sType이 0과 동일한 경우, 다음이 적용된다:
Figure pct00034
Figure pct00035
- 그렇지 않고, sType이 1과 동일하거나 (sType이 2와 동일하고 predListFlagA + predListFlagB가 1과 동일하지 않은) 경우, 다음이 적용된다:
Figure pct00036
- 그렇지 않은 경우(sType이 2와 동일하고 predListFlagA + predListFlagB가 1과 동일한 경우), 다음이 적용된다:
Figure pct00037
- x = 0..3 및 y = 0..3에 대해 이하의 할당들이 이루어진다:
Figure pct00038
Figure pct00039
인터 예측 모드로 코딩되는 코딩 블록들의 잔차 신호에 대한 디코딩 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 샘플을 기준으로 현재 변환 블록의 좌측 상단 샘플을 지정하는 샘플 위치 ( xTb0, yTb0 ),
- 현재 변환 블록의 폭을 지정하는 변수 nTbW,
- 현재 변환 블록의 높이를 지정하는 변수 nTbH,
- 현재 블록의 색상 성분을 지정하는 변수 cIdx.
이 프로세스의 출력은 (nTbW)x(nTbH) 어레이 resSamples이다.
최대 변환 블록 폭 maxTbWidth 및 최대 변환 블록 높이 maxTbHeight는 다음과 같이 도출된다:
Figure pct00040
루마 샘플 위치는 다음과 같이 도출된다:
Figure pct00041
maxTbSize에 따라, 다음이 적용된다:
- nTbW가 maxTbWidth보다 크거나 nTbH가 maxTbHeight보다 큰 경우, 다음과 같은 순서의 단계들이 적용된다.
1. 변수들 newTbW 및 newTbH는 다음과 같이 도출된다:
Figure pct00042
2. 이 절에 명시된 바와 같이 인터 예측 모드로 코딩되는 코딩 유닛들의 잔차 신호에 대한 디코딩 프로세스는 위치 ( xTb0, yTb0 ), newTbW와 동일하게 설정된 변환 블록 폭 nTbW 및 newTbH와 동일하게 설정된 높이 nTbH, 및 변수 cIdx를 입력들로 하여 호출되고, 출력은 인루프 필터링 이전의 수정된 재구성된 픽처이다.
3. nTbW가 maxTbWidth보다 클 때, 이 절에 명시된 바와 같이 인터 예측 모드로 코딩되는 코딩 유닛들의 잔차 신호에 대한 디코딩 프로세스는 ( xTb0 + newTbW, yTb0 )와 동일하게 설정된 위치 ( xTb0, yTb0 ), newTbW와 동일하게 설정된 변환 블록 폭 nTbW 및 newTbH와 동일하게 설정된 높이 nTbH, 및 변수 cIdx를 입력들로 하여 호출되고, 출력은 수정된 재구성된 픽처이다.
4. nTbH가 maxTbHeight보다 클 때, 이 절에 명시된 바와 같이 인터 예측 모드로 코딩되는 코딩 유닛들의 잔차 신호에 대한 디코딩 프로세스는 ( xTb0, yTb0 + newTbH )와 동일하게 설정된 위치 ( xTb0, yTb0 ), newTbW와 동일하게 설정된 변환 블록 폭 nTbW 및 newTbH와 동일하게 설정된 높이 nTbH, 및 변수 cIdx를 입력들로 하여 호출되고, 출력은 인루프 필터링 이전의 수정된 재구성된 픽처이다.
5. nTbW가 maxTbWidth보다 크고 nTbH가 maxTbHeight보다 클 때, 이 절에 명시된 바와 같이 인터 예측 모드로 코딩되는 코딩 유닛들의 잔차 신호에 대한 디코딩 프로세스는 ( xTb0 + newTbW, yTb0 + newTbH )와 동일하게 설정된 위치 ( xTb0, yTb0 ), newTbW와 동일하게 설정된 변환 블록 폭 nTbW 및 newTbH와 동일하게 설정된 높이 nTbH, 및 변수 cIdx를 입력들로 하여 호출되고, 출력은 인루프 필터링 이전의 수정된 재구성된 픽처이다.
- 그렇지 않고, cu_sbt_flag가 1과 동일한 경우, 다음이 적용된다:
- 변수들 sbtMinNumFourths, wPartIdx 및 hPartIdx는 다음과 같이 도출된다:
Figure pct00043
- 변수들 xPartIdx 및 yPartIdx는 다음과 같이 도출된다:
- cu_sbt_pos_flag가 0과 동일한 경우, xPartIdx 및 yPartIdx는 0과 동일하게 설정된다.
- 그렇지 않은 경우(cu_sbt_pos_flag가 1과 동일한 경우), 변수들 xPartIdx 및 yPartIdx는 다음과 같이 도출된다:
Figure pct00044
- 변수들 xTbYSub, yTbYSub, xTb0Sub, yTb0Sub, nTbWSub 및 nTbHSub는 다음과 같이 도출된다:
Figure pct00045
Figure pct00046
- 8.7.2절에 명시된 바와 같은 스케일링 및 변환 프로세스는 루마 위치 ( xTbYSub , yTbYSub ), 변수 cIdx, nTbWSub 및 nTbHSub를 입력들로 하여 호출되고, 출력은 ( nTbWSub )x( nTbHSub ) 어레이 resSamplesTb이다.
- 잔차 샘플들 resSamples[ x ][ y ](단, x = 0..nTbW - 1, y = 0..nTbH - 1)는 0과 동일하게 설정된다.
- 잔차 샘플들 resSamples[ x ][ y ](단, x = xTb0Sub..xTb0Sub + nTbWSub - 1, y = yTb0Sub..yTb0Sub + nTbHSub - 1)는 다음과 같이 도출된다:
Figure pct00047
- 그렇지 않은 경우, 8.7.2절에 명시된 바와 같은 스케일링 및 변환 프로세스는 루마 위치 ( xTbY, yTbY ), 변수 cIdx, 변환 폭 nTbW 및 변환 높이 nTbH를 입력들로 하여 호출되고, 출력은 (nTbW )x(nTbH) 어레이 resSamples이다.
표 9-77 - 신택스 요소들 및 연관된 이진화들
Figure pct00048
2.5. 크로마 샘플 위치 유형
크로마 샘플 위치 유형의 정의에 대한 이 단락은 JVET-P2007-v3에서 발췌된 것이다.
도 12는 chroma_format_idc가 1(4:2:0 크로마 포맷)과 동일하고, chroma_sample_loc_type_top_field 또는 chroma_sample_loc_type_bottom_field가 변수 ChromaLocType의 값과 동일할 때 좌측 상단 크로마 샘플의 표시된 상대 위치를 예시한다. 좌측 상단 4:2:0 크로마 샘플에 의해 표현되는 영역(그의 중앙에 큰 적색 점을 갖는 큰 적색 사각형으로 표시됨)이 좌측 상단 루마 샘플에 의해 표현되는 영역(그의 중앙에 작은 흑색 점을 갖는 작은 흑색 사각형으로 표시됨)에 대해 상대적으로 도시되어 있다. 이웃하는 루마 샘플들에 의해 표현되는 영역들은 그들의 중앙들에 작은 회색 점들을 갖는 작은 회색 사각형들로 표시되어 있다.
기존의 구현들의 단점들
GEO의 현재 설계에는 여러 잠재적인 문제들이 있으며, 이들이 아래에서 설명된다.
(1) JVET-P0884의 CE 앵커에서, 하드웨어 검증을 위한 GEO 모드들의 총수는 1558이며, 이는 19 개의 PU 형상을 82 개의 GEO 모드와 곱하는 것으로부터 계산된다. GEO 코딩 툴에 대한 1558 개의 검증 사례는 너무 많다는 것이 전문가들의 의견이다. GEO의 총 사례들을 줄이는 것이 바람직하다.
(2) JVET-P0884의 CE 앵커에서, GEO 모드는 8x8보다 작지 않은 블록 크기들, 즉 W >= 8 및 H >=8에 적용된다.
a) GEO 모드는 큰 블록 크기들에 필요한 것이 아닐 수 있다. GEO에 대해 허용 가능한 블록 크기들을 감소시키는 것에 의해 코딩 이득과 복잡도 사이의 더 나은 트레이드오프가 고려될 수 있다.
b) 4xN 및 Nx4 블록 크기들이 코딩 이득에 유익할 수 있다.
예시적인 기술들 및 실시예들
아래에서 설명되는 상세한 실시예들은 일반 개념들을 설명하기 위한 예들로서 간주되어야 한다. 이러한 실시예들이 좁은 의미로 해석되어서는 안된다. 게다가, 이러한 실시예들은 임의의 방식으로 조합될 수 있다.
'GEO'라는 용어는 하나의 블록을 둘 이상의 서브영역으로 분할하는 코딩 방법을 나타낼 수 있으며, 여기서 적어도 하나의 서브영역은 기존의 분할 구조(예를 들면, QT/BT/TT) 중 어느 것에 의해서도 생성될 수 없을 것이다. 'GEO'라는 용어는 삼각 예측 모드(TPM) 및/또는 기하학적 병합 모드(GEO) 및/또는 웨지 예측 모드를 나타낼 수 있다.
'블록'이라는 용어는 CU 및/또는 PU 및/또는 TU의 코딩 블록을 나타낼 수 있다.
일부 실시예들에서, 'GEO 모드 인덱스(또는 GEO 모드)'는 코딩된 비트스트림에서 시그널링되는 GEO 모드 인덱스일 수 있다. 일부 실시예들에서, GEO 모드 인덱스(또는 GEO 모드)는 웨지 인터 블록들의 디코딩 프로세스에서 GEO 각도 인덱스 및 GEO 거리 인덱스를 도출하는 데 사용된다. 일부 실시예들에서, 디코딩 프로세스에서 각도/거리 인덱스를 도출하기 위한 GEO 모드 인덱스(또는 GEO 모드)가 또한 매핑 테이블에 의해 획득될 수 있다. 지정되지 않은 경우, GEO 모드 인덱스는, JVET-P0884-v8의 작업 초안에 있는 표 8-10에 정의되는 것과 같은, 디코딩 프로세스에서 각도/거리 인덱스를 도출하는 데 사용되는 wedge_partition_idx를 의미할 수 있다.
GEO 모드에 대한 블록 크기 제한
블록 폭은 W로 표기하고 블록 높이는 H로 표기한다.
1. GEO가 허용되는지 여부는 블록 폭 및/또는 블록 높이에 의존할 수 있다.
a) GEO가 허용되는지 여부는 블록의 블록 크기(예컨대, W*H) 및/또는 종횡비에 의존할 수 있다.
i. 예를 들어, WxH 블록에 대해, W >= T1이고/이거나 H >= T2이고/이거나 W * H < T3이고/이거나 W * H > T4인 경우에만 GEO가 인에이블될 수 있으며, 여기서 T1, T2, T3 및 T4는 상수 값들이다.
ii. 다른 예에서, WxH 블록에 대해, W >= T1이고/이거나 H >= T2이고/이거나 W * H <= T3이고/이거나 W * H >= T4인 경우에만 GEO가 인에이블될 수 있으며, 여기서 T1, T2, T3 및 T4는 상수 값들이다.
iii. 일 예에서, WxH 블록에 대해, W*H < T1 || (W*H <= T2 && W/H< = T3 && H/W <= T4)인 경우에만 GEO가 인에이블될 수 있다.
1) 일 예에서, T1, T2, T3 및 T4는 루마 블록들을 지칭할 수 있다.
2) 일 예에서, T1 = 512이고, T2 = 2048이며, T3 = 2이고, T4 = 2이다.
iv. 일 예에서, WxH 블록에 대해, W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3)인 경우에만 GEO가 인에이블될 수 있다.
1) 일 예에서, T1, T2, T3 및 T4는 루마 블록들을 지칭할 수 있다.
2) 일 예에서, T1 = 512이고, T2 = 2048이며, T3 = 1이다.
v. 일 예에서, WxH 블록에 대해, W*H <= T1 && W/H <=T2 && H/W <= T3인 경우에만 GEO가 인에이블될 수 있다.
1) 일 예에서, T1, T2, T3 및 T4는 루마 블록들을 지칭할 수 있다.
2) 일 예에서, T1 = 2048이고, T2 = 2이며, T3 = 4이다.
vi. 일 예에서, WxH 블록에 대해, W>=Tx이고 H >= Ty인 경우 및/또는 위의 1.a.i 내지 1.a.v 중 하나가 충족되는 경우에만 GEO가 인에이블될 수 있다.
1) 일 예에서, Tx 및 Ty는 루마 블록들을 지칭할 수 있다.
2) 일 예에서 Tx = 8이고, Ty = 8이다.
vii. 블록 폭이 N보다 크고/크거나 블록 높이가 M보다 큰 블록들에 대해 GEO가 허용되지 않을 수 있다.
1) 일 예에서, N 및 M은 루마 블록들을 지칭할 수 있다.
2) 일 예에서, N = M = 64이다.
3) 일 예에서, N = M = 32이다.
ⅷ. 블록 폭이 N과 동일하고/하거나 블록 높이가 M과 동일한 블록들에 대해 GEO가 허용되지 않을 수 있다.
1) 일 예에서, N = M = 4이다.
ix. 예를 들어, WxH 블록에 대해, 아래의 (1.a) 내지 (1.f)에서의 조건들 중 하나 및/또는 둘 이상이 충족되는 경우 GEO가 허용되지 않을 수 있으며, 여기서 Ti( i=1...17)는 상수 값들이다.
1) 조건들 (1.a) 내지 (1.f)는 다음과 같을 수 있다.
a) W < T1이고/이거나 W > T2이고/이거나 W = T3이다
b) H < T4이고/이거나 H > T5이고/이거나 H = T6이다
c) W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
d) W/H < T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
e) H/W < T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
f) Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
2) 대안적으로, 위의 (1.a) 내지 (1.f)에서의 조건들 중 하나 또는 하나 초과가 충족되는 경우만 GEO가 허용될 수 있다.
3) 예를 들어, WxH 블록에 대해, W < T1이거나 H < T2이거나 W*H > T3이거나 (W*H >= T4이고 Abs(logW - logH) > T5)인 경우 GEO가 허용되지 않을 수 있다.
a) 대안적으로, WxH 블록에 대해, W>=T1이고 H >=T2이며 (W*H < T4이거나 (W*H <= T3이고 Abs(logW - logH) <= T5)인 경우만 GEO가 허용될 수 있다.
b) 일 예에서, Ti(i=1...5)는 루마 블록들을 지칭할 수 있다.
c) 일 예에서, T1 = 8이고, T2 = 8이며, T3 = 2048이고, T4 = 512이며, T5 = 1이다
4) 예를 들어, WxH 블록에 대해, W < T1이거나 H < T2이거나 W*H > T3이거나 (W*H >= T4이고 (W/H > T5이거나 H/W > T5))인 경우 GEO가 허용되지 않을 수 있다.
a) 대안적으로, WxH 블록에 대해, W>=T1이고 H >=T2이며 (W*H < T4이거나 (W*H <= T3이고 W/H <= T5이며 H/W <= T5)인 경우만 GEO가 허용될 수 있다.
b) 일 예에서, Ti(i=1...5)는 루마 블록들을 지칭할 수 있다.
c) 일 예에서, T1 = 8이고, T2 = 8이며, T3 = 2048이고, T4 = 512이며, T5 = 2이다
5) 예를 들어, WxH 블록에 대해, W < T1이거나 H < T2이거나 W*H > T3이거나 H/W > T4이거나 W/H > T5인 경우 GEO가 허용되지 않을 수 있다.
a) 대안적으로, WxH 블록에 대해, W>=T1이고 H >=T2이며 W*H <= T3이고 H/W <= T4이며 W/H <= T5인 경우만 GEO가 허용될 수 있다.
b) 일 예에서, Ti(i=1...5)는 루마 블록들을 지칭할 수 있다.
c) 일 예에서, T1 = 8이고, T2 = 8이며, T3 = 2048이고, T4 = 4이며, T5 = 2이다
b) GEO를 인에이블시킬지 디스에이블시킬지는 블록 폭 및 블록 높이의 함수에 의존할 수 있다.
i. 예를 들어, 이 함수는 블록 폭 및/또는 블록 높이의 비율들에 의존할 수 있다. 예를 들어, 이 함수는 max(H,W)/min(H, W)일 수 있다.
ii. 예를 들어, 이 함수는 블록 폭과 블록 높이 사이의 차이들 및/또는 비율들, 예를 들면, Abs( Log2( cbWidth ) - Log2( cbHeight ) )일 수 있으며, 여기서 Abs(x)는 x의 절댓값을 반환하고 Log2(x)는 숫자 x의 밑이 2인 로그(log base 2)를 반환한다.
iii. 예를 들어, 이 함수는 블록 폭과 블록 높이의 합 또는 차이, 예를 들면, cbWdith + cbHeight, 및/또는 cbWidth - cbHeight, 및/또는 cbHeight - cbWidth일 수 있다.
1) 일 예에서, cbWdith + cbHeight가 숫자 X와 동일할 때(또는 숫자 X보다 작을 때, 또는 숫자 X보다 클 때) GEO가 디스에이블될 수 있다.
2) 일 예에서, cbWdith - cbHeight가 숫자 X와 동일할 때(또는 숫자 X보다 작을 때, 또는 숫자 X보다 클 때) GEO가 디스에이블될 수 있다.
3) 일 예에서, cbHeight - cbWidth가 숫자 X와 동일할 때(또는 숫자 X보다 작을 때, 또는 숫자 X보다 클 때) GEO가 디스에이블될 수 있다.
4) 이 함수는 블록 폭과 블록 높이 간의 차이의 절댓값일 수 있다.
iv. 예를 들어, 이 함수는 다음과 같을 수 있으며, 여기서 A,B,...F는 상수 숫자들을 나타낸다.
1) A*cbWidth < cbHeight, 및/또는 B*cbHeight < cbWidth 및/또는 C*cbWidth > cbHeight, 및/또는 D*cbHeight > cbWidth, 및/또는 log2(cbWidth) - log2(cbHeight) < E, 및/또는 log2(cbWidth) - log2(cbHeight) < F, 및/또는 (cbWidth<<S) < cbHeight, 및/또는 (cbHeight<<S) < cbWidth 및/또는 (cbWidth<<S) > cbHeight, 및/또는 (cbHeight<<S) > cbWidth 및/또는 abs(log2(cbWidth) - log2(cbHeight)) < F.
a) 일 예에서, A/B/C/D는 8과 동일하다.
b) 일 예에서, E는 4와 동일하다.
c) S는 2, 또는 3, 또는 4와 동일할 수 있다.
d) 위의 ">"는 ">="로 대체될 수 있다.
e) 위의 "<"는 "<="로 대체될 수 있다.
c) 폭 대 높이 비율 또는 높이 대 폭 비율이 X(예를 들면, X = 2) 초과(다른 예에서, 이상)인 블록들에 대해 GEO가 허용되지 않을 수 있다.
i. 일 예에서, WxH 블록에 대해, W/H > X(예를 들면, X=2)인 경우 GEO가 디스에이블될 수 있다.
ii. 일 예에서, WxH 블록에 대해, H/W > X(예를 들면, X=2)인 경우 GEO가 디스에이블될 수 있다.
d) 일 예에서, GEO가 동일한 코딩 유닛/예측 유닛/블록에서 하나의 색상 성분(예를 들면, 루마 블록)에 대해서는 인에이블될 수 있지만 다른 색상 성분(예를 들면, 크로마 블록)에 대해서는 디스에이블될 수 있다.
e) 일 예에서, 하나의 코딩 유닛/예측 유닛/블록에 대해, GEO를 허용할지/허용하지 않을지는 루마 블록의 치수에 의존할 수 있다.
i. 일 예에서, GEO가 루마 블록에 대해 허용되지 않을 때, GEO가 크로마 블록에 대해서도 디스에이블된다.
ii. 일 예에서, GEO가 루마 블록에 대해 허용될 때, GEO가 크로마 블록에 대해서도 허용된다.
f) GEO가 인에이블되는지 여부는 블록 폭 및/또는 블록 높이 및/또는 블록 폭 대 블록 높이 비율 및/또는 블록 높이 대 블록 폭 비율에 의존할 수 있다.
i. 예를 들어, WxH 블록에 대해, W >= T1이고 H >= T2이며 W <= T3이고 H <= T4이며 W/H <= T5이고 H/W <= T6일 때만 GEO가 허용될 수 있다.
1) 일 예에서, T1=T2=8이고, T3=T4=64이며, T5=2이고, T6=4이다.
2) 일 예에서, T1=T2=8이고, T3=T4=64이며, T5=T6=4이다.
3) 일 예에서, T1=T2=8이고, T3=T4=32이며, T5=2이고, T6=4이다.
4) 일 예에서, T1=T2=8이고, T3=T4=32이며, T5=T6=4이다.
ii. 예를 들어, WxH 블록에 대해, W >= T1이고 H >= T2이며 W <= T3이고 H <= T4일 때만 GEO가 허용될 수 있다.
1) 일 예에서, T1=T2=8이고, T3=T4=64이다.
2) 일 예에서, T1=T2=8이고, T3=T4=32이다.
iii. 대안적으로, WxH 블록에 대해, W < T1이거나 H < T2이거나 W > T3이거나 H > T4이거나 W/H > T5이거나 H/W > T6일 때 GEO가 디스에이블될 수 있다.
1) 일 예에서, T1=T2=8이고, T3=T4=64이며, T5=2이고, T6=4이다.
2) 일 예에서, T1=T2=8이고, T3=T4=64이며, T5=T6=4이다.
3) 일 예에서, T1=T2=8이고, T3=T4=32이며, T5=2이고, T6=4이다.
4) 일 예에서, T1=T2=8이고, T3=T4=32이며, T5=T6=4이다.
iv. 대안적으로, WxH 블록에 대해, W < T1이거나 H < T2이거나 W > T3이거나 H > T4일 때 GEO가 디스에이블될 수 있다.
1) 일 예에서, T1=T2=8이고, T3=T4=64이다.
2) 일 예에서, T1=T2=8이고, T3=T4=32이다.
2. 블록에 대해 GEO가 허용되는지 여부는 최대 변환 크기에 의존할 수 있다.
a) 일 예에서, 폭 또는/및 높이가 최대 변환 크기보다 큰 블록에 대해 GEO가 허용되지 않을 수 있다.
3. 블록에 대해 GEO가 허용되는지 여부는 최대 허용 CU 크기에 의존할 수 있다.
a) 일 예에서, 블록 폭 또는/및 블록 높이가 최대 CU 크기와 동일한 블록에 대해 GEO가 허용되지 않을 수 있다.
4. 특정 크로마 포맷에 대해 GEO가 허용되지 않을 수 있다.
a) 일 예에서, 4:0:0 크로마 포맷에 대해 GEO가 허용되지 않을 수 있다.
b) 일 예에서, 4:4:4 크로마 포맷에 대해 GEO가 허용되지 않을 수 있다.
c) 일 예에서, 4:2:2 크로마 포맷에 대해 GEO가 허용되지 않을 수 있다.
d) 일 예에서, 특정 크로마 포맷을 갖는 특정 색상 성분(예컨대, Cb 또는 Cr)에 대해 GEO가 허용되지 않을 수 있다.
5. GEO와 코딩 툴 X는 상호 배타적일 수 있다.
a) 일 예에서, GEO가 블록에 적용되는 경우, 코딩 툴 X는 디스에이블된다.
i. 대안적으로, 게다가, GEO가 적용될 때 코딩 툴 X의 사용 표시 및/또는 코딩 툴 X의 부가 정보의 시그널링은 스킵된다.
ii. 대안적으로, 코딩 툴 X가 블록에 적용될 때, GEO는 적용되지 않는다.
1) 대안적으로, 게다가, X가 적용될 때, GEO의 사용 표시 및/또는 GEO의 부가 정보의 시그널링은 스킵된다.
b) 일 예에서, X는 적응적 색상 변환을 지칭할 수 있다.
c) 일 예에서, X는 이중 트리 코딩 모드를 지칭할 수 있다.
d) 일 예에서, X는 변환 스킵 모드를 지칭할 수 있다.
e) 일 예에서, X는 BDPCM 코딩 모드를 지칭할 수 있다.
f) 일 예에서, X는 서브블록 변환(SBT)일 수 있다.
i. 일 예에서, SBT를 디스에이블시킬지 여부는 GEO 각도 인덱스들 및/또는 GEO 거리 인덱스들 및/또는 GEO 모드 인덱스들 및/또는 GEO로 인한 서브파티션들에 의존할 수 있다.
1) 일 예에서, GEO로 인한 서브파티션들의 에지와 SBT로 인한 서브파티션들의 에지가 교차되는 경우, GEO 코딩된 블록에 대해 SBT가 디스에이블될 수 있다.
2) 대안적으로, GEO로 인한 서브파티션들의 에지와 SBT로 인한 서브파티션들의 에지가 교차되지 않는 경우, GEO 코딩된 블록에 대해 SBT가 인에이블될 수 있다.
ii. 일 예에서, GEO 코딩된 블록에 대해 어떤 종류들의 SBT(예를 들면, 수평 SBT, 수직 SBT 등)가 사용되는지는 GEO 각도 인덱스들 및/또는 GEO 거리 인덱스들 및/또는 GEO 모드 인덱스들 및/또는 GEO로 인한 서브파티션들에 의존할 수 있다.
1) 일 예에서, GEO로 인한 서브파티션들의 에지와 SBT로 인한 서브파티션들의 에지가 교차되는 경우, GEO 코딩된 블록에 대해 수평 SBT 및/또는 수직 SBT가 디스에이블될 수 있다.
2) 대안적으로, GEO로 인한 서브파티션들의 에지와 SBT로 인한 서브파티션들의 에지가 교차되지 않는 경우, GEO 코딩된 블록에 대해 수평 SBT 및/또는 수직 SBT가 인에이블될 수 있다.
6. 상이한 색상 성분들은 상이한 GEO 모드 인덱스들을 가질 수 있다.
a) 일 예에서, 크로마 성분들은 루마 성분과 상이한 GEO 인덱스를 가질 수 있다.
b) 일 예에서, GEO가 크로마 성분들에 적용되지 않을 수 있다.
c) 대안적으로, 게다가, 상이한 색상 성분들에 대해 상이한 GEO 모드 인덱스들이 시그널링될 수 있다.
i. 예를 들어, 루마 성분에 대한 모드 인덱스가 시그널링될 수 있고, 크로마 성분들에 대한 모드 인덱스가 시그널링될 수 있다.
ii. 대안적으로, 게다가, 제2 색상 성분의 모드 인덱스로부터 제1 색상 성분의 모드 인덱스가 예측될 수 있다.
7. GEO에서의 상이한 서브영역들과 연관된 참조 픽처들의 해상도들이 상이한 경우 GEO가 허용되지 않을 수 있다.
a) 대안적으로, GEO에서 사용되는 하나의 참조 픽처의 해상도가 현재 픽처의 해상도와 상이한 경우 GEO가 허용되지 않을 수 있다.
b) 대안적으로, 참조 픽처와 현재 픽처의 해상도가 상이할 때에도 GEO가 허용될 수 있다.
c) 픽처의 해상도는 픽처의 폭/높이를 지칭할 수 있거나, 픽처에서의 적합성 윈도우(conformance window) 또는 스케일링 윈도우(scaling window)와 같은, 픽처에서의 윈도우를 지칭할 수 있다.
8. GEO가 디스에이블되거나 허용되지 않을 때, GEO 신택스 요소들(예컨대, 병합 데이터 시그널링의 신택스 테이블에서의 wedge_partition_idx, merge_wedge_idx0 및 merge_wedge_idx1)이 시그널링되지 않을 수 있다.
a) 신택스 요소가 시그널링되지 않을 때, 이는 0과 같은 기본 값인 것으로 추론될 수 있다.
b) GEO가 디스에이블되거나 허용되지 않을 때, GEO 관련 시맨틱 변수들(예컨대, wedge_merge_mode)은 0과 같은 기본 값인 것으로 추론될 수 있다.
블록 크기 의존적 GEO 모드 선택
9. 시퀀스/픽처/슬라이스/타일/브릭/서브픽처/다른 비디오 프로세싱 유닛(예를 들면, VPDU)에서 비디오 유닛(예를 들면, 시퀀스/픽처 그룹/픽처/서브픽처/슬라이스/타일/VPDU/CTU 행/CTU/CU/PU/TU)에 대해 몇 개의 GEO 모드가 허용되는지를 지정하기 위한 하나 이상의 신택스 요소(예를 들면, 플래그)가 시그널링될 수 있다.
a) 일 예에서, 이들은 SPS/VPS/APS/PPS/PH/SH/픽처/서브픽처/슬라이스/타일 레벨에서 시그널링될 수 있다.
i. 대안적으로, 게다가, 신택스 요소들이 조건부로 시그널링될 수 있다, 예컨대, 비디오 프로세싱 유닛에 대해 GEO 모드가 인에이블되는지 여부(예컨대, sps_geo_enabled_flag가 1과 동일한지 여부); 및/또는 현재 픽처 유형이 비인트라 또는 B 픽처인지 여부; 및/또는 현재 슬라이스 유형이 B 슬라이스인지 여부에 따라 시그널링될 수 있다.
b) 일 예에서, 신택스 요소는 비디오 프로세싱 유닛에 허용되는 GEO 모드들의 수가 X(예컨대, X=16 또는 32 또는 30)와 동일한지 여부를 나타낼 수 있다.
i. 일 예에서, 비디오 유닛 내의 모든 블록들에 대해 X(예컨대, X=16 또는 32 또는 30) 개의 GEO 모드가 허용되는지 여부를 나타내기 위한 하나의 신택스 요소(예를 들면, 하나의 SPS 플래그, 또는 하나의 PPS 플래그, 또는 픽처 헤더 내의 하나의 플래그)가 시그널링될 수 있다.
1) 대안적으로, 조건 C를 충족시키는 것들과 같은, 선택적 블록들에 대해 X(예컨대, X=16 또는 32 또는 30) 개의 GEO 모드가 허용되는지 여부를 나타내기 위한 하나의 플래그가 시그널링될 수 있다.
a) C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
b) C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
ii. 일 예에서, 각각의 블록 카테고리에 대한 허용된 GEO 모드들을 나타내기 위한 다수의 신택스 요소들(예를 들면, 2 개의 SPS 플래그)이 시그널링될 수 있으며, 여기서 블록들은, 예컨대, 블록 치수에 따라, 다수의 카테고리들로 분류된다.
1) 일 예에서, 하나는 조건 C인 블록들에 대해 X(예컨대, X=16 또는 32 또는 30) 개의 GEO 모드가 허용되는지 여부를 나타내기 위한 것이다. 다른 하나는 조건 D인 블록들에 대해 Y(예컨대, Y=16 또는 32 또는 30) 개의 GEO 모드가 허용되는지 여부를 나타내기 위한 것이다.
a) 대안적으로, 게다가, C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들일 수 있는 반면, D는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들일 수 있다.
c) 일 예에서, 블록에 대한 GEO 모드 인덱스를 어떻게 시그널링할지는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
i. 일 예에서, 블록에 대한 GEO 모드 인덱스의 이진화 및/또는 엔트로피 코딩은 신택스 요소 및/또는 블록 치수들에 의존할 수 있다.
1) 일 예에서, 신택스 요소에 의해 도출되는 블록에 대한 허용된 GEO 모드들의 수가 X(예컨대, X=16 또는 32 또는 30)와 동일한 경우, GEO 모드 인덱스 코딩에 대한 cMax의 값은 X와 동일할 수 있다.
2) 일 예에서, 신택스 요소에 의해 도출되는 블록에 대한 허용된 GEO 모드들의 수가 X(예컨대, X=16 또는 32 또는 30)와 동일하고, 블록 치수들이 조건 C를 충족시키는 경우, GEO 모드 인덱스 코딩에 대한 cMax의 값은 X와 동일할 수 있다.
a) C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
b) C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
ii. 일 예에서, GEO 모드 인덱스 코딩을 위한 이진화 방법들은 블록 치수들 및/또는 신택스 요소에 따라 상이할 수 있다.
d) 일 예에서, merge_geo_partition_idx(예를 들면, wedge_partition_idx)의 최댓값의 값은 앞서 언급된 신택스 요소들(예를 들면, 플래그) 및/또는 블록 치수들에 의존할 수 있다.
i. 일 예에서, merge_geo_partition_idx(예를 들면, wedge_partition_idx)의 값이 비트스트림에서의 최대 허용 GEO 모드보다 작도록 제약하기 위해 비트스트림 제약이 추가될 수 있다.
ii. 일 예에서, 블록 치수들이 조건 C를 충족시키는 블록들에 대해 merge_geo_partition_idx(예를 들면, wedge_partition_idx)의 값이 비트스트림에서의 최대 허용 GEO 모드보다 작도록 제약하기 위해 비트스트림 제약이 추가될 수 있다.
a) C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
b) C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
e) 일 예에서, 비디오 유닛에 대한 X(예컨대, X=16 또는 32 또는 30) 개 GEO 모드 방법의 사용을 제약할지 여부를 지정하기 위해 비디오 프로세싱 유닛 레벨에서 하나 이상의 제약 플래그가 시그널링될 수 있다.
1) 일 예에서, 시퀀스 내의 모든 블록들에 대해 X 개 GEO 모드 방법이 사용되는지 여부를 제약하기 위해 제약 플래그가 시그널링될 수 있다.
2) 일 예에서, X 개 GEO 모드 방법을 어떻게 제약할지는 블록 치수들에 의존할 수 있다.
a) 일 예에서, 조건 C인 블록들에 대해 X 개 GEO 모드 방법이 사용되는지 여부를 제약하기 위해 SPS 레벨에서 제약 플래그가 시그널링될 수 있다.
i. C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
ii. C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
b) 일 예에서, SPS 레벨에서 2 개의 제약 플래그가 시그널링될 수 있다. 하나는 조건 C인 블록들에 대해 X 개 GEO 모드 방법이 사용되는지 여부를 제약하기 위한 것이다. 다른 하나는 조건 D인 블록들에 대해 Y 개 GEO 모드 방법이 사용되는지 여부를 제약하기 위한 것이다.
i. C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들일 수 있는 반면, D는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들일 수 있다.
f) 일 예에서, 블록에 대해 어떤 GEO 모드들이 허용되는지는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
i. 일 예에서, 블록에 대해 GEO 모드들의 서브세트가 허용되는지 GEO 모드들의 전체 세트가 허용되는지는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
ii. 일 예에서, 블록에 대해 GEO 각도들의 서브세트가 허용되는지 GEO 각도들의 전체 세트가 허용되는지는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
iii. 일 예에서, 블록에 대해 GEO 변위들의 서브세트가 허용되는지 GEO 변위들의 전체 세트가 허용되는지는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
1) 일 예에서, 0이 아닌 변위 인덱스들을 갖는 GEO 모드들이 사용되는지 여부는 앞서 언급된 신택스 요소들(예를 들면, 플래그)에 의존할 수 있다.
10. 비디오 유닛(예를 들면, 픽처/슬라이스/타일/브릭/CTU 행/CTU)을 프로세싱하기 위해 다수의 허용된 GEO 모드 세트들이 활용될 수 있다.
a) 일 예에서, 다수의 세트들 중의 한 세트의 선택은 디코딩된 정보(예를 들면, 블록의 블록 치수/블록 형상)에 의존할 수 있다.
b) 일 예에서, 다수의 세트들 중 적어도 2 개의 세트는 허용된 GEO 모드들의 수가 상이하다.
c) 일 예에서, 다수의 세트들 중 T(예컨대, T=2) 개의 세트는 허용된 GEO 모드들의 수가 동일할 수 있지만, 하나의 세트에 포함된 적어도 하나의 GEO 모드가 다른 세트에서는 제외된다.
d) 일 예에서, 다수의 세트들 중 T(예컨대, T=2) 개의 세트가 동일한 GEO 모드들을 가질 수 있지만, T 개의 세트 중 임의의 2 개에 대해 적어도 하나의 GEO 모드가 상이한 위치에 배열된다.
e) 일 예에서, GEO 모드 인덱스를 어떻게 시그널링할지는 대응하는 허용된 GEO 모드 세트, 예컨대, 해당 세트에서의 허용된 GEO 모드들의 수에 의존할 수 있다.
f) 일 예에서, 디코딩된 GEO 모드 인덱스는 상이한 GEO 모드(예를 들면, 상이한 각도들 또는 상이한 거리들)에 대응할 수 있다.
i. 일 예에서, 디코딩된 GEO 모드 인덱스를 GEO 모드에 어떻게 매핑할지는 블록의 대응하는 세트에 의존할 수 있다.
g) 일 예에서, 비트스트림에서 블록에 대해 사용될 수 있는 GEO 모드들의 수는 A(예를 들면, JVET-P0884-v8의 작업 초안의 디코딩 프로세스에서와 같이 A = 81)보다 작을 수 있는 수(B로 표기됨)로서 정의될 수 있다.
a. 예를 들어, B는 임의의 GEO 블록에 대해 블록 치수들에 관계없이 상수 값일 수 있다.
b. 예를 들어, B는 상이한 블록들에서 블록 치수들에 따라 변경될 수 있는 변수일 수 있다.
h) 일 예에서, 비트스트림에서 블록에 대해 시그널링될 수 있는 GEO 모드들의 수는 A보다 작을 수 있는 수(C로 표기됨)로서 정의될 수 있다.
c. 예를 들어, C는 임의의 GEO 블록에 대해 블록 치수들에 관계없이 상수 값일 수 있다.
d. 예를 들어, C는 상이한 블록들에서 블록 치수들에 따라 변경될 수 있는 변수일 수 있다.
e. 예를 들어, B는 C와 동일할 수 있다.
f. 예를 들어, B 또는 C는 30 또는 40 또는 45 또는 50과 동일할 수 있다.
i) 일 예에서, B 또는 C는 인코더로부터 디코더로 시그널링될 수 있다.
j) 일 예에서, GEO 코딩된 블록들을 프로세싱하기 위해 2 개의 허용된 GEO 모드 세트(예를 들면, 세트 A 및 세트 B)가 정의될 수 있다.
i. 일 예에서, 세트 A에 포함된 적어도 하나의 GEO 모드가 세트 B에서는 제외될 수 있다.
1) 일 예에서, 세트 A 내의 GEO 모드들로부터 도출되는 적어도 하나의 GEO 각도가 세트 B 내의 GEO 모드들로부터 도출되는 GEO 각도들에서는 제외될 수 있다.
ii. 일 예에서, 세트 A 및 세트 B는 허용된 GEO 모드들의 수가 동일할 수 있으며, 예를 들면, 양쪽 세트에 대해 X(예컨대, X=16 또는 32 또는 30) 개의 모드가 사용된다.
1) 일 예에서, 세트 A 및 세트 B는 허용된 GEO 각도들의 수가 동일할 수 있으며, 예를 들면, 양쪽 세트에 대해 Y(예컨대, Y < 24) 개의 각도가 사용된다.
1) 일 예에서, 세트 A 및 세트 B는 허용된 GEO 모드들의 수가 상이할 수 있으며, 예를 들면, 세트 A에 대해서는 X1(예컨대, X1=16) 개의 모드가 사용되는 반면, 세트 B에 대해서는 X2(예컨대, X2=32) 개의 모드가 사용된다. 일 예에서, 세트 A 및 세트 B는 허용된 GEO 각도들의 수가 상이할 수 있으며, 예를 들면, Y1 ≠ Y2, Y1 < 24, Y2 < 24와 같이, 세트 A에 대해서는 Y1 개의 각도가 사용되는 반면, 세트 B에 대해서는 Y2 개의 각도가 사용된다.
iii. 일 예에서, 블록이 세트 A로부터의 GEO 모드들/각도들/거리들을 사용하는지 세트 B로부터의 GEO 모드들/각도들/거리들을 사용하는지는 블록 치수들, 예컨대, 블록 치수가 조건 C를 충족시키는지 여부에 의존할 수 있다.
1) C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
2) C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
iv. 일 예에서, 블록에 대한 GEO 모드 인덱스를 어떻게 시그널링할지는 블록 치수들에 의존할 수 있다.
1) 일 예에서, H/W <= T(예를 들어, T = 1 또는 2 또는 4 또는 8)이면, GEO 모드 인덱스의 TR 코딩에 대한 cMax 값은 X(예컨대, X=16 또는 32 또는 30)와 동일할 수 있다.
v. I가 GEO 모드 세트들의 총수를 표기한다고 가정하면, Seti (i = 0...I-1)는 블록에 대해 사용되는 GEO 모드 세트를 표기하고, Li (i = 0...I-1)는 Seti의 길이를 표기한다. 일 예에서, GEO 코딩된 블록은, 디코딩된 정보(예를 들면, 관련 신택스 요소들, 블록 치수들)에 따라, 다수의 블록 카테고리들로 분류될 수 있다.
1) 일 예에서, 블록에 대해 어떤 GEO 모드 세트가 사용되는지는 블록 카테고리들 및/또는 신택스 요소들(예컨대, 글머리 기호 9에 설명된 플래그)에 의존할 수 있다.
2) 일 예에서, 블록에 대해 몇 개의 GEO 모드가 허용되는지는 블록 카테고리들 및/또는 신택스 요소들(예컨대, 글머리 기호 9에 설명된 플래그)에 의존할 수 있다.
3) 블록에 대한 대응하는 GEO 모드 세트가 GEO 모드 세트 i(예를 들면, Seti)로 표기된다고 가정한다
a) 일 예에서, 이 블록에 대한 허용 가능한 GEO 모드들의 수는 Seti의 길이보다 작을 수 있다, 즉, Li보다 작을 수 있다.
b) 일 예에서, 이 블록에 대한 허용 가능한 GEO 모드들의 수는 Seti의 길이와 동일할 수 있다, 즉, Li와 동일할 수 있다.
c) 일 예에서, 이 블록에 대한 모든 허용 가능한 GEO 모드들은 대응하는 GEO 모드 세트 i(예를 들면, Seti)로부터의 것일 수 있다.
d) 일 예에서, 이 블록에 대해 허용되는 GEO 모드들의 일부는 대응하는 GEO 모드 세트 i(예를 들면, Seti)로부터의 것일 수 있다.
e) 일 예에서, 이 블록에 대한 허용 가능한 GEO 모드들은 대응하는 GEO 모드 세트(예를 들면, Seti) 내의 적어도 N(예컨대, N < Li) 개의 모드를 포함할 수 있다.
i. 일 예에서, 대응하는 GEO 모드 세트 내의 처음 N(예컨대, N=16 또는 14) 개의 모드가 사용될 수 있다.
ii. 일 예에서, 대응하는 GEO 모드 세트 내의 마지막 N(예컨대, N=16 또는 14) 개의 모드가 사용될 수 있다.
iii. 일 예에서, 대응하는 GEO 모드 세트 내의 매 M(예컨대, M=2) 개의 모드 중 하나가 사용될 수 있다.
f) 일 예에서, 이 블록에 대한 허용 가능한 GEO 모드들은 대응하는 GEO 모드 세트 내의 일부 모드들 및 일부 다른 미리 정의된 GEO 모드들(예컨대, 변위가 0인, 예를 들면, 거리 인덱스가 0과 동일한 GEO 모드들)로 구성될 수 있다.
11. GEO 모드 인덱스를 각도/거리 인덱스에 어떻게 매핑할지는 디코딩된 정보(예를 들면, 관련 신택스 요소들, 블록 치수들)에 의존할 수 있다.
a) 일 예에서, GEO 모드 인덱스를 각도/거리 인덱스에 어떻게 매핑할지는 블록 치수가 조건 C를 충족시키는지 여부에 의존할 수 있다.
i. C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
ii. C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
b) I는 블록에 대한 허용된 GEO 모드들의 총수를 표기하고, J는 블록에 대한 허용된 GEO 각도들의 총수를 표기하며, K는 블록에 대한 허용된 GEO 거리들의 총수를 표기하고, Mi(i = 0...I-1)는 블록에 대한 코딩된/시그널링된 GEO 모드 인덱스를 표기하며, Aj(j = 0...J-1)는 블록에 대한 매핑된 각도 인덱스를 표기하고, Dk(k = 0…K-1)는 블록에 대한 거리 인덱스를 표기한다고 가정한다.
i. 일 예에서, 매핑된 각도 인덱스 Aj가 GEO 모드 인덱스 Mi의 값과 함께 상승하지 않을 수 있다.
1) 일 예에서, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들 Mi에 대해, 대응하는 각도 인덱스들 Aj가 연속적인 숫자들이 아닐 수 있고/있거나, 내림차순이 아닐 수 있고/있거나, 오름차순이 아닐 수 있고/있거나, 비순차적일 수 있다.
2) 대안적으로, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들에 대해, 대응하는 각도 인덱스들 Aj가 연속적인 숫자들일 수 있고/있거나, 내림차순일 수 있고/있거나, 오름차순일 수 있다.
ii. 일 예에서, 매핑된 거리 인덱스 Dk가 GEO 모드 인덱스 Mi의 값과 함께 상승하지 않을 수 있다.
1) 일 예에서, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들 Mi에 대해, 대응하는 거리 인덱스들 Dk가 연속적인 숫자들이 아닐 수 있고/있거나, 내림차순이 아닐 수 있고/있거나, 오름차순이 아닐 수 있고/있거나, 비순차적일 수 있다.
2) 대안적으로, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들에 대해, 대응하는 거리 인덱스들 Dk가 연속적인 숫자들일 수 있고/있거나, 내림차순일 수 있고/있거나, 오름차순일 수 있다.
iii. 일 예에서, 코딩된/시그널링된 GEO 모드 인덱스가 다른 매핑된 GEO 모드 인덱스 세트에 매핑되는 경우, 매핑된 GEO 모드 인덱스는 코딩된/시그널링된 GEO 모드 인덱스와 함께 상승하지 않을 수 있다.
1) 일 예에서, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들에 대해, 대응하는 매핑된 GEO 모드 인덱스들이 연속적인 숫자들이 아닐 수 있고/있거나, 내림차순이 아닐 수 있고/있거나, 오름차순이 아닐 수 있고/있거나, 비순차적일 수 있다.
2) 대안적으로, 다수의 연속적인 코딩된/시그널링된 GEO 모드 인덱스들에 대해, 대응하는 매핑된 GEO 모드 인덱스들이 연속적인 숫자들일 수 있고/있거나, 내림차순일 수 있고/있거나, 오름차순일 수 있다.
12. GEO 블록에 대한 허용된 모드들/각도들/거리들의 수는 비디오 유닛에 대한 유망한 GEO 모드들/각도들/거리들의 수와 상이할 수 있다.
a) 일 예에서, 블록에 대해 시그널링되는 최대 GEO 모드 인덱스는 시퀀스에 대한 허용된 GEO 모드들의 총수보다 작을 수 있다.
b) 일 예에서, 블록에 대해 허용되는 GEO 각도들의 수는 시퀀스에 대해 정의되는 허용된 GEO 각도들의 총수보다 작을 수 있다.
c) 일 예에서, 블록에 대해 허용되는 GEO 모드들/각도들/거리들의 수가 몇 개인지는 블록 치수(예컨대, W 또는 H 또는 W/H 또는 H/W)에 의존할 수 있다.
13. 비트스트림에서 시그널링되거나 사용될 수 있는 상이한 블록 치수들(예컨대, 블록 높이 및/또는 블록 폭)에 대한 GEO 모드들의 수는 상이할 수 있다. 디코딩 프로세스에서 JVET-P0884-v8에 정의된 바와 같은 각도/거리 인덱스들을 도출하는 데 사용될 수 있는 GEO 모드들의 총수는 A로 표기된다. 비트스트림에서 블록에 대해 사용될 수 있는 GEO 모드들의 수는, B로 표기되는, 숫자로서 정의될 수 있다. 비트스트림에서 블록에 대해 시그널링될 수 있는 GEO 모드들의 수는, C로 표기되는, 숫자로서 정의될 수 있다.
a) 일 예에서, B 또는 C는 A와 상이할 수 있다.
i. 예를 들어, B는 C와 동일할 수 있다.
ii. 예를 들어, B 및 C는 A보다 작을 수 있다.
b) 일 예에서, B 또는 C는 상이한 블록 카테고리들에 대해 상이한 것으로 정의될 수 있다.
1) 일 예에서, 블록 카테고리는 블록 폭과 블록 높이의 비율들에 의해 분류될 수 있다.
a. 일 예에서, WxH 블록에 대해, W/H = 1 및/또는 2 및/또는 3 및/또는 4 및/또는 8인 경우 B 또는 C는 A보다 작을 수 있다.
b. 일 예에서, WxH 블록에 대해, H/W = 1 및/또는 2 및/또는 3 및/또는 4 및/또는 8인 경우 B 또는 C는 A보다 작을 수 있다.
2) 일 예에서, 블록 카테고리는, W * H와 동일한 블록 크기와 같은, 블록 폭 및 블록 높이의 함수에 의해 분류될 수 있다.
a. 일 예에서, WxH 블록에 대해, W*H > T(예컨대, T = 512/1024/2048/4096)인 경우 B 또는 C는 A보다 작을 수 있다.
b. 일 예에서, WxH 블록에 대해, W*H <= T(예컨대, T = 512/1024/2048/4096)인 경우 B 또는 C는 A보다 작을 수 있다.
3) 일 예에서, 블록 카테고리는 블록 치수들, 예를 들면, W 및/또는 H에 의해 분류될 수 있다.
a. 일 예에서, WxH 블록에 대해, W = T1이고/이거나 H = T2인 경우(여기서, T1 및 T2는 상수 값들임) B 또는 C는 A보다 작을 수 있다.
b. 일 예에서, WxH 블록에 대해, W > T1이고/이거나 H > T2인 경우(여기서, T1 및 T2는 상수 값들임) B 또는 C는 A보다 작을 수 있다.
c. 일 예에서, WxH 블록에 대해, W < T1이고/이거나 H < T2인 경우(여기서, T1 및 T2는 상수 값들임) B 또는 C는 A보다 작을 수 있다.
4) 일 예에서, 블록 카테고리 i에 대한 고정 숫자 세트 Bi(i = 0...N-1 여기서 N은 위의 글머리 기호들에 정의된 바와 같은 블록 카테고리들의 수를 표기함)가 B 또는 C에 대해 정의될 수 있다.
a. 일 예에서, 블록 폭이 32보다 작고 블록 높이가 32보다 작은 블록 카테고리 0에 대한 B0은 40 또는 45 또는 50과 동일하다. 블록 폭이 32와 동일하고 블록 높이가 32와 동일한 블록 카테고리 1에 대한 B1은 20 또는 30 또는 40과 동일하다. 블록 폭이 32보다 크고 블록 높이가 32보다 큰 블록 카테고리 2에 대한 B2는 20 또는 30과 동일하다.
5) 각각의 블록 카테고리에 대한 B 또는 C는 인코더로부터 디코더로 시그널링될 수 있다.
a. 대안적으로, 각각의 블록 카테고리에 대한 B 또는 C는 인코더 및 디코더에 대해 미리 정의될 수 있다.
6) 일 예에서, 루마 블록의 폭 및 높이가 B 또는/및 C를 도출하는 데 사용될 수 있다.
14. 비트스트림에서 시그널링되는 GEO 모드 인덱스의 값은 디코딩 프로세스에서 각도/거리 인덱스를 도출하는 데 사용되는 GEO 모드 인덱스의 값과 상이할 수 있다.
a) 일 예에서, GEO 모드들/각도들/거리들의 전체 세트(예를 들면, GEO 모드들의 전체 세트는 JVET-P0884의 작업 초안에 있는 표 8-10에 정의되어 있음)와 관련한 GEO 모드들/각도들/거리들의 서브세트가 특정 블록 카테고리에 사용될 수 있으며, 여기서 블록 카테고리는, 위의 글머리 기호들에서 설명된 바와 같이, 블록 폭 및/또는 블록 높이에 의해 분류될 수 있다.
b) 일 예에서, 매핑 테이블(예를 들면, 룩업 테이블)은 시그널링된 GEO 모드 인덱스와 매핑된 GEO 모드 인덱스 사이의 대응 관계를 정의하는 데 사용될 수 있다(예를 들면, 매핑된 GEO 모드는, JVET-P0884의 작업 초안에 의해 제공되는 디코딩 프로세스의 표 8-10에서의 wedge_partition_idx와 같은, 각도 인덱스 및 거리 인덱스를 도출하는 데 사용될 수 있다).
c) 일 예에서, GEO 블록 카테고리들에 따라, N 개의 매핑 테이블(N>1)이 정의될 수 있다. 예를 들어, N은 19보다 작을 수 있는 상수이다.
a. 일 예에서, 매핑 테이블들의 수는 블록 카테고리들의 수에 의존할 수 있다.
b. 이러한 매핑 테이블들의 길이는, 상이한 블록 카테고리들에 대해 허용되는 GEO 모드들의 수에 따라, 상이한 블록 카테고리들에 대해 상이할 수 있다.
d) 위에서 정의된 바와 같은 하나 이상의 매핑 테이블이 인코더로부터 디코더로 시그널링될 수 있다.
a. 대안적으로, 매핑 테이블들이 인코더 및 디코더에 대해 미리 정의될 수 있다.
15. 시그널링된 GEO 모드 인덱스에 대한 이진화는 디코딩된 정보(예를 들면, 블록 치수들/카테고리들)에 의존할 수 있다.
a) 일 예에서, 시그널링된 웨지 모드 인덱스의 이진화 동안 최댓값(cMax로 표기됨)의 값은 블록 치수들(예컨대, 블록 폭 및/또는 블록 높이), 또는 블록 카테고리들(위의 글머리 기호들에서 설명됨)에 의존할 수 있다.
b) 일 예에서, 블록 크기가 조건 C를 충족시키는 경우, GEO 모드 인덱스 코딩에 대한 cMax의 값은 X(예컨대, X=16 또는 32 또는 30)와 동일할 수 있다.
i. C는 H/W <= T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
ii. C는 H/W > T(예를 들면, T = 1 또는 2 또는 4 또는 8)인 블록들로서 예시될 수 있다.
16. GEO 모드 인덱스는 절단된 라이스(truncated rice), 또는 절단된 이진(truncated binary), 또는 절단된 단항(truncated unary), 또는 고정 길이, k차 지수 골롬 또는 제한된 k차 지수 골롬 이진화로 코딩될 수 있다.
a) 절단된 이진 코드는 시그널링된 GEO 모드 인덱스의 이진화에 사용될 수 있다.
i. 일 예에서, 비트스트림에서 시그널링된 GEO 모드 인덱스는 디코딩 프로세스에서 JVET-P0884-v8에 정의된 바와 같은 각도/거리 인덱스들을 도출하는 데 사용되는 도출된 GEO 모드 인덱스와 상이할 수 있다.
b) K차 EG 코딩은 시그널링된 GEO 모드 인덱스의 이진화에 사용될 수 있다.
i. 일 예에서, K = 0 또는 1 또는 2 또는 3이다.
17. 콘텍스트 코딩은 GEO 모드 인덱스를 코딩하는 데 사용될 수 있다.
a) 일 예에서, GEO 모드 인덱스의 처음 X(예컨대, X=1) 개의 빈은 콘텍스트 코딩에 의해 코딩될 수 있다. 그리고 다른 빈들은 콘텍스트 모델링 없이 바이패스 코딩에 의해 코딩될 수 있다.
블렌딩 가중치들 및 모션 저장 가중치들의 생성
18. TPM 및/또는 GEO 모드에서 크로마 성분들에 대한 블렌딩 가중치들 및/또는 모션 저장 가중치들은 크로마 샘플 위치 유형(예를 들면, 도 12에서의 ChromaLocType)에 의존할 수 있다.
a) 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형은 비디오 유닛 레벨(예컨대, SPS/VPS/PPS/픽처 헤더/서브픽처/슬라이스/슬라이스 헤더/타일/브릭/CTU/VPDU 레벨)에서 시그널링될 수 있다.
a. 일 예에서, 콘텐츠의 상이한 크로마 위치 유형들 사이를 전환하기 위해 상위 레벨 플래그가 시그널링될 수 있다.
i. 일 예에서, 크로마 위치 유형 0과 크로마 위치 유형 2 사이를 전환하기 위해 상위 레벨 플래그가 시그널링될 수 있다.
ii. 일 예에서, TPM/GEO 예측 모드에서의 좌측 상단 다운샘플링된 루마 가중치들이 좌측 상단 루마 가중치들과 동일 위치에 있는지 여부(즉, 크로마 샘플 위치 유형 0)를 지정하기 위한 플래그가 시그널링될 수 있다.
iii. 일 예에서, TPM/GEO 예측 모드에서의 좌측 상단 다운샘플링된 루마 샘플이 수평으로는 좌측 상단 루마 샘플과 동일한 위치에 있지만 수직으로는 좌측 상단 루마 샘플에 대해 0.5 루마 샘플 단위만큼 시프트되는지 여부(즉, 크로마 샘플 위치 유형 2)를 지정하기 위한 플래그가 시그널링될 수 있다.
b. 일 예에서, 4:2:0 크로마 포맷 및/또는 4:2:2 크로마 포맷에 대한 다운샘플링 필터의 유형이 시그널링될 수 있다.
c. 일 예에서, TPM/GEO 예측에 사용되는 크로마 다운샘플링 필터의 유형을 지정하기 위한 플래그가 시그널링될 수 있다.
i. 일 예에서, TPM/GEO 예측 모드에서 크로마 가중치들의 도출을 위해 다운샘플링 필터 A를 사용할지 다운샘플링 필터 B를 사용할지에 대한 플래그가 시그널링될 수 있다.
b) 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형은 비디오 유닛 레벨(예컨대, SPS/VPS/PPS/픽처 헤더/서브픽처/슬라이스/슬라이스 헤더/타일/브릭/CTU/VPDU 레벨)에서 도출될 수 있다.
a. 일 예에서, 크로마 서브샘플링 필터 유형과 콘텐츠의 크로마 포맷 유형들 간의 대응 관계를 지정하기 위한 룩업 테이블이 정의될 수 있다.
c) 상이한 크로마 위치 유형들의 경우에 TPM/GEO 예측 모드에 대해 지정된 다운샘플링 필터가 사용될 수 있다.
a. 일 예에서, 특정 크로마 샘플 위치 유형(예를 들면, 크로마 샘플 위치 유형 0)의 경우에 동일 위치 좌측 상단 루마 가중치들로부터 TPM/GEO의 크로마 가중치들이 서브샘플링될 수 있다.
b. 일 예에서, 특정 크로마 샘플 위치 유형(예를 들면, 크로마 샘플 위치 유형 0 또는 2)의 경우에, 지정된 X-탭 필터(X = 6 또는 5와 같이 X는 상수임)가 TPM/GEO 예측 모드에서의 크로마 가중치들의 서브샘플링에 사용될 수 있다.
감소된 GEO 각도들/거리들
19. 블록에 대한 허용된 GEO 모드들/각도들/변위들/분할들/분할 패턴들의 수 및/또는 후보들은 디코딩된 정보(예를 들면, 블록 치수들 및/또는 신택스 요소들 등) 및/또는 도출된 정보(예를 들면, GEO 각도들)에 의존할 수 있다.
a) 일 예에서, 블록들은 블록 유형들(카테고리들)로 분류될 수 있다. 블록에 대한 허용된 GEO 모드들/각도들/변위들/분할들/분할 패턴들의 수 및/또는 후보들은 블록의 유형에 의존할 수 있다. 블록의 유형은 블록의 치수들에 의존할 수 있다.
b) 일 예에서, 블록에 대한 허용된 변위들의 수 및/또는 후보들은 블록 치수들에 의존할 수 있다.
i. 일 예에서, 블록 폭이 X(예를 들면, X = 128 또는 64)와 동일하고/하거나 블록 높이가 Y(예를 들면, Y = 128 또는 64)와 동일한 블록들에 대해 한 유형의 블록들에 대한 허용된 변위들의 수는 N(예컨대, N = 1 또는 2 또는 3)과 동일할 수 있다.
ii. 일 예에서, 블록 폭과 블록 높이의 비율이 T(예컨대, T = 1/ 8, 및/또는 8, 및/또는 1/4, 및/또는 4)와 동일하거나 일정 범위(예컨대, T <=1/4, T>=4, T <=1/8, T>=8) 내에 있는 블록들에 대해 한 유형의 블록들에 대한 허용된 변위들의 수는 N(예컨대, N = 1 또는 2 또는 3)과 동일할 수 있다.
c) 일 예에서, 블록에 대한 허용된 변위들의 수 및/또는 후보들은 도출된 GEO 각도들에 의존할 수 있다.
i. 일 예에서, 허용된 변위들의 수는 상이한 GEO 각도들에 대해 상이할 수 있다.
1) 예를 들어, GEO 모드에서 N(예컨대, N > 1) 개의 각도 서브세트가 지원된다고 가정하면, 한 각도 서브세트에 대한 허용된 변위들의 수는 X(예컨대, X = 1 또는 2 또는 3)와 동일할 수 있는 반면, 다른 각도 서브세트에 대한 허용된 변위들의 수는 Y(예컨대, Y = 4)와 동일할 수 있다.
d) 일 예에서, 블록에 대한 GEO 모드들의 수 X는 신택스 요소들(예를 들면, 신택스 플래그 및/또는 신택스 파라미터 등)에 의해 도출될 수 있다.
i. 신택스 요소(들)는 VPS/DPS/SPS/PPS/시퀀스 헤더/픽처 헤더/슬라이스 헤더/CTU/CU에서 시그널링될 수 있다.
ii. X 개의 GEO 모드를 사용할지 Y 개의 GEO 모드를 사용할지는 신택스 플래그에 의존할 수 있다.
1) 예를 들어, 숫자 X는 숫자 Y보다 작을 수 있다.
2) 예를 들어, X = 2 또는 4 또는 6 또는 8 또는 12 또는 14 또는 16이다.
3) 예를 들어, Y = 16 또는 32 또는 48 또는 54 또는 64 또는 82이다.
iii. X0 개의 GEO 모드를 사용할지, X1 개의 GEO 모드를 사용할지, X2 개의 GEO 모드를 사용할지는 신택스 요소에 의존할 수 있다.
1) 예를 들어, X0은 X1보다 작을 수 있고/있거나, X1은 X2보다 작을 수 있다.
2) 예를 들어, X0 = 2 또는 4 또는 5 또는 8 또는 12 또는 14이다.
3) 예를 들어, X1 = 8 또는 12 또는 14 또는 16이다.
4) 예를 들어, X2 = 32 또는 64 또는 82이다.
20. 블록에 대해 어떤 GEO 모드들/각도들/변위들이 허용되는지는 신택스 요소(예를 들면, 신택스 플래그 또는 신택스 파라미터) 및/또는 블록 치수들에 의존할 수 있다.
a) 신택스 요소는 VPS/DPS/SPS/PPS/시퀀스 헤더/픽처 헤더/슬라이스 헤더/CTU/CU에서 시그널링될 수 있다.
b) 일 예에서, 블록에 대해 비대각 각도들이 허용되는지 여부는 신택스 요소(예를 들면, 신택스 플래그) 및/또는 블록 치수들에 의존할 수 있다.
i. 예를 들어, 블록에 대해 제1 GEO 모드 세트 A가 허용되는지 제2 GEO 모드 세트 B가 허용되는지는 신택스 요소에 의존할 수 있다. 예를 들면, 세트 A는 세트 B보다 적은 요소들을 가질 수 있다.
1) 일 예에서, A는 0과 동일한 변위에서 대각 각도들로 투영된 GEO 모드들을 나타낼 수 있다.
2) 일 예에서, A는 모든 변위들에서 대각 각도들로 투영된 GEO 모드들을 나타낼 수 있다.
3) 일 예에서, B는 대각 각도들 및 비대각 각도들 양쪽 모두로 투영된 GEO 모드들을 나타낼 수 있다.
c) 일 예에서, 블록에 대해 영이 아닌 변위들이 허용되는지 여부는 신택스 요소(예를 들면, 신택스 플래그) 및/또는 블록 치수들에 의존할 수 있다.
i. 예를 들어, GEO 모드 매핑 테이블(예를 들면, JVET-Q0160_CE4_1_CommonBaseWD_w_fixes에서의 표 36)에서의 선택된 X 개의 GEO 모드는 변위가 0(예컨대, distanceIdx = 0)일 수 있다. 예를 들어, 선택된 X 개의 모드는 GEO 모드 매핑 테이블에서의 처음 X 개의 모드일 수 있다.
1) 일 예에서, X는 2 또는 4 또는 6 또는 8 또는 12 또는 14 또는 16 또는 20 또는 24 또는 32이다.
2) 예를 들어, 신택스 요소에 의해 도출되는 블록에 대한 허용된 GEO 모드들의 수가 X와 동일한 경우, GEO 매핑 테이블에서의 처음 X 개의 GEO 모드가 사용되며 이들의 대응하는 변위들은 0과 동일할 수 있다.
3) 일 예에서, 영 변위(예컨대, distanceIdx = 0)에 대응하는 GEO 모드들은 GEO 모드 매핑 테이블의 처음에 배치될 수 있다.
4) 일 예에서, 영이 아닌 변위들(예컨대, distanceIdx = 1 또는 2 또는 3)에 대응하는 GEO 모드들은 영 변위(예컨대, distanceIdx = 0)에 대응하는 GEO 모드들 이후에 배치될 수 있다.
d) 일 예에서, 허용된 GEO 모드들/각도들/변위들이 상이한 블록 카테고리들에 대해 상이할 수 있다. 블록 카테고리 Ci로부터의 블록에 대해 GEO 모드/각도/변위들의 서브세트 Si(i = 0...N-1, 여기서 N은 블록 카테고리들의 총수임)가 허용된다고 가정한다.
i. 일 예에서, 블록에 대해 서브세트 Si(i = 0...N-1)가 사용되는지 서브세트 Sj(j = 0...N-1)가 사용되는지는 블록 폭과 블록 높이의 비율(예컨대, 폭/높이)에 의존할 수 있다.
ii. 일 예에서, 블록에 대해 서브세트 Si(i = 0...N-1)가 사용되는지 서브세트 Sj(j = 0...N-1)가 사용되는지는 블록 카테고리에 의존할 수 있으며, 여기서 블록 카테고리는 블록 폭과 블록 높이 사이의 관계(예컨대, 폭 > 높이, 및/또는 폭 < 높이, 및/또는 폭 = 높이)에 의해 분류될 수 있다.
iii. 일 예에서, Si(i = 0...N-1) 내의 적어도 하나의 요소가 Sj(j=0...N-1)에 포함되지 않을 수 있다.
e) JVET-Q0160_CE4_1_CommonBaseWD_w_fixes에 기초한 예시적인 사양 변경은 아래와 같으며, 새로 추가된 부분들은 굵은 밑줄 로 강조 표시되며, VVC 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 'a'의 삭제를 표기한다).
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00049
sps_X_modes_geo_enabled_flag가 1과 동일한 것은 지정된 블록들에 대해 X 개의 geo 모드가 사용된다는것을 지정한다. sps_X_modes_geo_enabled_flag가 0과 동일한 것은 지정된 블록들에 대해 Y 개의 geo 모드가 사용된다는것을 지정한다.
[비고: 위의 X 및 Y는, X=2 또는 4 또는 6 또는 8 또는 12 또는 14 또는 16; 및 Y = 32 또는 64 또는 82와 같은, 정수들일 수 있다],
7.4.10.7 병합 데이터 시맨틱스
merge_geo_partition_idx [ x0 ][ y0 ]은 기하학적 병합 모드의 기하학적 분할 방향을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_geo_partition_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_geo_partition_idx의 최댓값이 (sps_16_modes_geo_enabled_flag && cbWidth >= cbHeight) ? X : Y보다 작아야 한다는 것이 제약이다.
f) JVET-Q0160_CE4_1_CommonBaseWD_w_fixes에 기초한 다른 예시적인 사양 변경은 아래와 같다:
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamples L
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamples Cb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamples Cr
predSamplesLA L 및 predSamplesLB L 을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLA Cb , predSamplesLB Cb , predSamplesLA Cr 및 predSamplesLB Cr 을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamples L , predSamples Cb 및 predSamples Cr 은 다음과 같은 순서의 단계들에 의해 도출된다:
7. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLN L 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLN Cb 및 refPicLN Cr 로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLN L 은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLN L 과 동일하게 설정된 참조 어레이 refPicLX L , FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLN Cb 는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLN Cb 와 동일하게 설정된 참조 어레이 refPicLX Cb , FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLN Cr 은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLN Cr 과 동일하게 설정된 참조 어레이 refPicLX Cr , FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
8. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는, merge_geo_partition_idx[ xCb ][ yCb ]의 값, 및 cbHeight > cbWidth와 동일하게 설정된 변수 isNarrowBlk를 입력들로 하여, 표 36에 따라 설정된다.
9. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는, merge_geo_partition_idx[ xCb ][ yCb ]의 값, 및 cbHeight > cbWidth와 동일하게 설정된 변수 isNarrowBlk를 입력들로 하여 , 표 36[[에 명시된 바와 같은 merge_geo_partition_idx[ xCb ][ yCb ]의 값]]에 따라 설정된다.
10. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamples L [ x L  ][ y L  ](단, x L  = 0..cbWidth - 1이고 y L  = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLA L 및 predSamplesLB L , 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
11. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamples Cb [ xC ][ yC ](단, x C  = 0..cbWidth / SubWidthC - 1이고 y C  = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLA Cb 및 predSamplesLB Cb , 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
12. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamples Cr [ x C  ][ y C  ](단, x C  = 0..cbWidth / SubWidthC - 1이고 y C  = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLA Cr 및 predSamplesLB Cr , 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
13. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
도 20a는 관련 작업 초안으로부터 이제 삭제된 표 36을 도시한다.
도 20b는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 예를 도시한다. 도 20b에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 16) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다.
도 20c는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 다른 예를 도시한다. 도 20c에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 2) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다. 도 20d는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 다른 예를 도시한다. 도 20d에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 2) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다. 도 20e는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 다른 예를 도시한다. 도 20e에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 4) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다.
도 20f는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 다른 예를 도시한다. 도 20f에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 4) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다.
도 20g는 merge_geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 다른 예를 도시한다. 도 20g에 도시된 바와 같은 예에서, 모드들의 처음 N(예컨대, N = 6) 개의 모드가 사용되는지 모드들의 전체 세트가 사용되는지는 신택스 요소들에 의존할 수 있다.
21. 일 예에서, Si(i = 0...N-1) 및 Sj(j = 0...N-1) 양쪽 모두에 X(예컨대, X < N) 개의 요소가 포함될 수 있다.
22. GEO 블록에 대한 각도들의 수는 T1(예컨대, T1 = 24)보다 작을 수 있다. 디코딩 프로세스에서 사용되는 각도들의 수가 NUM_ANGLE로 표기된다고 가정하자.
a) 대안적으로, GEO 모드들의 수는 T2(예컨대, T2 = 82)보다 작을 수 있다.
i. 일 예에서, wedge_partition_idx로부터의 angleIdx 및 distanceIdx의 매핑은 GEO 모드에 대해 몇 개의 각도가 지원되는지 및/또는 각각의 각도에 대해 몇 개의 거리가 지원되는지에 의존할 수 있다.
b) 대안적으로, GEO 블록에 대한 거리들의 수는 T3(예컨대, T3 = 4 또는 3)보다 작을 수 있다.
i. 일 예에서, 하나 이상의 각도에 대한 거리들의 수는 T3보다 작을 수 있다.
1) 예를 들어, 수직 및 수평 각도들에 대한 거리들의 수는 X(예컨대, X=2)와 동일할 수 있다
c) 일 예에서, 디코딩 프로세스에서 사용되는 각도들의 수 NUM_ANGLE은 최대 angleIdx에 1을 더한 것과 동일할 수 있다.
i. 예를 들어, JVET-P0884의 작업 초안에 있는 표 8-10에 정의된 최대 angleIdx가 23과 동일한 것과 같이, NUM_ANGLE = 24이다.
ii. 다른 예로서, NUM_ANGLE < T1(예컨대, T1 = 24)이다.
d) 일 예에서, GEO 모드 코딩된 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 displacementY의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존할 수 있다.
i. 일 예에서, displacementY는 (displacementX + (NUM_ANGLE>>2)) % NUM_ANGLE로 설정될 수 있다.
e) 일 예에서, GEO 모드 코딩된 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 shiftHor의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존할 수 있다.
i. 일 예에서, 이하의 조건들 중 하나가 참인 경우 shiftHor은 0으로 설정될 수 있다. 그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
1) angleIdx % (NUM_ANGLE/2)가 (NUM_ANGLE>>2)와 동일하다
2) angleIdx % (NUM_ANGLE/2)가 0과 동일하지 않고 hwRatio ≥ 1(단, hwRatio는 H/W로 설정됨)이다.
f) 일 예에서, GEO 블록의 블렌딩 가중치 인덱스를 도출하기 위한 offsetX 및/또는 offsetY의 도출은 각도들의 수 및/또는 shiftHor의 값에 의존할 수 있다.
i. 일 예에서, shiftHor이 0과 동일한 경우, GEO 블록의 블렌딩 가중치 인덱스를 도출하기 위한 offsetY는 다음과 같이 도출될 수 있다:
Figure pct00050
ii. 일 예에서, shiftHor이 1과 동일한 경우, GEO 블록의 블렌딩 가중치 인덱스를 도출하기 위한 offsetX는 다음과 같이 도출될 수 있다:
Figure pct00051
g) 일 예에서, GEO 블록의 모션 인덱스를 도출하기 위한 offsetX 및/또는 offsetY의 도출은 각도들의 수 및/또는 shiftHor의 값에 의존할 수 있다.
i. 일 예에서, shiftHor이 0과 동일한 경우, GEO 블록의 모션 인덱스를 도출하기 위한 offsetY는 다음과 같이 도출될 수 있다:
Figure pct00052
ii. 일 예에서, shiftHor이 1과 동일한 경우, GEO 블록의 모션 인덱스를 도출하기 위한 offsetX는 다음과 같이 도출될 수 있다:
Figure pct00053
h) 일 예에서, GEO 분할 거리의 도출을 위한 룩업 테이블의 길이는 GEO 블록 디코딩 프로세스에서 사용되는 각도들의 수에 의존할 수 있다.
i. 일 예에서, JVET-P0884의 작업 초안에 있는 표 8-12에 예시된 바와 같이, GEO 분할 거리의 도출을 위한 룩업 테이블의 길이는 NUM_ANGLE과 동일할 수 있다.
1) 일 예에서, NUM_ANGLE < 24이다.
i) 일 예에서, GEO 분할 거리 도출을 위한 룩업 테이블의 값들은 그 길이를 NUM_ANGLE과 동일하게 하여 재설계될 수 있다.
1) 일 예에서, 재설계된 룩업 테이블은 JVET-P0884의 작업 초안에 있는 표 8-12의 서브세트일 수 있다.
2) 일 예에서, NUM_ANGLE = 20인 경우에 이 테이블은 아래와 같이 설계될 수 있다.
Figure pct00054
3) 일 예에서, NUM_ANGLE = 20인 경우에 이 테이블은 아래와 같이 설계될 수 있다.
Figure pct00055
4) 일 예에서, NUM_ANGLE = 20인 경우에 이 테이블은 아래와 같이 설계될 수 있다.
Figure pct00056
5) 일 예에서, NUM_ANGLE = 20인 경우에 이 테이블은 아래와 같이 설계될 수 있다.
Figure pct00057
6) 일 예에서, NUM_ANGLE = 16인 경우에 이 테이블은 아래와 같이 설계될 수 있다.
Figure pct00058
j) 일 예에서, GEO 모드에 대한 가중 샘플 예측 프로세스에 사용되는 PART1 및 PART2가 A와 동일한지 B와 동일한지는 각도 인덱스 T1 및 각도 인덱스 T2에 의존할 수 있으며, 여기서 A 및 B는 GEO 모드에 대한 가중 샘플 예측 프로세스를 위한 2 개의 입력 어레이 predSamplesLA 및 predSamplesLB를 나타내고, PART1 및 PART2는 GEO 예측된 블록의 출력된 가중 예측 샘플 값들의 도출을 위한 A 및 B의 표현들이다.
i. 일 예에서, angleIdx >=T1 && angleIdx <=T2인 경우, PART1 및 PART2는, 제각기, A 및 B와 동일하게 설정될 수 있고, 그렇지 않은 경우 PART1 및 PART2는, 제각기, B 및 A와 동일하게 설정될 수 있다.
ii. 일 예에서, T1 및 T2는 상수 값들일 수 있고 T1 < NUM_ANGLE이고 T2 <= NUM_ANGLE일 수 있다.
1) 일 예에서, NUM_ANGLE = 24인 경우에 T1 = 10이고 T2 = 20이다.
2) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 16이다.
3) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 17이다.
4) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 9이고 T2 = 16이다.
5) 일 예에서, NUM_ANGLE = 16인 경우에 T1 = 7이고 T2 = 13이다.
iii. 일 예에서, T1 및 T2는 각도들의 수에 기초하여 계산될 수 있다.
k) 일 예에서, GEO 모드에 대한 모션 벡터 저장 프로세스에서 사용되는 partIdx가 0으로 설정되는지 1로 설정되는지는 각도 인덱스 T1 및 각도 인덱스 T2에 의존할 수 있으며, 여기서 partIdx는 GEO 모션 저장을 위한 모션 벡터들을 할당하기 위한 변수 sType을 도출하는 데 사용된다.
i. 일 예에서, angleIdx >=T1 && angleIdx <=T2인 경우, partIdx는 1로 설정될 수 있고, 그렇지 않은 경우 partIdx는 0으로 설정될 수 있다. sType = abs(motionIdx) < 32 ? 2 : motionIdx <= 0 ? partIdx : 1-partIdx이고, 여기서 변수 motionIdx는 GEO 분할 거리의 도출을 위한 룩업 테이블(예를 들면, JVET-P0884의 작업 초안에 있는 표 8-12)을 사용하여 계산된다.
ii. 일 예에서, T1 및 T2는 상수 값들일 수 있고 T1 < NUM_ANGLE이고 T2 <= NUM_ANGLE일 수 있다.
1) 일 예에서, NUM_ANGLE = 24인 경우에 T1 = 10이고 T2 = 20이다.
2) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 16이다.
3) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 17이다.
4) 일 예에서, NUM_ANGLE = 20인 경우에 T1 = 9이고 T2 = 16이다.
5) 일 예에서, NUM_ANGLE = 16인 경우에 T1 = 7이고 T2 = 13이다.
iii. 일 예에서, T1 및 T2는 각도들의 수에 기초하여 계산될 수 있다.
l) 일 예에서, GEO/웨지메트릭 분할 거리의 도출을 위한 룩업 테이블의 값들(예컨대, Dis[i], i=0...NUM_ANGLE-1)은 아래의 테이블과 같이 설정될 수 있다.
1) 대안적으로, GEO/웨지메트릭 분할 거리의 도출을 위한 룩업 테이블의 값들(예컨대, Dis[i], i=0...NUM_ANGLE-1)은 아래의 테이블의 서브세트로서 설정될 수 있다.
2) 일 예에서, 3 및/또는 21과 동일한 각도 인덱스에 대한 GEO/웨지메트릭 분할 거리는 4와 동일할 수 있다.
3) 일 예에서, 9 및/또는 15와 동일한 각도 인덱스에 대한 GEO/웨지메트릭 분할 거리는 -4와 동일할 수 있다.
Figure pct00059
GEO 각도의 도출
23. GEO 모드 인덱스들 및/또는 GEO 각도 인덱스들 및/또는 GEO 거리 인덱스들 및/또는 GEO 변위들 및/또는 GEO 블렌딩 가중치들/GEO 모션 가중치들의 도출은 블록 치수들(예컨대, 블록 폭 및/또는 블록 높이를 갖는 함수들)에 의존할 수 있다.
a) 일 예에서, GEO 모드 인덱스들 및/또는 각도 인덱스들 및/또는 거리 인덱스들의 도출은 값 X에 의존할 수 있다.
i. 일 예에서, X는 log2(높이) 및/또는 log2(폭)에 의존할 수 있다.
ii. 일 예에서, X는 log2(높이) - log2(폭)일 수 있다.
iii. 일 예에서, X는 log2(높이) + log2(폭)일 수 있다.
iv. 일 예에서, X는 log2(폭) - log2(높이)일 수 있다.
v. 일 예에서, X는 abs(log2(폭) - log2(높이))일 수 있다.
vi. 일 예에서, X는 Clip3(M, N, log2(높이) - log2(폭))일 수 있으며, 여기서 M 및 N은 M=-2, N=2와 같은 상수들이다.
vii. 일 예에서, X는 Clip3(M, N, log2(폭) - log2(높이))일 수 있으며, 여기서 M 및 N은 M=-2, N=2와 같은 상수들이다.
ⅷ. 일 예에서, X는 Clip3(M, N, log2(높이) + log2(폭))일 수 있으며, 여기서 M 및 N은 M=-2, N=2와 같은 상수들이다.
ix. 일 예에서, X는 Clip3(M, N, abs(log2(높이) - log2(폭)))일 수 있으며, 여기서 M 및 N은 M=-2, N=2와 같은 상수들이다.
b) JVET-Q0268에 기초한 예시적인 사양 변경은 아래와 같고, 새로 추가된 부분들은 굵은 밑줄 로 강조 표시되며, VVC 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 'a'의 삭제를 표기한다).
8.5.7.2. geo 병합 모드에 대한 가중 샘플 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록의 폭 및 높이를 지정하는 2 개의 변수 nCbW 및 nCbH.
- 2 개의 (nCbW) x (nCbH) 어레이 predSamplesLA 및 predSamplesLB,
- 정사각형 블록들에 대한 geo 분할의 각도 인덱스를 지정하는 변수 angleSquareIdx,
- geo 분할의 거리 인덱스를 지정하는 변수 distanceIdx,
- 색상 성분 인덱스를 지정하는 변수 cIdx,
이 프로세스의 출력은 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수 nW, nH 및 nCbR은 다음과 같이 도출된다:
Figure pct00060
변수들 shift1 및 offset1은 다음과 같이 도출된다:
- 변수 shift1은 Max( 5, 17 - BitDepth)와 동일하게 설정된다.
- 변수 offset1은 1  <<  ( shift1 - 1 )과 동일하게 설정된다.
이하의 변수들의 값들은 다음과 같이 설정된다:
- hwRatio는 nH / nW로 설정된다
- hwRatioLog2는 Clip3(-2, 2, [[log2(hwRatio)]] log2(nH) - log2(nW) )로 설정된다
- angleIdx는 angleSquareIdx로 설정된다
angleSquareIdx % 6이 0과 동일하지 않은 경우
Figure pct00061
그렇지 않은 경우(angleSquareIdx % 6이 0과 동일한 경우) 그리고 hwRatioLog2가 0보다 작은 경우
Figure pct00062
- displacementX는 angleIdx로 설정된다
- displacementY는 (displacementX + 6)%24로 설정된다.
- angleIdx >=10 && angleIdx <=20인 경우, PART1 및 PART2는, 제각기, A 및 B와 동일하게 설정되고, 그렇지 않은 경우, PART1 및 PART2는, 제각기, B 및 A와 동일하게 설정된다.
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % 12가 6과 동일하다
angleIdx % 12가 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00063
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00064
- 변수들 xL 및 yL은 다음과 같이 도출된다:
Figure pct00065
- 예측 샘플의 가중치를 지정하는 변수들 weightIdx 및 weightIdxAbs는 다음과 같이 도출된다:
- 변수들 weightIdx 및 weightIdxAbs는 룩업 테이블 표 37을 사용하여 다음과 같이 계산된다:
Figure pct00066
- wValue의 값은 표 38에 따라 다음과 같이 도출된다:
Figure pct00067
비고 - (x, y)에 위치하는 샘플 wValue의 값이 또한 ( x-shiftX , y-shiftY )에 위치하는 wValue로부터 도출될 수 있다. angleIdx가 4보다 크고 12보다 작거나, angleIdx가 20보다 크고 24보다 작은 경우, shiftX는 분할 각도의 탄젠트이고 shiftY는 1이며, 그렇지 않은 경우 shiftX는 1의 분할 각도이고 shiftY는 분할 각도의 코탄젠트이다. 탄젠트(제각기, 코탄젠트) 값이 무한대인 경우, shiftX는 1(제각기, 0)이거나 shift Y는 0(제각기, 1)이다.
- 예측 샘플 값들은 다음과 같이 도출된다:
Figure pct00068
표 37 - geoc 분할 거리를 도출하기 위한 룩업 테이블 Dis.
Figure pct00069
표 38 - geo 분할 필터 가중치들을 도출하기 위한 필터 가중치 룩업 테이블 GeoFilter
Figure pct00070
c) JVET-Q0268에 기초한 예시적인 사양 변경은 아래와 같다:
8.5.7.2. geo 병합 모드에 대한 가중 샘플 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록의 폭 및 높이를 지정하는 2 개의 변수 nCbW 및 nCbH.
- 2 개의 (nCbW) x (nCbH) 어레이 predSamplesLA 및 predSamplesLB,
- 정사각형 블록들에 대한 geo 분할의 각도 인덱스를 지정하는 변수 angleSquareIdx,
- geo 분할의 거리 인덱스를 지정하는 변수 distanceIdx,
- 색상 성분 인덱스를 지정하는 변수 cIdx,
이 프로세스의 출력은 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수 nW, nH 및 nCbR은 다음과 같이 도출된다:
Figure pct00071
변수들 shift1 및 offset1은 다음과 같이 도출된다:
- 변수 shift1은 Max( 5, 17 - BitDepth)와 동일하게 설정된다.
- 변수 offset1은 1  <<  ( shift1 - 1 )과 동일하게 설정된다.
이하의 변수들의 값들은 다음과 같이 설정된다:
- hwRatio는 nH / nW로 설정된다
- hwRatioLog2는 [[log2(hwRatio)]] log2(nH) - log2(nW)로 설정된다
- angleIdx는 angleSquareIdx로 설정된다
angleSquareIdx % 8이 0과 동일하지 않은 경우
Figure pct00072
그렇지 않은 경우(angleSquareIdx % 8이 0과 동일한 경우) 그리고 hwRatioLog2가 0보다 작은 경우
Figure pct00073
- displacementX는 angleIdx로 설정된다.
- displacementY는 (displacementX + 6)%24로 설정된다.
- angleIdx >=10 && angleIdx <=20인 경우, PART1 및 PART2는, 제각기, A 및 B와 동일하게 설정되고, 그렇지 않은 경우, PART1 및 PART2는, 제각기, B 및 A와 동일하게 설정된다.
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % 12가 6과 동일하다
angleIdx % 12가 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00074
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00075
- 변수들 xL 및 yL은 다음과 같이 도출된다:
Figure pct00076
- 예측 샘플의 가중치를 지정하는 변수들 weightIdx 및 weightIdxAbs는 다음과 같이 도출된다:
- 변수들 weightIdx 및 weightIdxAbs는 룩업 테이블 표 37을 사용하여 다음과 같이 계산된다:
Figure pct00077
- wValue의 값은 표 38에 따라 다음과 같이 도출된다:
Figure pct00078
비고 - (x, y)에 위치하는 샘플 wValue의 값이 또한 ( x-shiftX , y-shiftY )에 위치하는 wValue로부터 도출될 수 있다. angleIdx가 4보다 크고 12보다 작거나, angleIdx가 20보다 크고 24보다 작은 경우, shiftX는 분할 각도의 탄젠트이고 shiftY는 1이며, 그렇지 않은 경우 shiftX는 1의 분할 각도이고 shiftY는 분할 각도의 코탄젠트이다. 탄젠트(제각기, 코탄젠트) 값이 무한대인 경우, shiftX는 1(제각기, 0)이거나 shift Y는 0(제각기, 1)이다.
- 예측 샘플 값들은 다음과 같이 도출된다:
Figure pct00079
표 37 - geoc 분할 거리를 도출하기 위한 룩업 테이블 Dis.
Figure pct00080
표 38 - geo 분할 필터 가중치들을 도출하기 위한 필터 가중치 룩업 테이블 GeoFilter
Figure pct00081
다른 코딩 툴들과 결합된 GEO
24. GEO 코딩된 블록들에 코딩 툴 X가 사용될 수 있다. 이 경우에, X 및 GEO의 사용/부가 정보의 표시들이 양쪽 모두 시그널링될 수 있다.
a) 일 예에서, X는 SBT일 수 있다.
b) 일 예에서, X는 CIIP일 수 있다.
c) 일 예에서, X는 MMVD일 수 있다.
d) 코딩 툴 X가 사용될 때와 사용되지 않을 때 GEO 프로세스가 상이할 수 있다. 예를 들어, 코딩 툴 X가 사용될 때는 GEO 방향들/거리들이 사용될 수 있고, 코딩 툴 X가 사용되지 않을 때는 GEO 방향들/거리들의 서브세트가 사용될 수 있다.
25. 필터링 프로세스를 적용할지 여부/어떻게 적용할지는 GEO의 사용에 의존할 수 있다.
a) 일 예에서, 디블로킹 프로세스 동안의 경계 필터링 강도(예를 들면, bS)의 값은 블록이 GEO로 코딩되어 있는지 여부에 의존할 수 있다.
b) 일 예에서, 블록 에지가 변환 블록 에지이고 샘플 p0 또는 q0이 MergeGeoFlag가 1과 동일한 코딩 블록에 있는 경우, bS의 값은 T(예컨대, T=2)와 동일하게 설정될 수 있다.
c) 일 예에서, GEO 블록 내의 디블로킹 에지들(예를 들면, edgeFlags)의 값은 결코 2와 동일하지 않을 수 있다.
i. 일 예에서, GEO 블록 내의 디블로킹 에지들(예를 들면, edgeFlags)의 값은 2와 동일할 수 있다.
ii. 일 예에서, 블록 에지가 주어지면, 샘플 p0 또는 q0이 MergeGeoFlag가 1과 동일한 코딩 블록에 있는 경우, bS의 값은 모션 벡터들 및/또는 참조 픽처들에 의존할 수 있다.
추가적인 실시예들
아래는 VVC 명세에 적용될 수 있는 예시적인 실시예들이다. 수정 사항들은 GEO 작업 초안(JVET-P0884_P0885_WD (on_top_of_JVET-O2001-vE)_r2)의 CE 앵커에 기초한다. 새로 추가된 부분들은 굵은 밑줄친 텍스트로 강조 표시되며, VVC 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 'a'의 삭제를 표기한다).
5.1. 예시적인 실시예 #1: GEO 모드 제약 1
7.3.8.7 병합 데이터 신택스
Figure pct00082
Figure pct00083
Figure pct00084
5.2. 예시적인 실시예 #2: GEO 모드 제약 2
7.3.8.7 병합 데이터 신택스
Figure pct00085
Figure pct00086
5.3. 예시적인 실시예 #3: 블록 크기 의존적 GEO 모드 선택 1
8.5.7 웨지 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 wedge_merge_mode[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr을 포함하는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 및 0과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 및 1과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 및 2와 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. wedge_partition_idx'[ xCb ][ yCb ]의 값은, 표 8-xx 및 표 8-xxx에 명시된 바와 같이, wedge_partition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
3. 웨지 병합 모드의 분할 각도 및 분할 거리 angleIdx 및 distanceIdex는 표 8-10에 명시된 바와 같이 wedge_partition_idx [ xCb ][ yCb ]의 값에 따라 설정된다.
4. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
7. 8.5.7.3 절에 명시된 웨지 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
표 8-xx - 블록 폭 및 블록 높이에 기초한 MaxGEOMode의 매핑 테이블.
(설명: 아래의 테이블은 블록 카테고리(0...k)를 갖는 GEO 블록에 허용되는 GEO 모드들의 최대 수가 MaxGEOMode[i](i=0...k)와 동일하고 블록 카테고리가 블록 폭 및 블록 높이에 의해 결정될 수 있는 경우에 대한 예이다
Figure pct00087
표 8-xxx - wedge_partition_idx 값에 기초한 wedge_partition_idx' 값들의 매핑 테이블
Figure pct00088
도 21은 wedge_partition_idx’ 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 대응하는 표 8-10을 도시한다.
표 9-77 - 신택스 요소들 및 연관된 이진화들
Figure pct00089
5.4. 예시적인 실시예 #4: 블록 크기 의존적 GEO 모드 선택 2
8.5.7 웨지 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 wedge_merge_mode[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
8. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr을 포함하는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 및 0과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 및 1과 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 및 2와 동일하게 설정된 변수 cIdx를 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
9. wedge_partition_idx'[ xCb ][ yCb ]의 값은, 표 8-xx에 명시된 바와 같이, wedge_partition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
10. 웨지 병합 모드의 분할 각도 및 분할 거리 angleIdx 및 distanceIdex는 표 8-10에 명시된 바와 같이 wedge_partition_idx [ xCb ][ yCb ]의 값에 따라 설정된다.
11. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
12. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
13. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 웨지 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
14. 8.5.7.3 절에 명시된 웨지 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
표 8-xx - wedge_partition_idx 값에 기초한 wedge_partition_idx' 값들의 매핑 테이블
(설명: 아래의 테이블은 블록 카테고리(0...k)를 갖는 GEO 블록에 허용되는 GEO 모드들의 최대 수가 상수 Max와 동일한 경우에 대한 예이다
Figure pct00090
도 22는 wedge_partition_idx’ 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 대응하는 표 8-10을 도시한다.
표 9-77 - 신택스 요소들 및 연관된 이진화들
Figure pct00091
5.5. 예시적인 실시예 #5: 20 개의 각도가 지원되는 64 개의 GEO 모드
아래의 예에서, NUM_ANGLE, T1 및 T2는 상수 값들일 수 있으며, 표 8-10 및 표 8-12는 그에 따라 변경된다.
도 23a는 관련 작업 초안으로부터 이제 삭제된, wedge_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 8-10의 이전 버전을 도시한다. 도 23b는 wedge_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 8-10의 예를 도시한다. 도 23b에 도시된 바와 같은 표 8-10은 NUM_ANGLE = 20이고 angleIdx = 0/5/10/15에 대해 단지 2 개의 거리가 허용되는 64 개의 모드의 예이다.
아래의 설명에서, 새로 추가된 부분들은 굵은 밑줄친 텍스트로 강조 표시되며, 관련 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 'a'의 삭제를 표기한다).
8.5.7.2 웨지 병합 모드에 대한 가중 샘플 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 코딩 블록의 폭 및 높이를 지정하는 2 개의 변수 nCbW 및 nCbH.
- 2 개의 (nCbW) x (nCbH) 어레이 predSamplesLA 및 predSamplesLB,
- 웨지 분할의 각도 인덱스를 지정하는 변수 angleIdx,
- 웨지 분할의 거리 인덱스를 지정하는 변수 distanceIdx,
- 색상 성분 인덱스를 지정하는 변수 cIdx,
이 프로세스의 출력은 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수 bitDepth는 다음과 같이 도출된다:
- cIdx가 0과 동일한 경우, bitDepth는 BitDepthY와 동일하게 설정된다.
- cIdx가 0과 동일한 경우, nW 및 nH는, 제각기, nCbW 및 nCbH와 동일하게 설정되고, 그렇지 않은 경우(cIdx가 0과 동일하지 않은 경우) nW 및 nH는, 제각기, nCbW x SubWidthC 및 nCbH x SubHeightC와 동일하게 설정된다.
- cIdx가 0과 동일한 경우, subW와 subH는 양쪽 모두 1로 설정되고, 그렇지 않은 경우(cIdx가 0과 동일하지 않은 경우) subW와 subH는, 제각기, SubWidthC 및 SubHeightC와 동일하게 설정된다.
- 그렇지 않은 경우, bitDepth는 BitDepthC와 동일하게 설정된다.
변수들 shift1 및 offset1은 다음과 같이 도출된다:
- 변수 shift1은 Max( 5, 17 - bitDepth)와 동일하게 설정된다.
- 변수 offset1은 1  <<  ( shift1 - 1 )과 동일하게 설정된다.
이하의 변수들의 값들은 다음과 같이 설정된다:
- hwRatio는 nH / nW로 설정된다
- displacementX는 angleIdx로 설정된다
- displacementY는 (displacementX + [[6]] (NUM_ANGLE>>2) )%[[24]] NUM_ANGLE 로 설정된다
- angleIdx >[[=10]] T1 && angleIdx <[[=20]] T2 인 경우, PART1 및 PART2는, 제각기, A 및 B와 동일하게 설정되고, 그렇지 않은 경우, PART1 및 PART2는, 제각기, B 및 A와 동일하게 설정된다.
- rho는 표 8-12에 명시된 Dis로 표기된 룩업 테이블들을 사용하여 다음 값으로 설정된다:
Figure pct00092
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % [[12]] (NUM_ANGLE/2) 가 [[6]] (NUM_ANGLE>>2) 와 동일하다
angleIdx % [[12]] (NUM_ANGLE/2) 가 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00093
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00094
예측 샘플 값들 pbSamples[ x ][ y ](단, x = 0..nCbW - 1이고 y = 0..nCbH - 1임)는 다음과 같은 순서의 단계들에 따라 설정된다:
- 변수들 weightIdx 및 weightIdxAbs는 룩업 테이블 표 8-12를 사용하여 다음과 같이 계산된다:
Figure pct00095
- sampleWeight의 값은 표 8-13에 따라 다음과 같이 도출된다:
Figure pct00096
비고 - 샘플 sampleWeightL[ x ][ y ]의 값이 또한 sampleWeightL[ x -shiftX][ y-shiftY ]로부터 도출될 수 있다. angleIdx가 4보다 크고 12보다 작거나, angleIdx가 20보다 크고 24보다 작은 경우, shiftX는 분할 각도의 탄젠트이고 shiftY는 1이며, 그렇지 않은 경우 shiftX는 1의 분할 각도이고 shiftY는 분할 각도의 코탄젠트이다. 탄젠트(제각기, 코탄젠트) 값이 무한대인 경우, shiftX는 1(제각기, 0)이거나 shift Y는 0(제각기, 1)이다.
- 예측 샘플 값 pbSamples[ x ][ y ]는 다음과 같이 도출된다:
Figure pct00097
표 8-12 웨지메트릭 분할 거리를 도출하기 위한 룩업 테이블 Dis.
아래의 테이블이 관련 작업 초안으로부터 이제 삭제된다.
Figure pct00098
관련 작업 초안에서 변경된 테이블의 예들은 아래에 나와 있다.
Figure pct00099
일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 16이며, 표 8-12는 아래와 같이 설정된다.
Figure pct00100
Figure pct00101
일 예에서, NUM_ANGLE = 20인 경우에 T1 = 8이고 T2 = 17이며, 표 8-12는 아래와 같이 설정된다.
Figure pct00102
Figure pct00103
일 예에서, NUM_ANGLE = 20인 경우에 T1 = 9이고 T2 = 16이며, 표 8-12는 아래와 같이 설정된다.
Figure pct00104
Figure pct00105
일 예에서, NUM_ANGLE = 20인 경우에 T1 = 9이고 T2 = 16이며, 표 8-12는 아래와 같이 설정된다.
Figure pct00106
Figure pct00107
일 예에서, NUM_ANGLE = 16인 경우에 T1 = 7이고 T2 = 13이며, 표 8-12는 아래와 같이 설정된다.
Figure pct00108
표 8-13 웨지 분할 필터 가중치들을 도출하기 위한 필터 가중치 룩업 테이블 WedgeFilter
Figure pct00109
Figure pct00110
8.5.7.3. 웨지 병합 모드에 대한 모션 벡터 저장 프로세스
이 프로세스는 MergeWedgeFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
수평 방향 및 수직 방향으로 현재 코딩 블록 내의 4x4 블록들의 수를 지정하는 변수들 numSbX 및 numSbY는 numSbX = cbWidth >> 2 및 numSbY = cbHeight >> 2와 동일하게 설정된다.
이하의 변수들의 값은 다음과 같이 설정된다:
- displacementX는 angleIdx로 설정되고, displacementY는 (displacementX + [[6]] (NUM_ANGLE>>2) )%[[24]] NUM_ANGLE 로 설정된다
- hwRatio는 nCbH / nCbW와 동일하게 설정된다
이하의 조건들 중 하나가 참인 경우, 변수 shiftHor은 0과 동일하게 설정된다:
angleIdx % [[12]] (NUM_ANGLE/2) 는 [[8]] (NUM_ANGLE>>2) 와 동일하다
angleIdx % [[12]] (NUM_ANGLE/2) 는 0과 동일하지 않고 hwRatio ≥ 1이다
그렇지 않은 경우, shiftHor은 1과 동일하게 설정된다.
partIdx는 angleIdx >[[=10]] T1 && angleIdx <[[=20]] T2 ? 1 : 0으로 설정된다.
shiftHor이 0과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00111
그렇지 않고, shiftHor이 1과 동일한 경우, offsetX 및 offsetY는 다음과 같이 도출된다:
Figure pct00112
변수 rho의 값은 아래의 방정식에 따라 그리고 표 8-12에 명시된 Dis 룩업 테이블에 따라 도출된다:
Figure pct00113
motionOffset은, 표 8-11 및 표 8-12에 명시된, Dis로 표기된 룩업 테이블들을 사용하여 다음 값과 동일하게 설정된다:
Figure pct00114
서브블록 인덱스 ( xSbIdx, ySbIdx )(단, xSbIdx = 0..numSbX - 1이고, ySbIdx = 0..numSbY - 1임)에 있는 각각의 4x4 서브블록에 대해, 다음이 적용된다:
변수 motionIdx는 룩업 테이블 표 8-12를 사용하여 다음과 같이 계산된다:
Figure pct00115
변수 sType은 다음과 같이 도출된다:
Figure pct00116
아래는 VVC 명세에 적용될 수 있는 예시적인 실시예들이다. 수정 사항들은 GEO 작업 초안(JVET-P0884_P0885_WD (on_top_of_JVET-O2001-vE)_r2)의 CE 앵커에 기초한다. 새로 추가된 부분들은 굵은 밑줄친 텍스트로 강조 표시되며, VVC 작업 초안으로부터 삭제된 부분들은 이중 대괄호들로 표시되어 있다(예를 들면, [[a]]는 문자 'a'의 삭제를 표기한다).
예시적인 실시예: GEO 모드 제약
7.3.9.7 병합 데이터 신택스
Figure pct00117
예시적인 실시예: GEO 모드 제약
7.3.9.7 병합 데이터 신택스
Figure pct00118
예시적인 실시예: GEO 모드 제약
7.3.9.7 병합 데이터 신택스
Figure pct00119
예시적인 실시예: GEO 모드 제약
7.3.9.7 병합 데이터 신택스
Figure pct00120
예시적인 실시예: 블록 크기 의존적 GEO 모드 선택
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. merge_geo_parition_idx’[ xCb ][ yCb ]의 값은, 표 xx에 명시된 바와 같이, merge_geo_parition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
3. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는 표 36에 명시된 바와 같이 merge_geo_parition_idx [ xCb ][ yCb ]의 값에 따라 설정된다.
4. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
7. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
도 24a는 geo_partition_idx 값에 기초한 geo_partition_idx' 값들의 매핑 테이블을 나타내는 테이블을 도시한다. 도 24b는 관련 작업 초안으로부터 이제 삭제된 표 36의 이전 버전을 도시한다. 도 24c는 geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36을 도시한다.
표 123 - 신택스 요소들 및 연관된 이진화들
Figure pct00121
예시적인 실시예: 블록 크기 의존적 GEO 모드 선택
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는 표 36에 명시된 바와 같이 merge_geo_parition_idx[ xCb ][ yCb ]의 값에 따라 설정된다.
3. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
4. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
도 24b에 도시된, geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전이 관련 작업 초안으로부터 이제 삭제된다. 도 24d는 geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36을 도시한다. hwRatio = cbHeight > cbWidth ? 1: 0
표 123 - 신택스 요소들 및 연관된 이진화들
Figure pct00122
예시적인 실시예: 블록 크기 의존적 GEO 모드 선택
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00123
sps_16_modes_geo_enabled_flag가 1과 동일한 것은 16 개의 geo 모드가 사용된다는것을 지정한다.
sps_16_modes_geo_enabled_flag가 0과 동일한 것은 32 개의 geo 모드가 사용된다는것을 지정한다.
7.4.10.7 병합 데이터 시맨틱스
merge_geo_partition_idx[ x0 ][ y0 ]은 기하학적 병합 모드의 기하학적 분할 방향을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_geo_partition_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_geo_partition_idx의 최댓값이 sps_16_modes_geo_enabled_flag ? 16 : 32보다 작아야 한다는 것이 제약이다.
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. merge_geo_parition_idx’[ xCb ][ yCb ]의 값은, 표 xx에 명시된 바와 같이, merge_geo_parition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
3. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는 표 36에 명시된 바와 같이 merge_geo_parition_idx [ xCb ][ yCb ]의 값에 따라 설정된다.
4. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
7. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
이 예에서, 도 24a에 도시된 바와 같은 geo_partition_idx 값에 기초한 geo_partition_idx' 값들의 매핑 테이블이 사용된다. 작업 초안으로부터 삭제된, geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전이 도 24b에 도시되어 있다. 도 24e는 geo_partition_idx 값에 기초한 angleIdx 및 distanceIdx 값들의 명세를 나타내는 표 36을 도시한다.
표 123 - 신택스 요소들 및 연관된 이진화들
Figure pct00124
예시적인 실시예: 블록 크기 의존적 GEO 모드 선택
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00125
sps_16_modes_geo_enabled_flag가 1과 동일한 것은 지정된 블록들에 대해 16 개의 geo 모드가 사용된다는것을 지정한다.
sps_16_modes_geo_enabled_flag가 0과 동일한 것은 지정된 블록들에 대해 32 개의 geo 모드가 사용된다는것을 지정한다.
7.4.10.7 병합 데이터 시맨틱스
merge_geo_partition_idx[ x0 ][ y0 ]은 기하학적 병합 모드의 기하학적 분할 방향을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_geo_partition_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_geo_partition_idx의 최댓값이 (sps_16_modes_geo_enabled_flag && cbWidth >= cbHeight) ? 16 : 32보다 작아야 한다는 것이 제약이다.
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
1. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
2. merge_geo_parition_idx’[ xCb ][ yCb ]의 값은, 표 xx에 명시된 바와 같이, merge_geo_parition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
3. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는 표 36에 명시된 바와 같이 merge_geo_parition_idx [ xCb ][ yCb ]의 값에 따라 설정된다.
4. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
5. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
6. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
7. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
이 예에서, 도 24a에 도시된 바와 같은 geo_partition_idx 값에 기초한 geo_partition_idx' 값들의 매핑 테이블이 사용된다. 작업 초안으로부터 삭제된, geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전이 도 24b에 도시되어 있다. geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36이 도 24e에 도시되어 있다.
표 123 - 신택스 요소들 및 연관된 이진화들
Figure pct00126
예시적인 실시예: 블록 크기 의존적 GEO 모드 선택
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00127
sps_16_modes_geo_enabled_flag가 1과 동일한 것은 지정된 블록들에 대해 16 개의 geo 모드가 사용된다는것을 지정한다.
sps_16_modes_geo_enabled_flag가 0과 동일한 것은 지정된 블록들에 대해 32 개의 geo 모드가 사용된다는것을 지정한다.
7.4.10.7 병합 데이터 시맨틱스
merge_geo_partition_idx[ x0 ][ y0 ]은 기하학적 병합 모드의 기하학적 분할 방향을 지정한다. 어레이 인덱스들 x0, y0은 픽처의 좌측 상단 루마 샘플을 기준으로 고려된 코딩 블록의 좌측 상단 루마 샘플의 위치 ( x0 , y0 )을 지정한다.
merge_geo_partition_idx[ x0 ][ y0 ]이 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
merge_geo_partition_idx의 최댓값이 (sps_16_modes_geo_enabled_flag && cbWidth >= cbHeight) ? 16 : 32보다 작아야 한다는 것이 제약이다.
8.5.7 geo 인터 블록들에 대한 디코딩 프로세스
8.5.7.1 일반
이 프로세스는 MergeGeoFlag[ xCb ][ yCb ]가 1과 동일한 경우 코딩 유닛을 디코딩할 때 호출된다.
이 프로세스에 대한 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 루마 샘플을 기준으로 현재 코딩 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCb, yCb ),
- 루마 샘플 단위로 현재 코딩 블록의 폭을 지정하는 변수 cbWidth,
- 루마 샘플 단위로 현재 코딩 블록의 높이를 지정하는 변수 cbHeight,
- 1/16 분수 샘플 정확도의 루마 모션 벡터들 mvA 및 mvB,
- 크로마 모션 벡터들 mvCA 및 mvCB,
- 참조 인덱스들 refIdxA 및 refIdxB,
- 예측 리스트 플래그들 predListFlagA 및 predListFlagB.
이 프로세스의 출력들은 다음과 같다:
- 루마 예측 샘플들의 (cbWidth)x(cbHeight) 어레이 predSamplesL
- Cb 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCb
- Cr 성분에 대한 크로마 예측 샘플들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이 predSamplesCr
predSamplesLAL 및 predSamplesLBL을 예측된 루마 샘플 값들의 (cbWidth)x(cbHeight) 어레이들이라고 하고, predSamplesLACb, predSamplesLBCb, predSamplesLACr 및 predSamplesLBCr을 예측된 크로마 샘플 값들의 (cbWidth / SubWidthC)x(cbHeight / SubHeightC) 어레이들이라고 하자.
predSamplesL, predSamplesCb 및 predSamplesCr은 다음과 같은 순서의 단계들에 의해 도출된다:
8. N이 A 및 B 각각인 경우, 다음이 적용된다:
- 루마 샘플들의 정렬된 2차원 어레이 refPicLNL 및 크로마 샘플들의 2 개의 정렬된 2차원 어레이 refPicLNCb 및 refPicLNCr로 구성되는 참조 픽처는 predListFlagN과 동일하게 설정된 X 및 refIdxN과 동일하게 설정된 refIdxX를 입력으로 하여 8.5.6.2 절에 명시된 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNL은 루마 위치( xCb, yCb ), cbWidth와 동일하게 설정된 루마 코딩 블록 폭 sbWidth, cbHeight와 동일하게 설정된 루마 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvN과 동일하게 설정된 모션 벡터 mvLX 및 refPicLNL과 동일하게 설정된 참조 어레이 refPicLXL, FALSE와 동일하게 설정된 변수 bdofFlag, 0과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCb는 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCb와 동일하게 설정된 참조 어레이 refPicLXCb, FALSE와 동일하게 설정된 변수 bdofFlag, 1과 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
- 어레이 predSamplesLNCr은 루마 위치( xCb, yCb ), cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 sbWidth, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 sbHeight, ( 0, 0 )과 동일하게 설정된 모션 벡터 오프셋 mvOffset, mvCN과 동일하게 설정된 모션 벡터 mvLX, 및 refPicLNCr과 동일하게 설정된 참조 어레이 refPicLXCr, FALSE와 동일하게 설정된 변수 bdofFlag, 2와 동일하게 설정된 변수 cIdx, 및 RefPicScale[ predListFlagN ][ refIdxN ]을 입력들로 하여 8.5.6.3 절에 명시된 분수 샘플 보간 프로세스를 호출하는 것에 의해 도출된다.
9. sps_16_modes_geo_enabled_flag가 1과 동일하고 cbWidth가 cbHeight보다 크거나 같으며 merge_geo_parition_idx[ xCb ][ yCb ]가 X(예를 들어, X=13)보다 큰 경우, merge_geo_parition_idx’[ xCb ][ yCb ]의 값은 다음에 따라 설정된다,
- merge_geo_parition_idx[ xCb ][ yCb ]가 XX(예를 들어, XX=14)와 동일한 경우, merge_geo_parition_idx[ xCb ][ yCb ]는 YY(예를 들어, YY=10)로 설정된다.
- merge_geo_parition_idx[ xCb ][ yCb ]가 XXX(예를 들어, XX=15)와 동일한 경우, merge_geo_parition_idx[ xCb ][ yCb ]는 YYY(예를 들어, YYY=24)로 설정된다.
그렇지 않은 경우, merge_geo_parition_idx’[ xCb ][ yCb ]의 값은, 표 xx에 명시된 바와 같이, merge_geo_parition_idx[ xCb ][ yCb ]의 값 및 코딩 블록 폭 cbWidth 및 코딩 블록 높이 cbHeight에 따라 설정된다.
10. geo 병합 모드의 분할 각도 및 분할 거리 변수 angleIdx 및 distanceIdx는 표 36에 명시된 바와 같이 merge_geo_parition_idx’[ xCb ][ yCb ]의 값에 따라 설정된다.
11. 현재 루마 코딩 블록 내부의 예측 샘플들 predSamplesL[ xL ][ yL ](단, xL = 0..cbWidth - 1이고 yL = 0..cbHeight - 1임)은 cbWidth와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLAL 및 predSamplesLBL, 및 변수들 angleIdx 및 distanceIdx, 및 0과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
12. 현재 크로마 성분(Cb) 코딩 블록 내부의 예측 샘플들 predSamplesCb[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACb 및 predSamplesLBCb, 및 변수들 angleIdx 및 distanceIdx, 및 1과 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
13. 현재 크로마 성분(Cr) 코딩 블록 내부의 예측 샘플들 predSamplesCr[ xC ][ yC ](단, xC = 0..cbWidth / SubWidthC - 1이고 yC = 0..cbHeight / SubHeightC - 1임)은 cbWidth / SubWidthC와 동일하게 설정된 코딩 블록 폭 nCbW, cbHeight / SubHeightC와 동일하게 설정된 코딩 블록 높이 nCbH, 샘플 어레이들 predSamplesLACr 및 predSamplesLBCr, 및 변수들 angleIdx 및 distanceIdx, 및 2와 동일한 cIdx를 입력들로 하여 8.5.7.2 절에 명시된 geo 병합 모드에 대한 가중 샘플 예측 프로세스를 호출하는 것에 의해 도출된다.
14. 8.5.7.3 절에 명시된 geo 병합 모드에 대한 모션 벡터 저장 프로세스는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight, 분할 방향 angleIdx 및 distanceIdx, 루마 모션 벡터들 mvA 및 mvB, 참조 인덱스들 refIdxA 및 refIdxB, 및 예측 리스트 플래그들 predListFlagA 및 predListFlagB를 입력들로 하여 호출된다.
이 예에서, 도 24a에 도시된 바와 같은 geo_partition_idx 값에 기초한 geo_partition_idx' 값들의 매핑 테이블이 사용된다. 작업 초안으로부터 삭제된, geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36의 이전 버전이 도 24b에 도시되어 있다. 도 24e는 geo_partition_idx 값에 기초하여 angleIdx 및 distanceIdx 값들을 지정하는 것을 나타내는 표 36을 도시한다.
표 123 - 신택스 요소들 및 연관된 이진화들
Figure pct00128
개시된 기술의 예시적인 구현들
도 13a는 비디오 프로세싱 장치(1300)의 블록 다이어그램이다. 장치(1300)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(1300)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(1300)는 하나 이상의 프로세서(1302), 하나 이상의 메모리(1304) 및 비디오 프로세싱 하드웨어(1306)를 포함할 수 있다. 프로세서(들)(1302)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(1304)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(1306)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있으며, 부분적으로 또는 전체적으로 프로세서들(1302)의 일부(예를 들면, 그래픽 프로세서 코어(GPU) 또는 다른 신호 프로세싱 회로)일 수 있다.
본 문서에서, "비디오 프로세싱"이라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축 해제를 지칭할 수 있다. 예를 들어, 비디오의 픽셀 표현으로부터 대응하는 비트스트림 표현으로 또는 그 반대로 변환하는 동안 비디오 압축 알고리즘들이 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이, 비트스트림 내에서 동일 위치에 있거나 상이한 위치들에 분산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록은 변환 및 코딩된 오차 잔차 값들로 그리고 또한 비트스트림 내의 헤더들 및 다른 필드들 내의 비트들을 사용하여 인코딩될 수 있다.
개시된 방법들 및 기술들이 본 문서에 개시된 기술들의 사용을 허용하는 것에 의해 스마트폰들, 랩톱들, 데스크톱들, 및 유사한 디바이스들과 같은 비디오 프로세싱 디바이스들 내에 통합된 비디오 인코더 및/또는 디코더 실시예들에 유익할 것이라는 것이 이해될 것이다.
도 13b는 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(1310)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(1310)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(1310)은 비디오 콘텐츠를 수신하기 위한 입력(1312)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(1312)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(1310)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(1314)를 포함할 수 있다. 코딩 컴포넌트(1314)는 비디오의 코딩된 표현을 생성하기 위해 입력(1312)으로부터 코딩 컴포넌트(1314)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(1314)의 출력은 저장되거나, 컴포넌트(1316)에 의해 표현된 바와 같은, 연결된 통신을 통해 전송될 수 있다. 입력(1312)에 수신되는 비디오의 저장되거나 통신되는 비트스트림 표현(또는 코딩된 표현)은 디스플레이 인터페이스(1320)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(1318)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 동작들이 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들이 인코더에서 사용되고 코딩의 결과들을 반대로 하는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 인에이블시키도록 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 인코더는 비디오 블록의 프로세싱에서 툴 또는 모드를 사용하거나 구현할 것이지만, 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정하는 것은 아닐 수 있다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은 의사 결정 또는 결정에 기초하여 비디오 프로세싱 툴 또는 모드가 인에이블될 때 이를 사용할 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 디코더는 비디오 프로세싱 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 지식을 사용하여 비트스트림을 프로세싱할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 디스에이블시키도록 의사 결정하거나 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는 데 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 디코더는 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 비트스트림이 수정되지 않았다는 지식을 사용하여 비트스트림을 프로세싱할 것이다.
도 14는 예시적인 비디오 프로세싱 방법(1400)의 플로차트이다. 방법(1400)은, 1402에서, 비주얼 미디어 데이터의 현재 비디오 블록과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 여기서, 변환 동안, 현재 비디오 블록의 하나 이상의 치수 및/또는 현재 비디오 블록의 하나 이상의 치수의 수학적 함수가 적어도 하나의 임계 조건을 달성한다는 결정에 적어도 부분적으로 기초하여 기하학적 분할 모드의 사용이 선택적으로 인에이블되거나 디스에이블된다.
도 15는 본 개시의 기술들을 활용할 수 있는 예시적인 비디오 코딩 시스템(100)을 예시하는 블록 다이어그램이다.
도 15에 도시된 바와 같이, 비디오 코딩 시스템(100)은 소스 디바이스(110) 및 목적지 디바이스(120)를 포함할 수 있다. 비디오 인코딩 디바이스라고 지칭될 수 있는 소스 디바이스(110)는 인코딩된 비디오 데이터를 생성한다. 비디오 디코딩 디바이스라고 지칭될 수 있는 목적지 디바이스(120)는 소스 디바이스(110)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다.
소스 디바이스(110)는 비디오 소스(112), 비디오 인코더(114), 및 입출력(I/O) 인터페이스(116)를 포함할 수 있다.
비디오 소스(112)는 비디오 캡처 디바이스와 같은 소스, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기 위한 인터페이스, 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 그러한 소스들의 조합을 포함할 수 있다. 비디오 데이터는 하나 이상의 픽처를 포함할 수 있다. 비디오 인코더(114)는 비디오 소스(112)로부터의 비디오 데이터를 인코딩하여 비트스트림을 생성한다. 비트스트림은 비디오 데이터의 코딩된 표현을 형성하는 비트 시퀀스를 포함할 수 있다. 비트스트림은 코딩된 픽처들 및 연관된 데이터를 포함할 수 있다. 코딩된 픽처는 픽처의 코딩된 표현이다. 연관된 데이터는 시퀀스 파라미터 세트들, 픽처 파라미터 세트들, 및 다른 신택스 구조들을 포함할 수 있다. I/O 인터페이스(116)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 인코딩된 비디오 데이터는 I/O 인터페이스(116)를 통해 네트워크(130a)를 거쳐 목적지 디바이스(120)로 곧바로 전송될 수 있다. 인코딩된 비디오 데이터는 또한 목적지 디바이스(120)에 의한 액세스를 위해 저장 매체/서버(130b)에 저장될 수 있다.
목적지 디바이스(120)는 I/O 인터페이스(126), 비디오 디코더(124), 및 디스플레이 디바이스(122)를 포함할 수 있다.
I/O 인터페이스(126)는 수신기 및/또는 모뎀을 포함할 수 있다. I/O 인터페이스(126)는 소스 디바이스(110) 또는 저장 매체/서버(130b)로부터 인코딩된 비디오 데이터를 취득할 수 있다. 비디오 디코더(124)는 인코딩된 비디오 데이터를 디코딩할 수 있다. 디스플레이 디바이스(122)는 디코딩된 비디오 데이터를 사용자에게 디스플레이할 수 있다. 디스플레이 디바이스(122)는 목적지 디바이스(120)와 통합될 수 있거나, 또는 외부 디스플레이 디바이스와 인터페이싱하도록 구성된 목적지 디바이스(120)의 외부에 있을 수 있다.
비디오 인코더(114) 및 비디오 디코더(124)는, HEVC(High Efficiency Video Coding) 표준, VVM(Versatile Video Coding) 표준 및 다른 현재 및/또는 추가 표준들과 같은, 비디오 압축 표준에 따라 작동할 수 있다.
도 16은 도 15에 예시된 시스템(100) 내의 비디오 인코더(114)일 수 있는, 비디오 인코더(200)의 예를 예시하는 블록 다이어그램이다.
비디오 인코더(200)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 16의 예에서, 비디오 인코더(200)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 인코더(200)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
비디오 인코더(200)의 기능 컴포넌트들은 분할 유닛(201), 모드 선택 유닛(203), 모션 추정 유닛(204), 모션 보상 유닛(205) 및 인트라 예측 유닛(206)을 포함할 수 있는 예측 유닛(202), 잔차 생성 유닛(207), 변환 유닛(208), 양자화 유닛(209), 역양자화 유닛(210), 역변환 유닛(211), 재구성 유닛(212), 버퍼(213), 및 엔트로피 인코딩 유닛(214)을 포함할 수 있다.
다른 예들에서, 비디오 인코더(200)는 더 많은, 더 적은 또는 상이한 기능 컴포넌트들을 포함할 수 있다. 예에서, 예측 유닛(202)은 인트라 블록 복사(intra block copy, IBC) 유닛을 포함할 수 있다. IBC 유닛은 적어도 하나의 참조 픽처가 현재 비디오 블록이 위치하는 픽처인 IBC 모드에서 예측을 수행할 수 있다.
게다가, 모션 추정 유닛(204) 및 모션 보상 유닛(205)과 같은 일부 컴포넌트들은 고도로 통합될 수 있지만, 설명 목적으로 도 16의 예에서 개별적으로 표현되어 있다.
분할 유닛(201)은 픽처를 하나 이상의 비디오 블록으로 분할할 수 있다. 비디오 인코더(200) 및 비디오 디코더(300)는 다양한 비디오 블록 크기들을 지원할 수 있다.
모드 선택 유닛(203)은, 예를 들어, 오차 결과들에 기초하여, 코딩 모드들, 즉 인트라(intra) 또는 인터(inter) 중 하나를 선택할 수 있고, 결과적인 인트라 코딩된 또는 인터 코딩된 블록을 잔차 생성 유닛(207)에 제공하여 잔차 블록 데이터를 생성하도록 하고 재구성 유닛(212)에 제공하여 참조 픽처로서 사용하기 위한 인코딩된 블록을 재구성하도록 할 수 있다. 일부 예들에서, 모드 선택 유닛(203)은 예측이 인터 예측 신호 및 인트라 예측 신호에 기초하는 CIIP(combination of intra and inter predication) 모드를 선택할 수 있다. 모드 선택 유닛(203)은 또한 인터 예측의 경우에 블록에 대한 모션 벡터의 분해능(예를 들면, 서브픽셀 또는 정수 픽셀 정밀도)을 선택할 수 있다.
현재 비디오 블록에 대한 인터 예측을 수행하기 위해, 모션 추정 유닛(204)은 버퍼(213)로부터의 하나 이상의 참조 프레임을 현재 비디오 블록과 비교하는 것에 의해 현재 비디오 블록에 대한 모션 정보를 생성할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록과 연관된 픽처 이외의 버퍼(213)로부터의 픽처들의 디코딩된 샘플들 및 모션 정보에 기초하여 현재 비디오 블록에 대한 예측된 비디오 블록을 결정할 수 있다.
모션 추정 유닛(204) 및 모션 보상 유닛(205)은, 예를 들어, 현재 비디오 블록이 I 슬라이스, P 슬라이스, 또는 B 슬라이스에 있는지에 따라, 현재 비디오 블록에 대해 상이한 동작들을 수행할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 단방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 또는 리스트 1의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록을 포함하는 리스트 0 또는 리스트 1 내의 참조 픽처를 나타내는 참조 인덱스 및 현재 비디오 블록과 참조 비디오 블록 사이의 공간적 변위를 나타내는 모션 벡터를 생성할 수 있다. 모션 추정 유닛(204)은 참조 인덱스, 예측 방향 지시자, 및 모션 벡터를 현재 비디오 블록의 모션 정보로서 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록에 기초하여 현재 블록의 예측된 비디오 블록을 생성할 수 있다.
다른 예들에서, 모션 추정 유닛(204)은 현재 비디오 블록에 대해 양방향 예측을 수행할 수 있고, 모션 추정 유닛(204)은 현재 비디오 블록에 대한 참조 비디오 블록에 대해 리스트 0 내의 참조 픽처들을 탐색할 수 있으며, 또한 현재 비디오 블록에 대한 다른 참조 비디오 블록에 대해 리스트 1 내의 참조 픽처들을 탐색할 수 있다. 모션 추정 유닛(204)은 이어서 참조 비디오 블록들을 포함하는 리스트 0 및 리스트 1 내의 참조 픽처들을 나타내는 참조 인덱스들 및 참조 비디오 블록들과 현재 비디오 블록 사이의 공간적 변위들을 나타내는 모션 벡터들을 생성할 수 있다. 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보로서 참조 인덱스들 및 현재 비디오 블록의 모션 벡터들을 출력할 수 있다. 모션 보상 유닛(205)은 현재 비디오 블록의 모션 정보가 나타내는 참조 비디오 블록들에 기초하여 현재 비디오 블록의 예측된 비디오 블록을 생성할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 디코더의 디코딩 프로세싱을 위한 모션 정보의 전체 세트를 출력할 수 있다.
일부 예들에서, 모션 추정 유닛(204)은 현재 비디오에 대한 모션 정보의 전체 세트를 출력하지 않을 수 있다. 오히려, 모션 추정 유닛(204)은 다른 비디오 블록의 모션 정보를 참조하여 현재 비디오 블록의 모션 정보를 시그널링할 수 있다. 예를 들어, 모션 추정 유닛(204)은 현재 비디오 블록의 모션 정보가 이웃 비디오 블록의 모션 정보와 충분히 유사하다고 결정할 수 있다.
일 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에, 현재 비디오 블록이 다른 비디오 블록과 동일한 모션 정보를 갖는다는 것을 비디오 디코더(300)에 알려주는 값을 표시할 수 있다.
다른 예에서, 모션 추정 유닛(204)은, 현재 비디오 블록과 연관된 신택스 구조에서, 다른 비디오 블록 및 모션 벡터 차이(MVD)를 식별할 수 있다. 모션 벡터 차이는 현재 비디오 블록의 모션 벡터와 표시된 비디오 블록의 모션 벡터 간의 차이를 나타낸다. 비디오 디코더(300)는 표시된 비디오 블록의 모션 벡터 및 모션 벡터 차이를 이용하여 현재 비디오 블록의 모션 벡터를 결정할 수 있다.
위에서 논의된 바와 같이, 비디오 인코더(200)는 모션 벡터를 예측적으로 시그널링할 수 있다. 비디오 인코더(200)에 의해 구현될 수 있는 예측적 시그널링 기술의 두 가지 예는 AMVP(advanced motion vector predication) 및 병합 모드 시그널링을 포함한다.
인트라 예측 유닛(206)은 현재 비디오 블록에 대해 인트라 예측을 수행할 수 있다. 인트라 예측 유닛(206)이 현재 비디오 블록에 대해 인트라 예측을 수행할 때, 인트라 예측 유닛(206)은 동일한 픽처 내의 다른 비디오 블록들의 디코딩된 샘플들에 기초하여 현재 비디오 블록에 대한 예측 데이터를 생성할 수 있다. 현재 비디오 블록에 대한 예측 데이터는 예측된 비디오 블록 및 다양한 신택스 요소들을 포함할 수 있다.
잔차 생성 유닛(207)은 현재 비디오 블록으로부터 현재 비디오 블록의 예측된 비디오 블록(들)을 차감(예를 들면, 마이너스 부호로 표시됨)하는 것에 의해 현재 비디오 블록에 대한 잔차 데이터를 생성할 수 있다. 현재 비디오 블록의 잔차 데이터는 현재 비디오 블록 내의 샘플들의 상이한 샘플 성분들에 대응하는 잔차 비디오 블록들을 포함할 수 있다.
다른 예들에서, 예를 들어, 스킵 모드에서 현재 비디오 블록에 대한 현재 비디오 블록의 잔차 데이터가 없을 수 있고, 잔차 생성 유닛(207)은 차감 동작을 수행하지 않을 수 있다.
변환 프로세싱 유닛(208)은 현재 비디오 블록과 연관된 잔차 비디오 블록에 하나 이상의 변환을 적용하는 것에 의해 현재 비디오 블록에 대한 하나 이상의 변환 계수 비디오 블록을 생성할 수 있다.
변환 프로세싱 유닛(208)이 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 생성한 후에, 양자화 유닛(209)은 현재 비디오 블록과 연관된 하나 이상의 양자화 파라미터(QP) 값에 기초하여 현재 비디오 블록과 연관된 변환 계수 비디오 블록을 양자화할 수 있다.
역양자화 유닛(210) 및 역변환 유닛(211)은, 제각기, 변환 계수 비디오 블록에 역양자화 및 역변환을 적용하여 변환 계수 비디오 블록으로부터 잔차 비디오 블록을 재구성할 수 있다. 재구성 유닛(212)은 버퍼(213)에 저장할 현재 블록과 연관된 재구성된 비디오 블록을 생성하기 위해 예측 유닛(202)에 의해 생성되는 하나 이상의 예측된 비디오 블록으로부터의 대응하는 샘플들에 재구성된 잔차 비디오 블록을 가산할 수 있다.
재구성 유닛(212)이 비디오 블록을 재구성한 후에, 비디오 블록에서의 비디오 블로킹 아티팩트를 감소시키기 위해 루프 필터링 동작이 수행될 수 있다.
엔트로피 인코딩 유닛(214)은 비디오 인코더(200)의 다른 기능 컴포넌트들로부터 데이터를 수신할 수 있다. 엔트로피 인코딩 유닛(214)이 데이터를 수신할 때, 엔트로피 인코딩 유닛(214)은 엔트로피 인코딩된 데이터를 생성하고 엔트로피 인코딩된 데이터를 포함하는 비트스트림을 출력하기 위해 하나 이상의 엔트로피 인코딩 동작을 수행할 수 있다.
도 17은 도 15에 예시된 시스템(100) 내의 비디오 디코더(114)일 수 있는 비디오 디코더(300)의 예를 예시하는 블록 다이어그램이다.
비디오 디코더(300)는 본 개시의 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다. 도 17의 예에서, 비디오 디코더(300)는 복수의 기능 컴포넌트들을 포함한다. 본 개시에 설명된 기술들은 비디오 디코더(300)의 다양한 컴포넌트들 사이에서 공유될 수 있다. 일부 예들에서, 프로세서는 본 개시에 설명된 기술들의 일부 또는 전부를 수행하도록 구성될 수 있다.
도 17의 예에서, 비디오 디코더(300)는 엔트로피 디코딩 유닛(301), 모션 보상 유닛(302), 인트라 예측 유닛(303), 역양자화 유닛(304), 역변환 유닛(305), 및 재구성 유닛(306) 및 버퍼(307)를 포함한다. 비디오 디코더(300)는, 일부 예들에서, 비디오 인코더(200)(도 16)와 관련하여 설명된 인코딩 패스(encoding pass)와 일반적으로 반대인 디코딩 패스(decoding pass)를 수행할 수 있다.
엔트로피 디코딩 유닛(301)은 인코딩된 비트스트림을 검색할 수 있다. 인코딩된 비트스트림은 엔트로피 코딩된 비디오 데이터(예를 들면, 비디오 데이터의 인코딩된 블록들)를 포함할 수 있다. 엔트로피 디코딩 유닛(301)은 엔트로피 코딩된 비디오 데이터를 디코딩할 수 있고, 엔트로피 디코딩된 비디오 데이터로부터, 모션 보상 유닛(302)은 모션 벡터, 모션 벡터 정밀도, 참조 픽처 리스트 인덱스, 및 다른 모션 정보를 포함하는 모션 정보를 결정할 수 있다. 모션 보상 유닛(302)은, 예를 들어, AMVP 및 병합 모드를 수행하는 것에 의해 그러한 정보를 결정할 수 있다.
모션 보상 유닛(302)은 모션 보상된 블록들을 생성할 수 있으며, 어쩌면 보간 필터들에 기초하여 보간을 수행할 수 있다. 사용될 보간 필터들에 대한 식별자들이 서브픽셀 정밀도와 함께 신택스 요소들에 포함될 수 있다.
모션 보상 유닛(302)은 참조 블록의 서브-정수 픽셀들에 대한 보간된 값들을 계산하기 위해 비디오 블록의 인코딩 동안 비디오 인코더(20)에 의해 사용되는 바와 같이 보간 필터들을 사용할 수 있다. 모션 보상 유닛(302)은 수신된 신택스 정보에 따라 비디오 인코더(200)에 의해 사용되는 보간 필터들을 결정할 수 있고 예측 블록들을 생성하기 위해 보간 필터들을 사용할 수 있다.
모션 보상 유닛(302)은 인코딩된 비디오 시퀀스의 프레임(들) 및/또는 슬라이스(들)를 인코딩하는 데 사용되는 블록들의 크기들, 인코딩된 비디오 시퀀스의 픽처의 각각의 매크로블록이 어떻게 분할되는지를 기술하는 분할 정보, 각각의 분할이 어떻게 인코딩되는지를 나타내는 모드들, 각각의 인터 인코딩된 블록에 대한 하나 이상의 참조 프레임(및 참조 프레임 리스트), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보를 결정하기 위해 신택스 정보의 일부를 사용할 수 있다.
인트라 예측 유닛(303)은 공간적으로 인접한 블록들로부터 예측 블록을 형성하기 위해, 예를 들어, 비트스트림에서 수신되는 인트라 예측 모드들을 사용할 수 있다. 역양자화 유닛(303)은 비트스트림에서 제공되고 엔트로피 디코딩 유닛(301)에 의해 디코딩되는 양자화된 비디오 블록 계수들을 역양자화(inverse quantize), 즉 양자화 해제(de-quantize)한다. 역변환 유닛(303)은 역변환을 적용한다.
재구성 유닛(306)은 디코딩된 블록들을 형성하기 위해 모션 보상 유닛(202) 또는 인트라 예측 유닛(303)에 의해 생성되는 대응하는 예측 블록들과 잔차 블록들을 합산할 수 있다. 원하는 경우, 디코딩된 블록들을 필터링하여 블록성 아티팩트(blockiness artifact)를 제거하기 위해 디블록킹 필터가 또한 적용될 수 있다. 디코딩된 비디오 블록들은 이어서 버퍼(307)에 저장되고, 버퍼(307)는 후속하는 모션 보상/인트라 예측을 위한 참조 블록들을 제공하고 또한 디스플레이 디바이스 상에 제시할 디코딩된 비디오를 생성한다.
일부 실시예들에 의해 선호되는 조항들의 목록이 다음에 제공된다.
제1 조항 세트는 이전 섹션들에서 논의된 기술들의 예시적인 실시예들을 보여준다.
1. 비디오 프로세싱 방법으로서, 비주얼 미디어 데이터의 현재 비디오 블록과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 현재 비디오 블록의 하나 이상의 치수 및/또는 현재 비디오 블록의 하나 이상의 치수의 수학적 함수가 적어도 하나의 임계 조건을 달성한다는 결정에 적어도 부분적으로 기초하여 기하학적 분할 모드의 사용이 선택적으로 인에이블되거나 디스에이블되는, 방법.
2. 조항 1에 있어서, 기하학적 분할 모드는 삼각 예측 모드(TPM), 기하학적 병합 모드(GEO), 및/또는 웨지 예측 모드 중 적어도 하나를 포함하는, 방법.
3. 조항 1 및 조항 2 중 어느 하나 이상의 조항에 있어서, 기하학적 분할 모드는 비디오 블록을 2 개 이상의 서브영역으로 분할하는 것을 포함하고, 적어도 하나의 서브영역은 QT, BT, 및/또는 파티션을 포함하지 않는, 방법.
4. 조항 1 내지 조항 3 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록의 하나 이상의 치수는 현재 비디오 블록의 블록 폭, 블록 높이, 및/또는 종횡비를 포함하는, 방법.
5. 조항 1 내지 조항 4 중 어느 하나 이상의 조항에 있어서, 적어도 하나의 임계 조건을 달성하는 것은 현재 비디오 블록의 하나 이상의 치수 또는 현재 비디오 블록의 하나 이상의 치수의 수학적 함수들이 대응하는 임계 값들보다 크고/크거나 작은 것을 포함하는, 방법.
6. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 T1, T2, T3, T4로 표기되고, W >= T1이고/이거나 H >= T2이고/이거나 W * H < T3이고/이거나 W * H > T4인 경우 기하학적 분할 모드가 인에이블되는, 방법.
7. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 T1, T2, T3, T4로 표기되고, W >= T1이고/이거나 H >= T2이고/이거나 W * H <= T3이고/이거나 W * H >= T4인 경우 기하학적 분할 모드가 인에이블되는, 방법.
8. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 T1, T2, T3, T4로 표기되고, W*H < T1 || (W*H <= T2 && W/H< = T3 && H/W <= T4)인 경우 기하학적 분할 모드가 인에이블되는, 방법.
9. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 T1, T2, T3, T4로 표기되고, W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3)인 경우 기하학적 분할 모드가 인에이블되는, 방법.
10. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 T1, T2, T3, T4로 표기되고, W*H <= T1 && W/H <=T2 && H/W <= T3인 경우 기하학적 분할 모드가 인에이블되는, 방법.
11. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 Tx, Ty로 표기되고, W>=Tx이고 H >= Ty인 경우 기하학적 분할 모드가 인에이블되는, 방법.
12. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 N, M으로 표기되고, W>N이고/이거나 H>M인 경우 기하학적 분할 모드가 디스에이블되는, 방법.
13. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 Ti ( i=1...17)로 표기되고, 하나 이상의 아래에 명시된 임계 조건이 달성되는 경우:
W < T1이고/이거나 W > T2이고/이거나 W = T3이다
H < T4이고/이거나 H > T5이고/이거나 H = T6이다
W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
기하학적 분할 모드가 디스에이블되는, 방법.
14. 조항 5에 있어서, 블록 폭은 W로 표기되고, 블록 높이는 H로 표기되며, 임계 값들은 Ti ( i=1...17)로 표기되고, 하나 이상의 아래에 명시된 임계 조건이 달성되는 경우:
W < T1이고/이거나 W > T2이고/이거나 W = T3이다
H < T4이고/이거나 H > T5이고/이거나 H = T6이다
W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
기하학적 분할 모드가 인에이블되는, 방법.
15. 조항 5 내지 조항 14 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 블록인, 방법.
16. 조항 5 내지 조항 14 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 크로마 블록인, 방법.
17. 조항 5 내지 조항 14 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 성분 및 크로마 성분을 포함하고, 적어도 하나의 임계 조건으로부터 기하학적 분할 모드가 루마 성분에 대해 디스에이블된다고 결정할 시에, 기하학적 분할 모드가 크로마 구성 요소에 대해서도 디스에이블되는, 방법.
18. 조항 5 내지 조항 14 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 성분 및 크로마 성분을 포함하고, 적어도 하나의 임계 조건으로부터 기하학적 분할 모드가 루마 성분에 대해 인에이블된다고 결정할 시에, 기하학적 분할 모드가 크로마 구성 요소에 대해서도 인에이블되는, 방법.
19. 조항 5 내지 조항 14 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 성분 및 크로마 성분을 포함하고, 적어도 하나의 임계 조건이 루마 성분에 대해서는 달성되고 크로마 성분에 대해서는 달성되지 않는, 방법.
20. 비디오 프로세싱 방법으로서, 비주얼 미디어 데이터의 현재 비디오 블록과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 현재 비디오 블록에 대해 다수의 기하학적 분할 모드 세트들의 사용이 허용되고, 다수의 기하학적 분할 모드 세트들은 현재 비디오 블록의 크기에 적어도 부분적으로 기초하여 선택되는, 방법.
21. 조항 20에 있어서, 다수의 기하학적 분할 모드 세트들이 허용된다는 표시가 비트스트림 표현에 포함되는, 방법.
22. 조항 20에 있어서, 다수의 기하학적 분할 모드 세트들 중 적어도 2 개는 상이한 수의 기하학적 분할 모드들을 포함하는, 방법.
23. 조항 20에 있어서, 다수의 기하학적 분할 모드 세트들 중 적어도 2 개는 동일한 수의 기하학적 분할 모드들을 포함하고, 하나의 세트에 포함된 적어도 하나의 기하학적 분할 모드가 다른 세트에서는 제외되는, 방법.
24. 조항 20에 있어서, 선택되는 다수의 기하학적 분할 모드 세트들의 총 개수의 표시가 비트스트림 표현에 포함되는, 방법.
25. 조항 25에 있어서, 선택되는 다수의 기하학적 분할 모드 세트들의 총 개수는 임계 값 미만인, 방법.
26. 조항 20 내지 조항 26 중 어느 하나 이상의 조항에 있어서, 허용되는 다수의 기하학적 분할 모드 세트들과 연관된 기하학적 분할 모드들은 기하학적 분할 모드 인덱스에 의해 식별되고, 기하학적 분할 모드 인덱스는 현재 비디오 블록과 관련된 웨지의 대응하는 분할 각도 인덱스 및/또는 대응하는 분할 거리 인덱스를 포함하는, 방법.
27. 조항 26에 있어서, 기하학적 분할 모드 인덱스 대 제1 기하학적 분할 모드의 매핑은 다수의 기하학적 분할 모드 세트들 중 어느 것이 제1 기하 분할 모드와 연관되는지를 결정하는 것에 기초하는, 방법.
28. 비디오 프로세싱 방법으로서, 비주얼 미디어 데이터의 비디오 블록들과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 제1 개수의 기하 분할 모드들은 제1 비디오 블록의 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 사용되고, 제2 개수의 기하 분할 모드들은 제2 비디오 블록의 비트스트림 표현에서 사용되며, 제3 개수의 기하 분할 모드들은 제3 비디오 블록의 비트스트림 표현에서 시그널링되고, 제1 개수 및/또는 제2 개수 및/또는 제3 개수는 제1, 제2, 및 제3 비디오 블록들의 대응하는 치수들에 적어도 기초하는, 방법.
29. 조항 28에 있어서, 제2 개수 및/또는 제3 개수는 제1 개수와 상이한, 방법.
30. 조항 28에 있어서, 제2 개수는 제3 개수와 동일한, 방법.
31. 조항 28에 있어서, 제2 개수 및/또는 제3 개수는 제1 개수보다 작은, 방법.
32. 조항 28에 있어서, 제1, 제2, 및 제3 비디오 블록들은 제1, 제2, 및 제3 비디오 블록 카테고리들과 연관되는, 방법.
33. 조항 32에 있어서, 제1, 제2, 및 제3 비디오 블록 카테고리들은 상이하고, 제1, 제2, 및 제3 비디오 블록 카테고리들은 상이한 치수들과 연관되는, 방법.
34. 조항 28에 있어서, 제1 블록의 치수들이 하나 이상의 임계 조건을 충족시킬 때 제2 개수 및/또는 제3 개수는 제1 개수보다 작은, 방법.
35. 비디오 프로세싱 방법으로서, 비주얼 미디어 데이터의 현재 비디오 블록과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 제1 기하학적 분할 모드 인덱스 값은 현재 비디오 블록의 비트스트림 표현에서 시그널링되고 제2 기하학적 분할 모드 인덱스 값은 현재 비디오 블록의 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 사용되며, 제1 기하학적 분할 모드 인덱스 값은 제2 기하학적 분할 모드 인덱스 값과 상이한, 방법.
36. 조항 35에 있어서, 적어도 하나의 매핑 테이블은 제1 기하학적 분할 모드 인덱스 값과 제2 기하학적 분할 모드 인덱스 값 사이의 관계를 정의하는, 방법.
37. 조항 36에 있어서, 적어도 하나의 매핑 테이블은 제1 매핑 테이블 및 제2 매핑 테이블을 포함하고, 제1 매핑 테이블은 제1 유형의 비디오 블록과 연관되고 제2 매핑 테이블은 제2 유형의 비디오 블록과 연관되는, 방법.
38. 비디오 프로세싱 방법으로서, 비주얼 미디어 데이터의 현재 비디오 블록과 비주얼 미디어 데이터의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 현재 비디오 블록에 대해 기하학적 분할 모드의 사용이 허용되고, 기하학적 분할 모드의 파라미터들은 축소된 각도 세트 및/또는 축소된 거리 세트를 사용하여 계산되는, 방법.
39. 조항 38에 있어서, 축소된 각도 세트의 개수는 임계 값 미만이고, 임계 값은 24인, 방법.
40. 조항 38에 있어서, 축소된 거리 세트의 개수는 임계 값 미만이고, 임계 값은 82인, 방법.
41. 조항 38에 있어서, 룩업 테이블이 축소된 거리 세트를 계산하는 데 사용되고, 룩업 테이블의 크기는 축소된 각도 세트에 적어도 부분적으로 기초하는, 방법.
42. 조항 1 내지 조항 41 중 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
43. 조항 1 내지 조항 41 중 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
44. 컴퓨터 코드가 저장되어 있는 컴퓨터 프로그램 제품으로서, 코드는, 프로세서에 의해 실행될 때, 프로세서로 하여금 조항 1 내지 조항 44 중 어느 한 조항에 기재된 방법을 구현하게 하는, 컴퓨터 프로그램 제품.
45. 본 문서에 설명된 방법, 장치 또는 시스템.
제2 세트의 조항들은 이전 섹션에서의 개시된 기술들의 특정 특징들 및 양태들을 설명한다.
1. 비디오 프로세싱 방법(예를 들면, 도 18a에 도시된 방법(1810))으로서, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계(1812)를 포함하며, 변환 동안, 현재 비디오 블록에 대해 기하학적 분할 모드의 사용이 허용되고, 기하학적 분할 모드의 파라미터들은 제1 임계 값보다 작은 제1 수의 각도들을 포함하는 각도 세트 및/또는 제2 임계 값보다 작은 제2 수의 거리들을 포함하는 거리 세트를 사용하여 계산되는, 방법.
2. 조항 1에 있어서, 제1 임계 값은 24인, 방법.
3. 조항 1에 있어서, 기하학적 분할 모드는 기하학적 분할 모드 세트로부터 선택되고, 기하학적 분할 모드 세트는 제3 임계 값보다 작은 수의 모드들을 포함하는, 방법.
4. 조항 3에 있어서, 제3 임계 값은 82인, 방법.
5. 조항 1에 있어서, 제2 임계 값은 3 또는 4인, 방법.
6. 조항 1에 있어서, 하나 이상의 각도에 대한 거리들의 수는 제2 임계 값 미만인, 방법.
7. 조항 1에 있어서, 수직 및 수평 각도들에 대한 거리들의 수는 X와 동일하며, X는 양의 정수인, 방법.
8. 조항 1에 있어서, X는 2인, 방법.
9. 조항 1에 있어서, 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수는 1과 변수 angleIdx의 최댓값의 합과 동일하며, angleIdx는 기하학적 분할 모드의 각도 인덱스를 지정하는, 방법.
10. 조항 1에 있어서, 현재 비디오 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 변수 displacemenY의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존하며, displacementY는 (displacementX+(NUM_ANGLE>>2))) % NUM_ANGLE로 설정되고, displacementX는 기하학적 분할 모드의 각도 인덱스를 지정하는 angleIdx로 설정되며, NUM_ANGLE은 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수를 지정하는, 방법.
11. 조항 1에 있어서, 현재 비디오 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 변수 shiftHor의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존하며, shiftHor은 0 또는 1로 설정되는, 방법.
12. 조항 11에 있어서, 이하의 조건들 중 적어도 하나가 충족되는 경우에:
1) angleIdx % (NUM_ANGLE/2)가 (NUM_ANGLE>>2)와 동일하다
2) angleIdx % (NUM_ANGLE/2)가 0과 동일하지 않고 hwRatio ≥ 1(단, hwRatio는 H/W로 설정됨)이다
shiftHor은 0으로 설정되며,
angleIdx는 기하학적 분할 모드의 각도 인덱스를 지정하고, NUM_ANGLE은 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수를 지정하며, H 및 W는, 제각기, 현재 비디오 블록의 높이 및 폭인, 방법.
13. 조항 11에 있어서, 현재 비디오 블록의 블렌딩 가중치 인덱스를 도출하기 위한 오프셋 값들의 도출 프로세스는 각도들의 수 및/또는 shiftHor의 값에 의존하는, 방법.
14. 조항 11에 있어서, 현재 비디오 블록의 모션 인덱스를 도출하기 위한 오프셋 값들의 도출 프로세스는 각도들의 수 및/또는 shiftHor의 값에 의존하는, 방법.
15. 조항 11에 있어서, 룩업 테이블이 거리 세트를 계산하는 데 사용되고, 룩업 테이블의 크기는 각도 세트에 적어도 부분적으로 기초하는, 방법.
16. 조항 15에 있어서, 룩업 테이블의 값들은 룩업 테이블의 크기에 기초하여 결정되는, 방법.
17. 조항 1에 있어서, A 및 B가 기하학적 분할 모드에 대한 가중 샘플 예측 프로세스에 사용되는 2 개의 입력 어레이 predSamplesLA 및 predSamplesLB를 나타내고 PART1 및 PART2가 현재 비디오 블록의 예측된 블록의 출력된 가중 예측 샘플 값들의 도출을 위한 A 및 B의 표현들인 경우에, PART1 및 PART2가 A와 동일한지 B와 동일한지는 각도 인덱스들 T1 및 T2에 의존하는, 방법.
18. 조항 1에 있어서, 기하학적 분할 모드에 대한 모션 벡터 저장 프로세스에서 사용되는 변수 partIdx는 각도 인덱스들 T1 및 T2에 기초하여 0 또는 1로 설정되고, partIdx는 모션 저장을 위한 모션 벡터들을 할당하기 위한 다른 변수 sType을 도출하는 데 사용되는, 방법.
19. 비디오 프로세싱 방법(예를 들면, 도 18b에 도시된 방법(1820))으로서, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 비디오 블록의 하나 이상의 치수 및/또는 현재 비디오 블록의 하나 이상의 치수의 수학적 함수에 의존하는 규칙에 기초하여 기하학적 분할 모드의 적용 가능성을 결정하는 단계(1822); 및 결정에 기초하여 변환을 수행하는 단계(1824)를 포함하는, 방법.
20. 조항 19에 있어서, 기하학적 분할 모드는 삼각 예측 모드(TPM), 기하학적 병합 모드(GEO), 및/또는 웨지 예측 모드 중 적어도 하나를 포함하는, 방법.
21. 조항 19 또는 조항 20에 있어서, 기하학적 분할 모드는 현재 비디오 블록을 2 개 이상의 서브영역으로 분할하는 것을 포함하고, 적어도 하나의 서브영역은 QT, BT, 및/또는 파티션을 포함하지 않는, 방법.
22. 조항 19 내지 조항 21 중 어느 하나 이상의 조항에 있어서, 규칙은 현재 비디오 블록의 블록 폭, 블록 높이, 및/또는 종횡비에 의존하는, 방법.
23. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W >= T1이고/이거나 H >= T2이고/이거나 W * H < T3이고/이거나 W * H > T4인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
24. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W >= T1이고/이거나 H >= T2이고/이거나 W * H <= T3이고/이거나 W * H >= T4인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
25. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W*H < T1 || (W*H <= T2 && W/H< = T3 && H/W <= T4)인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
26. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3)인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, 및 T3은 상수 값들인, 방법.
27. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W*H <= T1 && W/H <=T2 && H/W <= T3인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, 및 T3은 상수 값들인, 방법.
28. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W>=Tx이고 H >= Ty인 경우에 기하학적 분할 모드가 적용된다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Tx, Ty는 상수 값들인, 방법.
29. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W>N이고/이거나 H>M인 경우에 기하학적 분할 모드가 적용되지 않는다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, N, M은 상수 값들인, 방법.
30. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 W=N이고/이거나 H=M인 경우에 기하학적 분할 모드가 적용되지 않는다고 지정하며, 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, N, M은 상수 값들인, 방법.
31. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 하나 이상의 이하의 조건이 충족되는 경우에:
a) W < T1이고/이거나 W > T2이고/이거나 W = T3이다
b) H < T4이고/이거나 H > T5이고/이거나 H = T6이다
c) W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
d) W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
e) H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
f) Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
기하학적 분할 모드가 적용되지 않는다고 지정하며, 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Ti ( i=1...17)는 상수 값들인, 방법.
32. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 하나 이상의 이하의 조건이 충족되는 경우에:
a) W < T1이고/이거나 W > T2이고/이거나 W = T3이다
b) H < T4이고/이거나 H > T5이고/이거나 H = T6이다
c) W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
d) W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
e) H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
f) Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
기하학적 분할 모드가 적용된다고 지정하며, 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Ti ( i=1...17)는 상수 값들인, 방법.
33. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 현재 비디오 블록의 폭(W) 및/또는 높이(H)의 비율들에 의존하는 수학적 함수에 의존하는, 방법.
34. 조항 33에 있어서, 수학적 함수는 max (H, W)/min (H,W)인, 방법.
35. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 수학적 함수는 현재 비디오 블록의 폭(W)과 높이(H) 사이의 차이들 및/또는 비율들에 관련되는, 방법.
36. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 규칙은 폭 대 높이 비율(W/H) 또는 높이 대 폭 비율(H/W)이 X(단, X는 상수 값임) 초과 또는 이상인 경우에 폭(W) 및 높이(H)를 갖는 현재 비디오 블록에 대해 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
37. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 블록 또는 크로마 블록인, 방법.
38. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 루마 성분 및 크로마 성분을 포함하고, 규칙은 기하학적 분할 모드가 루마 성분에 대해서는 적용되지만 크로마 블록에 대해서는 적용되지 않는다고 지정하는, 방법.
39. 조항 19 내지 조항 22 중 어느 하나 이상의 조항에 있어서, 현재 비디오 블록은 비디오 영역 내의 루마 블록에 대응하고, 비디오 영역 내의 크로마 블록에 대한 기하학적 분할 모드의 적용 가능성은 현재 비디오 블록의 하나 이상의 치수에 의존하는, 방법.
40. 비디오 프로세싱 방법(예를 들면, 도 18c에 도시된 바와 같은 방법(1830))으로서, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 비디오 블록의 코딩 특성들에 의존하는 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계(1832); 및 결정에 기초하여 변환을 수행하는 단계(1834)를 포함하는, 방법.
41. 조항 40에 있어서, 코딩 특성들은 최대 변환 크기, 최대 허용 코딩 유닛(CU) 크기, 또는 크로마 포맷 중 적어도 하나를 포함하는, 방법.
42. 조항 41에 있어서, 규칙은 최대 변환 크기보다 큰 폭 및/또는 높이를 갖는 현재 비디오 블록에 대해 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
43. 조항 41에 있어서, 규칙은 최대 허용 CU 크기와 동일한 폭 및/또는 높이를 갖는 현재 비디오 블록에 대해 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
44. 조항 41에 있어서, 규칙은 4:0:0 크로마 포맷, 4:4:4 크로마 포맷 또는 4:2:2 크로마 포맷을 갖는 현재 비디오 블록에 대해 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
45. 조항 41에 있어서, 규칙은 특정 크로마 포맷을 가진 특정 색상 성분을 갖는 현재 비디오 블록에 대해 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
46. 비디오 프로세싱 방법(예를 들면, 도 18d에 도시된 바와 같은 방법(1840))으로서, 제외 규칙이 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환에 적용 가능하다고 결정하는 단계 - 제외 규칙은 변환이 현재 비디오 블록에 대해 기하학적 분할 모드와 코딩 툴을 함께 사용하는 것을 허용하지 않는다고 지정함 -; 및 결정에 기초하여 변환을 수행하는 단계를 포함하는, 방법.
47. 조항 46에 있어서, 기하학적 분할 모드가 현재 비디오 블록에 적용되는 경우에 비트스트림 표현은 코딩 툴의 사용 표시 및/또는 코딩 툴의 정보를 생략하는, 방법.
48. 조항 46에 있어서, 코딩 툴이 현재 비디오 블록에 적용되는 경우에 비트스트림 표현은 기하학적 분할 모드의 사용 표시 및/또는 기하학적 분할 모드의 정보를 생략하는, 방법.
49. 조항 46 내지 조항 48 중 어느 한 조항에 있어서, 코딩 툴은 적응적 색상 변환, 이중 트리 코딩 모드, 변환 스킵 모드, 블록 차분 펄스 코드 변조(BDPCM) 코딩 모드, 또는 서브블록 변환(SBT)을 포함하는, 방법.
50. 비디오 프로세싱 방법(예를 들면, 도 18e에 도시된 바와 같은 방법(1850))으로서, 비디오와 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 비디오의 상이한 색상 성분들에 대한 상이한 기하학적 분할 모드 인덱스들을 결정하는 단계(1852); 및 결정에 기초하여 변환을 수행하는 단계(1854)를 포함하는, 방법.
51. 조항 50에 있어서, 규칙은 비디오의 크로마 성분이 비디오의 루마 성분의 기하학적 분할 모드 인덱스와 상이한 기하학적 분할 모드 인덱스를 갖는다고 지정하는, 방법.
52. 조항 50에 있어서, 기하학적 분할 모드는 비디오의 크로마 성분들에 적용되지 않는, 방법.
53. 조항 50에 있어서, 비트스트림 표현은 상이한 기하학적 분할 모드 인덱스들을 포함하는, 방법.
54. 조항 53에 있어서, 상이한 기하학적 분할 모드 인덱스들은 비디오의 루마 성분에 대한 모드 인덱스 및 비디오의 크로마 성분들에 대한 모드 인덱스를 포함하는, 방법.
55. 조항 50에 있어서, 비트스트림 표현은 제2 색상 성분의 기하학적 분할 모드 인덱스를 포함하고, 제1 색상 성분의 기하학적 분할 모드 인덱스는 제2 색상 성분의 모드 인덱스로부터 예측되는, 방법.
56. 비디오 프로세싱 방법(예를 들면, 도 18f에 도시된 바와 같은 방법(1860))으로서, 비디오의 현재 픽처의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계(1862); 및 결정에 기초하여 변환을 수행하는 단계(1864)를 포함하며, 기하학적 분할 모드는 현재 비디오 블록을 2 개 이상의 예측 서브영역으로 분할하는 것을 포함하고, 규칙은 2 개 이상의 예측 서브영역과 연관된 하나 이상의 참조 픽처의 해상도에 의존하는, 방법.
57. 조항 56에 있어서, 규칙은 2 개 이상의 예측 서브영역과 연관된 참조 픽처들의 해상도들이 서로 상이한 경우에 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
58. 조항 56에 있어서, 규칙은 예측 서브영역과 연관된 참조 픽처의 해상도가 현재 픽처의 해상도와 상이한 경우에 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
59. 조항 56에 있어서, 규칙은 예측 서브영역과 연관된 참조 픽처의 해상도가 현재 픽처의 해상도와 상이한 경우에 기하학적 분할 모드가 적용된다고 지정하는, 방법.
60. 조항 56 내지 조항 59 중 어느 한 조항에 있어서, 현재 픽처의 해상도는 현재 픽처의 폭 또는 높이를 지칭하거나 픽처 내의 윈도를 지칭하는, 방법.
61. 비디오 프로세싱 방법으로서, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 비트스트림 표현은 포맷 규칙을 준수하고, 포맷 규칙은 현재 비디오 블록에 대해 기하학적 분할 모드가 디스에이블된 경우에 비트스트림 표현이 기하학적 분할 모드에 관련된 신택스 요소를 생략한다고 지정하는, 방법.
62. 조항 61에 있어서, 신택스 요소는 wedge_partition_idx, merge_wedge_idx0, 또는 merge_wedge_idx1 중 적어도 하나를 포함하는, 방법.
63. 조항 61에 있어서, 비트스트림 표현에 포함되지 않은 신택스 요소는 기본 값인 것으로 추론되는, 방법.
64. 조항 61에 있어서, 기하학적 분할 모드가 디스에이블되거나 허용되지 않는 경우에 기하학적 분할 모드에 관련된 시맨틱 변수들은 기본 값인 것으로 추론되는, 방법.
65. 비디오 프로세싱 방법(예를 들면, 도 18g에 도시된 바와 같은 방법(1870))으로서, 비디오의 하나 이상의 비디오 블록을 포함하는 비디오 유닛과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 비디오 유닛의 하나 이상의 비디오 블록을 코딩하는 데 다수의 기하학적 분할 모드 세트들이 허용된다고 결정하는 단계(1872); 및 결정에 기초하여 변환을 수행하는 단계(1874)를 포함하는, 방법.
66. 조항 65에 있어서, 규칙은 다수의 세트들 중에서의 한 세트의 선택이 디코딩된 정보에 의존한다고 지정하는, 방법.
67. 조항 66에 있어서, 디코딩된 정보는 비디오 블록의 치수 및/또는 형상을 포함하는, 방법.
68. 조항 65에 있어서, 규칙은 다수의 세트들 중 적어도 2 개가 상이한 수의 허용된 기하학적 분할 모드들을 갖는다고 지정하는, 방법.
69. 조항 65에 있어서, 규칙은 다수의 세트들 중 T 개의 세트가 동일한 수의 허용된 기하학적 분할 모드들을 갖지만 T 개의 세트 중 하나에는 포함된 적어도 하나의 기하학적 분할 모드가 T 개의 세트 중 다른 하나에서는 제외된다고 지정하는, 방법.
70. 조항 65에 있어서, 규칙은 다수의 세트들 중 T 개의 세트가 동일한 기하학적 분할 모드를 갖지만 적어도 하나의 기하학적 분할 모드가 T 개의 세트 중 임의의 2 개에 대해 상이한 위치에 배열된다고 지정하는, 방법.
71. 조항 65에 있어서, 기하학적 분할 모드 인덱스를 어떻게 시그널링할지는 대응하는 허용된 기하학적 분할 모드 세트에 의존하는, 방법.
72. 조항 65에 있어서, 디코딩된 기하학적 분할 모드 인덱스는 대응하는 기하학적 분할 모드에 의존하는, 방법.
73. 조항 65에 있어서, 비트스트림 표현에서 비디오 블록에 대해 사용될 기하학적 분할 모드들의 총 개수는 상수 값보다 작은 수로서 정의되는, 방법.
74. 조항 65에 있어서, 비트스트림 표현에서 비디오 블록에 대해 시그널링될 기하학적 분할 모드들의 총 개수는 상수 값보다 작은 수로서 정의되는, 방법.
75. 조항 73 또는 조항 74에 있어서, 해당 수가 시그널링되는, 방법.
76. 비디오 프로세싱 방법으로서, 비디오 블록들을 포함하는 비디오와 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 변환 동안, 제1 개수의 기하학적 분할 모드들은 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 이용 가능하고, 제2 개수의 기하학적 분할 모드들은 비트스트림 표현에서의 코딩에 이용 가능하며, 제3 개수의 기하학적 분할 모드들은 비트스트림 표현에서의 시그널링에 이용 가능하고, 제1 개수 및/또는 제2 개수 및/또는 제3 개수는 비디오 블록들의 대응하는 치수들에 적어도 기초하는, 방법.
77. 조항 76에 있어서, 제2 개수 및/또는 제3 개수는 제1 개수와 상이한, 방법.
78. 조항 76에 있어서, 제2 개수는 제3 개수와 동일한, 방법.
79. 조항 76에 있어서, 제2 개수 및/또는 제3 개수는 제1 개수보다 작은, 방법.
80. 조항 76에 있어서, 제2 개수 및/또는 제3 개수는 비디오 블록들의 상이한 블록 카테고리들에 대해 상이하게 정의되는, 방법.
81. 조항 80에 있어서, 비디오 블록의 카테고리는 비디오 블록의 폭과 높이의 비율들, 비디오 블록의 폭과 높이의 수학적 함수, 또는 비디오 블록의 치수에 기초하는, 방법.
82. 조항 81에 있어서, 제1 블록의 치수가 하나 이상의 임계 조건을 충족시킬 때 제2 개수 및/또는 제3 개수는 제1 개수보다 작은, 방법.
83. 조항 80에 있어서, 비디오 블록의 각각의 카테고리에 대한 제2 개수 및/또는 제3 개수에 대해 고정 숫자 세트가 정의되는, 방법.
84. 조항 80에 있어서, 비디오 블록의 각각의 카테고리에 대한 제2 개수 및/또는 제3 개수는 비트스트림 표현에 포함되는, 방법.
85. 조항 80에 있어서, 비디오 블록의 각각의 카테고리에 대한 제2 개수 및/또는 제3 개수는 미리 정의되는, 방법.
86. 조항 80에 있어서, 루마 블록의 폭 및/또는 높이는 제2 개수 및/또는 제3 개수를 도출하는 데 사용되는, 방법.
87. 비디오 프로세싱 방법으로서, 규칙에 따라 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 규칙은 제1 기하학적 분할 모드 인덱스 값이 현재 비디오 블록의 비트스트림 표현에서 시그널링되고 제2 기하학적 분할 모드 인덱스 값이 현재 비디오 블록의 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 사용된다고 지정하며, 제1 기하학적 분할 모드 인덱스 값은 제2 기하학적 분할 모드 인덱스 값과 상이한, 방법.
88. 조항 87에 있어서, 현재 비디오 블록은 현재 비디오 블록의 폭 및/또는 높이에 기초하여 특정 카테고리와 연관되고, 특정 카테고리에 대해 기하학적 분할 모드들, 분할 각도들, 및/또는 분할 거리들의 전체 세트의 서브세트가 사용되는, 방법.
89. 조항 87에 있어서, 적어도 하나의 매핑 테이블은 제1 기하학적 분할 모드 인덱스 값과 제2 기하학적 분할 모드 인덱스 값 사이의 관계를 정의하는, 방법.
90. 조항 89에 있어서, 적어도 하나의 매핑 테이블은 비트스트림 표현에 포함되는, 방법.
91. 조항 89에 있어서, 적어도 하나의 매핑 테이블은 미리 정의되는, 방법.
92. 조항 87에 있어서, N 개의 매핑 테이블이 변환에 사용되고 N은 비디오 블록들의 블록 카테고리들의 수에 의존하는 상수 값인, 방법.
93. 조항 92에 있어서, N 개의 매핑 테이블의 길이들은 비디오 블록들의 블록 카테고리들에 의존하는, 방법.
94. 비디오 프로세싱 방법으로서, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 현재 비디오 블록의 기하학적 분할 모드 인덱스는 기하학적 분할 모드 인덱스의 이진화가 규칙에 따라 수행되도록 비트스트림에 코딩되는, 방법.
95. 조항 94에 있어서, 규칙은 이진화가 현재 비디오 블록의 디코딩된 정보에 의존한다고 지정하는, 방법.
96. 조항 95에 있어서, 디코딩된 정보는 현재 비디오 블록의 치수 및/또는 현재 비디오 블록의 카테고리를 포함하는, 방법.
97. 조항 94에 있어서, 규칙은 절단된 이진 코드가 이진화에 사용된다고 지정하는, 방법.
98. 조항 97에 있어서, 비트스트림 표현에 포함된 기하학적 분할 모드 인덱스는 분할 각도 인덱스 및/또는 분할 거리 인덱스를 도출하는 데 사용되는 도출된 기하학적 분할 모드 인덱스와 상이한, 방법.
99. 조항 94에 있어서, 규칙은 K차 지수 골롬(EG) 코딩이 이진화에 사용된다고 지정하고, K는 정수인, 방법.
100. 조항 94에 있어서, 규칙은 콘텍스트 코딩이 기하학적 분할 모드 인덱스를 코딩하는 데 사용된다고 지정하는, 방법.
101. 조항 94에 있어서, 규칙은 기하학적 분할 모드 인덱스의 처음 X 개의 빈이 콘텍스트 코딩에 의해 코딩되고 나머지 빈이 콘텍스트 모델링 없이 바이패스 코딩에 의해 코딩된다고 지정하는, 방법.
102. 비디오 프로세싱 방법(예를 들면, 도 18h에 도시된 바와 같은 방법(1880))으로서, 비디오의 비디오 유닛의 크로마 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 크로마 블록에 대한 블렌딩 가중치들 및/또는 모션 저장 가중치들을 결정하는 단계(1882); 및 결정에 기초하여 변환을 수행하는 단계(1884)를 포함하며, 크로마 블록에 기하학적 분할 모드가 적용되고, 규칙은 대응하는 루마 샘플에 대한 크로마 블록 내의 특정 크로마 샘플의 상대 위치를 나타내는 크로마 샘플 위치 유형에 의존하는, 방법.
103. 조항 102에 있어서, 비디오 유닛은 시퀀스 파라미터 세트(SPS), 비디오 파라미터 세트(VPS), 픽처 파라미터 세트(PPS), 픽처 헤더, 서브픽처, 슬라이스, 슬라이스 헤더, 타일, 브릭, 코딩 트리 유닛, 또는 가상 파이프라인 데이터 유닛(VPDU)을 포함하는, 방법.
104. 조항 102에 있어서, 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형이 비디오 유닛 레벨에서 시그널링되는, 방법.
105. 조항 104에 있어서, 비트스트림 표현은 상이한 크로마 위치 유형들 사이에서 전환하기 위한 플래그를 포함하는, 방법.
106. 조항 105에 있어서, 플래그는 기하학적 분할 모드에서의 좌측 상단 다운샘플링된 루마 샘플이 좌측 상단 루마 샘플과 동일 위치에 있는지 여부를 지정하거나 플래그는 좌측 상단 다운샘플링된 루마 샘플이 수평으로는 좌측 상단 루마 샘플과 동일한 위치에 있지만 수직으로는 좌측 상단 루마 샘플에 대해 상대적으로 시프트되는지 여부를 지정하는, 방법.
107. 조항 104에 있어서, 4:2:0 크로마 포맷 또는 4:2:2 크로마 포맷을 갖는 크로마 블록에 대한 다운샘플링 필터의 유형이 시그널링되는, 방법.
108. 조항 104에 있어서, 비트스트림 표현은 기하학적 분할 예측에 사용되는 크로마 다운샘플링 필터의 유형을 지정하기 위한 플래그를 포함하는, 방법.
109. 조항 102에 있어서, 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형이 비디오 유닛 레벨에서 시그널링되는, 방법.
110. 조항 109에 있어서, 크로마 서브샘플링 필터 유형과 크로마 포맷 유형 사이의 대응 관계를 지정하기 위한 룩업 테이블이 정의되는, 방법.
111. 조항 102에 있어서, 크로마 블록의 기하학적 분할 예측에 사용되는 다운샘플링 필터는 크로마 샘플 위치 유형에 의존하는, 방법.
112. 조항 111에 있어서, 크로마 블록이 특정 크로마 샘플 위치 유형을 갖는 경우에 크로마 블록에 대한 크로마 가중치들은 동일 위치 좌측 상단 루마 가중치들로부터 서브샘플링되는, 방법.
113. 조항 111에 있어서, 크로마 블록이 특정 크로마 샘플 위치 유형을 갖는 경우에 지정된 X-탭 필터가 크로마 가중치들의 서브샘플링에 사용되는, 방법.
114. 조항 1 내지 조항 113 중 어느 한 조항에 있어서, 기하학적 분할 모드는 기하학적 분할 모드 세트로부터 선택되고, 기하학적 분할 모드 세트는 블록을 2 개의 파티션 - 그 중 적어도 하나는 비정사각형 및 비직사각형임 - 으로 분할하는 하나 이상의 기하학적 분할 모드를 포함하는, 방법.
115. 조항 1 내지 조항 114 중 어느 한 조항에 있어서, 변환은 비디오를 비트스트림 표현으로 인코딩하는 것을 포함하는, 방법.
116. 조항 1 내지 조항 114 중 어느 한 조항에 있어서, 변환은 비트스트림 표현으로부터 비디오를 디코딩하는 것을 포함하는, 방법.
117. 비디오 프로세싱 장치로서, 조항 1 내지 조항 116 중 어느 하나 이상의 조항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는, 비디오 프로세싱 장치.
118. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서, 프로그램 코드는, 실행될 때, 프로세서로 하여금 조항 1 내지 조항 116 중 어느 하나 이상의 조항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
119. 컴퓨터 판독 가능 매체로서, 위에서 설명된 방법들 중 어느 한 방법에 따라 생성되는 코딩된 표현 또는 비트스트림 표현을 저장하는, 컴퓨터 판독 가능 매체.
본 문서에 설명되는 개시된 및 다른 해결책들, 예들, 실시예들, 모듈들 및 기능 동작들은 디지털 전자 회로로, 또는 본 문서에 개시되는 구조들 및 이들의 구조적 등가물들을 포함한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합들로 구현될 수 있다. 개시된 및 다른 실시예들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉 데이터 프로세싱 장치에 의해 실행하기 위해 또는 데이터 프로세싱 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 장치들, 디바이스들, 및 머신들을 포괄한다. 장치들은, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파 신호는 인공적으로 생성된 신호, 예를 들면, 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성되는 머신 생성(machine-generated) 전기, 광학, 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들을 포함하여, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함하여, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호 연결되는 다수의 컴퓨터들 상에서 실행되도록 배포될 수 있다.
본 문서에 설명되는 프로세스들 및 논리 흐름들은 입력 데이터에 대해 작동하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 논리 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치들이 또한 특수 목적 논리 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)으로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서들 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크들, 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 작동 가능하게 결합될 것이거나, 또는 양쪽 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는, 예로서, 반도체 메모리 디바이스들, 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들면, 내부 하드 디스크들 또는 이동식 디스크들; 자기 광학 디스크들; 및 CD ROM과 DVD-ROM 디스크들을 포함한, 모든 형태들의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 그에 통합될 수 있다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 주제의 범위 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되어서는 안 되며, 오히려 특정 기술들의 특정의 실시예들에 특정적일 수 있는 특징들에 대한 설명들로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 특허 문서에 설명되는 특정 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 작용하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 문서에 설명되는 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (119)

  1. 비디오 프로세싱 방법으로서,
    비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 변환 동안, 상기 현재 비디오 블록에 대해 기하학적 분할 모드의 사용이 허용되고,
    상기 기하학적 분할 모드의 파라미터들은 제1 임계 값보다 작은 제1 수의 각도들을 포함하는 각도 세트 및/또는 제2 임계 값보다 작은 제2 수의 거리들을 포함하는 거리 세트를 사용하여 계산되는, 방법.
  2. 제1항에 있어서, 상기 제1 임계 값은 24인, 방법.
  3. 제1항에 있어서, 상기 기하학적 분할 모드는 기하학적 분할 모드 세트로부터 선택되고, 상기 기하학적 분할 모드 세트는 제3 임계 값보다 작은 수의 모드들을 포함하는, 방법.
  4. 제3항에 있어서, 상기 제3 임계 값은 82인, 방법.
  5. 제1항에 있어서, 상기 제2 임계 값은 3 또는 4인, 방법.
  6. 제1항에 있어서, 하나 이상의 각도에 대한 거리들의 수는 상기 제2 임계 값 미만인, 방법.
  7. 제1항에 있어서, 수직 및 수평 각도들에 대한 거리들의 수는 X와 동일하며, X는 양의 정수인, 방법.
  8. 제1항에 있어서, X는 2인, 방법.
  9. 제1항에 있어서, 상기 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수는 1과 변수 angleIdx의 최댓값의 합과 동일하며, 상기 angleIdx는 상기 기하학적 분할 모드의 각도 인덱스를 지정하는, 방법.
  10. 제1항에 있어서, 상기 현재 비디오 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 변수 displacemenY의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존하며, 상기 displacementY는 (displacementX+(NUM_ANGLE>>2))) % NUM_ANGLE로 설정되고, 상기 displacementX는 상기 기하학적 분할 모드의 각도 인덱스를 지정하는 angleIdx로 설정되며, 상기 NUM_ANGLE은 상기 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수를 지정하는, 방법.
  11. 제1항에 있어서, 상기 현재 비디오 블록에 대한 가중 샘플 예측 프로세스 및/또는 모션 벡터 저장 프로세스에서 사용되는 변수 shiftHor의 계산은 디코딩 프로세스에서 사용되는 각도들의 총수에 의존하며, 상기 shiftHor은 0 또는 1로 설정되는, 방법.
  12. 제11항에 있어서, 이하의 조건들 중 적어도 하나가 충족되는 경우에:
    3) angleIdx % (NUM_ANGLE/2)가 (NUM_ANGLE>>2)와 동일하다
    4) angleIdx % (NUM_ANGLE/2)가 0과 동일하지 않고 hwRatio ≥ 1(단, hwRatio는 H/W로 설정됨)이다
    상기 shiftHor은 0으로 설정되며,
    angleIdx는 상기 기하학적 분할 모드의 각도 인덱스를 지정하고, 상기 NUM_ANGLE은 상기 현재 비디오 블록에 대한 디코딩 프로세스에서 사용되는 각도들의 수를 지정하며, H 및 W는, 제각기, 상기 현재 비디오 블록의 높이 및 폭인, 방법.
  13. 제11항에 있어서, 상기 현재 비디오 블록의 블렌딩 가중치 인덱스를 도출하기 위한 오프셋 값들의 도출 프로세스는 각도들의 수 및/또는 상기 shiftHor의 값에 의존하는, 방법.
  14. 제11항에 있어서, 상기 현재 비디오 블록의 모션 인덱스를 도출하기 위한 오프셋 값들의 도출 프로세스는 각도들의 수 및/또는 상기 shiftHor의 값에 의존하는, 방법.
  15. 제11항에 있어서, 룩업 테이블이 상기 거리 세트를 계산하는 데 사용되고, 상기 룩업 테이블의 크기는 상기 각도 세트에 적어도 부분적으로 기초하는, 방법.
  16. 제15항에 있어서, 상기 룩업 테이블의 값들은 상기 룩업 테이블의 상기 크기에 기초하여 결정되는, 방법.
  17. 제1항에 있어서, A 및 B가 상기 기하학적 분할 모드에 대한 가중 샘플 예측 프로세스에 사용되는 2 개의 입력 어레이 predSamplesLA 및 predSamplesLB를 나타내고 PART1 및 PART2가 상기 현재 비디오 블록의 예측된 블록의 출력된 가중 예측 샘플 값들의 도출을 위한 A 및 B의 표현들인 경우에, PART1 및 PART2가 A와 동일한지 B와 동일한지는 각도 인덱스들 T1 및 T2에 의존하는, 방법.
  18. 제1항에 있어서, 상기 기하학적 분할 모드에 대한 모션 벡터 저장 프로세스에서 사용되는 변수 partIdx는 각도 인덱스들 T1 및 T2에 기초하여 0 또는 1로 설정되고, 상기 partIdx는 모션 저장을 위한 모션 벡터들을 할당하기 위한 다른 변수 sType을 도출하는 데 사용되는, 방법.
  19. 비디오 프로세싱 방법으로서,
    비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 현재 비디오 블록의 하나 이상의 치수 및/또는 상기 현재 비디오 블록의 상기 하나 이상의 치수의 수학적 함수에 의존하는 규칙에 기초하여 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  20. 제19항에 있어서, 상기 기하학적 분할 모드는 삼각 예측 모드(TPM), 기하학적 병합 모드(GEO), 및/또는 웨지 예측 모드 중 적어도 하나를 포함하는, 방법.
  21. 제19항 또는 제20항에 있어서, 상기 기하학적 분할 모드는 상기 현재 비디오 블록을 2 개 이상의 서브영역으로 분할하는 것을 포함하고, 적어도 하나의 서브영역은 QT, BT, 및/또는 파티션을 포함하지 않는, 방법.
  22. 제19항 내지 제21항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 상기 현재 비디오 블록의 블록 폭, 블록 높이, 및/또는 종횡비에 의존하는, 방법.
  23. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W >= T1이고/이거나 H >= T2이고/이거나 W * H < T3이고/이거나 W * H > T4인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
  24. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W >= T1이고/이거나 H >= T2이고/이거나 W * H <= T3이고/이거나 W * H >= T4인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
  25. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W*H < T1 || (W*H <= T2 && W/H< = T3 && H/W <= T4)인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, T3, 및 T4는 상수 값들인, 방법.
  26. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W*H < T1 || (W*H <= T2 && abs(logW - logH) <= T3)인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, 및 T3은 상수 값들인, 방법.
  27. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W*H <= T1 && W/H <=T2 && H/W <= T3인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, T1, T2, 및 T3은 상수 값들인, 방법.
  28. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W>=Tx이고 H >= Ty인 경우에 상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Tx, Ty는 상수 값들인, 방법.
  29. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W>N이고/이거나 H>M인 경우에 상기 기하학적 분할 모드가 적용되지 않는다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, N, M은 상수 값들인, 방법.
  30. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 W=N이고/이거나 H=M인 경우에 상기 기하학적 분할 모드가 적용되지 않는다고 지정하며, 상기 현재 비디오 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, N, M은 상수 값들인, 방법.
  31. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 하나 이상의 이하의 조건이 충족되는 경우에:
    g) W < T1이고/이거나 W > T2이고/이거나 W = T3이다
    h) H < T4이고/이거나 H > T5이고/이거나 H = T6이다
    i) W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
    j) W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
    k) H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
    l) Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
    상기 기하학적 분할 모드가 적용되지 않는다고 지정하며, 상기 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Ti ( i=1...17)는 상수 값들인, 방법.
  32. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 하나 이상의 이하의 조건이 충족되는 경우에:
    g) W < T1이고/이거나 W > T2이고/이거나 W = T3이다
    h) H < T4이고/이거나 H > T5이고/이거나 H = T6이다
    i) W * H < T7이고/이거나 W*H > T8이고/이거나 W*H = T8이다
    j) W/H > T9이고/이거나 W/H > T10이고/이거나 W/H = T11이다
    k) H/W > T12이고/이거나 H/W > T13이고/이거나 H/W = T14이다
    l) Abs(logW - logH) > T15이고/이거나 Abs(logW - logH) < T16이고/이거나 Abs(logW - logH) = T17이다
    상기 기하학적 분할 모드가 적용된다고 지정하며, 상기 블록의 폭 및 높이는, 제각기, W 및 H로 표기되고, Ti ( i=1...17)는 상수 값들인, 방법.
  33. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 상기 현재 비디오 블록의 폭(W) 및/또는 높이(H)의 비율들에 의존하는 수학적 함수에 의존하는, 방법.
  34. 제33항에 있어서, 상기 수학적 함수는 max (H, W)/min (H,W)인, 방법.
  35. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 수학적 함수는 상기 현재 비디오 블록의 폭(W)과 높이(H) 사이의 차이들 및/또는 비율들에 관련되는, 방법.
  36. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 규칙은 폭 대 높이 비율(W/H) 또는 높이 대 폭 비율(H/W)이 X(단, X는 상수 값임) 초과 또는 이상인 경우에 폭(W) 및 높이(H)를 갖는 상기 현재 비디오 블록에 대해 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  37. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 현재 비디오 블록은 루마 블록 또는 크로마 블록인, 방법.
  38. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 현재 비디오 블록은 루마 성분 및 크로마 성분을 포함하고, 상기 규칙은 상기 기하학적 분할 모드가 상기 루마 성분에 대해서는 적용되지만 상기 크로마 블록에 대해서는 적용되지 않는다고 지정하는, 방법.
  39. 제19항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 현재 비디오 블록은 비디오 영역 내의 루마 블록에 대응하고, 상기 비디오 영역 내의 크로마 블록에 대한 상기 기하학적 분할 모드의 적용 가능성은 상기 현재 비디오 블록의 상기 하나 이상의 치수에 의존하는, 방법.
  40. 비디오 프로세싱 방법으로서,
    비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 현재 비디오 블록의 코딩 특성들에 의존하는 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  41. 제40항에 있어서, 상기 코딩 특성들은 최대 변환 크기, 최대 허용 코딩 유닛(CU) 크기, 또는 크로마 포맷 중 적어도 하나를 포함하는, 방법.
  42. 제41항에 있어서, 상기 규칙은 상기 최대 변환 크기보다 큰 폭 및/또는 높이를 갖는 상기 현재 비디오 블록에 대해 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  43. 제41항에 있어서, 상기 규칙은 상기 최대 허용 CU 크기와 동일한 폭 및/또는 높이를 갖는 상기 현재 비디오 블록에 대해 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  44. 제41항에 있어서, 상기 규칙은 4:0:0 크로마 포맷, 4:4:4 크로마 포맷 또는 4:2:2 크로마 포맷을 갖는 상기 현재 비디오 블록에 대해 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  45. 제41항에 있어서, 상기 규칙은 특정 크로마 포맷을 가진 특정 색상 성분을 갖는 상기 현재 비디오 블록에 대해 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  46. 비디오 프로세싱 방법으로서,
    제외 규칙이 비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환에 적용 가능하다고 결정하는 단계 - 상기 제외 규칙은 상기 변환이 상기 현재 비디오 블록에 대해 기하학적 분할 모드와 코딩 툴을 함께 사용하는 것을 허용하지 않는다고 지정함 -; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  47. 제46항에 있어서, 상기 기하학적 분할 모드가 상기 현재 비디오 블록에 적용되는 경우에 상기 비트스트림 표현은 상기 코딩 툴의 사용 표시 및/또는 상기 코딩 툴의 정보를 생략하는, 방법.
  48. 제46항에 있어서, 상기 코딩 툴이 상기 현재 비디오 블록에 적용되는 경우에 상기 비트스트림 표현은 상기 기하학적 분할 모드의 사용 표시 및/또는 상기 기하학적 분할 모드의 정보를 생략하는, 방법.
  49. 제46항 내지 제48항 중 어느 한 항에 있어서, 상기 코딩 툴은 적응적 색상 변환, 이중 트리 코딩 모드, 변환 스킵 모드, 블록 차분 펄스 코드 변조(BDPCM) 코딩 모드, 또는 서브블록 변환(SBT)을 포함하는, 방법.
  50. 비디오 프로세싱 방법으로서,
    비디오와 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 상기 비디오의 상이한 색상 성분들에 대한 상이한 기하학적 분할 모드 인덱스들을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  51. 제50항에 있어서, 상기 규칙은 상기 비디오의 크로마 성분이 상기 비디오의 루마 성분의 기하학적 분할 모드 인덱스와 상이한 기하학적 분할 모드 인덱스를 갖는다고 지정하는, 방법.
  52. 제50항에 있어서, 상기 기하학적 분할 모드는 상기 비디오의 크로마 성분들에 적용되지 않는, 방법.
  53. 제50항에 있어서, 상기 비트스트림 표현은 상기 상이한 기하학적 분할 모드 인덱스들을 포함하는, 방법.
  54. 제53항에 있어서, 상기 상이한 기하학적 분할 모드 인덱스들은 상기 비디오의 루마 성분에 대한 모드 인덱스 및 상기 비디오의 크로마 성분들에 대한 모드 인덱스를 포함하는, 방법.
  55. 제50항에 있어서, 상기 비트스트림 표현은 제2 색상 성분의 기하학적 분할 모드 인덱스를 포함하고, 제1 색상 성분의 기하학적 분할 모드 인덱스는 상기 제2 색상 성분의 상기 모드 인덱스로부터 예측되는, 방법.
  56. 비디오 프로세싱 방법으로서,
    비디오의 현재 픽처의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 기하학적 분할 모드의 적용 가능성을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하며,
    상기 기하학적 분할 모드는 상기 현재 비디오 블록을 2 개 이상의 예측 서브영역으로 분할하는 것을 포함하고,
    상기 규칙은 상기 2 개 이상의 예측 서브영역과 연관된 하나 이상의 참조 픽처의 해상도에 의존하는, 방법.
  57. 제56항에 있어서, 상기 규칙은 상기 2 개 이상의 예측 서브영역과 연관된 상기 참조 픽처들의 해상도들이 서로 상이한 경우에 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  58. 제56항에 있어서, 상기 규칙은 예측 서브영역과 연관된 참조 픽처의 해상도가 상기 현재 픽처의 해상도와 상이한 경우에 상기 기하학적 분할 모드가 적용되지 않는다고 지정하는, 방법.
  59. 제56항에 있어서, 상기 규칙은 예측 서브영역과 연관된 참조 픽처의 해상도가 상기 현재 픽처의 해상도와 상이한 경우에 상기 기하학적 분할 모드가 적용된다고 지정하는, 방법.
  60. 제56항 내지 제59항 중 어느 한 항에 있어서, 상기 현재 픽처의 해상도는 상기 현재 픽처의 폭 또는 높이를 지칭하거나 상기 픽처 내의 윈도우를 지칭하는, 방법.
  61. 비디오 프로세싱 방법으로서,
    비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 비트스트림 표현은 포맷 규칙을 준수하고,
    상기 포맷 규칙은 상기 현재 비디오 블록에 대해 기하학적 분할 모드가 디스에이블된 경우에 상기 비트스트림 표현이 상기 기하학적 분할 모드에 관련된 신택스 요소를 생략한다고 지정하는, 방법.
  62. 제61항에 있어서, 상기 신택스 요소는 wedge_partition_idx, merge_wedge_idx0, 또는 merge_wedge_idx1 중 적어도 하나를 포함하는, 방법.
  63. 제61항에 있어서, 상기 비트스트림 표현에 포함되지 않은 상기 신택스 요소는 기본 값인 것으로 추론되는, 방법.
  64. 제61항에 있어서, 상기 기하학적 분할 모드가 디스에이블되거나 허용되지 않는 경우에 상기 기하학적 분할 모드에 관련된 시맨틱 변수들은 기본 값인 것으로 추론되는, 방법.
  65. 비디오 프로세싱 방법으로서,
    비디오의 하나 이상의 비디오 블록을 포함하는 비디오 유닛과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 상기 비디오 유닛의 상기 하나 이상의 비디오 블록을 코딩하는 데 다수의 기하학적 분할 모드 세트들이 허용된다고 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  66. 제65항에 있어서, 상기 규칙은 상기 다수의 세트들 중에서의 한 세트의 선택이 디코딩된 정보에 의존한다고 지정하는, 방법.
  67. 제66항에 있어서, 상기 디코딩된 정보는 비디오 블록의 치수 및/또는 형상을 포함하는, 방법.
  68. 제65항에 있어서, 상기 규칙은 상기 다수의 세트들 중 적어도 2 개가 상이한 수의 허용된 기하학적 분할 모드들을 갖는다고 지정하는, 방법.
  69. 제65항에 있어서, 상기 규칙은 상기 다수의 세트들 중 T 개의 세트가 동일한 수의 허용된 기하학적 분할 모드들을 갖지만 상기 T 개의 세트 중 하나에는 포함된 적어도 하나의 기하학적 분할 모드가 상기 T 개의 세트 중 다른 하나에서는 제외된다고 지정하는, 방법.
  70. 제65항에 있어서, 상기 규칙은 상기 다수의 세트들 중 T 개의 세트가 동일한 기하학적 분할 모드를 갖지만 적어도 하나의 기하학적 분할 모드가 상기 T 개의 세트 중 임의의 2 개에 대해 상이한 위치에 배열된다고 지정하는, 방법.
  71. 제65항에 있어서, 기하학적 분할 모드 인덱스를 어떻게 시그널링할지는 대응하는 허용된 기하학적 분할 모드 세트에 의존하는, 방법.
  72. 제65항에 있어서, 디코딩된 기하학적 분할 모드 인덱스는 대응하는 기하학적 분할 모드에 의존하는, 방법.
  73. 제65항에 있어서, 상기 비트스트림 표현에서 비디오 블록에 대해 사용될 상기 기하학적 분할 모드들의 총 개수는 상수 값보다 작은 수로서 정의되는, 방법.
  74. 제65항에 있어서, 상기 비트스트림 표현에서 비디오 블록에 대해 시그널링될 상기 기하학적 분할 모드들의 총 개수는 상수 값보다 작은 수로서 정의되는, 방법.
  75. 제73항 또는 제74항에 있어서, 상기 수가 시그널링되는, 방법.
  76. 비디오 프로세싱 방법으로서,
    비디오 블록들을 포함하는 비디오와 상기 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 변환 동안, 제1 개수의 기하학적 분할 모드들은 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 이용 가능하고, 제2 개수의 기하학적 분할 모드들은 상기 비트스트림 표현에서의 코딩에 이용 가능하며, 제3 개수의 기하학적 분할 모드들은 상기 비트스트림 표현에서의 시그널링에 이용 가능하고, 상기 제1 개수 및/또는 상기 제2 개수 및/또는 상기 제3 개수는 상기 비디오 블록들의 대응하는 치수들에 적어도 기초하는, 방법.
  77. 제76항에 있어서, 상기 제2 개수 및/또는 상기 제3 개수는 상기 제1 개수와 상이한, 방법.
  78. 제76항에 있어서, 상기 제2 개수는 상기 제3 개수와 동일한, 방법.
  79. 제76항에 있어서, 상기 제2 개수 및/또는 상기 제3 개수는 상기 제1 개수보다 작은, 방법.
  80. 제76항에 있어서, 상기 제2 개수 및/또는 상기 제3 개수는 상기 비디오 블록들의 상이한 블록 카테고리들에 대해 상이하게 정의되는, 방법.
  81. 제80항에 있어서, 비디오 블록의 카테고리는 상기 비디오 블록의 폭과 높이의 비율들, 상기 비디오 블록의 상기 폭과 상기 높이의 수학적 함수, 또는 상기 비디오 블록의 치수에 기초하는, 방법.
  82. 제81항에 있어서, 상기 제1 블록의 상기 치수가 하나 이상의 임계 조건을 충족시킬 때 상기 제2 개수 및/또는 상기 제3 개수는 상기 제1 개수보다 작은, 방법.
  83. 제80항에 있어서, 상기 비디오 블록의 각각의 카테고리에 대한 상기 제2 개수 및/또는 상기 제3 개수에 대해 고정 숫자 세트가 정의되는, 방법.
  84. 제80항에 있어서, 상기 비디오 블록의 각각의 카테고리에 대한 상기 제2 개수 및/또는 상기 제3 개수는 상기 비트스트림 표현에 포함되는, 방법.
  85. 제80항에 있어서, 상기 비디오 블록의 각각의 카테고리에 대한 상기 제2 개수 및/또는 상기 제3 개수는 미리 정의되는, 방법.
  86. 제80항에 있어서, 루마 블록의 폭 및/또는 높이는 상기 제2 개수 및/또는 상기 제3 개수를 도출하는 데 사용되는, 방법.
  87. 비디오 프로세싱 방법으로서,
    규칙에 따라 비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 규칙은 제1 기하학적 분할 모드 인덱스 값이 상기 현재 비디오 블록의 상기 비트스트림 표현에서 시그널링되고 제2 기하학적 분할 모드 인덱스 값이 상기 현재 비디오 블록의 분할 각도 인덱스 및/또는 분할 거리 인덱스를 계산하는 데 사용된다고 지정하며, 상기 제1 기하학적 분할 모드 인덱스 값은 상기 제2 기하학적 분할 모드 인덱스 값과 상이한, 방법.
  88. 제87항에 있어서, 상기 현재 비디오 블록은 상기 현재 비디오 블록의 폭 및/또는 높이에 기초하여 특정 카테고리와 연관되고, 상기 특정 카테고리에 대해 기하학적 분할 모드들, 분할 각도들, 및/또는 분할 거리들의 전체 세트의 서브세트가 사용되는, 방법.
  89. 제87항에 있어서, 적어도 하나의 매핑 테이블은 상기 제1 기하학적 분할 모드 인덱스 값과 상기 제2 기하학적 분할 모드 인덱스 값 사이의 관계를 정의하는, 방법.
  90. 제89항에 있어서, 상기 적어도 하나의 매핑 테이블은 상기 비트스트림 표현에 포함되는, 방법.
  91. 제89항에 있어서, 상기 적어도 하나의 매핑 테이블은 미리 정의되는, 방법.
  92. 제87항에 있어서, N 개의 매핑 테이블이 상기 변환에 사용되고 N은 상기 비디오 블록들의 블록 카테고리들의 수에 의존하는 상수 값인, 방법.
  93. 제92항에 있어서, 상기 N 개의 매핑 테이블의 길이들은 상기 비디오 블록들의 상기 블록 카테고리들에 의존하는, 방법.
  94. 비디오 프로세싱 방법으로서,
    비디오의 현재 비디오 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 수행하는 단계
    를 포함하며,
    상기 현재 비디오 블록의 기하학적 분할 모드 인덱스는 상기 기하학적 분할 모드 인덱스의 이진화가 규칙에 따라 수행되도록 상기 비트스트림에 코딩되는, 방법.
  95. 제94항에 있어서, 상기 규칙은 상기 이진화가 상기 현재 비디오 블록의 디코딩된 정보에 의존한다고 지정하는, 방법.
  96. 제95항에 있어서, 상기 디코딩된 정보는 상기 현재 비디오 블록의 치수 및/또는 상기 현재 비디오 블록의 카테고리를 포함하는, 방법.
  97. 제94항에 있어서, 상기 규칙은 절단된 이진 코드가 상기 이진화에 사용된다고 지정하는, 방법.
  98. 제97항에 있어서, 상기 비트스트림 표현에 포함된 상기 기하학적 분할 모드 인덱스는 분할 각도 인덱스 및/또는 분할 거리 인덱스를 도출하는 데 사용되는 도출된 기하학적 분할 모드 인덱스와 상이한, 방법.
  99. 제94항에 있어서, 상기 규칙은 K차 지수 골롬(EG) 코딩이 상기 이진화에 사용된다고 지정하고, K는 정수인, 방법.
  100. 제94항에 있어서, 상기 규칙은 콘텍스트 코딩이 상기 기하학적 분할 모드 인덱스를 코딩하는 데 사용된다고 지정하는, 방법.
  101. 제94항에 있어서, 상기 규칙은 상기 기하학적 분할 모드 인덱스의 처음 X 개의 빈이 콘텍스트 코딩에 의해 코딩되고 나머지 빈이 콘텍스트 모델링 없이 바이패스 코딩에 의해 코딩된다고 지정하는, 방법.
  102. 비디오 프로세싱 방법으로서,
    비디오의 비디오 유닛의 크로마 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 규칙에 따라 크로마 블록에 대한 블렌딩 가중치들 및/또는 모션 저장 가중치들을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하며,
    상기 크로마 블록에 기하학적 분할 모드가 적용되고,
    상기 규칙은 대응하는 루마 샘플에 대한 상기 크로마 블록 내의 특정 크로마 샘플의 상대 위치를 나타내는 크로마 샘플 위치 유형에 의존하는, 방법.
  103. 제102항에 있어서, 상기 비디오 유닛은 시퀀스 파라미터 세트(SPS), 비디오 파라미터 세트(VPS), 픽처 파라미터 세트(PPS), 픽처 헤더, 서브픽처, 슬라이스, 슬라이스 헤더, 타일, 브릭, 코딩 트리 유닛, 또는 가상 파이프라인 데이터 유닛(VPDU)을 포함하는, 방법.
  104. 제102항에 있어서, 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형이 비디오 유닛 레벨에서 시그널링되는, 방법.
  105. 제104항에 있어서, 상기 비트스트림 표현은 상이한 크로마 위치 유형들 사이에서 전환하기 위한 플래그를 포함하는, 방법.
  106. 제105항에 있어서, 상기 플래그는 기하학적 분할 모드에서의 좌측 상단 다운샘플링된 루마 샘플이 좌측 상단 루마 샘플과 동일 위치에 있는지 여부를 지정하거나 상기 플래그는 상기 좌측 상단 다운샘플링된 루마 샘플이 수평으로는 상기 좌측 상단 루마 샘플과 동일한 위치에 있지만 수직으로는 상기 좌측 상단 루마 샘플에 대해 상대적으로 시프트되는지 여부를 지정하는, 방법.
  107. 제104항에 있어서, 4:2:0 크로마 포맷 또는 4:2:2 크로마 포맷을 갖는 상기 크로마 블록에 대한 상기 다운샘플링 필터의 상기 유형이 시그널링되는, 방법.
  108. 제104항에 있어서, 상기 비트스트림 표현은 기하학적 분할 예측에 사용되는 크로마 다운샘플링 필터의 유형을 지정하기 위한 플래그를 포함하는, 방법.
  109. 제102항에 있어서, 크로마 샘플들에 대한 블렌딩 가중치들의 도출에 사용되는 다운샘플링 필터의 유형이 비디오 유닛 레벨에서 시그널링되는, 방법.
  110. 제109항에 있어서, 크로마 서브샘플링 필터 유형과 크로마 포맷 유형 사이의 대응 관계를 지정하기 위한 룩업 테이블이 정의되는, 방법.
  111. 제102항에 있어서, 상기 크로마 블록의 기하학적 분할 예측에 사용되는 다운샘플링 필터는 상기 크로마 샘플 위치 유형에 의존하는, 방법.
  112. 제111항에 있어서, 상기 크로마 블록이 특정 크로마 샘플 위치 유형을 갖는 경우에 상기 크로마 블록에 대한 크로마 가중치들은 동일 위치 좌측 상단 루마 가중치들로부터 서브샘플링되는, 방법.
  113. 제111항에 있어서, 상기 크로마 블록이 특정 크로마 샘플 위치 유형을 갖는 경우에 지정된 X-탭 필터가 크로마 가중치들의 서브샘플링에 사용되는, 방법.
  114. 제1항 내지 제113항 중 어느 한 항에 있어서, 상기 기하학적 분할 모드는 기하학적 분할 모드 세트로부터 선택되고, 상기 기하학적 분할 모드 세트는 블록을 2 개의 파티션 - 그 중 적어도 하나는 비정사각형 및 비직사각형임 - 으로 분할하는 하나 이상의 기하학적 분할 모드를 포함하는, 방법.
  115. 제1항 내지 제114항 중 어느 한 항에 있어서, 상기 변환은 상기 비디오를 상기 비트스트림 표현으로 인코딩하는 것을 포함하는, 방법.
  116. 제1항 내지 제114항 중 어느 한 항에 있어서, 상기 변환은 상기 비트스트림 표현으로부터 상기 비디오를 디코딩하는 것을 포함하는, 방법.
  117. 비디오 프로세싱 장치로서, 제1항 내지 제116항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는, 비디오 프로세싱 장치.
  118. 프로그램 코드를 저장하는 컴퓨터 판독 가능 매체로서, 상기 프로그램 코드는, 실행될 때, 프로세서로 하여금 제1항 내지 제116항 중 어느 하나 이상의 항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
  119. 컴퓨터 판독 가능 매체로서, 위의 방법들 중 어느 한 방법에 따라 생성되는 코딩된 표현 또는 비트스트림 표현을 저장하는, 컴퓨터 판독 가능 매체.
KR1020227016716A 2019-11-30 2020-11-27 기하학적 분할을 사용한 단순화된 인터 예측 KR20220101638A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
CN2019122256 2019-11-30
CNPCT/CN2019/122256 2019-11-30
CNPCT/CN2020/071032 2020-01-08
CN2020071032 2020-01-08
CNPCT/CN2020/071552 2020-01-10
CN2020071552 2020-01-10
PCT/CN2020/132162 WO2021104433A1 (en) 2019-11-30 2020-11-27 Simplified inter prediction with geometric partitioning

Publications (1)

Publication Number Publication Date
KR20220101638A true KR20220101638A (ko) 2022-07-19

Family

ID=76129175

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227016716A KR20220101638A (ko) 2019-11-30 2020-11-27 기하학적 분할을 사용한 단순화된 인터 예측

Country Status (7)

Country Link
US (2) US11659180B2 (ko)
EP (1) EP4049451A4 (ko)
JP (2) JP7453374B2 (ko)
KR (1) KR20220101638A (ko)
CN (2) CN114902675A (ko)
BR (1) BR112022010230A2 (ko)
WO (1) WO2021104433A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220113533A (ko) * 2019-12-30 2022-08-12 에프쥐 이노베이션 컴퍼니 리미티드 비디오 데이터를 코딩하기 위한 디바이스 및 방법
US20230156181A1 (en) * 2021-11-17 2023-05-18 Mediatek Inc. Methods and Apparatuses for a High-throughput Video Encoder or Decoder

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102484706B (zh) 2009-06-26 2015-09-16 汤姆森特许公司 使用自适应几何划分进行视频编码和解码的方法及装置
CN102611884B (zh) 2011-01-19 2014-07-09 华为技术有限公司 图像编解码方法及编解码设备
CN103561276B (zh) 2013-11-07 2017-01-04 北京大学 一种图像视频编解码方法
US20160277751A1 (en) * 2015-03-19 2016-09-22 Patrick J. Sweeney Packaging/mux and unpackaging/demux of geometric data together with video data
CN115134607A (zh) 2015-06-11 2022-09-30 杜比实验室特许公司 使用自适应去块滤波编码和解码图像的方法及其装置
WO2017059415A1 (en) 2015-10-02 2017-04-06 Vid Scale, Inc. Color correction with a lookup table
WO2017183751A1 (ko) 2016-04-22 2017-10-26 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
CN109417625B (zh) 2016-05-05 2023-02-28 交互数字麦迪逊专利控股公司 编码或解码视频的装置及方法
US20180041778A1 (en) 2016-08-02 2018-02-08 Qualcomm Incorporated Geometry transformation-based adaptive loop filtering
JP2019530311A (ja) 2016-09-02 2019-10-17 ヴィド スケール インコーポレイテッド 360度ビデオ情報をシグナリングするための方法およびシステム
WO2018067952A1 (en) 2016-10-07 2018-04-12 Vid Scale, Inc. Geometry conversion and frame packing associated with 360-degree videos
CN109983776B (zh) 2016-11-18 2023-09-29 株式会社Kt 视频信号处理方法和设备
KR20200022013A (ko) 2017-06-30 2020-03-02 샤프 가부시키가이샤 비디오 코딩을 위한 비디오 블록들로 픽처의 기하학적 적응성 블록 분할을 위한 시스템들 및 방법들
WO2019083334A1 (ko) 2017-10-26 2019-05-02 한국전자통신연구원 비대칭 서브 블록 기반 영상 부호화/복호화 방법 및 장치
WO2019151284A1 (ja) 2018-01-30 2019-08-08 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN111147850B (zh) 2018-11-02 2022-10-11 北京字节跳动网络技术有限公司 用于基于历史的运动矢量预测的表维护
WO2020094075A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Multiple merge lists and orders for inter prediction with geometric partitioning
CN109327703A (zh) * 2018-11-13 2019-02-12 长春理工大学 一种基于不同采样块的深度图编解码方法
CN109299060A (zh) * 2018-11-22 2019-02-01 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于影像矩形分块的分布式文件方法及系统
CN113170112B (zh) 2018-11-22 2024-05-10 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的构建方法
CN113613013B (zh) * 2019-06-21 2022-09-09 华为技术有限公司 视频解码设备、由解码设备实现的译码方法和解码器
KR20220024773A (ko) * 2019-06-24 2022-03-03 알리바바 그룹 홀딩 리미티드 동영상 코딩시 모션 필드 저장 방법 및 장치
WO2021129694A1 (en) 2019-12-24 2021-07-01 Beijing Bytedance Network Technology Co., Ltd. High level syntax for inter prediction with geometric partitioning

Also Published As

Publication number Publication date
US20220303533A1 (en) 2022-09-22
WO2021104433A1 (en) 2021-06-03
EP4049451A1 (en) 2022-08-31
US20230247199A1 (en) 2023-08-03
JP2024012506A (ja) 2024-01-30
BR112022010230A2 (pt) 2023-03-14
CN117729330A (zh) 2024-03-19
JP7453374B2 (ja) 2024-03-19
CN114902675A (zh) 2022-08-12
US11659180B2 (en) 2023-05-23
JP2023503683A (ja) 2023-01-31
EP4049451A4 (en) 2022-12-28

Similar Documents

Publication Publication Date Title
US11431984B2 (en) Constraints on quantized residual differential pulse code modulation representation of coded video
US11700378B2 (en) High level syntax for inter prediction with geometric partitioning
CN114303370B (zh) 视频编解码中预测权重的对准
CN113016183A (zh) 用于空域运动候选列表的构建方法
US11431966B2 (en) Intra coded video using quantized residual differential pulse code modulation coding
US20230247199A1 (en) Simplified Inter Prediction With Geometric Partitioning
WO2021204190A1 (en) Motion vector difference for block with geometric partition
WO2021129682A1 (en) Improvements on merge mode
US20230097850A1 (en) Intra block copy using non-adjacent neighboring blocks
US20220337867A1 (en) Motion vector difference for block with geometric partition
WO2021155865A1 (en) Geometric partitioning mode
US20230262226A1 (en) Sample string processing in intra coding
US20230276044A1 (en) Constraints on intra block copy using non-adjacent neighboring blocks

Legal Events

Date Code Title Description
E902 Notification of reason for refusal