KR102747568B1 - Intercoding by size - Google Patents
Intercoding by size Download PDFInfo
- Publication number
- KR102747568B1 KR102747568B1 KR1020217027315A KR20217027315A KR102747568B1 KR 102747568 B1 KR102747568 B1 KR 102747568B1 KR 1020217027315 A KR1020217027315 A KR 1020217027315A KR 20217027315 A KR20217027315 A KR 20217027315A KR 102747568 B1 KR102747568 B1 KR 102747568B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- current block
- flag
- mode
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 claims abstract description 420
- 238000003672 processing method Methods 0.000 claims abstract description 156
- 238000006243 chemical reaction Methods 0.000 claims abstract description 96
- 238000012545 processing Methods 0.000 claims abstract description 67
- 230000002457 bidirectional effect Effects 0.000 claims description 152
- 230000015654 memory Effects 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 11
- 230000033001 locomotion Effects 0.000 description 454
- 239000013598 vector Substances 0.000 description 299
- 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 211
- 241000023320 Luma <angiosperm> Species 0.000 description 160
- 230000008569 process Effects 0.000 description 159
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 154
- 230000009466 transformation Effects 0.000 description 59
- 230000002123 temporal effect Effects 0.000 description 40
- 239000000523 sample Substances 0.000 description 39
- 230000011664 signaling Effects 0.000 description 26
- 238000010276 construction Methods 0.000 description 15
- 230000003287 optical effect Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000013138 pruning Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000009795 derivation Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 241000723655 Cowpea mosaic virus Species 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000006837 decompression Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000001914 filtration Methods 0.000 description 4
- 230000006698 induction Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 239000013074 reference sample Substances 0.000 description 3
- BHMLFPOTZYRDKA-IRXDYDNUSA-N (2s)-2-[(s)-(2-iodophenoxy)-phenylmethyl]morpholine Chemical compound IC1=CC=CC=C1O[C@@H](C=1C=CC=CC=1)[C@H]1OCCNC1 BHMLFPOTZYRDKA-IRXDYDNUSA-N 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000007689 inspection Methods 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
- 238000000844 transformation Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/184—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 bits, e.g. of the compressed video stream
-
- 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/186—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 a colour or a chrominance component
-
- 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
-
- 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/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비디오 처리 기술을 구현하기 위한 기술이 설명된다. 하나의 예시적인 구현에서, 비디오 처리 방법은 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해, 현재 블록의 크기와 관련된 조건이 만족되는지 여부에 부분적으로 기초하여 현재 블록의 코딩 정보가 비트스트림 표현에서 표현되는 방식을 결정하는 단계를 포함한다. 또한, 이 방법은 상기 결정에 기초하여 상기 변환을 수행하는 단계를 포함한다. Techniques for implementing video processing techniques are described. In one exemplary implementation, a video processing method includes a step of determining how coding information of a current block is represented in the bitstream representation, based in part on whether a condition related to a size of the current block is satisfied, for conversion between a current block of video and a bitstream representation of the video. The method also includes a step of performing the conversion based on the determination.
Description
관련 출원들에 대한 상호 참조Cross-reference to related applications
본 출원은 2019년 3월 6일에 출원된 국제 출원 번호 제PCT/CN2019/077179에 우선권과 혜택을 주장하는 2020년 3월 6일에 출원된 국제 출원 번호 PCT/CN2020/078108의 국내 단계이다. 앞서 언급된 출원들의 모든 개시내용은 본 출원의 개시 내용의 일부로서 본 명세서에서 원용에 의해 통합된다.This application is the national phase of International Application No. PCT/CN2020/078108, filed March 6, 2020, which claims priority and the benefit of International Application No. PCT/CN2019/077179, filed March 6, 2019. The entire disclosure of the aforementioned applications is incorporated herein by reference as part of the disclosure of the present application.
본 특허 문헌은 이미지 및 비디오 코딩 및 디코딩에 관한 것이다.This patent document relates to image and video coding and decoding.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크에서 가장 넓은 대역폭을 사용한다. 비디오를 수신하고 디스플레이할 수 있는 접속된 사용자 디바이스의 개수가 증가함에 따라서, 디지털 비디오 사용을 위한 대역폭 수요는 계속하여 증가할 것으로 기대된다.Digital video uses the most bandwidth on the Internet and other digital communication networks. As the number of connected user devices capable of receiving and displaying video increases, the demand for bandwidth for digital video use is expected to continue to increase.
본 명세서는 인코딩 및 디코딩 동작 도중에 비디오 인코더 및 디코더에 의해 사용될 수 있는 다양한 비디오 처리 기법을 개시한다.This specification discloses various video processing techniques that can be used by video encoders and decoders during encoding and decoding operations.
하나의 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 어파인 코딩 툴을 사용한 비디오의 현재 블록 및 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 서브-블록의 제 1 움직임 벡터 및 현재 블록에 대한 대표 움직임 벡터인 제 2 움직임 벡터가 크기 제약을 준수한다고 결정하는 단계를 포함한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In one exemplary embodiment, a video processing method is disclosed. The method comprises the step of determining that a first motion vector of a sub-block of a current block and a second motion vector, which is a representative motion vector for the current block, comply with a size constraint for a transformation between a current block of a video and a bitstream representation of the video using an affine coding tool. The method further comprises the step of performing the transformation based on the result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 여섯 개의 파라미터를 포함하는 어파인 모델(affine model)을 결정하는 단계를 포함한다. 어파인 모델은 현재 블록의 이웃하는 블록의 어파인 코딩 정보로부터 승계된다(inherited). 또한, 이러한 방법은 이러한 어파인 모델에 기반하여 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises a step of determining an affine model including six parameters for a transformation between a current block of video and a bitstream representation of the video. The affine model is inherited from affine coding information of a neighboring block of the current block. The method further comprises a step of performing a transformation based on the affine model.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 블록 및 비디오의 비트스트림 표현 사이의 변환을 위하여, 양방향 예측 코딩 기법(bi-prediction coding technique)이 상기 블록에 적용가능한지 여부를, 폭 W 및 높이 H를 가지는 블록의 크기에 기반하여 결정하는 단계를 포함하고, W 및 H는 양의 정수이다. 또한, 이러한 방법은 결정 결과에 따라서 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining whether a bi-prediction coding technique is applicable to the block for conversion between a block of video and a bitstream representation of the video, based on a size of a block having a width W and a height H, where W and H are positive integers. The method also includes a step of performing a conversion according to a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 트리 분할 프로세스가 상기 블록에 적용가능한지 여부를, 상기 코딩 트리 분할 프로세스에 따라서 상기 블록의 자식 코딩 유닛인 서브-블록의 크기에 기반하여 결정하는 단계를 포함한다. 상기 서브-블록은 폭 W 및 높이 H를 가지고, W 및 H는 양의 정수이다. 또한, 이러한 방법은 결정 결과에 따라서 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining whether a coding tree partitioning process is applicable to the block for conversion between a block of video and a bitstream representation of the video, based on a size of a sub-block, which is a child coding unit of the block, according to the coding tree partitioning process. The sub-block has a width W and a height H, where W and H are positive integers. The method also includes a step of performing a conversion according to a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 유닛 레벨 가중치가 있는 양방향 예측(bi-prediction with coding unit level weight; BCW) 코딩 모드의 인덱스가 현재 블록의 위치에 대한 규칙에 기반하여 유도되는지 여부를 결정하는 단계를 포함한다. BCW 코딩 모드에서는, 다수의 가중치를 포함하는 가중치 세트가 현재 블록의 양방향 예측 값을 생성하기 위하여 사용된다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining whether an index of a bi-prediction with coding unit level weight (BCW) coding mode is derived based on a rule for a position of a current block for conversion between a current block of video and a bitstream representation of the video. In the BCW coding mode, a weight set including a plurality of weights is used to generate a bi-prediction value of the current block. The method also includes a step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 인터 및 인트라 통합 예측(combined inter and intra prediction; CIIP) 코딩 기법을 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 인트라-예측 모드를 이웃하는 블록의 인트라-예측 모드와 독립적으로 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes determining an intra-prediction mode of a current block independently of an intra-prediction mode of a neighboring block, for conversion between a current block of video coded using a combined inter and intra prediction (CIIP) coding technique and a bitstream representation of the video. The CIIP coding technique uses an intermedia inter prediction value and an intermedia intra prediction value to derive a final prediction value of the current block. The method also includes performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 인터 및 인트라 통합 예측(CIIP) 코딩 기법을 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 인트라-예측 모드를 제 1 이웃하는 블록의 제 1 인트라-예측 모드 및 제 2 이웃하는 블록의 제 2 인트라-예측 모드에 따라서 결정하는 단계를 포함한다. 제 1 이웃하는 블록은 인트라-예측 코딩 기법을 사용하여 코딩되고, 제 2 이웃하는 블록은 CIIP 코딩 기법을 사용하여 코딩된다. 제 1 인트라-예측 모드에는 제 2 인트라-예측 모드와 상이한 우선순위가 주어진다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining an intra-prediction mode of a current block of video coded using an inter and intra integrated prediction (CIIP) coding technique and a bitstream representation of the video, based on a first intra-prediction mode of a first neighboring block and a second intra-prediction mode of a second neighboring block, for conversion between the current block of video and a bitstream representation of the video. The first neighboring block is coded using the intra-prediction coding technique, and the second neighboring block is coded using the CIIP coding technique. The first intra-prediction mode is given a different priority than the second intra-prediction mode. The CIIP coding technique uses an intermedia inter-prediction value and an intermedia intra-prediction value to derive a final prediction value of the current block. The method further comprises the step of performing the conversion based on the determination result.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 인터 및 인트라 통합 예측(CIIP) 프로세스가 현재 블록의 색성분에 적용가능한지 여부를 현재 블록의 크기에 기반하여 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining, based on a size of the current block, whether an inter and intra integrated prediction (CIIP) process is applicable to color components of the current block for conversion between a current block of video and a bitstream representation of the video. The CIIP coding technique uses intermedia inter prediction values and intermedia intra prediction values to derive a final prediction value of the current block. The method also includes a step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 인터 및 인트라 통합 예측(CIIP) 코딩 기법이 현재 블록에 적용되어야 하는지 여부를 현재 블록의 특성에 기반하여 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining, based on characteristics of a current block, whether an inter and intra integrated prediction (CIIP) coding technique should be applied to the current block for conversion between a current block of video and a bitstream representation of the video. The CIIP coding technique uses intermedia inter prediction values and intermedia intra prediction values to derive a final prediction value of the current block. The method also includes a step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 툴이 현재 블록에 대하여 디스에이블되어야 하는지 여부를 현재 블록이 인터 및 인트라 통합 예측(CIIP) 코딩 기법으로 코딩되는지 여부에 기반하여 결정하는 단계를 포함한다. 이러한 코딩 툴은: 양방향성 광학적 흐름(Bi-Directional Optical Flow; BDOF), 중첩된 블록 움직임 보상(Overlapped Block Motion Compensation; OBMC), 또는 디코더-측 움직임 벡터 정제 프로세스(decoder-side motion vector refinement process; DMVR) 중 적어도 하나를 포함한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises a step of determining whether a coding tool should be disabled for a current block for conversion between a current block of video and a bitstream representation of the video, based on whether the current block is coded with an Inter and Intra Integrated Prediction (CIIP) coding technique. The coding tool comprises at least one of: Bi-Directional Optical Flow (BDOF), Overlapped Block Motion Compensation (OBMC), or a decoder-side motion vector refinement process (DMVR). The method further comprises a step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 공간적 움직임 예측을 위한 움직임 벡터를 위해 사용되는 제 1 정밀도 P1 및 시간적 움직임 예측을 위한 움직임 벡터를 위해 사용되는 제 2 정밀도 P2를 결정하는 단계를 포함한다. P1 및/또는 P2는 분수이고, P1 및 P2 중 어느 것도 상기 비트스트림 표현 내에서 시그널링되지 않는다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a first precision P1 used for a motion vector for spatial motion prediction and a second precision P2 used for a motion vector for temporal motion prediction, for conversion between a block of video and a bitstream representation of the video. P1 and/or P2 are fractions, and neither of P1 nor P2 is signaled in the bitstream representation. The method further comprises the step of performing the conversion based on the result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 움직임 벡터 (MVx, MVy)를 정밀도 (Px, Py)로 결정하는 단계를 포함한다. Px는 MVx와 연관되고, Py는 MVy와 연관된다. MVx 및 MVy는 N 개의 비트를 각각 가지는 정수로서 저장되고, MinX ≤ MVx ≤ MaxX이며, MinY ≤ MVy ≤ MaxY이고, MinX, MaxX, MinY, 및 MaxY는 실수 숫자이다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining motion vectors (MVx, MVy) with precisions (Px, Py) for conversion between a block of video and a bitstream representation of the video. Px is associated with MVx, and Py is associated with MVy. MVx and MVy are stored as integers each having N bits, and MinX ≤ MVx ≤ MaxX, MinY ≤ MVy ≤ MaxY, and MinX, MaxX, MinY, and MaxY are real numbers. The method also includes a step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 공유된 병합 목록이 현재 블록에 적용가능한지 여부를 현재 블록의 코딩 모드에 따라서 결정하는 단계를 포함한다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method includes a step of determining whether a shared merge list is applicable to the current block, based on a coding mode of the current block, for conversion between a current block of video and a bitstream representation of the video. The method also includes a step of performing the conversion based on the result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, W x H 크기를 가지는 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 이러한 변환 도중의 움직임 보상을 위한 차원 (W + N - 1) x (H + N - 1)의 제 2 블록을 결정하는 단계를 포함한다. 제 2 블록은 차원 (W + N - 1- PW) x (H + N - 1 - PH)의 레퍼런스 블록에 기반하여 결정된다. N은 필터 크기를 나타내고, W, H, N, PW 및 PH는 음이 아닌 정수이다. PW 및 PH 양자 모두는 0 과 같지 않다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a second block of dimensions (W + N - 1) x (H + N - 1) for motion compensation during a transformation between a current block of video having a size of W x H and a bitstream representation of the video. The second block is determined based on a reference block of dimensions (W + N - 1 - PW) x (H + N - 1 - PH). N represents a filter size, and W, H, N, PW and PH are non-negative integers. Neither of PW and PH are equal to 0. The method further comprises the step of performing the transformation based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, W x H 크기를 가지는 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 이러한 변환 도중의 움직임 보상을 위한 차원 (W + N - 1) x (H + N - 1)의 제 2 블록을 결정하는 단계를 포함한다. W와 H는 음이 아닌 정수이고, N은 음이 아닌 정수이며 필터 크기에 기반한다. 변환이 일어나는 도중에, 정제된 움직임 벡터가 원본 움직임 벡터에 대한 움직임 벡터 정제 동작에 따른 멀티-포인트 검색에 기반하여 결정되고, 레퍼런스 블록의 픽셀 길이의 경계(pixels long boundaries)가 하나 이상의 비-경계 픽셀을 반복시킴으로써 결정된다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a second block of dimensions (W + N - 1) x (H + N - 1) for motion compensation during the transformation between a current block of video having a size W x H and a bitstream representation of the video, wherein W and H are non-negative integers, and N is a non-negative integer and is based on a filter size. During the transformation, a refined motion vector is determined based on a multi-point search according to a motion vector refinement operation with respect to an original motion vector, and pixels long boundaries of a reference block are determined by repeating one or more non-boundary pixels. The method further comprises the step of performing the transformation based on the determined result.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 인터-인트라 통합 예측(CIIP) 코딩 기법을 사용하여 코딩된 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 상기 블록 내의 소정 위치에서의 예측 값을 해당 위치에서의 인터 예측 값과 인트라 예측 값의 가중합에 기반하여 결정하는 단계를 포함한다. 가중합은, 인터 예측 값 및 인트라 예측 값에 기반하여 획득된 최초의 합에 오프셋을 가산하는 것에 기반하여 얻어지고, 이러한 오프셋은 상기 가중합을 결정하기 위하여 수행되는 우측 천이 연산 이전에 가산된다. 또한, 이러한 방법은 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a prediction value at a given location within the block based on a weighted sum of inter prediction values and intra prediction values at the location, for conversion between a block of video coded using an inter-intra integrated prediction (CIIP) coding technique and a bitstream representation of the video. The weighted sum is obtained based on adding an offset to an initial sum obtained based on the inter prediction values and the intra prediction values, and the offset is added prior to a right shift operation performed to determine the weighted sum. The method further comprises the step of performing the conversion based on a result of the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해 현재 블록의 크기와 연관된 조건이 만족되었는지 여부에 부분적으로 기초하여 현재 블록의 코딩 정보가 비트스트림 표현에서 표현되는 방식을 결정하는 단계를 포함한다. 이 방법은 이 결정에 기반하여 변환을 수행하는 단계도 포함한다.In another exemplary aspect, a method of video processing is disclosed. The method includes a step of determining how coding information of a current block is represented in the bitstream representation, based in part on whether a condition associated with a size of the current block is satisfied for conversion between a current block of video and a bitstream representation of the video. The method also includes a step of performing the conversion based on this determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 비디오 블록과 비디오의 비트스트림 표현 간의 변환을 위해 변경된 움직임 벡터 세트를 결정하는 단계를 포함한다. 그리고 변경된 움직임 벡터 세트에 기반하여 변환을 수행하는 단계를 포함한다. 조건을 만족하는 현재 블록으로 인해 변경된 움직임 벡터 세트는 현재 블록과 연관된 움직임 벡터 세트의 변경된 버전이다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a set of modified motion vectors for transformation between a current video block of the video and a bitstream representation of the video. And the step of performing a transformation based on the set of modified motion vectors. The set of modified motion vectors due to a current block satisfying a condition is a modified version of the set of motion vectors associated with the current block.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해 블록 차원의 조건이 만족되는 경우 양 방향 움직임 벡터로부터 단 방향 움직임 벡터를 결정하는 단계를 포함한다. 단 방향 움직임 벡터는 이후 변환을 위해 머지 후보로서 사용된다. 또한, 이 방법은 이 결정에 기초하여 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the step of determining a unidirectional motion vector from a bidirectional motion vector if a block-wise condition is satisfied for transformation between a current block of video and a bitstream representation of the video. The unidirectional motion vector is then used as a merge candidate for transformation. The method further comprises the step of performing the transformation based on the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해 현재 블록의 차원에 기반하여 현재 블록의 움직임 후보가 단 방향 예측 후보로 제한된다고 결정하는 단계, 이 결정에 기초하여 변환을 수행하는 단계를 포함한다. In another exemplary aspect, a video processing method is disclosed. The method includes the steps of determining that motion candidates of a current block are limited to unidirectional prediction candidates based on a dimension of the current block for transforming between a current block of video and a bitstream representation of the video, and performing a transform based on the determination.
다른 예시적인 양태에서는, 비디오 처리 방법이 개시된다. 이러한 방법은, 어파인 코딩되는 현재 비디오 블록의 대표 움직임 벡터와 현재 비디오 블록의 서브-블록의 움직임 벡터 사이의 크기 제한 사항을 결정하는 단계 및 상기 크기 제한 사항을 사용하여, 현재 비디오 블록 또는 서브블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함한다.In another exemplary aspect, a video processing method is disclosed. The method comprises the steps of determining a size constraint between a representative motion vector of a current video block to be affine coded and a motion vector of a sub-block of the current video block, and performing a transformation between a bitstream representation of the current video block or sub-block and a pixel value using the size constraint.
다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 어파인 코딩된 현재 비디오 블록에 대하여 현재 비디오 블록의 하나 이상의 서브-블록을 결정하는 단계 - 각각의 서브-블록은 MxN 픽셀의 크기를 가지고, M과 N은 2 또는 4의 배수임 -, 상기 서브-블록의 움직임 벡터를 크기 제한 사항에 부합하게 하는(conforming) 단계, 및 트리거에 기반하여 조건부로, 상기 크기 제한 사항을 사용하여, 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method comprises the steps of determining one or more sub-blocks of a current video block for an affine coded current video block, each sub-block having a size of MxN pixels, where M and N are multiples of 2 or 4, conforming a motion vector of the sub-blocks to size constraints, and conditionally, based on a trigger, performing a transformation between a bitstream representation of the current video block and pixel values using the size constraints.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계, 및 결정 결과에 기반하여, 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을, 현재 비디오 블록에 대한 양방향 예측 인코딩 모드를 제외함으로써 수행하는 단계를 포함한다.In another exemplary embodiment, another video processing method is disclosed. The method includes the steps of determining that a current video block satisfies a size condition, and performing a conversion between a bitstream representation of the current video block and pixel values based on the determination result, by excluding a bidirectional prediction encoding mode for the current video block.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계, 및 결정 결과에 기반하여, 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고, 인터 예측 모드는 상기 크기 조건에 따라서 상기 비트스트림 표현 내에서 시그널링된다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of determining that a current video block satisfies a size condition, and performing a transformation between a bitstream representation of the current video block and pixel values based on the determination result, wherein an inter prediction mode is signaled in the bitstream representation according to the size condition.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계, 및 결정 결과에 기반하여, 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고, 상기 변환 도중에 병합 후보 목록을 생성하는 것은 상기 크기 조건에 의존한다.In another exemplary embodiment, another video processing method is disclosed. The method includes the steps of determining that a current video block satisfies a size condition, and performing a transformation between a bitstream representation of the current video block and pixel values based on the determination result, wherein generating a merge candidate list during the transformation depends on the size condition.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록의 자식 코딩 유닛이 크기 조건을 만족시킨다고 결정하는 단계, 및 결정 결과에 기반하여, 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고, 상기 자식 코딩 유닛을 생성하기 위하여 사용되는 코딩 트리 분할 프로세스는 상기 크기 조건에 의존한다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of determining that a child coding unit of a current video block satisfies a size condition, and performing a conversion between a bitstream representation of the current video block and a pixel value based on the determination result, wherein a coding tree splitting process used to generate the child coding unit is dependent on the size condition.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록에 대한 일반화된 양방향 예측(GBi) 프로세스에 대한 가중치 인덱스를 상기 현재 비디오 블록의 위치에 기반하여 결정하는 단계 및 상기 GBi 프로세스를 구현하도록, 상기 현재 비디오 블록과 그것의 비트스트림 표현 사이의 변환을 상기 가중치 인덱스를 사용하여 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of determining a weight index for a generalized bidirectional prediction (GBi) process for a current video block based on a position of the current video block, and performing a transformation between the current video block and its bitstream representation using the weight index to implement the GBi process.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록이 인트라-인터 예측(IIP) 코딩된 블록으로서 코딩된다고 결정하는 단계 및 상기 현재 비디오 블록과 그것의 비트스트림 표현 사이의 변환을, 상기 현재 비디오 블록의 인트라-예측 모드 또는 최고 가능성 모드(most probable mode; MPM)를 결정하기 위한 단순화 규칙(simplification rule)을 사용하여 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method comprises the steps of determining that a current video block is coded as an intra-inter prediction (IIP) coded block and performing a conversion between the current video block and its bitstream representation using a simplification rule to determine an intra-prediction mode or a most probable mode (MPM) of the current video block.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록이 단순화 기준을 만족시킨다고 결정하는 단계, 및 상기 현재 비디오 블록과 비트스트림 표현 사이의 변환을, 상기 변환을 위한 인터-인트라 예측 모드의 사용을 디스에이블함으로써 또는 상기 변환을 위해 사용되는 추가적인 코딩 툴을 디스에이블함으로써 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method comprises the steps of determining that a current video block satisfies a simplification criterion, and performing a transformation between the current video block and a bitstream representation by disabling the use of an inter-intra prediction mode for the transformation or by disabling an additional coding tool used for the transformation.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 움직임 벡터 기반 인코딩 프로세스를 사용하여 수행하는 단계를 포함하고, 여기에서 (a) 변환 프로세스 도중에 정밀도 P1이 공간적 움직임 예측 결과를 저장하기 위하여 사용되고, 정밀도 P2가 시간적 움직임 예측 결과를 저장하기 위하여 사용되며, P1 및 P2는 분수이고, 또는 (b) 정밀도 Px가 x-움직임 벡터를 저장하기 위하여 사용되고, 정밀도 Py가 y-움직임 벡터를 저장하기 위하여 사용되며, Px 및 Py는 분수이다.In another exemplary aspect, another video processing method is disclosed. The method comprises the step of performing a conversion between a current video block and a bitstream representation of the current video block using a motion vector based encoding process, wherein (a) during the conversion process, a precision P1 is used to store a spatial motion prediction result and a precision P2 is used to store a temporal motion prediction result, and P1 and P2 are fractions, or (b) a precision Px is used to store an x-motion vector and a precision Py is used to store a y-motion vector, and Px and Py are fractions.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록의 W2xH2 크기의 큰 서브-블록 내의 W1xH1 크기의 작은 서브-블록을, (W2 + N - 1 - PW) * (H2 + N - 1 - PH) 블록을 페치함으로써 보간하는 단계, 페치된 블록을 픽셀 패딩하는 단계, 픽셀 패딩된 블록에 경계 픽셀 반복(boundary pixel repeating)을 수행하고 상기 작은 서브-블록의 픽셀 값을 획득하는 단계 - W1, W2, H1, H2, 및 PW 및 PH는 정수임 -, 및 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 상기 작은 서브-블록의 보간된 픽셀 값을 사용하여 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of interpolating a small sub-block of size W1xH1 within a larger sub-block of size W2xH2 of a current video block by fetching (W2 + N - 1 - PW) * (H2 + N - 1 - PH) blocks, pixel padding the fetched block, performing boundary pixel repeating on the pixel padded block and obtaining pixel values of the small sub-block, wherein W1, W2, H1, H2, and PW and PH are integers, and performing a conversion between the current video block and a bitstream representation of the current video block using the interpolated pixel values of the small sub-block.
다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, WxH 차원의 현재 비디오 블록 및 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 도중에, 움직임 보상 동작 중에 (W + N - 1 - PW) * (W + N - 1 - PH) 레퍼런스 픽셀을 페치하고 레퍼런스 픽셀을 페치된 레퍼런스 픽셀 밖에 패딩함으로써 상기 움직임 보상 동작을 수행하는 단계, 및 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 상기 움직임 보상 동작의 결과를 사용하여 수행하는 단계를 포함하고, W, H, N, PW 및 PH는 정수이다.In another exemplary aspect, another video processing method is disclosed. The method comprises: performing a motion compensation operation by fetching (W + N - 1 - PW) * (W + N - 1 - PH) reference pixels and padding the reference pixels outside the fetched reference pixels during a conversion between a current video block of dimension WxH and a bitstream representation of the current video block; and performing the conversion between the current video block and the bitstream representation of the current video block using a result of the motion compensation operation, wherein W, H, N, PW and PH are integers.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록의 크기에 기반하여, 상기 현재 비디오 블록의 양방향 예측 또는 단방향 예측이 허용되지 않는다고 결정하는 단계, 및 결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 양방향 예측 또는 단방향 예측 모드를 디스에이블함으로써 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of determining, based on a size of a current video block, that bidirectional prediction or unidirectional prediction of the current video block is not allowed, and, based on a result of the determination, performing a conversion between a bitstream representation of the current video block and a pixel value by disabling the bidirectional prediction or unidirectional prediction mode.
또 다른 예시적인 양태에서는, 다른 비디오 처리 방법이 개시된다. 이러한 방법은, 현재 비디오 블록의 크기에 기반하여, 상기 현재 비디오 블록의 양방향 예측 또는 단방향 예측이 허용되지 않는다고 결정하는 단계, 및 결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 양방향 예측 또는 단방향 예측 모드를 디스에이블함으로써 수행하는 단계를 포함한다.In another exemplary aspect, another video processing method is disclosed. The method includes the steps of determining, based on a size of a current video block, that bidirectional prediction or unidirectional prediction of the current video block is not allowed, and, based on a result of the determination, performing a conversion between a bitstream representation of the current video block and a pixel value by disabling the bidirectional prediction or unidirectional prediction mode.
또 다른 예시적인 양태에서는, 비디오 인코더 장치가 개시된다. 비디오 인코더는 위에서 설명된 방법을 구현하도록 구성되는 프로세서를 포함한다.In another exemplary aspect, a video encoder device is disclosed. The video encoder includes a processor configured to implement the method described above.
또 다른 예시적인 양태에서는, 비디오 인코더 장치가 개시된다. 비디오 인코더는 위에서 설명된 방법을 구현하도록 구성되는 프로세서를 포함한다.In another exemplary aspect, a video encoder device is disclosed. The video encoder includes a processor configured to implement the method described above.
또 다른 예시적인 양태에서는, 코드가 저장된 컴퓨터-판독가능 매체가 개시된다. 이러한 코드는 본 명세서에서 설명되는 방법 중 하나를 프로세서-실행가능 코드로서 구현한다.In another exemplary aspect, a computer-readable medium having code stored thereon is disclosed, the code implementing one of the methods described herein as processor-executable code.
이러한 특징과 다른 특징들이 본 명세서 전체에서 설명된다.These and other features are described throughout this specification.
도 1은 서브-블록에 기반한 예측의 일 예를 보여준다.
도 2a 는 4-파라미터 어파인 모델(affine model)을 도시한다.
도 2b 는 6-파라미터 어파인 모델을 도시한다.
도 3 은 서브-블록마다의 어파인 움직임 벡터 필드의 일 예를 도시한다.
도 4a 는 AF_MERGE를 위한 후보의 일 예를 도시한다.
도 4b 는 AF_MERGE를 위한 후보의 다른 예를 도시한다.
도 5 는 어파인 병합 모드를 위한 후보 위치를 도시한다.
도 6 은 어파인 모드의 코딩 유닛(CU)에 대한 제약된 서브-블록 움직임 벡터의 일 예를 도시한다.
도 7a 는 하나의 CU를 두 개의 삼각 예측 유닛으로 분할하는 135 도 파티션의 일 예를 도시한다.
도 7b 는 하나의 CU를 두 개의 삼각 예측 유닛으로 분할하는 45 도 분할 패턴의 일 예를 도시한다.
도 8 은 이웃하는 블록의 위치의 예들을 보여준다.
도 9 는 보간 이전의 레퍼런스 블록의 반복 경계 픽셀(repeat boundary pixel)의 일 예를 도시한다.
도 10 은 코딩 트리 유닛(CTU) 및 CTU (영역) 라인의 일 예를 도시한다. 음영처리된 CTU (영역들)는 하나의 CUT (영역) 라인 내에 있고, 음영처리되지 않은 CTU (영역들)는 다른 CUT (영역) 라인 내에 있다.
도 11은 본 명세서에서 설명되는 비디오 디코더 또는 비디오 인코더 장치를 구현하기 위한 하드웨어 플랫폼의 일 예의 블록도이다.
도 12는 예시적인 비디오 처리 방법에 대한 흐름도이다.
도 13 은 DMVR 내의 목록 0 및 목록 1 사이에서 미러링되는 움직임 차이 벡터(motion vector difference) MVD(0,1)의 일 예를 도시한다.
도 14 는 일 회의 반복에서 점검될 수 있는 예시적인 MV들을 보여준다.
도 15 는 계산을 위해 패딩된 요구되는 레퍼런스 샘플 및 경계를 보여준다.
도 16 은 개시된 기법이 구현될 수 있는 하나의 예시적인 비디오 처리 시스템의 블록도이다.
도 17 은 본 발명에 따르는 비디오 처리를 위한 방법의 흐름도 표현이다.
도 18 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 19 는 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 20 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 21은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 22는 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 23 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 24 는 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 25 는 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 26 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 27 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 28 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 29 는 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 30 은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 31은 본 발명에 따르는 비디오 처리를 위한 다른 방법의 흐름도 표현이다.
도 32는 본 발명에 따르는 비디오 처리를 위한 또 다른 방법의 흐름도 표현이다.
도 33은 본 발명에 따르는 비디오 처리를 위한 또 다른 방법의 흐름도 표현이다.
도 34는 본 발명에 따르는 비디오 처리를 위한 또 다른 방법의 흐름도 표현이다.
도 35는 본 발명에 따르는 비디오 처리를 위한 또 다른 방법의 흐름도 표현이다.
도 36은 본 발명에 따르는 비디오 처리를 위한 또 다른 방법의 흐름도 표현이다.Figure 1 shows an example of sub-block based prediction.
Figure 2a illustrates a four-parameter affine model.
Figure 2b illustrates the six-parameter affine model.
Figure 3 shows an example of an affine motion vector field for each sub-block.
Figure 4a shows an example of a candidate for AF_MERGE.
Figure 4b shows another example of a candidate for AF_MERGE.
Figure 5 illustrates candidate locations for affine merge mode.
Figure 6 illustrates an example of constrained sub-block motion vectors for a coding unit (CU) in affine mode.
Figure 7a illustrates an example of a 135 degree partition that divides one CU into two triangular prediction units.
Figure 7b illustrates an example of a 45 degree splitting pattern that splits one CU into two triangular prediction units.
Figure 8 shows examples of the locations of neighboring blocks.
Figure 9 illustrates an example of repeat boundary pixels of a reference block before interpolation.
Figure 10 illustrates an example of coding tree units (CTUs) and CTU (region) lines. The shaded CTUs (regions) are within one CUT (region) line, and the unshaded CTUs (regions) are within another CUT (region) line.
FIG. 11 is a block diagram of an example of a hardware platform for implementing a video decoder or video encoder device described herein.
Figure 12 is a flowchart of an exemplary video processing method.
Figure 13 shows an example of a motion vector difference MVD(0,1) mirrored between List 0 and List 1 in DMVR.
Figure 14 shows example MVs that can be checked in a single iteration.
Figure 15 shows the required reference sample and boundaries padded for calculation.
FIG. 16 is a block diagram of an exemplary video processing system in which the disclosed technique may be implemented.
Figure 17 is a flowchart representation of a method for video processing according to the present invention.
FIG. 18 is a flowchart representation of another method for video processing according to the present invention.
FIG. 19 is a flowchart representation of another method for video processing according to the present invention.
FIG. 20 is a flowchart representation of another method for video processing according to the present invention.
FIG. 21 is a flowchart representation of another method for video processing according to the present invention.
FIG. 22 is a flowchart representation of another method for video processing according to the present invention.
FIG. 23 is a flowchart representation of another method for video processing according to the present invention.
FIG. 24 is a flowchart representation of another method for video processing according to the present invention.
FIG. 25 is a flowchart representation of another method for video processing according to the present invention.
FIG. 26 is a flowchart representation of another method for video processing according to the present invention.
FIG. 27 is a flowchart representation of another method for video processing according to the present invention.
FIG. 28 is a flowchart representation of another method for video processing according to the present invention.
FIG. 29 is a flowchart representation of another method for video processing according to the present invention.
FIG. 30 is a flowchart representation of another method for video processing according to the present invention.
FIG. 31 is a flowchart representation of another method for video processing according to the present invention.
FIG. 32 is a flowchart representation of another method for video processing according to the present invention.
FIG. 33 is a flowchart representation of another method for video processing according to the present invention.
FIG. 34 is a flowchart representation of another method for video processing according to the present invention.
FIG. 35 is a flowchart representation of another method for video processing according to the present invention.
FIG. 36 is a flowchart representation of another method for video processing according to the present invention.
섹션의 제목은 본 명세서에서 쉽게 이해되도록 하기 위해서 사용된 것이고, 각각의 섹션에서 개시되는 기법 및 실시형태들이 오직 해당 섹션에만 적용가능하다고 한정하는 것이 아니다.The section titles are used throughout this specification for ease of understanding and are not intended to limit the techniques and embodiments disclosed in each section to only that section.
1. 요약1. Summary
본 특허 문서는 비디오/이미지 코딩 기술에 관한 것이다. 특히, 이러한 기술은 비디오/이미지 코딩 분야의 여러 코딩 툴의 대역폭 및 라인 버퍼를 감소시키는 것에 관한 것이다. 이러한 기술은 HEVC, 또는 표준(다기능 비디오 코딩(Versatile Video Coding))과 같은 현존하는 비디오 코딩 표준이 완성되도록 적용될 수 있다. 또한, 이러한 기술은 장래의 비디오/이미지 코딩 표준 또는 비디오/이미지 코덱에도 적용가능할 수 있다.This patent document relates to video/image coding technology. In particular, the technology relates to reducing the bandwidth and line buffer of various coding tools in the field of video/image coding. The technology can be applied to complete existing video coding standards such as HEVC or standard (Versatile Video Coding). In addition, the technology can be applied to future video/image coding standards or video/image codecs.
2. 배경 기술2. Background Technology
비디오 코딩 표준은 주로 잘 알려져 있는 ITU-T 및 ISO/IEC 표준의 개발을 통해서 진화되어 왔다. ITU-T는 H.261 및 H.263을 생성했고, ISO/IEC는 MPEG-1 및 MPEG-4 비쥬얼(Visual)을 생성했으며, 이러한 두 조직들은 H.262/MPEG-2 비디오 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준을 공동으로 생성했다. H.262 이후에, 비디오 코딩 표준은 시간적 예측에 추가하여 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조에 기반하고 있다. HEVC를 넘어서는 장래의 비디오 코딩 기술을 탐색하기 위하여, JVET(Joint Video Exploration Team)이 VCEG 및 MPEG에 의해 공동으로 2015 년에 설립되었다. 그 이후에, 많은 새로운 방법들이 JVET에 의해 채용되고, JEM(Joint Exploration Model )이라고 불리는 레퍼런스 소프트웨어에 추가되어 왔다. 2018년 4 월에, JVET(Joint Video Expert Team)이 VCEG (Q6/16) 및 ISO/IEC JTC1 SC29/WG11 (MPEG) 사이에서 생성되어, HEVC와 비교할 때 50%의 비트레이트 감소를 목표로 하는 VVC 표준을 위해 노력하고 있다. Video coding standards have evolved primarily through the development of the well-known ITU-T and ISO/IEC standards. ITU-T produced H.261 and H.263, ISO/IEC produced MPEG-1 and MPEG-4 Visual, and these two organizations jointly produced the H.262/MPEG-2 Video and H.264/MPEG-4 Advanced Video Coding (AVC) and H.265/HEVC standards. Since H.262, video coding standards have been based on hybrid video coding architectures in which transform coding is utilized in addition to temporal prediction. To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been adopted by the JVET and added to the reference software called the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) was formed between VCEG (Q6/16) and ISO/IEC JTC1 SC29/WG11 (MPEG) to work on a VVC standard that aims to provide a 50% bitrate reduction compared to HEVC.
2.1 HEVC/VVC에서의 인터 예측2.1 Inter prediction in HEVC/VVC
보간 필터Interpolation filter
HEVC에서는, 루마 서브-샘플이 8-탭 보간 필터에 의해 생성되고 크로마 서브-샘플이 4-탭 보간 필터에 의해 생성된다.In HEVC, luma sub-samples are generated by an 8-tap interpolation filter and chroma sub-samples are generated by a 4-tap interpolation filter.
필터들은 두 차원에서 분리될 수 있다. 샘플들은 수평으로 필터링된 후 수직으로 필터링된다.Filters can be separated in two dimensions: samples are filtered horizontally and then vertically.
2.2 서브-블록에 기반한 예측 기술2.2 Prediction techniques based on sub-blocks
HEVC Annex I (3D-HEVC)에 의해서 서브-블록에 기반한 예측이 우선 비디오 코딩 표준에 도입된다. 서브-블록에 기반한 예측을 통해서, 코딩 유닛(Coding Unit; CU) 또는 예측 유닛(Prediction Unit; PU)과 같은 블록이 중첩되지 않는 여러 서브-블록들로 분할된다. 상이한 서브-블록들에는, 레퍼런스 인덱스 또는 움직임 벡터(Motion Vector; MV)와 같은 상이한 움직임 정보가 할당될 수 있고, 움직임 보상(Motion Compensation; MC)이 각각의 서브-블록에 대해서 개별적으로 수행된다. 도 1은 서브-블록에 기반한 예측의 개념을 시연한다.Sub-block based prediction is first introduced into the video coding standard by HEVC Annex I (3D-HEVC). With sub-block based prediction, a block, such as a coding unit (CU) or a prediction unit (PU), is divided into multiple non-overlapping sub-blocks. Different motion information, such as a reference index or a motion vector (MV), can be assigned to different sub-blocks, and motion compensation (MC) is performed individually for each sub-block. Figure 1 demonstrates the concept of sub-block based prediction.
HEVC를 넘어서는 장래의 비디오 코딩 기술을 탐색하기 위하여, JVET(Joint Video Exploration Team)이 VCEG 및 MPEG에 의해 공동으로 2015 년에 설립되었다. 그 이후에, 많은 새로운 방법들이 JVET에 의해 채용되고, JEM(Joint Exploration Model)이라고 불리는 레퍼런스 소프트웨어에 추가되어 왔다.To explore future video coding technologies beyond HEVC, the Joint Video Exploration Team (JVET) was jointly established by VCEG and MPEG in 2015. Since then, many new methods have been adopted by JVET and added to the reference software called the Joint Exploration Model (JEM).
JEM에서는, 어파인 예측(affine prediction), 대안적 시간적 움직임 벡터 예측(Alternative temporal motion vector prediction; ATMVP), 공간적-시간적 움직임 벡터 예측(spatial-temporal motion vector prediction; STMVP), 양방향성 광학적 흐름(Bi-directional Optical flow; BIO) 및 프레임-레이트 상향 변환(Frame-Rate Up Conversion; FRUC)과 같은 서브-블록에 기반한 예측이 여러 코딩 툴에 채택된다. 어파인 예측은 VVC에도 채택되어 왔다.In JEM, sub-block based predictions such as affine prediction, alternative temporal motion vector prediction (ATMVP), spatial-temporal motion vector prediction (STMVP), bi-directional optical flow (BIO), and Frame-Rate Up Conversion (FRUC) are adopted in several coding tools. Affine prediction has also been adopted in VVC.
2.3 어파인 예측(Affine Prediction)2.3 Affine Prediction
HEVC에서는, 움직임 보상 예측(motion compensation prediction; MCP)을 위해서 병진 움직임 모델만이 적용된다. 하지만 실세계에는 많은 종류의 움직임, 예를 들어 줌인/아웃, 회전, 시점 움직임 및 다른 비정규적 움직임이 존재한다. VVC에서는, 단순화된 어파인 변환 움직임 보상 예측이 적용된다. 도 2a 및 도 2b 에 도시된 바와 같이, 블록의 어파인 움직임 필드는 두 개(4-파라미터 어파인 모델에서) 또는 세 개(6-파라미터 어파인 모델에서)의 제어 포인트 움직임 벡터에 의해 기술된다.In HEVC, only the translational motion model is applied for motion compensation prediction (MCP). However, there are many kinds of motions in the real world, such as zoom-in/out, rotation, viewpoint motion, and other irregular motions. In VVC, a simplified affine transform motion compensation prediction is applied. As shown in Fig. 2a and Fig. 2b, the affine motion field of a block is described by two (in a 4-parameter affine model) or three (in a 6-parameter affine model) control point motion vectors.
어떤 블록의 움직임 벡터 필드(motion vector field; MVF)는 다음 수학식들에 의해서 기술되는데, 4-파라미터 어파인 모델(4-파라미터가 a, b, e 및 f로 규정됨)은 수학식 1에서 규정되고, 6-파라미터 어파인 모델(4-파라미터는 변수 a, b, c, d, e 및 f로 규정됨)은 수학식 2에서 각각 규정된다:The motion vector field (MVF) of a block is described by the following mathematical equations, where the 4-parameter affine model (where the 4 parameters are defined by the variables a, b, e, and f ) is defined in Equation 1, and the 6-parameter affine model (where the 4 parameters are defined by the variables a, b, c, d, e, and f ) is defined in Equation 2, respectively:
여기에서, (mv h 0 , mv h 0 )는 상단-좌측 코너 제어 포인트의 움직임 벡터이고, (mv h 1 , mv h 1 )은 상단-우측 코너 제어 포인트의 움직임 벡터이며, (mv h 2 , mv h 2 )는 하단-좌측 코너 제어 포인트의 움직임 벡터이고, 세 개의 움직임 벡터 모두는 제어 포인트 움직임 벡터(control point motion vector; CPMV)라고 불리며, (x, y)는 현재 블록 내의 상단-좌측 샘플에 상대적인 대표 포인트의 좌표를 나타낸다. CP 움직임 벡터는 시그널링될 수 있고(어파인 AMVP 모드에서와 같이), 또는 즉시 유도될 수도 있다(어파인 병합 모드(affine merge mode)에서와 같이). w 및 h는 현재 블록의 폭 및 높이이다. 실제로는, 제산(division)은 반올림 연산이 있는 우측-천이에 의해 구현된다. VTM에서는, 대표 포인트가 서브-블록의 중심 위치로서 규정되고, 예를 들어 현재 블록 내의 상단-좌측 샘플에 상대적인 서브-블록의 좌측-상단 코너의 좌표가 (xs, ys)이면, 대표 포인트의 좌표는 (xs+2, ys+2)가 되도록 규정된다.Here, ( mv h 0 , mv h 0 ) is the motion vector of the top-left corner control point, ( mv h 1 , mv h 1 ) is the motion vector of the top-right corner control point, and ( mv h 2 , mv h 2 ) is the motion vector of the bottom-left corner control point, and together, three motion vectors are called control point motion vectors (CPMV), where (x, y) represent the coordinates of the representative point relative to the top-left sample within the current block. The CP motion vector can be signaled (as in affine AMVP mode), or derived on the fly (as in affine merge mode). w and h are the width and height of the current block. In practice, the division is implemented by a right-shift with rounding operation. In VTM, the representative point is defined as the center position of the sub-block, and for example, if the coordinates of the upper-left corner of the sub-block relative to the upper-left sample in the current block are (xs, ys), then the coordinates of the representative point are defined to be (xs+2, ys+2).
제산이 없는 디자인에서는, 수학식 1 및 수학식 2가 다음과 같이 구현된다In a design without a saddle, Equations 1 and 2 are implemented as follows:
(1)에 표시된 4-파라미터 어파인 모델의 경우 다음이 되고:For the 4-parameter affine model shown in (1), it becomes:
(2)에 표시된 6-파라미터 어파인의 경우 다음이 된다:For the 6-parameter affine shown in (2), it becomes:
마지막으로, 다음이 성립하고,Finally, the following holds,
여기에서 S는 계산 정밀도를 나타낸다. 예를 들어, VVC에서는 S=7이다. VVC에서는, (xs, ys)에 상단-좌측 샘플이 있는 서브-블록에 대한 MC에서 사용되는 MV는 x=xs+2 및 y=ys+2 의 관계를 가지고 수학식 6)에 의해 계산된다.Here, S represents the computational precision. For example, in VVC, S = 7. In VVC, the MV used in MC for the sub-block with the top-left sample at (xs, ys) is calculated by Equation 6) with the relationships x = xs + 2 and y = ys + 2.
각각의 4×4 서브-블록의 움직임 벡터를 유도하기 위하여, 도 3 에 도시된 바와 같은 각각의 서브-블록의 중심 샘플의 움직임 벡터는 수학식 1 또는 수학식 2에 의해 계산되고, 1/16의 분수 정확도로 반올림된다. 그러면, 움직임 보상 보간 필터가 적용되어 유도된 움직임 벡터가 있는 각각의 서브-블록의 예측을 생성한다.To derive the motion vector of each 4×4 sub-block, the motion vector of the center sample of each sub-block, as illustrated in Fig. 3, is computed by Equation 1 or Equation 2 and rounded to a fractional accuracy of 1/16. Then, a motion compensation interpolation filter is applied to generate a prediction of each sub-block with the derived motion vector.
어파인 모델은 공간적으로 이웃하는 어파인-코딩된 블록, 예컨대 도 4a 에 도시된 바와 같은 좌측, 상부, 상부 우측, 좌측 하단 및 상부 좌측의 이웃하는 블록들로부터 승계될 수 있다. 예를 들어, 만일 도 4a 의 좌측 하단 이웃 블록 A가 어파인 모드에서 도 4b 에서 A0 로 표시된 바와 같이 코딩되면, 블록 A를 포함하는 이웃하는 CU/PU의 상단 좌측 코너, 상부 우측 코너 및 좌측 하단 코너의 제어 포인트(CP) 움직임 벡터들(mv 0 N, mv 1 N 및 mv 2 N)이 페치된다. 그리고, 현재 CU/PU의 상단 좌측 코너/상단 우측/하단 좌측 움직임 벡터(mv 0 C, mv 1 C 및 mv 2 C)(6-파라미터 어파인 모델에 대해서만 사용됨)가 mv 0 N, mv 1 N 및 mv 2 N에 기반하여 계산된다. VTM-2.0 에서는, 현재 블록이 어파인 코딩된다면, 서브-블록(예를 들어, VTM에서의 4×4 블록) LT가 mv0를 저장하고, RT가 mv1을 저장한다는 것에 주의해야 한다. 현재 블록이 6-파라미터 어파인 모델로 코딩된다면, LB가 mv2를 저장한다; 그렇지 않으면(4-파라미터 어파인 모델의 경우), LB가 mv2'을 저장한다. 다른 서브-블록들은 MC를 위해 사용된 MV를 저장한다.An affine model can be inherited from spatially neighboring affine-coded blocks, for example, the left, top, top right, bottom left and top left neighboring blocks as illustrated in Fig. 4a. For example, if the bottom left neighboring block A in Fig. 4a is coded in affine mode as indicated by A0 in Fig. 4b, the control point (CP) motion vectors ( mv 0 N , mv 1 N and mv 2 N ) of the top left corner, top right corner and bottom left corner of the neighboring CU/PU containing block A are fetched. Then, the top left corner/top right/bottom left motion vectors ( mv 0 C , mv 1 C and mv 2 C ) of the current CU / PU ( used only for 6-parameter affine model) are computed based on mv 0 N , mv 1 N and mv 2 N . In VTM-2.0, it should be noted that if the current block is affine coded, the sub-block (e.g., a 4×4 block in VTM) LT stores mv0 and RT stores mv1. If the current block is coded with a 6-parameter affine model, the LB stores mv2; otherwise (in the case of a 4-parameter affine model), the LB stores mv2'. The other sub-blocks store the MVs used for MC.
CU가, 예를 들어 AF_MERGE 모드에서 어파인 병합 모드로 코딩된다면, 이것은 어파인 모드로 코딩된 제 1 블록을 유효한 이웃 복원 블록들로부터 취한다. 그리고, 후보 블록에 대한 선택 순서는 도 4a 에 도시된 바와 같이 좌측, 상부, 상부 우측, 좌측 하단으로부터 상부 좌측까지의 순서이다.If CU is coded in affine merge mode, for example, in AF_MERGE mode, it takes the first block coded in affine mode from valid neighboring reconstructed blocks. And, the selection order for candidate blocks is from left, top, top right, bottom left to top left as shown in Fig. 4a.
현재 블록의 유도된 CP MV들(mv 0 C, mv 1 C 및 mv 2 C)은 어파인 병합 모드에서 CP MV들로서 사용될 수 있다. 또는, 이들은 VVC에서의 어파인 인터 모드에 대해서는 MVP로서 사용될 수 있다. 병합 모드의 경우, 현재 블록이 어파인 모드로 코딩된다면, 현재 블록의 CP MV들을 유도한 후에, 현재 블록은 다수의 서브-블록들로 더욱 분할될 수 있고, 각각의 블록이 자신의 움직임 정보를 현재 블록의 유도된 CP MV들에 기반하여 유도할 것이라는 것에 주의해야 한다.The derived CP MVs ( mv 0 C , mv 1 C and mv 2 C ) of the current block can be used as CP MVs in the affine merge mode. Alternatively, they can be used as MVPs for the affine inter mode in VVC. For the merge mode, if the current block is coded in the affine mode, it should be noted that after deriving the CP MVs of the current block, the current block can be further divided into multiple sub-blocks, and each block will derive its motion information based on the derived CP MVs of the current block.
2.4 JVET에서의 예시적인 실시형태2.4 Exemplary implementations in JVET
오직 하나의 어파인 공간적 이웃 블록만이 어떤 블록에 대한 어파인 움직임을 유도하도록 사용될 수 있는 VTM과 다름. 일부 실시형태들에서는, 어파인 후보들의 별개의 목록이 AF_MERGE 모드를 위하여 구성된다.Unlike VTM, where only one affine spatial neighboring block can be used to induce affine motion for a block. In some embodiments, a separate list of affine candidates is constructed for the AF_MERGE mode.
1) 승계된 어파인 후보들을 후보 목록에 삽입함1) Insert the inherited affine candidates into the candidate list.
승계된 어파인 후보란, 이러한 후보가 어파인 모드로 코딩된 유효한 이웃의 복원된 블록으로부터 유도된다는 것을 의미한다. 도 5 에 도시된 바와 같이, 이러한 후보 블록에 대한 스캔 순서는 A1, B1, B0, A0 및 B2의 순서이다. 어떤 블록(예를 들어, A1)이 선택되는 경우, 다음의 2-단계 프로시저가 적용된다:An inherited affine candidate means that the candidate is derived from a reconstructed block of a valid neighbor coded in affine mode. As illustrated in Fig. 5, the scan order for these candidate blocks is A 1 , B 1 , B 0 , A 0 , and B 2 . When a block (e.g., A 1 ) is selected, the following two-step procedure is applied:
1.a 우선, 해당 블록을 커버하는 CU의 세 개의 코너 움직임 벡터를 사용하여 현재 블록의 두 개/세 개의 제어 포인트를 유도한다.1.a First, derive two/three control points of the current block using three corner motion vectors of the CU covering the block.
1.b 현재 블록의 제어 포인트에 기반하여, 현재 블록 내의 각각의 서브-블록에 대한 서브-블록 움직임을 유도한다.1.b Based on the control points of the current block, derive sub-block movements for each sub-block within the current block.
2) 구성된 어파인 후보를 삽입함2) Insert the configured affine candidate
어파인 병합 후보 목록 내의 후보들의 개수가 MaxNumAffineCand보다 적으면, 구성된 어파인 후보들이 후보 목록 내에 삽입된다.If the number of candidates in the affine merge candidate list is less than MaxNumAffineCand , the constructed affine candidates are inserted into the candidate list.
구성된 어파인 후보 란, 이러한 후보가 각각의 제어 포인트의 이웃 움직임 정보를 조합함으로써 구성된다는 것을 의미한다.The constructed affine candidates mean that these candidates are constructed by combining the neighboring motion information of each control point.
제어 포인트들에 대한 움직임 정보는 처음에, 도 5 에 도시되는 규정된 공간적 이웃 및 시간적 이웃으로부터 유도된다. CPk(k=1, 2, 3, 4)는 k-번째 제어 포인트를 나타낸다. A0, A1, A2, B0, B1, B2 및 B3는 CPk (k=1, 2, 3)를 예측하기 위한 공간적 위치이고; T는 CP4를 예측하기 위한 시간적 위치이다.Motion information for control points is initially derived from the prescribed spatial and temporal neighborhoods, which are illustrated in Fig. 5. CPk (k=1, 2, 3, 4) represents the k-th control point. A 0 , A 1 , A 2 , B 0 , B 1 , B 2 , and B 3 are spatial locations for predicting CPk (k=1, 2, 3); T is a temporal location for predicting CP4.
CP1, CP2, CP3 및 CP4의 좌표는 각각 (0, 0), (W, 0), (H, 0) 및 (W, H)인데, 여기에서 W 및 H는 현재 블록의 폭 및 높이이다.The coordinates of CP1, CP2, CP3, and CP4 are (0, 0), (W, 0), (H, 0), and (W, H), respectively, where W and H are the width and height of the current block.
각각의 제어 포인트의 움직임 정보는 다음의 우선순위 순서에 따라서 획득된다:The movement information of each control point is obtained according to the following priority order:
2.a CP1의 경우, 점검 우선순위는 B2->B3->A2이다. B2는 이용가능한 경우에 사용된다. 그렇지 않으면, B2가 이용불가능하다면, B3가 사용된다. B2 및 B3 양자 모두가 이용불가능하면, A2가 사용된다. 세 개의 후보 모두가 이용불가능하면, CP1의 움직임 정보는 획득할 수 없다.2.a For CP1, the checking priority is B 2 -> B 3 -> A 2 . B 2 is used if it is available. Otherwise, if B 2 is unavailable, B 3 is used. If both B 2 and B 3 are unavailable, A 2 is used. If all three candidates are unavailable, the motion information of CP1 cannot be obtained.
2.b CP2의 경우, 점검 우선순위는 B1->B0이다;2.b For CP2, the check priority is B1->B0;
2.c CP3의 경우, 점검 우선순위는 A1->A0이다;2.c For CP3, the check priority is A1->A0;
2.d CP4의 경우, T가 사용된다.2.d For CP4, T is used.
둘째로, 제어 포인트들의 조합이 움직임 모델을 구성하기 위하여 사용된다.Second, a combination of control points is used to construct a motion model.
세 개의 제어 포인트들의 움직임 벡터는 6-파라미터 어파인 모델에서의 변환 파라미터를 계산하기 위하여 필요하다. 세 개의 제어 포인트는 다음 네 개의 조합 중 하나로부터 선택될 수 있다: ({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}). 예를 들어, Affine (CP1, CP2, CP3)로서 표시되는 6-파라미터 어파인 움직임 모델을 구성하기 위해서 CP1, CP2 및 CP3 제어 포인트들을 사용한다.The motion vectors of the three control points are required to compute the transformation parameters in the six-parameter affine model. The three control points can be selected from one of the following four combinations: ({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}. For example, the CP1, CP2 and CP3 control points are used to construct the six-parameter affine motion model, denoted as Affine (CP1, CP2, CP3).
두 개의 제어 포인트들의 움직임 벡터가 4-파라미터 어파인 모델에서의 변환 파라미터를 계산하기 위하여 필요하다. 두 개의 제어 포인트는 다음 여섯 개의 조합 중 하나로부터 선택될 수 있다: ({CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}). 예를 들어, Affine (CP1, CP2)로서 표시되는 4-파라미터 어파인 움직임 모델을 구성하기 위해서 CP1 및 CP2 제어 포인트들을 사용한다.Motion vectors of two control points are required to compute the transformation parameters in the four-parameter affine model. The two control points can be selected from one of the following six combinations: ({CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}. For example, CP1 and CP2 control points are used to construct a four-parameter affine motion model, denoted as Affine (CP1, CP2).
구성된 어파인 후보들의 조합이 다음 순서로 후보 목록 내에 삽입된다: {CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}, {CP2, CP3}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}The combinations of constructed affine candidates are inserted into the candidate list in the following order: {CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}, {CP2, CP3}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}
3) 제로 움직임 벡터를 삽입함3) Insert zero motion vector
어파인 병합 후보 목록 내의 후보들의 개수가 MaxNumAffineCand보다 적으면, 목록이 가득 찰 때까지 제로 움직임 벡터들이 후보 목록에 삽입된다.If the number of candidates in the affine merge candidate list is less than MaxNumAffineCand, zero motion vectors are inserted into the candidate list until the list is full.
2.5 어파인 병합 후보 목록2.5 List of Affine Merge Candidates
2.5.1 어파인 병합 모드2.5.1 Affine Merge Mode
VTM-2.0.1의 어파인 병합 모드에서는, 이용가능한 첫 번째 어파인 이웃만이 어파인 병합 모드의 움직임 정보를 유도하기 위하여 사용될 수 있다. 일부 실시형태들에서는, 어파인 병합 모드에 대한 후보 목록은, 유효한 어파인 이웃들을 검색하고 각각의 제어 포인트의 이웃 움직임 정보를 조합함으로써 구성된다.In the affine merge mode of VTM-2.0.1, only the first available affine neighbor can be used to derive the motion information of the affine merge mode. In some embodiments, the candidate list for the affine merge mode is constructed by searching for valid affine neighbors and combining the neighbor motion information of each control point.
어파인 병합 후보 목록은 다음 단계로서 구성된다:The list of affine merge candidates is constructed in the following steps:
1) 승계된 어파인 후보를 삽입함1) Insert the inherited affine candidate
승계된 어파인 후보란, 해당 후보가 자신의 유효한 이웃 어파인 코딩된 블록의 어파인 움직임 모델로부터 유도된다는 것을 의미한다. 도 5 에 도시된 바와 같이, 공통된 베이스에서 후보 위치에 대한 스캔 순서는 다음이다: A1, B1, B0, A0 및 B2.An inherited affine candidate means that the candidate is derived from the affine motion model of its valid neighboring affine coded block. As illustrated in Fig. 5, the scan order for candidate positions in a common base is as follows: A1, B1, B0, A0, and B2.
어떤 후보가 유도된 이후에, 동일한 후보가 목록 내에 삽입된 바 있는지 여부를 점검하기 위해서 전체 프루닝(pruning) 프로세스가 수행된다. 동일한 후보가 존재한다면, 유도된 후보는 버려진다.After a candidate is derived, a full pruning process is performed to check whether the same candidate has already been inserted into the list. If there is a same candidate, the derived candidate is discarded.
2) 구성된 어파인 후보를 삽입함2) Insert the configured affine candidate
어파인 병합 후보 목록 내의 후보들의 개수가 MaxNumAffineCand(이러한 기여도(contribution)에서는 5로 설정됨)보다 적으면, 구성된 어파인 후보들이 후보 목록 내에 삽입된다. 구성된 어파인 후보 란, 이러한 후보가 각각의 제어 포인트의 이웃 움직임 정보를 조합함으로써 구성된다는 것을 의미한다.If the number of candidates in the affine merge candidate list is less than MaxNumAffineCand (which is set to 5 in this contribution), the constructed affine candidates are inserted into the candidate list. The constructed affine candidates mean that these candidates are constructed by combining the neighboring motion information of each control point.
제어 포인트들에 대한 움직임 정보는 처음에, 규정된 공간적 이웃 및 시간적 이웃으로부터 유도된다. CPk(k=1, 2, 3, 4)는 k-번째 제어 포인트를 나타낸다. A0, A1, A2, B0, B1, B2 및 B3는 CPk(k=1, 2, 3)를 예측하기 위한 공간적 위치들이다; T는 CP4를 예측하기 위한 시간적 위치이다.Motion information for control points is initially derived from the prescribed spatial and temporal neighbors. CPk(k=1, 2, 3, 4) represents the k-th control point. A0, A1, A2, B0, B1, B2, and B3 are spatial locations for predicting CPk(k=1, 2, 3); T is a temporal location for predicting CP4.
CP1, CP2, CP3 및 CP4의 좌표는 각각 (0, 0), (W, 0), (H, 0) 및 (W, H)인데, 여기에서 W 및 H는 현재 블록의 폭 및 높이이다.The coordinates of CP1, CP2, CP3, and CP4 are (0, 0), (W, 0), (H, 0), and (W, H), respectively, where W and H are the width and height of the current block.
각각의 제어 포인트의 움직임 정보는 다음의 우선순위 순서에 따라서 획득된다:The movement information of each control point is obtained according to the following priority order:
CP1의 경우, 점검 우선순위는 B2->B3->A2이다. B2는 이용가능한 경우에 사용된다. 그렇지 않으면, B2가 이용불가능하다면, B3가 사용된다. B2 및 B3 양자 모두가 이용불가능하면, A2가 사용된다. 세 개의 후보 모두가 이용불가능하면, CP1의 움직임 정보는 획득할 수 없다.For CP1, the check priority is B2->B3->A2. B2 is used if it is available. Otherwise, if B2 is unavailable, B3 is used. If both B2 and B3 are unavailable, A2 is used. If all three candidates are unavailable, the movement information of CP1 cannot be obtained.
CP2의 경우, 점검 우선순위는 B1->B0이다.For CP2, the inspection priority is B1->B0.
CP3의 경우, 점검 우선순위는 A1->A0이다.For CP3, the inspection priority is A1->A0.
CP4의 경우, T가 사용된다.For CP4, T is used.
둘째로, 제어 포인트들의 조합이 어파인 병합 후보를 구성하기 위하여 사용된다.Second, a combination of control points is used to construct affine merge candidates.
세 개의 제어 포인트의 움직임 정보가 6-파라미터 어파인 후보를 구성하기 위하여 필요하다. 세 개의 제어 포인트는 다음 네 개의 조합 중 하나로부터 선택될 수 있다: ({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}). 조합들({CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4})은 상단-좌측, 상단-우측 및 하단-좌측 제어 포인트에 의해 표현되는 6-파라미터 움직임 모델로 변환될 것이다.Motion information of three control points is required to construct a 6-parameter affine candidate. The three control points can be selected from one of the following four combinations: ({CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}. The combinations ({CP1, CP2, CP3}, {CP2, CP3, CP4}, {CP1, CP3, CP4}) will be transformed into a 6-parameter motion model represented by the top-left, top-right and bottom-left control points.
두 개의 제어 포인트의 움직임 정보가 4-파라미터 어파인 후보를 구성하기 위하여 필요하다. 두 개의 제어 포인트는 다음 여섯 개의 조합 중 하나로부터 선택될 수 있다: ({CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}). 조합들({CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4})이 상단-좌측 및 상단-우측 제어 포인트들에 의해 표현되는 4-파라미터 움직임 모델로 변환될 것이다.Motion information of two control points is required to construct a 4-parameter affine candidate. The two control points can be selected from one of the following six combinations: ({CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}. The combinations ({CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, {CP3, CP4}) will be transformed into a 4-parameter motion model represented by the top-left and top-right control points.
구성된 어파인 후보들의 조합이 다음 순서로 후보 목록 내에 삽입된다:The combinations of the constructed affine candidates are inserted into the candidate list in the following order:
{CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}, {CP2, CP3}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}{CP1, CP2, CP3}, {CP1, CP2, CP4}, {CP1, CP3, CP4}, {CP2, CP3, CP4}, {CP1, CP2}, {CP1, CP3}, {CP2, CP3}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}
조합의 레퍼런스 목록 X의 경우(X는 0 또는 1임), 제어 포인트들 중에서 가장 높은 사용 비율을 가지는 레퍼런스 인덱스가 목록 X의 레퍼런스 인덱스로서 선택되고, 상이한 레퍼런스 픽쳐를 가리키는 움직임 벡터들이 스케일링될 것이다.For a reference list X of a combination (X is 0 or 1), the reference index with the highest usage ratio among the control points is selected as the reference index of the list X, and the motion vectors pointing to different reference pictures will be scaled.
어떤 후보가 유도된 이후에, 동일한 후보가 목록 내에 삽입된 바 있는지 여부를 점검하기 위해서 전체 프루닝(pruning) 프로세스가 수행된다. 동일한 후보가 존재한다면, 유도된 후보는 버려진다.After a candidate is derived, a full pruning process is performed to check whether the same candidate has already been inserted into the list. If there is a same candidate, the derived candidate is discarded.
3) 제로 움직임 벡터를 사용한 패딩3) Padding using zero motion vectors
어파인 병합 후보 목록 내의 후보들의 개수가 5보다 적으면, 제로 레퍼런스 인덱스를 가지는 제로 움직임 벡터들이 목록이 가득 찰 때까지 후보 목록에 삽입된다.If the number of candidates in the affine merge candidate list is less than 5, zero motion vectors with zero reference index are inserted into the candidate list until the list is full.
2.5.2 예시적인 어파인 병합 모드2.5.2 Example affine merge mode
일부 실시형태들에서는, 어파인 병합 모드는 다음과 같이 단순화될 수 있다:In some embodiments, the affine merge mode can be simplified as follows:
1) 승계된 어파인 후보에 대한 프루닝 프로세스는, VTM-2.0.1에서 유도된 어파인 후보들을 비교하는 대신에, 이웃하는 위치들을 커버하는 코딩 유닛들을 비교함으로써 단순화된다. 최대 2 개의 승계된 어파인 후보가 어파인 병합 목록 내에 삽입된다. 구성된 어파인 후보들에 대한 프루닝 프로세스는 완전히 제거된다.1) The pruning process for the inherited affine candidates is simplified by comparing coding units covering neighboring positions instead of comparing affine candidates derived from VTM-2.0.1. At most two inherited affine candidates are inserted into the affine merge list. The pruning process for the constructed affine candidates is completely eliminated.
2) 구성된 어파인 후보 내의 MV 스케일링 동작이 제거된다. 제어 포인트의 레퍼런스 인덱스들이 다르다면, 구성된 움직임 모델은 버려진다.2) The MV scaling operation within the constructed affine candidate is removed. If the reference indices of the control points are different, the constructed motion model is discarded.
3) 구성된 어파인 후보들의 개수가 10 개에서 6 개로 감소된다.3) The number of configured affine candidates is reduced from 10 to 6.
4) 일부 실시형태들에서는, ATMVP와 같은 서브-블록 예측이 있는 다른 병합 후보도 역시 어파인 병합 후보 목록 내에 추가된다. 그러한 경우에, 어파인 병합 후보 목록은, 서브-블록 병합 후보 목록과 같은 일부 다른 명칭으로 재명명된다.4) In some embodiments, other merge candidates with sub-block predictions, such as ATMVP, are also added to the affine merge candidate list. In such a case, the affine merge candidate list is renamed to some other name, such as sub-block merge candidate list.
2.6 어파인 병합 모드에 대한 예시적인 제어 포인트 MV 오프셋2.6 Example control point MV offset for affine merge mode
새로운 어파인 병합 후보는 제 1 어파인 병합 후보의 CPMV 오프셋에 기반하여 생성된다. 제 1 어파인 병합 후보가 4-파라미터 어파인 모델을 병합하면, 각각의 새로운 어파인 병합 후보에 대한 2 개의 CPMV가, 제 1 어파인 병합 후보의 2 개의 CPMV들을 오프셋함으로써 유도된다; 그렇지 않으면(6-파라미터 어파인 모델이 이네이블되면), 각각의 새로운 어파인 병합 후보에 대한 3 개의 CPMV들이 제 1 어파인 병합 후보의 3 개의 CPMV들을 오프셋함으로써 유도된다. 단방향 예측에서, CPMV 오프셋들이 제 1 후보의 CPMV들에 적용된다. 동일한 방향에 목록 0 및 목록 1이 있는 양방향 예측에서, CPMV 오프셋들은 다음과 같이 제 1 후보에 적용된다:A new affine merge candidate is generated based on the CPMV offsets of the first affine merge candidate. If the first affine merge candidate merges a 4-parameter affine model, two CPMVs for each new affine merge candidate are derived by offsetting two CPMVs of the first affine merge candidate; otherwise (if the 6-parameter affine model is enabled), three CPMVs for each new affine merge candidate are derived by offsetting three CPMVs of the first affine merge candidate. In unidirectional prediction, the CPMV offsets are applied to the CPMVs of the first candidate. In bidirectional prediction with list 0 and list 1 in the same direction, the CPMV offsets are applied to the first candidate as follows:
반대 방향에 목록 0 및 목록 1이 있는 양방향 예측에서, CPMV 오프셋들은 다음과 같이 첫 번째 후보에 적용된다:In bidirectional prediction with lists 0 and 1 in opposite directions, CPMV offsets are applied to the first candidate as follows:
다양한 오프셋 크기를 가지는 다양한 오프셋 방향들이 새로운 어파인 병합 후보를 생성하기 위하여 사용될 수 있다. 다음 두 개의 구현형태들이 테스트되었다:Different offset directions with different offset sizes can be used to generate new affine merge candidates. The following two implementations have been tested:
(1) 2 개의 상이한 오프셋 크기를 가지는 8 개의 상이한 오프셋 방향의 16 개의 새로운 어파인 병합 후보가 다음의 오프셋 세트에서 표시되는 것과 같이 생성된다:(1) Sixteen new affine merge candidates with eight different offset directions and two different offset sizes are generated as shown in the following offset set:
오프셋 세트 = { (4, 0), (0, 4), (-4, 0), (0, -4), (-4, -4), (4, -4), (4, 4), (-4, 4), (8, 0), (0, 8), (-8, 0), (0, -8), (-8, -8), (8, -8), (8, 8), (-8, 8) }.offset set = { (4, 0), (0, 4), (-4, 0), (0, -4), (-4, -4), (4, -4), (4, 4), (-4, 4), (8, 0), (0, 8), (-8, 0), (0, -8), (-8, -8), (8, -8), (8, 8), (-8, 8) }.
이러한 디자인에서는 어파인 병합 목록이 20 까지 증가된다. 잠재적인 어파인 병합 후보들의 개수는 총 31 개이다.In this design, the affine merge list increases to 20. The total number of potential affine merge candidates is 31.
(2) 1 개의 오프셋 크기를 가지는 4 개의 상이한 오프셋 방향의 4 개의 새로운 어파인 병합 후보가 다음의 오프셋 세트에서 표시되는 것과 같이 생성된다:(2) Four new affine merge candidates with four different offset directions having one offset size are generated as shown in the following offset set:
오프셋 세트 = { (4, 0), (0, 4), (-4, 0), (0, -4) }.Offset set = { (4, 0), (0, 4), (-4, 0), (0, -4) }.
어파인 병합 목록은 VTM 2.0.1의 경우에서와 같이 5로 유지된다. 네 개의 시간적으로 구성된 어파인 병합 후보들이 제거되어, 잠재적인 어파인 병합 후보의 개수가 변하지 않도록, 예를 들어 총 15 개로 유지한다. CPMV1, CPMV2, CPMV3 및 CPMV4의 좌표가 (0, 0), (W, 0), (H, 0) 및 (W, H)라고 가정한다. CPMV4가 도 6 에 도시된 바와 같이 시간적 MV로부터 유도된다는 것에 주의한다. 제거된 후보들은 다음 네 개의 시간적으로 관련되어 구성된 어파인 병합 후보들이다: {CP2, CP3, CP4}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}.The affine merge list is kept as 5 as in the case of VTM 2.0.1. Four temporally structured affine merge candidates are removed so that the number of potential affine merge candidates remains unchanged, for example, 15 in total. Assume that the coordinates of CPMV1, CPMV2, CPMV3 and CPMV4 are (0, 0), (W, 0), (H, 0) and (W, H). Note that CPMV4 is derived from temporal MV as illustrated in Fig. 6. The removed candidates are the following four temporally related affine merge candidates: {CP2, CP3, CP4}, {CP1, CP4}, {CP2, CP4}, {CP3, CP4}.
2.7 어파인 움직임 보상의 대역폭 문제2.7 Bandwidth Issues in Affine Motion Compensation
현재 블록이 움직임 보상을 수행하기 위하여 루마 성분에 대하여 4×4 서브-블록들로 그리고 두 개의 크로마 성분들에 대하여 2×2 서브-블록들로 분할되기 때문에, 총 대역폭 요구 사항은 서브-블록 인터-예측이 아닌 경우보다 훨씬 높다. 대역폭 문제를 해결하기 위하여, 여러 접근법들이 제안된다.Since the current block is split into 4×4 sub-blocks for the luma component and 2×2 sub-blocks for the two chroma components to perform motion compensation, the total bandwidth requirement is much higher than in the case without sub-block inter-prediction. To address the bandwidth issue, several approaches have been proposed.
2.7.1 예 12.7.1 Example 1
4x4 블록이 단방향성 어파인 코딩된 CU에 대한 서브-블록 크기로서 사용되는 반면에, 8x4/4x8 블록이 양방향성 어파인 코딩된 CU에 대한 서브-블록 크기로서 사용된다.While 4x4 block is used as sub-block size for unidirectional affine coded CU, 8x4/4x8 block is used as sub-block size for bidirectional affine coded CU.
2.7.2 예 22.7.2 Example 2
어파인 모드의 경우, 어파인 CU의 서브-블록 움직임 벡터는 미리 규정된 움직임 벡터 필드 내에 속하도록 제약된다. 첫 번째(상단 좌측) 서브-블록의 움직임 벡터가 (v0x,v0y)이고, 두 번째 서브-블록의 움직임 벡터가 (vix, viy)라고 가정하는데, vix 및 viy의 값은 다음의 제약들을 나타낸다:For affine mode, the sub-block motion vectors of an affine CU are constrained to fall within a predefined motion vector field. Assume that the motion vector of the first (top-left) sub-block is (v 0x , v 0y ) and the motion vector of the second sub-block is (v ix , v iy ), where the values of v ix and v iy represent the following constraints:
임의의 서브-블록의 움직임 벡터가 미리 규정된 움직임 벡터 필드를 초과하면, 움직임 벡터는 클리핑된다. 제약된 서브-블록 움직임 벡터의 개념의 예시가 6 에 제공된다.If the motion vector of any sub-block exceeds a predefined motion vector field, the motion vector is clipped. An example of the concept of constrained sub-block motion vectors is provided in 6.
메모리가 서브-블록 대신에 CU마다 취출되고, 어파인 CU의 최악의 경우의 메모리 대역폭이 8×8 양방향 예측 블록의 보통의 인터 MC(normal inter MC)의 메모리 대역폭을 초과하지 않도록 선택된다고 가정한다. H 및 V의 값들이 CU 크기 및 단방향 예측 또는 양방향 예측에 맞춰 적응된다는 것에 주의한다.We assume that memory is fetched per CU instead of per sub-block, and that the worst-case memory bandwidth of an affine CU is chosen such that it does not exceed the memory bandwidth of a normal inter MC of an 8×8 bidirectional prediction block. Note that the values of H and V are adapted to the CU size and to unidirectional or bidirectional prediction.
2.7.3 예 32.7.3 Example 3
어파인 예측에서의 메모리 대역폭 요구 사항을 줄이기 위하여, 해당 블록 내의 각각의 8x8 블록은 기본 유닛으로 간주된다. 8x8 블록 내의 네 개의 4x4 서브-블록 모두의 MV들은, 네 개의 4x4 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 1 픽셀을 넘지 않도록 제약된다. 따라서, 대역폭은 (8+7+1)*(8+7+1)/(8*8)=4 샘플/픽셀이 된다.To reduce the memory bandwidth requirement in affine prediction, each 8x8 block within that block is considered a basic unit. The MVs of all four 4x4 sub-blocks within an 8x8 block are constrained such that the maximum difference between the integer parts of the four 4x4 sub-block MVs does not exceed 1 pixel. Therefore, the bandwidth becomes (8+7+1)*(8+7+1)/(8*8)=4 samples/pixel.
일부 경우에, 현재 블록 내의 모든 서브-블록의 MV들이 어파인 모델로써 계산된 이후에, 제어 포인트를 보유한 서브-블록들의 MV는 우선 대응하는 제어 포인트 MV로 대체된다. 이것은, 상단-좌측, 상단-우측 및 하단-좌측 서브-블록들의 MV가 각각 상단-좌측, 상단-우측 및 하단-좌측 제어 포인트 MV로 대체된다는 것을 의미한다. 그러면, 현재 블록 내의 각각의 8x8 블록에 대하여, 네 개의 4x4 서브-블록 모두의 MV들은, 네 개의 MV들의 정수 부분들 사이의 최대 차이가 1 픽셀을 넘지 않도록 보장하기 위해서 클리핑된다. 여기에서, 제어 포인트를 포함하는 서브-블록들(상단-좌측, 상단-우측 및 하단-좌측 서브-블록들)이 대응하는 제어 포인트 MV를 사용하여 MV 클리핑 프로세스에 관여한다는 것에 주의해야 한다. 클리핑 프로세스 도중에, 상단-우측 제어 포인트의 MV는 변하지 않은 상태로 유지된다.In some cases, after the MVs of all sub-blocks in the current block are computed as affine models, the MVs of the sub-blocks containing control points are first replaced by the corresponding control point MVs. This means that the MVs of the top-left, top-right and bottom-left sub-blocks are replaced by the top-left, top-right and bottom-left control point MVs, respectively. Then, for each 8x8 block in the current block, the MVs of all four 4x4 sub-blocks are clipped to ensure that the maximum difference between the integer parts of the four MVs does not exceed 1 pixel. Note that the sub-blocks containing control points (the top-left, top-right and bottom-left sub-blocks) participate in the MV clipping process using their corresponding control point MVs. During the clipping process, the MV of the top-right control point remains unchanged.
각각의 8x8 블록에 적용되는 클리핑 프로세스는 다음과 같다:The clipping process applied to each 8x8 block is as follows:
1. MV 성분에 대한 최소 값 및 최대 값들인 MVminx, MVminy, MVmaxx, MVmaxy가 우선 각각의 8x8 블록에 대하여 다음과 같이 결정된다:1. The minimum and maximum values for the MV components, MVminx, MVminy, MVmaxx, and MVmaxy, are first determined for each 8x8 block as follows:
a) 네 개의 4x4 서브-블록 MV들 중 최소 MV 성분을 취함a) Take the minimum MV component among four 4x4 sub-block MVs.
MVminx = min(MVx0, MVx1, MVx2, MVx3)MVminx = min(MVx0, MVx1, MVx2, MVx3)
MVminy = min(MVy0, MVy1, MVy2, MVy3)MVminy = min(MVy0, MVy1, MVy2, MVy3)
b) MVminx 및 MVminy의 정수 부분을 최소 MV 성분으로서 사용함b) Use the integer part of MVminx and MVminy as the minimum MV component.
MVminx = MVminx >> MV_precision << MV_precisionMVminx = MVminx >> MV_precision << MV_precision
MVminy = MVminy >> MV_precision << MV_precisionMVminy = MVminy >> MV_precision << MV_precision
c) 최대 MV 성분은 다음과 같이 계산된다:c) The maximum MV component is computed as follows:
MVmaxx = MVminx + (2 << MV_precision) - 1MVmaxx = MVminx + (2 << MV_precision) - 1
MVmaxy = MVminy + (2 << MV_precision) - 1MVmaxy = MVminy + (2 << MV_precision) - 1
d) 상단-우측 제어 포인트가 현재의 8x8 블록이면d) If the top-right control point is the current 8x8 block,
if (MV1x > MVmaxx)if (MV1x > MVmaxx)
MVminx = (MV1x >> MV_precision << MV_precision) - (1 << MV_precision)MVminx = (MV1x >> MV_precision << MV_precision) - (1 << MV_precision)
MVmaxx = MVminx + (2 << MV_precision) - 1MVmaxx = MVminx + (2 << MV_precision) - 1
if (MV1y > MVmaxy)if (MV1y > MVmaxy)
MVminy = (MV1y >> MV_precision << MV_precision) - (1 << MV_precision)MVminy = (MV1y >> MV_precision << MV_precision) - (1 << MV_precision)
MVmaxy = MVminy + (2 << MV_precision) - 1MVmaxy = MVminy + (2 << MV_precision) - 1
2. 이러한 8x8 블록 내의 각각의 4x4 블록의 MV 성분들은 다음과 같이 클리핑된다:2. The MV components of each 4x4 block within these 8x8 blocks are clipped as follows:
MVxi = max(MVminx, min(MVmaxx, MVxi))MVxi = max(MVminx, min(MVmaxx, MVxi))
MVyi = max(MVminy, min(MVmaxy, MVyi))MVyi = max(MVminy, min(MVmaxy, MVyi))
여기에서, (MVxi, MVyi)는 하나의 8x8 블록 내의 i번째 서브-블록의 MV이고, i는 0, 1, 2, 3 이다; (MV1x, MV1y)는 상단-우측 제어 포인트의 MV이다; MV_precision은 1/16 의 움직임 벡터 분수 정확도에 대응하는 4와 같다. MVminx 및 MVmaxx (MVminy 및 MVmaxy)의 정수 부분들 사이의 차이가 1 픽셀이기 때문에, 네 개의 4x4 서브-블록 MV들의 정수 부분들 사이의 최대 차이는 1 개의 픽셀을 넘지 않는다.Here, (MVxi, MVyi) is the MV of the ith sub-block within one 8x8 block, where i is 0, 1, 2, 3; (MV1x, MV1y) is the MV of the top-right control point; MV_precision is equal to 4, which corresponds to a motion vector fractional accuracy of 1/16. Since the difference between the integer parts of MVminx and MVmaxx (MVminy and MVmaxy) is 1 pixel, the maximum difference between the integer parts of four 4x4 sub-block MVs does not exceed 1 pixel.
또한, 유사한 방법이 일부 실시형태들에서 평면 모드(planar mode)를 처리하기 위해서 사용될 수 있다.Additionally, similar methods can be used to handle planar mode in some embodiments.
2.7.4 예 42.7.4 Example 4
일부 실시형태들에서는, 최악 상황의 대역폭 감소에 대한 어파인 모드에 대한 제한 사항. 어파인 블록의 최악 상황의 대역폭이 INTER_4x8/INTER_8x4 블록 또는 심지어 INTER_9x9 블록보다 열악하지 않도록 보장하기 위하여, 어파인 제어 포인트들 사이의 움직임 벡터 차이가 어파인 블록의 서브블록 크기가 4x4 또는 8x8인지 여부를 판정하기 위하여 사용된다.In some embodiments, a limitation on affine mode for worst-case bandwidth reduction. To ensure that the worst-case bandwidth of an affine block is not worse than that of an INTER_4x8/INTER_8x4 block or even an INTER_9x9 block, the motion vector difference between affine control points is used to determine whether the sub-block size of the affine block is 4x4 or 8x8.
최악 상황의 대역폭 감소에 대한 일반적인 어파인 제한 사항General affine limitations for worst case bandwidth reduction
어파인 모드에 대한 메모리 대역폭 감소는 어파인 제어 포인트들 사이의 움직임 벡터 차이(제어 포인트 차이라고도 불림)를 제한함으로써 제어된다. 일반적으로, 제어 포인트 차이가 아래의 제한 사항을 만족시키면, 어파인 움직임은 4x4 서브블록을 사용하고 있다(즉 4x4 어파인 모드). 그렇지 않으면, 이것은 8x8 서브블록을 사용하고 있다(8x8 어파인 모드). 6-파라미터 및 4-파라미터 모델에 대한 제한 사항은 다음과 같이 주어진다.The memory bandwidth reduction for affine mode is controlled by limiting the motion vector difference between affine control points (also called control point difference). In general, if the control point difference satisfies the constraints below, the affine motion is using 4x4 sub-blocks (i.e. 4x4 affine mode). Otherwise, it is using 8x8 sub-blocks (8x8 affine mode). The constraints for 6-parameter and 4-parameter models are given as follows.
상이한 블록 크기(wxh)에 대한 제약을 유도하기 위하여, 제어 포인트들의 움직임 벡터 차이가 다음과 같이 정규화된다:To derive constraints for different block sizes ( w x h ), the motion vector differences of the control points are normalized as follows:
4-파라미터 어파인 모델에서는, 및 이 다음과 같이 설정된다:In the 4-parameter affine model, and It is set as follows:
그러므로, 및 의 놈(norm)이 다음과 같이 주어진다:therefore, and The norm is given as follows:
최악 상황의 대역폭을 보장하기 위한 제한 사항은 INTER_4x8 또는 INTER_8x4를 획득하는 것이다:The constraint to ensure worst case bandwidth is to get INTER_4x8 or INTER_8x4:
여기에서, 수학식 17의 좌측은 서브 어파인 블록들의 축소 또는 확대 수준을 나타내는 반면에, (3.25)는 3.25의 픽셀 천이를 나타낸다.Here, the left side of equation (17) represents the reduction or enlargement level of the sub-affine blocks, while (3.25) represents a pixel shift of 3.25.
최악 상황의 대역폭을 보장하기 위한 제한 사항은 INTER_9x9를 획득하는 것이다The limitation to ensure worst case bandwidth is to obtain INTER_9x9
여기에서, 이다(128 및 16 은 각각 정규화 인자 및 움직임 벡터 정밀도를 나타낸다).Here, (128 and 16 represent the normalization factor and motion vector precision, respectively).
2.8 일반화된 양방향 예측 개선2.8 Improved generalized bidirectional prediction
일부 실시형태는 GBi에 대한 이득-복잡도 트레이드-오프를 개선했고, BMS2.1 안에 채택되었다. GBi는 CU-레벨 가중치가 있는 양방향 예측(Bi-prediction with CU-level weight; BCW)이라고도 불린다. BMS2.1 GBi는 양방향 예측 모드에서 L0 및 L1로부터의 예측기에 동일하지 않은 가중치를 적용한다. 인터 예측 모드에서, 동일한 가중치 쌍 (1/2, 1/2)을 포함하는 다수의 가중치 쌍이 레이트-왜곡 최적화(RDO)에 기반하여 평가되고, 선택된 가중치 쌍의 GBi 인덱스가 디코더에게 시그널링된다. 병합 모드에서, GBi 인덱스는 이웃하는 CU로부터 승계된다. BMS2.1 GBi에서, 양방향 예측 모드에서의 예측기 생성이 수학식 19에 표시된다.Some embodiments have improved the gain-complexity trade-off for GBi and have been adopted in BMS2.1. GBi is also called Bi-prediction with CU-level weight (BCW). BMS2.1 GBi applies unequal weights to predictors from L0 and L1 in bi-prediction mode. In inter-prediction mode, multiple weight pairs including the same weight pair (1/2, 1/2) are evaluated based on rate-distortion optimization (RDO), and the GBi index of the selected weight pair is signaled to the decoder. In merge mode, the GBi index is inherited from the neighboring CU. In BMS2.1 GBi, the predictor generation in bi-prediction mode is shown in Equation 19.
여기에서, P GBi 는 GBi의 최종 예측기이다. w 0 및 w 1 은 선택된 GBi 가중치 쌍이고 목록 0 (L0) 및 목록 1 (L1)의 예측기들에 각각 적용된다. RoundingOffset GBi 및 shiftNum GBi 는 GBi 내의 최종 예측기를 정규화하기 위하여 사용된다. 지원되는 w 1 가중치 세트는 {-1/4, 3/8, 1/2, 5/8, 5/4}이고, 여기에서 다섯 개의 가중치는 하나의 동일한 가중치 쌍 및 네 개의 동일하지 않은 가중치 쌍에 대응한다. 혼합 이득(blending gain), 예를 들어 w 1 및 w 0 의 합은 1.0으로 고정된다. 그러므로, 대응하는 w 0 가중치 세트는 {5/4, 5/8, 1/2, 3/8, -1/4}이다. 가중치 쌍 선택은 CU-레벨에서 이루어진다.Here, P GBi is the final predictor of GBi. w 0 and w 1 are the selected GBi weight pairs and are applied to the predictors in list 0 (L0) and list 1 (L1), respectively. RoundingOffset GBi and shiftNum GBi are used to normalize the final predictor in GBi . The supported w 1 weight sets are {-1/4, 3/8, 1/2, 5/8, 5/4}, where five weights correspond to one identical weight pair and four unequal weight pairs. The blending gain, i.e. the sum of w 1 and w 0 is fixed to 1.0. Therefore, the corresponding w 0 weight set is {5/4, 5/8, 1/2, 3/8, -1/4}. The selection of weight pairs is done at the CU level.
지연이 적지 않은(non-low delay) 픽쳐의 경우, 가중치 세트 크기는 5로부터 3으로 감소되는데, 여기에서, w 1 가중치 세트는 {3/8, 1/2, 5/8}이고 w 0 가중치 세트는 {5/8, 1/2, 3/8}이다. 지연이 적지 않은 픽쳐에 대한 가중치 세트 크기 감소가 이러한 기여도(contribution) 내의 BMS2.1 GBi 및 모든 GBi 테스트에 적용된다.For non-low delay pictures, the weight set size is reduced from 5 to 3, where the w 1 weight set is {3/8, 1/2, 5/8} and the w 0 weight set is {5/8, 1/2, 3/8}. The weight set size reduction for non-low delay pictures applies to the BMS2.1 GBi and all GBi tests within this contribution.
일부 실시형태들에서는, GBi 성능을 더 개선하기 위하여, 다음의 변형이 BMS2.1에서의 현존하는 GBi 디자인 위에 적용된다.In some embodiments, to further improve GBi performance, the following modifications are applied on top of the existing GBi design in BMS2.1.
2.8.1 GBi 인코더 버그 수정2.8.1 GBi encoder bug fixes
GBi 인코딩 시간을 줄이기 위하여, 현재의 인코더 디자인에서는, 인코더가 4/8 와 같은 GBi 가중치로부터 추정된 단방향 예측 움직임 벡터를 저장하고, 이들을 다른 GBi 가중치의 단방향 예측 검색을 위해서 재사용할 것이다. 이러한 고속 인코딩 방법은 병진 움직임 모델 및 어파인 움직임 모델 양자 모두에 적용된다. VTM2.0에서는, 6-파라미터 어파인 모델이 4-파라미터 어파인 모델과 함께 채택되었다. BMS2.1 인코더는, GBi 가중치가 4/8 와 같으면 단방향 예측 어파인 MV들을 저장할 때 4-파라미터 어파인 모델과 6-파라미터 어파인 모델을 구별하지 않는다. 결과적으로, GBi 가중치 4/8을 사용한 인코딩 이후에, 4-파라미터 어파인 MV들이 6-파라미터 어파인 MV들로 덮어쓰기될 수 있다. 저장된 6-파라미터 어파인 MV들은 다른 GBi 가중치에 대한 4-파라미터 어파인 ME에 대해서 사용될 수 있고, 또는 저장된 4-파라미터 어파인 MV들이 6-파라미터 어파인 ME에 대해서 사용될 수 있다. 제안된 GBi 인코더 버그 수정은 4-파라미터 및 6-파라미터 어파인 MV 저장을 분리하기 위한 것이다. GBi 가중치가 4/8 와 같으면 인코더는 그러한 어파인 MV들을 어파인 모델 타입에 기반하여 저장하고, 대응하는 어파인 MV들을 다른 GBi 가중치에 대한 어파인 모델 타입에 기반하여 재사용한다.In order to reduce the GBi encoding time, in the current encoder design, the encoder will store the unidirectional predictive motion vectors estimated from the GBi weights such as 4/8, and reuse them for the unidirectional predictive lookup of other GBi weights. This fast encoding method is applied to both the translational motion model and the affine motion model. In VTM2.0, the 6-parameter affine model is adopted together with the 4-parameter affine model. The BMS2.1 encoder does not distinguish between the 4-parameter affine model and the 6-parameter affine model when storing the unidirectional predictive affine MVs when the GBi weights are equal to 4/8. As a result, after encoding using the GBi weights 4/8, the 4-parameter affine MVs may be overwritten by the 6-parameter affine MVs. The saved 6-parameter affine MVs can be used for 4-parameter affine ME for other GBi weights, or the saved 4-parameter affine MVs can be used for 6-parameter affine ME. The proposed GBi encoder bug fix is to separate the saving of 4-parameter and 6-parameter affine MVs. If a GBi weight is equal to 4/8, the encoder saves those affine MVs based on their affine model type, and reuses the corresponding affine MVs based on their affine model type for other GBi weights.
2.8.2 GBi에 대한 CU 크기 제약CU size constraints for 2.8.2 GBi
이러한 방법에서, GBi는 작은 CU들에 대해서 디스에이블된다. 인터 예측 모드에서는, 양방향 예측이 사용되고 CU 면적이 128 개의 루마 샘플보다 작으면, GBi가 임의의 시그널링이 없이 디스에이블된다.In this method, GBi is disabled for small CUs. In inter prediction mode, if bidirectional prediction is used and the CU area is less than 128 luma samples, GBi is disabled without any signaling.
2.8.3 GBi가 있는 병합 모드2.8.3 Merge mode with GBi
병합 모드의 경우에, GBi 인덱스는 시그널링되지 않는다. 그 대신에, 이것은 자신이 병합되는 이웃하는 블록으로부터 승계된다. TMVP 후보가 선택되는 경우, GBi가 이러한 블록 내에서 턴오프된다.In case of merge mode, the GBi index is not signaled. Instead, it is inherited from the neighboring block into which it is merged. If a TMVP candidate is selected, GBi is turned off in these blocks.
2.8.4 GBi가 있는 어파인 예측2.8.4 Affine Prediction with GBi
현재 블록이 어파인 예측으로 코딩된다면, GBi가 사용될 수 있다. 어파인 인터 모드의 경우, GBi 인덱스가 시그널링된다. 어파인 병합 모드의 경우, GBi 인덱스는 이것이 병합되는 이웃하는 블록으로부터 승계된다. 구성된 어파인 모델이 선택된다면, GBi는 이러한 블록 내에서 턴오프된다.If the current block is coded with affine prediction, GBi can be used. In the case of affine inter mode, the GBi index is signaled. In the case of affine merge mode, the GBi index is inherited from the neighboring block into which it is merged. If the constructed affine model is selected, GBi is turned off in these blocks.
2.9 예시적인 인터-인트라 예측 모드(IIP)2.9 Example Inter-Intra Prediction Mode (IIP)
인터 및 인트라 통합 예측(CIIP)이라고도 불리는 인터-인트라 예측 모드에서는, 다차원 (multi-가정) 예측이 하나의 인트라 예측 및 하나의 병합 인덱싱된 예측을 결합한다. 이러한 블록은 특별한 인터-코딩된 블록으로서 취급된다. 병합 CU에서는, 하나의 플래그가 참인 경우 인트라 후보 목록으로부터 하나의 인트라 모드를 선택하기 위해서, 해당 플래그가 병합 모드에 대해서 시그널링된다. 루마 성분의 경우, 인트라 후보 목록은 DC, 평면, 수평, 및 수직 모드를 포함하는 4 개의 인트라 예측 모드로부터 유도되고, 인트라 후보 목록의 크기는 블록 형상에 따라서 3 또는 4일 수 있다. CU 폭이 CU 높이의 두 배보다 크면, 수평 모드가 인트라 모드 목록 중에서 배타적으로 선택되고, CU 높이가 CU 폭의 두 배보다 크면, 수직 모드가 인트라 모드 목록으로부터 제거된다. 인트라 모드 인덱스에 의해 선택된 하나의 인트라 예측 모드 및 병합 인덱스에 의해 선택된 하나의 병합 인덱싱된 예측이 가중 평균(weighted average)을 사용하여 결합된다. 크로마 성분의 경우, 추가적인 시그널링이 없이 DM이 언제나 적용된다.In the inter-intra prediction mode, also called Inter and Intra Integrated Prediction (CIIP), multi-dimensional (multi-hypothesis) prediction combines one intra prediction and one merge indexed prediction. Such a block is treated as a special inter-coded block. In a merge CU, a flag is signaled for the merge mode to select one intra mode from the intra candidate list if the flag is true. For the luma component, the intra candidate list is derived from four intra prediction modes, including DC, planar, horizontal, and vertical modes, and the size of the intra candidate list can be 3 or 4 depending on the block shape. If the CU width is greater than twice the CU height, the horizontal mode is exclusively selected from the intra mode list, and if the CU height is greater than twice the CU width, the vertical mode is removed from the intra mode list. One intra prediction mode selected by the intra mode index and one merge indexed prediction selected by the merge index are combined using a weighted average. For chroma components, DM is always applied without additional signaling.
예측들을 조합하기 위한 가중치들은 다음과 같이 설명된다. DC 또는 평면 모드가 선택되거나, CB 폭 또는 높이가 4보다 작으면, 동일한 가중치들이 적용된다. 수평/수직 모드가 선택되는 경우, 4 이상의 CB 폭 및 높이를 가지는 CB들에 대해서는, 하나의 CB는 우선 네 개의 동일-면적 영역들로 분할된다. (w_intrai, w_interi)로 불리는 각각의 가중치 세트가 대응하는 영역에 적용될 것이고, 여기에서 i는 1 내지 4 이고, (w_intra1, w_inter1) = ((6, 2), (w_intra2, w_inter2) = (5, 3), (w_intra3, w_inter3) = (3, 5) 이며, (w_intra4, w_inter4) = (2, 6)이다. (w_intra1, w_inter1)은 레퍼런스 샘플에 가장 근접한 영역에 대한 것이고, (w_intra4, w_inter4)는 레퍼런스 샘플로부터 가장 멀리 떨어진 영역에 대한 것이다. 그러면, 두 개의 가중된 예측을 합산하고 3 비트만큼 우측으로 천이함으로써 결합된 예측이 계산될 수 있다. 더욱이, 예측기의 인트라 가정(intra hypothesis)에 대한 인트라 예측 모드가 그 다음의 이웃하는 CU들이 참조하도록 저장될 수 있다.The weights for combining the predictions are described as follows. When DC or planar mode is selected, or CB width or height is less than 4, the same weights are applied. When horizontal/vertical mode is selected, for CBs with CB width and height greater than 4, a CB is first divided into four equal-area regions. Each set of weights, called (w_intra i , w_inter i ), will be applied to a corresponding region, where i is from 1 to 4, (w_intra 1 , w_inter 1 ) = ((6, 2), (w_intra 2 , w_inter 2 ) = (5, 3), (w_intra 3 , w_inter 3 ) = (3, 5), and (w_intra 4 , w_inter 4 ) = (2, 6). (w_intra 1 , w_inter 1 ) is for the region closest to the reference sample, and (w_intra 4 , w_inter 4 ) is for the region farthest from the reference sample. Then, the combined prediction can be computed by summing the two weighted predictions and shifting them right by 3 bits. Furthermore, the intra prediction mode for the intra hypothesis of the predictor is It can be stored for reference by neighboring CUs.
인트라 및 인터 예측 값들이 PIntra 및 Pinter이고, 가중 인자가 각각 w_intra 및 w_inter라고 가정한다. 위치 (x, y)에서의 예측 값은 (PIntra(x, y) * w_intra(x, y) + PInter(x, y) * w_inter(x, y)) >> N으로서 계산되는데, 여기에서 w_intra(x, y) + w_iner(x, y) = 2^N이다.Assume that the intra and inter prediction values are PIntra and Pinter, and the weighting factors are w_intra and w_inter, respectively. The prediction value at position (x, y) is computed as (PIntra(x, y) * w_intra(x, y) + PInter(x, y) * w_inter(x, y)) >> N, where w_intra(x, y) + w_iner(x, y) = 2^N.
IIP-코딩된 블록 내에서의 인트라 예측 모드의 시그널링Signaling of intra prediction mode within an IIP-coded block
인터-인트라 모드가 사용되는 경우, 네 개의 허용된 인트라-예측 모드들인 DC, 평면, 수평 및 수직 중 하나가 선택되고 시그널링된다. 세 개의 최고 가능성 모드(Most Probable Modes; MPMs)가 좌측 및 위의 이웃하는 블록들로부터 구성된다. 인트라-코딩된 이웃하는 블록 또는 IIP-코딩된 이웃하는 블록의 인트라-예측 모드는 하나의 MPM으로서 취급된다. 인트라-예측 모드가 네 개의 허용된 인트라-예측 모드들 중 하나가 아니면, 이것은 각도 차이에 따라서 수직 모드 또는 수평 모드로 반올림될 것이다. 이웃하는 블록들은 현재 블록과 같은 CTU 라인 안에 있어야 한다.When the inter-intra mode is used, one of the four allowed intra-prediction modes, DC, planar, horizontal and vertical, is selected and signaled. Three Most Probable Modes (MPMs) are constructed from the left and above neighboring blocks. The intra-prediction mode of an intra-coded neighboring block or an IIP-coded neighboring block is treated as one MPM. If the intra-prediction mode is not one of the four allowed intra-prediction modes, it will be rounded up to vertical or horizontal mode depending on the angular difference. The neighboring blocks must be in the same CTU line as the current block.
현재 블록의 폭 및 높이가 W 및 H라고 가정한다. W>2*H 또는 H>2*W라면, 세 개의 MPM들 중 하나만이 인터-인트라 모드에서 사용될 수 있다. 그렇지 않으면, 네 개의 유효한 인트라-예측 모드들 모두가 인터-인트라 모드에서 사용될 수 있다.Assume that the width and height of the current block are W and H. If W>2*H or H>2*W, only one of the three MPMs can be used in the inter-intra mode. Otherwise, all four valid intra-prediction modes can be used in the inter-intra mode.
인터-인트라 모드에서의 인트라-예측 모드는 보통의 인트라-코딩된 블록에서의 인트라-예측 모드를 예측하기 위하여 사용될 수 없다는 것에 주의해야 한다.It should be noted that the intra-prediction mode in inter-intra mode cannot be used to predict the intra-prediction mode in a normal intra-coded block.
인터-인트라 예측은 W*H>=64인 경우에만 사용될 수 있다.Inter-intra prediction can only be used if W*H>=64.
2.10 예시적인 삼각 예측 모드2.10 Example triangle prediction mode
삼각 예측 모드(triangular prediction mode; TPM)의 개념은, 움직임 보상된 예측을 위하여 새로운 삼각 파티션을 도입하는 것이다. 도 7a 내지 도 7b 에 도시된 바와 같이, 이것은 하나의 CU를, 대각 방향 또는 반전 대각 방향 중 하나에서 두 개의 삼각 예측 유닛으로 분할한다. CU 내의 각각의 삼각 예측 유닛은, 자기 자신의 단방향 예측 움직임 벡터 및 단방향 예측 후보 목록으로부터 유도되는 레퍼런스 프레임 인덱스를 사용하여 인터-예측된다. 삼각 예측 유닛을 예측한 이후에, 대각 에지에 적응적 가중 프로세스가 수행된다. 그러면, 변환 및 양자화 프로세스가 전체 CU에 적용된다. 이러한 모드가 모드들을 스킵하고 병합하기 위해서만 적용된다는 것에 주의한다.The concept of triangular prediction mode (TPM) is to introduce a new triangular partition for motion compensated prediction. As illustrated in Fig. 7a and Fig. 7b, it partitions one CU into two triangular prediction units in either the diagonal or the inverted diagonal direction. Each triangular prediction unit in the CU is inter-predicted using its own unidirectional prediction motion vector and a reference frame index derived from the unidirectional prediction candidate list. After predicting the triangular prediction unit, an adaptive weighting process is performed on the diagonal edges. Then, the transform and quantization processes are applied to the entire CU. Note that this mode is applied only to skip and merge modes.
2.10.1 TPM을 위한 단방향 예측 후보 목록2.10.1 List of one-way prediction candidates for TPM
단방향 예측 후보 목록은 다섯 개의 단방향 예측 움직임 벡터 후보들로 이루어진다. 이것은 도 8 에 도시된 바와 같이, 다섯 개의 공간적으로 이웃하는 블록들(1 내지 5) 및 두 개의 시간적으로 공동 위치되는 블록들(6 내지 7)을 포함하는 일곱 개의 이웃하는 블록들로부터 유도된다. 일곱 개의 이웃하는 블록들의 움직임 벡터가 수집되고 단방향 예측 움직임 벡터의 다음과 같은 순서에 따라서 단방향 예측 후보 목록 내에 추가된다: 양방향 예측 움직임 벡터의 L0 움직임 벡터, 양방향 예측 움직임 벡터의 L1 움직임 벡터, 및 양방향 예측 움직임 벡터의 L0 및 L1 움직임 벡터들의 평균화된 움직임 벡터. 후보의 개수가 다섯 개 미만이면, 제로 움직임 벡터가 목록에 추가된다. 이러한 목록에 추가되는 움직임 후보는 TPM 움직임 후보라고 불린다.The unidirectional prediction candidate list consists of five unidirectional prediction motion vector candidates. These are derived from seven neighboring blocks, which include five spatially neighboring blocks (1 to 5) and two temporally co-located blocks (6 to 7), as illustrated in Fig. 8. The motion vectors of the seven neighboring blocks are collected and added to the unidirectional prediction candidate list in the following order of the unidirectional prediction motion vectors: the L0 motion vector of the bidirectional prediction motion vector, the L1 motion vector of the bidirectional prediction motion vector, and the averaged motion vector of the L0 and L1 motion vectors of the bidirectional prediction motion vector. If the number of candidates is less than five, a zero motion vector is added to the list. The motion candidates added to this list are called TPM motion candidates.
좀 더 구체적으로는, 다음의 단계들이 수반된다:More specifically, the following steps are involved:
1) 임의의 프루닝 동작이 없이, A1, B1, B0, A0, B2, Col 및 Col2(도 8 의 블록 1 내지 블록 7에 대응함)로부터 움직임 후보들을 획득한다.1) Obtain motion candidates from A 1 , B 1 , B 0 , A 0 , B 2 , Col and Col2 (corresponding to blocks 1 to 7 in Fig. 8) without any pruning operation.
2) 변수를 다음과 같이 설정한다: numCurrMergeCand = 0.2) Set the variable as follows: numCurrMergeCand = 0.
3) A1, B1, B0, A0, B2, Col 및 Col2로부터 유도된 각각의 움직임 후보에 대하여 numCurrMergeCand는 5 미만이고, 움직임 후보가 단방향 예측이면(목록 0 또는 목록 1 중 하나로부터), 이것은 병합 목록에 추가되고 numCurrMergeCand는 1만큼 증가된다. 이러한 추가된 움직임 후보는 '원래의 단방향 예측된 후보(originally uni-predicted candidate)'라고 명명된다. 풀 프루닝(full pruning)이 적용된다.3) For each motion candidate derived from A 1 , B 1 , B 0 , A 0 , B 2 , Col and Col2 , if numCurrMergeCand is less than 5 and the motion candidate is uni-predicted (from either list 0 or list 1), it is added to the merge list and numCurrMergeCand is increased by 1. This added motion candidate is named 'originally uni-predicted candidate'. Full pruning is applied.
4) A1, B1, B0, A0, B2, Col 및 Col2로부터 유도된 각각의 움직임 후보에 대하여 numCurrMergeCand는 5 미만이고, 움직임 후보가 양방향 예측이면, 목록 0로부터의 움직임 정보가 병합 목록에 추가되고(즉, 목록 0으로부터의 단방향 예측이 되도록 변경됨), numCurrMergeCand는 1만큼 증가된다. 이러한 추가된 움직임 후보는 '절단된 List0-예측된 후보(Truncated List0-predicted candidate)'라고 명명된다. 풀 프루닝(full pruning)이 적용된다.4) For each motion candidate derived from A 1 , B 1 , B 0 , A 0 , B 2 , Col and Col2 , if numCurrMergeCand is less than 5 and the motion candidate is a bidirectional prediction, the motion information from List 0 is added to the merge list (i.e., changed to a unidirectional prediction from List 0), and numCurrMergeCand is increased by 1. This added motion candidate is named 'Truncated List0-predicted candidate'. Full pruning is applied.
5) A1, B1, B0, A0, B2, Col 및 Col2로부터 유도된 각각의 움직임 후보에 대하여 numCurrMergeCand는 5 미만이고, 움직임 후보가 양방향 예측이면, 목록 1로부터의 움직임 정보가 병합 목록에 추가되고(즉, 목록 1로부터의 단방향 예측이 되도록 변경됨), numCurrMergeCand는 1만큼 증가된다. 이러한 추가된 움직임 후보는 '절단된 List1-예측된 후보(Truncated List1-predicted candidate)'라고 명명된다. 풀 프루닝(full pruning)이 적용된다.5) For each motion candidate derived from A 1 , B 1 , B 0 , A 0 , B 2 , Col and Col2 , if numCurrMergeCand is less than 5 and the motion candidate is a bidirectional prediction, the motion information from List 1 is added to the merge list (i.e., changed to become a unidirectional prediction from List 1), and numCurrMergeCand is increased by 1. This added motion candidate is named 'Truncated List1-predicted candidate'. Full pruning is applied.
6) A1, B1, B0, A0, B2, Col 및 Col2로부터 유도된 각각의 움직임 후보에 대하여 numCurrMergeCand는 5 미만이고, 움직임 후보가 양방향 예측이면,6) For each motion candidate derived from A 1 , B 1 , B 0 , A 0 , B 2 , Col and Col2 , if numCurrMergeCand is less than 5 and the motion candidate is a bidirectional prediction,
- 목록 0 레퍼런스 픽쳐의 슬라이스 양자화 파라미터(QP)가 목록 1 레퍼런스 픽쳐의 슬라이스 QP보다 작으면, 목록 1의 움직임 정보가 우선 목록 0 레퍼런스 픽쳐로 스케일링되고, 두 개의 MV들(하나는 원본 목록 0으로부터 온 것이고 다른 것은 목록 1로부터의 스케일링된 MV임)의 평균, 즉 목록 0 움직임 후보로부터의 평균화된 단방향 예측이 병합 목록에 추가되며, numCurrMergeCand는 1만큼 증가한다.- If the slice quantization parameter (QP) of the list 0 reference picture is smaller than the slice QP of the list 1 reference picture, the motion information of the list 1 is first scaled to the list 0 reference picture, and the average of two MVs (one is from the original list 0 and the other is a scaled MV from list 1), i.e., the averaged unidirectional prediction from the list 0 motion candidates, is added to the merge list, and numCurrMergeCand is increased by 1.
- 그렇지 않으면, 목록 0의 움직임 정보가 우선 목록 1 레퍼런스 픽쳐로 스케일링되고, 두 개의 MV들(하나는 원본 목록 1로부터 온 것이고 다른 것은 목록 0으로부터의 스케일링된 MV임)의 평균, 즉 목록 1 움직임 후보로부터의 평균화된 단방향 예측이 병합 목록에 추가되며, numCurrMergeCand는 1만큼 증가한다.- Otherwise, the motion information in List 0 is first scaled to the List 1 reference picture, and the average of two MVs (one from the original List 1 and the other is the scaled MV from List 0), i.e., the averaged unidirectional prediction from the List 1 motion candidates, is added to the merge list, and numCurrMergeCand is increased by 1.
풀 프루닝(full pruning)이 적용된다.Full pruning is applied.
7) numCurrMergeCand가 5 미만이면, 제로 움직임 벡터 후보가 추가된다.7) If numCurrMergeCand is less than 5, a zero motion vector candidate is added.
2.11 VVC에서의 디코더-측 움직임 벡터 정제(Decoder-side Motion Vector Refinement; DMVR)2.11 Decoder-side Motion Vector Refinement (DMVR) in VVC
VVC에서의 DMVR의 경우, 목록 0 및 목록 1 사이의 MVD 미러링이 도 13 에 도시된 바와 같이 가정되고, 쌍방 매칭(bilateral matching)이 수행되어 MV들을 정제함으로써, 예를 들어 여러 MVD 후보들 중에서 최선의 MVD를 찾는다. 두 개의 레퍼런스 픽쳐 목록들에 대한 MV들을 MVL0(L0X, L0Y), 및 MVL1(L1X, L1Y)로 표시한다. 비용 함수(예를 들어, SAD)를 최소화할 수 있는, 목록 0에 대해 (MvdX, MvdY)로 표시된 MVD가 최선의 MVD로서 규정된다. SAD 함수의 경우, 이것은 목록 0 레퍼런스 픽쳐 내의 움직임 벡터 (L0X+MvdX, L0Y+MvdY)로써 유도된 목록 0 의 레퍼런스 블록 및 목록 1 레퍼런스 픽쳐 내의 움직임 벡터 (L1X-MvdX, L1Y-MvdY)로써 유도된 목록 1의 레퍼런스 블록 사이의 SAD로서 규정된다.For DMVR in VVC, MVD mirroring between List 0 and List 1 is assumed as illustrated in Fig. 13, and bilateral matching is performed to refine the MVs, for example, to find the best MVD among several MVD candidates. The MVs for the two reference picture lists are denoted as MVL0(L0X, L0Y), and MVL1(L1X, L1Y). The MVD denoted as (MvdX, MvdY) for List 0, which can minimize the cost function (e.g., SAD), is defined as the best MVD. For the SAD function, this is defined as the SAD between the reference block in list 0 derived by the motion vector (L0X+MvdX, L0Y+MvdY) in the list 0 reference picture and the reference block in list 1 derived by the motion vector (L1X-MvdX, L1Y-MvdY) in the list 1 reference picture.
움직임 벡터 정제 프로세스는 두 번 반복될 수 있다. 각각의 반복 시에, 최대 6 개의 MVD들(정수-화소(integer-pel) 정밀도를 가짐)이 도 14 에 도시된 바와 같이 두 단계에서 점검될 수 있다. 제 1 단계에서는, MVD (0, 0), (-1, 0), (1, 0), (0, -1), (0, 1)이 점검된다. 제 2 단계에서는, MVD (-1, -1), (-1, 1), (1, -1) 또는 (1, 1) 중 하나가 선택되고 추가적으로 점검될 수 있다. 함수 Sad(x, y)가 MVD (x, y)의 SAD 값을 반환한다고 가정한다. (MvdX, MvdY) 표시되고 제 2 단계에서 점검된 MVD는 다음과 같이 판정된다:The motion vector refinement process can be repeated twice. In each iteration, up to six MVDs (with integer-pel precision) can be checked in two steps as illustrated in Fig. 14. In the first step, MVDs (0, 0), (-1, 0), (1, 0), (0, -1), (0, 1) are checked. In the second step, one of MVDs (-1, -1), (-1, 1), (1, -1) or (1, 1) is selected and checked additionally. Assume that the function Sad(x, y) returns the SAD value of MVD (x, y). It is denoted as (MvdX, MvdY) and the MVD checked in the second step is determined as follows:
MvdX = -1;MvdX = -1;
MvdY = -1;MvdY = -1;
If (Sad(1, 0) < Sad(-1, 0))If (Sad(1, 0) < Sad(-1, 0))
MvdX = 1;MvdX = 1;
If (Sad(0, 1) < Sad(0, -1))If (Sad(0, 1) < Sad(0, -1))
MvdY = 1;MvdY = 1;
제 1 반복 시에, 시작 포인트는 시그널링된 MV이고, 제 2 반복 시에, 시작 포인트는 시그널링된 MV에 제 1 반복에서의 선택된 최선의 MVD를 더한 것이다. DMVR은, 하나의 레퍼런스 픽쳐가 선행하는 픽쳐이고 다른 레퍼런스 픽쳐가 후속하는 픽쳐이며, 두 개의 레퍼런스 픽쳐들이 현재 픽쳐로부터 동일한 픽쳐 순서 카운트 거리를 가지는 경우에만 적용된다.In the first iteration, the starting point is the signaled MV, and in the second iteration, the starting point is the signaled MV plus the selected best MVD in the first iteration. DMVR is applied only when one reference picture is a preceding picture and the other reference picture is a succeeding picture, and the two reference pictures have the same picture order count distance from the current picture.
DMVR의 프로세스를 더 단순화하기 위하여, 후속하는 주된 특징들이 일부 실시형태들에서 구현될 수 있다:To further simplify the DMVR process, the following key features may be implemented in some embodiments:
1. list0 및 list1 사이의 (0,0) 위치 SAD가 임계보다 작은 경우의 조기 종결(early termination).1. Early termination when the SAD at position (0,0) between list0 and list1 is less than the critical value.
2. list0 및 list1 사이의 SAD가 일부 위치에 대해서 제로인 경우의 조기 종결.2. Early termination when the SAD between list0 and list1 is zero for some positions.
3. DMVR에 대한 블록 크기들이 다음을 만족함: W*H>=64 && H>=8, 여기에서 W 및 H는 블록의 폭 및 높이임.3. Block sizes for DMVR satisfy: W*H>=64 && H>=8, where W and H are the width and height of the block.
4. 16*16보다 큰 CU 크기의 DMVR을 위하여, CU를 다수의 16x16 서브-블록들로 분할함. CU의 폭 또는 높이가 16보다 큰 경우에만, 이것은 수직 또는 수평 방향으로 분할된다.4. For DMVR with CU size larger than 16*16, split the CU into multiple 16x16 sub-blocks. Only when the width or height of the CU is larger than 16, it is split in the vertical or horizontal direction.
5. 레퍼런스 블록 크기 (W+7)*(H+7) (루마의 경우).5. Reference block size (W+7)*(H+7) (for luma).
6. 25 포인트 SAD-기반 정수-화소 검색(integer-pel search)(예를 들어 (+-) 2 정제 검색 범위, 단일 스테이지)6. 25-point SAD-based integer-pel search (e.g. (+-) 2 refinement search range, single stage)
7. 이중선형-보간(Bilinear-interpolation)에 기반한 DMVR.7. DMVR based on bilinear interpolation.
8. "파라메트릭 오차 표면 방정식(Parametric error surface equation)"에 기반한 서브-화소 정제. 이러한 프로시저는, 마지막 MV 정제 반복 시에, 최소 SAD 비용이 제로와 같지 않고 최선의 MVD가 (0, 0)인 경우에만 수행된다.8. Sub-pixel refinement based on the "Parametric error surface equation". This procedure is performed only when, in the last MV refinement iteration, the minimum SAD cost is not equal to zero and the best MVD is (0, 0).
9. 레퍼런스 블록 패딩이 있는 루마/크로마 MC(필요한 경우).9. Luma/chroma MC with reference block padding (if required).
10. 정제된 MV들은 MC 및 TMVP들을 위해서만 사용된다.10. Refined MVs are used only for MC and TMVPs.
2.11.1 DMVR의 용도2.11.1 Purpose of DMVR
다음 조건들이 모든 참이면, DMVR이 이네이블될 수 있다:DMVR can be enabled if all of the following conditions are true:
- SPS 내의 DMVR 이네이블 플래그(예를 들어, sps_dmvr_enabled_flag)가 1과 같다.- The DMVR enable flag in SPS (e.g. sps_dmvr_enabled_flag) is equal to 1.
- TPM 플래그, 인터-어파인 플래그 및 서브블록 병합 플래그(ATMVP 또는 어파인 병합 중 하나임), MMVD 플래그가 모두 0 과 같다.- TPM flag, inter-affine flag, subblock merge flag (either ATMVP or affine merge), and MMVD flag are all equal to 0.
- 병합 플래그가 1과 같다.- The merge flag is equal to 1.
- 현재 블록이 양방향 예측되고, 현재 픽쳐 및 목록 1 내의 레퍼런스 픽쳐 사이의 픽쳐 순서 카운트(Picture Order Count; POC) 거리가 목록 0 내의 레퍼런스 픽쳐 및 현재 픽쳐 사이의 POC 거리와 같다.- The current block is bidirectionally predicted, and the Picture Order Count (POC) distance between the current picture and the reference picture in List 1 is equal to the POC distance between the reference picture in List 0 and the current picture.
- 현재 CU 높이가 8 이상이다.- Current CU height is 8 or higher.
- 루마 샘플의 개수(CU 폭*높이)가 64 이상이다.- The number of luma samples (CU width*height) is 64 or more.
2.11.2 "파라메트릭 오차 표면 방정식"에 기반한 서브-화소(sub-pel) 정제2.11.2 Sub-pel refinement based on the "parametric error surface equation"
이러한 방법은 다음과 같이 요약된다:These methods are summarized as follows:
1. 중심 위치가 주어진 반복에서의 최선의 비용 위치(cost position)인 경우에만 파라메트릭 오차 표면 근사(fit)가 계산된다.1. The parametric error surface fit is computed only if the center location is the best cost position for a given iteration.
2. 중심 위치 비용 및 중심으로부터의 (-1,0), (0,-1), (1,0) 및 (0,1) 위치에서의 비용이 다음 형태의 2-D 포물선 오차 표면 수학식을 근사화하기 위해서 사용된다2. The cost at the center location and the cost at positions (-1,0), (0,-1), (1,0) and (0,1) from the center are used to approximate the following 2-D parabolic error surface mathematical expression:
여기에서, (는 최소 비용인 위치에 대응하고, C는 최소 비용 값에 대응한다. 5 개의 미지수가 있는 5 개의 수학식을 풀어냄으로써, (은 다음과 같이 계산된다:Here, ( corresponds to the location with the minimum cost, and C corresponds to the minimum cost value. By solving five mathematical equations with five unknowns, ( is calculated as follows:
(는 분할이 수행되는 정밀도(예를 들어 몫의 얼마나 많은 비트가 계산되는지)를 조절함으로써, 임의의 요구된 서브-픽셀 정밀도로 계산될 수 있다. 1/16-화소 정확도의 경우, 몫의 절대적 값 내의 4-비트만이 계산될 필요가 있고, 이것은 CU마다 요구되는 2 개의 분할의 고속 천이된 감산에 기반한 구현형태를 제공한다.( can be computed to any desired sub-pixel precision, by controlling the precision with which the division is performed (i.e. how many bits of the quotient are computed). For 1/16-pixel accuracy, only 4 bits within the absolute value of the quotient need be computed, which provides an implementation based on a fast shifted subtraction of two divisions required per CU.
3. 계산된 (가 정수 거리 정제 MV에 추가되어 서브-픽셀로 정확한 정제 델타 MV를 얻는다.3. Calculated ( is added to the integer distance refined MV to obtain sub-pixel accurate refined delta MV.
2.11.3 DMVR에서 요구되는 레퍼런스 샘플2.11.3 Reference samples required in DMVR
크기 W * H인 블록에 대하여, 허용될 수 있는 최대 MVD 값이 +/- 오프셋이고(예를 들어, VVC에서는 2), 필터 크기가 filteSize (예를 들어, VVC에서는 루마의 경우에는 8이고 크로마의 경우에는 4임)라고 가정하면, (W + 2 * offSet + filterSize - 1) * (H + 2 * offSet + filterSize - 1) 개의 레퍼런스 샘플들이 요구된다. 메모리 대역폭을 감소시키기 위하여, 중앙의 (W + filterSize - 1) * (H + filterSize - 1) 개의 레퍼런스 샘플들만이 페치되고, 다른 픽셀들은 페치된 샘플들의 경계를 반복시킴으로써 생성된다. 8 * 8 블록에 대한 예가 도 15 에 도시되고, 15 * 15 개의 레퍼런스 샘플들이 페치되며, 페치된 샘플들의 경계가 반복되어 17 * 17 개의 영역을 생성한다.For a block of size W * H, assuming the maximum allowable MVD value is +/- offset (e.g. 2 in VVC) and the filter size is filterSize (e.g. 8 for luma and 4 for chroma in VVC), (W + 2 * offSet + filterSize - 1) * (H + 2 * offSet + filterSize - 1) reference samples are required. To reduce the memory bandwidth, only the center (W + filterSize - 1) * (H + filterSize - 1) reference samples are fetched and the other pixels are generated by repeating the boundaries of the fetched samples. An example for an 8 * 8 block is shown in Fig. 15, where 15 * 15 reference samples are fetched and the boundaries of the fetched samples are repeated to generate a 17 * 17 region.
움직임 벡터 정제 도중에, 이러한 레퍼런스 샘플들을 사용하여 이중선형 움직임 보상이 수행된다. 한편, 최종 움직임 보상도 이러한 레퍼런스 샘플들을 사용하여 수행된다.During motion vector refinement, bilinear motion compensation is performed using these reference samples. Meanwhile, final motion compensation is also performed using these reference samples.
2.12 상이한 블록 크기에 대한 대역폭 계산2.12 Calculating bandwidth for different block sizes
현재의 8-탭 루마 보간 필터 및 4-탭 크로마 보간 필터에 기반하여, 각각의 블록 유닛에 대한 메모리 대역폭 (4:2:0 색상 포맷의 경우, 두 개의 M/2 x N/2 크로마 블록들이 있는 하나의 MxN 루마 블록)이 아래의 표 1에 작성된다.Based on the current 8-tap luma interpolation filter and 4-tap chroma interpolation filter, the memory bandwidth for each block unit (one MxN luma block with two M/2 x N/2 chroma blocks for 4:2:0 color format) is written in Table 1 below.
MxNBlock size
MxN
표 1 예시적인 메모리 대역폭Table 1 Exemplary memory bandwidths
이와 유사하게, 현재의 8-탭 루마 보간 필터 및 4-탭 크로마 보간 필터에 기반하여, 각각의 MxN 루마 블록 유닛에 대한 메모리 대역폭이 다음 표 2 에 작성된다.Similarly, based on the current 8-tap luma interpolation filter and 4-tap chroma interpolation filter, the memory bandwidth for each MxN luma block unit is written in Table 2 below.
MxNBlock size
MxN
표 2 예시적인 메모리 대역폭Table 2 Exemplary memory bandwidths
그러므로, 색상 포맷과 무관하게, 각각의 블록 크기에 대한 대역폭 요구 사항은 내림 차순으로 다음이 된다:Therefore, regardless of color format, the bandwidth requirements for each block size, in descending order, are:
4*4 Bi > 4*8 Bi > 4*16 Bi > 4*4 Uni > 8*8 Bi > 4*32 Bi > 4*64Bi > 4*128 Bi >8*16 Bi >4*8 Uni >8*32 Bi >….4*4 Bi > 4*8 Bi > 4*16 Bi > 4*4 Bi > 8*8 Bi > 4*32 Bi > 4*64Bi > 4*128 Bi >8*16 Bi >4*8 Uni >8 *32 Bi >… .
2.12 VTM-3.0에서의 움직임 벡터 정밀도 이슈2.12 Motion vector accuracy issue in VTM-3.0
VTM-3.0에서는, MV 정밀도가 저장된 1/16 루마 픽셀이다. MV가 시그널링되고 있으면, 가장 정밀한 정밀도는 1/4 루마 픽셀이다.In VTM-3.0, the MV precision is stored as 1/16 luma pixel. When MV is signaled, the finest precision is 1/4 luma pixel.
3. 개시된 실시형태에 의해 해결되는 문제점들의 예3. Examples of problems solved by the disclosed embodiments
1. 어파인 예측과 관련되는 대역폭 제어 방법들은 충분히 명확하지 않고, 더 높은 탄력성을 가져야 한다.1. Bandwidth control methods related to affine prediction are not sufficiently clear and should have higher elasticity.
2. HEVC 디자인에서, 메모리 대역폭 요구 사항에 대한 최악의 경우는 8x8 양방향 예측이고, 하나의 코딩 유닛(CU)도 비대칭 예측 모드로 분할될 수 있으며, 예컨대 하나의 16x16이 4x16 및 12x16과 같은 크기의 두 개의 PU들로 분할될 수 있다는 것에 주의한다. VVC에서, 새로운 QTBT 파티션 구조에 기인하여, 하나의 CU는 4x16으로 설정될 수 있고, 양방향 예측이 이네이블될 수 있다. 양방향 예측된 4x16 CU는 양방향 예측된 8x8 CU와 비교할 때 더 높은 메모리 대역폭을 요구한다. 더 높은 대역폭을 요구하는 블록 크기(예컨대, 4×16 또는 16×4)를 어떻게 다뤄야 하는지는 알려져 있지 않다.2. In HEVC design, the worst case for memory bandwidth requirement is 8x8 bidirectional prediction, and note that a single coding unit (CU) can also be split into asymmetric prediction modes, for example, a 16x16 can be split into two PUs of different sizes, such as 4x16 and 12x16. In VVC, due to the novel QTBT partition structure, a CU can be set to 4x16 and bidirectional prediction can be enabled. A bidirectionally predicted 4x16 CU requires higher memory bandwidth compared to a bidirectionally predicted 8x8 CU. It is not known how to handle block sizes requiring higher bandwidth (e.g., 4x16 or 16x4).
3. GBi와 같은 새로운 코딩 툴은 더 많은 라인 버퍼 이슈가 생기게 한다3. New coding tools like GBi cause more line buffer issues
4. 인터-인트라 모드는 인터-코딩된 블록 내에서 사용되는 인트라-예측 모드를 시그널링하기 위해서 더 많은 메모리 및 로직을 요구한다.4. Inter-intra mode requires more memory and logic to signal the intra-prediction mode used within an inter-coded block.
5. 1/16 루마 픽셀 MV 정밀도는 더 높은 메모리 저장소를 요구한다.5. 1/16 luma pixel MV precision requires higher memory storage.
6. 하나의 8x8 블록 내의 네 개의 4x4 블록들을 보간하기 위하여, (8 + 7 + 1) * (8 + 7 + 1) 개의 레퍼런스 픽셀을 페치할 필요가 있고, 비-어파인/비-평면 모드 8x8 블록과 비교할 때 약 14% 더 많은 픽셀을 요구한다.6. To interpolate four 4x4 blocks within one 8x8 block, (8 + 7 + 1) * (8 + 7 + 1) reference pixels need to be fetched, which requires about 14% more pixels compared to non-affine/non-planar mode 8x8 blocks.
7. 하이브리드 인트라 및 인터 예측에서의 평균화 동작은 다른 코딩 툴, 예를 들어 가중된 예측, 로컬 조명 보상, OBMC 및 삼각 예측과 정렬되어야 할 것이고, 여기에서 오프셋은 천이가 이루어지기 이전에 추가된다.7. The averaging operation in hybrid intra and inter prediction should align with other coding tools, such as weighted prediction, local illumination compensation, OBMC, and triangular prediction, where the offset is added before the transition is made.
4. 실시형태의 예들4. Examples of embodiments
본 명세서에 개시된 기법은 어파인 예측 및 다른 새로운 코딩 툴에서 요구되는 대역폭 및 라인 버퍼를 감소시킬 수 있다.The techniques disclosed herein can reduce the bandwidth and line buffers required in affine prediction and other novel coding tools.
후술되는 설명은 일반적인 개념을 설명하기 위한 예로 여겨져야 하고, 좁은 의미로 해석되어서는 안된다. 더욱이, 실시형태들은 임의의 방식으로 결합될 수 있다.The following description should be considered as an example to illustrate the general concept and should not be construed in a narrow sense. Furthermore, the embodiments may be combined in any manner.
후술되는 설명에서, 어파인 코딩된 현재 CU의 폭 및 높이는 각각 w 및 h이다. 보간 필터 탭(움직임 보상에서의 보간 필터 탭)은 N(예를 들어, 8, 6, 4, 또는 2)이고, 현재 블록 크기는 WxH라는 것이 가정된다.In the following description, the width and height of the affine-coded current CU are w and h, respectively. It is assumed that the number of interpolation filter taps (interpolation filter taps in motion compensation) is N (e.g., 8, 6, 4, or 2), and the current block size is WxH.
어파인 예측을 위한 대역폭 제어Bandwidth control for affine prediction
예 1: 어파인 코딩된 블록 내의 서브-블록 SB의 움직임 벡터가 MVSB라고 가정하면 ((MVx, MVy)로 표시됨), MVSB는 대표 움직임 벡터 MV'(MV'x, MV'y)에 상대적으로 특정 범위 내에 속할 수 있다. Example 1: Assuming that the motion vector of sub-block SB in an affine coded block is MV SB (denoted as (MVx, MVy)), MV SB can fall within a certain range relative to the representative motion vector MV'(MV'x, MV'y).
일부 실시형태들에서는, MVx>=MV'x-DH0 이고 MVx<=MV'x+DH1 이며 MVy>=MV'y-DV0 이고 MVy<=MV'y+DV1 인데, 여기에서 MV' = (MV'x, MV'y)이다. 일부 실시형태들에서는, DH0은 DH1과 같거나 같지 않을 수 있다; DV0은 DV1과 같거나 같지 않을 수 있다. 일부 실시형태들에서는, DH0은 DV0 과 같거나 같지 않을 수 있다; DH1은 DV1과 같거나 같지 않을 수 있다. 일부 실시형태들에서는, DH0은 DH1과 같지 않을 수 있다; DV0은 DV1과 같지 않을 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 인코더로부터 디코더로, 예컨대 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU/PU에서 시그널링될 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 상이한 표준 프로파일/레벨/티어와 다르게 규정될 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 현재 블록의 폭 및 높이에 따라 달라질 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 현재 블록이 단방향 예측 또는 양방향 예측인지에 따라 달라질 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 서브-블록 SB의 위치에 따라 달라질 수 있다. 일부 실시형태들에서는, DH0, DH1, DV0 및 DV1은 MV'를 어떻게 얻느냐에 따라 달라질 수 있다.In some embodiments, MVx >=MV'x-DH0 and MVx<=MV'x+DH1 and MVy >=MV'y-DV0 and MVy<=MV'y+DV1, where MV' = (MV'x, MV'y). In some embodiments, DH0 may or may not be equal to DH1; DV0 may or may not be equal to DV1. In some embodiments, DH0 may or may not be equal to DV0; DH1 may or may not be equal to DV1. In some embodiments, DH0 may or may not be equal to DH1; DV0 may or may not be equal to DV1. In some embodiments, DH0, DH1, DV0 and DV1 can be signaled from encoder to decoder, e.g., in VPS/SPS/PPS/slice header/tile group header/tile/CTU/CU/PU. In some embodiments, DH0, DH1, DV0 and DV1 can be specified differently for different standard profiles/levels/tiers. In some embodiments, DH0, DH1, DV0 and DV1 can vary depending on the width and height of the current block. In some embodiments, DH0, DH1, DV0 and DV1 can vary depending on whether the current block is unidirectional or bidirectional. In some embodiments, DH0, DH1, DV0 and DV1 can vary depending on the location of the sub-block SB. In some embodiments, DH0, DH1, DV0 and DV1 can vary depending on how to obtain the MV'.
일부 실시형태들에서는, MV'는 MV0, MV1 또는 MV2와 같은 하나의 CPMV일 수 있다.In some embodiments, MV' can be a CPMV, such as MV0, MV1 or MV2.
일부 실시형태들에서는, MV'는 코너 서브-블록 중 하나에 대한 MC에서 사용되는 MV, 예컨대 도 3 의 MV0', MV1' 또는 MV2'일 수 있다.In some embodiments, MV' may be an MV used in MC for one of the corner sub-blocks, for example, MV0', MV1' or MV2' of FIG. 3.
일부 실시형태들에서는, MV'는 현재 블록의 어파인 모델로써, 현재 블록 안 또는 밖의 임의의 위치에 대해서 유도된 MV일 수 있다. 예를 들어, 이것은 현재 블록의 중심 위치(예를 들어, x=w/2 및 y=h/2)에 대해서 유도될 수 있다.In some embodiments, MV' is an affine model of the current block, which can be an MV derived for any location within or outside the current block. For example, it can be derived for the center location of the current block (e.g., x=w/2 and y=h/2).
일부 실시형태들에서는, MV'는 현재 블록의 임의의 서브-블록, 예컨대 중심 서브-블록(도 3 에 도시되는 C0, C1, C2 또는 C3) 중 하나에 대한 MC에서 사용되는 MV일 수 있다.In some embodiments, MV' can be an MV used in MC for any sub-block of the current block, for example, one of the central sub-blocks (C0, C1, C2 or C3 as shown in FIG. 3).
일부 실시형태들에서는, MVSB가 제약을 만족시키지 않으면, MVSB는 유효한 범위로 클리핑되어야 한다. 일부 실시형태들에서는, 클리핑된 MVSB가 MV 버퍼 내에 저장되고, 이것은 다음 코딩된 블록의 MV들을 예측하기 위하여 사용될 것이다. 일부 실시형태들에서는, 클리핑되기 전의 MVSB는 MV 버퍼 내에 저장된다.In some embodiments, if the MV SB does not satisfy the constraints, the MV SB should be clipped to a valid range. In some embodiments, the clipped MV SB is stored in the MV buffer, which will be used to predict MVs of the next coded block. In some embodiments, the MV SB before being clipped is stored in the MV buffer.
일부 실시형태들에서는, MVSB가 제약을 만족시키지 않으면, 해당 비트-스트림은 표준을 준수하지 않는 것으로 여겨진다(무효함). 일 예에서, MVSB가 제약을 만족시켜야 한다는 것이 표준에 규정될 수 있다. 이러한 제약은 임의의 제약을 준수하는 인코더에 의해서 준수되어야 하고, 그렇지 않으면 인코더는 표준을 준수하지 않는 것으로 간주된다.In some embodiments, if an MV SB does not satisfy a constraint, the bit-stream is considered non-compliant (invalid). In one example, the standard may specify that an MV SB must satisfy a constraint. This constraint must be satisfied by any constraint-compliant encoder, otherwise the encoder is considered non-compliant.
일부 실시형태들에서는, MVSB 및 MV'는 시그널링 MV 정밀도(signaling MV precision)(예컨대, 쿼터-픽셀 정밀도)로 표현될 수 있다. 일부 실시형태들에서는, MVSB 및 MV'는 저장 MV 정밀도(storage MV precision)(예컨대, 1/16 정밀도)로 표현될 수 있다. 일부 실시형태들에서는, MVSB 및 MV'는 시그널링 또는 저장 정밀도와 다른 정밀도(예컨대, 정수 정밀도)로 반올림될 수 있다.In some embodiments, MV SB and MV' can be expressed in signaling MV precision (e.g., quarter-pixel precision). In some embodiments, MV SB and MV' can be expressed in storage MV precision (e.g., 1/16 precision). In some embodiments, MV SB and MV' can be rounded to a precision different from the signaling or storage precision (e.g., integer precision).
예 2: 어파인 코딩된 블록에 대하여, 해당 블록 내의 각각의 MxN(예컨대, 8x4,4x8 또는 8x8) 블록이 기본 유닛으로서 간주된다. MxN 블록 내의 모든 4x4 서브-블록 MV들은, 네 개의 4x4 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 K 픽셀을 넘지 않도록 제약된다. Example 2: For an affine coded block, each MxN (e.g., 8x4, 4x8 or 8x8) block within that block is considered as a basic unit. All 4x4 sub-block MVs within an MxN block are constrained such that the maximum difference between the integer parts of four 4x4 sub-block MVs does not exceed K pixels.
일부 실시형태들에서는, 이러한 제약을 적용할지 그리고 어떻게 적용할지는 현재 블록이 양방향 예측 또는 단방향 예측을 적용하는지 여부에 따라 달라진다. 예를 들어, 이러한 제약은 단방향 예측이 아니라 양방향 예측에 대해서만 적용된다. 다른 예로서, M, N 및 K는 양방향 예측 및 단방향 예측에 대해서 다르다.In some embodiments, whether and how these constraints are applied depends on whether the current block applies bidirectional or unidirectional prediction. For example, these constraints are applied only for bidirectional prediction, not unidirectional prediction. As another example, M, N and K are different for bidirectional and unidirectional prediction.
일부 실시형태들에서는, M, N 및 K는 현재 블록의 폭 및 높이에 따라서 달라질 수 있다.In some embodiments, M, N and K may vary depending on the width and height of the current block.
일부 실시형태들에서는, 제약을 적용할지 여부는 인코더로부터 디코더로, 예컨대 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU/PU에서 시그널링될 수 있다. 예를 들어, 제약을 적용할지 여부를 표시하기 위하여 온/오프 플래그가 시그널링된다. 다른 예로서, M, N 및 K가 시그널링된다.In some embodiments, whether to apply a constraint can be signaled from the encoder to the decoder, e.g., in the VPS/SPS/PPS/slice header/tile group header/tile/CTU/CU/PU. For example, an on/off flag is signaled to indicate whether to apply a constraint. As another example, M, N and K are signaled.
일부 실시형태들에서는, M, N 및 K는 상이한 표준 프로파일/레벨/티어에 대해서 다르게 규정될 수 있다.In some embodiments, M, N and K may be defined differently for different standard profiles/levels/tiers.
예 3: 서브-블록의 폭 및 높이는 상이한 어파인 코딩된 블록들에 대해서 다르게 계산될 수 있다. Example 3: The width and height of a sub-block can be computed differently for different affine coded blocks.
일부 실시형태들에서는, 계산 방법은 단방향 예측 및 양방향 예측이 있는 어파인 코딩된 블록에 대해서 다르다. 일 예에서, 서브-블록 크기는 단방향 예측이 있는 블록에 대해서 고정된다(예컨대, 4×4, 4×8 또는 8×4로 고정됨). 다른 예에서, 서브-블록 크기는 양방향 예측이 있는 블록들에 대해서 계산된다. 이러한 경우에, 서브-블록 크기는 양방향 예측된 두 개의 상이한 어파인 블록들에 대해서 다를 수 있다.In some embodiments, the computation method is different for affine coded blocks with unidirectional prediction and bidirectional prediction. In one example, the sub-block size is fixed for blocks with unidirectional prediction (e.g., fixed to 4×4, 4×8 or 8×4). In another example, the sub-block size is computed for blocks with bidirectional prediction. In such cases, the sub-block size may be different for two different affine blocks with bidirectional prediction.
일부 실시형태들에서는, 양방향 예측된 어파인 블록에 대해서, 레퍼런스 목록 0으로부터의 서브-블록의 폭 및/또는 높이 및 레퍼런스 목록 1로부터의 서브-블록의 폭 및/또는 높이는 다를 수 있다. 일 예에서, 레퍼런스 목록 0으로부터의 서브-블록의 폭 및 높이가 Wsb0 및 Hsb0로서 각각 유도되고; 레퍼런스 목록 1로부터의 서브-블록의 폭 및 높이가 Wsb1 및 Hsb1로서 각각 유도된다고 가정한다. 그러면, 레퍼런스 목록 0 및 레퍼런스 목록 1 양자 모두에 대한 서브-블록의 최종 폭 및 높이가 Max(Wsb0, Wsb1) 및 Max(Hsb0, HSb1)로서 각각 계산된다.In some embodiments, for a bidirectionally predicted affine block, the width and/or height of a sub-block from reference list 0 and the width and/or height of a sub-block from reference list 1 can be different. In one example, assume that the width and height of a sub-block from reference list 0 are derived as Wsb0 and Hsb0, respectively; and that the width and height of a sub-block from reference list 1 are derived as Wsb1 and Hsb1, respectively. Then, the final width and height of the sub-block for both reference list 0 and reference list 1 are computed as Max(Wsb0, Wsb1) and Max(Hsb0, HSb1), respectively.
일부 실시형태들에서는, 서브-블록의 계산된 폭 및 높이는 루마 성분에만 적용된다. 크로마 성분의 경우, 이것은 언제나, 예컨대 4×4 크로마 서브-블록으로 고정되고, 이것은 4:2:0 색상 포맷을 가지는 8×8 루마 블록에 대응한다.In some embodiments, the computed width and height of a sub-block applies only to the luma component. For the chroma component, this is always fixed, for example, to a 4x4 chroma sub-block, which corresponds to an 8x8 luma block with 4:2:0 color format.
일부 실시형태들에서는, 서브-블록의 폭 및 높이를 결정하기 위해서 MVx-MV'x 및 MVy - MV'y가 계산된다. (MVx, MVy) 및 (MV'x, MV'y)가 예 1 에서 규정된다.In some embodiments, MVx-MV'x and MVy - MV'y are computed to determine the width and height of a sub-block. (MVx, MVy) and (MV'x, MV'y) are defined in Example 1.
일부 실시형태들에서는, 이러한 계산에 수반되는 MV들은 시그널링 MV 정밀도(signaling MV precision)(예컨대, 쿼터-픽셀 정밀도)로 표현될 수 있다. 일 예에서, 이러한 MV들은 저장 MV 정밀도(storage MV precision)(예컨대, 1/16 정밀도)로 표현될 수 있다. 다른 예로서, 이러한 MV들은 시그널링 또는 저장 정밀도와 다른 정밀도(예컨대, 정수 정밀도)로 반올림될 수 있다.In some embodiments, the MVs involved in these computations may be expressed in signaling MV precision (e.g., quarter-pixel precision). In one example, these MVs may be expressed in storage MV precision (e.g., 1/16 precision). As another example, these MVs may be rounded to a precision different from the signaling or storage precision (e.g., integer precision).
일부 실시형태들에서는, 서브-블록의 폭 및 높이를 결정하기 위한 계산에서 사용되는 임계는 인코더로부터 디코더로, 예컨대 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU/PU에서 시그널링될 수 있다.In some embodiments, the thresholds used in the calculations to determine the width and height of a sub-block may be signaled from the encoder to the decoder, e.g. in a VPS/SPS/PPS/slice header/tile group header/tile/CTU/CU/PU.
일부 실시형태들에서는, 서브-블록의 폭 및 높이를 결정하기 위한 계산에서 사용되는 임계는 상이한 표준 프로파일/레벨/티어들에 대해서 다를 수 있다.In some embodiments, the thresholds used in the calculations to determine the width and height of a sub-block may be different for different standard profiles/levels/tiers.
예 4: 하나의 W2xH2 서브-블록/블록 내의 W1xH1 개의 서브-블록들을 보간하기 위하여, (W2 + N - 1 - PW) * (H2 + N - 1 - PH) 개의 블록들이 우선 페치되고, 그 후에 예 6에서 설명된 픽셀 패딩 방법(예를 들어, 경계 픽셀 반복 방법)이 적용되어 더 큰 블록을 생성하며, 이제 이것이 W1xH1 개의 서브-블록들을 보간하기 위하여 사용된다. 예를 들어, W2=H2=8이고, W1=H1=4이며, PW=PH=0이다. Example 4: To interpolate W1xH1 sub-blocks within a single W2xH2 sub-block/block, (W2 + N - 1 - PW) * (H2 + N - 1 - PH) blocks are first fetched, then the pixel padding method described in Example 6 (e.g., boundary pixel repetition method) is applied to generate a larger block, which is now used to interpolate W1xH1 sub-blocks. For example, W2=H2=8, W1=H1=4, and PW=PH=0.
일부 실시형태들에서는, 임의의 W1xH1 서브-블록의 MV의 정수 부분은 W2xH2 서브-블록/블록 모두를 페치하기 위하여 사용될 수 있고, 상이한 경계 픽셀 반복 방법이 이에 상응하여 요구될 수 있다. 예를 들어, 모든 W1xH1 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 1 픽셀을 넘지 않으면, 상단-좌측의 W1xH1 서브-블록의 MV의 정수 부분이 W2xH2 서브-블록/블록 전체를 페치하기 위하여 사용된다. 레퍼런스 블록의 우측 및 하단 경계는 한 번 반복된다. 다른 예로서, 모든 W1xH1 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 1 픽셀을 넘지 않으면, 하단-우측의 W1xH1 서브-블록의 MV의 정수 부분이 W2xH2 서브-블록/블록 전체를 페치하기 위하여 사용된다. 레퍼런스 블록의 좌측 및 상단 경계는 한 번 반복된다.In some embodiments, an integer part of the MV of any W1xH1 sub-block may be used to fetch the entire W2xH2 sub-block/block, and different boundary pixel repetition methods may be required accordingly. For example, if the maximum difference between the integer parts of all W1xH1 sub-block MVs does not exceed 1 pixel, then an integer part of the MV of the top-left W1xH1 sub-block is used to fetch the entire W2xH2 sub-block/block. The right and bottom boundaries of the reference block are repeated once. As another example, if the maximum difference between the integer parts of all W1xH1 sub-block MVs does not exceed 1 pixel, then an integer part of the MV of the bottom-right W1xH1 sub-block is used to fetch the entire W2xH2 sub-block/block. The left and top boundaries of the reference block are repeated once.
일부 실시형태들에서는, 임의의 W1xH1 서브-블록의 MV가 우선 수정되고, 그 후에 전체 W2xH2 서브-블록/블록을 페치하기 위하여 사용될 수 있고, 상이한 경계 픽셀 반복 방법이 이에 상응하여 요구될 수 있다. 예를 들어, 모든 W1xH1 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 2 픽셀을 넘지 않는 경우, 상단-좌측 W1xH1 서브-블록의 MV의 정수 부분이 (1, 1)만큼 가산될 수 있고(여기에서 1은 1 정수 픽셀 거리를 의미함), 그 후에 전체 W2xH2 서브-블록/블록을 페치하기 위하여 사용된다. 이러한 경우에, 레퍼런스 블록의 좌측, 우측, 상단 및 하단 경계는 한 번 반복된다. 다른 예로서, 모든 W1xH1 서브-블록 MV들의 정수 부분들 사이의 최대 차이가 2 픽셀을 넘지 않는 경우, 하단-우측 W1xH1 서브-블록의 MV의 정수 부분이 (-1, -1)만큼 가산될 수 있고(여기에서 1은 1 정수 픽셀 거리를 의미함), 그 후에 전체 W2xH2 서브-블록/블록을 페치하기 위하여 사용된다. 이러한 경우에, 레퍼런스 블록의 좌측, 우측, 상단 및 하단 경계는 한 번 반복된다.In some embodiments, the MV of any W1xH1 sub-block may be modified first and then used to fetch the entire W2xH2 sub-block/blocks, and different boundary pixel repetition methods may be required accordingly. For example, if the maximum difference between the integer parts of all W1xH1 sub-block MVs does not exceed 2 pixels, then the integer part of the MV of the top-left W1xH1 sub-block may be incremented by (1, 1) (where 1 means 1 integer pixel distance), and then used to fetch the entire W2xH2 sub-block/blocks. In such a case, the left, right, top and bottom boundaries of the reference block are repeated once. As another example, if the maximum difference between the integer parts of all W1xH1 sub-block MVs does not exceed 2 pixels, the integer part of the MV of the bottom-right W1xH1 sub-block can be incremented by (-1, -1) (where 1 means 1 integer pixel distance), and then used to fetch the entire W2xH2 sub-block/blocks. In this case, the left, right, top and bottom boundaries of the reference block are repeated once.
특정 블록 크기에 대한 대역폭 제어Bandwidth control for specific block sizes
예 5: 현재 블록의 w 및 h가 다음과 같은 조건들 중 하나 이상을 만족시키면, 양방향 예측이 허용되지 않는다. Example 5: Bidirectional prediction is not allowed if w and h of the current block satisfy one or more of the following conditions:
A. w는 T1과 같고 h가 T2 와 같거나, h가 T1과 같고 w가 T2 와 같다. 일 예에서, T1 = 4이고 T2 = 16이다. A. w is equal to T1 and h is equal to T2, or h is equal to T1 and w is equal to T2. In one example, T1 = 4 and T2 = 16.
B. w는 T1과 같고 h는 T2보다 크지 않거나, h가 T1과 같고 w는 T2보다 크지 않다. 일 예에서, T1 = 4이고 T2 = 16이다. B. w is equal to T1 and h is not greater than T2, or h is equal to T1 and w is not greater than T2. In one example, T1 = 4 and T2 = 16.
C. w는 T1보다 크지 않고 h가 T2보다 크지 않거나, h가 T1보다 크지 않고 w가 T2보다 크지 않다. 일 예에서, T1 = 8이고 T2 = 8이다. 다른 예에서, T1==8, T2==4이다. 또 다른 예에서, T1==4 및 T2==4이다. C. w is not greater than T1 and h is not greater than T2, or h is not greater than T1 and w is not greater than T2. In one example, T1 = 8 and T2 = 8. In another example, T1==8, T2==4. In yet another example, T1==4 and T2==4.
일부 실시형태들에서는, 양방향 예측은 4x8 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 8x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x16 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 16x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x8, 8x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x16, 16x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x8, 16x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x16, 8x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4xN 블록들에 대해서 디스에이블될 수 있고, 예를 들어 N <= 16 이다. 일부 실시형태들에서는, 양방향 예측은 Nx4 블록들에 대해서 디스에이블될 수 있고, 예를 들어 N <= 16 이다. 일부 실시형태들에서는, 양방향 예측은 8xN 블록들에 대해서 디스에이블될 수 있고, 예를 들어 N <= 16 이다. 일부 실시형태들에서는, 양방향 예측은 Nx8 블록들에 대해서 디스에이블될 수 있고, 예를 들어 N <= 16 이다. 일부 실시형태들에서는, 양방향 예측은 4x8, 8x4, 4x16 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x8, 8x4, 16x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 8x4, 4x16, 16x4 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 양방향 예측은 4x8, 8x4, 4x16, 16x4 블록들에 대해서 디스에이블될 수 있다.In some embodiments, bidirectional prediction may be disabled for 4x8 blocks. In some embodiments, bidirectional prediction may be disabled for 8x4 blocks. In some embodiments, bidirectional prediction may be disabled for 4x16 blocks. In some embodiments, bidirectional prediction may be disabled for 16x4 blocks. In some embodiments, bidirectional prediction may be disabled for 4x8, 8x4 blocks. In some embodiments, bidirectional prediction may be disabled for 4x16, 16x4 blocks. In some embodiments, bidirectional prediction may be disabled for 4x8, 16x4 blocks. In some embodiments, bidirectional prediction may be disabled for 4x16, 8x4 blocks. In some embodiments, bidirectional prediction can be disabled for 4xN blocks, for example, where N <= 16. In some embodiments, bidirectional prediction can be disabled for Nx4 blocks, for example, where N <= 16. In some embodiments, bidirectional prediction can be disabled for 8xN blocks, for example, where N <= 16. In some embodiments, bidirectional prediction can be disabled for Nx8 blocks, for example, where N <= 16. In some embodiments, bidirectional prediction can be disabled for 4x8, 8x4, 4x16 blocks. In some embodiments, bidirectional prediction can be disabled for 4x8, 8x4, 16x4 blocks. In some embodiments, bidirectional prediction can be disabled for 8x4, 4x16, 16x4 blocks. In some embodiments, bidirectional prediction can be disabled for 4x8, 8x4, 4x16, and 16x4 blocks.
일부 실시형태들에서는, 본 명세서에서 개시되는 블록 크기는 루마 성분과 같은 하나의 색성분을 가리킬 수 있고, 양방향 예측이 디스에이블되는지 여부에 대한 결정은 모든 색성분에 적용될 수 있다. 예를 들어, 양방향 예측이 어떤 블록의 루마 성분의 블록 크기에 따라서 디스에이블되면, 양방향 예측도 다른 색성분의 대응하는 블록에 대해서 디스에이블될 것이다. 일부 실시형태들에서는, 본 명세서에서 개시되는 블록 크기는 루마 성분과 같은 하나의 색성분을 가리킬 수 있고, 양방향 예측이 디스에이블되는지 여부에 대한 결정은 해당 색성분에만 적용될 수 있다.In some embodiments, the block size disclosed herein may refer to one color component, such as a luma component, and the determination of whether bidirectional prediction is disabled may apply to all color components. For example, if bidirectional prediction is disabled based on the block size of the luma component of a block, bidirectional prediction will also be disabled for the corresponding block of the other color components. In some embodiments, the block size disclosed herein may refer to one color component, such as a luma component, and the determination of whether bidirectional prediction is disabled may apply only to that color component.
일부 실시형태들에서는, 양방향 예측이 어떤 블록에 대해서 디스에이블되고, 선택된 병합 후보가 양방향 예측된다면, 병합 후보의 레퍼런스 목록 0 또는 레퍼런스 목록 1로부터의 오직 하나의 MV만이 해당 블록에 할당된다.In some embodiments, if bidirectional prediction is disabled for a block and the selected merge candidate is bidirectionally predicted, only one MV from reference list 0 or reference list 1 of the merge candidate is assigned to that block.
일부 실시형태들에서는, 양방향 예측이 어떤 블록에 대하여 디스에이블되면, 삼각 예측 모드(TPM)는 해당 블록에 대하여 허용되지 않는다.In some embodiments, if bidirectional prediction is disabled for a block, triangular prediction mode (TPM) is not allowed for that block.
일부 실시형태들에서는, 예측 방향(목록 0/1로부터의 단방향 예측, 양방향 예측)을 어떻게 시그널링할지는 블록 차원에 따라서 달라질 수 있다. 일 예에서, 1) 블록 폭 * 블록 높이 < 64 이거나 2) 블록 폭 * 블록 높이 = 64 이지만 폭이 높이와 같지 않는 경우에, 목록 0/1로부터의 단방향 예측의 표시가 시그널링될 수 있다. 다른 예로서, 1) 블록 폭 * 블록 높이 > 64 이거나 2) 블록 폭 * 블록 높이 = 64 이고 폭이 높이와 같은 경우에, 목록 0/1로부터의 단방향 예측 또는 양방향 예측의 표시가 시그널링될 수 있다.In some embodiments, how to signal the prediction direction (unidirectional prediction from list 0/1, bidirectional prediction) can vary depending on the block dimension. In one example, an indication of unidirectional prediction from list 0/1 can be signaled if 1) block width * block height < 64 or 2) block width * block height = 64 but width is not equal to height. As another example, an indication of unidirectional prediction or bidirectional prediction from list 0/1 can be signaled if 1) block width * block height > 64 or 2) block width * block height = 64 and width is equal to height.
일부 실시형태들에서는, 4x4 블록들에 대해서는 단방향 예측 및 양방향 예측 양자 모두가 디스에이블될 수 있다. 일부 실시형태들에서는, 이것은 어파인 코딩된 블록들에 대해서 디스에이블될 수 있다. 또는, 이것은 비-어파인 코딩된 블록들에 대해서 디스에이블될 수 있다. 일부 실시형태들에서는, 8x8 블록에 대한 사중 트리 분할, 8x4 또는 4x8 블록에 대한 이중 트리 분할, 4x16 또는 16x4 블록에 대한 삼중 트리 분할의 표시는 스킵될 수 있다. 일부 실시형태들에서는, 4x4 블록은 인트라-블록으로서 코딩되어야 한다. 일부 실시형태들에서는, 4x4 블록에 대한 MV는 정수-정밀도를 가져야 한다. 예를 들어, 4x4 블록에 대한 IMV 플래그는 1이어야 한다. 다른 예로서, 4x4 블록에 대한 MV는 정수-정밀도로 반올림되어야 한다.In some embodiments, both unidirectional prediction and bidirectional prediction may be disabled for 4x4 blocks. In some embodiments, it may be disabled for affine coded blocks. Alternatively, it may be disabled for non-affine coded blocks. In some embodiments, the indication of quad-tree splitting for 8x8 blocks, dual-tree splitting for 8x4 or 4x8 blocks, or triple-tree splitting for 4x16 or 16x4 blocks may be skipped. In some embodiments, the 4x4 blocks must be coded as intra-blocks. In some embodiments, the MV for the 4x4 blocks must have integer precision. For example, the IMV flag for the 4x4 blocks must be 1. As another example, the MV for the 4x4 blocks must be rounded to integer precision.
일부 실시형태들에서는, 양방향 예측이 허용된다. 그러나, 보간 필터 탭이 N이라고 가정하면, (W + N - 1) * (H + N - 1) 개의 레퍼런스 픽셀을 페치하는 대신에, (W + N - 1 - PW) * (W + N - 1 - PH) 개의 레퍼런스 픽셀들만이 페치된다. 한편, 레퍼런스 블록 경계(상단, 좌측, 하단 및 우측 경계)에 있는 픽셀들은 반복되어 도 9 에 도시된 바와 같은 (W + N - 1) * (H + N - 1) 블록을 생성하고, 이것이 최종 보간을 위하여 사용된다. 일부 실시형태들에서는, PH는 제로이고, 좌측 및/또는 우측 경계만이 반복된다. 일부 실시형태들에서는, PW는 제로이고, 상단 및/또는 하단 경계만이 반복된다. 일부 실시형태들에서는, PW 및 PH 양자 모두는 제로보다 크고, 우선 좌측 및/또는 우측 경계가 반복되며, 그 후에 상단 및/또는 하단 경계가 반복된다. 일부 실시형태들에서는, PW 및 PH 양자 모두는 제로보다 크고, 우선 상단 및/또는 하단 경계가 반복되며, 그 후에 좌측 및 우측 경계가 반복된다. 일부 실시형태들에서는, 좌측 경계는 M1 회 반복되고, 우측 경계는 PW - M1 회 반복된다. 일부 실시형태들에서는, 상단 경계는 M2 회 반복되고, 하단 경계는 PH - M2 회 반복된다. 일부 실시형태들에서는, 이러한 경계 픽셀 반복 방법은 모든 레퍼런스 블록 중 일부 또는 전부에 적용될 수 있다. 일부 실시형태들에서는, PW 및 PH는 Y, Cb 및 Cr과 같은 상이한 색성분에 대해서 다를 수 있다.In some embodiments, bidirectional prediction is allowed. However, assuming the number of interpolation filter taps is N, instead of fetching (W + N - 1) * (H + N - 1) reference pixels, only (W + N - 1 - PW) * (W + N - 1 - PH) reference pixels are fetched. Meanwhile, pixels at the reference block boundaries (top, left, bottom and right boundaries) are repeated to generate a (W + N - 1) * (H + N - 1) block as illustrated in FIG. 9, which is used for the final interpolation. In some embodiments, PH is zero, and only the left and/or right boundaries are repeated. In some embodiments, PW is zero, and only the top and/or bottom boundaries are repeated. In some embodiments, both PW and PH are greater than zero, and the left and/or right boundaries are repeated first, followed by the top and/or bottom boundaries. In some embodiments, both PW and PH are greater than zero, and first the top and/or bottom boundaries are repeated, followed by the left and right boundaries. In some embodiments, the left boundary is repeated M1 times and the right boundary is repeated PW - M1 times. In some embodiments, the top boundary is repeated M2 times and the bottom boundary is repeated PH - M2 times. In some embodiments, this boundary pixel repetition method can be applied to some or all of the reference blocks. In some embodiments, PW and PH can be different for different color components, such as Y, Cb and Cr.
도 9는 보간 이전의 레퍼런스 블록의 반복 경계 픽셀(repeat boundary pixel)의 일 예를 도시한다.Figure 9 illustrates an example of repeat boundary pixels of a reference block before interpolation.
예 6: 일부 실시형태들에서는, (W + N - 1 - PW) * (W + N - 1 - PH) 개의 레퍼런스 픽셀들((W + N - 1) * (H + N - 1) 개의 레퍼런스 픽셀들 대신에)이 WxH 블록의 움직임 보상을 위해서 페치될 수 있다. 범위 (W + N - 1 - PW) * (W + N - 1 - PH) 밖이지만 범위 (W + N - 1) * (H + N - 1) 안에 있는 샘플들이 보간 프로세스를 수행하기 위해서 패딩된다. 하나의 패딩 방법에서, 레퍼런스 블록 경계(상단, 좌측, 하단 및 우측 경계)에 있는 픽셀들은 반복되어 도 11 에 도시된 바와 같은 (W + N - 1) * (H + N - 1) 블록을 생성하고, 이것이 최종 보간을 위하여 사용된다. Example 6: In some embodiments, (W + N - 1 - PW) * (W + N - 1 - PH) reference pixels (instead of (W + N - 1) * (H + N - 1) reference pixels) can be fetched for motion compensation of a WxH block. Samples that are outside the range (W + N - 1 - PW) * (W + N - 1 - PH) but within the range (W + N - 1) * (H + N - 1) are padded to perform the interpolation process. In one padding method, pixels at the reference block boundaries (top, left, bottom and right boundaries) are repeated to generate a (W + N - 1) * (H + N - 1) block as illustrated in FIG. 11, which is used for the final interpolation.
일부 실시형태들에서는, PH는 제로이고, 좌측 및/또는 우측 경계만이 반복된다.In some embodiments, PH is zero and only the left and/or right boundaries are repeated.
일부 실시형태들에서는, PW는 제로이고, 상단 또는/및 하단 경계만이 반복된다.In some embodiments, PW is zero and only the upper and/or lower boundaries are repeated.
일부 실시형태들에서는, PW 및 PH 양자 모두는 제로보다 크고, 우선 좌측 및/또는 우측 경계가 반복되며, 그 후에 상단 및/또는 하단 경계가 반복된다.In some embodiments, both PW and PH are greater than zero, and first the left and/or right boundaries are repeated, followed by the top and/or bottom boundaries.
일부 실시형태들에서는, PW 및 PH 양자 모두는 제로보다 크고, 우선 상단 및/또는 하단 경계가 반복되며, 그 후에 좌측 및 우측 경계가 반복된다.In some embodiments, both PW and PH are greater than zero, and first the upper and/or lower boundaries are repeated, followed by the left and right boundaries.
일부 실시형태들에서는, 좌측 경계는 M1 회 반복되고, 우측 경계는 PW - M1 회 반복된다.In some embodiments, the left boundary is repeated M1 times and the right boundary is repeated PW - M1 times.
일부 실시형태들에서는, 상단 경계는 M2 회 반복되고, 하단 경계는 PH - M2 회 반복된다.In some embodiments, the upper boundary is repeated M2 times and the lower boundary is repeated PH - M2 times.
일부 실시형태들에서는, 이러한 경계 픽셀 반복 방법은 모든 레퍼런스 블록 중 일부 또는 전부에 적용될 수 있다.In some embodiments, this boundary pixel repetition method may be applied to some or all of the reference blocks.
일부 실시형태들에서는, PW 및 PH는 Y, Cb 및 Cr과 같은 상이한 색성분에 대해서 다를 수 있다.In some embodiments, PW and PH can be different for different color components, such as Y, Cb, and Cr.
일부 실시형태들에서는, PW 및 PH는 상이한 블록 크기 또는 형상에 대해서 다를 수 있다.In some embodiments, PW and PH may be different for different block sizes or shapes.
일부 실시형태들에서는, PW 및 PH는 단방향 예측 및 양방향 예측에 대해서 다를 수 있다.In some embodiments, PW and PH can be different for unidirectional and bidirectional prediction.
일부 실시형태들에서는, 패딩은 어파인 모드에서 수행되지 않을 수 있다.In some embodiments, padding may not be performed in affine mode.
일부 실시형태들에서, 범위 (W + N - 1 - PW) * (W + N - 1 - PH) 밖이지만 범위 (W + N - 1) * (H + N - 1) 안에 있는 샘플들이 단일 값이 되도록 설정된다. 일부 실시형태들에서는, 단일 값은 1<<(BD-1)인데, 여기에서 BD는 샘플의 비트-깊이, 예컨대 8 또는 10이다. 일부 실시형태들에서는, 단일 값은 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU 행/CTU/CU/PU 내에서 인코더로부터 디코더로 시그널링된다. 일부 실시형태들에서는, 단일 값은 범위 (W + N - 1 - PW) * (W + N - 1 - PH) 안의 샘플들로부터 유도된다.In some embodiments, samples outside the range (W + N - 1 - PW) * (W + N - 1 - PH) but within the range (W + N - 1) * (H + N - 1) are set to a single value. In some embodiments, the single value is 1<<(BD-1), where BD is the bit-depth of the sample, e.g., 8 or 10. In some embodiments, the single value is signaled from the encoder to the decoder within a VPS/SPS/PPS/slice header/tile group header/tile/CTU row/CTU/CU/PU. In some embodiments, the single value is derived from samples within the range (W + N - 1 - PW) * (W + N - 1 - PH).
예 7: DMVR에서 (W + filterSize - 1) * (H + filterSize - 1) 개의 레퍼런스 샘플을 페치하는 대신에, (W + filterSize - 1 - PW) * (H + filterSize - 1 - PH) 개의 레퍼런스 샘플들이 페치될 수 있고, 요구된 다른 모든 샘플들은 페치된 레퍼런스 샘플들의 경계를 반복시킴으로써 생성될 수 있으며, 여기에서 PW >= 0 이고 PH >= 0 이다. Example 7: Instead of fetching (W + filterSize - 1) * (H + filterSize - 1) reference samples in DMVR, (W + filterSize - 1 - PW) * (H + filterSize - 1 - PH) reference samples can be fetched, and all other required samples can be generated by iterating over the boundaries of the fetched reference samples, where PW >= 0 and PH >= 0.
일부 실시형태들에서는, 예 6에서 제안된 방법이 비-페치된 샘플들을 패딩하기 위해서 사용될 수 있다.In some embodiments, the method proposed in Example 6 can be used to pad non-fetched samples.
일부 실시형태들에서는, DMVR의 최종 움직임 보상에서, 패딩이 다시 수행되지 않을 수도 있다.In some embodiments, padding may not be performed again in the final motion compensation of DMVR.
일부 실시형태들에서는, 전술된 방법을 적용할지 여부는 블록 차원에 따라 달라질 수 있다.In some embodiments, whether or not to apply the above-described method may depend on the block dimension.
예 8: inter_pred_idc의 시그널링 방법은 w 및 h가 예 5 에서의 조건을 만족시키는지 여부에 따라 달라질 수 있다. 하나의 예가 다음 표 3 에 표시된다: Example 8: The signaling method for inter_pred_idc can vary depending on whether w and h satisfy the conditions in Example 5. One example is shown in Table 3 below:
다른 예가 다음 표 4 에 표시된다:Another example is shown in Table 4 below:
또 다른 예가 다음 표 5 에 표시된다:Another example is shown in Table 5 below:
예 9: 병합 후보 목록 구성 프로세스는 w 및 h가 예 4의 조건을 만족시키는지 여부에 따라서 달라질 수 있다. 다음 실시형태들은 w 및 h가 조건들을 만족시키는 경우를 기술한다. Example 9 : The process of constructing the list of merge candidates may vary depending on whether w and h satisfy the conditions of Example 4. The following embodiments describe the case where w and h satisfy the conditions.
일부 실시형태들에서는, 하나의 병합 후보가 양방향 예측을 사용하면, 레퍼런스 목록 0로부터의 오직 예측만이 보유되고, 병합 후보는 레퍼런스 목록 0을 참조하는 단방향 예측으로서 취급된다.In some embodiments, if a merge candidate uses bidirectional prediction, only predictions from reference list 0 are retained, and the merge candidate is treated as a unidirectional prediction referencing reference list 0.
일부 실시형태들에서는, 하나의 병합 후보가 양방향 예측을 사용하면, 레퍼런스 목록 1로부터의 오직 예측만이 보유되고, 병합 후보는 레퍼런스 목록 1을 참조하는 단방향 예측으로서 취급된다.In some embodiments, if a merge candidate uses bidirectional prediction, only predictions from reference list 1 are retained, and the merge candidate is treated as a unidirectional prediction referencing reference list 1.
일부 실시형태들에서는, 하나의 병합 후보가 양방향 예측을 사용하면, 해당 후보는 이용불가능한 것으로 취급된다. 즉, 이러한 병합 후보는 병합 목록으로부터 제거된다.In some embodiments, if a merge candidate uses bidirectional prediction, that candidate is treated as unavailable, i.e., the merge candidate is removed from the merge list.
일부 실시형태들에서는, 삼각 예측 모드에 대한 병합 후보 목록 구성 프로세스가 그 대신에 사용된다.In some embodiments, a merge candidate list construction process for the triangle prediction mode is used instead.
예 10: 코딩 트리 분할 프로세스는, 분할 이후의 자식 CU의 폭 및 높이가 예 5의 조건을 만족시키는지 여부에 따라서 달라질 수 있다. Example 10: The coding tree splitting process may vary depending on whether the width and height of the child CU after the splitting satisfies the conditions of Example 5.
일부 실시형태들에서는, 분할 이후의 자식 CU의 폭 및 높이가 예 5의 조건을 만족시키면, 분할은 허용되지 않는다. 일부 실시형태들에서는, 코딩 트리 분할의 시그널링은 한 종류의 분할이 허용되는지 여부에 따라서 달라질 수 있다. 일 예에서, 한 종류의 분할이 허용되지 않는다면, 해당 분할을 나타내는 코드워드는 생략된다.In some embodiments, a split is not allowed if the width and height of the child CU after the split satisfies the conditions of Example 5. In some embodiments, the signaling of a coding tree split may vary depending on whether a type of split is allowed. In one example, if a type of split is not allowed, the codeword representing that split is omitted.
예 11: 스킵 플래그 및/또는 인트라 블록 복제(Intra Block Copy; IBC) 플래그의 시그널링은 블록의 폭 및/또는 높이가 어떤 조건(예를 들어, 예 5 에서 언급된 조건들)을 만족시키는지 여부에 따라서 달라질 수 있다. Example 11 : Signaling of the skip flag and/or the Intra Block Copy (IBC) flag may vary depending on whether the width and/or height of the block satisfies certain conditions (e.g., the conditions mentioned in Example 5).
일부 실시형태들에서는, 조건은 루마 블록이 X 개보다 많은 샘플을 보유하지 않는 것이다. 예를 들어 X = 16이다;In some embodiments, the condition is that a luma block does not have more than X samples, for example X = 16;
일부 실시형태들에서는, 조건은 루마 블록이 X 개의 샘플을 보유하는 것이다. 예를 들어 X = 16이다.In some embodiments, the condition is that the luma block has X samples, for example X = 16.
일부 실시형태들에서는, 조건은 루마 블록의 폭 및 높이 양자 모두가 X와 같은 것이다. 예를 들어 X = 4이다;In some embodiments, the condition is that both the width and the height of the luma block are equal to X, for example X = 4;
일부 실시형태들에서는, 위의 조건들 중 하나 또는 일부가 참이면, 이러한 블록에 대해서 인터 모드 및/또는 IBC 모드가 허용되지 않는다.In some embodiments, if one or some of the above conditions are true, inter mode and/or IBC mode are not allowed for such blocks.
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드가 허용되지 않으면, 스킵 플래그는 이것에 대해서 시그널링되지 않을 수도 있다. 또는, 더 나아가 스킵 플래그는 거짓인 것으로 추론될 수 있다.In some embodiments, if inter mode is not allowed for a block, the skip flag may not be signaled for it. Or, further, the skip flag may be inferred to be false.
일부 실시형태들에서는, 어떤 블록에 대해서 인터 모드 및 IBC 모드가 허용되지 않으면, 스킵 플래그는 이것에 대해서 시그널링되지 않을 수도 있고, 묵시적으로 거짓이 되도록 유도될 수 있다(예를 들어, 해당 블록은 비-스킵 모드에서 코딩되도록 유도된다).In some embodiments, if inter mode and IBC mode are not allowed for a block, the skip flag may not be signaled for this and may be implicitly driven to false (e.g., the block is driven to be coded in non-skip mode).
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드가 허용되지 않지만 해당 블록에 대해서 IBC 모드가 허용되면, 스킵 플래그는 여전히 시그널링될 수 있다. 일부 실시형태들에서는, 해당 블록이 스킵 모드에서 코딩된다면 IBC 모드 시그널링되지 않을 수 있고, IBC 플래그는 묵시적으로 참이 되도록 유도된다(예를 들어, 해당 블록은 IBC 모드에서 코딩되도록 유도된다).In some embodiments, if inter mode is not allowed for a block, but IBC mode is allowed for that block, the skip flag may still be signaled. In some embodiments, if the block is coded in skip mode, the IBC mode may not be signaled, and the IBC flag is implicitly driven to true (e.g., the block is driven to be coded in IBC mode).
예 12: 예측 모드의 시그널링은 블록의 폭 및/또는 높이가 어떤 조건(예를 들어, 예 5 에서 언급된 조건들)을 만족시키는지 여부에 따라서 달라질 수 있다. Example 12: Signaling of the prediction mode may vary depending on whether the width and/or height of the block satisfies certain conditions (e.g., the conditions mentioned in Example 5).
일부 실시형태들에서는, 조건은 루마 블록이 X 개보다 많은 샘플을 보유하지 않는 것이고, 예를 들어 X = 16 이다.In some embodiments, the condition is that a luma block does not have more than X samples, for example X = 16.
일부 실시형태들에서는, 조건은 루마 블록이 X 개의 샘플을 보유하는 것이고, 예를 들어 X = 16 이다.In some embodiments, the condition is that the luma block has X samples, for example X = 16.
일부 실시형태들에서는, 조건은 루마 블록의 폭 및 높이 양자 모두가 X와 같은 것이고, 예를 들어 X = 4 이다.In some embodiments, the condition is that both the width and the height of the luma block are equal to X, for example X = 4.
일부 실시형태들에서는, 위의 조건들 중 하나 또는 일부가 참이면, 이러한 블록에 대해서 인터 모드 및/또는 IBC 모드가 허용되지 않는다.In some embodiments, if one or some of the above conditions are true, inter mode and/or IBC mode are not allowed for such blocks.
일부 실시형태들에서는, 특정 모드의 표시의 시그널링이 스킵될 수 있다.In some embodiments, signaling of indication of a particular mode may be skipped.
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드 및 IBC 모드가 허용되지 않으면, 인터 및 IBC 모드의 표시의 시그널링이 스킵되고, 이것이 인트라 모드인지 또는 팔레트 모드인지 여부와 같은, 남아 있는 허용된 모드들은 여전히 시그널링될 수 있다.In some embodiments, if neither the Inter mode nor the IBC mode is allowed for a block, the signaling of the indication of the Inter and IBC modes is skipped, and the remaining allowed modes, such as whether it is an Intra mode or a Palette mode, can still be signaled.
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드 및 IBC 모드가 허용되지 않으면, 예측 모드는 시그널링되지 않을 수도 있다. 또는, 더 나아가, 예측 모드는 묵시적으로 인트라 모드가 되도록 유도될 수 있다.In some embodiments, if neither inter mode nor IBC mode is allowed for a block, the prediction mode may not be signaled. Or, further, the prediction mode may be implicitly derived to be intra mode.
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드가 허용되지 않으면, 인터 모드의 표시의 시그널링이 스킵되고, 이것이 인트라 모드인지 또는 IBC 모드인지 여부와 같은, 남아 있는 허용된 모드들은 여전히 시그널링될 수 있다. 또는, 이것이 인트라 모드인지 또는 IBC 모드인지 또는 팔레트 모드인지와 같은, 남아 있는 허용된 모드들은 여전히 시그널링될 수 있다.In some embodiments, if inter mode is not allowed for a block, the signaling of the inter mode indication is skipped, and the remaining allowed modes, such as whether it is intra mode or IBC mode, can still be signaled. Alternatively, the remaining allowed modes, such as whether it is intra mode or IBC mode or palette mode, can still be signaled.
일부 실시형태들에서는, 어떤 블록에 대하여 인터 모드가 허용되지 않지만 IBC 모드 및 인트라 모드가 해당 블록에 대하여 허용되면, 해당 블록이 IBC 모드에서 코딩되는지 여부를 표시하기 위해서 IBC 플래그가 시그널링될 수 있다. 또는, 더 나아가, 예측 모드는 시그널링되지 않을 수도 있다.In some embodiments, if inter mode is not allowed for a block, but IBC mode and intra mode are allowed for that block, an IBC flag may be signaled to indicate whether the block is coded in IBC mode. Alternatively, the prediction mode may not be signaled.
예 13: 삼각형 모드의 시그널링은 블록의 폭 및/또는 높이가 어떤 조건(예를 들어, 예 5 에서 언급된 조건들)을 만족시키는지 여부에 따라서 달라질 수 있다. Example 13 : Signaling of the triangle mode may vary depending on whether the width and/or height of the block satisfies certain conditions (e.g., the conditions mentioned in Example 5).
일부 실시형태들에서는, 조건은 루마 블록 크기가 몇 가지 특정한 크기들 중 하나인 것이다. 예를 들어, 특정한 크기는 4x16 및/또는 16x4를 포함할 수 있다.In some embodiments, the condition is that the luma block size is one of several specific sizes. For example, the specific sizes may include 4x16 and/or 16x4.
일부 실시형태들에서는, 위의 조건이 참인 경우, 삼각형 모드는 허용되지 않을 수 있고, 현재 블록이 삼각형 모드에서 코딩되는지 여부를 표시하는 플래그가 시그널링되지 않을 수 있으며, 거짓이 되도록 유도될 수 있다.In some embodiments, if the above condition is true, the triangle mode may not be allowed, and the flag indicating whether the current block is coded in triangle mode may not be signaled and may be caused to be false.
예 14: 인터 예측 방향의 시그널링은 블록의 폭 및/또는 높이가 어떤 조건(예를 들어, 예 5 에서 언급된 조건들)을 만족시키는지 여부에 따라서 달라질 수 있다. Example 14: Signaling of inter prediction direction may vary depending on whether the width and/or height of the block satisfies certain conditions (e.g., the conditions mentioned in Example 5).
일부 실시형태들에서는, 조건은 루마 블록 크기가 몇 가지 특정한 크기들 중 하나인 것이다. 예를 들어, 특정한 크기는 8x4 및/또는 4x8 및/또는 4x16 및/또는 16x4를 포함할 수 있다.In some embodiments, the condition is that the luma block size is one of several specific sizes. For example, the specific sizes may include 8x4 and/or 4x8 and/or 4x16 and/or 16x4.
일부 실시형태들에서는, 위의 조건이 참이면, 해당 블록은 오직 단방향으로 예측되고, 및 현재 블록이 양방향 예측되는지 여부를 표시하는 플래그가 시그널링되지 않을 수 있으며, 거짓이 되도록 유도될 수 있다.In some embodiments, if the above condition is true, the block is only unidirectionally predicted, and the flag indicating whether the current block is bidirectionally predicted may not be signaled and may be driven to false.
예 15: SMVD(symmetric MVD)의 시그널링은 블록의 폭 및/또는 높이가 어떤 조건(예를 들어, 예 5 에서 언급된 조건들)을 만족시키는지 여부에 따라서 달라질 수 있다. Example 15: The signaling of SMVD (symmetric MVD) may vary depending on whether the width and/or height of the block satisfies certain conditions (e.g., the conditions mentioned in Example 5).
일부 실시형태들에서는, 조건은 루마 블록 크기가 몇 가지 특정한 크기들 중 하나인 것이다. 일부 실시형태들에서는, 조건은 블록 크기가 32 개보다 많은 샘플을 가지지 않는 것으로서 규정된다. 일부 실시형태들에서는, 조건은 블록 크기가 4x8 또는 8x4인지로서 규정된다. 일부 실시형태들에서는, 조건은 블록 크기가 4x4, 4x8 또는 8x4인지로서 규정된다. 일부 실시형태들에서는, 특정한 크기는 8x4 및/또는 4x8 및/또는 4x16 및/또는 16x4를 포함할 수 있다.In some embodiments, the condition is that the luma block size is one of several specific sizes. In some embodiments, the condition is defined as the block size does not have more than 32 samples. In some embodiments, the condition is defined as whether the block size is 4x8 or 8x4. In some embodiments, the condition is defined as whether the block size is 4x4, 4x8 or 8x4. In some embodiments, the specific sizes can include 8x4 and/or 4x8 and/or 4x16 and/or 16x4.
일부 실시형태들에서는, 어떤 조건들이 참이면, SMVD의 사용의 표시(예컨대, SMVD 플래그)가 시그널링되지 않을 수 있고, 거짓이 되도록 유도될 수 있다. 예를 들어, 블록은 단방향으로 예측되도록 설정될 수 있다.In some embodiments, if certain conditions are true, the indication of use of SMVD (e.g., the SMVD flag) may not be signaled and may be caused to be false. For example, a block may be set to be unidirectionally predicted.
일부 실시형태들에서는, 어떤 조건들이 참이면, SMVD의 사용의 표시(예컨대, SMVD 플래그)는 여전히 시그널링될 수 있지만, 목록 0 또는 목록 1 움직임 정보만이 움직임 보상 프로세스에서 활용될 수 있다.In some embodiments, if certain conditions are true, an indication of the use of SMVD (e.g., an SMVD flag) may still be signaled, but only List 0 or List 1 motion information may be utilized in the motion compensation process.
예 16: 움직임 벡터(정규 병합 모드, ATMVP 모드, MMVD 병합 모드, MMVD 스킵 모드 등에서 유도된 움직임 벡터와 같은 움직임 벡터) 또는 IBC를 위해 사용되는 블록 벡터는 블록의 폭 및/또는 높이가 어떤 조건을 만족시키는지 여부에 따라서 변경될 수 있다. Example 16: Motion vectors (such as motion vectors derived from regular merge mode, ATMVP mode, MMVD merge mode, MMVD skip mode, etc.) or block vectors used for IBC may be changed depending on whether the width and/or height of the block satisfies certain conditions.
일부 실시형태들에서는, 조건은 루마 블록 크기가 몇 가지 특정한 크기들 중 하나인 것이다. 예를 들어, 특정한 크기는 8x4 및/또는 4x8 및/또는 4x16 및/또는 16x4를 포함할 수 있다.In some embodiments, the condition is that the luma block size is one of several specific sizes. For example, the specific sizes may include 8x4 and/or 4x8 and/or 4x16 and/or 16x4.
일부 실시형태들에서는, 위의 조건이 참인 경우, 해당 블록의 움직임 벡터 또는 블록 벡터는, 유도된 움직임 정보가 양방향 예측이면 단방향성 움직임 벡터로 변경될 수 있다(예를 들어, 일부 오프셋과 함께 이웃하는 블록으로부터 승계됨). 이러한 프로세스는 변환 프로세스라고 불리고, 최종 단방향성 움직임 벡터는 '변환된 단방향성(converted uni-directional)' 움직임 벡터라고 명명된다. 일부 실시형태들에서는, 레퍼런스 픽쳐 목록 X (예를 들어, X는 0 또는 1 임)의 움직임 정보는 유지될 수 있고, 이러한 움직임 정보 및 목록 Y (Y는 1 - X 임)의 움직임 정보는 버려질 수 있다. 일부 실시형태들에서는, 레퍼런스 픽쳐 목록 X (예를 들어, X는 0 또는 1 임)의 움직임 정보 및 목록 Y (Y는 1-X 임)의 움직임 정보는 목록 X로의 새로운 움직임 후보 포인트를 유도하기 위해서 공동으로 활용될 수 있다. 일 예에서, 새로운 움직임 후보의 움직임 벡터는 두 개의 레퍼런스 픽쳐 목록들의 평균화된 움직임 벡터일 수 있다. 다른 예로서, 목록 Y의 움직임 정보는 우선 목록 X에 맞게 스케일링될 수 있다. 그러면, 새로운 움직임 후보의 움직임 벡터는 두 개의 레퍼런스 픽쳐 목록들의 평균화된 움직임 벡터일 수 있다. 일부 실시형태들에서는, 예측 방향 X에서의 움직임 벡터는 사용되지 않을 수 있고(예를 들어, 예측 방향 X에서의 움직임 벡터는 (0, 0)으로 변경되고, 예측 방향 X에서의 레퍼런스 인덱스는 -1 로 변경됨), 예측 방향은 1 - X로 변경될 수 있으며, X = 0 이거나 1 이다. 일부 실시형태들에서는, 변환된 단방향성 움직임 벡터들은 HMVP 룩업 테이블을 업데이트하기 위하여 사용될 수 있다. 일부 실시형태들에서는, 유도된 양방향성 움직임 정보, 예를 들어 단방향성 MV들로 변환되기 전의 양방향성 MV들은 HMVP 룩업 테이블을 업데이트하기 위하여 사용될 수 있다. 일부 실시형태들에서는, 변환된 단방향성 움직임 벡터들이 저장될 수 있고, 후속하는 코딩된 블록, TMVP, 디블로킹 등의 움직임 예측을 위해서 사용될 수 있다. 일부 실시형태들에서는, 유도된 양방향성 움직임 정보, 예를 들어 단방향성 MV들로 변환되기 전의 양방향성 MV들이 저장될 수 있고, 후속하는 코딩된 블록, TMVP, 디블로킹 등의 움직임 예측을 위해서 사용될 수 있다. 일부 실시형태들에서는, 변환된 단방향성 움직임 벡터들은 움직임 정제를 위해서 사용될 수 있다. 일부 실시형태들에서는, 유도된 양방향성 움직임 정보는, 예컨대 광학적 흐름 방법을 사용하는 움직임 정제 및/또는 샘플 정제를 위해서 사용될 수 있다. 일부 실시형태들에서는, 유도된 양방향성 움직임 정보에 따라서 생성된 예측 블록들은 우선 정제될 수 있고, 그 이후에 오직 하나의 예측 블록이 하나의 블록의 최종 예측 및/또는 복원 블록을 유도하기 위하여 활용될 수 있다.In some embodiments, if the above condition is true, the motion vector of the corresponding block or block vector can be converted into a uni-directional motion vector (e.g., inherited from a neighboring block with some offset) if the derived motion information is bi-directional prediction. This process is called a conversion process, and the final uni-directional motion vector is named a 'converted uni-directional' motion vector. In some embodiments, the motion information of the reference picture list X (e.g., X is 0 or 1) can be maintained, and this motion information and the motion information of the list Y (Y is 1 - X) can be discarded. In some embodiments, the motion information of the reference picture list X (e.g., X is 0 or 1) and the motion information of the list Y (Y is 1 - X) can be jointly utilized to derive a new motion candidate point into the list X. In one example, the motion vector of the new motion candidate can be an averaged motion vector of the two reference picture lists. As another example, the motion information of list Y can be first scaled to match list X. Then, the motion vector of the new motion candidate can be the averaged motion vector of the two reference picture lists. In some embodiments, the motion vector in the prediction direction X can be not used (e.g., the motion vector in the prediction direction X is changed to (0, 0) and the reference index in the prediction direction X is changed to -1), and the prediction direction can be changed to 1 - X, where X = 0 or 1. In some embodiments, the transformed unidirectional motion vectors can be used to update the HMVP lookup table. In some embodiments, the derived bidirectional motion information, e.g., the bidirectional MVs before being converted to unidirectional MVs, can be used to update the HMVP lookup table. In some embodiments, the transformed unidirectional motion vectors can be stored and used for motion prediction of subsequent coded blocks, TMVP, deblocking, etc. In some embodiments, the derived bidirectional motion information, e.g., the bidirectional MVs before being converted to unidirectional MVs, can be stored and used for motion prediction of subsequent coded blocks, TMVP, deblocking, etc. In some embodiments, the converted unidirectional motion vectors can be used for motion refinement. In some embodiments, the derived bidirectional motion information can be used for motion refinement and/or sample refinement, e.g., using an optical flow method. In some embodiments, the prediction blocks generated according to the derived bidirectional motion information can be first refined, and then only one prediction block can be utilized to derive the final prediction and/or reconstruction block of a block.
일부 실시형태들에서는, 어떤 조건들이 참인 경우에, (양방향 예측된) 움직임 벡터들은 MMVD에서의 베이스 병합 후보로서 사용되기 전에 단방향성 움직임 벡터로 변환될 수 있다.In some embodiments, if certain conditions are true, (bidirectionally predicted) motion vectors may be converted to unidirectional motion vectors before being used as base merging candidates in MMVD.
일부 실시형태들에서는, 어떤 조건들이 참인 경우에, (예를 들어, 블록의 차원이 상술한 예 5에서 특정된 조건을 만족하는 경우)(양방향 예측된) 움직임 벡터들은 병합 목록 내에 삽입되기 전에 단방향성 움직임 벡터로 변환될 수 있다.In some embodiments, if certain conditions are true (e.g., if the dimension of the block satisfies the conditions specified in Example 5 above), (bidirectionally predicted) motion vectors may be converted to unidirectional motion vectors before being inserted into the merge list.
일부 실시형태들에서는, 변환된 단방향성 움직임 벡터들은 오직 레퍼런스 목록 0만으로부터 온 것일 수 있다. 일부 실시형태들에서는, 현재 슬라이스/타일 그룹/픽쳐가 양방향 예측되는 경우에, 변환된 단방향성 움직임 벡터들은 레퍼런스 목록 0 또는 목록 1로부터 온 것일 수 있다. 일부 실시형태들에서는, 현재 슬라이스/타일 그룹/픽쳐가 양방향 예측되는 경우에, 레퍼런스 목록 0 및 목록 1 로부터의 변환된 단방향성 움직임 벡터들은 병합 목록 및/또는 MMVD 베이스 병합 후보 목록 내에 인터리빙될 수 있다.In some embodiments, the transformed unidirectional motion vectors may come only from reference list 0. In some embodiments, if the current slice/tile group/picture is bidirectionally predicted, the transformed unidirectional motion vectors may come from reference list 0 or list 1. In some embodiments, if the current slice/tile group/picture is bidirectionally predicted, the transformed unidirectional motion vectors from reference list 0 and list 1 may be interleaved within the merge list and/or the MMVD base merge candidate list.
일부 실시형태들에서는, 움직임 정보를 단방향성 움직임 벡터로 어떻게 변환하는지는 레퍼런스 픽쳐들에 따라서 달라질 수 있다. 일부 실시형태들에서는, 하나의 비디오 데이터 유닛의 모든 레퍼런스 픽쳐(예컨대, 타일/타일 그룹)가 디스플레이 순서에서 과거의 픽쳐라면, 목록 1 움직임 정보가 활용될 수 있다. 일부 실시형태들에서는, 하나의 비디오 데이터 유닛의 레퍼런스 픽쳐(예컨대, 타일/타일 그룹) 중 적어도 하나가 과거의 픽쳐이고, 적어도 하나가 디스플레이 순서에서 미래의 픽쳐이면, 목록 0 움직임 정보가 활용될 수 있다. 일부 실시형태들에서는, 움직임 정보를 단방향성 움직임 벡터로 어떻게 변환하는지는 저지연 점검 플래그에 따라서 달라질 수 있다.In some embodiments, how the motion information is converted into unidirectional motion vectors may vary depending on the reference pictures. In some embodiments, if all the reference pictures (e.g., tiles/tile groups) of one video data unit are past pictures in display order, the List 1 motion information may be utilized. In some embodiments, if at least one of the reference pictures (e.g., tiles/tile groups) of one video data unit is a past picture and at least one is a future picture in display order, the List 0 motion information may be utilized. In some embodiments, how the motion information is converted into unidirectional motion vectors may vary depending on the low-latency check flag.
일부 실시형태들에서는, 변환 프로세스는 움직임 보상 프로세스 직전에 호출될 수 있다. 일부 실시형태들에서는, 변환 프로세스는 움직임 후보 목록(예를 들어, 병합 목록) 구성 프로세스 직후에 호출될 수 있다. 일부 실시형태들에서는, 변환 프로세스는 MMVD 프로세스에서의 MVD 가산 프로세스(adding MVD process)를 호출하기 전에 호출될 수 있다. 즉, MVD 가산 프로세스는 양방향 예측 대신에 단방향 예측의 디자인을 따른다. 일부 실시형태들에서는, 변환 프로세스는 PROF 프로세스에서의 샘플 정제 프로세스를 호출하기 전에 호출될 수 있다. 즉, MVD 가산 프로세스는 양방향 예측 대신에 단방향 예측의 디자인을 따른다. 일부 실시형태들에서는, 변환 프로세스는 BIO(BDOF라고도 알려져 있음) 프로세스를 호출하기 전에 호출될 수 있다. 즉, 일부 경우에, BIO는 단방향 예측을 변환된 바 있기 때문에 디스에이블될 수 있다. 일부 실시형태들에서는, 변환 프로세스는 DMVR 프로세스를 호출하기 전에 호출될 수 있다. 즉, 일부 경우에, DMVR은 단방향 예측을 변환된 바 있기 때문에 디스에이블될 수 있다.In some embodiments, the transform process may be called immediately before the motion compensation process. In some embodiments, the transform process may be called immediately after the motion candidate list (e.g., merge list) construction process. In some embodiments, the transform process may be called before calling the MVD adding process in the MMVD process. That is, the MVD adding process follows the design of unidirectional prediction instead of bidirectional prediction. In some embodiments, the transform process may be called before calling the sample refinement process in the PROF process. That is, the MVD adding process follows the design of unidirectional prediction instead of bidirectional prediction. In some embodiments, the transform process may be called before calling the BIO (also known as BDOF) process. That is, in some cases, BIO may be disabled because it has been converted to unidirectional prediction. In some embodiments, the transform process may be called before calling the DMVR process. That is, in some cases, DMVR may be disabled because it has been converted to unidirectional prediction.
예 17: 일부 실시형태들에서는, 움직임 후보 목록을 어떻게 생성할지는 블록 차원에 따라서 달라질 수 있다. 예를 들어, 예 5에서 상술한 바와 같다. Example 17: In some embodiments, how the list of motion candidates is generated may vary depending on the block dimension, for example as described above in Example 5.
일부 실시형태들에서는, 어떤 블록 차원에 대해서, 공간적 블록 및/또는 시간적 블록 및/또는 HMVP로부터 유도된 모든 움직임 후보 및/또는 다른 종류의 움직임 후보들은 단방향 예측되도록 제한될 수 있다.In some embodiments, for a certain block dimension, all motion candidates derived from spatial blocks and/or temporal blocks and/or HMVPs and/or other kinds of motion candidates may be restricted to be unidirectionally predicted.
일부 실시형태들에서는, 어떤 블록 차원에 대하여, 공간적 블록 및/또는 시간적 블록 및/또는 HMVP로부터 유도된 하나의 움직임 후보 및/또는 다른 종류의 움직임 후보는 양방향 예측이면, 이것은 후보 목록에 추가되기 전에 우선 단방향 예측될 수 있다.In some embodiments, for a certain block dimension, a motion candidate derived from a spatial block and/or a temporal block and/or an HMVP and/or another kind of motion candidate, if bidirectionally predicted, may first be unidirectionally predicted before being added to the candidate list.
예 18: 공유된 병합 목록이 허용되는지 여부는 인코딩 모드에 따라서 달라질 수 있다. Example 18: Whether shared merge lists are allowed may depend on the encoding mode.
일부 실시형태들에서는, 공유된 병합 목록은 정규 병합 모드로 코딩된 블록들에 대해서는 허용되지 않을 수 있고, IBC 모드로 코딩된 블록들에 대해서는 허용될 수 있다.In some embodiments, a shared merge list may not be allowed for blocks coded in regular merge mode, but may be allowed for blocks coded in IBC mode.
일부 실시형태들에서는, 부모 공유 노드로부터 분할된 하나의 블록이 정규 병합 모드로 코딩되는 경우, HMVP 테이블의 업데이트는 해당 블록을 인코딩/디코딩한 이후에 디스에이블될 수 있다.In some embodiments, if a block split from a parent shared node is coded in regular merge mode, updates to the HMVP table may be disabled after encoding/decoding that block.
예 19: 위의 개시된 예들에서, 루마 블록에 대한 블록 크기/폭/높이는 또한 Cb, Cr, 또는 G/B/R과 같은 크로마 블록에 대한 블록 크기/폭/높이로 변경될 수 있다. Example 19: In the above disclosed examples, the block size/width/height for the luma block can also be changed to the block size/width/height for the chroma blocks such as Cb, Cr, or G/B/R.
GBi 모드에 대한 라인 버퍼 감소Reduced line buffer for GBi mode
예 20: GBi 가중된 인덱스가 이웃하는 블록으로부터 승계되거나 예측될 수 있는지(CABAC 콘텍스트 선택을 포함함)는 현재 블록의 위치에 의존한다. Example 20: Whether the GBi weighted index can be inherited or predicted from a neighboring block (including CABAC context selection) depends on the location of the current block.
일부 실시형태들에서는, GBi 가중된 인덱스는 현재 블록과 같은 코딩 트리 유닛(CTU, 최대 코딩 유닛(Largest Coding Unit; LCU)이라고도 알려짐) 내에 있지 않는 이웃하는 블록으로부터 승계되거나 예측될 수 없다.In some embodiments, the GBi weighted index cannot be inherited or predicted from a neighboring block that is not within the same coding tree unit (CTU, also known as the largest coding unit (LCU)) as the current block.
일부 실시형태들에서는, GBi 가중된 인덱스는 현재 블록과 같은 CTU 라인 또는 CTU 행 내에 있지 않는 이웃하는 블록으로부터 승계되거나 예측될 수 없다.In some embodiments, the GBi weighted index cannot be inherited or predicted from a neighboring block that is not within the same CTU line or CTU row as the current block.
일부 실시형태들에서는, GBi 가중된 인덱스는 현재 블록과 같은 M×N 영역 내에 있지 않는 이웃하는 블록으로부터 승계되거나 예측될 수 없다. 예를 들어, M=N=64 이다. 이러한 경우에, 하나의 타일/슬라이스/픽쳐는 다수의 중첩되지 않는 MxN 영역들로 분할된다.In some embodiments, the GBi weighted index cannot be inherited or predicted from a neighboring block that is not within the same MxN region as the current block. For example, M=N=64. In such a case, a single tile/slice/picture is split into multiple non-overlapping MxN regions.
일부 실시형태들에서는, GBi 가중된 인덱스는 현재 블록과 같은 M×N 영역 라인 또는 M×N 영역 행 내에 있지 않는 이웃하는 블록으로부터 승계되거나 예측될 수 없다. 예를 들어, M=N=64 이다. CTU 라인/행 및 영역 라인/행은 도 10 에 도시된다.In some embodiments, the GBi weighted index cannot be inherited or predicted from a neighboring block that is not within the same M×N region line or M×N region row as the current block. For example, M=N=64. CTU line/row and region line/row are illustrated in Fig. 10.
일부 실시형태들에서는, 현재 블록의 상단-좌측 코너(또는 임의의 다른 위치)가 (x,y)이고, 이웃하는 블록의 상단-좌측 코너(또는 임의의 다른 위치)가 (x', y')라고 가정하면, 이것은 다음 조건들 중 하나가 만족되면 이웃하는 블록으로부터 승계되거나 예측될 수 없다.In some embodiments, if the top-left corner (or any other location) of the current block is (x, y), and the top-left corner (or any other location) of the neighboring block is (x', y'), then this cannot be inherited or predicted from the neighboring block if one of the following conditions is satisfied:
(1) x / M != x' / M 일 것. 예를 들어, M = 128 또는 64 이다.(1) x / M != x' / M. For example, M = 128 or 64.
(2) y / N != y' / N 일 것. 예를 들어, N = 128 또는 64 이다.(2) y / N != y' / N. For example, N = 128 or 64.
(3) ((x / M != x' / M) && (y / N != y' / N)) 일 것. 예를 들어, M = N=128 이거나 M= N = 64 이다.(3) ((x / M != x' / M) && (y / N != y' / N)). For example, M = N=128 or M= N = 64.
(4) ((x / M != x' / M) || (y / N != y' / N)) 일 것. 예를 들어, M = N=128 이거나 M= N = 64 이다.(4) ((x / M != x' / M) || (y / N != y' / N)). For example, M = N=128 or M= N = 64.
(5) x >> M != x' >>M 일 것. 예를 들어, M = 7 또는 6 이다.(5) x >> M != x' >> M . For example, M = 7 or 6.
(6) y >> N != y' >>N 일 것. 예를 들어, N = 7 또는 6 이다.(6) y >> N != y' >> N. For example, N = 7 or 6.
(7) ((x >> M != x' >>M) && (y >> N != y' >>N)) 일 것. 예를 들어, M = N=7 이거나 M= N = 6 이다.(7) ((x >> M != x' >>M) && (y >> N != y' >>N)). For example, M = N=7 or M= N = 6.
(8) ((x >> M != x' >>M) || (y >> N != y' >>N)) 일 것. 예를 들어, M = N=7 이거나 M= N = 6 이다.(8) ((x >> M != x' >>M) || (y >> N != y' >>N)). For example, M = N=7 or M= N = 6.
일부 실시형태들에서는, GBi가 어떤 픽쳐/슬라이스/타일 그룹/타일 내에 적용될 수 있는지 여부를 표시하기 위해서 플래그가 PPS 또는 슬라이스 헤더 또는 타일 그룹 헤더 또는 타일 내에서 시그널링된다. 일부 실시형태들에서는, GBi가 사용되는지 여부 그리고 GBi가 어떻게 사용되는지(예컨대, 얼마나 많은 후보 가중치 및 가중치들의 값이 존재하는지)가 픽쳐/슬라이스/타일 그룹/타일에 대해서 유도될 수 있다. 일부 실시형태들에서는, 이러한 유도는 QP, 시간 층, POC 거리 등과 같은 정보에 의존할 수 있다.In some embodiments, a flag is signaled in the PPS or slice header or tile group header or tile to indicate whether GBi can be applied within a picture/slice/tile group/tile. In some embodiments, whether GBi is used and how GBi is used (e.g., how many candidate weights and values of the weights are present) can be derived for a picture/slice/tile group/tile. In some embodiments, this derivation can depend on information such as QP, temporal layer, POC distance, etc.
도 10 은 CTU (영역) 라인의 일 예를 도시한다. 음영처리된 CTU (영역들)는 하나의 CUT (영역) 라인 내에 있고, 음영처리되지 않은 CTU (영역들)는 다른 CUT (영역) 라인 내에 있다.Figure 10 illustrates an example of CTU (region) lines. The shaded CTUs (regions) are within one CUT (region) line, and the unshaded CTUs (regions) are within another CUT (region) line.
인터-인트라 예측(IIP)을 위한 단순화Simplification for inter-intra prediction (IIP)
예 21: IIP-코딩된 블록 내에서의 인트라-예측 모드의 코딩은, IIP-코딩된 이웃하는 블록의 인트라-예측 모드와 독립적으로 코딩된다. Example 21: Coding of intra-prediction modes within an IIP-coded block is coded independently of the intra-prediction modes of neighboring IIP-coded blocks.
일부 실시형태들에서는, 인트라-코딩된 블록의 인트라-예측 모드만이, 예컨대 MPM 목록 구성 프로세스 도중에, IIP-코딩된 블록을 위한 인트라-예측 모드의 코딩에서 사용될 수 있다.In some embodiments, only the intra-prediction mode of an intra-coded block may be used in coding the intra-prediction mode for an IIP-coded block, e.g., during the MPM list construction process.
일부 실시형태들에서는, IIP-코딩된 블록 내의 인트라-예측 모드는 임의의 이웃하는 블록으로부터의 모드 예측이 없이 코딩된다.In some embodiments, intra-prediction modes within an IIP-coded block are coded without mode prediction from any neighboring blocks.
예 22: 양자 모두가 새로운 IIP-코딩된 블록의 인트라-예측 모드를 코딩하기 위하여 사용되는 경우에, IIP-코딩된 블록의 인트라-예측 모드는 인트라-코딩된 블록의 인트라-예측 모드보다 낮은 우선순위를 가질 수 있다. Example 22 : When both are used to code the intra-prediction mode of a new IIP-coded block, the intra-prediction mode of the IIP-coded block may have a lower priority than the intra-prediction mode of the intra-coded block.
일부 실시형태들에서는, IIP-코딩된 블록에 대한 MPM들을 유도할 때, IIP-코딩된 블록 및 인트라-코딩된 이웃하는 블록 양자 모두의 인트라-예측 모드들이 활용된다. 그러나, 인트라-코딩된 이웃하는 블록들로부터의 인트라 예측 모드는 IIP-코딩된 이웃하는 블록들로부터의 인트라 예측 모드 이전에 MPM 목록에 삽입될 수 있다.In some embodiments, when deriving MPMs for an IIP-coded block, intra-prediction modes of both the IIP-coded block and the intra-coded neighboring blocks are utilized. However, intra-prediction modes from the intra-coded neighboring blocks may be inserted into the MPM list before intra-prediction modes from the IIP-coded neighboring blocks.
일부 실시형태들에서는, 인트라-코딩된 이웃하는 블록들로부터의 인트라 예측 모드는 IIP-코딩된 이웃하는 블록들로부터의 인트라 예측 모드 이후에 MPM 목록에 삽입될 수도 있다.In some embodiments, intra prediction modes from intra-coded neighboring blocks may be inserted into the MPM list after intra prediction modes from IIP-coded neighboring blocks.
예 23: IIP-코딩된 블록 내의 인트라-예측 모드는 인트라-코딩된 블록의 인트라-예측 모드를 예측하기 위해서도 사용될 수 있다. Example 23 : The intra-prediction mode within an IIP-coded block can also be used to predict the intra-prediction mode of an intra-coded block.
일부 실시형태들에서는, IIP-코딩된 블록 내의 인트라-예측 모드는 보통의 인트라-코딩된 블록에 대한 MPM들을 유도하기 위하여 사용될 수 있다. 일부 실시형태들에서는, 보통의 인트라-코딩된 블록에 대한 MPM들을 유도하기 위하여 사용될 때, IIP-코딩된 블록 내의 인트라-예측 모드는 인트라-코딩된 블록 내의 인트라-예측 모드보다 낮은 우선순위를 가질 수 있다.In some embodiments, the intra-prediction mode within an IIP-coded block may be used to derive MPMs for a normal intra-coded block. In some embodiments, when used to derive MPMs for a normal intra-coded block, the intra-prediction mode within an IIP-coded block may have a lower priority than the intra-prediction mode within an intra-coded block.
일부 실시형태들에서는, IIP-코딩된 블록 내의 인트라-예측 모드는, 다음 조건들 중 하나 이상이 만족되는 경우에만, 인트라-코딩된 블록 또는 IIP-코딩된 블록의 인트라-예측 모드를 예측하기 위서도 사용될 수 있다:In some embodiments, an intra-prediction mode within an IIP-coded block may also be used to predict an intra-coded block or an intra-prediction mode of an IIP-coded block only if one or more of the following conditions are satisfied:
1. 두 개의 블록들이 동일한 CTU 라인 내에 있을 것.1. The two blocks must be within the same CTU line.
2. 두 개의 블록들이 동일한 CTU 내에 있을 것.2. The two blocks must be within the same CTU.
3. 두 개의 블록들이 동일한 M×N 영역 내에 있을 것, 여기에서, 예컨대 M=N=64 이다.3. Two blocks will be within the same M×N region, where, for example, M=N=64.
4. 두 개의 블록들은 M×N 영역 라인 내에 있을 것, 여기에서, 예컨대 M=N=64 이다.4. The two blocks will be within a line of M×N area, where, for example, M=N=64.
예 24: 일부 실시형태들에서는, IIP-코딩된 블록에 대한 MPM 구성 프로세스는 보통의 인트라-코딩된 블록에 대한 MPM 구성 프로세스와 동일해야 한다. Example 24: In some embodiments, the MPM construction process for an IIP-coded block should be identical to the MPM construction process for a regular intra-coded block.
일부 실시형태들에서는, 여섯 개의 MPM들이 인터-인트라 예측이 있는 인터-코딩된 블록에 대해서 사용된다.In some embodiments, six MPMs are used for inter-coded blocks with inter-intra prediction.
일부 실시형태들에서는, MPM들 중 일부만이 IIP-코딩된 블록에 대해서 사용된다. 일부 실시형태들에서는, 첫 번째 것이 언제나 사용된다. 또는, 더 나아가, MPM 플래그 및 MPM 인덱스를 시그널링할 필요가 없다. 일부 실시형태들에서는, 처음 네 개의 MPM들이 활용될 수 있다. 또는, 더 나아가, MPM 플래그를 시그널링할 필요는 없지만, MPM 인덱스는 시그널링될 필요가 있다.In some embodiments, only some of the MPMs are used for IIP-coded blocks. In some embodiments, the first one is always used. Or, further, there is no need to signal the MPM flag and the MPM index. In some embodiments, the first four MPMs can be utilized. Or, further, there is no need to signal the MPM flag, but the MPM index needs to be signaled.
일부 실시형태들에서는, 각각의 블록은 MPM 목록 내에 포함된 인트라 예측 모드들에 따라서 MPM 목록 중 하나를 선택할 수 있고, 예컨대 주어진 모드(예를 들어, 평면 모드)와 비교할 때 최소 인덱스가 있는 모드가 선택된다.In some embodiments, each block may select one of the MPM lists based on the intra prediction modes contained in the MPM list, e.g., the mode with the minimum index compared to a given mode (e.g., a planar mode).
일부 실시형태들에서는, 각각의 블록은 MPM 목록으로부터의 모드들의 서브세트를 선택할 수 있고, 서브세트 내의 모드 인덱스를 시그널링할 수 있다.In some embodiments, each block may select a subset of modes from the MPM list and signal a mode index within the subset.
일부 실시형태들에서는, 인트라 MPM 모드를 코딩하기 위하여 사용되는 콘텍스트가 IIP-코딩된 블록들 내의 인트라 모드들을 코딩하기 위해서 재사용된다. 일부 실시형태들에서는, 인트라 MPM 모드를 코딩하기 위하여 사용되는 상이한 콘텍스트들이 IIP-코딩된 블록들 내의 인트라 모드들을 코딩하기 위해서 채용된다.In some embodiments, the context used to code the intra MPM mode is reused to code the intra modes within the IIP-coded blocks. In some embodiments, different contexts used to code the intra MPM mode are employed to code the intra modes within the IIP-coded blocks.
예 25: 일부 실시형태들에서는, 수평 및 수직 방향을 제외하는 각도 인트라 예측 모드에 대하여, IIP-코딩된 블록에 대해서 생성된 인트라 예측 블록 및 인터 예측 블록에 대해서 동일한 가중치가 활용된다. Example 25: In some embodiments, for angular intra prediction modes excluding horizontal and vertical directions, the same weights are utilized for intra-prediction blocks and inter-prediction blocks generated for an IIP-coded block.
예 26: 일부 실시형태들에서는, 특정 위치에 대해서, 제로 가중치가 IIP 코딩 프로세스에서 적용될 수 있다. Example 26: In some embodiments, for certain locations, zero weights may be applied in the IIP coding process.
일부 실시형태들에서는, 제로 가중치는 IIP 코딩 프로세스에서 사용되는 인트라 예측 블록에 적용될 수 있다.In some embodiments, zero weights may be applied to intra prediction blocks used in the IIP coding process.
일부 실시형태들에서는, 제로 가중치는 IIP 코딩 프로세스에서 사용되는 인터 예측 블록에 적용될 수 있다.In some embodiments, zero weighting may be applied to inter prediction blocks used in the IIP coding process.
예 27: 일부 실시형태들에서는, IIP-코딩된 블록의 인트라-예측 모드는, 현재 블록의 크기가 무엇인지와 무관하게, MPM들 중 하나로서만 선택될 수 있다. Example 27: In some embodiments, the intra-prediction mode of an IIP-coded block can be selected only as one of the MPMs, regardless of the size of the current block.
일부 실시형태들에서는, 현재 블록의 크기가 무엇인지와 무관하게, MPM 플래그는 시그널링되지 않고 1인 것으로 추론된다.In some embodiments, the MPM flag is not signaled and is inferred to be 1, regardless of the size of the current block.
예 28: IIP-코딩된 블록에 대하여, 크로마 성분들에 대한 인트라-예측을 수행하기 위해서, 루마-예측-크로마 모드(Luma-predict-chroma mode; LM) 모드가 유도된 모드(derived mode; DM) 모드 대신에 사용된다. Example 28 : For IIP-coded blocks, luma-predict-chroma mode (LM) is used instead of derived mode (DM) mode to perform intra-prediction on chroma components.
일부 실시형태들에서는, DM 및 LM 양자 모두가 허용될 수 있다.In some embodiments, both DM and LM may be allowed.
일부 실시형태들에서는, 크로마 성분들에 대해서 여러 인트라 예측 모드들이 허용될 수 있다.In some embodiments, multiple intra prediction modes may be allowed for chroma components.
일부 실시형태들에서는, 크로마 성분들에 대해서 여러 모드들을 허용할지 여부는 색상 포맷에 따라서 달라질 수 있다. 일 예에서, 4:4:4 색상 포맷의 경우, 허용된 크로마 인트라 예측 모드는 루마 성분에 대한 것과 같을 수 있다.In some embodiments, whether multiple modes are allowed for chroma components may depend on the color format. In one example, for a 4:4:4 color format, the allowed chroma intra prediction modes may be the same as those for the luma component.
예 29: 다음과 같은 하나 이상의 특정한 경우에는 인터-인트라 예측이 허용되지 않을 수도 있다: Example 29: Inter-intra prediction may not be allowed in one or more of the following specific cases:
A. w == T1 || h == T1 이고, 예를 들어 T1 = 4 이다A. w == T1 || h == T1, and for example T1 = 4.
B. w > T1 || h > T1 이고, 예를 들어 T1 = 64 이다B. w > T1 || h > T1, and for example T1 = 64.
C. (w == T1 && h == T2) || (w == T2 && h == T1) 이고, 예를 들어 T1 = 4 이고 T2 = 16 이다.C. (w == T1 && h == T2) || (w == T2 && h == T1), for example, T1 = 4 and T2 = 16.
예 30: 인터-인트라 예측은 양방향 예측이 있는 블록에 대해서는 허용되지 않을 수도 있다. Example 30 : Inter-intra prediction may not be allowed for blocks with bidirectional prediction.
일부 실시형태들에서는, 어떤 IIP-코딩된 블록에 대한 선택된 병합 후보가 양방향 예측을 사용한다면, 이것은 단방향 예측 병합 후보로 변환될 것이다. 일부 실시형태들에서는, 레퍼런스 목록 0로부터의 예측만이 보유되고, 병합 후보는 레퍼런스 목록 0을 참조하는 단방향 예측으로서 취급된다. 일부 실시형태들에서는, 레퍼런스 목록 1로부터의 예측만이 보유되고, 병합 후보는 레퍼런스 목록 1을 참조하는 단방향 예측으로서 취급된다.In some embodiments, if a selected merge candidate for a certain IIP-coded block uses bidirectional prediction, it will be converted into a unidirectional prediction merge candidate. In some embodiments, only predictions from reference list 0 are retained, and the merge candidate is treated as a unidirectional prediction referring to reference list 0. In some embodiments, only predictions from reference list 1 are retained, and the merge candidate is treated as a unidirectional prediction referring to reference list 1.
일부 실시형태들에서는, 선택된 병합 후보가 단방향 예측 병합 후보가 되어야 한다는 제한 사항이 추가된다. 또는, IIP-코딩된 블록에 대한 시그널링된 병합 인덱스는 단방향 예측 병합 후보의 인덱스를 표시한다(즉, 양방향 예측 병합 후보들은 카운트되지 않는다).In some embodiments, an additional constraint is added that the selected merge candidate must be a unidirectional predictive merge candidate. Alternatively, the signaled merge index for the IIP-coded block indicates the index of a unidirectional predictive merge candidate (i.e., bidirectional predictive merge candidates are not counted).
일부 실시형태들에서는, 삼각 예측 모드에서 사용되는 병합 후보 목록 구성 프로세스가 IIP-코딩된 블록에 대한 움직임 후보 목록을 유도하기 위해서 활용될 수 있다.In some embodiments, the merge candidate list construction process used in the triangle prediction mode may be utilized to derive the motion candidate list for the IIP-coded block.
예 31: 인터-인트라 예측이 적용되는 경우에, 일부 코딩 툴들은 허용되지 않을 수도 있다. Example 31: When inter-intra prediction is applied, some coding tools may not allow it.
일부 실시형태들에서는, 양방향성 광학적 흐름(Bi-directional Optical flow; BIO)은 양방향 예측에 대해서 적용되지 않는다.In some embodiments, bi-directional optical flow (BIO) is not applied for bidirectional prediction.
일부 실시형태들에서는, 중첩된 블록 움직임 보상(OBMC)은 적용되지 않는다.In some embodiments, overlapped block motion compensation (OBMC) is not applied.
일부 실시형태들에서는, 디코더측 움직임 벡터 유도/정제 프로세스는 허용되지 않는다.In some embodiments, the decoder-side motion vector derivation/refinement process is not allowed.
예 32: 인터-인트라 예측에서 사용되는 인트라 예측 프로세스는 보통의 인트라-코딩된 블록들에서 사용되는 것과 다를 수 있다. Example 32: The intra prediction process used in inter-intra prediction may be different from that used in normal intra-coded blocks.
일부 실시형태들에서는, 이웃하는 샘플들은 상이한 방법으로 필터링될 수 있다. 일부 실시형태들에서는, 이웃하는 샘플들은 인터-인트라 예측에서 사용되는 인트라-예측을 수행하기 이전에 필터링되지 않는다.In some embodiments, neighboring samples may be filtered in different ways. In some embodiments, neighboring samples are not filtered prior to performing intra-prediction used in inter-intra prediction.
일부 실시형태들에서는, 위치-의존적 인트라 예측 샘플 필터링 프로세스는 인터-인트라 예측에서 사용되는 인트라-예측에 대해서 수행되지 않는다. 일부 실시형태들에서는, 멀티라인(multiline) 인트라-예측은 인터-인트라 예측에서 허용되지 않는다. 일부 실시형태들에서는, 광각 인트라-예측은 인터-인트라 예측에서 허용되지 않는다.In some embodiments, the position-dependent intra prediction sample filtering process is not performed on the intra prediction used in inter-intra prediction. In some embodiments, multiline intra-prediction is not allowed in inter-intra prediction. In some embodiments, wide-angle intra-prediction is not allowed in inter-intra prediction.
예 33: 하이브리드 인트라 및 인터 예측에서의 인트라 및 인터 예측 값들이 PIntra 및 Pinter이고, 가중 인자가 각각 w_intra 및 w_inter라고 가정한다. 위치 (x, y)에서의 예측 값은 (PIntra(x, y) * w_intra(x, y) + PInter(x, y) * w_inter(x, y) + offset(x, y)) >> N으로서 계산되는데, 여기에서 w_intra(x, y) + w_iner(x, y) = 2^N 이고, 및 offset(x, y) = 2^(N - 1) 이다. 일 예에서는, N = 3 이다. Example 33: Assume that the intra and inter prediction values in hybrid intra and inter prediction are PIntra and Pinter, and the weighting factors are w_intra and w_inter, respectively. The predicted value at position (x, y) is computed as (PIntra(x, y) * w_intra(x, y) + PInter(x, y) * w_inter(x, y) + offset(x, y)) >> N, where w_intra(x, y) + w_iner(x, y) = 2^N, and offset(x, y) = 2^(N - 1). In one example, N = 3.
예 34: 일부 실시형태들에서는, 보통의 인트라-코딩된 블록 및 IIP-코딩된 블록 내에서 시그널링되는 MPM 플래그는 동일한 산술 코딩 콘텍스트를 공유해야 한다. Example 34: In some embodiments, MPM flags signaled within a normal intra-coded block and an IIP-coded block must share the same arithmetic coding context.
예 35: 일부 실시형태들에서는, IIP-코딩된 블록 내의 인트라-예측 모드를 코딩하기 위하여 MPM이 필요하지 않다. (블록 폭 및 높이가 w 및 h라고 가정한다). Example 35: In some embodiments, MPM is not required to code intra-prediction modes within an IIP-coded block (assuming block width and height are w and h).
일부 실시형태들에서는, 네 개의 모드 {평면, DC, 수직, 수평}은 00, 01, 10 및 11 로서 이진화된다(00-평면, 01-DC, 10-수직, 11-수평과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, the four modes {planar, DC, vertical, horizontal} are binarized as 00, 01, 10 and 11 (there can be any arbitrary mapping rule, such as 00-planar, 01-DC, 10-vertical, 11-horizontal).
일부 실시형태들에서는, 네 개의 모드 {평면, DC, 수직, 수평}은 0, 10, 110 및 111 로서 이진화된다(0-평면, 10-DC, 110-수직, 111-수평과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, the four modes {plane, DC, vertical, horizontal} are binarized as 0, 10, 110 and 111 (there can be any mapping rule such as 0-plane, 10-DC, 110-vertical, 111-horizontal).
일부 실시형태들에서는, 네 개의 모드 {평면, DC, 수직, 수평}은 1, 01, 001 및 000 으로서 이진화된다(1-평면, 01-DC, 001-수직, 000-수평과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, the four modes {plane, DC, vertical, horizontal} are binarized as 1, 01, 001 and 000 (there can be any arbitrary mapping rule, such as 1-plane, 01-DC, 001-vertical, 000-horizontal).
일부 실시형태들에서는, W>N*H (N은 정수 예컨대, 2임)가 사용될 수 있는 경우에, 세 개의 모드 {평면, DC, 수직}만이 사용될 수 있다. 세 개의 모드는 1, 01, 11 로서 이진화된다(1-평면, 01-DC, 11-수직과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, where W>N*H (where N is an integer, e.g. 2) can be used, only three modes {planar, DC, vertical} can be used. The three modes are binarized as 1, 01, 11 (there can be any mapping rule, e.g. 1-planar, 01-DC, 11-vertical).
일부 실시형태들에서는, W>N*H (N은 2 와 같은 정수임)가 사용될 수 있는 경우에는, 세 개의 모드 {평면, DC, 수직}만이 사용될 수 있다. 세 개의 모드는 0, 10, 00 으로서 이진화된다(0-평면, 10-DC, 00-수직과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, where W>N*H (where N is an integer such as 2) can be used, only three modes {planar, DC, vertical} can be used. The three modes are binarized as 0, 10, 00 (there can be any arbitrary mapping rule, such as 0-planar, 10-DC, 00-vertical).
일부 실시형태들에서는, H>N*W (N은 2 와 같은 정수임)가 사용될 수 있는 경우에는, 세 개의 모드 {평면, DC, 수평}만이 사용될 수 있다. 세 개의 모드는 1, 01, 11 로서 이진화된다(1-평면, 01-DC, 11-수평과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, where H>N*W (where N is an integer such as 2) can be used, only three modes {plane, DC, horizontal} can be used. The three modes are binarized as 1, 01, 11 (there can be any arbitrary mapping rule, such as 1-plane, 01-DC, 11-horizontal).
일부 실시형태들에서는, H>N*W (N은 2 와 같은 정수임)가 사용될 수 있는 경우에는, 세 개의 모드 {평면, DC, 수평}만이 사용될 수 있다. 세 개의 모드는 0, 10, 00 으로서 이진화된다(0-평면, 10-DC, 00-수평과 같은 임의의 매핑 규칙이 있을 수 있다).In some embodiments, only three modes {plane, DC, horizontal} can be used, where H>N*W (where N is an integer such as 2). The three modes are binarized as 0, 10, 00 (there can be any arbitrary mapping rule, such as 0-plane, 10-DC, 00-horizontal).
예 36: 일부 실시형태들에서는, DC 및 평면 모드만이 IIP-코딩된 블록 내에서 사용된다. 일부 실시형태들에서는, DC 또는 평면(Planar)이 사용되는지를 표시하기 위해서 하나의 플래그가 시그널링된다. Example 36: In some embodiments, only DC and Planar modes are used within an IIP-coded block. In some embodiments, a flag is signaled to indicate whether DC or Planar is used.
예 37: 일부 실시형태들에서는, IIP는 상이한 색성분에 대해서 다르게 수행된다. Example 37: In some embodiments, IIP is performed differently for different color components.
일부 실시형태들에서는, 인터-인트라-예측은 크로마 성분(예컨대, Cb 및 Cr)에는 수행되지 않는다.In some embodiments, inter-intra-prediction is not performed on chroma components (e.g., Cb and Cr).
일부 실시형태들에서는, 크로마 성분에 대한 인트라-예측 모드는 IIP-코딩된 블록 내의 루마 성분에 대한 것과 다르다. 일부 실시형태들에서는, 크로마에 대해서 DC 모드가 언제나 사용된다. 일부 실시형태들에서는, 크로마에 대해서 평면 모드가 언제나 사용된다. 일부 실시형태들에서는, 크로마에 대해서 LM 모드가 언제나 사용된다.In some embodiments, the intra-prediction mode for the chroma component is different from that for the luma component within the IIP-coded block. In some embodiments, the DC mode is always used for the chroma. In some embodiments, the planar mode is always used for the chroma. In some embodiments, the LM mode is always used for the chroma.
일부 실시형태들에서는, 상이한 색성분에 대해서 IIP를 어떻게 수행하는지는, 색상 포맷(예컨대, 4:2:0 또는 4:4:4)에 따라서 달라질 수 있다.In some embodiments, how IIP is performed for different color components may vary depending on the color format (e.g., 4:2:0 or 4:4:4).
일부 실시형태들에서는, 상이한 색성분에 대해서 IIP를 어떻게 수행하는지는 블록 크기에 따라서 달라질 수 있다. 예를 들어, 현재 블록의 폭 또는 높이가 4 이하인 경우에는, 인터-인트라-예측이 크로마 성분(예컨대, Cb 및 Cr)에 수행되지 않는다.In some embodiments, how IIP is performed for different color components may vary depending on the block size. For example, if the width or height of the current block is 4 or less, inter-intra-prediction is not performed on chroma components (e.g., Cb and Cr).
MV 정밀도 이슈MV precision issues
다음의 설명에서, 공간적 움직임 예측을 위해 저장된 MV들을 위해 사용되는 정밀도는 P1으로 표시되고, 시간적 움직임 예측에 대해서 저장된 MV들을 위해 사용되는 정밀도는 P2로 표시된다.In the following description, the precision used for the stored MVs for spatial motion prediction is denoted as P1, and the precision used for the stored MVs for temporal motion prediction is denoted as P2.
예 38: P1 및 P2는 동일할 수 있고, 또는 이들은 다를 수도 있다. Example 38: P1 and P2 may be the same, or they may be different.
일부 실시형태들에서는, P1은 1/16 루마 픽셀이고, P2는 1/4 루마 픽셀이다. 일부 실시형태들에서는, P1은 1/16 루마 픽셀이고, P2는 1/ 8 루마 픽셀이다. 일부 실시형태들에서는, P1은 1/8 루마 픽셀이고, P2는 1/4 루마 픽셀이다. 일부 실시형태들에서는, P1은 1/8 루마 픽셀이고, P2는 1/ 8 루마 픽셀이다. 일부 실시형태들에서는, P2는 1/16 루마 픽셀이고, P1은 1/4 루마 픽셀이다. 일부 실시형태들에서는, P2는 1/16 루마 픽셀이고, P1은 1/ 8 루마 픽셀이다. 일부 실시형태들에서는, P2는 1/8 루마 픽셀이고, P1은 1/4 루마 픽셀이다.In some embodiments, P1 is a 1/16 luma pixel and P2 is a 1/4 luma pixel. In some embodiments, P1 is a 1/16 luma pixel and P2 is a 1/8 luma pixel. In some embodiments, P1 is a 1/8 luma pixel and P2 is a 1/4 luma pixel. In some embodiments, P1 is a 1/8 luma pixel and P2 is a 1/8 luma pixel. In some embodiments, P2 is a 1/16 luma pixel and P1 is a 1/4 luma pixel. In some embodiments, P2 is a 1/16 luma pixel and P1 is a 1/8 luma pixel. In some embodiments, P2 is a 1/8 luma pixel and P1 is a 1/4 luma pixel.
예 39: P1 및 P2는 고정되지 않을 수도 있다. 일부 실시형태들에서는, P1/P2는 상이한 표준 프로파일/레벨/티어에 대해서 다를 수 있다. 일부 실시형태들에서는, P1/P2는 상이한 시간 층 내의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, P1/P2는 상이한 폭/높이의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, P1/P2는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU 내에서 인코더로부터 디코더로 시그널링될 수 있다. Example 39: P1 and P2 may not be fixed. In some embodiments, P1/P2 may be different for different standard profiles/levels/tiers. In some embodiments, P1/P2 may be different for pictures within different temporal layers. In some embodiments, P1/P2 may be different for pictures of different widths/heights. In some embodiments, P1/P2 may be signaled from encoder to decoder within VPS/SPS/PPS/Slice Header/Tile Group Header/Tile/CTU/CU.
예 40: MV (MVx, MVy)의 경우, MVx 및 MVy에 대한 정밀도는 다를 수 있고, Px 및 Py로 표시된다. Example 40: For MV (MVx, MVy), the precision for MVx and MVy can be different, and are denoted as Px and Py.
일부 실시형태들에서는, Px/Py는 상이한 표준 프로파일/레벨/티어에 대해서 다를 수 있다. 일부 실시형태들에서는, Px/Py는 상이한 시간 층 내의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, Px는 상이한 폭의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, Py는 상이한 높이의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, Px/Py는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU 내에서 인코더로부터 디코더로 시그널링될 수 있다.In some embodiments, Px/Py may be different for different standard profiles/levels/tiers. In some embodiments, Px/Py may be different for pictures within different temporal layers. In some embodiments, Px may be different for pictures of different widths. In some embodiments, Py may be different for pictures of different heights. In some embodiments, Px/Py may be signaled from encoder to decoder within VPS/SPS/PPS/Slice Header/Tile Group Header/Tile/CTU/CU.
예 41: MV (MVx, MVy)를 시간적 움직임 예측을 위해서 저장하기 전에, 이것은 정확한 정밀도로 변경되어야 한다. Example 41 : Before storing MV (MVx, MVy) for temporal motion prediction, it must be transformed to exact precision.
일부 실시형태들에서는, P1>=P2 라면, MVx=Shift(MVx, P1-P2), MVy=Shift(MVy, P1-P2) 이다. 일부 실시형태들에서는, P1>=P2 라면, MVx=SignShift(MVx, P1-P2), MVy=SignShift(MVy, P1-P2) 이다. 일부 실시형태들에서는, P1<P2 라면, MVx= MVx <<(P2-P1), MVy= MVy<<(P2-P1) 이다.In some embodiments, if P1>=P2, then MVx=Shift(MVx, P1-P2), MVy=Shift(MVy, P1-P2). In some embodiments, if P1>=P2, then MVx=SignShift(MVx, P1-P2), MVy=SignShift(MVy, P1-P2). In some embodiments, if P1<P2, MVx= MVx <<(P2-P1), MVy= MVy<<(P2-P1).
예 42: MV(MVx, MVy) 정밀도가 Px 및 Py이고, MVx 또는 MVy가 N 비트의 정수에 의해 저장된다고 가정한다. MV (MVx, MVy)의 범위는 MinX <=MVx<= MaxX 이고, MinY <=MVy<= MaxY 이다. Example 42 : Assume that the precision of MV(MVx, MVy) is Px and Py, and that MVx or MVy is stored by an N-bit integer. The range of MV(MVx, MVy) is MinX <=MVx<= MaxX, and MinY <=MVy<= MaxY.
일부 실시형태들에서는, MinX는 MinY와 같을 수 있고, MinY와 같지 않을 수도 있다. 일부 실시형태들에서는, MaxX는 MaxY와 같을 수 있고, MaxY와 같지 않을 수도 있다. 일부 실시형태들에서는, {MinX, MaxX}는 Px에 따라서 달라질 수 있다. 일부 실시형태들에서는, {MinY, MaxY}는 Py에 따라서 달라질 수 있다. 일부 실시형태들에서는, MinX, MaxX, MinY, MaxY}는 N에 따라서 달라질 수 있다. 일부 실시형태들에서는, {MinX, MaxX, MinY, MaxY}는, 공간적 움직임 예측을 위해 저장된 MV 및 시간적 움직임 예측을 위해 저장된 MV에 대해서 다를 수 있다. 일부 실시형태들에서는, {MinX, MaxX, MinY, MaxY}는 상이한 표준 프로파일/레벨/티어에 대해서 다를 수 있다. 일부 실시형태들에서는, {MinX, MaxX, MinY, MaxY}는 상이한 시간 층에 있는 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, {MinX, MaxX, MinY, MaxY}는 상이한 폭/높이의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, {MinX, MaxX, MinY, MaxY}는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU 내에서 인코더로부터 디코더로 시그널링될 수 있다. 일부 실시형태들에서는, {MinX, MaxX}는 상이한 폭의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, {MinY, MaxY}는 상이한 높이의 픽쳐들에 대해서 다를 수 있다. 일부 실시형태들에서는, MVx는 공간적 움직임 예측을 위해서 저장되기 이전에 [MinX, MaxX]로 클리핑된다. 일부 실시형태들에서는, MVx는 시간적 움직임 예측을 위해서 저장되기 이전에 [MinX, MaxX]로 클리핑된다. 일부 실시형태들에서는, MVy는 공간적 움직임 예측을 위해서 저장되기 전에 [MinY, MaxY]로 클리핑된다. 일부 실시형태들에서는, MVy는 시간적 움직임 예측을 위해서 저장되기 전에 [MinY, MaxY]로 클리핑된다.In some embodiments, MinX may be equal to MinY and may not be equal to MinY. In some embodiments, MaxX may be equal to MaxY and may not be equal to MaxY. In some embodiments, {MinX, MaxX} may vary over Px. In some embodiments, {MinY, MaxY} may vary over Py. In some embodiments, MinX, MaxX, MinY, MaxY} may vary over N. In some embodiments, {MinX, MaxX, MinY, MaxY} may be different for MVs stored for spatial motion prediction and MVs stored for temporal motion prediction. In some embodiments, {MinX, MaxX, MinY, MaxY} may be different for different standard profiles/levels/tiers. In some embodiments, {MinX, MaxX, MinY, MaxY} may be different for pictures in different temporal layers. In some embodiments, {MinX, MaxX, MinY, MaxY} can be different for pictures of different width/height. In some embodiments, {MinX, MaxX, MinY, MaxY} can be signaled from encoder to decoder in VPS/SPS/PPS/slice header/tile group header/tile/CTU/CU. In some embodiments, {MinX, MaxX} can be different for pictures of different width. In some embodiments, {MinY, MaxY} can be different for pictures of different height. In some embodiments, MVx is clipped to [MinX, MaxX] before being stored for spatial motion prediction. In some embodiments, MVx is clipped to [MinX, MaxX] before being stored for temporal motion prediction. In some embodiments, MVy is clipped to [MinY, MaxY] before being stored for spatial motion prediction. In some embodiments, MVy is clipped to [MinY, MaxY] before being stored for temporal motion prediction.
어파인 병합 모드를 위한 라인 버퍼 감소 Reduce line buffer for affine merge mode
예 43: 이웃하는 블록으로부터 어파인 병합 후보에 의해 승계된 어파인 모델(유도된 CPMV들 또는 어파인 파라미터)은 언제나 6-파라미터 어파인 모델이다. Example 43: The affine model (derived CPMVs or affine parameters) inherited by an affine merge candidate from a neighboring block is always a 6-parameter affine model.
일부 실시형태들에서는, 이웃하는 블록이 4-파라미터 어파인 모델로 코딩된다면, 어파인 모델은 여전히 6-파라미터 어파인 모델로서 승계된다.In some embodiments, if a neighboring block is coded with a 4-parameter affine model, the affine model is still inherited as a 6-parameter affine model.
일부 실시형태들에서는, 이웃하는 블록으로부터의 4-파라미터 어파인 모델이 6-파라미터 어파인 모델 또는 4-파라미터 어파인 모델로서 승계되는지 여부는 현재 블록의 위치에 따라서 달라질 수 있다. 일부 실시형태들에서는, 이웃하는 블록으로부터의 4-파라미터 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 코딩 트리 유닛(Coding Tree Unit; CTU)(최대 코딩 유닛(Largest Coding Unit; LCU)이라고도 알려져 있음) 내에 있지 않으면, 6-파라미터 어파인 모델로서 승계된다. 일부 실시형태들에서는, 이웃하는 블록으로부터의 4-파라미터 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 CTU 라인 또는 CTU 행 내에 있지 않으면, 6-파라미터 어파인 모델로서 승계된다. 일부 실시형태들에서는, 이웃하는 블록으로부터의 4-파라미터 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 M×N 영역 내에 있지 않으면, 6-파라미터 어파인 모델로서 승계된다. 예를 들어, M=N=64 이다. 이러한 경우에, 하나의 타일/슬라이스/픽쳐는 다수의 중첩되지 않는 MxN 영역들로 분할된다. 일부 실시형태들에서는, 이웃하는 블록으로부터의 4-파라미터 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 M×N 영역 라인 또는 M×N 영역 행 내에 있지 않으면, 6-파라미터 어파인 모델로서 승계된다. 예를 들어, M=N=64 이다. CTU 라인/행 및 영역 라인/행은 도 10 에 도시된다.In some embodiments, whether a 4-parameter affine model from a neighboring block is inherited as a 6-parameter affine model or a 4-parameter affine model may depend on the location of the current block. In some embodiments, a 4-parameter affine model from a neighboring block is inherited as a 6-parameter affine model if the neighboring block is not within the same Coding Tree Unit (CTU) (also known as Largest Coding Unit (LCU)) as the current block. In some embodiments, a 4-parameter affine model from a neighboring block is inherited as a 6-parameter affine model if the neighboring block is not within the same CTU line or CTU row as the current block. In some embodiments, a 4-parameter affine model from a neighboring block is inherited as a 6-parameter affine model if the neighboring block is not within the same M×N region as the current block. For example, M=N=64. In this case, a tile/slice/picture is partitioned into multiple non-overlapping MxN regions. In some embodiments, a 4-parameter affine model from a neighboring block is inherited as a 6-parameter affine model if the neighboring block is not in the same MxN region line or MxN region row as the current block. For example, M=N=64. The CTU line/row and region line/row are illustrated in Fig. 10.
일부 실시형태들에서는, 현재 블록의 상단-좌측 코너(또는 임의의 다른 위치)가 (x,y)이고, 이웃하는 블록의 상단-좌측 코너(또는 임의의 다른 위치)가 (x', y')라고 가정하면, 이웃하는 블록으로부터의 4-파라미터 어파인 모델은, 이웃하는 블록이 다음 조건들 중 하나 이상을 만족시키면 6-파라미터 어파인 모델로서 승계된다:In some embodiments, assuming that the top-left corner (or any other location) of the current block is (x, y) and the top-left corner (or any other location) of the neighboring block is (x', y'), a 4-parameter affine model from the neighboring block is inherited as a 6-parameter affine model if the neighboring block satisfies one or more of the following conditions:
(a) x / M != x' / M 일 것. 예를 들어, M = 128 또는 64 이다.(a) x / M != x' / M. For example, M = 128 or 64.
(b) y / N != y' / N 일 것. 예를 들어, N = 128 또는 64 이다.(b) y / N != y' / N. For example, N = 128 or 64.
(c) ((x / M != x' / M) && (y / N != y' / N)) 일 것. 예를 들어, M = N=128 이거나 M= N = 64 이다.(c) ((x / M != x' / M) && (y / N != y' / N)). For example, M = N=128 or M= N = 64.
(d) ((x / M != x' / M) || (y / N != y' / N)) 일 것. 예를 들어, M = N=128 이거나 M= N = 64 이다.(d) ((x / M != x' / M) || (y / N != y' / N)). For example, M = N=128 or M= N = 64.
(e) x >> M != x' >>M 일 것. 예를 들어, M = 7 또는 6 이다.(e) x >> M != x' >> M . For example, M = 7 or 6.
(f) y >> N != y' >>N 일 것. 예를 들어, N = 7 또는 6 이다.(f) y >> N != y' >> N . For example, N = 7 or 6.
(g) ((x >> M != x' >>M) && (y >> N != y' >>N)) 일 것. 예를 들어, M = N=7 이거나 M= N = 6 이다.(g) ((x >> M != x' >>M) && (y >> N != y' >>N)). For example, either M = N=7 or M= N = 6.
(h) ((x >> M != x' >>M) || (y >> N != y' >>N)) 일 것. 예를 들어, M = N=7 이거나 M= N = 6 이다.(h) ((x >> M != x' >>M) || (y >> N != y' >>N)). For example, M = N=7 or M= N = 6.
5. 실시형태5. Embodiment
후술되는 설명은 개시된 기술이 현재 VVC 표준의 신택스 구조 내에 어떻게 구현될 수 있는지를 보여준다. 새롭게 추가되는 것은 굵은 글씨로 표시되고, 삭제되는 것은 이탤릭체로 표시된다.The following description shows how the disclosed technology can be implemented within the syntax structure of the current VVC standard. New additions are shown in bold , and deletions are shown in italics .
5.1 실시형태 #1 (4x4 인터 예측을 디스에이블하고, 4x8, 8x4, 4x16 및 16x4 블록들에 대해서 양방향 예측을 디스에이블함)5.1 Embodiment #1 (Disable 4x4 inter prediction, and disable bidirectional prediction for 4x8, 8x4, 4x16 and 16x4 blocks)
7.3.6.6 코딩 유닛 신택스7.3.6.6 Coding Unit Syntax
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) ) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) )
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY ) if( sps_pcm_enabled_flag &&
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY )
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY )) if (intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY ))
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY ) if( intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 1 &&
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY )
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 ) if( intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 )
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) { if( sps_amvr_enabled_flag &&
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) {
7.4.7.6 코딩 유닛 시맨틱스7.4.7.6 Coding Unit Semantics
pred_mode_flag가 0 과 같으면 현재 코딩 유닛이 인터 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_flag가 1과 같으면 현재 코딩 유닛이 인트라 예측 모드에서 코딩된다는 것을 규정한다. 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 다음과 같이 유도된다:If pred_mode_flag is equal to 0, it specifies that the current coding unit is coded in inter prediction mode. If pred_mode_flag is equal to 1, it specifies that the current coding unit is coded in intra prediction mode. The variable CuPredMode[ x ][ y ] is derived as follows for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1:
- pred_mode_flag가 0 과 같으면, CuPredMode[ x ][ y ]는 MODE_INTER와 같아지도록 설정된다.- If pred_mode_flag is equal to 0, CuPredMode[ x ][ y ] is set to be equal to MODE_INTER.
- 그렇지 않으면(pred_mode_flag가 1과 같으면), CuPredMode[ x ][ y ]는 MODE_INTRA와 같아지도록 설정된다.- Otherwise (if pred_mode_flag is equal to 1), CuPredMode[ x ][ y ] is set to be equal to MODE_INTRA.
pred_mode_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 cbWidth가 4와 같고 cbHeight가 4와 같은 코딩 유닛을 디코딩할 경우에는 1과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩할 경우에는 0과 같다고 각각 추론된다.If pred_mode_flag is not present, it is inferred to be equal to 1 when decoding an I tile group or a coding unit with cbWidth equal to 4 and cbHeight equal to 4 , and 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_ibc_flag가 0 과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩되지 않는다는 것을 규정한다.If pred_mode_ibc_flag is equal to 1, it specifies that the current coding unit is coded in IBC prediction mode. If pred_mode_ibc_flag is equal to 0, it specifies that the current coding unit is not coded in IBC prediction mode.
pred_mode_ibc_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 스킵 모드에서 코딩되는 코딩 유닛을 디코딩하고 cbWidth가 4와 같고 cbHeight가 4와 같은 경우에는 sps_ibc_enabled_flag의 값과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩하는 경우에는 0과 같다고 각각 추론된다.If pred_mode_ibc_flag is not present, it is inferred to be equal to the value of sps_ibc_enabled_flag when decoding an I tile group or when decoding a coding unit coded in skip mode and cbWidth is equal to 4 and cbHeight is equal to 4 , or 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 MODE_IBC와 같아지도록 설정된다.If pred_mode_ibc_flag is equal to 1, the variables CuPredMode[ x ][ y ] are set equal to MODE_IBC for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1.
inter_pred_idc[ x0 ][ y0 ]는 list0, list1, 또는 양방향 예측이 표 7-9에 따라서 현재 코딩 유닛에 대해 사용되는지 여부를 규정한다. 어레이 인덱스들 x0, y0는, 픽쳐의 상단-좌측 루마 샘플에 상대적인, 고려되는 코딩 블록의 상단-좌측 루마 샘플의 위치 ( x0, y0 )를 규정한다.inter_pred_idc[ x0 ][ y0 ] specifies whether list0, list1, or bidirectional prediction is used for the current coding unit according to Table 7-9. The array indices x0, y0 specify the position ( x0, y0 ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture.
표 7-9 - 인터 예측 모드에 대한 명칭 연관성Table 7-9 - Name associations for inter prediction modes
inter_pred_idc[ x0 ][ y0 ]가 존재하지 않으면, 이것은 PRED_L0 과 같도록 추론된다.If inter_pred_idc[ x0 ][ y0 ] does not exist, it is inferred to be equal to PRED_L0 .
8.5.2.1 종합적인 사항8.5.2.1 General Information
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인, 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치 ( xCb, yCb ),- Luma position of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture ( xCb, yCb ),
- 루마 샘플들 내의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,- Variable cbWidth, which specifies the width of the current coding block within the luma samples.
- 루마 샘플들 내의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight.- Variable cbHeight, which specifies the height of the current coding block within the luma samples.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 1/16 분수-샘플 정확도의 루마 움직임 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],- Luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ] with 1/16 fractional-sample accuracy,
- 레퍼런스 인덱스들 refIdxL0 및 refIdxL1,- Reference indices refIdxL0 and refIdxL1,
- 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],- Prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 gbiIdx.- Bidirectional prediction weight index gbiIdx.
변수 LX가 현재 픽쳐의 RefPicList[ X ]라고 하고, X는 0 또는 1이다.Let the variable LX be the RefPicList[ X ] of the current picture, where X is either 0 or 1.
변수 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], refIdxL0 및 refIdxL1, 및 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]을 유도하기 위하여, 다음 내용들이 적용된다:To derive variables mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], refIdxL0 and refIdxL1, and predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], the following applies:
- merge_flag[ xCb ][ yCb ]가 1과 같으면, 절 8.5.2.2에서 규정된 바와 같은 병합 모드를 위한 루마 움직임 벡터에 대한 유도 프로세스는 루마 위치 ( xCb, yCb ), 변수 cbWidth 및 cbHeight 입력들로 호출되고, 출력은 루마 움직임 벡터 mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0, refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx이다.- If merge_flag[ xCb ][ yCb ] is equal to 1, then the derivation process for luma motion vector for merge mode as specified in Section 8.5.2.2 is called with inputs luma position ( xCb , yCb ), variables cbWidth and cbHeight , and outputs luma motion vector mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], reference indices refIdxL0, refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
- 그렇지 않으면, 다음 내용들이 적용된다:- Otherwise, the following applies:
- 변수 predFlagLX[ 0 ][0 ], mvLX[ 0 ][0 ] 및 refIdxLX 내에서, PRED_LX 내에서, 그리고 신택스 요소 ref_idx_lX 및 MvdLX 내에서 0 또는 1로 치환되는 X에 대하여, 다음 순서의 단계들이 적용된다:- For each X that is substituted with 0 or 1 in variables predFlagLX[ 0 ][0 ], mvLX[ 0 ][0 ] and refIdxLX, in PRED_LX, and in the syntax elements ref_idx_lX and MvdLX, the following sequence of steps is applied:
1. 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]가 다음과 같이 유도된다:1. The variables refIdxLX and predFlagLX[ 0 ][0 ] are derived as follows:
- inter_pred_idc[ xCb ][ yCb ]가 PRED_LX 또는 PRED_BI와 같으면,- If inter_pred_idc[ xCb ][ yCb ] is equal to PRED_LX or PRED_BI,
refIdxLX = ref_idx_lX[ xCb ][ yCb ] (8-266) refIdxLX = ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[ 0 ][0 ] = 1 (8-267) predFlagLX[ 0 ][0 ] = 1 (8-267)
- 그렇지 않으면, 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]는 다음에 의해서 규정된다:- Otherwise, the variables refIdxLX and predFlagLX[ 0 ][ 0 ] are defined by:
refIdxLX = -1 (8-268)refIdxLX = -1 (8-268)
predFlagLX[ 0 ][0 ] = 0 (8-269) predFlagLX[ 0 ][0 ] = 0 (8-269)
2. 변수 mvdLX는 다음과 같이 유도된다:2. The variable mvdLX is derived as follows:
mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270) mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270)
mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271) mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271)
3. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 절 8.5.2.8 내의 루마 움직임 벡터 예측을 위한 유도 프로세스가 루마 코딩 블록 위치 ( xCb, yCb ), 코딩 블록 폭 cbWidth, 코딩 블록 높이 cbHeight 및 변수 refIdxLX를 입력으로서 호출되고, 출력은 mvpLX이다.3. If predFlagLX[ 0 ][ 0 ] is equal to 1, the induction process for luma motion vector prediction in Section 8.5.2.8 is called with luma coding block position ( xCb, yCb ), coding block width cbWidth, coding block height cbHeight and variable refIdxLX as input, and the output is mvpLX.
4. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 루마 움직임 벡터 mvLX[ 0 ][ 0 ]이 다음과 같이 유도된다:4. When predFlagLX[ 0 ][ 0 ] is equal to 1, the luma motion vector mvLX[ 0 ][ 0 ] is derived as follows:
uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 218 ) % 218 (8-272) uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 2 18 ) % 2 18 (8-272)
mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 217 ) ? ( uLX[ 0 ] - 218 ): uLX[ 0 ] (8-273) mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 2 17 ) ? ( uLX[ 0 ] - 2 18 ): uLX[ 0 ] (8-273)
uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 218 ) % 218 (8-274) uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 2 18 ) % 2 18 (8-274)
mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 217 ) ? ( uLX[ 1 ] - 218 ): uLX[ 1 ] (8-275) mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 2 17 ) ? ( uLX[ 1 ] - 2 18 ): uLX[ 1 ] (8-275)
주의 1 - 앞서 규정된 바와 같은, mvLX[ 0 ][ 0 ][ 0 ] 및 mvLX[ 0 ][ 0 ][ 1 ] 의 결과적으로 얻어지는 값들은 언제나 -217 내지 217 - 1의 범위 안에 있을 것이고, 범위는 양단을 포함한다.NOTE 1 - As specified above, the resulting values of mvLX[ 0 ][ 0 ] and mvLX[ 0 ][ 0 ][ 1 ] will always be in the range -2 17 to 2 17 - 1, inclusive.
- 양방향 예측 가중치 인덱스 gbiIdx는 gbi_idx[ xCb ][ yCb ]와 같아지도록 설정된다.- The bidirectional prediction weight index gbiIdx is set to be equal to gbi_idx[ xCb ][ yCb ].
다음 조건들 모두가 참이면, refIdxL1은 -1과 같아지도록 설정되고, predFlagL1은 0 과 같아지도록 설정되며, gbiIdx는 0 과 같아지도록 설정된다:If all of the following conditions are true, refIdxL1 is set equal to -1, predFlagL1 is set equal to 0, and gbiIdx is set equal to 0:
- predFlagL0[ 0 ][ 0 ]은 1과 같을 것.- predFlagL0[ 0 ][ 0 ] will be equal to 1.
- predFlagL1[ 0 ][ 0 ]은 1과 같을 것.- predFlagL1[ 0 ][ 0 ] will be equal to 1.
-- ( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 ) | | ( cbWidth + cbHeight = = 20 )( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 ) | | ( cbWidth + cbHeight = = 20 )
= cbWidth는 4와 같다; cbHeight는 4와 같다.= cbWidth is equal to 4; cbHeight is equal to 4.
절 8.5.2.16에 규정된 바와 같은 이력에 기반한 움직임 벡터 예측기 목록에 대한 업데이트 프로세스는, 루마 움직임 벡터 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0 및 refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx로 호출된다.The update process for the motion vector predictor list based on the history as specified in Section 8.5.2.16 is called with luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], reference indices refIdxL0 and refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
9.5.3.8 inter_pred_idc에 대한 이진화 프로세스9.5.3.8 Binarization process for inter_pred_idc
이러한 프로세스로 들어가는 입력은, 신택스 요소 inter_pred_idc에 대한 이진화 프로세스의 요청, 현재 루마 코딩 블록 폭 cbWidth 및 현재 루마 코딩 블록 높이 cbHeight이다.Inputs to this process are a request for the binarization process for the syntax element inter_pred_idc, the current luma coding block width cbWidth and the current luma coding block height cbHeight.
이러한 프로세스의 출력은 신택스 요소의 이진화이다.The output of this process is a binarization of the syntax elements.
신택스 요소 inter_pred_idc에 대한 이진화는 표 9-9 에 규정된다.The binarization for the syntax element inter_pred_idc is specified in Table 9-9.
표 9-9 - inter_pred_idc에 대한 이진화Table 9-9 - Binarization for inter_pred_idc
9.5.4.2.1 종합적인 사항9.5.4.2.1 General Information
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4( cbWidth + cbHeight ) != 8 && ( cbWidth + cbHeight ) != 12 && ( cbWidth + cbHeight ) != 20 ? 7 - ( ( 1 +
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4
표 9-10 - 콘텍스트 코딩된 빈이 있는 신택스 요소로의 ctxInc의 할당Table 9-10 - Assignment of ctxInc to a syntax element with context-coded bins
5.2 실시형태 #2 (4x4 인터 예측을 디스에이블함)5.2 Embodiment #2 (Disable 4x4 inter prediction)
7.3.6.6 코딩 유닛 신택스7.3.6.6 Coding Unit Syntax
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) ) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) )
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY ) if( sps_pcm_enabled_flag &&
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY )
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY )) if (intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY ))
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY ) if( intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 1 &&
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY )
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 ) if( intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 )
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) { if( sps_amvr_enabled_flag &&
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) {
7.4.7.6 코딩 유닛 시맨틱스7.4.7.6 Coding Unit Semantics
pred_mode_flag가 0 과 같으면 현재 코딩 유닛이 인터 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_flag가 1과 같으면 현재 코딩 유닛이 인트라 예측 모드에서 코딩된다는 것을 규정한다. 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 다음과 같이 유도된다:If pred_mode_flag is equal to 0, it specifies that the current coding unit is coded in inter prediction mode. If pred_mode_flag is equal to 1, it specifies that the current coding unit is coded in intra prediction mode. The variable CuPredMode[ x ][ y ] is derived as follows for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1:
- pred_mode_flag가 0 과 같으면, CuPredMode[ x ][ y ]는 MODE_INTER와 같아지도록 설정된다.- If pred_mode_flag is equal to 0, CuPredMode[ x ][ y ] is set to be equal to MODE_INTER.
- 그렇지 않으면(pred_mode_flag가 1과 같으면), CuPredMode[ x ][ y ]는 MODE_INTRA와 같아지도록 설정된다.- Otherwise (pred_mode_flag is equal to 1), CuPredMode[ x ][ y ] is set to be equal to MODE_INTRA.
pred_mode_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 cbWidth가 4와 같고 cbHeight가 4와 같은 코딩 유닛을 디코딩할 경우에는 1과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩할 경우에는 0과 같다고 각각 추론된다.If pred_mode_flag is not present, it is inferred to be equal to 1 when decoding an I tile group or a coding unit with cbWidth equal to 4 and cbHeight equal to 4 , and 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_ibc_flag가 0 과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩되지 않는다는 것을 규정한다.If pred_mode_ibc_flag is equal to 1, it specifies that the current coding unit is coded in IBC prediction mode. If pred_mode_ibc_flag is equal to 0, it specifies that the current coding unit is not coded in IBC prediction mode.
pred_mode_ibc_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 스킵 모드에서 코딩되는 코딩 유닛을 디코딩하고 cbWidth가 4와 같고 cbHeight가 4와 같은 경우에는 sps_ibc_enabled_flag의 값과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩하는 경우에는 0과 같다고 각각 추론된다.If pred_mode_ibc_flag is not present, it is inferred to be equal to the value of sps_ibc_enabled_flag when decoding an I tile group or when decoding a coding unit coded in skip mode and cbWidth is equal to 4 and cbHeight is equal to 4 , or 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 MODE_IBC와 같아지도록 설정된다.If pred_mode_ibc_flag is equal to 1, the variables CuPredMode[ x ][ y ] are set equal to MODE_IBC for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1.
5.3 실시형태 #3 (4x8, 8x4, 4x16 및 16x4 블록에 대한 양방향 예측을 디스에이블함)5.3 Embodiment #3 (Disable bidirectional prediction for 4x8, 8x4, 4x16 and 16x4 blocks)
7.4.7.6 코딩 유닛 시맨틱스7.4.7.6 Coding Unit Semantics
inter_pred_idc[ x0 ][ y0 ]는 list0, list1, 또는 양방향 예측이 표 7-9에 따라서 현재 코딩 유닛에 대해 사용되는지 여부를 규정한다. 어레이 인덱스들 x0, y0는, 픽쳐의 상단-좌측 루마 샘플에 상대적인, 고려되는 코딩 블록의 상단-좌측 루마 샘플의 위치 ( x0, y0 )를 규정한다.inter_pred_idc[ x0 ][ y0 ] specifies whether list0, list1, or bidirectional prediction is used for the current coding unit according to Table 7-9. The array indices x0, y0 specify the position ( x0, y0 ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture.
표 7-9 - 인터 예측 모드에 대한 명칭 연관성Table 7-9 - Name associations for inter prediction modes
inter_pred_idc[ x0 ][ y0 ]가 존재하지 않으면, 이것은 PRED_L0 와 같도록 추론된다.If inter_pred_idc[ x0 ][ y0 ] does not exist, it is inferred to be equal to PRED_L0 .
8.5.2.1 종합적인 사항8.5.2.1 General Information
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인, 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치 ( xCb, yCb ),- Luma position of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture ( xCb, yCb ),
- 루마 샘플들 내의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,- Variable cbWidth, which specifies the width of the current coding block within the luma samples.
- 루마 샘플들 내의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight.- Variable cbHeight, which specifies the height of the current coding block within the luma samples.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 1/16 분수-샘플 정확도의 루마 움직임 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],- Luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ] with 1/16 fractional-sample accuracy,
- 레퍼런스 인덱스들 refIdxL0 및 refIdxL1,- Reference indices refIdxL0 and refIdxL1,
- 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],- Prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 gbiIdx.- Bidirectional prediction weight index gbiIdx.
변수 LX가 현재 픽쳐의 RefPicList[ X ]라고 하고, X는 0 또는 1이다.Let the variable LX be the RefPicList[ X ] of the current picture, where X is either 0 or 1.
변수 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], refIdxL0 및 refIdxL1, 및 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]을 유도하기 위하여, 다음 내용들이 적용된다:To derive variables mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], refIdxL0 and refIdxL1, and predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], the following applies:
- merge_flag[ xCb ][ yCb ]가 1과 같으면, 절 8.5.2.2에서 규정된 바와 같은 병합 모드를 위한 루마 움직임 벡터에 대한 유도 프로세스는 루마 위치 ( xCb, yCb ), 변수 cbWidth 및 cbHeight 입력들로 호출되고, 출력은 루마 움직임 벡터 mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0, refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx이다.- If merge_flag[ xCb ][ yCb ] is equal to 1, then the derivation process for luma motion vector for merge mode as specified in Section 8.5.2.2 is called with inputs luma position ( xCb , yCb ), variables cbWidth and cbHeight , and outputs luma motion vector mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], reference indices refIdxL0, refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
- 그렇지 않으면, 다음 내용들이 적용된다:- Otherwise, the following applies:
- 변수 predFlagLX[ 0 ][0 ], mvLX[ 0 ][0 ] 및 refIdxLX 내에서, PRED_LX 내에서, 그리고 신택스 요소 ref_idx_lX 및 MvdLX 내에서 0 또는 1로 치환되는 X에 대하여, 다음 순서의 단계들이 적용된다:- For each X that is substituted with 0 or 1 in variables predFlagLX[ 0 ][ 0 ], mvLX[ 0 ][ 0 ] and refIdxLX, in PRED_LX, and in syntax elements ref_idx_lX and MvdLX, the following sequence of steps is applied:
5. 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]가 다음과 같이 유도된다:5. The variables refIdxLX and predFlagLX[ 0 ][0 ] are derived as follows:
- inter_pred_idc[ xCb ][ yCb ]가 PRED_LX 또는 PRED_BI와 같으면,- If inter_pred_idc[ xCb ][ yCb ] is equal to PRED_LX or PRED_BI,
refIdxLX = ref_idx_lX[ xCb ][ yCb ] (8-266) refIdxLX = ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[ 0 ][0 ] = 1 (8-267) predFlagLX[ 0 ][0 ] = 1 (8-267)
- 그렇지 않으면, 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]는 다음에 의해서 규정된다:- Otherwise, the variables refIdxLX and predFlagLX[ 0 ][ 0 ] are defined by:
refIdxLX = -1 (8-268)refIdxLX = -1 (8-268)
predFlagLX[ 0 ][0 ] = 0 (8-269) predFlagLX[ 0 ][0 ] = 0 (8-269)
6. 변수 mvdLX는 다음과 같이 유도된다:6. The variable mvdLX is derived as follows:
mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270) mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270)
mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271) mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271)
7. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 절 8.5.2.8 내의 루마 움직임 벡터 예측을 위한 유도 프로세스가 루마 코딩 블록 위치 ( xCb, yCb ), 코딩 블록 폭 cbWidth, 코딩 블록 높이 cbHeight 및 변수 refIdxLX를 입력으로서 호출되고, 출력은 mvpLX이다.7. If predFlagLX[ 0 ][ 0 ] is equal to 1, the induction process for luma motion vector prediction in Section 8.5.2.8 is called with luma coding block position ( xCb, yCb ), coding block width cbWidth, coding block height cbHeight and variable refIdxLX as input, and the output is mvpLX.
8. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 루마 움직임 벡터 mvLX[ 0 ][ 0 ]이 다음과 같이 유도된다:8. When predFlagLX[ 0 ][ 0 ] is equal to 1, the luma motion vector mvLX[ 0 ][ 0 ] is derived as follows:
uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 218 ) % 218 (8-272) uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 2 18 ) % 2 18 (8-272)
mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 217 ) ? ( uLX[ 0 ] - 218 ): uLX[ 0 ] (8-273) mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 2 17 ) ? ( uLX[ 0 ] - 2 18 ): uLX[ 0 ] (8-273)
uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 218 ) % 218 (8-274) uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 2 18 ) % 2 18 (8-274)
mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 217 ) ? ( uLX[ 1 ] - 218 ): uLX[ 1 ] (8-275) mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 2 17 ) ? ( uLX[ 1 ] - 2 18 ): uLX[ 1 ] (8-275)
주의1 - 앞서 규정된 바와 같은, mvLX[ 0 ][ 0 ][ 0 ] 및 mvLX[ 0 ][ 0 ][ 1 ] 의 결과적으로 얻어지는 값들은 언제나 -217 내지 217 - 1의 범위 안에 있을 것이고, 범위는 양단을 포함한다.NOTE 1 - As specified above, the resulting values of mvLX[ 0 ][ 0 ] and mvLX[ 0 ][ 0 ][ 1 ] will always be in the range -2 17 to 2 17 - 1, inclusive.
- 양방향 예측 가중치 인덱스 gbiIdx는 gbi_idx[ xCb ][ yCb ]와 같아지도록 설정된다.- The bidirectional prediction weight index gbiIdx is set to be equal to gbi_idx[ xCb ][ yCb ].
다음 조건들 모두가 참이면, refIdxL1은 -1과 같아지도록 설정되고, predFlagL1은 0 과 같아지도록 설정되며, gbiIdx는 0 과 같아지도록 설정된다:If all of the following conditions are true, refIdxL1 is set equal to -1, predFlagL1 is set equal to 0, and gbiIdx is set equal to 0:
- predFlagL0[ 0 ][ 0 ]은 1과 같을 것.- predFlagL0[ 0 ][ 0 ] will be equal to 1.
- predFlagL1[ 0 ][ 0 ]은 1과 같을 것.- predFlagL1[ 0 ][ 0 ] will be equal to 1.
-- ( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 ) | | ( cbWidth + cbHeight = = 20 )을 만족할 것( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 ) | | ( cbWidth + cbHeight = = 20 ) will be satisfied.
-- cbWidth는 4와 같을 것; cbHeight는 4와 같을 것.cbWidth will be equal to 4; cbHeight will be equal to 4.
절 8.5.2.16에 규정된 바와 같은 이력에 기반한 움직임 벡터 예측기 목록에 대한 업데이트 프로세스는, 루마 움직임 벡터 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0 및 refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx로 호출된다.The update process for the motion vector predictor list based on the history as specified in Section 8.5.2.16 is called with luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], reference indices refIdxL0 and refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
9.5.3.8 inter_pred_idc에 대한 이진화 프로세스9.5.3.8 Binarization process for inter_pred_idc
이러한 프로세스로 들어가는 입력은, 신택스 요소 inter_pred_idc에 대한 이진화 프로세스의 요청, 현재 루마 코딩 블록 폭 cbWidth 및 현재 루마 코딩 블록 높이 cbHeight이다.Inputs to this process are a request for the binarization process for the syntax element inter_pred_idc, the current luma coding block width cbWidth and the current luma coding block height cbHeight.
이러한 프로세스의 출력은 신택스 요소의 이진화이다.The output of this process is a binarization of the syntax elements.
신택스 요소 inter_pred_idc에 대한 이진화는 표 9-9 에 규정된다.The binarization for the syntax element inter_pred_idc is specified in Table 9-9.
표 9-9 - inter_pred_idc에 대한 이진화Table 9-9 - Binarization for inter_pred_idc
9.5.4.2.1 종합적인 사항9.5.4.2.1 General Information
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4( cbWidth + cbHeight ) != 8 && ( cbWidth + cbHeight ) != 12 && ( cbWidth + cbHeight ) != 20 ? 7 - ( ( 1 +
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4
표 9-10 - 콘텍스트 코딩된 빈이 있는 신택스 요소로의 ctxInc의 할당Table 9-10 - Assignment of ctxInc to a syntax element with context-coded bins
실시형태 #4 (4x4 인터 예측을 디스에이블하고, 4x8, 8x4 블록들에 대한 양방향 예측을 디스에이블함)Embodiment #4 (Disable 4x4 inter prediction, disable bidirectional prediction for 4x8, 8x4 blocks)
7.3.6.6 코딩 유닛 신택스7.3.6.6 Coding Unit Syntax
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) ) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) )
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY ) if( sps_pcm_enabled_flag &&
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY )
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY )) if (intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY ))
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY ) if( intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 1 &&
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY )
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 ) if( intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 )
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) { if( sps_amvr_enabled_flag &&
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) {
7.4.7.6 코딩 유닛 시맨틱스7.4.7.6 Coding Unit Semantics
pred_mode_flag가 0 과 같으면 현재 코딩 유닛이 인터 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_flag가 1과 같으면 현재 코딩 유닛이 인트라 예측 모드에서 코딩된다는 것을 규정한다. 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 다음과 같이 유도된다:If pred_mode_flag is equal to 0, it specifies that the current coding unit is coded in inter prediction mode. If pred_mode_flag is equal to 1, it specifies that the current coding unit is coded in intra prediction mode. The variable CuPredMode[ x ][ y ] is derived as follows for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1:
- pred_mode_flag가 0 과 같으면, CuPredMode[ x ][ y ]는 MODE_INTER와 같아지도록 설정된다.- If pred_mode_flag is equal to 0, CuPredMode[ x ][ y ] is set to be equal to MODE_INTER.
- 그렇지 않으면(pred_mode_flag가 1과 같으면), CuPredMode[ x ][ y ]는 MODE_INTRA와 같아지도록 설정된다.- Otherwise (if pred_mode_flag is equal to 1), CuPredMode[ x ][ y ] is set to be equal to MODE_INTRA.
pred_mode_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 cbWidth가 4와 같고 cbHeight가 4와 같은 코딩 유닛을 디코딩할 경우에는 1과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩할 경우에는 0과 같다고 각각 추론된다.If pred_mode_flag is not present, it is inferred to be equal to 1 when decoding an I tile group or a coding unit with cbWidth equal to 4 and cbHeight equal to 4 , and 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_ibc_flag가 0 과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩되지 않는다는 것을 규정한다.If pred_mode_ibc_flag is equal to 1, it specifies that the current coding unit is coded in IBC prediction mode. If pred_mode_ibc_flag is equal to 0, it specifies that the current coding unit is not coded in IBC prediction mode.
pred_mode_ibc_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 스킵 모드에서 코딩되는 코딩 유닛을 디코딩하고 cbWidth가 4와 같고 cbHeight가 4와 같은 경우에는 sps_ibc_enabled_flag의 값과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩하는 경우에는 0과 같다고 각각 추론된다.If pred_mode_ibc_flag is not present, it is inferred to be equal to the value of sps_ibc_enabled_flag when decoding an I tile group or when decoding a coding unit coded in skip mode and cbWidth is equal to 4 and cbHeight is equal to 4 , or 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 MODE_IBC와 같아지도록 설정된다.If pred_mode_ibc_flag is equal to 1, the variables CuPredMode[ x ][ y ] are set equal to MODE_IBC for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1.
inter_pred_idc[ x0 ][ y0 ]는 list0, list1, 또는 양방향 예측이 표 7-9에 따라서 현재 코딩 유닛에 대해 사용되는지 여부를 규정한다. 어레이 인덱스들 x0, y0는, 픽쳐의 상단-좌측 루마 샘플에 상대적인, 고려되는 코딩 블록의 상단-좌측 루마 샘플의 위치 ( x0, y0 )를 규정한다.inter_pred_idc[ x0 ][ y0 ] specifies whether list0, list1, or bidirectional prediction is used for the current coding unit according to Table 7-9. The array indices x0, y0 specify the position ( x0, y0 ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture.
표 7-9 - 인터 예측 모드에 대한 명칭 연관성Table 7-9 - Name associations for inter prediction modes
inter_pred_idc[ x0 ][ y0 ]가 존재하지 않으면, 이것은 PRED_L0 와 같도록 추론된다.If inter_pred_idc[ x0 ][ y0 ] does not exist, it is inferred to be equal to PRED_L0 .
8.5.2.1 종합적인 사항8.5.2.1 General Information
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인, 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치 ( xCb, yCb ),- Luma position of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture ( xCb, yCb ),
- 루마 샘플들 내의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,- Variable cbWidth, which specifies the width of the current coding block within the luma samples.
- 루마 샘플들 내의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight.- Variable cbHeight, which specifies the height of the current coding block within the luma samples.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 1/16 분수-샘플 정확도의 루마 움직임 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],- Luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ] with 1/16 fractional-sample accuracy,
- 레퍼런스 인덱스들 refIdxL0 및 refIdxL1,- Reference indices refIdxL0 and refIdxL1,
- 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],- Prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 gbiIdx.- Bidirectional prediction weight index gbiIdx.
변수 LX가 현재 픽쳐의 RefPicList[ X ]라고 하고, X는 0 또는 1이다.Let the variable LX be the RefPicList[ X ] of the current picture, where X is either 0 or 1.
변수 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], refIdxL0 및 refIdxL1, 및 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]을 유도하기 위하여, 다음 내용들이 적용된다:To derive variables mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], refIdxL0 and refIdxL1, and predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], the following applies:
- merge_flag[ xCb ][ yCb ]가 1과 같으면, 절 8.5.2.2에서 규정된 바와 같은 병합 모드를 위한 루마 움직임 벡터에 대한 유도 프로세스는 루마 위치 ( xCb, yCb ), 변수 cbWidth 및 cbHeight 입력들로 호출되고, 출력은 루마 움직임 벡터 mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0, refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx이다.- If merge_flag[ xCb ][ yCb ] is equal to 1, then the derivation process for luma motion vector for merge mode as specified in Section 8.5.2.2 is called with inputs luma position ( xCb , yCb ), variables cbWidth and cbHeight , and outputs luma motion vector mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], reference indices refIdxL0, refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
- 그렇지 않으면, 다음 내용들이 적용된다:- Otherwise, the following applies:
- 변수 predFlagLX[ 0 ][0 ], mvLX[ 0 ][0 ] 및 refIdxLX 내에서, PRED_LX 내에서, 그리고 신택스 요소 ref_idx_lX 및 MvdLX 내에서 0 또는 1로 치환되는 X에 대하여, 다음 순서의 단계들이 적용된다:- For each X that is substituted with 0 or 1 in variables predFlagLX[ 0 ][ 0 ], mvLX[ 0 ][ 0 ] and refIdxLX, in PRED_LX, and in syntax elements ref_idx_lX and MvdLX, the following sequence of steps is applied:
1. 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]가 다음과 같이 유도된다:1. The variables refIdxLX and predFlagLX[ 0 ][0 ] are derived as follows:
- inter_pred_idc[ xCb ][ yCb ]가 PRED_LX 또는 PRED_BI와 같으면,- If inter_pred_idc[ xCb ][ yCb ] is equal to PRED_LX or PRED_BI,
refIdxLX = ref_idx_lX[ xCb ][ yCb ] (8-266) refIdxLX = ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[ 0 ][0 ] = 1 (8-267)predFlagLX[ 0 ][0 ] = 1 (8-267)
- 그렇지 않으면, 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]는 다음에 의해서 규정된다:- Otherwise, the variables refIdxLX and predFlagLX[ 0 ][ 0 ] are defined by:
refIdxLX = -1 (8-268)refIdxLX = -1 (8-268)
predFlagLX[ 0 ][0 ] = 0 (8-269) predFlagLX[ 0 ][0 ] = 0 (8-269)
2. 변수 mvdLX는 다음과 같이 유도된다:2. The variable mvdLX is derived as follows:
mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270) mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270)
mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271) mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271)
3. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 절 8.5.2.8 내의 루마 움직임 벡터 예측을 위한 유도 프로세스가 루마 코딩 블록 위치 ( xCb, yCb ), 코딩 블록 폭 cbWidth, 코딩 블록 높이 cbHeight 및 변수 refIdxLX를 입력으로서 호출되고, 출력은 mvpLX이다.3. If predFlagLX[ 0 ][ 0 ] is equal to 1, the induction process for luma motion vector prediction in Section 8.5.2.8 is called with luma coding block position ( xCb, yCb ), coding block width cbWidth, coding block height cbHeight and variable refIdxLX as input, and the output is mvpLX.
4. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 루마 움직임 벡터 mvLX[ 0 ][ 0 ]이 다음과 같이 유도된다:4. When predFlagLX[ 0 ][ 0 ] is equal to 1, the luma motion vector mvLX[ 0 ][ 0 ] is derived as follows:
uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 218 ) % 218 (8-272) uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 2 18 ) % 2 18 (8-272)
mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 217 ) ? ( uLX[ 0 ] - 218 ): uLX[ 0 ] (8-273) mvLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 2 17 ) ? ( uLX[ 0 ] - 2 18 ): uLX[ 0 ] (8-273)
uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 218 ) % 218 (8-274) uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 2 18 ) % 2 18 (8-274)
mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 217 ) ? ( uLX[ 1 ] - 218 ): uLX[ 1 ] (8-275) mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 2 17 ) ? ( uLX[ 1 ] - 2 18 ): uLX[ 1 ] (8-275)
주의1 - 앞서 규정된 바와 같은, mvLX[ 0 ][ 0 ][ 0 ] 및 mvLX[ 0 ][ 0 ][ 1 ] 의 결과적으로 얻어지는 값들은 언제나 -217 내지 217 - 1의 범위 안에 있을 것이고, 범위는 양단을 포함한다.NOTE 1 - As specified above, the resulting values of mvLX[ 0 ][ 0 ] and mvLX[ 0 ][ 0 ][ 1 ] will always be in the range -2 17 to 2 17 - 1, inclusive.
- 양방향 예측 가중치 인덱스 gbiIdx는 gbi_idx[ xCb ][ yCb ]와 같아지도록 설정된다.- The bidirectional prediction weight index gbiIdx is set to be equal to gbi_idx[ xCb ][ yCb ].
다음 조건들 모두가 참이면, refIdxL1은 -1과 같아지도록 설정되고, predFlagL1은 0 과 같아지도록 설정되며, gbiIdx는 0 과 같아지도록 설정된다:If all of the following conditions are true, refIdxL1 is set equal to -1, predFlagL1 is set equal to 0, and gbiIdx is set equal to 0:
- predFlagL0[ 0 ][ 0 ]은 1과 같다.- predFlagL0[ 0 ][ 0 ] is equal to 1.
- predFlagL1[ 0 ][ 0 ]은 1과 같다.- predFlagL1[ 0 ][ 0 ] is equal to 1.
-- ( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 )( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 )
-- cbWidth는 4와 같다.cbWidth is equal to 4.
-- cbHeight는 4와 같다.cbHeight is equal to 4.
절 8.5.2.16 에 규정된 바와 같은 이력에 기반한 움직임 벡터 예측기 목록에 대한 업데이트 프로세스는, 루마 움직임 벡터 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0 및 refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx로 호출된다.The update process for the motion vector predictor list based on the history as specified in Section 8.5.2.16 is called with luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], reference indices refIdxL0 and refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
9.5.3.8 inter_pred_idc에 대한 이진화 프로세스9.5.3.8 Binarization process for inter_pred_idc
이러한 프로세스로 들어가는 입력은, 신택스 요소 inter_pred_idc에 대한 이진화 프로세스의 요청, 현재 루마 코딩 블록 폭 cbWidth 및 현재 루마 코딩 블록 높이 cbHeight이다.Inputs to this process are a request for the binarization process for the syntax element inter_pred_idc, the current luma coding block width cbWidth and the current luma coding block height cbHeight.
이러한 프로세스의 출력은 신택스 요소의 이진화이다.The output of this process is a binarization of the syntax elements.
신택스 요소 inter_pred_idc에 대한 이진화는 표 9-9 에 규정된다.The binarization for the syntax element inter_pred_idc is specified in Table 9-9.
표 9-9 - inter_pred_idc에 대한 이진화Table 9-9 - Binarization for inter_pred_idc
9.5.4.2.1 종합적인 사항9.5.4.2.1 General Information
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4( cbWidth + cbHeight ) != 8 && ( cbWidth + cbHeight ) != 12 ? 7 - ( ( 1 +
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4
표 9-10 - 콘텍스트 코딩된 빈이 있는 신택스 요소로의 ctxInc의 할당Table 9-10 - Assignment of ctxInc to a syntax element with context-coded bins
5.5 실시형태 #5 (4x4 인터 예측을 디스에이블하고, 4x8, 8x4 블록에 대한 양방향 예측을 디스에이블하며, 정규 병합 모드에 대한 공유된 병합 목록을 디스에이블함)5.5 Embodiment #5 (Disable 4x4 inter prediction, disable bidirectional prediction for 4x8, 8x4 blocks, and disable shared merge list for regular merge mode)
7.3.6.6 코딩 유닛 신택스7.3.6.6 Coding Unit Syntax
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) ) if( ( ( tile_group_type = = I && cu_skip_flag[ x0 ][ y0 ] = =0 ) | |
( tile_group_type != I && CuPredMode[ x0 ][ y0 ] != MODE_INTRA ) ) &&
sps_ibc_enabled_flag && !( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[ x0 ][ y0 ] = = 1 ) )
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY ) if( sps_pcm_enabled_flag &&
cbWidth >= MinIpcmCbSizeY && cbWidth <= MaxIpcmCbSizeY &&
cbHeight >= MinIpcmCbSizeY && cbHeight <= MaxIpcmCbSizeY )
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY )) if (intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
( cbWidth <= MaxTbSizeY | | cbHeight <= MaxTbSizeY ) &&
( cbWidth * cbHeight > MinTbSizeY * MinTbSizeY ))
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY ) if( intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 1 &&
cbWidth <= MaxTbSizeY && cbHeight <= MaxTbSizeY )
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 ) if( intra_luma_ref_idx[ x0 ][ y0 ] = = 0 &&
intra_subpartitions_mode_flag[ x0 ][ y0 ] = = 0 )
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) { if( sps_amvr_enabled_flag &&
( MvdL0[ x0 ][ y0 ][ 0 ] != 0 | | MvdL0[ x0 ][ y0 ][ 1 ] != 0 ) ) {
7.4.7.6 코딩 유닛 시맨틱스7.4.7.6 Coding Unit Semantics
pred_mode_flag가 0 과 같으면 현재 코딩 유닛이 인터 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_flag가 1과 같으면 현재 코딩 유닛이 인트라 예측 모드에서 코딩된다는 것을 규정한다. 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 다음과 같이 유도된다:If pred_mode_flag is equal to 0, it specifies that the current coding unit is coded in inter prediction mode. If pred_mode_flag is equal to 1, it specifies that the current coding unit is coded in intra prediction mode. The variable CuPredMode[ x ][ y ] is derived as follows for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1:
- pred_mode_flag가 0 과 같으면, CuPredMode[ x ][ y ]는 MODE_INTER와 같아지도록 설정된다.- If pred_mode_flag is equal to 0, CuPredMode[ x ][ y ] is set to be equal to MODE_INTER.
- 그렇지 않으면(pred_mode_flag가 1과 같으면), CuPredMode[ x ][ y ]는 MODE_INTRA와 같아지도록 설정된다.- Otherwise (pred_mode_flag is equal to 1), CuPredMode[ x ][ y ] is set to be equal to MODE_INTRA.
pred_mode_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 cbWidth가 4와 같고 cbHeight가 4와 같은 코딩 유닛을 디코딩할 경우에는 1과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩할 경우에는 0과 같다고 각각 추론된다.If pred_mode_flag is not present, it is inferred to be equal to 1 when decoding an I tile group or a coding unit with cbWidth equal to 4 and cbHeight equal to 4 , and 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩된다는 것을 규정한다. pred_mode_ibc_flag가 0 과 같으면, 현재 코딩 유닛이 IBC 예측 모드에서 코딩되지 않는다는 것을 규정한다.If pred_mode_ibc_flag is equal to 1, it specifies that the current coding unit is coded in IBC prediction mode. If pred_mode_ibc_flag is equal to 0, it specifies that the current coding unit is not coded in IBC prediction mode.
pred_mode_ibc_flag가 존재하지 않으면, 이것은, I 타일 그룹을 디코딩할 경우 또는 스킵 모드에서 코딩되는 코딩 유닛을 디코딩하고 cbWidth가 4와 같고 cbHeight가 4와 같은 경우에는 sps_ibc_enabled_flag의 값과 같다고 추론되고, P 또는 B 타일 그룹을 디코딩하는 경우에는 0과 같다고 각각 추론된다.If pred_mode_ibc_flag is not present, it is inferred to be equal to the value of sps_ibc_enabled_flag when decoding an I tile group or when decoding a coding unit coded in skip mode and cbWidth is equal to 4 and cbHeight is equal to 4 , or 0 when decoding a P or B tile group, respectively.
pred_mode_ibc_flag가 1과 같으면, 변수 CuPredMode[ x ][ y ]는 x = x0..x0 + cbWidth - 1 및 y = y0..y0 + cbHeight - 1 에 대해서 MODE_IBC와 같아지도록 설정된다.If pred_mode_ibc_flag is equal to 1, the variables CuPredMode[ x ][ y ] are set equal to MODE_IBC for x = x0..x0 + cbWidth - 1 and y = y0..y0 + cbHeight - 1.
inter_pred_idc[ x0 ][ y0 ]는 list0, list1, 또는 양방향 예측이 표 7-9에 따라서 현재 코딩 유닛에 대해 사용되는지 여부를 규정한다. 어레이 인덱스들 x0, y0는, 픽쳐의 상단-좌측 루마 샘플에 상대적인, 고려되는 코딩 블록의 상단-좌측 루마 샘플의 위치 ( x0, y0 )를 규정한다.inter_pred_idc[ x0 ][ y0 ] specifies whether list0, list1, or bidirectional prediction is used for the current coding unit according to Table 7-9. The array indices x0, y0 specify the position ( x0, y0 ) of the top-left luma sample of the considered coding block relative to the top-left luma sample of the picture.
표 7-9 - 인터 예측 모드에 대한 명칭 연관성Table 7-9 - Name associations for inter prediction modes
inter_pred_idc[ x0 ][ y0 ]가 존재하지 않으면, 이것은 PRED_L0 와 같도록 추론된다.If inter_pred_idc[ x0 ][ y0 ] does not exist, it is inferred to be equal to PRED_L0 .
8.5.2.1 종합적인 사항8.5.2.1 General Information
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인, 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치 ( xCb, yCb ),- Luma position of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture ( xCb, yCb ),
- 루마 샘플들 내의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,- Variable cbWidth, which specifies the width of the current coding block within the luma samples.
- 루마 샘플들 내의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight.- Variable cbHeight, which specifies the height of the current coding block within the luma samples.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 1/16 분수-샘플 정확도의 루마 움직임 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],- Luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ] with 1/16 fractional-sample accuracy,
- 레퍼런스 인덱스들 refIdxL0 및 refIdxL1,- Reference indices refIdxL0 and refIdxL1,
- 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],- Prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 gbiIdx.- Bidirectional prediction weight index gbiIdx.
변수 LX가 현재 픽쳐의 RefPicList[ X ]라고 하고, X는 0 또는 1이다.Let the variable LX be the RefPicList[ X ] of the current picture, where X is either 0 or 1.
변수 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], refIdxL0 및 refIdxL1, 및 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ]을 유도하기 위하여, 다음 내용들이 적용된다:To derive variables mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], refIdxL0 and refIdxL1, and predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], the following applies:
- merge_flag[ xCb ][ yCb ]가 1과 같으면, 절 8.5.2.2에서 규정된 바와 같은 병합 모드를 위한 루마 움직임 벡터에 대한 유도 프로세스는 루마 위치 ( xCb, yCb ), 변수 cbWidth 및 cbHeight 입력들로 호출되고, 출력은 루마 움직임 벡터 mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0, refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx이다.- If merge_flag[ xCb ][ yCb ] is equal to 1, then the derivation process for luma motion vector for merge mode as specified in Section 8.5.2.2 is called with inputs luma position ( xCb , yCb ), variables cbWidth and cbHeight , and outputs luma motion vector mvL0[ 0 ][ 0 ], mvL1[ 0 ][ 0 ], reference indices refIdxL0, refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
- 그렇지 않으면, 다음 내용들이 적용된다:- Otherwise, the following applies:
- 변수 predFlagLX[ 0 ][0 ], mvLX[ 0 ][0 ] 및 refIdxLX 내에서, PRED_LX 내에서, 그리고 신택스 요소 ref_idx_lX 및 MvdLX 내에서 0 또는 1로 치환되는 X에 대하여, 다음 순서의 단계들이 적용된다:- For each X that is substituted with 0 or 1 in variables predFlagLX[ 0 ][ 0 ], mvLX[ 0 ][ 0 ] and refIdxLX, in PRED_LX, and in syntax elements ref_idx_lX and MvdLX, the following sequence of steps is applied:
5. 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]가 다음과 같이 유도된다:5. The variables refIdxLX and predFlagLX[ 0 ][0 ] are derived as follows:
- inter_pred_idc[ xCb ][ yCb ]가 PRED_LX 또는 PRED_BI와 같으면,- If inter_pred_idc[ xCb ][ yCb ] is equal to PRED_LX or PRED_BI,
refIdxLX = ref_idx_lX[ xCb ][ yCb ] (8-266) refIdxLX = ref_idx_lX[xCb][yCb] (8-266)
predFlagLX[ 0 ][0 ] = 1 (8-267) predFlagLX[ 0 ][0 ] = 1 (8-267)
- 그렇지 않으면, 변수 refIdxLX 및 predFlagLX[ 0 ][0 ]는 다음에 의해서 규정된다:- Otherwise, the variables refIdxLX and predFlagLX[ 0 ][ 0 ] are defined by:
refIdxLX = -1 (8-268)refIdxLX = -1 (8-268)
predFlagLX[ 0 ][0 ] = 0 (8-269) predFlagLX[ 0 ][0 ] = 0 (8-269)
6. 변수 mvdLX는 다음과 같이 유도된다:6. The variable mvdLX is derived as follows:
mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270) mvdLX[ 0 ] = MvdLX[ xCb ][ yCb ][ 0 ] (8-270)
mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271) mvdLX[ 1 ] = MvdLX[ xCb ][ yCb ][ 1 ] (8-271)
7. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 절 8.5.2.8 내의 루마 움직임 벡터 예측을 위한 유도 프로세스가 루마 코딩 블록 위치 ( xCb, yCb ), 코딩 블록 폭 cbWidth, 코딩 블록 높이 cbHeight 및 변수 refIdxLX를 입력으로서 호출되고, 출력은 mvpLX이다.7. If predFlagLX[ 0 ][ 0 ] is equal to 1, the induction process for luma motion vector prediction in Section 8.5.2.8 is called with luma coding block position ( xCb, yCb ), coding block width cbWidth, coding block height cbHeight and variable refIdxLX as input, and the output is mvpLX.
4. predFlagLX[ 0 ][ 0 ]이 1과 같은 경우에는, 루마 움직임 벡터 mvLX[ 0 ][ 0 ]이 다음과 같이 유도된다:4. When predFlagLX[ 0 ][ 0 ] is equal to 1, the luma motion vector mvLX[ 0 ][ 0 ] is derived as follows:
uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 218 ) % 218 (8-272) uLX[ 0 ] = ( mvpLX[ 0 ] + mvdLX[ 0 ] + 2 18 ) % 2 18 (8-272)
m vLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 217 ) ? ( uLX[ 0 ] - 218 ): uLX[ 0 ] (8-273)m vLX[ 0 ][ 0 ][ 0 ] = ( uLX[ 0 ] >= 2 17 ) ? ( uLX[ 0 ] - 2 18 ): uLX[ 0 ] (8-273)
uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 218 ) % 218 (8-274) uLX[ 1 ] = ( mvpLX[ 1 ] + mvdLX[ 1 ] + 2 18 ) % 2 18 (8-274)
mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 217 ) ? ( uLX[ 1 ] - 218 ): uLX[ 1 ] (8-275) mvLX[ 0 ][ 0 ][ 1 ] = ( uLX[ 1 ] >= 2 17 ) ? ( uLX[ 1 ] - 2 18 ): uLX[ 1 ] (8-275)
주의1 - 앞서 규정된 바와 같은, mvLX[ 0 ][ 0 ][ 0 ] 및 mvLX[ 0 ][ 0 ][ 1 ] 의 결과적으로 얻어지는 값들은 언제나 -217 내지 217 - 1의 범위 안에 있을 것이고, 범위는 양단을 포함한다.NOTE 1 - As specified above, the resulting values of mvLX[ 0 ][ 0 ] and mvLX[ 0 ][ 0 ][ 1 ] will always be in the range -2 17 to 2 17 - 1, inclusive.
- 양방향 예측 가중치 인덱스 gbiIdx는 gbi_idx[ xCb ][ yCb ]와 같아지도록 설정된다.- The bidirectional prediction weight index gbiIdx is set to be equal to gbi_idx[ xCb ][ yCb ].
다음 조건들 모두가 참이면, refIdxL1은 -1과 같아지도록 설정되고, predFlagL1은 0 과 같아지도록 설정되며, gbiIdx는 0 과 같아지도록 설정된다:If all of the following conditions are true, refIdxL1 is set equal to -1, predFlagL1 is set equal to 0, and gbiIdx is set equal to 0:
- predFlagL0[ 0 ][ 0 ]은 1과 같을 것.- predFlagL0[ 0 ][ 0 ] will be equal to 1.
- predFlagL1[ 0 ][ 0 ]은 1과 같을 것.- predFlagL1[ 0 ][ 0 ] will be equal to 1.
-- ( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 )( cbWidth + cbHeight = = 8 ) | | ( cbWidth + cbHeight = = 12 )
-- cbWidth는 4와 같을 것.cbWidth will be equal to 4.
-- cbHeight는 4와 같을 것.cbHeight will be equal to 4.
절 8.5.2.16 에 규정된 바와 같은 이력에 기반한 움직임 벡터 예측기 목록에 대한 업데이트 프로세스는, 루마 움직임 벡터 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ], 레퍼런스 인덱스들 refIdxL0 및 refIdxL1, 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ], 및 양방향 예측 가중치 인덱스 gbiIdx로 호출된다.The update process for the motion vector predictor list based on the history as specified in Section 8.5.2.16 is called with luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ], reference indices refIdxL0 and refIdxL1, prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ], and bidirectional prediction weight index gbiIdx.
8.5.2.2 병합 모드에 대한 루마 움직임 벡터를 위한 유도 프로세스8.5.2.2 Derivation process for luma motion vectors for merge mode
이러한 프로세스는 merge_flag[ xCb ][ yPb ]가 1과 같은 경우에만 호출되는데, 여기에서 ( xCb, yCb )는 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인 현재 루마 코딩 블록의 상단-좌측 샘플을 규정한다.This process is only called if merge_flag[ xCb ][ yPb ] is equal to 1, where ( xCb, yCb ) specifies the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture.
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 현재 픽쳐의 상단-좌측 루마 샘플에 상대적인, 현재 루마 코딩 블록의 상단-좌측 샘플의 루마 위치 ( xCb, yCb ),- Luma position of the top-left sample of the current luma coding block relative to the top-left luma sample of the current picture ( xCb, yCb ),
- 루마 샘플들 내의 현재 코딩 블록의 폭을 규정하는 변수 cbWidth,- Variable cbWidth, which specifies the width of the current coding block within the luma samples.
- 루마 샘플들 내의 현재 코딩 블록의 높이를 규정하는 변수 cbHeight.- Variable cbHeight, which specifies the height of the current coding block within the luma samples.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 1/16 분수-샘플 정확도의 루마 움직임 벡터들 mvL0[ 0 ][ 0 ] 및 mvL1[ 0 ][ 0 ],- Luma motion vectors mvL0[ 0 ][ 0 ] and mvL1[ 0 ][ 0 ] with 1/16 fractional-sample accuracy,
- 레퍼런스 인덱스들 refIdxL0 및 refIdxL1,- Reference indices refIdxL0 and refIdxL1,
- 예측 목록 활용 플래그 predFlagL0[ 0 ][ 0 ] 및 predFlagL1[ 0 ][ 0 ],- Prediction list utilization flags predFlagL0[ 0 ][ 0 ] and predFlagL1[ 0 ][ 0 ],
- 양방향 예측 가중치 인덱스 gbiIdx.- Bidirectional prediction weight index gbiIdx.
양방향 예측 가중치 인덱스 gbiIdx는 0 과 같아지도록 설정된다.The bidirectional prediction weight index gbiIdx is set to be equal to 0.
변수 xSmr, ySmr, smrWidth, smrHeight, 및 smrNumHmvpCand는 다음과 같이 유도된다:The variables xSmr, ySmr, smrWidth, smrHeight, and smrNumHmvpCand are derived as follows:
xSmr = IsInSmr[ xCb ][ yCb ] ? SmrX[ xCb ][ yCb ]: xCb (8-276) xSmr = IsInSmr[xCb][yCb] ? SmrX[xCb][yCb]: xCb (8-276)
ySmr = IsInSmr[ xCb ][ yCb ] ? SmrY[ xCb ][ yCb ]: yCb (8-277) ySmr = IsInSmr[xCb][yCb] ? SmrY[xCb][yCb]: yCb (8-277)
smrWidth = IsInSmr[ xCb ][ yCb ] ? SmrW[ xCb ][ yCb ]: cbWidth (8-278) smrWidth = IsInSmr[ xCb ][ yCb ] ? SmrW[xCb][yCb]: cbWidth (8-278)
smrHeight = IsInSmr[ xCb ][ yCb ] ? SmrH[ xCb ][ yCb ]: cbHeight (8-279) smrHeight = IsInSmr[ xCb ][ yCb ] ? SmrH[xCb][yCb]: cbHeight (8-279)
smrNumHmvpCand = IsInSmr[ xCb ][ yCb ] ? NumHmvpSmrCand: NumHmvpCand (8-280) smrNumHmvpCand = IsInSmr[ xCb ][ yCb ] ? NumHmvpSmrCand: NumHmvpCand (8-280)
8.5.2.6 이력에 기반한 병합 후보를 위한 유도 프로세스8.5.2.6 Inductive process for history-based merge candidates
이러한 프로세스로 들어가는 입력들은 다음이다:The inputs to this process are:
- 병합 후보 목록 mergeCandList,- mergeCandList, the list of merge candidates
- 현재 코딩 유닛이 공유된 병합 후보 영역 내에 있는지 여부를 규정하는 변수 isInSmr,- Variable isInSmr, which determines whether the current coding unit is within a shared merge candidate region.
- 목록 내의 이용가능한 병합 후보들의 개수 numCurrMergeCand.- numCurrMergeCand, the number of available merge candidates in the list.
이러한 프로세스의 출력들은 다음이다:The outputs of this process are:
- 수정된 병합 후보 목록 mergeCandList,- modified merge candidate list mergeCandList,
- 목록 내의 병합 후보의 수정된 개수 numCurrMergeCand.- numCurrMergeCand The modified number of merge candidates in the list.
변수 isPrunedA1 및 isPrunedB1 양자 모두는 FALSE와 같아지도록 설정된다.Both variables isPrunedA 1 and isPrunedB 1 are set to equal FALSE.
어레이 smrHmvpCandList 및 변수 smrNumHmvpCand는 다음과 같이 유도된다:The array smrHmvpCandList and the variable smrNumHmvpCand are derived as follows:
smrHmvpCandList = isInSmr ? HmvpSmrCandList: HmvpCandList (8-353) smrHmvpCandList = isInSmr ? HmvpSmrCandList : HmvpCandList (8-353)
smrNumHmvpCand = isInSmr ? NumHmvpSmrCand: NumHmvpCand (8-354) smrNumHmvpCand = isInSmr ? NumHmvpSmrCand: NumHmvpCand (8-354)
smrHmvpCandList[ hMvpIdx ] 내의 인덱스가 hMvpIdx = 1..smrNumHmvpCand인 각각의 후보에 대하여, 다음 순서의 단계들이 numCurrMergeCand가 ( MaxNumMergeCand - 1)과 같아질 때까지 반복된다:For each candidate in smrHmvpCandList[ hMvpIdx ] whose index is hMvpIdx = 1..smrNumHmvpCand, the following sequence of steps is repeated until numCurrMergeCand equals ( MaxNumMergeCand - 1):
1. 변수 sameMotion은 다음과 같이 유도된다:1. The variable sameMotion is derived as follows:
- 다음 조건들 모두가 임의의 병합 후보 N에 대해서 참이면(N은 A1 또는 B1), sameMotion 및 isPrunedN 양자 모두가 TRUE와 같아지도록 설정된다: - If all of the following conditions are true for any merge candidate N (N is either A 1 or B 1 ), then both sameMotion and isPrunedN are set to TRUE:
- hMvpIdx는 2 이하이다.- hMvpIdx is less than or equal to 2.
- 후보 smrHmvpCandList[ smrNumHmvpCand - hMvpIdx]는 병합 후보 N과 같다.- Candidate smrHmvpCandList[smrNumHmvpCand - hMvpIdx] is equal to merge candidate N.
- isPrunedN은 FALSE와 같다.- isPrunedN is equal to FALSE.
- 그렇지 않으면, sameMotion이 FALSE와 같아지도록 설정된다.- Otherwise, sameMotion is set to FALSE.
2. sameMotion이 FALSE와 같으면, 후보 smrHmvpCandList[ smrNumHmvpCand - hMvpIdx]가 다음과 같이 병합 후보 목록에 추가된다:2. If sameMotion is FALSE, the candidate smrHmvpCandList[smrNumHmvpCand - hMvpIdx] is added to the merge candidate list as follows:
mergeCandList[ numCurrMergeCand++ ] = smrHmvpCandList[ smrNumHmvpCand - hMvpIdx ] (8-355) mergeCandList[ numCurrMergeCand++ ] = smrHmvpCandList[ smrNumHmvpCand - hMvpIdx ] (8-355)
9.5.3.8 inter_pred_idc에 대한 이진화 프로세스9.5.3.8 Binarization process for inter_pred_idc
이러한 프로세스로 들어가는 입력은, 신택스 요소 inter_pred_idc에 대한 이진화 프로세스의 요청, 현재 루마 코딩 블록 폭 cbWidth 및 현재 루마 코딩 블록 높이 cbHeight이다.Inputs to this process are a request for the binarization process for the syntax element inter_pred_idc, the current luma coding block width cbWidth and the current luma coding block height cbHeight.
이러한 프로세스의 출력은 신택스 요소의 이진화이다.The output of this process is a binarization of the syntax elements.
신택스 요소 inter_pred_idc에 대한 이진화는 Table 99에 규정된다.The binarization for the syntax element inter_pred_idc is specified in Table 99.
표 9-9 - inter_pred_idc에 대한 이진화Table 9-9 - Binarization for inter_pred_idc
9.5.4.2.1 종합적인 사항9.5.4.2.1 General Information
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4( cbWidth + cbHeight ) != 8 && ( cbWidth + cbHeight ) != 12 ? 7 - ( ( 1 +
Log2( cbWidth ) + Log2( cbHeight ) ) >> 1 )
: 4
표 9-10 - 콘텍스트 코딩된 빈이 있는 신택스 요소로의 ctxInc의 할당Table 9-10 - Assignment of ctxInc to a syntax element with context-coded bins
도 11은 비디오 처리 장치(1100)의 블록도이다. 장치(1100)는 본 명세서에서 설명되는 방법들 중 하나 이상을 구현하기 위하여 사용될 수 있다. 장치(1100)는 스마트 폰, 태블릿, 컴퓨터, 사물 인터넷(Internet of Things; IoT) 수신기 등 내에 구현될 수 있다. 장치(1100)는 하나 이상의 프로세서(1102), 하나 이상의 메모리(1104) 및 비디오 처리 하드웨어(1106)를 포함할 수 있다. 프로세서(들)(1102)는 본 명세서에서 설명되는 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(1104)는 본 명세서에서 설명되는 방법 및 기법들을 구현하기 위한 데이터 및 코드를 저장하기 위해서 사용될 수 있다. 비디오 처리 하드웨어(1106)는 하드웨어 회로부 내에서, 본 명세서에서 설명되는 일부 기법을 구현하기 위하여 사용될 수 있다.FIG. 11 is a block diagram of a video processing device (1100). The device (1100) may be used to implement one or more of the methods described herein. The device (1100) may be implemented in a smart phone, a tablet, a computer, an Internet of Things (IoT) receiver, etc. The device (1100) may include one or more processors (1102), one or more memories (1104), and video processing hardware (1106). The processor(s) (1102) may be configured to implement one or more of the methods described herein. The memory (memories) (1104) may be used to store data and code for implementing the methods and techniques described herein. The video processing hardware (1106) may be used within hardware circuitry to implement some of the techniques described herein.
도 12는 비디오 처리의 하나의 예시적인 방법(1200)에 대한 흐름도이다. 이러한 방법(1200)은, 어파인 코딩되는 현재 비디오 블록의 대표 움직임 벡터와 현재 비디오 블록의 서브-블록의 움직임 벡터 사이의 크기 제한 사항을 결정하는 단계(1202) 및 상기 크기 제한 사항을 사용하여, 현재 비디오 블록 또는 서브블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계(1204)를 포함한다.FIG. 12 is a flowchart of one exemplary method (1200) of video processing. The method (1200) includes the steps of determining (1202) size constraints between a representative motion vector of a current video block to be affine coded and a motion vector of a sub-block of the current video block and performing a conversion between a bitstream representation of the current video block or sub-block and its pixel values using the size constraints (1204).
본 명세서에서는, 용어 "비디오 처리"가 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축해제를 가리킬 수 있다. 예를 들어, 비디오의 픽셀 표현으로부터 대응하는 비트스트림 표현으로의 변환 또는 그 반대 변환 도중에, 비디오 압축 알고리즘이 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어 신택스에 의해 규정되는 바와 같이 비트스트림 내에서 공동으로 위치되거나 다른 자리에 분산되는 비트들에 대응할 수 있다. 예를 들어, 매크로블록은, 변환되고 코딩된 오차 잔차 값에 관하여 그리고 또한 비트스트림 내의 헤더 및 다른 필드 내에 있는 비트들을 사용하여 인코딩될 수 있다.In this specification, the term "video processing" may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from a pixel representation of a video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block may correspond to bits that are co-located or distributed elsewhere in the bitstream, for example, as specified by a syntax. For example, a macroblock may be encoded using bits in terms of a transformed and coded error residual value, and also in a header and other fields in the bitstream.
개시된 기법들이, 메모리 요구량 또는 라인 버퍼 크기 요구량이 줄어들기 때문에 비디오 처리의 구현 복잡도가 감소되는 실시형태를 구현하는 데에 유용하다는 것이 이해될 것이다. 본 명세서에서 개시되는 기법들 중 일부는 후속하는 절들에 기반한 설명을 사용하여 설명될 수 있다.It will be appreciated that the disclosed techniques are useful for implementing embodiments in which the implementation complexity of video processing is reduced because the memory requirements or line buffer size requirements are reduced. Some of the techniques disclosed herein can be explained using the description based on the sections that follow.
1. 비디오 처리 방법으로서,1. As a video processing method,
어파인 코딩되는 현재 비디오 블록의 대표 움직임 벡터와 현재 비디오 블록의 서브-블록의 움직임 벡터 사이의 크기 제한 사항을 결정하는 단계; 및A step of determining a size constraint between a representative motion vector of a current video block being affine coded and a motion vector of a sub-block of the current video block; and
상기 크기 제한 사항을 사용하여, 현재 비디오 블록 또는 서브블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of performing a conversion between a bitstream representation and pixel values of a current video block or sub-block using the above size constraints.
2. 제 1 절에 있어서,2. In Section 1,
상기 변환을 수행하는 단계는,The steps for performing the above conversion are:
상기 픽셀 값으로부터 상기 비트스트림 표현을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from the pixel values.
3. 제 1 절에 있어서,3. In Section 1,
상기 변환을 수행하는 단계는,The steps for performing the above conversion are:
상기 비트스트림 표현으로부터 상기 픽셀 값을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating the pixel values from the bitstream representation.
4. 제 1 절 내지 제 3 절 중 어느 한 절에 있어서,4. In any one of Sections 1 to 3,
상기 크기 제한 사항은,The above size restrictions are,
MVx>=MV'x-DH0 및 MVx<=MV'x+DH1 및 MVy>=MV'y-DV0 및 MVy<=MV'y+DV1 에 따른 서브-블록의 움직임 벡터 (MVx, MVy)의 제약 값을 포함하고,Contains constraint values of motion vectors (MVx, MVy) of sub-blocks according to MVx>=MV'x-DH0 and MVx<=MV'x+DH1 and MVy>=MV'y-DV0 and MVy<=MV'y+DV1,
MV' = (MV'x, MV'y)이며,MV' = (MV'x, MV'y),
MV'는 대표 움직임 벡터를 나타내고,MV' represents the representative motion vector,
DH0, DH1, DV0 및 DV1은 양수를 나타내는, 비디오 처리 방법.DH0, DH1, DV0 and DV1 are video processing methods that represent positive numbers.
5. 제 4 절에 있어서,5. In Section 4,
상기 크기 제한 사항은, 다음:The above size restrictions are:
i. DH0이 DH1과 같거나 DV0이 DV1과 같을 것i. DH0 will be equal to DH1 or DV0 will be equal to DV1
ii. DH0이 DV0 과 같거나 또는 DH1이 DV1과 같을 것ii. DH0 is equal to DV0 or DH1 is equal to DV1.
iii. DH0 및 DH1이 서로 다르거나 DV0 및 DV1이 서로 다를 것iii. DH0 and DH1 are different from each other or DV0 and DV1 are different from each other.
iv. DH0, DH1, DV0 및 DV1이, 비디오 파라미터 세트 레벨 또는 시퀀스 파라미터 세트 레벨 또는 픽쳐 파라미터 세트 레벨 또는 슬라이스 헤더 레벨 또는 타일 그룹 헤더 레벨 또는 타일 레벨 또는 코딩 트리 유닛 레벨 또는 코딩 유닛 레벨 또는 예측 유닛 레벨에서, 상기 비트스트림 표현 내에서 시그널링될 것iv. DH0, DH1, DV0 and DV1 shall be signaled in the bitstream representation at the video parameter set level or the sequence parameter set level or the picture parameter set level or the slice header level or the tile group header level or the tile level or the coding tree unit level or the coding unit level or the prediction unit level.
v. DH0, DH1, DV0 및 DV1이 비디오 처리의 모드의 함수일 것v. DH0, DH1, DV0 and DV1 will be functions of the mode of video processing.
vi. DH0, DH1, DV0 및 DV1이 현재 비디오 블록의 폭 및 높이에 따라 달라질 것vi. DH0, DH1, DV0 and DV1 will vary depending on the width and height of the current video block.
vii. DH0, DH1, DV0 및 DV1이 현재 비디오 블록이 단방향 예측 또는 양방향 예측을 사용하여 코딩되는지 여부에 따라 달라질 것vii. DH0, DH1, DV0 and DV1 will vary depending on whether the current video block is coded using unidirectional prediction or bidirectional prediction.
viii. DH0, DH1, DV0 및 DV1이 상기 서브-블록의 위치에 따라 달라질 것viii. DH0, DH1, DV0 and DV1 will vary depending on the location of the sub-block.
중 적어도 하나를 포함하는, 비디오 처리 방법.A video processing method comprising at least one of:
6. 제 1 절 내지 제 5 절 중 어느 한 절에 있어서,6. In any one of Sections 1 to 5,
상기 대표 움직임 벡터는 상기 현재 비디오 블록의 제어 포인트 움직임 벡터에 대응하는, 비디오 처리 방법.A video processing method, wherein the above representative motion vector corresponds to a control point motion vector of the current video block.
7. 제 1 절 내지 제 5 절 중 어느 한 절에 있어서,7. In any one of Sections 1 to 5,
상기 대표 움직임 벡터는 상기 현재 비디오 블록의 코너 서브-블록에 대한 움직임 벡터에 대응하는, 비디오 처리 방법.A video processing method, wherein the above representative motion vector corresponds to a motion vector for a corner sub-block of the current video block.
8. 제 1 절 내지 제 7 절 중 어느 한 절에 있어서,8. In any one of Sections 1 to 7,
상기 서브-블록의 움직임 벡터 및 상기 대표 움직임 벡터에 대해서 사용되는 정밀도는,The precision used for the motion vector of the above sub-block and the representative motion vector is,
상기 비트스트림 표현 내의 움직임 벡터 시그널링 정밀도에 대응하는, 비디오 처리 방법.A video processing method corresponding to the motion vector signaling precision within the above bitstream representation.
9. 제 1 절 내지 제 7 절 중 어느 한 절에 있어서,9. In any one of Sections 1 to 7,
상기 서브-블록의 움직임 벡터 및 상기 대표 움직임 벡터에 대해서 사용되는 정밀도는,The precision used for the motion vector of the above sub-block and the representative motion vector is,
상기 움직임 벡터를 저장하기 위한 저장 정밀도에 대응하는, 비디오 처리 방법.A video processing method corresponding to a storage precision for storing the above motion vector.
10. 비디오 처리 방법으로서,10. As a video processing method,
어파인 코딩된 현재 비디오 블록에 대하여 현재 비디오 블록의 하나 이상의 서브-블록을 결정하는 단계 - 각각의 서브-블록은 MxN 픽셀의 크기를 가지고, M과 N은 2 또는 4의 배수임 -;A step of determining one or more sub-blocks of a current video block for an affine-coded current video block, each sub-block having a size of MxN pixels, where M and N are multiples of 2 or 4;
상기 서브-블록의 움직임 벡터를 크기 제한 사항에 부합하게 하는(conforming) 단계; 및A step of conforming the motion vector of the above sub-block to the size constraints; and
트리거에 기반하여 조건부로, 상기 크기 제한 사항을 사용하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of conditionally performing a transformation between a bitstream representation of the current video block and pixel values using the size constraints based on a trigger.
11. 제 10 절에 있어서,11. In Section 10,
상기 변환을 수행하는 단계는,The steps for performing the above conversion are:
상기 픽셀 값으로부터 상기 비트스트림 표현을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from the pixel values.
12. 제 10 절에 있어서,12. In Section 10,
상기 변환을 수행하는 단계는,The steps for performing the above conversion are:
상기 비트스트림 표현으로부터 상기 픽셀 값을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating the pixel values from the bitstream representation.
13. 제 10 절 내지 제 12 절 중 어느 한 절에 있어서,13. In any one of Sections 10 to 12,
상기 크기 제한 사항은,The above size restrictions are,
상기 현재 비디오 블록의 서브-블록 움직임 벡터들의 정수 부분들 사이의 최대 차이를 K 픽셀 이하로 한정하고,The maximum difference between the integer parts of the sub-block motion vectors of the current video block is limited to K pixels or less,
K는 정수인, 비디오 처리 방법.A video processing method where K is an integer.
14. 제 10 절 내지 제 13 절 중 어느 한 절에 있어서,14. In any one of Sections 10 to 13,
상기 방법은,The above method,
상기 현재 비디오 블록이 양방향 예측을 사용하여 코딩되는 경우에만 적용되는, 비디오 처리 방법.A video processing method, which applies only when the current video block is coded using bidirectional prediction.
15. 제 10 절 내지 제 13 절 중 어느 한 절에 있어서,15. In any one of Sections 10 to 13,
상기 방법은,The above method,
상기 현재 비디오 블록이 단방향 예측을 사용하여 코딩되는 경우에만 적용되는, 비디오 처리 방법.A video processing method, which applies only when the current video block is coded using unidirectional prediction.
16. 제 10 절 내지 제 13 절 중 어느 한 절에 있어서,16. In any one of Sections 10 to 13,
M, N 또는 K의 값은, 상기 현재 비디오 블록의 단방향 예측 또는 양방향 예측 모드의 함수인, 비디오 처리 방법.A video processing method, wherein the values of M, N or K are a function of the unidirectional prediction or bidirectional prediction mode of the current video block.
17. 제 10 절 내지 제 13 절 중 어느 한 절에 있어서,17. In any one of Sections 10 to 13,
M, N 또는 K의 값은, 상기 현재 비디오 블록의 높이 또는 폭의 함수인, 비디오 처리 방법.A video processing method wherein the values of M, N or K are a function of the height or width of the current video block.
18. 제 10 절 내지 제 17 절 중 어느 한 절에 있어서,18. In any one of Sections 10 to 17,
상기 트리거는, The above trigger is,
비디오 파라미터 세트 레벨 또는 시퀀스 파라미터 세트 레벨 또는 픽쳐 파라미터 세트 레벨 또는 슬라이스 헤더 레벨 또는 타일 그룹 헤더 레벨 또는 타일 레벨 또는 코딩 트리 유닛 레벨 또는 코딩 유닛 레벨 또는 예측 유닛 레벨에서, 상기 비트스트림 표현 내에 포함되는, 비디오 처리 방법.A video processing method, wherein the bitstream representation is included at the video parameter set level or the sequence parameter set level or the picture parameter set level or the slice header level or the tile group header level or the tile level or the coding tree unit level or the coding unit level or the prediction unit level.
19. 제 18 절에 있어서,19. In Section 18,
상기 트리거는 M, N 또는 K의 값을 시그널링하는, 비디오 처리 방법.A video processing method wherein the above trigger signals the values of M, N or K.
20. 제 10 절 내지 제 19 절 중 어느 한 절에 있어서,20. In any one of Sections 10 to 19,
상기 현재 비디오 블록의 하나 이상의 서브-블록은,One or more sub-blocks of the current video block,
상기 현재 비디오 블록에 대해서 사용되는 어파인 코딩의 타입에 기반하여 계산되는, 비디오 처리 방법.A video processing method, wherein the method is calculated based on the type of affine coding used for the current video block.
21. 제 20 절에 있어서,21. In Section 20,
단방향 예측 및 양방향 예측 어파인 예측 모드의 서브-블록들을 계산하기 위하여, 두 가지 상이한 방법들이 사용되는, 비디오 처리 방법.A video processing method, wherein two different methods are used to compute sub-blocks of unidirectional prediction and bidirectional prediction affine prediction modes.
22. 제 21 절에 있어서,22. In Section 21,
상기 현재 비디오 블록이 양방향 예측된 어파인 블록인 경우에,If the current video block above is a bidirectionally predicted affine block,
상이한 레퍼런스 목록들로부터의 서브-블록들의 폭 또는 높이는 서로 다른, 비디오 처리 방법.A video processing method wherein sub-blocks from different reference lists have different widths or heights.
23. 제 20 절 내지 제 22 절 중 어느 한 절에 있어서,23. In any one of the clauses 20 to 22,
상기 하나 이상의 서브-블록은 루마 성분에 대응하는, 비디오 처리 방법.A video processing method, wherein said one or more sub-blocks correspond to a luma component.
24. 제 10 절 내지 제 23 절 중 어느 한 절에 있어서,24. In any one of the clauses 10 to 23,
상기 하나 이상의 서브-블록 중 하나의 서브-블록의 폭 및 높이는,The width and height of one of the above one or more sub-blocks,
상기 현재 비디오 블록의 움직임 벡터 값 및 상기 하나 이상의 서브-블록 중 하나의 서브-블록의 움직임 벡터 값 사이의 움직임 차이 벡터를 사용하여 결정되는, 비디오 처리 방법.A video processing method, wherein a motion difference vector is determined by using a motion vector value of the current video block and a motion vector value of one of the one or more sub-blocks.
25. 제 20 절 내지 제 23 절 중 어느 한 절에 있어서,25. In any one of the clauses 20 to 23,
상기 계산은,The above calculation is,
상기 비트스트림 표현 내에서 시그널링되는 픽셀 정밀도에 기반하는, 비디오 처리 방법.A video processing method based on pixel precision signaled within the bitstream representation.
26. 비디오 처리 방법으로서,26. As a video processing method,
현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계; 및a step of determining that the current video block satisfies the size condition; and
결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을, 상기 현재 비디오 블록에 대한 양방향 예측 인코딩 모드를 제외함으로써 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising: performing a conversion between a bitstream representation of the current video block and pixel values based on a decision result, by excluding a bidirectional prediction encoding mode for the current video block.
27. 비디오 처리 방법으로서,27. As a video processing method,
현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계; 및a step of determining that the current video block satisfies the size condition; and
결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고,Based on the decision result, a step of performing a conversion between a bitstream representation of the current video block and a pixel value is included,
인터 예측 모드가 상기 크기 조건에 따라서 상기 비트스트림 표현 내에서 시그널링되는, 비디오 처리 방법.A video processing method, wherein an inter prediction mode is signaled within the bitstream representation according to the size conditions.
28. 비디오 처리 방법으로서,28. As a video processing method,
현재 비디오 블록이 크기 조건을 만족시킨다고 결정하는 단계; 및a step of determining that the current video block satisfies the size condition; and
결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고,Based on the decision result, a step of performing a conversion between a bitstream representation of the current video block and a pixel value is included,
상기 변환 도중에 병합 후보 목록을 생성하는 것은 상기 크기 조건에 의존하는, 비디오 처리 방법.A video processing method wherein generating a list of merge candidates during said transformation depends on said size condition.
29. 비디오 처리 방법으로서,29. As a video processing method,
현재 비디오 블록의 자식 코딩 유닛이 크기 조건을 만족시킨다고 결정하는 단계; 및A step of determining that a child coding unit of the current video block satisfies a size condition; and
결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 수행하는 단계를 포함하고,Based on the decision result, a step of performing a conversion between a bitstream representation of the current video block and a pixel value is included,
상기 자식 코딩 유닛을 생성하기 위하여 사용되는 코딩 트리 분할 프로세스는 상기 크기 조건에 의존하는, 비디오 처리 방법.A video processing method wherein a coding tree splitting process used to generate the child coding units depends on the size condition.
30. 제 26 절 내지 제 29 절 중 어느 한 절에 있어서,30. In any one of the clauses 26 to 29,
상기 크기 조건은 다음:The above size conditions are as follows:
(a) w가 T1과 같고 h가 T2 와 같을 것, 또는 h가 T1과 같고 w가 T2 와 같을 것;(a) w is equal to T1 and h is equal to T2, or h is equal to T1 and w is equal to T2;
(b) w가 T1과 같고 h가 T2 이하일 것, 또는 h가 T1 와 같고 w가 T2 이하일 것;(b) w is equal to T1 and h is less than or equal to T2, or h is equal to T1 and w is less than or equal to T2;
(c) w가 T1 이하이고 h가 T2 이하일 것, 또는 h가 T1 이하이고 w가 T2 이하일 것(c) w is less than or equal to T1 and h is less than or equal to T2, or h is less than or equal to T1 and w is less than or equal to T2.
중 하나이고,is one of them,
w는 폭이고 h는 높이인, 비디오 처리 방법.A video processing method where w is the width and h is the height.
31. 제 30 절에 있어서,31. In Section 30,
T1 = 8 이고 T2 = 8 이거나, T1 = 8 이고 T2 = 4 이거나, T1=4 이고 T2=4 이거나, T1 = 4 이고 T2 = 16 인, 비디오 처리 방법.A video processing method wherein T1 = 8 and T2 = 8, or T1 = 8 and T2 = 4, or T1 = 4 and T2 = 4, or T1 = 4 and T2 = 16.
32. 제 26 절 내지 제 29 절 중 어느 한 절에 있어서,32. In any one of the clauses 26 to 29,
상기 변환은,The above transformation is,
상기 비트스트림 표현을 상기 현재 비디오 블록의 픽셀 값으로부터 생성하는 것 또는 상기 현재 비디오 블록의 픽셀 값을 상기 비트스트림 표현으로부터 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from pixel values of the current video block or generating pixel values of the current video block from the bitstream representation.
33. 비디오 처리 방법으로서,33. As a video processing method,
현재 비디오 블록에 대한 일반화된 양방향 예측(GBi) 프로세스에 대한 가중치 인덱스를 상기 현재 비디오 블록의 위치에 기반하여 결정하는 단계; 및A step of determining a weight index for a generalized bidirectional prediction (GBi) process for a current video block based on a position of the current video block; and
상기 GBi 프로세스를 구현하도록, 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 상기 가중치 인덱스를 사용하여 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of performing a transformation between the current video block and a bitstream representation of the current video block using the weight index to implement the GBi process.
34. 제 33 절에 있어서,34. In Section 33,
상기 변환은,The above transformation is,
상기 비트스트림 표현을 상기 현재 비디오 블록의 픽셀 값으로부터 생성하는 것 또는 상기 현재 비디오 블록의 픽셀 값을 상기 비트스트림 표현으로부터 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from pixel values of the current video block or generating pixel values of the current video block from the bitstream representation.
35. 제 33 절 또는 제 34 절에 있어서,35. In section 33 or 34,
상기 결정하는 단계는,The above decision-making steps are:
제 1 위치에 있는 상기 현재 비디오 블록에 대하여, 이웃하는 블록의 다른 가중치 인덱스를 승계 또는 예측하는 것, 및For the current video block at the first position, inheriting or predicting other weight indices of neighboring blocks, and
제 2 위치에 있는 상기 현재 비디오 블록에 대하여, 상기 이웃하는 블록으로부터 승계하지 않고 GBI를 계산하는 것을 포함하는, 비디오 처리 방법.A video processing method, comprising calculating a GBI for the current video block at the second position without inheriting from the neighboring block.
36. 제 35 절에 있어서,36. In Section 35,
상기 제 2 위치는,The second position above is,
상기 이웃하는 블록과 다른 코딩 트리 유닛 내에 위치된 상기 현재 비디오 블록을 포함하는, 비디오 처리 방법.A video processing method, comprising the current video block located within a coding tree unit different from the neighboring block.
37. 제 35 절에 있어서,37. In Section 35,
상기 제 2 위치는,The second position above is,
상기 이웃하는 블록과 다른 코딩 트리 유닛 라인 또는 다른 코딩 트리 유닛 행 내에 있는 상기 현재 비디오 블록에 대응하는, 비디오 처리 방법.A video processing method, wherein the current video block corresponds to a neighboring block and is within a different coding tree unit line or a different coding tree unit row.
38. 비디오 처리 방법으로서,38. As a video processing method,
현재 비디오 블록이 인트라-인터 예측(IIP) 코딩된 블록으로서 코딩된다고 결정하는 단계; 및A step of determining that the current video block is coded as an intra-inter prediction (IIP) coded block; and
상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을, 상기 현재 비디오 블록의 인트라-예측 모드 또는 최고 가능성 모드(most probable mode; MPM)를 결정하기 위한 단순화 규칙(simplification rule)을 사용하여 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of performing a conversion between the current video block and a bitstream representation of the current video block using a simplification rule for determining an intra-prediction mode or a most probable mode (MPM) of the current video block.
39. 제 38 절에 있어서,39. In Section 38,
상기 변환은,The above transformation is,
상기 비트스트림 표현을 상기 현재 비디오 블록의 픽셀 값으로부터 생성하는 것 또는 상기 현재 비디오 블록의 픽셀 값을 상기 비트스트림 표현으로부터 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from pixel values of the current video block or generating pixel values of the current video block from the bitstream representation.
40. 제 38 절 또는 제 39 절에 있어서,40. In section 38 or 39,
상기 단순화 규칙은,The above simplification rule is,
이웃하는 비디오 블록의 다른 인트라-예측 코딩 모드로부터 독립적이 되도록 인트라-인터 예측(IIP) 코딩되는 현재 비디오 블록의 인트라-예측 코딩 모드를 결정하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising: determining an intra-prediction coding mode of a current video block to be intra-inter-prediction (IIP) coded such that the intra-prediction coding mode of a current video block is independent of other intra-prediction coding modes of neighboring video blocks.
41. 제 38 절 또는 제 39 절에 있어서,41. In section 38 or 39,
상기 인트라-예측 코딩 모드는,The above intra-prediction coding mode is,
이웃하는 블록들의 코딩으로부터 독립적인 코딩을 사용하여, 상기 비트스트림 표현 내에 표현되는, 비디오 처리 방법.A video processing method, wherein the bitstream representation is expressed using coding independent of the coding of neighboring blocks.
42. 제 38 절 내지 제 40 절 중 어느 한 절에 있어서,42. In any one of the clauses 38 to 40,
상기 단순화 규칙은,The above simplification rule is,
인트라-코딩된 블록의 코딩 모드를 인트라-예측 코딩된 블록의 코딩 모드보다 선호하도록, 선택에 우선순위를 부여하도록 규정하는, 비디오 처리 방법.A video processing method, wherein a priority is given to a selection so as to prefer a coding mode of an intra-coded block over a coding mode of an intra-predictive coded block.
43. 제 38 절에 있어서,43. In Section 38,
상기 단순화 규칙은,The above simplification rule is,
IIP 코딩된 이웃하는 블록으로부터의 인트라 예측 모드를 삽입하기 이전에, 인트라-코딩된 이웃하는 블록들로부터의 인트라 예측 모드를 삽입함으로써, 상기 MPM을 결정하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising: determining the MPM by inserting intra prediction modes from intra-coded neighboring blocks prior to inserting intra prediction modes from IIP-coded neighboring blocks.
44. 제 38 절에 있어서,44. In verse 38,
상기 단순화 규칙은,The above simplification rule is,
다른 보통의 인트라-코딩된 블록에 대해서 사용되는 것과 같은 구성 프로세스를, 상기 MPM을 결정하기 위하여 사용하도록 규정하는, 비디오 처리 방법.A video processing method, which prescribes that the same composition process as used for other normal intra-coded blocks be used for determining said MPM.
45. 비디오 처리 방법으로서,45. A video processing method,
현재 비디오 블록이 단순화 기준을 만족시킨다고 결정하는 단계; 및a step of determining that the current video block satisfies the simplification criterion; and
상기 현재 비디오 블록과 비트스트림 표현 사이의 변환을, 상기 변환을 위한 인터-인트라 예측 모드의 사용을 디스에이블함으로써 또는 상기 변환을 위해 사용되는 추가적인 코딩 툴을 디스에이블함으로써 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method comprising the step of performing a conversion between said current video block and its bitstream representation by disabling the use of an inter-intra prediction mode for said conversion or by disabling an additional coding tool used for said conversion.
46. 제 45 절에 있어서,46. In Section 45,
상기 변환은,The above transformation is,
상기 비트스트림 표현을 상기 현재 비디오 블록의 픽셀 값으로부터 생성하는 것 또는 상기 현재 비디오 블록의 픽셀 값을 상기 비트스트림 표현으로부터 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising generating a bitstream representation from pixel values of the current video block or generating pixel values of the current video block from the bitstream representation.
47. 제 45 절 또는 제 46 절에 있어서,47. In section 45 or 46,
상기 단순화 기준은,The above simplification criteria are:
상기 현재 비디오 블록의 폭 또는 높이가 T1과 같을 것을 포함하고,Including that the width or height of the current video block above is equal to T1,
T1은 정수인, 비디오 처리 방법.T1 is an integer, video processing method.
48. 제 45 절 또는 제 46 절에 있어서,48. In section 45 or 46,
상기 단순화 기준은,The above simplification criteria are:
상기 현재 비디오 블록의 폭 또는 높이가 T1보다 클 것을 포함하고,Including that the width or height of the current video block is greater than T1,
T1은 정수인, 비디오 처리 방법.T1 is an integer, video processing method.
49. 제 45 절 또는 제 46 절에 있어서,49. In section 45 or 46,
상기 단순화 기준은,The above simplification criteria are:
상기 현재 비디오 블록의 폭이 T1과 같을 것, 및 상기 현재 비디오 블록의 높이가 T2 와 같을 것을 포함하는, 비디오 처리 방법.A video processing method, wherein the width of the current video block is equal to T1, and the height of the current video block is equal to T2.
48. 제 45 절 또는 제 46 절에 있어서,48. In section 45 or 46,
상기 단순화 기준은,The above simplification criteria are:
상기 현재 비디오 블록이 양방향 예측 모드를 사용한다고 규정하는, 비디오 처리 방법.A video processing method, wherein the current video block uses a bidirectional prediction mode.
49. 제 45 절 또는 제 46 절에 있어서,49. In section 45 or 46,
상기 추가적인 코딩 툴은 양방향성 광학적 흐름(bi-directional optical flow; BIO) 코딩을 포함하는, 비디오 처리 방법.A video processing method wherein the additional coding tool comprises bi-directional optical flow (BIO) coding.
50. 제 45 절 또는 제 46 절에 있어서,50. In section 45 or 46,
상기 추가적인 코딩 툴은, 중첩된 블록 움직임 보상 모드를 포함하는, 비디오 처리 방법.The above additional coding tool is a video processing method including a nested block motion compensation mode.
51. 비디오 처리 방법으로서,51. A video processing method,
현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 움직임 벡터 기반 인코딩 프로세스를 사용하여 수행하는 단계를 포함하고,Comprising a step of performing a conversion between a current video block and a bitstream representation of said current video block using a motion vector based encoding process,
(a) 변환 프로세스 도중에 정밀도 P1이 공간적 움직임 예측 결과를 저장하기 위하여 사용되고, 정밀도 P2가 시간적 움직임 예측 결과를 저장하기 위하여 사용되며, P1 및 P2는 분수이고, 또는(a) During the conversion process, precision P1 is used to store the spatial motion prediction result, precision P2 is used to store the temporal motion prediction result, and P1 and P2 are fractions, or
(b) 정밀도 Px가 x-움직임 벡터를 저장하기 위하여 사용되고, 정밀도 Py가 y-움직임 벡터를 저장하기 위하여 사용되며, Px 및 Py는 분수인, 비디오 처리 방법.(b) A video processing method, wherein a precision Px is used to store an x-motion vector, a precision Py is used to store a y-motion vector, and Px and Py are fractions.
52. 제 51 절에 있어서,52. In Section 51,
P1, P2, Px 및 Py는 상이한 숫자인, 비디오 처리 방법.Video processing method where P1, P2, Px and Py are different numbers.
53. 제 52 절에 있어서,53. In Section 52,
P1은 1/16 루마 픽셀이고, P2는 1/4 루마 픽셀이거나,P1 is 1/16 luma pixel, P2 is 1/4 luma pixel, or
P1은 1/16 루마 픽셀이고, P2는 1/8 루마 픽셀이거나,P1 is 1/16 luma pixel, P2 is 1/8 luma pixel, or
P1은 1/8 루마 픽셀이고, P2는 1/4 루마 픽셀이거나,P1 is 1/8 luma pixel, P2 is 1/4 luma pixel, or
P1은 1/8 루마 픽셀이고, P2는 1/8 루마 픽셀이거나,P1 is 1/8 luma pixel, P2 is 1/8 luma pixel, or
P2는 1/16 루마 픽셀이고, P1은 1/4 루마 픽셀이거나,P2 is 1/16 luma pixel, P1 is 1/4 luma pixel, or
P2는 1/16 루마 픽셀이고, P1은 1/8 루마 픽셀이거나,P2 is 1/16 luma pixel, P1 is 1/8 luma pixel, or
P2는 1/8 루마 픽셀이고, P1은 1/4 루마 픽셀인, 비디오 처리 방법.A video processing method where P2 is 1/8 luma pixel and P1 is 1/4 luma pixel.
54. 제 51 절 또는 제 52 절에 있어서,54. In section 51 or 52,
P1 및 P2는,P1 and P2 are,
상기 비트스트림 표현 내에 포함된 상이한 시간 층들에 내의 상이한 픽쳐들에 대해서 다른, 비디오 처리 방법.A video processing method for different pictures in different temporal layers contained within the bitstream representation.
55. 제 51 절 또는 제 52 절에 있어서,55. In section 51 or 52,
계산된 움직임 벡터는,The computed motion vector is,
시간적 움직임 예측으로서 저장되기 이전에 정밀도 정정 프로세스를 통해서 처리되는, 비디오 처리 방법.A video processing method wherein the video is processed through a precision correction process before being stored as a temporal motion prediction.
56. 제 51 절 또는 제 52 절에 있어서,56. In section 51 or 52,
상기 저장하는 것은,The above storage is,
x-움직임 벡터 및 y-움직임 벡터를 N 비트 정수로서 저장하는 것을 포함하고,Includes storing the x-motion vector and the y-motion vector as N-bit integers,
x-움직임 벡터들의 값들의 범위는 [MinX, MaxX]이고, y-움직임 벡터들의 값들의 범위는 [MinY, MaxY]이며,The range of values of the x-motion vectors is [MinX, MaxX], and the range of values of the y-motion vectors is [MinY, MaxY].
상기 범위들은 다음:The above ranges are as follows:
a. MinX가 MinY와 같음,a. MinX is the same as MinY,
b. MaxX가 MaxY와 같음,b. MaxX is equal to MaxY,
c. {MinX, MaxX}가 Px에 의존함;c. {MinX, MaxX} depends on Px;
d. {MinY, MaxY}가 Py에 의존함;d. {MinY, MaxY} depends on Py;
e. {MinX, MaxX, MinY, MaxY}가 N에 의존함;e. {MinX, MaxX, MinY, MaxY} depends on N;
f. {MinX, MaxX, MinY, MaxY}가, 공간적 움직임 예측을 위해 저장된 MV 및 시간적 움직임 예측을 위해 저장된 다른 MV에 대해서 상이함;f. {MinX, MaxX, MinY, MaxY} are different for MVs stored for spatial motion prediction and for other MVs stored for temporal motion prediction;
g. {MinX, MaxX, MinY, MaxY}가 상이한 시간 층들 내의 픽쳐들에 대해서 상이함;g. {MinX, MaxX, MinY, MaxY} are different for pictures in different temporal layers;
h. {MinX, MaxX, MinY, MaxY}가 상이한 폭 또는 높이를 가지는 픽쳐들에 대해서 상이함;h. {MinX, MaxX, MinY, MaxY} are different for pictures with different widths or heights;
i. {MinX, MaxX}가 상이한 폭을 가지는 픽쳐들에 대해서 상이함;i. {MinX, MaxX} are different for pictures with different widths;
j. {MinY, MaxY}가 상이한 높이를 가지는 픽쳐들에 대해서 상이함;j. {MinY, MaxY} are different for pictures with different heights;
k. MVx가, 공간적 움직임 예측을 위해서 저장되기 이전에 [MinX, MaxX]로 클리핑됨;k. MVx is clipped to [MinX, MaxX] before being stored for spatial motion prediction;
l. MVx가, 시간적 움직임 예측을 위해서 저장되기 이전에 [MinX, MaxX]로 클리핑됨;l. MVx is clipped to [MinX, MaxX] before being stored for temporal motion prediction;
m. MVy가, 공간적 움직임 예측을 위해서 저장되기 이전에 [MinY, MaxY]로 클리핑됨;m. MVy is clipped to [MinY, MaxY] before being stored for spatial motion prediction;
n. MVy가, 시간적 움직임 예측을 위해서 저장되기 이전에 [MinY, MaxY]로 클리핑됨n. MVy is clipped to [MinY, MaxY] before being stored for temporal motion prediction.
중 하나 이상을 만족시키는, 비디오 처리 방법.A video processing method, which satisfies one or more of the following:
59. 비디오 처리 방법으로서,59. A video processing method,
현재 비디오 블록의 W2xH2 크기의 큰 서브-블록 내의 W1xH1 크기의 작은 서브-블록을, (W2 + N - 1 - PW) * (H2 + N - 1 - PH) 블록을 페치함으로써 보간하는 단계;A step of interpolating a small sub-block of size W1xH1 within a large sub-block of size W2xH2 of the current video block by fetching (W2 + N - 1 - PW) * (H2 + N - 1 - PH) blocks;
페치된 블록을 픽셀 패딩하는 단계;Step of pixel padding the fetched block;
픽셀 패딩된 블록에 경계 픽셀 반복(boundary pixel repeating)을 수행하고 상기 작은 서브-블록의 픽셀 값을 획득하는 단계 - W1, W2, H1, H2, 및 PW 및 PH는 정수임 -; 및A step of performing boundary pixel repeating on a pixel-padded block and obtaining pixel values of said small sub-block - W1, W2, H1, H2, and PW and PH are integers -; and
상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 상기 작은 서브-블록의 보간된 픽셀 값을 사용하여 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of performing a conversion between said current video block and a bitstream representation of said current video block using interpolated pixel values of said smaller sub-blocks.
60. 제 59 절에 있어서,60. In Section 59,
상기 변환은,The above transformation is,
상기 비트스트림 표현으로부터 상기 현재 비디오 블록을 생성하는 것, 또는 상기 현재 서브-블록으로부터 상기 비트스트림 표현을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method, comprising generating the current video block from the bitstream representation, or generating the bitstream representation from the current sub-block.
61. 제 59 절 또는 제 60 절에 있어서,61. In section 59 or 60,
W2=H2=8 이고, W1=H1=4 이며, PW=PH=0 인, 비디오 처리 방법.A video processing method where W2=H2=8, W1=H1=4, and PW=PH=0.
62. 비디오 처리 방법으로서,62. A video processing method,
WxH 차원의 현재 비디오 블록 및 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 도중에, 움직임 보상 동작 중에 (W + N - 1 - PW) * (W + N - 1 - PH) 레퍼런스 픽셀을 페치하고 레퍼런스 픽셀을 페치된 레퍼런스 픽셀 밖에 패딩함으로써 상기 움직임 보상 동작을 수행하는 단계; 및During a conversion between a current video block of dimension WxH and a bitstream representation of the current video block, performing the motion compensation operation by fetching (W + N - 1 - PW) * (W + N - 1 - PH) reference pixels and padding the reference pixels outside the fetched reference pixels; and
상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 상기 움직임 보상 동작의 결과를 사용하여 수행하는 단계를 포함하고,Comprising a step of performing a conversion between said current video block and a bitstream representation of said current video block using the result of said motion compensation operation,
W, H, N, PW 및 PH는 정수인, 비디오 처리 방법.W, H, N, PW and PH are integers, video processing method.
63. 제 62 절에 있어서,63. In Section 62,
상기 변환은,The above transformation is,
상기 비트스트림 표현으로부터 상기 현재 비디오 블록을 생성하는 것, 또는 상기 현재 서브-블록으로부터 상기 비트스트림 표현을 생성하는 것을 포함하는, 비디오 처리 방법.A video processing method, comprising generating the current video block from the bitstream representation, or generating the bitstream representation from the current sub-block.
64. 제 62 절 또는 제 63 절에 있어서,64. In section 62 or 63,
상기 패딩하는 것은,The above padding is,
페치된 픽셀의 좌측 또는 우측 경계를 반복시키는 것을 포함하는, 비디오 처리 방법.A video processing method comprising repeating a left or right boundary of a fetched pixel.
65. 제 62 절 또는 제 63 절에 있어서,65. In section 62 or 63,
상기 패딩하는 것은,The above padding is,
페치된 픽셀의 상단 또는 하단 경계를 반복시키는 것을 포함하는, 비디오 처리 방법.A video processing method comprising repeating an upper or lower boundary of a fetched pixel.
66. 제 62 절 또는 제 63 절에 있어서,66. In section 62 or 63,
상기 패딩하는 것은,The above padding is,
픽셀 값을 상수로 설정하는 것을 포함하는, 비디오 처리 방법.A video processing method comprising setting pixel values to constants.
67. 제 38 절에 있어서,67. In Section 38,
상기 규칙은,The above rules are,
다른 인트라-코딩된 블록들에 대해서 사용된 것과 같은 산술 코딩 콘텍스트가 상기 변환 도중에 사용된다고 규정하는, 비디오 처리 방법.A video processing method, wherein the same arithmetic coding context as used for other intra-coded blocks is used during said transformation.
68. 제 38 절에 있어서,68. In Section 38,
상기 현재 비디오 블록의 변환은,The transformation of the current video block above is:
상기 현재 비디오 블록에 대한 MPM을 사용하는 것을 제외하는, 비디오 처리 방법.A video processing method, excluding using MPM for the current video block.
69. 제 38 절에 있어서,69. In Section 38,
상기 단순화 규칙은,The above simplification rule is,
IIP 코딩된 블록인 상기 현재 비디오 블록의 비트스트림 표현에 대해서 DC 및 평면 모드만을 사용하도록 규정하는, 비디오 처리 방법.A video processing method, which specifies that only DC and planar modes be used for the bitstream representation of the current video block, which is an IIP coded block.
70. 제 38 절에 있어서,70. In Section 38,
상기 단순화 규칙은,The above simplification rule is,
루마 및 크로마 성분들에 대해서 상이한 인트라-예측 모드들을 규정하는, 비디오 처리 방법.A video processing method, which specifies different intra-prediction modes for luma and chroma components.
71. 제 44 절에 있어서,71. In verse 44,
상기 MPM들의 서브세트가,A subset of the above MPMs,
IIP 코딩되는 상기 현재 비디오 블록에 대해서 사용되는, 비디오 처리 방법.A video processing method used for the current video block being IIP coded.
72. 제 38 절에 있어서,72. In Section 38,
상기 단순화 규칙은,The above simplification rule is,
상기 MPM이, MPM 목록 내에 포함된 인트라 예측 모드에 기반하여 선택된다는 것을 표시하는, 비디오 처리 방법.A video processing method, wherein the above MPM is selected based on an intra prediction mode included in the MPM list.
73. 제 38 절에 있어서,73. In Section 38,
상기 단순화 규칙은,The above simplification rule is,
MPM들의 서브세트가 MPM 목록으로부터 선택될 것이고, 상기 서브세트와 연관된 모드 인덱스를 시그널링할 것이라는 것을 표시하는, 비디오 처리 방법.A video processing method, wherein a subset of MPMs is to be selected from a list of MPMs and a mode index associated with said subset is signaled.
74. 제 38 절에 있어서,74. In verse 38,
인트라 MPM 모드들을 코딩하기 위하여 사용되는 콘텍스트가,The context used to code intra MPM modes is
IIP 코딩되는 상기 현재 비디오 블록에 대한 인트라 모드를 코딩하기 위하여 사용되는, 비디오 처리 방법.A video processing method, which is used to code intra mode for the current video block being IIP coded.
75. 제 44 절에 있어서,75. In verse 44,
상기 현재 비디오 블록에 대해서 생성되는 인트라-예측 블록 및 인터-예측 블록에 대해서 동일한 가중치가 사용되고,The same weights are used for the intra-prediction blocks and inter-prediction blocks generated for the current video block.
상기 현재 비디오 블록은 IIP 코딩된 블록인, 비디오 처리 방법.A video processing method, wherein the above current video block is an IIP coded block.
76. 제 44 절에 있어서,76. In verse 44,
상기 현재 비디오 블록에 대한 IIP 코딩 프로세스에서, 위치들에 대해서 제로 가중치들이 사용되는, 비디오 처리 방법.A video processing method, wherein in an IIP coding process for the current video block, zero weights are used for positions.
77. 제 77 절에 있어서,77. In Section 77,
상기 제로 가중치들은 상기 IIP 코딩 프로세스에서 사용되는 인트라 예측 블록에 적용되는, 비디오 처리 방법.A video processing method, wherein the above zero weights are applied to intra prediction blocks used in the IIP coding process.
78. 제 77 절에 있어서,78. In verse 77,
상기 제로 가중치들은 상기 IIP 코딩 프로세스에서 사용되는 인터 예측 블록에 적용되는, 비디오 처리 방법.A video processing method, wherein the above zero weights are applied to inter prediction blocks used in the IIP coding process.
79. 비디오 처리 방법으로서,79. A video processing method,
비디오 블록의 크기에 기반하여, 상기 현재 비디오 블록의 양방향 예측 또는 단방향 예측이 허용되지 않는다고 결정하는 단계; 및A step of determining that bidirectional prediction or unidirectional prediction of the current video block is not allowed based on the size of the video block; and
결정 결과에 기반하여, 상기 현재 비디오 블록의 비트스트림 표현과 픽셀 값 사이의 변환을 양방향 예측 또는 단방향 예측 모드를 디스에이블함으로써 수행하는 단계를 포함하는, 비디오 처리 방법. 예를 들어, 허용되지 않는 모드들은 현재 비디오 블록을 인코딩 또는 디코딩하기 위해서 사용되지 않는다. 변환 동작은 비디오 코딩 또는 압축, 또는 비디오 디코딩 또는 압축해제를 나타낼 수 있다.A video processing method, comprising: performing a transformation between a bitstream representation of the current video block and pixel values based on a decision result by disabling a bidirectional prediction mode or a unidirectional prediction mode. For example, disallowed modes are not used to encode or decode the current video block. The transformation operation may represent video coding or compression, or video decoding or decompression.
80. 제 79 절에 있어서,80. In verse 79,
상기 현재 비디오 블록은 4x8 이고,The current video block above is 4x8,
상기 결정하는 단계는,The above decision-making steps are:
양방향 예측이 허용되지 않는다고 결정하는 것을 포함하는, 비디오 처리 방법. 다른 예들은 예 5 에서 제공된다.A method of video processing, comprising determining that bidirectional prediction is not allowed. Other examples are provided in Example 5.
81. 제 79 절에 있어서,81. In verse 79,
상기 현재 비디오 블록은 4x8 또는 8x4 이고,The current video block above is 4x8 or 8x4,
상기 결정하는 단계는,The above decision-making steps are:
양방향 예측이 허용되지 않는다고 결정하는 것을 포함하는, 비디오 처리 방법.A method of video processing, comprising determining that bidirectional prediction is not allowed.
82. 제 79 절에 있어서,82. In verse 79,
상기 현재 비디오 블록은 4xN이고, N은 16 이하의 정수이며,The current video block above is 4xN, where N is an integer less than or equal to 16,
상기 결정하는 단계는, 양방향 예측이 허용되지 않는다고 결정하는 것을 포함하는, 비디오 처리 방법.A video processing method, wherein the step of determining comprises determining that bidirectional prediction is not allowed.
83. 제 26 절 내지 제 29 절 및 제 79 절 내지 제 82 절 중 어느 한 절에 있어서,83. In any one of Sections 26 to 29 and Sections 79 to 82,
상기 현재 블록의 크기는,The size of the current block above is,
상기 현재 블록의 색성분 또는 루마 성분의 크기에 대응하는, 비디오 처리 방법.A video processing method corresponding to the size of a color component or a luma component of the current block.
84. 제 83 절에 있어서,84. In Section 83,
양방향 예측 또는 단방향 예측을 디스에이블하는 것은,Disabling bidirectional or unidirectional prediction,
상기 현재 비디오 블록의 세 개의 성분들 모두에 적용되는, 비디오 처리 방법.A video processing method applied to all three components of the current video block.
85. 제 83 절에 있어서,85. In Section 83,
양방향 예측 또는 단방향 예측을 디스에이블하는 것은,Disabling bidirectional or unidirectional prediction,
그 크기가 상기 현재 블록의 크기로서 사용되는 색성분에만 적용되는, 비디오 처리 방법.A video processing method, wherein the size is applied only to the color component used as the size of the current block.
86. 제 79 절 내지 제 85 절 중 어느 한 절에 있어서,86. In any one of the clauses 79 to 85,
상기 변환은,The above transformation is,
양방향 예측을 디스에이블하고, 더 나아가 양방향 예측되는 병합 후보를 사용하며, 그 후에 오직 하나의 레퍼런스 목록으로부터의 오직 하나의 움직임 벡터를 상기 현재 비디오 블록에 할당함으로써 수행되는, 비디오 처리 방법.A video processing method, wherein the method comprises disabling bidirectional prediction, further using a merge candidate that is bidirectionally predicted, and then assigning to the current video block only one motion vector from only one reference list.
87. 제 79 절에 있어서,87. In verse 79,
상기 현재 비디오 블록은 4x4 이고,The current video block above is 4x4,
상기 결정하는 단계는,The above decision-making steps are:
양방향 예측 및 단방향 예측 양자 모두가 허용되지 않는다고 결정하는 것을 포함하는, 비디오 처리 방법.A method of video processing, comprising determining that both bidirectional prediction and unidirectional prediction are not allowed.
88. 제 87 절에 있어서,88. In Section 87,
상기 현재 비디오 블록은 인트라-블록으로서 코딩되는, 비디오 처리 방법.A video processing method, wherein the current video block is coded as an intra-block.
89. 제 87 절에 있어서,89. In Section 87,
상기 현재 비디오 블록은,The current video block above is,
정수 픽셀 움직임 벡터들을 사용하는 것으로 제한되는, 비디오 처리 방법.A video processing method limited to using integer pixel motion vectors.
제 78 절 내지 제 89 절에 대한 추가적인 예들과 실시형태들은 예 5 에서 설명된다.Additional examples and embodiments for Sections 78 to 89 are described in Example 5.
90. 비디오를 처리하는 방법으로서,90. A method for processing video,
현재 비디오 블록의 크기에 기반하여, 상기 현재 비디오 블록에 대한 비디오 코딩 조건을 결정하는 단계; 및A step of determining a video coding condition for the current video block based on the size of the current video block; and
상기 비디오 코딩 조건에 기반하여, 상기 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는, 비디오 처리 방법.A video processing method, comprising the step of performing a conversion between the current video block and a bitstream representation of the current video block based on the video coding conditions.
91. 제 90 절에 있어서,91. In Section 90,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 비트스트림 표현 내에서 스킵 플래그 또는 인트라 블록 코딩 플래그를 선택적으로 시그널링하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising selectively signaling a skip flag or an intra block coding flag within the bitstream representation.
92. 제 90 절 또는 제 91 절에 있어서,92. In section 90 or 91,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록에 대한 예측 모드를 선택적으로 시그널링하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising: optionally signaling a prediction mode for said current video block.
93. 제 90 절 내지 제 92 절 중 어느 한 절에 있어서,93. In any one of Sections 90 to 92,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록의 삼각형 모드 코딩을 선택적으로 시그널링하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising optionally signaling triangle mode coding of said current video block.
94. 제 90 절 내지 제 93 절 중 어느 한 절에 있어서,94. In any one of Articles 90 to 93,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록에 대한 인터 예측 방향을 선택적으로 시그널링하는 것을 규정하는, 비디오 처리 방법.A video processing method, comprising: optionally signaling an inter prediction direction for said current video block.
95. 제 90 절 내지 제 94 절 중 어느 한 절에 있어서,95. In any one of Sections 90 to 94,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록의 인트라 블록 복제를 위해 사용되는 움직임 벡터 또는 블록 벡터를 선택적으로 변경하는 것을 규정하는, 비디오 처리 방법.A video processing method, which provides for selectively changing a motion vector or a block vector used for intra block duplication of the current video block.
96. 제 90 절 내지 제 95 절 중 어느 한 절에 있어서,96. In any one of Articles 90 to 95,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록의 픽셀 단위의 높이에 의존하는, 비디오 처리 방법.A video processing method, which depends on the height in pixels of the current video block.
97. 제 90 절 내지 제 96 절 중 어느 한 절에 있어서,97. In any one of Articles 90 to 96,
상기 비디오 코딩 조건은,The above video coding conditions are:
상기 현재 비디오 블록의 픽셀 단위의 폭에 의존하는, 비디오 처리 방법.A video processing method, which depends on the width in pixels of the current video block.
98. 제 90 절 내지 제 95 절 중 어느 한 절에 있어서,98. In any one of Articles 90 to 95,
상기 비디오 코딩 조건은 상기 현재 비디오 블록이 정사각형 모양인지 여부에 의존하는, 비디오 처리 방법.A video processing method, wherein the above video coding condition depends on whether the current video block is square in shape.
제 90 절 내지 제 98 절의 추가적인 예들이 본 명세서의 섹션 4 에 나열된 아이템 11 내지 16 에 제공된다.Additional examples of Sections 90 through 98 are provided in Items 11 through 16 listed in Section 4 of this specification.
99. 제 1 절 내지 제 98 절 중 어느 한 절에 진술된 방법을 수행하도록 구성되는 프로세서를 포함하는, 비디오 인코더 장치.99. A video encoder device comprising a processor configured to perform a method as set forth in any one of clauses 1 to 98.
100. 제 1 절 내지 제 98 절 중 어느 한 절에 진술된 방법을 수행하도록 구성되는 프로세서를 포함하는, 비디오 디코더 장치.100. A video decoder device comprising a processor configured to perform a method as set forth in any one of clauses 1 to 98.
101. 코드가 저장된 컴퓨터 판독가능 매체로서,101. A computer-readable medium having code stored thereon,
상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서가 제 1 절 내지 제 98 절 중 어느 한 절에 기술된 방법을 구현하게 하는, 컴퓨터 판독가능 매체.A computer-readable medium, wherein the code, when executed by a processor, causes the processor to implement a method described in any one of clauses 1 to 98.
도 16 은 본 명세서에 개시된 다양한 기법들이 구현될 수 있는 하나의 예시적인 비디오 처리 시스템(1600)을 도시하는 블록도이다. 다양한 구현형태들은 시스템(1600)의 구성요소들 중 일부 또는 전부를 포함할 수 있다. 시스템(1600)은 비디오 콘텐츠를 수신하기 위한 입력부(1602)를 포함할 수 있다. 비디오 콘텐츠는 원시 또는 미압축 포맷으로, 예를 들어 8 또는 10 비트의 다성분 픽셀 값으로 수신될 수 있고, 또는 압축되거나 인코딩된 포맷일 수도 있다. 입력부(1602)는 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예는 이더넷, 수동형 광 네트워크(passive optical network; PON) 등과 같은 유선 인터페이스 및 Wi-Fi 또는 셀룰러 인터페이스와 같은 무선 인터페이스를 포함한다.FIG. 16 is a block diagram illustrating one exemplary video processing system (1600) in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of the system (1600). The system (1600) may include an input (1602) for receiving video content. The video content may be received in a raw or uncompressed format, for example as 8 or 10 bit multi-component pixel values, or may be in a compressed or encoded format. The input (1602) may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, a passive optical network (PON), and the like, and wireless interfaces such as Wi-Fi or a cellular interface.
시스템(1600)은 본 명세서에서 설명되는 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(1604)를 포함할 수 있다. 코딩 컴포넌트(1604)는 입력부(1602)로부터 코딩 컴포넌트(1604)의 출력부 사이에서 비디오의 평균 비트레이트를 감소시켜서, 비디오의 코딩된 표현을 생성할 수 있다. 그러므로, 코딩 기법은 가끔 비디오 압축 또는 비디오 트랜스코딩 기법이라고 불린다. 코딩 컴포넌트(1604)의 출력은 저장되거나, 컴포넌트(1606)로 표현되는 바와 같이 연결된 통신부를 통해서 송신될 수 있다. 입력부(1602)에서 수신된 비디오의 저장되거나 통신된 비트스트림(또는 코딩된) 표현은, 디스플레이 인터페이스(1610)로 전송되는 픽셀 값 또는 표시가능한 비디오를 생성하기 위해서 컴포넌트(1608)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 시청할 수 있는 비디오를 생성하는 프로세스는 가끔 비디오 압축해제라고 불린다. 더욱이, 어떤 비디오 처리 동작들이 "코딩" 동작 또는 툴이라고 불리는 반면에, 코딩 툴 또는 동작은 인코더 및 대응하는 디코딩 툴에서 사용되고, 또는 코딩의 결과를 반전시키는 동작이 디코더에 의해 수행될 것이라는 것이 이해될 것이다.The system (1600) may include a coding component (1604) that may implement various coding or encoding methods described herein. The coding component (1604) may reduce the average bitrate of the video from an input (1602) to an output of the coding component (1604) to generate a coded representation of the video. Therefore, the coding technique is sometimes referred to as a video compression or video transcoding technique. The output of the coding component (1604) may be stored or transmitted via a connected communication unit, as represented by component (1606). The stored or communicated bitstream (or coded) representation of the video received at the input (1602) may be used by component (1608) to generate pixel values or displayable video that is transmitted to a display interface (1610). The process of generating viewable video from the bitstream representation is sometimes referred to as video decompression. Furthermore, while some video processing operations are referred to as "coding" operations or tools, it will be understood that the coding tool or operation is used in an encoder and a corresponding decoding tool, or that the operation of inverting the result of the coding will be performed by a decoder.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예는 범용적 시리얼 버스(universal serial bus; USB) 또는 고분해능 멀티미디어 인터페이스(high definition multimedia interface; HDMI) 또는 디스플레이포트(Displayport) 등을 포함할 수 있다. 저장 인터페이스의 예는 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 명세서에서 설명되는 기법은, 모바일 폰, 랩탑, 스마트 폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 다른 디바이스와 같은 다양한 전자 디바이스에서 구현될 수 있다.Examples of peripheral bus interfaces or display interfaces may include universal serial bus (USB), high definition multimedia interface (HDMI), or DisplayPort. Examples of storage interfaces include serial advanced technology attachment (SATA), PCI, IDE interfaces, etc. The techniques described herein may be implemented in various electronic devices, such as mobile phones, laptops, smart phones, or other devices capable of performing digital data processing and/or video display.
도 17 은 본 발명에 따르는 비디오 처리를 위한 방법(1700)의 흐름도 표현이다. 방법(1700)은, 동작 1702 에서, 어파인 코딩 툴을 사용한 비디오의 현재 블록 및 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 서브-블록의 제 1 움직임 벡터 및 현재 블록에 대한 대표 움직임 벡터인 제 2 움직임 벡터가 크기 제약을 준수한다고 결정하는 단계를 포함한다. 이러한 방법(1700)은 또한, 동작 1704에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 17 is a flowchart representation of a method (1700) for video processing according to the present invention. The method (1700) includes, at operation 1702, determining that a first motion vector of a sub-block of a current block and a second motion vector, which is a representative motion vector for the current block, comply with a size constraint for transforming between a current block of video and a bitstream representation of the video using an affine coding tool. The method (1700) further includes, at operation 1704, performing the transform based on the determined result.
일부 실시형태들에서는, 서브-블록의 제 1 움직임 벡터는 (MVx, MVy)로 표현되고, 제 2 움직임 벡터는 (MV'x, MV'y)로 표현된다. 크기 제약은, MVx>=MV'x-DH0 이고, MVx<=MV'x+DH1 이며, MVy>=MV'y-DV0 이고, 및 MVy<=MV'y+DV1 이라는 것을 나타내는데, DH0, DH1, DV0 및 DV1은 양수이다. 일부 실시형태들에서는, DH0 = DH1 이다. 일부 실시형태들에서는, DH0 ≠ DH1 이다. 일부 실시형태들에서는, DV0 = DV1 이다. 일부 실시형태들에서는, DV0 ≠ DV0 이다. 일부 실시형태들에서는, DH0 = DV0 이다. 일부 실시형태들에서는, DH0 ≠ DV0 이다. 일부 실시형태들에서는, DH1 = DV1 이다. 일부 실시형태들에서는, DH1 ≠ DV1 이다.In some embodiments, the first motion vector of a sub-block is represented by (MVx, MVy) and the second motion vector is represented by (MV'x, MV'y). The size constraints indicate that MVx>=MV'x-DH0, MVx<=MV'x+DH1, MVy>=MV'y-DV0, and MVy<=MV'y+DV1, where DH0, DH1, DV0 and DV1 are positive. In some embodiments, DH0 = DH1. In some embodiments, DH0 ≠ DH1. In some embodiments, DV0 = DV1. In some embodiments, DV0 ≠ DV0. In some embodiments, DH0 = DV0. In some embodiments, DH0 ≠ DV0. In some embodiments, DH1 = DV1. In some embodiments, DH1 ≠ DV1.
일부 실시형태들에서는, DH0, DH1, DV0, 또는 DV1 중 적어도 하나는 비디오 파라미터 세트 레벨, 시퀀스 파라미터 세트 레벨, 픽쳐 파라미터 세트 레벨, 슬라이스 헤더, 타일 그룹 헤더, 타일 레벨, 코딩 트리 유닛 레벨, 코딩 유닛 레벨, 또는 예측 유닛 레벨에서, 상기 비트스트림 표현 내에서 시그널링된다. 일부 실시형태들에서는, DH0, DH1, DV0, 및 DV1은 변환의 상이한 프로파일, 레벨, 또는 티어들에 대해서 다르다. 일부 실시형태들에서는, DH0, DH1, DV0, 및 DV1은 현재 블록의 폭 또는 높이에 기반한다. 일부 실시형태들에서는, DH0, DH1, DV0, 및 DV1은 현재 블록의 예측 모드에 기반하는데, 예측 모드는 단방향 예측 모드 또는 양방향 예측 모드이다. 일부 실시형태들에서는, DH0, DH1, DV0, 및 DV1은 현재 블록 내에서의 서브-블록의 위치에 기반한다.In some embodiments, at least one of DH0, DH1, DV0, or DV1 is signaled in the bitstream representation at the video parameter set level, the sequence parameter set level, the picture parameter set level, the slice header, the tile group header, the tile level, the coding tree unit level, the coding unit level, or the prediction unit level. In some embodiments, DH0, DH1, DV0, and DV1 are different for different profiles, levels, or tiers of the transform. In some embodiments, DH0, DH1, DV0, and DV1 are based on the width or height of the current block. In some embodiments, DH0, DH1, DV0, and DV1 are based on the prediction mode of the current block, wherein the prediction mode is a unidirectional prediction mode or a bidirectional prediction mode. In some embodiments, DH0, DH1, DV0, and DV1 are based on the location of a sub-block within the current block.
일부 실시형태들에서는, 제 2 움직임 벡터는 현재 블록의 제어 포인트 움직임 벡터를 포함한다. 일부 실시형태들에서는, 제 2 움직임 벡터는 현재 블록의 제 2 서브-블록에 대한 움직임 벡터를 포함한다. 일부 실시형태들에서는, 제 2 서브-블록은 현재 블록의 중심 서브-블록을 포함한다. 일부 실시형태들에서는, 제 2 서브-블록은 현재 블록의 코너 서브-블록을 포함한다. 일부 실시형태들에서는, 제 2 움직임 벡터는 현재 블록의 안 또는 밖의 위치에 대해서 유도된 움직임 벡터를 포함하고, 이러한 위치는 현재 블록과 같은 어파인 모델을 사용하여 코딩된다. 일부 실시형태들에서는, 이러한 위치는 현재 블록의 중심 위치를 포함한다.In some embodiments, the second motion vector comprises a motion vector of a control point of the current block. In some embodiments, the second motion vector comprises a motion vector for a second sub-block of the current block. In some embodiments, the second sub-block comprises a center sub-block of the current block. In some embodiments, the second sub-block comprises a corner sub-block of the current block. In some embodiments, the second motion vector comprises a motion vector derived for a location inside or outside the current block, where the location is coded using the same affine model as the current block. In some embodiments, the location comprises a center location of the current block.
일부 실시형태들에서는, 제 1 움직임 벡터는 크기 제약을 만족시키도록 조절된다. 일부 실시형태들에서는, 제 1 움직임 벡터가 제 2 움직임 벡터에 대한 크기 제약을 만족시키지 않으면, 비트스트림은 유효하지 않다. 일부 실시형태들에서는, 제 1 움직임 벡터 및 제 2 움직임 벡터는 비트스트림 표현 내의 정밀도를 시그널링하는 움직임 벡터에 따라서 표현된다. 일부 실시형태들에서는, 제 1 움직임 벡터 및 제 2 움직임 벡터는 움직임 벡터를 저장하기 위한 저장 정밀도에 따라서 표현된다. 일부 실시형태들에서는, 제 1 움직임 벡터 및 제 2 움직임 벡터는, 움직임 벡터 시그널링 정밀도 또는 움직임 벡터를 저장하기 위한 저장 정밀도와 다른 정밀도에 따라서 표현된다.In some embodiments, the first motion vector is adjusted to satisfy the size constraint. In some embodiments, if the first motion vector does not satisfy the size constraint for the second motion vector, the bitstream is invalid. In some embodiments, the first motion vector and the second motion vector are represented according to a motion vector signaling precision in the bitstream representation. In some embodiments, the first motion vector and the second motion vector are represented according to a storage precision for storing the motion vector. In some embodiments, the first motion vector and the second motion vector are represented according to a precision different from the motion vector signaling precision or the storage precision for storing the motion vector.
도 18 은 본 발명에 따르는 비디오 처리를 위한 방법(1800)의 흐름도 표현이다. 이러한 방법(1800)은, 동작 1802 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 여섯 개의 파라미터를 포함하는 어파인 모델(affine model)을 결정하는 단계를 포함한다. 어파인 모델은 현재 블록의 이웃하는 블록의 어파인 코딩 정보로부터 승계된다(inherited). 이러한 방법(1800)은, 동작 1804에서, 어파인 모델에 기반하여 상기 변환을 수행하는 단계를 포함한다.FIG. 18 is a flowchart representation of a method (1800) for video processing according to the present invention. The method (1800) includes, at operation 1802, determining an affine model including six parameters for transformation between a current block of video and a bitstream representation of the video. The affine model is inherited from affine coding information of a neighboring block of the current block. The method (1800) includes, at operation 1804, performing the transformation based on the affine model.
일부 실시형태들에서는, 이웃하는 블록은 여섯 개의 파라미터를 가지는 제 2 어파인 모델을 사용하여 코딩되고, 어파인 모델은 제 2 어파인 모델과 동일하다. 일부 실시형태들에서는, 이웃하는 블록은 네 개의 파라미터를 가지는 제 3 어파인 모델을 사용하여 코딩된다. 일부 실시형태들에서는, 어파인 모델은 현재 블록의 위치에 기반하여 결정된다. 일부 실시형태들에서는, 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 코딩 트리 유닛( coding tree unit; CTU) 내에 있지 않는 경우, 제 3 어파인 모델에 따라서 결정된다. 일부 실시형태들에서는, 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 CTU 라인 또는 같은 CTU 행 내에 있지 않는 경우, 제 3 어파인 모델에 따라서 결정된다.In some embodiments, the neighboring block is coded using a second affine model having six parameters, and the affine model is identical to the second affine model. In some embodiments, the neighboring block is coded using a third affine model having four parameters. In some embodiments, the affine model is determined based on the position of the current block. In some embodiments, the affine model is determined according to the third affine model if the neighboring block is not in the same coding tree unit (CTU) as the current block. In some embodiments, the affine model is determined according to the third affine model if the neighboring block is not in the same CTU line or the same CTU row as the current block.
일부 실시형태들에서는, 하나의 타일, 슬라이스, 또는 픽쳐가 여러 중첩되지 않는 영역들로 분할된다. 일부 실시형태들에서는, 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 영역 내에 있지 않는 경우, 제 3 어파인 모델에 따라서 결정된다. 일부 실시형태들에서는, 어파인 모델은, 이웃하는 블록이 현재 블록과 같은 영역 라인 또는 같은 영역 행 내에 있지 않는 경우, 제 3 어파인 모델에 따라서 결정된다. 일부 실시형태들에서는, 각각의 영역은 64x64의 크기를 가진다. 일부 실시형태들에서는, 현재 블록의 상단-좌측 코너는 (x, y)로 표현되고, 이웃하는 블록의 상단-좌측 코너는 (x', y')로 표현되며, 여기에서 어파인 모델은, x, y, x' 및 y'에 대한 조건이 만족되는 경우, 제 3 어파인 모델에 따라서 결정된다. 일부 실시형태들에서는, 조건은 x / M ≠ x' / M일 것을 표시하고, M은 양의 정수이다. 일부 실시형태들에서는, M은 128 또는 64이다. 일부 실시형태들에서는, 조건은 y / N ≠ y' / N일 것을 표시하고, N은 양의 정수이다. 일부 실시형태들에서는, N은 128 또는 64이다. 일부 실시형태들에서는, 조건은 x / M ≠ x' / M 이고 y / N ≠ y' / N일 것을 표시하고, M 및 N은 양의 정수이다. 일부 실시형태들에서는, M = N = 128 이거나 M = N = 64 이다. 일부 실시형태들에서는, 조건은 x >> M ≠ x' >> M 일 것을 표시하고, M은 양의 정수이다. 일부 실시형태들에서는, M은 6 또는 7 이다. 일부 실시형태들에서는, 조건은 y >> N ≠ y' >> N 일 것을 표시하고, N은 양의 정수이다. 일부 실시형태들에서는, N은 6 또는 7 이다. 일부 실시형태들에서는, 조건은 x >> M ≠ x' >> M 이고 y >> N ≠ y' >> N 일 것을 표시하고, M 및 N은 양의 정수이다. 일부 실시형태들에서는, M = N = 6 이거나 M = N = 7 이다.In some embodiments, a tile, slice, or picture is divided into multiple non-overlapping regions. In some embodiments, the affine model is determined according to a third affine model if the neighboring block is not in the same region as the current block. In some embodiments, the affine model is determined according to the third affine model if the neighboring block is not in the same region line or region row as the current block. In some embodiments, each region has a size of 64x64. In some embodiments, the top-left corner of the current block is represented by (x, y) and the top-left corner of the neighboring block is represented by (x', y'), where the affine model is determined according to the third affine model if conditions for x, y, x' and y' are satisfied. In some embodiments, the condition indicates that x / M ≠ x' / M, where M is a positive integer. In some embodiments, M is 128 or 64. In some embodiments, the condition indicates that y / N ≠ y' / N, where N is a positive integer. In some embodiments, N is 128 or 64. In some embodiments, the condition indicates that x / M ≠ x' / M and y / N ≠ y' / N, where M and N are positive integers. In some embodiments, M = N = 128 or M = N = 64. In some embodiments, the condition indicates that x >> M ≠ x' >> M, where M is a positive integer. In some embodiments, M is 6 or 7. In some embodiments, the condition indicates that y >> N ≠ y' >> N, where N is a positive integer. In some embodiments, N is 6 or 7. In some embodiments, the condition states that x >> M ≠ x' >> M and y >> N ≠ y' >> N, where M and N are positive integers. In some embodiments, M = N = 6 or M = N = 7.
도 19 는 본 발명에 따르는 비디오 처리를 위한 방법(1900)의 흐름도 표현이다. 이러한 방법(1900)은, 동작 1902 에서, 비디오의 블록 및 비디오의 비트스트림 표현 사이의 변환을 위하여, 양방향 예측 코딩 기법(bi-prediction coding technique)이 상기 블록에 적용가능한지 여부를, 폭 W 및 높이 H를 가지는 블록의 크기에 기반하여 결정하는 단계를 포함하고, W 및 H는 양의 정수이다. 이러한 방법(1900)은, 동작 1904에서, 결정 결과에 따라서 상기 변환을 수행하는 단계를 포함한다.FIG. 19 is a flowchart representation of a method (1900) for video processing according to the present invention. The method (1900) includes, at operation 1902, determining whether a bi-prediction coding technique is applicable to the block for conversion between a block of video and a bitstream representation of the video, based on a size of a block having a width W and a height H, where W and H are positive integers. The method (1900) includes, at operation 1904, performing the conversion according to the determination result.
일부 실시형태들에서는, 양방향 예측 코딩 기법은, W = T1이고 H = T2 인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 양방향 예측 코딩 기법은, W = T2 이고 H = T1 인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 양방향 예측 코딩 기법은, W = T1이고 H ≤ T2 인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 양방향 예측 코딩 기법은, W ≤ T2 이고 H = T1 인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, T1 = 4 이고 T2 = 16 이다. 일부 실시형태들에서는, 양방향 예측 코딩 기법은, W≤ T1이고 H ≤ T2 인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, T1 = T2 = 8 이다. 일부 실시형태들에서는, T1 = 8 이고 T2 = 4 이다. 일부 실시형태들에서는, T1 = T2 = 4 이다. 일부 실시형태들에서는, T1 = 4 이고 T2 = 8 이다.In some embodiments, the bidirectional predictive coding scheme is not applicable when W = T1 and H = T2, and T1 and T2 are positive integers. In some embodiments, the bidirectional predictive coding scheme is not applicable when W = T2 and H = T1, and T1 and T2 are positive integers. In some embodiments, the bidirectional predictive coding scheme is not applicable when W = T1 and H ≤ T2, and T1 and T2 are positive integers. In some embodiments, the bidirectional predictive coding scheme is not applicable when W ≤ T2 and H = T1, and T1 and T2 are positive integers. In some embodiments, T1 = 4 and T2 = 16. In some embodiments, the bidirectional predictive coding scheme is not applicable when W ≤ T1 and H ≤ T2, and T1 and T2 are positive integers. In some embodiments, T1 = T2 = 8. In some embodiments, T1 = 8 and T2 = 4. In some embodiments, T1 = T2 = 4. In some embodiments, T1 = 4 and T2 = 8.
일부 실시형태들에서는, 상기 양방향 예측 코딩 기법이 적용가능한 경우에, 상기 양방향 예측 코딩 기법에 관한 정보를 표시하는 표시자가 상기 비트스트림 내에서 시그널링된다. 일부 실시형태들에서는, 상기 양방향 예측 코딩 기법이 상기 블록에 적용가능하지 않는 경우에, 상기 블록에 대한 상기 양방향 예측 코딩 기법에 관한 정보를 표시하는 표시자가 상기 비트스트림으로부터 제외된다. 일부 실시형태들에서는, 상기 양방향 예측 코딩 기법은, 상기 블록의 크기가 4x8 또는 8x4 중 하나인 경우에 적용가능하지 않다. 일부 실시형태들에서는, 상기 양방향 예측 코딩 기법은, 상기 블록의 크기가 4xN 또는 Nx4인 경우에 적용가능하지 않고, N은 양의 정수이고, N ≤ 16 이다. 일부 실시형태들에서는, 상기 블록의 크기는 상기 블록의 제 1 색성분에 대응하고, 상기 양방향 예측 코딩 기법이 적용가능한지 여부는, 상기 제 1 색성분 및 상기 블록의 잔여 색성분에 대해서 결정된다. 일부 실시형태들에서는, 상기 블록의 크기는 상기 블록의 제 1 색성분에 대응하고, 상기 양방향 예측 코딩 기법이 적용가능한지 여부는, 상기 제 1 색성분에 대해서만 결정된다. 일부 실시형태들에서는, 제 1 색성분은 루마 성분을 포함한다.In some embodiments, when the bidirectional predictive coding technique is applicable, an indicator indicating information about the bidirectional predictive coding technique is signaled in the bitstream. In some embodiments, when the bidirectional predictive coding technique is not applicable to the block, an indicator indicating information about the bidirectional predictive coding technique for the block is excluded from the bitstream. In some embodiments, the bidirectional predictive coding technique is not applicable when the size of the block is one of 4x8 or 8x4. In some embodiments, the bidirectional predictive coding technique is not applicable when the size of the block is 4xN or Nx4, where N is a positive integer and N ≤ 16. In some embodiments, the size of the block corresponds to a first color component of the block, and whether the bidirectional predictive coding technique is applicable is determined with respect to the first color component and the remaining color components of the block. In some embodiments, the size of the block corresponds to a first color component of the block, and whether the bidirectional predictive coding technique is applicable is determined only for the first color component. In some embodiments, the first color component includes a luma component.
일부 실시형태들에서는, 이러한 방법은, 상기 양방향 예측 코딩 기법이 현재 블록에 적용가능하지 않은 경우에, 선택된 합병 후보가 상기 양방향 예측 코딩 기법을 사용하여 코딩된다고 결정하면, 제 1 레퍼런스 목록 또는 제 2 레퍼런스 목록으로부터 단일 움직임 벡터를 할당하는 단계를 더 포함한다. 일부 실시형태들에서는, 이러한 방법은, 상기 양방향 예측 코딩 기법이 현재 블록에 적용가능하지 않은 경우에, 삼각 예측 모드(triangular prediction mode)가 상기 블록에 적용가능하지 않다고 결정하는 단계를 더 포함한다. 일부 실시형태들에서는, 상기 양방향 예측 코딩 기법이 적용가능한지 여부는 예측 방향과 연관되고, 상기 예측 방향은 단방향 예측 코딩 기법(uni-prediction coding technique)과 더 연관되며, 상기 예측 방향은 상기 블록의 크기에 기반하여 상기 비트스트림 내에서 시그널링된다. 일부 실시형태들에서는, 상기 단방향 예측 코딩 기법은, (1) WxH < 64 또는 (2) WxH = 64인 경우에 상기 비트스트림 내에서 시그널링되고, W는 H와 같지 않다. 일부 실시형태들에서는, 단방향 예측 코딩 기법 또는 양방향 코딩 기법에 대한 정보는, (1) W x H > 64 또는 (2) W x H = 64인 경우에 상기 비트스트림 내에서 시그널링되고, W는 H와 같다.In some embodiments, the method further comprises the step of assigning a single motion vector from the first reference list or the second reference list if the selected merge candidate is determined to be coded using the bidirectional predictive coding technique, if the bidirectional predictive coding technique is not applicable to the current block. In some embodiments, the method further comprises the step of determining that a triangular prediction mode is not applicable to the block, if the bidirectional predictive coding technique is not applicable to the current block. In some embodiments, whether the bidirectional predictive coding technique is applicable is associated with a prediction direction, and the prediction direction is further associated with a uni-prediction coding technique, and the prediction direction is signaled in the bitstream based on a size of the block. In some embodiments, the uni-prediction coding technique is signaled in the bitstream if (1) WxH < 64 or (2) WxH = 64, and W is not equal to H. In some embodiments, information about a unidirectional predictive coding scheme or a bidirectional coding scheme is signaled in the bitstream if (1) W x H > 64 or (2) W x H = 64, where W is equal to H.
일부 실시형태들에서, 상기 블록의 크기가 4x4인 경우에, 제한 사항(restriction)이 상기 양방향 코딩 기법 및 단방향 기법 양자 모두가 상기 블록에 적용가능하지 않다는 것을 표시한다. 일부 실시형태들에서는, 상기 제한 사항은, 상기 블록이 어파인 코딩되는(affine coded) 경우에 적용가능하다. 일부 실시형태들에서는, 상기 제한 사항은, 상기 블록이 어파인 코딩되지 않는 경우에 적용가능하다. 일부 실시형태들에서는, 상기 제한 사항은 상기 블록이 인트라-코딩되는 경우에 적용가능하다. 일부 실시형태들에서는, 상기 제한 사항은, 상기 블록의 움직임 벡터가 정수 정밀도를 가지는 경우에 적용가능하지 않다.In some embodiments, when the size of the block is 4x4, the restriction indicates that neither the bidirectional coding technique nor the unidirectional technique is applicable to the block. In some embodiments, the restriction is applicable when the block is affine coded. In some embodiments, the restriction is applicable when the block is not affine coded. In some embodiments, the restriction is applicable when the block is intra-coded. In some embodiments, the restriction is not applicable when the motion vector of the block has integer precision.
일부 실시형태들에서는, 상기 블록이 부모 블록의 분할(split)에 기반하여 생성된다고 시그널링하는 것이 상기 비트스트림 내에서는 스킵되고, 상기 부모 블록은 (1) 사중 트리 분할(quad-tree split)에 대하여 8x8, (2) 이중 트리 분할(binary tree split)에 대하여 8x4 또는 4x8, 또는 (3) 삼중 트리 분할(triple tree split)에 대하여 4x16 또는 16x4 의 크기를 가진다. 일부 실시형태들에서는, 상기 움직임 벡터가 정수 정밀도를 가진다는 것을 표시하는 표시자는, 상기 비트스트림 내에서 1로 설정된다. 일부 실시형태들에서는, 상기 블록의 움직임 벡터는 정수 정밀도가 되도록 반올림된다.In some embodiments, signaling that the block is generated based on a split of a parent block is skipped in the bitstream, wherein the parent block has a size of (1) 8x8 for a quad-tree split, (2) 8x4 or 4x8 for a binary tree split, or (3) 4x16 or 16x4 for a triple tree split. In some embodiments, an indicator that the motion vector has integer precision is set to 1 in the bitstream. In some embodiments, the motion vector of the block is rounded to integer precision.
일부 실시형태들에서는, 상기 양방향 예측 코딩 기법은 상기 블록에 적용가능하다. 레퍼런스 블록은 (W + N - 1 - PW) x (H + N - 1 - PH)의 크기를 가지고, 상기 레퍼런스 블록의 경계 픽셀은, 보간 동작을 위하여 (W + N - 1) x (H + N - 1)의 크기를 가지는 제 2 블록을 생성하도록 반복되며, N은 보간 필터 탭(interpolation filter tap)을 나타내고, N, PW 및 PH는 정수이다. 일부 실시형태들에서는, PH = 0이고, 적어도 좌측 경계 또는 우측 경계의 픽셀은 상기 제 2 블록을 생성하도록 반복된다. 일부 실시형태들에서는, PW = 0이고, 적어도 상단 경계 또는 하단 경계의 픽셀은 상기 제 2 블록을 생성하도록 반복된다. 일부 실시형태들에서는, PW > 0이고 PH > 0이며, 상기 제 2 블록은 적어도 좌측 경계 또는 우측 경계의 픽셀을 반복한 후, 적어도 상단 경계 또는 하단 경계의 픽셀을 반복함으로써 생성된다. 일부 실시형태들에서는, PW > 0이고 PH > 0이며, 상기 제 2 블록은 적어도 상단 경계 또는 하단 경계의 픽셀을 반복한 후, 적어도 좌측 경계 또는 우측 경계의 픽셀을 반복함으로써 생성된다. 일부 실시형태들에서는, 좌측 경계의 픽셀은 M1 회 반복되고, 우측 경계의 픽셀은 (PW - M1) 회 반복된다. 일부 실시형태들에서는, 상단 경계의 픽셀은 M2 회 반복되고, 하단 경계의 픽셀은 (PH - M2) 회 반복된다. 일부 실시형태들에서는, 상기 변환을 위하여, 상기 레퍼런스 블록의 경계 픽셀이 어떻게 반복되는지가 일부 또는 전부의 레퍼런스 블록에 적용된다. 일부 실시형태들에서는, PW 및 PH는 상기 블록의 상이한 성분들에 대해서 다르다.In some embodiments, the bidirectional predictive coding technique is applicable to the block. The reference block has a size of (W + N - 1 - PW) x (H + N - 1 - PH), and boundary pixels of the reference block are repeated to generate a second block having a size of (W + N - 1) x (H + N - 1) for interpolation operation, where N represents an interpolation filter tap, and N, PW and PH are integers. In some embodiments, PH = 0, and at least the pixels at the left boundary or the right boundary are repeated to generate the second block. In some embodiments, PW = 0, and at least the pixels at the top boundary or the bottom boundary are repeated to generate the second block. In some embodiments, PW > 0 and PH > 0, and the second block is generated by repeating at least the pixels at the left boundary or the right boundary and then repeating at least the pixels at the top boundary or the bottom boundary. In some embodiments, PW > 0 and PH > 0, and the second block is generated by repeating pixels of at least an upper boundary or a lower boundary and then repeating pixels of at least a left boundary or a right boundary. In some embodiments, pixels of the left boundary are repeated M1 times and pixels of the right boundary are repeated (PW - M1) times. In some embodiments, pixels of the upper boundary are repeated M2 times and pixels of the lower boundary are repeated (PH - M2) times. In some embodiments, for the transformation, how boundary pixels of the reference block are repeated is applied to some or all of the reference block. In some embodiments, PW and PH are different for different components of the block.
일부 실시형태들에서는, 병합 후보 목록 구성 프로세스가 상기 블록의 크기에 기반하여 수행된다. 일부 실시형태들에서는, (1) 합병 후보가 양방향 예측 코딩 기법을 사용하여 코딩되고 (2) 양방향 예측이 상기 블록의 크기에 따라서 상기 블록에 적용가능하지 않는 경우에, 상기 합병 후보는 단방향 예측 코딩 기법에서의 제 1 레퍼런스 목록을 가리키는 단방향 예측 후보라고 간주된다. 일부 실시형태들에서는, 상기 제 1 레퍼런스 목록은 상기 단방향 예측 코딩 기법의 레퍼런스 목록 0 또는 레퍼런스 목록 1을 포함한다. 일부 실시형태들에서는, (1) 합병 후보가 양방향 예측 코딩 기법을 사용하여 코딩되고 (2) 양방향 예측이 상기 블록의 크기에 따라서 상기 블록에 적용가능하지 않는 경우에, 상기 합병 후보는 이용불가능한 것으로 간주된다. 일부 실시형태들에서는, 합병 후보 목록 구성 프로세스 중에, 이용불가능한 합병 후보는 합병 후보 목록으로부터 제거된다. 일부 실시형태들에서는, 양방향 예측이 상기 블록의 크기에 따라서 상기 블록에 적용가능하지 않는 경우에, 삼각 예측 모드를 위한 합병 후보 목록 구성 프로세스가 호출된다(invoked).In some embodiments, the merge candidate list construction process is performed based on the size of the block. In some embodiments, if (1) the merge candidate is coded using a bidirectional predictive coding technique and (2) bidirectional prediction is not applicable to the block depending on the size of the block, the merge candidate is considered a unidirectional prediction candidate pointing to a first reference list in a unidirectional predictive coding technique. In some embodiments, the first reference list includes reference list 0 or reference list 1 of the unidirectional predictive coding technique. In some embodiments, if (1) the merge candidate is coded using a bidirectional predictive coding technique and (2) bidirectional prediction is not applicable to the block depending on the size of the block, the merge candidate is considered unavailable. In some embodiments, during the merge candidate list construction process, unavailable merge candidates are removed from the merge candidate list. In some embodiments, if bidirectional prediction is not applicable to the block depending on the size of the block, a merge candidate list construction process for a triangular prediction mode is invoked.
도 20 은 본 발명에 따르는 비디오 처리를 위한 방법(2000)의 흐름도 표현이다. 이러한 방법(2000)은, 동작 2002 에서, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 트리 분할 프로세스가 상기 블록에 적용가능한지 여부를, 상기 코딩 트리 분할 프로세스에 따라서 상기 블록의 자식 코딩 유닛인 서브-블록의 크기에 기반하여 결정하는 단계를 포함한다. 상기 서브-블록은 폭 W 및 높이 H를 가지고, W 및 H는 양의 정수이다. 이러한 방법(2000)은, 동작 2004에서, 결정 결과에 따라서 상기 변환을 수행하는 단계를 더 포함한다.FIG. 20 is a flowchart representation of a method (2000) for video processing according to the present invention. The method (2000) includes, at operation 2002, determining whether a coding tree partitioning process is applicable to the block for conversion between a block of video and a bitstream representation of the video, based on a size of a sub-block, which is a child coding unit of the block, according to the coding tree partitioning process. The sub-block has a width W and a height H, where W and H are positive integers. The method (2000) further includes, at operation 2004, performing the conversion according to a result of the determination.
일부 실시형태들에서는, 코딩 트리 분할 프로세스는 W = T1이고 H = T2인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 코딩 트리 분할 프로세스는 W = T2이고 H = T1인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 코딩 트리 분할 프로세스는 W = T1이고 H ≤ T2인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, 코딩 트리 분할 프로세스는 W ≤ T2이고 H = T1인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, T1 = 4 이고 T2 = 16 이다. 일부 실시형태들에서는, 코딩 트리 분할 프로세스는 W≤ T1이고 H ≤ T2인 경우에는 적용가능하지 않고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서는, T1 = T2 = 8 이다. 일부 실시형태들에서는, T1 = 8 이고 T2 = 4 이다. 일부 실시형태들에서는, T1 = T2 = 4 이다. 일부 실시형태들에서는, T1 = 4 이다. 일부 실시형태들에서는, T2 = 4 이다. 일부 실시형태들에서는, 상기 코딩 트리 분할 프로세스가 현재 블록에 적용가능하지 않은 경우에, 상기 코딩 트리 분할 프로세스의 시그널링이 상기 비트스트림으로부터 생략된다.In some embodiments, the coding tree splitting process is not applicable when W = T1 and H = T2, and T1 and T2 are positive integers. In some embodiments, the coding tree splitting process is not applicable when W = T2 and H = T1, and T1 and T2 are positive integers. In some embodiments, the coding tree splitting process is not applicable when W = T1 and H ≤ T2, and T1 and T2 are positive integers. In some embodiments, the coding tree splitting process is not applicable when W ≤ T2 and H = T1, and T1 and T2 are positive integers. In some embodiments, T1 = 4 and T2 = 16. In some embodiments, the coding tree splitting process is not applicable when W ≤ T1 and H ≤ T2, and T1 and T2 are positive integers. In some embodiments, T1 = T2 = 8. In some embodiments, T1 = 8 and T2 = 4. In some embodiments, T1 = T2 = 4. In some embodiments, T1 = 4. In some embodiments, T2 = 4. In some embodiments, if the coding tree splitting process is not applicable to the current block, signaling of the coding tree splitting process is omitted from the bitstream.
도 21은 본 발명에 따르는 비디오 처리를 위한 방법(2100)의 흐름도 표현이다. 이러한 방법(2100)은, 동작 2102 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 유닛 레벨 가중치가 있는 양방향 예측(bi-prediction with coding unit level weight; BCW) 코딩 모드의 인덱스가 현재 블록의 위치에 대한 규칙에 기반하여 유도되는지 여부를 결정하는 단계를 포함한다. BCW 코딩 모드에서는, 다수의 가중치를 포함하는 가중치 세트가 현재 블록의 양방향 예측 값을 생성하기 위하여 사용된다. 이러한 방법(2100)은 또한, 동작 2104에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 21 is a flowchart representation of a method (2100) for video processing according to the present invention. The method (2100) includes, at operation 2102, determining whether an index of a bi-prediction with coding unit level weight (BCW) coding mode is derived based on a rule for a position of the current block for conversion between a current block of video and a bitstream representation of the video. In the BCW coding mode, a weight set including a plurality of weights is used to generate a bi-prediction value of the current block. The method (2100) further includes, at operation 2104, performing the conversion based on the determination result.
일부 실시형태들에서는, 현재 블록의 양방향 예측 값은, 가중치 세트 내의 적어도 하나의 가중치가 적용되는 경우에, 두 개의 움직임 벡터의 비-평균(non-averaging) 가중합으로서 생성된다. 일부 실시형태들에서는, 규칙은, 현재 블록 및 이웃하는 블록이 상이한 코딩 트리 유닛들 또는 최대 코딩 유닛들 내에 위치되는 경우에, 인덱스가 이웃하는 블록에 따라서 유도되지 않는다는 것을 규정한다. 일부 실시형태들에서는, 규칙은, 현재 블록 및 이웃하는 블록이 하나의 코딩 트리 유닛 내의 상이한 라인 또는 행 내에 위치되는 경우에, 인덱스가 이웃하는 블록에 따라서 유도되지 않는다는 것을 규정한다. 일부 실시형태들에서는, 규칙은, 현재 블록 및 이웃하는 블록이 비디오의 하나의 타일, 슬라이스, 또는 픽쳐의 중첩하지 않는 상이한 영역들 내에 위치되는 경우에, 인덱스가 이웃하는 블록에 따라서 유도되지 않는다는 것을 규정한다. 일부 실시형태들에서는, 규칙은, 현재 블록 및 이웃하는 블록이 비디오의 하나의 타일, 슬라이스, 또는 픽쳐의 중첩하지 않는 상이한 영역들의 상이한 행 내에 위치되는 경우에, 인덱스가 이웃하는 블록에 따라서 유도되지 않는다는 것을 규정한다. 일부 실시형태들에서는, 각각의 영역은 64x64의 크기를 가진다.In some embodiments, the bidirectional prediction value of the current block is generated as a non-averaging weighted sum of two motion vectors, provided that at least one weight in the weight set is applied. In some embodiments, the rule provides that the index is not derived according to the neighboring block if the current block and the neighboring block are located in different coding tree units or largest coding units. In some embodiments, the rule provides that the index is not derived according to the neighboring block if the current block and the neighboring block are located in different lines or rows within one coding tree unit. In some embodiments, the rule provides that the index is not derived according to the neighboring block if the current block and the neighboring block are located in different non-overlapping regions of one tile, slice, or picture of the video. In some embodiments, the rule provides that the index is not derived according to the neighboring block if the current block and the neighboring block are located in different rows of different non-overlapping regions of one tile, slice, or picture of the video. In some embodiments, each region has a size of 64x64.
일부 실시형태들에서는, 현재 블록의 상단 코너는 (x,y)로 표현되고, 이웃하는 블록의 상단 코너는 (x', y')로 표현된다. 규칙은, (x, y) 및 (x', y')가 어떤 조건을 만족시키는 경우에, 인덱스가 이웃하는 블록에 따라서 유도되지 않는다는 것을 규정한다. 일부 실시형태들에서는, 이러한 조건은 x / M ≠ x' / M일 것을 표시하고, M 양의 정수이다. 일부 실시형태들에서는, M은 128 또는 64이다. 일부 실시형태들에서는, 이러한 조건은 y / N ≠ y' / N일 것을 표시하고, N은 양의 정수이다. 일부 실시형태들에서는, N은 128 또는 64이다. 일부 실시형태들에서는, 이러한 조건은 (x / M ≠ x' / M)이고 (y / N ≠ y' / N)이라는 것을 표시하고, M 및 N은 양의 정수이다. 일부 실시형태들에서는, M = N = 128 이거나 M = N = 64 이다. 일부 실시형태들에서는, 이러한 조건은 x >> M ≠ x' >> M이라는 것을 표시하고, M은 양의 정수이다. 일부 실시형태들에서는, M은 6 또는 7 이다. 일부 실시형태들에서는, 이러한 조건은 y >> N ≠ y' >> N이라는 것을 표시하고, N은 양의 정수이다. 일부 실시형태들에서는, N은 6 또는 7 이다. 일부 실시형태들에서는, 이러한 조건은 (x >> M ≠ x' >> M)이고 (y >> N ≠ y' >> N)이라는 것을 표시하고, M 및 N은 양의 정수이다. 일부 실시형태들에서는, M = N = 6 이거나 M = N = 7 이다.In some embodiments, the top corner of the current block is represented by (x, y), and the top corner of the neighboring block is represented by (x', y'). The rule provides that the indices are not derived along the neighboring blocks if (x, y) and (x', y') satisfy some condition. In some embodiments, the condition states that x / M ≠ x' / M, where M is a positive integer. In some embodiments, M is 128 or 64. In some embodiments, the condition states that y / N ≠ y' / N, where N is a positive integer. In some embodiments, N is 128 or 64. In some embodiments, the condition states that (x / M ≠ x' / M) and (y / N ≠ y' / N), where M and N are positive integers. In some embodiments, M = N = 128 or M = N = 64. In some embodiments, the condition indicates that x >> M ≠ x' >> M, where M is a positive integer. In some embodiments, M is 6 or 7. In some embodiments, the condition indicates that y >> N ≠ y' >> N, where N is a positive integer. In some embodiments, N is 6 or 7. In some embodiments, the condition indicates that (x >> M ≠ x' >> M) and (y >> N ≠ y' >> N), where M and N are positive integers. In some embodiments, M = N = 6 or M = N = 7.
일부 실시형태들에서는, BCW 코딩 모드가 어떤 픽쳐, 슬라이스, 타일 그룹, 또는 타일에 적용가능한지 여부는, 비트스트림 내의 픽쳐 파라미터 세트, 슬라이스 헤더, 타일 그룹 헤더, 또는 타일 내에 각각 시그널링된다. 일부 실시형태들에서는, BCW 코딩 모드가 어떤 픽쳐, 슬라이스, 타일 그룹, 또는 타일에 적용가능한지 여부는, 해당 픽쳐, 슬라이스, 타일 그룹, 또는 타일과 연관된 정보에 기반하여 유도된다. 일부 실시형태들에서는, 이러한 정보는 양자화 파라미터(quantization parameter; QP), 시간 층, 또는 픽쳐 순서 카운트(Picture Order Count) 거리를 적어도 포함한다.In some embodiments, whether a BCW coding mode is applicable to a picture, a slice, a group of tiles, or a tile is signaled in a picture parameter set, a slice header, a tile group header, or a tile, respectively, in the bitstream. In some embodiments, whether a BCW coding mode is applicable to a picture, a slice, a group of tiles, or a tile is derived based on information associated with the picture, slice, group of tiles, or tile. In some embodiments, such information includes at least a quantization parameter (QP), a temporal layer, or a Picture Order Count distance.
도 22는 본 발명에 따르는 비디오 처리를 위한 방법(2200)의 흐름도 표현이다. 이러한 방법(2200)은, 동작 2202 에서, 인터 및 인트라 통합 예측(combined inter and intra prediction; CIIP) 코딩 기법을 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 인트라-예측 모드를 이웃하는 블록의 인트라-예측 모드와 독립적으로 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 이러한 방법(2200)은 또한, 동작 2204에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 22 is a flowchart representation of a method (2200) for video processing according to the present invention. The method (2200) includes, at operation 2202, determining an intra-prediction mode of a current block independently of intra-prediction modes of neighboring blocks for conversion between a current block of video coded using a combined inter and intra prediction (CIIP) coding technique and a bitstream representation of the video. The CIIP coding technique uses intermedia inter-prediction values and intermedia intra-prediction values to derive a final prediction value of the current block. The method (2200) further includes, at operation 2204, performing the conversion based on the determination result.
일부 실시형태들에서는, 현재 블록의 인트라-예측 모드는 임의의 이웃하는 블록의 인트라-예측 예측 모드를 참조하지 않고 결정된다. 일부 실시형태들에서는, 이웃하는 블록은 CIIP 코딩 기법을 사용하여 코딩된다. 일부 실시형태들에서는, 현재 블록의 인트라-예측은, 인트라-예측 코딩 기법을 사용하여 코딩되는 제 2 이웃하는 블록의 인트라-예측 모드에 기반하여 결정된다. 일부 실시형태들에서는, 현재 블록의 인트라-예측 모드를 제 2 인트라-예측 모드에 따라서 결정할지 여부는, 어떤 조건이 만족되는지 여부에 기반하고, 이러한 조건은 제 1 블록인 현재 블록과 제 2 블록인 제 2 이웃하는 블록 사이의 관계를 규정한다. 일부 실시형태들에서는, 이러한 결정은 MPM 모드의 목록을 유도하기 위한, 현재 블록의 최고 가능성 모드(MPM) 구성 프로세스의 일부이다.In some embodiments, the intra-prediction mode of the current block is determined without reference to the intra-prediction prediction mode of any neighboring block. In some embodiments, the neighboring block is coded using a CIIP coding technique. In some embodiments, the intra-prediction of the current block is determined based on the intra-prediction mode of a second neighboring block that is coded using an intra-prediction coding technique. In some embodiments, whether to determine the intra-prediction mode of the current block according to the second intra-prediction mode is based on whether a certain condition is satisfied, which condition specifies a relationship between the first block, the current block, and the second neighboring block, the second block. In some embodiments, this determination is part of a most probable mode (MPM) construction process of the current block to derive a list of MPM modes.
도 23 은 본 발명에 따르는 비디오 처리를 위한 방법(2300)의 흐름도 표현이다. 이러한 방법(2300)은, 동작 2302 에서, 인터 및 인트라 통합 예측(CIIP) 코딩 기법을 사용하여 코딩된 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 현재 블록의 인트라-예측 모드를 제 1 이웃하는 블록의 제 1 인트라-예측 모드 및 제 2 이웃하는 블록의 제 2 인트라-예측 모드에 따라서 결정하는 단계를 포함한다. 제 1 이웃하는 블록은 인트라-예측 코딩 기법을 사용하여 코딩되고, 제 2 이웃하는 블록은 CIIP 코딩 기법을 사용하여 코딩된다. 제 1 인트라-예측 모드에는 제 2 인트라-예측 모드와 상이한 우선순위가 주어진다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 이러한 방법(2300)은 또한, 동작 2304에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 23 is a flowchart representation of a method (2300) for video processing according to the present invention. The method (2300) includes, at operation 2302, determining an intra-prediction mode of a current block according to a first intra-prediction mode of a first neighboring block and a second intra-prediction mode of a second neighboring block for conversion between a current block of video coded using an Inter and Intra Integrated Prediction (CIIP) coding technique and a bitstream representation of the video. The first neighboring block is coded using the intra-prediction coding technique and the second neighboring block is coded using the CIIP coding technique. The first intra-prediction mode is given a different priority than the second intra-prediction mode. The CIIP coding technique uses intermedia inter-prediction values and intermedia intra-prediction values to derive a final prediction value of the current block. The method (2300) also further includes, in operation 2304, a step of performing the transformation based on the decision result.
일부 실시형태들에서는, 이러한 결정은 MPM 모드의 목록을 유도하기 위한, 현재 블록의 최고 가능성 모드(MPM) 구성 프로세스의 일부이다. 일부 실시형태들에서는, 제 1 인트라-예측 모드는 MPM 후보들의 목록 내에서 제 2 인트라-예측 모드 이전에 위치된다. 일부 실시형태들에서는, 제 1 인트라-예측 모드는 MPM 후보들의 목록 내에서 제 2 인트라-예측 모드 이후에 위치된다. 일부 실시형태들에서는, 인트라-예측 모드의 코딩은, 현재 블록의 최고 가능성 모드(MPM) 구성 프로세스를 바이패스한다. 일부 실시형태들에서는, 이러한 방법은, 후속 블록의 인트라-예측 모드를 현재 블록의 인트라-예측 모드에 따라서 결정하는 단계를 더 포함하는데, 여기에서 후속 블록은 인트라-예측 코딩 기법을 사용하여 코딩되고, 현재 블록은 CIIP 코딩 기법을 사용하여 코딩된다. 일부 실시형태들에서는, 이러한 결정은, 후속 블록의 최고 가능성 모드(MPM) 구성 프로세스의 일부이다. 일부 실시형태들에서는, 후속 블록의 MPM 구성 프로세스에서, 현재 블록의 인트라-예측 모드에는 인트라-예측 코딩 기법을 사용하여 코딩되는 다른 이웃하는 블록의 인트라-예측 모드보다 낮은 우선순위가 제공된다. 일부 실시형태들에서는, 후속 블록의 인트라-예측 모드를 현재 블록의 인트라-예측 모드에 따라서 결정할지 여부는, 어떤 조건이 만족되는지 여부에 기반하는데, 이러한 조건은 제 1 블록인 후속 블록 및 제 2 블록인 현재 블록 사이의 관계를 규정한다. 일부 실시형태들에서는, 이러한 조건은 다음:In some embodiments, this determination is part of a most likely mode (MPM) construction process of the current block to derive a list of MPM modes. In some embodiments, the first intra-prediction mode is positioned before the second intra-prediction mode in the list of MPM candidates. In some embodiments, the first intra-prediction mode is positioned after the second intra-prediction mode in the list of MPM candidates. In some embodiments, the coding of the intra-prediction mode bypasses the most likely mode (MPM) construction process of the current block. In some embodiments, the method further comprises determining an intra-prediction mode of a subsequent block based on the intra-prediction mode of the current block, wherein the subsequent block is coded using an intra-prediction coding technique and the current block is coded using a CIIP coding technique. In some embodiments, this determination is part of a most likely mode (MPM) construction process of the subsequent block. In some embodiments, in the MPM configuration process of the subsequent block, the intra-prediction mode of the current block is given a lower priority than the intra-prediction mode of another neighboring block that is coded using the intra-prediction coding technique. In some embodiments, whether to determine the intra-prediction mode of the subsequent block based on the intra-prediction mode of the current block is based on whether a certain condition is satisfied, which condition specifies a relationship between the first block, the subsequent block, and the second block, the current block. In some embodiments, the condition is as follows:
(1) 제 1 블록 및 제 2 블록이 코딩 트리 유닛(CTU)의 동일한 라인 내에 위치될 것,(1) The first block and the second block shall be located within the same line of the coding tree unit (CTU);
(2) 제 1 블록 및 제 2 블록이 동일한 CTU 내에 위치될 것,(2) Block 1 and Block 2 will be located within the same CTU;
(3) 제 1 블록 및 제 2 블록이 동일한 영역 내에 있을 것, 또는(3) The first block and the second block shall be within the same area, or
(4) 제 1 블록 및 제 2 블록이 상기 영역의 동일한 라인 내에 있을 것(4) The first block and the second block shall be within the same line of the above area.
중 적어도 하나를 포함한다. 일부 실시형태들에서는, 상기 영역의 폭은 상기 영역의 높이와 같다. 일부 실시형태들에서는, 상기 영역은 64x64의 크기를 가진다.At least one of the regions is included. In some embodiments, the width of the region is equal to the height of the region. In some embodiments, the region has a size of 64x64.
일부 실시형태들에서는, 보통의 인트라 코딩 기법에 대한 최고 가능성 모드들(MPM)의 목록의 서브세트만이 현재 블록을 위해서 사용된다. 일부 실시형태들에서는, 상기 서브세트는 보통의 인트라 코딩 기법을 위한 MPM 모드들의 목록 내의 단일 MPM 모드를 포함한다. 일부 실시형태들에서는, 단일 MPM 모드는 상기 목록 내의 첫 번째 MPM 모드이다. 일부 실시형태들에서는, 상기 단일 MPM 모드를 표시하는 인덱스가 비트스트림 내에서 생략된다. 일부 실시형태들에서는, 상기 서브세트는 MPM 모드들의 목록 내의 처음 네 개의 MPM 모드를 포함한다. 일부 실시형태들에서는, 상기 서브세트 내의 MPM 모드를 표시하는 인덱스는 상기 비트스트림 내에서 시그널링된다. 일부 실시형태들에서는, 인트라-코딩된 블록을 코딩하기 위한 코딩 콘텍스트가 현재 블록을 코딩하기 위하여 재사용된다. 일부 실시형태들에서는, 인트라-코딩된 블록에 대한 제 1 MPM 플래그 및 현재 블록에 대한 제 2 MPM 플래그는 비트스트림 내의 동일한 코딩 콘텍스트를 공유한다. 일부 실시형태들에서는, 현재 블록의 인트라-예측 모드는 현재 블록의 크기와 무관하게, MPM 모드들의 목록으로부터 선택된다. 일부 실시형태들에서는, 처리된 MPM 구성은 디폴트로 이네이블되고, 상기 MPM 구성 프로세스를 표시하는 플래그는 비트스트림 내에서 생략된다. 일부 실시형태들에서는, 현재 블록에 대해서 MPM 목록 구성 프로세스가 필요하지 않다.In some embodiments, only a subset of the list of most probable modes (MPMs) for the common intra coding scheme is used for the current block. In some embodiments, the subset comprises a single MPM mode within the list of MPM modes for the common intra coding scheme. In some embodiments, the single MPM mode is the first MPM mode within the list. In some embodiments, an index indicating the single MPM mode is omitted in the bitstream. In some embodiments, the subset comprises the first four MPM modes within the list of MPM modes. In some embodiments, an index indicating an MPM mode within the subset is signaled in the bitstream. In some embodiments, a coding context for coding an intra-coded block is reused for coding the current block. In some embodiments, a first MPM flag for an intra-coded block and a second MPM flag for the current block share a same coding context within the bitstream. In some embodiments, the intra-prediction mode of the current block is selected from a list of MPM modes, regardless of the size of the current block. In some embodiments, the processed MPM configuration is enabled by default, and the flag indicating the MPM configuration process is omitted in the bitstream. In some embodiments, the MPM list construction process is not required for the current block.
일부 실시형태들에서는, 루마-예측-크로마 모드가 현재 블록의 크로마 성분을 처리하기 위해서 사용된다. 일부 실시형태들에서는, 유도된 모드는 현재 블록의 크로마 성분을 처리하기 위해서 사용된다. 일부 실시형태들에서는, 현재 블록의 크로마 성분을 처리하기 위해서 여러 인트라-예측 모드가 사용된다. 일부 실시형태들에서는, 다수의 인트라-예측 모드들이 크로마 성분의 색상 포맷에 기반하여 사용된다. 일부 실시형태들에서는, 색상 포맷이 4:4:4 인 경우에, 다수의 인트라-예측 모드는 현재 블록의 루마 성분에 대한 인트라-예측 모드와 같다. 일부 실시형태들에서는, 네 개의 인트라-예측 모드 각각은 하나 이상의 비트를 사용하여 코딩되고, 네 개의 인트라-예측 모드는 평면 모드, DC 모드, 수직 모드, 및 수평 모드를 포함한다. 일부 실시형태들에서는, 네 개의 인트라-예측 모드들은 00, 01, 10, 및 11 을 사용하여 코딩된다. 일부 실시형태들에서는, 네 개의 인트라-예측 모드들은 0, 10, 110, 및 111 을 사용하여 코딩된다. 일부 실시형태들에서는, 네 개의 인트라-예측 모드들은 1, 01, 001, 및 000 을 사용하여 코딩된다. 일부 실시형태들에서는, 현재 블록의 폭 W 및 높이 H가 어떤 조건을 만족하는 경우에, 네 개의 인트라-예측 모드들의 서브세트만이 사용가능하다. 일부 실시형태들에서는, 이러한 서브세트는, W > N × H인 경우에는 평면 모드, DC 모드, 및 수직 모드를 포함하고, N은 정수이다. 일부 실시형태들에서는, 평면 모드, DC 모드, 및 수직 모드는 1, 01, 및 11 을 사용하여 코딩된다. 일부 실시형태들에서는, 평면 모드, DC 모드, 및 수직 모드는 0, 10, 및 00 을 사용하여 코딩된다. 일부 실시형태들에서,In some embodiments, the luma-prediction-chroma mode is used to process the chroma component of the current block. In some embodiments, the derived mode is used to process the chroma component of the current block. In some embodiments, multiple intra-prediction modes are used to process the chroma component of the current block. In some embodiments, the multiple intra-prediction modes are used based on the color format of the chroma component. In some embodiments, when the color format is 4:4:4, the multiple intra-prediction modes are the same as the intra-prediction mode for the luma component of the current block. In some embodiments, each of the four intra-prediction modes is coded using one or more bits, and the four intra-prediction modes include a planar mode, a DC mode, a vertical mode, and a horizontal mode. In some embodiments, the four intra-prediction modes are coded using 00, 01, 10, and 11. In some embodiments, the four intra-prediction modes are coded using 0, 10, 110, and 111. In some embodiments, the four intra-prediction modes are coded using 1, 01, 001, and 000. In some embodiments, only a subset of the four intra-prediction modes is available when the width W and the height H of the current block satisfy certain conditions. In some embodiments, this subset includes the planar mode, the DC mode, and the vertical mode when W > N × H, where N is an integer. In some embodiments, the planar mode, the DC mode, and the vertical mode are coded using 1, 01, and 11. In some embodiments, the planar mode, the DC mode, and the vertical mode are coded using 0, 10, and 00. In some embodiments,
이러한 서브세트는, H > N × W인 경우에는 평면 모드, DC 모드, 및 수평 모드를 포함하는데, N은 정수이다. 일부 실시형태들에서는, 평면 모드, DC 모드, 수평 모드는 1, 01, 및 11 을 사용하여 코딩된다. 일부 실시형태들에서는, 평면 모드, DC 모드, 수평 모드는 0, 10, 및 00 을 사용하여 코딩된다. 일부 실시형태들에서는, N = 2 이다. 일부 실시형태들에서는, DC 모드 및 평면 모드만이 현재 블록에 대해서 사용된다. 일부 실시형태들에서는, DC 모드 또는 평면 모드를 표시하는 표시자가 상기 비트스트림 내에서 시그널링된다.These subsets include planar mode, DC mode, and horizontal mode, where H > N × W, where N is an integer. In some embodiments, planar mode, DC mode, and horizontal mode are coded using 1, 01, and 11. In some embodiments, planar mode, DC mode, and horizontal mode are coded using 0, 10, and 00. In some embodiments, N = 2. In some embodiments, only DC mode and planar mode are used for the current block. In some embodiments, an indicator indicating DC mode or planar mode is signaled in the bitstream.
도 24 는 본 발명에 따르는 비디오 처리를 위한 방법(2400)의 흐름도 표현이다. 이러한 방법(2400)은, 동작 2402 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 인터-인트라 통합 예측(CIIP) 프로세스가 현재 블록의 색성분에 적용가능한지 여부를 현재 블록의 크기에 기반하여 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 이러한 방법(2400)은 또한, 동작 2404에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 24 is a flowchart representation of a method (2400) for video processing according to the present invention. The method (2400) includes, at operation 2402, determining whether an inter-intra integrated prediction (CIIP) process is applicable to the color components of the current block for conversion between a current block of video and a bitstream representation of the video, based on the size of the current block. The CIIP coding technique uses intermedia inter prediction values and intermedia intra prediction values to derive a final prediction value of the current block. The method (2400) further includes, at operation 2404, performing the conversion based on the determination result.
일부 실시형태들에서는, 색성분은 크로마 성분을 포함하고, CIIP 프로세스는, 현재 블록의 폭이 4 미만인 경우에는 크로마 성분에 대해서는 수행되지 않는다. 일부 실시형태들에서는, 색성분은 크로마 성분을 포함하고, CIIP 프로세스는, 현재 블록의 높이가 4 미만인 경우에는 크로마 성분에 대해서는 수행되지 않는다. 일부 실시형태들에서는, 현재 블록의 크로마 성분에 대한 인트라-예측 모드는 현재 블록의 루마 성분에 대한 인트라-예측 모드와 다르다. 일부 실시형태들에서는, 크로마 성분은: DC 모드, 평면 모드, 또는 루마-예측-크로마 모드In some embodiments, the chroma component includes a chroma component, and the CIIP process is not performed on the chroma component if the width of the current block is less than 4. In some embodiments, the chroma component includes a chroma component, and the CIIP process is not performed on the chroma component if the height of the current block is less than 4. In some embodiments, the intra-prediction mode for the chroma component of the current block is different from the intra-prediction mode for the luma component of the current block. In some embodiments, the chroma component is in: a DC mode, a planar mode, or a luma-prediction-chroma mode.
중 하나를 사용한다. 일부 실시형태들에서는, 크로마 성분에 대한 인트라-예측 모드는 크로마 성분의 색상 포맷에 기반하여 결정된다. 일부 실시형태들에서는, 색상 포맷은 4:2:0 또는 4:4:4 를 포함한다.One of the following is used. In some embodiments, the intra-prediction mode for a chroma component is determined based on a color format of the chroma component. In some embodiments, the color format includes 4:2:0 or 4:4:4.
도 25 는 본 발명에 따르는 비디오 처리를 위한 방법(2500)의 흐름도 표현이다. 이러한 방법(2500)은, 동작 2502 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 인터 및 인트라 통합 예측(CIIP) 코딩 기법이 현재 블록에 적용되어야 하는지 여부를 현재 블록의 특성에 기반하여 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 이러한 방법(2500)은 또한, 동작 2504에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 25 is a flowchart representation of a method (2500) for video processing according to the present invention. The method (2500) includes, at operation 2502, determining whether an inter and intra integrated prediction (CIIP) coding technique should be applied to the current block for conversion between a current block of video and a bitstream representation of the video, based on characteristics of the current block. The CIIP coding technique uses intermedia inter prediction values and intermedia intra prediction values to derive a final prediction value of the current block. The method (2500) further includes, at operation 2504, performing the conversion based on the determination result.
일부 실시형태들에서는, 특성은 폭 W 및 높이 H를 가지는 현재 블록의 크기를 포함하고, W 및 H는 정수이며, 인터-인트라 예측 코딩 기법은, 상기 블록의 크기가 어떤 조건을 만족시키는 경우에는, 현재 블록에 대해서 디스에이블된다. 일부 실시형태들에서는, 이러한 조건은 W가 T1과 같다는 것을 표시하고, T1은 정수이다. 일부 실시형태들에서는, 이러한 조건은 H가 T1과 같다는 것을 표시하고, T1은 정수이다. 일부 실시형태들에서는, T1 = 4 이다. 일부 실시형태들에서는, T1 = 2 이다. 일부 실시형태들에서는, 이러한 조건은 W가 T1보다 클 것 또는 H가 T1보다 클 것을 표시하고, T1은 정수이다. 일부 실시형태들에서는, T1 = 64 또는 128 이다. 일부 실시형태들에서는, 이러한 조건은 W가 T1 와 같고 H가 T2 와 같을 것을 표시하고, T1 및 T2는 정수이다. 일부 실시형태들에서는, 이러한 조건은 W가 T2 와 같고 H가 T1과 같을 것을 표시하고, T1 및 T2는 정수이다. 일부 실시형태들에서는, T1 = 4 이고 T2 = 16 이다.In some embodiments, the characteristic comprises a size of a current block having a width W and a height H, where W and H are integers, and the inter-intra prediction coding scheme is disabled for the current block if the size of the block satisfies a condition. In some embodiments, the condition indicates that W is equal to T1, where T1 is an integer. In some embodiments, the condition indicates that H is equal to T1, where T1 is an integer. In some embodiments, T1 = 4. In some embodiments, T1 = 2. In some embodiments, the condition indicates that W is greater than T1 or that H is greater than T1, where T1 is an integer. In some embodiments, T1 = 64 or 128. In some embodiments, the condition indicates that W is equal to T1 and H is equal to T2, where T1 and T2 are integers. In some embodiments, this condition indicates that W is equal to T2 and H is equal to T1, where T1 and T2 are integers. In some embodiments, T1 = 4 and T2 = 16.
일부 실시형태들에서는, 특성 현재 블록에 적용된 코딩 기법을 포함하고, CIIP 코딩 기법은, 상기 코딩 기법이 어떤 조건을 만족시키는 경우에는 현재 블록에 대해서 디스에이블된다. 일부 실시형태들에서는, 이러한 조건은 상기 코딩 기법이 양방향 예측 코딩 기법일 것을 표시한다. 일부 실시형태들에서는, 양방향 예측 코딩된 병합 후보는 단방향 예측 코딩된 병합 후보로 변환되어, 인터-인트라 예측 코딩 기법이 현재 블록에 적용될 수 있게 한다. 일부 실시형태들에서는, 변환된 병합 후보는 단방향 예측 코딩 기법의 레퍼런스 목록 0 과 연관된다. 일부 실시형태들에서는, 변환된 병합 후보는 단방향 예측 코딩 기법의 레퍼런스 목록 1과 연관된다. 일부 실시형태들에서는, 상기 블록의 단방향 예측 코딩된 병합 후보만이 상기 변환을 위하여 선택된다. 일부 실시형태들에서는, 양방향 예측 코딩된 병합 후보는, 상기 비트스트림 표현 내의 병합 후보를 표시하는 병합 인덱스를 결정하기 위하여 버려진다. 일부 실시형태들에서는, 인터-인트라 예측 코딩 기법은 결정 결과에 따라서 상기 현재 블록에 적용된다. 일부 실시형태들에서는, 삼각 예측 모드에 대한 병합 후보 목록 구성 프로세스는 상기 현재 블록의 움직임 후보 목록을 유도하기 위하여 사용된다.In some embodiments, the characteristic current block includes a coding scheme applied thereto, and the CIIP coding scheme is disabled for the current block if the coding scheme satisfies a certain condition. In some embodiments, the condition indicates that the coding scheme is a bidirectional predictive coding scheme. In some embodiments, the bidirectional predictive coded merge candidate is converted into a unidirectional predictive coded merge candidate, so that the inter-intra predictive coding scheme can be applied to the current block. In some embodiments, the converted merge candidate is associated with a reference list 0 of the unidirectional predictive coding scheme. In some embodiments, the converted merge candidate is associated with a reference list 1 of the unidirectional predictive coding scheme. In some embodiments, only the unidirectional predictive coded merge candidates of the block are selected for the conversion. In some embodiments, the bidirectional predictive coded merge candidates are discarded to determine a merge index indicating the merge candidate in the bitstream representation. In some embodiments, the inter-intra predictive coding scheme is applied to the current block according to the determination result. In some embodiments, the merge candidate list construction process for the triangle prediction mode is used to derive the motion candidate list of the current block.
도 26 은 본 발명에 따르는 비디오 처리를 위한 방법(2600)의 흐름도 표현이다. 이러한 방법(2600)은, 동작 2602 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 코딩 툴이 현재 블록에 대하여 디스에이블되어야 하는지 여부를 현재 블록이 인터 및 인트라 통합 예측(CIIP) 코딩 기법으로 코딩되는지 여부에 기반하여 결정하는 단계를 포함한다. CIIP 코딩 기법은 현재 블록의 최종 예측 값을 유도하기 위하여, 미디어간(intermedia) 인터 예측 값 및 미디어간 인트라 예측 값을 사용한다. 이러한 코딩 툴은: 양방향성 광학적 흐름(Bi-Directional Optical Flow; BDOF), 중첩된 블록 움직임 보상(Overlapped Block Motion Compensation; OBMC), 또는 디코더-측 움직임 벡터 정제 프로세스(decoder-side motion vector refinement process; DMVR) 중 적어도 하나를 포함한다. 이러한 방법(2600)은 또한, 동작 2604에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 26 is a flowchart representation of a method (2600) for video processing according to the present invention. The method (2600) includes, at operation 2602, determining whether a coding tool should be disabled for the current block for conversion between a current block of video and a bitstream representation of the video based on whether the current block is coded with Inter and Intra Integrated Prediction (CIIP) coding technique. The CIIP coding technique uses intermedia inter prediction values and intermedia intra prediction values to derive a final prediction value of the current block. The coding tool includes at least one of: Bi-Directional Optical Flow (BDOF), Overlapped Block Motion Compensation (OBMC), or a decoder-side motion vector refinement process (DMVR). The method (2600) further includes, at operation 2604, performing the conversion based on the determination result.
일부 실시형태들에서는, 현재 블록에 대한 인트라-예측 프로세스는 인트라-예측 코딩 기법을 사용하여 코딩되는 제 2 블록에 대한 인트라-예측 프로세스와 다르다. 일부 실시형태들에서는, 상기 현재 블록에 대한 인트라-예측 프로세스에서, 이웃하는 샘플들의 필터링은 스킵된다. 일부 실시형태들에서는, 상기 현재 블록에 대한 인트라-예측 프로세스에서, 위치-의존적 인트라 예측 샘플 필터링 프로세스가 디스에이블된다. 일부 실시형태들에서는, 상기 현재 블록에 대한 인트라-예측 프로세스에서, 멀티라인 인트라-예측 프로세스가 디스에이블된다. 일부 실시형태들에서는, 상기 현재 블록에 대한 인트라-예측 프로세스에서, 광각 인트라-예측 프로세스가 디스에이블된다.In some embodiments, the intra-prediction process for the current block is different from the intra-prediction process for the second block, which is coded using an intra-prediction coding technique. In some embodiments, in the intra-prediction process for the current block, filtering of neighboring samples is skipped. In some embodiments, in the intra-prediction process for the current block, a position-dependent intra-prediction sample filtering process is disabled. In some embodiments, in the intra-prediction process for the current block, a multi-line intra-prediction process is disabled. In some embodiments, in the intra-prediction process for the current block, a wide-angle intra-prediction process is disabled.
도 27 은 본 발명에 따르는 비디오 처리를 위한 방법(2700)의 흐름도 표현이다. 이러한 방법(2700)은, 동작 2702 에서, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 공간적 움직임 예측을 위한 움직임 벡터를 위해 사용되는 제 1 정밀도 P1 및 시간적 움직임 예측을 위한 움직임 벡터를 위해 사용되는 제 2 정밀도 P2를 결정하는 단계를 포함한다. P1 및/또는 P2는 분수이다. P1 및 P2는 서로 다르다. 이러한 방법(2700)은 또한, 동작 2704에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 27 is a flowchart representation of a method (2700) for video processing according to the present invention. The method (2700) includes, at operation 2702, determining a first precision P1 used for a motion vector for spatial motion prediction and a second precision P2 used for a motion vector for temporal motion prediction, for conversion between a block of video and a bitstream representation of the video. P1 and/or P2 are fractions. P1 and P2 are different from each other. The method (2700) further includes, at operation 2704, performing the conversion based on the determination result.
일부 실시형태들에서는, 제 1 정밀도는 1/16 루마 픽셀이고, 제 2 정밀도는 1/4 루마 픽셀이다. 일부 실시형태들에서는, 제 1 정밀도는 1/16 루마 픽셀이고, 제 2 정밀도는 1/8 루마 픽셀이다. 일부 실시형태들에서는, 제 1 정밀도는 1/8 루마 픽셀이고, 제 2 정밀도는 1/4 루마 픽셀이다. 일부 실시형태들에서는, 제 1 정밀도는 1/16 루마 픽셀이고, 제 2 정밀도는 1/4 루마 픽셀이다. 일부 실시형태들에서는, 제 1 정밀도는 1/16 루마 픽셀이고, 제 2 정밀도는 1/8 루마 픽셀이다. 일부 실시형태들에서는, 제 1 정밀도는 1/8 루마 픽셀이고, 제 2 정밀도는 1/4 루마 픽셀이다. 일부 실시형태들에서는, 제 1 또는 제 2 정밀도 중 적어도 하나는 1/16 루마 픽셀보다 낮다.In some embodiments, the first precision is 1/16 luma pixel and the second precision is 1/4 luma pixel. In some embodiments, the first precision is 1/16 luma pixel and the second precision is 1/8 luma pixel. In some embodiments, the first precision is 1/8 luma pixel and the second precision is 1/4 luma pixel. In some embodiments, the first precision is 1/16 luma pixel and the second precision is 1/4 luma pixel. In some embodiments, the first precision is 1/16 luma pixel and the second precision is 1/8 luma pixel. In some embodiments, the first precision is 1/8 luma pixel and the second precision is 1/4 luma pixel. In some embodiments, at least one of the first or second precisions is less than 1/16 luma pixel.
일부 실시형태들에서는, 상기 제 1 정밀도 또는 상기 제 2 정밀도 중 적어도 하나는 변할 수 있다. 일부 실시형태들에서는, 제 1 정밀도 또는 제 2 정밀도는 비디오의 프로파일, 레벨, 또는 티어에 따라서 변할 수 있다. 일부 실시형태들에서는, 제 1 정밀도 또는 제 2 정밀도는 상기 비디오의 픽쳐 내의 시간 층에 따라서 변할 수 있다. 일부 실시형태들에서는, 제 1 정밀도 또는 제 2 정밀도는 상기 비디오의 픽쳐의 크기에 따라서 변할 수 있다.In some embodiments, at least one of the first precision or the second precision can vary. In some embodiments, the first precision or the second precision can vary depending on a profile, level, or tier of the video. In some embodiments, the first precision or the second precision can vary depending on a temporal layer within a picture of the video. In some embodiments, the first precision or the second precision can vary depending on a size of a picture of the video.
일부 실시형태들에서는, 상기 제 1 정밀도 또는 제 2 정밀도 중 적어도 하나는 상기 비트스트림 표현 내의 비디오 파라미터 세트, 시퀀스 파라미터 세트, 픽쳐 파라미터 세트, 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 트리 유닛, 또는 코딩 유닛 내에서 시그널링된다. 일부 실시형태들에서는, 움직임 벡터는 (MVx, MVy)로 표현되고, 상기 움직임 벡터에 대한 정밀도는 (Px, Py)로 표현되며, 여기에서 Px는 MVx와 연관되고, Py는 MVy와 연관된다. 일부 실시형태들에서는, Px 및 Py는 상기 비디오의 프로파일, 레벨, 또는 티어에 따라서 변할 수 있다. 일부 실시형태들에서는, Px 및 Py는 상기 비디오 내의 픽쳐의 시간 층에 따라서 변할 수 있다. 일부 실시형태들에서는, Px 및 Py는 상기 비디오 내의 픽쳐의 폭에 따라서 변할 수 있다. 일부 실시형태들에서는, Px 및 Py는 상기 비트스트림 표현 내의 비디오 파라미터 세트, 시퀀스 파라미터 세트, 픽쳐 파라미터 세트, 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 트리 유닛, 또는 코딩 유닛 내에서 시그널링된다. 일부 실시형태들에서는, 디코딩된 움직임 벡터는 (MVx, MVy)라고 표현되고, 상기 움직임 벡터는, 상기 움직임 벡터가 시간적 움직임 예측 움직임 벡터로서 저장되기 이전에 제 2 정밀도에 따라서 조절된다. 일부 실시형태들에서는, 시간적 움직임 예측 움직임 벡터는 (Shift(MVx, P1-P2), Shift(MVy, P1-P2))가 되도록 조절되고, P1 및 P2는 정수이며, P1 ≥ P2이고, Shift는 무부호 숫자에 대한 우측 천이 연산을 나타낸다. 일부 실시형태들에서는, 시간적 움직임 예측 움직임 벡터는 (SignShift(MVx, P1-P2), SignShift(MVy, P1-P2))가 되도록 조절되고, P1 및 P2는 정수이며, 및 P1 ≥ P2 이고, SignShift는 부호화 숫자에 대한 우측 천이 연산을 나타낸다. 일부 실시형태들에서는, 시간적 움직임 예측 움직임 벡터는 (MVx << (P1-P2)), MVy << (P1-P2))가 되도록 조절되고, P1 및 P2는 정수이며, P1 ≥ P2이고, <<는 부호화 숫자 또는 무부호 숫자에 대한 좌측 천이 연산을 나타낸다.In some embodiments, at least one of the first precision or the second precision is signaled within a video parameter set, a sequence parameter set, a picture parameter set, a slice header, a tile group header, a tile, a coding tree unit, or a coding unit within the bitstream representation. In some embodiments, a motion vector is represented by (MVx, MVy) and a precision for the motion vector is represented by (Px, Py), where Px is associated with MVx and Py is associated with MVy. In some embodiments, Px and Py can vary depending on a profile, level, or tier of the video. In some embodiments, Px and Py can vary depending on a temporal layer of a picture within the video. In some embodiments, Px and Py can vary depending on a width of a picture within the video. In some embodiments, Px and Py are signaled in a video parameter set, a sequence parameter set, a picture parameter set, a slice header, a tile group header, a tile, a coding tree unit, or a coding unit within the bitstream representation. In some embodiments, a decoded motion vector is represented as (MVx, MVy), and the motion vector is adjusted according to a second precision before the motion vector is stored as a temporal motion prediction motion vector. In some embodiments, the temporal motion prediction motion vector is adjusted to be (Shift(MVx, P1-P2), Shift(MVy, P1-P2)), where P1 and P2 are integers, P1 ≥ P2, and Shift represents a right shift operation for unsigned numbers. In some embodiments, the temporal motion prediction motion vector is adjusted to be (SignShift(MVx, P1-P2), SignShift(MVy, P1-P2)), where P1 and P2 are integers, and P1 ≥ P2, and SignShift denotes a right shift operation on a signed number. In some embodiments, the temporal motion prediction motion vector is adjusted to be (MVx << (P1-P2)), MVy << (P1-P2)), where P1 and P2 are integers, P1 ≥ P2, and << denotes a left shift operation on a signed number or an unsigned number.
도 28 은 본 발명에 따르는 비디오 처리를 위한 방법(2800)의 흐름도 표현이다. 이러한 방법(2800)은, 동작 2802 에서, 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 움직임 벡터 (MVx, MVy)를 정밀도 (Px, Py)로 결정하는 단계를 포함한다. Px는 MVx와 연관되고, Py는 MVy와 연관된다. MVx 및 MVy는 N 개의 비트를 사용하여 표현되고, MinX ≤ MVx ≤ MaxX이며, MinY ≤ MVy ≤ MaxY이고, MinX, MaxX, MinY, 및 MaxY는 실수 숫자이다. 이러한 방법(2800)은 또한, 동작 2804에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 28 is a flowchart representation of a method (2800) for video processing according to the present invention. The method (2800) includes, at operation 2802, determining motion vectors (MVx, MVy) with precisions (Px, Py) for conversion between a block of video and a bitstream representation of the video. Px is associated with MVx, and Py is associated with MVy. MVx and MVy are represented using N bits, MinX ≤ MVx ≤ MaxX, MinY ≤ MVy ≤ MaxY, and MinX, MaxX, MinY, and MaxY are real numbers. The method (2800) further includes, at operation 2804, performing the conversion based on the determination result.
일부 실시형태들에서는, MinX = MinY이다. 일부 실시형태들에서는, MinX ≠ MinY이다. 일부 실시형태들에서는, MaxX = MaxY이다. 일부 실시형태들에서는, MaxX ≠ MaxY이다.In some embodiments, MinX = MinY. In some embodiments, MinX ≠ MinY. In some embodiments, MaxX = MaxY. In some embodiments, MaxX ≠ MaxY.
일부 실시형태들에서는, MinX 또는 MaxX 중 적어도 하나는 Px에 기반한다. 일부 실시형태들에서는, 움직임 벡터는 (Px, Py)로 표시되는 정밀도를 가지고, MinY 또는 MaxY 중 적어도 하나는 Py에 기반한다. 일부 실시형태들에서는, MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는 N에 기반한다. 일부 실시형태들에서는, 공간적 움직임 예측 움직임 벡터에 대한 MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는, 시간적 움직임 예측 움직임 벡터에 대한 대응하는 MinX, MaxX, MinY, 또는 MaxY와 다르다. 일부 실시형태들에서는, MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는 상기 비디오의 프로파일, 레벨, 또는 티어에 따라서 변할 수 있다. 일부 실시형태들에서는, MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는 상기 비디오 내의 픽쳐의 시간 층에 따라서 변할 수 있다. 일부 실시형태들에서는, MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는 상기 비디오 내의 픽쳐의 크기에 따라서 변할 수 있다. 일부 실시형태들에서는, MinX, MaxX, MinY, 또는 MaxY 중 적어도 하나는 상기 비트스트림 표현 내의 비디오 파라미터 세트, 시퀀스 파라미터 세트, 픽쳐 파라미터 세트, 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 트리 유닛, 또는 코딩 유닛 내에서 시그널링된다. 일부 실시형태들에서는, MVx는 공간적 움직임 예측 또는 시간적 움직임 예측을 위해서 사용되기 이전에 [MinX, MaxX]로 클리핑된다. 일부 실시형태들에서는, MVy는 공간적 움직임 예측 또는 시간적 움직임 예측을 위해서 사용되기 이전에 [MinY, MaxY]로 클리핑된다.In some embodiments, at least one of MinX or MaxX is based on Px. In some embodiments, the motion vector has a precision denoted as (Px, Py) and at least one of MinY or MaxY is based on Py. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY is based on N. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY for a spatial motion prediction motion vector is different from a corresponding MinX, MaxX, MinY, or MaxY for a temporal motion prediction motion vector. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY can vary depending on a profile, level, or tier of the video. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY can vary depending on a temporal layer of a picture in the video. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY can vary depending on a size of a picture in the video. In some embodiments, at least one of MinX, MaxX, MinY, or MaxY is signaled within a video parameter set, a sequence parameter set, a picture parameter set, a slice header, a tile group header, a tile, a coding tree unit, or a coding unit within the bitstream representation. In some embodiments, MVx is clipped to [MinX, MaxX] before being used for spatial motion prediction or temporal motion prediction. In some embodiments, MVy is clipped to [MinY, MaxY] before being used for spatial motion prediction or temporal motion prediction.
도 29 는 본 발명에 따르는 비디오 처리를 위한 방법(2900)의 흐름도 표현이다. 이러한 방법(2900)은, 동작 2902 에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 공유된 병합 목록이 현재 블록에 적용가능한지 여부를 현재 블록의 코딩 모드에 따라서 결정하는 단계를 포함한다. 이러한 방법(2900)은 또한, 동작 2904에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 포함한다.FIG. 29 is a flowchart representation of a method (2900) for video processing according to the present invention. The method (2900) includes, at operation 2902, determining whether a shared merge list is applicable to the current block, depending on a coding mode of the current block, for conversion between a current block of video and a bitstream representation of the video. The method (2900) also includes, at operation 2904, performing the conversion based on the determination result.
일부 실시형태들에서는, 공유된 병합 목록은, 현재 블록이 정규 병합 모드를 사용하여 코딩되는 경우에는 적용가능하지 않다. 일부 실시형태들에서는, 공유된 병합 목록은, 현재 블록이 인트라 블록 복제(Intra Block Copy; IBC) 모드를 사용하여 코딩되는 경우에 적용가능하다. 일부 실시형태들에서는, 이러한 방법은: 상기 변환을 수행하기 이전에, 움직임 후보들의 테이블을 상기 비디오의 과거의 변환 및 비트스트림 표현에 기반하여 유지하는 단계; 및 상기 변환을 수행한 이후에, 상기 현재 블록이 공유된 병합 목록이 적용될 수 있는 부모 블록의 자식이고, 상기 현재 블록이 정규 병합 모드를 사용하여 코딩되는 경우에는, 움직임 후보들의 테이블의 업데이트를 디스에이블하는 단계를 더 포함한다.In some embodiments, the shared merge list is not applicable when the current block is coded using the regular merge mode. In some embodiments, the shared merge list is applicable when the current block is coded using the Intra Block Copy (IBC) mode. In some embodiments, the method further comprises: prior to performing the transform, maintaining a table of motion candidates based on past transforms and bitstream representations of the video; and after performing the transform, disabling updating of the table of motion candidates if the current block is a child of a parent block to which the shared merge list can be applied, and the current block is coded using the regular merge mode.
도 30 은 본 발명에 따르는 비디오 처리를 위한 방법(3000)의 흐름도 표현이다. 이러한 방법(3000)은, 동작 3002 에서, W x H 크기를 가지는 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 이러한 변환 도중의 움직임 보상을 위한 차원 (W + N - 1) x (H + N - 1)의 제 2 블록을 결정하는 단계를 포함한다. 제 2 블록은 차원 (W + N - 1- PW) x (H + N - 1 - PH)의 레퍼런스 블록에 기반하여 결정된다. N은 필터 크기를 나타내고, W, H, N, PW 및 PH는 음이 아닌 정수이다. PW 및 PH 양자 모두는 0 와 같지 않다. 이러한 방법(3000)은 또한, 동작 3004에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 30 is a flowchart representation of a method (3000) for video processing according to the present invention. The method (3000) includes, at operation 3002, determining a second block of dimensions (W + N - 1) x (H + N - 1) for motion compensation during a transformation between a current block of video having a size of W x H and a bitstream representation of the video. The second block is determined based on a reference block of dimensions (W + N - 1 - PW) x (H + N - 1 - PH). N represents a filter size, and W, H, N, PW and PH are non-negative integers. Neither of PW nor PH are equal to 0. The method (3000) further includes, at operation 3004, performing the transformation based on the determined result.
일부 실시형태들에서는, 레퍼런스 블록 밖에 위치되는 제 2 블록 내의 픽셀들은, 상기 레퍼런스 블록의 하나 이상의 경계를 반복시킴으로써 결정된다. 일부 실시형태들에서는, PH = 0 이고, 상기 레퍼런스 블록의 적어도 좌측 경계 또는 우측 경계는 제 2 블록을 생성하도록 반복된다. 일부 실시형태들에서는, PW = 0 이고, 상기 레퍼런스 블록의 적어도 상단 경계 또는 하단 경계는 제 2 블록을 생성하도록 반복된다. 일부 실시형태들에서는, PW > 0 이고 PH > 0 이며, 제 2 블록은, 상기 레퍼런스 블록의 적어도 좌측 경계 또는 우측 경계를 반복시키고, 그 후에 상기 레퍼런스 블록의 적어도 상단 경계 또는 하단 경계를 반복시킴으로써 생성된다. 일부 실시형태들에서는, PW > 0 이고 PH > 0 이며, 제 2 블록은, 상기 레퍼런스 블록의 적어도 상단 경계 또는 하단 경계를 반복시키고, 그 후에 상기 레퍼런스 블록의 적어도 좌측 경계 또는 우측 경계를 반복시킴으로써 생성된다.In some embodiments, pixels in a second block located outside the reference block are determined by repeating one or more boundaries of the reference block. In some embodiments, PH = 0, and at least a left boundary or a right boundary of the reference block is repeated to generate the second block. In some embodiments, PW = 0, and at least a top boundary or a bottom boundary of the reference block is repeated to generate the second block. In some embodiments, PW > 0 and PH > 0, and the second block is generated by repeating at least a left boundary or a right boundary of the reference block, and then repeating at least a top boundary or a bottom boundary of the reference block. In some embodiments, PW > 0 and PH > 0, and the second block is generated by repeating at least a top boundary or a bottom boundary of the reference block, and then repeating at least a left boundary or a right boundary of the reference block.
일부 실시형태들에서는, 상기 레퍼런스 블록의 좌측 경계는 M1 회 반복되고, 상기 레퍼런스 블록의 우측 경계는 (PW - M1) 회 반복되며, M1은 양의 정수이다. 일부 실시형태들에서는, 상기 레퍼런스 블록의 상단 경계는 M2 회 반복되고, 상기 레퍼런스 블록의 하단 경계는 (PH - M2) 회 반복되며, M2는 양의 정수이다. 일부 실시형태들에서는, PW 또는 PH 중 적어도 하나는 상기 현재 블록의 상이한 색성분에 대해서 다르고, 상기 색성분은 적어도 루마 성분 또는 하나 이상의 크로마 성분을 포함한다. 일부 실시형태들에서는, PW 또는 PH 중 적어도 하나는 상기 현재 블록의 크기 또는 형상에 따라서 변할 수 있다. 일부 실시형태들에서는, PW 또는 PH 중 적어도 하나는 상기 현재 블록의 코딩 특성에 따라서 변할 수 있고, 상기 코딩 특성은 단방향 예측 코딩 또는 양방향 예측 코딩을 포함한다.In some embodiments, the left boundary of the reference block is repeated M1 times and the right boundary of the reference block is repeated (PW - M1) times, where M1 is a positive integer. In some embodiments, the upper boundary of the reference block is repeated M2 times and the lower boundary of the reference block is repeated (PH - M2) times, where M2 is a positive integer. In some embodiments, at least one of the PW or the PH is different for different color components of the current block, where the color components include at least a luma component or one or more chroma components. In some embodiments, at least one of the PW or the PH can vary depending on a size or shape of the current block. In some embodiments, at least one of the PW or the PH can vary depending on a coding characteristic of the current block, where the coding characteristic includes unidirectional predictive coding or bidirectional predictive coding.
일부 실시형태들에서는, 상기 레퍼런스 블록 밖에 제 2 블록 내의 픽셀들은 하나의 값으로 설정된다. 일부 실시형태들에서는, 하나의 값은 1 << (BD - 1) 이고, BD는 상기 레퍼런스 블록 내의 픽셀 샘플들의 비트-깊이이다. 일부 실시형태들에서는, BD는 8 또는 10 이다. 일부 실시형태들에서는, 상기 하나의 값은 상기 레퍼런스 블록의 픽셀 샘플에 기반하여 유도된다. 일부 실시형태들에서는, 상기 하나의 값은 비디오 파라미터 세트, 시퀀스 파라미터 세트, 픽쳐 파라미터 세트, 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 트리 유닛 행, 코딩 트리 유닛, 코딩 유닛, 또는 예측 유닛 내에서 시그널링된다. 일부 실시형태들에서는, 상기 레퍼런스 블록 외부에 위치된 상기 제 2 블록 내의 픽셀들의 패딩은, 상기 현재 블록이 어파인 코딩되는 경우에 디스에이블된다.In some embodiments, pixels in the second block outside the reference block are set to a value. In some embodiments, the value is 1 << (BD - 1), where BD is the bit-depth of pixel samples in the reference block. In some embodiments, BD is 8 or 10. In some embodiments, the one value is derived based on pixel samples of the reference block. In some embodiments, the one value is signaled in a video parameter set, a sequence parameter set, a picture parameter set, a slice header, a tile group header, a tile, a coding tree unit row, a coding tree unit, a coding unit, or a prediction unit. In some embodiments, padding of pixels in the second block located outside the reference block is disabled when the current block is affine coded.
도 31은 본 발명에 따르는 비디오 처리를 위한 방법(3100)의 흐름도 표현이다. 이러한 방법(3100)은, 동작 3102 에서, W x H 크기를 가지는 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 이러한 변환 도중의 움직임 보상을 위한 차원 (W + N - 1) x (H + N - 1)의 제 2 블록을 결정하는 단계를 포함한다. W와 H는 음이 아닌 정수이고, 여기에서 N은 음이 아닌 정수이며 필터 크기에 기반한다. 변환이 일어나는 도중에, 정제된 움직임 벡터가 원본 움직임 벡터에 대한 움직임 벡터 정제 동작에 따른 멀티-포인트 검색에 기반하여 결정되고, 여기에서 상기 레퍼런스 블록의 픽셀 길이의 경계(pixels long boundaries)가 하나 이상의 비-경계 픽셀을 반복시킴으로써 결정된다. 이러한 방법(3100)은 또한, 동작 3104에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 31 is a flowchart representation of a method (3100) for video processing according to the present invention. The method (3100) comprises, at operation 3102, determining a second block of dimensions (W + N - 1) x (H + N - 1) for motion compensation during the transformation between a current block of video having a size of W x H and a bitstream representation of the video. W and H are non-negative integers, where N is a non-negative integer and is based on a filter size. During the transformation, a refined motion vector is determined based on a multi-point search according to a motion vector refinement operation with respect to an original motion vector, wherein pixels long boundaries of the reference block are determined by repeating one or more non-boundary pixels. The method (3100) further comprises, at operation 3104, performing the transformation based on the determined result.
일부 실시형태들에서는, 상기 현재 블록을 처리하는 것은, 상기 현재 블록을 움직임 벡터 정제 동작에서 필터링하는 것을 포함한다. 일부 실시형태들에서는, 상기 레퍼런스 블록이 상기 현재 블록의 처리에 적용가능한지 여부는, 상기 현재 블록의 차원에 기반하여 결정된다. 일부 실시형태들에서는, 현재 블록을 보간하는 것은: 상기 제 2 블록에 기반하여 상기 현재 블록의 다수의 서브-블록을 보간하는 것을 포함한다. 각각의 서브-블록은 W1xH1의 크기를 가지고, W1, H1은 음이 아닌 정수이다. 일부 실시형태들에서는, W1=H1=4 이고, W=H=8 이며, 및 PW=PH=0 이다. 일부 실시형태들에서는, 제 2 블록은 다수의 서브-블록들 중 적어도 하나의 움직임 벡터의 정수 부분에 전적으로 기반하여 결정된다. 일부 실시형태들에서는, 다수의 모든 서브-블록들의 움직임 벡터의 정수 부분들 사이의 최대 차이는 1 픽셀 이하인 경우, 상기 레퍼런스 블록은 상기 현재 블록의 상단-좌측 서브-블록의 움직임 벡터의 정수 부분에 기반하여 결정되고, 상기 레퍼런스 블록의 우측 경계 및 하단 경계 각각은 제 2 블록을 획득하도록 일 회 반복된다. 일부 실시형태들에서는, 다수의 모든 서브-블록들의 움직임 벡터의 정수 부분들 사이의 최대 차이가 1 픽셀 이하인 경우, 상기 레퍼런스 블록은 상기 현재 블록의 하단-우측 서브-블록의 움직임 벡터의 정수 부분에 기반하여 결정되고, 상기 레퍼런스 블록의 좌측 경계 및 상단 경계 각각은 제 2 블록을 획득하도록 일 회 반복된다. 일부 실시형태들에서는, 제 2 블록은 다수의 서브-블록들 중 하나의 변경된 움직임 벡터에 전적으로 기반하여 결정된다.In some embodiments, processing the current block comprises filtering the current block in a motion vector refinement operation. In some embodiments, whether the reference block is applicable to processing of the current block is determined based on a dimension of the current block. In some embodiments, interpolating the current block comprises: interpolating a plurality of sub-blocks of the current block based on the second block. Each sub-block has a size of W1xH1, where W1 and H1 are non-negative integers. In some embodiments, W1=H1=4, W=H=8, and PW=PH=0. In some embodiments, the second block is determined entirely based on an integer portion of a motion vector of at least one of the plurality of sub-blocks. In some embodiments, if the maximum difference between the integer parts of the motion vectors of all the plurality of sub-blocks is less than or equal to 1 pixel, the reference block is determined based on the integer part of the motion vector of the upper-left sub-block of the current block, and each of the right boundary and the bottom boundary of the reference block is repeated once to obtain a second block. In some embodiments, if the maximum difference between the integer parts of the motion vectors of all the plurality of sub-blocks is less than or equal to 1 pixel, the reference block is determined based on the integer part of the motion vector of the lower-right sub-block of the current block, and each of the left boundary and the top boundary of the reference block is repeated once to obtain a second block. In some embodiments, the second block is determined entirely based on the changed motion vector of one of the plurality of sub-blocks.
일부 실시형태들에서는, 다수의 서브-블록 모두의 움직임 벡터의 정수 부분들 사이의 최대 차이가 두 개 이하의 픽셀과 같으면, 상기 현재 블록의 상단-좌측 서브-블록의 움직임 벡터는, 하나의 정수 픽셀 거리를 각각의 성분에 가산하여 변경된 움직임 벡터를 획득함으로써 변경된다. 레퍼런스 블록은 변경된 움직임 벡터에 기반하여 결정되고, 레퍼런스 블록의 좌측 경계, 우측 경계, 상단 경계, 및 하단 경계 각각은 일 회 반복되어 제 2 블록을 얻는다.In some embodiments, if the maximum difference between the integer parts of the motion vectors of all of the plurality of sub-blocks is less than or equal to two pixels, the motion vector of the upper-left sub-block of the current block is modified by adding one integer pixel distance to each component to obtain a modified motion vector. A reference block is determined based on the modified motion vector, and each of the left boundary, the right boundary, the upper boundary, and the lower boundary of the reference block is iterated once to obtain a second block.
일부 실시형태들에서는, 다수의 서브-블록 모두의 움직임 벡터의 정수 부분들 사이의 최대 차이가 두 개 이하의 픽셀과 같은 경우에, 상기 현재 블록의 하단-우측 서브-블록의 움직임 벡터는, 하나의 정수 픽셀 거리를 각각의 성분으로부터 감산하여 변경된 움직임 벡터를 획득함으로써 변경된다. 레퍼런스 블록은 변경된 움직임 벡터에 기반하여 결정되고, 레퍼런스 블록의 좌측 경계, 우측 경계, 상단 경계, 및 하단 경계 각각은 일 회 반복되어 제 2 블록을 얻는다.In some embodiments, if the maximum difference between the integer parts of the motion vectors of all of the plurality of sub-blocks is less than or equal to two pixels, the motion vector of the lower-right sub-block of the current block is modified by subtracting one integer pixel distance from each component to obtain a modified motion vector. A reference block is determined based on the modified motion vector, and each of the left boundary, the right boundary, the upper boundary, and the lower boundary of the reference block is repeated once to obtain a second block.
도 32는 본 발명에 따르는 비디오 처리를 위한 방법(3200)의 흐름도 표현이다. 이러한 방법(3200)은, 동작 3202 에서, 인터 및 인트라 통합 예측(CIIP) 코딩 기법을 사용하여 코딩된 비디오의 블록과 비디오의 비트스트림 표현 사이의 변환을 위하여, 상기 블록 내의 소정 위치에서의 예측 값을 해당 위치에서의 인터 예측 값과 인트라 예측 값의 가중합에 기반하여 결정하는 단계를 포함한다. 가중합은, 인터 예측 값 및 인트라 예측 값에 기반하여 획득된 최초의 합에 오프셋을 가산하는 것에 기반하여 얻어지고, 이러한 오프셋은 상기 가중합을 결정하기 위하여 수행되는 우천이 연산 이전에 가산된다. 이러한 방법(3200)은 또한, 동작 3204에서, 결정 결과에 기반하여 상기 변환을 수행하는 단계를 더 포함한다.FIG. 32 is a flowchart representation of a method (3200) for video processing according to the present invention. The method (3200) includes, at operation 3202, determining a prediction value at a given location within the block based on a weighted sum of inter prediction values and intra prediction values at the location for conversion between a block of video coded using an inter and intra integrated prediction (CIIP) coding technique and a bitstream representation of the video. The weighted sum is obtained based on adding an offset to an initial sum obtained based on the inter prediction values and the intra prediction values, and the offset is added prior to a weighted operation performed to determine the weighted sum. The method (3200) further includes, at operation 3204, performing the conversion based on a result of the determination.
일부 실시형태들에서는, 상기 블록 내의 위치는 (x, y)로 표현되고, 위치 (x, y)에서의 인터 예측 값은 Pinter(x, y)로 표현되며, 위치 (x, y)에서의 인트라 예측 값은 Pintra(x, y)로 표현되고, 위치 (x, y)에서의 인터-예측 가중치는 w_inter(x, y)로 표현되며, 위치 (x, y)에서의 인트라-예측 가중치는 w_intra(x, y)로 표현된다. 위치 (x, y)에서의 예측 값은 (Pintra(x, y) × w_intra(x, y) + Pinter(x, y) × w_inter(x, y) + offset(x, y)) >> N 이 되도록 결정되고, 여기에서 w_intra(x, y) + w_inter(x, y) = 2^N 이고 offset(x, y) = 2^(N-1) 이며, N은 양의 정수이다. 일부 실시형태들에서는, N = 2 이다.In some embodiments, a location within the block is represented by (x, y), an inter prediction value at location (x, y) is represented by Pinter(x, y), an intra prediction value at location (x, y) is represented by Pintra(x, y), an inter-prediction weight at location (x, y) is represented by w_inter(x, y), and an intra-prediction weight at location (x, y) is represented by w_intra(x, y). The prediction value at location (x, y) is determined such that (Pintra(x, y) × w_intra(x, y) + Pinter(x, y) × w_inter(x, y) + offset(x, y)) >> N, where w_intra(x, y) + w_inter(x, y) = 2^N and offset(x, y) = 2^(N-1), where N is a positive integer. In some embodiments, N = 2.
일부 실시형태들에서는, 가중합은 해당 위치에서의 인터 예측 값 및 인트라 예측 값에 대해서 동일한 가중치를 사용하여 결정된다. 일부 실시형태들에서는, 가중합을 결정하기 위해서, 블록 내의 위치에 따라서 제로 가중치가 사용된다. 일부 실시형태들에서는, 제로 가중치는 인터 예측 값에 적용된다. 일부 실시형태들에서는, 제로 가중치는 인트라 예측 값에 적용된다.In some embodiments, the weighted sum is determined using the same weights for the inter-prediction value and the intra-prediction value at that location. In some embodiments, a zero weight is used depending on the location within the block to determine the weighted sum. In some embodiments, a zero weight is applied to the inter-prediction value. In some embodiments, a zero weight is applied to the intra-prediction value.
도 33은 본 발명에 따르는 비디오 처리를 위한 방법(3300)의 흐름도 표현이다. 이러한 방법(3300)은, 동작 3302에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해, 현재 블록의 크기와 연관된 조건이 만족되었는지 여부에 부분적으로 기초하여 현재 블록의 코딩 정보가 비트스트림 표현에서 표현되는 방식을 결정하는 단계를 포함한다. 이 방법(3300)은, 동작 3304에서, 이 결정에 기반하여 변환을 수행하는 단계도 포함한다.FIG. 33 is a flowchart representation of a method (3300) for video processing according to the present invention. The method (3300) includes, at operation 3302, determining how coding information of a current block is represented in the bitstream representation, based in part on whether a condition associated with a size of the current block is satisfied, for conversion between a current block of video and a bitstream representation of the video. The method (3300) also includes, at operation 3304, performing a conversion based on this determination.
일부 실시형태들에서는, 코딩 정보는 조건이 만족되는 경우 비트스트림 표현에서 시그널링된다. 일부 실시형태들에서는, 코딩 정보는 조건이 만족되는 경우 비트스트림 표현에서 생략된다. 일부 실시형태들에서는, 조건이 만족되는 경우, 현재 블록에 대해 IBC(인트라 블록 복사, intra block copy) 코딩 툴 또는 인터 예측 코딩 툴 중 적어도 하나가 디스에이블 된다. 일부 실시형태들에서는, IBC 코딩 툴 및 인터 예측 코딩 툴이 디스에이블(disable)되는 경우 코딩 정보는 비트스트림 표현에서 생략된다. 일부 실시형태들에서는, 코딩 정보는 IBC 코딩 툴이 이네이블 되고 인터 예측 툴이 디스에이블 되는 경우 비트스트림 표현에서 시그널링된다. In some embodiments, the coding information is signaled in the bitstream representation if the condition is satisfied. In some embodiments, the coding information is omitted from the bitstream representation if the condition is satisfied. In some embodiments, if the condition is satisfied, at least one of an IBC (intra block copy) coding tool or an inter prediction coding tool is disabled for the current block. In some embodiments, the coding information is omitted from the bitstream representation if the IBC coding tool and the inter prediction coding tool are disabled. In some embodiments, the coding information is signaled in the bitstream representation if the IBC coding tool is enabled and the inter prediction tool is disabled.
일부 실시형태들에서는, 코딩 정보는 IBC 툴 및/또는 인터 예측 코딩 툴과 연관된 동작 모드를 포함하고, 동작 모드는 적어도 정상(normal) 모드 혹은 스킵(skip) 모드를 포함한다. 일부 실시형태들에서는, 코딩 정보는 코딩 툴과 연관된 예측 모드의 사용을 지시하는 지시자(indicator)를 포함한다. 일부 실시형태들에서, 코딩 툴은 비트스트림 표현에서 코딩 정보가 생략되는 경우 사용되지 않는다. 일부 실시형태들에서, 코딩 툴은 코딩 정보가 비트스트림 표현에서 생략되는 경우 사용된다. 일부 실시형태들에서, 코딩 툴은 IBC(인트라 블록 복사, intra block copy) 코딩 툴 혹은 인터 예측 코딩 툴을 포함한다. In some embodiments, the coding information includes an operation mode associated with the IBC tool and/or the inter prediction coding tool, wherein the operation mode includes at least a normal mode or a skip mode. In some embodiments, the coding information includes an indicator indicating use of a prediction mode associated with the coding tool. In some embodiments, the coding tool is not used when the coding information is omitted from the bitstream representation. In some embodiments, the coding tool is used when the coding information is omitted from the bitstream representation. In some embodiments, the coding tool includes an IBC (intra block copy) coding tool or an inter prediction coding tool.
일부 실시형태들에서, 지시자(indicator)가 비트스트림에서 생략되는 경우, 다른 하나 이상의 코딩 툴들을 지시하는 하나 이상의 지시자들은 비트스트림 표현에서 시그널링된다. 일부 실시형태들에서, 다른 하나 이상의 코딩 툴들은 적어도 인트라 코딩 툴 혹은 팔레트 코딩 툴을 포함한다. 일부 실시형태들에서, 지시자는 인터 모드와 인트라 모드를 구별하되, 하나 이상의 지시자들에는 인터 예측 코딩 툴이 디스에이블되고 IBC 코딩 툴이 인에이블 되는 경우 비트스트림에서 시그널링되는 IBC 모드를 지시하는 제1 지시자 및 팔레트 모드를 지시하는 제2 지시자가 포함된다. In some embodiments, when an indicator is omitted from the bitstream, one or more indicators indicating one or more other coding tools are signaled in the bitstream representation. In some embodiments, the one or more other coding tools include at least an intra coding tool or a palette coding tool. In some embodiments, the indicator distinguishes between an inter mode and an intra mode, wherein the one or more indicators include a first indicator indicating an IBC mode that is signaled in the bitstream when the inter prediction coding tool is disabled and the IBC coding tool is enabled, and a second indicator indicating a palette mode.
일부 실시형태들에서, 코딩 정보는 스킵 모드에 대한 제3 지시자를 포함하고, 스킵 모드는 인터-스킵 모드 혹은 IBC 스킵 모드이다. 일부 실시형태들에서, 스킵 모드에 대한 제3 지시자는 인터 예측 코딩 툴이 디스에이블되고 IBC 코딩 툴이 인에이블 되는 경우 시그널링된다. 일부 실시형태들에서, 비트스트림 표현에서 IBC 모드의 사용이 생략되었음을 지시하는 지시자에도 불구하고 예측 모드는 인터 예측 코딩 툴이 디스에이블되고 IBC 코딩 툴이 이네이블되는 경우 IBC 모드로 결정되고, 스킵 모드는 현재 블록에 적용 가능하다. In some embodiments, the coding information includes a third indicator for a skip mode, and the skip mode is an inter-skip mode or an IBC skip mode. In some embodiments, the third indicator for the skip mode is signaled when the inter prediction coding tool is disabled and the IBC coding tool is enabled. In some embodiments, the prediction mode is determined to be the IBC mode when the inter prediction coding tool is disabled and the IBC coding tool is enabled, despite the indicator indicating that use of the IBC mode is omitted in the bitstream representation, and the skip mode is applicable to the current block.
일부 실시형태들에서는, 코딩 정보는 삼각(triangle) 모드를 포함한다. 일부 실시형태들에서는, 코딩 정보는 인터 예측 방향을 포함한다. 일부 실시 형태들에서는, 코딩 정보는 현재 블록이 단 예측 코딩 툴을 이용하여 코딩된 경우 비트스트림 표현에서 생략된다. 일부 실시형태들에서, 코딩 정보는 SMVD(symmetric motion vector difference) 방법의 사용을 지시하는 지시자(indicator)를 포함한다. 일부 실시형태들에서, 조건이 만족되면, 현재 블록은 비트스트림 표현에서 SMVD 방법의 사용을 지시하는 지시자에도 불구하고 단 예측되도록 설정된다. 일부 실시형태들에서는, SMVD 방법의 사용을 지시하는 지시자가 비트스트림 표현에서 제외되는 경우 단 예측 코딩 툴과 연관된 목록 0 혹은 목록 1만이 움직임 보상 프로세스에서 사용된다. In some embodiments, the coding information includes a triangle mode. In some embodiments, the coding information includes an inter prediction direction. In some embodiments, the coding information is omitted from the bitstream representation if the current block is coded using a unidirectional predictive coding tool. In some embodiments, the coding information includes an indicator indicating the use of a symmetric motion vector difference (SMVD) method. In some embodiments, if the condition is satisfied, the current block is set to be unidirectionally predicted despite the indicator indicating the use of the SMVD method in the bitstream representation. In some embodiments, if the indicator indicating the use of the SMVD method is omitted from the bitstream representation, only the list 0 or list 1 associated with the unidirectional predictive coding tool is used in the motion compensation process.
일부 실시형태들에서, 조건은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 조건은 현재 블록의 너비가 T2이고, 현재 블록의 높이가 T1임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 조건은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2 이하임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 조건은 현재 블록의 너비가 T2이고 현재 블록의 높이가 T1 이하임을 지시하며, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 조건은 현재 블록의 너비가 T1 이하이고, 현재 블록의 높이가 T2 이하임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 현재 블록의 너비는 T1 이상이고, 현재 블록의 높이는 T2 이상이며, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 조건은 현재 블록의 너비는 T1 이상이고, 현재 블록의 높이는 T2 이상임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, T1는 4이고, T2는 16이다. 일부 실시형태들에서, T1 및 T2는 8이다. 일부 실시형태들에서, T1은 8이고 T2은 4이다. 일부 실시형태들에서, T1 및 T2는 4이다. 일부 실시형태들에서, T1 및 T2는 32이다. 일부 실시형태들에서, T1 및 T2는 64이다. 일부 실시형태들에서, T1 및 T2는 128이다.In some embodiments, the condition indicates that the width of the current block is T1 and the height of the current block is T2, where T1 and T2 are positive integers. In some embodiments, the condition indicates that the width of the current block is T2 and the height of the current block is T1, where T1 and T2 are positive integers. In some embodiments, the condition indicates that the width of the current block is T1 and the height of the current block is less than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the condition indicates that the width of the current block is T2 and the height of the current block is less than or equal to T1, where T1 and T2 are positive integers. In some embodiments, the condition indicates that the width of the current block is less than or equal to T1 and the height of the current block is less than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the condition indicates that the width of the current block is less than or equal to T1 and the height of the current block is less than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the width of the current block is greater than or equal to T1 and the height of the current block is greater than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the condition specifies that the width of the current block is greater than or equal to T1 and the height of the current block is greater than or equal to T2, where T1 and T2 are positive integers. In some embodiments, T1 is 4 and T2 is 16. In some embodiments, T1 and T2 are 8. In some embodiments, T1 is 8 and T2 is 4. In some embodiments, T1 and T2 are 4. In some embodiments, T1 and T2 are 32. In some embodiments, T1 and T2 are 64. In some embodiments, T1 and T2 are 128.
일부 실시형태들에서, 조건은 현재 블록이 4x8, 8x4, 4x16, 혹은 16x4의 크기를 가짐을 지시한다. 일부 실시형태들에서, 조건은 블록이 4x8, 8x4의 크기를 가짐을 지시한다. 일부 실시형태들에서, 조건은 현재 블록의 크기가 4xN 혹은 Nx4 임을 지시하며, N은 양의 정수로서 N ≤ 16이다. 일부 실시형태들에서, 조건은 현재 블록의 크기가 8xN 혹은 Nx8임을 지시하며, N은 양의 정수로서 N ≤ 16이다. 일부 실시형태들에서, 조건은 현재 블록의 색성분이 N 샘플보다 작거나 동일함을 지시한다. 일부 실시형태들에서, N은 16이다. 일부 실시형태들에서, N은 32이다. In some embodiments, the condition indicates that the current block has a size of 4x8, 8x4, 4x16, or 16x4. In some embodiments, the condition indicates that the block has a size of 4x8, 8x4. In some embodiments, the condition indicates that the size of the current block is 4xN or Nx4, where N is a positive integer and N ≤ 16. In some embodiments, the condition indicates that the size of the current block is 8xN or Nx8, where N is a positive integer and N ≤ 16. In some embodiments, the condition indicates that the color component of the current block is less than or equal to N samples. In some embodiments, N is 16. In some embodiments, N is 32.
일부 실시형태들에서, 조건은 현재 블록의 색성분이 높이와 동일한 너비를 갖는다는 것을 지시한다. 일부 실시형태들에서, 조건은 현재 블록의 색성분이 4x8, 8x4, 4x4, 4x16 혹은 16x4의 크기를 가짐을 지시한다. 일부 실시형태들에서, 색성분은 루마 성분 혹은 하나 이상의 크로마 성분을 포함한다. 일부 실시형태들에서, 조건이 현재 블록이 4인 너비 및 4인 높이를 가짐을 지시하는 경우, 인터 예측 툴이 디스에이블된다. 일부 실시형태들에서, 조건이 현재 블록이 4인 너비 및 4인 높이를 가짐을 지시하는 경우 IBC 예측 툴은 디스에이블된다. In some embodiments, the condition indicates that the chroma component of the current block has a width equal to its height. In some embodiments, the condition indicates that the chroma component of the current block has a size of 4x8, 8x4, 4x4, 4x16 or 16x4. In some embodiments, the chroma component includes a luma component or one or more chroma components. In some embodiments, if the condition indicates that the current block has a width of 4 and a height of 4, the inter prediction tool is disabled. In some embodiments, if the condition indicates that the current block has a width of 4 and a height of 4, the IBC prediction tool is disabled.
일부 실시형태들에서, 단 예측 코딩 툴과 연관된 목록 0은 (1) 현재 블록이 4인 너비 및 8인 높이를 갖거나, (2) 현재 블록이 8인 너비 및 4인 높이를 갖는 경우 움직임 보상 프로세스에서 사용된다. 양 예측 코딩 툴은 움직임 보상 프로세스에서 디스에이블된다.In some embodiments, the list 0 associated with the single predictive coding tool is used in the motion compensation process if (1) the current block has a width of 4 and a height of 8, or (2) the current block has a width of 8 and a height of 4. The double predictive coding tool is disabled in the motion compensation process.
도 34는 본 발명에 따르는 비디오 처리를 위한 방법(3400)의 흐름도 표현이다. 이러한 방법(3400)은, 동작 3402에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해, 변경된 움직임 벡터 세트를 결정하는 단계를 포함한다. 이러한 방법(3400)은 동작 3404에서 변경된 움직임 벡터 세트를 기반으로 변환을 수행하는 단계를 포함한다. 조건을 만족하는 현재 블록으로 인해, 변경된 움직임 벡터 세트는 현재 블록에 연관된 움직임 벡터 세트의 변경된 버전이다. FIG. 34 is a flowchart representation of a method (3400) for video processing according to the present invention. The method (3400) includes, at operation 3402, determining a modified motion vector set for transformation between a current block of video and a bitstream representation of the video. The method (3400) includes, at operation 3404, performing a transformation based on the modified motion vector set. Due to the current block satisfying the condition, the modified motion vector set is a modified version of the motion vector set associated with the current block.
일부 실시형태들에서, 움직임 벡터 세트는 정규(regular) 머지 코딩 기술, sbTMVP(sub-block temporal motion vector prediction), 혹은 MMVD(Merge with motion vector difference) 중 하나를 이용하여 유도된다. 일부 실시형태들에서, 움직임 벡터 세트는 인트라 블록 복사(IBC) 코딩 기술에서 이용하는 블록 벡터를 포함한다. 일부 실시형태들에서, 조건은 현재 블록의 루마 성분의 크기가 기 정의된 크기와 동일함을 특정한다. 일부 실시형태들에서, 기 정의된 크기는 8x4 혹은 4x8 중 적어도 하나를 포함한다.In some embodiments, the set of motion vectors is derived using one of regular merge coding techniques, sub-block temporal motion vector prediction (sbTMVP), or Merge with motion vector difference (MMVD). In some embodiments, the set of motion vectors includes block vectors used in an intra block copy (IBC) coding technique. In some embodiments, the condition specifies that the size of the luma component of the current block is equal to a predefined size. In some embodiments, the predefined size includes at least one of 8x4 or 4x8.
일부 실시형태들에서, 움직임 벡터 세트를 변경하는 단계는 현재 블록의 움직임 정보가 제1 예측 방향에 대한 제1 참조 픽처 리스트에서 제1 참조 픽처를 참조하는 제1 움직임 벡터와 제2 예측 방향에 대한 제2 참조 픽처 리스트에서 제2 참조 픽처를 참조하는 제2 움직임 벡터를 포함하는 양 방향으로 결정되는 경우 움직임 벡터를 단 방향 움직임 벡터로 변환하는 단계를 포함한다. 일부 실시형태들에서, 현재 블록의 움직임 정보는 이웃 블록의 움직임 정보에 기반하여 유도된다. 일부 실시형태들에서, 이 방법은 제1 예측 방향 혹은 제2 예측 방향 중 하나의 정보를 폐기하는 단계를 포함한다. 일부 실시형태들에서, 정보를 폐기하는 단계는 움직임 폐기되는 예측 방향의 움직임 벡터를 (0, 0)으로 변경하는 단계를 포함한다. 일부 실시형태들에서, 정보를 폐기하는 단계는 폐기되는 예측 방향의 참조 인덱스를 -1로 변경하는 단계를 포함한다. 일부 실시형태들에서, 정보를 폐기하는 단계는 폐기된 예측 방향을 다른 예측 방향으로 변경하는 단계를 포함한다. In some embodiments, the step of changing the set of motion vectors comprises the step of converting the motion vectors into unidirectional motion vectors when the motion information of the current block is determined in a bidirectional manner, including a first motion vector referencing a first reference picture in a first reference picture list for a first prediction direction and a second motion vector referencing a second reference picture in a second reference picture list for a second prediction direction. In some embodiments, the motion information of the current block is derived based on motion information of a neighboring block. In some embodiments, the method comprises the step of discarding information of one of the first prediction direction or the second prediction direction. In some embodiments, the step of discarding information comprises the step of changing a motion vector of a prediction direction whose motion is discarded to (0, 0). In some embodiments, the step of discarding information comprises the step of changing a reference index of the prediction direction whose motion is discarded to -1. In some embodiments, the step of discarding information comprises the step of changing the discarded prediction direction to another prediction direction.
일부 실시형태들에서, 이러한 방법은 제1 예측 방향에 대한 정보와 제2 예측 방향에 대한 정보에 기반하여 새로운 움직임 후보를 유도하는 단계를 더 포함한다. 일부 실시형태들에서, 새로운 움직임 후보를 유도하는 단계는 제1 예측 방향의 제1 움직임 벡터와 제2 예측 방향의 제2 움직임 벡터의 평균에 기초하여 새로운 움직임 후보의 움직임 벡터를 결정하는 단계를 포함한다. 일부 실시형태들에서, 새로운 움직임 후보를 유도하는 단계는 제2 예측 방향에 대한 정보에 따라 제1 예측 방향으로 제1 움직임 벡터를 스케일링함으로써 스케일링된 움직임 벡터를 결정하는 단계; 및 스케일링된 움직임 벡터와 제2 예측 방향의 제2 움직임 벡터의 평균에 기초하여 새로운 움직임 후보의 움직임 벡터를 결정하는 단계를 포함한다. In some embodiments, the method further comprises a step of deriving a new motion candidate based on information about the first prediction direction and information about the second prediction direction. In some embodiments, the step of deriving the new motion candidate comprises a step of determining a motion vector of the new motion candidate based on an average of a first motion vector in the first prediction direction and a second motion vector in the second prediction direction. In some embodiments, the step of deriving the new motion candidate comprises a step of determining a scaled motion vector by scaling the first motion vector in the first prediction direction according to the information about the second prediction direction; and a step of determining a motion vector of the new motion candidate based on an average of the scaled motion vector and the second motion vector in the second prediction direction.
일부 실시형태들에서, 제1 참조 픽처 리스트는 목록 0(list 0)이고 제2 참조 픽처 리스트는 목록 1(list 1)이다. 일부 실시형태들에서, 제1 참조 픽처 리스트는 목록 1(list 1)이고, 제2 참조 픽처 리스트는 목록 0(list 0)이다. 일부 실시형태들에서, 이러한 방법은 변환된 움직임 벡터를 이용하여 과거 변환들에 기초하여 결정된 움직임 후보들의 표를 업데이트하는 단계를 포함한다. 일부 실시형태들에서, 표는 HMVP(History Motion Vector Prediction) 표를 포함한다.In some embodiments, the first reference picture list is list 0 and the second reference picture list is list 1. In some embodiments, the first reference picture list is list 1 and the second reference picture list is list 0. In some embodiments, the method comprises updating a table of motion candidates determined based on past transformations using the transformed motion vector. In some embodiments, the table comprises a History Motion Vector Prediction (HMVP) table.
일부 실시형태들에서, 방법은 움직임 벡터 세트를 변경하는 단계에 앞서 제1 예측 방향 및 제2 예측 방향에 대한 정보를 사용하여 과거 변환들에 기초하여 결정된 움직임 후보의 표를 업데이트하는 단계를 포함한다. 일부 실시형태들에서, 변환된 움직임 벡터는 현재 블록에 대한 움직임 보상 동작을 위해 사용된다. 일부 실시형태들에서, 변환된 움직임 벡터는 다음(후속) 블록의 움직임 벡터를 예측하는 데 사용된다. 일부 실시형태들에서, 변환된 움직임 벡터는 현재 블록에 대한 디블록킹 과정(deblocking process)에 사용된다. In some embodiments, the method comprises a step of updating a table of motion candidates determined based on past transformations using information about the first prediction direction and the second prediction direction prior to the step of modifying the set of motion vectors. In some embodiments, the transformed motion vector is used for a motion compensation operation for the current block. In some embodiments, the transformed motion vector is used for predicting a motion vector of a next (subsequent) block. In some embodiments, the transformed motion vector is used in a deblocking process for the current block.
일부 실시형태들에서, 제1 예측 방향 및 제2 예측 방향에 대한 정보는 움직임 벡터 세트를 변경하는 단계에 앞서 현재 블록에 대한 움직임 보상 동작에 사용된다. 일부 실시형태들에서, 움직임 벡터 세트를 변경하는 단계에 앞서 정보는 후속 블록의 움직임 벡터를 예측하는 데 사용된다. 일부 실시형태들에서, 제1 예측 방향 및 제2 예측 방향에 대한 정보는 움직임 벡터 세트를 변경하는 단계에 앞서 현재 블록에 대한 디블록킹 과정에 사용된다. In some embodiments, the information about the first prediction direction and the second prediction direction is used for a motion compensation operation for the current block prior to the step of changing the motion vector set. In some embodiments, the information is used for predicting a motion vector of a subsequent block prior to the step of changing the motion vector set. In some embodiments, the information about the first prediction direction and the second prediction direction is used for a deblocking process for the current block prior to the step of changing the motion vector set.
일부 실시형태들에서, 변환된 움직임 벡터는 현재 블록에 대한 움직임 개선 동작(motion refinement operation)에 사용된다. 일부 실시형태들에서, 움직임 벡터 세트를 변경하는 단계에 앞서 제1 예측 방향 및 제2 예측 방향에 대한 정보는 현재 블록에 대한 개선 동작을 위해 사용된다. 일부 실시형태들에서, 개선 동작은 적어도 BDOF(Bi-Directional Optical Flow) 동작 혹은 PROF(Prediction Refined with Optical Flow) 동작을 포함하는 광 흐름 코딩 동작(optical flow coding operation)을 포함한다. In some embodiments, the transformed motion vectors are used for a motion refinement operation for the current block. In some embodiments, prior to the step of modifying the set of motion vectors, information about the first prediction direction and the second prediction direction is used for the refinement operation for the current block. In some embodiments, the refinement operation includes at least an optical flow coding operation including a Bi-Directional Optical Flow (BDOF) operation or a Prediction Refined with Optical Flow (PROF) operation.
일부 실시형태들에서, 이러한 방법은 제1 예측 방향에 대한 정보 및 제2 예측 방향에 대한 정보에 기초하여 중간 예측 블록들을 생성하는 단계, 중간 예측 블록을 개선하는 단계, 및 중간 예측 블록들 중 하나에 기초하여 최종 예측 블록을 결정하는 단계를 포함한다. In some embodiments, the method comprises the steps of generating intermediate prediction blocks based on information about the first prediction direction and information about the second prediction direction, improving the intermediate prediction blocks, and determining a final prediction block based on one of the intermediate prediction blocks.
도 35는 본 발명에 따르는 비디오 처리를 위한 방법(3500)의 흐름도 표현이다. 이러한 방법(3500)은, 동작 3502에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 간의 변환을 위해, 블록 차원의 조건이 만족된 경우 양방향 움직임 벡터로부터 단 방향 움직임 벡터를 결정하는 단계를 포함한다. 단 방향 움직임 벡터는 이후 변환을 위한 머지 후보로서 사용된다. 이러한 방법(3500)은 동작 3504에서 결정에 기반하여 변환을 수행하는 단계를 포함한다. FIG. 35 is a flowchart representation of a method (3500) for video processing according to the present invention. The method (3500) includes, at operation 3502, determining a unidirectional motion vector from a bidirectional motion vector if a block-level condition is satisfied for transformation between a current block of video and a bitstream representation of the video. The unidirectional motion vector is then used as a merge candidate for transformation. The method (3500) includes, at operation 3504, performing the transformation based on the determination.
일부 실시형태들에서, 변환된 단 방향 움직임 벡터는 MMVD(Merge with Motion Vector Difference) 코딩 프로세스에서 베이스 머지 후보로써 사용된다. 일부 실시형태들에서, 변환된 단 방향 움직임 벡터는 이후 머지 리스트에 삽입된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 양 방향 움직임 벡터의 한 예측 방향에 기초하여 변환된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 오직 한 예측 방향에 기초하여 변환되고, 오직 한 예측 방향은 참조 픽처 리스트 0에 연관된다. 일부 실시형태들에서, 현재 블록이 위치한 비디오 데이터 유닛이 양예측되는 경우, 후보 리스트에서 제1 후보에 대한 오직 하나의 예측 방향은 참조 픽처 리스트 0에 연관되고, 후보 리스트에서 제2 후보에 대한 오직 하나의 예측 방향은 참조 픽처 리스트 1에 연관된다. 후보 리스트는 머지 후보 리스트 혹은 MMVD 베이스 후보 리스트를 포함한다. In some embodiments, the transformed unidirectional motion vector is used as a base merge candidate in an MMVD (Merge with Motion Vector Difference) coding process. In some embodiments, the transformed unidirectional motion vector is then inserted into a merge list. In some embodiments, the unidirectional motion vector is transformed based on one prediction direction of the bidirectional motion vector. In some embodiments, the unidirectional motion vector is transformed based on only one prediction direction, and only one prediction direction is associated with reference picture list 0. In some embodiments, if the video data unit in which the current block is located is bi-predicted, only one prediction direction for the first candidate in the candidate list is associated with reference picture list 0, and only one prediction direction for the second candidate in the candidate list is associated with reference picture list 1. The candidate list includes a merge candidate list or an MMVD base candidate list.
일부 실시형태들에서, 비디오 데이터 유닛은 현재 슬라이스, 타일 그룹, 혹은 비디오의 픽처를 포함한다. 일부 실시형태들에서, 단 방향 움직임 벡터는 비디오 데이터 유닛의 모든 참조 픽처들이 디스플레이 순서에 따라 과거 픽처들인 경우 참조 픽처 리스트 1에 기초하여 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 디스플레이 순서에 따라 비디오 데이터 유닛의 참조 픽처들의 적어도 제1 참조 픽처가 과거 픽처이고 비디오 데이터 유닛의 참조 픽처들의 적어도 제2 참조 픽처가 미래 픽처인 경우 참조 픽처 리스트 0에 기초하여 결정된다. 일부 실시형태들에서, 상이한 참조 픽처 리스트들에 기초하여 결정된 단 방향 움직임 벡터들은 머지 리스트에서 인터리브(interleave) 방식으로 위치된다. In some embodiments, the video data unit includes a current slice, a group of tiles, or a picture of the video. In some embodiments, the unidirectional motion vector is determined based on reference picture list 1 if all reference pictures of the video data unit are past pictures in display order. In some embodiments, the unidirectional motion vector is determined based on reference picture list 0 if at least a first reference picture of the reference pictures of the video data unit is a past picture and at least a second reference picture of the reference pictures of the video data unit is a future picture in display order. In some embodiments, the unidirectional motion vectors determined based on different reference picture lists are interleaved in the merge list.
일부 실시형태들에서, 단 방향 움직임 벡터는 저 지연 확인 지시자(low delay check indicator)에 기초하여 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 변환 동안 움직임 보상 프로세스에 앞서 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 MMVD(Merge With Motion Vector Difference) 코딩 프로세스에서 움직임 벡터 차이를 추가하는 단계에 앞서 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 샘플 개선 프로세스(sample refinement process)에 앞서 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 BDOF(Bi-Directional Optical Flow) 프로세스에 앞서 결정된다. 일부 실시형태들에서, BDOF 프로세스는 단 방향 움직임 벡터를 사용한다는 결정에 기초하여 이후 디스에이블된다. In some embodiments, the unidirectional motion vector is determined based on a low delay check indicator. In some embodiments, the unidirectional motion vector is determined prior to a motion compensation process during the transform. In some embodiments, the unidirectional motion vector is determined prior to a step of adding a motion vector difference in a MMVD (Merge With Motion Vector Difference) coding process. In some embodiments, the unidirectional motion vector is determined prior to a sample refinement process. In some embodiments, the unidirectional motion vector is determined prior to a BDOF (Bi-Directional Optical Flow) process. In some embodiments, the BDOF process is subsequently disabled based on the determination to use the unidirectional motion vector.
일부 실시형태들에서, 단 방향 움직임 벡터는 PROF(Prediction Refinement with Optical Flow) 프로세스에 앞서 결정된다. 일부 실시형태들에서, 단 방향 움직임 벡터는 DMVR(Decoder-side Motion Vector Refinement) 프로세스에 앞서 결정된다. 일부 실시형태들에서, DMVR 프로세스는 단 방향 움직임 벡터에 기초하여 이후 디스에이블된다.In some embodiments, the unidirectional motion vector is determined prior to the PROF (Prediction Refinement with Optical Flow) process. In some embodiments, the unidirectional motion vector is determined prior to the DMVR (Decoder-side Motion Vector Refinement) process. In some embodiments, the DMVR process is subsequently disabled based on the unidirectional motion vector.
일부 실시형태들에서, 블록 차원의 조건은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2임을 지시하고, T1 및 T2 는 양의 정수이다. 일부 실시형태들에서, 블록 차원의 조건은 현재 블록의 너비가 T2이고 현재 블록의 높이가 T1임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 블록 차원의 조건은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2 이하임을 지시하고, T1 및 T2는 양의 정수이다. 일부 실시예들에서, 블록 차원의 조건은 현재 블록의 너비가 T2이고 현재 블록의 높이가 T1 이하임을 지시하고, T1 및 T2는 양의 정수이다. In some embodiments, the block-dimensional condition indicates that the width of the current block is T1 and the height of the current block is T2, where T1 and T2 are positive integers. In some embodiments, the block-dimensional condition indicates that the width of the current block is T2 and the height of the current block is T1, where T1 and T2 are positive integers. In some embodiments, the block-dimensional condition indicates that the width of the current block is T1 and the height of the current block is less than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the block-dimensional condition indicates that the width of the current block is T2 and the height of the current block is less than or equal to T1, where T1 and T2 are positive integers.
도 36은 본 발명에 따르는 비디오 처리를 위한 방법(3600)의 흐름도 표현이다. 이러한 방법(3600)은, 동작 3602에서, 비디오의 현재 블록 및 비디오의 비트스트림 표현 간의 변환을 위해 현재 블록의 움직임 후보를 현재 블록의 차원에 기반한 단 방향 예측 후보로 제한하도록 결정하는 단계를 포함한다. 이러한 방법(3600)은, 동작 3604에서, 이러한 결정에 기초하여 변환을 수행하는 단계를 포함한다. FIG. 36 is a flowchart representation of a method (3600) for video processing according to the present invention. The method (3600) includes, at operation 3602, determining that motion candidates of a current block are limited to unidirectional prediction candidates based on dimensions of the current block for transformation between a current block of video and a bitstream representation of the video. The method (3600) includes, at operation 3604, performing a transformation based on the determination.
일부 실시형태들에서, 현재 블록의 차원이 조건을 만족하는 경우, 현재 블록의 모든 움직임 후보들은 양 방향 예측 후보들로 제한된다. 일부 실시형태들에서, 양 방향 움직임 후보는 현재 블록의 차원이 조건을 만족하는 경우 단 방향 예측 후보로 변환된다. 일부 실시형태들에서, 현재 블록의 차원은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2임을 지시하며, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 블록 차원의 조건은 현재 블록의 너비가 T2이고 현재 블록의 높이가 T1임을 지시하되, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 블록 차원의 조건은 현재 블록의 너비가 T1이고 현재 블록의 높이가 T2 이하임을 지시하며, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, 현재 블록의 차원은 현재 블록의 너비가 T2이고, 현재 블록의 높이가 T1 이하임을 지시하되, T1 및 T2는 양의 정수이다. 일부 실시형태들에서, T1은 4이고 T2는 8이다. 일부 실시 형태들에서, T1은 4이고 T2는 4이다. 일부 실시형태들에서, T1는 8이고 T2도 8이다. In some embodiments, if the dimension of the current block satisfies the condition, all motion candidates of the current block are restricted to bidirectional prediction candidates. In some embodiments, the bidirectional motion candidates are converted to unidirectional prediction candidates if the dimension of the current block satisfies the condition. In some embodiments, the dimension of the current block indicates that the width of the current block is T1 and the height of the current block is T2, where T1 and T2 are positive integers. In some embodiments, the condition on the block dimension indicates that the width of the current block is T2 and the height of the current block is T1, where T1 and T2 are positive integers. In some embodiments, the condition on the block dimension indicates that the width of the current block is T1 and the height of the current block is less than or equal to T2, where T1 and T2 are positive integers. In some embodiments, the dimension of the current block indicates that the width of the current block is T2 and the height of the current block is less than or equal to T1, where T1 and T2 are positive integers. In some embodiments, T1 is 4 and T2 is 8. In some embodiments, T1 is 4 and T2 is 4. In some embodiments, T1 is 8 and T2 is also 8.
일부 실시형태들에서는, 전술된 방법에서 상기 변환을 수행하는 것은, 비트스트림 표현을 상기 비디오의 현재 블록에 기반하여 생성하는 것을 포함한다. 일부 실시형태들에서는, 전술된 방법에서 상기 변환을 수행하는 것은, 상기 비디오의 현재 블록을 상기 비트스트림 표현으로부터 생성하는 것을 포함한다.In some embodiments, performing the transformation in the method described above comprises generating a bitstream representation based on a current block of the video. In some embodiments, performing the transformation in the method described above comprises generating a current block of the video from the bitstream representation.
본 문서에서, “비디오 처리(video processing)”이라는 용어는 비디오 인코딩, 비디오 디코딩, 비디오 압축 혹은 비디오 압축 해제를 지시할 수 있다. 예를 들어, 비디오 압축 알고리즘은 비디오의 픽셀 표현에서 대응하는 비트스트림 표현으로 또는 그 반대로 변환하는 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에서 정의된 바와 같이, 비트스트림 내에서 동일 위치(co-located) 비트들에 대응되거나 다른 위치들에 확산될 수 있다. 예를 들어, 매크로블록은 변환 및 코딩된 오류 잔차 값들의 관점에서 인코딩될 수 있으며, 헤더의 비트들 혹은 비트스트림에서의 다른 필드들을 이용하여 인코딩될 수 있다. 또한, 변환 동안, 디코더는 상술한 솔루션에서 설명된 바와 같이 결정에 기초하여 일부 필드가 존재하거나 존재하지 않을 수 있다는 지식으로 비트스트림을 파싱할 수 있다. 유사하게, 인코더는 특정 신택스 필드들이 포함되는지 혹은 포함되지 않는지를 결정할 수 있으며, 비트스트림 표현으로부터 신택스 필드들을 포함하거나 제외함으로써 그에 따라 비트스트림 표현을 생성할 수 있다. In this document, the term “video processing” may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied during the conversion from a pixel representation of the video to a corresponding bitstream representation or vice versa. The bitstream representation of the current video block may correspond to co-located bits in the bitstream, or may be spread over different locations, as defined in the syntax, for example. For example, a macroblock may be encoded in terms of transformed and coded error residual values, and may be encoded using bits in a header or other fields in the bitstream. Additionally, during the conversion, the decoder may parse the bitstream with the knowledge that some fields may or may not be present based on the decisions made in the solution described above. Similarly, the encoder may determine whether certain syntax fields are included or not, and may generate the bitstream representation accordingly by including or excluding the syntax fields from the bitstream representation.
본 명세서에서 설명되는, 개시된 솔루션, 예, 실시형태, 모듈 및 기능적 동작 및 그 이외의 솔루션, 예, 실시형태, 모듈 및 기능적 동작은, 디지털 전자 회로로, 또는 본 명세서에서 개시되는 구조체 및 그들의 구조적 균등물을 포함하는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나의 이상의 조합으로 구현될 수 있다. 개시된 실시형태 및 그 외의 실시형태들은, 하나 이상의 컴퓨터 프로그램 제품으로서, 예를 들어 데이터 처리 장치에 의해 실행되거나 그 동작을 제어하기 위한, 컴퓨터-판독가능 매체 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터-판독가능 매체는 머신-판독가능 저장 디바이스, 머신-판독가능 저장 기재, 메모리 디바이스, 머신-판독가능한 전파된 신호에 영향을 주는 물질의 조합, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치"는, 예를 들어 프로그래밍가능한 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하는, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 머신을 망라한다. 이러한 장치는 하드웨어에 추가하여, 관심 대상인 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 적절한 수신기 장치로 송신되기 위한 정보를 인코딩하기 위하여 생성되는, 머신에 의해 생성된 전기적, 광학적, 또는 전자기적 신호이다.The disclosed solutions, examples, embodiments, modules and functional operations and other solutions, examples, embodiments, modules and functional operations described herein may be implemented as digital electronic circuits, or as computer software, firmware, or hardware including the structures disclosed herein and their structural equivalents, or as a combination of one or more of these. The disclosed embodiments and other embodiments may be implemented as one or more computer program products, for example, as one or more modules of computer program instructions encoded on a computer-readable medium for execution by or controlling the operation of a data processing apparatus. The computer-readable medium may be a machine-readable storage device, a machine-readable storage substrate, a memory device, a combination of materials for affecting a machine-readable propagated signal, or a combination of one or more of these. The term "data processing apparatus" encompasses any apparatus, device, or machine for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, such devices may include code that creates an execution environment for the computer program of interest, for example, code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. A propagated signal is an artificially generated signal, for example, an electrical, optical, or electromagnetic signal generated by a machine that encodes information to be transmitted to a suitable receiver device.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려져 있음)은 컴파일되거나 해석된 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 이것은 독립형 프로그램과 같은 또는 컴퓨팅 환경에서 사용되기에 적합한 모듈, 성분, 서브루틴, 또는 다른 유닛과 같은 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 반드시 파일 시스템 내의 파일에 대응하는 것은 아니다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트) 내에, 문제가 되는 프로그램 전용의 단일 파일 내에, 또는 여러 개의 조율된 파일들)예를 들어, 하나 이상의 모듈, 서브-프로그램, 또는 코드의 일부를 저장하는 파일) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치되거나 여러 사이트들에 걸쳐서 분산되고 통신 네트워크에 의하여 상호연결되는 여러 컴퓨터들 상에서 실행되도록 구현될 수 있다.A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, and may be deployed in any form, such as a stand-alone program, or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored within a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), within a single file dedicated to the program in question, or within a number of coordinated files (e.g., a file that stores one or more modules, sub-programs, or portions of code). A computer program may be implemented to be executed on a single computer, or on multiple computers located at a single site or distributed across multiple sites and interconnected by a communications network.
본 명세서에서 설명되는 프로세스 및 로직 흐름은 입력 데이터 상에 작용하여 출력을 생성함으로써 기능을 수행하기 위한 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능한 프로세서에 의하여 수행될 수 있다. 또한 프로세스 및 로직 흐름은 특수 목적 로직 회로부, 예를 들어 FPGA(field programmable gate array), 또는 ASIC(application-상세 integrated circuit)에 의하여 수행될 수 있으며, 장치는 또한 이러한 것으로서 구현될 수 있다.The processes and logic flows described herein can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. Additionally, the processes and logic flows can be performed by, and devices can also be implemented as, special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC).
컴퓨터 프로그램을 실행하기에 적합한 프로세서는, 예를 들어 범용 및 주문형 마이크로프로세서 양자 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 이들 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 본질적인 요소는 명령을 수행하기 위한 프로세서 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기적, 자기-광학적 디스크, 또는 광학적 디스크를 더욱 포함하거나, 이것으로부터 데이터를 수신하거나 이것으로 데이터를 전송하거나, 또는 이들 모두를 하기 위하여 이것에 동작가능하도록 커플링될 것이다. 그러나, 컴퓨터는 이러한 디바이스를 가져야 하는 것은 아니다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는, 예를 들자면 반도체 메모리 디바이스, 예를 들어 EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기적 디스크, 예를 들어 내부 하드 디스크 또는 착탈식 디스크; 자기-광학적 디스크; 및 CD-ROM 및 DVD 디스크를 포함하는 비-휘발성 메모리, 미디어 및 메모리 디바이스의 모든 형태를 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로부에 의하여 보충되거나 그 내부에 통합될 수 있다.Processors suitable for executing a computer program include, for example, both general-purpose and application-specific microprocessors, and any one or more processors of any type of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. Essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Typically, the computer will further include, or be operatively coupled to, one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, or to receive data from or transfer data to or from such devices. However, the computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include, for example, semiconductor memory devices, such as EPROMs, EEPROMs, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and all forms of non-volatile memory, media, and memory devices, including CD-ROMs and DVD disks. The processor and memory may be supplemented by, or incorporated within, special purpose logic circuitry.
본 특허 명세서가 많은 특징을 포함하고 있지만, 이들은 임의의 기술 요지 또는 청구될 내용의 범위를 한정하는 것으로 해석되어서는 안 되고, 오히려 특정 기법의 특정 실시형태들에 특유할 수 있는 특징들의 설명으로서 해석되어야 한다. 본 특허 명세서에서 별개의 실시형태들의 콘텍스트에서 설명되는 일부 특징들은, 단일 실시형태 내에 조합되어 구현될 수도 있다. 반대로, 단일 실시예의 콘텍스트에서 설명되는 다양한 특징들은 또한 따로따로 다수의 실시예들에서 또는 임의의 적합한 서브컴비네이션에서 구현될 수 있다. 더구나, 비록 특징들이 특정한 조합들로 작용하는 것으로 위에서 설명될 수도 있고 그와 같이 처음에 청구된 경우에도, 청구된 조합들로부터의 하나 이상의 특징들은 일부 경우들에서 조합으로부터 삭제될 수 있고, 청구된 조합은 서브컴비네이션 또는 서브컴비네이션의 변형예를 위한 것일 수도 있다.While this patent specification contains many features, they should not be construed as limiting any subject matter or the scope of what may be claimed, but rather as descriptions of features that may be unique to particular embodiments of a particular technology. Some features that are described in this patent specification in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment may also be implemented separately in multiple embodiments or in any suitable subcombination. Furthermore, even if features may be described above and initially claimed as acting in particular combinations, one or more features of the claimed combinations may in some cases be excised from the combination, and the claimed combination may be intended to be a subcombination or a variation of a subcombination.
이와 유사하게, 동작들이 도면들에서 특정한 순서로 묘사되는 반면에, 원하는 결과들을 획득하기 위하여 이러한 동작들이 도시된 특정한 순서로 또는 순차적인 순서로 수행되어야 하거나, 또는 도시된 모든 동작들이 수행되어야 한다고 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 명세서에서 설명되는 실시형태들 내의 다양한 시스템 성분들을 분리하는 것은, 모든 실시형태에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.Similarly, while operations are depicted in the drawings in a particular order, this should not be construed as requiring that these operations be performed in the particular order illustrated or in sequential order, or that all of the illustrated operations be performed, to achieve desired results. Moreover, the separation of various system components within the embodiments described in this patent specification should not be construed as requiring such separation in all embodiments.
몇 가지의 구현형태와 예들만이 설명되고, 다른 구현형태, 개선형태, 및 변형예들이 본 특허 명세서에서 설명되고 예시된 것에 기반하여 이루어질 수 있다.Only a few implementations and examples are described, and other implementations, improvements, and variations may be made based on what is described and illustrated in this patent specification.
Claims (54)
비디오의 현재 블록과 상기 비디오의 비트스트림 간의 변환을 위해, 상기 현재 블록의 크기와 관련된 동일 차원 조건(dimension condition)이 만족하는지 여부에 근거하여 상기 현재 블록의 복수 플래그 (multiple flags)가 상기 비트스트림내에 존재하는지 여부를 결정하는 단계; 및
상기 결정에 기초하여 상기 변환을 수행하는 단계;를 포함하되,
상기 현재 블록을 위해 스킵 모드가 사용되는지 여부를 지시하는 스킵 플래그(skip flag) 및 상기 현재 블록을 위해 인터 예측 모드가 사용되는지 여부를 지시하는 플래그가 상기 비트스트림내에 존재하는 지 여부는, 상기 현재 블록의 폭이 4와 동일하고 상기 현재 블록의 높이가 각각 4와 동일함을 나타내는 상기 동일 차원 조건에 기반하고,
상기 현재 블록의 폭 및 높이의 합이 12 인 경우에 대응하여, 인터 예측 방향 플래그 코딩을 위해 사용된 콘텍스트 증가분 (context increasement)은 상기 현재 블록의 폭의 함수 또는 높이의 함수가 아닌 고정된 정수와 동일하고,
상기 현재 블록의 크기가 8x4 또는 4x8 인 경우에 대응하여, 상기 현재 블록을 위해 가중치 인덱스(weight index)를 0 으로 설정하되, 상기 가중치 인덱스는 리스트 0 및 리스트 1의 예측 샘플들로부터 가중치 합을 생성하기 위해 설정된 가중치 세트로부터 가중치를 찾기 위해 사용되는, 비디오 처리 방법.
In a video processing method,
For conversion between a current block of a video and a bitstream of the video, a step of determining whether multiple flags of the current block exist in the bitstream based on whether a same dimension condition related to the size of the current block is satisfied; and
A step of performing the conversion based on the above decision; Including,
Whether a skip flag indicating whether skip mode is used for the current block and a flag indicating whether inter prediction mode is used for the current block exist in the bitstream is based on the same dimension condition indicating that the width of the current block is equal to 4 and the height of the current block is equal to 4 respectively.
In the case where the sum of the width and height of the current block is 12, the context increasement used for inter prediction direction flag coding is equal to a fixed integer that is not a function of the width or height of the current block,
A video processing method, wherein, when the size of the current block is 8x4 or 4x8, a weight index is set to 0 for the current block, and the weight index is used to find a weight from a set of weights set to generate a weighted sum from prediction samples of list 0 and list 1.
상기 스킵 플래그 값이 1인 경우에 대응하여, 머지 데이터 신택스 구조 (merge data syntax structure)는 상기 비트스트림내에 포함되지 않는, 비디오 처리 방법. In paragraph 1,
A video processing method, wherein a merge data syntax structure is not included in the bitstream when the skip flag value is 1.
상기 복수 플래그는 상기 현재 블록을 위해 인트라 블록 카피 모드(intra block copy mode)가 사용되는지 여부를 지시하는 인트라 블록 카피 플래그(intra block copy flag)를 포함하되, 상기 인트라 블록 카피 플래그가 상기 비트스트림내에 존재하는지 여부는 상기 동일 차원 조건에 기반하는, 비디오 처리 방법.
In paragraph 1,
A video processing method, wherein the plurality of flags includes an intra block copy flag indicating whether an intra block copy mode is used for the current block, wherein whether the intra block copy flag exists in the bitstream is based on the same dimension condition.
상기 동일 차원 조건을 만족하고 상기 스킵 플래그 값이 1인 경우에 대응하여, 상기 인트라 블록 카피 플래그는 상기 비트스트림내에 존재하지 않는, 비디오 처리 방법.
In the third paragraph,
A video processing method, wherein, when the above same dimension condition is satisfied and the skip flag value is 1, the intra block copy flag does not exist in the bitstream.
상기 인트라 블록 카피 플래그는, 코딩 유닛 레벨(coding unit level) 플래그에 해당하는 pred_mode_ibc_flag 인, 비디오 처리 방법.
In paragraph 4,
A video processing method, wherein the intra block copy flag is a pred_mode_ibc_flag corresponding to a coding unit level flag.
상기 동일 차원 조건을 만족하고 전체 비디오 시퀀스를 위해 인트라 블록 카피 모드가 허용되지 않음을 지시하는 비디오 시퀀스 레벨 플래그(video sequence level flag) 값에 대응하여, 상기 스킵 플래그는 상기 비트스트림내에 존재하지 않는, 비디오 처리 방법.
In paragraph 1,
A video processing method, wherein the skip flag is not present in the bitstream, corresponding to a video sequence level flag value that satisfies the above same dimension condition and indicates that intra block copy mode is not allowed for the entire video sequence.
상기 비디오 시퀀스 레벨 플래그는 sps_ibc_enabled_flag 인, 비디오 처리 방법. In paragraph 6,
The above video sequence level flag is sps_ibc_enabled_flag, a video processing method.
상기 복수 플래그는 상기 현재 블록을 위해 삼각 모드(triangle mode)가 사용되는지 여부와 관련된 플래그를 포함하는, 비디오 처리 방법.
In paragraph 1,
A video processing method, wherein the plurality of flags includes a flag related to whether triangle mode is used for the current block.
상기 인터 예측 방향 플래그는, 리스트 0, 리스트 1, 또는 양방향 예측이 상기 현재 블록을 위해 사용되는지 여부를 지시하기 위해 사용되는, 비디오 처리 방법.
In paragraph 1,
A video processing method wherein the above inter prediction direction flag is used to indicate whether list 0, list 1, or bidirectional prediction is used for the current block.
만약 상기 현재 블록의 크기가 8x4 또는 4x8 인 경우에 대응하여, 상기 현재 블록을 위해 상기 양방향 예측이 사용되지 않는, 비디오 처리 방법.
In Article 9,
A video processing method, wherein the bidirectional prediction is not used for the current block if the size of the current block is 8x4 or 4x8.
상기 변환은 상기 현재 블록을 상기 비트스트림으로 인코딩하는 것을 포함하는, 비디오 처리 방법.
In paragraph 1,
A video processing method, wherein said transform comprises encoding said current block into said bitstream.
상기 변환은 상기 비트스트림으로부터 상기 현재 블록을 디코딩하는 것을 포함하는, 비디오 처리 방법.
In paragraph 1,
A video processing method, wherein the transform comprises decoding the current block from the bitstream.
비디오의 현재 블록과 상기 비디오의 비트스트림 간의 변환을 위해, 상기 현재 블록의 크기와 관련된 동일 차원 조건(dimension condition)이 만족하는지 여부에 근거하여 상기 현재 블록의 복수 플래그 (multiple flags)가 상기 비트스트림내에 존재하는지 여부를 결정하게 하고, 및
상기 결정에 기초하여 상기 변환을 수행하게 하되,
상기 현재 블록을 위해 스킵 모드가 사용되는지 여부를 지시하는 스킵 플래그(skip flag) 및 상기 현재 블록을 위해 인터 예측 모드가 사용되는지 여부를 지시하는 플래그가 상기 비트스트림내에 존재하는 지 여부는, 상기 현재 블록의 폭이 4와 동일하고 상기 현재 블록의 높이가 각각 4와 동일함을 나타내는 상기 동일 차원 조건에 기반하고,
상기 현재 블록의 폭 및 높이의 합이 12 인 경우에 대응하여, 인터 예측 방향 플래그 코딩을 위해 사용된 콘텍스트 증가분 (context increasement)은 상기 현재 블록의 폭의 함수 또는 높이의 함수가 아닌 고정된 정수와 동일하고,
상기 현재 블록의 크기가 8x4 또는 4x8 인 경우에 대응하여, 상기 현재 블록을 위해 가중치 인덱스(weight index)를 0 으로 설정하되, 상기 가중치 인덱스는 리스트 0 및 리스트 1의 예측 샘플들로부터 가중치 합을 생성하기 위해 설정된 가중치 세트로부터 가중치를 찾기 위해 사용되는, 비디오 데이터 처리 장치.
In a video data processing device including a processor and a non-transitory memory including instructions, the instructions, when executed by the processor, cause the processor to:
For conversion between a current block of a video and a bitstream of the video, it is determined whether multiple flags of the current block exist in the bitstream based on whether a same dimension condition related to the size of the current block is satisfied, and
The above conversion is performed based on the above decision,
Whether a skip flag indicating whether skip mode is used for the current block and a flag indicating whether inter prediction mode is used for the current block exist in the bitstream is based on the same dimension condition indicating that the width of the current block is equal to 4 and the height of the current block is equal to 4 respectively.
In the case where the sum of the width and height of the current block is 12, the context increasement used for inter prediction direction flag coding is equal to a fixed integer that is not a function of the width or height of the current block,
A video data processing device, wherein, when the size of the current block is 8x4 or 4x8, a weight index is set to 0 for the current block, and the weight index is used to find a weight from a set of weights for generating a weighted sum from prediction samples of list 0 and list 1.
비디오의 현재 블록과 상기 비디오의 비트스트림 간의 변환을 위해, 상기 현재 블록의 크기와 관련된 동일 차원 조건(dimension condition)이 만족하는지 여부에 근거하여 상기 현재 블록의 복수 플래그 (multiple flags)가 상기 비트스트림내에 존재하는지 여부를 결정하게 하고, 및
상기 결정에 기초하여 상기 변환을 수행하게 하되,
상기 현재 블록을 위해 스킵 모드가 사용되는지 여부를 지시하는 스킵 플래그(skip flag) 및 상기 현재 블록을 위해 인터 예측 모드가 사용되는지 여부를 지시하는 플래그가 상기 비트스트림내에 존재하는 지 여부는, 상기 현재 블록의 폭이 4와 동일하고 상기 현재 블록의 높이가 각각 4와 동일함을 나타내는 상기 동일 차원 조건에 기반하고,
상기 현재 블록의 폭 및 높이의 합이 12 인 경우에 대응하여, 인터 예측 방향 플래그 코딩을 위해 사용된 콘텍스트 증가분 (context increasement)은 상기 현재 블록의 폭의 함수 또는 높이의 함수가 아닌 고정된 정수와 동일하고,
상기 현재 블록의 크기가 8x4 또는 4x8 인 경우에 대응하여, 상기 현재 블록을 위해 가중치 인덱스(weight index)를 0 으로 설정하되, 상기 가중치 인덱스는 리스트 0 및 리스트 1의 예측 샘플들로부터 가중치 합을 생성하기 위해 설정된 가중치 세트로부터 가중치를 찾기 위해 사용되는, 비 일시적 컴퓨터 판독 가능한 저장 매체.
In a non-transitory computer-readable storage medium storing instructions, the instructions cause a processor to:
For conversion between a current block of a video and a bitstream of the video, it is determined whether multiple flags of the current block exist in the bitstream based on whether a same dimension condition related to the size of the current block is satisfied, and
The above conversion is performed based on the above decision,
Whether a skip flag indicating whether skip mode is used for the current block and a flag indicating whether inter prediction mode is used for the current block exist in the bitstream is based on the same dimension condition indicating that the width of the current block is equal to 4 and the height of the current block is equal to 4 respectively.
In the case where the sum of the width and height of the current block is 12, the context increasement used for inter prediction direction flag coding is equal to a fixed integer that is not a function of the width or height of the current block,
A non-transitory computer-readable storage medium, wherein a weight index is set to 0 for the current block when the size of the current block is 8x4 or 4x8, and the weight index is used to find a weight from a set of weights for generating a weighted sum from prediction samples of list 0 and list 1.
비디오의 현재 블록과 상기 비디오의 비트스트림 간의 변환을 위해, 상기 현재 블록의 크기와 관련된 동일 차원 조건(dimension condition)이 만족하는지 여부에 근거하여 상기 현재 블록의 복수 플래그 (multiple flags)가 상기 비트스트림내에 존재하는지 여부를 결정하는 단계;
상기 결정에 기초하여 상기 비트스트림을 생성하는 단계; 및
상기 비트스트림을 비 일시적 컴퓨터 판독 가능한 기록 매체에 저장하는 단계를 포함하되,
상기 현재 블록을 위해 스킵 모드가 사용되는지 여부를 지시하는 스킵 플래그(skip flag) 및 상기 현재 블록을 위해 인터 예측 모드가 사용되는지 여부를 지시하는 플래그가 상기 비트스트림내에 존재하는 지 여부는, 상기 현재 블록의 폭이 4와 동일하고 상기 현재 블록의 높이가 각각 4와 동일함을 나타내는 상기 동일 차원 조건에 기반하고,
상기 현재 블록의 폭 및 높이의 합이 12 인 경우에 대응하여, 인터 예측 방향 플래그 코딩을 위해 사용된 콘텍스트 증가분 (context increasement)은 상기 현재 블록의 폭의 함수 또는 높이의 함수가 아닌 고정된 정수와 동일하고,
상기 현재 블록의 크기가 8x4 또는 4x8 인 경우에 대응하여, 상기 현재 블록을 위해 가중치 인덱스(weight index)를 0 으로 설정하되, 상기 가중치 인덱스는 리스트 0 및 리스트 1의 예측 샘플들로부터 가중치 합을 생성하기 위해 설정된 가중치 세트로부터 가중치를 찾기 위해 사용되는, 비 일시적 컴퓨터 판독 가능한 기록 매체.A non-transitory computer-readable recording medium storing a bitstream of a video generated by a method performed by a video processing device, the method comprising:
A step of determining whether multiple flags of the current block exist in the bitstream based on whether a same dimension condition related to the size of the current block is satisfied, for conversion between a current block of a video and a bitstream of the video;
a step of generating the bitstream based on the above decision; and
Comprising the step of storing the above bitstream in a non-transitory computer-readable recording medium,
Whether a skip flag indicating whether skip mode is used for the current block and a flag indicating whether inter prediction mode is used for the current block exist in the bitstream is based on the same dimension condition indicating that the width of the current block is equal to 4 and the height of the current block is equal to 4 respectively.
In the case where the sum of the width and height of the current block is 12, the context increasement used for inter prediction direction flag coding is equal to a fixed integer that is not a function of the width or height of the current block,
A non-transitory computer-readable recording medium, wherein, when the size of the current block is 8x4 or 4x8, a weight index is set to 0 for the current block, and the weight index is used to find a weight from a set of weights for generating a weighted sum from prediction samples of list 0 and list 1.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CNPCT/CN2019/077179 | 2019-03-06 | ||
| CN2019077179 | 2019-03-06 | ||
| PCT/CN2020/078108 WO2020177756A1 (en) | 2019-03-06 | 2020-03-06 | Size dependent inter coding |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20210131347A KR20210131347A (en) | 2021-11-02 |
| KR102747568B1 true KR102747568B1 (en) | 2024-12-27 |
Family
ID=78124310
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020217027315A Active KR102747568B1 (en) | 2019-03-06 | 2020-03-06 | Intercoding by size |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP3915251A4 (en) |
| JP (1) | JP7192145B2 (en) |
| KR (1) | KR102747568B1 (en) |
| CN (1) | CN113545038B (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12348760B2 (en) | 2018-11-20 | 2025-07-01 | Beijing Bytedance Network Technology Co., Ltd. | Coding and decoding of video coding modes |
| US12432355B2 (en) | 2018-11-12 | 2025-09-30 | Beijing Bytedance Network Technology Co., Ltd. | Using combined inter intra prediction in video processing |
| US12477106B2 (en) | 2018-10-22 | 2025-11-18 | Beijing Bytedance Network Technology Co., Ltd. | Sub-block based prediction |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA3143538C (en) * | 2019-06-14 | 2024-10-15 | Lg Electronics Inc. | Image decoding method and device for deriving weight index information for generation of prediction sample |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2013111596A1 (en) * | 2012-01-26 | 2013-08-01 | パナソニック株式会社 | Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding and decoding device |
| US9591312B2 (en) * | 2012-04-17 | 2017-03-07 | Texas Instruments Incorporated | Memory bandwidth reduction for motion compensation in video coding |
| JPWO2015056719A1 (en) * | 2013-10-16 | 2017-03-09 | シャープ株式会社 | Image decoding apparatus and image encoding apparatus |
| US10785486B2 (en) * | 2014-06-19 | 2020-09-22 | Microsoft Technology Licensing, Llc | Unified intra block copy and inter prediction modes |
| US10327002B2 (en) * | 2014-06-19 | 2019-06-18 | Qualcomm Incorporated | Systems and methods for intra-block copy |
| US9918105B2 (en) * | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
| US10200713B2 (en) * | 2015-05-11 | 2019-02-05 | Qualcomm Incorporated | Search region determination for inter coding within a particular picture of video data |
| WO2016200100A1 (en) * | 2015-06-10 | 2016-12-15 | 삼성전자 주식회사 | Method and apparatus for encoding or decoding image using syntax signaling for adaptive weight prediction |
| CA2993104C (en) * | 2015-07-27 | 2021-03-02 | Mediatek, Inc. | Method of system for video coding using intra block copy mode |
| EP3301920A1 (en) * | 2016-09-30 | 2018-04-04 | Thomson Licensing | Method and apparatus for coding/decoding omnidirectional video |
-
2020
- 2020-03-06 CN CN202080019119.7A patent/CN113545038B/en active Active
- 2020-03-06 EP EP20766860.9A patent/EP3915251A4/en active Pending
- 2020-03-06 KR KR1020217027315A patent/KR102747568B1/en active Active
- 2020-03-06 JP JP2021549769A patent/JP7192145B2/en active Active
Non-Patent Citations (2)
| Title |
|---|
| Benjamin Bross, et al. Versatile Video Coding(Draft 5), Joint Video exploration Team(JVET), JVET-N1001-v6, 2019-05-23, pp. 1-385* |
| Ru-Ling Liao, et al. CE4: Motion compensation constraints for complexity reduction(test4.5.1 and test 4.5.2), Joint Video exploration Team(JVET), JVET-M0313_r1, 2019-01-08, pp 1-8 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12477106B2 (en) | 2018-10-22 | 2025-11-18 | Beijing Bytedance Network Technology Co., Ltd. | Sub-block based prediction |
| US12432355B2 (en) | 2018-11-12 | 2025-09-30 | Beijing Bytedance Network Technology Co., Ltd. | Using combined inter intra prediction in video processing |
| US12348760B2 (en) | 2018-11-20 | 2025-07-01 | Beijing Bytedance Network Technology Co., Ltd. | Coding and decoding of video coding modes |
Also Published As
| Publication number | Publication date |
|---|---|
| JP7192145B2 (en) | 2022-12-19 |
| CN113545038B (en) | 2023-10-24 |
| JP2022522149A (en) | 2022-04-14 |
| EP3915251A1 (en) | 2021-12-01 |
| CN113545038A (en) | 2021-10-22 |
| KR20210131347A (en) | 2021-11-02 |
| EP3915251A4 (en) | 2022-03-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7707243B2 (en) | Simplifying Inter-Intra Complex Prediction | |
| KR102635518B1 (en) | Use of converted single prediction candidates | |
| JP7182000B2 (en) | Weights in inter-intra combined prediction mode | |
| KR102747568B1 (en) | Intercoding by size | |
| WO2020192643A1 (en) | Derivation of converted uni-prediction candidate | |
| KR102926243B1 (en) | Inter and intra integrated prediction mode weights |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0105 | International application |
Patent event date: 20210826 Patent event code: PA01051R01D Comment text: International Patent Application |
|
| PG1501 | Laying open of application | ||
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20230208 Comment text: Request for Examination of Application |
|
| A302 | Request for accelerated examination | ||
| PA0302 | Request for accelerated examination |
Patent event date: 20240507 Patent event code: PA03022R01D Comment text: Request for Accelerated Examination |
|
| PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20240925 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20241223 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20241223 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration |