KR20220043109A - 서브 블록 기반 인터 예측의 모션 정밀도 - Google Patents
서브 블록 기반 인터 예측의 모션 정밀도 Download PDFInfo
- Publication number
- KR20220043109A KR20220043109A KR1020227001812A KR20227001812A KR20220043109A KR 20220043109 A KR20220043109 A KR 20220043109A KR 1020227001812 A KR1020227001812 A KR 1020227001812A KR 20227001812 A KR20227001812 A KR 20227001812A KR 20220043109 A KR20220043109 A KR 20220043109A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- motion vector
- picture
- sub
- video
- Prior art date
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 600
- 238000000034 method Methods 0.000 claims abstract description 471
- 239000013598 vector Substances 0.000 claims abstract description 404
- 230000002123 temporal effect Effects 0.000 claims abstract description 128
- 230000009466 transformation Effects 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims description 130
- 238000004590 computer program Methods 0.000 claims description 20
- 238000003672 processing method Methods 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 13
- 230000003044 adaptive effect Effects 0.000 claims description 10
- 238000012935 Averaging Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 55
- 239000000523 sample Substances 0.000 description 173
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 151
- 241000023320 Luma <angiosperm> Species 0.000 description 151
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 139
- 238000009795 derivation Methods 0.000 description 57
- 230000006835 compression Effects 0.000 description 28
- 238000007906 compression Methods 0.000 description 28
- 238000006243 chemical reaction Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 19
- 239000013074 reference sample Substances 0.000 description 17
- 238000005192 partition Methods 0.000 description 13
- 230000011664 signaling Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000001914 filtration Methods 0.000 description 10
- 238000013138 pruning Methods 0.000 description 10
- 241000723655 Cowpea mosaic virus Species 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 7
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 244000050403 Iris x germanica Species 0.000 description 2
- 244000046052 Phaseolus vulgaris Species 0.000 description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 229910052757 nitrogen Inorganic materials 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100323029 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) alc-1 gene Proteins 0.000 description 1
- 101000804730 Xenopus laevis Protein Wnt-1 Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052698 phosphorus Inorganic materials 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
- G06F7/49978—Rounding towards zero
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/53—Multi-resolution motion estimation; Hierarchical motion estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
서브 블록 기반 인터 예측 방법을 포함하는 디지털 비디오 코딩을 위한 장치, 시스템 및 방법이 설명된다. 비디오 처리를 위한 예시적인 방법은 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 서브 블록 기반 병합 후보 목록에서 최대 후보 수(ML) 및/또는 시간적 모션 벡터 예측(TMVP)이 변환 동안 사용을 위해 활성화되었는지 여부 또는 현재 픽처 레퍼런스(CPR) 코딩 모드가 변환을 위해 사용되는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 후보를 추가할지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
Description
이 특허 문서는 이미지 및 비디오 인코딩 및 디코딩에 관한 것이다.
파리협약에 따른 대응하는 특허법 및/또는 규칙에 따라, 이 출원은 2019년 8월 13일에 출원된 국제 특허출원 번호 PCT/CN2019/100396, 및 2019년 9월 22일에 출원된 국제 특허 출원 번호 PCT/CN2019/107159의 우선 순위 및 혜택을 적시에 청구하기 위해 이루어졌다. 법에 따라 모든 목적을 위해, 상기 출원의 전체 공개는 이 출원의 공개의 일환으로 참조에 의해 통합된다.
비디오 압축의 진보에도 불구하고, 디지털 비디오는 여전히 인터넷 및 기타 디지털 통신 네트워크에서 가장 큰 대역폭 사용을 차지한다. 비디오를 수신하고 표시할 수 있는 연결된 사용자 장치의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요는 계속해서 증가할 것으로 예상된다.
서브 블록 기반 인터 예측 방법(sub-block based inter prediction method)을 포함하는 디지털 비디오 코딩(digital video coding)과 관련된 장치, 시스템 및 방법이 설명된다. 설명된 방법은 기존 비디오 코딩 표준(예를 들어, 고효율 비디오 코딩(High Efficiency Video Coding)(HEVC) 및/또는 범용 비디오 코딩(Versatile Video Coding)(VVC)) 및 향후 비디오 코딩 표준 또는 비디오 코덱 모두에 적용될 수 있다.
하나의 대표적인 측면에서, 개시된 기술은 비디오 처리 방법(video processing)을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록(current block)과 비디오의 비트 스트림 표현(bitstream representation) 사이의 변환(conversion)을 위해, 서브 블록 기반 병합 후보 목록(sub-block based merge candidate list)에서 최대 후보 수(ML) 및/또는 시간적 모션 벡터 예측(temporal motion vector prediction)(TMVP)이 변환 동안 사용을 위해 활성화되었는지 여부 또는 현재 픽처 레퍼런스(current picture referencing)(CPR) 코딩 모드가 변환을 위해 사용되는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에 서브 블록 기반 시간적 모션 벡터 예측(sub-block based temporal motion vector prediction)(SbTMVP) 후보를 추가할지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 변환 동안 시간적 모션 벡터 예측(TMVP), 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP), 및 아핀 코딩 모드(affine coding mode)가 사용을 위해 활성화되었는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 최대 후보 수(ML)를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 제1 비디오 세그먼트(first video segment)의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 제1 비디오 세그먼트 레벨에서 시간적 모션 벡터 예측(TMVP) 모드가 비활성화되어 변환에 대해 서브 블록 기반 모션 벡터 예측(SbTMVP) 모드가 비활성화된 것으로 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함하고, 비트 스트림 표현은 TMVP 모드의 표시와 관련하여, SbTMVP 모드의 표시가 포함되는지 여부 및/또는 병합 후보 목록에서 SbTMVP 모드의 표시의 위치를 지정하는 포멧을 준수한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴(tool) 또는 시간적 모션 벡터 예측(TMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, SbTMVP 툴 또는 TMVP 툴과 연관된 모션 벡터의 압축에 기초하는 마스크를 사용하여 현재 블록 또는 현재 블록의 서브 블록의 대응 위치의 좌표를 선택적으로 마스킹 하고, 마스크의 적용(application)은 좌표의 값과 마스크의 값 사이의 비트 AND 연산을 계산하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 비디오 세그먼트의 현재 블록의 하나 이상의 특성에 기초하여, 현재 블록에 대한 서브 블록 기반 모션 벡터 예측(SbTMVP) 툴의 적용을 위해 현재 블록의 유효한 대응 영역(valid corresponding region)을 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 기본 모션 벡터(default motion vector)를 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 기본 모션 벡터는 현재 블록의 중앙 위치와 연관된 병치된 픽처에서 대응 위치를 커버하는 블록으로부터 모션 벡터가 획득되지 않은 경우에 결정된다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 비디오 세그먼트의 현재 블록에 대해, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴 또는 시간적 모션 벡터 예측(TMVP) 툴이 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처 인 경우, 여기서 M 및 X는 정수이고, 및 여기서 X = 0 또는 X = 1이고, 현재 블록의 현재 픽처가 서브 블록 세그먼트에 대해 비활성화되는 것으로 추론하는 단계, 및 추론하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록에 대해, 현재 블록의 현재 픽처가 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처 인 경우 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴의 적용이 활성화되는 것으로 결정하는 단계 - M 및 X는 정수임 -; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서 현재 블록은 서브 블록 기반 코딩 툴을 사용하여 코딩 되고, 변환을 수행하는 단계는 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴이 활성화되거나 비활성화되는 경우 통합된 방법으로 서브 블록 병합 인덱스를 코딩 하기 위해 복수의 빈(N)을 사용하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 현재 블록을 포함하는 현재 픽처와 다른 픽처에서 대응하는 블록을 찾기 위해 SbTMVP 툴에 의해 사용되는 모션 벡터를 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 현재 블록의 변환에 대해 아핀 예측이 가능한지 여부에 기초하여 제로 모션 아핀 병합 후보가 서브 블록 병합 후보 목록에 삽입되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 서브 블록 병합 후보 목록을 사용하는 비디오의 비트 스트림 표현 사이의 변환을 위해, 서브 블록 병합 후보 목록이 충족되지 않은 경우 제로 모션 비-아핀 패딩 후보(non-affine padding candidate)를 서브 블록 병합 후보 목록에 삽입하는 단계; 및 삽입하는 단계 이후, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 모션 벡터가 병치된 픽처에서 대응 위치를 커버하는 블록의 하나 이상의 모션 벡터로부터 유도된다는 것을 결정하는 규칙을 사용하여 모션 벡터를 결정하는 단계; 및 모션 벡터에 기초하여, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 콜 픽처에서 현재 블록 또는 현재 블록의 서브 블록과 연관된 시간 블록이 동일한 픽처에서 이전에 코딩된 샘플에 기초하여 비디오 유닛이 복원되는 코딩 모드를 사용하여 코딩되는 경우 변환을 위한 기본 모션 후보와 함께 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 툴를 사용하기로 결정하는 단계; 및 기본 모션 후보에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환의 일부인 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 프로세스에 대해, 현재 블록의 서브 블록에 대한 서브 블록 모션 정보 유도 프로세스에서 사용되는 위치의 위치를 기반으로 sbTMVP 프로세스에 대한 기본 모션 정보를 유도하는 단계; 및 상기 기본 모션 정보에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 측면에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하기 위해 사용될 수도 있다. 이 방법은, 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 툴를 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록의 현재 픽처와 상이한 픽처에서 대응하는 블록을 위치시키기 위해 사용되는 수정된 모션 벡터를 결정하는 단계 - 수정된 모션 벡터는 sbTMVP 툴에서 예측에 사용되는 모션 벡터를 정수 정밀도로 오른쪽 시프트함으로써 생성됨 -; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 측면에서, 비디오 인코더 장치가 개시된다. 비디오 인코더 장치는 여기에 설명된 방법을 구현하도록 구성된 프로세서를 포함한다.
또 다른 예시적인 측면에서, 비디오 디코더 장치가 개시된다. 비디오 디코더 장치는 여기에 설명된 방법을 구현하도록 구성된 프로세서를 포함한다.
또 다른 측면에서, 코드가 저장된 컴퓨터 판독 가능 매체가 개시된다. 이 코드는 프로세서에 의해 실행될 때 프로세서가 본 문서에 설명된 방법을 구현하도록 한다.
이러한 측면 및 기타 측면은 본 문서에 설명되어 있다.
도 1은 병합 후보 목록 구축을 위한 유도 프로세스의 예이다.
도 2는 공간적 병합 후보들의 예시적인 위치를 나타낸다.
도 3은 공간적 병합 후보의 중복 확인을 위해 고려되는 후보 쌍의 예를 나타낸다.
도 4a 및 4b는 N Х 2N 및 2N Х N 파티션의 제2 예측 유닛(PU)에 대한 예시적인 위치를 나타낸다.
도 5는 시간적 병합 후보에 대한 모션 벡터 스케일링의 예시적인 예시이다.
도 6은 시간적 병합 후보, C0 및 C1에 대한 예시적인 후보 위치를 나타낸다.
도 7은 결합된 이중 예측 병합 후보의 예를 나타낸다.
도 8은 모션 벡터 예측 후보들에 대한 예시적인 유도 프로세스를 나타낸다.
도 9는 공간적 모션 벡터 후보에 대한 모션 벡터 스케일링의 예시적인 예시이다.
도 10은 CU에 대한 대안적인 시간적 모션 벡터 예측(ATMVP) 모션 예측의 예를 나타낸다.
도 11은 4 개의 서브 블록(A-D) 및 그 이웃 블록(a-d)을 갖는 하나의 CU의 예를 나타낸다.
도 12는 상이한 MV 정밀도를 갖는 인코딩의 예의 흐름도이다.
도 13a 및 13b는 각각 135도 분할 유형(왼쪽 상단 모서리에서 오른쪽 하단 모서리로 분할) 및 45도 분할 패턴을 나타낸다.
도 14는 이웃 블록의 위치의 예를 나타낸다.
도 15는 위쪽 및 왼쪽 블록의 예를 나타낸다.
도 16a 및 16b는 각각 2 개의 제어점 모션 벡터(CPMV) 및 3 개의 CPMV의 예를 나타낸다.
도 17은 서브 블록 당 아핀 모션 벡터 필드(MVF)의 예를 나타낸다.
도 18a 및 18b는 각각 4 개 및 6 개의 파라미터 아핀 모델의 예를 나타낸다.
도 19는 물려받은 아핀 후보에 대한 AF_INTER에 대한 MVP의 예를 나타낸다.
도 20은 AF_INTER에서 아핀 모션 예측자를 구축하는 예를 나타낸다.
도 21a 및 21b는 AF_MERGE에서 아핀 코딩에서 제어점 모션 벡터의 예를 나타낸다.
도 22는 아핀 병합 모드를 위한 후보 위치의 예를 나타낸다.
도 23은 인트라 픽처 블록 복사 동작의 예를 나타낸다.
도 24는 병치된 픽처에서 유효한 대응 영역의 예를 나타낸다.
도 25는 히스토리 기반 모션 벡터 예측을 위한 예시적인 흐름도를 나타낸다.
도 26은 수정된 병합 목록 구축 프로세스를 나타낸다.
도 27은 현재 블록이 기초 영역(basic region) 내에 있는 경우 제안된 유효한 영역의 일 실시 예를 나타낸다.
도 28은 현재 블록이 기초 영역 내에 있지 않을 때 유효한 영역의 예시적인 실시 예를 나타낸다.
도 29a 및 29b는 각각 기본 모션 정보의 식별을 위한 위치의 기존 및 제안된 예를 각각 나타낸다.
도 30 내지 45는 비디오 처리 방법의 예에 대한 흐름도이다.
도 46은 본 문서에 기술된 비주얼 매체 디코딩 또는 비주얼 매체 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예의 블록도이다.
도 47은 개시된 기술이 구현될 수 있는 예시적인 비디오 처리 시스템의 블록도이다.
도 2는 공간적 병합 후보들의 예시적인 위치를 나타낸다.
도 3은 공간적 병합 후보의 중복 확인을 위해 고려되는 후보 쌍의 예를 나타낸다.
도 4a 및 4b는 N Х 2N 및 2N Х N 파티션의 제2 예측 유닛(PU)에 대한 예시적인 위치를 나타낸다.
도 5는 시간적 병합 후보에 대한 모션 벡터 스케일링의 예시적인 예시이다.
도 6은 시간적 병합 후보, C0 및 C1에 대한 예시적인 후보 위치를 나타낸다.
도 7은 결합된 이중 예측 병합 후보의 예를 나타낸다.
도 8은 모션 벡터 예측 후보들에 대한 예시적인 유도 프로세스를 나타낸다.
도 9는 공간적 모션 벡터 후보에 대한 모션 벡터 스케일링의 예시적인 예시이다.
도 10은 CU에 대한 대안적인 시간적 모션 벡터 예측(ATMVP) 모션 예측의 예를 나타낸다.
도 11은 4 개의 서브 블록(A-D) 및 그 이웃 블록(a-d)을 갖는 하나의 CU의 예를 나타낸다.
도 12는 상이한 MV 정밀도를 갖는 인코딩의 예의 흐름도이다.
도 13a 및 13b는 각각 135도 분할 유형(왼쪽 상단 모서리에서 오른쪽 하단 모서리로 분할) 및 45도 분할 패턴을 나타낸다.
도 14는 이웃 블록의 위치의 예를 나타낸다.
도 15는 위쪽 및 왼쪽 블록의 예를 나타낸다.
도 16a 및 16b는 각각 2 개의 제어점 모션 벡터(CPMV) 및 3 개의 CPMV의 예를 나타낸다.
도 17은 서브 블록 당 아핀 모션 벡터 필드(MVF)의 예를 나타낸다.
도 18a 및 18b는 각각 4 개 및 6 개의 파라미터 아핀 모델의 예를 나타낸다.
도 19는 물려받은 아핀 후보에 대한 AF_INTER에 대한 MVP의 예를 나타낸다.
도 20은 AF_INTER에서 아핀 모션 예측자를 구축하는 예를 나타낸다.
도 21a 및 21b는 AF_MERGE에서 아핀 코딩에서 제어점 모션 벡터의 예를 나타낸다.
도 22는 아핀 병합 모드를 위한 후보 위치의 예를 나타낸다.
도 23은 인트라 픽처 블록 복사 동작의 예를 나타낸다.
도 24는 병치된 픽처에서 유효한 대응 영역의 예를 나타낸다.
도 25는 히스토리 기반 모션 벡터 예측을 위한 예시적인 흐름도를 나타낸다.
도 26은 수정된 병합 목록 구축 프로세스를 나타낸다.
도 27은 현재 블록이 기초 영역(basic region) 내에 있는 경우 제안된 유효한 영역의 일 실시 예를 나타낸다.
도 28은 현재 블록이 기초 영역 내에 있지 않을 때 유효한 영역의 예시적인 실시 예를 나타낸다.
도 29a 및 29b는 각각 기본 모션 정보의 식별을 위한 위치의 기존 및 제안된 예를 각각 나타낸다.
도 30 내지 45는 비디오 처리 방법의 예에 대한 흐름도이다.
도 46은 본 문서에 기술된 비주얼 매체 디코딩 또는 비주얼 매체 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예의 블록도이다.
도 47은 개시된 기술이 구현될 수 있는 예시적인 비디오 처리 시스템의 블록도이다.
본 문서는 압축 해제되거나 디코딩 된 디지털 비디오 또는 이미지의 품질을 개선하기 위해 비디오 비트 스트림의 디코더에 의해 사용될 수 있는 다양한 기술을 제공한다. 더욱이, 비디오 인코더는 또한 추가 인코딩에 사용되는 디코딩 된 프레임을 재구축하기 위해 인코딩 프로세스 동안 이러한 기술을 구현할 수 있다.
본 문서에서는 이해의 편의를 위해 섹션 제목이 사용되며 실시 예 및 기술을 대응하는 섹션으로 제한하지 않는다. 이와 같이, 한 섹션의 실시 예는 다른 섹션의 실시 예와 결합될 수 있다.
1. 요약
이 특허 문서는 비디오 코딩 기술(video coding technology)과 관련이 있다. 특히, 비디오 코딩에서의 모션 벡터 코딩(motion vector coding)과 관련이 있다. HEVC와 같은 기존 비디오 코딩 표준 또는 최종화될 표준(범용 비디오 코딩(Versatile Video Coding))에 적용될 수 있다. 향후 비디오 코딩 표준 또는 비디오 코덱에도 적용할 수 있다.
2. 서론
비디오 코딩 표준은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준의 개발을 통해 발전했다. ITU-T는 H.261과 H.263을, ISO/IEC는 MPEG-1과 MPEG-4 Visual을, 두 기관은 H.262/MPEG-2 Video와 H.264/MPEG-4 고급 비디오 코딩(advanced video coding)(AVC) 및 H.265/HEVC 표준을 공동 제작했다. H.262 이후, 비디오 코딩 표준은 시간적 예측과 변형 코딩이 사용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC를 넘어선 미래의 비디오 코딩 기술을 탐구하기 위해 2015 년에 VCEG와 MPEG가 공동으로 JVET(Joint Video Exploration Team)를 설립했다. 그 이후로 많은 새로운 방법이 JVET에서 채택되어 JEM(Joint Exploration Model)이라는 레퍼런스 소프트웨어에 포함되었다. 2018 년 4 월, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 사이의 JVET(Joint Video Expert Team)는 HEVC 대비 50 % 비트 레이트 감소를 목표로하는 VVC 표준 작업을 위해 생성되었다.
VVC 초안의 최신 버전, 즉 범용 비디오 코딩(Versatile Video Coding)(드래프트 3(Draft 3))은 다음에서 찾을 수 있다:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L1001-v2.zip VVC
VTM이라 하는, 최신 레퍼런스 소프트웨어는 다음에서 찾을 수 있다:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-3.0rc1
2.1 HEVC/H.265에서 인터 예측
각 인터 예측 PU(inter-predicted PU)에는 하나 또는 두 개의 레퍼런스 픽처 목록(reference picture list)에 대한 모션 파라미터가 있다. 모션 파라미터에는 모션 벡터와 레퍼런스 픽처 인덱스(eference picture index)가 포함된다. 두 레퍼런스 픽처 목록 중 하나의 사용은 inter_pred_idc를 사용하여 시그널링 될 수도 있다. 모션 벡터는 예측 변수에 대한 델타로 명시적으로 코딩 될 수 있다.
CU가 스킵 모드로 코딩 되면 하나의 PU가 CU와 연결되어 있으며 상당한 잔차 계수가 없으며 코딩 된 모션 벡터 델타 또는 레퍼런스 픽처 인덱스가 없다. 병합 모드는 현재 PU에 대한 모션 파라미터가 공간 및 시간적 후보를 포함하여 이웃 PU에서 얻어지는 경우 지정된다. 병합 모드는 스킵 모드뿐만 아니라 인터 예측된 PU에 적용할 수 있다. 병합 모드의 대안은 모션 파라미터의 명시적 전송이며, 각 레퍼런스 픽처 목록에 대한 모션 벡터(좀 더 정확하게 말하면, 모션 벡터 예측자(predictor)와 비교한 모션 벡터 차이(MVD)), 대응하는 레퍼런스 픽처 인덱스 및 레퍼런스 픽처 목록 사용량은 각 PU당 명시적으로 시그널링 된다. 이러한 모드는 이 공개에서 고급 모션 벡터 예측(AMVP)이라고 명명된다.
시그널링이 두 개의 레퍼런스 픽처 목록 중 하나가 사용됨을 나타낼 때, PU는 한 샘플 블록에서 생성된다. 이를 '단일 예측(uni-prediction)'이라고 한다. 단일 예측은 P 슬라이스와 B 슬라이스 모두에 사용할 수 있다.
시그널링이 두 레퍼런스 픽처 목록이 모두 사용됨을 나타내면 PU는 두 개의 샘플 블록에서 생성된다. 이를 '이중 예측(bi-prediction)'이라고 한다. 이중 예측은 B 슬라이스에만 사용할 수 있다.
다음 텍스트는 HEVC에 지정된 인터 예측 모드에 대한 세부 정보를 제공한다. 설명은 병합 모드로 시작된다.
2.1.1 레퍼런스 픽처 목록
HEVC에서, 인터 예측(inter prediction)이라는 용어는 현재 디코딩 된 픽처 이외의 레퍼런스 픽처의 데이터 요소(data element)(예를 들어, 샘플 값 또는 모션 벡터)에서 유도된 예측을 나타내는 데 사용된다. H.264/AVC와 마찬가지로 여러 레퍼런스 픽처에서 픽처를 예측할 수 있다. 인터 예측에 사용되는 레퍼런스 픽처는 하나 이상의 레퍼런스 픽처 목록으로 구성된다. 레퍼런스 인덱스는 예측 신호를 생성하는 데 사용되어야 하는 목록의 레퍼런스 픽처를 식별한다.
단일 레퍼런스 픽처 목록 인 목록 0(list 0)은 P 슬라이스에 사용되며 두 개의 레퍼런스 픽처 목록인 목록 0과 록록 1(list 1)은 B 슬라이스에 사용된다. 목록 0/1에 포함된 레퍼런스 픽처는 캡처/표시 순서 측면에서 과거와 미래의 픽처 일 수 있다.
2.1.2 병합 모드(Merge Mode)
2.1.2.1 병합 모드 후보 유도(Derivation of candidates for merge mode)
병합 모드를 사용하여 PU를 예측하면, 병합 후보 목록의 항목(entry)을 가리키는 인덱스가 비트 스트림에서 파싱 되어 모션 정보를 검색하는 데 사용된다. 이 목록의 구축은 HEVC 표준에 지정되어 있으며 다음 단계 순서에 따라 요약할 수 있다:
● 단계 1: 초기 후보 유도(Initial candidates derivation)
○ 단계 1.1: 공간적 후보 유도(Spatial candidates derivation)
○ 단계 1.2: 공간적 후보에 대한 중복 확인(Redundancy check for spatial candidate)
○ 단계 1.3: 시간적 후보 유도(Temporal candidates derivation)
● 단계 2: 추가 후보 삽입(Additional candidates insertion)
○ 단계 2.1: 이중 예측 후보 생성(Creation of bi-predictive candidate)
○ 단계 2.2: 제로 모션 후보 삽입(Insertion of zero motion candidate)
또한 도 1에 이들 단계를 개념적으로 묘사되어 있다. 공간적 병합 후보 유도의 경우, 5 개의 서로 다른 위치에 있는 후보 중에서 최대 4 개의 병합 후보가 선택된다. 시간적 병합 후보 유도의 경우, 두 후보 중 최대 하나의 병합 후보가 선택된다. 디코더에서 각 PU에 대해 일정한 수의 후보가 가정되기 때문에, 추가 후보는 후보 수가 슬라이스 헤더에서 시그널링 되는 최대 병합 후보 수(MaxNumMergeCand)에 도달하지 않을 때 생성된다. 후보의 수가 일정하기 때문에 최적 병합 후보의 인덱스는 절단된 단항 이진화(unary binarization)(TU)를 사용하여 인코딩 된다. CU의 크기가 8과 같으면, 현재 CU의 모든 PU는 2N Х 2N 예측 유닛의 병합 후보 목록과 동일한 단일 병합 후보 목록을 공유한다.
다음에서, 앞서 언급한 단계와 연관된 동작에 대해 자세히 설명한다.
2.1.2.2
공간적 후보 유도(Spatial candidates derivation)
공간적 병합 후보의 유도에서, 도 2에 도시된 위치에 위치한 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 유도 순서는 A1, B1, B0, A0 및 B2이다. 위치 B2는 위치 A1, B1, B0, A0의 PU를 사용할 수 없거나(예를 들어, 다른 슬라이스 또는 타일에 속하기 때문에) 인트라 코딩 된 경우에만 고려된다. 위치 A1의 후보가 추가된 후, 나머지 후보의 추가는 동일한 모션 정보를 가진 후보가 목록에서 제외되도록 하는 중복 확인의 대상이 되므로 코딩 효율성이 향상된다. 계산 복잡성을 줄이기 위해 언급된 중복 확인에서 가능한 모든 후보 쌍이 고려되는 것은 아니다. 대신, 도 3에서 화살표로 연결된 쌍만 고려되고 중복 확인에 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 목록에 추가된다. 중복 모션 정보의 또 다른 소스는 2Nx2N과 다른 파티션과 연관된 "제2 PU"이다. 예를 들어, 도 4a 및 4b는 각각 N Х 2N 및 2N Х N의 경우에 대한 제2 PU를 도시한다. 현재 PU가 N Х 2N으로 분할되면 A1 위치의 후보는 목록 구축에 고려되지 않는다. 사실, 이 후보를 추가함으로써 동일한 모션 정보를 갖는 2 개의 예측 유닛으로 이어지게 되며, 이는 코딩 유닛에서 단지 하나의 PU를 갖는 것에 중복된다. 마찬가지로 현재 PU가 2N Х N으로 분할될 때 위치 B1은 고려되지 않는다.
2.1.2.3 시간적 후보 유도(Temporal candidates derivation)
이 단계에서는 하나의 후보 만 목록에 추가된다. 특히, 이 시간적 병합 후보의 유도에서, 스케일링 된 모션 벡터는 주어진 레퍼런스 픽처 목록 내에서 현재 픽처와 가장 작은 POC 차이를 갖는 픽처에 속하는 공동 위치 PU를 기반으로 유도된다. 공존 PU의 유도에 사용될 레퍼런스 픽처 목록은 슬라이스 헤더에서 명시적으로 시그널링 된다.
시간적 병합 후보에 대한 스케일링 된 모션 벡터는 도 5의 점선으로 나타낸 바와 같이 얻어지고, 이는 POC 거리, tb 및 td를 사용하여 함께 배치된 PU의 모션 벡터에서 스케일링 되고, 여기서 tb는 현재 픽처의 레퍼런스 픽처와 현재 픽처 사이의 POC 차이로 정의되고, td는 공존 위치 픽처(co-located picture)의 레퍼런스 픽처와 공존 위치 픽처 사이의 POC 차이로 정의된다. 시간적 병합 후보의 레퍼런스 픽처 인덱스는 0으로 설정된다. 스케일링 프로세스의 실제 구현은 HEVC 사양에 설명되어 있다. B 슬라이스의 경우, 하나는 레퍼런스 픽처 목록 0 용이고 다른 하나는 레퍼런스 픽처 목록 1 용인 2 개의 모션 벡터를 획득하고 결합하여 이중 예측 병합 후보를 만든다.
도 5는 시간적 병합 후보에 대한 모션 벡터 스케일링의 예시이다.
레퍼런스 프레임(reference frame)에 속하는 공존 위치 PU(Y)에서, 시간적 후보에 대한 위치는 도 6에 도시된 바와 같이 후보 C0 및 C1 사이에서 선택된다. 위치 C0의 PU를 사용할 수 없거나 인트라 코딩 되거나 현재 코딩 트리 유닛(LCU(최대 코딩 유닛(largest coding unit)으로 알려진 CTU) 외부에 있는 경우 위치 C1이 사용된다. 그렇지 않으면, 위치 C0이 시간적 병합 후보의 유도에 사용된다.
도 6은 시간적 병합 후보 C0 및 C1에 대한 후보 위치의 예를 도시한다.
2.1.2.4 추가 후보 삽입(Additional candidates insertion)
공간적 및 시간적 병합 후보(spatial and temporal merge candidate) 외에도, 병합 후보에는 결합된 이중예측 병합 후보와 제로 병합 후보의 두 가지 추가 유형이 있다. 결합된 이중 예측 병합 후보는 시간적 및 공간적 병합 후보를 사용하여 생성된다. 결합된 이중 예측 병합 후보는 B 슬라이스에만 사용된다. 결합된 이중 예측 후보는 초기 후보의 제1 레퍼런스 픽처 목록 모션 파라미터와 다른 제2 레퍼런스 픽처 목록 모션 파라미터를 결합함으로써 생성된다. 이 두 튜플(tuple)이 다른 모션 가설을 제공하면 새로운 이중 예측 후보를 형성한다. 하나의 예로, 도 7은 mvL0 및 refIdxL0 또는 mvL1 및 refIdxL1을 갖는 원래 목록(왼쪽)에서 두 개의 후보를 사용하여 최종 목록(오른쪽)에 추가된 결합된 이중 예측 병합 후보를 생성하는 경우를 묘사한다. 이러한 추가 병합 후보를 생성하기 위해 고려되는 조합에 관한 수많은 규칙이 있다.
제로 모션 후보(Zero motion candidate)가 삽입되어 병합 후보 목록의 나머지 항목을 채우므로 MaxNumMergeCand 용량에 도달한다. 이러한 후보는 0에서 시작하여 새로운 제로 모션 후보가 목록에 추가될 때마다 증가하는 제로 공간적 변위(zero spatial displacement)와 레퍼런스 픽처 인덱스를 갖는다.
보다 구체적으로, 병합 목록이 가득찰 때까지 다음 단계가 순서대로 수행된다:
1. 변수 numRef를 P 슬라이스의 경우 목록 0과 연관된 레퍼런스 픽처의 수로 설정하거나, 또는 B 슬라이스의 경우 두 목록의 최소 레퍼런스 픽처 수로 설정한다;
2. 반복되지 않는 제로 모션 후보를 추가한다:
0... numRef-1 인 변수 i에 대해, MV가 (0, 0)으로 설정되고 및 레퍼런스 픽처 인덱스가 목록 0(P 슬라이스인 경우)에 대해, 또는 두 목록(B 슬라이스인 경우)에 대해 1로 설정되는 기본 모션 후보를 추가한다.
3. MV가 (0, 0)으로 설정되고, 목록 0의 레퍼런스 픽처 인덱스가 0으로 설정되고(P 슬라이스 인 경우) 및 두 목록의 레퍼런스 픽처 인덱스가 0(B 슬라이스 인 경우)으로 설정되는 반복되는 제로 모션 후보를 추가한다.
마지막으로, 이들 후보에 대해서는 중복 확인이 수행되지 않는다.
2.1.3 고급 모션 벡터 예측(Advanced motion vector prediction)(AMVP)
AMVP는 모션 파라미터의 명시적 전송에 사용되는 이웃 PU와 모션 벡터의 시공간적 상관 관계를 활용한다. 각각의 레퍼런스 픽처 목록에 대해, 왼쪽, 일시적으로 이웃한 PU 위치 위의 가용성을 먼저 확인하고 중복 후보를 제거하고 제로 벡터를 추가하여 후보 목록이 일정한 길이가 되도록 모션 벡터 후보 목록이 구축된다. 그러면, 인코더는 후보 목록에서 최상의 예측자를 선택하고 선택한 후보를 나타내는 대응하는 인덱스를 전송할 수 있다. 마찬가지로 병합 인덱스 시그널링을 사용하면 최상의 모션 벡터 후보의 인덱스가 절단된 단항(truncated unary)을 사용하여 인코딩 된다. 이 경우 인코딩 될 최대 값은 2이다(도 8 참조). 다음 섹션에서는 모션 벡터 예측 후보의 유도 프로세스에 대해 자세히 설명한다.
2.1.3.1 AMVP 후보 유도(Derivation of AMVP candidates)
도 8은 모션 벡터 예측 후보에 대한 유도 프로세스를 요약한다.
모션 벡터 예측에서, 두 가지 유형의 모션 벡터 후보가 고려된다: 공간적 모션 벡터 후보(spatial motion vector candidate)와 시간적 모션 벡터 후보(temporal motion vector candidate). 공간적 모션 벡터 후보 유도의 경우, 두 개의 모션 벡터 후보는 도 2에 도시된 바와 같이 5 개의 상이한 위치에 위치한 각 PU의 모션 벡터에 기초하여 결국 유도된다.
시간적 모션 벡터 후보 유도를 위해, 하나의 모션 벡터 후보가 두 개의 서로 다른 공존 위치를 기반으로 유도된 두 후보 중에서 선택된다. 시공간적 후보(spatio-temporal candidate)의 제1 목록이 생성된 후 목록에서 복제된 모션 벡터 후보가 제거된다. 후보 수가 2 이상이면, 연관 레퍼런스 픽처 목록 내의 레퍼런스 픽처 인덱스가 1보다 큰 모션 벡터 후보는 목록에서 제거된다. 시공간적 모션 벡터 후보의 수가 2 개 미만이면, 추가 제로 모션 벡터 후보가 목록에 추가된다.
2.1.3.2 공간적 모션 벡터 후보(Spatial motion vector candidates)
공간적 모션 벡터 후보의 유도에서, 5 개의 잠재적 후보 중에서 최대 2 개의 후보가 고려되는데, 이는 도 2에 도시된 위치에 위치한 PU로부터 유도되며, 그 위치는 모션 병합의 위치와 동일하다. 현재 PU의 왼쪽 측면에 대한 유도 순서는 A0, A1 및 스케일링 된 A0, 스케일링 된 A1로 정의된다. 현재 PU의 위쪽 측면에 대한 유도 순서는 B0, B1, B2, 스케일링 된 B0, 스케일링 된 B1, 스케일링 된 B2로 정의된다. 따라서 각 측면에 대해 모션 벡터 후보로 사용할 수 있는 4 개의 경우가 있으며, 공간적 스케일링을 사용할 필요가 없는 2 개의 경우와 공간적 스케일링이 사용되는 2 개의 경우가 있다. 4 가지 다른 경우는 다음과 같이 요약된다.
·공간적 스케일링 없음
- (1) 동일한 레퍼런스 픽처 목록, 및 동일한 레퍼런스 픽처 인덱스(동일한 POC)
- (2) 상이한 레퍼런스 픽처 목록이지만, 동일한 레퍼런스 픽처(동일한 POC)
·공간적 스케일링
- (3) 동일한 레퍼런스 픽처 목록이지만, 상이한 레퍼런스 픽처(상이한 POC)
- (4) 상이한 레퍼런스 픽처 목록, 및 상이한 레퍼런스 픽처(상이한 POC)
공간적 스케일링이 없는 경우를 먼저 확인한 다음 공간적 스케일링을 확인한다. 공간적 스케일링은 레퍼런스 픽처 목록에 관계없이 주변 PU의 레퍼런스 픽처와 현재 PU의 레퍼런스 픽처 사이의 POC가 다를 때 고려된다. 왼쪽 후보의 모든 PU를 사용할 수 없거나 인트라 코딩 된 경우, 위의 모션 벡터에 대한 스케일링은 왼쪽 및 위쪽 MV 후보의 병렬 유도를 돕기 위해 허용된다. 그렇지 않으면, 위쪽 모션 벡터에 대해 공간적 스케일링이 허용되지 않는다.
공간적 스케일링 프로세스에서, 도 9에 묘사된 바와 같이 이웃 PU의 모션 벡터는 시간적 스케일링과 유사한 방식으로 스케일링 된다. 주된 차이점은 현재 PU의 레퍼런스 화상 목록과 인덱스가 입력으로 제공된다는 것이다; 실제 스케일링 프로세스는 시간적 스케일링 프로세스와 동일하다.
2.1.3.3 시간적 모션 벡터 후보(Temporal motion vector candidates)
레퍼런스 픽처 인덱스 유도와는 별도로, 시간적 병합 후보의 유도를 위한 모든 프로세스는 공간적 모션 벡터 후보의 유도를 위한 프로세스와 동일하다(도 6 참조). 레퍼런스 픽처 인덱스는 디코더로 시그널링 된다.
2.2 JEM의 서브 CU 기반 모션 벡터 예측 방법(Sub-CU based motion vector prediction methods in JEM)
QTBT가 있는 JEM에서, 각 CU는 각 예측 방향에 대해 최대 하나의 모션 파라미터 세트를 가질 수 있다. 인코더에서는 큰 CU를 서브 CU로 분할하고 큰 CU의 모든 서브 CU에 대한 모션 정보를 유도하여 두 개의 서브 CU 레벨 모션 벡터 예측 방법을 고려한다. 대안적인 시간적 모션 벡터 예측(ATMVP) 방법을 사용하면 각 CU가 배치된 레퍼런스 픽처에서 현재 CU보다 작은 여러 블록에서 여러 세트의 모션 정보를 가져올 수 있다. 공간적 시간적 모션 벡터 예측(STMVP) 방법에서 서브 CU의 모션 벡터는 시간적 모션 벡터 예측자와 공간적 이웃 모션 벡터(spatial neighbouring motion vector)를 사용하여 재귀적으로 유도된다.
서브 CU 모션 예측을 위한 보다 정확한 모션 필드를 보존하기 위해, 레퍼런스 프레임에 대한 모션 압축이 비활성화 될 수 있다.
도 10은 CU에 대해 ATMVP 모션 예측의 예를 나타낸다.
2.1.1 대체 시간적 모션 벡터 예측(Alternative temporal motion vector prediction)
대체 시간적 모션 벡터 예측(alternative temporal motion vector prediction)(ATMVP) 방법에서, 모션 벡터 시간적 모션 벡터 예측(TMVP)은 현재 CU보다 작은 블록에서 모션 정보의 여러 세트(모션 벡터 및 레퍼런스 인덱스 포함)를 가져옴으로써 수정된다. 일 실시 예에서, 서브 CU는 정사각형 NxN 블록이다(N은 기본적으로 4로 설정됨).
ATMVP는 CU 내의 서브 CU의 모션 벡터를 두 단계로 예측한다. 제1 단계는 이른바 시간적 벡터(temporal vector)를 사용하여 레퍼런스 픽처(reference picture)에서 대응 블록을 식별하는 것이다. 레퍼런스 픽처를 모션 소스 픽처라고 한다. 제2 단계는 현재 CU를 서브 CU로 분할하고 각 서브 CU에 대응 블록에서 각 서브 CU의 레퍼런스 인덱스뿐만 아니라 모션 벡터를 얻는 것이다.
제1 단계에서, 현재 CU의 공간적 이웃 블록들의 모션 정보에 의해 레퍼런스 픽처와 대응 블록이 결정된다. 이웃 블록의 반복적인 스캐닝 프로세스를 피하기 위해, 현재 CU의 병합 후보 목록에서 제1 병합 후보가 사용된다. 사용 가능한 제1 모션 벡터 및 연관 레퍼런스 인덱스는 시간적 벡터 및 모션 소스 픽처에 대한 인덱스로 설정된다. 이렇게 하면, ATMVP에서, TMVP에 비해 대응 블록을 더 정확하게 식별할 수 있고, 여기서 대응 블록(때때로 배치된 블록이라고도 함)은 현재 CU에 대해 항상 오른쪽 하단 또는 중앙 위치에 있다.
제2 단계에서, 서브 CU의 대응 블록은 현재 CU의 좌표에 시간적 벡터를 더함으로써, 모션 소스 픽처의 시간적 벡터에 의해 식별된다. 각 서브 CU에 대해, 대응 블록(중앙 샘플을 덮는 가장 작은 모션 그리드)의 모션 정보는 서브 CU에 대해 모션 정보를 유도하기 위해 사용된다. 대응 NxN 블록의 모션 정보를 확인한 후, HEVC의 TMVP와 동일한 방식으로, 이는 현재 서브 CU의 레퍼런스 인덱스 및 모션 벡터로 변환되고, 모션 스케일링 및 기타 절차가 적용된다. 예를 들면, 디코더는 저 지연 조건(즉, 현재 픽처의 모든 레퍼런스 픽처의 POC가 현재 픽처의 POC보다 작은 경우)이 충족되었는지 및 각각의 서브 CU에 대해 모션 벡터 MVy(X는 0 또는 1과 같고 Y는 1-X와 같음)를 예측하기 위해 모션 벡터 MVx(레퍼런스 픽처 목록 X에 대응 모션 벡터)를 사용할 수 있는지 확인한다.
2.2.2 공간-시간적 모션 벡터 예측(STMVP)(Spatial-temporal motion vector prediction)
이 방법에서 서브 CU의 모션 벡터는 래스터 스캔 순서에 따라 반복적으로 유도된다. 도 11은 이 개념을 예시한다. 네 개의 4x4 서브 CU A, B, C 및 D를 포함하는 8x8 CU를 고려하자. 현재 프레임에서 이웃한 4x4 블록은 a, b, c 및 d로 레이블이 지정된다.
서브 CU A에 대한 모션 유도는 두 개의 공간적 이웃을 식별하는 것으로 시작된다. 제1 이웃은 서브 CU A 위의 NxN 블록이다(블록 c). 이 블록 c를 사용할 수 없거나 인트라 코딩 된 경우, 서브 CU A 위의 다른 NxN 블록이 확인된다(블록 c에서 시작하여 왼쪽에서 오른쪽으로). 제2 이웃은 서브 CU A의 왼쪽에 있는 블록이다(블록 b). 블록 b를 사용할 수 없거나 인트라 코딩 된 경우, 서브 CU A의 왼쪽에 있는 다른 블록이 확인된다(위에서 아래로, 블록 b에서 시작). 각 목록에 대한 이웃 블록에서 얻은 모션 정보는 주어진 목록에 대한 제1 레퍼런스 프레임(reference frame)으로 스케일링 된다. 다음으로, 서브 블록 A의 시간적 모션 벡터 예측자(TMVP)는 HEVC에 명시된 것과 동일한 TMVP 유도 절차에 따라 유도된다. 위치 D에서 배치된 블록의 모션 정보를 가져와서 그에 따라 크기를 조정한다. 마지막으로, 모션 정보를 검색하고 크기를 조정한 후 사용 가능한 모든 모션 벡터(최대 3 개)는 각 레퍼런스 목록에 대해 개별적으로 평균화 된다. 평균 모션 벡터는 현재 서브 CU의 모션 벡터로 할당된다.
2.2.3 Sub-CU 모션 예측 모드 시그널링(Sub-CU motion prediction mode signalling)
일부 실시예에서, 서브 CU 모드는 추가 병합 후보로 활성화되며 모드에 시그널링 하는 데 필요한 추가 신택스 요소(syntax element)가 없다. ATMVP 모드와 STMVP 모드를 나타내는 두 개의 추가 병합 후보가 각 CU의 병합 후보 목록에 추가된다. 다른 구체 예에서, 시퀀스 파라미터 세트가 ATMVP 및 STMVP가 사용 가능함을 표시하는 경우 최대 7 개의 병합 후보를 사용할 수 있다. 추가 병합 후보의 인코딩 논리는 HM의 병합 후보와 동일하고, 즉, P 또는 B 슬라이스의 각 CU에 대해 두 개의 추가 병합 후보에 대해 두 번 더 RD 확인이 필요할 수 있다.
JEM에서 병합 인덱스의 모든 빈은 CABAC에 의해 컨텍스트 코딩 된다. HEVC에서는 제1 빈만 컨텍스트 코딩 되고 나머지 빈은 컨텍스트 바이 패스 코딩 된다.
2.3 VVC의 인터 예측 방법
인터 예측 개선을 위한, MVD 신호를 위한 적응형 모션 벡터 디퍼런스 해상도(Adaptive Motion Vector Difference Resolution)(AMVR), 아핀 예측 모드, 삼각 예측 모드(Triangular Prediction Mode)(TPM), ATMVP, 일반화된 이중 예측(Generalized Bi-Prediction)(GBI), 이중 예측 광학 흐름(Bi-directional Optical Flow)(BIO) 등과 같은 몇 가지 새로운 코딩 툴이 있다.
2.3.1 적응형 모션 벡터 차이 해상도(Adaptive motion vector difference resolution)
HEVC에서, 모션 벡터 차이 (MVD)(모션 벡터와 PU의 예측된 모션 벡터 사이)는 use_integer_mv_flag가 슬라이스 헤더에서 0과 같을 때 1/4 루마(luma) 샘플 유닛으로 시그널링 된다. VVC에서, 로컬 적응형 모션 벡터 해상도(Local adaptive motion vector resolution)(LAMVR)가 도입되었다. VVC에서, MVD는 1/4 루마 샘플, 정수 루마 샘플 또는 4 개의 루마 샘플(즉, 1/4-픽셀, 1-픽셀, 4-픽셀)로 코딩 될 수 있다. MVD 해상도는 코딩 유닛(CU) 레벨에서 제어되며 MVD 해상도 플래그(resolution flag)는 0이 아닌 MVD 컴포넌트가 하나 이상 있는 각 CU에 대해 조건부로 시그널링 된다.
0이 아닌 MVD 컴포넌트가 하나 이상 있는 CU의 경우 CU에서 1/4 루마 샘플 MV 정밀도가 사용되는지 여부를 나타내는 제1 플래그가 시그널링 된다. 제1 플래그(1과 같음)가 1/4 루마 샘플 MV 정밀도가 사용되지 않음을 나타내면 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도가 사용되는지 여부를 나타내는 또 다른 플래그가 시그널링 된다.
CU의 제1 MVD 해상도 플래그가 0이거나 CU에 대해 코딩 되지 않은 경우(CU의 모든 MVD가 0임을 의미) CU에 1/4 루마 샘플 MV 해상도가 사용된다. CU가 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도를 사용하는 경우, CU에 대한 AMVP 후보 목록의 MVP는 대응하는 정밀도로 반올림 된다.
인코더에서, CU 레벨 RD 확인은 CU에 사용할 MVD 해상도를 결정하는 데 사용된다. 즉, CU 레벨 RD 확인은 각 MVD 해상도에 대해 세 번 수행된다. 인코더 속도를 높이기 위해 다음 인코딩 체계가 JEM에 적용된다.
정상 쿼터 루마 샘플 MVD 해상도를 가진 CU의 RD 확인 동안, 현재 CU의 모션 정보(정수 루마 샘플 정확도)가 저장된다. 저장된 모션 정보(반올림 후)는 정수 루마 샘플 및 4 루마 샘플 MVD 해상도를 사용하는 동일한 CU에 대한 RD 확인 중에 더 작은 범위 모션 벡터 개선을 위한 시작점으로 사용되어, 시간이 많이 걸리는 모션 추정 프로세스가 세 번 중복되지 않도록 한다.
4 루마 샘플 MVD 해상도를 가진 CU의 RD 확인이 조건부로 호출된다. CU의 경우 RD 비용이 정수 루마 샘플 MVD 해상도가 1/4 루마 샘플 MVD 해상도보다 훨씬 클 때, CU에 대한 4 루마 샘플 MVD 해상도의 RD 확인을 스킵 한다.
인코딩 프로세스는 도 12에 도시되어 있다. 먼저 1/4 pel MV를 테스트하고 RD 비용을 계산하여 RDCost0으로 표시한 다음 정수 MV를 테스트하고 RD 비용을 RDCost1로 표시한다. RDCost1 <th * RDCost0(여기서 th는 양수 값)이면 4 픽셀 MV가 테스트되고; 그렇지 않으면, 4 픽셀 MV는 스킵 된다. 기본적으로, 정수 또는 4 픽셀 MV를 확인할 때 1/4 픽셀 MV에 대해서는 모션 정보 및 RD 비용 등이 이미 알려져 있으며, 이를 재사용하여 정수 또는 4 픽셀 MV의 인코딩 처리 속도를 높일 수 있다.
2.3.2 삼각 예측 모드(Triangular prediction mode)
삼각 예측 모드(TPM)의 개념은 모션 보상 예측을 위한 새로운 삼각 분할을 도입하는 것이다. 도 13a-13b에 도시된 바와 같이, CU를 대각선 또는 역 대각선 방향으로 두 개의 삼각형 예측 유닛으로 분할한다. CU의 각 삼각형 예측 유닛은 싱글 단일 예측(uni-prediction) 후보 목록에서 유도된 자체 단일 예측 모션 벡터 및 레퍼런스 프레임 인덱스를 사용하여 인터 예측된다. 삼각 예측 유닛을 예측한 후 대각선 에지에 적응 가중치 프로세스를 수행한다. 그런 다음 변형 및 양자화 프로세스가 전체 CU에 적용된다. 이 모드는 병합 모드에만 적용된다(참조: 스킵 모드는 특수 병합 모드로 취급된다).
도 13a 내지 13b는 CU를 2 개의 삼각형 예측 유닛(2 개의 분할 패턴)로 분할하는 예시이고: 도 13A : 135도 파티션 유형(왼쪽 상단 모서리에서 오른쪽 하단 모서리로 분할)이고; 도 13B : 45도 분할 패턴이다.
2.3.2.1 TPM에 대한 일방 예측 후보 목록
TPM 모션 후보 목록이라는 단일 예측 후보 목록은 5 개의 단일 예측 모션 벡터 후보로 구성된다. 이는 도 14에 도시된 바와 같이 5 개의 공간적 이웃 블록(1 내지 5)과 2 개의 시간적 공존 블록(6 내지 7)을 포함하는 7 개의 이웃 블록으로부터 유도된다. 7 개의 이웃 블록의 모션 벡터는 단일 예측 모션 벡터(uni-prediction motion vector), 이중 예측 모션 벡터(bi-prediction motion vector)의 L0 모션 벡터, 이중 모션 벡터의 L1 모션 벡터, 이중 예측 모션 벡터의 L0 및 L1 모션 벡터의 평균 모션 벡터 순으로 수집되고 단일 예측 후보 목록에 넣는다. 후보 수가 5 개 미만이면 모션 벡터가 목록에 추가된다. TPM에 대해이 목록에 추가된 모션 후보를 TPM 후보라고 하고 공간적/시간적 블록에서 유도된 모션 정보를 정규 모션 후보라고 한다.
보다 구체적으로 다음 단계가 관련된다.
1) 공간적 이웃 블록에서 정기 모션 후보를 추가할 때 전체 가지치기 연산(pruning operation)으로 A1, B1, B0, A0, B2, Col 및 Col2(도 14의 블록 1-7에 대응에서 정기 모션 후보를 구한다.
2) 변수 numCurrMergeCand = 0 설정한다
3) A1, B1, B0, A0, B2, Col 및 Col2에서 유도된 각 정규 모션 후보에 대해, 가지치기 되지 않고 numCurrMergeCand가 5 미만인 경우, 정규 모션 후보가 단일 예측이면(목록 0 또는 목록 1에서), numCurrMergeCand가 1 만큼 증가된 TPM 후보로 병합 목록에 직접 추가된다. 이러한 TPM 후보를 '원래 단일 예측 후보'라고 한다.
전체 가지치기가 적용된다.
4) A1, B1, B0, A0, B2, Col 및 Col2에서 유도된 각 모션 후보에 대해, 가지치기가 되지 않고, 및 numCurrMergeCand가 5 미만이고, 정규 모션 후보가 이중 예측이면, 목록 0의 모션 정보가 TPM 병합 목록(즉, 목록 0에서 단일 예측으로 수정됨)에 새로운 TPM 후보로 추가되고 numCurrMergeCand가 1 만큼 증가된다. 이러한 TPM 후보를 '잘린 목록 0 예측 후보'라고 한다.
전체 가지치기가 적용된다.
5) A1, B1, B0, A0, B2, Col 및 Col2에서 유도된 각 모션 후보에 대해, 가지치기가 되지 않고, numCurrMergeCand가 5 미만이고, 일반 모션 후보가 이중 예측이면, 목록 1의 모션 정보가 TPM 병합 목록에 추가되고(즉, 목록 1의 단일 예측으로 수정됨) numCurrMergeCand가 1 만큼 증가된다. 이러한 TPM 후보를 '잘린 목록 1 예측 후보'라고 한다.
전체 가지치기가 적용된다.
6) A1, B1, B0, A0, B2, Col 및 Col2에서 유도된 각 모션 후보에 대해, 가지치기가 되지 않고, 및 numCurrMergeCand가 5 미만이고, 정규 모션 후보가 이중 예측이면,
- 목록 0 레퍼런스 픽처의 슬라이스 QP가 목록 1 레퍼런스 픽처의 슬라이스 QP보다 작은 경우, 목록 1의 모션 정보는 먼저 목록 0 레퍼런스 픽처로 스케일링 되고, 및 두 MV(하나는 원래 목록 0에서 가져오고 다른 하나는 목록 1에서 스케일링 된 MV)의 평균이 TPM 병합 목록에 추가되고, 이러한 후보를 목록 0 모션 후보의 평균 단일 예측이라고 하고 numCurrMergeCand가 1만큼 증가된다.
- 그렇지 않으면 목록 0의 모션 정보가 먼저 목록 1 레퍼런스 픽처로 조정되고 두 MV(하나는 원래 목록 1에서, 다른 하나는 목록 0에서 스케일링 된 MV)의 평균이 TPM 병합 목록에 추가되고, 이러한 TPM 후보를 목록 1 모션 후보의 평균 단일 예측이라고 하며 numCurrMergeCand가 1만큼 증가된다.
전체 가지치기가 적용된다.
7) numCurrMergeCand가 5보다 작으면 제로 모션 벡터 후보가 추가된다.
후보를 목록에 삽입할 때 이전에 추가된 모든 후보와 비교하여 둘 중 하나와 동일한 지 확인해야 하는 경우 이러한 프로세스를 완전 가지 치기라고 한다.
2.3.2.2 적응 가중치 프로세스(Adaptive weighting process)
각 삼각형 예측 유닛을 예측한 후, 전체 CU에 대한 최종 예측을 유도하기 위해 두 개의 삼각형 예측 유닛 사이의 대각선 에지에 적응 가중치 프로세스가 적용된다. 두 가지 가중치 인자 그룹(factor group)은 다음과 같이 정의된다:
가중치 인자 그룹(Weighting factor group)은 2 개의 삼각형 예측 유닛의 모션 벡터의 비교에 기초하여 선택된다. 제2 가중치 인자 그룹은 두 개의 삼각형 예측 유닛의 레퍼런스 픽처가 서로 다르거나 모션 벡터 차이가 16 픽셀보다 클 때 사용된다. 그렇지 않으면, 제1 가중치 인자 그룹이 사용된다.
2.3.2.3 삼각 예측 모드(TPM) 시그널링
TPM 사용 여부를 나타내는 하나의 비트 플래그가 먼저 시그널링 될 수 있다. 그 후, 2 개의 분할 패턴(도 13a-13b에 도시된 바와 같이)의 표시 및 2 개의 파티션 각각에 대한 선택된 병합 인덱스가 추가로 시그널링 된다.
2.3.2.3.1 TPM 플래그 시그널링
하나의 루마 블록의 너비와 높이를 각각 W와 H로 표시하자. W * H <64이면 삼각 예측 모드가 비활성화된다. 하나의 블록이 아핀 모드로 코딩 되면 삼각 예측 모드도 비활성화된다. 하나의 블록이 병합 모드로 코딩 될 때, 삼각형 예측 모드가 블록에 대해 활성화 또는 비활성화되었는지를 나타내기 위해 하나의 비트 플래그가 시그널링 될 수 있다.
플래그는 다음 식에 따라 3 개의 컨텍스트로 코딩 된다:
Ctx index =( ( left block L available && L is coded with TPM? ) 1: 0 )
+( ( Above block A available && A is coded with TPM? ) 1: 0 ); 1 : 0);
도 15는 TPM 플래그 코딩에서 컨텍스트 선택에 사용되는 이웃 블록(A 및 L)의 예를 나타낸다.
2.3.2.3.2 두 개의 분할 패턴(도 13에 묘사됨)의 표시 시그널링 및 두 파티션 각각에 대해 선택된 병합 인덱스
분할 패턴, 두 파티션의 병합 인덱스는 공동으로 코딩 된다. 기존 구현에서는 두 파티션이 동일한 레퍼런스 인덱스를 사용할 수 없다는 점이 제한되었다. 따라서, 2(분할 패턴) * N(최대 병합 후보 수) *(N-1)의 가능성이 있고, 여기서 N은 5로 설정된다. 하나의 표시가 코딩 되고 분할 패턴 사이의 매핑, 두 개의 병합 색인 및 코딩 된 표시가 아래 정의된 어레이에서 유도된다:
const uint8_t g_TriangleCombination[TRIANGLE_MAX_NUM_CANDS][3] = {
{ 0, 1, 0 }, { 1, 0, 1 }, { 1, 0, 2 }, { 0, 0, 1 }, { 0, 2, 0 },
{ 1, 0, 3 }, { 1, 0, 4 }, { 1, 1, 0 }, { 0, 3, 0 }, { 0, 4, 0 },
{ 0, 0, 2 }, { 0, 1, 2 }, { 1, 1, 2 }, { 0, 0, 4 }, { 0, 0, 3 },
{ 0, 1, 3 }, { 0, 1, 4 }, { 1, 1, 4 }, { 1, 1, 3 }, { 1, 2, 1 },
{ 1, 2, 0 }, { 0, 2, 1 }, { 0, 4, 3 }, { 1, 3, 0 }, { 1, 3, 2 },
{ 1, 3, 4 }, { 1, 4, 0 }, { 1, 3, 1 }, { 1, 2, 3 }, { 1, 4, 1 },
{ 0, 4, 1 }, { 0, 2, 3 }, { 1, 4, 2 }, { 0, 3, 2 }, { 1, 4, 3 },
{ 0, 3, 1 }, { 0, 2, 4 }, { 1, 2, 4 }, { 0, 4, 2 }, { 0, 3, 4 }};
분할 패턴(45도 또는 135도) = g_TriangleCombination [시그널링 표시] [0];
후보 A의 병합 인덱스 = g_TriangleCombination [시그널링 표시] [1];
후보 B의 병합 인덱스 = g_TriangleCombination [시그널링 표시] [2];
두 개의 모션 후보 A와 B가 유도되면 두 파티션(PU1 및 PU2)의 모션 정보는 A 또는 B에서 설정할 수 있다. PU1이 병합 후보 A 또는 B의 모션 정보를 사용하는지 여부는 두 모션 후보의 예측 방향에 따라 다르다. 표 1은 두 파티션이 있는 두 유도 모션 후보 A와 B 사이의 관계를 나타낸다:
A의 예측 방향(Prediction direction of A) | B의 예측 방향(Prediction direction of B) | PU1의 모션 정보(PU1's motion information) | PU2의 모션 정보(PU2's motion information) |
L0 | L0 | A(L0) | B(L0) |
L1 | L1 | B(L1) | A(L1) |
L0 | L1 | A(L0) | B(L1) |
L1 | L0 | B(L0) | A(L1) |
2.3.2.3.3 표시의 엔트로피 코딩(merge_triangle_idx로 표시)
merge_triangle_idx는 전체적으로 [0, 39](포함) 범위 내에 있다. K 차 지수 골롬(Exponential Golomb)(EG) 코드는 merge_triangle_idx의 이진화에 사용되며, 여기서 K는 1로 설정된다.
K 차 EG
더 작은 숫자를 인코딩하기 위해 더 많은 비트를 사용하는 대신, 더 적은 비트로 더 큰 숫자를 인코딩하기 위해, 이것은 음이 아닌 정수 파라미터 k를 사용하여 일반화될 수 있다. k 차 exp-Golomb 코드에서 음이 아닌 정수 x를 인코딩 하려면 다음을 수행하라:
1. 위에서 설명한 order-0 exp-Golomb 코드를 사용하여 x/2k를 인코딩 한 다음,
2. x mod 2k를 바이너리로 인코딩
표1: Exp-Golomb-k 코딩 예
2.3.3 아핀 모션 보상 예측(Affine motion compensation prediction)
HEVC에서는 모션 보상 예측(Motion Compensation Prediction)(MCP)에 전환 모션 모델 만 적용된다. 실제 세계에는, 예를 들어, 확대/축소, 회전, 원근 동작 및 기타 불규칙한 동작 여러 종류의 모션이 있다. VVC에서, 단순화된 아핀 변형 모션 보상 예측이 4 개 파라미터 아핀 모델과 6 개 파라미터 아핀 모델에 적용된다. 도 16a-16b에 도시된 바와 같이, 블록의 아핀 모션 필드는 4 파라미터 아핀 모델(도 16a)에 대한 2 개의 제어점 모션 벡터(CPMV)와 6 파라미터 아핀 모델(픽처 16b)에 대해 3 CPMV로 설명된다.
블록의 모션 벡터 장(motion vector field)(MVF)은 식(1)에서 4 파라미터 아핀 모델(여기서, 4 파라미터는 변수 a, b, e 및 f로 정의됨) 및 식(6)에서 6 개 파라미터 아핀 모델(여기서 4 개 파라미터는 변수 a, b, c, d, e 및 f로 정의됨)으로 각각 다음 식에서 설명된다:
여기서(mvh0, mvh0)는 왼쪽 상단 모서리 제어점의 모션 벡터이고, (mvh1, mvh1)는 오른쪽 상단 모서리 제어점의 모션 벡터이고, (mvh2, mvh2)는 왼쪽 하단 모서리 제어점의 모션 벡터이고, 세 가지 모션 벡터는 모두 제어점 모션 벡터(CPMV)라고 하며, (x, y)는 현재 블록 및 (mvh(x, y)내에서 왼쪽 상단 샘플을 기준으로 한 대표 지점의 좌표를 나타내고, mvv(x, y))는 (x, y)에 위치한 샘플에 대해 유도된 모션 벡터이다. CP 모션 벡터는 (아핀 AMVP 모드에서와 같이) 시그널링 되거나(아핀 병합 모드에서와 같이) 즉석에서 유도될 수 있다. w와 h는 현재 블록의 너비와 높이이다. 실제로 분할은 반올림 작업과 함께 오른쪽 시프트로 구현된다. VTM에서 대표 점은 서브 블록의 중앙 위치로 정의되며, 예를 들어 현재 블록 내 왼쪽 위쪽 샘플에 대한 서브 블록의 왼쪽 위쪽 모서리의 좌표가 (xs, ys) 인 경우, 대표점(representative point)의 좌표는 (xs + 2, ys + 2)으로 정의된다. 각 서브 블록(즉, VTM의 4x4)에 대해 대표점은 전체 서브 블록에 대한 모션 벡터를 유도하는 데 사용된다.
모션 보상 예측을 더욱 단순화하기 위해 서브 블록 기반 아핀 변형 예측이 적용된다. 각 MxN(현재 VVC에서 M과 N 모두 4로 설정됨) 서브 블록의 모션 벡터를 유도하려면, 도 17에 도시된 바와 같이 각 서브 블록의 중앙 샘플의 모션 벡터는 식(1) 및 (2)에 따라 계산되고 1/16 분수 정확도로 반올림된다. 그런 다음 1/16 픽셀에 대한 모션 보상 보간 필터를 적용하여 유도된 모션 벡터를 사용하여 각 서브 블록의 예측을 생성한다. 1/16-픽셀에 대한 보간 필터는 아핀 모드에서 도입되었다. MCP 후 각 서브 블록의 고정밀 모션 벡터는 반올림되어 일반 모션 벡터와 동일한 정확도로 저장된다.
2.3.3.1 아핀 예측 시그널링
전환 모션 모델(translational motion model)과 유사하게, 아핀 예측으로 인한 부가 정보를 시그널링 하는 두 가지 모드도 있다. AFFINE_INTER 및 AFFINE_MERGE 모드이다.
2.3.3.2 AF_INTER 모드
너비와 높이가 모두 8보다 큰 CU의 경우, AF_INTER 모드를 적용할 수 있다. CU 레벨의 아핀 플래그는 AF_INTER 모드가 사용되는지 여부를 나타내기 위해 비트 스트림에서 시그널링 된다. 이 모드에서는 각 레퍼런스 픽처 목록(List 0 또는 List 1)에 대해 다음과 같은 순서로 세 가지 유형의 아핀 모션 예측 자로 아핀 AMVP 후보 목록이 구축되고, 여기서 각 후보는 현재 블록의 추정된 CPMV를 포함한다. 인코더 측에서 발견된 최상의 CPMV(예를 들어, 도 20의 mv0 mv1 mv2) 및 추정된 CPMV의 차이가 시그널링 된다. 또한, 추정된 CPMV가 유도된 아핀 AMVP 후보의 인덱스가 추가로 시그널링 된다.
1) 물려받은 아핀 모션 예측자(Inherited affine motion predictor)
확인 순서는 HEVC AMVP 목록 구축에서 공간적 MVP의 순서와 유사하다. 먼저, 아핀 코딩 되고 현재 블록과 동일한 레퍼런스 픽처를 갖는 {A1, A0}의 제1 블록에서 왼쪽 물려받은 아핀 모션 예측자가 유도된다. 둘째, 위의 물려받은 아핀 모션 예측자는 아핀 코딩 되고 현재 블록과 동일한 레퍼런스 픽처를 가진 {B1, B0, B2}의 제1 블록에서 유도된다. 5 개의 블록 A1, A0, B1, B0, B2가 도 19에 도시되어 있다.
이웃 블록이 아핀 모드로 코딩 된 것으로 확인되면, 이웃 블록을 커버하는 코딩 유닛의 CPMV는 현재 블록의 CPMV의 예측자를 유도하는 데 사용된다. 예를 들어, A1이 비-아핀(non-affine) 모드로 코딩 되고 A0이 4 파라미터 아핀(4-parameter affine) 모드로 코딩 된 경우, 왼쪽 물려받은 아핀 MV 예측자는 A0에서 유도된다.
이 경우, 도 21b에서 왼쪽 상단 CPMV에 대해 MV0 N 및 오른쪽 상단 CPMV에 대해 MV1 N으로 표시되는 바와 같이, A0를 커버하는 CU의 CPMV는, MV0 C, MV1 C, MV2 C(좌표(x0, y0) 포함), 오른쪽 상단(좌표(x1, y1) 포함) 및 현재 블록의 오른쪽 하단 위치 (좌표(x2, y2) 포함)에 표시되는 바와 같이, 현재 블록의 예상 CPMV를 유도하는 데 사용된다.
2) 구축된 아핀 모션 예측자(Constructed affine motion predictor)
구축된 아핀 모션 예측자는 도 20에 도시된 바와 같이 동일한 레퍼런스 픽처를 갖는 이웃 인터 코딩 블록(neighboring inter coded block)으로부터 유도되는 제어점 모션 벡터(CPMV)로 구성된다. 현재 아핀 모션 모델이 4 파라미터 아핀 인 경우 CPMV의 수는 2이고, 그렇지 않으면 현재 아핀 모션 모델이 6 파라미터 아핀 인 경우 CPMV의 수는 3이다.
왼쪽 상단 CPMV 은 인터 코딩 되고 현재 블록과 동일한 레퍼런스 픽처를 갖는 그룹 {A, B, C}의 제1 블록에서 MV에 의해 유도된다. 오른쪽 상단 CPMV 은 인터 코딩 되고 현재 블록과 동일한 레퍼런스 픽처를 가진 그룹 {D, E}의 제1 블록에서 MV에 의해 유도된다. 왼쪽 하단 CPMV 는 인터 코딩 되고 현재 블록과 동일한 레퍼런스 픽처를 갖는 그룹 {F, G}의 첫 번째 블록에서 MV에 의해 유도된다.
- 현재 아핀 모션 모델이 4 파라미터 아핀 인 경우, 다음 및 이 모두 발견된 경우에만, 구축된 아핀 모션 예측자가 후보 목록에 삽입되며, 즉, 및 은 현재 블록의 왼쪽 상단(좌표(x0, y0) 포함), 오른쪽 상단(좌표(x1, y1) 포함) 위치에 대한 추정 CPMV로 사용된다.
- 현재 아핀 모션 모델이 6 파라미터 아핀 인 경우, 다음 , 및 가 모두 발견된 경우에만, 구축된 아핀 모션 예측자가 후보 목록에 삽입되며, 즉, 다음 , 및 는 왼쪽 상단(좌표(x0, y0) 포함), 오른쪽 상단(좌표(x1, y1) 포함) 및 현재 블록의 오른쪽 하단(좌표(x2, y2) 포함) 위치에 대한 추정 CPMV로 사용된다.
구축된 아핀 모션 예측자를 후보 목록에 삽입할 때 가지치기 프로세스가 적용되지 않는다.
3) 정상적인 AMVP 모션 예측자
다음은 아핀 모션 예측 자의 수가 최대 값에 도달할 때까지 적용된다.
4) 가능한 경우 모든 CPMV를 HEVC TMVP와 동일하게 설정하여 아핀 모션 예측자를 유도한다.
5) 모든 CPMV를 제로 MV로 설정하여 아핀 모션 예측자를 유도한다.
도 18a는 4- 파라미터 아핀 모델의 예를 나타낸다. 도 18b는 6 파라미터 아핀 모델의 예를 나타낸다.
도 19는 물려받은 아핀 후보에 대한 AF_INTER에 대한 MVP의 예를 나타낸다.
도 20은 구축된 아핀 후보에 대한 AF_INTER에 대한 MVP의 예를 나타낸다.
AF_INTER 모드에서 4/6 파라미터 아핀 모드를 사용하면, 2/3 개의 제어점이 필요하므로, 도 18과 같이 2/3 개의 MVD가 이러한 제어점에 대해 코딩 되어야 한다. 기존 구현에서는 다음과 같이 MV를 유도하는 것이 제안되고, 즉, mvd0에서 mvd1과 mvd2가 예측된다.
여기서 , mvdi 및 mv1은 예측된 모션 벡터, 모션 벡터 차이 및 모션 벡터의 왼쪽 상단 픽셀(i = 0), 상단 오른쪽 픽셀(i = 1) 또는 왼쪽 하단 픽셀(i = 2) 각각 도 18b에 도시된 바와 같다. 두 모션 벡터(예를 들어, mvA(xA, yA) 및 mvB(xB, yB))를 추가하는 것은 두 컴포넌트를 개별적으로 합한 것과 같고, 즉, newMV = mvA + mvB이고 newMV의 두 컴포넌트는 각각(xA + xB) 및 (yA + yB)로 설정된다.
2.3.3.3 AF_MERGE 모드
CU가 AF_MERGE 모드에서 적용되면, 유효한 이웃 재구축된 블록에서 아핀 모드로 코딩 된 제1 블록을 가져온다. 그리고 후보 블록의 선택 순서는 도 21a에 도시된 바와 같이 왼쪽, 위쪽, 오른쪽, 왼쪽 아래에서 왼쪽 위쪽이다(순서대로 A, B, C, D, E로 표시). 예를 들면, 이웃 왼쪽 하단 블록이 도 21b에서 A0으로 표시된 바와 같이 아핀 모드로 코딩 되면, 블록 A를 포함하는 이웃 CU/PU의 왼쪽 위쪽 모서리, 오른쪽 위쪽 모서리 및 왼쪽 하단 모서리의 제어점(CP) 모션 벡터 mv0 N, mv1 N 및 mv2 N을 가져온다. 그리고 현재 CU/PU에서 왼쪽 상단/오른쪽 상단/왼쪽 하단의 모션 벡터 mv0 C, mv1 C, mv2 C(6 파라미터 아핀 모델에만 사용됨)는 mv0 N, mv1 N 및 mv2 N에 기초하여 계산된다. VTM-2.0에서는 왼쪽 상단 모서리에 위치한 서브 블록(예를 들어, VTM의 4x4 블록)이 mv0을 저장하고, 현재 블록이 아핀 코딩 된 경우 오른쪽 상단 모서리에 위치한 서브 블록은 mv1을 저장한다는 점에 유의해야 한다. 현재 블록이 6 파라미터 아핀 모델로 코딩 된 경우, 왼쪽 하단 모서리에 있는 서브 블록에 mv2가 저장되고; 그렇지 않으면(4 파라미터 아핀 모델 사용) LB는 mv2'를 저장한다. 다른 서브 블록은 MC에 사용되는 MV를 저장한다.
현재 CU mv0 C의 CPMV 이후, mv1 C 및 mv2 C는 단순화된 아핀 모션 모델 식(1) 및 (2)에 따라 유도되고, 현재 CU의 MVF가 생성된다. 현재 CU가 AF_MERGE 모드로 코딩 되었는지 확인하기 위해, 적어도 하나의 이웃 블록이 아핀 모드에서 코딩 될 때 아핀 플래그가 비트 스트림에서 시그널링 된다.
일부 기존 구현에서, 아핀 병합 후보 목록은 다음 단계로 구축된다.
1) 물려받은 아핀 후보 삽입
물려받은 아핀 후보는 후보가 유효한 이웃 아핀 코딩 된 블록의 아핀 모션 모델에서 유도되었음을 의미한다. 최대 2 개의 물려받은 아핀 후보는 이웃 블록의 아핀 모션 모델에서 유도되어 후보 목록에 삽입된다. 왼쪽 예측자의 경우 스캔 순서는 {A0, A1}이고, 위의 예측 변수의 경우 스캔 순서는 {B0, B1, B2}이다.
2) 구축된 아핀 후보 삽입
아핀 병합 후보 목록의 후보 수가 MaxNumAffineCand(예를 들어, 5) 미만인 경우, 구축된 아핀 후보가 후보 목록에 삽입된다. 구축된 아핀 후보는 각 제어점의 이웃 모션 정보를 조합하여 후보가 구축되는 것을 의미한다.
a) 제어점에 대한 모션 정보는 먼저 도 22에 도시된 특정 공간적 이웃과 시간적 이웃으로부터 유도된다. CPk(k = 1, 2, 3, 4)는 k 번째 제어점을 나타낸다. A0, A1, A2, B0, B1, B2 및 B3은 CPk를 예측하기 위한 공간적 위치이고(k = 1, 2, 3): T는 CP4를 예측하기 위한 시간적 위치이다.
CP1, CP2, CP3 및 CP4의 좌표는 각각(0, 0), (W, 0), (H, 0) 및 (W, H)이며, 여기서 W와 H는 현재 블록의 너비와 높이이다.
각 제어점의 모션 정보는 다음 우선 순위에 따라 획득된다:
- CP1의 경우, 확인 우선 순위는 B2 -> B3 -> A2이다. 가능한 경우 B2가 사용된다. 그렇지 않으면, B2를 사용할 수 있으면, B3이 사용된다. B2와 B3을 모두 사용할 수 없는 경우 A2가 사용된다. 세 후보를 모두 사용할 수 없는 경우 CP1의 모션 정보를 얻을 수 없다.
- CP2의 경우, 확인 우선 순위는 B1 -> B0이다.
- CP3의 경우, 확인 우선 순위는 A1 -> A0이다.
- CP4의 경우 T가 사용된다.
b) 둘째, 제어점의 조합은 아핀 병합 후보를 구축하는 데 사용된다.
I. 6 파라미터 아핀 후보를 구축하기 위해서는 3 개의 제어점의 모션 정보가 필요하다. 3 개의 제어점은 다음 4 가지 조합({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}) 중 하나에서 선택할 수 있다. 조합 {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}는 왼쪽 상단, 오른쪽 상단 및 왼쪽 하단 제어점으로 표시되는 6 파라미터 모션 모델로 변환된다.
II. 4 파라미터 아핀 후보를 구축하려면 두 제어점의 모션 정보가 필요하다. 두 개의 제어점은 두 조합({CP1, CP2}, {CP1, CP3}) 중 하나에서 선택할 수 있다. 두 조합은 왼쪽 상단 및 오른쪽 상단 제어점으로 표시되는 4 개 파라미터 모션 모델로 변환된다.
III. 구축된 아핀 후보의 조합은 다음 순서로 후보 목록에 삽입된다: {CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}
i. 각 조합에 대해 각 CP에 대한 목록 X의 레퍼런스 색인이 확인되며, 모두 동일하면 이 조합에 목록 X에 대한 유효한 CPMV가 있다. 조합에 목록 0과 목록 1에 대해 유효한 CPMV가 없는 경우 이 조합은 유효하지 않은 것으로 표시된다. 그렇지 않으면, 유효하며 CPMV는 서브 블록 병합 목록에 포함된다.
3) 모션 벡터가 없는 패딩
유사 병합 후보 목록의 후보 수가 5 개 미만이면, 목록이 가득찰 때까지 레퍼런스 색인이 0 인 모션 벡터가 후보 목록에 삽입된다. 보다 구체적으로, 서브 블록 병합 후보 목록의 경우, MV의 4 파라미터 합병 후보는 (0, 0)으로 설정되고 예측 방향이 목록 0(P 슬라이스의 경우) 및 이중 예측(B 슬라이스 용)에서 단일 예측으로 설정된다.
2.3.4 현재 픽처 레퍼런스
인트라 블록 복사(일명 IBC 또는 인트라 픽처 블록 보상)는 현재 픽처 레퍼런스(current picture referencing)(CPR)라고도 불리는 HEVC 화면 콘텐츠 코딩 확장(SCC)에 채택되었다. 이 툴은 동일한 픽처 내에서 텍스트 및 그래픽 풍부한 콘텐츠의 반복 패턴이 자주 발생하므로 화면 콘텐츠 비디오 코딩에 매우 효율적이다. 예측자와 동일하거나 유사한 패턴을 가진 이전에 재구축된 블록을 갖는 것은 예측 오류를 효과적으로 감소시켜 코딩 효율성을 향상시킬 수 있다. 인트라 블록 보상(intra block compensation)의 예는 도 23에 예시되어 있다.
HEVC SCC의 CRP 설계와 유사하게, VVC에서, IBC 모드의 사용은 시퀀스 및 픽처 레벨 모두에서 시그널링 된다. 시퀀스 파라미터 세트(Sequence parameter set)(SPS)에서 IBC 모드를 활성화하면 픽처 레벨에서 활성화될 수 있다. IBC 모드가 픽처 레벨에서 활성화되면 현재 재구축된 픽처가 레퍼런스 픽처로 취급된다. 따라서 IBC 모드 사용을 시그널링 하기 위해 기존 VVC 인터 모드 위에 블록 레벨의 신택스 변경이 필요하지 않는다.
주요 특징:
- 일반 인터 모드로 처리된다. 따라서, 병합 및 스킵 모드(skip mode)는 IBC 모드에서도 사용할 수 있다. 병합 후보 목록 구축(merge candidate list construction)은 통합되어 IBC 모드 또는 HEVC 인터 모드로 코딩 된 이웃 위치의 병합 후보를 포함한다. 선택한 병합 인덱스에 따라 병합 또는 스킵 모드의 현재 블록은 IBC 모드 코딩 된 이웃 또는 레퍼런스 픽처로서 서로 다른 픽처를 갖는 일반 인터 모드 코딩 된 블록으로 병합될 수 있다.
- IBC 모드를 위한 블록 벡터 예측 및 코딩 방식은 HEVC 인터 모드(AMVP 및 MVD 코딩)에서 모션 벡터 예측 및 코딩에 사용된 방식을 재사용한다.
- 블록 벡터라고도 하는 IBC 모드의 모션 벡터는 정수 픽셀 정밀도로 코딩 되지만 보간 및 디 블로킹 단계에서 1/4 픽셀 정밀도가 필요하므로 디코딩 후 1/16- 픽셀 정밀도로 메모리에 저장된다. IBC 모드의 모션 벡터 예측에서 사용하면, 저장된 벡터 예측자가 오른쪽으로 4만큼 이동한다.
- 검색 범위: 현재 CTU 내로 제한된다.
- 아핀 모드/삼각 모드/GBI/가중 예측이 활성화되면 CPR이 허용되지 않는다.
2.3.5 VVC에서 목록 디자인 병합
VVC에서 지원되는 세 가지 병합 목록 구축 프로세스가 있다.
1) 서브 블록 병합 후보 목록: ATMVP 및 아핀 병합 후보를 포함한다. 하나의 병합 목록 구축 프로세스는 아핀 모드와 ATMVP 모드 모두에 대해 공유된다. 여기서, ATMVP 및 아핀 병합 후보는 순서대로 추가될 수 있다. 서브 블록 병합 목록 크기는 슬라이스 헤더에 표시되며 최대 값은 5이다.
2) 단일 예측(Uni-Prediction) TPM 병합 목록: 삼각 예측 모드의 경우 두 파티션에 대한 하나의 병합 목록 구축 프로세스가 공유되며 두 파티션이 자체 병합 후보 인덱스를 선택할 수 있다. 이 병합 목록을 구축할 때 공간적 이웃 블록과 블록의 두 시간적 블록을 확인한다. 공간적 이웃과 시간적 블록에서 유도된 모션 정보는 IDF에서 정규 모션 후보라고 한다. 이러한 정규 모션 후보는 여러 TPM 후보를 유도하는 데 추가로 활용된다. 변형(transform)은 전체 블록 레벨에서 수행되며 두 개의 파티션조차도 자체 예측 블록을 생성하기 위해 서로 다른 모션 벡터를 사용할 수 있다.
단일 예측 TMP 병합 목록 크기는 5로 고정된다.
3) 일반 병합 목록: 나머지 코딩 블록에 대해 하나의 병합 목록 구축 프로세스가 공유된다. 여기서, 공간/시간/HMVP, 쌍으로 결합된 이중 예측 병합 후보 및 제로 모션 후보가 순서대로 삽입될 수 있다.
일반 병합 목록 크기는 슬라이스 헤더에 표시되며 최대 값은 6이다.
2.3.5.1 서브 블록 병합 후보 목록
비-서브 블록 병합 후보(non-sub block merge candidate)에 대한 정규 병합 목록(regular merge list)에 추가하여 모든 서브 블록 관련 모션 후보를 별도의 병합 목록에 넣는 것이 제안된다.
서브 블록 관련 모션 후보는 '서브 블록 병합 후보 목록(sub-block merge candidate list)'이라 부르는 분리된 병합 목록에 넣는다.
일 예에서, 서브 블록 병합 후보 목록은 아핀 병합 후보, ATMVP 후보 및/또는 서브 블록 기반 STMVP 후보를 포함한다.
2.3.5.1.1 다른 ATMVP 실시 예
이 기여에서, 일반 병합 목록의 ATMVP 병합 후보가 아핀 병합 목록의 제1 위치로 이동한다. 새로운 목록(즉, 서브 블록 기반 병합 후보 목록)의 모든 병합 후보는 서브 블록 코딩 툴에 기초한다.
2.3.5.1.2 VTM-3.0의 ATMVP
VTM-3.0에서, 서브 블록 병합 후보 목록(일명 아핀 병합 후보 목록)으로 알려진 특수 병합 후보 목록이 일반 병합 후보 목록 외에 추가된다. 서브 블록 병합 후보 목록은 다음 순서로 후보로 채워진다:
b. ATMVP 후보(사용 가능하거나 사용할 수 없음);
c. 물려받은 아핀 후보;
d. 구축된 아핀 후보;
e. 제로 MV 4 파라미터 아핀 모델로 패딩(Padding)
다음과 같이 유도된 서브 블록 병합 후보 목록의 최대 후보 수(ML로 표시):
1) ATMVP 사용 플래그(예를 들어, 플래그가 "sps_sbtmvp_enabled_flag"로 명명될 수 있음)가 켜져 있는 경우(1과 같음), 그러나 아핀 사용 플래그(예를 들어, 플래그는 "sps_affine_enabled_flag"로 명명될 수 있음)가 꺼져 있으면(0과 같음), ML은 1로 설정된다.
2) ATMVP 사용 플래그가 꺼져 있고(0과 같음) 아핀 사용 플래그가 꺼져 있으면(0과 같음), ML이 0으로 설정된다. 이 경우 서브 블록 병합 후보 목록은 사용되지 않는다.
3) 그렇지 않으면(아핀 사용 플래그가 켜져 있다(1과 같음), ATMVP 사용 플래그가 켜짐 또는 꺼짐), ML은 인코더에서 디코더로 시그널링 한다. 유효한 ML은 0 <= ML <= 5이다.
서브 블록 병합 후보 목록을 구축할 때 ATMVP 후보를 먼저 확인한다. 다음 조건 중 하나가 참이면, ATMVP 후보를 건너 뛰고 서브 블록 병합 후보 목록에 넣지 않는다.
1) ATMVP 사용 플래그가 꺼져 있다;
2) 모든 TMVP 사용 플래그(예를 들어, 슬라이스 레벨에서 시그널링 되면 플래그가 "slice_temporal_mvp_enabled_flag"로 명명될 수 있음)가 꺼져 있다;
3) 레퍼런스 목록 0에서 레퍼런스 인덱스 0이있는 레퍼런스 픽처가 현재 픽처와 동일하다(CPR이다)
VTM-3.0의 ATMVP는 JEM보다 훨씬 간단한다. ATMVP 병합 후보가 생성되면, 다음 프로세스가 적용된다:
a. 도 22에 도시된 바와 같이 이웃한 블록 A1, B1, B0, A0을 순서대로 확인하여 블록 X로 표시된 wp1 인터 코딩 된 블록(CPR 코딩되지 않은 블록)을 찾는다;
b. TMV =(0,0)을 초기화한다. 블록 X의 MV(MV'로 표시)가 있는 경우(슬라이스 헤더에서 시그널링 된대로), 병치된 레퍼런스 픽처를 참조하면, TMV는 MV'와 동일하게 설정된다.
c. 현재 블록의 중앙점이 (x0, y0)라고 가정하고, 병치된 픽처에서 M =(x0 + MV'x, y0 + MV'y)로(x0, y0)의 대응 위치를 찾는다. M을 커버링 하는 블록 Z를 찾는다.
i. Z가 인트라 코딩 된 경우, ATMVP를 사용할 수 없다;
ii. Z가 인터 코딩 된 경우, 블록 Z의 두 목록에 대한 MVZ_0 및 MVZ_1은 MVdefault0, MVdefault1로(Reflist 0 index 0) 및 (Reflist 1 index 0)로 스케일링 되고 저장된다.
d. 각 8x8 서브 블록에 대해, 중앙점이 (x0S, y0S)라고 가정하고 병치된 픽처에서 MS =(x0S + MV'x, y0S + MV'y)와 같이 (x0S, y0S)의 대응 위치를 찾는다. MS를 포함하는 블록 ZS를 찾아라.
i. ZS가 인트라 코딩 된 경우, MVdefault0, MVdefault1이 서브 블록에 할당된다.
ii. ZS가 인터 코딩 된 경우, 블록 ZS의 두 목록에 대한 MVZS_0 및 MVZS_1은 (Reflist 0 index 0) 및 (Reflist 1 index 0)로 스케일링되고 서브 블록에 할당된다.
ATMVP에서 MV 클리핑 및 마스킹:
병치된 픽처에서 M 또는 MS와 같은 대응 위치를 찾을 때 미리 정의된 영역 내에 있도록 클립핑 된다. CTU 크기는 VTM-3.0에서 S Х S, S = 128이다. 병치된 CTU의 왼쪽 상단 위치가 (xCTU, yCTU)라고 가정하면, (xN, yN)의 대응 위치 M 또는 MS가 유효한 영역 xCTU <= xN <xCTU + S + 4; yCTU <= yN <yCTU + S에 클립핑(clipped) 된다.
클리핑 외에도, (xN, yN)은 xN = xN & MASK, yN = yN & MASK로 마스킹 되고, 여기서 MASK는 ~(2N-1)과 같은 정수이고 N = 3으로 가장 낮은 3 비트를 0으로 설정한다. 따라서, xN과 yN은 8 배의 숫자야만 한다( "~"는 비트 보수 연산자(bitwise complement operator)를 나타냄).
도 24는 병치된 픽처에서 유효한 대응 영역의 예를 나타낸다:
2.3.5.1.3 슬라이스 헤더의 신택스 설계
2.3.5.2 정규 병합 목록
병합 목록 디자인과 달리 VVC에서는 이력 기반 모션 벡터 예측(History-Based Motion Vector Prediction)(HMVP) 방법이 사용된다.
HMVP에서, 이전에 코딩 된 모션 정보가 저장된다. 이전에 코딩 된 블록의 모션 정보는 HMVP 후보로 정의된다. 여러 HMVP 후보가 HMVP 표라는 이름의 표에 저장되며 이 표는 인코딩/디코딩 프로세스 중에 즉시 유지된다. HMVP 표는 새 슬라이스의 코딩/디코딩을 시작할 때 비워진다. 인터 코딩 된 블록이 있을 때마다, 연관 모션 정보가 새 HMVP 후보로 표의 마지막 항목에 추가된다. 전체 코딩 흐름은 도 25에 도시되어 있다.
HMVP 후보는 AMVP 및 병합 후보 목록 구축 프로세스 모두에서 사용할 수 있다. 도 26은 수정된 병합 후보 목록 구축 프로세스(파란색으로 강조 표시됨)를 묘사한다. TMVP 후보 삽입하는 단계 이후 병합 후보 목록이 가득차지 않은 경우 HMVP 표에 저장된 HMVP 후보를 활용하여 병합 후보 목록을 채울 수 있다. 일반적으로 하나의 블록이 모션 정보 측면에서 가장 가까운 이웃 블록과 더 높은 상관 관계를 가지고 있다는 점을 고려할 때, 표의 HMVP 후보는 인덱스의 내림차순으로 삽입된다. 표의 마지막 항목이 먼저 목록에 추가되고 제1 항목이 끝에 추가된다. 마찬가지로 중복 제거는 HMVP 후보에 적용된다. 사용 가능한 병합 후보의 총 수가 시그널링 되도록 허용된 최대 병합 후보 수에 도달하면 병합 후보 목록 구축 프로세스가 종료된다.
2.4 MV 반올림(MV Rounding)
VVC에서 MV가 오른쪽으로 시프트 되면 0으로 반올림되도록 요구된다. 공식화된 방식으로 MV(MVx, MVy)가 N 비트로 오른쪽 시프트 되는 경우 결과 MV'(MVx', MVy')는 다음과 같이 유도된다:
MVx'=(MVx +((1 << N) >> 1)-(MVx> = 0? 1 : 0)) >> N;
MVy'=(MVy +((1 << N) >> 1)-(MVy> = 0? 1 : 0)) >> N;
2.5 레퍼런스 픽처 리샘플링(RPR)의 실시 예
레퍼런스 영상 리샘플링(RPR)로 알려진 ARC는 일부 기존 및 향후 비디오 표준에 통합되었다.
RPR의 일부 구현 예에서, 병치된 픽처의 해상도가 현재 픽처와 다른 경우 TMVP가 비활성화된다.
또한 레퍼런스 픽처의 해상도가 현재 픽처와 다른 경우 BDOF 및 DMVR이 비활성화된다. 레퍼런스 픽처가 현재 픽처와 다른 해상도를 가질 때 일반 MC를 처리하기 위해, 보간 섹션은 다음과 같이 정의된다:
8.5.6.3 분수 샘플 보간 프로세스
8.5.6.3.1 일반
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플에 대한 현재 코딩 서브 블록의 왼쪽 상단 샘플을 지정하는 루마 위치 (xSb, ySb),
- 현재 코딩 서브 블록의 너비를 지정하는 변수 sbWidth,
- 현재 코딩 서브 블록의 높이를 지정하는 변수 sbHeight,
- 모션 벡터 오프셋 mvOffset,
- 정제된 모션 벡터 refMvLX,
- 선택된 레퍼런스 화상 샘플 어레이 refPicLX,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 양방향 광학 흐름 플래그 bdofFlag,
- 현재 블록의 색상 컴포넌트 인덱스를 지정하는 변수 cIdx.
이 프로세스의 출력은 다음과 같다:
- 예측 샘플 값의(sbWidth + brdExtSize) x(sbHeight + brdExtSize) 어레이 predSamplesLX.
예측 블록 경계 확장 크기 brdExtSize는 다음과 같이 유도된다:
brdExtSize =(bdofFlag ||(inter_affine_flag [xSb] [ySb] && sps_affine_prof_enabled_flag))? 2 : 0
(8-752)
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
모션 벡터 mvLX는 (refMvLX - mvOffset)과 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다:
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
- (xIntL, yIntL)을 전체 샘플(full-sample) 유닛으로 지정된 루마 위치이고(xFracL, yFracL)을 1/16 샘플 유닛으로 지정된 오프셋이라고 가정한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
- (refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치이다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL =((xSb << 4) + refMvLX [0]) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL =((ySb << 4) + refMvLX [1]) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
((vert_scale_fp + 8) >> 4)) + 32) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- bdofFlag가 참 또는 (sps_affine_prof_enabled_flag가 참이고 inter_affine_flag [xSb] [ySb]가 참과 같음)이면, 다음 조건 중 하나 이상에 대응하는 경우, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL +(xFracL >> 3) - 1), yIntL +(yFracL> > 3) - 1) 및 refPicLX를 입력으로 하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 패치 프로세스를 호출하여 유도된다.
1. xL은 0과 같다.
2. xL은 sbWidth + 1과 같다.
3. yL은 0과 같다.
4. yL은 sbHeight + 1과 같다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL-(brdExtSize> 0? 1 : 0), yIntL-(brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb)를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5)).
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
-(refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. refxSbC, refySbC, refxC 및 refyC 변수는 다음과 같이 유도된다:
refxSbC =((xSb/SubWidthC << 5) + mvLX [0]) * hori_scale_fp (8-763)
refxC =((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC *((hori_scale_fp + 8) >> 4)) + 16) >> 5 (8-764)
refySbC =((ySb/SubHeightC << 5) + mvLX [1]) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC *((vert_scale_fp + 8) >> 4)) + 16) >> 5 (8-766)
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
- 예측 샘플 값 predSamplesLX [xC] [yC]는 (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight 및 refPicLX을 입력으로 하여 8.5.6.3.4에 지정된 프로세스를 호출하여 유도된다:
8.5.6.3.2 루마 샘플 보간 필터링 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 루마 위치 (xIntL, yIntL),
- 분수 샘플 유닛의 루마 위치 (xFracL, yFracL),
- 레퍼런스 픽처의 왼쪽 위쪽 루마 샘플을 기준으로 레퍼런스 샘플 패딩에 대한 경계 블록의 왼쪽 위쪽 샘플을 지정하는 전체 샘플 유닛(xSbIntL, ySbIntL)의 루마 위치,
- 루마 레퍼런스 샘플 어레이 refPicLXL,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 현재 서브 블록의 너비를 지정하는 변수 sbWidth,
- 현재 서브 블록의 높이를 지정하는 변수 sbHeight,
- 현재 픽처의 왼쪽 위쪽 루마 샘플에 상대적인 현재 서브 블록의 왼쪽 위쪽 샘플을 지정하는 루마 위치 (xSb, ySb),
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL이다.
shift1, shift2 및 shift3 변수는 다음과 같이 유도된다:
- 변수 shift1은 Min(4, BitDepthY - 8)과 같게 설정되고, 변수 shift2는 6과 같게 설정되고, shift3 변수는 Max(2, 14 - BitDepthY)와 같게 설정된다.
- 변수 picW는 pic_width_in_luma_samples와 동일하게 설정되고 변수 picH는 pic_height_in_luma_samples와 동일하게 설정된다.
xFracL 또는 yFracL과 같은 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]는 다음과 같이 유도된다:
- MotionModelIdc [xSb] [ySb]가 0보다 크고 sbWidth와 sbHeight가 모두 4이면 루마 보간 필터 계수 fL [p]가 표 812에 지정된다.
- 그렇지 않으면, 루마 보간 필터 계수 fL [p]는 hpelIfIdx에 따라 표 8-11에 지정된다.
전체 샘플 유닛(xInti, yInti)의 루마 위치는 i = 0..7에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우 다음이 적용된다.
xInti = Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i - 3) (8-771)
yInti = Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3) (8-772)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xInti = Clip3(0, picW - 1, sps_ref_wraparound_enabled_flag?
ClipH((sps_ref_wraparound_offset_minus1 + 1) * MinCbSizeY, picW, xIntL + i - 3) : (8-773)
xIntL + i - 3)
yInti = Clip3(0, picH - 1, yIntL + i - 3) (8-774)
전체 샘플 유닛의 루마 위치는 i = 0..7에 대해 다음과 같이 추가로 수정된다:
xInti = Clip3(xSbIntL - 3, xSbIntL + sbWidth + 4, xInti) (8-775)
yInti = Clip3(ySbIntL - 3, ySbIntL + sbHeight + 4, yInti) (8-776)
예측 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
- xFracL과 yFracL이 모두 0이면 predSampleLXL의 값은 다음과 같이 유도된다:
predSampleLXL = refPicLXL [xInt3] [yInt3] << shift3 (8-777)
- 그렇지 않으면, xFracL이 0이 아니고 yFracL이 0이면 predSampleLXL의 값은 다음과 같이 유도된다:
(8-778)
- 그렇지 않으면, xFracL이 0이고 yFracL이 0이 아닌 경우 predSampleLXL의 값은 다음과 같이 유도된다:
- 그렇지 않으면, xFracL이 0이 아니고, yFracL이 0이 아닌 경우 predSampleLXL의 값은 다음과 같이 유도된다:
- n = 0..7 인 샘플 어레이 temp [n]은 다음과 같이 유도된다:
- 예측 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
8.5.6.3.3 루마 정수 샘플 패치 프로세스(Luma integer sample fetching process)
이 프로세스에 대한 입력은 다음과 같다:
- 풀 샘플 유닛의 루마 위치 (xIntL, yIntL),
- 루마 레퍼런스 샘플 어레이 refPicLXL,
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL이다.
변수 시프트는 Max(2, 14 - BitDepthY)와 동일하게 설정된다.
변수 picW는 pic_width_in_luma_samples와 동일하게 설정되고 변수 picH는 pic_height_in_luma_samples와 동일하게 설정된다.
전체 샘플 유닛(xInt, yInt)의 루마 위치는 다음과 같이 유도된다:
xInt = Clip3(0, picW - 1, sps_ref_wraparound_enabled_flag? (8-782)
ClipH((sps_ref_wraparound_offset_minus1 + 1) * MinCbSizeY, picW, xIntL) : xIntL)
yInt = Clip3(0, picH - 1, yIntL) (8-783)
예측 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
predSampleLXL = refPicLXL [xInt] [yInt] << shift3 (8-784)
8.5.6.3.4 크로마 샘플 보간 프로세스(Chroma sample interpolation process)
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 크로마 위치 (xIntC, yIntC),
- 1/32 부분 샘플 유닛(xFracC, yFracC)의 크로마 위치,
- 레퍼런스 픽처의 왼쪽 상단 크로마 샘플에 대한 레퍼런스 샘플 패딩에 대한 경계 블록의 왼쪽 상단 샘플을 지정하는 풀 샘플 유닛(xSbIntC, ySbIntC)의 크로마 위치,
- 현재 서브 블록의 너비를 지정하는 변수 sbWidth,
- 현재 서브 블록의 높이를 지정하는 변수 sbHeight,
- 크로마 레퍼런스 샘플 어레이 refPicLXC.
이 프로세스의 출력은 예측된 크로마 샘플 값 predSampleLXC이다.
shift1, shift2 및 shift3 변수는 다음과 같이 유도된다:
- 변수 shift1은 Min(4, BitDepthC - 8)과 같게 설정되고, 변수 shift2는 6과 같게 설정되고, 변수 shift3은 Max(2, 14 - BitDepthC)와 같게 설정된다.
- picWC 변수는 pic_width_in_luma_samples/SubWidthC와 동일하게 설정되고 picHC 변수는 pic_height_in_luma_samples/SubHeightC와 동일하게 설정된다.
xFracC 또는 yFracC와 같은 각 1/32 부분 샘플 위치 p에 대한 크로마 보간 필터 계수 fC [p]는 표 813에 지정되어 있다.
xOffset 변수는 (sps_ref_wraparound_offset_minus1 + 1) * MinCbSizeY)/SubWidthC와 동일하게 설정된다.
전체 샘플 유닛(xInti, yInti)의 채도 위치는 i = 0..3에 대해 다음과 같이 유도된다:
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우 다음이 적용된다.
xInti = Clip3(SubPicLeftBoundaryPos/SubWidthC, SubPicRightBoundaryPos/SubWidthC, xIntL + i) (8-785)
yInti = Clip3(SubPicTopBoundaryPos/SubHeightC, SubPicBotBoundaryPos/SubHeightC, yIntL + i) (8-786)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xInti = Clip3(0, picWC - 1, sps_ref_wraparound_enabled_flag? ClipH(xOffset, picWC, xIntC + i - 1) : (8-787)
xIntC + i - 1)
yInti = Clip3(0, picHC - 1, yIntC + i - 1) (8-788)
전체 샘플 유닛(xInti, yInti)의 채도 위치는 i = 0..3에 대해 다음과 같이 추가로 수정된다:
xInti = Clip3(xSbIntC - 1, xSbIntC + sbWidth + 2, xInti) (8-789)
yInti = Clip3(ySbIntC - 1, ySbIntC + sbHeight + 2, yInti) (8-790)
예측된 크로마 샘플 값 predSampleLXC는 다음과 같이 유도된다:
- xFracC 및 yFracC가 모두 0이면 predSampleLXC의 값은 다음과 같이 유도된다:
predSampleLXC = refPicLXC [xInt1] [yInt1] << shift3 (8-791)
- 그렇지 않으면, xFracC가 0이 아니고 yFracC가 0이면 predSampleLXC의 값은 다음과 같이 유도된다:
- 그렇지 않으면, xFracC가 0이고 yFracC가 0이 아니면 predSampleLXC의 값은 다음과 같이 유도된다:
- 그렇지 않으면, xFracC가 0이 아니고 yFracC가 0이 아니면 predSampleLXC의 값은 다음과 같이 유도된다:
- n = 0..3 인 샘플 어레이 temp [n]은 다음과 같이 유도된다:
- 예측된 크로마 샘플 값 predSampleLXC는 다음과 같이 유도된다:
predSampleLXC =(fC [ "yFracC"] [0] * temp [0] +
fC [ "yFracC"] [1] * 온도 [1] +
fC [ "yFracC"] [2] * 온도 [2] +
(8-795)
fC [ "yFracC"] [3] * temp [3]) >> shift2
2.6 서브 픽처를 사용하는 실시 예
기존 구현에서 서브 픽처의 현재 신택스 디자인으로, 서브 픽처의 위치 및 치수는 다음과 같이 유도된다:
subpics_present_flag = 1은 SPS RBSP 신택스에 존재하는 서브 픽처 파라미터가 존재함을 나타낸다. subpics_present_flag = 0은 SPS RBSP 신택스에 존재하는 서브 픽처 파라미터가 존재하지 않음을 나타낸다.
노트 2 - 비트 스트림이 서브 비트 스트림 추출 프로세스의 결과이고 서브 비트 스트림 추출 프로세스에 대한 입력 비트 스트림의 서브 픽처의 서브 세트 만 포함하는 경우, SPS의 RBSP에서 subpics_present_flag의 값을 1로 설정해야 할 수도 있다.
max_subpics_minus1 + 1은 CVS에 존재할 수 있는 최대 서브 픽처 수를 지정한다. max_subpics_minus1은 0에서 254 사이의 범위에 있어야 한다. 255의 값은 ITU-T | ISO/IEC이다. subpic_grid_col_width_minus1 + 1은 4 개 샘플 유닛으로 서브 픽처 식별자 그리드의 각 요소의 너비를 지정한다. 신택스 요소의 길이는 Ceil(Log2(pic_width_max_in_luma_samples/4)) 비트이다. NumSubPicGridCols 변수는 다음과 같이 유도된다:
NumSubPicGridCols =( pic_width_max_in_luma_samples + subpic_grid_col_width_minus1 * 4 + 3 ) /
( subpic_grid_col_width_minus1 * 4 + 4 )
(7-5)
subpic_grid_row_height_minus1 + 1은 4 개 샘플 유닛으로 서브 픽처 식별자 그리드의 각 요소 높이를 지정한다. 신택스 요소의 길이는 Ceil(Log2(pic_height_max_in_luma_samples/4)) 비트이다.
NumSubPicGridRows 변수는 다음과 같이 유도된다:
NumSubPicGridRows =(
pic_height_max_in_luma_samples + subpic_grid_row_height_minus1 * 4 + 3 ) /
( subpic_grid_row_height_minus1 * 4 + 4 )
(7-6)
subpic_grid_idx [i] [j]는 그리드 위치 (i, j)의 서브 픽처 인덱스를 지정한다. 신택스 요소의 길이는 Ceil(Log2(max_subpics_minus1 + 1)) 비트이다. SubPicTop [subpic_grid_idx [i] [j]], SubPicLeft [subpic_grid_idx [i] [j]], SubPicWidth [subpic_grid_idx [i] [j]], SubPicHeight [subpic_grid_idx [i] [j]] 및 NumSubPics는 다음과 같이 유도된다:
NumSubPics = 0
for( i = 0; i. < NumSubPicGridRows; i++ ) {
for( j = 0; j < NumSubPicGridCols; j++ ) {
if( i = = 0)
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = 0
else if(subpic_grid_idx[ i ][ j ]!=subpic_grid_idx[ i - 1 ][ j ] ){
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = i
SubPicHeight[ subpic_grid_idx[ i - 1][ j ] ] =
i - SubPicTop[ subpic_grid_idx[ i - 1 ][ j ] ]
}
if( j = = 0)
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = 0
(7-7)
else if(subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i ][ j - 1 ] ) {
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = j
SubPicWidth[ subpic_grid_idx[ i ][ j ] ] =
j -SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ]
}
if( i = = NumSubPicGridRows - 1)
SubPicHeight[ subpic_grid_idx[ i ][ j ] ] =
i - SubPicTop[ subpic_grid_idx[ i - 1 ][ j ] ] + 1
if(j
= = NumSubPicGridRows - 1)
SubPicWidth[ subpic_grid_idx[ i ][ j ] ] =
j - SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ] + 1
if( subpic_grid_idx[ i ][ j ] > NumSubPics)
NumSubPics = subpic_grid_idx[ i ][ j ]
}
}
subpic_treat_as_pic_flag [i]가 1 인 경우 CVS에서 부호화된 각 픽처의 i 번째 서브 픽처가 인루프 필터링 동작을 제외한 디코딩 프로세스에서 픽처로 취급되도록 지정한다.
subpic_treat_as_pic_flag [i] = 0은 CVS에서 부호화된 각 픽처의 i 번째 서브 픽처가 인루프 필터링 동작을 제외한 디코딩 프로세스에서 픽처로 취급되지 않도록 지정한다. 존재하지 않을 경우, subpic_treat_as_pic_flag [i]의 값은 0과 같은 것으로 추론된다.
2.7 통합 내부 간 예측(CIIP)
결합된 인터-인트라 예측(Combined Inter-Intra Prediction)(CIIP)는 VVC에 특수 병합 후보로 채택된다. W <= 64 및 H <= 64 인 WxH 블록에 대해서만 활성화할 수 있다.
3. 기존 구현의 단점
현재 VVC 설계에서 ATMVP에는 다음과 같은 문제가 있다:
1) ATMVP 적용 여부가 슬라이스 레벨과 CU 수준에서 일치하지 않는다;
2) 슬라이스 헤더에서는 TMVP가 비활성화되어 있어도 ATMVP가 활성화될 수 있다. 한편, ATMVP 플래그는 TMVP 플래그보다 먼저 시그널링 된다.
3) 마스킹은 항상 MV 압축 여부를 고려하지 않고 수행된다;
4) 유효한 대응 영역이 너무 클 수 있다;
5) TMV의 유도가 너무 복잡하다;
6) ATMVP는 경우에 따라 사용할 수 없으며 더 나은 기본 MV가 바람직하다.
7) ATMVP의 MV 스케일링 방법은 효율적이지 않을 수 있다;
8) ATMVP는 CPR 사례를 고려해야 한다;
9) 아핀 예측이 비활성화된 경우에도 기본 제로 아핀 병합 후보가 목록에 포함될 수 있다.
10) 현재 픽처는 장기 레퍼런스 픽처로 처리되고 다른 픽처는 짧은 레퍼런스 픽처로 처리된다. ATMVP 및 TMVP 후보 모두에 대해, 병치된 픽처의 시간적 블록의 모션 정보는 고정된 레퍼런스 인덱스가 있는 레퍼런스 픽처로 스케일링 된다(즉, 현재 디자인의 각 레퍼런스 픽처 목록에 대해 0). 그러나 CPR 모드가 활성화되면, 현재 픽처도 레퍼런스 픽처로 취급되고 현재 픽처는 인덱스가 0 인 레퍼런스 픽처 목록 0(RefPicList0)에 추가될 수 있다.
a. TMVP의 경우 시간적 블록이 CPR 모드로 코딩 되고 RefPicList0의 레퍼런스 픽처가 짧은 레퍼런스 픽처 인 경우 TMVP 후보는 사용할 수 없도록 설정된다.
b. 인덱스가 0 인 RefPicList0의 레퍼런스 영상이 현재 영상이고 현재 영상이 IRAP(Intra Random Access Point) 영상 인 경우, ATMVP 후보를 사용할 수 없도록 설정했다.
c. 블록 내 ATMVP 서브 블록의 경우, 시간적 블록으로부터 서브 블록의 모션 정보를 유도할 때, 시간적 블록이 CPR 모드로 코딩 된 경우 기본 ATMVP 후보(시작 TMV 및 현재 블록의 중앙 위치로 식별되는 시간적 블록에서 유도됨)가 서브 블록의 모션 정보를 채우는 데 사용된다.
11) MV는 정수 정밀도로 오른쪽 이동되지만, VVC의 반올림 규칙을 따르지 않는다.
12) ATMVP에서 사용하는 MV(MVx, MVy)는 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾는데 사용되는 것은 병치된 픽처를 가리 키기 때문에 직접 사용된다. 이것은 모든 픽처가 동일한 해상도에 있다는 가정을 기반으로 한다. 그러나 RPR이 활성화되면 다른 픽처 해상도를 사용할 수 있다. 병치된 픽처에서 대응하는 블록을 식별하여 서브 블록 모션 정보를 유도하는 것과 유사한 문제가 존재한다.
13) 하나의 블록 너비 또는 높이가 32보다 크고, 최대 변형 블록 크기(max transform block size)가 32 인 경우, CIIP 코딩 된 블록에 대해 인트라 예측 신호가 CU 크기로 생성되며; 반면에 인터 예측 신호가 TU 크기로 생성된다(현재 블록을 여러 32x32 블록으로 재귀 적으로 분할). CU를 사용하여 인트라 예측 신호를 유도하면 효율성이 떨어진다.
현재 디자인에는 몇 가지 문제가 있다. 첫째, 인덱스가 0 인 RefPicList0의 레퍼런스 픽처가 현재 픽처고 현재 픽처가 IRAP 픽처가 아니라면, ATMVP 절차는 여전히 호출되지만 시간적 모션 벡터가 현재 픽처에 맞게 조정될 수 없기 때문에 사용 가능한 ATMVP 후보를 찾을 수 없다.
4. 실시 예 및 기술의 예
아래의 기술 및 실시 예의 항목 별 목록은 일반적인 개념을 설명하기 위한 예로 고려되어야 한다. 이러한 기술을 좁은 방식으로 해석해서는 안된다. 더욱이, 이들 기술은 인코더 또는 디코더 실시 예에서 임의의 방식으로 결합될 수 있다.
1. TMVP 허용 여부 및/또는 CPR 사용 여부는 서브 블록 병합 후보 목록에서 최대 후보 수를 결정/파싱 하기 위해 및/또는 ATMVP 후보를 후보 목록에 추가해야 하는지 여부를 결정하기 위해 고려해야 한다. 서브 블록 병합 후보 목록의 최대 후보 수는 ML로 표시된다.
a) 하나의 예에서, ATMVP 사용 플래그가 꺼져 있거나(0과 같음), 또는 TMVP가 비활성화된 경우, 서브 블록 병합 후보 목록의 최대 후보 수를 결정하거나 파싱 할 때 ATMVP가 적용되지 않는 것으로 추론된다.
i. 일 예에서, ATMVP 사용 플래그가 켜져 있고(1과 같음) TMVP가 비활성화되고, ATMVP 후보가 서브 블록 병합 후보 목록 또는 ATMVP 후보 목록에 추가되지 않는다.
ii. 하나의 예에서, ATMVP 사용 플래그가 켜져 있고(1과 같음) TMVP가 비활성화되고, 및 아핀 사용 플래그가 꺼지면(0과 같음), ML이 0으로 설정되어, 서브 블록 병합이 적용되지 않음을 의미한다.
iii. 하나의 예에서 ATMVP 사용 플래그가 켜져 있고(1과 같음) TMVP가 활성화되고, 및 아핀 사용 플래그가 꺼지면(0과 같음), ML이 1로 설정된다.
b) 하나의 예에서, 서브 블록 병합 후보 목록에서 최대 후보 수를 결정하거나 파싱 할 때, ATMVP 사용 플래그가 꺼져 있거나(0과 같음), 또는 현재 픽처의 병치된 레퍼런스 픽처가 현재 픽처 자체 인 경우 ATMVP는 적용되지 않는 것으로 추론된다.
i. 일 예에서, ATMVP 사용 플래그가 켜져 있고(1과 같음) 현재 픽처의 병치된 레퍼런스 픽처는 현재 픽처 자체이고, ATMVP 후보는 서브 블록 병합 후보 목록 또는 ATMVP 후보 목록에 추가되지 않는다.
ii. 일 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음), 및 현재 픽처의 병치된 레퍼런스 픽처는 현재 픽처 자체이고, 아핀 사용 플래그는 꺼져있으면(0과 같음), ML은 0으로 설정되어 서브 블록 병합이 적용되지 않음을 의미한다.
iii. 일 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음), 현재 픽처의 병치된 레퍼런스 픽처는 현재 픽처 자체가 아니며, 아핀 사용 플래그는 꺼져 있으면(0과 같음), ML은 1로 설정된다.
c) 하나의 예에서, ATMVP 사용 플래그가 꺼져 있으면(0과 같음) ATMVP가 적용되지 않는 것으로 추론되거나, 또는 레퍼런스 목록 0에서 레퍼런스 픽처 인덱스 0을 갖는 레퍼런스 픽처는 서브 블록 병합 후보 목록에서 최대 후보 수를 결정하거나 파싱 할 때 현재 픽처 자체이다.
i. 일 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음) 및 레퍼런스 목록 0에서 레퍼런스 픽처 인덱스 0을 갖는 병치된 레퍼런스 픽처가 현재 픽처 자체이며, ATMVP 후보는 서브 블록 병합 후보 목록 또는 ATMVP 후보 목록에 추가되지 않는다.
ii. 하나의 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음) 레퍼런스 목록 0에서 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처는 현재 픽처 자체이고, 아핀 사용 플래그는 꺼져 있으면(0과 같음), ML은 0으로 설정되어 서브 블록 병합이 적용되지 않음을 의미한다.
iii. 일 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음), 레퍼런스 목록 0에서 레퍼런스 픽처 인덱스 0을 갖는 레퍼런스 픽처는 현재 픽처 자체가 아니며, 아핀 사용 플래그가 꺼져 있으면(0과 같음), ML이 1로 설정된다.
d) 하나의 예에서, ATMVP 사용 플래그가 꺼져 있으면(0과 같음) ATMVP가 적용되지 않는 것으로 추론되거나, 또는 레퍼런스 목록 1에서 레퍼런스 픽처 인덱스 0을 갖는 레퍼런스 픽처는 서브 블록 병합 후보 모록에서 최대 후보 수를 결정하거나 파싱 할 때 현재 픽처 자체이다.
i. 일 예에서, ATMVP 사용 플래그가 켜져 있고(1과 같음), 레퍼런스 목록 1에서 레퍼런스 픽처 인덱스 0을 갖는 병치된 레퍼런스 픽처가 현재 픽처 자체이고, ATMVP 후보는 서브 블록 병합 후보 목록 또는 ATMVP 후보 목록에 추가되지 않는다.
ii. 하나의 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음), 레퍼런스 목록 1에서 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처는 현재 픽처 자체이고, 아핀 사용 플래그는 꺼져 있으면(0과 같음), ML은 0으로 설정되어 서브 블록 병합이 적용되지 않음을 의미한다.
iii. 일 예에서, ATMVP 사용 플래그는 켜져 있고(1과 같음), 레퍼런스 목록 1에서 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처는 현재 픽처 자체가 아니고, 및 아핀 사용 플래그가 꺼져 있으면(0과 같음), ML이 1로 설정된다.
2. TMVP가 슬라이스/타일/픽처 레벨에서 비활성화된 경우 ATMVP가 묵시적으로 비활성화되고 ATMVP 플래그가 시그널링 되지 않는 것이 제안된다.
a) 하나의 예에서, ATMVP 플래그는 슬라이스 헤더/타일 헤더/PPS의 TMVP 플래그 이후에 시그널링 된다.
b) 일 예에서, ATMVP 또는/및 TMVP 플래그는 슬라이스 헤더/타일 헤더/PPS에서 시그널링 되지 않을 수 있으며 SPS 헤더에서만 시그널링 된다.
3. ATMVP에서 대응 위치를 마스킹 할지 여부는 MV 압축 여부 및 방법에 따라 다르다. (xN, yN)이 현재 블록/서브 블록의 코디네이터와 함께 병치된 픽처에서 시작 모션 벡터(예를 들어, TMV)로 계산된 대응 위치라고 가정한다.
a) 하나의 예에서, MV가 압축될 필요가 없는 경우(xN, yN)은 마스킹 되지 않는다(예를 들어, SPS에서 시그널링 된 sps_disable_motioncompression이 1 임); 그렇지 않으면, (MV를 압축해야 함)(xN, yN)은 xN = xN & MASK, yN = yN & MASK로 마스킹 되고, 여기서 MASK는 ~(2M-1)과 같은 정수이고, 및 M은 3 또는 4 같은 정수일 수 있다.
b) 각 2K x 2K 블록의 MV 저장 결과에 대한 MV 압축 방법이 동일한 모션 정보를 공유하고 ATMVP 프로세스의 마스크는 ~(2M-1)로 정의된다고 가정한다. 예를 들어, M = K + 1과 같이 K는 M과 같지 않을 수 있다고 제안된다.
c) ATMVP와 TMVP에서 사용되는 MASK는 동일하거나 다를 수 있다.
4. 하나의 예에서, MV 압축 방법은 유연할 수 있다.
a) 하나의 예에서, MV 압축 방법은 비 압축, 8x8 압축(3.a항에서 M = 3) 또는 16x16 압축(3.a항에서 M = 4) 중에서 선택할 수 있다.
b) 하나의 예에서, MV 압축 방법은 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더에서 시그널링 될 수 있다.
c) 하나의 예에서, MV 압축 방법은 다른 표준 프로필/레벨/티어에서 다르게 설정할 수 있다.
5. ATMVP에서 유효한 대응 영역은 적응적일 수 있다:
a) 예를 들어, 유효한 대응 영역은 현재 블록의 너비와 높이에 따라 달라질 수 있다.
b) 예를 들어, 유효한 대응 영역은 MV 압축 방법에 따라 달라질 수 있다.
i. 하나의 예에서, MV 압축 방법을 사용하지 않으면 유효한 대응 영역이 더 작아지고; MV 압축 방법을 사용하면 유효한 대응 영역이 더 커진다.
6. ATMVP에서 유효한 대응 영역은 CTU 영역보다 M Х N 크기가 작은 기초 영역을 기반으로 할 수 있다. 예를 들어, VTM-3.0의 CTU 크기는 128x128이고 기초 영역 크기는 64x64 일 수 있다. 현재 블록의 너비와 높이가 W와 H라고 가정한다.
a) 하나의 예에서, W <= M이고 H <= N이면, 현재 블록이 기초 영역 내에 있음을 의미하는 경우 ATMVP에서 유효한 대응 영역은 함께 병치된 기초 영역과 병치된 픽처의 확장이다. 도 27은 예를 나타낸다.
i. 예를 들어, 병치된 기초 영역의 왼쪽 상단 위치가 (xBR, yBR)라고 가정하면, (xN, yN)의 대응 위치가 유효한 영역 xBR <= xN <xBR + M + 4; yBR <= yN <yBR + N 로 클립 된다.
도 27은 현재 블록이 기초 영역(Basic Region)(BR) 내에 있을 때 제안된 유효한 영역의 일 실시 예를 나타낸다.
도 28은 현재 블록이 기초 영역 내에 있지 않을 때 유효한 영역의 예시적인 실시 예를 도시한다.
b) 하나의 예에서, W> M 및 H> N이면, 현재 블록이 기초 영역 내에 있지 않음을 의미하고, 그러면 현재 블록이 여러 부분으로 분할된다. 각 파트는 ATMVP에서 개별 유효한 대응 영역이 있다. 현재 블록의 위치 A에 대해, 병치된 블록의 대응 위치 B는 위치 A가 위치한 부분의 유효한 대응 영역 내에 있어야 한다.
i. 예를 들면, 현재 블록은 겹치지 않는 기초 영역으로 분할된다. 하나의 기초 영역에 유효한 대응 영역은 병치된 기초 영역과 병치된 픽처의 확장이다. 도 28은 예를 나타낸다.
1. 예를 들어, 현재 블록의 위치 A가 하나의 기초 영역 R에 있다고 가정한다. 병치된 픽처에서 병치된 R의 기초 영역은 CR로 표시된다. 병치된 블록에서 A의 대응 위치는 위치 B이다. CR의 왼쪽 상단 위치는 (xCR, yCR)이고, 그런 다음(xN, yN)의 위치 B는 유효한 영역 xCR <= xN <xCR + M + 4; yCR <= yN <yCR + N로 클립 된다.
7. 다른 픽처(예를 들어, 2.3.5.1.2의 TMV)에서 대응하는 블록을 찾기 위해 ATMVP에서 사용되는 모션 벡터는 다음과 같이 유도될 수 있다:
a) 하나의 예에서, TMV는 항상(0, 0)과 같은 기본 MV와 동일하게 설정된다.
i. 하나의 예에서, 기본 MV는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/CTU/CU에서 시그널링 된다.
b) 하나의 예에서, TMV는 다음과 같은 방법으로 HMVP 표에 저장된 하나의 MV로 설정된다.
i. HMVP 목록이 비어 있으면, TMV는 (0, 0)과 같은 기본 MV와 동일하게 설정된다.
ii. 그렇지 않으면(HMVP 목록이 비어 있지 않음),
1. TMV는 HMVP 표에 저장된 제1 요소와 동일하게 설정될 수 있다.
2. 대안적으로, TMV는 HMVP 표에 저장된 마지막 요소와 동일하게 설정될 수 있다.
3. 대안적으로, TMV는 HMVP 표에 저장된 특정 MV와 동일하게 만 설정될 수 있다.
a. 하나의 예에서, 특정 MV는 레퍼런스 목록 0을 참조한다.
b. 하나의 예에서 특정 MV는 레퍼런스 목록 1을 참조한다.
c. 일 예에서, 특정 MV는 인덱스 0을 갖는 레퍼런스 픽처와 같은 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
d. 일 예에서, 특정 MV는 인덱스 0을 갖는 레퍼런스 픽처와 같은 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
e. 하나의 예에서, 특정 MV는 병치된 픽처를 참조한다.
4. 또는 HMVP 표에 저장된 특정 MV(예를 들어, 글 머리 기호 3에 언급됨)를 찾을 수없는 경우 TMV를 기본 MV와 동일하게 설정할 수 있다.
a. 하나의 예에서, HMVP 표에 저장된 제1 요소 만 검색하여 특정 MV를 찾는다.
b. 하나의 예에서, HMVP 표에 저장된 마지막 요소 만 검색하여 특정 MV를 찾는다.
c. 하나의 예에서, HMVP 표에 저장된 일부 또는 모든 요소를 검색하여 특정 MV를 찾는다.
5. 대안적으로, 또한, HMVP에서 얻은 TMV는 현재 픽처 자체를 참조할 수 없다.
6. 대안적으로, 또한, HMVP 표에서 얻은 TMV는 참조하지 않는 경우 병치된 픽처로 스케일링 될 수 있다.
c) 하나의 예에서, TMV는 특정 이웃 블록의 하나의 MV로 설정된다. 하나의 예에서, TMV는 특정 이웃 블록의 하나의 MV로 설정된다.
i. 특정 이웃 블록은 도 22에서 블록 A0, A1, B0, B1, B2 일 수 있다.
ii. TMV는 다음과 같은 경우, 기본 MV와 동일하게 설정될 수 있다.
1. 특정 이웃 블록이 존재하지 않는다.
2. 특정 이웃 블록은 인
터 코딩 되지 않는다.
iii. TMV는 특정 이웃 블록에 저장된 특정 MV와 동일하게 만 설정될 수 있다.
1. 하나의 예에서 특정 MV는 레퍼런스 목록 0을 참조한다.
2. 하나의 예에서 특정 MV는 레퍼런스 목록 1을 참조한다.
3. 일 예에서, 특정 MV는 인덱스 0을 갖는 레퍼런스 픽처와 같은 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
4. 일 예에서, 특정 MV는 인덱스 0을 갖는 레퍼런스 픽처와 같은 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
5. 하나의 예에서, 특정 MV는 병치된 픽처를 참조한다.
6. TMV는 특정 이웃 블록에 저장된 특정 MV를 찾을 수 없는 경우 기본 MV와 동일하게 설정될 수 있다.
iv. 특정 이웃 블록에서 얻은 TMV는 참조하지 않는 경우 collocated picture로 스케일링 될 수 있다.
v. 특정 이웃 블록에서 얻은 TMV는 현재 픽처 자체를 참조할 수 없다.
8. 2.3.5.1.2에 개시된 ATMVP에서 사용되는 MVdefault0 및 MVdefault1은 다음과 같이 유도될 수 있다:
a) 하나의 예에서, MVdefault0 및 MVdefault1은 (0,0)과 동일하게 설정된다.
b) 하나의 예에서, MVdefaultX(X = 0 또는 1)는 HMVP에서 유도된다.
i. HMVP 목록이 비어있으면, MVdefaultX는 (0, 0)과 같이 미리 정의된 기본 MV와 동일하게 설정된다.
1. 미리 정의된 기본 MV는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/CTU/CU에서 시그널링 될 수 있다.
ii. 그렇지 않으면(HMVP 목록이 비어 있지 않음),
1. MVdefaultX는 HMVP 표에 저장된 제1 요소와 동일하게 설정될 수 있다.
2. MVdefaultX는 HMVP 표에 저장된 마지막 요소와 동일하게 설정될 수 있다.
3. MVdefaultX는 HMVP 표에 저장된 특정 MV와 동일하게만 설정될 수 있다.
a. 하나의 예에서, 특정 MV는 레퍼런스 목록 X를 참조한다.
b. 일 예에서, 특정 MV는 인덱스가 0 인 레퍼런스 픽처와 같은 레퍼런스 목록 X의 특정 레퍼런스 픽처를 참조한다.
4. MVdefaultX는 HMVP 표에 저장된 특정 MV를 찾을 수 없는 경우 미리 정의된 기본 MV와 동일하게 설정될 수 있다.
a. 하나의 예에서, HMVP 표에 저장된 제1 요소만 검색된다.
b. 하나의 예에서, HMVP 표에 저장된 마지막 요소만 검색된다.
c. 하나의 예에서, HMVP 표에 저장된 일부 또는 모든 요소가 검색된다.
5. HMVP 표에서 얻은 MVdefaultX는 참조하지 않는 경우 배치된 픽처로 확장될 수 있다.
6. HMVP에서 얻은 MVdefaultX는 현재 픽처 자체를 참조할 수 없다.
c) 하나의 예에서, MVdefaultX(X = 0 또는 1)는 이웃 블록에서 유도된다.
i. 이웃 블록은 도 22의 블록 A0, A1, B0, B1, B2를 포함할 수 있다.
1. 예를 들어, 이러한 블록 중 하나만 MVdefaultX를 유도하는 데 사용된다.
2. 대안적으로, 이러한 블록의 일부 또는 전부를 사용하여 MVdefaultX를 유도한다.
a. 이러한 블록은 유효한 MVdefaultX를 찾을 때까지 순서대로 확인된다.
3. 선택된 하나 이상의 이웃 블록에서 유효한 MVdefaultX를 찾을 수 없는 경우(0, 0)과 같이 미리 정의된 기본 MV와 동일하게 설정된다.
a. 미리 정의된 기본 MV는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/CTU/CU에서 시그널링 될 수 있다.
ii. 다음과 같은 경우 특정 이웃 블록에서 유효한 MVdefaultX를 찾을 수 없다.
1. 특정 이웃 블록이 존재하지 않는다.
2. 특정 이웃 블록은 인터 코딩되지 않는다.
iii. MVdefaultX는 특정 이웃 블록에 저장된 특정 MV와 동일하게 만 설정될 수 있다.
1. 하나의 예에서, 특정 MV는 레퍼런스 목록 X를 참조한다.
2. 하나의 예에서, 특정 MV는 인덱스가 0 인 레퍼런스 픽처와 같은 레퍼런스 목록 X의 특정 레퍼런스 픽처를 참조한다.
iv. 특정 이웃 블록으로부터 획득된 MVdefaultX는 레퍼런스 목록 X에서 인덱스 0을 갖는 레퍼런스 픽처와 같은 특정 레퍼런스 픽처로 스케일링 될 수 있다.
v. 특정 이웃 블록에서 얻은 MVdefaultX는 현재 픽처 자체를 참조할 수 없다.
9. 서브 블록 또는 비-서브 블록 ATMVP 후보에 대해, 병치된 픽처의 서브 블록/전체 블록에 대한 시간적 블록이 CPR 모드로 코딩 되면, 기본 모션 후보가 대신 사용될 수 있다.
a) 하나의 예에서, 기본 모션 후보는 현재 블록의 중앙 위치와 연관된 모션 후보로 정의될 수 있다(예를 들어, 2.3.5.1.2에 개시된 바와 같이 ATMVP에서 사용되는 MVdefault0 및/또는 MVdefault1).
b) 일 예에서, 기본 모션 후보는 (0, 0) 모션 벡터로 정의될 수 있고, 가능하다면 두 레퍼런스 픽처 목록에 대해 0과 동일한 레퍼런스 픽처 인덱스가 될 수 있다.
10. ATMVP 프로세스를 위한 기본 모션 정보(예를 들어, 2.3.5.1.2에 개시된 바와 같이 ATMVP에서 사용되는 MVdefault0 및 MVdefault1)는 서브 블록 모션 정보 유도 프로세스에서 사용되는 위치 (position)의 위치 (location)에 기초하여 유도될 수 있다고 제안된다. 이 제안된 방법을 사용하면 대응하는 서브 블록에 대해 기본 모션 정보가 직접 할당되므로 추가로 모션 정보를 유도할 필요가 없다.
a) 하나의 예에서, 현재 블록의 중앙 위치를 사용하는 대신 현재 블록 내의 서브 블록(예를 들어, 중앙 서브 블록)의 중앙 위치가 활용될 수 있다.
b) 기존 및 제안된 구현의 예가 각각 도 29a 및 29b에 도시되어 있다.
11. ATMVP 후보는 항상 다음과 같은 방법으로 사용할 수 있다:
a) 현재 블록의 중앙점이 (x0, y0)이라고 가정하고, 병치된 픽처에서 M =(x0 + MV'x, y0 + MV'y)로(x0, y0)의 대응 위치를 찾는다. M을 포함하는 블록 Z를 찾는다. Z가 인트라 코딩 된 경우 MVdefault0, MVdefault1은 항목 6에서 제안된 일부 방법에 의해 유도된다.
b) 대안적으로, 모션 정보를 얻기 위해 블록 Z가 위치하지 않고, 항목 8에서 제안된 일부 방법을 직접 적용하여 MVdefault0 및 MVdefault1을 얻는다.
c) 대안적으로, ATMVP 프로세스에서 사용되는 기본 모션 후보를 항상 사용할 수 있다. 현재 설계에 따라 사용할 수 없는 것으로 설정되면(예를 들어, 시간적 블록이 인트라 코딩 됨), 기본 모션 후보 대신 다른 모션 벡터가 사용될 수 있다.
i. 하나의 예에서, 본원에 레퍼런스로 포함된 국제 출원 PCT/CN2018/124639의 솔루션이 적용될 수 있다.
d) 대안적으로, ATMVP 후보가 항상 사용 가능한지 여부는 다른 고급 신택스 정보에 따라 달라진다.
i. 하나의 예에서, 슬라이스/타일/픽처 헤더 또는 다른 비디오 유닛에서 ATMVP 활성화 플래그가 참으로 설정된 경우에만 참으로 추론되고, ATMVP 후보는 항상 사용 가능하도록 설정될 수 있다.
ii. 일 예에서, 위의 방법은 슬라이스 헤더/픽처 헤더 또는 기타 비디오 유닛의 ATMVP 활성화 플래그가 참으로 설정되는 경우에만 적용이 가능할 수 있고 현재 픽처는 IRAP 픽처가 아니며 현재 픽처는 레퍼런스 인덱스가 0 인 RefPicList0에 삽입되지 않는다.
e) 고정 인덱스 또는 고정 인덱스 그룹이 ATMVP 후보에 할당된다. ATMVP 후보를 항상 사용할 수 없는 경우, 고정 인덱스/그룹 인덱스는 다른 종류의 모션 후보(예를 들어, 아핀 후보)로 유추될 수 있다.
12. 제로 모션 아핀 병합 후보가 서브 블록 병합 후보 목록에 포함되는지 여부는 아핀 예측이 가능한지 여부에 따라 달라져야 한다고 제안한다.
a) 예를 들어, 아핀 사용 플래그가 꺼져 있으면 (sps_affine_enabled_flag가 0과 같음) 제로 모션 아핀 병합 후보는 서브 블록 병합 후보 목록에 포함되지 않는다.
b) 대안적으로, 비-아핀 후보 인 기본 모션 벡터 후보가 대신 추가된다.
13. 비-아핀 패딩(non-affine padding) 후보는 서브 블록 병합 후보 목록에 들어갈 수 있다고 제안된다.
a) 서브 블록 병합 후보 목록이 충족되지 않으면 제로 모션 비-아핀 패딩 후보가 추가될 수 있다.
b) 이러한 패딩 후보가 선택되면 현재 블록의 affine_flag를 0으로 설정해야 한다.
c) 대안적으로, 서브 블록 병합 후보 목록이 충족되지 않고 아핀 사용 플래그가 꺼진 경우 제로 모션 비-아핀 패딩 후보가 서브 블록 병합 후보 목록에 추가된다.
14. MV0 및 MV1이 대응 위치를 포함하는 블록의 레퍼런스 목록 0 및 레퍼런스 목록 1의 MV를 나타낸다고 가정한다 (예를 들어, MV0 및 MV1은 MVZ_0 및 MVZ_1 또는 섹션 2.3.5.1.2에서 설명한 MVZS_0 및 MVZS_1 일 수 있음). MV0' 및 MV1'은 현재 블록 또는 서브 블록에 대해 유도될 레퍼런스 목록 0 및 레퍼런스 목록 1의 MV를 나타낸다. 그런 다음 MV0'및 MV1'은 배율 조정을 통해 유도되어야 한다.
a) MV0, 병치된 픽처가 레퍼런스 목록 1에 있는 경우;
b) MV1, 병치된 픽처가 레퍼런스 목록 0에있는 경우.
15. ATMVP 및/또는 TMVP 활성화/비활성화 플래그는, 레퍼런스 픽처 목록 X (PicRefListX, 예를 들어, X = 0)에서, 현재 픽처가 인덱스가 M (예를 들어, 0)으로 설정된 레퍼런스 픽처로 취급될 때, 슬라이스/타일 또는 다른 종류의 비디오 유닛에 대해 거짓으로 추론될 수 있다. 여기서 M은 ATMVP/TMVP 프로세스에서 PicRefListX에 대해 시간적 블록의 모션 정보가 스케일링 되어야 하는 타겟 참조 픽처 인덱스와 동일할 수 있다.
a) 대안적으로, 위의 방법은 현재 픽처가 IRAP (Intra Random Access Point) 픽처 인 경우에만 적용 가능하다.
b) 하나의 예에서, 현재 픽처가 PicRefListX에서 인덱스가 M (예를 들어, 0)으로 설정된 레퍼런스 픽처로 취급되고/또는 현재 픽처가 PicRefListY에서 인덱스가 N (예를 들어, 0)으로 설정된 참조 픽처로 취급될 때, ATMVP 및 / 또는 TMVP 활성화 / 비활성화 플래그가 거짓으로 추론될 수 있다. 변수 M과 N은 TMVP 또는 ATMVP 프로세스에서 사용되는 대상 레퍼런스 픽처 인덱스를 나타낸다.
c) ATMVP 프로세스의 경우, 현재 블록의 모션 정보가 도출된 병치된 픽처가 현재 픽처가 아니어야 한다는 규칙을 확인 비트 스트림(confirming bitstream)이 따라야 하는 것으로 제한된다.
d) 대안적으로, 위의 조건이 참이면 ATMVP 또는 TMVP 프로세스가 호출되지 않는다.
16. 현재 블록에 대한 레퍼런스 픽처 ㅁ고록 X (PicRefListX, 예를 들어, X = 0)에서 인덱스가 M (예를 들어, 0)으로 설정된 레퍼런스 픽처가 현재 픽처라면, ATMVP는 이 블록에 대해 여전히 활성화될 수 있다.
a) 하나의 예에서, 모든 서브 블록의 모션 정보는 현재 픽처를 가리킨다.
b) 하나의 예에서, 시간 블록으로부터 서브 블록의 모션 정보를 획득할 때, 시간 블록은 시간 블록의 현재 픽처를 가리키는 적어도 하나의 레퍼런스 픽처로 코딩 되어야 한다.
c) 하나의 예에서, 시간 블록으로부터 서브 블록의 모션 정보를 획득할 때, 스케일링 동작이 적용되지 않는다.
17. ATMVP 사용 여부에 관계없이 서브 블록 병합 인덱스의 코딩 방식이 정렬된다.
a) 하나의 예에서, 제1 L 빈에 대해 컨텍스트 코딩 된다. 나머지 빈의 경우 바이패스 코딩 된다. 한 예에서 L은 1로 설정된다.
b) 또는 모든 빈에 대해 컨텍스트 코딩 된다.
18. ATMVP에서 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾기 위해 사용되는 MV(MVx, MVy)는 MV 스케일링 프로세스와 동일한 반올림 방법으로 정수 정밀도((MVx', MVy'로 표시)로 오른쪽 시프트 될 수 있다.
a) 대안적으로, ATMVP에서 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾기 위해 사용되는 MV는 MV 평균화 프로세스에서와 동일한 반올림 방법으로 정수 정밀도로 오른쪽 시프트 될 수 있다.
b) 대안적으로, ATMVP에서 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾기 위해 사용되는 MV는 적응형 MV 해상도(AMVR) 프로세스에서와 동일한 반올림 방법으로 정수 정밀도로 오른쪽 시프트 될 수 있다.
19. ATMVP에서 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾기 위해 사용되는 MV(MVx, MVy)는 0쪽으로 반올림하여 정수 정밀도((MVx', MVy'로 표시)로 오른쪽 시프트 될 수 있다.
a) 예를 들어, MVx'=(MVx +((1 << N) >> 1)- (MVx> = 0? 1 : 0)) >> N; N은 MV 해상도를 나타내는 정수이고, 예를 들어 N = 4이다.
i. 예를 들어, MVx'=(MVx +(MVx> = 0? 7 : 8)) >> 4이다.
b) 예를 들어, MVy'=(MVy +((1 << N) >> 1)- (MVy> = 0? 1 : 0)) >> N; N은 MV 해상도를 나타내는 정수이고, 예를 들어 N = 4이다.
i. 예를 들어, MVy'=(MVy +(MVy> = 0? 7 : 8)) >> 4이다.
20. 하나의 예에서, 18항 및 19항의 MV(MVx, MVy)는 ATMVP에서 사용되는 기본 모션 정보를 유도하기 위해 대응하는 블록을 찾는 데 사용되며, 예를 들어 서브 블록의 중앙 위치와 시프트 된 MV를 사용하거나 현재 블록의 왼쪽 상단 위치와 시프트 된 MV를 사용한다.
a) 하나의 예에서, MV(MVx, MVy)는 ATMVP 프로세스에서 서브 블록의 중앙 위치와 시프트 된 MV 등을 이용하여 현재 블록에서 서브 블록의 모션 정보를 유도하기 위해 대응하는 블록의 위치를 찾는 데 사용된다.
21. 18항, 19항, 20항에서 제안된 방법은 모션 벡터가 있는 다른 픽처 또는 현재 픽처에서 레퍼런스 블록을 찾아야하는 다른 코딩 툴에도 적용될 수 있다.
22. ATMVP에서 다른 픽처(예를 들어, 0의 TMV)에서 대응하는 블록을 찾기 위해 사용되는 MV(MVx, MVy)는 콜 로케이션 픽처를 가리키는 경우에도 스케일링 될 수 있다.
a) 하나의 예에서, 병치된 픽처(또는 그 안의 적합성 윈도우)의 너비 및/또는 높이가 현재 픽처(또는 그 안의 적합성 윈도우)의 것과 다른 경우, MV는 스케일링 될 수 있다.
b) 병치된 픽처의(적합성 윈도우) 너비와 높이가 각각 W1과 H1로 표시된다고 가정한다. 현재 픽처(의 적합성 윈도우)의 너비와 높이는 각각 W2와 H2로 표시된다. 그러면 MV(MVx, MVy)는 MVx'= MVx * W1/W2 및 MVy'= MVy * H1/H2로 스케일링 될 수 있다.
23. ATMVP 프로세스에서 모션 정보를 유도하는 데 사용되는 현재 블록의 중앙점(2.3.5.1.2의 위치 (x0, y0) 등)은 스케일링 및/또는 오프셋을 추가하여 추가로 수정할 수 있다.
a) 하나의 예에서, 병치된 픽처(또는 그 안에 있는 적합성 윈도우)의 너비 및/또는 높이가 현재 픽처(또는 그 안의 적합성 윈도우)와 다른 경우, 중앙점은 더 수정될 수 있다.
b) 병치된 픽처에서 적합성 윈도우의 왼쪽 상단 위치가 X1 및 Y1로 표시된다고 가정한다. 현재 픽처에 정의된 적합성 윈도우의 왼쪽 상단 위치는 X2 및 Y2로 표시된다. 병치된 픽처(의 적합성 윈도우)의 너비와 높이는 각각 W1 및 H1로 표시된다. 현재 픽처의 너비와 높이 (적합성 윈도우)는 각각 W2와 H2로 표시된다. 그러면(x0, y0)은 x0'=(x0-X2) * W1/W2 + X1 및 y0'=(y0-Y2) * H1/H2 + Y1로 수정될 수 있다.
i. 대안적으로, x0'= x0 * W1/W2, y0'= y0 * H1/H2이다.
24. ATMVP 프로세스에서 모션 정보를 유도하는 데 사용되는 대응 위치 (2.3.5.1.2의 위치 M 등)는 스케일링 및/또는 오프셋 추가를 통해 추가로 수정할 수 있다.
a) 하나의 예에서, 병치된 픽처(또는 그 안에 있는 적합성 윈도우)의 너비 및/또는 높이가 현재 픽처(또는 그 안의 적합성 윈도우)와 다른 경우, 대응 위치는 더 수정될 수 있다.
b) 병치된 픽처에서 적합성 윈도우의 왼쪽 상단 위치가 X1 및 Y1로 표시된다고 가정한다. 현재 픽처에 정의된 적합성 윈도우의 왼쪽 상단 위치는 X2 및 Y2로 표시된다. 병치된 픽처(의 적합성 윈도우)의 너비와 높이는 각각 W1 및 H1로 표시된다. 현재 픽처의 너비와 높이 (적합성 윈도우)는 각각 W2와 H2로 표시된다. 그러면 M(x, y)는 x'=(x-X2) * W1/W2 + X1 및 y'=(y-Y2) * H1/H2 + Y1로 수정될 수 있다.
i. 대안적으로, x'= x * W1/W2, y'= y * H1/H2이다.
서브 픽처와 관련된
25. 하나의 예에서, 위치 (i, j) 및 (i, j-1)이 다른 서브 픽처에 속하는 경우, (j-1) 열에서 끝나는 부 영상 S의 폭은 부 영상 S의 가장 왼쪽 열을 뺀 j와 동일하게 설정될 수 있다.
a) 기존 구현에 기초한 실시 예는 아래와 같이 강조 표시된다.
NumSubPics = 0
for( i = 0; i. < NumSubPicGridRows; i++ ) {
for( j = 0; j < NumSubPicGridCols; j++ ) {
if( i = = 0)
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = 0
else if( subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i - 1 ][ j ] ) {
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = i
SubPicHeight[ subpic_grid_idx[ i - 1][ j ] ] =
i - SubPicTop[ subpic_grid_idx[ i - 1 ][ j ] ]
}
if( j = = 0)
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = 0
(7-7)
else if(subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i ][ j - 1 ] ) {
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = j
SubPicWidth[ subpic_grid_idx[ i ][ j -1] ] =
j - SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ]
}
if( i = = NumSubPicGridRows - 1)
SubPicHeight[ subpic_grid_idx[ i ][ j ] ] =
i - SubPicTop[ subpic_grid_idx[ i - 1 ][ j ] ] + 1
if(j
= = NumSubPicGridRows - 1)
SubPicWidth[ subpic_grid_idx[ i ][ j ] ] =
j - SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ] + 1
if( subpic_grid_idx[ i ][ j ] > NumSubPics)
NumSubPics = subpic_grid_idx[ i ][ j ]
}
}
26. 하나의 예에서, (NumSubPicGridRows-1) 행에서 끝나는 서브 픽처 S의 높이는 (NumSubPicGridRows-1)에서 서브 픽처 S의 최상위 행을 뺀 다음 1을 더한 값으로 설정될 수 있다.
a) 기존 구현에 기반한 실시 예는 아래와 같이 강조 표시된다.
NumSubPics = 0
for( i = 0; i. < NumSubPicGridRows; i++ ) {
for( j = 0; j < NumSubPicGridCols; j++ ) {
if( i = = 0)
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = 0
else if( subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i - 1 ][ j ] ) {
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = i
SubPicHeight[ subpic_grid_idx[ i 1][ j ] ]=
i - SubPicTop[ subpic_grid_idx[ i - 1 ][ j ] ]
}
if( j = = 0)
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = 0
(7-7)
else if(subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i ][ j 1 ] ) {
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = j
SubPicWidth[ subpic_grid_idx[ i ][ j ] ]=
j - SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ]
}
if( i = = NumSubPicGridRows 1)
SubPicHeight[ subpic_grid_idx[ i ][ j ] ]= i SubPicTop[ subpic_grid_idx[ i ][ j ] ] + 1
if(j= = NumSubPicGridRows 1)
SubPicWidth[ subpic_grid_idx[ i ][ j ] ]= j SubPicLeft[ subpic_grid_idx[ i ][ j - 1 ] ] + 1
if( subpic_grid_idx[ i ][ j ] > NumSubPics)
NumSubPics = subpic_grid_idx[ i ][ j ]
27. 하나의 예에서, (NumSubPicGridColumns - 1) 열에서 끝나는 서브 픽처 S의 너비는 (NumSubPicGridColumns - 1)에서 서브 픽처 S의 가장 왼쪽 열을 뺀 다음 1을 더한 값으로 설정할 수 있다.
a) 기존 구현에 기반한 실시 예는 아래와 같이 강조 표시된다.
NumSubPics = 0
for( i = 0; i. < NumSubPicGridRows; i++ ) {
for( j = 0; j < NumSubPicGridCols; j++ ) {
if( i = = 0)
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = 0
else if( subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i - 1 ][ j ] ) {
SubPicTop[ subpic_grid_idx[ i ][ j ] ] = i
SubPicHeight[ subpic_grid_idx[ i 1][ j ] ]=
i - SubPicTop[ subpic_grid_idx[ i 1 ][ j ] ]
}
if( j = = 0)
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = 0
(7-7)
else if(subpic_grid_idx[ i ][ j ] != subpic_grid_idx[ i ][ j 1 ] ) {
SubPicLeft[ subpic_grid_idx[ i ][ j ] ] = j
SubPicWidth[ subpic_grid_idx[ i ][ j ] ]=
j - SubPicLeft[ subpic_grid_idx[ i ][ j 1 ] ]
}
if( i = = NumSubPicGridRows 1)
SubPicHeight[ subpic_grid_idx[ i ][ j ] ]=
i - SubPicTop[ subpic_grid_idx[ i 1 ][ j ] ] + 1
if(j= = NumSubPicGridColumns 1)
SubPicWidth[ subpic_grid_idx[ i ][ j ] ]= j - SubPicLeft[ subpic_grid_idx[ i ][ j ] ] + 1
if( subpic_grid_idx[ i ][ j ] > NumSubPics)
NumSubPics = subpic_grid_idx[ i ][ j ]
28. 서브 픽처 그리드(sub-picture grid)는 CTU 크기의 정수배여야 한다.
a) 기존 구현에 기반한 실시 예는 아래와 같이 강조 표시된다. subpic_grid_col_width_minus1 + 1은 CtbSizeY 유닛으로 서브 픽처 식별자 그리드의 각 요소의 너비를 지정한다. 신택스 요소의 길이는 Ceil(Log2(pic_width_max_in_luma_samples/CtbSizeY)) 비트이다. NumSubPicGridCols 변수는 다음과 같이 유도된다:
NumSubPicGridCols =(
pic_width_max_in_luma_samples + subpic_grid_col_width_minus1 * CtbSizeY + CtbSizeY-1) /
( subpic_grid_col_width_minus1 * CtbSizeY + CtbSizeY)
(7-5)
subpic_grid_row_height_minus1 + 1은 4 개 샘플 유닛으로 서브 픽처 식별자 그리드의 각 요소의 높이를 지정한다. 식택스 요소의 길이는 Ceil(Log2(pic_height_max_in_luma_samples/CtbSizeY)) 비트이다. NumSubPicGridRows 변수는 다음과 같이 유도된다:
NumSubPicGridRows =(
pic_height_max_in_luma_samples + subpic_grid_row_height_minus1 * CtbSizeY + CtbSizeY-1 ) /
( subpic_grid_row_height_minus1 * CtbSizeY + CtbSizeY)
(7-6)
29. 서브 픽처가 서로 겹칠 수 없으며 모든 서브 픽처가 전체 픽처를 커버해야 함을 보장하기 위해 적합성 제한이 추가되었다.
a) 기존 구현에 기초하는 한 구현은 아래와 같이 강조 표시된다.
Any subpic_grid_idx[ i ][ j ] must be equal to idx if the following conditions are both satisfied:
i >= SubPicTop[ idx ] and i < SubPicTop[ idx ] + SubPicHeight[ idx ].
j >= SubPicLeft[ idx ] and j < SubPicLeft[ idx ] + SubPicWidth[ idx ].
Any subpic_grid_idx[ i ][ j ] must be different to idx if the following conditions are not both satisfied:
i >= SubPicTop[ idx ] and i < SubPicTop[ idx ] + SubPicHeight[ idx ].
j >= SubPicLeft[ idx ] and j < SubPicLeft[ idx ] + SubPicWidth[ idx ].
RPR 관련
30. RPR_flag로 표시된 신택스 요소(플래그와 같은)는 RPR이 비디오 유닛(예를 들어, 시퀀스)에서 사용될 수 있는지 여부를 나타내기 위해 시그널링 된다. RPR_flag는 SPS, VPS 또는 DPS에서 시그널링 될 수 있다.
a) 하나의 예에서, RPR이 사용되지 않도록 시그널링 되는 경우(예를 들어, RPR_flag가 0 임) PPS에서 시그널링 된 모든 너비/높이는 SPS에서 시그널링 된 최대 너비/최대 높이와 동일해야 한다.
b) 하나의 예에서, RPR이 사용되지 않도록 시그널링 되면(예를 들어, RPR_flag가 0) PPS의 모든 너비/높이는 시그널링 되지 않으며 SPS에서 시그널링 된 최대 너비/최대 높이로 추론된다.
c) 하나의 예에서, RPR이 사용되지 않는다는 시그널링 되면(예를 들어, RPR_flag가 0), 적합성 윈도우 정보는 디코딩 프로세스에서 사용되지 않는다. 그렇지 않으면(RPR이 사용되도록 시그널링 됨), 디코딩 프로세스에서 적합성 윈도우 정보가 사용될 수 있다.
31. 현재 블록의 예측 블록을 유도하기 위해 모션 보상 프로세스에서 사용되는 보간 필터는 레퍼런스 픽처의 해상도가 현재 픽처와 다른지 또는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 큰지 여부에 의존하여 선택될 수 있다고 제안한다.
a. 하나의 예에서, 더 적은 탭을 갖는 보간 필터는 조건 A가 충족될 때 적용될 수 있으며, 조건 A는 현재 픽처 및/또는 레퍼런스 픽처의 차원에 의존한다.
i. 하나의 예에서, 조건 A는 레퍼런스 화상의 해상도가 현재 화상과 다르다.
ii. 일 예에서, 조건 A는 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 너비보다 크다.
iii. 하나의 예에서, 조건 A는 W1> a * W2 및/또는 H1> b * H2이고, 여기서 (W1, H1)은 레퍼런스 픽처의 너비와 높이를 나타내고, (W2, H2)는 현재 픽처의 너비와 높이를 나타내며, a와 b는 두 가지 인자(factor)이며, 예를 들어 a = b = 1.5이다.
iv. 일 예에서, 조건 A는 또한 이중 예측이 사용되는지 여부에 따라 달라질 수 있다.
1) 조건 A 만족은 현재 블록에 대해 양방향 예측을 사용하는 경우에만 만족된다.
v. 하나의 예에서, 조건 A는 M과 N에 의존 할 수 있고, 여기서 M과 N은 현재 블록의 너비와 높이를 나타낸다.
1) 예를 들어, 조건 A는 M * N <= T 일 때만 충족되고, 여기서 T는 64와 같은 정수이다.
2) 예를 들어, 조건 A는 M <= T1 또는 N <= T2 일 때만 충족되며, 여기서 T1 및 T2는 정수이고, 예를 들어 T1 = T2 = 4이다.
3) 예를 들어, 조건 A는 M <= T1 및 N <= T2 일 때만 충족되며, 여기서 T1 및 T2는 정수이고, 예를 들어 T1 = T2 = 4이다.
4) 예를 들어, 조건 A는 M * N <= T 또는 M <= T1 또는 N <= T2 인 경우에만 충족되고, 여기서 T, T1 및 T2는 정수이고, 예를 들어 T = 64, T1 = T2 = 4이다.
5) 한 가지 예에서, 위의 아래 항의 작은 조건은 더 큰 것으로 대체될 수 있다.
vi. 하나의 예에서, 1- 탭 필터가 적용된다. 즉, 필터링이 없는 정수 픽셀이 보간 결과로 출력된다.
vii. 하나의 예에서, 레퍼런스 영상의 해상도가 현재 영상과 다를 때 이중 선형 필터가 적용된다.
viii. 하나의 예에서, 레퍼런스 픽처의 해상도가 현재 픽처와 다르거나 레퍼런스 픽처의 너비 및/또는 높이가 현재 픽처의 해상도보다 클 때, 4 탭 필터 또는 6 탭 필터가 적용된다.
1) 6 탭 필터는 아핀 모션 보상에도 사용할 수 있다.
2) 4 탭 필터는 크로마 샘플의 보간에도 사용할 수 있다.
b. 31항에 개시된 방법을 적용할지 여부 및/또는 적용 방법은 색상 구성 요소에 따라 달라질 수 있다.
i. 예를 들어, 방법은 루마 컴포넌트에만 적용된다.
c. 31항에 개시된 방법을 적용할지 여부 및/또는 적용 방법은 보간 필터링 방향에 따라 달라질 수 있다.
i. 예를 들어, 방법은 수평 필터링에만 적용된다.
ii. 예를 들어, 방법은 수직 필터링에만 적용된다.
CIIP 관련
32. CIIP 프로세스에서 사용되는 내부 예측 신호는 CU 레벨 대신 TU 레벨에서 수행될 수 있다(예를 들어, CU 대신 TU 외부의 레퍼런스 샘플 사용).
a) 하나의 예에서, CU 폭 또는 높이가 최대 변형 블록 크기보다 큰 경우, CU는 다중 TU로 분할될 수 있으며, 예를 들어 TU 외부의 레퍼런스 샘플을 사용하여 각 TU에 대해 인트라/인터 예측이 생성될 수 있다.
b) 하나의 예에서, 최대 변형 크기 K가 64보다 작은 경우(예를 들어, K = 32) CIIP에서 사용되는 인트라 예측은 일반 코드 내 블록에서와 같이 반복적인 방식으로 수행된다.
c) 예를 들어, M과 N이 정수인 KM Х KN CIIP 코딩 블록은 K Х K 블록의 MN으로 분할되고, 각 K Х K 블록에 대해 인트라 예측이 수행된다. 나중 코딩/디코딩 된 KxK 블록에 대한 인트라 예측은 이전에 코딩/디코딩 된 KxK 블록의 재구축 샘플에 의존할 수 있다.
5. 추가 예시 실시 예
5.1 실시 예 # 1 : SPS/PPS/슬라이스 헤더/타일 그룹 헤더의 신택스 설계의 예
VTM3.0.1rc1 레퍼런스 소프트웨어와 비교한 변경 사항은 다음과 같이 큰 크기의 굵은 글꼴로 강조 표시된다.
5.2 실시 예 # 2 : SPS/PPS/슬라이스 헤더/타일 그룹 헤더의 신택스 설계의 예
7.3.2.1 시퀀스 파라미터 세트 RBSP 신택스
sps_sbtmvp_enabled_flag = 1은 CVS에서 slice_type이 I와 같지 않은 모든 슬라이스를 갖는 픽처의 디코딩에 서브 블록 기반 시간적 모션 벡터 예측자가 사용될 수 있음을 지정한다. sps_sbtmvp_enabled_flag = 0은 CVS에서 서브 블록 기반 시간적 모션 벡터 예측자가 사용되지 않도록 지정한다. sps_sbtmvp_enabled_flag가 없으면, 0과 같은 것으로 추론된다.
five_minus_max_num_subblock_merge_cand는 5에서 뺀 슬라이스에서 지원되는 서브 블록 기반 병합 모션 벡터 예측(MVP) 후보의 최대 수를 지정한다. five_minus_max_num_subblock_merge_cand가 없으면, 5 - sps_sbtmvp_enabled_flag와 같은 것으로 추론된다. 서브 블록 기반 병합 MVP 후보의 최대 수인 MaxNumSubblockMergeCand는 다음과 같이 유도된다.
MaxNumSubblockMergeCand = 5 - five_minus_max_num_subblock_merge_cand(7-45)
MaxNumSubblockMergeCand의 값은 0에서 5까지의 범위에 있어야 한다.
8.3.4.2 서브 블록 병합 모드에서 모션 벡터 및 레퍼런스 인덱스에 대한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
.. [현재 VVC 사양 드래프트에 대한 변경 없음].
이 프로세스의 출력은 다음과 같다:
... [현재 VVC 사양 드래프트에 대한 변경 사항 없음].
변수 numSbX, numSbY 및 서브 블록 병합 후보 목록 subblockMergeCandList는 다음 순서의 단계에 따라 유도된다:
sps_sbtmvp_enabled_flag가 1이고(현재 픽처는 IRAP이고 레퍼런스 픽처 목록 0의 인덱스 0은 현재 픽처 임) 참이 아닌 경우, 다음이 적용된다:
8.3.2.3 절에 지정된 이웃 코딩 유닛으로부터 후보를 병합하기 위한 유도 프로세스는 입력으로 루마 코딩 블록 위치 (xCb, yCb), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 및 루마 코딩 블록 폭, 및 출력은 X는 0 또는 1인, availableFlagA0, availableFlagA1, availableFlagB0, availableFlagB1 및 availableFlagB2, 레퍼런스 인덱스 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1 및 refIdxLXB2, 예측 목록 활용 플래그 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 predFlagLXB2, 및 모션 벡터 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 mvLXB2와 함께 호출된다.
8.3.4.3 절에 명시된 서브 블록 기반 시간적 병합 후보에 대한 유도 프로세스는 입력으로 루마 위치 (xCb, yCb), 루마 코딩 블록 너비 cbWidth, 루마 코딩 블록 높이 cbHeight, availableFlagA0 가용성 플래그, availableFlagA1, availableFlagB0, availableFlagB1, 레퍼런스 인덱스 refIdxLXA0, refIdxLXA1, refIdxLXB0, refIdxLXB1, 예측 목록 사용 플래그 predFlagLXA0, predFlagLXA1, predFlagLXB0, predFlagLXB1 및 모션 벡터 mvLXA0, mvLXA1, mvLXB0, mvLXB1 및 출력은 가용성 플래그 availableFlagSbCol, 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브 블록의 수, 레퍼런스 인덱스 refIdxLXSbCol, xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1 및 X는 0 또는 1인 루마 모션 벡터 mvLXSbCol [xSbIdx] [ySbIdx] 및 예측 목록 활용 플래그 predFlagLXSbCol [xSbIdx] [ySbIdx]와 함께 호출된다.
sps_affine_enabled_flag가 1이면 샘플 위치 (xNbA0, yNbA0), (xNbA1, yNbA1), (xNbA2, yNbA2), (xNbB0, yNbB0), (xNbB1, yNbB1), (xNbB1), (xNbB1), (xNbA1) ), 변수 numSbX 및 numSbY는 다음과 같이 유도된다:
[현재 VVC 사양 드래프트에 대한 변경 사항 없음].
5.3 실시 예 # 3 MV 반올림의 예
신택스 변경은 기존 구현에 기초한다.
8.5.5.3 서브 블록 기반 시간적 병합 후보에 대한 유도 프로세스
…
- ColPic 내부의 collocated subblock의 위치 (xColSb, yColSb)는 다음과 같이 유도된다.
1. 다음 사항이 적용된다:
yColSb=Clip3( yCtb,Min( CurPicHeightInSamplesY -1, yCtb +( 1 << CtbLog2SizeY ) - 1 ),
ySb +((tempMv[1] +8 -(tempMv[1 ]>=0 )) >> 4 ) )
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColSb=Clip3( xCtb,Min( SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xColSb=Clip3( xCtb,Min( CurPicWidthInSamplesY - 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
8.5.5.4 서브 블록 기반 시간적 병합 기본 모션 데이터를 위한 유도 프로세스
…
ColPic 내부의 병치 블록의 위치 (xColCb, yColCb)는 다음과 같이 유도된다.
- 다음 사항이 적용된다:
yColCb=Clip3( yCtb,Min( CurPicHeightInSamplesY - 1, yCtb +( 1 << CtbLog2SizeY ) - 1 ),
yColCtrCb +((tempMv[1] +8 -(tempMv[1 ]>=0 )) >> 4 ) )
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColCb=Clip3( xCtb,Min(SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ),xColCtrCb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
- 그렇지 않으면, (subpic_treat_as_pic_flag [SubPicIdx]가 0과 같으면 다음이 적용된다:
xColCb=Clip3( xCtb,Min( CurPicWidthInSamplesY - 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xColCtrCb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
5.3 실시 예 # 3 : MV 반올림의 예.
신택스 변경은 기존 구현에 기초한다.
8.5.5.3 서브 블록 기반 시간적 병합 후보에 대한 유도 프로세스
…
- ColPic 내부의 collocated subblock의 위치 (xColSb, yColSb)는 다음과 같이 유도된다.
1. 다음 사항이 적용된다:
yColSb=Clip3( yCtb,Min( CurPicHeightInSamplesY 1, yCtb +( 1 << CtbLog2SizeY ) 1 ),
ySb +((tempMv[1] +8 -(tempMv[1 ]>=0 )) >> 4 ) )
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColSb=Clip3( xCtb,Min( SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xColSb=Clip3( xCtb,Min( CurPicWidthInSamplesY 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
8.5.5.4 서브 블록 기반 시간적 병합 기본 모션 데이터를 위한 유도 프로세스
…
ColPic 내부의 collocated block의 위치 (xColCb, yColCb)는 다음과 같이 유도된다.
- 다음 사항이 적용된다:
yColCb=Clip3( yCtb,Min( CurPicHeightInSamplesY 1, yCtb +( 1 << CtbLog2SizeY ) 1 ),
yColCtrCb +((tempMv[1] +8 -(tempMv[1 ]>=0 )) >> 4 ) )
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColCb=Clip3( xCtb,Min(SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ),xColCtrCb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0이면, 다음이 적용된다:
xColCb=Clip3( xCtb,Min( CurPicWidthInSamplesY 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xColCtrCb +(( tempMv[0] +8 +(tempMV[0] >= 0 )) >> 4 ) )
5.4 실시 예 # 4 : MV 반올림의 두 번째 예.
8.5.5.3 서브 블록 기반 시간적 병합 후보에 대한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플에 대한 현재 루마 코딩 블록의 왼쪽 상단 샘플의 루마 위치 (xCb, yCb),
- 루마 샘플에서 현재 코딩 블록의 너비를 지정하는 변수 cbWidth,
- 루마 샘플에서 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
- 이웃 코딩 유닛의 가용성 플래그 availableFlagA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 레퍼런스 인덱스 refIdxLXA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 예측 목록 활용 플래그 predFlagLXA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 1/16 분수 샘플 정확도 mvLXA1의 모션 벡터.
이 프로세스의 출력은 다음과 같다:
- availableFlagSbCol 가용성 플래그,
- 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브 블록의 수,
- 레퍼런스 인덱스 refIdxL0SbCol 및 refIdxL1SbCol,
- 1/16 분수 샘플 정확도 mvL0SbCol [xSbIdx] [ySbIdx] 및 mvL1SbCol [xSbIdx] [ySbIdx](xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1)의 루마 모션 벡터,
- 예측 목록 활용 플래그 predFlagL0SbCol [xSbIdx] [ySbIdx] 및 predFlagL1SbCol [xSbIdx] [ySbIdx] with xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1.
availableFlagSbCol 가용성 플래그는 다음과 같이 유도된다.
- 다음 조건 중 하나 이상이 참이면, availableFlagSbCol이 0으로 설정된다.
- slice_temporal_mvp_enabled_flag는 0과 같다.
- sps_sbtmvp_enabled_flag는 0과 같다.
- cbWidth가 8보다 작다.
- cbHeight가 8보다 작다.
- 그렇지 않으면, 다음 순서 단계가 적용된다:
1. 현재 코딩 블록이 포함된 루마 코딩 트리 블록의 왼쪽 상단 샘플의 위치 (xCtb, yCtb)와 현재 루마 코딩 블록의 오른쪽 아래 중앙 샘플의 위치 (xCtr, yCtr)가 다음과 같이 유도된다:
- xCtb =(xCb >> CtuLog2Size) << CtuLog2Size
(8-542)
- yCtb =(yCb >> CtuLog2Size) << CtuLog2Size
(8-543)
- xCtr = xCb +(cbWidth/2)
(8-544)
- yCtr = yCb +(cbHeight/2)
(8-545)
2. 루마 위치 (xColCtrCb, yColCtrCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 상단 루마 샘플과 관련하여 ColPic 내에서(xCtr, yCtr)에 의해 제공된 위치를 커버하는 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
3. 8.5.5.4 절에 명시된 서브 블록 기반 시간적 병합 기본 모션 데이터에 대한 유도 프로세스는 입력으로 위치 (xCtb, yCtb), 위치 (xColCtrCb, yColCtrCb), 가용성 플래그 availableFlagA1, 및 예측 목록 활용 플래그 predFlagLXA1, 및 레퍼런스 인덱스 refIdxLXA1, 및 X는 0 또는 1 인 모션 벡터 mvLXA1 및 출력으로 모션 벡터 ctrMvLX, 및 X는 0 및 1 인 예측 목록 활용 플래그는 병치된 블록의 ctrPredFlagLX, 및 시간적 모션 벡터 tempMv와 함께 호출된다.
4. availableFlagSbCol 변수는 다음과 같이 유도된다:
- ctrPredFlagL0 및 ctrPredFlagL1이 모두 0이면 availableFlagSbCol은 0으로 설정된다.
- 그렇지 않으면, availableFlagSbCol이 1로 설정된다. availableFlagSbCol이 1이면, 다음이 적용된다:
- numSbX, numSbY, sbWidth, sbHeight 및 refIdxLXSbCol 변수는 다음과 같이 유도된다:
- numSbX = cbWidth >> 3
(8-546)
- numSbY = cbHeight >> 3
(8-547)
- sbWidth = cbWidth/numSbX
(8-548)
- sbHeight = cbHeight/numSbY
(8-549)
- refIdxLXSbCol = 0
(8-550)
- xSbIdx = 0..numSbX - 1 및 ySbIdx = 0 .. numSbY - 1의 경우, 모션 벡터 mvLXSbCol [xSbIdx] [ySbIdx] 및 예측 목록 활용 플래그 predFlagLXSbCol [xSbIdx] [ySbIdx]는 다음과 같이 유도된다:
- 현재 픽처의 왼쪽 위쪽 루마 샘플에 대한 현재 코딩 서브 블록의 왼쪽 위쪽 샘플을 지정하는 루마 위치 (xSb, ySb)는 다음과 같이 유도된다:
- xSb = xCb + xSbIdx * sbWidth + sbWidth/2
(8-551)
- ySb = yCb + ySbIdx * sbHeight + sbHeight/2
(8-552)
- ColPic 내부의 collocated subblock의 위치 (xColSb, yColSb)는 다음과 같이 유도된다.
1. 다음이 적용된다:
- yColSb = Clip3( yCtb,
Min( CurPicHeightInSamplesY 1, yCtb +( 1 << CtbLog2SizeY ) 1 ),
ySb +((tempMv[1] + 8 -(tempMv[1] >= 0 ? 1 : 0 )) >> 4 ) )
(8-553)
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColSb = Clip3( xCtb,
Min( SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ),
xSb +((tempMv[0] + 8 -(tempMv[0] >= 0 ? 1 : 0 )) >> 4 ) )
(8-554)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
-
xColSb = Clip3( xCtb,
Min( CurPicWidthInSamplesY 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +((tempMv[0] + 8 -(tempMv[0] >= 0 ? 1 : 0 )) >> 4 ) )
(8-555)
- 변수 currCb는 현재 픽처 내의 현재 코딩 서브 블록을 포함하는 루마 코딩 블록을 지정한다.
- colCb 변수는 ColPic 내에서((xColSb >> 3) << 3, (yColSb >> 3) << 3)에 의해 주어진 수정된 위치를 포함하는 루마 코딩 블록을 지정한다.
- 루마 위치 (xColCb, yColCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 상단 루마 샘플에 상대적으로 colCb에 의해 지정된 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
- 8.5.2.12 절에 명시된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL0은 0으로 설정되고 sbFlag은 1로 설정되고 및 출력은 서브 블록 mvL0SbCol [xSbIdx] [ySbIdx] 및 availableFlagL0SbCol의 모션 벡터에 할당되는 것으로 호출된다.
- 8.5.2.12 절에 명시된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL1은 0으로 설정되고 sbFlag는 1로 설정되고 및 출력은 서브 블록 mvL1SbCol [xSbIdx] [ySbIdx] 및 availableFlagL1SbCol의 모션 벡터에 할당되는 것으로 호출된다.
- availableFlagL0SbCol 및 availableFlagL1SbCol이 모두 0 인 경우, X가 0 및 1 인 경우 다음이 적용된다:
- mvLXSbCol [xSbIdx] [ySbIdx] = ctrMvLX
(8-556)
- predFlagLXSbCol [xSbIdx] [ySbIdx] = ctrPredFlagLX
(8-557)
8.5.5.4 서브 블록 기반 시간적 병합 기본 모션 데이터를 위한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 코딩 블록을 포함하는 루마 코딩 트리 블록의 왼쪽 상단 샘플의 위치 (xCtb, yCtb),
- 오른쪽 아래 중앙 샘플을 포함하는 병치된 루마 코딩 블록의 왼쪽 상단 샘플 위치 (xColCtrCb, yColCtrCb).
- 이웃 코딩 유닛의 가용성 플래그 availableFlagA1,
- 이웃 코딩 유닛의 레퍼런스 인덱스 refIdxLXA1,
- 이웃 부호화 유닛의 예측 목록 활용 플래그 predFlagLXA1,
- 이웃 코딩 유닛의 1/16 부분 샘플 정확도 mvLXA1의 모션 벡터.
이 프로세스의 출력은 다음과 같다:
- 모션 벡터 ctrMvL0 및 ctrMvL1,
- 예측 목록 활용 플래그 ctrPredFlagL0 및 ctrPredFlagL1,
- 시간적 모션 벡터 tempMv.
tempMv 변수는 다음과 같이 설정된다:
- tempMv [0] = 0
(8-558)
- tempMv [1] = 0
(8-559)
currPic 변수는 현재 픽처를 지정한다.
availableFlagA1이 참이면 다음이 적용된다.
- 다음 조건이 모두 참이면, tempMv는 mvL0A1과 동일하게 설정된다.
- predFlagL0A1은 1과 같다.
- DiffPicOrderCnt(ColPic, RefPicList [0] [refIdxL0A1])은 0과 같다.
- 그렇지 않으면, 다음 조건이 모두 참이면, tempMv는 mvL1A1과 동일하게 설정된다.
- slice_type은 B와 같다,
- predFlagL1A1은 1과 같다,
- DiffPicOrderCnt(ColPic, RefPicList [1] [refIdxL1A1])은 0과 같다.
ColPic 내부의 병치된 블록의 위치 (xColCb, yColCb)는 다음과 같이 유도된다.
- 다음 사항이 적용된다:
yColCb = Clip3( yCtb,
Min( CurPicHeightInSamplesY 1, yCtb +( 1 << CtbLog2SizeY ) 1 ), yColCtrCb +((tempMv[1] + 8 - (tempMv[1] >= 0 ? 1 : 0 )) >> 4 ) )
(8-560)
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColCb = Clip3( xCtb,
Min( SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ),
xColCtrCb +((tempMv[0] + 8 -(tempMv[0] >= 0 ? 1 : 0 )) >> 4 ) )
(8-561)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 o와 같으면, 다음이 적용된다:
xColCb = Clip3( xCtb,
Min( CurPicWidthInSamplesY 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xColCtrCb +((tempMv[0] + 8 -(tempMv[0] >= 0 ? 1 : 0 )) >> 4 ) )
(8-562)
colPredMode 어레이는 ColPic에 의해 지정되는 collocated picture의 예측 모드 어레이 CuPredMode [0]와 동일하게 설정된다.
모션 벡터 ctrMvL0 및 ctrMvL1과 예측 목록 활용 플래그 ctrPredFlagL0 및 ctrPredFlagL1은 다음과 같이 유도된다:
- colPredMode [xColCb] [yColCb]가 MODE_INTER와 같으면, 다음이 적용된다:
- currCb 변수는 현재 픽처 내부의 루마 코딩 블록(xCtrCb, yCtrCb)을 지정한다.
- colCb 변수는 ColPic 내부에서((xColCb >> 3) << 3, (yColCb >> 3) << 3)에 의해 주어진 수정된 위치를 포함하는 루마 코딩 블록을 지정한다.
- 루마 위치 (xColCb, yColCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 상단 루마 샘플에 상대적으로 colCb에 의해 지정된 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
- 8.5.2.12 절에 명시된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL0이 0으로 설정되고, 및 sbFlag가 1로 설정되고 및 출력은 ctrMvL0 및 ctrPredFlagL0에 할당되어 호출된다.
- 8.5.2.12 절에 명시된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL1이 0으로 설정되고 sbFlag가 1로 설정되고 및 출력은 ctrMvL1 및 ctrPredFlagL1에 할당되어 호출된다.
- 그렇지 않으면, 다음이 적용된다:
- ctrPredFlagL0 = 0
(8-563)
- ctrPredFlagL1 = 0
(8-564)
5.5 실시 예 # 5 : MV 반올림의 세 번째 예.
8.5.5.3 서브 블록 기반 시간적 병합 후보에 대한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다.
- 현재 픽처의 왼쪽 상단 루마 샘플에 대한 현재 루마 코딩 블록의 왼쪽 상단 샘플의 루마 위치 (xCb, yCb),
- 루마 샘플에서 현재 코딩 블록의 너비를 지정하는 변수 cbWidth,
- 루마 샘플에서 현재 코딩 블록의 높이를 지정하는 변수 cbHeight.
- 이웃 코딩 유닛의 가용성 플래그 availableFlagA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 레퍼런스 인덱스 refIdxLXA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 예측 목록 활용 플래그 predFlagLXA1,
- X가 0 또는 1 인 이웃 코딩 유닛의 1/16 분수 샘플 정확도 mvLXA1의 모션 벡터.
이 프로세스의 출력은 다음과 같다:
- availableFlagSbCol 가용성 플래그,
- 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브 블록의 수,
- 레퍼런스 인덱스 refIdxL0SbCol 및 refIdxL1SbCol,
- 1/16 분수 샘플 정확도 mvL0SbCol [xSbIdx] [ySbIdx] 및 mvL1SbCol [xSbIdx] [ySbIdx](xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1)의 루마 모션 벡터,
- 예측 목록 활용 플래그 predFlagL0SbCol [xSbIdx] [ySbIdx] 및 predFlagL1SbCol [xSbIdx] [ySbIdx] with xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1.
availableFlagSbCol 가용성 플래그는 다음과 같이 유도된다.
- 다음 조건 중 하나 이상이 참이면, availableFlagSbCol이 0으로 설정된다
- slice_temporal_mvp_enabled_flag는 0과 같다:
- sps_sbtmvp_enabled_flag는 0과 같다.
- cbWidth가 8보다 작다.
- cbHeight가 8보다 작다.
- 그렇지 않으면, 다음 순서 단계가 적용된다:
5. 현재 코딩 블록이 포함된 루마 코딩 트리 블록의 왼쪽 상단 샘플의 위치 (xCtb, yCtb)와 현재 루마 코딩 블록의 오른쪽 아래 중앙 샘플의 위치 (xCtr, yCtr)가 다음과 같이 유도된다:
- xCtb =(xCb >> CtuLog2Size) << CtuLog2Size (8-542)
- yCtb =(yCb >> CtuLog2Size) << CtuLog2Size (8-543)
- xCtr = xCb +(cbWidth/2) (8-544)
- yCtr = yCb +(cbHeight/2) (8-545)
6. 루마 위치 (xColCtrCb, yColCtrCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 위쪽 루마 샘플과 관련하여 ColPic 내에서(xCtr, yCtr)에 의해 제공된 위치를 포함하는 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
7. 8.5.5.4 절에 명시된 서브 블록 기반 시간적 병합 기본 모션 데이터를 위한 유도 프로세스는 입력으로 X는 0과 1인, 위치 (xCtb, yCtb), 위치 (xColCtrCb, yColCtrCb), 가용성 플래그 availableFlagA1, 예측 목록 활용 플래그 predFlagLXA1, 레퍼런스 인덱스 refIdxLXA1, 모션 벡터 mvLXA1 및 출력으로 X는 0 alc 1인 모션 벡터 ctrMvLX, 및 병치된 블록의 예측 목록 활용 플래그 ctrPredFlagLX, 및 시간적 모션 벡터 tempMv와 함께 호출된다.
8. availableFlagSbCol 변수는 다음과 같이 유도된다.
- ctrPredFlagL0 및 ctrPredFlagL1이 모두 0이면, availableFlagSbCol은 0으로 설정된다.
- 그렇지 않으면, availableFlagSbCol이 1로 설정된다.
availableFlagSbCol이 1이면 다음이 적용된다:
- numSbX, numSbY, sbWidth, sbHeight 및 refIdxLXSbCol 변수는 다음과 같이 유도된다.
- numSbX = cbWidth >> 3
(8-546)
- numSbY = cbHeight >> 3
(8-547)
- sbWidth = cbWidth/numSbX
(8-548)
- sbHeight = cbHeight/numSbY
(8-549)
- refIdxLXSbCol = 0
(8-550)
- xSbIdx = 0..numSbX - 1 및 ySbIdx = 0 .. numSbY - 1의 경우, 모션 벡터 mvLXSbCol [xSbIdx] [ySbIdx] 및 예측 목록 활용 플래그 predFlagLXSbCol [xSbIdx] [ySbIdx]는 다음과 같이 유도된다:
- 현재 픽처의 왼쪽 위쪽 루마 샘플에 대한 현재 코딩 서브 블록의 왼쪽 위쪽 샘플을 지정하는 루마 위치 (xSb, ySb)는 다음과 같이 유도된다:
- xSb = xCb + xSbIdx * sbWidth + sbWidth/2 (8-551)
- ySb = yCb + ySbIdx * sbHeight + sbHeight/2 (8-552)
- ColPic 내부의 collocated subblock의 위치 (xColSb, yColSb)는 다음과 같이 유도된다:
1. 다음 사항이 적용된다:
yColSb = Clip3( yCtb,
Min( CurPicHeightInSamplesY 1, yCtb +( 1 << CtbLog2SizeY ) 1 ),
ySb +((tempMv[1] +(tempMv[1] >= 0 ? 7 : 8 )) >> 4 ) )
(8-553)
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다:
xColSb = Clip3( xCtb,
Min( SubPicRightBoundaryPos, xCtb +( 1 << CtbLog2SizeY ) + 3 ),
xSb +((tempMv[0] +(tempMv[0] >= 0 ? 7 : 8 )) >> 4 ) )
(8-554)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xColSb = Clip3( xCtb,
Min( CurPicWidthInSamplesY 1, xCtb +( 1 << CtbLog2SizeY ) + 3 ), xSb +((tempMv[0] +(tempMv[0] >= 0 ? 7 : 8 )) >> 4 ) )
(8-555)
- 변수 currCb는 현재 픽처 내의 현재 코딩 서브 블록을 포함하는 루마 코딩 블록을 지정한다.
- colCb 변수는 ColPic 내에서((xColSb >> 3) << 3, (yColSb >> 3) << 3)에 의해 주어진 수정된 위치를 포함하는 루마 코딩 블록을 지정한다.
- 루마 위치 (xColCb, yColCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 상단 루마 샘플에 상대적으로 colCb에 의해 지정된 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
- 8.5.2.12 절에 지정된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL0이 0으로 설정되고 sbFlag가 1로 설정되고 및 출력은 서브 블록 mvL0SbCol [xSbIdx] [ySbIdx] 및 availableFlagL0SbCol의 모션 벡터에 할당되어 호출된다.
- 8.5.2.12 절에 지정된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL1이 0으로 설정되고 sbFlag가 1로 설정되고 출력이 서브 블록 mvL1SbCol [xSbIdx] [ySbIdx] 및 availableFlagL1SbCol의 모션 벡터에 할당되어 호출된다.
- availableFlagL0SbCol 및 availableFlagL1SbCol이 모두 0 인 경우, X가 0 및 1 인 경우 다음이 적용된다:
-
mvLXSbCol[ xSbIdx ][ ySbIdx ] = ctrMvLX
(8-556)
-
predFlagLXSbCol[ xSbIdx ][ ySbIdx ] = ctrPredFlagLX
(8-557)
8.5.5.4 서브 블록 기반 시간적 병합 기본 모션 데이터를 위한 유도 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 현재 코딩 블록을 포함하는 루마 코딩 트리 블록의 왼쪽 상단 샘플의 위치 (xCtb, yCtb),
- 오른쪽 아래 중앙 샘플을 포함하는 병치된 루마 코딩 블록의 왼쪽 상단 샘플 위치 (xColCtrCb, yColCtrCb).
- 이웃 코딩 유닛의 가용성 플래그 availableFlagA1,
- 이웃 코딩 유닛의 레퍼런스 인덱스 refIdxLXA1,
- 이웃 부호화 단위의 예측 목록 활용 플래그 predFlagLXA1,
- 이웃 코딩 유닛의 1/16 부분 샘플 정확도 mvLXA1의 모션 벡터.
이 프로세스의 출력은 다음과 같다:
- 모션 벡터 ctrMvL0 및 ctrMvL1,
- 예측 목록 활용 플래그 ctrPredFlagL0 및 ctrPredFlagL1,
- 시간적 모션 벡터 tempMv.
tempMv 변수는 다음과 같이 설정된다:
- tempMv [0] = 0
(8-558)
- tempMv [1] = 0
(8-559)
currPic 변수는 현재 픽처를 지정한다.
availableFlagA1이 참이면 다음이 적용된다.
- 다음 조건이 모두 참이면, tempMv는 mvL0A1과 동일하게 설정된다.
- predFlagL0A1은 1과 같다:
- DiffPicOrderCnt(ColPic, RefPicList [0] [refIdxL0A1])은 0과 같다.
- 그렇지 않고, 다음 조건이 모두 참이면, tempMv는 mvL1A1과 동일하게 설정된다.
- slice_type은 B와 같다.
- predFlagL1A1은 1과 같다.
- DiffPicOrderCnt(ColPic, RefPicList [1] [refIdxL1A1])은 0과 같다.
ColPic 내부의 collocated block의 위치 (xColCb, yColCb)는 다음과 같이 유도된다.
- 다음 사항이 적용된다:
- yColCb = Clip3(yCtb,
Min(CurPicHeightInSamplesY - 1, yCtb +(1 << CtbLog2SizeY) - 1), yColCtrCb +((
tempMv [1] +(tempMv [1]> = 0? 7 : 8)) >> 4))
(8-560)
- subpic_treat_as_pic_flag [SubPicIdx]가 1 인 경우, 다음이 적용된다.
- xColCb = Clip3(xCtb,
Min(SubPicRightBoundaryPos, xCtb +(1 << CtbLog2SizeY) + 3), xColCtrCb +((tempMv [0] +(tempMv [0]> = 0? 7 : 8)) >> 4))
(8-561)
- 그렇지 않고(subpic_treat_as_pic_flag [SubPicIdx]가 0이면, 다음이 적용된다.
- xColCb = Clip3(xCtb,
Min(CurPicWidthInSamplesY - 1, xCtb +(1 << CtbLog2SizeY) + 3), xColCtrCb +((tempMv [0] +(tempMv [0]> = 0? 7 : 8)) >> 4))
(8-562)
colPredMode 어레이는 ColPic에 의해 지정되는 collocated picture의 예측 모드 어레이 CuPredMode [0]와 동일하게 설정된다.
모션 벡터 ctrMvL0 및 ctrMvL1과 예측 목록 활용 플래그 ctrPredFlagL0 및 ctrPredFlagL1은 다음과 같이 유도된다:
- colPredMode [xColCb] [yColCb]가 MODE_INTER와 같으면 다음이 적용된다.
- currCb 변수는 현재 픽처 내부의 루마 코딩 블록(xCtrCb, yCtrCb)을 지정한다.
- colCb 변수는 ColPic 내부에서((xColCb >> 3) << 3, (yColCb >> 3) << 3)에 의해 주어진 수정된 위치를 포함하는 루마 코딩 블록을 지정한다.
- 루마 위치 (xColCb, yColCb)는 ColPic에 의해 지정된 병치된 픽처의 왼쪽 상단 루마 샘플에 상대적으로 colCb에 의해 지정된 병치된 루마 코딩 블록의 왼쪽 상단 샘플과 동일하게 설정된다.
- 8.5.2.12 절에 지정된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL0이 0으로 설정되고 sbFlag가 1로 설정되고 출력이 ctrMvL0 및 ctrPredFlagL0에 할당되어 호출된다.
- 8.5.2.12 절에 지정된 병치된 모션 벡터에 대한 유도 프로세스는 입력으로 currCb, colCb, (xColCb, yColCb), refIdxL1이 0으로 설정되고 sbFlag가 1로 설정되고 출력이 ctrMvL1 및 ctrPredFlagL1에 할당되어 호출된다.
- 그렇지 않으면, 다음이 적용된다:
- ctrPredFlagL0 = 0
(8-563)
- ctrPredFlagL1 = 0
(8-564)
8.5.6.3 분수 샘플 보간 프로세스
8.5.6.3.1 일반
이 프로세스에 대한 입력은 다음과 같다:
- 현재 픽처의 왼쪽 상단 루마 샘플에 대한 현재 코딩 서브 블록의 왼쪽 상단 샘플을 지정하는 루마 위치 (xSb, ySb),
- 현재 코딩 서브 블록의 너비를 지정하는 변수 sbWidth,
- 현재 코딩 서브 블록의 높이를 지정하는 변수 sbHeight,
- 모션 벡터 오프셋 mvOffset,
- 정제된 모션 벡터 refMvLX,
- 선택된 레퍼런스 화상 샘플 어레이 refPicLX,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 양방향 광학 흐름 플래그 bdofFlag,
- 현재 블록의 색상 컴포넌트 인덱스를 지정하는 변수 cIdx.
이 프로세스의 출력은 다음과 같다:
- 예측 샘플 값의(sbWidth + brdExtSize) x(sbHeight + brdExtSize) 어레이 predSamplesLX.
예측 블록 경계 확장 크기 brdExtSize는 다음과 같이 유도된다:
brdExtSize =(bdofFlag | |(inter_affine_flag [xSb] [ySb] && sps_affine_prof_enabled_flag))? 2 : 0
(8-752)
변수 fRefWidth는 루마 샘플에서 레퍼런스 픽처의 PicOutputWidthL과 동일하게 설정된다.
변수 fRefHeight는 루마 샘플에서 레퍼런스 픽처의 PicOutputHeightL과 동일하게 설정된다.
모션 벡터 mvLX는 (refMvLX - mvOffset)과 동일하게 설정된다.
- cIdx가 0이면, 다음이 적용된다:
- 스케일링 인자 및 고정 소수점 표현은 다음과 같이 정의된다.
hori_scale_fp =((fRefWidth << 14) +(PicOutputWidthL >> 1))/PicOutputWidthL (8-753)
vert_scale_fp =((fRefHeight << 14) +(PicOutputHeightL >> 1))/PicOutputHeightL (8-754)
-(xIntL, yIntL)을 전체 샘플(full-sample) 유닛으로 지정된 루마 위치이고(xFracL, yFracL)을 1/16 샘플 유닛으로 지정된 오프셋이라고 가정한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntL, ySbIntL)에 대한 경계 블록의 왼쪽 상단 좌표는 (xSb +(mvLX [0] >> 4), ySb +(mvLX [1] >> 4))와 동일하게 설정된다.
- 예측 루마 샘플 어레이 predSamplesLX 내의 각 루마 샘플 위치 (xL = 0..sbWidth - 1 + brdExtSize, yL = 0..sbHeight - 1 + brdExtSize)에 대해 대응하는 예측 루마 샘플 값 predSamplesLX [xL] [yL] 다음과 같이 유도된다:
-(refxSbL, refySbL) 및 (refxL, refyL)은 1/16- 샘플 유닛으로 지정된 모션 벡터(refMvLX [0], refMvLX [1])가 가리키는 루마 위치이다. 변수 refxSbL, refxL, refySbL 및 refyL은 다음과 같이 유도된다:
refxSbL =((xSb << 4) + refMvLX [0]) * hori_scale_fp (8-755)
refxL =((Sign(refxSb) *((Abs(refxSb) + 128) >> 8)
+ xL *((hori_scale_fp + 8) >> 4)) + 32) >> 6 (8-756)
refySbL =((ySb << 4) + refMvLX [1]) * vert_scale_fp (8-757)
refyL =((Sign(refySb) *((Abs(refySb) + 128) >> 8) + yL *
((vert_scale_fp + 8) >> 4)) + 32) >> 6 (8-758)
- xIntL, yIntL, xFracL 및 yFracL 변수는 다음과 같이 유도된다:
xIntL = refxL >> 4 (8-759)
yIntL = refyL >> 4 (8-760)
xFracL = refxL & 15 (8-761)
yFracL = refyL & 15 (8-762)
- 아래의 모든 조건이 충족되면 using6TapFlag가 1로 설정된다:
- cbWidth [0] [xSb] [ySb] <= 4 | | cbHeight [0] [xSb] [ySb] <= 4 | | cbWidth [0] [xSb] [ySb] * cbHeight [0] [xSb] [ySb] <= 64
- PredFlagL0 [xSb] [ySb] == 1 && PredFlagL1 [xSb] [ySb] == 1.
- bdofFlag가 참 또는 (sps_affine_prof_enabled_flag가 참이고 inter_affine_flag [xSb] [ySb]가 참과 같음)이면, 다음 조건 중 하나 이상에 대응하는 경우, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL +(xFracL >> 3) - 1), yIntL +(yFracL> > 3) - 1) 및 refPicLX를 입력으로 하여 8.5.6.3.3 절에 지정된 루마 정수 샘플 패치 프로세스를 호출하여 유도된다.
1. xL은 0과 같다.
2. xL은 sbWidth + 1과 같다.
3. yL은 0과 같다.
4. yL은 sbHeight + 1과 같다.
- 그렇지 않으면, 예측 루마 샘플 값 predSamplesLX [xL] [yL]은 (xIntL- (brdExtSize> 0? 1 : 0), yIntL- (brdExtSize> 0? 1 : 0)), (xFracL, yFracL), (xSbIntL, ySbIntL), refPicLX, hpelIfIdx, sbWidth, sbHeight 및 (xSb, ySb) 및 using6TapFlag를 입력으로 하여 8.5.6.3.2 절에 지정된 루마 샘플 8 탭 보간 필터링 프로세스를 호출하여 유도된다.
- 그렇지 않으면(cIdx가 0이 아님), 다음이 적용된다:
- (xIntC, yIntC)는 전체 샘플 유닛으로 주어진 크로마 위치이고(xFracC, yFracC)는 1/32 샘플 유닛으로 주어진 오프셋이라고 한다. 이러한 변수는 레퍼런스 샘플 어레이 refPicLX 내에서 일반적인 분수 샘플 위치를 지정하기 위해 이 절에서만 사용된다.
- 레퍼런스 샘플 패딩(xSbIntC, ySbIntC)에 대한 경계 블록의 왼쪽 상단 좌표는 ((xSb/SubWidthC) +(mvLX [0] >> 5), (ySb/SubHeightC) +(mvLX [1 ] >> 5)).
- 예측 크로마 샘플 어레이 predSamplesLX 내의 각 크로마 샘플 위치 (xC = 0..sbWidth - 1, yC = 0 .. sbHeight - 1)에 대해, 대응하는 예측 크로마 샘플 값 predSamplesLX [xC] [yC]는 다음과 같이 유도된다:
-(refxSbC, refySbC) 및 (refxC, refyC)를 1/32 샘플 유닛으로 주어진 모션 벡터(mvLX [0], mvLX [1])가 가리키는 크로마 위치라고 한다. refxSbC, refySbC, refxC 및 refyC 변수는 다음과 같이 유도된다:
refxSbC =((xSb/SubWidthC << 5) + mvLX [0]) * hori_scale_fp (8-763)
refxC =((Sign(refxSbC) *((Abs(refxSbC) + 256) >> 9)
+ xC *((hori_scale_fp + 8) >> 4)) + 16) >> 5 (8-764)
refySbC =((ySb/SubHeightC << 5) + mvLX [1]) * vert_scale_fp (8-765)
refyC =((Sign(refySbC) *((Abs(refySbC) + 256) >> 9)
+ yC *((vert_scale_fp + 8) >> 4)) + 16) >> 5 (8-766)
- xIntC, yIntC, xFracC 및 yFracC 변수는 다음과 같이 유도된다:
xIntC = refxC >> 5 (8-767)
yIntC = refyC >> 5 (8-768)
xFracC = refyC & 31 (8-769)
yFracC = refyC & 31 (8-770)
- 예측 샘플 값 predSamplesLX [xC] [yC]는 (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight 및 refPicLX을 입력으로 하여 8.5.6.3.4에 지정된 프로세스를 호출하여 유도된다:
8.5.6.3.2 루마 샘플 보간 필터링 프로세스
이 프로세스에 대한 입력은 다음과 같다:
- 전체 샘플 유닛의 루마 위치 (xIntL, yIntL),
- 분수 샘플 유닛의 루마 위치 (xFracL, yFracL),
- 레퍼런스 픽처의 왼쪽 위쪽 루마 샘플을 기준으로 레퍼런스 샘플 패딩에 대한 경계 블록의 왼쪽 위쪽 샘플을 지정하는 전체 샘플 유닛(xSbIntL, ySbIntL)의 루마 위치,
- 루마 레퍼런스 샘플 어레이 refPicLXL,
- 하프 샘플 보간 필터 인덱스 hpelIfIdx,
- 현재 서브 블록의 너비를 지정하는 변수 sbWidth,
- 현재 서브 블록의 높이를 지정하는 변수 sbHeight,
- 현재 픽처의 왼쪽 위쪽 루마 샘플에 상대적인 현재 서브 블록의 왼쪽 위쪽 샘플을 지정하는 루마 위치 (xSb, ySb),
- 6 탭 보간 필터의 사용 여부를 지정하는 using6TapFlag 플래그.
이 프로세스의 출력은 예측된 루마 샘플 값 predSampleLXL이다.
shift1, shift2 및 shift3 변수는 다음과 같이 유도된다:
- 변수 shift1은 Min(4, BitDepthY - 8)과 같게 설정되고, 변수 shift2는 6과 같게 설정되고, shift3 변수는 Max(2, 14 - BitDepthY)와 같게 설정된다.
- 변수 picW는 pic_width_in_luma_samples와 동일하게 설정되고 변수 picH는 pic_height_in_luma_samples와 동일하게 설정된다.
xFracL 또는 yFracL과 같은 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]는 다음과 같이 유도된다:
- 다음 조건 중 하나 이상이 충족되면 루마 보간 필터 계수 f
L
[p]가 표 812에 지정된다.
- MotionModelIdc [xSb] [ySb]가 0보다 크고, sbWidth 및 sbHeight가 모두 4와 같다.
- using6TapFlag는 1과 같다.
- 그렇지 않으면, 루마 보간 필터 계수 fL [p]는 hpelIfIdx에 따라 표 811에 지정된다.
전체 샘플 유닛(xInti, yInti)의 루마 위치는 i = 0..7에 대해 다음과 같이 유도된다:
- subpic_processor_as_pic_flag [SubPicIdx]가 1 인 경우 다음이 적용된다.
xInti = Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xIntL + i - 3) (8-771)
yInti = Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yIntL + i - 3) (8-772)
- 그렇지 않으면(subpic_treat_as_pic_flag [SubPicIdx]가 0과 같음), 다음이 적용된다:
xInti = Clip3(0, picW - 1, sps_ref_wraparound_enabled_flag?
ClipH((sps_ref_wraparound_offset_minus1 + 1) * MinCbSizeY, picW, xIntL + i - 3) : (8-773)
xIntL + i - 3)
yInti = Clip3(0, picH - 1, yIntL + i - 3) (8-774)
전체 샘플 유닛의 루마 위치는 i = 0..7에 대해 다음과 같이 추가로 수정된다:
xInti = Clip3(xSbIntL - 3, xSbIntL + sbWidth + 4, xInti) (8-775)
yInti = Clip3(ySbIntL - 3, ySbIntL + sbHeight + 4, yInti) (8-776)
예측 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
- xFracL과 yFracL이 모두 0이면 predSampleLXL의 값은 다음과 같이 유도된다:
predSampleLXL = refPicLXL [xInt3] [yInt3] << shift3 (8-777)
- 그렇지 않으면, xFracL이 0이 아니고 yFracL이 0이면 predSampleLXL의 값은 다음과 같이 유도된다:
(8-778)
- 그렇지 않으면, xFracL이 0이고 yFracL이 0이 아닌 경우 predSampleLXL의 값은 다음과 같이 유도된다:
- 그렇지 않으면, xFracL이 0이 아니고, yFracL이 0이 아닌 경우 predSampleLXL의 값은 다음과 같이 유도된다:
- n = 0..7 인 샘플 어레이 temp [n]은 다음과 같이 유도된다:
- 예측 루마 샘플 값 predSampleLXL은 다음과 같이 유도된다:
표 811 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]의 사양.
각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]의 사양.
표 812
아핀 모션 모드에 대한 각 1/16 분수 샘플 위치 p에 대한 루마 보간 필터 계수 fL [p]의 사양.
도 30은 비디오 처리를 위한 방법(3000)에 대한 흐름도이다. 방법(3000)은, 동작 3010에서, 비디오의 현재 블록(current block)과 비디오의 비트 스트림 표현(bitstream representation) 사이의 변환(conversion)을 위해, 서브 블록 기반 병합 후보 목록(sub-block based merge candidate list)에서 최대 후보 수(ML) 및/또는 시간적 모션 벡터 예측(temporal motion vector prediction)(TMVP)이 변환 동안 사용을 위해 활성화되었는지 여부 또는 현재 픽처 레퍼런스(current picture referencing)(CPR) 코딩 모드가 변환을 위해 사용되는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에 서브 블록 기반 시간적 모션 벡터 예측(sub-block based temporal motion vector prediction)(SbTMVP) 후보를 추가할지 여부를 결정하는 단계를 포함한다.
방법(3000)은, 동작 3020에서, 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
도 31은 비디오 처리를 위한 방법(3100)에 대한 흐름도이다. 방법(3100)은, 동작 3110에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 변환 동안 시간적 모션 벡터 예측(TMVP), 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP), 및 아핀 코딩 모드(affine coding mode)가 사용을 위해 활성화되었는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 최대 후보 수(ML)를 결정하는 단계를 포함한다.
방법(3100)은, 동작 3120에서, 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
도 32는 비디오 처리를 위한 방법(3200)에 대한 흐름도이다. 방법(3200)은, 동작 3210에서, 비디오의 제1 비디오 세그먼트(first video segment)의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 제1 비디오 세그먼트 레벨에서 시간적 모션 벡터 예측(TMVP) 모드가 비활성화되어 변환에 대해 서브 블록 기반 모션 벡터 예측(SbTMVP) 모드가 비활성화된 것으로 결정하는 단계를 포함한다.
방법(3200)은, 동작 3220에서, 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함하고, 비트 스트림 표현은 TMVP 모드의 표시와 관련하여, SbTMVP 모드의 표시가 포함되는지 여부 및/또는 병합 후보 목록에서 SbTMVP 모드의 표시의 위치를 지정하는 포멧 준수한다.
도 33은 비디오 처리를 위한 방법(3300)에 대한 흐름도이다. 방법(3300)은, 동작 3310에서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴(tool) 또는 시간적 모션 벡터 예측(TMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, SbTMVP 툴 또는 TMVP 툴과 연관된 모션 벡터의 압축에 기초하는 마스크를 사용하여 현재 블록 또는 현재 블록의 서브 블록의 대응 위치의 좌표를 선택적으로 마스킹 하고, 마스크의 적용(application)은 좌표의 값과 마스크의 값 사이의 비트 AND 연산을 계산하는 단계를 포함한다.
도 34는 비디오 처리를 위한 방법(3400)에 대한 흐름도이다. 방법(3400)은, 동작 3410에서, 비디오의 비디오 세그먼트의 현재 블록의 하나 이상의 특성에 기초하여, 현재 블록에 대한 서브 블록 기반 모션 벡터 예측(SbTMVP) 툴의 적용을 위해 현재 블록의 유효한 대응 영역(valid corresponding region)을 결정하는 단계를 포함한다.
방법(3400)은, 동작 3420에서, 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 35는 비디오 처리를 위한 방법 3500에 대한 흐름도이다. 방법 3500은, 동작 3510에서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 기본 모션 벡터(default motion vector)를 결정하는 단계를 포함한다.
방법 3500은, 동작 3520에서, 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 기본 모션 벡터는 현재 블록의 중앙 위치와 연관된 병치된 픽처에서 대응 위치를 커버하는 블록으로부터 모션 벡터가 획득되지 않은 경우에 결정된다.
도 36은 비디오 처리를 위한 방법(3600)에 대한 흐름도이다. 방법(3600)은, 동작 3610에서, 비디오의 비디오 세그먼트의 현재 블록에 대해, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴 또는 시간적 모션 벡터 예측(TMVP) 툴이 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처 인 경우, 여기서 M 및 X는 정수이고, 및 여기서 X = 0 또는 X = 1이고, 현재 블록의 현재 픽처가 서브 블록 세그먼트에 대해 비활성화되는 것으로 추론하는 단계를 포함한다.
방법 3600은, 동작 3620에서, 추론하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 37은 비디오 처리를 위한 방법(3700)에 대한 흐름도이다. 방법(3700)은, 단계 3710에서, 비디오의 현재 블록에 대해, 현재 블록의 현재 픽처가 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처 인 경우 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴의 적용이 활성화되는 것으로 결정하는 단계 - M 및 X는 정수임 - 를 포함한다.
방법(3700)은, 동작 3720에서, 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 38은 비디오 처리를 위한 방법(3800)에 대한 흐름도이다. 방법(3800)은, 동작 3810에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 현재 블록은 서브 블록 기반 코딩 툴을 사용하여 코딩 되고, 변환을 수행하는 단계는 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴이 활성화되거나 비활성화되는 경우 통합된 방법으로 서브 블록 병합 인덱스를 코딩 하기 위해 복수의 빈(N)을 사용하는 단계를 포함한다.
도 39는 비디오 처리를 위한 방법(3900)에 대한 흐름도이다. 방법(3900)은, 동작 3910에서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 현재 블록을 포함하는 현재 픽처와 다른 픽처에서 대응하는 블록을 찾기 위해 SbTMVP 툴에 의해 사용되는 모션 벡터를 결정하는 단계를 포함한다.
방법(3900)은, 동작 3920에서, 결하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 40은 비디오 처리를 위한 방법(4000)에 대한 흐름도이다. 방법(4000)은, 동작 4010에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 현재 블록의 변환에 대해 아핀 예측이 가능한지 여부에 기초하여 제로 모션 아핀 병합 후보가 서브 블록 병합 후보 목록에 삽입되는지 여부를 결정하는 단계를 포함한다.
방법(4000)은, 동작 4020에서, 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
도 41은 비디오 처리를 위한 방법(4100)에 대한 흐름도이다. 방법(4100)은, 동작 4110에서, 비디오의 현재 블록과 서브 블록 병합 후보 목록을 사용하는 비디오의 비트 스트림 표현 사이의 변환을 위해, 서브 블록 병합 후보 목록이 충족되지 않은 경우 제로 모션 비-아핀 패딩 후보(non-affine padding candidate)를 서브 블록 병합 후보 목록에 삽입하는 단계를 포함한다.
방법(4100)은, 동작 4120에서, 삽입하는 단계 이후, 변환을 수행하는 단계를 포함한다.
도 42는 비디오 처리를 위한 방법(4200)에 대한 흐름도이다. 방법(4200)은, 동작 4210에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 모션 벡터가 병치된 픽처에서 대응 위치를 커버하는 블록의 하나 이상의 모션 벡터로부터 유도된다는 것을 결정하는 규칙을 사용하여 모션 벡터를 결정하는 단계를 포함한다.
방법(4200)은, 동작 4220에서, 모션 벡터에 기초하여, 변환을 수행하는 단계를 포함한다.
도 43은 비디오 처리를 위한 방법(4300)에 대한 흐름도이다. 이 방법(4300)은, 동작 4310에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 콜 픽처에서 현재 블록 또는 현재 블록의 서브 블록과 연관된 시간 블록이 동일한 픽처에서 이전에 코딩된 샘플에 기초하여 비디오 유닛이 복원되는 코딩 모드를 사용하여 코딩되는 경우 변환을 위한 기본 모션 후보와 함께 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 도구를 사용하기로 결정하는 단계를 포함한다.
방법(4300)은, 동작 4320에서, 기본 모션 후보에 기초하여 변환을 수행하는 단계를 포함한다.
도 44는 비디오 처리를 위한 방법(4400)에 대한 흐름도이다. 이 방법(4400)은, 동작 4410에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환의 일부인 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 프로세스에 대해, 현재 블록의 서브 블록에 대한 서브 블록 모션 정보 유도 과정에서 사용되는 위치의 위치를 기반으로 sbTMVP 과정에 대한 기본 모션 정보를 유도하는 단계를 포함한다.
방법(4400)은, 동작 4420에서, 기본 모션 정보에 기초하여 변환을 수행하는 단계를 포함한다.
도 45는 비디오 처리를 위한 방법(4500)에 대한 흐름도이다. 이 방법(4500)은, 동작 4510에서, 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 툴를 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록의 현재 픽처와 상이한 픽처에서 대응하는 블록을 위치시키기 위해 사용되는 수정된 모션 벡터를 결정하는 단계 - 수정된 모션 벡터는 sbTMVP 툴에서 예측에 사용되는 모션 벡터를 정수 정밀도로 오른쪽 시프트함으로써 생성됨 - 를 포함한다.
방법(4500)은, 동작 4520에서, 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함한다.
도 46은 비디오 처리 장치(video processing apparatus)(4600)의 블록도이다. 장치(4600)는 여기에 기재된 하나 이상의 방법을 구현하는 데 사용될 수 있다. 장치(4600)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(4600)는 하나 이상의 프로세서(processor)(4602), 하나 이상의 메모리(memory)(4604) 및 비디오 처리 하드웨어(video processing hardware)(4606)를 포함할 수 있다. 프로세서(들)(4602)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(4604)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(1006)는 하드웨어 회로에서 여기에 기재된 일부 기술을 구현하는 데 사용될 수 있다. 일부 실시예에서, 비디오 처리 하드웨어(4606)는 적어도 부분적으로 프로세서(4602) 내부일 수 있고, 예를 들어, 그래픽 공동 프로세서 같은 것이다.
일부 실시예에서, 비디오 코딩 방법은 도 46과 관련하여 설명된 바와 같이 하드웨어 플랫폼 상에서 구현되는 장치를 사용하여 구현될 수 있다.
개시된 기술의 일부 실시 예는 비디오 처리 툴 또는 모드를 가능하게 하기 위한 판정(decision) 또는 결정(determination)을 포함한다. 예를 들어, 비디오 처리 툴 또는 모드가 활성화되면, 인코더는 비디오 블록 처리에서 툴 또는 모드를 사용하거나 구현하나, 툴 또는 모드의 사용에 따라 결과 비트 스트림을 반드시 수정할 필요는 없다. 즉, 비디오 블록에서 비디오의 비트 스트림 표현으로의 변환은 판정 또는 결정에 기초하여 활성화될 때 비디오 처리 툴 또는 모드를 사용할 것이다. 다른 예에서, 비디오 처리 툴 또는 모드가 활성화되면 디코더는 비트 스트림이 비디오 처리 툴 또는 모드에 기초하여 수정되었다는 것을 알고 비트 스트림을 처리할 것이다. 즉, 비디오의 비트 스트림 표현에서 비디오 블록으로의 변환은 판정 또는 결정에 기초하여 활성화된 비디오 처리 툴 또는 모드를 사용하여 수행된다.
개시된 기술의 일부 실시 예는 비디오 처리 툴 또는 모드를 비활성화하기 위한 판정 또는 결정을 포함한다. 예를 들어, 비디오 처리 툴 또는 모드가 비활성화되면 인코더는 비디오 블록을 비디오의 비트 스트림 표현으로 변환하는 데 툴 또는 모드를 사용하지 않는다. 다른 예에서, 비디오 처리 툴 또는 모드가 비활성화되면, 디코더는 판정 또는 결정에 기초하여 활성화된 비디오 처리 툴 또는 모드를 사용하여 비트 스트림이 수정되지 않았다는 것을 알고 비트 스트림을 처리할 것이다.
도 47은 본 명세서에 개시된 다양한 기술이 구현될 수 있는 예시적인 비디오 처리 시스템(4400)을 보여주는 블록도이다. 다양한 구현은 시스템(4700)의 구성 요소의 일부 또는 전부를 포함할 수 있다. 시스템(4700)은 비디오 콘텐츠를 수신하기 위한 입력(4702)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 비 압축 형식, 예를 들어 8 비트 또는 10 비트 다중 구성 요소 픽셀 값으로 수신될 수 있거나, 압축 또는 인코딩 된 형식일 수 있다. 입력(4702)은 네트워크 인터페이스, 주변 버스 인터페이스 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예로는 이더넷, 수동 광 네트워크(PON) 등과 같은 유선 인터페이스와 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스가 있다.
시스템(4700)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(coding component)(4704)를 포함할 수 있다. 코딩 컴포넌트(4704)는 비디오의 코딩 된 표현을 생성하기 위해 입력(input)(4702)으로부터 코딩 컴포넌트(4704)의 출력으로 비디오의 평균 비트 레이트를 감소시킬 수 있다. 따라서 코딩 기술은 비디오 압축 또는 비디오 트랜스 코딩 기술이라고도 한다. 코딩 컴포넌트(4704)의 출력은 컴포넌트(4706)에 의해 표현된 바와 같이 연결된 통신을 통해 저장되거나 전송될 수 있다. 입력(4702)에서 수신된 비디오의 저장 또는 통신된 비트 스트림(또는 코딩 된) 표현은 디스플레이 인터페이스(display interface)(4710)로 전송되는 픽셀 값 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(4708)에 의해 사용될 수 있다. 비트 스트림 표현에서 사용자가 볼 수 있는 비디오를 생성하는 프로세스를 비디오 압축 해제(video decompression)라고 한다. 또한, 특정 비디오 처리 작업을 "코딩"작업 또는 툴이라고 하며, 코딩 툴 또는 동작은 인코더에서 사용되며, 코딩의 결과를 역전시키는 대응하는 디코딩 툴 또는 동작은 디코더에 의해 수행될 것임을 이해할 것이다.
주변 장치 버스 인터페이스 또는 디스플레이 인터페이스의 예로는 범용 직렬 버스(Universal Serial Bus)(USB), 고해상도 멀디미디어 인터페이스(High Definition Multimedia Interface)(HDMI) 또는 디스플레이포트(Displayport) 등이 있다. 스토리지 인터페이스의 예로는 직렬 고급 기술 어테치먼트(Serial Advanced Technology Attachment)(SATA), PCI, IDE 인터페이스 등이 있다. 본 문서에 설명된 기술은 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 휴대 전화, 랩톱, 스마트 폰 또는 기타 장치와 같은 다양한 전자 장치에 구현될 수 있다.
일부 실시 예에서, 다음 기술 솔루션이 구현될 수 있다:
A1. 비디오 처리 방법에 있어서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 서브 블록 기반 병합 후보 목록에서 최대 후보 수(ML) 및/또는 시간적 모션 벡터 예측(TMVP)이 변환 동안 사용을 위해 활성화되었는지 여부 또는 현재 픽처 레퍼런스(CPR) 코딩 모드가 변환을 위해 사용되는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 후보를 추가할지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
A2. 솔루션 A1의 방법에서, TMVP 툴이 비활성화되거나 SbTMVP 툴이 비활성화되어 있다는 결정으로 인해 SbTMVP 후보의 사용이 비활성화된다.
A3. 솔루션 A2의 방법에서, ML을 결정하는 단계는: SbTMVP 툴 또는 TMVP 툴이 비활성화되는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 SbTMVP 후보를 제외하는 단계를 포함한다.
A4. 비디오 처리 방법에 있어서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 변환 동안 시간적 모션 벡터 예측(TMVP), 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP), 및 아핀 코딩 모드가 사용을 위해 활성화되었는지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 최대 후보 수(ML)를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
A5. 솔루션 A4의 방법에서, ML은 즉석에서 설정되고 아핀 코딩 모드가 활성화되어 있다는 결정으로 인해 비트 스트림 표현으로 시그널링 된다.
A6. 솔루션 A4의 방법에서, ML은 아핀 코딩 모드가 비활성화되어 있다는 결정으로 인해 미리 정의된다.
A7. 솔루션 A2 또는 A6의 방법에서, ML을 결정하는 단계는: TMVP 툴이 비활성화되고, SbTMVP 툴이 활성화되고 및 현재 블록에 대해 아핀 코딩 모드가 비활성화되어 있다는 결정으로 인해 ML을 0으로 설정하는 단계를 포함한다.
A8. 솔루션 A2 또는 A6의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되고, TMVP 툴이 활성화되고 및 현재 블록에 대해 아핀 코딩 모드가 비활성화되어 있다는 결정으로 인해 ML을 1로 설정하는 단계를 포함한다.
A9. 솔루션 A1의 방법에서, SbTMVP 툴이 비활성화되거나 또는 현재 블록의 현재 픽처의 병치된 레퍼런스 픽처가 현재 픽처 라는 결정으로 인해 SbTMVP 후보의 사용이 비활성화된다.
A10. 솔루션 A9의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 비활성화되는지 또는 현재 픽처의 병치된 레퍼런스 픽처가 현재 픽처 인지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 SbTMVP 후보를 제외하는 단계를 포함한다.
A11. 솔루션 A9의 방법에서, ML을 결정하는 단계는: 현재 픽처의 병치된 레퍼런스 픽처가 현재 픽처이고, 및 현재 블록에 대한 아핀 코딩이 비활성화되어 있다는 결정으로 인해 ML을 0으로 설정하는 단계를 포함한다.
A12. 솔루션 A9의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되어 있다는 결정으로 인해 ML을 1로 설정하는 단계를 포함하고, 현재 픽처의 병치된 레퍼런스 픽처가 현재 픽처가 아니고, 및 현재 블록에 대한 아핀 코딩이 비활성화된다.
A13. 솔루션 A1의 방법에서, SbTMVP 툴이 비활성화되거나 또는 레퍼런스 픽처 목록 0(L0)에서 레퍼런스 픽처 인덱스가 0인 레퍼런스 픽처가 현재 블록의 현재 픽처 라는 결정으로 인해 SbTMVP 후보의 사용이 비활성화된다.
A14. 솔루션 A13의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 비활성화되는지 또는 L0의 레퍼런스 픽처 인덱스가 0인 레퍼런스 픽처가 현재 픽처 인지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 SbTMVP 후보를 제외하는 단계를 포함한다.
A15. 솔루션 A10 또는 A13의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되어 있다는 결정으로 인해 ML을 0으로 설정하는 단계를 포함하고, L0의 레퍼런스 픽처 인덱스가 0인 레퍼런스 픽처가 현재 픽처고, 및 현재 블록에 대한 아핀 코딩이 비활성화된다.
A16. 솔루션 A10 또는 A13의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되어 있다는 결정으로 인해 ML을 1로 설정하는 단계를 포함하고, L0의 레퍼런스 픽처 인덱스가 0인 레퍼런스 픽처가 현재 픽처고, 및 현재 블록에 대한 아핀 코딩이 비활성화된다.
A17. 솔루션 A1의 방법에서, SbTMVP 툴이 비활성화되어 있거나 또는 레퍼런스 픽처 목록 1(L1)에서 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처가 현재 블록의 현재 픽처 라는 결정으로 인해 SbTMVP 후보의 사용이 비활성화된다.
A18. 솔루션 A17의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 비활성화되는지 또는 L1에서 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처가 현재 픽처인지 여부에 기초하여 서브 블록 기반 병합 후보 목록에서 SbTMVP 후보를 제외하는 단계를 포함한다.
A19. 솔루션 A17의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되어 있다는 결정으로 인해 ML을 0으로 설정하는 단계를 포함하고, L1의 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처가 현재 픽처이고, 및 현재 블록에 대한 아핀 코딩이 비활성화된다.
A20. 솔루션 A17의 방법에서, ML을 결정하는 단계는: SbTMVP 툴이 활성화되어 있다는 결정으로 인해 ML을 1로 설정하는 단계를 포함하고, L1의 레퍼런스 픽처 인덱스가 0 인 레퍼런스 픽처가 현재 픽처가 아니고, 및 현재 블록에 대한 아핀 코딩이 비활성화된다.
A21. 비디오 처리 방법에서, 비디오의 제1 비디오 세그먼트의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 제1 비디오 세그먼트 레벨에서 시간적 모션 벡터 예측(TMVP) 모드가 비활성화되어 변환에 대해 서브 블록 기반 모션 벡터 예측(SbTMVP) 모드가 비활성화된 것으로 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함하고, 비트 스트림 표현은 TMVP 모드의 표시와 관련하여, SbTMVP 모드의 표시가 포함되는지 여부 및/또는 병합 후보 목록에서 SbTMVP 모드의 표시의 위치를 지정하는 포멧을 준수한다.
A22. 솔루션 A21의 방법에서, 제1 비디오 세그먼트는 시퀀스, 슬라이스, 타일 또는 픽처이다.
A23. 솔루션 A21의 방법에서, 포멧은 제1 비디오 세그먼트 레벨에서 TMVP 모드의 표시를 포함하기 때문에 SbTMVP 모드의 표시의 생략을 지정한다.
A24. 솔루션 A21의 방법에서, 포멧은 디코딩 순서에서 TMVP 모드의 표시 이후 제1 비디오 세그먼트 레벨에 SbTMVP 모드의 표시가 있음을 지정한다.
A25. 솔루션 A21 내지 A24의 방법 중 어느 하나의 솔루션에서, 포멧은 TMVP 모드가 비활성화되는 것으로 표시되어 있다는 결정으로 인해 SbTMVP 모드의 표시가 생략되도록 지정한다.
A26. 솔루션 A21의 방법에서, 포멧은 SbTMVP 모드의 표시가 비디오의 시퀀스 레벨에 포함되고 및 제2 비디오 세그먼트 레벨에서 생략되도록 지정한다.
A27. 솔루션 A26의 방법에서, 제2 비디오 세그먼트 레벨에서 제2 비디오 세그먼트는 슬라이스, 타일 또는 픽처이다.
A28. 솔루션 A1 내지 A27의 방법 중 어느 하나의 솔루션에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
A29. 솔루션 A1 내지 A27의 방법 중 어느 하나의 솔루션에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
A30. 솔루션 A1 내지 A27의 방법 중 어느 하나의 솔루션에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
A31. 프로세서 및 명령을 갖는 비 일시적 메모리를 포함하는 비디오 시스템의 장치에 있어서, 명령이 프로세서에 의해 실행될 때, 프로세서로 하여금 솔루션 A1 내지 A30의 방법 중 어느 하나의 방법을 구현하도록 하는 장치.
A32. 비 일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 컴퓨터 프로그램은 솔루션 A1 내지 A30의 방법 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
일부 실시 예에서, 다음 기술 솔루션이 구현될 수 있다:
B1. 비디오 처리 방법에서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴(tool) 또는 시간적 모션 벡터 예측(TMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, SbTMVP 툴 또는 TMVP 툴과 연관된 모션 벡터의 압축에 기초하는 마스크를 사용하여 현재 블록 또는 현재 블록의 서브 블록의 대응 위치의 좌표를 선택적으로 마스킹 하고, 마스크의 적용(application)은 좌표의 값과 마스크의 값 사이의 비트 AND 연산을 계산하는 단계를 포함한다.
B2. 솔루션 B1의 방법에서, 좌표는 (xN, yN)이고 마스크(MASK)는 ~(2M-1)과 같은 정수이고, M은 정수이고, 마스크를 적용하면 마스크 된 좌표(xN', yN')가 생성되고, xN'= xN & MASK이고, 및 yN'= yN & MASK이고, "~"는 비트 NOT 연산이고 "&"는 비트 AND 연산이다.
B3. 솔루션 B2의 방법에서, M = 3 또는 M = 4 이다.
B4. 솔루션 B2 또는 B3의 방법에서, 2K x 2K 크기의 복수의 서브 블록이 모션 벡터의 압축에 기초하여 동일한 모션 정보를 공유하고, 및 K는 M과 같지 않은 정수이다.
B5. 솔루션 B4의 방법에서, M = K + 1 이다.
B6. 솔루션 B1의 방법에서, 마스크는 SbTMVP 툴 또는 TMVP 툴과 연관된 모션 벡터가 압축되지 않았다는 결정에 적용되지 않는다.
B7. 솔루션 B1 내지 B6의 방법 중 어느 하나의 솔루션에서, SbTMVP 툴에 대한 마스크는 TMVP 툴에 대한 마스크와 동일하다.
B8. 솔루션 B1 내지 B6의 방법 중 어느 하나의 솔루션에서, ATMVP 툴에 대한 마스크는 TMVP 툴에 대한 마스크와 다르다.
B9. 솔루션 B1의 방법에서, 압축 유형은 비 압축, 8x8 압축 또는 16x16 압축이다.
B10. 솔루션 B9의 방법에서, 압축 유형은 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더 또는 타일 그룹 헤더에서 시그널링 된다.
B11. 솔루션 B9 또는 B10의 방법에서, 압축 유형은 현재 블록에 대응하는 표준 프로필, 레벨 또는 계층에 기초한다.
B12. 비디오 처리 방법에서, 비디오의 비디오 세그먼트의 현재 블록의 하나 이상의 특성에 기초하여, 현재 블록에 대한 서브 블록 기반 모션 벡터 예측(SbTMVP) 툴의 적용을 위해 현재 블록의 유효한 대응 영역(valid corresponding region)을 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
B13. 솔루션 B12의 방법에서, 하나 이상의 특성은 현재 블록의 높이 또는 너비를 포함한다.
B14. 솔루션 B12의 방법에서, 하나 이상의 특성은 현재 블록과 연관된 모션 벡터의 압축 유형을 포함한다.
B15. 솔루션 B14의 방법에서, 유효한 대응 영역은 압축 유형이 압축을 포함하지 않는다는 결정으로 인해 제1 크기이고, 유효한 대응 영역은 압축 유형이 KxK 압축을 포함한다는 결정으로 인해 제1 크기보다 큰 제2 크기이다.
B16. 솔루션 B12의 방법에서, 유효한 대응 영역의 크기는 코딩 트리 유닛(CTU) 영역의 크기보다 작은 MxN 크기의 기초 영역에 기초하고, 및 현재 블록의 크기는 WxH이다.
B17. 솔루션 B16의 방법에서, CTU 영역의 크기가 128x128이고, 및 M = 64이고 N = 64 이다.
B18. 솔루션 B16의 방법에서, 유효한 대응 영역은 W ≤ M 및 H ≤ N이라는 결정으로 인해 병치된 기초 영역(basic region) 및 병치된 픽처의 확장이다.
B19. 솔루션 B16의 방법에서, 현재 블록은 W> M 및 H> N으로 결정되면 여러 부분으로 분할되며, 여러 부분 각각은 SbTMVP 툴의 적용을 위한 개별 유효한 대응 영역을 포함한다.
B20. 비디오 처리 방법에서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 기본 모션 벡터(default motion vector)를 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 기본 모션 벡터는 현재 블록의 중앙 위치와 연관된 병치된 픽처에서 대응 위치를 커버하는 블록으로부터 모션 벡터가 획득되지 않은 경우에 결정된다.
B21. 솔루션 B20의 방법에서, 기본 모션 벡터(default motion vector)는 (0, 0)으로 설정된다.
B22. 솔루션 B20의 방법에서, 기본 모션 벡터는 히스토리 기반 모션 벡터 예측(HMVP) 표에서 유도된다.
B23. 솔루션 B22의 방법에서, 기본 모션 벡터는 HMVP 표가 비어 있다는 결정으로 인해(0, 0)으로 설정된다.
B24. 솔루션 B22의 방법에서, 기본 모션 벡터는 VPS(비디오 파라미터 세트), SPS(시퀀스 파라미터 세트), PPS(픽처 파라미터 세트), 슬라이스 헤더, 타일 그룹 헤더, 코딩 트리 유닛(CTU) 또는 코딩 유닛(CU)에서 미리 정의되고 시그널링 된다.
B25. 솔루션 B22의 방법에서, 기본 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 제1 요소로 설정된다.
B26. 솔루션 B22의 방법에서, 기본 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 마지막 요소로 설정된다.
B27. 솔루션 B22의 방법에서, 기본 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 특정 모션 벡터로 설정된다.
B28. 솔루션 B27의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0을 참조한다.
B29. 솔루션 B27의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1을 참조한다.
B30. 솔루션 B27의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
B31. 솔루션 B27의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
B32. 솔루션 B30 또는 B31의 방법에서, 특정 레퍼런스 픽처에는 인덱스 0을 갖는다.
B33. 솔루션 B27의 방법에서, 특정 모션 벡터는 병치된 픽처을 참조한다.
B34. 솔루션 B22의 방법에서, 기본 모션 벡터는 HMVP 표의 검색 프로세스가 특정 모션 벡터를 찾을 수 없다는 결정으로 인해 미리 정의된 기본 모션 벡터로 설정된다.
B35. 솔루션 B34의 방법에서, 검색 프로세스는 HMVP 표의 제1 요소 또는 마지막 요소 만 검색한다.
B36. 솔루션 B34의 방법에서, 검색 프로세스는 HMVP 표 요소의 서브 세트 만 검색한다.
B37. 솔루션 B22의 방법에서, 기본 모션 벡터는 현재 블록의 현재 픽처를 참조하지 않는다.
B38. 솔루션 B22의 방법에서, 기본 모션 벡터가 병치된 픽처를 참조하지 않는다는 결정으로 인해 기본 모션 벡터는 병치된 픽처로 스케일링 된다.
B39. 솔루션 B20의 방법에서, 기본 모션 벡터는 이웃 블록에서 유도된다.
B40. 솔루션 B39의 방법에서, 이웃 블록(A0)의 오른쪽 위쪽 모서리가 현재 블록의 왼쪽 아래 모서리에 직접 인접하거나, 또는 이웃 블록(A1)의 오른쪽 아래 모서리가 현재 블록의 왼쪽 아래 모서리에 직접 인접하거나, 또는 이웃 블록(B0)의 왼쪽 하단 모서리가 현재 블록의 오른쪽 상단 모서리에 직접 인접하거나, 또는 이웃 블록(B1)의 오른쪽 아래 모서리가 현재 블록의 오른쪽 위쪽 모서리에 직접 인접하거나, 또는 이웃 블록(B2)의 오른쪽 하단 모서리는 현재 블록의 왼쪽 상단 모서리에 바로 인접한다.
B41. 솔루션 B40의 방법에서, 기본 모션 벡터는 이웃 블록 A0, A1, B0, B1 및 B2 중 하나에서만 유도된다.
B42. 솔루션 B40의 방법에서, 기본 모션 벡터는 하나 이상의 이웃 블록 A0, A1, B0, B1 및 B2에서 유도된다.
B43. 솔루션 B40의 방법에서, 기본 모션 벡터는 이웃 블록 A0, A1, B0, B1 및 B2에서 유효한 기본 모션 벡터를 찾을 수 없다는 결정으로 인해 미리 정의된 기본 모션 벡터로 설정된다.
B44. 솔루션 B43의 방법에서, 미리 정의된 기본 모션 벡터는 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 코딩 트리 유닛(CTU) 또는 코딩 유닛(CU)에서 시그널링 된다.
B45. 솔루션 B43 또는 B44의 방법에서, 미리 정의된 기본 모션 벡터는 (0, 0)이다.
B46. 솔루션 B39의 방법에서, 기본 모션 벡터는 이웃 블록의 특정 모션 벡터로 설정된다.
B47. 솔루션 B46의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0을 참조한다.
B48. 솔루션 B46의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1을 참조한다.
B49. 솔루션 B46의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
B50. 솔루션 B46의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
B51. 솔루션 B49 또는 B50의 방법에서, 특정 레퍼런스 픽처에는 인덱스 0을 갖는다.
B52. 솔루션 B46의 방법에서, 특정 모션 벡터는 병치된 픽처를 참조한다.
B53. 솔루션 B20의 방법에서, 기본 모션 벡터는 병치된 픽처에서 대응 위치를 커버하는 블록이 인트라 코딩 된다는 결정으로 인해 사용된다.
B54. 솔루션 B20의 방법에서, 유도 방법은 병치된 픽처에서 대응 위치를 커버하는 블록이 위치되지 않는다는 결정으로 인해 수정된다.
B55. 솔루션 B20의 방법에서, 기본 모션 벡터 후보는 항상 사용할 수 있다.
B56. 솔루션 B20의 방법에서, 기본 모션 벡터 후보가 사용 가능하지 않다고 설정된다는 결정에 따라 기본 모션 벡터가 다른 방식으로 유도된다.
B57. 솔루션 B20의 방법에서, 기본 모션 벡터의 가용성은 비디오 세그먼트와 연관된 비트 스트림 표현의 신택스 정보에 기초한다.
B58. 솔루션 B57의 방법에서, 신택스 정보는 SbTMVP 툴을 활성화하는 표시를 포함하고, 비디오 세그먼트는 슬라이스, 타일 또는 픽처이다.
B59. 솔루션 B58의 방법에서, 현재 블록의 현재 픽처는 인트라 랜덤 액세스 포인트(Intra Random Access Point)(IRAP) 픽처가 아니고 현재 픽처가 레퍼런스 인덱스 0 인 레퍼런스 픽처 목록 0(L0)에 삽입되지 않는다.
B60. 솔루션 B20의 방법에서, 고정 인덱스 또는 고정 인덱스 그룹이 SbTMVP 툴이 활성화되어 있다는 결정으로 인해 SbTMVP 툴과 연관된 후보에 할당되고, 및 고정 인덱스 또는 고정 인덱스 그룹은 SbTMVP 툴이 비활성화되어 있다는 결정으로 인해 SbTMVP 툴 이외의 코딩 툴과 연관된 후보에 할당된다.
B61. 비디오 처리 방법에서, 비디오의 비디오 세그먼트의 현재 블록에 대해, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴 또는 시간적 모션 벡터 예측(TMVP) 툴이 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처 인 경우, 여기서 M 및 X는 정수이고, 및 여기서 X 0 또는 X = 1이고, 현재 블록의 현재 픽처가 서브 블록 세그먼트에 대해 비활성화되는 것으로 추론하는 단계, 및 추론하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
B62. 솔루션 B61의 방법에서, M은 SbTMVP 툴 또는 TMVP 툴에 대한 레퍼런스 픽처 목록 X에 대해 시간적 블록의 모션 정보가 스케일링 되는 타겟 레퍼런스 픽처 인덱스에 대응한다.
B63. 솔루션 B61의 방법에서, 현재 픽처가 인트라 랜덤 액세스 포인트(Intra Random Access Point)(IRAP) 픽처이다.
B64. 비디오 처리 방법에서, 비디오의 현재 블록에 대해 현재, 현재 블록의 현재 픽처가 레퍼런스 픽처 목록 X에서 인덱스가 M으로 설정된 레퍼런스 픽처라는 결정으로 인해 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴의 적용이 가능하다고 결정하는 단계 - M 및 X는 정수임 -; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
B65. 솔루션 B64의 방법에서, 현재 블록의 각 서브 블록에 대응하는 모션 정보는 현재 픽처를 참조한다.
B66. 솔루션 B64의 방법에서, 현재 블록의 서브 블록에 대한 모션 정보는 시간적 블록에서 유도되고, 및 시간적 블록은 시간적 블록의 현재 픽처를 참조하는 적어도 하나의 레퍼런스 픽처로 코딩 된다.
B67. 솔루션 B66의 방법에서, 변환은 스케일링 동작을 배제한다.
B68. 비디오 처리 방법에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서 현재 블록은 서브 블록 기반 코딩 툴을 사용하여 코딩 되고, 변환을 수행하는 단계는 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴이 활성화되거나 비활성화되어 있다는 결정으로 인해 통합된 방법으로 서브 블록 병합 인덱스를 코딩 하기 위해 복수의 빈(N)을 사용하는 단계를 포함한다.
B69. 솔루션 B68의 방법에서, 복수의 빈 중 제1 빈(L)의 수는 컨텍스트 코딩 되고, 제2 빈(N-L)의 수는 바이패스 코딩 된다.
B70. 솔루션 B69의 방법에서, L = 1 이다.
B71. 솔루션 B68의 방법에서, 복수의 빈 각각이 컨텍스트 코딩 된다.
B72. 솔루션 B1 내지 B71의 방법 중 어느 하나의 솔루션에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
B73. 솔루션 B1 내지 B71의 방법 중 어느 하나의 솔루션에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
B74. 솔루션 B1 내지 B71의 방법 중 어느 하나의 솔루션에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
B75. 프로세서 및 명령을 갖는 비 일시적 메모리를 포함하는 비디오 시스템의 장치에 있어서, 명령이 프로세서에 의해 실행될 때, 프로세서로 하여금 솔루션 B1 내지 B74의 방법 중 어느 하나의 방법을 구현하도록 하는 장치.
B76. 비 일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 컴퓨터 프로그램은 솔루션 B1 내지 B74의 방법 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
일부 실시 예에서, 다음 기술 솔루션이 구현될 수 있다:
C1. 비디오 처리 방법으로서, 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP) 툴을 사용하여 코딩 된 비디오의 현재 블록에 대해, 현재 블록을 포함하는 현재 픽처와 다른 픽처에서 대응하는 블록을 찾기 위해 SbTMVP 툴에 의해 사용되는 모션 벡터를 결정하는 단계; 및 결정하는 단계에 기초하여, 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
C2. 솔루션 C1의 방법에서, 모션 벡터는 기본 모션 벡터로 설정된다.
C3. 솔루션 C2의 방법에서, 기본 모션 벡터는 (0, 0)이다.
C4. 솔루션 C2의 방법에서, 기본 모션 벡터는 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 영상 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 코딩 트리 유닛(CTU) 또는 코딩 유닛(CU)으로 시그널링 된다.
C5. 솔루션 C1의 방법에서, 모션 벡터는 히스토리 기반 모션 벡터 예측(HMVP) 표에 저장된 모션 벡터로 설정된다.
C6. 솔루션 C5의 방법에서, 모션 벡터는 HMVP 표가 비어 있다는 결정으로 인해 기본 모션 벡터로 설정된다.
C7. 솔루션 C6의 방법에서, 기본 모션 벡터는 (0, 0)이다.
C8. 솔루션 C5의 방법에서, 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 제1 모션 벡터로 설정된다.
C9. 솔루션 C5의 방법에서, 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 마지막 모션 벡터로 설정된다.
C10. 솔루션 C5의 방법에서, 모션 벡터는 HMVP 표가 비어 있지 않다는 결정으로 인해 HMVP 표에 저장된 특정 모션 벡터로 설정된다.
C11. 솔루션 C10의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0을 참조한다.
C12. 솔루션 C10의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1을 참조한다.
C13. 솔루션 C10의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
C14. 솔루션 C10의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
C15. 솔루션 C13 또는 14의 방법에서, 특정 레퍼런스 픽처에는 인덱스 0이 있다.
C16. 솔루션 C10의 방법에서, 특정 모션 벡터는 병치된 픽처를 참조한다.
C17. 솔루션 C5의 방법에서, 모션 벡터는 HMVP 표의 검색 프로세스에서 특정 모션 벡터를 찾을 수 없다고 판단하여 기본 모션 벡터로 설정된다.
C18. 솔루션 C17의 방법에서, 검색 프로세스는 HMVP 표의 제1 요소 또는 마지막 요소 만 검색한다.
C19. 솔루션 C17의 방법에서, 검색 프로세스는 HMVP 표의 요소의 서브 세트 만 검색한다.
C20. 솔루션 C5의 방법에서, HMVP 표에 저장된 모션 벡터는 현재 픽처를 참조하지 않는다.
C21. 솔루션 C5의 방법에서, HMVP 표에 저장된 모션 벡터는 HMVP 표에 저장된 모션 벡터가 병치된 픽처를 참조하지 않는다는 결정으로 인해 병치된 픽처로 스케일링 된다.
C22. 솔루션 C1의 방법에서, 모션 벡터는 특정 이웃 블록의 특정 모션 벡터로 설정된다.
C23. 솔루션 C22의 방법에서, 특정 이웃 블록(A0)의 오른쪽 위쪽 모서리가 현재 블록의 왼쪽 아래 모서리에 직접 인접하거나, 또는 특정 이웃 블록(A1)의 오른쪽 아래 모서리가 현재 블록의 왼쪽 아래 모서리에 직접 인접하거나, 또는 특정 이웃 블록(B0)의 왼쪽 하단 모서리가 현재 블록의 오른쪽 상단 모서리에 직접 인접하거나, 또는 특정 이웃 블록(B1)의 오른쪽 아래 모서리가 현재 블록의 오른쪽 위쪽 모서리에 직접 인접하거나, 또는 특정 이웃 블록(B2)의 오른쪽 하단 모서리는 현재 블록의 왼쪽 상단 모서리에 바로 인접한다.
C24. 솔루션 C1의 방법에서, 모션 벡터는 특정 이웃 블록이 존재하지 않는다는 결정으로 인해 기본 모션 벡터로 설정된다.
C25. 솔루션 C1의 방법에서, 모션 벡터는 특정 이웃 블록이 인터 코딩 되지 않는다는 결정으로 인해 기본 모션 벡터로 설정된다.
C26. 솔루션 C22의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0을 참조한다.
C27. 솔루션 C22의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1을 참조한다.
C28. 솔루션 C22의 방법에서, 특정 모션 벡터는 레퍼런스 목록 0의 특정 레퍼런스 픽처를 참조한다.
C29. 솔루션 C22의 방법에서, 특정 모션 벡터는 레퍼런스 목록 1의 특정 레퍼런스 픽처를 참조한다.
C30. 솔루션 C28 또는 C29의 방법에서, 특정 레퍼런스 픽처에는 인덱스 0을 갖는다.
C31. 솔루션 C22 또는 C23의 방법에서, 특정 모션 벡터는 병치된 픽처를 참조한다.
C32. 솔루션 C22 또는 C23의 방법에서, 모션 벡터는 특정 이웃 블록이 병치된 픽처를 참조하지 않는다는 결정으로 인해 기본 모션 벡터로 설정된다.
C33. 솔루션 C24 내지 C32 중 임의의 방법에서, 기본 모션 벡터는 (0, 0)이다.
C34. 솔루션 C1의 방법에서, 모션 벡터는 특정 이웃 블록에 저장된 특정 모션 벡터를 찾을 수 없다는 결정으로 인해 기본 모션 벡터로 설정된다.
C35. 솔루션 C22의 방법에서, 특정 모션 벡터가 병치된 픽처를 참조하지 않는다는 결정으로 인해 특정 모션 벡터는 병치된 픽처로 스케일링 된다.
C36. 솔루션 C22의 방법에서, 특정 모션 벡터는 현재 픽처를 참조하지 않는다.
C37. 솔루션 C1 내지 C36의 방법 중 어느 하나의 솔루션에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
C38. 솔루션 C1 내지 C36의 방법 중 어느 하나의 솔루션에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
C39. 솔루션 C1 내지 C36의 방법 중 어느 하나의 솔루션에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
C40. 프로세서 및 명령을 갖는 비 일시적 메모리를 포함하는 비디오 시스템의 장치에 있어서, 명령이 프로세서에 의해 실행될 때, 프로세서로 하여금 솔루션 C1 내지 C39의 방법 중 어느 하나의 방법을 구현하도록 하는 장치.
C41. 비 일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 컴퓨터 프로그램은 솔루션 C1 내지 C39의 방법 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
일부 실시 예에서, 다음 기술 솔루션이 구현될 수 있다:
D1. 비디오 처리 방법에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 현재 블록의 변환에 대해 아핀 예측이 가능한지 여부에 기초하여 제로 모션 아핀 병합 후보가 서브 블록 병합 후보 목록에 삽입되는지 여부를 결정하는 단계; 및 결정하는 단계에 기초하여, 변환을 수행하는 단계를 포함한다.
D2. 솔루션 D1의 방법에서, 제로 모션 아핀 병합 후보는 비트 스트림 표현에서 아핀 사용 플래그가 꺼져 있다는 결정으로 인해 서브 블록 병합 후보 목록에 삽입되지 않는다.
D3. 솔루션 D2의 방법에서, 아핀 사용 플래그가 꺼져 있다는 결정으로 인해 아핀이 아닌 후보 인 기본 모션 벡터 후보를 서브 블록 병합 후보 목록에 삽입하는 단계를 더 포함한다.
D4. 비디오 처리 방법에서, 비디오의 현재 블록과 서브 블록 병합 후보 목록을 사용하는 비디오의 비트 스트림 표현 사이의 변환을 위해, 서브 블록 병합 후보 목록이 충족되지 않는 다는 결정으로 인해 제로 모션 비-아핀 패딩 후보(non-affine padding candidate)를 서브 블록 병합 후보 목록에 삽입하는 단계; 및 삽입 후, 변환을 수행하는 단계를 포함한다.
D5. 솔루션 D4의 방법에서: 현재 블록의 아핀 사용 플래그를 0으로 설정하는 단계를 더 포함한다.
D6. 솔루션 D4의 방법에서, 삽입하는 단계는 또한 비트 스트림 표현의 아핀 사용 플래그가 꺼져 있는지 여부에 기초한다.
D7. 비디오 처리 방법에서, 비디오의 현재 블록과 비디오의 비트 스트림 표현 사이의 변환을 위해, 모션 벡터가 병치된 픽처에서 대응 위치를 커버하는 블록의 하나 이상의 모션 벡터로부터 유도된다는 것을 결정하는 규칙을 사용하여 모션 벡터를 결정하는 단계; 및 모션 벡터에 기초하여, 변환을 수행하는 단계를 포함한다.
D8. 솔루션 D7의 방법에서, 하나 이상의 모션 벡터는 각각 레퍼런스 목록 0 및 레퍼런스 목록 1에서 모션 벡터를 나타내는 MV0 및 MV1을 포함하고, 및 모션 벡터는 레퍼런스 목록 0 및 레퍼런스 목록 1에서 모션 벡터를 나타내는 MV0' 및 MV1'을 포함한다.
D9. 솔루션 D8의 방법에서, MV0' 및 MV1'은 병치된 픽처가 레퍼런스 목록 0에 있다는 결정으로 인해 MV0에 기초하여 유도된다.
D10. 솔루션 D8의 방법에서, MV0' 및 MV1'은 병치된 픽처가 레퍼런스 목록 1에 있다는 결정으로 인해 MV1에 기초하여 유도된다.
D11. 솔루션 D1 내지 D10의 방법 중 어느 하나의 솔루션에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
D12. 솔루션 D1 내지 D10의 방법 중 어느 하나의 솔루션에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
D13. 솔루션 D1 내지 D10의 방법 중 어느 하나의 솔루션에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
D14. 프로세서 및 명령을 갖는 비 일시적 메모리를 포함하는 비디오 시스템의 장치에 있어서, 명령이 프로세서에 의해 실행될 때, 프로세서로 하여금 솔루션 D1 내지 D13의 방법 중 어느 하나의 방법을 구현하도록 하는 장치.
D15. 비 일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 컴퓨터 프로그램은 솔루션 D1 내지 D13의 방법 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
일부 실시예에서 다음과 같은 기술적 솔루션이 구현될 수 있다.
E1. 비디오 처리 방법에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 콜 픽처에서 현재 블록 또는 현재 블록의 서브 블록과 연관된 시간 블록이 동일한 픽처에서 이전에 코딩된 샘플에 기초하여 비디오 유닛이 복원되는 코딩 모드를 사용하여 코딩되는 경우 변환을 위한 기본 모션 후보와 함께 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 도구를 사용하기로 결정하는 단계; 및 기본 모션 후보에 기초하여 변환을 수행하는 단계를 포함한다.
E2. 솔루션 E1의 방법에서, 기본 모션 후보가 서브 블록 또는 비 서브 블록 sbTMVP 후보 대신 사용된다.
E3. 솔루션 E1 또는 E2의 방법에서, 기본 모션 후보는 현재 블록의 중심 위치와 연관된 모션 후보를 포함한다.
E4. 솔루션 E1 또는 E2의 방법에서, 기본 모션 후보가 (0, 0) 및 레퍼런스 픽처 인덱스가 레퍼런스 픽처 목록 0 또는 레퍼런스 픽처 목록 1에 대해 0이다.
E5. 솔루션 E1 내지 E4의 방법 중 어느 하나의 솔루션에서, 코딩 모드는 내부 블록 복사(IBC) 모드이다.
E6. 비디오 처리 방법에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환의 일부인 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 프로세스에 대해, 현재 블록의 서브 블록에 대한 서브 블록 모션 정보 유도 과정에서 사용되는 위치의 위치를 기반으로 sbTMVP 과정에 대한 기본 모션 정보를 유도하는 단계; 및 상기 기본 모션 정보에 기초하여 변환을 수행하는 단계를 포함한다.
E7. 솔루션 E6의 방법에서, 위치는 현재 블록의 중심 위치 대신 현재 블록의 특정 서브 블록의 중심 위치이다.
E8. 솔루션 E7의 방법에서, 특정 서브 블록은 중심 서브 블록이다.
E9. 솔루션 E1 내지 E8의 방법 중 어느 하나의 솔루션에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
E10. 솔루션 E1 내지 E8의 방법 중 어느 하나의 솔루션에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
E11. 솔루션 E1 내지 E8의 방법 중 어느 하나의 솔루션에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
E12. 프로세서 및 명령어가 포함된 비일시적 메모리를 포함하는 비디오 시스템의 장치로서, 프로세서에 의한 실행 시 명령은 프로세서로 하여금 E1 내지 E11 중 어느 하나의 방법을 구현하게 하는 장치.
E13. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, E1 내지 E11 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
일부 실시예에서 다음과 같은 기술적 솔루션이 구현될 수 있다.
F1. 비디오 처리 방법에서, 서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 툴를 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 현재 블록의 현재 픽처와 상이한 픽처에서 대응하는 블록을 위치시키기 위해 사용되는 수정된 모션 벡터를 결정하는 단계 - 수정된 모션 벡터는 sbTMVP 툴에서 예측에 사용되는 모션 벡터를 정수 정밀도로 오른쪽 시프트함으로써 생성됨 -; 및 결정하는 단계에 기초하여 변환을 수행하는 단계를 포함한다.
F2. 솔루션 F1의 방법에서, 오른쪽 시프트는 모션 벡터 스케일링 프로세스에 사용되는 것과 동일한 반올림 동작을 사용한다.
F3. 솔루션 F1의 방법에서, 오른쪽 시프트는 모션 벡터 평균화 프로세스에 사용되는 것과 동일한 반올림 동작을 사용한다.
F4. 솔루션 F1의 방법은, 오른쪽 시프트는 적응형 모션 벡터 해상도 (AMVR) 프로세스에 사용되는 것과 동일한 반올림 동작을 사용한다.
F5. 솔루션 F1의 방법에서, 오른쪽 시프트는 0 동작을 향한 반올림을 사용하고, 모션 벡터는 MV =(MVx, MVy)를 표시하고, 오른쪽 시프트 모션 벡터는 MV의 =(MVx', MVy')를 표시한다.
F6. 솔루션 F5의 방법에서, 오른쪽 시프트 모션 벡터를 다음과 같이 계산한다: MVx' = ( MVx + ( ( 1 << N ) >> 1 ) - ( MVx ≥ 0 ? 1 : 0) ) ) >> N, MVy' = (MVy + (1 << N) >> 1) - (MVy ≥ 0 ? 1 : 0) ) >> N, N은 모션 벡터 해상도를 나타내는 정수이다.
F7. 솔루션 F6의 방법에서, N = 4이다.
F8. 솔루션 F5의 방법에서, 오른쪽 시프트 모션 벡터를 다음과 같이 계산한다: MVx' = (MVx + (MVx ≥ 0 ? 7 : 8 ) ) >> 4, MVy' (MVy + (MVy ≥ 0 ? 7 : 8 ) ) >> 4.
F9. 솔루션 F1 내지 F8의 방법 중 어느 하나의 방법에서, 수정된 모션 벡터는 sbTMVP 툴에 사용되는 기본 모션 정보를 유도하기 위해 다른 해당 블록을 위치시키기 위해 더 사용된다.
F10. 솔루션 F9의 방법에서, 기본 모션 정보를 유도하는 단계는 현재 블록및 수정된 모션 벡터의 중심 위치에 더 기초한다.
F11. 솔루션 F9의 방법에서, 현재 블록의 서브 블록에 대한 기본 모션 정보를 유도하는 단계는 서브 블록 및 수정된 모션 벡터의 중심 위치에 더 기초한다.
F12. 솔루션 F1 내지 F11의 방법 중 어느 하나의 방법에서, 변환은, 상이한 픽처 또는 현재 픽처에서 레퍼런스 블록을 위치시키기 위해 수정된 모션 벡터를 사용하는, sbTMVP 툴와 상이한, 다른 코딩 툴를 사용한다.
F13. 솔루션 F1 내지 F12의 방법 중 어느 하나의 방법에서, 변환은 비트 스트림 표현에서 현재 블록을 생성한다.
F14. 솔루션 F1 내지 F12의 방법 중 어느 하나의 방법에서, 변환은 현재 블록에서 비트 스트림 표현을 생성한다.
F15. 솔루션 F1 내지 F12의 방법 중 어느 하나의 방법에서, 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 비트 스트림 표현을 파싱 하는 단계를 포함한다.
F16. 프로세서 및 명령어가 포함된 비일시적 메모리를 포함하는 비디오 시스템의 장치로서, 프로세서에 의한 실행 시 명령은 프로세서로 하여금 솔루션 F1 내지 F15의 방법 중 어느 하나의 방법을 구현하게 하는 장치.
F17. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 솔루션 F1 내지 F15의 방법 중 어느 하나의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램.
모듈 및 기능적 동작은, 이 문서에 공개된 구조 및 구조적 등가물을 포함하거나 이들 중 하나 이상의 조합을 포함하는, 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 개시된 및 다른 실시 예는 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체 상에 인코딩 된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 구성, 또는 이들의 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치(data processing apparatus)"는 데이터 처리를 위한 모든 장치, 장치 및 기계를 포함하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인공적으로 생성된 신호, 예를 들어 적절한 수신기 장치로의 전송을 위해 정보를 인코딩 하기 위해 생성되는 기계 생성 전기, 광학 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 응용 프로그램, 스크립트 또는 코드라고도 함)은 컴파일 되거나 해석된 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있고, 독립 실행형 프로그램이나 모듈, 구성 요소, 서브 루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 장치를 포함하여 모든 형태로 배치될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일에 대응하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 대응하는 프로그램 전용 단일 파일 또는 여러 개의 조정된 파일(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배치될 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에서 입력 데이터를 조작하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름은 또한 FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로(application specific integrated circuit))와 같은 특수 목적의 로직 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예를 들어 범용 및 특수 목적의 마이크로 프로세서와 모든 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 읽기 전용 메모리 나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 요소는 명령을 수행하기 위한 프로세서와 명령과 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 마그네틱, 마그네토 광 디스크 또는 광 디스크, 로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않는다. 컴퓨터 프로그램 명령 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능 매체에는 모든 형태의 비 휘발성 메모리, 매체 및 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치; 자기 디스크, 예를 들어 내부 하드 디스크 또는 이동식 디스크; 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크와 같은 반도체 메모리 장치를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이들은 임의의 주제(subject matter)의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안되며, 오히려 특정 기술의 특정 실시예에 특정할 수 있는 특징의 설명으로 해석되어야 한다. 개별 실시예의 맥락에서 본 특허 문서에 설명된 특정 특징은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 다중 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 더욱이, 특징이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합으로부터 배제될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 향할 수 있다.
마찬가지로 작업은 특정 순서로 도면에 표시되지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 또한, 이 특허 문서에 설명된 실시예에서 다양한 시스템 구성 요소의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안된다.
단지 몇 가지 구현 및 예가 설명되고 다른 구현, 향상 및 변형이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.
Claims (17)
- 비디오 처리 방법에 있어서,
서브 블록 기반 시간적 모션 벡터 예측(sbTMVP) 툴를 사용하여 코딩된 비디오의 현재 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 현재 블록의 현재 픽처와 상이한 픽처에서 대응하는 블록을 위치시키기 위해 사용되는 수정된 모션 벡터를 결정하는 단계 - 상기 수정된 모션 벡터는 sbTMVP 툴에서 예측에 사용되는 모션 벡터를 정수 정밀도로 오른쪽 시프트함으로써 생성됨 -; 및
상기 결정하는 단계에 기초하여, 상기 변환을 수행하는 단계를 포함하는
방법
- 제1항에 있어서,
상기 오른쪽 시프트는 모션 벡터 스케일링 프로세스에 사용되는 것과 동일한 반올림 동작을 사용하는
방법.
- 제1항에 있어서,
상기 오른쪽 시프트는 모션 벡터 평균화 프로세스에 사용되는 것과 동일한 반올림 동작을 사용하는
방법.
- 제1항에 있어서,
상기 오른쪽 시프트는 적응형 모션 벡터 해상도(AMVR) 프로세스에 사용되는 것과 동일한 반올림 동작을 사용하는
방법.
- 제1항에 있어서,
상기 오른쪽 시프트는 0 동작을 향한 반올림을 사용하고, 상기 모션 벡터는 MV =(MVx, MVy)를 표시하고, 오른쪽 시프트 모션 벡터는 MV의 =(MVx', MVy')를 표시하는
방법.
- 제5항에 있어서,
상기 오른쪽 시프트 모션 벡터는:
MVx' = ( MVx + ( ( 1 << N ) >> 1 ) - ( MVx ≥ 0 ? 1 : 0)) >> N, 및
MVy' = ( MVy + ( ( 1 << N ) >> 1 ) - ( MVy ≥ 0 ? 1 : 0)) >> N로 계산되고,
N은 모션 벡터 해상도를 나타내는 정수인
방법.
- 제6항에 있어서,
N=4 인
방법
- 제5항에 있어서,
상기 오른쪽 시프트 모션 벡터는:
MVx' = (MVx + (MVx ≥ 0 ? 7 : 8) ) >> 4, 및
MVy' = (MVy + (MVy ≥ 0 ? 7 : 8 ) ) >> 4 로 계산되는
방법.
- 제1항 내지 제8항 중 어느 한 항에 있어서,
상기 수정된 모션 벡터는 상기 sbTMVP 툴에 사용되는 기본 모션 정보를 유도하기 위해 다른 대응하는 블록을 더 위치시키는 데 사용되는
방법.
- 제9항에 있어서,
상기 기본 모션 정보를 유도하는 단계는 상기 현재 블록 및 상기 수정된 모션 벡터의 중심 위치에 기초하는
방법.
- 제9항에 있어서,
상기 현재 블록의 서브 블록에 대한 상기 기본 모션 정보를 유도하는 단계는 상기 서브 블록 및 상기 수정된 모션 벡터의 중심 위치에 더 기초하는
방법.
- 제1항 내지 제11항 중 어느 한 항에 있어서,
상기 변환이, 상기 상이한 픽처 또는 상기 현재 픽처에서 레퍼런스 블록을 위치시키기 위해 상기 수정된 모션 벡터를 사용하는, 상기 sbTMVP 툴과 상이한, 다른 코딩 툴를 사용하는
방법.
- 제1항 내지 제12항 중 어느 한 항에 있어서,
상기 변환은 상기 비트 스트림 표현에서 상기 현재 블록을 생성하는
방법.
- 제1항 내지 제12항 중 어느 한 항에 있어서,
상기 변환은 상기 현재 블록에서 상기 비트 스트림 표현을 생성하는
방법.
- 제1항 내지 제12항 중 어느 한 항에 있어서,
상기 변환을 수행하는 단계는 하나 이상의 디코딩 규칙에 기초하여 상기 비트 스트림 표현을 파싱 하는 단계를 포함하는
방법.
- 프로세서 및 명령이 있는 비일시적 메모리를 포함하는 비디오 시스템의 장치에 있어서, 상기 프로세서에 의한 실행 시, 상기 명령은 상기 프로세서로 하여금 제1항 내지 제15항 중 어느 한 항의 방법을 구현하게 하는 장치.
- 제1항 내지 제15항 중 어느 한 항의 방법을 수행하기 위한 프로그램 코드를 포함하는 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019100396 | 2019-08-13 | ||
CNPCT/CN2019/100396 | 2019-08-13 | ||
PCT/CN2020/108805 WO2021027862A1 (en) | 2019-08-13 | 2020-08-13 | Motion precision in sub-block based inter prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220043109A true KR20220043109A (ko) | 2022-04-05 |
Family
ID=80645893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227001812A KR20220043109A (ko) | 2019-08-13 | 2020-08-13 | 서브 블록 기반 인터 예측의 모션 정밀도 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11871025B2 (ko) |
EP (1) | EP3997877A4 (ko) |
JP (2) | JP7481430B2 (ko) |
KR (1) | KR20220043109A (ko) |
CN (1) | CN114208184A (ko) |
BR (1) | BR112022002687A2 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20240024335A (ko) | 2018-11-22 | 2024-02-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브 블록 기반 인터 예측을 위한 조정 방법 |
CN114762330A (zh) | 2019-09-22 | 2022-07-15 | 北京字节跳动网络技术有限公司 | 视频的子图片编码和解码 |
US11317093B2 (en) * | 2019-09-24 | 2022-04-26 | Tencent America LLC | Method for reference picture resampling with offset in video bitstream |
WO2021187603A1 (ja) * | 2020-03-19 | 2021-09-23 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、画像処理装置、符号化方法、復号方法、画像処理方法、ビットストリーム送信装置、および、非一時的記憶媒体 |
US20230362403A1 (en) * | 2022-05-04 | 2023-11-09 | Mediatek Inc. | Methods and Apparatuses of Sharing Preload Region for Affine Prediction or Motion Compensation |
Family Cites Families (152)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040001546A1 (en) | 2002-06-03 | 2004-01-01 | Alexandros Tourapis | Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation |
JP2007503775A (ja) | 2003-08-26 | 2007-02-22 | トムソン ライセンシング | ハイブリッド・イントラ・インター符号化ブロックを符号化する方法及び装置 |
GB0500174D0 (en) * | 2005-01-06 | 2005-02-16 | Kokaram Anil | Method for estimating motion and occlusion |
JP4178480B2 (ja) | 2006-06-14 | 2008-11-12 | ソニー株式会社 | 画像処理装置、画像処理方法、撮像装置および撮像方法 |
US8675738B2 (en) | 2008-08-06 | 2014-03-18 | Mediatek Inc. | Video decoding method without using additional buffers for storing scaled frames and system thereof |
TWI387317B (zh) | 2008-12-11 | 2013-02-21 | Novatek Microelectronics Corp | 產生重新取樣參考畫面之裝置及其方法與影像解碼系統 |
CN101877785A (zh) | 2009-04-29 | 2010-11-03 | 祝志怡 | 一种基于混合预测的视频编码方法 |
US9654792B2 (en) | 2009-07-03 | 2017-05-16 | Intel Corporation | Methods and systems for motion vector derivation at a video decoder |
CN108462874B (zh) | 2010-04-09 | 2022-06-07 | 三菱电机株式会社 | 运动图像编码装置以及运动图像解码装置 |
CN103281527B (zh) | 2010-04-15 | 2015-12-23 | 华为技术有限公司 | 图像编解码方法及相关装置 |
US9172968B2 (en) | 2010-07-09 | 2015-10-27 | Qualcomm Incorporated | Video coding using directional transforms |
US9124898B2 (en) | 2010-07-12 | 2015-09-01 | Mediatek Inc. | Method and apparatus of temporal motion vector prediction |
US8780973B2 (en) | 2010-08-13 | 2014-07-15 | Texas Instruments Incorporated | Limiting the maximum size of an encoded video picture using sub-picture based rate control |
JP2013545372A (ja) | 2010-10-28 | 2013-12-19 | エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュート | 映像情報符号化方法及び復号化方法 |
CN107071464A (zh) | 2011-01-19 | 2017-08-18 | 寰发股份有限公司 | 为当前块的运动矢量导出运动矢量预测子的方法及装置 |
CN107566841B (zh) | 2011-02-09 | 2020-07-07 | Lg 电子株式会社 | 一种图像解码装置和图像编码装置 |
GB2488815C (en) | 2011-03-09 | 2018-03-28 | Canon Kk | Video decoding |
US9143795B2 (en) | 2011-04-11 | 2015-09-22 | Texas Instruments Incorporated | Parallel motion estimation in video coding |
US10123053B2 (en) | 2011-05-23 | 2018-11-06 | Texas Instruments Incorporated | Acceleration of bypass binary symbol processing in video coding |
EP3223523A1 (en) | 2011-06-24 | 2017-09-27 | HFI Innovation Inc. | Method and apparatus for removing redundancy in motion vector predictors |
EP2745513B1 (en) | 2011-08-19 | 2020-03-11 | Telefonaktiebolaget LM Ericsson (publ) | Motion vector processing |
US9451252B2 (en) | 2012-01-14 | 2016-09-20 | Qualcomm Incorporated | Coding parameter sets and NAL unit headers for video coding |
US9503720B2 (en) | 2012-03-16 | 2016-11-22 | Qualcomm Incorporated | Motion vector coding and bi-prediction in HEVC and its extensions |
US9420286B2 (en) | 2012-06-15 | 2016-08-16 | Qualcomm Incorporated | Temporal motion vector prediction in HEVC and its extensions |
US20140003504A1 (en) | 2012-07-02 | 2014-01-02 | Nokia Corporation | Apparatus, a Method and a Computer Program for Video Coding and Decoding |
CN104704850A (zh) | 2012-10-09 | 2015-06-10 | 思科技术公司 | 对位流中的图像格式转换的在先解码的图像的输出管理 |
WO2014107853A1 (en) | 2013-01-09 | 2014-07-17 | Mediatek Singapore Pte. Ltd. | Methods for disparity vector derivation |
US9596448B2 (en) | 2013-03-18 | 2017-03-14 | Qualcomm Incorporated | Simplifications on disparity vector derivation and motion vector prediction in 3D video coding |
US9491460B2 (en) | 2013-03-29 | 2016-11-08 | Qualcomm Incorporated | Bandwidth reduction for video coding prediction |
CN109982094A (zh) | 2013-04-02 | 2019-07-05 | Vid拓展公司 | 针对可伸缩视频编码的增强型时间运动向量预测 |
GB2512829B (en) | 2013-04-05 | 2015-05-27 | Canon Kk | Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme |
WO2014166109A1 (en) | 2013-04-12 | 2014-10-16 | Mediatek Singapore Pte. Ltd. | Methods for disparity vector derivation |
US9813723B2 (en) | 2013-05-03 | 2017-11-07 | Qualcomm Incorporated | Conditionally invoking a resampling process in SHVC |
US9509999B2 (en) | 2013-06-11 | 2016-11-29 | Qualcomm Incorporated | Inter-layer prediction types in multi-layer video coding |
WO2015003383A1 (en) | 2013-07-12 | 2015-01-15 | Mediatek Singapore Pte. Ltd. | Methods for inter-view motion prediction |
US9628795B2 (en) | 2013-07-17 | 2017-04-18 | Qualcomm Incorporated | Block identification using disparity vector in video coding |
US10244253B2 (en) | 2013-09-13 | 2019-03-26 | Qualcomm Incorporated | Video coding techniques using asymmetric motion partitioning |
US9906813B2 (en) | 2013-10-08 | 2018-02-27 | Hfi Innovation Inc. | Method of view synthesis prediction in 3D video coding |
WO2015082763A1 (en) | 2013-12-02 | 2015-06-11 | Nokia Technologies Oy | Video encoding and decoding |
WO2015085575A1 (en) | 2013-12-13 | 2015-06-18 | Mediatek Singapore Pte. Ltd. | Methods for background residual prediction |
CN104768015B (zh) | 2014-01-02 | 2018-10-26 | 寰发股份有限公司 | 视频编码方法及装置 |
WO2015109598A1 (en) | 2014-01-27 | 2015-07-30 | Mediatek Singapore Pte. Ltd. | Methods for motion parameter hole filling |
US10432928B2 (en) | 2014-03-21 | 2019-10-01 | Qualcomm Incorporated | Using a current picture as a reference for video coding |
EP3158734A1 (en) | 2014-06-19 | 2017-04-26 | Microsoft Technology Licensing, LLC | Unified intra block copy and inter prediction modes |
US20150373350A1 (en) | 2014-06-20 | 2015-12-24 | Qualcomm Incorporated | Temporal motion vector prediction (tmvp) indication in multi-layer codecs |
CN104079944B (zh) * | 2014-06-30 | 2017-12-01 | 华为技术有限公司 | 视频编码的运动矢量列表构建方法和系统 |
WO2016008157A1 (en) | 2014-07-18 | 2016-01-21 | Mediatek Singapore Pte. Ltd. | Methods for motion compensation using high order motion model |
US10412387B2 (en) | 2014-08-22 | 2019-09-10 | Qualcomm Incorporated | Unified intra-block copy and inter-prediction |
CN114554199B (zh) * | 2014-09-30 | 2023-11-10 | 寰发股份有限公司 | 用于视频编码的自适应运动向量分辨率的方法 |
WO2016119104A1 (en) | 2015-01-26 | 2016-08-04 | Mediatek Inc. | Motion vector regularization |
US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
US9854237B2 (en) | 2014-10-14 | 2017-12-26 | Qualcomm Incorporated | AMVP and merge candidate list derivation for intra BC and inter prediction unification |
WO2016072775A1 (ko) | 2014-11-06 | 2016-05-12 | 삼성전자 주식회사 | 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
KR20170084251A (ko) * | 2014-11-20 | 2017-07-19 | 에이치에프아이 이노베이션 인크. | 모션 벡터 및 블록 벡터 해상도 제어의 방법 |
EP3241352B1 (en) | 2014-12-31 | 2021-11-24 | Nokia Technologies Oy | Inter-layer prediction for scalable video coding and decoding |
US10230980B2 (en) | 2015-01-26 | 2019-03-12 | Qualcomm Incorporated | Overlapped motion compensation for video coding |
US11477477B2 (en) | 2015-01-26 | 2022-10-18 | Qualcomm Incorporated | Sub-prediction unit based advanced temporal motion vector prediction |
US10070130B2 (en) | 2015-01-30 | 2018-09-04 | Qualcomm Incorporated | Flexible partitioning of prediction units |
US10057574B2 (en) | 2015-02-11 | 2018-08-21 | Qualcomm Incorporated | Coding tree unit (CTU) level adaptive loop filter (ALF) |
US10200711B2 (en) | 2015-03-27 | 2019-02-05 | Qualcomm Incorporated | Motion vector derivation in video coding |
WO2016165069A1 (en) | 2015-04-14 | 2016-10-20 | Mediatek Singapore Pte. Ltd. | Advanced temporal motion vector prediction in video coding |
WO2016175550A1 (ko) * | 2015-04-27 | 2016-11-03 | 엘지전자 주식회사 | 비디오 신호의 처리 방법 및 이를 위한 장치 |
US20160337662A1 (en) | 2015-05-11 | 2016-11-17 | Qualcomm Incorporated | Storage and signaling resolutions of motion vectors |
KR20180006915A (ko) | 2015-05-12 | 2018-01-19 | 삼성전자주식회사 | 인트라 예측을 수행하는 영상 복호화 방법 및 그 장치 및 인트라 예측을 수행하는 영상 부호화 방법 및 그 장치 |
US10271064B2 (en) | 2015-06-11 | 2019-04-23 | Qualcomm Incorporated | Sub-prediction unit motion vector prediction using spatial and/or temporal motion information |
WO2017008263A1 (en) | 2015-07-15 | 2017-01-19 | Mediatek Singapore Pte. Ltd. | Conditional binary tree block partitioning structure |
KR102644185B1 (ko) | 2015-09-30 | 2024-03-06 | 엘지전자 주식회사 | 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치 |
US10819987B2 (en) | 2015-11-12 | 2020-10-27 | Lg Electronics Inc. | Method and apparatus for coefficient induced intra prediction in image coding system |
WO2017118411A1 (en) | 2016-01-07 | 2017-07-13 | Mediatek Inc. | Method and apparatus for affine inter prediction for video coding system |
US9955186B2 (en) | 2016-01-11 | 2018-04-24 | Qualcomm Incorporated | Block size decision for video coding |
US10469841B2 (en) | 2016-01-29 | 2019-11-05 | Google Llc | Motion vector prediction using prior frame residual |
US10368083B2 (en) | 2016-02-15 | 2019-07-30 | Qualcomm Incorporated | Picture order count based motion vector pruning |
WO2017143467A1 (en) | 2016-02-22 | 2017-08-31 | Mediatek Singapore Pte. Ltd. | Localized luma mode prediction inheritance for chroma coding |
WO2017147765A1 (en) | 2016-03-01 | 2017-09-08 | Mediatek Inc. | Methods for affine motion compensation |
US10623774B2 (en) | 2016-03-22 | 2020-04-14 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
US10834419B2 (en) | 2016-04-13 | 2020-11-10 | Qualcomm Incorporated | Conformance constraint for collocated reference index in video coding |
CN105976395B (zh) | 2016-04-27 | 2018-11-09 | 宁波大学 | 一种基于稀疏表示的视频目标跟踪方法 |
US10560718B2 (en) * | 2016-05-13 | 2020-02-11 | Qualcomm Incorporated | Merge candidates for motion vector prediction for video coding |
WO2017195554A1 (ja) | 2016-05-13 | 2017-11-16 | シャープ株式会社 | 予測画像生成装置、動画像復号装置、および動画像符号化装置。 |
US10560712B2 (en) | 2016-05-16 | 2020-02-11 | Qualcomm Incorporated | Affine motion prediction for video coding |
WO2017209328A1 (ko) | 2016-06-03 | 2017-12-07 | 엘지전자 주식회사 | 영상 코딩 시스템에서 인트라 예측 방법 및 장치 |
CN109479141B (zh) | 2016-07-12 | 2023-07-14 | 韩国电子通信研究院 | 图像编码/解码方法和用于所述方法的记录介质 |
CN116506596A (zh) | 2016-08-03 | 2023-07-28 | 株式会社Kt | 视频解码方法、视频编码方法和视频数据的传送方法 |
US11638027B2 (en) | 2016-08-08 | 2023-04-25 | Hfi Innovation, Inc. | Pattern-based motion vector derivation for video coding |
CN116567221A (zh) | 2016-08-11 | 2023-08-08 | Lx 半导体科技有限公司 | 图像编码/解码方法以及图像数据的发送方法 |
US10609423B2 (en) | 2016-09-07 | 2020-03-31 | Qualcomm Incorporated | Tree-type coding for video coding |
US10812791B2 (en) | 2016-09-16 | 2020-10-20 | Qualcomm Incorporated | Offset vector identification of temporal motion vector predictor |
US10778999B2 (en) | 2016-09-30 | 2020-09-15 | Qualcomm Incorporated | Frame rate up-conversion coding mode with affine motion model |
CN116847068A (zh) | 2016-10-04 | 2023-10-03 | 株式会社Kt | 用于处理视频信号的方法和装置 |
CN117201815A (zh) | 2016-10-04 | 2023-12-08 | 英迪股份有限公司 | 图像解码方法、图像编码方法以及发送比特流的方法 |
JP2019535202A (ja) | 2016-10-06 | 2019-12-05 | エルジー エレクトロニクス インコーポレイティド | インター予測モードベースの画像処理方法及びそのための装置 |
EP3547687A4 (en) | 2016-11-28 | 2020-07-15 | Electronics and Telecommunications Research Institute | IMAGE ENCODING / DECODING METHOD AND DEVICE AND RECORDING MEDIUM WITH STORED BIT CURRENT |
WO2018099269A1 (en) | 2016-11-29 | 2018-06-07 | Mediatek Inc. | Method and apparatus of merge mode derivation for video coding |
US10681370B2 (en) | 2016-12-29 | 2020-06-09 | Qualcomm Incorporated | Motion vector generation for affine motion model for video coding |
US11394976B2 (en) | 2017-01-03 | 2022-07-19 | Lg Electronics Inc. | Inter-prediction method and apparatus in image coding system |
US10931969B2 (en) | 2017-01-04 | 2021-02-23 | Qualcomm Incorporated | Motion vector reconstructions for bi-directional optical flow (BIO) |
US10542280B2 (en) | 2017-01-09 | 2020-01-21 | QUALCOMM Incorpated | Encoding optimization with illumination compensation and integer motion vector restriction |
US20180199057A1 (en) | 2017-01-12 | 2018-07-12 | Mediatek Inc. | Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding |
US10701390B2 (en) | 2017-03-14 | 2020-06-30 | Qualcomm Incorporated | Affine motion information derivation |
US11277635B2 (en) | 2017-03-17 | 2022-03-15 | Vid Scale, Inc. | Predictive coding for 360-degree video based on geometry padding |
US10708591B2 (en) | 2017-03-20 | 2020-07-07 | Qualcomm Incorporated | Enhanced deblocking filtering design in video coding |
US10582209B2 (en) | 2017-03-30 | 2020-03-03 | Mediatek Inc. | Sub-prediction unit temporal motion vector prediction (sub-PU TMVP) for video coding |
US20180310017A1 (en) | 2017-04-21 | 2018-10-25 | Mediatek Inc. | Sub-prediction unit temporal motion vector prediction (sub-pu tmvp) for video coding |
US10742975B2 (en) | 2017-05-09 | 2020-08-11 | Futurewei Technologies, Inc. | Intra-prediction with multiple reference lines |
US10523934B2 (en) | 2017-05-31 | 2019-12-31 | Mediatek Inc. | Split based motion vector operation reduction |
WO2018226015A1 (ko) | 2017-06-09 | 2018-12-13 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
US10602180B2 (en) | 2017-06-13 | 2020-03-24 | Qualcomm Incorporated | Motion vector prediction |
GB2563943B (en) | 2017-06-30 | 2021-02-24 | Canon Kk | Method and apparatus for encoding or decoding video data in FRUC mode with reduced memory accesses |
KR102653715B1 (ko) | 2017-07-03 | 2024-04-01 | 브이아이디 스케일, 인크. | 양방향 광학 흐름에 기반한 모션 보상 예측 |
CN116866561A (zh) | 2017-09-29 | 2023-10-10 | Lx 半导体科技有限公司 | 图像编码/解码方法、存储介质及图像数据的传输方法 |
KR102595689B1 (ko) * | 2017-09-29 | 2023-10-30 | 인텔렉추얼디스커버리 주식회사 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
RU2741507C1 (ru) | 2017-10-09 | 2021-01-26 | Нокиа Текнолоджиз Ой | Устройство и способ для кодирования и декодирования видео |
CN116866590A (zh) | 2017-10-20 | 2023-10-10 | 株式会社Kt | 视频信号处理方法及装置 |
WO2019089933A1 (en) * | 2017-11-01 | 2019-05-09 | Vid Scale, Inc. | Sub-block motion derivation and decoder-side motion vector refinement for merge mode |
US10931963B2 (en) | 2017-12-07 | 2021-02-23 | Tencent America LLC | Method and apparatus for video coding |
CN109996080B (zh) * | 2017-12-31 | 2023-01-06 | 华为技术有限公司 | 图像的预测方法、装置及编解码器 |
CN111567043B (zh) | 2018-01-11 | 2023-03-28 | 高通股份有限公司 | 对视频数据进行译码的方法、装置和计算机可读存储介质 |
US11172229B2 (en) | 2018-01-12 | 2021-11-09 | Qualcomm Incorporated | Affine motion compensation with low bandwidth |
CN111630855B (zh) | 2018-01-16 | 2024-06-21 | Vid拓展公司 | 基于局部照明补偿的运动补偿双向预测 |
CN111656783B (zh) * | 2018-01-25 | 2024-03-08 | 三星电子株式会社 | 使用基于子块的运动补偿进行视频信号处理的方法和装置 |
CN108347616B (zh) | 2018-03-09 | 2020-02-14 | 中南大学 | 一种基于可选时域运动矢量预测的深度预测方法及装置 |
US20190306502A1 (en) | 2018-04-02 | 2019-10-03 | Qualcomm Incorporated | System and method for improved adaptive loop filtering |
WO2019204234A1 (en) * | 2018-04-15 | 2019-10-24 | Arris Enterprises Llc | Unequal weight planar motion vector derivation |
CN112055964B (zh) * | 2018-04-30 | 2022-06-07 | 寰发股份有限公司 | 用于视频编解码中的独立编码树的语法交错方法和装置 |
WO2019229683A1 (en) | 2018-05-31 | 2019-12-05 | Beijing Bytedance Network Technology Co., Ltd. | Concept of interweaved prediction |
WO2019234612A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Partition tree with four sub-blocks symmetric or asymmetric |
WO2019234673A1 (en) | 2018-06-07 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Chroma dmvr |
TWI729422B (zh) | 2018-06-21 | 2021-06-01 | 大陸商北京字節跳動網絡技術有限公司 | 色彩分量間的子區塊移動向量繼承 |
CN110636314B (zh) | 2018-06-21 | 2022-09-27 | 北京字节跳动网络技术有限公司 | 改进的边界分割 |
CN110636298B (zh) | 2018-06-21 | 2022-09-13 | 北京字节跳动网络技术有限公司 | 对于Merge仿射模式和非Merge仿射模式的统一约束 |
KR102606778B1 (ko) * | 2018-06-28 | 2023-11-29 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 모션 벡터 리파인먼트 및 모션 보상을 위한 메모리 액세스 윈도우 및 패딩 |
US10863193B2 (en) * | 2018-06-29 | 2020-12-08 | Qualcomm Incorporated | Buffer restriction during motion vector prediction for video coding |
CN110662063B (zh) | 2018-06-29 | 2020-12-15 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置和计算机可读存储介质 |
KR20210016054A (ko) * | 2018-06-30 | 2021-02-10 | 김기백 | 영상 부호화/복호화 방법 및 장치 |
EP3804327A1 (en) | 2018-07-01 | 2021-04-14 | Beijing Bytedance Network Technology Co. Ltd. | Efficient affine merge motion vector derivation |
WO2020016741A1 (en) | 2018-07-15 | 2020-01-23 | Beijing Bytedance Network Technology Co., Ltd. | Cross-component ipm derivation |
US10897617B2 (en) * | 2018-07-24 | 2021-01-19 | Qualcomm Incorporated | Rounding of motion vectors for adaptive motion vector difference resolution and increased motion vector storage precision in video coding |
US10958934B2 (en) | 2018-07-27 | 2021-03-23 | Tencent America LLC | History-based affine merge and motion vector prediction |
HUE060426T2 (hu) | 2018-09-10 | 2023-02-28 | Lg Electronics Inc | Kép kódolás affin mozgás predikció alapján affin MVP jelölt lista használatával |
GB2579763B (en) | 2018-09-21 | 2021-06-09 | Canon Kk | Video coding and decoding |
GB201815443D0 (en) | 2018-09-21 | 2018-11-07 | Canon Kk | Video coding and decoding |
EP3864850A1 (en) | 2018-10-10 | 2021-08-18 | InterDigital VC Holdings, Inc. | Affine mode signaling in video encoding and decoding |
WO2020084553A1 (en) | 2018-10-24 | 2020-04-30 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate derivation based on multiple information in sub-block motion vector prediction |
PT3852370T (pt) | 2018-10-29 | 2024-02-29 | Huawei Tech Co Ltd | Métolo e aparelho de predição de imagens de vídeo |
EP4307678A3 (en) | 2018-11-06 | 2024-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Side information signaling for inter prediction with geometric partitioning |
KR20240024335A (ko) | 2018-11-22 | 2024-02-23 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 서브 블록 기반 인터 예측을 위한 조정 방법 |
US11032574B2 (en) * | 2018-12-31 | 2021-06-08 | Tencent America LLC | Method and apparatus for video coding |
US10742972B1 (en) * | 2019-03-08 | 2020-08-11 | Tencent America LLC | Merge list construction in triangular prediction |
US11233988B2 (en) | 2019-05-17 | 2022-01-25 | Qualcomm Incorporated | Reference picture resampling and inter-coding tools for video coding |
US11140402B2 (en) | 2019-09-20 | 2021-10-05 | Tencent America LLC | Signaling of reference picture resampling with constant window size indication in video bitstream |
CN114762330A (zh) | 2019-09-22 | 2022-07-15 | 北京字节跳动网络技术有限公司 | 视频的子图片编码和解码 |
US11477471B2 (en) | 2020-05-20 | 2022-10-18 | Tencent America LLC | Techniques for signaling combination of reference picture resampling and spatial scalability |
-
2020
- 2020-08-13 KR KR1020227001812A patent/KR20220043109A/ko not_active Application Discontinuation
- 2020-08-13 EP EP20852949.5A patent/EP3997877A4/en active Pending
- 2020-08-13 JP JP2022508597A patent/JP7481430B2/ja active Active
- 2020-08-13 CN CN202080056882.7A patent/CN114208184A/zh active Pending
- 2020-08-13 BR BR112022002687A patent/BR112022002687A2/pt unknown
-
2021
- 2021-12-17 US US17/554,294 patent/US11871025B2/en active Active
-
2023
- 2023-12-20 JP JP2023214836A patent/JP2024037992A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP7481430B2 (ja) | 2024-05-10 |
US11871025B2 (en) | 2024-01-09 |
EP3997877A4 (en) | 2023-05-24 |
US20220109868A1 (en) | 2022-04-07 |
EP3997877A1 (en) | 2022-05-18 |
JP2024037992A (ja) | 2024-03-19 |
CN114208184A (zh) | 2022-03-18 |
JP2022544260A (ja) | 2022-10-17 |
BR112022002687A2 (pt) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102660160B1 (ko) | 서브 블록 기반 인터 예측을 위한 조정 방법 | |
CN114467308B (zh) | 视频处理中的参考图片重采样 | |
US11871025B2 (en) | Motion precision in sub-block based inter prediction | |
KR20220009951A (ko) | 어파인 모드를 위한 적응적 모션 벡터 차이 해상도 | |
CN113261292B (zh) | 基于子块的帧间预测中默认运动候选的构造方法 | |
WO2021027862A1 (en) | Motion precision in sub-block based inter prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal |