Clipping during reference image resampling

By enabling DMVR and RPR technologies in video encoding and decoding, the resolution of video blocks is dynamically adjusted to match the resolution of the reference picture, and integer sample point cutting is solved, and the problem of inefficient video processing at different resolutions in the prior art is achieved, achieving more efficient resource usage and performance improvement.

CN114287135BActive Publication Date: 2025-03-25DOUYIN VISION CO LTD +1
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080059745.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-12-30
Filing Date
2020-08-24
Publication Date
2025-03-25
Estimated Expiration
2040-08-24

AI Technical Summary

Technical Problem

Existing video encoding and decoding technologies are difficult to effectively process videos and images with different resolutions, resulting in inefficient encoding and decoding and waste of resources.

Method used

A video processing method is proposed, by enabling the decoder-side motion vector refinement (DMVR) tool and reference picture surround (RPR) technology during video encoding and decoding, dynamically adjusting the resolution of the video block to match the resolution of the reference picture, and performing integer sample point cut operations if necessary.

Benefits of technology

Through dynamic resolution adjustment and integer sample point cutting, the efficiency of video encoding and decoding is improved, bandwidth requirements are reduced, resource usage is optimized, and video processing performance is improved.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114287135B_ABST
    Figure CN114287135B_ABST
Patent Text Reader

Abstract

A video processing method, comprising: making a first determination as to whether a decoder-side motion vector refinement (DMVR) tool is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination according to a rule as to whether or how to clip motion vectors according to a clipping block for reference sample filling in a reference picture used to determine a prediction block for the current block; and performing the conversion based on the first determination and the second determination. The DMVR tool is used to refine the coded motion vectors from the codec representation before being used to determine the prediction block.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This is the national phase of International Patent Application No. PCT / CN2020 / 110768 filed on August 24, 2020, which timely claims priority to and the benefit of International Patent Application No. PCT / CN2019 / 102289 filed on August 23, 2019, No. PCT / CN2019 / 112820 filed on October 23, 2019, and No. PCT / CN2019 / 129959 filed on December 30, 2019. The entire disclosure of the above applications is incorporated by reference as part of the disclosure of this application. Technical Field

[0003] This patent document relates to video encoding and decoding. Background Art

[0004] Despite advances in video compression, digital video remains the largest bandwidth consumer on the Internet and other digital communications networks. As the number of connected user devices capable of receiving and displaying video increases, bandwidth requirements for digital video usage are expected to continue to grow. Summary of the invention

[0005] Devices, systems and methods related to digital video coding and decoding, and more particularly to video and image coding and decoding in which a current picture and a reference picture have different sizes or resolutions.

[0006] In one example aspect, a video processing method is disclosed. The method includes: making a first determination as to whether a decoder-side motion vector refinement (DMVR) tool is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination according to a rule as to whether or how to clip a motion vector according to a bounding block for reference sample filling in a reference picture used to determine a prediction block for the current block; and performing the conversion based on the first determination and the second determination; wherein the DMVR tool is used to refine the coded motion vector from the codec representation before being used to determine the prediction block.

[0007] In another example aspect, another video processing method is disclosed. The method includes: making a first determination as to whether reference picture warping is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination according to a rule as to whether or how to clip a motion vector according to a clipping block for reference sample filling in a reference picture used to determine a prediction block of the current block; and performing the conversion based on the first determination and the second determination.

[0008] In another example aspect, another video processing method is disclosed. The method includes: making a first determination as to whether a codec tool is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination according to a rule as to whether or how to clip chroma or luma samples to integer positions in a reference picture used to determine a prediction block for the current block; and performing the conversion based on the first determination and the second determination.

[0009] In another example aspect, another video processing method is disclosed. The method includes: for conversion between a video including a current picture including a current block and a codec representation of the video, determining whether to perform an integer sample clipping operation when generating a prediction block for the current block from one or more reference pictures from two reference picture lists; and performing the conversion based on the determination, wherein a rule is based on a first size associated with the current picture and / or a second size associated with the one or more reference pictures in the two reference picture lists, or whether decoder-side motion vector refinement (DMVR) is enabled, wherein in the DMVR, a motion vector encoded in the codec representation is refined before generating the prediction block.

[0010] In another example aspect, another video processing method is disclosed. The method includes: for a conversion between a video including a current picture including a current block and a codec representation of the video, deriving, according to a rule, a top left coordinate of a bounding box for reference signal filling in a reference picture used to determine a prediction block of the current block; and performing the conversion based on the derivation, wherein the rule is based on a dimension of the current picture or a dimension of the reference picture.

[0011] In another example aspect, another video processing method is disclosed. The method includes: for a conversion between a video including a current picture including a current block and a codec representation of the video, determining whether to perform an integer sample clipping operation when generating a prediction block of the current block from a reference picture; and performing the conversion based on the determination, wherein a rule is based on a first size associated with the current picture and / or a second size associated with the reference picture.

[0012] In yet another representative aspect, the above method is implemented in the form of processor executable code and stored in a computer readable program medium.

[0013] In yet another representative aspect, a device is disclosed, which is configured or operable to perform the above method. The device may include a processor programmed to implement the method.

[0014] In yet another representative aspect, a video decoder device can implement the method as described herein.

[0015] In another example aspect, a computer-readable storage medium is disclosed. The medium includes a codec representation of a video, the codec representation generated according to the method described herein.

[0016] The above-described aspects, as well as other aspects and features of the disclosed technology are described in more detail in the drawings, the description and the claims. BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Figure 1 It shows that a 16x16 block is divided into 16 4x4 regions.

[0018] Figure 2A-2C An example of a specific location in a video block is shown.

[0019] Figure 3 is a block diagram of an example implementation of a hardware platform for video processing.

[0020] Figure 4 is a flow chart of an example method of video processing.

[0021] Figure 5 An example of surround clipping in VVC is shown.

[0022] Figure 6 is a block diagram of an example implementation of a video codec system.

[0023] Figure 7 is a block diagram of an example implementation of a video encoder.

[0024] Figure 8 is a block diagram of an example implementation of a video decoder.

[0025] Figures 9A-9H Various tables illustrating embodiments of the disclosed technology are shown.

[0026] Figures 10A-10F is a flow chart of an example method of video processing. DETAILED DESCRIPTION

[0027] Embodiments of the disclosed technology can be applied to existing video codec standards (e.g., HEVC, H.265) and future standards to improve compression performance. In this document, section headings are used to improve the readability of the description and do not in any way limit the discussion or embodiments (and / or implementations) to the corresponding sections. In addition, in this document, some embodiments described in the context of H.265 use the corresponding section numbers of the current VVC specification publication. In addition, the use of "..." indicates the continuation of the rest of the current VVC specification publication without further modification.

[0028] 1. Introduction

[0029] This article is about video codec technology. Specifically, it is about adaptive resolution conversion in video codec. It can be applied to existing video / image codec standards, such as HEVC, and also to a pending standard (Versatile Video Codec). It is also applicable to future video codec standards or video codecs.

[0030] 2. Preliminary Discussion

[0031] Video codec 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 the two organizations worked together to produce the H.262 / MPEG-2 Video and H.264 / MPEG-4 Advanced Video Codec (AVC) and H.265 / HEVC standards. Starting with H.262, video codec standards are based on a hybrid video codec structure that utilizes temporal prediction plus transform codec. In order to explore future video codec technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, JVET has adopted many new methods and introduced them into a reference software called the "Joint Exploration Model" (JEM). In April 2018, a Joint Video Experts Team (JVET) between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) was established to work on the Versatile Video Codec (VVC) standard with the goal of reducing bitrate by 50% compared to HEVC.

[0032] AVC and HEVC do not have the ability to change resolution without having to introduce IDR or intra random access point (IRAP) pictures; this capability can be called adaptive resolution change (ARC). There are use cases or application scenarios that can benefit from the ARC feature, including:

[0033] - Rate Adaptation in Video Telephony and Conferencing: To adapt the codec video to changing network conditions, when network conditions get worse and available bandwidth becomes lower, the codec can adapt by encoding a smaller resolution picture. Currently, picture resolution changes can only be made after an IRAP picture; this has several problems. An IRAP picture of reasonable quality will be much larger than an inter-codec picture and will be correspondingly more complex to decode: this wastes time and resources. This can be problematic if the decoder requests a resolution change for load reasons. It can also break low-latency buffer conditions, forcing the audio to resynchronize and the end-to-end latency of the stream will increase, at least temporarily. This can result in a poor experience for the user.

[0034] -Changes in active speakers in multi-party video conferences: For multi-party video conferences, the active speaker is usually displayed at a larger video size than the videos of other conference participants. When the active speaker changes, the picture resolution of each participant may also need to be adjusted. When such changes occur frequently in the active speakers, the need for ARC becomes particularly important.

[0035] - Fast start in streaming: For streaming applications, typically the application will buffer up to a certain length of decoded pictures before starting display. Starting the bitstream at a smaller resolution will allow the application to have enough pictures in the buffer to start displaying faster.

[0036] Adaptive stream switching in streaming: The Dynamic Adaptive Streaming over HTTP (DASH) specification includes a feature called @mediaStreamStructureId. This enables switching between different representations at open GOP random access points with non-decodable leading pictures (e.g., CRA pictures with associated RASL pictures in HEVC). When two different representations of the same video have different bitrates but the same spatial resolution, and they have the same @mediaStreamStructureId value, switching between the two representations can be performed on CRA pictures with associated RASL pictures, and the RASL pictures associated with the CRA pictures at the switch can be decoded with acceptable quality, thus achieving seamless switching. Using ARC, the @mediaStreamStructureId feature can also be used to switch between DASH representations with different spatial resolutions.

[0037] ARC is also known as Dynamic Resolution Switching.

[0038] ARC can also be viewed as a special case of Reference Picture Resampling (RPR), such as H.263 Annex P.

[0039] 2.1 Reference picture resampling in H.263 Annex P

[0040] This mode describes an algorithm that warps a reference picture before it is used for prediction. It may be useful for resampling reference pictures that have a different source format than the picture being predicted. By warping the shape, size, and position of the reference picture, it can also be used for global motion estimation or rotational motion estimation. The syntax includes the warping parameters to be used as well as the resampling algorithm. The simplest level of operation of the reference picture resampling mode is an implicit factor of 4 resampling, since only FIR filters need to be used for the upsampling and downsampling processes. In this case, when the size of the new picture (indicated in the picture header) is different from the size of the previous picture, no additional signaling overhead is required since its usage is understood.

[0041] ARC’s contribution to VVC

[0042] Several contributions were made to ARC, as follows:

[0043] JVET-M0135, JVET-M0259, JVET-N0048, JVET-N0052, JVET-N0118, JVET-N0279.

[0044] ARC in JVET-O2001-v14

[0045] ARC, also known as RPR (reference picture resampling), was incorporated into JVET-O2001-v14.

[0046] For RPR in JVET-O2001-v14, TMVP is disabled if the co-located picture has a different resolution than the current picture. In addition, BDOF and DMVR are disabled when the reference picture has a different resolution than the current picture.

[0047] To handle normal MC when the resolution of the reference picture is different from the current picture, the interpolation section is defined as follows (section numbers refer to the current VVC standard, and italic text indicates differences from previous versions):

[0048] 8.5.6.3.1 Overview

[0049] The inputs to this process are:

[0050] – luma position (xSb, ySb), which specifies the top left sample of the current codec subblock relative to the top left luma sample of the current picture,

[0051] – The variable sbWidth specifies the width of the current codec sub-block,

[0052] – The variable sbHeight specifies the height of the current codec sub-block.

[0053] – motion vector offset mvOffset,

[0054] – the refined motion vector refMvLX,

[0055] – the selected reference picture sample array refPicLX,

[0056] – Half-sample interpolation filter index hpelIfIdx,

[0057] – bidirectional optical flow flag bdofFlag,

[0058] – The variable cIdx specifies the color component index of the current block.

[0059] The output of this process is:

[0060] – The (sbWidth+brdExtSize)x(sbHeight+brdExtSize) array of predicted sample values ​​predSamplesLX. The predicted block boundary extension size brdExtSize is derived as follows:

[0061] brdExtSize=(bdofFlag||(inter_affine_flag[xSb][ySb]&&sps_affine_prof_enabled_flag))? 2:0 (8-752)

[0062] The variable fRefWidth is set equal to the PicOutputWidthL of the reference picture in luma samples.

[0063] The variable fRefHeight is set equal to the PicOutputHeightL of the reference picture in luma samples.

[0064] The motion vector mvLX is set equal to (refMvLX-mvOffset).

[0065] – If cIdx is equal to 0, the following applies:

[0066] –The scaling factor and its fixed-point representation are defined as:

[0067] hori_scale_fp=((fRefWidth<<14)+(PicOutputWidthL>>1)) / PicOutputWidthL(8-753)

[0068] vert_scale_fp=((fRefHeight<<14)+(PicOutputHeightL>>1)) / PicOutputHeightL (8-754)

[0069] – Let (xIntL, yIntL) be the luma position given in full sample units and (xFracL, yFracL) be the offset given in 1 / 16 sample units. These variables are used only in this section to specify fractional sample positions within the reference sample array refPicLX.

[0070] – The upper left coordinate of the limit block used for reference sample filling (xSbInt L ,ySbInt L ) is set equal to (xSb+(mvLX[0]>>4), ySb+(mvLX[1]>>4)).

[0071] – For each luma sample position (x L =0..sbWidth-1+brdExtSize,y L=0..sbHeight-1+brdExtSize), the corresponding predicted brightness sample value predSamplesLX[x L ][y L ] is exported as follows:

[0072] –Let (refxSb L , refySb L ) and (refx L , refy L ) is the luminance position pointed to by the motion vector (refMvLX[0], refMvLX[1]) given in 1 / 16 luminance units. The variable refxSb L , refx L , refySb L and refy L The export is as follows:

[0073] sbX L =((xSb<<4)+refMvLX[0])*hori_scale_fp (8-755)

[0074] refx L =((Sign(refxSb)*((Abs(refxSb)+128)>>8)+x L *((hori_scale_fp+8)>>4))+32)>>6 (8-756)

[0075] sb L =((ySb<<4)+refMvLX[1])*vert_scale_fp (8-757)

[0076] refy L =((Sign(refySb)*((Abs(refySb)+128)>>8)+yL*((vert_scale_fp+8)>>4))+32)>>6 (8-758)

[0077] – Variable xInt L ,yInt L , xFrac L and yFrac L The export is as follows:

[0078] xInt L =refx L >>4 (8-759)

[0079] yInt L =refy L>>4 (8-760)

[0080] xFrac L =refx L &15 (8-761)

[0081] yFrac L =refy L &15 (8-762)

[0082] – If bdofFlag is equal to true (TRUE) or (sps_affine_prof_enabled_flag is equal to TRUE and inter_affine_flag[xSb][ySb] is equal to TRUE), and one or more of the following conditions are true, then (xInt L +(xFrac L >>3)-1), yInt L +(yFrac L >>3)-1) and refPicLX are input, and the predicted luminance sample value predSamplesLX[x L ][y L ].

[0083] –x L is equal to 0.

[0084] –x L Equal to sbWidth+1.

[0085] –y L is equal to 0.

[0086] –y L Equal to sbHeight+1.

[0087] – Otherwise, (xIntL-(brdExtSize>0?1:0), yIntL-(brdExtSize>0?1:0)), (xFracL, yFracL), (xSbInt L ,ySbInt L ), refPicLX, hpelIfIdx, sbWidth, sbHeight and (xSb, ySb) are taken as input, and the predicted luminance sample value predSamplesLX[xL][yL] is derived by calling the luminance sample 8-tap interpolation filter process specified in Section 8.5.6.3.2.

[0088] – Otherwise (cIdx is not equal to 0) the following applies:

[0089] – Let (xIntC, yIntC) be the chroma position given in full sample units, and (xFracC, yFracC) be the unspecified offset in 1 / 32 sample units. These variables are used only in this clause to specify general fractional sample positions within the reference sample array refPicLX.

[0090] – The upper left coordinate (xSbIntC, ySbIntC) of the bounding box used for reference sample filling is set equal to ((xSb / SubWidthC)+(mvLX[0]>>5), (ySb / SubHeightC)+(mvLX[1]>>5)).

[0091] – For each chroma sample position (xC = 0..sbWidth-1, yC = 0..sbHeight-1) in the predicted chroma sample array predSamplesLX, the corresponding predicted chroma sample value predSamplesLX[xC][yC] is derived as follows:

[0092] –Let (refxSb C , refySb C ) and (refx C , refy C ) is the chroma position pointed to by the motion vector (mvLX[0], mvLX[1]) given by 1 / 32 sample units, and the variable refxSb C , refySb C , refx C and refy C The export is as follows:

[0093] sbX C =((xSb / SubWidthC<<5)+mvLX[0])*hori_scale_fp (8-763)

[0094] refx C =((Sign(refxSb C )*((Abs(refxSb C )+256)>>9)+xC*((hori_scale_fp+8)>>4))+16)>>5 (8-764)

[0095] sb C =((ySb / SubHeightC<<5)+mvLX[1])*vert_scale_fp (8-765)

[0096] refy C =((Sign(refySb C)*((Abs(refySb C )+256)>>9)+yC*((vert_scale_fp+8)>>4))+16)>>5 (8-766)

[0097] – Variable xInt C ,yInt C , xFrac C and yFrac C The export is as follows:

[0098] xInt C =refx C >>5 (8-767)

[0099] yInt C =refy C >>5 (8-768)

[0100] xFrac C =refy C &31 (8-769)

[0101] yFrac C =refy C &31 (8-770)

[0102] – Derives the predicted sample values ​​predSamplesLX[xC][yC] by calling the process specified in clause 8.5.6.3.4, taking (xIntC, yIntC), (xFracC, yFracC), (xSbIntC, ySbIntC), sbWidth, sbHeight and refPicLX as input.

[0103] Luminance sample interpolation filtering process

[0104] The inputs to this process are:

[0105] – Luminance position of all sample points (xInt L ,yInt L ),

[0106] – Luminance position in fractional sample units (xFrac L ,yFrac L ),

[0107] – Luminance position of all sample points (xSbInt L ,ySbInt L ), which specifies the upper left sample of the limit block for reference sample filling relative to the upper left luma sample of the reference picture,

[0108] – Luminance reference sample array refPicLX L ,

[0109] – Half-sample interpolation filter index hpelIfIdx,

[0110] – The variable sbWidth specifies the width of the current sub-block,

[0111] – The variable sbHeight specifies the height of the current sub-block,

[0112] - luma position (xSb, ySb), which specifies the top left sample of the current sub-block relative to the top left luma sample of the current picture,

[0113] The output of this process is the predicted luminance sample value predSampleLX L .

[0114] The variables shift1, shift2 and shift3 are derived as follows:

[0115] – The variable shift1 is set equal to Min(4, BitDepth Y -8), the variable shift2 is set equal to 6 and the variable shift3 is set equal to Max(2, 14-BitDepth Y ).

[0116] – The variable picW is set equal to pic_width_in_luma_samples and the variable picH is set equal to pic_height_in_luma_samples.

[0117] Equal to xFrac L or yFrac L The luma interpolation filter coefficient f for each 1 / 16 fractional sample position p L [p], derived as follows:

[0118] – If MotionModelIdc[xSb][ySb] is greater than 0, and sbWidth and sbHeight are both equal to 4, then the brightness interpolation filter coefficient f L [p] 8-12 is specified in Table 8-12.

[0119] – Otherwise, the brightness interpolation filter coefficient f L [p] As specified in Table 8-11, depending on hpelIfIdx.

[0120] The brightness position of the full sample point unit (xInt i ,yInt i) is derived as follows, for i = 0..7:

[0121] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0122] xInt i =Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xInt L +i-3)

[0123] (8-771)

[0124] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)

[0125] (8-772)

[0126] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0127] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?

[0128] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3): (8-773)

[0129] xInt L +i-3)

[0130] yInt i = Clip3(0, picH-1, yInt L +i-3) (8-774)

[0131] The brightness position of the full sample unit is further modified as follows, for i = 0..7:

[0132] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) (8-775)

[0133] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) (8-776)

[0134] Predicted brightness sample value predSampleLX L The export is as follows:

[0135] – If xFrac L and yFrac L If both are equal to 0, then predSampleLX L The value of is derived as follows:

[0136] predSampleLX L =refPicLX L [xInt3][yInt3]< <shift3 (8-777)

[0137] – Otherwise, if xFrac L is not equal to 0 and yFrac L equal to 0, predSampleLX L The value of is derived as follows:

[0138]

[0139] – Otherwise, if xFrac L is equal to 0 and yFrac L If not equal to 0, predSampleLX L The value of is derived as follows:

[0140]

[0141] – Otherwise, like xFrac L is not equal to 0 and yFrac L If not equal to 0, predSampleLX L The value of is derived as follows:

[0142] – The sample array temp[n] (n=0..7) is derived as follows:

[0143]

[0144] –Predicted brightness sample value predSampleLX L The export is as follows:

[0145]

[0146] Table 8-11 – Luma interpolation filter coefficients f for each 1 / 16 fractional sample position p L Specification of [p]

[0147]

[0148] Table 8-12 – Luma interpolation filter coefficients f for each 1 / 16 fractional sample position p for affine motion mode L Specification of [p]

[0149]

[0150] Luminance integer sample extraction process

[0151] The inputs to this process are:

[0152] – Luminance position of all sample points (xInt L ,yInt L ),

[0153] – Luminance reference sample array refPicLX L ,

[0154] The output of this process is the predicted luminance sample value predSampleLX L .

[0155] The variable shift is set equal to Max(2,14-BitDepth Y ).

[0156] The variable picW is set equal to pic_width_in_luma_samples and the variable picH is set equal to pic_height_in_luma_samples.

[0157] The brightness position (xInt, yInt) of all sample points is derived as follows:

[0158] xInt=Clip3(0,picW-1,sps_ref_wraparound_enabled_flag? (8-782)

[0159] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L ):xInt L )

[0160] yInt=Clip3(0,picH-1,yInt L)(8-783)

[0161] Predicted brightness sample value predSampleLX L The export is as follows:

[0162] predSampleLX L =refPicLX L [xInt][yInt]< <shift3 (8-784)

[0163] Chroma Sample Interpolation Process

[0164] The inputs to this process are:

[0165] – Chroma position in full sample units (xInt C ,yInt C ),

[0166] – Chroma position in 1 / 32 fractional sample units (xFrac C ,yFrac C ),

[0167] - chroma position in full sample units (xSbIntC, ySbIntC), which specifies the top left sample of the bounding block used for reference sample filling relative to the top left chroma sample of the reference picture,

[0168] – The variable sbWidth specifies the width of the current sub-block,

[0169] – The variable sbHeight specifies the height of the current sub-block,

[0170] – Chroma reference sample array refPicLX C .

[0171] The output of this process is the predicted chrominance sample value predSampleLX C .

[0172] The variables shift1, shift2 and shift3 are derived as follows:

[0173] – The variable shift1 is set equal to Min(4, BitDepth C -8), the variable shift2 is set equal to 6 and the variable shift3 is set equal to Max(2, 14-BitDepth C ).

[0174] –Variable picW C is set equal to pic_width_in_luma_samples / SubWidthC and the variable picHC Set equal to pic_height_in_luma_samples / SubHeightC.

[0175] Equal to xFrac C or yFrac C The chroma interpolation filter coefficient f for each 1 / 32 fractional sample position p C [p], as specified in Table 8-13.

[0176] The variable xOffset is set equal to (sps_ref_wraparound_offset_minus1+1)*MinCbSizeY) / SubWidthC.

[0177] Chroma position in full sample units (xInt i ,yInt i ) is derived as follows, for i = 0..3:

[0178] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0179] xInt i =Clip3(SubPicLeftBoundaryPos / SubWidthC, SubPicRightBoundaryPos / SubWidthC, xInt L +i) (8-785)

[0180] yInt i =Clip3(SubPicTopBoundaryPos / SubHeightC, SubPicBotBoundaryPos / SubHeightC, yInt L +i) (8-786)

[0181] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0182] xInt i =Clip3(0,picW C -1, sps_ref_wraparound_enabled_flag? ClipH(xOffset,picW C , xInt C +i-1):xInt C +i-1) (8-787)

[0183] yInt i =Clip3(0,picH C -1,yInt C +i-1)

[0184] (8-788)

[0185] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0186] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (8-789)

[0187] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i ) (8-790)

[0188] Predicted chroma sample value predSampleLX C The export is as follows:

[0189] – If xFrac C and yFrac C If both are equal to 0, then predSampleLX C The value of is derived as follows:

[0190] predSampleLX C =refPicLX C [xInt1][yInt1]< <shift3 (8-791)

[0191] – Otherwise, if xFrac C is not equal to 0 and yFrac C If equal to 0, predSampleLX C The value of is derived as follows:

[0192]

[0193] – Otherwise, if xFrac C is equal to 0 and yFrac C If not equal to 0, predSampleLX C The value of is derived as follows:

[0194]

[0195] – Otherwise, if xFrac C is not equal to 0 and yFrac C If not equal to 0, predSampleLX C The value of is derived as follows:

[0196] – The sample array temp[n] (n=0..3) is derived as follows:

[0197]

[0198] –Predicted chroma sample value predSampleLX C The export is as follows:

[0199]

[0200] Table 8-13 – Chroma interpolation filter coefficients f for each 1 / 32 fractional sample position p C Specification of [p]

[0201]

[0202] 2.4 Wrap-around clipping in VVC

[0203] To handle Figure 5 The ERP or PERP picture format shown here proposes a wraparound cut of JVET-L0231. This is sometimes also called reference picture wraparound.

[0204] In JVET-P2001-v9, wraparound clipping is specified as

[0205]

[0206] And the horizontal position will depend on whether the shearing is applied around the shearing. In JVET-P2001-v9, it is specified as follows:

[0207] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:

[0208] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0209] xInt i =Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xInt L +i-3)

[0210] (8-754)

[0211] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)

[0212] (8-755)

[0213] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0214] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?

[0215] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3): (8-756)

[0216] xInt L +i-3)

[0217] yInt i = Clip3(0, picH-1, yInt L +i-3) (8-757)

[0218] 2.5 CCLM in VVC

[0219] As specified in JVET-P2001-v9, the parameters are derived for cross-component linear model (CCLM) prediction in VVC:

[0220] 8.4.5.2.13 Specification of INTRA_LT_CCLM, INTRA_L_CCLM and INTRA_T_CCLM intra prediction modes

[0221] …

[0222] 7. The variables a, b, and k are derived as follows:

[0223] – If numSampL is equal to 0, and numSampT is equal to 0, then the following applies:

[0224] k=0 (8-211)

[0225] a=0 (8-212)

[0226] b=1<<(BitDepth-1) (8-213)

[0227] – Otherwise, the following applies:

[0228] diff=maxY-minY (8-214)

[0229] – If diff is not equal to 0, the following applies:

[0230] diffC=maxC-minC (8-215)

[0231] x=Floor(Log2(diff)) (8-216)

[0232] normDiff=((diff<<4)>>x)&15 (8-217)

[0233] x+=(normDiff!=0)? 1:0 (8-218)

[0234] y=Floor(Log2(Abs(diffC)))+1 (8-219)

[0235] a=(diffC*(divSigTable[normDiff]|8)+2 y-1 )>>y (8-220)

[0236] k=((3+xy)<1)? 1:3+xy (8-221)

[0237] a=((3+xy)<1)? Sign(a)*15:a (8-222)

[0238] b=minC-((a*minY)>>k) (8-223)

[0239] The divSigTable[] is defined as follows:

[0240] divSigTable[]={0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0} (8-224)

[0241] – Otherwise (diff equals 0), the following applies:

[0242] k=0(8-225)

[0243] a=0(8-226)

[0244] b=minC(8-227)

[0245] …

[0246] 2.6 Angle Prediction in VVC

[0247] The angle prediction in VVC is specified in JVET-P2001-v9 as:

[0248] 8.4.5.2.12 Specification of INTRA_ANGULAR2..INTRA_ANGULAR66 intra prediction modes

[0249] The inputs to this process are:

[0250] – Intra prediction mode predModeIntra,

[0251] – variable refIdx, which specifies the intra prediction reference row index,

[0252] – the variable nTbW, which specifies the transform block width,

[0253] – the variable nTbH, which specifies the transform block height,

[0254] – the variable refW, which specifies the reference sample width,

[0255] – variable refH, which specifies the reference sample height,

[0256] – variable nCbW, which specifies the codec block width,

[0257] – variable nCbH, which specifies the codec block height,

[0258] – the variable refFilterFlag, which specifies the value of the reference filter flag,

[0259] – the variable cIdx, which specifies the color component of the current block,

[0260] – neighboring sample point p[x][y], where x = -1-refIdx, y = -1-refIdx..refH-1 and

[0261] x=-refIdx..refW-1, y=-1-refIdx.

[0262] The output of this process is the prediction samples predSamples[x][y], where x = 0..nTbW-1, y = 0..nTbH–1.

[0263] The variable nTbS is set equal to (Log2(nTbW)+Log2(nTbH))>>1.

[0264] The variable filterFlag is exported as follows:

[0265] – If one or more of the following conditions are true, filterFlag is set equal to 0.

[0266] –refFilterFlag is equal to 1;

[0267] –refIdx is not equal to 0;

[0268] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT;

[0269] – Otherwise, the following applies:

[0270] – The variable minDistVerHor is set equal to Min(Abs(predModeIntra-50), Abs(predModeIntra-18)).

[0271] – The variable intraHorVerDistThres[nTbS] is defined in Table 8-7.

[0272] –The variable filterFlag is exported as follows:

[0273] – If minDistVerHor is greater than intraHorVerDistThres[nTbS] and refFilterFlag is equal to 0, filterFlag is set equal to 1.

[0274] – Otherwise, filterFlag is set equal to 0.

[0275] Table 8-7 – Specification of intraHorVerDistThres[nTbS] for various transform block sizes nTbS

[0276] nTbS=2 nTbS=3 nTbS=4 nTbS=5 nTbS=6 nTbS=7 intraHorVerDistThres[nTbS] 24 14 2 0 0 0

[0277] Table 8-8 specifies the mapping table between predModeIntra and angle parameter intraPredAngle

[0278] Table 8-8 – Specification of intraPredAngle

[0279] predModeIntra -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 intraPredAngle 512 341 256 171 128 102 86 73 64 57 51 45 39 35 32 29 26 predModeIntra 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 intraPredAngle 23 20 18 16 14 12 10 8 6 4 3 2 1 0 -1 -2 -3 predModeIntra 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 intraPredAngle -4 -6 -8 -10 -12 -14 -16 -18 -20 -23 -26 -29 -32 -29 -26 -23 -20 predModeIntra 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 intraPredAngle -18 -16 -14 -12 -10 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 predModeIntra 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 intraPredAngle 8 10 12 14 16 18 20 23 26 29 32 35 39 45 51 57 64 predModeIntra 73 74 75 76 77 78 79 80 intraPredAngle 73 86 102 128 171 256 341 512

[0280] The inverse angle parameter invAngle is derived based on intraPredAngle as follows:

[0281]

[0282] …

[0283] 2.7 Sample extraction for inter-frame prediction in VVC

[0284] 8.5.6.3.2 Luma Sample Interpolation Filtering Process

[0285] …

[0286] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:

[0287] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0288] xInt i =Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xInt L +i-3)

[0289] (8-754)

[0290] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)

[0291] (8-755)

[0292] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0293] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?

[0294] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)

[0295] yInt i = Clip3(0, picH-1, yInt L +i-3)

[0296] The brightness position of the full sample unit is further modified as follows, for i = 0..7:

[0297] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )

[0298] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )

[0299] Predicted brightness sample value predSampleLX L The export is as follows:

[0300] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,

[0301] Then predSampleLX L The value of is derived as follows:

[0302] predSampleLX L =refPicLX L [xInt3][yInt3]< <shift3

[0303] …

[0304] 8.5.6.3.4 Chroma Sample Interpolation Process

[0305] …

[0306] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0307] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (8-774)

[0308] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i) (8-775)

[0309] 2.8 Sub-images

[0310] In VVC, the concept of sub-picture is introduced. A sub-picture is a rectangular area of ​​one or more strips in a picture. For a video sequence, multiple sub-pictures can be used. And all pictures are divided into the same number of sub-pictures, which are defined in SPS.

[0311] The relevant syntax elements and semantics are defined as follows:

[0312] 7.3.2.3 Sequence parameter set RBSP syntax

[0313]

[0314]

[0315] subpics_present_flag equal to 1 specifies that sub-picture parameters are present in the SPS RBSP syntax. subpics_present_flag equal to 0 specifies that sub-picture parameters are not present in the SPS RBSP syntax.

[0316] NOTE 2 – When the bitstream is the result of a sub-bitstream extraction process and contains only a subset of the sub-pictures of the input bitstream of the sub-bitstream extraction process, it may be necessary to set the value of subpics_present_flag equal to 1 in the RBSP of the SPS.

[0317] sps_num_subpics_minus1 plus 1 specifies the number of sub-pictures. sps_num_subpics_minus1 should be in the range of 0 to 254. If not present, the value of sps_num_subpics_minus1 is inferred to be equal to 0.

[0318] subpic_ctu_top_left_x[i] specifies the horizontal position (in CtbSizeY) of the top left CTU of the i-th subpicture. The length of the syntax element is Ceil(Log2(pic_width_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_ctu_top_left_x[i] is inferred to be equal to 0.

[0319] subpic_ctu_top_left_y[i] specifies the vertical position (in units of CtbSizeY) of the top left CTU of the i-th sub-picture. The length of the syntax element is Ceil(Log2(pic_height_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_ctu_top_left_y[i] is inferred to be equal to 0.

[0320] subpic_width_minus1[i] plus 1 specifies the width of the i-th sub-picture (in units of CtbSizeY). The length of the syntax element is Ceil(Log2(pic_width_max_in_luma_samples / CtbSizeY)) bits. When not present, the value of subpic_width_minus1[i] is inferred to be equal to Ceil(pic_width_max_in_luma_samples / CtbSizeY)-1.

[0321] subpic_height_minus1[i] plus 1 specifies the height of the i-th sub-picture (in units of CtbSizeY). The length of the syntax element is Ceil(Log2(pic_height_max_in_luma_samples / CtbSizeY)) bits. If not present, the value of subpic_height_minus1[i] is inferred to be equal to Ceil(pic_height_max_in_luma_samples / CtbSizeY)-1.

[0322] subpic_treated_as_pic_flag[i] equal to 1 specifies that the i-th subpicture of each codec picture in the CLVS is treated as a picture in the decoding process that does not include loop filtering operations. subpic_treated_as_pic_flag[i] equal to 0 specifies that the i-th subpicture of each codec picture in the CLVS is not treated as a picture in the decoding process that does not include loop filtering operations. If not present, the value of subpic_treated_as_pic_flag[i] is inferred to be equal to 0.

[0323] loop_filter_across_subpic_enabled_flag[i] equal to 1 specifies that loop filtering operations may be performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. loop_filter_across_subpic_enabled_flag[i] equal to 0 specifies that loop filtering operations are not performed across the boundaries of the i-th subpicture in each coded picture in the CLVS. If not present, the value of loop_filter_across_subpic_enabled_pic_flag[i] is inferred to be equal to 1.

[0324] It is a requirement for bitstream conformance to apply the following constraints:

[0325] - For any two sub-pictures subpicA and subpicB, when the sub-picture index of subpicA is less than the sub-picture index of subpicB, any codec slice NAL unit of subpicA shall precede any codec slice NAL unit of subpicB in decoding order.

[0326] - The shape of the sub-pictures shall be such that each sub-picture, when decoded, has its complete left border and complete top border, including the picture border or including the border of the previously decoded sub-picture.

[0327] sps_subpic_id_present_flag equal to 1 specifies that sub-picture ID mapping is present in the SPS. sps_subpic_id_present_flag equal to 0 specifies that sub-picture ID mapping is not present in the SPS.

[0328] sps_subpic_id_signalling_present_flag equal to 1 specifies that sub-picture ID mapping is signaled in the SPS. sps_subpic_id_signaling_present_flag equal to 0 specifies that sub-picture ID mapping is not signaled in the SPS. If not present, the value of sps_subpic_id_signalling_present_flag is inferred to be equal to 0.

[0329] sps_subpic_id_len_minus1 plus 1 specifies the number of bits used to represent the syntax element sps_subpic_id[i]. The value of sps_subpic_id_len_minus1 shall be in the range of 0 to 15, inclusive.

[0330] sps_subpic_id[i] specifies the sub-picture ID of the i-th sub-picture. The length of the sps_subpic_id[i] syntax element is sps_subpic_id_len_minus1+1 bits. When not present and when sps_subpic_id_present_flag is equal to 0, the value of sps_subpic_id[i] is inferred to be equal to i for each i from 0 to sps_num_subpics_minus1 (inclusive).

[0331] 7.3.2.4 Picture parameter set RBSP syntax

[0332]

[0333]

[0334] single_slice_per_subpic_flag equal to 1 specifies that each sub-picture consists of one and only one rectangular slice. single_slice_per_subpic_flag equal to 0 specifies that each sub-picture may consist of one or more rectangular slices. When subpics_present_flag is equal to 0, single_slice_per_subpic_flag shall be equal to 0. When single_slice_per_subpic_flag is equal to 1, num_slices_in_pic_minus1 is inferred to be equal to sps_num_subpics_minus1.

[0335] 7.3.7.1 Generic Strip Header Syntax

[0336]

[0337] slice_subpic_id specifies the sub-picture identifier of the sub-picture containing the slice. If slice_subpic_id exists, the value of the variable SubPicIdx will be derived such that SubpicIdList[SubPicIdx] is equal to slice_subpic_id; otherwise (slice_subpic_id does not exist), the variable SubPicIdx will be derived to be equal to 0. The length of slice_subpic_id (in bits) is derived as follows:

[0338] - If sps_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to sps_subpic_id_len_minus1+1.

[0339] - Otherwise, if ph_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to ph_subpic_id_len_minus1+1.

[0340] - Otherwise, if pps_subpic_id_signalling_present_flag is equal to 1, the length of slice_subpic_id is equal to pps_subpic_id_len_minus1+1.

[0341] Otherwise, the length of slice_subpic_id is equal to Ceil(Log2(sps_num_subpics_minus1+1)).

[0342] 3. Technical problems solved by the technical solution disclosed in this article

[0343] When RPR is applied to VVC, RPR (ARC) may have the following problems:

[0344] 1. Using RPR, the interpolation filters may be different for adjacent samples in a block, which is undesirable in SIMD (Single Instruction Multiple Data) implementation.

[0345] 2. RPR is not considered in the boundary area.

[0346] 3. The wraparound offset (sps_ref_wraparound_offset_minus1) is signaled at the sequence level, but the dimensions of the picture may be different due to RPR in the sequence.

[0347] 4. Abs(diffC) may be equal to 0 in Log2(Abs(diffC)) of the parameters that derive CCLM.

[0348] 5. intraPredAngle may be 0, which makes invAngle meaningless.

[0349] 6. The highlight clipping operation described in Section 2.7 (denoted as “integer sample clipping operation”) may destroy the motion compensation of RPR.

[0350] 7. In the current VVC, intra (I) slices are defined as slices that are decoded using only intra prediction. However, due to the recent adoption of IBC and palette mode codecs as additional prediction modes in addition to intra and inter prediction, for I slices, IBC / palette mode can also be applied in addition to intra prediction. This definition needs to be revised accordingly.

[0351] 8. The indication of subpics is defined in VVC, where subpics_present_flag is signaled first, followed by sps_num_subpics_minus1. However, we note that even if the subpicture present flag is true, the signaled sps_num_subpics_minus1 can still be equal to 0, which means that there is only one subpicture in a picture, that is, the subpicture is equal to the picture; and when the subpicture present flag is false, sps_num_subpics_minus1 is also inferred to be 0. Therefore, it is unreasonable to define the range of sps_num_subpics_minus1 as 0 to 254 (including 0 and 254) when signaling.

[0352] 4. List of Examples and Techniques

[0353] The following list should be considered as an example to explain the general concept. These items should not be interpreted narrowly. In addition, these items can be combined in any way.

[0354] A motion vector is represented by (mv_x, mv_y), where mv_x is the horizontal component and mv_y is the vertical component.

[0355] RPR related

[0356] 1. When the resolution of the reference picture is different from that of the current picture, the same horizontal and / or vertical interpolation filter can be used to generate prediction values ​​for a set of samples (at least two samples) of the current block.

[0357] a. In one example, the group may include all samples in the region of the block.

[0358] i. For example, the block can be divided into S MxN rectangles that do not overlap each other. Each MxN rectangle is a group. Figure 1 In the example shown, a 16x16 block can be divided into 16 4x4 rectangles, each rectangle being a group.

[0359] ii. For example, a row with N samples is a group. N is an integer not greater than the block width. In one example, N is 4 or 8 or the block width.

[0360] iii. For example, a column with N samples is a group. N is an integer not greater than the block height. In one example, N is 4 or 8 or the height of the block.

[0361] iv. M and / or N may be predefined or dynamically derived, for example based on block dimension / codec information, or signaling.

[0362] b. In one example, samples in a group may have the same MV (denoted as shared MV).

[0363] c. In one example, samples in a group may have MVs with the same horizontal component (denoted as shared horizontal component).

[0364] d. In one example, samples in a group may have MVs with the same vertical component (denoted as shared vertical component).

[0365] e. In one example, samples in a group may have MVs with the same fractional part of the horizontal component (denoted as a shared fractional horizontal component).

[0366] i. For example, assuming that the MV of the first sample point is (MV1x, MV1y) and the MV of the second sample point is (MV2x, MV2y), then MV1x & (2 M -1) is equal to MV2x&(2 M -1), where M represents the MV precision. For example, M=4.

[0367] f. In one example, samples in a group may have MVs with the same fractional part of the vertical component (denoted as shared fractional vertical component).

[0368] i. For example, assuming that the MV of the first sample point is (MV1x, MV1y) and the MV of the second sample point is (MV2x, MV2y), then MV1y&(2 M -1) is equal to MV2y&(2 M -1), where M represents the MV precision. For example, M=4.

[0369] g. In one example, for the samples in the group to be predicted, the resolution of the current picture and the reference picture (e.g., (refxL, refyL) derived in 8.5.6.3.1 of JVET-O2001-v14) can be first derived using MV b Then, MV b can be further modified (eg, rounded / truncated / clipped) to MV' to meet requirements such as those mentioned above, and MV' will be used to derive the predicted samples of the samples.

[0370] i. In one example, MV' has the same b The same integer part, and the fractional part of MV' are set to share fractional horizontal and / or vertical components.

[0371] ii. In one example, MV' is set to have a shared fractional horizontal and / or vertical component and is closest to MV b one.

[0372] h. The shared motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) can be set to the motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of a specific sample in the group.

[0373] i. For example, a particular sample point can be located at a corner of a rectangular group, such as Figure 2A "A", "B", "C" and "D" shown.

[0374] ii. For example, a particular sample point can be located at the center of a rectangular group, such as Figure 2A "E", "F", "G" and "H" shown.

[0375] iii. For example, a particular sample point may be located at the end of a row or column group, e.g. Figure 2B and 2C "A" and "D" shown.

[0376] iv. For example, a particular sample point may be located in the middle of a row or column group, e.g. Figure 2B and 2C "B" and "C" shown.

[0377] v. In one example, the motion vector of a particular sample point can be the MV mentioned in item g. b .

[0378] i. The shared motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) may be set to a motion vector (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of a virtual sample located at a different position compared to all samples in the group.

[0379] i. In one example, the virtual sample point is not in the group, but it is located in a region covering all the samples in the group.

[0380] 1) Optionally, the virtual sample point is located outside the region covering all the sample points in the group, for example, near the lower right position of the region.

[0381] ii. In one example, the MVs of virtual samples are derived in the same way as real samples, but at different locations.

[0382] iii. Figure 2A-2C The “V” in FIG. 1 shows an example of three virtual sample points.

[0383] j. The shared MV (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) can be set as a function of the MV (and / or shared horizontal component and / or shared vertical component and / or shared fractional horizontal component and / or shared fractional vertical component) of multiple samples and / or virtual samples.

[0384] i. For example, a shared MV (and / or a shared horizontal component and / or a shared vertical component and / or a shared fractional horizontal component and / or a shared fractional vertical component) can be set to all or part of the samples in the group, or Figure 2A Sample point "E", "F", "G", "H", or Figure 2A Sample point "E", "H", or Figure 2A Sample points "A", "B", "C", "D", or Figure 2A Sample points "A", "D", or Figure 2B Sample point "B", "C", or Figure 2B Sample points "A", "D", or Figure 2C Sample point "B", "C", or Figure 2C The average value of the MVs (and / or shared horizontal components and / or shared vertical components and / or shared fractional horizontal components and / or shared fractional vertical components) of the sample points “A” and “D” in .

[0385] 2. It is proposed that when the resolution of the reference picture is different from that of the current picture, only integer MVs are allowed to perform the motion compensation process to derive the prediction block of the current block.

[0386] a. In one example, the decoded motion vector for the sample to be predicted is rounded to an integer MV before being used.

[0387] 3. The motion vector used in the motion compensation process for samples in the current block (e.g., the shared MV / shared horizontal or vertical or fractional component / MV' mentioned in the above item) can be stored in the decoded picture buffer and used for motion vector prediction of subsequent blocks in the current / different picture.

[0388] a. Optionally, the motion vector used in the motion compensation process for samples in the current block (e.g., the shared MV / shared horizontal or vertical or fractional component / MV' mentioned in the above item) may not be allowed to be used for motion vector prediction of subsequent blocks in the current / different picture.

[0389] i. In one example, the decoded motion vector (eg, MV in the above item) b ) can be used for motion vector prediction of subsequent blocks in the current / different picture.

[0390] b. In one example, the motion vectors in the motion compensation process for the samples in the current block may be used in the filtering process (eg, deblocking filter / SAO / ALF).

[0391] i. Optionally, the decoded motion vector (e.g., MV in the above item) can be used in the filtering process. b ).

[0392] 4. It is proposed to select the interpolation filter used to derive the prediction block of the current block in the motion compensation process depending on whether the resolution of the reference picture is different from the resolution of the current picture.

[0393] a. In one example, when the resolution of the reference picture is different from the resolution of the current picture, the interpolation filter has fewer taps.

[0394] i. In one example, when the resolution of the reference picture is different from the resolution of the current picture, a bilinear filter is applied.

[0395] ii. In one example, when the resolution of the reference picture is different from the resolution of the current picture, a 4-tap filter or a 6-tap filter is applied.

[0396] 5. It is proposed to apply a two-step prediction block generation process when the resolution of the reference picture is different from the resolution of the current picture.

[0397] a. In the first step, a virtual reference block is generated by upsampling or downsampling an area in the reference picture, depending on the width and / or height of the current picture and the reference picture.

[0398] b. In the second step, prediction samples are generated from the virtual reference block by applying interpolation filtering, regardless of the width and / or height of the current picture and the reference picture.

[0399] 6. It is proposed that the upper left coordinates (xSbInt) of the limit block for reference sample filling defined in 8.5.6.3.1 of JVET-O2001-v14 are derived depending on the width and / or height of the current picture and the reference picture. L ,ySbInt L ) calculation.

[0400] a. In one example, the brightness position of the full sample point unit is modified as follows:

[0401] xInt i =Clip3(xSbIntL -Dx,xSbInt L +sbWidth+Ux,xInt i ),

[0402] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),

[0403] Dx and / or Dy and / or Ux and / or Uy may depend on the width and / or height of the current picture and the reference picture.

[0404] b. In one example, the chromaticity position of the full sample point unit is modified as follows:

[0405] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti),

[0406] yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti),

[0407] Dx and / or Dy and / or Ux and / or Uy may depend on the width and / or height of the current picture and the reference picture.

[0408] 7. Propose whether and / or how to use the limit blocks for reference sample filling defined in 8.5.6.3.1 of JVET-O2001-v14 (e.g., (xSbInt L ,ySbInt L ))Cut MV may depend on the use of DMVR.

[0409] a. In one example, only when DMVR is applied, according to the limit block for reference sample filling (e.g., defined in 8.5.6.3.1 (xSbInt L ,ySbInt L )) to cut MV.

[0410] i. For example, operations 8-775 and 8-776 in the luma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when DMVR is used for the current block.

[0411] ii. For example, operations 8-789 and 8-790 in the chroma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when DMVR is used for the current block.

[0412] b. Optionally, in addition, the above method can also be applied to the clipping of chroma samples.

[0413] 8. Propose whether and / or how to use the limit blocks used for reference sample filling (as defined in 8.5.6.3.1 of JVET-O2001-v14 (xSbInt L ,ySbInt L ))Cut MV depends on whether picture wrapping is used (for example, sps_ref_wraparound_enabled_flag is equal to 0 or 1).

[0414] a. In one example, only when picture wrapping is not used, the reference sample point filling is based on the limit block (e.g., defined in 8.5.6.3.1 (xSbInt L ,ySbInt L )) to cut MV.

[0415] i. For example, operations 8-775 and 8-776 in the luma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when picture wrapping is not used.

[0416] ii. For example, operations 8-789 and 8-790 in the chroma sample interpolation filtering process defined in JVET-O2001-v14 are applied only when picture wrapping is not used.

[0417] b. Optionally, in addition, the above method can also be applied to the clipping of chroma samples.

[0418] c. In one example, the brightness position of the full sample unit is modified as follows:

[0419] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),

[0420] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),

[0421] Dx and / or Dy and / or Ux and / or Uy may depend on whether picture wrapping is used.

[0422] d. In one example, the chromaticity position of the full sample point unit is modified as follows:

[0423] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti)

[0424] yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti)

[0425] Dx and / or Dy and / or Ux and / or Uy may depend on whether picture wrapping is used.

[0426] 9. Whether / how to apply a filtering process (eg, a deblocking filter) may depend on whether the reference pictures have a different resolution.

[0427] a. In one example, the boundary strength setting in the deblocking filter may also take into account the resolution difference in addition to the motion vector difference.

[0428] b. In one example, the boundary strength setting in the deblocking filter can be based on the scaled motion vector difference of the resolution difference.

[0429] c. In one example, if the resolution of at least one reference picture of block A is different from (or smaller than or larger than) the resolution of at least one reference picture of block B, the strength of the deblocking filter is increased.

[0430] d. In one example, if the resolution of at least one reference picture of block A is different from (or smaller than or larger than) the resolution of at least one reference picture of block B, the strength of the deblocking filter is reduced.

[0431] e. In one example, if the resolution of at least one reference picture of block A and / or block B is different from (or smaller than or larger than) the resolution of the current block, the strength of the deblocking filter is increased.

[0432] f. In one example, if the resolution of at least one reference picture of block A and / or block B is different from (or smaller than or larger than) the resolution of the current block, the strength of the deblocking filter is reduced.

[0433] 10. Instead of storing / using the motion vector of the block based on the same reference picture resolution as the current picture, it is proposed to use the real motion vector that takes into account the resolution difference.

[0434] a. Optionally, furthermore, when using motion vectors to generate prediction blocks, it is not necessary to calculate the resolution of the current picture and the reference picture (e.g., as derived in 8.5.6.3.1 of JVET-O2001-v14 (refx L ,refy L ))Further change the motion vector.

[0435] 11. In one example, when sub-pictures exist, the reference picture must have the same resolution as the current picture.

[0436] a. Optionally, when the reference picture has a different resolution than the current picture, there must be no sub-picture in the current picture.

[0437] 12. In one example, sub-pictures may be defined separately for pictures with different resolutions.

[0438] 13. In one example, if the reference picture has a different resolution than the current picture, the corresponding sub-picture in the reference picture may be derived by scaling and / or offsetting a sub-picture of the current picture.

[0439] 14. It is proposed that all or part of the information associated with surround cuts can be signaled in video units (e.g., at picture / view / slice / tile / sub-picture / CTU row level, etc.) rather than at sequence level.

[0440] a. In one example, the information can be signaled in PPS, APS, picture header, slice header, etc.

[0441] b. For example, a syntax element (eg named pps_ref_wraparound_offset_minus1) may be signaled in the first PPS to indicate the offset used to calculate the horizontal wraparound position.

[0442] i. In one example, pps_ref_wraparound_offset_minus1 may be signaled, and pps_ref_wraparound_offset_minus1 plus 1 specifies the offset used to calculate the horizontal wrapping position in units of MinCbSizeY luma samples, where MinCbSizeY represents the minimum Cb size of the luma block.

[0443] ii. The range of pps_ref_wraparound_offset_minus1 may depend on pic_width_in_luma_samples in the first PPS. For example, the value of pps_ref_wraparound_offset_minus1 shall be in the range of (CtbSizeY / MinCbSizeY)+1 to (pic_width_in_luma_samples / MinCbSizeY)-1 (including (CtbSizeY / MinCbSizeY)+1 and (pic_width_in_luma_samples / MinCbSizeY)-1), where pic_width_in_luma_samples is in the first PPS.

[0444] iii. In one example, the syntax elements may be encoded using a fixed-length / truncated unary / unary / truncated binary / K-th order EG (eg, K=0) binarization method.

[0445] c. For example, a syntax element (eg, named pps_ref_wraparound_enabled_flag) may be signaled in the first PPS to indicate whether horizontal wraparound motion compensation is applied in inter prediction.

[0446] i. In one example, pps_ref_wraparound_enabled_flag equal to 1 specifies that horizontal wraparound motion compensation is applied in inter prediction. pps_ref_wraparound_enabled_flag equal to 0 specifies that horizontal wraparound motion compensation is not applied.

[0447] ii. Optionally, in addition, syntax elements may be signaled conditionally.

[0448] 1) In one example, whether pps_ref_wraparound_offset_minus1 is signaled may depend on pps_ref_wraparound_enabled_flag.

[0449] a) For example, only when pps_ref_wraparound_enabled_flag is equal to 1, pps_ref_wraparound_offset_minus1 is signaled.

[0450] d. In one example, a first syntax element may be signaled in a first video unit (e.g., signaled in an SPS), and a second syntax element may be signaled in a second video unit (e.g., signaled in a PPS, an APS, a picture header, a slice header, etc.). The first syntax element and the second syntax element may have the same function on surround shear, but at different levels.

[0451] i. The second video unit can refer to the first video unit.

[0452] ii. For example, sps_ref_wraparound_offset_minus1 may be signaled in the SPS, and pps_ref_wraparound_offset_minus1 may be signaled in the PPS.

[0453] iii. For example, sps_ref_wraparound_enabled_flag may be signaled in SPS, and pps_ref_wraparound_enabled_flag may be signaled in PPS.

[0454] vi. In one example, in a conforming bitstream, the first syntax element should be identical to the second syntax element.

[0455] 1) For example, in a conforming bitstream, sps_ref_wraparound_enabled_flag shall be equal to pps_ref_wraparound_enabled_flag.

[0456] v. In one example, the second syntax element may depend on the first syntax element.

[0457] 1) For example, if sps_ref_wraparound_enabled_flag is 0, then pps_ref_wraparound_enabled_flag must be 0.

[0458] 2) For example, if sps_ref_wraparound_enabled_flag is 1, pps_ref_wraparound_enabled_flag can be 0 or 1.

[0459] vi. In one example, if both syntax elements are present, the first syntax element is ignored and the second syntax element performs a function.

[0460] vii. In one example, if both syntax elements are present, the second syntax element is ignored and the first syntax element performs the function.

[0461] e. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0462] f. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0463] g. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0464] h. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is the value of pic_width_in_luma_samples in any PPS that references the SPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0465] i. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0466] j. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is not less than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0467] k. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than or equal to (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0468] 1. In one example, when the value of (CtbSizeY / MinCbSizeY+Offset1) is greater than (pic_width_in_luma_samples / MinCbSizeY−Offset2) (where pic_width_in_luma_samples is in PPS), the value of sps_ref_wraparound_enabled_flag shall be equal to 0. For example, Offset1=Offset2=1.

[0469] 15. It is proposed that Log2(X) equations where X is equal to or less than 0 should be avoided to derive affine merge candidates.

[0470] a. For example, the process can be conditioned on whether X is greater than 0.

[0471] b. For example, the process can be conditioned on whether X is equal to 0.

[0472] c. For example, calculate Log2(Height)-Log2(Width) instead of Log2(Height / Width).

[0473] d. The example specification based on JVET-P2001-v9 is modified as follows:

[0474] 8.5.5.6 Derivation process of constructed affine control point motion vector Merge candidate

[0475] …

[0476] 6. If availableFlagCorner[0] is equal to TRUE and availableFlagCorner[2] is equal to TRUE, then the following applies:

[0477] – For X replaced by 0 or 1, the following applies:

[0478] –The variable availableFlagLX is exported as follows:

[0479] – If all of the following conditions are TRUE, availableFlagLX is set equal to TRUE:

[0480] –predFlagLXCorner[0] is equal to 1

[0481] –predFlagLXCorner[2] is equal to 1

[0482] –refIdxLXCorner[0] is equal to refIdxLXCorner[2]

[0483] – Otherwise, availableFlagLX is set equal to FALSE.

[0484] – If availableFlagLX is equal to TRUE, the following applies:

[0485] – The second control point motion vector cpMvLXCorner[1] is derived as follows:

[0486] cpMvLXCorner[1][0]=(cpMvLXCorner[0][0]<<7)+

[0487] ((cpMvLXCorner[2][1]-cpMvLXCorner[0][1])(8-625)

[0488]

[0489] cpMvLXCorner[1][1]=(cpMvLXCorner[0][1]<<7)+

[0490] ((cpMvLXCorner[2][0]-cpMvLXCorner[0][0])(8-626)

[0491]

[0492] – Takes mvX set equal to cpMvLXCorner[1], rightShift set equal to 7, and leftShift set equal to 0 as input and takes the integer value of cpMvLXCorner[1]

[0493] As output, the motion vector rounding process specified in clause 8.5.2.14 is invoked.

[0494] – Make the following allocations:

[0495] predFlagLXConst6=1 (8-627)

[0496] refIdxLXConst6=refIdxLXCorner[0] (8-628)

[0497] cpMvLXConst6[0]=cpMvLXCorner[0] (8-629)

[0498] cpMvLXConst6[1]=cpMvLXCorner[1] (8-630)

[0499] cpMvLXConst6[0][0]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[0][0]) (8-631)

[0500] cpMvLXConst6[0][1]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[0][1]) (8-632)

[0501] cpMvLXConst6[1][0]=Clip3(-2 17 ,2 17 -1,cpMvLXConst6[1][0]) (8-633)

[0502] cpMvLXConst6[1][1]=Clip3(-217 ,2 17 -1,cpMvLXConst6[1][1]) (8-634)

[0503] – The bidirectional prediction weight index bcwIdxConst6 is set equal to bcwIdxCorner[0].

[0504] –Variables availableFlagConst6 and motionModelIdcConst6 are exported as follows:

[0505] – If availableFlagL0 or availableFlagL1 is equal to 1, availableFlagConst6 is set equal to TRUE and motionModelIdcConst6 is set equal to 1.

[0506] Otherwise, availableFlagConst6 is set equal to FALSE and motionModelIdcConst6 is set equal to 0.

[0507] 16. It is suggested that in the process of deriving parameters in the cross-component linear model (CCLM), Log2(X) equations where X is equal to or less than 0 should be avoided.

[0508] a. For example, the process can be conditioned on whether X is greater than 0.

[0509] b. For example, the process can be conditioned on whether X is equal to 0.

[0510] c. The example specification based on JVET-P2001-v9 is modified as follows:

[0511] 8.4.5.2.13 Specification of INTRA_LT_CCLM, INTRA_L_CCLM and INTRA_T_CCLM intra prediction modes

[0512] …

[0513] 7. The variables a, b, and k are derived as follows:

[0514] – If numSampL is equal to 0, and numSampT is equal to 0, then the following applies:

[0515] k=0 (8-211)

[0516] a=0 (8-212)

[0517] b=1<<(BitDepth-1) (8-213)

[0518] – Otherwise, the following applies:

[0519] diff=maxY-minY (8-214)

[0520] – If diff is not equal to 0, the following applies:

[0521] diffC=maxC-minC (8-215)

[0522] x=Floor(Log2(diff)) (8-216)

[0523] normDiff=((diff<<4)>>x)&15 (8-217)

[0524] x+=(normDiff!=0)? 1:0 (8-218)

[0525]

[0526] a=(diffC*(divSigTable[normDiff]|8)+2 y-1 )>>y (8-220)

[0527] k=((3+xy)<1)? 1:3+xy (8-221)

[0528] a=((3+xy)<1)? Sign(a)*15:a (8-222)

[0529] b=minC-((a*minY)>>k) (8-223)

[0530] The divSigTable[] is defined as follows:

[0531] divSigTable[]={0,7,6,5,5,4,4,3,3,2,2,1,1,1,1,0}

[0532] (8-224)

[0533] – Otherwise (diff equals 0) the following applies:

[0534] k=0 (8-225)

[0535] a=0 (8-226)

[0536] b=minC (8-227)

[0537] …

[0538] d. More example specification modifications based on JVET-P2001-v9 are shown below:

[0539] iy=Abs(diffC)>0? Floor(Log2(Abs(diffC)))+1:0:

[0540] ii.y=diffC==0?0:Floor(Log2(Abs(diffC)))+1:

[0541] iii.y=Ceil(Log2(Abs(diffC)+1)))

[0542] 17. It is proposed that division by zero should be avoided during angular intra prediction.

[0543] e. For example, the derivation of invAngle can be conditional on whether intraPredAngle is equal to 0.

[0544] f. The example specification based on JVET-P2001-v9 is modified as follows:

[0545] 8.4.5.2.12 Specification of INTRA_ANGULAR2..INTRA_ANGULAR66 intra prediction modes The input to this process is:

[0546] – Intra prediction mode predModeIntra,

[0547] – variable refIdx, which specifies the intra prediction reference row index,

[0548] – the variable nTbW, which specifies the transform block width,

[0549] – the variable nTbH, which specifies the transform block height,

[0550] – the variable refW, which specifies the reference sample width,

[0551] – variable refH, which specifies the reference sample height,

[0552] – variable nCbW, which specifies the codec block width,

[0553] – variable nCbH, which specifies the codec block height,

[0554] – the variable refFilterFlag, which specifies the value of the reference filter flag,

[0555] – the variable cIdx, which specifies the color component of the current block,

[0556] – Neighboring sample points p[x][y], where x=-1-refIdx, y=-1-refIdx..refH-1 and x=-refIdx..refW-1, y=-1-refIdx.

[0557] The output of this process is the prediction samples predSamples[x][y], where x = 0..nTbW-1, y = 0..nTbH–1.

[0558] The variable nTbS is set equal to (Log2(nTbW)+Log2(nTbH))>>1.

[0559] The variable filterFlag is exported as follows:

[0560] – If one or more of the following conditions are true, filterFlag is set equal to 0.

[0561] –refFilterFlag is equal to 1;

[0562] –refIdx is not equal to 0;

[0563] –IntraSubPartitionsSplitType is not equal to ISP_NO_SPLIT;

[0564] – Otherwise, the following applies:

[0565] – The variable minDistVerHor is set equal to Min(Abs(predModeIntra-50), Abs(predModeIntra-18)).

[0566] – The variable intraHorVerDistThres[nTbS] is defined in Table 8-7.

[0567] –The variable filterFlag is exported as follows:

[0568] – If minDistVerHor is greater than intraHorVerDistThres[nTbS] and refFilterFlag is equal to 0, filterFlag is set equal to 1.

[0569] – Otherwise, filterFlag is set equal to 0.

[0570] Table 8-7 – Specification of intraHorVerDistThres[nTbS] for various transform block sizes nTbS

[0571] nTbS=2 nTbS=3 nTbS=4 nTbS=5 nTbS=6 nTbS=7 intraHorVerDistThres[nTbS] 24 14 2 0 0 0

[0572] Table 8-8 specifies the mapping table between predModeIntra and angle parameter intraPredAngle

[0573] Table 8-8 – Specification of intraPredAngle

[0574] predModeIntra -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 2 3 4 intraPredAngle 512 341 256 171 128 102 86 73 64 57 51 45 39 35 32 29 26 predModeIntra 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 intraPredAngle 23 20 18 16 14 12 10 8 6 4 3 2 1 0 -1 -2 -3 predModeIntra 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 intraPredAngle -4 -6 -8 -10 -12 -14 -16 -18 -20 -23 -26 -29 -32 -29 -26 -23 -20 predModeIntra 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 intraPredAngle -18 -16 -14 -12 -10 -8 -6 -4 -3 -2 -1 0 1 2 3 4 6 predModeIntra 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 intraPredAngle 8 10 12 14 16 18 20 23 26 29 32 35 39 45 51 57 64 predModeIntra 73 74 75 76 77 78 79 80 intraPredAngle 73 86 102 128 171 256 341 512

[0575] The inverse angle parameter invAngle is derived based on intraPredAngle as follows:

[0576]

[0577] …

[0578] 18. Whether and / or how to apply integer sample clipping operations to luma and / or chroma samples may depend on the width and / or height of the reference picture (or its consistency window or its scaling window), and the width and / or height of the current picture (or its consistency window or its scaling window).

[0579] a. In one example, the integer sample clipping operation is applied only when the width and / or height of the reference picture (or its consistency window or its scaling window) is equal to the width and / or height of the current picture (or its consistency window or its scaling window).

[0580] i. Optionally, in addition, if the width or height of the reference picture (or its consistency window or its scaling window) is not equal to the width or height of the current picture (or its consistency window or its scaling window), the integer sample point cropping operation is skipped.

[0581] b. Optionally, whether and / or how integer sample clipping operations are applied to luma and / or chroma samples may depend on the horizontal and / or vertical scaling factors between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).

[0582] i. In one example, the integer sample clipping operation is applied only when the horizontal and / or vertical scaling factor of the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window) is equal to 1.

[0583] ii. Optionally, if the horizontal or vertical scaling factor is not equal to 1, the integer sample cropping operation is skipped.

[0584] c. In one example, the integer sample cropping operation in the horizontal direction is conditioned on the width of the reference picture (or its consistency window or its scaling window) and the width of the current picture (or its consistency window or its scaling window).

[0585] i. In one example, the integer sample cropping operation in the horizontal direction is conditioned on the horizontal scaling factor between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).

[0586] d. In one example, the integer sample cropping operation in the vertical direction is conditioned on the height of the reference picture (or its consistency window or its scaling window) and the height of the current picture (or its consistency window or its scaling window).

[0587] i. In one example, the integer sample cropping operation in the vertical direction is conditioned on the vertical scaling factor between the reference picture (or its consistency window or its scaling window) and the current picture (or its consistency window or its scaling window).

[0588] e. The example specification based on JVET-P2001-v9 is modified as follows:

[0589] 8.5.6.3.2 Luma Sample Interpolation Filtering Process

[0590] …

[0591] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:

[0592] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0593] xInt i =Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xInt L +i-3)(8-754)

[0594] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)(8-755)

[0595] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0596] xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?

[0597] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)

[0598] yInt i = Clip3(0, picH-1, yInt L +i-3)

[0599] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), the luma position in full sample units is further modified as follows, for i=0..7:

[0600] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )

[0601] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )

[0602] Predicted brightness sample value predSampleLX L The export is as follows:

[0603] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,

[0604] Then predSampleLX L The value of is derived as follows:

[0605] predSampleLX L =refPicLX L [xInt3][yInt3]< <shift3

[0606] …

[0607] 8.5.6.3.4 Chroma sample interpolation process

[0608] …

[0609] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), the chroma position (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0610] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (8-774)

[0611] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i ) (8-775)

[0612] …

[0613] f. Another example specification based on JVET-P2001-v9 is modified as follows:

[0614] 8.5.6.3.2 Luma Sample Interpolation Filtering Process

[0615] …

[0616] The brightness position of the full sample point unit (xInt i ,yInt i ) is derived as follows, for i = 0..7:

[0617] – If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies:

[0618] xInt i =Clip3(SubPicLeftBoundaryPos, SubPicRightBoundaryPos, xInt L +i-3)(8-754)

[0619] yInt i =Clip3(SubPicTopBoundaryPos, SubPicBotBoundaryPos, yInt L +i-3)(8-755)

[0620] – Otherwise (subpic_treated_as_pic_flag[SubPicIdx] is equal to 0) the following applies:

[0621] xInti =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag?

[0622] ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY, picW, xInt L +i-3):xInt L +i-3)

[0623] yInt i = Clip3(0, picH-1, yInt L +i-3)

[0624] The brightness position of the full sample unit is further modified as follows, for i = 0..7:

[0625] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then

[0626] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )

[0627] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then

[0628] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )

[0629] Predicted brightness sample value predSampleLX L The export is as follows:

[0630] – If xFrac L and yFrac L are both equal to 0, and hori_scale_fp and vert_scale_fp are both less than 20481,

[0631] Then predSampleLX L The value of is derived as follows:

[0632] predSampleLX L=refPicLX L [xInt3][yInt3]< <shift3

[0633] …

[0634] 8.5.6.3.4 Chroma sample interpolation process

[0635] …

[0636] Chroma position in full sample units (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0637] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then

[0638] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (8-774)

[0639] If hori_scale_fp is equal to (1<<14) and vert_scale_fp is equal to (1<<14), then

[0640] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i ) (8-775)

[0641] …

[0642] g. In one example, whether to apply the integer sample cropping operation may depend on the width and / or height of the reference pictures (or their consistency windows or their scaling windows) of the two reference lists, and the width and / or height of the current picture (or their consistency windows or their scaling windows).

[0643] i. In one example, the integer sample cropping operation is applied only when the width and / or height of all reference pictures (e.g., from reference list 0 or from reference list 1, or from both) used by the current block (or its consistency window or its scaling window) is equal to the width and / or height of the current picture (or its consistency window or its scaling window).

[0644] 1) Alternatively, in addition, if the width or height of any reference picture (e.g., from reference list 0 or from reference list 1) used by the current block (or its consistency window or its scaling window) is not equal to the width or height of the current picture (or its consistency window or its scaling window), the integer sample point cropping operation will be skipped.

[0645] h. The example specification based on JVET-P2001-v14 is modified as follows:

[0646] 8.5.6.3.2 Luma Sample Interpolation Filtering Process

[0647] The inputs to this process are:

[0648] – Luminance position of all sample points (xInt L ,yInt L ),

[0649] …

[0650] If RefPicIsScaled[0][refIdxL0] is equal to 0 and RefPicIsScaled[1][refIdxL1] etc. At 0, Then the brightness position of all sample points is further modified as follows, for i = 0..7:

[0651] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) (959)

[0652] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) (960)

[0653] Predicted brightness sample value predSampleLX L The export is as follows:

[0654] …

[0655] 8.5.6.3.4 Chroma sample interpolation process

[0656] The inputs to this process are:

[0657] – Chroma position in full sample units (xInt C ,yInt C ),

[0658] …

[0659] If RefPicIsScaled[0][refIdxL0] is equal to 0 and RefPicIsScaled[1][refIdxL1] etc. At 0,Then the chromaticity position of all sample points (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0660] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (975)

[0661] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i ) (976)

[0662] Predicted chroma sample value predSampleLX C The export is as follows:

[0663] …

[0664] i. In one example, whether to apply the integer sample clipping operation may depend on whether to apply DMVR.

[0665] j. The example specification based on JVET-P2001-v14 is modified as follows:

[0666] 8.5.6.3.2 Luma Sample Interpolation Filtering Process

[0667] The inputs to this process are:

[0668] – Luminance position of all sample points (xInt L ,yInt L ),

[0669] …

[0670] If dmvrFlag is equal to 1, the luma position of the full sample unit is further modified as follows, for i = 0..7:

[0671] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) (959)

[0672] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) (960)

[0673] Predicted brightness sample value predSampleLX L The export is as follows:

[0674] …

[0675] 8.5.6.3.4 Chroma sample interpolation process

[0676] The inputs to this process are:

[0677] – Chroma position in full sample units (xInt C ,yInt C ),

[0678] …

[0679] If dmvrFlag is equal to 1, the chroma position (xInt i ,yInt i ) is further modified as follows, for i=0..3:

[0680] xInt i =Clip3(xSbIntC-1,xSbIntC+sbWidth+2,xInt i ) (975)

[0681] yInt i =Clip3(ySbIntC-1,ySbIntC+sbHeight+2,yInt i ) (976)

[0682] Predicted chroma sample value predSampleLX C The export is as follows:

[0683] …

[0684] 19. Whether and / or how integer sample clipping operations are applied on luma and / or chroma samples may depend on whether codec tool X is applied. (eg, X is decoder-side motion vector refinement (DMVR)).

[0685] a. In one example, the integer sample clipping operation is applied only when codec tool X is applied.

[0686] b. In one example, the integer sample clipping operation is applied only when codec tool X is not applied.

[0687] GEO-related

[0688] 20. Which angles / distances are allowed in GEO may depend on decoding information (eg, relevant syntax elements, block dimensions).

[0689] a. In one example, which angle / distance can be made in GEO depends on the block dimension.

[0690] i. In one example, one set of angles / distances may be used for block dimension A (eg, A may indicate a block that is taller than it is wide), while another set of angles / distances may be used for block dimension B (eg, B may indicate a block that is not taller than it is wide).

[0691] b. In one example, how to map the GEO mode index to the angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).

[0692] c. In one example, how to map the decoded / signaled GEO mode index to the GEO mode index used to derive the GEO angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).

[0693] d. In one example, how to map the decoded / signaled GEO mode index to the GEO angle / distance index may depend on the decoded information (eg, relevant syntax elements, block dimensions).

[0694] e. The example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is changed as follows, where the newly added text starts with Deleted text is indicated by square brackets [[ ]].

[0695] 8.5.7 Decoding process of GEO inter-frame blocks

[0696] 8.5.7.1 Overview

[0697] This process is called when decoding a codec unit where MergeGeoFlag[xCb][yCb] is equal to 1.

[0698] The inputs to this process are:

[0699] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,

[0700] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,

[0701] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,

[0702] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,

[0703] – Chroma motion vectors mvCA and mvCB,

[0704] – reference indexes refIdxA and refIdxB,

[0705] –Prediction list flags predListFlagA and predListFlagB.

[0706] The output of this process is:

[0707] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0708] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0709] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .

[0710] Let predSamplesLA L and predSamplesLB L predSamplesLA is an array of (cbWidth) x (cbHeight) of predicted luminance sample values Cb ,predSamplesLB Cb , and let predSamplesLA Cr and predSamplesLB Cr An array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predicted chroma sample values.

[0711] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:

[0712] 1. For each of N in A and B, the following applies:

[0713] – Derives the ordered two-dimensional array refPicLN of luma samples by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input Land two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.

[0714] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .

[0715] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .

[0716] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr, variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .

[0717] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.

[0718] 3. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input , set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx[xCb][yCb] specified in Table 36[[].

[0719] 4. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.

[0720] 5. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb, variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0721] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0722] 7. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0723] Table 36 – Specification of angleIdx and distanceIdx values ​​based on merge_geo_partition_idx value.

[0724] Fig. 9A and 9B An example embodiment of Table 36 is shown.

[0725] i. Another example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes should be as follows:

[0726] 8.5.6 Decoding of GEO inter-frame blocks

[0727] 8.5.7.1 Overview

[0728] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.

[0729] The inputs to this process are:

[0730] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,

[0731] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,

[0732] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,

[0733] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,

[0734] – Chroma motion vectors mvCA and mvCB,

[0735] – reference indexes refIdxA and refIdxB,

[0736] –Prediction list flags predListFlagA and predListFlagB.

[0737] The output of this process is:

[0738] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0739] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0740] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .

[0741] Let predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0742] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:

[0743] 2. For N to be each of A and B, then the following applies:

[0744] – Derives the ordered two-dimensional array refPicLN of luma samples by invoking the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input L and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.

[0745] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .

[0746] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .

[0747] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cr Set equal to refPicLN Cr , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .

[0748] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.

[0749] 3. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input , set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx[xCb][yCb] specified in Table 36[[].

[0750] 4. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.

[0751] 5. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0752] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][yC ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0753] 7. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0754] Table 36 – Specification of angleIdx and distanceIdx values ​​based on merge_geo_partition_idx value.

[0755] Fig. 9C and 9D An example of this embodiment of Table 36 is shown.

[0756] f. Another example specification change based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is as follows:

[0757] 8.5.7 Decoding process of GEO inter-frame blocks

[0758] 8.5.7.1 Overview

[0759] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.

[0760] The inputs to this process are:

[0761] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,

[0762] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,

[0763] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,

[0764] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,

[0765] – Chroma motion vectors mvCA and mvCB,

[0766] – reference indexes refIdxA and refIdxB,

[0767] –Prediction list flags predListFlagA and predListFlagB.

[0768] The output of this process is:

[0769] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0770] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0771] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .

[0772] Let predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr is a (cbWidth / SubWidthC)x(cbHeight / SubHeightC) array of predicted chroma sample values.

[0773] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:

[0774] 3. For N to be each of A and B, then the following applies:

[0775] – Invoke the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input, deriving an ordered two-dimensional array of luma samples refPicLNL and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.

[0776] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L , variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .

[0777] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .

[0778] – The luma position is the luma position (xCb, yCb), the codec block width sbWidth is set equal to cbWidth / SubWidthC, the codec block height sbHeight is set equal to cbHeight / SubHeightC, the motion vector offset mvOff is set equal to (0, 0), the motion vector mvLX is set equal to mvCN, and the reference array refPicLX Cr Set equal to refPicLN Cr, variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .

[0779] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.

[0780] 3. According to the value of merge_geo_parition_idx[xCb][yCb] and the codec block width as specified in Table xx cbWidth and codec block height cbHeight, set the value of merge_geo_parition_idx'[xCb][yCb].

[0781] 4. Set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx'[xCb][yCb] specified in Table 36.

[0782] 5. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.

[0783] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb, variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0784] 7. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cr and predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0785] 8. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0786] Fig.9E This embodiment of Table xx - a mapping table of geo_partition_idx' values ​​based on geo_partition_idx values ​​is shown.

[0787] Fig.9FThis embodiment of Table 36 - Specification of angleIdx and distanceIdx values ​​based on merge_geo_partition_idx value is shown.

[0788] g. Another example specification based on JVET-Q0160_CE4_1_CommonBaseWD_w_fixes is changed as follows:

[0789] 8.5.7 Decoding process of GEO inter-frame blocks

[0790] 8.5.7.1 Overview

[0791] This process is involved when decoding a codec where MergeGeoFlag[xCb][yCb] is equal to 1.

[0792] The inputs to this process are:

[0793] – Luma position (xCb, yCb), which specifies the top left sample of the current codec block relative to the top left luma sample of the current picture,

[0794] – The variable cbWidth specifies the width of the current codec block expressed in luminance samples,

[0795] – The variable cbHeight specifies the height of the current codec block expressed in luminance samples,

[0796] – Luma motion vectors mvA and mvB expressed with 1 / 16 fractional sample precision,

[0797] – Chroma motion vectors mvCA and mvCB,

[0798] – reference indexes refIdxA and refIdxB,

[0799] –Prediction list flags predListFlagA and predListFlagB.

[0800] The output of this process is:

[0801] – (cbWidth) x (cbHeight) array of brightness prediction samples predSamples L ,

[0802] – predSamples array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) chroma prediction samples for component Cb Cb ,

[0803] – Array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predSamples of chroma prediction samples of component Cr Cr .

[0804] Let predSamplesLA L and predSamplesLB L is the (cbWidth)x(cbHeight) array of predicted luma sample values, and let predSamplesLA Cb ,predSamplesLB Cb ,predSamplesLA Cr and predSamplesLB Cr An array of (cbWidth / SubWidthC)x(cbHeight / SubHeightC) predicted chroma sample values.

[0805] predSamples L ,predSamples Cb and predSamples Cr Use the following sequence of steps to export:

[0806] 4. For N to be each of A and B, the following applies:

[0807] – Invoke the process specified in clause 8.5.6.2 with X set equal to predListFlagN and refIdxX set equal to refIdxN as input, deriving an ordered two-dimensional array of luma samples refPicLN L and two ordered two-dimensional arrays of chrominance samples refPicLN Cb and refPicLN Cr Reference pictures for composition.

[0808] – With luma position (xCb, yCb), luma codec block width sbWidth is set equal to cbWidth, luma codec block height sbHeight is set equal to cbHeight, motion vector offset mvOffset is set equal to (0, 0), motion vector mvLX is set equal to mvN, reference array refPicLX L Set equal to refPicLN L, variable bdofFlag set equal to FALSE, variable cIdx set equal to 0, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 L .

[0809] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cb Set equal to refPicLN Cb , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cb .

[0810] – With luma position (xCb, yCb), codec block width sbWidth is set equal to cbWidth / SubWidthC, codec block height sbHeight is set equal to cbHeight / SubHeightC, motion vector offset mvOff is set equal to (0, 0), motion vector mvLX is set equal to mvCN, reference array refPicLX Cr Set equal to refPicLN Cr , variable bdofFlag set equal to FALSE, variable cIdx set equal to 1, and RefPicScale[predListFlagN][refIdxN] as input, derive the array predSamplesLN by calling the fractional sample interpolation process specified in clause 8.5.6.3 Cr .

[0811] 2. With the value of merge_geo_partition_idx[xCb][yCb] and the variable isNarrowBlk set equal to cbHeight>cbWidth as input, set the partition angle and distance of the Merge GEO mode variables angleIdx and distanceIdx according to Table 36.

[0812] 3. According to the value of merge_geo_parition_idx[xCb][yCb] and the codec block as specified in Table xx The width cbWidth and the codec block height cbHeight set the value of merge_geo_parition_idx'[xCb][yCb].

[0813] 4. Set the partition angle and distance angleIdx and distanceIdx of the Merge GEO mode variables according to the value of merge_geo_partition_idx'[xCb][yCb] specified in Table 36.

[0814] 5. Set the codec block width nCbW to cbWidth, the codec block height nCbH to cbHeight, and the sample array predSamplesLA L and predSamplesLB L , variables angleIdx and distanceIdx, and cIdx equal to 0 as input, derive the predicted samples predSamples within the current luma codec block by calling the weighted sample prediction process of the Merge GEO mode specified in clause 8.5.7.2 L [x L ][y L ], where x L =0..cbWidth-1 and y L =0..cbHeight-1.

[0815] 6. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Cb and predSamplesLB Cb , variables angleIdx and distanceIdx, and cIdx equal to 1 as input, and the prediction samples predSamples in the current chrominance component Cb codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cb [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0816] 7. Set the codec block width nCbW to be equal to cbWidth / SubWidthC, the codec block height nCbH to be equal to cbHeight / SubHeightC, and the sample array predSamplesLA Crand predSamplesLB Cr , variables angleIdx and distanceIdx, and cIdx equal to 2 as input, and the prediction samples predSamples in the current chrominance component Cr codec block are derived by calling the weighted sample prediction process of the MergeGEO mode specified in Section 8.5.7.2 Cr [x C ][y C ], where x C =0..cbWidth / SubWidthC-1 and y C =0..cbHeight / SubHeightC-1.

[0817] 8. Call the motion vector storage process of the Merge GEO mode specified in Section 8.5.7.3 with the luma codec block position (xCb, yCb), luma codec block width cbWidth, luma codec block height cbHeight, segmentation directions angleIdx and distanceIdx, luma motion vectors mvA and mvB, reference indices refIdxA and refIdxB, and prediction list flags predListFlagA and predListFlagB as input.

[0818] Figure 9G An example of Table xx - a mapping table of geo_partition_idx' values ​​based on geo_partition_idx values ​​is shown.

[0819] Figure 9H Table 36 - Specification of angleIdx and distanceIdx values ​​based on merge_geo_partition_idx value is shown.

[0820] Advanced Syntax

[0821] Definition of intra-frame slices / pictures

[0822] 21. Instead of defining an intra (I) slice (or picture) as a slice decoded using only intra prediction, it is proposed to define an intra slice as a slice (or picture) decoded not using inter prediction.

[0823] a. Alternatively, it is proposed to define an intra slice as a slice that is decoded without reference to any picture (not the picture containing the slice).

[0824] b. Alternatively, it is proposed to define intra slices as slices decoded using intra prediction or intra block copy (IBC) prediction or palette prediction mode.

[0825] 22. It is proposed to define intra pictures as pictures that are not decoded using inter-frame prediction.

[0826] c. Alternatively, it is proposed to define an intra picture as a picture that is decoded without reference to any picture (not the picture containing the slice).

[0827] d. Alternatively, it is proposed to define an intra picture as a picture decoded using intra prediction or intra block copy (IBC) prediction or palette prediction mode.

[0828] Range of the number of sub-pictures to be signaled

[0829] 23. The consistency bitstream shall satisfy the following requirements: When sub-pictures exist, the number of sub-pictures shall be no less than 2.

[0830] a. Alternatively, additionally, the signaled sps_num_subpics_minus1 should be in the range of 1 to N (eg, N=254).

[0831] b. Alternatively, in addition, the signaled sps_num_subpics_minus1 is replaced by sps_num_subpics_minus2, where sps_num_subpics_minus2 plus 2 specifies the number of sub-pictures.

[0832] i. Alternatively, additionally, the value of sps_num_subpics_minus2 should be in the range of 0 to (N-1) (eg, N=254).

[0833] 24. Replace syntax elements that depend on the sub-picture presence flag (eg, subpics_present_flag) (eg, whether the syntax element or the semantics of the syntax element is signaled) by checking whether sps_num_subpics_minus1 is equal to 0.

[0834] Figure 3 is a block diagram of a video processing device 300. The device 300 may be used to implement one or more methods described herein. The device 300 may be embodied in a smartphone, a tablet computer, a computer, an Internet of Things (IoT) receiver, etc. The device 300 may include one or more processors 302, one or more memories 304, and video processing hardware 306. The processor(s) 302 may be configured to implement one or more methods described in this document. The memory(s) 304 may be used to store data and code for implementing the methods and techniques described herein. The video processing hardware 306 may be used to implement some of the techniques described herein in hardware circuits. In some embodiments, the hardware 306 may be at least partially inside the processor 302 (e.g., a graphics coprocessor).

[0835] Figure 6 is a block diagram illustrating an exemplary video coding system 100 that may utilize the techniques of this disclosure.

[0836] like Figure 6 As shown, the video codec system 100 may include a source device 110 and a destination device 120. The source device 110 generates encoded video data, which may be referred to as a video encoding device. The destination device 120 may decode the encoded video data generated by the source device 110, which may be referred to as a video decoding device.

[0837] Source device 110 may include a video source 112 , a video codec 114 , and an input / output (I / O) interface 116 .

[0838] The video source 112 may include sources such as a video capture device, an interface for receiving video data from a video content provider, and / or a computer graphics system for generating video data, or a combination of these sources. The video data may include one or more pictures. The video codec 114 encodes the video data from the video source 112 to generate a bit stream. The bit stream may include a bit sequence that forms a codec representation of the video data. The bit stream may include a codec picture and related data. The codec picture is a codec representation of the picture. Related data may include a sequence parameter set, a picture parameter set, and other grammatical structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The encoded video data may be directly sent to the destination device 120 via the network 130a via the I / O interface 116. The encoded video data may also be stored on a storage medium / server 130b for access by the destination device 120.

[0839] Destination device 120 may include an I / O interface 126 , a video decoder 124 , and a display device 122 .

[0840] The I / O interface 126 may include a receiver and / or a modem. The I / O interface 126 may obtain the encoded video data from the source device 110 or the storage medium / server 130b. The video decoder 124 may decode the encoded video data. The display device 122 may display the decoded video data to the user. The display device 122 may be integrated with the destination device 120, or may be external to the destination device 120 configured to interface with an external display device.

[0841] The video encoder 114 and the video decoder 124 may operate according to a video compression standard, such as the current High Efficiency Video Coding (HEVC) standard, the VVM standard, and other current and / or future standards.

[0842] Figure 7is a block diagram showing an example of a video encoder 200, which may be Figure 6 The video encoder 114 in the system 100 is shown.

[0843] Video encoder 200 may be configured to perform any or all of the techniques of this disclosure. Figure 7 In the example of , video encoder 200 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video encoder 200. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.

[0844] The functional components of the video encoder 200 may include a segmentation unit 201, a prediction unit 202 which may include a mode selection unit 203, a motion estimation unit 204, a motion compensation unit 205 and an intra-frame prediction unit 206, a residual generation unit 207, a transform unit 208, a quantization unit 209, an inverse quantization unit 210, an inverse transform unit 211, a reconstruction unit 212, a buffer 213 and an entropy coding unit 214.

[0845] In other examples, the video encoder 200 may include more, fewer, or different functional components. In an example, the prediction unit may include an intra-block copy (IBC) unit. The IBC unit may perform prediction in IBC mode, where at least one reference picture is a picture where the current video block is located.

[0846] Furthermore, some components (such as the motion estimation unit 204 and the motion compensation unit 205) may be highly integrated, but for the purpose of explanation, they are described in detail in the following sections. Figure 7 In the example, they are represented separately.

[0847] The partitioning unit 201 may partition the current picture into one or more video blocks. The video encoder 200 and the video decoder 300 may support various video block sizes.

[0848] The mode selection unit 203 may select one of the coding modes (intra or inter) based on the error result, for example, and provide the resulting intra or inter coded block to the residual generation unit 207 to generate residual block data, and to the reconstruction unit 212 to reconstruct the coded block for use as a reference picture. In some examples, the mode selection unit 203 may select a combined intra-frame inter-frame (CIIP) mode in which the prediction is based on an inter-frame prediction signal and an intra-frame prediction signal. In the case of inter-frame prediction, the mode selection unit 203 may also select a resolution for the motion vector of the block (e.g., sub-pixel or integer pixel precision).

[0849] To perform inter-frame prediction on the current video block, the motion estimation unit 204 may generate motion information of the current video block by comparing the current video block with one or more reference frames from the buffer 213. The motion compensation unit 205 may determine a predicted video block of the current video block based on motion information and decoded samples of a picture (different from the picture associated with the current video block) (e.g., a reference picture) from the buffer 213.

[0850] For example, motion estimation unit 204 and motion compensation unit 205 may perform different operations on the current video block depending on whether the current video block is in an I slice, a P slice, or a B slice.

[0851] In some examples, the motion estimation unit 204 may perform unidirectional prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0 or list 1. Then, the motion estimation unit 204 may generate a reference index indicating a reference picture in list 0 or list 1 containing the reference video block and a motion vector indicating a spatial displacement between the current video block and the reference video block. The motion estimation unit 204 may output the reference index, the prediction direction indicator, and the motion vector as motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current block based on the reference video block indicated by the motion information of the current video block.

[0852] In other examples, the motion estimation unit 204 may perform bidirectional prediction on the current video block, and the motion estimation unit 204 may search for a reference video block of the current video block in the reference pictures of list 0, and may also search for another reference video block of the current video in the reference pictures of list 1. Then, the motion estimation unit 204 may generate a reference index indicating a reference picture in list 0 or list 1 containing the reference video block and a motion vector indicating a spatial displacement between the reference video block and the current video block. The motion estimation unit 204 may output the reference index and the motion vector of the current video block as the motion information of the current video block. The motion compensation unit 205 may generate a predicted video block of the current video block based on the reference video block indicated by the motion information of the current video block.

[0853] In some examples, motion estimation unit 204 does not output a full set of motion information for the current video (e.g., to entropy coding unit 214). Instead, motion estimation unit 204 may reference motion information of another video block to signal motion information for the current video block. For example, motion estimation unit 204 may determine that the motion information of the current video block is sufficiently similar to the motion information of an adjacent video block.

[0854] In one example, motion estimation unit 204 may indicate a value in a syntax structure associated with the current video block that indicates to video decoder 300 that the current video block has the same motion information as another video block.

[0855] In another example, the motion estimation unit 204 may identify another video block and a motion vector difference (MVD) in a syntax structure associated with the current video block. The motion vector difference indicates the difference between the motion vector of the current video block and the motion vector of the indicated video block. The video decoder 300 may use the motion vector of the indicated video block and the motion vector difference to determine the motion vector of the current video block.

[0856] As described above, the video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by the video encoder 200 include Advanced Motion Vector Prediction (AMVP) and Merge mode signaling.

[0857] The intra prediction unit 206 may perform intra prediction on the current video block. When the intra prediction unit 206 performs intra prediction on the current video block, the intra prediction unit 206 may generate prediction data for the current video block based on decoded samples of other video blocks in the same picture. The prediction data for the current video block may include the predicted video block and various syntax elements.

[0858] The residual generation unit 207 may generate residual data for the current video block by subtracting (e.g., indicated by a minus sign) the prediction video block(s) of the current video block from the current video block. The residual data for the current video block may include residual video blocks corresponding to different sample components of the samples in the current video block.

[0859] In other examples, such as in skip mode, there may be no residual data for the current video block, and the residual generation unit 207 may not perform a subtraction operation.

[0860] Transform processing unit 208 may generate one or more transform coefficient video blocks for a current video block by applying one or more transforms to the residual video block associated with the current video block.

[0861] After transform processing unit 208 generates a transform coefficient video block associated with the current video block, quantization unit 209 may quantize the transform coefficient video block associated with the current video block based on a quantization parameter (QP) value associated with the current video block.

[0862] The inverse quantization unit 210 and the inverse transform unit 211 may apply inverse quantization and inverse transform to the transform coefficient video block, respectively, to reconstruct the residual video block from the transform coefficient video block. The reconstruction unit 212 may add the reconstructed residual video block to the corresponding samples of one or more prediction video blocks generated by the prediction unit to generate a reconstructed video block associated with the current block to be stored in the buffer 213.

[0863] After the reconstruction unit 212 reconstructs the video block, a loop filtering operation may be performed to reduce video block artifacts in the video block.

[0864] The entropy coding unit 214 may receive data from other functional components of the video encoder 200. When the entropy coding unit 214 receives the data, the entropy coding unit 214 may perform one or more entropy coding operations to generate entropy-coded data and output a bitstream including the entropy-coded data.

[0865] Figure 8 It shows that it can be Figure 6 1 is a block diagram of an example of a video decoder 300 of the video decoder 114 in the system 100 shown. The video decoder 300 may be configured to perform any or all of the techniques of the present disclosure. Figure 8 In the example of , video decoder 300 includes multiple functional components. The techniques described in this disclosure can be shared between the various components of video decoder 300. In some examples, a processor can be configured to perform any or all of the techniques described in this disclosure.

[0866] exist Figure 8 In the example of FIG. 3 , the video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra-frame prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, and a reconstruction unit 306 and a buffer 307. In some examples, the video decoder 300 may perform the encoding pass generally described with respect to the video codec 200 ( Figure 7 )The opposite decoding pass.

[0867] The entropy decoding unit 301 may retrieve an encoded bitstream. The encoded bitstream may include entropy-encoded video data (e.g., encoded blocks of video data). The entropy decoding unit 301 may decode the entropy-encoded video data, and the motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list indexes, and other motion information from the entropy-decoded video data. For example, the motion compensation unit 302 may determine this information by performing AMVP and Merge modes.

[0868] Motion compensation unit 302 may use the motion vectors and / or MVDs received in the bitstream to identify predicted video blocks in reference pictures in buffer 307 .

[0869] The motion compensation unit 302 generates a motion compensated block, possibly performing interpolation based on an interpolation filter. An identifier of an interpolation filter used for motion estimation with sub-pixel precision may be included in the syntax element.

[0870] The motion compensation unit 302 may calculate interpolated values ​​of sub-integer pixels of the reference block using the interpolation filter used by the video codec 200 during video block encoding. The motion compensation unit 302 may determine the interpolation filter used by the video codec 200 according to the received syntax information, and use the interpolation filter to generate a prediction block.

[0871] The motion compensation unit 302 may use some syntax information to determine the size of blocks used to encode (multiple) frames and / or (multiple) slices of the encoded video sequence, partitioning information describing how each macroblock of a picture of the encoded video sequence is partitioned, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-frame coded block, and other information for decoding the encoded video sequence.

[0872] The intra prediction unit 303 may form a prediction block from spatially neighboring blocks using, for example, an intra prediction mode received in the bitstream. The inverse quantization unit 304 inversely quantizes (ie, dequantizes) the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 305 applies an inverse transform.

[0873] The reconstruction unit 306 may add the residual block to the corresponding prediction block generated by the motion compensation unit 202 or the intra prediction unit 303 to form a decoded block. If necessary, a deblocking filter may also be applied to filter the decoded block to remove blocking artifacts. The decoded video block is then stored in a buffer 307, which provides reference blocks for subsequent motion compensation and also produces decoded video for presentation on a display device.

[0874] In some embodiments, the following solutions may be implemented as preferred solutions.

[0875] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 1).

[0876] 1. A video processing method (eg, Figure 4 The method 400 shown includes: for a conversion between a current block of a video and a coded representation of the video, determining (402) that a current picture containing the current block and a reference picture used for the conversion have different resolutions, and performing (404) the conversion based on the determination so that a horizontal or vertical interpolation filter is used to generate a predicted value for a sample group of the current block.

[0877] 2. The method according to solution 1, wherein the sample group corresponds to all samples of the current block.

[0878] 3. The method according to solution 1, wherein the sample group corresponds to some samples of the current block.

[0879] 4. The method according to solution 3, wherein the sample point group corresponds to all sample points of a certain area in the current block.

[0880] 5. The method according to any of solutions 1-4, wherein the sample groups are selected to have the same motion vector (MV) used during conversion.

[0881] 6. The method according to any one of solutions 1-4, wherein the sample point groups have the same horizontal motion vector component.

[0882] 7. The method according to any one of solutions 1-4, wherein the sample point groups have the same vertical motion vector component.

[0883] 8. The method according to any one of solutions 1-4, wherein the sample groups have the same fractional horizontal motion vector component part.

[0884] 9. The method according to any one of solutions 1-4, wherein the sample groups have the same fractional vertical motion vector component part.

[0885] 10. A method according to any one of solutions 1-9, wherein, during conversion, the motion vector of a specific sample point is derived by modifying the value of the motion vector derived based on the resolution of the current picture and the resolution of the reference picture through a modification step (including truncation, clipping or rounding).

[0886] 11. A method according to any of solutions 1-7, wherein during conversion, the motion vector of a particular sample is set equal to the value of a shared motion vector shared by all samples in a sample group.

[0887] 12. A method according to any of solutions 1-9, wherein the sample group shares a shared motion vector during conversion, and wherein the shared motion vector is derived from the motion vector of one or more samples in the sample group.

[0888] 13. The method according to solution 11, wherein the shared motion vector is further derived from the virtual samples.

[0889] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 6).

[0890] 14. A video processing method, comprising: for a conversion between a current block of a video and a codec representation of the video, determining that the resolutions of a current picture containing the current block and a reference picture used for the conversion are different, and performing the conversion based on the determination so that a predicted value of a sample point group of the current block is generated as an interpolated version of a virtual reference block, the interpolated version of the virtual reference block being generated by changing a sampling rate of an area in a reference picture, wherein the sampling rate change depends on the height or width of the current picture or the reference picture.

[0891] 15. The method of solution 14, wherein the interpolated version is generated using an interpolation filter whose coefficients do not depend on the height or width of the current picture or the reference picture.

[0892] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 6).

[0893] 16. A video processing method, comprising: for a conversion between a current block of a video and a codec representation of the video, determining that a current picture containing the current block and a reference picture used for the conversion have different resolutions, and based on the determination, based on a scheme that depends on the height or width of the current picture or the reference picture, deriving an upper left coordinate of a boundary block used for reference sample filling, and performing the conversion using the derived upper left coordinate of the boundary box.

[0894] 17. The method of solution 16, wherein the solution includes calculating the luma samples at integer sample positions as:

[0895] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),

[0896] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),

[0897] Where Dx and / or Dy and / or Ux and / or Uy depend on the width and / or height of the current picture or the reference picture, and where (xSbInt L ,ySbInt L ) is the upper left coordinate.

[0898] 18. The method of solution 16, wherein the solution includes calculating the chrominance samples at integer sample positions as:

[0899] xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti)

[0900] yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti)

[0901] Where Dx and / or Dy and / or Ux and / or Uy depend on the width and / or height of the current picture or the reference picture, and where (xSbInt L ,ySbInt L ) is the upper left coordinate.

[0902] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 7).

[0903] 19. A video processing method, comprising: for conversion between a current block in a current picture of a video and a codec representation of the video, based on the use of decoder-side motion vector refinement (DMVR) during the conversion of the current block, determining a shearing operation applied to motion vector calculation according to a limiting block used for reference sample point filling; and performing conversion based on the shearing operation.

[0904] 20. The method of solution 19, wherein enabling a conventional cropping operation is determined due to DMVR being used for the current block.

[0905] 21. A method according to any of solutions 19-20, wherein the current block is a chroma block.

[0906] The following solution can be implemented with the additional techniques described in the items listed in the previous section (eg, item 8).

[0907] 22. A video processing method, comprising: for conversion between a current block in a current picture of a video and a codec representation of the video, based on the use of picture wrapping in the conversion, determining a shearing operation applied to motion vector calculation according to a limiting block used for reference sample point filling; and performing the conversion based on the shearing operation.

[0908] 23. The method according to solution 22, wherein enabling the traditional cropping operation is determined only when picture wrapping is disabled for the current block.

[0909] 24. A method according to any of solutions 22-23, wherein the current block is a chroma block.

[0910] 25. A method according to any of solutions 22-23, wherein a clipping operation is used to calculate the luma samples as:

[0911] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),

[0912] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),

[0913] where Dx and / or Dy and / or Ux and / or Uy depend on the use of picture wrapping, and where (xSbInt L ,ySbInt L ) indicates a limit block.

[0914] 26. A method according to any of solutions 1-25, wherein the conversion includes encoding the video into a codec representation.

[0915] 27. A method according to any one of solutions 1-25, wherein the conversion includes decoding a codec representation to generate pixel values ​​of a video.

[0916] 28. A video decoding device, comprising a processor, wherein the processor is configured to implement one or more of the methods described in solutions 1-27.

[0917] 29. A video encoding and decoding device, comprising a processor, wherein the processor is configured to implement one or more of the methods described in solutions 1-27.

[0918] 30. A computer program product having computer codes stored thereon, which, when executed by a processor, cause the processor to implement the method of any one of solutions 1-27.

[0919] 31. A method, apparatus or system as herein described.

[0920] Various examples of preferred embodiments of the disclosed technology are described below. In these examples, video encoding or decoding based on various rules is described. For example, these rules involve under what conditions (and only under these conditions) the clipping operation can be used to ensure that the motion vector points to the actual sample point in the reference frame, rather than pointing outside the reference frame.

[0921] The following examples may be implemented with the additional techniques described in the items listed in the previous section (eg, item 7).

[0922] 1. A video processing method (eg, Fig. 10A The method 1000 shown includes: making a first determination (1002) as to whether a decoder-side motion vector refinement (DMVR) tool is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination (1004) according to a rule as to whether or how to clip a motion vector according to a limiting block for reference sample filling in a reference picture used to determine a prediction block for the current block; and performing (1006) the conversion based on the first determination and the second determination; wherein the DMVR tool is used to refine the encoded motion vector from the codec representation before being used to determine the prediction block.

[0923] 2. A method according to Example 1, wherein the rule stipulates that when the DMVR tool is enabled for the current block, the motion vector is clipped according to the limiting block; otherwise, when the DMVR tool is disabled for the current block, the motion vector is not clipped according to the limiting block.

[0924] 3. The method of example 1-2, wherein, when the DMVR tool is enabled for the current block, using clipping is represented as (xInt i ,yInt i ) are clipped as follows:

[0925] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )

[0926] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )

[0927] Where (xSbInt L ,ySbInt L ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and function Clip3() is defined as:

[0928]

[0929] 4. The method of example 1-2, wherein, when the DMVR tool is enabled for the current block, using clipping to represent (xInt i ,yInt i ) are clipped as follows:

[0930] xInt i =Clip3(xSbInt C -3,xSbInt L +sbWidth+4,xInt i )

[0931] yInt i =Clip3(ySbInt C -3,ySbInt L +sbHeight+4,yInt i )

[0932] Where (xSbInt C ,ySbInt C ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and function Clip3() is defined as:

[0933]

[0934] 5. The method of any one of Examples 1-4, wherein a syntax element indicating whether the DMVR is enabled is included in the codec representation.

[0935] The following examples may be implemented with the additional techniques described in the items listed in the previous section (eg, item 8).

[0936] 6. A video processing method (e.g., Fig. 10B The method 1010 shown in ), includes: making a first determination (1012) as to whether reference picture wrapping is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination (1014) according to a rule as to whether or how to clip a motion vector according to a limiting block for reference sample filling in a reference picture used to determine a prediction block of the current block; and performing (1016) the conversion based on the first determination and the second determination.

[0937] 7. A method according to Example 6, wherein the rule specifies that the motion vector is clipped according to the limiting block when the reference picture wrapping is enabled for the current block; otherwise, the motion vector is not clipped according to the limiting block when the reference picture wrapping is not available for the current block.

[0938] 8. The method of Examples 6-7, wherein the expression (xInt i ,yInt i ) are clipped as follows:

[0939] xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i )

[0940] yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i )

[0941] Where (xSbInt L ,ySbInt L ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and function Clip3() is defined as:

[0942]

[0943] 9. The method of Examples 6-7, wherein the expression (xInt i ,yInt i ) are clipped as follows:

[0944] xInt i =Clip3(xSbInt C -3,xSbInt L +sbWidth+4,xInt i )

[0945] yInt i =Clip3(ySbInt C -3,ySbInt L +sbHeight+4,yInt i )

[0946] Where (xSbIntC ,ySbInt C ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and function Clip3() is defined as:

[0947]

[0948] 10. The method of any one of Examples 6-9, wherein a syntax element indicating whether the reference picture wrapping is enabled for the current block is included in the codec representation.

[0949] 11. The method of any one of Examples 6-10, wherein a motion vector pointing outside the bounding block is wrapped using a reference picture wrap to point to a reference sample within the bounding block.

[0950] The following examples may be implemented with the additional techniques described in the items listed in the previous section (eg, item 19).

[0951] 12. A video processing method (eg, Fig. 10C The method 1020 shown includes: making a first determination (1022) as to whether a codec tool is enabled for conversion between a current block of a current picture of a video and a codec representation of the video; based on the first determination, making a second determination (1024) according to a rule as to whether or how to clip chroma or luma samples to integer positions in a reference picture used to determine a prediction block for the current block; and performing (1026) the conversion based on the first determination and the second determination.

[0952] 13. The method of example 12, wherein the codec tool comprises a decoder-side motion vector refinement tool, wherein the motion vector encoded in the codec representation is refined before determining the prediction block for the current block.

[0953] 14. The method of examples 12-13, wherein the rule specifies that if a codec tool is enabled for the current block, the luma or chroma sample positions are clipped; otherwise, if the codec tool is disabled for the current block, the luma or chroma sample positions are not clipped.

[0954] 15. The method of examples 12-13, wherein the rule specifies that if a codec tool is disabled for the current block, the luma or chroma sample positions are clipped; otherwise, if the codec tool is enabled for the current block, the luma or chroma sample positions are not clipped.

[0955] The following examples may be implemented with the additional techniques described in the items listed in the previous section (e.g., item 18(g)).

[0956] 16. A video processing method (eg, Fig. 10D The method 1030 shown in ) comprises: for conversion between a video including a current picture including a current block and a codec representation of the video, determining (1032) based on rules whether to perform an integer sample point clipping operation when generating a prediction block for the current block from one or more reference pictures from two reference picture lists, and performing (1034) the conversion based on the determination, wherein the rules are based on a first size associated with the current picture and / or a second size associated with the one or more reference pictures in the two reference picture lists, or whether decoder-side motion vector refinement (DMVR) is enabled, wherein in the DMVR, motion vectors encoded in the codec representation are refined before generating the prediction block.

[0957] 17. The method of example 16, wherein the first size corresponds to a size of the current picture, or a size of a consistency window of the current picture, or a size of a zoom window of the current picture.

[0958] 18. A method according to any one of Examples 16-17, wherein the second size corresponds to the size of the one or more reference pictures in the two reference picture lists, or the size of the consistency window of the one or more reference pictures in the two reference picture lists, or the size of the scaling window of the one or more reference pictures in the two reference picture lists.

[0959] 19. The method of any of Examples 16-18, wherein the rule provides that the integer sample point cropping operation is performed if the first size and the second size are equal; and the integer sample point cropping operation is disabled if the first size and the second size are not equal.

[0960] 20. The method of any of Examples 16-18, wherein the rule provides that the integer sample cropping operation is performed if the first size and the second size are not equal; and the integer sample cropping operation is disabled if the first size and the second size are equal.

[0961] 21. The method of any one of Examples 16-18, wherein the first size and the second size are related by a scaling factor, and wherein a syntax field indicating the scaling factor is included in the codec representation.

[0962] 22. The method of example 16, wherein a syntax field indicating that the DMVR is enabled is included in the codec representation.

[0963] 23. The method of example 22, wherein the syntax field is a flag.

[0964] The following examples may be implemented with the additional techniques described in the items listed in the previous section (eg, item 6).

[0965] 24. A video processing method (eg, Fig. 10E The method 1040 shown includes: for conversion between a video including a current picture including a current block and a codec representation of the video, deriving (1042) the upper left coordinates of a boundary block used for reference signal filling in a reference picture used to determine a prediction block of the current block according to a rule; and performing (1044) the conversion based on the derivation, wherein the rule is based on the dimension of the current picture or the dimension of the reference picture.

[0966] 25. The method of example 24, wherein the rule specifies the following expression: i ,yInt i ) is the value Dx, Dy, Ux or Uy of the luma sample at the integer sample position:

[0967] xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ),

[0968] yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ),

[0969] Where (xSbInt L ,ySbInt L ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and the function Clip3() is defined as:

[0970]

[0971] 26. The method of example 24, wherein the rule specifies the following expression: i ,yInt i ) is the value Dx, Dy, Ux or Uy of the chrominance sample at the integer sample position:

[0972] xInt i =Clip3(xSbIntC -Dx,xSbInt C +sbWidth+Ux,xInt i )

[0973] yInt i =Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInt i )

[0974] Where (xSbInt C ,ySbInt C ) is the upper left coordinate, sbWidth and sbHeight represent the width and height of the current block, and the function Clip3() is defined as:

[0975]

[0976] The following examples may be implemented with the additional techniques described in the items listed in the previous section (eg, item 18).

[0977] 27. A video processing method (e.g., Fig.10F The method 1050 shown includes: for conversion between a video including a current picture including a current block and a codec representation of the video, determining (1052) based on a rule whether to perform an integer sample point clipping operation when generating a prediction block of the current block from a reference picture; and performing (1054) the conversion based on the determination, wherein the rule is based on a first size associated with the current picture and / or a second size associated with the reference picture.

[0978] 28. The method of example 27, wherein the first size associated with the current picture corresponds to a size of the current picture, a size of a consistency window of the current picture, or a size of a zoom window of the current picture.

[0979] 29. The method of any one of Examples 27-28, wherein the second size associated with the reference picture corresponds to a size of the reference picture, a size of a consistency window of the reference picture, or a size of a scaling window of the reference picture.

[0980] 30. The method of any of Examples 27-29, wherein the rule provides that the integer sample cropping operation is performed if the first size and the second size are equal, and the integer sample cropping operation is disabled if the first size and the second size are not equal.

[0981] 31. The method of any of Examples 27-29, wherein the rule provides that the integer sample point cropping operation is performed if the first size and the second size are not equal; and the integer sample point cropping operation is disabled if the first size and the second size are equal.

[0982] 32. A method according to any one of Examples 27-29, wherein the first size and the second size are related by a scaling factor between the current picture and the reference picture.

[0983] 33. The method of example 32, wherein the rule provides that the integer sample clipping operation is used if and only if the scaling factor is equal to 1.

[0984] 34. The method of example 32, wherein the rule provides that the integer sample clipping operation is used if and only if the scaling factor is not equal to 1.

[0985] 35. The method of any one of Examples 27-29, wherein the first size associated with the current picture and the second size associated with the reference picture are widths, wherein the rule specifies using the integer sample cropping operation in a horizontal direction.

[0986] 36. A method according to example 35, wherein the first size associated with the current picture and the second size associated with the reference picture are related by a horizontal scaling factor, and wherein the rule specifies the use of the integer sample point cropping operation in the horizontal direction.

[0987] 37. The method of any one of Examples 27-29, wherein the first size associated with the current picture and the second size associated with the reference picture are heights, and wherein the rule specifies using the integer sample cropping operation in a vertical direction.

[0988] 38. A method according to example 37, wherein the first size associated with the current picture and the second size associated with the reference picture are related by a vertical scaling factor, and wherein the rule specifies the use of the integer sample point cropping operation in the vertical direction.

[0989] 39. The method of any one of Examples 35-38, wherein a syntax field included in the codec representation indicates a floating point representation of the horizontal scaling factor and the vertical scaling factor.

[0990] 40. The method of example 39, wherein the horizontal scaling factor and the vertical scaling factor are equal to (1<<14), where << is a left bit shift operation.

[0991] 41. A method according to any one of Examples 1 to 40, wherein the conversion includes encoding the video into the codec representation.

[0992] 42. A method according to any one of Examples 1 to 40, wherein the conversion includes decoding the codec representation to generate pixel values ​​of the video.

[0993] 43. A video decoding device comprising a processor configured to implement one or more of the methods described in Examples 1-42.

[0994] 44. A video encoding apparatus comprising a processor configured to implement the method of one or more of Examples 1-42.

[0995] 45. A computer program product having computer code stored thereon, which, when executed by a processor, causes the processor to implement the method of any one of Examples 1-42.

[0996] 46. ​​A non-transitory computer-readable storage medium storing instructions that cause a processor to implement the method of any one of Examples 1-42.

[0997] 47. A non-transitory computer-readable recording medium storing a bitstream corresponding to the codec representation produced by the method of any one of Examples 1-42.

[0998] 48. A method, apparatus or system as herein described.

[0999] In the above solution, performing the conversion includes using the result of a previous decision step to obtain the conversion result during the encoding or decoding operation.

[1000] 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 a video to a corresponding bitstream, or vice versa. For example, a bitstream or codec representation of a current video block may correspond to bits propagated at juxtaposed positions or at different positions in a bitstream defined by syntax. For example, a video block may be encoded based on an error residual after conversion and coding, and the video block may also be encoded using bits in a header and other fields in the bitstream. In addition, during conversion, as described in the above solution, the decoder may parse the bitstream based on the determination knowing that certain fields may or may not exist. Similarly, the encoder may determine whether to include certain syntax fields by including or not including syntax fields in the codec representation, and generate the codec representation accordingly.

[1001] Some embodiments of the disclosed technology include making a decision or determination to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, the encoder will use or implement the tool or mode in the processing of a video block, but will not necessarily modify the generated bitstream based on the use of the tool or mode. That is, when a video processing tool or mode is enabled based on a decision or determination, the conversion from a video block to a bitstream of a video will use the video processing tool or mode. In another example, when a video processing tool or mode is enabled, a decoder will process the bitstream knowing that the bitstream has been modified based on the video processing tool or mode. That is, the conversion from a bitstream of a video to a video block will be performed using a video processing tool or mode enabled based on a decision or determination.

[1002] Some embodiments of the disclosed technology, such as the solutions and examples described above, include making a decision or determination to disable a video processing tool or mode. In one example, when the video processing tool or mode is disabled, the encoder will not use the tool or mode in converting video blocks to a bitstream of video. In another example, when the video processing tool or mode is disabled, the decoder will process the bitstream knowing that the bitstream has not been modified using the video processing tool or mode disabled based on the decision or determination.

[1003] The disclosed and other solutions, examples, embodiments, modules and functional operations described herein can be implemented in digital electronic circuits, or in computer software, firmware or hardware, including the structures disclosed herein and their structural equivalents, or a combination of one or more thereof. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer-readable medium, for execution by a data processing device or for controlling the operation of the data processing device. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a storage device, a material composition that affects a machine-readable propagation signal, or a combination of one or more thereof. The term "data processing device" covers all devices, equipment and machines for processing data, including, for example, a programmable processor, a computer or multiple processors or computers. In addition to hardware, the device may also include code that creates an execution environment for a computer program, for example, code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more thereof. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device.

[1004] A computer program (also referred to 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, including 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 in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files storing one or more modules, subroutines, or portions of code). A computer program may be deployed for execution on one or more computers located at one site or distributed across multiple sites and interconnected by a communications network.

[1005] The processes and logic flows described herein may 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. The processes and logic flows may also be performed by, and the apparatus may be implemented as, special purpose logic circuits, for example, FPGAs (field programmable gate arrays) or ASICs (application specific integrated circuits).

[1006] For example, processors suitable for executing computer programs include general and special purpose microprocessors, and any one or more 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. The basic elements of a computer are a processor that executes instructions and one or more storage devices that store instructions and data. Typically, a computer will also include one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or be operatively coupled to one or more mass storage devices to receive data from them or transfer data to one or more mass storage devices, or both. However, a computer does not necessarily have such a device. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and memory may be supplemented by, or incorporated into, dedicated logic circuits.

[1007] Although this patent document contains many details, they should not be interpreted as limitations on any subject matter or the scope of the claims, but rather as descriptions of features of specific embodiments of specific technologies. Certain features described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various functions described in the context of a single embodiment can also be implemented separately in multiple embodiments, or in any suitable subcombination. In addition, although the above-mentioned features may be described as working in certain combinations, or even initially claimed to be so, in some cases, one or more features in the claim combination can be removed from the combination, and the combination of claims can be directed to subcombinations or variations of subcombinations.

[1008] Likewise, although operations are described in a particular order in the drawings, this should not be understood as requiring that such operations be performed in the particular order or order shown, or that all illustrated operations be performed, in order to achieve the desired results. In addition, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.

[1009] Only a few implementations and examples are described, and other implementations, enhancements, and variations can be made based on what is described and illustrated in this patent document.

Claims

1. A video processing method, comprising: making a first determination as to whether a decoder-side motion vector refinement tool is enabled for conversion between a current block of a current picture of a video and a bitstream of the video; making a second determination for a sample interpolation process as to whether to clip samples at integer sample positions according to a limiting block for reference sample padding in a reference picture used to determine a prediction block for a subblock of the current block based on the first determination, wherein the samples at the integer sample positions are in the reference picture and are obtained according to a first motion vector of the subblock, wherein the first motion vector is obtained based on the decoder-side motion vector refinement tool, wherein the limiting block is obtained according to a motion vector, the motion vector being equal to a difference between a refined motion vector obtained using the decoder-side motion vector refinement tool and an offset, wherein the samples at the integer sample positions are clipped when the decoder-side motion vector refinement tool is enabled for the current block; making a third determination as to whether reference picture wrapping is enabled for the conversion; as well as performing the converting based on the second determination and the third determination, Wherein how to clip the samples at the integer sample positions is based on whether the reference picture wrapping is enabled for the conversion, wherein the second determination is for a first cropping operation of the sample at the integer sample position, and the third determination is for a second cropping operation of the sample at the integer sample position, and Wherein, when the decoder-side motion vector refinement tool is enabled, the first shearing operation and the second shearing operation are performed; when the decoder-side motion vector refinement tool is disabled, the first shearing operation is not performed and the second shearing operation is performed.

2. The method according to claim 1, wherein: clipping luma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntL-3 and ySbIntL-3, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntL, ySbIntL) specifies the upper left sample of the bounding block relative to the upper left luma sample of the reference picture.

3. The method according to claim 1, wherein: clipping chroma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntC-1 and ySbIntC-1, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntC, ySbIntC) specifies the upper left sample of the bounding block relative to the upper left chroma sample of the reference picture.

4. The method according to claim 2, wherein: (xSbIntL, ySbIntL) is obtained based on the second motion vector that is not refined by the decoder-side motion vector refinement tool.

5. The method according to claim 1, wherein: A syntax element indicating whether the reference picture wrapping is enabled is included in the bitstream.

6. The method according to claim 1, wherein: The converting includes encoding the current block into the bitstream.

7. The method according to claim 1, wherein: The converting includes decoding the current block from the bitstream.

8. An apparatus for processing video data, comprising a processor and a non-transitory memory having instructions thereon, wherein the instructions, when executed by the processor, cause the processor to: making a first determination as to whether a decoder-side motion vector refinement tool is enabled for conversion between a current block of a current picture of a video and a bitstream of the video; making a second determination for a sample interpolation process as to whether to clip samples at integer sample positions according to a limiting block for reference sample padding in a reference picture used to determine a prediction block for a subblock of the current block based on the first determination, wherein the samples at the integer sample positions are in the reference picture and are obtained according to a first motion vector of the subblock, wherein the first motion vector is obtained based on the decoder-side motion vector refinement tool, wherein the limiting block is obtained according to a motion vector, the motion vector being equal to a difference between a refined motion vector obtained using the decoder-side motion vector refinement tool and an offset, wherein the samples at the integer sample positions are clipped when the decoder-side motion vector refinement tool is enabled for the current block; making a third determination as to whether reference picture wrapping is enabled for the conversion; as well as performing the converting based on the second determination and the third determination, Wherein how to clip the samples at the integer sample positions is based on whether the reference picture wrapping is enabled for the conversion, wherein the second determination is for a first cropping operation of the sample at the integer sample position, and the third determination is for a second cropping operation of the sample at the integer sample position, and Wherein, when the decoder-side motion vector refinement tool is enabled, the first shearing operation and the second shearing operation are performed; when the decoder-side motion vector refinement tool is disabled, the first shearing operation is not performed and the second shearing operation is performed.

9. The device according to claim 8, wherein: clipping luma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntL-3 and ySbIntL-3, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntL, ySbIntL) specifies the upper left sample of the bounding block relative to the upper left luma sample of the reference picture.

10. The device according to claim 8, wherein: clipping chroma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntC-1 and ySbIntC-1, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntC, ySbIntC) specifies the upper left sample of the bounding block relative to the upper left chroma sample of the reference picture.

11. A non-transitory computer-readable storage medium storing instructions that cause a processor to: making a first determination as to whether a decoder-side motion vector refinement tool is enabled for conversion between a current block of a current picture of a video and a bitstream of the video; making a second determination for a sample interpolation process as to whether to clip samples at integer sample positions according to a limiting block for reference sample padding in a reference picture used to determine a prediction block for a subblock of the current block based on the first determination, wherein the samples at the integer sample positions are in the reference picture and are obtained according to a first motion vector of the subblock, wherein the first motion vector is obtained based on the decoder-side motion vector refinement tool, wherein the limiting block is obtained according to a motion vector, the motion vector being equal to a difference between a refined motion vector obtained using the decoder-side motion vector refinement tool and an offset, wherein the samples at the integer sample positions are clipped when the decoder-side motion vector refinement tool is enabled for the current block; making a third determination as to whether reference picture wrapping is enabled for the conversion; as well as performing the converting based on the second determination and the third determination, Wherein how to clip the samples at the integer sample positions is based on whether the reference picture wrapping is enabled for the conversion, wherein the second determination is for a first cropping operation of the sample at the integer sample position, and the third determination is for a second cropping operation of the sample at the integer sample position, and Wherein, when the decoder-side motion vector refinement tool is enabled, the first shearing operation and the second shearing operation are performed; when the decoder-side motion vector refinement tool is disabled, the first shearing operation is not performed and the second shearing operation is performed.

12. The medium according to claim 11, wherein clipping luma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntL-3 and ySbIntL-3, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntL, ySbIntL) specifies the upper left sample of the bounding block relative to the upper left luma sample of the reference picture.

13. The medium according to claim 11, wherein clipping chroma samples at the integer sample positions denoted as (xInti, yInti) according to xSbIntC-1 and ySbIntC-1, with the decoder-side motion vector refinement tool enabled for the current block; Where (xSbIntC, ySbIntC) specifies the upper left sample of the bounding block relative to the upper left chroma sample of the reference picture.

14. A method for storing a bit stream of a video, comprising: making a first determination as to whether a decoder-side motion vector refinement tool is enabled for a current block of a current picture of the video; making a second determination for a sample interpolation process as to whether to clip samples at integer sample positions according to a limiting block for reference sample padding in a reference picture used to determine a prediction block for a subblock of the current block based on the first determination, wherein the samples at the integer sample positions are in the reference picture and are obtained according to a first motion vector of the subblock, wherein the first motion vector is obtained based on the decoder-side motion vector refinement tool, wherein the limiting block is obtained according to a motion vector, the motion vector being equal to a difference between a refined motion vector obtained using the decoder-side motion vector refinement tool and an offset, wherein the samples at the integer sample positions are clipped when the decoder-side motion vector refinement tool is enabled for the current block; making a third determination whether reference picture wrapping is enabled; generating the bitstream based on the second determination and the third determination; as well as storing the bitstream in a non-transitory computer-readable recording medium, How to cut the sample at the integer sample position is based on whether the reference picture wrapping is enabled, wherein the second determination is for a first cropping operation of the sample at the integer sample position, and the third determination is for a second cropping operation of the sample at the integer sample position, and Wherein, when the decoder-side motion vector refinement tool is enabled, the first shearing operation and the second shearing operation are performed; when the decoder-side motion vector refinement tool is disabled, the first shearing operation is not performed and the second shearing operation is performed.

Citation Information

Patent Citations

  • Motion vector coding and bi-prediction in hevc and its extensions

    CN104170381A

  • Decoder-side motion vector restoration for video coding

    CN110169073A