Interaction Between Reference Picture Resampling and Video Coding Tools
By employing resampling techniques and optical flow-based motion compensation, the patent addresses the challenge of adaptive resolution changes in video coding, enhancing user experience and efficiency in video conferencing and streaming.
Patent Information
- Application Number
- JP2023207340
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-10-13
- Filing Date
- 2023-12-08
- Publication Date
- 2026-01-15
- Estimated Expiration
- 2040-10-13
AI Technical Summary
Current video coding standards lack the ability to efficiently handle adaptive resolution changes without introducing Intra Random Access Points, which can lead to increased decoding complexity, resource consumption, and poor user experience in applications like video conferencing and streaming.
Implement methods for video processing that include resampling reference pictures and applying interpolation filters based on resolution and size differences, enabling adaptive resolution change (ARC) and reference picture resampling (RPR), and refining motion compensation using optical flow to achieve seamless resolution adjustments.
Enables efficient and seamless adaptive resolution changes, reducing decoding complexity and improving user experience in video conferencing and streaming applications by allowing for lower latency and smoother transitions between different spatial resolutions.
Smart Images

Figure 0007799672000060 
Figure 0007799672000061 
Figure 0007799672000062
Abstract
Description
[Technical Field]
[0001] This application is a divisional application of Japanese Patent Application No. 2022-521959, which is a national phase application of International Application No. PCT / CN2020 / 120554, filed October 13, 2020, which claims priority to and the benefit of U.S. Provisional Patent Application No. 62 / 914,544, filed October 13, 2019. The entire disclosure of the above application is incorporated herein by reference.
[0002] This patent document relates to image coating techniques, devices and systems. [Background technology]
[0003] Efforts are currently underway to improve the performance of current video codec technology in order to provide better compression ratios or to provide video encoding and decoding schemes that have lower complexity or allow for parallel implementation. Industry experts have recently proposed several new video coding tools, and testing is currently underway to determine their effectiveness. Summary of the Invention
[0004] Apparatuses, systems, and methods related to digital video coding, and specifically motion vector management, are described. The described methods may be applied to existing video coding standards (e.g., High Efficiency Video Coding (HEVC) or Versatile Video Coding) and future video coding standards or video codecs.
[0005] In one exemplary aspect, the disclosed techniques may be used to provide a method for video processing that includes performing a conversion between a current video block and a coded representation of the current video block, where, when a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, the same interpolation filter is applied to a group of adjacent or non-adjacent samples that are predicted using the current video block.
[0006] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing that includes performing a conversion between a current video block and a coded representation of the current video block, where if the resolution and / or size of a reference picture differs from the resolution and / or size of the current video block, blocks predicted using the current video block are only allowed to use integer-value motion information related to the current block.
[0007] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing, which includes performing a conversion between a current video block and a coded representation of the current video block, where, if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, an interpolation filter is applied to derive a predicted block using the current video block, and the interpolation filter is selected based on a rule.
[0008] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing that includes performing a conversion between a current video block and a coded representation of the current video block, where the conversion involves selectively applying a deblocking filter if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, the strength of the deblocking filter being set according to a rule relating the resolution and / or size of the reference picture to the resolution and / or size of the current video block.
[0009] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing that includes performing a transformation between a current video block and a coded representation of the current video block, in which a reference picture of the current video block is resampled according to a rule based on a dimension of the current video block.
[0010] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing that includes performing a conversion between a current video block and a coded representation of the current video block, in which the use of coding tools for the current video block is selectively enabled or disabled depending on the resolution / size of the current video block relative to the resolution / size of the current video block's reference picture.
[0011] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing, the method including performing a conversion between a plurality of video blocks and a coded representation of the plurality of video blocks, wherein a first conforming window is defined for the first video block and a second conforming window is defined for the second video block, and wherein a ratio of a width and / or height of the first conforming window to the second conforming window follows a rule based on at least the conforming bitstream.
[0012] In another exemplary aspect, the disclosed techniques may be used to provide another method for video processing, the method including performing a conversion between a plurality of video blocks and a coded representation of the plurality of video blocks, wherein a first conforming window is defined for the first video block and a second conforming window is defined for the second video block, and wherein a ratio of a width and / or height of the first conforming window to the second conforming window follows a rule based on at least the conforming bitstream.
[0013] Additionally, in one representative aspect, an apparatus in a video system is disclosed having a processor and a non-transitory memory having instructions that, when executed by the processor, cause the processor to perform any one or more of the disclosed methods.
[0014] In one representative aspect, a video decoder device is disclosed having a processor configured to implement the methods described herein.
[0015] In one representative aspect, a video encoding device is disclosed having a processor configured to implement the methods described herein.
[0016] Also disclosed is a computer program product stored on a non-transitory computer readable medium, the computer program product including program code for performing one or more of the disclosed methods.
[0017] These and other aspects and features of the disclosed technology are described in further detail in the drawings, specification, and claims. [Brief explanation of the drawings]
[0018] [Figure 1] 1 shows an example of sub-block motion vectors (VSB) and motion vector differences. [Figure 2] An example of a 16x16 video block divided into sixteen 4x4 regions is shown. [Figure 3A] An example of a particular location within a sample is shown. [Figure 3B] 10 shows another example of a specific location within a sample. [Figure 3C] 10 shows yet another example of a particular location within a sample. [Figure 4A] An example of the position of a current sample and its reference sample is shown. [Figure 4B] Another example of the positions of the current sample and its reference sample is shown. [Figure 5] FIG. 1 is a block diagram of an example hardware platform for implementing the visual media decoding or visual media encoding techniques described in this document. [Figure 6] 1 shows a flowchart of an example method for video coding. [Figure 7] 1 illustrates an example of decoder-side motion vector refinement. [Figure 8] 1 shows an example of the flow of cascaded DMVR and BDOF processes in VTM5.0. The DMVR SAD calculation and BDOF SAD calculation are different and not shared. [Figure 9] FIG. 1 is a block diagram of an example of a video processing system in which the disclosed technology may be implemented. [Figure 10] FIG. 1 is a block diagram illustrating an example of a video coating system. [Figure 11] FIG. 2 is a block diagram illustrating an encoder according to some embodiments of the present disclosure. [Figure 12] FIG. 2 is a block diagram illustrating a decoder according to some embodiments of the present disclosure. [Figure 13] 1 is a flowchart representation of a method for video processing in accordance with the present technology. [Figure 14] 10 is a flowchart representation of another method for video processing in accordance with the present technology. [Figure 15] 10 is a flowchart representation of yet another method for video processing in accordance with the present technology. DETAILED DESCRIPTION OF THE INVENTION
[0019] 1. Video coding in HEVC / H.265 Video coding standards have evolved primarily through the development of well-known ITU-T and ISO / IEC standards. ITU-T developed H.261 and H.263, while ISO / IEC developed MPEG-1 and MPEG-4 Visual. These two organizations then jointly developed the H.262 / MPEG-2 Video, H.264 / MPEG-4 AVC (Advanced Video Coding), and H.265 / HEVC standards. Since H.262, video coding standards have been based on hybrid video coding architectures that utilize transform coding in addition to temporal prediction. To explore future video coding technologies beyond HEVC, VCEG and MPEG jointly established the Joint Video Exploration Team (JVET) in 2015. Since then, numerous new methods have been adopted by the JVET and incorporated into reference software named the Joint Exploration Model (JEM). In April 2018, the Joint Video Expert Team (JVET) was established between VCEG (Q6 / 16) and ISO / IEC JTC1 SC29 / WG11 (MPEG) to work on the VVC standard, which aims to reduce the bitrate by 50% compared to HEVC.
[0020] 2. Overview 2.1. Adaptive Resolution Change (ARC) AVC and HEVC do not have the ability to change resolution without the need to introduce IDR or Intra Random Access Point (IRAP) pictures, and such a capability may be referred to as Adaptive Resolution Change (ARC). There are use cases or application scenarios that would benefit from the ARC feature, including the following:
[0021] - Rate adaptation in video telephony and conferencing. To adapt the coded video to changing network conditions, when network conditions deteriorate and the available bandwidth decreases, the encoder can adapt by encoding lower resolution pictures. Currently, changing picture resolution can only be done after the IRAP picture, which has several problems. A reasonable-quality IRAP picture is much larger than an inter-coded picture and is correspondingly more complex to decode, costing time and resources. This becomes problematic when a resolution change is required by the decoder for loading reasons. It can also destroy low-latency buffering requirements, forcing audio resynchronization and increasing the end-to-end delay of the stream, at least temporarily. This can result in a poor user experience.
[0022] Active speaker changes in multi-party video conferencing. In multi-party video conferencing, it is common for the active speaker to be shown with a larger image size than the images for the remaining conference participants. When the active speaker changes, the picture resolution for each participant may also need to be adjusted. The need to have ARC functionality becomes even more important when such changes in active speaker occur frequently.
[0023] - Fast start in streaming. In streaming applications, it is common for the application to buffer up to a certain length of decoded pictures before starting to display them. Starting the bitstream at a lower resolution allows the application to have enough pictures in the buffer to start displaying sooner.
[0024] - Adaptive stream switching in streaming. The Dynamic Adaptive Streaming over HTTP (DASH) specification includes a feature named @mediaStreamStructureId, which allows switching between different representations at open GOP random access points with non-decodable leading pictures, such as a CRA picture with an associated RASL picture in HEVC. When two different representations of the same video have different bitrates but the same spatial resolution and have the same @mediaStreamStructureId value, switching between the two representations can occur at a CRA picture with an associated RASL picture, and the RASL picture associated with the CRA picture at the switching position can be decoded with acceptable quality, thus allowing seamless switching. Using ARC, the @mediaStreamStructureId feature can also be used to switch between DASH representations with different spatial resolutions.
[0025] ARC is also known as dynamic resolution conversion.
[0026] ARC can also be considered as a special case of Reference Picture Resampling (RPR), such as in H.263 Annex P.
[0027] 2.2. Reference Picture Resampling in H.263 Annex P This mode describes an algorithm to warp a reference picture before using it for prediction. This can be useful for resampling reference pictures that have a different source format than the picture being predicted. It can also be used for global or rotational motion estimation by warping the shape, size, and position of the reference picture. The syntax includes the warp parameters and resampling algorithm used. The simplest operational level of the reference picture resampling mode is an implicit factor-of-4 resampling, when all that is required is to apply an FIR filter to the upsampling and downsampling process. In this case, no additional signaling overhead is required, since its use is understood when the size of the new picture (indicated in the picture header) is different from the size of the previous picture.
[0028] 2.3. Conformance Window in VVC A relevance window in VVC defines a rectangle. Samples inside the relevance window belong to the image of interest. Samples outside the relevance window can be discarded at output.
[0029] When a fitting window is applied, the scaling ratio in the RPR is derived based on the fitting window. Picture Parameter Set RBSP Syntax (outside 1) TIFF0007799672000001.tif225170TIFF0007799672000002.tif192170
[0030] 2.4. Reference Picture Resampling (RPR) In some embodiments, ARC is also known as Reference Picture Resampling (RPR), which disables TMVP when a co-located picture has a different resolution than the current picture, and also disables Bi-Directional Optical Flow (BDOF) and Decoder-side Motion Vector Refinement (DMVR) when a reference picture has a different resolution than the current picture.
[0031] To handle normal MC when the reference picture has a different resolution than the current picture, an interpolation section is defined as follows: 8.5.6.3 Fractional Sample Interpolation Process 8.5.6.3.1 General The inputs to this process are: - a luma position (xSb, ySb) that defines the top left sample of the current coding sub-block relative to the top left luma sample of the current picture; - the variable sbWidth, which specifies the width of the current coding sub-block, - variable sbHeight, which specifies the height of the current coding subblock; - motion vector offset mvOffset, - refined motion vector refMvLX, - the selected reference picture sample array refPicLX, - half-sample interpolation filter index hpelIfIdx, - bidirectional optical flow flag bdofFlag, - A variable cIdx that specifies the color component index of the current block. The output of this process is: - predSamplesLX, an (sbWidth+brdExtSize)×(sbHeight+brdExtSize) array of predicted sample values. The prediction block boundary extension size brdExtSize is derived as follows: brdExtSize=(bdofFlag||(inter_affine_flag[xSb][ySb]&&sps_affine_prof_enabled_flag))?2:0 (8-752) The variable fRefWidth is set equal to the PicOutputWidthL of the reference picture in luma samples. The variable fRefHeight is set equal to the PicOutputHeightL of the reference picture in luma samples. The motion vector mvLX is set equal to (refMvLX-mvOffset). - If cIdx is equal to 0, the following applies: - The scaling factors and their fixed-point representations are defined as follows: hori_scale_fp=((fRefWidth<<14)+(PicOutputWidthL>>1)) / PicOutputWidthL (8-753) vert_scale_fp=((fRefHeight<<14)+(PicOutputHeightL>>1)) / PicOutputHeightL (8-754) - Let (xIntL,yIntL) be the luma position given in full samples and (xFracL,yFracL) be the offset given in 1 / 16 samples. These variables are only used in this section to specify the fractional sample position inside the reference sample array refPicLX; - Top left coordinate of the border block for reference sample padding (xSbInt L ,ySbInt L ) is set equal to (xSb+(mvLX[0]>>4),ySb+(mvLX[1]>>4)); - For each luma sample position (x L =0..sbWidth-1+brdExtSize,y L= 0..sbHeight-1+brdExtSize), the corresponding predicted luma sample values preSamplesLX[x L ][y L ] is derived as follows: - (refxSb L ,refySb L ) and (refx L ,refy L ) is the luma position pointed to by the motion vector (refMvLX[0], refMvLX[1]) given in 1 / 16 sample units. L , refx L , refySb L , and refy L is derived as follows: refxSb L =((xSb<<4)+refMvLX[0])*hori_scale_fp (8-755) refx L =((Sign(refxSb)*((Abs(refxSb)+128)>>8) +x L *((hori_scale_fp+8)>>4))+32)>>6 (8-756) refySb L =((ySb<<4)+refMvLX[1])*vert_scale_fp (8-757) refy L =((Sign(refySb)*((Abs(refySb)+128)>>8)+y L * ((vert_scale_fp+8)>>4))+32)>>6 (8-758) - variable xInt L , yInt L , xFrac L , and yFrac L is derived as follows: xInt L =refx L >>4 (8-759) yInt L =refy L >>4 (8-760) xFrac L =refx L &15 (8-761) yFrac L =refy L &15 (8-762) - If bdofFlag is equal to 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 the luma integer sample fetching process specified in clause 8.5.6.3.3 shall be performed using (xInt L +(xFrac L >>3)-1),yInt L +(yFrac L >>3)-1) and refPicLX as input to get the predicted luma sample values preSamplesLX[x L ][y L ] is derived: -x L is equal to 0 -x L is equal to sbWidth+1 -y L is equal to 0 -y L is equal to sbHeight+1; - Otherwise, the luma sample 8-tap interpolation filtering process specified in section 8.5.6.3.2 shall be performed using (xIntL-(brdExtSize>0? 1:0),yIntL-(brdExtSize>0? 1:0)), (xFracL,yFracL), (xSbInt L ,ySbInt L ), refPicLX, hpelIfIdx, sbWidth, sbHeight, and (xSb, ySb) as inputs to calculate the predicted luma sample values preSamplesLX[x L ][y L ] is derived; - Otherwise (cIdx is not equal to 0), the following applies: - Let (xIntC,yIntC) be the chroma position given in full samples and (xFracC,yFracC) be the offset given in 1 / 32 samples. These variables are only used in this section to specify a general fractional sample position inside the reference sample array refPicLX; - The top-left coordinate (xSbIntC, ySbIntC) of the border block for reference sample padding is set equal to ((xSb / SubWidthC)+(mvLX[0]>>5),(ySb / SubHeightC)+(mvLX[1]>>5)); For each chroma sample position (xC=0..sbWidth-1, yC=0..sbHeight-1) inside the predicted chroma sample array preSamplesLX, the corresponding predicted chroma sample value preSamplesLX[xC][yC] is derived as follows: - Let (refxSbC,refySbC) and (refxC,refyC) be the chroma positions pointed to by the given motion vector (mvLX[0], mvLX[1]) in 1 / 32 sample units. C , refySb C , refx C , and refy C is derived as follows: refxSb C =((xSb / SubWidthC<<5)+mvLX[0])*hori_scale_fp (8-763) refx C =((Sign(refxSbC)*((Abs(refxSbC)+256)>>9) +xC*((hori_scale_fp+8)>>4))+16)>>5 (8-764) refySb C =((ySb / SubHeightC<<5)+mvLX[1])*vert_scale_fp (8-765) refy C =((Sign(refySbC)*((Abs(refySbC)+256)>>9) +yC*((vert_scale_fp+8)>>4))+16)>>5 (8-766) - variable xInt C , yInt C , xFrac C , and yFrac C is derived as follows: xInt C =refxC>>5 (8-767) yInt C =refyC>>5 (8-768) xFrac C =refyC&31 (8-769) yFrac C =refyC&31 (8-770) - The predicted sample values preSamplesLX[xC][yC] are derived by invoking the process specified in clause 8.5.6.3.4 with (xIntC,yIntC), (xFracC,yFracC), (xSbIntC,ySbIntC), sbWidth, sbHeight, and refPicLX as inputs; 8.5.6.3.2 Luma Sample Interpolation Filtering Process The inputs to this process are: - Luma position in full samples (xInt L ,yInt L ), - Luma position in fractional samples (xFrac L ,yFrac L ), - Luma position in full samples (xSbInt) that specifies the top-left sample of the border block for reference sample padding relative to the top-left luma sample of the reference picture. L ,ySbInt L ), - Luma reference sample array refPicLX L , - half-sample interpolation filter index hpelIfIdx, - the variable sbWidth, which defines the width of the current subblock, - variable sbHeight, which specifies the height of the current subblock, - luma position (xSb, ySb) defining the top left sample of the current sub-block relative to the top left luma sample of the current picture; The output of this process is the predicted luma sample value preSampleLX. L is; The variables shift1, shift2, and shift3 are derived as follows: - Variable shift1 is Min(4,BitDepth Y -8), variable shift2 is set equal to 6, and variable shift3 is set equal to Max(2,14-BitDepth Y ) is set equal to; - 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; xFrac L or yFrac L The luma interpolation filter coefficients f for each 1 / 16 fractional sample position p are equal to L [p] is derived as follows: - If MotionModelIdc[xSb][ySb] is greater than 0 and sbWidth and sbHeight are both equal to 4, the luma interpolation filter coefficient f L [p] is defined in Table 2; - otherwise, the luma interpolation filter coefficients f L [p] is specified in Table 1 according to hpelIfIdx; Luma position in full samples (xInt i ,yInt i ) is derived for i=0..7 as follows: - If subpic_treated_as_pic_flag[SubPicIdx] is equal to 1, the following applies: xInt i =Clip3(SubPicLeftBoundaryPos,SubPicRightBoundaryPos,xInt L +i-3) (8-771) yInt i =Clip3(SubPicTopBoundaryPos,SubPicBotBoundaryPos,yInt L +i-3) (8-772) - Otherwise (subpic_treated_as_pic_flag[SubPicIdx] equals 0), the following applies: xInt i =Clip3(0,picW-1,sps_ref_wraparound_enabled_flag? ClipH((sps_ref_wraparound_offset_minus1+1)*MinCbSizeY,picW,xInt L +i-3: xInt L +i-3) (8-773) yInt i =Clip3(0,picH-1,yInt L +i-3) (8-774) The luma position in full sample units is further modified as follows for i=0..7: xInt i =Clip3(xSbInt L -3,xSbInt L +sbWidth+4,xInt i ) (8-775) yInt i =Clip3(ySbInt L -3,ySbInt L +sbHeight+4,yInt i ) (8-776) Predicted luma sample value presampleLX L is derived as follows: - xFrac L and yFrac L If both are equal to 0, then predSampleLX L The value of is derived as follows: predSampleLX L=refPicLXL[xInt3][yInt3]< <shift3 (8-777) - No, xFrac L is not equal to 0 and yFrac L If is equal to 0, predSampleLX L The value of is derived as follows:
number
number
number
number
number
number
number
[0032] 2.5. Refined Subblock-Based Affine Motion Compensation Prediction The disclosed technology includes a method for refining sub-block-based affine motion compensation prediction using optical flow. After sub-block-based affine motion compensation is performed, the prediction samples are refined by applying a difference derived from the optical flow equation, which is called prediction refinement with optical flow (PROF). The proposed method can achieve inter prediction at pixel-level granularity without increasing memory access bandwidth.
[0033] To achieve finer granularity in motion compensation, this contribution proposes a method to refine sub-block-based affine motion compensation prediction using optical flow. After sub-block-based affine motion compensation is performed, the luma prediction samples are refined by appending the difference derived by the optical flow equation. The proposed prediction refinement with optical flow (PROF) can be described as the following four steps:
[0034] Step 1) Perform sub-block based affine motion compensation to generate the sub-block prediction I(i,j).
[0035] Step 2) At each sample position, we use a 3-tap filter [-1,0,1] to estimate the spatial gradient of the subblock prediction g x (i,j) and g y Calculate (i,j): g x (i,j)=I(i+1,j)-I(i-1,j) g y (i,j)=I(i,j+1)-I(i,j-1) For this gradient calculation, the sub-block prediction is extended by one pixel per side. To save memory bandwidth and complexity, the pixels on the extended boundary are copied from the nearest integer pixel position in the reference picture. Thus, additional interpolation for the padding area is avoided.
[0036] Step 3) Refine the luma prediction (denoted as ΔI) using the optical flow equation: ΔI(i,j)=g x (i,j)*Δv x (i,j)+g y (i,j)*Δv y (i,j) is calculated, where delta MV (denoted as Δv(i,j)) is the difference between the pixel MV (denoted as v(i,j)) calculated for sample position (i,j) and the sub-block MV of the sub-block to which pixel (i,j) belongs, as shown in FIG.
[0037] Since the affine model parameters and pixel position relative to the sub-block center do not change for each sub-block, Δv(i,j) can be calculated for the first sub-block and reused for other sub-blocks in the same CU. If the horizontal and vertical offsets from the pixel position to the sub-block center are x and y, Δv(x,y) can be calculated using the following formula:
number
number
number
[0038] Step 4) Finally, this luma prediction refinement is added to the sub-block prediction I(i,j). The final prediction I' is given by: I'(i,j)=I(i,j)+ΔI(i,j) is generated as:
[0039] Some details will be explained below.
[0040] a) Gradient derivation method for PROF In some embodiments, the gradient is calculated for each sub-block (4x4 sub-block in VTM-4.0) for each reference list. For each sub-block, the nearest integer sample of the reference block is fetched to pad the outer lines of the four sides of the sample.
[0041] Let the MV for the current sub-block be (MVx,MVy). Then the fractional part is calculated as (FracX,FracY) = (MVx&15,MVy&15). The integer part is calculated as (IntX,IntY) = (MVx>>4, MVy>>4). The offset (OffsetX,OffsetY) is: OffsetX=FracX>7? 1:0; OffsetY=FracY>7? 1:0; is derived as:
[0042] Suppose the top left coordinate of the current sub-block is (xCur, yCur) and the dimensions of the current sub-block are W x H. Then (xCor0, yCor0), (xCor1, yCor1), (xCor2, yCor2), and (xCor3, yCor3) are: (xCor0,yCor0)=(xCur+IntX+OffsetX-1, yCur+IntY+OffsetY-1); (xCor1,yCor1)=(xCur+IntX+OffsetX-1, yCur+IntY+OffsetY+H); (xCor2,yCor2)=(xCur+IntX+OffsetX-1, yCur+IntY+OffsetY); (xCor3,yCor3)=(xCur+IntX+OffsetX+W, yCur+IntY+OffsetY); It is calculated as:
[0043] Let PredSample[x][y], where x=0..W-1, y=0..H-1, store the predicted samples of the sub-block. Then the padding samples are: PredSample[x][-1]= (Ref(xCor0+x,yCor0)< <Shift0)- Rounding, for x=-1..W; PredSample[x][H]= (Ref(xCor1+x,yCor1)< <Shift0)- Rounding, for x=-1..W; PredSample[-1][y]= (Ref(xCor2,yCor2+y)< <Shift0)- Rounding, for y=0..H-1; PredSample[W][y]= (Ref(xCor3,yCor3+y)< <Shift0)- Rounding, for y=0..H-1 where Rec represents the reference picture. Rounding is an integer, which in this exemplary PROF implementation is 2. 13 Shift0=Max(2,(14-BitDepth)), and PROF, unlike BIO in VTM-4.0, attempts to increase the precision of the gradients, where the gradients are output with the same precision as the input luma samples.
[0044] The gradient in PROF is calculated as follows: Shift1=Shift0-4 gradientH[x][y]=(predSamples[x+1][y]-predSample[x-1][y])>>Shift1 gradientV[x][y]=(pred Sample[x][y+1]-predSample[x][y-1])>>Shift1 It should be understood that predSamples[x][y] retains precision after interpolation.
[0045] b) Δv derivation method for PROF The derivation of Δv (denoted as dMvH[posX][posY] and dMvV[posX][posY] with posX=0..W-1, posY=0..H-1) can be written as follows:
[0046] Suppose the size of the current block is cbWidth×cbHeight, the number of control point motion vectors is numCpMv, and cpIdx=0..numCpMv−1, the control point motion vector is cpMvLX[cpIdx], where X is 0 or 1 representing two reference lists.
[0047] The variables log2CbW and log2CbH are derived as follows: log2CbW=Log2(cbWidth) log2CbH=Log2(cbHeight) The variables mvScaleHor, mvScaleVer, dHorX, and dVerX are derived as follows: mvScaleHor=cpMvLX[0][0]<<7 mvScaleVer=cpMvLX[0][1]<<7 dHorX=(cpMvLX[1][0]-cpMvLX[0][0])<<(7-log2CbW) dVerX=(cpMvLX[1][1]-cpMvLX[0][1])<<(7-log2CbW)
[0048] The variables dHorY and dVerY are derived as follows: - If numCpMv is equal to 3, the following applies: dHorY=(cpMvLX[2][0]-cpMvLX[0][0])<<(7-log2CbH) dVerY=(cpMvLX[2][1]-cpMvLX[0][1])<<(7-log2CbH) - Otherwise (numCpMv equals 2), the following applies: dHorY=-dVerX dVerY=dHorX
[0049] The variables qHorX, qVerX, qHorY, and qVerY are: qHorX=dHorX<<2; qVerX=dVerX<<2; qHorY=dHorY<<2; qVerY=dVerY<<2; is derived as:
[0050] dMvH[0][0] and dMvV[0][0] are: dMvH[0][0]=((dHorX+dHorY)<<1)-((qHorX+qHorY)<<1); dMvV[0][0]=((dVerX+dVerY)<<1)-((qVerX+qVerY)<<1); It is calculated as:
[0051] For xPos between 1 and W-1, dMvH[xPos][0] and dMvV[xPos][0] are: dMvH[xPos][0]=dMvH[xPos-1][0]+qHorX; dMvV[xPos][0]=dMvV[xPos-1][0]+qVerX; is derived as:
[0052] For yPos from 1 to H-1, the following applies: xPos=0..W-1, dMvH[xPos][yPos]=dMvH[xPos][yPos-1]+qHorY xPos=0..W-1, and dMvV[xPos][yPos]=dMvV[xPos][yPos-1]+qVerY
[0053] Finally, dMvH[xPos][yPos] and dMvV[xPos][yPos] for posX=0..W-1, posY=0..H-1 are: dMvH[xPos][yPos]=SatShift(dMvH[xPos][yPos],7+2-1); dMvV[xPos][yPos]=SatShift(dMvV[xPos][yPos],7+2-1); where SatShift(x,n) and Shift(x,n) are:
number
[0054] In one example, offset0 and / or offset1 are (1<<n)> >1.
[0055] c) ΔI derivation method for PROF For a position (posX,posY) inside a sub-block, its corresponding Δv(i,j) is denoted as (dMvH[posX][posY],dMvV[posX][posY]), and its corresponding gradient is denoted as (gradientH[posX][posY],gradientV[posX][posY]).
[0056] Then, ΔI(posX,posY) is derived as follows: (dMvH[posX][posY],dMvV[posX][posY]) is clipped as follows: dMvH[posX][posY]=Clip3(-32768,32767,dMvH[posX][posY]); dMvV[posX][posY]=Clip3(-32768,32767,dMvV[posX][posY]); ΔI(posX,posY)=dMvH[posX][posY]×gradientH[posX][posY]+dMvV[posX][posY]×gradientV[posX][posY]; ΔI(posX,posY)=Shift(ΔI(posX,posY),1+1+4); ΔI(posX,posY)=Clip3(-(2 13 -1),2 13 -1,ΔI(posX,posY)).
[0057] d) I' derivation method for PROF If the current block is not coded as bi-predictive or weighted prediction, I'(posX,posY)=Shift((I(posX,posY)+ΔI(posX,posY))),Shift0, I'(posX,posY)=ClipSample(I'(posX,posY)) where ClipSample clips the sample values to the appropriate output sample values, and I'(posX,posY) is output as the inter predicted value; Otherwise (the current block is coded as bi-predictive or weighted predictive), I'(posX,posY) will be stored and used to generate an inter-prediction value according to other prediction values and / or weighting values.
[0058] 2.6. Slice Header Example (outside 2) TIFF0007799672000017.tif226166TIFF0007799672000018.tif234166TIFF0007799672000019.tif233166TIFF0007799672000020.tif234166TIFF0007799672000021.tif981662.7. Sequence parameter set example (Outside 3) TIFF0007799672000022.tif227166TIFF0007799672000023.tif235166TIFF0007799672000024.tif235166TIFF0007799672000025.tif235166TIFF0007799672000026.tif1131662.8. Picture parameter set example (outside 4) TIFF0007799672000027.tif228166TIFF0007799672000028.tif234166TIFF0007799672000029.tif233166TIFF0007799672000030.tif1551662.9. Example of adaptive parameter set (outside 5) TIFF0007799672000031.tif99165(outside 6) TIFF0007799672000032.tif227166TIFF0007799672000033.tif86166 (outer 7) TIFF0007799672000034.tif67164(outside 8) TIFF0007799672000035.tif184165
[0059] 2.10. Picture Header Example In some embodiments, the picture header is designed to have the following properties:
[0060] 1. The temporal ID and layer ID of the picture header NAL unit are the same as the temporal ID and layer ID of the layer access unit that contains the picture header.
[0061] 2. A picture header NAL unit precedes the NAL unit containing the first slice of its associated picture, which establishes the association between a picture header and the slices of the picture associated with it without requiring a picture header ID to be signaled in the picture header and referenced from the slice headers.
[0062] 3. The picture header NAL unit follows the picture-level parameter sets or higher-level ones, e.g., DPS, VPS, SPS, PPS, etc. This consequently requires that those parameter sets are not repeated / existent within a picture or access unit.
[0063] 4. The picture header contains information about the picture type of its associated picture. The picture type can be used to define the following (non-exhaustive list): a. The picture is an IDR picture; b. The picture is a CRA picture; c. The picture is a GDR picture; d. The picture is a non-IRAP, non-GDR picture and contains only I-slices; e. the picture is a non-IRAP, non-GDR picture and can only contain P slices and I slices; f. The picture is a non-IRAP, non-GDR picture and contains either a B slice, a P slice, and / or an I slice.
[0064] 5. Move the signaling of picture-level syntax elements in the slice header to the picture header.
[0065] 6. Non-picture level syntax elements in the slice header that are typically the same for all slices of the same picture are signaled in the picture header. When those syntax elements are not present in the picture header, they may be signaled in the slice header.
[0066] In some implementations, a mandatory picture header concept is used, transmitted once per picture as the first VCL NAL unit of the picture. It is also proposed to move syntax elements currently in slice headers to this picture header. Syntax elements that functionally need to be transmitted only once per picture header can be moved to the picture header instead of being sent multiple times for a given picture (e.g., syntax elements in a slice header are transmitted once per slice). Slice header syntax elements that are constrained to be the same within a picture are moved.
[0067] Those syntax elements are already constrained to be the same for all slices of a picture. We argue that moving those fields to the picture header so that they are signaled only once per picture instead of once per slice avoids unnecessary and redundant bit transmission without changing the functionality of those syntax elements in any way.
[0068] 1. In some implementations, the following semantic constraints exist:
[0069] When present, the value of each of the slice header syntax elements slice_pic_parameter_set_id, non_reference_picture_flag, colour_plane_id, slice_pic_order_cnt_lsb, recovery_poc_cnt, no_output_of_prior_pics_flag, pic_output_flag, and slice_temporal_mvp_enabled_flag is the same in all slice headers of a coded picture, and therefore each of these syntax elements may be moved to the picture header to avoid unnecessary redundant bits.
[0070] recovery_poc_cnt and no_output_of_prior_pics_flag are not moved to the picture header in this contribution. Their presence in the slice header depends on a conditional check of the slice header nal_unit_type, and therefore we suggest checking them if you want to move these syntax elements to the picture header.
[0071] 2. In some implementations, the following semantic constraints exist:
[0072] If present, the value of slice_lmcs_aps_id is the same for all slices of a picture.
[0073] If present, the value of slice_scaling_list_aps_id is the same for all slices of a picture. Therefore, each of these syntax elements may be moved to the picture header to avoid unnecessary redundant bits.
[0074] In some embodiments, these syntax elements are not currently constrained to be the same in all slices of a picture. Given the complexity impact of handling a large number of syntax elements in all slice headers, we propose to evaluate the expected usage of these syntax elements to determine which syntax elements can be moved to the picture header to simplify the overall VVC design.
[0075] 1. We propose to move the following syntax elements to the picture header. Currently, there is no constraint for these to have different values for different slices, but we argue that their expected usage may vary at the picture level, so there is no / minimal benefit and coding loss in transmitting them in all slice headers: a. six_minus_max_num_merge_cand b. five_minus_max_num_subblock_merge_cand c. slice_fpel_mmvd_enabled_flag d. slice_disable_bdof_dmvr_flag e. max_num_merge_cand_minus_max_num_triangle_cand f. slice_six_minus_max_num_ibc_merge_cand
[0076] 2. We propose to move the following syntax elements to the picture header. Currently, there is no constraint for these to have different values for different slices, but we argue that their expected usage may vary at the picture level, so there is no / minimal benefit and coding loss in transmitting them in all slice headers: a. partition_constraints_override_flag b. slice_log2_diff_min_qt_min_cb_luma c. slice_max_mtt_hierarchy_depth_luma d. slice_log2_diff_max_bt_min_qt_luma e. slice_log2_diff_max_tt_min_qt_luma f. slice_log2_diff_min_qt_min_cb_chroma g. slice_max_mtt_hierarchy_depth_chroma h. slice_log2_diff_max_bt_min_qt_chroma i. slice_log2_diff_max_tt_min_qt_chroma
[0077] The conditional check "slice_type==I" associated with some of these syntax elements has been removed as they have been moved to the picture header.
[0078] 3. We propose to move the following syntax elements to the picture header. Currently, there is no constraint for these to have different values for different slices, but we argue that their expected usage may vary at the picture level, so there is no / minimal benefit and coding loss in transmitting them in all slice headers: a. mvd_l1_zero_flag
[0079] The conditional check "slice_type==B" associated with some of these syntax elements has been removed as they have been moved to the picture header.
[0080] 4. We propose to move the following syntax elements to the picture header. Currently, there is no constraint for these to have different values for different slices, but we argue that their expected usage may vary at the picture level, so there is no / minimal benefit and coding loss in transmitting them in all slice headers: a. dep_quant_enabled_flag b. sign_data_hiding_enabled_flag
[0081] 2.10.1 Syntax Table Example 7.3.2.8 Picture Header RBSP Syntax (outer 9) TIFF0007799672000036.tif233166TIFF0007799672000037.tif235166TIFF0007799672000038.tif238166TIFF0007799672000039.tif168166
[0082] 2.11 DMVR Example Decoder-side Motion Vector Refinement (DMVR) utilizes bilateral matching (BM) to derive the motion information of the current CU by finding the closest match between two blocks along the current CU's motion trajectory in two different reference pictures. The BM method calculates the distortion between two candidate blocks in reference picture list L0 and list L1. As shown in Figure 1, the SAD between red blocks based on each MV candidate around the initial MV is calculated. The MV candidate with the lowest SAD becomes the refined MV and is used to generate the bi-predictive signal. The cost function used in the matching process is row subsampling SAD (sum of absolute differences). An example is shown in Figure 7.
[0083] In VTM5.0, DMVR is adopted to refine motion vectors (MVs) for coding units (CUs) at the decoder when the CU is coded in normal merge / skip mode and bi-predictive coding, where one reference picture precedes the current picture in display order and the other reference picture follows the current picture, the temporal distance between the current picture and one reference picture is equal to the temporal distance between the current picture and the other reference picture, and bi-predictive coding using CU weights (BCW) selects equal weights. When DMVR is applied, one luma coding block (CB) is divided into several independently processed sub-blocks of size min(cbWidth, 16) × min(cbHeight, 16). DMVR refines the MV of each sub-block by minimizing the SAD between 1 / 2 subsampled 10-bit L0 and L1 predicted samples generated by bilinear interpolation. For each sub-block, first, an integer ΔMV search is performed around the initial MV (i.e., the MV of the selected normal merge / skip candidate) using SAD, and then a fractional ΔMV derivation is performed to obtain the final MV.
[0084] BDOF refines the luma prediction sample for a CU when the CU is coded bi-predictively, where one reference picture precedes the current picture and the other reference picture follows the current picture in display order, and BCW selects equal weights. An 8-tap interpolation is used to generate the initial L0 and L1 prediction samples according to the input MV (e.g., the final MV of DMVR when DMVR is enabled). Next, a two-level early termination process is performed. The first early termination is at the sub-block level, and the second early termination is at the 4x4 block level, which is checked if the first early termination does not occur. At each level, the SAD between the fully sampled 14-bit L0 and L1 prediction samples in each sub-block / 4x4 block is first calculated. If the SAD is smaller than a threshold, BDOF is not applied to that sub-block / 4x4 block. Otherwise, BDOF parameters are derived and used to generate the final luma sample predictor for each 4x4 block. In BDOF, the sub-block size is the same as in DMVR, namely, min(cbWidth, 16) x min(cbHeight, 16).
[0085] When a CU is coded in normal merge / skip mode, one reference picture is before the current picture and the other reference picture is after the current picture in display order, the temporal distance between the current picture and one reference picture is equal to that between the current picture and the other reference picture, the BCW selects equal weights, and both DMVR and BDOF are applied. The flow of the cascaded DMVR and BDOF process is shown in Figure 8.
[0086] Figure 8 shows the flow of the cascaded DMVR and BDOF process in VTM 5.0. The DMVR SAD calculation and the BDOF SAD calculation are different and are not shared.
[0087] To reduce the latency and computation in this critical path, when both DMVR and BDOF are applied, the latest VVC working draft has been revised to reuse the sub-block SAD calculated in DMVR for sub-block early termination in BDOF.
[0088] The SAD calculation is defined as follows:
number
[0089] To reduce the uncertainty penalty of DMVR refinement, it is proposed to prioritize the original MV during the DMVR process. The SAD between the reference blocks referenced by the original MV candidate (or called the original MV candidate) is reduced by 1 / 4 of the SAD value. That is, when both dX and dY in the above formula are equal to 0, the value of sad is: sad=sad-(sad>>2) will be changed as follows.
[0090] When the SAD value is smaller than the threshold (2*subblock width*subblock height), there is no need to perform BDOF anymore.
[0091] 3. Shortcomings of existing implementations DMVR and BIO do not involve the original signal when refining motion vectors, which may result in coding blocks with inaccurate motion information. Also, DMVR and BIO sometimes use fractional motion vectors after motion refinement, while screen images usually have integer motion vectors, which makes the current motion information more inaccurate and worsens coding performance.
[0092] When RPR is applied in VVC, RPR(ARC) may have the following problems.
[0093] 1. In RPR, the interpolation filters can be different for adjacent samples within a block, which is undesirable for SIMD (single instruction multiple data) implementations.
[0094] 2. The boundary region does not consider RPR.
[0095] 3. It is noted that "The adaptive cropping window offset parameters are only applied at the output. All internal decoding processes are applied to the uncropped picture size." However, those parameters may be used in the decoding process when RPR is applied.
[0096] 4. When deriving the reference sample position, RPR only considers the ratio between the two matched windows, but the top-left offset difference between the two matched windows should also be considered.
[0097] 5. In VVC, the ratio of the width / height of a reference picture to the width / height of a current picture is constrained, but the ratio of the width / height of a matching window of a reference picture to the width / height of a matching window of a current picture is not constrained.
[0098] 6. Not all syntax elements are properly handled within the picture header.
[0099] 7. In the current VVC, in TPM and GEO prediction modes, chroma mixing weights are derived regardless of the chroma sample position type of the video sequence. For example, in TPM / GEO, if chroma weights are derived from luma weights, it may be necessary to downsample the luma weights to match the sampling of the chroma signal. Chroma downsampling is usually applied assuming chroma sample position type 0, which is widely used in ITU-R BT.601 or ITU-R BT.709 containers. However, this can cause misalignment between chroma samples and downsampled luma samples when a different chroma sample position type is used, resulting in reduced coding performance.
[0100] 8. Please note that the SAD calculation / SAD threshold does not take into account the effect of bit depth, so for higher bit depths (e.g., 14 or 16 bit input sequences), the threshold for early termination may be too small.
[0101] 9. In the non-RPR case, 1 / 2-pel MV precision AMVR (i.e., alternate interpolation filter / switchable interpolation filter) is applied with a 6-tap motion compensation filter, and 8-tap is applied for other cases (e.g., 1 / 16-pel). However, in the RPR case, the same interpolation filter is applied for all cases without considering the mv / mvd precision. Therefore, signaling the 1 / 2-pel case (alternate interpolation filter / switchable interpolation filter) is a bit-waste.
[0102] 10. The decision of whether partition tree splitting is allowed or not depends on the coded picture resolution instead of the output picture resolution.
[0103] 11. SMVD / MMVD are applied without considering the RPR case. These methods are based on the assumption that symmetric MVD is applied to two reference pictures. However, when the output picture resolutions are different, this assumption does not hold.
[0104] 12. Pairwise merge candidates are generated by averaging two MVs from two merge candidates in the same reference picture list. However, if the two reference pictures associated with the two merge candidates have different resolutions, averaging does not make sense.
[0105] 4. Examples of Techniques and Implementations The detailed embodiments described below should be considered as examples to illustrate the general concept. These embodiments should not be construed in a narrow sense. Furthermore, these embodiments can be combined in any way.
[0106] The methods described below may also be applicable to other decoder motion information derivation techniques in addition to DMVR and BIO described below.
[0107] A motion vector is expressed as (mv_x, mv_y), where mv_x is the horizontal component and mv_y is the vertical component.
[0108] In this disclosure, the resolution (or dimensions, width / height, or size) of a picture may refer to the resolution (or dimensions, width / height, or size) of an encoding / decoding picture, or may refer to the resolution (or dimensions, width / height, or size) of an adaptation window of an encoding / decoding picture. In one example, the resolution (or dimensions, width / height, or size) of a picture may refer to parameters related to an RPR (Reference Picture Resampling) process, such as a scaling window / phase offset window. In one example, the resolution (or dimensions, width / height, or size) of a picture relates to that related to an output picture. Motion compensation in RPR 1. When the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is larger than that of the current picture, the prediction values for a group of samples (at least two samples) of the current block may be generated using the same horizontal and / or vertical interpolation filter: a. In one example, the group may comprise all samples within a region of a block: i. For example, a block may be divided into S non-overlapping MxN rectangles, each MxN rectangle being a group. In the example shown in Figure 2, a 16x16 block may be divided into 16 4x4 rectangles, each being a group; ii. For example, a row having N samples is a group, where N is an integer less than or equal to the block width. In one example, N is 4 or 8 or the block width; iii. For example, a group is a column with N samples, where N is an integer less than or equal to the block height. In one example, N is 4 or 8 or the block height; iv. M and / or N may be predetermined or may be derived on the fly based on, for example, block size / coding information, etc., or may be signaled; b. In one example, samples within a group may have the same MV (denoted as shared MV); c. In one example, samples within a group may have MVs with the same horizontal component (denoted as shared horizontal component); d. In one example, samples within a group may have MVs with the same vertical component (denoted as shared vertical component); e. In one example, samples within a group may have MVs with the same fractional portion of the horizontal component (denoted as shared fractional horizontal component): i. For example, if the MV for the first sample is (MV1x, MV1y) and the MV for the second sample is (MV2x, MV2y), then MV1x & (2 M -1) is MV2x&(2 M -1), where M represents the MV precision. For example, M=4; f. In one example, samples within a group may have MVs with the same fractional portion of the vertical component (denoted as shared fractional vertical component): i. For example, if the MV for the first sample is (MV1x, MV1y) and the MV for the second sample is (MV2x, MV2y), then MV1y & (2 M -1) is MV2y&(2 M -1), where M represents the MV precision. For example, M=4; g. In one example, for samples in the group to be predicted, first, the current picture and the reference picture (e.g., the reference picture derived in 8.5.6.3.1 of JVET-O2001-v14 (e.g., (refx L ,refy L )) according to MV b Then, a motion vector is derived, denoted as MV b can be further modified (e.g., rounded / truncate / clipped) to MV' to meet requirements such as those in the bullet points above, and MV' will be used to derive the predicted sample for the sample: i. In one example, MV' is MV b and the fractional part of MV' is set to be a shared fractional horizontal component and / or a shared fractional vertical component; ii. In one example, MV' is the fraction of the shared fractional horizontal and / or vertical components of MV b is set closer to; 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) may be set to 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) of a particular sample in the group: i. For example, a particular sample may be at the corner of a group of rectangles, such as "A," "B," "C," and "D" shown in FIG. 3A; ii. For example, a particular sample may be at the center of a group of rectangles, such as "E," "F," "G," and "H" shown in FIG. 3A; iii. For example, a particular sample may be at one end of a row-shaped or column-shaped group, such as "A" and "D" shown in Figures 3B and 3C; iv. For example, a particular sample may be in the center of a row-shaped or column-shaped group, such as "B" and "C" shown in Figures 3B and 3C; v. In one example, the motion vector for a particular sample is the MV b It can be; 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 be the motion vector (and / or horizontal component and / or vertical component and / or fractional horizontal component and / or fractional vertical component) of a hypothetical sample that is located differently from all samples in the group: i. In one example, the virtual sample is not within the group, but is located within the region that covers all samples in the group: 1) Alternatively, the virtual sample is located outside the region covering all samples in the group, for example, next to the bottom right position of the region; ii. In one example, the MVs of the virtual samples are derived in the same way as the real samples, but at multiple different locations; iii. "V" in Figures 3A-3C shows three examples of hypothetical samples; j. The shared MV (and / or the shared horizontal component and / or the shared vertical component and / or the shared fractional horizontal component and / or the shared fractional vertical component) may be set to be a function of the MV (and / or the horizontal component and / or the vertical component and / or the fractional horizontal component and / or the fractional vertical component) of a plurality of samples and / or virtual samples: i. For example, 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) may be set to be the average of the MV (and / or horizontal component and / or vertical component, and / or fractional horizontal component and / or fractional vertical component) of all or some of the samples in the group, or of samples "E", "F", "G", and "H" in Figure 3A, or of samples "E", "H" in Figure 3A, or of samples "A", "B", "C", and "D" in Figure 3A, or of samples "A" and "D" in Figure 3A, or of samples "B" and "C" in Figure 3B, or of samples "A" and "D" in Figure 3B, or of samples "B" and "C" in Figure 3C, or of samples "A" and "D" in Figure 3C. 2. We propose that when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is larger than that of the current picture, only integer MVs are allowed to perform the motion compensation process to derive the prediction block for the current block: a. In one example, the composite motion vector for the sample being predicted is rounded to an integer MV before being used; b. In one example, the composite motion vector for the predicted sample is rounded to the nearest integer MV to the decoded motion vector; c. In one example, the composite motion vector for the predicted sample is rounded to the nearest integer MV to the decoded motion vector in the horizontal direction; d. In one example, the composite motion vector for the predicted sample is rounded to the nearest integer MV to the decoded motion vector in the vertical direction. 3. The motion vectors used in the motion compensation process for samples in the current block (e.g., the shared MVs / shared horizontal or vertical or fractional components / MVs' mentioned in the above bullet points) may be stored in the decoded picture buffer and used for motion vector prediction of subsequent blocks in the current picture / different picture: a. Alternatively, motion vectors (e.g., shared MVs / shared horizontal or vertical or fractional components / MVs' mentioned in the above bullet points) used in the motion compensation process for samples in the current block may be prohibited from being used for motion vector prediction of a subsequent block in the current picture / different picture: i. In one example, the decoded motion vectors (e.g., MVs in the above bullet point) b ) can be used for motion vector prediction of subsequent blocks in the current picture / different picture; b. In one example, the motion vectors used in the motion compensation process for the samples in the current block may be utilized in the filtering process (e.g., deblocking filter / SAO / ALF): i. Alternatively, the decoded motion vector (e.g., MV in the above bullet point) b ) may be utilized in the filtering process; c. In one example, such MVs may be derived at the sub-block level and stored for each sub-block. 4. We propose that the interpolation filters used in the motion compensation process to derive a prediction block for a current block may be selected depending on whether the resolution of the reference picture is different from that of the current picture or whether the width and / or height of the reference picture is larger than that of the current picture: a. In one example, an interpolation filter with fewer taps can be applied when condition A is met, where condition A depends on the dimensions of the current picture and / or the reference picture: i. In one example, condition A is that the resolution of the reference picture is different from that of the current picture; ii. In one example, condition A is that the width and / or height of the reference picture is greater than that of the current picture; iii. In one example, the condition A is W1>a*W2 and / or H1>b*H2, where (W1, H1) represents the width and height of the reference picture, (W2, H2) represents the width and height of the current picture, and a and b are two coefficients, for example, a=b=1.5; iv. In one example, condition A may also depend on whether bi-prediction is used; v. In one example, a 1-tap filter is applied, in other words, integer pixels without filtering are output as the interpolation result; vi. In one example, when the resolution of the reference picture is different from that of the current picture, a bilinear filter is applied; vii. In one example, when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is larger than that of the current picture, a 4-tap filter or a 6-tap filter is applied: 1) The 6-tap filter can also be used for affine motion compensation; 2) The 4-tap filter can also be used for interpolation on chroma samples; b. In one example, padding samples are used to perform interpolation when the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is larger than that of the current picture; c. Whether and / or how to apply the method disclosed in bullet 4 may depend on the color component: i. For example, the method is applied to only the luma component; d. Whether and / or how to apply the method disclosed in bullet 4 may depend on the interpolation filtering direction: i. For example, the method applies to horizontal filtering only; ii. For example, the method applies to vertical filtering only. 5. When the resolution of the reference picture is different from that of the current picture, or when the width and / or height of the reference picture is larger than that of the current picture, we propose that a two-stage process for predictive block generation be applied: a. In a first step, a virtual reference block is generated by upsampling or downsampling an area in a reference picture according to the width and / or height of the current picture and the reference picture; b. In a second stage, predicted samples are generated from the virtual reference block by applying interpolation filtering independent of the width and / or height of the current and reference pictures. 6. The top left coordinate of the border block for reference sample padding, as in some embodiments (xSbInt L ,ySbInt L ) can be derived depending on the width and / or height of the current and reference pictures: a. In one example, the luma position in full samples is: xInt i =Clip3(xSbInt L -Dx,xSbInt L +sbWidth+Ux,xInt i ), yInt i =Clip3(ySbInt L -Dy,ySbInt L +sbHeight+Uy,yInt i ) where 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; b. In one example, the chroma position in full samples is: xInti=Clip3(xSbInt C -Dx,xSbInt C +sbWidth+Ux,xInti), yInti=Clip3(ySbInt C -Dy,ySbInt C +sbHeight+Uy,yInti) where 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. 7. Instead of storing / using for a block a motion vector based on the same reference picture resolution as the current picture, we propose to use an actual motion vector that takes into account the resolution difference: a. Alternatively, when generating a prediction block using a motion vector, the resolution of the current picture and the reference picture (for example, (refx L ,refy L )) there is no need to further modify the motion vectors. Interaction between RPR and other coding tools 8. Whether / how a filtering process (e.g., a deblocking filter) should be applied may depend on the resolution of the reference picture and / or the resolution of the current picture: a. In one example, the boundary strength (BS) setting in the deblocking filter may take into account resolution differences in addition to motion vector differences: i. In one example, the boundary strength may be determined using a motion vector difference scaled according to the resolution of the current picture and the reference picture; b. In one example, when the resolution of at least one reference picture for block A is different (or smaller or larger) than the resolution of at least one reference picture for block B, the strength of the deblocking filter for the boundary between block A and block B may be set differently (e.g., increased / decreased) compared to when the same resolution is used for the two blocks; c. In one example, if the resolution of at least one reference picture of block A is different (or smaller or larger) than the resolution of at least one reference picture of block B, the boundary between block A and block B is marked as to be filtered (e.g., BS is set to 2); d. In one example, when the resolution of at least one reference picture for block A and / or block B is different (or smaller or larger) than the resolution of the current picture, the strength of the deblocking filter for the boundary between block A and block B may be set differently (e.g., increased / decreased) compared to when the same resolution is used for the reference picture and the current picture; e. In one example, a boundary between two blocks is marked as to be filtered (e.g., BS is set to 2) if at least one reference picture of at least one of the two blocks has a different resolution than the resolution of the current picture. 9. When subpictures are present, a conforming bitstream may be required to satisfy the following: the reference picture must have the same resolution as the current picture: a. Or, when the reference picture has a different resolution than the current picture, there is no sub-picture in the current picture; b. Alternatively, for a sub-picture within the current picture, the use of a reference picture with a different resolution than the current picture is prohibited: i. Alternatively or additionally, reference picture management can be invoked to exclude reference pictures with different resolutions. 10. In one example, sub-pictures (e.g., how to split one picture into multiple sub-pictures) can be defined separately for pictures with different resolutions: In one example, if a reference picture has a different resolution than the current picture, the corresponding sub-picture in the reference picture can be derived by scaling and / or offsetting the sub-picture of the current picture. 11. When the reference picture has a different resolution than the current picture's resolution, PROF (prediction refinement in optical flow) can be enabled: a. In one example, for a group of samples, a set of MVs (MV g ) can be generated and used for motion compensation as described in bullet 1. Meanwhile, for each sample, a MV (MV p ) can be derived, and MV p and MV g The difference between (e.g., corresponding to Δv used in PROF) together with the gradient (e.g., spatial gradient of the motion compensated block) may be used to derive the prediction refinement; b. In one example, MV pMV g For example, MV p can be at 1 / N-pel (N>0) precision, where N=32, 64, etc.; c. In one example, MV g can be at a precision different from the internal MV precision (e.g., 1 / 16 pel); d. In one example, the prediction refinement is added to the prediction block to generate a refined prediction block; e. In one example, such a method may be applied in each prediction direction; f. In one example, such a method may be applied only in the case of one-way prediction; g. In one example, such methods may be applied in uni-prediction or / and bi-prediction; h. In one example, such a method may only be applied if the reference picture has a different resolution than the current picture. 12. We propose that when the resolution of the reference picture is different from that of the current picture, only one MV for a block / sub-block can be utilized to perform the motion compensation process to derive the prediction block for the current block: a. In one example, a unique MV for a block / sub-block may be defined as a function (e.g., the average) of all MVs associated with each sample within the block / sub-block; b. In one example, the only MV for a block / sub-block may be defined as a selected MV associated with a selected sample (e.g., a center sample) within the block / sub-block; c. In one example, only one MV may be used for a 4x4 block or sub-block (e.g., 4x1); d. In one example, BIO can be further applied to compensate for precision loss due to block-based motion vectors. 13. When the width and / or height of the reference picture is different from that of the current picture, a lazy mode that does not signal block-based motion vectors may be applied: a. In one example, no motion vectors are signaled and the motion compensation process approximates the case of pure resolution change of a still image; b. In one example, when the resolution changes, only the motion vectors are signaled at the picture / tile / brick / CTU level and the relevant blocks may use those motion vectors. 14. For blocks coded in affine and / or non-affine prediction modes, PROF may be applied to approximate motion compensation when the width and / or height of the reference picture differs from that of the current picture: In one example, PROF may be enabled when the width and / or height of the reference picture is different from that of the current picture; b. In one example, a set of affine motions can be generated by combining the pointed motions and scaling them to the resolution used by PROF. 15. When the width and / or height of the reference picture differs from that of the current picture, interweave prediction (e.g., as proposed in JVET-K0102) may be applied to approximate motion compensation: a. In one example, resolution changes (zooming) can be represented as affine motion and interweave motion estimation can be applied. 16. When the width and / or height of the current picture is different from that of an IRAP picture within the same IRAP period, LMCS and / or chroma residual scaling may be disabled: a. In one example, when LMCS is disabled, slice level flags such as slice_lmcs_enabled_flag, slice_lmcs_aps_id, and slice_chroma_residual_scale_flag may be presumed to be 0 without being signaled; b. In one example, when chroma residual scaling is disabled, a slice level flag, such as slice_chroma_residual_scale_flag, may not be signaled and may be inferred to be 0. RPR Constraints 17. RPR can be applied to coding blocks with block size constraints: a. In one example, for an M×N coding block, where M is the block width and N is the block height, when M*N < T or M*N <= T (e.g., T = 256, etc.), RPR may not be used; b. In one example, when M < K (or M <= K) (e.g., K = 16, etc.) and / or N < L (or N <= L) (e.g., L = 16, etc.), RPR may not be used. 18. Bitstream adaptation can be added to restrict the ratio between the width and / or height of the active reference picture (or its adapted window) and that of the current picture (or its adapted window). Let refPicW and refPicH represent the width and height of the reference picture, and curPicW and curPicH represent the width and height of the current picture: a. In one example, when (refPicW ÷ curPicW) is equal to an integer, that reference picture can be marked as an active reference picture: i. Alternatively, when (refPicW ÷ curPicW) is equal to a fraction, that reference picture can be marked as not available; b. In one example, for example, X represents a fraction such as X = 1 / 2, and for example, n represents an integer such as n = 1, 2, 3, 4,... When (refPicW ÷ curPicW) is equal to (X*n), that reference picture can be marked as an active reference picture: i. In one example, when (refPicW ÷ curPicW) is not equal to (X*n), that reference picture can be marked as not available. 19. Whether and / or how to enable coding tools (e.g., dual prediction / global triangular prediction mode (TPM) / hybrid process in TPM) for an M×N block may depend on the resolution of the reference picture (or their adapted windows) and / or the resolution of the current picture (or its adapted window): a. In one example, M*N < T or M*N <= T (e.g., T = 64, etc.); b. In one example, M < K (or M <= K) (e.g., K = 16, etc.) and / or N < L (or N <= L) (e.g., L = 16, etc.); c. In one example, when the width / height of at least one reference picture is different from that of the current picture, the coding tool is not permitted: i. In one example, when the width / height of at least one reference picture of a block is larger than that of the current picture, the coding tool is not permitted; d. In one example, when the width / height of each reference picture of a block is different from that of the current picture, the coding tool is not permitted: i. In one example, when the width / height of each reference picture is larger than that of the current picture, the coding tool is not permitted; e. Alternatively, further, when the coding tool is not permitted, motion compensation may be performed with one MV as single prediction. Compatible window related 20. Assuming N is a positive integer greater than 1, the adaptive cropping window offset parameter (e.g., conf_win_left_offset) is signaled with an N - pel accuracy instead of 1 - pel: a. In one example, the actual offset may be derived as the signaled offset multiplied by N; b. In one example, N is set to 4 or 8. 21. It is proposed that the adaptive cropping window offset parameter is not only applied in the output. A specific internal decoding process may depend on the cropped picture size (i.e., the resolution of the adaptive window within the picture). 22. We propose that when the picture width and / or height, denoted as (pic_width_in_luma_samples, pic_height_in_luma_samples), in a first video unit and in a second video unit are the same, the adaptive cropping window offset parameters can be different in a first video unit (e.g., PPS) and in a second video unit. 23. When the picture width and / or height, denoted as (pic_width_in_luma_samples, pic_height_in_luma_samples), in a first video unit and in a second video unit are different, we propose that in a conforming bitstream the conforming cropping window offset parameters should be the same in the first video unit (e.g., PPS) and in the second video unit: a. We propose that in a conforming bitstream, the conforming cropping window offset parameters should be the same in the first video unit (e.g., PPS) and in the second video unit, regardless of whether the picture width and / or height, denoted as (pic_width_in_luma_samples, pic_height_in_luma_samples), are the same in the first and second video units. 24. Let the width and height of the conformance window specified in the first video unit (e.g., PPS) be denoted as W1 and H1, respectively. Let the width and height of the conformance window specified in the second video unit (e.g., PPS) be denoted as W2 and H2, respectively. Let the top-left position of the conformance window specified in the first video unit (e.g., PPS) be denoted as X1 and Y1. Let the top-left position of the conformance window specified in the second video unit (e.g., PPS) be denoted as X2 and Y2. Let the width and height of the coded / decoded picture (e.g., pic_width_in_luma_samples and pic_height_in_luma_samples) specified in the first video unit (e.g., PPS) be denoted as PW1 and PH1, respectively. Let the width and height of the coded / decoded picture specified in the second video unit (e.g., PPS) be denoted as PW2 and PH2, respectively: a. In one example, a conforming bitstream should have W1 / W2 equal to X1 / X2: i. Alternatively, in a conforming bitstream W1 / X1 should be equal to W2 / X2; ii. Alternatively, in a conforming bitstream W1*X2 should be equal to W2*X1; b. In one example, a conforming bitstream should have H1 / H2 equal to Y1 / Y2: i. Alternatively, in a conforming bitstream, H1 / Y1 should be equal to H2 / Y2; ii. Alternatively, in a conforming bitstream, H1*Y2 should be equal to H2*Y1; c. In one example, a conforming bitstream should have PW1 / PW2 equal to X1 / X2: i. Alternatively, in a conforming bitstream, PW1 / X1 should be equal to PW2 / X2; ii. Alternatively, in a conforming bitstream, PW1*X2 should be equal to PW2*X1; d. In one example, PH1 / PH2 should be equal to Y1 / Y2 in a conforming bitstream: i. Alternatively, in a conforming bitstream, PH1 / Y1 should be equal to PH2 / Y2; ii. Alternatively, in a conforming bitstream, PH1*Y2 should be equal to PH2*Y1; e. In one example, a conforming bitstream should have PW1 / PW2 equal to W1 / W2: i. Alternatively, in a conforming bitstream, PW1 / W1 should be equal to PW2 / W2; ii. Alternatively, in a conforming bitstream, PW1*W2 should be equal to PW2*W1; f. In one example, PH1 / PH2 should be equal to H1 / H2 in a conforming bitstream: i. Alternatively, in a conforming bitstream, PH1 / H1 should be equal to PH2 / H2; ii. Alternatively, in a conforming bitstream, PH1*H2 should be equal to PH2*H1; g. In a conforming bitstream, if PW1 is greater than PW2, then W1 must be greater than W2; h. In a conforming bitstream, if PW1 is less than PW2, then W1 must be less than W2; i. In a conforming bitstream, (PW1-PW2)*(W1-W2) must be greater than or equal to 0; j. In a conforming bitstream, if PH1 is greater than PH2, then H1 must be greater than H2; k. In a conforming bitstream, if PH1 is less than PH2, then H1 must be less than H2; l. In a conforming bitstream, (PH1-PH2)*(H1-H2) must be greater than or equal to 0; m. In a conforming bitstream, if PW1>=PW2, then W1 / W2 must be less than or equal to PW1 / PW2; n. In a conforming bitstream, if PH1>=PH2, then H1 / H2 must be less than or equal to PH1 / PHW2 (or greater than or equal to PH1 / PHW2). 25. Let the width and height of the conformance window in the current picture be denoted as W and H, respectively. Let the width and height of the conformance window in the reference picture be denoted as W' and H', respectively. A conforming bitstream should obey at least one of the following constraints: a. W*pw>=W'; pw is an integer, e.g., 2; b. W*pw>W'; pw is an integer, e.g., 2; c. W'*pw'>=W; pw' is an integer, e.g., 8; d. W'*pw'>W; pw' is an integer, e.g., 8; e. H*ph>=H'; ph is an integer such as 2; f. H*ph>H'; ph is an integer such as 2; g. H'*ph'>=H; ph' is an integer, e.g., 8; h. H'*ph'>H; ph' is an integer such as 8; i. In one example, pw is equal to pw'; j. In one example, ph is equal to ph'; k. In one example, pw is equal to ph; l. In one example, pw' is equal to ph'; m. In one example, the above sub-points may need to be satisfied by a conforming bitstream, where W and H represent the width and height of the current picture, respectively. W' and H' represent the width and height of the reference picture. 26. We propose that the adaptation window parameters be partially signaled: In one example, the top left sample of the matching window of a picture is the same as that in the picture; b. For example, conf_win_left_offset defined in VVC is not signaled and is assumed to be 0; c. For example, conf_win_top_offset defined in VVC is not signaled and is assumed to be 0. 27. It is proposed that the derivation of the position of the reference sample (e.g., (refx L , refy L )) defined in VVC) may depend on the position of the upper left corner of the adaptive window of the current picture and / or the reference picture (e.g., (conf_win_left_offset, conf_win_top_offset) defined in VVC). FIG. 4 shows examples of the sample positions derived (a) as in VVC and (b) in the proposed method. The dashed rectangle represents the adaptive window: a. In one example, the dependency exists only when the width and / or height of the current picture is different from that of the reference picture; b. In one example, the derivation of the horizontal position of the reference sample (e.g., Refx L ) defined in VVC) may depend on the left position of the adaptive window of the current picture and / or the reference picture (e.g., conf_win_left_offset defined in VVC): i. In one example, the horizontal position of the current sample with respect to the upper left corner position of the adaptive window within the current picture (denoted as xSb’) is calculated and used to derive the position of the reference sample: 1) For example, xSb’ = xSb - (conf_win_left_offset << Prec) is calculated and used to derive the position of the reference sample. Here, xSb represents the horizontal position of the current sample within the current picture. conf_win_left_offset represents the horizontal position of the upper left sample within the adaptive window of the current picture. Prec represents the precision of xSb and xSb’, where (xSb >> Prec) may indicate the actual horizontal coordinate of the current sample with respect to the current picture. For example, Prec = 0 or Prec = 4; ii. In one example, the horizontal position of the reference sample with respect to the upper left corner position of the adaptive window within the reference picture (denoted as Rx’) is calculated: 1) The calculation of Rx’ may depend on xSb’, and / or the motion vector, and / or the resampling ratio; iii. In one example, the horizontal position of the reference sample with respect to the reference picture (denoted as Rx) is calculated depending on Rx': 1) For example, Rx = Rx' + (conf_win_left_offset_ref << Prec) is calculated, where conf_win_left_offset_ref represents the horizontal position of the upper left sample within the adaptation window of the reference picture. Prec represents the precision of Rx and Rx'. For example, Prec = 0 or Prec = 4; iv. In one example, Rx can be directly calculated depending on xSb', and / or the motion vector, and / or the resampling ratio. In other words, the two steps of derivation for Rx' and Rx are combined into one-step calculation; v. Whether the left position of the adaptation window of the current picture and / or the reference picture (e.g., conf_win_left_offset defined in VVC) should be used and / or how to use it may depend on the color component and / or the color format: 1) For example, conf_win_left_offset can be revised as conf_win_left_offset = conf_win_left_offset * SubWidthC, where SubWidthC defines the horizontal sampling step of the color component. For example, SubWidthC is equal to 1 for the luma component. SubWidthC is equal to 2 for the chroma component when the color format is 4:2:0 or 4:2:2; 2) For example, conf_win_left_offset can be revised as conf_win_left_offset = conf_win_left_offset / SubWidthC, where SubWidthC defines the horizontal sampling step of the color component. For example, SubWidthC is equal to 1 for the luma component. SubWidthC is equal to 2 for the chroma component when the color format is 4:2:0 or 4:2:2; c. In one example, the derivation of the vertical position of the reference sample (e.g., Refy as defined in VVC) L ) may depend on the upper position of the adaptive window of the current picture and / or reference picture (e.g., conf_win_top_offset as defined in VVC): i. In one example, the vertical position of the current sample relative to the upper left position of the adaptive window within the current picture (denoted as ySb’) is calculated and used to derive the position of the reference sample: 1) For example, ySb’ = ySb - (conf_win_top_offset << Prec) is calculated and used to derive the position of the reference sample. Here, ySb represents the vertical position of the current sample within the current picture. conf_win_top_offset represents the vertical position of the upper left sample within the adaptive window of the current picture. Prec represents the precision of ySb and ySb’. For example, Prec = 0 or Prec = 4; ii. In one example, the vertical position of the reference sample relative to the upper left position of the adaptive window within the reference picture (denoted as Ry’) is calculated: 1) The calculation of Ry’ may depend on ySb’, and / or the motion vector, and / or the resampling ratio; iii. In one example, the vertical position of the reference sample relative to the reference picture (denoted as Ry) is calculated depending on Ry’: 1) For example, Ry = Ry’ + (conf_win_top_offset_ref << Prec) is calculated, where conf_win_top_offset_ref represents the vertical position of the upper left sample within the adaptive window of the reference picture. Prec represents the precision of Ry and Ry’. For example, Prec = 0 or Prec = 4; iv. In one example, Ry may be directly calculated depending on ySb’, and / or the motion vector, and / or the resampling ratio. In other words, the two-step derivation for Ry’ and Ry is combined into a one-step calculation; v. Whether and / or how to use the top position of the adaptation window of the current picture and / or reference picture (e.g., conf_win_top_offset as defined in VVC) may depend on the color components and / or color format: 1) For example, conf_win_top_offset can be revised as conf_win_top_offset=conf_win_top_offset*SubHeightC, where SubHeightC defines the vertical sampling step of the color component. For example, SubHeightC is equal to 1 for the luma component; SubHeightC is equal to 2 for the chroma component if the color format is 4:2:0; 2) For example, conf_win_top_offset can be revised as conf_win_top_offset=conf_win_top_offset / SubHeightC, where SubHeightC defines the vertical sampling step of the color component. For example, SubHeightC is equal to 1 for the luma component; SubHeightC is equal to 2 for the chroma component if the color format is 4:2:0; 28. We propose that the integer part of the horizontal coordinate of the reference sample can be clipped to [minW,maxW]. Let the width and height of the matching window in the reference picture be denoted as W and H, respectively. Let the width and height of the matching window in the reference picture be denoted as W' and H'. Let the top-left position of the matching window in the reference picture be denoted as (X0,Y0): a. In one example, minW is equal to 0; b. In one example, minW is equal to X0; c. In one example, maxW is equal to W-1; d. In one example, maxW is equal to W'-1; e. In one example, maxW is equal to X0+W'-1; f. In one example, minW and / or maxW may be modified based on color format and / or color components: i. For example, minW is changed to minW*SubC; ii. For example, minW is changed to minW / SubC; iii. For example, maxW is changed to maxW*SubC; iv. For example, maxW is changed to maxW*SubC; v. In one example, SubC is equal to 1 for the luma component; vi. In one example, if the color format is 4:2:0, SubC is equal to 2 for the chroma component; vii. In one example, if the color format is 4:2:2, SubC is equal to 2 for the chroma component; viii. In one example, if the color format is 4:4:4, SubC equals 1 for the chroma component; g. In one example, whether and / or how clipping should occur may depend on the dimensions of the current picture (or a matching window therein) and the dimensions of the reference picture (or a matching window therein): i. In one example, clipping occurs only when the dimensions of the current picture (or a matching window therein) and the dimensions of the reference picture (or a matching window therein) differ. 29. We propose that the integer part of the vertical coordinate of the reference sample can be clipped to [minH,maxH]. Let the width and height of the matching window in the reference picture be denoted as W and H, respectively. Let the width and height of the matching window in the reference picture be denoted as W' and H'. Let the top-left position of the matching window in the reference picture be denoted as (X0,Y0): a. In one example, minH is equal to 0; b. In one example, minH is equal to Y0; c. In one example, maxH is equal to H-1; d. In one example, maxH is equal to H'-1; e. In one example, maxH is equal to Y0+H'-1; f. In one example, minH and / or maxH may be modified based on color format and / or color components: i. For example, minH is changed to minH*SubC; ii. For example, minH is changed to minH / SubC; iii. For example, maxH is changed to maxH*SubC; iv. For example, maxH is changed to maxH*SubC; v. In one example, SubC is equal to 1 for the luma component; vi. In one example, if the color format is 4:2:0, SubC is equal to 2 for the chroma component; vii. In one example, if the color format is 4:2:2, SubC is equal to 1 for the chroma component; viii. In one example, if the color format is 4:4:4, SubC equals 1 for the chroma component; g. In one example, whether and / or how clipping should occur may depend on the dimensions of the current picture (or a matching window therein) and the dimensions of the reference picture (or a matching window therein): i. In one example, clipping occurs only when the dimensions of the current picture (or a matching window therein) and the dimensions of the reference picture (or a matching window therein) differ. In the following description, a first syntax element is said to "correspond" to a second syntax element if the two syntax elements have equivalent functions but can be signaled in different video units (e.g., VPS / SPS / PPS / slice header / picture header, etc.). 30. We propose that a syntax element be signaled in a first video unit (e.g., picture header or PPS) and no corresponding syntax element be signaled in a second video unit at a higher level (e.g., SPS) or lower level (e.g., slice header): a. Alternatively, a first syntax element may be signaled in a first video unit (e.g., a picture header or PPS) and a corresponding second syntax element may be signaled in a second video unit at a lower level (e.g., a slice header, etc.): i. Alternatively, an indicator may be signaled within the second video unit indicating whether the second syntax element is subsequently signaled; ii. In one example, a slice associated with a second video unit (e.g., a slice header, etc.) may follow an indication of a second syntax element instead of the first one if the second one is signaled; iii. an indicator associated with the first syntax element may be signaled within the first video unit to indicate whether the second syntax element is signaled within any slices (or other video units) associated with the first video unit; b. Alternatively, a first syntax element may be signaled within a first video unit at a higher level (e.g., VPS / SPS / PPS, etc.) and a corresponding second syntax element may be signaled within a second video unit (e.g., picture header, etc.): i. Alternatively, an indicator may be signaled that indicates whether the second syntax element is subsequently signaled; ii. In one example, a picture associated with a second video unit (which may be divided into multiple slices) may follow the indication of a second syntax element instead of the first one if the second one is signaled; c. A first syntax element in a picture header may have functionality equivalent to a second syntax element in a slice header as specified in Section 2.6 (but limited to, e.g., slice_temporal_mvp_enabled_flag, cabac_init_flag, six_minus_max_num_merge_cand, five_minus_max_num_subblock_merge_cand, slice_fpel_mmvd_enabled_flag, slice_disable_bdof_dmvr_flag, max_num_merge_cand_minus_max_num_triangle_cand, slice_fpel_mmvd_enabled_flag, slice_six_minus_max_num_ibc_merge_cand, slice_joint_cbcr_sign_flag, slice_qp_delta, ...), but may control all styles of the picture; d. A first syntax element in an SPS as specified in Section 2.6 may have a function equivalent to a second syntax element in a picture header (but limited to, for example, sps_bdof_dmvr_slice_present_flag, sps_mmvd_enabled_flag, sps_isp_enabled_flag, sps_mrl_enabled_flag, sps_mip_enabled_flag, sps_cclm_enabled_flag, sps_mts_enabled_flag, etc.), but may control only the associated picture (which may be divided into multiple slices); e. The first syntax element in the PPS as specified in Section 2.7 may have equivalent functionality to the second syntax element in the picture header (but may be limited to, for example, entropy_coding_sync_enabled_flag, entry_point_offsets_present_flag, cabac_init_present_flag, rpl1_idx_present_flag, etc.), but may only control the associated picture (which may be divided into multiple slices). 31. Syntax elements signaled in the picture header are separated from other syntax elements signaled or derived in the SPS / VPS / DPS. 32. The indication of DMVR and BDOF enable / disable may be signaled separately in the picture header instead of being controlled by the same flag (eg, pic_disable_bdof_dmvr_flag). 33. Indication of enablement / disablement of inter prediction with PROF / cross-component ALF / geometric partitioning (GEO) may be signaled in the picture header: a. Alternatively, the indication of enabling / disabling PROF in the picture header may be conditionally signaled according to the PROF enable flag in the SPS; b. Alternatively, the indication of enabling / disabling Cross-Component ALF (CCALF) in the picture header may be conditionally signaled according to a CCALF enable flag in the SPS; c. Alternatively, the indication of enabling / disabling GEO in the picture header may be conditionally signaled according to the GEO enable flag in the SPS; d. Alternatively or additionally, indication of enabling / disabling inter prediction with PROF / cross-component ALF / geometric partitioning (GEO) in the slice header may be conditionally signaled according to those syntax elements signaled in the picture header instead of the SPS. 34. An indication of the prediction type for slices / bricks / tiles (or other video units smaller than a picture) within the same picture may be signaled in the picture header: a. In one example, an indication of whether all slices / bricks / tiles (or other video units smaller than pictures) are all intra-coded (e.g., all I-slices) may be signaled in the picture header: i. Alternatively, or further, if the indication states that all slices in the picture are I-slices, the slice type may not be signaled in the slice header; b. Alternatively, an indication of whether at least one of the slices / bricks / tiles (or other video units smaller than a picture) is not intra-coded (e.g., at least one is a non-I slice) may be signaled in the picture header: c. Alternatively, an indication of whether all slices / bricks / tiles (or other video units smaller than a picture) all have the same prediction type (e.g., I / P / B slices) may be signaled in the picture header: i. Alternatively or additionally, the slice type may not be signaled in the slice header; ii. Alternatively or additionally, an indication of tools allowed for a particular prediction type (e.g., DMVR / BDOF / TPM / GEO are only allowed for B slices, and dual tree is only allowed for I slices) may be conditionally signaled according to the indication of the prediction type; d. Alternatively or additionally, the signaling of the indication of tool activation / deactivation may depend on the prediction type indication mentioned in the sub-bullet above: i. Alternatively or additionally, the indication of enabling / disabling the tool may be derived according to the predictive type indications mentioned in the sub-points above. 35. In this disclosure (bullets 1-29), the term "adaptation window" may be replaced with other terms, such as "scaling window." The scaling window may be signaled differently from the adaptation window and is used to derive the scaling ratio and / or top-left offset used to derive the reference sample position for the RPR: In one example, the scaling window may be constrained by the conformance window, e.g., in a conformance bitstream, the scaling window must be contained within the conformance window. 36. Whether and / or how the maximum allowed block size of transform skip coded blocks should be signaled may depend on the maximum block size of transform coded blocks: Alternatively, the maximum block size of the transform skip coded blocks cannot be larger than the maximum block size of the transform coded blocks in the conforming bitstream. 37. Whether and / or how an indication of enabling Joint Cb-Cr Residue (JCCR) coding (e.g., sps_joint_cbcr_enabled_flag, etc.) should be signaled may depend on the color format (e.g., 4:0:0, 4:2:0, etc.): For example, if the color format is 4:0:0, the indication of enabling joint Cb-Cr residual (JCCR) may not be signaled. An example syntax design is as follows: (Outside 10) TIFF0007799672000041.tif16162 Downsampling filter type for chroma blending mask generation in TPM / GEO 38. The type of downsampling filter used in the blending weight derivation for chroma samples may be signaled at the video unit level (e.g., SPS / VPS / PPS / Picture Header / Subpicture / Slice / Slice Header / Tile / Brick / CTU / VPDU level, etc.): a. In one example, a high level flag may be signaled to switch between different chroma format types of content: i. In one example, a high-level flag may be signaled to switch between chroma format type 0 and chroma format type 2; ii. In one example, a flag may be signaled to specify whether the top-left downsampling luma weight in TPM / GEO prediction mode is collocated with the top-left luma weight (e.g., chroma sample position type 0); iii. In one example, a flag may be signaled to specify whether the top-left downsampled luma sample in TPM / GEO prediction mode is horizontally collocated with the top-left luma sample but vertically shifted by 0.5 luma sample units relative to the top-left luma sample (e.g., chroma sample position type 2); b. In one example, the type of downsampling filter may be signaled for 4:2:0 chroma format and / or 4:2:2 chroma format; c. In one example, a flag may be signaled to specify the type of chroma downsampling filter used for TPM / GEO prediction: i. In one example, this flag may be signaled as to whether to use downsampling filter A or downsampling filter B for chroma weight derivation in TPM / GEO prediction mode. 39. The type of downsampling filter used in deriving the blending weights for chroma samples can be derived at the video unit level (e.g., SPS / VPS / PPS / Picture Header / Subpicture / Slice / Slice Header / Tile / Brick / CTU / VPDU level, etc.): In one example, a lookup table may be defined to define a correspondence between chroma subsampling filter types and content chroma format types. 40. For different chroma sample position types, specific downsampling filters can be used for TPM / GEO prediction modes: a. In one example, for a particular chroma sample position type (e.g., chroma sample position type 0), the chroma weights of the TPM / GEO may be subsampled from the co-located top-left luma weight; b. In one example, for a particular chroma sample position type (e.g., chroma sample position type 0 or 2), a particular X-tap filter (X is a constant, e.g., X=6 or 5) may be used for chroma weight subsampling in TPM / GEO prediction mode. 41. Within a video unit (e.g., SPS, PPS, picture header, slice header, etc.), a first syntax element (e.g., a flag) may be signaled that indicates whether Multiple Transform Selection (MTS) is disabled for all blocks (slices / pictures): a. A second syntax element indicating how to apply MTS (e.g., enable MTS / disable MTS / implicit MTS / explicit MTS, etc.) to an intra-coded block (slice / picture) is conditionally signaled based on the first syntax element. For example, the second syntax element is signaled only if the first syntax element indicates that MTS is disabled for all blocks (slices / pictures); b. A third syntax element indicating how to apply MTS to an inter-coded block (slice / picture) (e.g., enable MTS / disable MTS / implicit MTS / explicit MTS, etc.) is conditionally signaled based on the first syntax element. For example, the third syntax element is signaled only if the first syntax element indicates that MTS is not disabled for all blocks (slices / pictures); c. An exemplary syntax design is as follows: (Outside 11) TIFF0007799672000042.tif49162d. The third syntax element can be conditionally signaled based on whether a Sub-Block Transform (SBT) is applied. An exemplary syntax design is as follows: (Outside 12) TIFF0007799672000043.tif30162e. An example syntax design is as follows: (Outside 13) TIFF0007799672000044.tif38162 Deciding to use coding tool X 42. The decision of whether and / or how to enable coding tool X may depend on the width and / or height of the picture under consideration and / or the current picture of one or more reference pictures: a. The width and / or height of the picture under consideration and / or the current picture of one or more reference pictures may be changed to make the decision; b. The picture under consideration can be defined by an adaptive or scaling window: i. The picture under consideration may be the entire picture; c. In one example, whether and / or how coding tool X should be enabled may depend on the picture width minus one or more offsets in the horizontal direction and / or the picture height minus one or more offsets in the vertical direction: i. In one example, the horizontal offset may be defined as scaling_win_top_offset; ii. In one example, the vertical offset may be defined as scaling_win_top_offset; iii. In one example, the horizontal offset may be defined as (scaling_win_right_offset+scaling_win_left_offset); iv. In one example, the vertical offset may be defined as (scaling_win_bottom_offset+scaling_win_top_offset); v. In one example, the horizontal offset may be defined as SubWidthC*(scaling_win_right_offset+scaling_win_left_offset); vi. In one example, the vertical offset may be defined as SubHeightC*(scaling_win_bottom_offset+scaling_win_top_offset); d. In one example, if at least one of the two reference pictures under consideration has a different resolution (either width or height) than the current picture, coding tool X is disabled: i. Alternatively, if at least one of the two output reference pictures has a dimension (either width or height) larger than the dimension of the current picture, coding tool X is disabled; e. In one example, if one reference picture under consideration for a reference picture list L has a different resolution than the current picture, coding tool X is disabled for that reference picture list L: i. Alternatively, if one reference picture under consideration for a reference picture list L has dimensions (width or height) greater than the dimensions of the current picture, coding tool X is disabled for that reference picture list L; f. In one example, if two reference pictures under consideration in two reference picture lists have different resolutions, the coding tool may be disabled: i. Alternatively, the indication of the coding tool may be conditionally signaled according to the resolution; ii. Alternatively, the signaling of the coding tool indication may be skipped; g. In one example, if two of the two merge candidates utilized to derive the first pairwise merge candidate for at least one reference picture list are reference pictures under consideration, the coding tool can disable, e.g., mark the first pairwise merge candidate as unavailable: i. Alternatively, if two of the two merge candidates utilized to derive the first pairwise merge candidate for both reference picture lists are reference pictures under consideration, the coding tool may disable the first pairwise merge candidate, e.g., mark the first pairwise merge candidate as unavailable; h. In one example, the decoding process of the coding tool may be modified to take into account picture dimensions: i. In one example, the derivation of the MVD for another reference picture list (e.g., list 1) in the SMVD may be based on the resolution difference (e.g., scaling factor) of at least one of the two target SMVD reference pictures; ii. In one example, the derivation of pairwise merging candidates may be based on a resolution difference (e.g., a scaling factor) of at least one of the two reference pictures relative to the two reference pictures, e.g., a linear weighted average may be applied instead of equal weights; i. In one example, X can be: i. DMVR / BDOF / PROF / SMVD / MMVD / other coding tools that refine motion / prediction at the decoder side ii. TMVP / other coding tools that rely on temporal motion information iii. MTS or other transcoding tools iv. CC-ALF v. TPM vi. GEO vii. Switchable interpolation filters (e.g., alternative interpolation filters for half-pel motion compensation) viii. Mixed processes in TPM / GEO / other coding tools that split a single block into multiple partitions ix. Coding tools that answer stored information in a picture different from the current picture x. Pairwise merge candidates (pairwise merge candidates are not generated when certain resolution-related conditions are not met) xi. Bi-prediction with CU-level weighting (BCW) xii. Weighted Prediction xiii. Affine Prediction xiv. Adaptive Motion Vector Resolution (AMVR) 43. Whether and / or how the use of a coding tool should be signaled may depend on the width and / or height of the picture under consideration and / or the current picture of one or more reference pictures: a. The width and / or height of the picture under consideration and / or the current picture of one or more reference pictures may be changed to make the decision; b. The picture under consideration may be defined by a scaling window and / or an adaptation window as defined in JVET-P0590: xv. The picture under consideration may be the entire picture; c. In one example, X may be an adaptive motion vector resolution; d. In one example, X can be a merge-with-MV-difference (MMVD) method: xvi. In one example, the construction of symmetric motion vector difference reference indexes may depend on the picture resolution / indication of RPR cases for different reference pictures; e. In one example, X may be a symmetric MVD (SMVD) method; f. In one example, X can be QT / BT / TT or other partition type; g. In one example, X may be bi-predictive with CU level weighting (BCW); h. In one example, X may be a weighted prediction; i. In one example, X may be an affine prediction; j. In one example, signaling an indication of half-pel motion vector precision / switchable interpolation filter usage may depend on whether resolution information / RPR is enabled for the current block; k. In one example, the signaling of amvr_precision_idx may depend on whether resolution information / RPR is enabled for the current block; l. In one example, the signaling of sym_mvd_flag / mmvd_merge_flag may depend on whether resolution information / RPR is enabled for the current block; m. A conforming bitstream satisfies that 1 / 2 pel MV and / or MVD precision (e.g., alternative interpolation filters / switchable interpolation filters) is disabled when the width and / or height of the picture under consideration of one or more reference pictures differs from that of the current output picture. 44. We propose that AMVR with 1 / 2 pel MV and / or MVD precision (or alternative / switchable interpolation filters) can still be enabled for blocks within the RPR: a. Alternatively or additionally, different interpolation filters may be applied to the blocks at 1 / 2 pel or other precision. 45. The same / different resolution condition check in the above bullet may be replaced by adding a flag for the reference picture and checking the flag associated with the reference picture: a. In one example, the process of setting a flag to be true or false (e.g., to indicate whether a reference picture is an RPR case or a non-RPR case) may be invoked during the reference picture list construction process: xvii. For example, the following may apply: fRefWidth is set equal to PicOutputWidthL of the reference picture RefPicList[i][j] in luma samples, where PicOutputWidthL represents the width of the picture under consideration of the reference picture; fRefHeight is set equal to PicOutputHeightL of the reference picture RefPicList[i][j] in luma samples, where PicOutputHeightL represents the height of the picture under consideration of the reference picture; RefPicScale[i][j][0]= ((fRefWidth<<14)+(PicOutputWidthL>>1)) / PicOutputWidthL where PicOutputWidthL represents the width of the picture currently under consideration; RefPicScale[i][j][1]= ((fRefHeight<<14)+(PicOutputHeightL>>1)) / PicOutputHeightL where PicOutputHeightL represents the height of the picture currently under consideration; RefPicIsScaled[i][j]=(RefPicScale[i][j][0]!=(1<<14))||(RefPicScale[i][j][1]!=(1<<14)) where RefPicList[i][j] represents the jth reference picture in reference picture list i; b. In one example, when RefPicIsScaled[0][refIdxL0] is not equal to 0 or RefPicIsScaled[1][refIdxL1] is not equal to 0, coding tool X (e.g., DMVR / BDOF / SMVD / MMVD / SMVD / PROF / mentioned in the above bullet point) may be disabled; c. In one example, when both RefPicIsScaled[0][refIdxL0] and RefPicIsScaled[1][refIdxL1] are not equal to 0, coding tool X (e.g., DMVR / BDOF / SMVD / MMVD / SMVD / PROF / mentioned in the above bullet point) may be disabled; d. In one example, when RefPicIsScaled[0][refIdxL0] is not equal to 0, coding tool X (e.g., PROF or one mentioned in the above bullet point) may be disabled for reference picture list 0; e. In one example, when RefPicIsScaled[1][refIdxL1] is not equal to 0, coding tool X (e.g., PROF or the one mentioned in the bullet above) may be disabled for reference picture list 1; 46. The SAD and / or thresholds used by the BDOF / DMVR may depend on the bit depth: f. In one example, the calculated SAD value may first be shifted by a function of the bit depth before being used to compare with the threshold; g. In one example, the calculated SAD value may be directly compared to a modified threshold value that may depend on a function of bit depth.
[0109] 5. Further Embodiments Below, text changes are shown in underlined, bold italics.
[0110] 5.1. Implementation of Constraints on the Fit Window (Outside 14) TIFF0007799672000045.tif159166
[0111] 5.2. Reference Sample Position Derivation Embodiment 1 (Outside 15) TIFF0007799672000046.tif254166TIFF0007799672000047.tif196166
[0112] 5.3. Reference Sample Position Derivation Embodiment 2 (Outside 16) TIFF0007799672000048.tif254166TIFF0007799672000049.tif188166
[0113] 5.4. Reference Sample Position Derivation Embodiment 3 (Outside 17) TIFF0007799672000050.tif254166TIFF0007799672000051.tif185166
[0114] 5.5. Reference Sample Position Clipping Embodiment 1 (Outside 18) TIFF0007799672000052.tif254166TIFF0007799672000053.tif232166
[0115] 5.6. Reference Sample Position Clipping Embodiment 2 (Outside 19) TIFF0007799672000054.tif254166TIFF0007799672000055.tif254166
[0116] 5.7. Examples of Use of Coding Tools 5.7.1 BDOF On / Off Control (outside 20) TIFF0007799672000056.tif128165
[0117] 5.7.2 DMVR On / Off Control (outside 21) TIFF0007799672000057.tif104166
[0118] 5.7.3 PROF On / Off Control for Reference Picture List X (outside 22) TIFF0007799672000058.tif98166
[0119] 5.7.4 PROF On / Off Control for Reference Picture List X (Second Embodiment)
[0120] (outside 23) TIFF0007799672000059.tif104167
[0121] 6. Implementation Examples of the Disclosed Technology FIG. 5 is a block diagram of a video processing device 500. The device 500 may be used to implement one or more of the methods described herein. The device 500 may be embodied in a smartphone, tablet, computer, or Internet of Things (IoT) receiver. The device 500 may include one or more processors 502, one or more memories 504, and video processing hardware 506. The processor(s) 502 may be configured to execute one or more of the methods described herein. The memory(s) 504 may be used to store data and code used to execute the methods and techniques described herein. The video processing hardware 506 may be used to implement some of the techniques described herein in hardware circuitry and may be partially or fully part of the processor 502 (e.g., a graphics processor core GPU or other signal processing circuitry).
[0122] In this document, the term "video processing" or coding may refer to video encoding, video decoding, video compression, or video decompression. For example, a video compression algorithm may be applied to convert a pixel representation of a video to a corresponding bitstream representation, or vice versa. The bitstream representation of a current video block may correspond to bits either co-located within the bitstream or scattered across multiple different locations, e.g., as specified by syntax. For example, a macroblock may be encoded using bits in a header and other fields within the bitstream with respect to a transformed and coded error residual value.
[0123] It will be appreciated that the disclosed methods and techniques will benefit embodiments of video encoders and / or decoders integrated into video processing devices such as smartphones, laptops, desktops, and similar devices by enabling the use of the techniques disclosed herein.
[0124] 6 is a flowchart of an example method 600 of video processing. Method 600 includes, at 610, performing a conversion between a current video block and a coded representation of the current video block, where, if the resolution and / or size of a reference picture differs from the resolution and / or size of the current video block, the same interpolation filter is applied to a group of adjacent or non-adjacent samples that are predicted using the current video block.
[0125] Some embodiments are described using the following section-based format.
[0126] 1. A method of image processing, comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein, in the conversion, if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, a same interpolation filter is applied to a group of adjacent or non-adjacent samples that are predicted using the current video block; A method having the following.
[0127] 2. The method of claim 1, wherein the identical interpolation filter is a vertical interpolation filter.
[0128] 3. The method of claim 1, wherein the identical interpolation filter is a horizontal interpolation filter.
[0129] 4. The method of clause 1, wherein the group of adjacent or non-adjacent samples includes all samples located within a region of the current video block.
[0130] 5. The method of clause 4, wherein the current image block is divided into a plurality of rectangles, each of size MxN.
[0131] 6. The method according to item 5, wherein M and / or N are predetermined.
[0132] 7. The method of clause 5, wherein M and / or N are derived from the dimensions of the current video block.
[0133] 8. The method of clause 5, wherein M and / or N are signaled within the coded representation of the current video block.
[0134] 9. The method of claim 1, wherein the group of samples share the same motion vector.
[0135] 10. The method of claim 9, wherein the group of samples share the same horizontal component and / or the same fractional part of the horizontal component.
[0136] 11. The method of claim 9, wherein the group of samples share the same vertical component and / or the same fractional part of the vertical component.
[0137] 12. A method according to any of clauses 9 to 11, wherein the same motion vector or its components satisfy one or more rules based at least on one of the resolution of the reference picture, the size of the reference picture, the resolution of the current video block, the size of the current video block, or an accuracy value.
[0138] 13. The method according to any of clauses 9 to 11, wherein the same motion vector or a component thereof corresponds to motion information of a sample located within the current video block.
[0139] 14. The method according to any one of clauses 9 to 11, wherein the same motion vector or its components are set to motion information of virtual samples located inside or outside the group.
[0140] 15. A method of image processing comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein in the conversion, if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, a block predicted using the current video block is only allowed to use integer-value motion information related to the current block; A method having the following.
[0141] 16. The method of clause 15, wherein the integer-value motion information is derived by rounding the original motion information of the current video block.
[0142] 17. The method of clause 15, wherein the original motion information of the current video block is in the horizontal and / or vertical direction.
[0143] 18. A method of image processing comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein in the conversion, if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, an interpolation filter is applied to derive a predicted block using the current video block, the interpolation filter being selected based on a rule; A method having the following.
[0144] 19. The method of clause 18, wherein the rule relates the resolution and / or size of the reference picture to the resolution and / or size of the current video block.
[0145] 20. The method of claim 18, wherein the interpolation filter is a vertical interpolation filter.
[0146] 21. The method of claim 18, wherein the interpolation filter is a horizontal interpolation filter.
[0147] 22. The method of clause 18, wherein the interpolation filter is one of a 1-tap filter, a bilinear filter, a 4-tap filter, or a 6-tap filter.
[0148] 23. The method of claim 22, wherein the interpolation filter is used as part of another step of the transformation.
[0149] 24. The method of clause 18, wherein the interpolation filter includes the use of padding samples.
[0150] 25. The method of clause 18, wherein the use of the interpolation filter depends on the color components of the samples of the current image block.
[0151] 26. A method of image processing comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein in the conversion, if a resolution and / or size of a reference picture differs from a resolution and / or size of the current video block, selectively applying a deblocking filter, the strength of the deblocking filter being set according to a rule relating the resolution and / or size of the reference picture to the resolution and / or size of the current video block; A method having the following.
[0152] 27. The method of clause 27, wherein the strength of the deblocking filter varies for each video block.
[0153] 28. A method of image processing comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein in the conversion, if a sub-picture of the current video block is present, a conforming bitstream satisfies a rule relating the resolution and / or the size of the reference picture to the resolution and / or the size of the current video block; A method having the following.
[0154] 29. Splitting the current video block into one or more sub-pictures, the splitting depending at least on the resolution of the current video block; Item 29. The method according to item 28, further comprising:
[0155] 30. A method of image processing comprising: performing a conversion between a current video block and a coded representation of the current video block, wherein the conversion involves resampling a reference picture of the current video block according to a rule based on a dimension of the current video block; A method having the following.
[0156] 31. A method of image processing comprising: performing a conversion between a current video block and an encoded representation of the current video block, wherein the conversion selectively enables or disables use of coding tools for the current video block depending on a resolution / size of a reference picture of the current video block relative to a resolution / size of the current video block; A method having the following.
[0157] 32. The method of any of the preceding clauses, wherein the group of samples is located within a compatibility window.
[0158] 33. The method of claim 32, wherein the fitting window is rectangular in shape.
[0159] 34. The method of any of the preceding clauses, wherein the resolution relates to a resolution of the encoding / decoding video block or a resolution of the adaptive window within the encoding / decoding video block.
[0160] 35. The method of any of the preceding clauses, wherein the size relates to the size of the encoding / decoding video block or the size of the adaptive window within the encoding / decoding video block.
[0161] 36. The method of any of the preceding clauses, wherein the dimensions relate to dimensions of the encoding / decoding video block or dimensions of the adaptive window within the encoding / decoding video block.
[0162] 37. The method of claim 32, wherein the adaptive window is defined by a set of adaptive cropping window parameters.
[0163] 38. The method of clause 37, wherein at least a portion of a set of adaptive cropping window parameters is implicitly or explicitly signaled within the coded representation.
[0164] 39. A method according to any of the preceding clauses, wherein the set of adaptive cropping window parameters is not allowed to be signaled in the coded representation.
[0165] 40. The method of any of the preceding clauses, wherein the position of the reference sample is derived relative to a top-left sample of the current video block within the adaptation window.
[0166] 41. A method of image processing comprising: performing a conversion between a plurality of video blocks and a coded representation of the plurality of video blocks, wherein in the conversion, a first conforming window is defined for a first video block and a second conforming window is defined for a second video block, and wherein a ratio of a width and / or a height of the first conforming window to the second conforming window follows a rule based at least on the conforming bitstream; A method having the following.
[0167] 42. A video decoding device having a processor configured to implement the method of any of clauses 1 to 41.
[0168] 43. A video encoding device having a processor configured to implement the method of any of clauses 1 to 41.
[0169] Also disclosed is a computer program product stored on a non-transitory computer readable medium, the computer program product including program code for performing one or more of the disclosed methods.
[0170] 44. A computer program product storing computer code which, when executed by a processor, causes the processor to perform the method of any of clauses 1 to 41.
[0171] 45. Any method, apparatus, or system described herein.
[0172] 9 is a block diagram illustrating an example of a video processing system 900 in which various techniques disclosed herein may be implemented. Various implementations may include some or all of the components of system 900. System 900 may include an input 902 that receives video content. The video content may be received in a raw or uncompressed format, such as 8-bit or 10-bit multi-component pixel values, or in a compressed or encoded format. Input 902 may represent a network interface, a peripheral bus interface, or a storage interface. Examples of network interfaces include wired interfaces such as Ethernet, passive optical networks (PONs), and wireless interfaces such as Wi-Fi or cellular interfaces.
[0173] System 900 may include a coding component 904 that may implement various coding or encoding methods described herein. The coding component 904 may reduce the average bitrate of video from input 902 to the output of the coding component 904 to generate an encoded representation of the video. Coding techniques are therefore sometimes referred to as video compression techniques or video transcoding techniques. The output of the coding component 904 may be stored or transmitted via a communication connection, as represented by component 906. The stored or communicated bitstream (or encoded) representation of the video received at input 902 may be used by component 908 to generate pixel values or displayable video that are sent to display interface 910. The process of generating user-viewable video from the bitstream representation is sometimes referred to as video decompression. Also, while certain video processing operations may be referred to as “coding” operations or tools, it is understood that coding tools or operations are used in an encoder and corresponding decoding tools or operations that reverse the results of the coding are performed in a decoder.
[0174] Examples of peripheral bus interfaces or display interfaces may include Universal Serial Bus (USB) or High-Definition Multimedia Interface (HDMI) or DisplayPort, etc. Examples of storage interfaces include Serial Advanced Technology Attachment (SATA), PCI, IDE interfaces, etc. The techniques described herein may be embodied in a variety of electronic devices, such as, for example, mobile phones, laptops, smartphones, or other devices capable of performing digital data processing and / or video display.
[0175] FIG. 10 is a block diagram illustrating an example of an image coating system 100 that can utilize the techniques of this disclosure.
[0176] 10, video coding system 100 may include source device 110 and destination device 120. Source device 110 generates encoded video data and may be referred to as a video encoder. Destination device 120 can decode the encoded video data generated by source device 110 and may be referred to as a video decoder.
[0177] The source device 110 may include a video source 112, a video encoder 114, and an input / output (I / O) interface .
[0178] The video source 112 may include a source 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 such sources. The video data may comprise one or more pictures. The video encoder 114 encodes the video data from the video source 112 to generate a bitstream. The bitstream may include a series of bits forming a coded representation of the video data. The bitstream may include coded pictures and associated data. A coded picture is a coded representation of a picture. The associated data may include sequence parameter sets, picture parameter sets, and other syntax structures. The I / O interface 116 may include a modulator / demodulator (modem) and / or a transmitter. The coded video data may be transmitted via the I / O interface 116 directly over the network 130a to the destination device 120. The coded video data may also be stored on a storage medium / server 130b for access by the destination device 120.
[0179] The destination device 120 may include an I / O interface 126 , a video decoder 124 , and a display device 122 .
[0180] I / O interface 126 may include a receiver and / or a modem. I / O interface 126 may obtain encoded video data from source device 110 or storage medium / server 130b. Video decoder 124 may decode the encoded video data. Display device 122 may display the decoded video data to a user. Display device 122 may be integrated with destination device 120 or may be external to destination device 120 configured to interface with an external display device.
[0181] Video encoder 114 and video decoder 124 may operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard, the Versatile Video Coding (VVC) standard, and other current and / or future standards.
[0182] FIG. 11 is a block diagram illustrating an example of a video encoder 200, which may be video encoder 114 in system 100 shown in FIG.
[0183] Video encoder 200 may be configured to perform any or all of the techniques described in this disclosure. In the example of FIG. 11, video encoder 200 includes multiple functional components. The techniques described in this disclosure may be shared among various components of video encoder 200. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0184] The functional components of the video encoder 200 may include a division 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 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.
[0185] In other examples, video encoder 200 may include more, fewer, or different functional components. In one example, prediction unit 202 may include an intra block copy (IBC) unit. The IBC unit may perform prediction in an IBC mode, where at least one reference picture is the picture in which the current video block is located.
[0186] Also, some components, such as the motion estimation unit 204 and the motion compensation unit 205, although shown separately in the example of FIG. 5 for illustrative purposes, may be highly integrated.
[0187] Division unit 201 may divide a picture into one or more video blocks. Video encoder 200 and video decoder 300 may support a variety of video block sizes.
[0188] The mode select unit 203 may select one of a plurality of coding modes, intra or inter, based on, for example, an error result, and provide the resulting intra- or inter-coded block to a residual generation unit 207, which generates residual block data, and to a reconstruction unit 212, which reconstructs a coding block for use as a reference picture. In some examples, the mode select unit 203 may select a combination of intra and inter predication (CIIP) mode, in which prediction is based on an inter prediction signal and an intra prediction signal. The mode select unit 203 may also select the resolution of the motion vector for the block (e.g., sub-pixel or integer pixel precision) in the case of inter prediction.
[0189] To perform inter prediction on a current video block, motion estimation unit 204 may generate motion information for the current video block by comparing one or more reference frames from buffer 213 with the current video block. Motion compensation unit 205 may determine a prediction video block for the current video block based on the motion information and decoded samples of pictures from buffer 213 other than the picture associated with the current video block.
[0190] 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, for example.
[0191] In some examples, motion estimation unit 204 may perform unidirectional prediction on the current video block, and motion estimation unit 204 may search reference pictures in list 0 or list 1 for reference video blocks for the current video block. Motion estimation unit 204 may then generate a reference index that points to the reference picture in list 0 or list 1 that contains the reference video block, and a motion vector that indicates the spatial displacement between the current video block and the reference video block. Motion estimation unit 204 may output the reference index, a prediction direction indicator, and the motion vector as motion information for the current video block. Based on the reference video block indicated by the motion information of the current video block, motion compensation unit 205 may generate a prediction video block for the current block.
[0192] In another example, motion estimation unit 204 may perform bidirectional prediction on the current video block, where motion estimation unit 204 may search reference pictures in list 0 for a reference video block for the current video block and may also search reference pictures in list 1 for another reference video block for the current video block. Motion estimation unit 204 may then generate reference indices that point to the reference pictures in lists 0 and 1 that contain the reference video blocks, and motion vectors that indicate spatial displacements between the reference video blocks and the current video block. Motion estimation unit 204 may output the reference indices and the motion vector for the current video block as motion information for the current video block. Based on the reference video blocks indicated by the motion information for the current video block, motion compensation unit 205 may generate a prediction video block for the current block.
[0193] In some examples, the motion estimation unit 204 may output a complete set of motion information for the decoding process of the decoder.
[0194] In some examples, motion estimation unit 204 may not output a complete set of motion information for the current video. Rather, motion estimation unit 204 may signal the motion information of the current video block by reference to the motion information of another 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 a neighboring video block.
[0195] In one example, motion estimation unit 204 may point to a value within 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.
[0196] In another example, motion estimation unit 204 may identify another video block and a motion vector difference (MVD) within 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 pointed-to video block. Video decoder 300 may use the motion vector of the pointed-to video block and the motion vector difference to determine the motion vector of the current video block.
[0197] As mentioned above, video encoder 200 may predictively signal motion vectors. Two examples of predictive signaling techniques that may be implemented by video encoder 200 include advanced motion vector prediction (AMVP) and merge mode signaling.
[0198] Intra prediction unit 206 may perform intra prediction on the current video block. When intra prediction unit 206 performs intra prediction on the current video block, intra prediction unit 206 may generate predictive data for the current video block based on decoded samples of other video blocks within the same picture. The predictive data for the current video block may include a predictive video block and various syntax elements.
[0199] 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 that correspond to different sample components of the samples in the current video block.
[0200] In other examples, for example, in skip mode, residual data for the current video block may not exist and residual generation unit 207 may not perform a subtraction operation.
[0201] Transform processing unit 208 may generate one or more transform coefficient video blocks for the current video block by applying one or more transforms to the residual video block associated with the current video block.
[0202] After transform processing unit 208 generates the transform coefficient video block for the current video block, quantization unit 209 may quantize the transform coefficient video block for the current video block based on one or more quantization parameter (QP) values for the current video block.
[0203] Inverse quantization unit 210 and inverse transform unit 211 may apply inverse quantization and inverse transform, respectively, to the transform coefficient video block to reconstruct a residual video block from the transform coefficient video block. Reconstruction unit 212 may add the reconstructed residual video block to corresponding samples from one or more prediction video blocks generated by prediction unit 202 to generate a reconstructed video block for the current block that is stored in buffer 213.
[0204] After reconstruction unit 212 reconstructs the video blocks, a loop filtering operation may be performed to reduce video blocking artifacts in the video blocks.
[0205] An entropy encoding unit 214 may receive data from other functional components of the video encoder 200. Once the entropy encoding unit 214 receives the data, the entropy encoding unit 214 may perform one or more entropy encoding operations to generate entropy-encoded data and output a bitstream including the entropy-encoded data.
[0206] FIG. 12 is a block diagram illustrating an example of a video decoder 300, which may be video decoder 124 in system 100 shown in FIG.
[0207] Video decoder 300 may be configured to perform any or all of the techniques described in this disclosure. In the example of FIG. 12, video decoder 300 includes multiple functional components. The techniques described in this disclosure may be shared among various components of video decoder 300. In some examples, a processor may be configured to perform any or all of the techniques described in this disclosure.
[0208] 12, video decoder 300 includes an entropy decoding unit 301, a motion compensation unit 302, an intra prediction unit 303, an inverse quantization unit 304, an inverse transform unit 305, a reconstruction unit 306, and a buffer 307. Video decoder 300 may, in some examples, perform a decoding pass that is generally inverse to the encoding pass described with respect to video encoder 200 (e.g., FIG. 11).
[0209] An 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 from the entropy-decoded video data, a motion compensation unit 302 may determine motion information including motion vectors, motion vector precision, reference picture list indexes, and other motion information. The motion compensation unit 302 may determine such information by, for example, implementing AMVP and merge mode.
[0210] The motion compensation unit 302 may optionally perform interpolation based on an interpolation filter to generate the motion-compensated blocks. An identifier for the interpolation filter used with sub-pixel precision may be included in the syntax element.
[0211] Motion compensation unit 302 may calculate interpolated values for sub-integer pixels of the reference block using the interpolation filters used by video encoder 200 during encoding of the video block. Motion compensation unit 302 may determine the interpolation filters used by video encoder 200 according to received syntax information and generate the predictive block using the interpolation filters.
[0212] The motion compensation unit 302 may use some of the syntax information to determine the size of the blocks used to encode the frames and / or slices of the encoded video sequence, partition information describing how each macroblock of a picture of the encoded video sequence is divided, a mode indicating how each partition is encoded, one or more reference frames (and reference frame lists) for each inter-coded block, and other information for decoding the encoded video sequence.
[0213] The intra prediction unit 303 may form a prediction block from spatially adjacent blocks using an intra prediction mode, e.g., received in the bitstream. The inverse quantization unit 303 inverse quantizes, e.g., dequantizes, the quantized video block coefficients provided in the bitstream and decoded by the entropy decoding unit 301. The inverse transform unit 303 applies an inverse transform.
[0214] A reconstruction unit 306 may add the residual block with a corresponding prediction block generated by the motion compensation unit 302 or the intra prediction unit 303 to form a decoded block. If desired, 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 a reference block for later motion compensation.
[0215] 11 is a flowchart representation of a method of video processing in accordance with the present technology. Method 1100 includes, at act 1110, performing a conversion between video and a bitstream representation of the video. The bitstream representation conforms to format rules that specify that the applicability of decoder-side motion vector refinement coding tools and bidirectional optical flow coding tools to a video picture are indicated separately within the bitstream representation.
[0216] 13 is a flowchart representation of a method 1300 of video processing in accordance with the present technology. Method 1300 includes, at operation 1310, determining to use a coding tool for conversion between a current picture of a video and a bitstream representation of the video based on a condition related to dimensions of a portion of a reference picture of one of multiple reference pictures or a portion of the current picture. Method 1300 also includes, at operation 1320, performing the conversion based on the determination.
[0217] In some embodiments, the use includes whether a coding tool is enabled for the current picture. In some embodiments, the portion of the picture includes an adaptation window outside which samples can be discarded when outputting video, a scaling window within which samples are subjected to a resampling process, or the entire picture. In some embodiments, the coding tool includes a decoder-side motion vector refinement coding tool, a bidirectional optical flow coding tool, a prediction refinement in optical flow (PROF) coding tool, or a half-pel precision interpolation filter for motion compensation. In some embodiments, the coding tool further includes a temporal motion vector prediction coding tool, a multiple transform set coding tool, a cross-component adaptive loop filtering coding tool, a geometric partitioning coding tool, a blending process for a coding tool that splits a block into multiple partitions, a coding tool that requires stored information in a picture different from the current picture, a coding tool that generates pairwise merge candidates, a bi-predictive coding tool using coding unit level weights, a weighted predictive coding tool, an affine predictive coding tool, or an adaptive motion vector resolution coding tool.
[0218] In some embodiments, the coding tool is disabled if a condition is met specifying that dimensions of a portion of at least one reference picture among multiple reference pictures differ from dimensions of the current picture. In some embodiments, dimensions of the portion are changed for determination. In some embodiments, use of the coding tool is based on at least one of (1) the width of the picture minus one or more horizontal offsets or (2) the height of the picture minus one or more vertical offsets. In some embodiments, the one or more horizontal offsets comprise a left offset relative to a scaling window. In some embodiments, the one or more vertical offsets comprise a top offset relative to a scaling window. In some embodiments, the one or more horizontal offsets comprise a right offset and a left offset relative to a scaling window. In some embodiments, the one or more vertical offsets comprise a bottom offset and a top offset relative to a scaling window. In some embodiments, the one or more horizontal offsets have a value based on scaling the sum of a right offset and a left offset relative to a scaling window. In some embodiments, the one or more vertical offsets have a value based on scaling the sum of a bottom offset and a top offset relative to a scaling window.
[0219] In some embodiments, a coding tool is disabled if a condition specifying that dimensions of portions of at least two reference pictures of the multiple reference pictures are different is met. In some embodiments, if dimensions of portions of at least two reference pictures of the multiple reference pictures used to derive a first pairwise merging candidate for one or two reference picture lists are different, the first pairwise merging candidate is marked as unusable. In some embodiments, a syntax element indicating the use of a coding tool is signaled in the bitstream representation conditionally based on the dimensions of the portions. In some embodiments, a syntax element indicating the use of a coding tool is omitted in the bitstream representation.
[0220] In some embodiments, a syntax element indicating use of a coding tool is included in the bitstream representation conditionally further based on whether a reference picture resampling (RPR) process is enabled. In some embodiments, the syntax element comprises one of amvr_precision_idx, sym_mvd_flag, or mmvd_merge_flag. In some embodiments, the transformation according to use of the coding tool is modified based on dimensions of the portions. In some embodiments, the transformation comprises deriving motion vector differences for the reference picture list in a symmetric motion vector difference process, the derivation being based on differences in dimensions of the portions of at least two of the multiple reference pictures. In some embodiments, the transformation comprises deriving pairwise merge candidates, the derivation being based on differences in dimensions of the portions of at least two of the multiple reference pictures.
[0221] 14 is a flowchart representation of a method 1400 of video processing in accordance with the present technology. The method 1400 includes, at operation 1410, performing a conversion between a block of video and a bitstream representation of the video, in which adaptive motion vector resolution (AMVR) with half-pel motion vector precision is enabled for the block due to the application of a reference picture resampling process to the block.
[0222] In some embodiments, different interpolation filters are used for blocks with precision different from ½ pel precision. In some embodiments, a condition related to dimensions of portions of a reference picture is indicated by a flag associated with the reference picture. In some embodiments, the coding tool is disabled if the flag indicates that at least one reference picture in the reference picture list is scaled. In some embodiments, the flag comprises RefPicIsScaled[0][refIdxL0], where refIdxL0 is an index into the first reference picture list. In some embodiments, the flag comprises RefPicIsScaled[0][refIdxL1], where refIdxL1 is an index into the second reference picture list. In some embodiments, the flag is determined during the reference picture list construction process.
[0223] 15 is a flowchart representation of a method 1500 of video processing in accordance with the present technology. Method 1500 includes, at operation 1510, determining a sum of absolute differences to be used in a bidirectional optical flow (BDOF) coding tool or a decoder-side motion vector refinement (DMVR) coding tool for converting between a block of video and a bitstream representation of the video in a manner based on the bit depth of the block. Method 1500 also includes, at operation 1520, performing the conversion based on the determination.
[0224] In some embodiments, the sum of absolute differences is shifted based on a function of bit depth before being compared to a threshold for a BDOF coding tool or a DMVR coding tool. In some embodiments, the sum of absolute differences is compared to a threshold that is changed based on a function of bit depth.
[0225] In some embodiments, the conversion comprises encoding the video into a bitstream representation, hi some embodiments, the conversion comprises decoding the bitstream representation into the video.
[0226] Some embodiments of the disclosed technology include making a decision to enable a video processing tool or mode. In one example, when a video processing tool or mode is enabled, an encoder will use or implement that tool or mode in processing blocks of video, but will not necessarily modify the resulting bitstream based on the use of that tool or mode. That is, conversion from blocks of video to a bitstream representation of video will use the video processing tool or mode when it is enabled based on the decision. 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, conversion from a bitstream representation of video to blocks of video will be performed using the video processing tool or mode that was enabled based on the decision.
[0227] Some embodiments of the disclosed technology include making a decision to disable a video processing tool or mode. In one example, when a video processing tool or mode is disabled, an encoder will not use that tool or mode in converting blocks of video into a video bitstream. In another example, when a video processing tool or mode is disabled, a decoder will process the bitstream knowing that the bitstream has not been modified using the video processing tool or mode that was disabled based on the decision.
[0228] The disclosed and other solutions, examples, embodiments, modules, and functional operations described in this document, including the structures disclosed herein and their structural equivalents, can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, or in combinations of one or more of these. The disclosed and other embodiments can be implemented as one or more computer program products, e.g., as one or more modules of computer program instructions encoded on a computer-readable medium for execution by or for controlling the operation of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter producing a machine-readable propagated signal, or a combination of one or more of these. The term "data processing apparatus" encompasses any apparatus, device, and machine that processes data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, an apparatus can include code that creates an execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or one or more combinations of these. A propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to an appropriate receiver device.
[0229] A computer program (also known as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, and may be deployed in any form, 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 as part 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 at hand, or in multiple cooperating files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program may be deployed to be executed on one computer or on multiple computers, either collocated or distributed across multiple locations and interconnected by a communications network.
[0230] The processes and logic flows described in this document 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. These processes and logic flows may also be performed by, and apparatus may be implemented as, special purpose logic circuitry, such as an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit).
[0231] Processors suitable for the execution of a computer program include, by way of example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, a processor receives instructions and data from a read-only memory or a random-access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer also includes one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, or is operatively coupled to receive data from or transfer data to the mass storage devices. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including, by way of 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 in, special-purpose logic circuitry.
[0232] While this patent document contains numerous details, these should not be construed as limitations on any subject matter or the scope of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular technology. Certain features described in this patent document in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments separately or in any suitable subcombination. Furthermore, while features may be described above as operating in a particular combination, and even initially claimed as such, in some cases one or more features from a claimed combination may be removed from the combination, or the claimed combination may be subject to subcombinations or variations of the subcombination.
[0233] Similarly, although the figures may depict operations in a particular order, this should not be understood as requiring that those operations be performed in the particular order or sequence shown, or that all of the operations shown be performed, to achieve desired results. Additionally, 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.
[0234] Only a few implementations and examples have been described, and other implementations, extensions and variations may be made based on what is described and illustrated in this patent document.
Claims
1. 1. A method of video processing, comprising: determining whether to disable a coding tool for a current block of a current picture of a video for conversion between the current block and a bitstream of the video; performing the conversion based on the determination; and the coding tool is disabled when dimensions of a reference picture of one or more reference pictures of the current block differ from dimensions of the current picture, or when dimensions of a scaling window in a reference picture of one or more reference pictures of the current block differ from dimensions of a scaling window in the current picture; When an affine mode is applied to the current block to generate an initial predicted sample of a sub-block of the current block, the coding tool includes a first refinement coding tool; the first refinement coding tool is applied to generate final prediction samples for the sub-blocks by deriving prediction refinement based on motion vector differences dMvH and / or dMvV; dMvH and dMvV indicate the motion vector difference along the horizontal and vertical directions, when dimensions of a reference picture in a first reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the first reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a first motion vector difference corresponding to the first reference picture list of the current block is disabled; when dimensions of a reference picture in a second reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the second reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a second motion vector difference corresponding to the second reference picture list of the current block is disabled; determining whether the coding tool is disabled based on values of one or more flags associated with each of the one or more reference pictures; the one or more flags are derived during a reference picture list construction process. method.
2. a value of a first flag is set not equal to 0 when the dimensions of the reference picture in the first reference picture list of the current block are different from the dimensions of the current picture, or when the dimensions of the scaling window in the reference picture in the first reference picture list of the current block are different from the dimensions of the scaling window in the current picture; When the dimensions of the reference picture in the second reference picture list of the current block are different from the dimensions of the current picture, or when the dimensions of the scaling window in the reference picture in the second reference picture list of the current block are different from the dimensions of the scaling window in the current picture, the value of a second flag is set to be not equal to 0. The method of claim 1.
3. The method of claim 1 , wherein the dimensions of the scaling window are determined based on at least one of: 1) scaling_win_left_offset, 2) scaling_win_right_offset, 3) scaling_win_bottom_offset, or 4) scaling_win_top_offset.
4. 2. The method of claim 1, wherein adaptive motion vector resolution of 1 / 2 pel is enabled for the current block when dimensions of one of the one or more reference pictures for the current block differ from dimensions of the current picture, or when dimensions of a scaling window in one of the one or more reference pictures for the current block differ from dimensions of a scaling window in the current picture.
5. The method of claim 1 , wherein the converting comprises encoding the current picture into the bitstream.
6. The method of claim 1 , wherein the converting comprises decoding the current picture from the bitstream.
7. 1. An apparatus for processing video data comprising a processor and a non-transitory memory having instructions that, upon execution by the processor, cause the processor to: determining whether to disable a coding tool for a current block of a current picture of a video for conversion between the current block and a bitstream of the video; performing the conversion based on the determination; the coding tool is disabled when dimensions of a reference picture of one or more reference pictures of the current block differ from dimensions of the current picture, or when dimensions of a scaling window in a reference picture of one or more reference pictures of the current block differ from dimensions of a scaling window in the current picture; When an affine mode is applied to the current block to generate an initial predicted sample of a sub-block of the current block, the coding tool includes a first refinement coding tool; the first refinement coding tool is applied to generate final prediction samples for the sub-blocks by deriving prediction refinement based on motion vector differences dMvH and / or dMvV; dMvH and dMvV indicate the motion vector difference along the horizontal and vertical directions, when dimensions of a reference picture in a first reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the first reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a first motion vector difference corresponding to the first reference picture list of the current block is disabled; when dimensions of a reference picture in a second reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the second reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a second motion vector difference corresponding to the second reference picture list of the current block is disabled; determining whether the coding tool is disabled based on values of one or more flags associated with each of the one or more reference pictures; the one or more flags are derived during a reference picture list construction process. Device.
8. A non-transitory computer-readable storage medium having stored thereon instructions that cause a processor to: determining whether to disable a coding tool for a current block of a current picture of a video for conversion between the current block and a bitstream of the video; performing the conversion based on the determination; the coding tool is disabled when dimensions of a reference picture of one or more reference pictures of the current block differ from dimensions of the current picture, or when dimensions of a scaling window in a reference picture of one or more reference pictures of the current block differ from dimensions of a scaling window in the current picture; When an affine mode is applied to the current block to generate an initial predicted sample of a sub-block of the current block, the coding tool includes a first refinement coding tool; the first refinement coding tool is applied to generate final prediction samples for the sub-blocks by deriving prediction refinement based on motion vector differences dMvH and / or dMvV; dMvH and dMvV indicate the motion vector difference along the horizontal and vertical directions, when dimensions of a reference picture in a first reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the first reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a first motion vector difference corresponding to the first reference picture list of the current block is disabled; when dimensions of a reference picture in a second reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the second reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a second motion vector difference corresponding to the second reference picture list of the current block is disabled; determining whether the coding tool is disabled based on values of one or more flags associated with each of the one or more reference pictures; the one or more flags are derived during a reference picture list construction process. A computer-readable storage medium.
9. A method for storing a video bitstream, comprising: determining, for a current block of a current picture of the video, whether to disable coding tools for the current block; generating the bitstream based on the determination; storing the bitstream on a non-transitory computer-readable recording medium; and the coding tool is disabled when dimensions of a reference picture of one or more reference pictures of the current block differ from dimensions of the current picture, or when dimensions of a scaling window in a reference picture of one or more reference pictures of the current block differ from dimensions of a scaling window in the current picture; When an affine mode is applied to the current block to generate an initial predicted sample of a sub-block of the current block, the coding tool includes a first refinement coding tool; the first refinement coding tool is applied to generate final prediction samples for the sub-blocks by deriving prediction refinement based on motion vector differences dMvH and / or dMvV; dMvH and dMvV indicate the motion vector difference along the horizontal and vertical directions, when dimensions of a reference picture in a first reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the first reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a first motion vector difference corresponding to the first reference picture list of the current block is disabled; when dimensions of a reference picture in a second reference picture list of the current block are different from dimensions of the current picture, or when dimensions of a scaling window in a reference picture in the second reference picture list of the current block are different from dimensions of a scaling window in the current picture, the first refinement coding tool for deriving a second motion vector difference corresponding to the second reference picture list of the current block is disabled; determining whether the coding tool is disabled based on values of one or more flags associated with each of the one or more reference pictures; the one or more flags are derived during a reference picture list construction process. method.
Citation Information
Patent Citations
Image encoding / decoding method and device for performing PROF, and bitstream transmission method
JP2022548704A